@alfakit/vue 0.1.1 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/AlfakitRoot.js.map +1 -1
- package/dist/AlfakitRoot.vue.d.ts.map +1 -1
- package/dist/AlfakitRoot.vue_vue_type_script_setup_true_lang.js +3 -1
- package/dist/AlfakitRoot.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/actions/ActionButton.js.map +1 -1
- package/dist/components/actions/ActionButton.vue.d.ts.map +1 -1
- package/dist/components/actions/ActionButton.vue_vue_type_script_setup_true_lang.js +160 -159
- package/dist/components/actions/ActionButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/actions/ActionGroupMenu.js.map +1 -1
- package/dist/components/actions/ActionGroupMenu.vue.d.ts.map +1 -1
- package/dist/components/actions/ActionGroupMenu.vue_vue_type_script_setup_true_lang.js +69 -65
- package/dist/components/actions/ActionGroupMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/actions/ActionModal.js.map +1 -1
- package/dist/components/actions/ActionModal.vue.d.ts.map +1 -1
- package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js +221 -219
- package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/ai/AiCopilot.js.map +1 -1
- package/dist/components/ai/AiCopilot.vue.d.ts +2 -0
- package/dist/components/ai/AiCopilot.vue.d.ts.map +1 -1
- package/dist/components/ai/AiCopilot.vue_vue_type_script_setup_true_lang.js +7 -2
- package/dist/components/ai/AiCopilot.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/cms/CmsPage.vue_vue_type_script_setup_true_lang.js +19 -19
- package/dist/components/cms/CmsPage.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/cms/LivePreview.js.map +1 -1
- package/dist/components/cms/LivePreview.vue.d.ts.map +1 -1
- package/dist/components/cms/LivePreview.vue_vue_type_script_setup_true_lang.js +83 -83
- package/dist/components/cms/LivePreview.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/BuilderField.js.map +1 -1
- package/dist/components/fields/BuilderField.vue.d.ts.map +1 -1
- package/dist/components/fields/BuilderField.vue_vue_type_script_setup_true_lang.js +162 -157
- package/dist/components/fields/BuilderField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/ColorPickerField.js.map +1 -1
- package/dist/components/fields/ColorPickerField.vue.d.ts.map +1 -1
- package/dist/components/fields/ColorPickerField.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/components/fields/ColorPickerField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/ComboboxSelect.js.map +1 -1
- package/dist/components/fields/ComboboxSelect.vue.d.ts.map +1 -1
- package/dist/components/fields/ComboboxSelect.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/fields/ComboboxSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/FileUploadField.js.map +1 -1
- package/dist/components/fields/FileUploadField.vue.d.ts.map +1 -1
- package/dist/components/fields/FileUploadField.vue_vue_type_script_setup_true_lang.js +183 -183
- package/dist/components/fields/FileUploadField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/ImageEditorDialog.js.map +1 -1
- package/dist/components/fields/ImageEditorDialog.vue.d.ts.map +1 -1
- package/dist/components/fields/ImageEditorDialog.vue_vue_type_script_setup_true_lang.js +46 -46
- package/dist/components/fields/ImageEditorDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/KeyValueField.js.map +1 -1
- package/dist/components/fields/KeyValueField.vue.d.ts.map +1 -1
- package/dist/components/fields/KeyValueField.vue_vue_type_script_setup_true_lang.js +66 -66
- package/dist/components/fields/KeyValueField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/ModalTablePicker.js.map +1 -1
- package/dist/components/fields/ModalTablePicker.vue.d.ts.map +1 -1
- package/dist/components/fields/ModalTablePicker.vue_vue_type_script_setup_true_lang.js +113 -113
- package/dist/components/fields/ModalTablePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/OneTimeCodeInputField.js.map +1 -1
- package/dist/components/fields/OneTimeCodeInputField.vue_vue_type_script_setup_true_lang.js +1 -2
- package/dist/components/fields/OneTimeCodeInputField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/RepeaterField.js.map +1 -1
- package/dist/components/fields/RepeaterField.vue.d.ts.map +1 -1
- package/dist/components/fields/RepeaterField.vue_vue_type_script_setup_true_lang.js +12 -12
- package/dist/components/fields/RepeaterField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/RichEditorInput.js.map +1 -1
- package/dist/components/fields/RichEditorInput.vue.d.ts.map +1 -1
- package/dist/components/fields/RichEditorInput.vue_vue_type_script_setup_true_lang.js +166 -165
- package/dist/components/fields/RichEditorInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/SelectField.js.map +1 -1
- package/dist/components/fields/SelectField.vue.d.ts.map +1 -1
- package/dist/components/fields/SelectField.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/fields/SelectField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/SliderField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/TableColumnHeaders.js.map +1 -1
- package/dist/components/fields/TableColumnHeaders.vue.d.ts.map +1 -1
- package/dist/components/fields/TableColumnHeaders.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/components/fields/TableColumnHeaders.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/item-actions.d.ts +2 -2
- package/dist/components/fields/item-actions.d.ts.map +1 -1
- package/dist/components/fields/item-actions.js +31 -31
- package/dist/components/fields/item-actions.js.map +1 -1
- package/dist/components/file-manager/FileManagerView.js.map +1 -1
- package/dist/components/file-manager/FileManagerView.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/file-manager/FileManagerView.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/form/FormBlock.js.map +1 -1
- package/dist/components/form/FormBlock.vue.d.ts.map +1 -1
- package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js +81 -77
- package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/form/form-context.js +25 -25
- package/dist/components/form/form-context.js.map +1 -1
- package/dist/components/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/kanban/KanbanBoard.vue.d.ts.map +1 -1
- package/dist/components/kanban/KanbanBoard.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/kanban/KanbanBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/kanban/KanbanColumnHeader.js.map +1 -1
- package/dist/components/kanban/KanbanColumnHeader.vue.d.ts.map +1 -1
- package/dist/components/kanban/KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js +64 -64
- package/dist/components/kanban/KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/layout/FusedGroupComponent.js.map +1 -1
- package/dist/components/layout/FusedGroupComponent.vue.d.ts.map +1 -1
- package/dist/components/layout/FusedGroupComponent.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/components/layout/FusedGroupComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/layout/SectionComponent.js.map +1 -1
- package/dist/components/layout/SectionComponent.vue.d.ts.map +1 -1
- package/dist/components/layout/SectionComponent.vue_vue_type_script_setup_true_lang.js +23 -23
- package/dist/components/layout/SectionComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/layout/TabsComponent.js.map +1 -1
- package/dist/components/layout/TabsComponent.vue.d.ts.map +1 -1
- package/dist/components/layout/TabsComponent.vue_vue_type_script_setup_true_lang.js +76 -55
- package/dist/components/layout/TabsComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/notifications/NotificationsMenu.js.map +1 -1
- package/dist/components/notifications/NotificationsMenu.vue.d.ts.map +1 -1
- package/dist/components/notifications/NotificationsMenu.vue_vue_type_script_setup_true_lang.js +44 -42
- package/dist/components/notifications/NotificationsMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/DebugPanel.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/panel/DebugPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/GlobalSearch.js.map +1 -1
- package/dist/components/panel/GlobalSearch.vue.d.ts.map +1 -1
- package/dist/components/panel/GlobalSearch.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/components/panel/GlobalSearch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/GlobalSearchPalette.js.map +1 -1
- package/dist/components/panel/GlobalSearchPalette.vue.d.ts.map +1 -1
- package/dist/components/panel/GlobalSearchPalette.vue_vue_type_script_setup_true_lang.js +102 -96
- package/dist/components/panel/GlobalSearchPalette.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/NavGroup.vue_vue_type_script_setup_true_lang.js +10 -10
- package/dist/components/panel/NavGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/NavGroupFlyout.vue_vue_type_script_setup_true_lang.js +9 -9
- package/dist/components/panel/NavGroupFlyout.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/NavItem.vue_vue_type_script_setup_true_lang.js +16 -16
- package/dist/components/panel/NavItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/NavSubItem.vue_vue_type_script_setup_true_lang.js +10 -10
- package/dist/components/panel/NavSubItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/ShortcutKeys.js.map +1 -1
- package/dist/components/panel/ShortcutKeys.vue.d.ts.map +1 -1
- package/dist/components/panel/ShortcutKeys.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/panel/ShortcutKeys.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/TenantMenu.js.map +1 -1
- package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js +37 -37
- package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/Topbar.vue_vue_type_script_setup_true_lang.js +11 -11
- package/dist/components/panel/Topbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/realtime/use-live-updates.d.ts.map +1 -1
- package/dist/components/realtime/use-live-updates.js +24 -23
- package/dist/components/realtime/use-live-updates.js.map +1 -1
- package/dist/components/table/BooleanCell.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/table/BooleanCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/ColumnHeader.js.map +1 -1
- package/dist/components/table/ColumnHeader.vue.d.ts.map +1 -1
- package/dist/components/table/ColumnHeader.vue_vue_type_script_setup_true_lang.js +55 -49
- package/dist/components/table/ColumnHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/ColumnManager.js.map +1 -1
- package/dist/components/table/ColumnManager.vue.d.ts.map +1 -1
- package/dist/components/table/ColumnManager.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/components/table/ColumnManager.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/ContentLayoutSort.js.map +1 -1
- package/dist/components/table/ContentLayoutSort.vue.d.ts.map +1 -1
- package/dist/components/table/ContentLayoutSort.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/table/ContentLayoutSort.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/GroupHeaderRow.js.map +1 -1
- package/dist/components/table/GroupHeaderRow.vue.d.ts.map +1 -1
- package/dist/components/table/GroupHeaderRow.vue_vue_type_script_setup_true_lang.js +55 -34
- package/dist/components/table/GroupHeaderRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/SelectCell.js.map +1 -1
- package/dist/components/table/SelectCell.vue.d.ts.map +1 -1
- package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js +26 -20
- package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/SelectComboboxCell.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/table/SelectComboboxCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TableCellContent.js.map +1 -1
- package/dist/components/table/TableCellContent.vue.d.ts.map +1 -1
- package/dist/components/table/TableCellContent.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/components/table/TableCellContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TablePagination.js.map +1 -1
- package/dist/components/table/TablePagination.vue.d.ts.map +1 -1
- package/dist/components/table/TablePagination.vue_vue_type_script_setup_true_lang.js +87 -87
- package/dist/components/table/TablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TextInputCell.js.map +1 -1
- package/dist/components/table/TextInputCell.vue.d.ts.map +1 -1
- package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js +40 -34
- package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/cell-update.d.ts +6 -0
- package/dist/components/table/cell-update.d.ts.map +1 -1
- package/dist/components/table/cell-update.js.map +1 -1
- package/dist/components/translation-manager/TranslationManagerView.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/translation-manager/TranslationManagerView.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/ui/CommandAutoHighlight.js +7 -0
- package/dist/components/ui/CommandAutoHighlight.js.map +1 -0
- package/dist/components/ui/CommandAutoHighlight.vue.d.ts +21 -0
- package/dist/components/ui/CommandAutoHighlight.vue.d.ts.map +1 -0
- package/dist/components/ui/CommandAutoHighlight.vue_vue_type_script_setup_true_lang.js +18 -0
- package/dist/components/ui/CommandAutoHighlight.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/ui/DialogContent.js.map +1 -1
- package/dist/components/ui/DialogContent.vue.d.ts.map +1 -1
- package/dist/components/ui/DialogContent.vue_vue_type_script_setup_true_lang.js +13 -12
- package/dist/components/ui/DialogContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/ui/PopoverContent.js.map +1 -1
- package/dist/components/ui/PopoverContent.vue.d.ts.map +1 -1
- package/dist/components/ui/PopoverContent.vue_vue_type_script_setup_true_lang.js +9 -8
- package/dist/components/ui/PopoverContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/ui/SheetContent.js.map +1 -1
- package/dist/components/ui/SheetContent.vue.d.ts.map +1 -1
- package/dist/components/ui/SheetContent.vue_vue_type_script_setup_true_lang.js +13 -12
- package/dist/components/ui/SheetContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/ui/TooltipContent.js.map +1 -1
- package/dist/components/ui/TooltipContent.vue.d.ts.map +1 -1
- package/dist/components/ui/TooltipContent.vue_vue_type_script_setup_true_lang.js +9 -8
- package/dist/components/ui/TooltipContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components.css +347 -0
- package/dist/context.d.ts +7 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +29 -26
- package/dist/context.js.map +1 -1
- package/dist/create-alfakit.d.ts.map +1 -1
- package/dist/create-alfakit.js +33 -31
- package/dist/create-alfakit.js.map +1 -1
- package/dist/eject-manifest.json +11 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +219 -217
- package/dist/layouts/AppLayout.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/layouts/AppLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/layouts/AuthLayout.vue_vue_type_script_setup_true_lang.js +9 -9
- package/dist/layouts/FullscreenLayout.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/layouts/FullscreenLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/layouts/TopNavLayout.vue_vue_type_script_setup_true_lang.js +15 -15
- package/dist/layouts/TopNavLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/layouts/lazy-layouts.d.ts +10 -0
- package/dist/layouts/lazy-layouts.d.ts.map +1 -0
- package/dist/layouts/lazy-layouts.js +8 -0
- package/dist/layouts/lazy-layouts.js.map +1 -0
- package/dist/layouts/panel-layouts.d.ts +8 -0
- package/dist/layouts/panel-layouts.d.ts.map +1 -0
- package/dist/layouts/panel-layouts.js +15 -0
- package/dist/layouts/panel-layouts.js.map +1 -0
- package/dist/lib/lazy.d.ts.map +1 -1
- package/dist/lib/lazy.js +2 -2
- package/dist/lib/lazy.js.map +1 -1
- package/dist/pages/PageShell.js.map +1 -1
- package/dist/pages/PageShell.vue.d.ts.map +1 -1
- package/dist/pages/PageShell.vue_vue_type_script_setup_true_lang.js +39 -42
- package/dist/pages/PageShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/standalone/AlfakitComponent.js.map +1 -1
- package/dist/standalone/AlfakitComponent.vue.d.ts.map +1 -1
- package/dist/standalone/AlfakitComponent.vue_vue_type_script_setup_true_lang.js +56 -52
- package/dist/standalone/AlfakitComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/standalone/AlfakitToaster.js.map +1 -1
- package/dist/standalone/AlfakitToaster.vue.d.ts.map +1 -1
- package/dist/standalone/AlfakitToaster.vue_vue_type_script_setup_true_lang.js +23 -15
- package/dist/standalone/AlfakitToaster.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/standalone.css +54 -0
- package/dist/starter-kit/AlfakitStarterKitRoot.js.map +1 -1
- package/dist/starter-kit/AlfakitStarterKitRoot.vue.d.ts +2 -2
- package/dist/starter-kit/AlfakitStarterKitRoot.vue.d.ts.map +1 -1
- package/dist/starter-kit/AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js +17 -12
- package/dist/starter-kit/AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/starter-kit/dashboard-widgets.d.ts +54 -0
- package/dist/starter-kit/dashboard-widgets.d.ts.map +1 -0
- package/dist/starter-kit/dashboard-widgets.js +54 -0
- package/dist/starter-kit/dashboard-widgets.js.map +1 -0
- package/dist/starter-kit/index.d.ts +2 -1
- package/dist/starter-kit/index.d.ts.map +1 -1
- package/dist/starter-kit/index.js +5 -4
- package/dist/starter-kit/runtime.d.ts +6 -0
- package/dist/starter-kit/runtime.d.ts.map +1 -1
- package/dist/starter-kit/runtime.js +19 -15
- package/dist/starter-kit/runtime.js.map +1 -1
- package/dist/starter-kit/starter-kit.d.ts.map +1 -1
- package/dist/starter-kit/starter-kit.js +8 -8
- package/dist/starter-kit/starter-kit.js.map +1 -1
- package/dist/starter-kit/widgets/CopilotTrigger.js +7 -0
- package/dist/starter-kit/widgets/CopilotTrigger.js.map +1 -0
- package/dist/starter-kit/widgets/CopilotTrigger.vue.d.ts +12 -0
- package/dist/starter-kit/widgets/CopilotTrigger.vue.d.ts.map +1 -0
- package/dist/starter-kit/widgets/CopilotTrigger.vue_vue_type_script_setup_true_lang.js +23 -0
- package/dist/starter-kit/widgets/CopilotTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/starter-kit/widgets/LoadedCopilot.js +7 -0
- package/dist/starter-kit/widgets/LoadedCopilot.js.map +1 -0
- package/dist/starter-kit/widgets/LoadedCopilot.vue.d.ts +8 -0
- package/dist/starter-kit/widgets/LoadedCopilot.vue.d.ts.map +1 -0
- package/dist/starter-kit/widgets/LoadedCopilot.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/starter-kit/widgets/LoadedCopilot.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/starter-kit/widgets/SearchTrigger.js.map +1 -1
- package/dist/starter-kit/widgets/SearchTrigger.vue.d.ts.map +1 -1
- package/dist/starter-kit/widgets/SearchTrigger.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/starter-kit/widgets/SearchTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.js +7 -0
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.js.map +1 -0
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue.d.ts +8 -0
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue.d.ts.map +1 -0
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/starter-kit/widgets/TenantChooser.js.map +1 -1
- package/dist/starter-kit/widgets/TenantChooser.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/starter-kit/widgets/TenantChooser.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/starter-kit/widgets/index.d.ts +40 -9
- package/dist/starter-kit/widgets/index.d.ts.map +1 -1
- package/dist/starter-kit/widgets/index.js +21 -18
- package/dist/starter-kit/widgets/index.js.map +1 -1
- package/dist/starter-kit/widgets/loaded.d.ts +10 -0
- package/dist/starter-kit/widgets/loaded.d.ts.map +1 -0
- package/dist/starter-kit/widgets/loaded.js +5 -0
- package/dist/styles.css +9 -2
- package/dist/themes.css +8 -335
- package/package.json +3 -3
- package/src/AlfakitRoot.vue +9 -1
- package/src/components/actions/ActionButton.vue +14 -6
- package/src/components/actions/ActionGroupMenu.vue +13 -1
- package/src/components/actions/ActionModal.vue +12 -1
- package/src/components/ai/AiCopilot.vue +7 -1
- package/src/components/cms/LivePreview.vue +8 -2
- package/src/components/fields/BuilderField.vue +15 -2
- package/src/components/fields/ColorPickerField.vue +1 -0
- package/src/components/fields/ComboboxSelect.vue +1 -1
- package/src/components/fields/FileUploadField.vue +14 -11
- package/src/components/fields/ImageEditorDialog.vue +7 -3
- package/src/components/fields/KeyValueField.vue +3 -2
- package/src/components/fields/ModalTablePicker.vue +7 -2
- package/src/components/fields/OneTimeCodeInputField.vue +1 -1
- package/src/components/fields/RepeaterField.vue +2 -3
- package/src/components/fields/RichEditorInput.vue +3 -0
- package/src/components/fields/SelectField.vue +4 -2
- package/src/components/fields/TableColumnHeaders.vue +6 -1
- package/src/components/fields/item-actions.ts +31 -10
- package/src/components/file-manager/FileManagerView.vue +1 -1
- package/src/components/form/FormBlock.vue +26 -1
- package/src/components/form/form-context.ts +3 -3
- package/src/components/kanban/KanbanBoard.vue +15 -3
- package/src/components/kanban/KanbanColumnHeader.vue +6 -4
- package/src/components/layout/FusedGroupComponent.vue +1 -0
- package/src/components/layout/SectionComponent.vue +10 -4
- package/src/components/layout/TabsComponent.vue +61 -5
- package/src/components/notifications/NotificationsMenu.vue +11 -0
- package/src/components/panel/GlobalSearch.vue +1 -0
- package/src/components/panel/GlobalSearchPalette.vue +2 -0
- package/src/components/panel/ShortcutKeys.vue +1 -0
- package/src/components/panel/TenantMenu.vue +2 -2
- package/src/components/realtime/use-live-updates.ts +3 -1
- package/src/components/table/ColumnHeader.vue +23 -12
- package/src/components/table/ColumnManager.vue +12 -8
- package/src/components/table/ContentLayoutSort.vue +7 -1
- package/src/components/table/GroupHeaderRow.vue +27 -0
- package/src/components/table/SelectCell.vue +5 -2
- package/src/components/table/TableCellContent.vue +4 -2
- package/src/components/table/TablePagination.vue +12 -7
- package/src/components/table/TextInputCell.vue +11 -5
- package/src/components/table/cell-update.ts +6 -0
- package/src/components/ui/CommandAutoHighlight.vue +27 -0
- package/src/components/ui/DialogContent.vue +5 -1
- package/src/components/ui/PopoverContent.vue +5 -1
- package/src/components/ui/SheetContent.vue +5 -1
- package/src/components/ui/TooltipContent.vue +5 -1
- package/src/context.ts +10 -0
- package/src/create-alfakit.ts +5 -0
- package/src/index.ts +2 -0
- package/src/layouts/lazy-layouts.ts +14 -0
- package/src/layouts/panel-layouts.ts +17 -0
- package/src/lib/lazy.ts +11 -1
- package/src/pages/PageShell.vue +5 -6
- package/src/standalone/AlfakitComponent.vue +17 -6
- package/src/standalone/AlfakitToaster.vue +12 -2
- package/src/starter-kit/AlfakitStarterKitRoot.vue +12 -3
- package/src/starter-kit/dashboard-widgets.ts +93 -0
- package/src/starter-kit/index.ts +7 -1
- package/src/starter-kit/runtime.ts +17 -1
- package/src/starter-kit/starter-kit.ts +2 -1
- package/src/starter-kit/widgets/CopilotTrigger.vue +58 -0
- package/src/starter-kit/widgets/LoadedCopilot.vue +29 -0
- package/src/starter-kit/widgets/SearchTrigger.vue +1 -0
- package/src/starter-kit/widgets/StarterKitImpersonationBanner.vue +57 -0
- package/src/starter-kit/widgets/TenantChooser.vue +1 -1
- package/src/starter-kit/widgets/index.ts +56 -11
- package/src/starter-kit/widgets/loaded.ts +9 -0
- package/src/styles.css +9 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalTablePicker.js","names":["_sfc_main","ModalTablePicker_vue_vue_type_script_setup_true_lang_default","ModalTablePicker_default"],"sources":["../../../src/components/fields/ModalTablePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ModalTableSelectResponse, ModalTableSelectSchema, TableQuery } from '@alfakit/core'\nimport {\n FILTERS_MODAL_WIDTH_CLASSES,\n debounce,\n modalTablePaging,\n toggleModalTableKey,\n} from '@alfakit/core'\nimport {\n ArrowDownIcon,\n ArrowUpDownIcon,\n ArrowUpIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n SearchIcon,\n} from '@lucide/vue'\nimport { computed, onScopeDispose, ref, watch } from 'vue'\nimport { useChoice, useT } from '../../context'\nimport { cn } from '../../lib/utils'\nimport { useFormStore } from '../form/form-context'\nimport TableCellContent from '../table/TableCellContent.vue'\nimport Button from '../ui/Button.vue'\nimport Checkbox from '../ui/Checkbox.vue'\nimport Dialog from '../ui/Dialog.vue'\nimport DialogContent from '../ui/DialogContent.vue'\nimport DialogDescription from '../ui/DialogDescription.vue'\nimport DialogFooter from '../ui/DialogFooter.vue'\nimport DialogHeader from '../ui/DialogHeader.vue'\nimport DialogTitle from '../ui/DialogTitle.vue'\nimport Input from '../ui/Input.vue'\nimport Skeleton from '../ui/Skeleton.vue'\nimport Table from '../ui/Table.vue'\nimport TableBody from '../ui/TableBody.vue'\nimport TableCell from '../ui/TableCell.vue'\nimport TableHead from '../ui/TableHead.vue'\nimport TableHeader from '../ui/TableHeader.vue'\nimport TableRow from '../ui/TableRow.vue'\nimport ModalTablePickerFilters from './ModalTablePickerFilters.vue'\n\nconst props = defineProps<{ component: ModalTableSelectSchema; initial: string[] }>()\nconst emit = defineEmits<{\n close: []\n confirm: [keys: string[], labels: Record<string, string>]\n}>()\nconst t = useT()\nconst choice = useChoice()\nconst form = useFormStore()\nconst multiple = computed(() => Boolean(props.component.multiple))\nconst query = ref<TableQuery>({})\nconst response = ref<ModalTableSelectResponse | null>(null)\nconst failed = ref(false)\nconst loading = ref(true)\nconst draft = ref<string[]>([...props.initial])\nconst labels = ref<Record<string, string>>({})\nconst search = ref('')\nlet controller: AbortController | null = null\n\nconst load = () => {\n controller?.abort()\n const current = new AbortController()\n controller = current\n loading.value = true\n\n form\n .modalTable(\n props.component.statePath,\n props.component.tableStateIdentifier,\n query.value,\n current.signal,\n )\n .then((next) => {\n if (!next) return\n response.value = next\n labels.value = { ...labels.value, ...next.labels }\n failed.value = false\n })\n .catch((error: unknown) => {\n if ((error as { name?: string }).name !== 'AbortError') failed.value = true\n })\n .finally(() => {\n if (!current.signal.aborted) loading.value = false\n })\n}\n\nwatch(query, load, { immediate: true, deep: true })\nonScopeDispose(() => controller?.abort())\n\nconst table = computed(() => response.value?.table)\nconst pushSearch = debounce((next: string) => {\n query.value = { ...query.value, search: next || null, page: null }\n}, 400)\nonScopeDispose(() => pushSearch.cancel())\n\nconst columns = computed(() =>\n table.value\n ? table.value.columns.filter((column) => table.value!.visibleColumns.includes(column.name))\n : [],\n)\nconst records = computed(() => table.value?.records ?? [])\nconst paging = computed(() => modalTablePaging(table.value?.pagination))\nconst atMax = computed(\n () =>\n multiple.value &&\n props.component.maxItems != null &&\n draft.value.length >= props.component.maxItems,\n)\nconst hasToolbar = computed(\n () => Boolean(table.value?.searchable) || (table.value?.filters?.length ?? 0) > 0,\n)\n\nconst toggle = (key: string) => {\n draft.value = toggleModalTableKey(draft.value, key, multiple.value, props.component.maxItems)\n}\nconst isSelectable = (key: string, selectable: boolean | undefined) =>\n selectable === true && (draft.value.includes(key) || !atMax.value)\nconst sort = (column: string) => {\n const direction =\n table.value?.sort?.column === column && table.value.sort.direction === 'asc' ? 'desc' : 'asc'\n query.value = { ...query.value, sort: column, direction, page: null }\n}\nconst ariaSortOf = (column: string) =>\n table.value?.sort?.column === column\n ? table.value.sort.direction === 'asc'\n ? 'ascending'\n : 'descending'\n : undefined\nconst goTo = (page: number) => {\n query.value = { ...query.value, page }\n}\nconst confirm = () =>\n emit(\n 'confirm',\n draft.value,\n Object.fromEntries(\n draft.value.filter((key) => labels.value[key]).map((key) => [key, labels.value[key]!]),\n ),\n )\n</script>\n\n<template>\n <Dialog :open=\"true\" @update:open=\"(open) => !open && emit('close')\">\n <DialogContent\n :class=\"\n cn(\n 'flex max-h-[90vh] flex-col gap-4',\n FILTERS_MODAL_WIDTH_CLASSES[props.component.modalWidth ?? '3xl'] ?? 'sm:max-w-3xl',\n )\n \"\n data-slot=\"modal-table-select-dialog\"\n >\n <DialogHeader>\n <DialogTitle>{{ props.component.modalHeading }}</DialogTitle>\n <!-- Escaped on the server (`Html::from()`), like action modal descriptions. -->\n <p\n v-if=\"props.component.modalDescription\"\n class=\"text-muted-foreground text-sm\"\n data-slot=\"modal-table-select-description\"\n v-html=\"props.component.modalDescription\"\n />\n <DialogDescription aria-live=\"polite\">{{\n choice('table.selected', draft.length, { count: draft.length }, ':count selected')\n }}</DialogDescription>\n </DialogHeader>\n <div v-if=\"table && hasToolbar\" class=\"flex flex-col gap-3\">\n <div v-if=\"table.searchable\" class=\"relative\">\n <SearchIcon\n class=\"text-muted-foreground pointer-events-none absolute start-2.5 top-1/2 size-4 -translate-y-1/2\"\n />\n <Input\n type=\"search\"\n :model-value=\"search\"\n :aria-label=\"table.searchPlaceholder\"\n :placeholder=\"table.searchPlaceholder\"\n class=\"ps-8\"\n @update:model-value=\"\n (next) => {\n search = String(next)\n pushSearch(String(next))\n }\n \"\n />\n </div>\n <ModalTablePickerFilters\n v-if=\"(table.filters?.length ?? 0) > 0\"\n :table=\"table\"\n :owner=\"form\"\n :path=\"props.component.statePath\"\n @change=\"(filters) => (query = { ...query, filters, page: null })\"\n />\n </div>\n <div class=\"min-h-0 flex-1 overflow-auto rounded-md border\" :aria-busy=\"loading\">\n <p v-if=\"failed\" role=\"alert\" class=\"text-destructive p-6 text-center text-sm\">\n {{ t('table_select.load_failed', {}, \"Couldn't load the records.\") }}\n </p>\n <div v-else-if=\"!table\" class=\"flex flex-col gap-2 p-4\" aria-hidden=\"true\">\n <Skeleton class=\"h-8 w-full\" />\n <Skeleton class=\"h-8 w-full\" />\n <Skeleton class=\"h-8 w-full\" />\n </div>\n <p v-else-if=\"records.length === 0\" class=\"text-muted-foreground p-6 text-center text-sm\">\n {{ table.emptyState.heading }}\n </p>\n <Table v-else :class=\"cn(loading && 'opacity-60')\">\n <TableHeader>\n <TableRow>\n <TableHead class=\"w-10\"\n ><span class=\"sr-only\">{{\n t('table.select_row', {}, 'Select row')\n }}</span></TableHead\n >\n <TableHead\n v-for=\"column in columns\"\n :key=\"column.name\"\n :aria-sort=\"ariaSortOf(column.name)\"\n >\n <button\n v-if=\"column.sortable\"\n type=\"button\"\n class=\"inline-flex items-center gap-1\"\n @click=\"sort(column.name)\"\n >\n {{ column.label }}\n <template v-if=\"table.sort?.column === column.name\">\n <ArrowUpIcon v-if=\"table.sort.direction === 'asc'\" class=\"size-3.5\" />\n <ArrowDownIcon v-else class=\"size-3.5\" />\n </template>\n <ArrowUpDownIcon v-else class=\"text-muted-foreground size-3.5\" />\n </button>\n <template v-else>{{ column.label }}</template>\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n <TableRow\n v-for=\"record in records\"\n :key=\"String(record.key)\"\n :data-state=\"draft.includes(String(record.key)) ? 'selected' : undefined\"\n :class=\"cn(isSelectable(String(record.key), record.selectable) && 'cursor-pointer')\"\n @click=\"\n isSelectable(String(record.key), record.selectable) && toggle(String(record.key))\n \"\n >\n <TableCell class=\"w-10\" @click.stop>\n <Checkbox\n v-if=\"multiple\"\n :model-value=\"draft.includes(String(record.key))\"\n :disabled=\"!isSelectable(String(record.key), record.selectable)\"\n :aria-label=\"\n t(\n 'table_select.select_record',\n { label: labels[String(record.key)] ?? String(record.key) },\n 'Select :label',\n )\n \"\n @update:model-value=\"toggle(String(record.key))\"\n />\n <input\n v-else\n type=\"radio\"\n :name=\"`${props.component.statePath}-picker`\"\n class=\"accent-primary size-4\"\n :checked=\"draft.includes(String(record.key))\"\n :disabled=\"!isSelectable(String(record.key), record.selectable)\"\n :aria-label=\"\n t(\n 'table_select.select_record',\n { label: labels[String(record.key)] ?? String(record.key) },\n 'Select :label',\n )\n \"\n @change=\"toggle(String(record.key))\"\n />\n </TableCell>\n <TableCell v-for=\"column in columns\" :key=\"column.name\">\n <TableCellContent\n v-if=\"record.cells[column.name]\"\n :column=\"column\"\n :cell=\"record.cells[column.name]!\"\n :record-key=\"record.key\"\n token=\"\"\n :component=\"`picker:${props.component.statePath}`\"\n />\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n <p v-if=\"atMax\" class=\"text-muted-foreground text-sm\" role=\"status\">\n {{\n choice(\n 'table_select.max_reached',\n props.component.maxItems ?? 0,\n { count: props.component.maxItems ?? 0 },\n 'You can select up to :count records.',\n )\n }}\n </p>\n <DialogFooter class=\"items-center sm:justify-between\">\n <nav\n v-if=\"paging\"\n class=\"flex items-center gap-2\"\n :aria-label=\"t('pagination', {}, 'Pagination')\"\n >\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon-sm\"\n :disabled=\"!paging.hasPrevious || loading\"\n :aria-label=\"t('table.previous', {}, 'Previous')\"\n @click=\"goTo(paging.page - 1)\"\n ><ChevronLeftIcon class=\"rtl:rotate-180\"\n /></Button>\n <span class=\"text-muted-foreground text-sm\">{{\n paging.total !== undefined\n ? t(\n 'table.showing',\n { first: paging.from, last: paging.to, total: paging.total },\n 'Showing :first–:last of :total',\n )\n : `${paging.from}–${paging.to}`\n }}</span>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon-sm\"\n :disabled=\"!paging.hasNext || loading\"\n :aria-label=\"t('table.next', {}, 'Next')\"\n @click=\"goTo(paging.page + 1)\"\n ><ChevronRightIcon class=\"rtl:rotate-180\"\n /></Button>\n </nav>\n <span v-else />\n <div class=\"flex gap-2\">\n <Button v-if=\"draft.length > 0\" type=\"button\" variant=\"ghost\" @click=\"draft = []\">{{\n t('table_select.clear', {}, 'Clear selection')\n }}</Button>\n <Button type=\"button\" variant=\"outline\" @click=\"emit('close')\">{{\n t('cancel', {}, 'Cancel')\n }}</Button>\n <Button type=\"button\" @click=\"confirm\">{{\n props.component.modalSubmitActionLabel ?? t('table_select.confirm', {}, 'Select')\n }}</Button>\n </div>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ModalTablePicker.js","names":["_sfc_main","ModalTablePicker_vue_vue_type_script_setup_true_lang_default","ModalTablePicker_default"],"sources":["../../../src/components/fields/ModalTablePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ModalTableSelectResponse, ModalTableSelectSchema, TableQuery } from '@alfakit/core'\nimport {\n FILTERS_MODAL_WIDTH_CLASSES,\n debounce,\n modalTablePaging,\n toggleModalTableKey,\n} from '@alfakit/core'\nimport {\n ArrowDownIcon,\n ArrowUpDownIcon,\n ArrowUpIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n SearchIcon,\n} from '@lucide/vue'\nimport { computed, onScopeDispose, ref, watch } from 'vue'\nimport { useChoice, useFormatter, useT } from '../../context'\nimport { cn } from '../../lib/utils'\nimport { useFormStore } from '../form/form-context'\nimport TableCellContent from '../table/TableCellContent.vue'\nimport Button from '../ui/Button.vue'\nimport Checkbox from '../ui/Checkbox.vue'\nimport Dialog from '../ui/Dialog.vue'\nimport DialogContent from '../ui/DialogContent.vue'\nimport DialogDescription from '../ui/DialogDescription.vue'\nimport DialogFooter from '../ui/DialogFooter.vue'\nimport DialogHeader from '../ui/DialogHeader.vue'\nimport DialogTitle from '../ui/DialogTitle.vue'\nimport Input from '../ui/Input.vue'\nimport Skeleton from '../ui/Skeleton.vue'\nimport Table from '../ui/Table.vue'\nimport TableBody from '../ui/TableBody.vue'\nimport TableCell from '../ui/TableCell.vue'\nimport TableHead from '../ui/TableHead.vue'\nimport TableHeader from '../ui/TableHeader.vue'\nimport TableRow from '../ui/TableRow.vue'\nimport ModalTablePickerFilters from './ModalTablePickerFilters.vue'\n\nconst props = defineProps<{ component: ModalTableSelectSchema; initial: string[] }>()\nconst emit = defineEmits<{\n close: []\n confirm: [keys: string[], labels: Record<string, string>]\n}>()\nconst t = useT()\nconst format = useFormatter()\nconst choice = useChoice()\nconst form = useFormStore()\nconst multiple = computed(() => Boolean(props.component.multiple))\nconst query = ref<TableQuery>({})\nconst response = ref<ModalTableSelectResponse | null>(null)\nconst failed = ref(false)\nconst loading = ref(true)\nconst draft = ref<string[]>([...props.initial])\nconst labels = ref<Record<string, string>>({})\nconst search = ref('')\nlet controller: AbortController | null = null\n\nconst load = () => {\n controller?.abort()\n const current = new AbortController()\n controller = current\n loading.value = true\n\n form\n .modalTable(\n props.component.statePath,\n props.component.tableStateIdentifier,\n query.value,\n current.signal,\n )\n .then((next) => {\n if (!next) return\n response.value = next\n labels.value = { ...labels.value, ...next.labels }\n failed.value = false\n })\n .catch((error: unknown) => {\n if ((error as { name?: string }).name !== 'AbortError') failed.value = true\n })\n .finally(() => {\n if (!current.signal.aborted) loading.value = false\n })\n}\n\nwatch(query, load, { immediate: true, deep: true })\nonScopeDispose(() => controller?.abort())\n\nconst table = computed(() => response.value?.table)\nconst pushSearch = debounce((next: string) => {\n query.value = { ...query.value, search: next || null, page: null }\n}, 400)\nonScopeDispose(() => pushSearch.cancel())\n\nconst columns = computed(() =>\n table.value\n ? table.value.columns.filter((column) => table.value!.visibleColumns.includes(column.name))\n : [],\n)\nconst records = computed(() => table.value?.records ?? [])\nconst paging = computed(() => modalTablePaging(table.value?.pagination))\nconst atMax = computed(\n () =>\n multiple.value &&\n props.component.maxItems != null &&\n draft.value.length >= props.component.maxItems,\n)\nconst hasToolbar = computed(\n () => Boolean(table.value?.searchable) || (table.value?.filters?.length ?? 0) > 0,\n)\n\nconst toggle = (key: string) => {\n draft.value = toggleModalTableKey(draft.value, key, multiple.value, props.component.maxItems)\n}\nconst isSelectable = (key: string, selectable: boolean | undefined) =>\n selectable === true && (draft.value.includes(key) || !atMax.value)\nconst sort = (column: string) => {\n const direction =\n table.value?.sort?.column === column && table.value.sort.direction === 'asc' ? 'desc' : 'asc'\n query.value = { ...query.value, sort: column, direction, page: null }\n}\nconst ariaSortOf = (column: string) =>\n table.value?.sort?.column === column\n ? table.value.sort.direction === 'asc'\n ? 'ascending'\n : 'descending'\n : undefined\nconst goTo = (page: number) => {\n query.value = { ...query.value, page }\n}\nconst confirm = () =>\n emit(\n 'confirm',\n draft.value,\n Object.fromEntries(\n draft.value.filter((key) => labels.value[key]).map((key) => [key, labels.value[key]!]),\n ),\n )\n</script>\n\n<template>\n <Dialog :open=\"true\" @update:open=\"(open) => !open && emit('close')\">\n <DialogContent\n :class=\"\n cn(\n 'flex max-h-[90vh] flex-col gap-4',\n FILTERS_MODAL_WIDTH_CLASSES[props.component.modalWidth ?? '3xl'] ?? 'sm:max-w-3xl',\n )\n \"\n data-slot=\"modal-table-select-dialog\"\n >\n <DialogHeader>\n <DialogTitle>{{ props.component.modalHeading }}</DialogTitle>\n <!-- Escaped on the server (`Html::from()`), like action modal descriptions. -->\n <p\n v-if=\"props.component.modalDescription\"\n class=\"text-muted-foreground text-sm\"\n data-slot=\"modal-table-select-description\"\n v-html=\"props.component.modalDescription\"\n />\n <DialogDescription aria-live=\"polite\">{{\n choice('table.selected', draft.length, { count: draft.length }, ':count selected')\n }}</DialogDescription>\n </DialogHeader>\n <div v-if=\"table && hasToolbar\" class=\"flex flex-col gap-3\">\n <div v-if=\"table.searchable\" class=\"relative\">\n <SearchIcon\n class=\"text-muted-foreground pointer-events-none absolute start-2.5 top-1/2 size-4 -translate-y-1/2\"\n />\n <Input\n type=\"search\"\n :model-value=\"search\"\n :aria-label=\"table.searchPlaceholder\"\n :placeholder=\"table.searchPlaceholder\"\n class=\"ps-8\"\n @update:model-value=\"\n (next) => {\n search = String(next)\n pushSearch(String(next))\n }\n \"\n />\n </div>\n <ModalTablePickerFilters\n v-if=\"(table.filters?.length ?? 0) > 0\"\n :table=\"table\"\n :owner=\"form\"\n :path=\"props.component.statePath\"\n @change=\"(filters) => (query = { ...query, filters, page: null })\"\n />\n </div>\n <div class=\"min-h-0 flex-1 overflow-auto rounded-md border\" :aria-busy=\"loading\">\n <p v-if=\"failed\" role=\"alert\" class=\"text-destructive p-6 text-center text-sm\">\n {{ t('table_select.load_failed', {}, \"Couldn't load the records.\") }}\n </p>\n <div v-else-if=\"!table\" class=\"flex flex-col gap-2 p-4\" aria-hidden=\"true\">\n <Skeleton class=\"h-8 w-full\" />\n <Skeleton class=\"h-8 w-full\" />\n <Skeleton class=\"h-8 w-full\" />\n </div>\n <p v-else-if=\"records.length === 0\" class=\"text-muted-foreground p-6 text-center text-sm\">\n {{ table.emptyState.heading }}\n </p>\n <Table v-else :class=\"cn(loading && 'opacity-60')\">\n <TableHeader>\n <TableRow>\n <TableHead class=\"w-10\"\n ><span class=\"sr-only\">{{\n t('table.select_row', {}, 'Select row')\n }}</span></TableHead\n >\n <TableHead\n v-for=\"column in columns\"\n :key=\"column.name\"\n :aria-sort=\"ariaSortOf(column.name)\"\n >\n <button\n v-if=\"column.sortable\"\n type=\"button\"\n class=\"inline-flex items-center gap-1\"\n @click=\"sort(column.name)\"\n >\n {{ column.label }}\n <template v-if=\"table.sort?.column === column.name\">\n <ArrowUpIcon v-if=\"table.sort.direction === 'asc'\" class=\"size-3.5\" />\n <ArrowDownIcon v-else class=\"size-3.5\" />\n </template>\n <ArrowUpDownIcon v-else class=\"text-muted-foreground size-3.5\" />\n </button>\n <template v-else>{{ column.label }}</template>\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n <TableRow\n v-for=\"record in records\"\n :key=\"String(record.key)\"\n :data-state=\"draft.includes(String(record.key)) ? 'selected' : undefined\"\n :class=\"cn(isSelectable(String(record.key), record.selectable) && 'cursor-pointer')\"\n @click=\"\n isSelectable(String(record.key), record.selectable) && toggle(String(record.key))\n \"\n >\n <TableCell class=\"w-10\" @click.stop>\n <Checkbox\n v-if=\"multiple\"\n :model-value=\"draft.includes(String(record.key))\"\n :disabled=\"!isSelectable(String(record.key), record.selectable)\"\n :aria-label=\"\n t(\n 'table_select.select_record',\n { label: labels[String(record.key)] ?? String(record.key) },\n 'Select :label',\n )\n \"\n @update:model-value=\"toggle(String(record.key))\"\n />\n <input\n v-else\n type=\"radio\"\n :name=\"`${props.component.statePath}-picker`\"\n class=\"accent-primary size-4\"\n :checked=\"draft.includes(String(record.key))\"\n :disabled=\"!isSelectable(String(record.key), record.selectable)\"\n :aria-label=\"\n t(\n 'table_select.select_record',\n { label: labels[String(record.key)] ?? String(record.key) },\n 'Select :label',\n )\n \"\n @change=\"toggle(String(record.key))\"\n />\n </TableCell>\n <TableCell v-for=\"column in columns\" :key=\"column.name\">\n <TableCellContent\n v-if=\"record.cells[column.name]\"\n :column=\"column\"\n :cell=\"record.cells[column.name]!\"\n :record-key=\"record.key\"\n token=\"\"\n :component=\"`picker:${props.component.statePath}`\"\n />\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n <p v-if=\"atMax\" class=\"text-muted-foreground text-sm\" role=\"status\">\n {{\n choice(\n 'table_select.max_reached',\n props.component.maxItems ?? 0,\n { count: props.component.maxItems ?? 0 },\n 'You can select up to :count records.',\n )\n }}\n </p>\n <DialogFooter class=\"items-center sm:justify-between\">\n <nav\n v-if=\"paging\"\n class=\"flex items-center gap-2\"\n :aria-label=\"t('pagination', {}, 'Pagination')\"\n >\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon-sm\"\n :disabled=\"!paging.hasPrevious || loading\"\n :aria-label=\"t('table.previous', {}, 'Previous')\"\n @click=\"goTo(paging.page - 1)\"\n ><ChevronLeftIcon class=\"rtl:rotate-180\"\n /></Button>\n <span class=\"text-muted-foreground text-sm\">{{\n paging.total !== undefined\n ? t(\n 'table.showing',\n {\n first: format.number(paging.from),\n last: format.number(paging.to),\n total: format.number(paging.total),\n },\n 'Showing :first–:last of :total',\n )\n : `${paging.from}–${paging.to}`\n }}</span>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon-sm\"\n :disabled=\"!paging.hasNext || loading\"\n :aria-label=\"t('table.next', {}, 'Next')\"\n @click=\"goTo(paging.page + 1)\"\n ><ChevronRightIcon class=\"rtl:rotate-180\"\n /></Button>\n </nav>\n <span v-else />\n <div class=\"flex gap-2\">\n <Button v-if=\"draft.length > 0\" type=\"button\" variant=\"ghost\" @click=\"draft = []\">{{\n t('table_select.clear', {}, 'Clear selection')\n }}</Button>\n <Button type=\"button\" variant=\"outline\" @click=\"emit('close')\">{{\n t('cancel', {}, 'Cancel')\n }}</Button>\n <Button type=\"button\" @click=\"confirm\">{{\n props.component.modalSubmitActionLabel ?? t('table_select.confirm', {}, 'Select')\n }}</Button>\n </div>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n</template>\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalTablePicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/fields/ModalTablePicker.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ModalTablePicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/fields/ModalTablePicker.vue"],"names":[],"mappings":"AAkWA,OAAO,KAAK,EAA4B,sBAAsB,EAAc,MAAM,eAAe,CAAA;AAsCjG,KAAK,WAAW,GAAG;IAAE,SAAS,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;;;;;;;;AA63B5E,wBAOG"}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { useChoice as e,
|
|
1
|
+
import { useChoice as e, useFormatter as t, useT as ee } from "../../context.js";
|
|
2
2
|
import { cn as n } from "../../lib/utils.js";
|
|
3
3
|
import r from "../ui/Button2.js";
|
|
4
|
-
import { useFormStore as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
4
|
+
import { useFormStore as te } from "../form/form-context.js";
|
|
5
|
+
import ne from "../ui/Checkbox.js";
|
|
6
|
+
import re from "../ui/Input.js";
|
|
7
|
+
import ie from "../ui/Table.js";
|
|
8
|
+
import ae from "../ui/TableBody.js";
|
|
9
9
|
import i from "../ui/TableCell.js";
|
|
10
10
|
import a from "../ui/TableHead.js";
|
|
11
|
-
import
|
|
11
|
+
import oe from "../ui/TableHeader.js";
|
|
12
12
|
import o from "../ui/TableRow.js";
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
13
|
+
import se from "../ui/Dialog.js";
|
|
14
|
+
import ce from "../ui/DialogContent.js";
|
|
15
|
+
import le from "../ui/DialogDescription.js";
|
|
16
|
+
import ue from "../ui/DialogHeader.js";
|
|
17
|
+
import de from "../ui/DialogTitle.js";
|
|
18
|
+
import fe from "../table/TableCellContent.js";
|
|
19
|
+
import pe from "../ui/DialogFooter.js";
|
|
20
20
|
import s from "../ui/Skeleton.js";
|
|
21
|
-
import
|
|
21
|
+
import c from "./ModalTablePickerFilters.js";
|
|
22
22
|
import { FILTERS_MODAL_WIDTH_CLASSES as me, debounce as he, modalTablePaging as ge, toggleModalTableKey as _e } from "@alfakit/core";
|
|
23
|
-
import { Fragment as
|
|
24
|
-
import { ArrowDownIcon as be, ArrowUpDownIcon as xe, ArrowUpIcon as Se, ChevronLeftIcon as
|
|
23
|
+
import { Fragment as l, computed as u, createBlock as d, createCommentVNode as f, createElementBlock as p, createElementVNode as m, createTextVNode as h, createVNode as g, defineComponent as _, normalizeClass as v, onScopeDispose as y, openBlock as b, ref as x, renderList as S, toDisplayString as C, unref as w, watch as ve, withCtx as T, withModifiers as ye } from "vue";
|
|
24
|
+
import { ArrowDownIcon as be, ArrowUpDownIcon as xe, ArrowUpIcon as Se, ChevronLeftIcon as Ce, ChevronRightIcon as we, SearchIcon as Te } from "@lucide/vue";
|
|
25
25
|
//#region src/components/fields/ModalTablePicker.vue?vue&type=script&setup=true&lang.ts
|
|
26
26
|
var E = ["innerHTML"], D = {
|
|
27
27
|
key: 0,
|
|
@@ -29,40 +29,40 @@ var E = ["innerHTML"], D = {
|
|
|
29
29
|
}, O = {
|
|
30
30
|
key: 0,
|
|
31
31
|
class: "relative"
|
|
32
|
-
},
|
|
32
|
+
}, Ee = ["aria-busy"], De = {
|
|
33
33
|
key: 0,
|
|
34
34
|
role: "alert",
|
|
35
35
|
class: "text-destructive p-6 text-center text-sm"
|
|
36
|
-
},
|
|
36
|
+
}, Oe = {
|
|
37
37
|
key: 1,
|
|
38
38
|
class: "flex flex-col gap-2 p-4",
|
|
39
39
|
"aria-hidden": "true"
|
|
40
|
-
},
|
|
40
|
+
}, ke = {
|
|
41
41
|
key: 2,
|
|
42
42
|
class: "text-muted-foreground p-6 text-center text-sm"
|
|
43
|
-
},
|
|
43
|
+
}, Ae = { class: "sr-only" }, je = ["onClick"], Me = [
|
|
44
44
|
"name",
|
|
45
45
|
"checked",
|
|
46
46
|
"disabled",
|
|
47
47
|
"aria-label",
|
|
48
48
|
"onChange"
|
|
49
|
-
],
|
|
49
|
+
], Ne = {
|
|
50
50
|
key: 1,
|
|
51
51
|
class: "text-muted-foreground text-sm",
|
|
52
52
|
role: "status"
|
|
53
|
-
},
|
|
53
|
+
}, Pe = ["aria-label"], Fe = { class: "text-muted-foreground text-sm" }, Ie = { key: 1 }, Le = { class: "flex gap-2" }, k = /*@__PURE__*/ _({
|
|
54
54
|
__name: "ModalTablePicker",
|
|
55
55
|
props: {
|
|
56
56
|
component: {},
|
|
57
57
|
initial: {}
|
|
58
58
|
},
|
|
59
59
|
emits: ["close", "confirm"],
|
|
60
|
-
setup(
|
|
61
|
-
let j =
|
|
60
|
+
setup(_, { emit: k }) {
|
|
61
|
+
let A = _, j = k, M = ee(), N = t(), P = e(), F = te(), I = u(() => !!A.component.multiple), L = x({}), R = x(null), z = x(!1), B = x(!0), V = x([...A.initial]), H = x({}), U = x(""), W = null;
|
|
62
62
|
ve(L, () => {
|
|
63
63
|
W?.abort();
|
|
64
64
|
let e = new AbortController();
|
|
65
|
-
W = e, B.value = !0, F.modalTable(
|
|
65
|
+
W = e, B.value = !0, F.modalTable(A.component.statePath, A.component.tableStateIdentifier, L.value, e.signal).then((e) => {
|
|
66
66
|
e && (R.value = e, H.value = {
|
|
67
67
|
...H.value,
|
|
68
68
|
...e.labels
|
|
@@ -75,18 +75,18 @@ var E = ["innerHTML"], D = {
|
|
|
75
75
|
}, {
|
|
76
76
|
immediate: !0,
|
|
77
77
|
deep: !0
|
|
78
|
-
}),
|
|
79
|
-
let G =
|
|
78
|
+
}), y(() => W?.abort());
|
|
79
|
+
let G = u(() => R.value?.table), K = he((e) => {
|
|
80
80
|
L.value = {
|
|
81
81
|
...L.value,
|
|
82
82
|
search: e || null,
|
|
83
83
|
page: null
|
|
84
84
|
};
|
|
85
85
|
}, 400);
|
|
86
|
-
|
|
87
|
-
let q =
|
|
88
|
-
V.value = _e(V.value, e, I.value,
|
|
89
|
-
}, Q = (e, t) => t === !0 && (V.value.includes(e) || !X.value),
|
|
86
|
+
y(() => K.cancel());
|
|
87
|
+
let q = u(() => G.value ? G.value.columns.filter((e) => G.value.visibleColumns.includes(e.name)) : []), J = u(() => G.value?.records ?? []), Y = u(() => ge(G.value?.pagination)), X = u(() => I.value && A.component.maxItems != null && V.value.length >= A.component.maxItems), Re = u(() => !!G.value?.searchable || (G.value?.filters?.length ?? 0) > 0), Z = (e) => {
|
|
88
|
+
V.value = _e(V.value, e, I.value, A.component.maxItems);
|
|
89
|
+
}, Q = (e, t) => t === !0 && (V.value.includes(e) || !X.value), ze = (e) => {
|
|
90
90
|
let t = G.value?.sort?.column === e && G.value.sort.direction === "asc" ? "desc" : "asc";
|
|
91
91
|
L.value = {
|
|
92
92
|
...L.value,
|
|
@@ -94,58 +94,58 @@ var E = ["innerHTML"], D = {
|
|
|
94
94
|
direction: t,
|
|
95
95
|
page: null
|
|
96
96
|
};
|
|
97
|
-
},
|
|
97
|
+
}, Be = (e) => G.value?.sort?.column === e ? G.value.sort.direction === "asc" ? "ascending" : "descending" : void 0, $ = (e) => {
|
|
98
98
|
L.value = {
|
|
99
99
|
...L.value,
|
|
100
100
|
page: e
|
|
101
101
|
};
|
|
102
|
-
},
|
|
103
|
-
return (e, t) => (
|
|
102
|
+
}, Ve = () => j("confirm", V.value, Object.fromEntries(V.value.filter((e) => H.value[e]).map((e) => [e, H.value[e]])));
|
|
103
|
+
return (e, t) => (b(), d(se, {
|
|
104
104
|
open: !0,
|
|
105
|
-
"onUpdate:open": t[7] ||= (e) => !e &&
|
|
105
|
+
"onUpdate:open": t[7] ||= (e) => !e && j("close")
|
|
106
106
|
}, {
|
|
107
|
-
default:
|
|
108
|
-
class:
|
|
107
|
+
default: T(() => [g(ce, {
|
|
108
|
+
class: v(w(n)("flex max-h-[90vh] flex-col gap-4", w(me)[A.component.modalWidth ?? "3xl"] ?? "sm:max-w-3xl")),
|
|
109
109
|
"data-slot": "modal-table-select-dialog"
|
|
110
110
|
}, {
|
|
111
|
-
default:
|
|
112
|
-
|
|
113
|
-
default:
|
|
114
|
-
|
|
115
|
-
default:
|
|
111
|
+
default: T(() => [
|
|
112
|
+
g(ue, null, {
|
|
113
|
+
default: T(() => [
|
|
114
|
+
g(de, null, {
|
|
115
|
+
default: T(() => [h(C(A.component.modalHeading), 1)]),
|
|
116
116
|
_: 1
|
|
117
117
|
}),
|
|
118
|
-
|
|
118
|
+
A.component.modalDescription ? (b(), p("p", {
|
|
119
119
|
key: 0,
|
|
120
120
|
class: "text-muted-foreground text-sm",
|
|
121
121
|
"data-slot": "modal-table-select-description",
|
|
122
|
-
innerHTML:
|
|
123
|
-
}, null, 8, E)) :
|
|
124
|
-
|
|
125
|
-
default:
|
|
122
|
+
innerHTML: A.component.modalDescription
|
|
123
|
+
}, null, 8, E)) : f("", !0),
|
|
124
|
+
g(le, { "aria-live": "polite" }, {
|
|
125
|
+
default: T(() => [h(C(w(P)("table.selected", V.value.length, { count: V.value.length }, ":count selected")), 1)]),
|
|
126
126
|
_: 1
|
|
127
127
|
})
|
|
128
128
|
]),
|
|
129
129
|
_: 1
|
|
130
130
|
}),
|
|
131
|
-
G.value &&
|
|
131
|
+
G.value && Re.value ? (b(), p("div", D, [G.value.searchable ? (b(), p("div", O, [g(w(Te), { class: "text-muted-foreground pointer-events-none absolute start-2.5 top-1/2 size-4 -translate-y-1/2" }), g(re, {
|
|
132
132
|
type: "search",
|
|
133
133
|
"model-value": U.value,
|
|
134
134
|
"aria-label": G.value.searchPlaceholder,
|
|
135
135
|
placeholder: G.value.searchPlaceholder,
|
|
136
136
|
class: "ps-8",
|
|
137
137
|
"onUpdate:modelValue": t[0] ||= (e) => {
|
|
138
|
-
U.value = String(e),
|
|
138
|
+
U.value = String(e), w(K)(String(e));
|
|
139
139
|
}
|
|
140
140
|
}, null, 8, [
|
|
141
141
|
"model-value",
|
|
142
142
|
"aria-label",
|
|
143
143
|
"placeholder"
|
|
144
|
-
])])) :
|
|
144
|
+
])])) : f("", !0), (G.value.filters?.length ?? 0) > 0 ? (b(), d(c, {
|
|
145
145
|
key: 1,
|
|
146
146
|
table: G.value,
|
|
147
|
-
owner:
|
|
148
|
-
path:
|
|
147
|
+
owner: w(F),
|
|
148
|
+
path: A.component.statePath,
|
|
149
149
|
onChange: t[1] ||= (e) => L.value = {
|
|
150
150
|
...L.value,
|
|
151
151
|
filters: e,
|
|
@@ -155,90 +155,90 @@ var E = ["innerHTML"], D = {
|
|
|
155
155
|
"table",
|
|
156
156
|
"owner",
|
|
157
157
|
"path"
|
|
158
|
-
])) :
|
|
159
|
-
|
|
158
|
+
])) : f("", !0)])) : f("", !0),
|
|
159
|
+
m("div", {
|
|
160
160
|
class: "min-h-0 flex-1 overflow-auto rounded-md border",
|
|
161
161
|
"aria-busy": B.value
|
|
162
|
-
}, [z.value ? (
|
|
162
|
+
}, [z.value ? (b(), p("p", De, C(w(M)("table_select.load_failed", {}, "Couldn't load the records.")), 1)) : G.value ? J.value.length === 0 ? (b(), p("p", ke, C(G.value.emptyState.heading), 1)) : (b(), d(ie, {
|
|
163
163
|
key: 3,
|
|
164
|
-
class:
|
|
164
|
+
class: v(w(n)(B.value && "opacity-60"))
|
|
165
165
|
}, {
|
|
166
|
-
default:
|
|
167
|
-
default:
|
|
168
|
-
default:
|
|
169
|
-
default:
|
|
166
|
+
default: T(() => [g(oe, null, {
|
|
167
|
+
default: T(() => [g(o, null, {
|
|
168
|
+
default: T(() => [g(a, { class: "w-10" }, {
|
|
169
|
+
default: T(() => [m("span", Ae, C(w(M)("table.select_row", {}, "Select row")), 1)]),
|
|
170
170
|
_: 1
|
|
171
|
-
}), (
|
|
171
|
+
}), (b(!0), p(l, null, S(q.value, (e) => (b(), d(a, {
|
|
172
172
|
key: e.name,
|
|
173
|
-
"aria-sort":
|
|
173
|
+
"aria-sort": Be(e.name)
|
|
174
174
|
}, {
|
|
175
|
-
default:
|
|
175
|
+
default: T(() => [e.sortable ? (b(), p("button", {
|
|
176
176
|
key: 0,
|
|
177
177
|
type: "button",
|
|
178
178
|
class: "inline-flex items-center gap-1",
|
|
179
|
-
onClick: (t) =>
|
|
180
|
-
}, [
|
|
179
|
+
onClick: (t) => ze(e.name)
|
|
180
|
+
}, [h(C(e.label) + " ", 1), G.value.sort?.column === e.name ? (b(), p(l, { key: 0 }, [G.value.sort.direction === "asc" ? (b(), d(w(Se), {
|
|
181
181
|
key: 0,
|
|
182
182
|
class: "size-3.5"
|
|
183
|
-
})) : (
|
|
183
|
+
})) : (b(), d(w(be), {
|
|
184
184
|
key: 1,
|
|
185
185
|
class: "size-3.5"
|
|
186
|
-
}))], 64)) : (
|
|
186
|
+
}))], 64)) : (b(), d(w(xe), {
|
|
187
187
|
key: 1,
|
|
188
188
|
class: "text-muted-foreground size-3.5"
|
|
189
|
-
}))], 8,
|
|
189
|
+
}))], 8, je)) : (b(), p(l, { key: 1 }, [h(C(e.label), 1)], 64))]),
|
|
190
190
|
_: 2
|
|
191
191
|
}, 1032, ["aria-sort"]))), 128))]),
|
|
192
192
|
_: 1
|
|
193
193
|
})]),
|
|
194
194
|
_: 1
|
|
195
|
-
}),
|
|
196
|
-
default:
|
|
195
|
+
}), g(ae, null, {
|
|
196
|
+
default: T(() => [(b(!0), p(l, null, S(J.value, (e) => (b(), d(o, {
|
|
197
197
|
key: String(e.key),
|
|
198
198
|
"data-state": V.value.includes(String(e.key)) ? "selected" : void 0,
|
|
199
|
-
class:
|
|
199
|
+
class: v(w(n)(Q(String(e.key), e.selectable) && "cursor-pointer")),
|
|
200
200
|
onClick: (t) => Q(String(e.key), e.selectable) && Z(String(e.key))
|
|
201
201
|
}, {
|
|
202
|
-
default:
|
|
202
|
+
default: T(() => [g(i, {
|
|
203
203
|
class: "w-10",
|
|
204
204
|
onClick: t[2] ||= ye(() => {}, ["stop"])
|
|
205
205
|
}, {
|
|
206
|
-
default:
|
|
206
|
+
default: T(() => [I.value ? (b(), d(ne, {
|
|
207
207
|
key: 0,
|
|
208
208
|
"model-value": V.value.includes(String(e.key)),
|
|
209
209
|
disabled: !Q(String(e.key), e.selectable),
|
|
210
|
-
"aria-label":
|
|
210
|
+
"aria-label": w(M)("table_select.select_record", { label: H.value[String(e.key)] ?? String(e.key) }, "Select :label"),
|
|
211
211
|
"onUpdate:modelValue": (t) => Z(String(e.key))
|
|
212
212
|
}, null, 8, [
|
|
213
213
|
"model-value",
|
|
214
214
|
"disabled",
|
|
215
215
|
"aria-label",
|
|
216
216
|
"onUpdate:modelValue"
|
|
217
|
-
])) : (
|
|
217
|
+
])) : (b(), p("input", {
|
|
218
218
|
key: 1,
|
|
219
219
|
type: "radio",
|
|
220
|
-
name: `${
|
|
220
|
+
name: `${A.component.statePath}-picker`,
|
|
221
221
|
class: "accent-primary size-4",
|
|
222
222
|
checked: V.value.includes(String(e.key)),
|
|
223
223
|
disabled: !Q(String(e.key), e.selectable),
|
|
224
|
-
"aria-label":
|
|
224
|
+
"aria-label": w(M)("table_select.select_record", { label: H.value[String(e.key)] ?? String(e.key) }, "Select :label"),
|
|
225
225
|
onChange: (t) => Z(String(e.key))
|
|
226
|
-
}, null, 40,
|
|
226
|
+
}, null, 40, Me))]),
|
|
227
227
|
_: 2
|
|
228
|
-
}, 1024), (
|
|
229
|
-
default:
|
|
228
|
+
}, 1024), (b(!0), p(l, null, S(q.value, (t) => (b(), d(i, { key: t.name }, {
|
|
229
|
+
default: T(() => [e.cells[t.name] ? (b(), d(fe, {
|
|
230
230
|
key: 0,
|
|
231
231
|
column: t,
|
|
232
232
|
cell: e.cells[t.name],
|
|
233
233
|
"record-key": e.key,
|
|
234
234
|
token: "",
|
|
235
|
-
component: `picker:${
|
|
235
|
+
component: `picker:${A.component.statePath}`
|
|
236
236
|
}, null, 8, [
|
|
237
237
|
"column",
|
|
238
238
|
"cell",
|
|
239
239
|
"record-key",
|
|
240
240
|
"component"
|
|
241
|
-
])) :
|
|
241
|
+
])) : f("", !0)]),
|
|
242
242
|
_: 2
|
|
243
243
|
}, 1024))), 128))]),
|
|
244
244
|
_: 2
|
|
@@ -250,68 +250,68 @@ var E = ["innerHTML"], D = {
|
|
|
250
250
|
_: 1
|
|
251
251
|
})]),
|
|
252
252
|
_: 1
|
|
253
|
-
}, 8, ["class"])) : (
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
]))], 8,
|
|
258
|
-
X.value ? (
|
|
259
|
-
|
|
260
|
-
default:
|
|
253
|
+
}, 8, ["class"])) : (b(), p("div", Oe, [
|
|
254
|
+
g(s, { class: "h-8 w-full" }),
|
|
255
|
+
g(s, { class: "h-8 w-full" }),
|
|
256
|
+
g(s, { class: "h-8 w-full" })
|
|
257
|
+
]))], 8, Ee),
|
|
258
|
+
X.value ? (b(), p("p", Ne, C(w(P)("table_select.max_reached", A.component.maxItems ?? 0, { count: A.component.maxItems ?? 0 }, "You can select up to :count records.")), 1)) : f("", !0),
|
|
259
|
+
g(pe, { class: "items-center sm:justify-between" }, {
|
|
260
|
+
default: T(() => [Y.value ? (b(), p("nav", {
|
|
261
261
|
key: 0,
|
|
262
262
|
class: "flex items-center gap-2",
|
|
263
|
-
"aria-label":
|
|
263
|
+
"aria-label": w(M)("pagination", {}, "Pagination")
|
|
264
264
|
}, [
|
|
265
|
-
|
|
265
|
+
g(r, {
|
|
266
266
|
type: "button",
|
|
267
267
|
variant: "outline",
|
|
268
268
|
size: "icon-sm",
|
|
269
269
|
disabled: !Y.value.hasPrevious || B.value,
|
|
270
|
-
"aria-label":
|
|
270
|
+
"aria-label": w(M)("table.previous", {}, "Previous"),
|
|
271
271
|
onClick: t[3] ||= (e) => $(Y.value.page - 1)
|
|
272
272
|
}, {
|
|
273
|
-
default:
|
|
273
|
+
default: T(() => [g(w(Ce), { class: "rtl:rotate-180" })]),
|
|
274
274
|
_: 1
|
|
275
275
|
}, 8, ["disabled", "aria-label"]),
|
|
276
|
-
|
|
277
|
-
first: Y.value.from,
|
|
278
|
-
last: Y.value.to,
|
|
279
|
-
total: Y.value.total
|
|
276
|
+
m("span", Fe, C(Y.value.total === void 0 ? `${Y.value.from}–${Y.value.to}` : w(M)("table.showing", {
|
|
277
|
+
first: w(N).number(Y.value.from),
|
|
278
|
+
last: w(N).number(Y.value.to),
|
|
279
|
+
total: w(N).number(Y.value.total)
|
|
280
280
|
}, "Showing :first–:last of :total")), 1),
|
|
281
|
-
|
|
281
|
+
g(r, {
|
|
282
282
|
type: "button",
|
|
283
283
|
variant: "outline",
|
|
284
284
|
size: "icon-sm",
|
|
285
285
|
disabled: !Y.value.hasNext || B.value,
|
|
286
|
-
"aria-label":
|
|
286
|
+
"aria-label": w(M)("table.next", {}, "Next"),
|
|
287
287
|
onClick: t[4] ||= (e) => $(Y.value.page + 1)
|
|
288
288
|
}, {
|
|
289
|
-
default:
|
|
289
|
+
default: T(() => [g(w(we), { class: "rtl:rotate-180" })]),
|
|
290
290
|
_: 1
|
|
291
291
|
}, 8, ["disabled", "aria-label"])
|
|
292
|
-
], 8,
|
|
293
|
-
V.value.length > 0 ? (
|
|
292
|
+
], 8, Pe)) : (b(), p("span", Ie)), m("div", Le, [
|
|
293
|
+
V.value.length > 0 ? (b(), d(r, {
|
|
294
294
|
key: 0,
|
|
295
295
|
type: "button",
|
|
296
296
|
variant: "ghost",
|
|
297
297
|
onClick: t[5] ||= (e) => V.value = []
|
|
298
298
|
}, {
|
|
299
|
-
default:
|
|
299
|
+
default: T(() => [h(C(w(M)("table_select.clear", {}, "Clear selection")), 1)]),
|
|
300
300
|
_: 1
|
|
301
|
-
})) :
|
|
302
|
-
|
|
301
|
+
})) : f("", !0),
|
|
302
|
+
g(r, {
|
|
303
303
|
type: "button",
|
|
304
304
|
variant: "outline",
|
|
305
|
-
onClick: t[6] ||= (e) =>
|
|
305
|
+
onClick: t[6] ||= (e) => j("close")
|
|
306
306
|
}, {
|
|
307
|
-
default:
|
|
307
|
+
default: T(() => [h(C(w(M)("cancel", {}, "Cancel")), 1)]),
|
|
308
308
|
_: 1
|
|
309
309
|
}),
|
|
310
|
-
|
|
310
|
+
g(r, {
|
|
311
311
|
type: "button",
|
|
312
|
-
onClick:
|
|
312
|
+
onClick: Ve
|
|
313
313
|
}, {
|
|
314
|
-
default:
|
|
314
|
+
default: T(() => [h(C(A.component.modalSubmitActionLabel ?? w(M)("table_select.confirm", {}, "Select")), 1)]),
|
|
315
315
|
_: 1
|
|
316
316
|
})
|
|
317
317
|
])]),
|
|
@@ -325,6 +325,6 @@ var E = ["innerHTML"], D = {
|
|
|
325
325
|
}
|
|
326
326
|
});
|
|
327
327
|
//#endregion
|
|
328
|
-
export {
|
|
328
|
+
export { k as default };
|
|
329
329
|
|
|
330
330
|
//# sourceMappingURL=ModalTablePicker.vue_vue_type_script_setup_true_lang.js.map
|