schema([ Forms\Components\Select::make('plant_id') ->relationship('plant', 'name') ->reactive() ->nullable() ->disabled(fn (Get $get) => !empty($get('id'))) //disable in edit if user try to change ->afterStateUpdated(fn (callable $set) => $set('item_id', null) & $set('item_description', null) ) ->required(), Forms\Components\Select::make('item_id') ->label('Item Code') ->options(function (callable $get) { if (!$get('plant_id')) { return []; } return \App\Models\Item::where('plant_id', $get('plant_id')) ->pluck('code', 'id') ->toArray(); }) ->required() ->nullable() ->searchable() ->reactive() ->disabled(fn (Get $get) => !empty($get('id'))) ->live(debounce: 500) // Enable live updates ->afterStateUpdated(function ($state, callable $set, callable $get) { $plantId = $get('plant_id'); $itemId = $get('item_id'); // Ensure `item_id` is not cleared if (!$plantId || !$itemId) { $set('item_description', null); return; } // Check if item exists for the selected plant $item = \App\Models\Item::where('plant_id', $plantId) ->where('id', $itemId) ->first(); if ($item) { $set('item_description', $item->description); } else { $set('item_description', null); } }), Forms\Components\TextInput::make('item_description') ->label('Description') ->required() ->reactive() ->readOnly(true), Forms\Components\TextInput::make('part_validation1') ->nullable(), Forms\Components\TextInput::make('part_validation2') ->nullable(), Forms\Components\TextInput::make('part_validation3') ->nullable(), Forms\Components\TextInput::make('part_validation4') ->nullable(), Forms\Components\TextInput::make('part_validation5') ->nullable(), Forms\Components\Checkbox::make('serial_number_motor') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\Checkbox::make('serial_number_pump') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\Checkbox::make('serial_number_pumpset') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\Checkbox::make('pack_slip_motor') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\Checkbox::make('pack_slip_pump') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\Checkbox::make('pack_slip_pumpset') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\Checkbox::make('name_plate_motor') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\Checkbox::make('name_plate_pump') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\Checkbox::make('name_plate_pumpset') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\Checkbox::make('tube_sticker_motor') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\Checkbox::make('tube_sticker_pump') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\Checkbox::make('tube_sticker_pumpset') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), //to pass null value Forms\Components\Checkbox::make('warranty_card') ->nullable() ->dehydrateStateUsing(fn ($state) => $state ? $state : null), Forms\Components\TextInput::make('id') ->hidden() ->readOnly(), ]); } public static function table(Table $table): Table { return $table ->searchable() ->columns([ Tables\Columns\TextColumn::make('id') ->label('ID') ->numeric() ->sortable(), Tables\Columns\TextColumn::make('item.code') ->sortable(), Tables\Columns\TextColumn::make('plant.name') ->sortable(), Tables\Columns\CheckboxColumn::make('serial_number_motor') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('serial_number_pump') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('serial_number_pumpset') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('pack_slip_motor') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('pack_slip_pump') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('pack_slip_pumpset') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('name_plate_motor') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('name_plate_pump') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('name_plate_pumpset') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('tube_sticker_motor') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('tube_sticker_pump') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('tube_sticker_pumpset') ->disabled(true) ->sortable(), Tables\Columns\CheckboxColumn::make('warranty_card') ->disabled(true) ->sortable(), Tables\Columns\TextColumn::make('part_validation1') ->sortable(), Tables\Columns\TextColumn::make('part_validation2') ->sortable(), Tables\Columns\TextColumn::make('part_validation3') ->sortable(), Tables\Columns\TextColumn::make('part_validation4') ->sortable(), Tables\Columns\TextColumn::make('part_validation5') ->sortable(), Tables\Columns\TextColumn::make('created_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), Tables\Columns\TextColumn::make('updated_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), Tables\Columns\TextColumn::make('deleted_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), ]) ->filters([ Tables\Filters\TrashedFilter::make(), ]) ->actions([ Tables\Actions\ViewAction::make(), Tables\Actions\EditAction::make(), ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ Tables\Actions\DeleteBulkAction::make(), Tables\Actions\ForceDeleteBulkAction::make(), Tables\Actions\RestoreBulkAction::make(), ]), ]); } public static function getRelations(): array { return [ // ]; } public static function getPages(): array { return [ 'index' => Pages\ListStickerMasters::route('/'), 'create' => Pages\CreateStickerMaster::route('/create'), 'view' => Pages\ViewStickerMaster::route('/{record}'), 'edit' => Pages\EditStickerMaster::route('/{record}/edit'), ]; } public static function getEloquentQuery(): Builder { return parent::getEloquentQuery() ->withoutGlobalScopes([ SoftDeletingScope::class, ]); } }