Forms\Components\Section::make('Store Info')->schema([
Forms\Components\Select::make('store_code')
->options(Store::query()->pluck('name', 'code'))
->preload()
->live()
->required()
->native(false)
->afterStateUpdated(function (SelectTree $component, Set $set, Get $get, ?Model $record) {
$storeCode = $get('store_code');
if ($storeCode === null) {
return $set('categories', null);
}
if ($record === null || $record->store_code !== $storeCode) {
return $set('categories', null);
}
return $set('categories', $record->categories()->pluck('category_id'));
}),
SelectTree::make('categories')
->relationship('categories', 'name', 'parent_id')
->withCount()
->independent(false)
->enableBranchNode()
->direction('top')
->disabled(function (Get $get, Set $set): bool {
if ($get('store_code') === null) {
$set('categories', null);
return true;
}
return false;
})
->disabledOptions(function (Get $get, ?Model $record): array {
// omitted
})
->saveRelationshipsUsing(function (Model $record, ?array $state) {
// omitted
}),
])->columns()