Repeater::make('shifts')
->relationship('shifts')
->orderColumn('sort')
->reorderable(true)
->schema([
TimePicker::make('start_time')
->required()
->native(false)
->seconds(false)
->minutesStep(30)
->live('onBlur')
->afterStateUpdated(function (Get $get, Set $set) {
$duration = $get('../../duration') ?? 0;
$time=Carbon::createFromFormat('Y-m-d H:i:s', $get('start_time'))->addMinute($duration);
$set('end_time', $time);
}),
TimePicker::make('end_time')
->required()
->native(false)
->seconds(false)
->minutesStep(30)
->rule('after:start_time'),
])
->addAction(function (FormAction $action) {
return $action
->label('Add Shift')
->action(function (Get $get, Set $set) {
$shifts = $get('shifts') ?? [];
if(count($shifts) > 0) {
$last = end($shifts);
$duration = $get('duration') ?? 0;
($last) ? $start = $last['end_time'] : $start = null;
$shifts[] = [
'start_time' => $start,
'end_time' => Carbon::createFromFormat('Y-m-d H:i:s', $last['end_time'])->addMinute($duration),
];
$set('shifts', $shifts);
} else {
$shifts[] = [
'start_time' => null,
'end_time' => null,
];
$set('shifts', $shifts);
}
});
}),
Repeater::make('shifts')
->relationship('shifts')
->orderColumn('sort')
->reorderable(true)
->schema([
TimePicker::make('start_time')
->required()
->native(false)
->seconds(false)
->minutesStep(30)
->live('onBlur')
->afterStateUpdated(function (Get $get, Set $set) {
$duration = $get('../../duration') ?? 0;
$time=Carbon::createFromFormat('Y-m-d H:i:s', $get('start_time'))->addMinute($duration);
$set('end_time', $time);
}),
TimePicker::make('end_time')
->required()
->native(false)
->seconds(false)
->minutesStep(30)
->rule('after:start_time'),
])
->addAction(function (FormAction $action) {
return $action
->label('Add Shift')
->action(function (Get $get, Set $set) {
$shifts = $get('shifts') ?? [];
if(count($shifts) > 0) {
$last = end($shifts);
$duration = $get('duration') ?? 0;
($last) ? $start = $last['end_time'] : $start = null;
$shifts[] = [
'start_time' => $start,
'end_time' => Carbon::createFromFormat('Y-m-d H:i:s', $last['end_time'])->addMinute($duration),
];
$set('shifts', $shifts);
} else {
$shifts[] = [
'start_time' => null,
'end_time' => null,
];
$set('shifts', $shifts);
}
});
}),