components([ TextInput::make('name') ->label('Tipe Harga') ->placeholder('Ecer, Distributor, Grosir') ->required() ->maxLength(50) ->autofocus() ->autocomplete(false), Select::make('unit_id') ->label('Satuan') ->relationship('unit', 'name') ->required() ->native(false) ->searchable() ->preload(), TextInput::make('price') ->label('Harga') ->placeholder('0') ->autocomplete(false) ->required() ->currencyMask(thousandSeparator: '.', decimalSeparator: ',', precision: 0) ->prefix('Rp') ->dehydrateStateUsing(fn ($state) => (int) str()->replace(',', '', (string) ($state ?? 0))), ]) ->columns(1); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('name') ->label('Tipe Harga') ->searchable() ->sortable(), TextColumn::make('price') ->label('Harga') ->money('IDR', decimalPlaces: 0) ->suffix(fn (EggPrice $record) => ' / '.$record->unit?->alias) ->sortable(), ...TimestampColumns::make(), ]) ->filters([ TrashedFilter::make() ->native(false) ->visible(fn (): bool => auth()->user()->hasRole(RoleEnum::DEVELOPER)), ]) ->recordActions([ EditAction::make() ->modalWidth(Width::Large), DeleteAction::make(), ForceDeleteAction::make(), RestoreAction::make(), ]) ->toolbarActions([ BulkActionGroup::make([ ...DefaultBulkActions::make('Harga Telur'), ]), ]) ->emptyStateIcon(Heroicon::CurrencyDollar) ->emptyStateDescription('Setelah Anda membuat data pertama, maka akan muncul disini.') ->defaultSort('created_at', 'desc') ->deferFilters(false); } public static function getPages(): array { return [ 'index' => ManageEggPrices::route('/'), ]; } public static function getRecordRouteBindingEloquentQuery(): Builder { return parent::getRecordRouteBindingEloquentQuery() ->withoutGlobalScopes([ SoftDeletingScope::class, ]); } }