baseCRUD() ->loadDataOnce() ->syncLocation(false) ->footerToolbar([]) ->headerToolbar([ $this->createTypeButton('drawer', 'lg')->visible(Admin::user()->can('admin.system.admin_menus.create')), ...$this->baseHeaderToolBar(), ]) ->filterTogglable(false) ->footerToolbar(['statistics']) ->bulkActions([ $this->bulkDeleteButton()->reload('window')->visible(Admin::user()->can('admin.system.admin_menus.delete')), ]) ->columns([ amis()->TableColumn('id', 'ID')->sortable(), amis()->TableColumn('title', __('admin.admin_menu.title')), amis()->TableColumn('icon', __('admin.admin_menu.icon')) ->type('flex') ->justify('start') ->items([ amis()->SvgIcon()->icon('${icon}')->className('mr-2 text-lg'), '${icon}', ]), amis()->TableColumn('url', __('admin.admin_menu.url')), amis()->TableColumn('order', __('admin.admin_menu.order'))->quickEdit( amis()->NumberControl()->min(0)->saveImmediately(true) ), amis()->TableColumn('visible', __('admin.admin_menu.visible'))->quickEdit( amis()->SwitchControl()->mode('inline')->saveImmediately(true) ), amis()->TableColumn('is_home', __('admin.admin_menu.is_home'))->quickEdit( amis()->SwitchControl()->mode('inline')->saveImmediately(true) ), $this->rowActions([ $this->rowEditTypeButton('drawer', 'lg')->visible(Admin::user()->can('admin.system.admin_menus.update')), $this->rowDeleteButton()->visible(Admin::user()->can('admin.system.admin_menus.delete')), ]), ]); return $this->baseList($crud); } public function form(): Form { return $this->baseForm()->body([ amis()->GroupControl()->body([ amis()->TextControl('title', __('admin.admin_menu.title'))->required(), amis()->TextControl('icon', __('admin.admin_menu.icon')) ->description( __('admin.admin_menu.icon_description'). ' https://icones.js.org' ), ]), amis()->GroupControl()->body([ amis()->TreeSelectControl('parent_id', __('admin.admin_menu.parent_id')) ->labelField('title') ->valueField('id') ->showIcon(false) ->value(0) ->source('/system/admin_menus?_action=getData'), amis() ->TextControl('component', __('admin.admin_menu.component')) ->description(__('admin.admin_menu.component_desc')) ->value('amis'), ]), amis()->TextControl('url', __('admin.admin_menu.url')) ->required() ->validateOnChange() ->validations(['matchRegexp' => '/^(http(s)?\:\/)?(\/)+/']) ->validationErrors(['matchRegexp' => __('admin.need_start_with_slash')]) ->placeholder('eg: /admin_menus'), amis()->NumberControl('order', __('admin.admin_menu.order')) ->required() ->displayMode('enhance') ->description(__('admin.order_asc')) ->min(0) ->value(0), amis()->ListControl('url_type', __('admin.admin_menu.type')) ->options(Admin::adminMenuModel()::getType()) ->value(Admin::adminMenuModel()::TYPE_ROUTE), amis()->SwitchControl('visible', __('admin.admin_menu.visible')) ->onText(__('admin.admin_menu.show')) ->offText(__('admin.admin_menu.hide')) ->value(1), amis()->SwitchControl('is_home', __('admin.admin_menu.is_home')) ->onText(__('admin.yes')) ->offText(__('admin.no')) ->description(__('admin.admin_menu.is_home_description')) ->value(0), amis()->SwitchControl('is_full', __('admin.admin_menu.is_full')) ->onText(__('admin.yes')) ->offText(__('admin.no')) ->description(__('admin.admin_menu.is_full_description')) ->value(0), ])->onEvent([ 'submitSucc' => [ 'actions' => [ 'actionType' => 'custom', 'script' => 'window.location.reload()', ], ], ]); } public function detail(): Form { return $this->baseDetail()->body([]); } }