@simplysm/solid 13.0.28 → 13.0.30
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/README.md +15 -9
- package/dist/components/data/Pagination.d.ts +4 -5
- package/dist/components/data/Pagination.d.ts.map +1 -1
- package/dist/components/data/Pagination.js +14 -14
- package/dist/components/data/Pagination.js.map +2 -2
- package/dist/components/data/Table.js +1 -1
- package/dist/components/data/calendar/Calendar.d.ts.map +1 -1
- package/dist/components/data/calendar/Calendar.js +1 -1
- package/dist/components/data/calendar/Calendar.js.map +1 -1
- package/dist/components/data/kanban/Kanban.d.ts +9 -9
- package/dist/components/data/kanban/Kanban.d.ts.map +1 -1
- package/dist/components/data/kanban/Kanban.js +6 -6
- package/dist/components/data/kanban/Kanban.js.map +2 -2
- package/dist/components/data/list/List.d.ts.map +1 -1
- package/dist/components/data/list/List.js.map +1 -1
- package/dist/components/data/list/ListItem.d.ts.map +1 -1
- package/dist/components/data/list/ListItem.js.map +1 -1
- package/dist/components/data/permission-table/PermissionTable.d.ts.map +1 -1
- package/dist/components/data/permission-table/PermissionTable.js.map +1 -1
- package/dist/components/data/sheet/DataSheet.d.ts.map +1 -1
- package/dist/components/data/sheet/DataSheet.js +102 -107
- package/dist/components/data/sheet/DataSheet.js.map +2 -2
- package/dist/components/data/sheet/DataSheet.styles.d.ts.map +1 -1
- package/dist/components/data/sheet/DataSheet.styles.js +24 -6
- package/dist/components/data/sheet/DataSheet.styles.js.map +1 -1
- package/dist/components/data/sheet/DataSheetColumn.d.ts.map +1 -1
- package/dist/components/data/sheet/DataSheetColumn.js.map +1 -1
- package/dist/components/data/sheet/DataSheetConfigDialog.d.ts.map +1 -1
- package/dist/components/data/sheet/DataSheetConfigDialog.js.map +1 -1
- package/dist/components/data/sheet/sheetUtils.d.ts.map +1 -1
- package/dist/components/data/sheet/sheetUtils.js.map +1 -1
- package/dist/components/data/sheet/types.d.ts +2 -2
- package/dist/components/data/sheet/types.d.ts.map +1 -1
- package/dist/components/disclosure/Collapse.d.ts.map +1 -1
- package/dist/components/disclosure/Collapse.js +0 -3
- package/dist/components/disclosure/Collapse.js.map +1 -1
- package/dist/components/disclosure/Dialog.d.ts +8 -8
- package/dist/components/disclosure/Dialog.d.ts.map +1 -1
- package/dist/components/disclosure/Dialog.js +64 -69
- package/dist/components/disclosure/Dialog.js.map +2 -2
- package/dist/components/disclosure/DialogContext.d.ts +4 -4
- package/dist/components/disclosure/DialogContext.d.ts.map +1 -1
- package/dist/components/disclosure/DialogContext.js.map +1 -1
- package/dist/components/disclosure/DialogProvider.d.ts.map +1 -1
- package/dist/components/disclosure/DialogProvider.js +8 -8
- package/dist/components/disclosure/DialogProvider.js.map +2 -2
- package/dist/components/disclosure/Dropdown.d.ts.map +1 -1
- package/dist/components/disclosure/Dropdown.js.map +1 -1
- package/dist/components/disclosure/Tabs.d.ts.map +1 -1
- package/dist/components/disclosure/Tabs.js.map +1 -1
- package/dist/components/display/Alert.d.ts.map +1 -1
- package/dist/components/display/Alert.js.map +1 -1
- package/dist/components/display/Card.d.ts +0 -1
- package/dist/components/display/Card.d.ts.map +1 -1
- package/dist/components/display/Card.js +1 -2
- package/dist/components/display/Card.js.map +1 -1
- package/dist/components/display/Echarts.d.ts +1 -1
- package/dist/components/display/Echarts.d.ts.map +1 -1
- package/dist/components/display/Echarts.js +2 -2
- package/dist/components/display/Echarts.js.map +2 -2
- package/dist/components/display/Link.d.ts +5 -0
- package/dist/components/display/Link.d.ts.map +1 -0
- package/dist/components/display/Link.js +26 -0
- package/dist/components/display/Link.js.map +6 -0
- package/dist/components/feedback/Progress.d.ts +3 -3
- package/dist/components/feedback/Progress.d.ts.map +1 -1
- package/dist/components/feedback/Progress.js +1 -1
- package/dist/components/feedback/Progress.js.map +2 -2
- package/dist/components/feedback/busy/BusyContainer.d.ts +13 -0
- package/dist/components/feedback/busy/BusyContainer.d.ts.map +1 -0
- package/dist/components/feedback/{loading/LoadingContainer.js → busy/BusyContainer.js} +20 -13
- package/dist/components/feedback/busy/BusyContainer.js.map +6 -0
- package/dist/components/feedback/busy/BusyContext.d.ts +11 -0
- package/dist/components/feedback/busy/BusyContext.d.ts.map +1 -0
- package/dist/components/feedback/busy/BusyContext.js +14 -0
- package/dist/components/feedback/busy/BusyContext.js.map +6 -0
- package/dist/components/feedback/busy/BusyProvider.d.ts +7 -0
- package/dist/components/feedback/busy/BusyProvider.d.ts.map +1 -0
- package/dist/components/feedback/{loading/LoadingProvider.js → busy/BusyProvider.js} +7 -7
- package/dist/components/feedback/busy/BusyProvider.js.map +6 -0
- package/dist/components/feedback/notification/NotificationBanner.d.ts.map +1 -1
- package/dist/components/feedback/notification/NotificationBanner.js +1 -1
- package/dist/components/feedback/notification/NotificationBanner.js.map +1 -1
- package/dist/components/feedback/notification/NotificationBell.d.ts.map +1 -1
- package/dist/components/feedback/notification/NotificationBell.js +4 -2
- package/dist/components/feedback/notification/NotificationBell.js.map +2 -2
- package/dist/components/feedback/notification/NotificationContext.d.ts.map +1 -1
- package/dist/components/feedback/notification/NotificationContext.js.map +1 -1
- package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -1
- package/dist/components/feedback/notification/NotificationProvider.js +1 -0
- package/dist/components/feedback/notification/NotificationProvider.js.map +1 -1
- package/dist/components/form-control/Button.d.ts.map +1 -1
- package/dist/components/form-control/Button.js +2 -2
- package/dist/components/form-control/Button.js.map +1 -1
- package/dist/components/form-control/DropdownTrigger.styles.d.ts.map +1 -1
- package/dist/components/form-control/DropdownTrigger.styles.js +6 -1
- package/dist/components/form-control/DropdownTrigger.styles.js.map +1 -1
- package/dist/components/form-control/Invalid.d.ts +4 -2
- package/dist/components/form-control/Invalid.d.ts.map +1 -1
- package/dist/components/form-control/Invalid.js +81 -41
- package/dist/components/form-control/Invalid.js.map +2 -2
- package/dist/components/form-control/ThemeToggle.d.ts.map +1 -1
- package/dist/components/form-control/ThemeToggle.js +4 -5
- package/dist/components/form-control/ThemeToggle.js.map +2 -2
- package/dist/components/form-control/checkbox/Checkbox.d.ts +4 -2
- package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/Checkbox.js +65 -52
- package/dist/components/form-control/checkbox/Checkbox.js.map +2 -2
- package/dist/components/form-control/checkbox/Checkbox.styles.d.ts +1 -2
- package/dist/components/form-control/checkbox/Checkbox.styles.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/Checkbox.styles.js +8 -10
- package/dist/components/form-control/checkbox/Checkbox.styles.js.map +1 -1
- package/dist/components/form-control/checkbox/CheckboxGroup.d.ts +9 -9
- package/dist/components/form-control/checkbox/CheckboxGroup.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/CheckboxGroup.js +10 -82
- package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -2
- package/dist/components/form-control/checkbox/Radio.d.ts +4 -2
- package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/Radio.js +64 -51
- package/dist/components/form-control/checkbox/Radio.js.map +2 -2
- package/dist/components/form-control/checkbox/RadioGroup.d.ts +9 -9
- package/dist/components/form-control/checkbox/RadioGroup.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/RadioGroup.js +10 -77
- package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -2
- package/dist/components/form-control/color-picker/ColorPicker.d.ts +8 -3
- package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
- package/dist/components/form-control/color-picker/ColorPicker.js +43 -26
- package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
- package/dist/components/form-control/combobox/Combobox.d.ts +8 -8
- package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/form-control/combobox/Combobox.js +72 -59
- package/dist/components/form-control/combobox/Combobox.js.map +2 -2
- package/dist/components/form-control/editor/EditorToolbar.d.ts.map +1 -1
- package/dist/components/form-control/editor/EditorToolbar.js +3 -2
- package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
- package/dist/components/form-control/editor/RichTextEditor.d.ts.map +1 -1
- package/dist/components/form-control/editor/RichTextEditor.js.map +1 -1
- package/dist/components/form-control/field/DatePicker.d.ts +6 -0
- package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
- package/dist/components/form-control/field/DatePicker.js +138 -117
- package/dist/components/form-control/field/DatePicker.js.map +2 -2
- package/dist/components/form-control/field/DateTimePicker.d.ts +6 -0
- package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
- package/dist/components/form-control/field/DateTimePicker.js +138 -115
- package/dist/components/form-control/field/DateTimePicker.js.map +2 -2
- package/dist/components/form-control/field/Field.styles.d.ts +14 -0
- package/dist/components/form-control/field/Field.styles.d.ts.map +1 -1
- package/dist/components/form-control/field/Field.styles.js +47 -3
- package/dist/components/form-control/field/Field.styles.js.map +1 -1
- package/dist/components/form-control/field/FieldPlaceholder.d.ts +7 -0
- package/dist/components/form-control/field/FieldPlaceholder.d.ts.map +1 -0
- package/dist/components/form-control/field/FieldPlaceholder.js +34 -0
- package/dist/components/form-control/field/FieldPlaceholder.js.map +6 -0
- package/dist/components/form-control/field/NumberInput.d.ts +13 -0
- package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
- package/dist/components/form-control/field/NumberInput.js +163 -111
- package/dist/components/form-control/field/NumberInput.js.map +2 -2
- package/dist/components/form-control/field/TextInput.d.ts +16 -1
- package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
- package/dist/components/form-control/field/TextInput.js +177 -114
- package/dist/components/form-control/field/TextInput.js.map +2 -2
- package/dist/components/form-control/field/Textarea.d.ts +10 -0
- package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
- package/dist/components/form-control/field/Textarea.js +156 -121
- package/dist/components/form-control/field/Textarea.js.map +2 -2
- package/dist/components/form-control/field/TimePicker.d.ts +10 -0
- package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
- package/dist/components/form-control/field/TimePicker.js +126 -94
- package/dist/components/form-control/field/TimePicker.js.map +2 -2
- package/dist/components/form-control/select/Select.d.ts +7 -9
- package/dist/components/form-control/select/Select.d.ts.map +1 -1
- package/dist/components/form-control/select/Select.js +71 -60
- package/dist/components/form-control/select/Select.js.map +2 -2
- package/dist/components/form-control/select/SelectItem.d.ts.map +1 -1
- package/dist/components/form-control/select/SelectItem.js.map +1 -1
- package/dist/components/form-control/state-preset/StatePreset.d.ts.map +1 -1
- package/dist/components/form-control/state-preset/StatePreset.js +2 -1
- package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
- package/dist/components/layout/FormGroup.d.ts.map +1 -1
- package/dist/components/layout/FormGroup.js.map +1 -1
- package/dist/components/layout/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/components/layout/sidebar/Sidebar.js +1 -1
- package/dist/components/layout/sidebar/Sidebar.js.map +1 -1
- package/dist/components/layout/sidebar/SidebarContainer.d.ts.map +1 -1
- package/dist/components/layout/sidebar/SidebarContainer.js.map +1 -1
- package/dist/components/layout/sidebar/SidebarMenu.js +1 -1
- package/dist/components/layout/sidebar/SidebarMenu.js.map +1 -1
- package/dist/components/layout/sidebar/SidebarUser.d.ts.map +1 -1
- package/dist/components/layout/sidebar/SidebarUser.js +4 -4
- package/dist/components/layout/sidebar/SidebarUser.js.map +1 -1
- package/dist/components/layout/topbar/Topbar.js +1 -1
- package/dist/components/layout/topbar/TopbarMenu.d.ts.map +1 -1
- package/dist/components/layout/topbar/TopbarMenu.js.map +1 -1
- package/dist/components/layout/topbar/TopbarUser.d.ts.map +1 -1
- package/dist/components/layout/topbar/TopbarUser.js.map +1 -1
- package/dist/helpers/createAppStructure.d.ts.map +1 -1
- package/dist/helpers/createAppStructure.js +17 -12
- package/dist/helpers/createAppStructure.js.map +1 -1
- package/dist/helpers/mergeStyles.d.ts.map +1 -1
- package/dist/helpers/mergeStyles.js +4 -1
- package/dist/helpers/mergeStyles.js.map +1 -1
- package/dist/helpers/splitSlots.d.ts.map +1 -1
- package/dist/helpers/splitSlots.js.map +1 -1
- package/dist/hooks/createControllableSignal.d.ts.map +1 -1
- package/dist/hooks/createControllableSignal.js.map +1 -1
- package/dist/hooks/createItemTemplate.d.ts +17 -0
- package/dist/hooks/createItemTemplate.d.ts.map +1 -0
- package/dist/hooks/createItemTemplate.js +40 -0
- package/dist/hooks/createItemTemplate.js.map +6 -0
- package/dist/hooks/createPointerDrag.d.ts +13 -0
- package/dist/hooks/createPointerDrag.d.ts.map +1 -0
- package/dist/hooks/createPointerDrag.js +15 -0
- package/dist/hooks/createPointerDrag.js.map +6 -0
- package/dist/hooks/createSelectionGroup.d.ts +70 -0
- package/dist/hooks/createSelectionGroup.d.ts.map +1 -0
- package/dist/hooks/createSelectionGroup.js +141 -0
- package/dist/hooks/createSelectionGroup.js.map +6 -0
- package/dist/hooks/useClipboardValueCopy.js +3 -1
- package/dist/hooks/useClipboardValueCopy.js.map +1 -1
- package/dist/hooks/useLocalStorage.d.ts +5 -3
- package/dist/hooks/useLocalStorage.d.ts.map +1 -1
- package/dist/hooks/useLocalStorage.js.map +1 -1
- package/dist/hooks/usePrint.d.ts.map +1 -1
- package/dist/hooks/usePrint.js +5 -3
- package/dist/hooks/usePrint.js.map +1 -1
- package/dist/hooks/{createPwaUpdate.d.ts → usePwaUpdate.d.ts} +2 -2
- package/dist/hooks/usePwaUpdate.d.ts.map +1 -0
- package/dist/hooks/{createPwaUpdate.js → usePwaUpdate.js} +3 -3
- package/dist/hooks/usePwaUpdate.js.map +6 -0
- package/dist/hooks/useRouterLink.d.ts.map +1 -1
- package/dist/hooks/useRouterLink.js.map +1 -1
- package/dist/hooks/useSyncConfig.d.ts +3 -3
- package/dist/hooks/useSyncConfig.d.ts.map +1 -1
- package/dist/hooks/useSyncConfig.js +6 -7
- package/dist/hooks/useSyncConfig.js.map +1 -1
- package/dist/index.d.ts +5 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -7
- package/dist/index.js.map +1 -1
- package/dist/providers/ConfigContext.d.ts +2 -2
- package/dist/providers/ConfigContext.d.ts.map +1 -1
- package/dist/providers/InitializeProvider.js +5 -5
- package/dist/providers/InitializeProvider.js.map +2 -2
- package/dist/providers/ServiceClientProvider.d.ts.map +1 -1
- package/dist/providers/ServiceClientProvider.js.map +1 -1
- package/dist/providers/ThemeContext.d.ts.map +1 -1
- package/dist/providers/ThemeContext.js +2 -1
- package/dist/providers/ThemeContext.js.map +2 -2
- package/dist/providers/shared-data/SharedDataChangeEvent.d.ts.map +1 -1
- package/dist/providers/shared-data/SharedDataChangeEvent.js +1 -3
- package/dist/providers/shared-data/SharedDataChangeEvent.js.map +1 -1
- package/dist/providers/shared-data/SharedDataContext.d.ts +1 -1
- package/dist/providers/shared-data/SharedDataContext.d.ts.map +1 -1
- package/dist/providers/shared-data/SharedDataProvider.d.ts.map +1 -1
- package/dist/providers/shared-data/SharedDataProvider.js +6 -6
- package/dist/providers/shared-data/SharedDataProvider.js.map +2 -2
- package/dist/styles/patterns.styles.d.ts +1 -0
- package/dist/styles/patterns.styles.d.ts.map +1 -1
- package/dist/styles/patterns.styles.js +12 -1
- package/dist/styles/patterns.styles.js.map +1 -1
- package/dist/styles/tokens.styles.d.ts +2 -1
- package/dist/styles/tokens.styles.d.ts.map +1 -1
- package/dist/styles/tokens.styles.js +1 -1
- package/dist/styles/tokens.styles.js.map +1 -1
- package/docs/data-components.md +34 -5
- package/docs/disclosure.md +28 -8
- package/docs/display.md +19 -2
- package/docs/feedback.md +35 -12
- package/docs/form-controls.md +289 -33
- package/docs/hooks.md +21 -9
- package/docs/layout.md +15 -3
- package/docs/providers.md +120 -8
- package/docs/styling.md +90 -0
- package/package.json +3 -3
- package/src/components/data/Pagination.tsx +26 -22
- package/src/components/data/Table.tsx +1 -1
- package/src/components/data/calendar/Calendar.tsx +19 -5
- package/src/components/data/kanban/Kanban.tsx +72 -35
- package/src/components/data/list/List.tsx +11 -4
- package/src/components/data/list/ListItem.tsx +12 -2
- package/src/components/data/permission-table/PermissionTable.tsx +32 -5
- package/src/components/data/sheet/DataSheet.styles.ts +24 -6
- package/src/components/data/sheet/DataSheet.tsx +215 -149
- package/src/components/data/sheet/DataSheetColumn.tsx +5 -1
- package/src/components/data/sheet/DataSheetConfigDialog.tsx +27 -5
- package/src/components/data/sheet/sheetUtils.ts +12 -3
- package/src/components/data/sheet/types.ts +2 -2
- package/src/components/disclosure/Collapse.tsx +14 -3
- package/src/components/disclosure/Dialog.tsx +122 -106
- package/src/components/disclosure/DialogContext.ts +8 -5
- package/src/components/disclosure/DialogProvider.tsx +19 -7
- package/src/components/disclosure/Dropdown.tsx +12 -2
- package/src/components/disclosure/Tabs.tsx +29 -5
- package/src/components/display/Alert.tsx +3 -4
- package/src/components/display/Card.tsx +1 -2
- package/src/components/display/Echarts.tsx +12 -5
- package/src/components/display/Link.tsx +22 -0
- package/src/components/feedback/Progress.tsx +9 -5
- package/src/components/feedback/{loading/LoadingContainer.tsx → busy/BusyContainer.tsx} +52 -19
- package/src/components/feedback/busy/BusyContext.ts +20 -0
- package/src/components/feedback/{loading/LoadingProvider.tsx → busy/BusyProvider.tsx} +10 -10
- package/src/components/feedback/notification/NotificationBanner.tsx +14 -3
- package/src/components/feedback/notification/NotificationBell.tsx +21 -15
- package/src/components/feedback/notification/NotificationContext.ts +4 -1
- package/src/components/feedback/notification/NotificationProvider.tsx +4 -1
- package/src/components/form-control/Button.tsx +8 -3
- package/src/components/form-control/DropdownTrigger.styles.ts +7 -1
- package/src/components/form-control/Invalid.tsx +114 -48
- package/src/components/form-control/ThemeToggle.tsx +9 -18
- package/src/components/form-control/checkbox/Checkbox.styles.ts +7 -10
- package/src/components/form-control/checkbox/Checkbox.tsx +39 -28
- package/src/components/form-control/checkbox/CheckboxGroup.tsx +18 -97
- package/src/components/form-control/checkbox/Radio.tsx +39 -28
- package/src/components/form-control/checkbox/RadioGroup.tsx +18 -92
- package/src/components/form-control/color-picker/ColorPicker.tsx +51 -18
- package/src/components/form-control/combobox/Combobox.tsx +53 -35
- package/src/components/form-control/editor/EditorToolbar.tsx +19 -19
- package/src/components/form-control/editor/RichTextEditor.tsx +22 -4
- package/src/components/form-control/field/DatePicker.tsx +99 -93
- package/src/components/form-control/field/DateTimePicker.tsx +115 -96
- package/src/components/form-control/field/Field.styles.ts +62 -3
- package/src/components/form-control/field/FieldPlaceholder.tsx +18 -0
- package/src/components/form-control/field/NumberInput.tsx +136 -84
- package/src/components/form-control/field/TextInput.tsx +135 -88
- package/src/components/form-control/field/Textarea.tsx +126 -99
- package/src/components/form-control/field/TimePicker.tsx +101 -71
- package/src/components/form-control/select/Select.tsx +75 -42
- package/src/components/form-control/select/SelectItem.tsx +3 -1
- package/src/components/form-control/state-preset/StatePreset.tsx +41 -22
- package/src/components/layout/FormGroup.tsx +11 -2
- package/src/components/layout/sidebar/Sidebar.tsx +3 -2
- package/src/components/layout/sidebar/SidebarContainer.tsx +8 -1
- package/src/components/layout/sidebar/SidebarMenu.tsx +8 -2
- package/src/components/layout/sidebar/SidebarUser.tsx +12 -7
- package/src/components/layout/topbar/Topbar.tsx +1 -1
- package/src/components/layout/topbar/TopbarMenu.tsx +27 -5
- package/src/components/layout/topbar/TopbarUser.tsx +5 -1
- package/src/helpers/createAppStructure.ts +29 -15
- package/src/helpers/mergeStyles.ts +6 -2
- package/src/helpers/splitSlots.ts +4 -1
- package/src/hooks/createControllableSignal.ts +2 -1
- package/src/hooks/createItemTemplate.tsx +42 -0
- package/src/hooks/createPointerDrag.ts +28 -0
- package/src/hooks/createSelectionGroup.tsx +235 -0
- package/src/hooks/useClipboardValueCopy.ts +5 -2
- package/src/hooks/useLocalStorage.ts +11 -5
- package/src/hooks/usePrint.ts +9 -4
- package/src/hooks/{createPwaUpdate.ts → usePwaUpdate.ts} +1 -1
- package/src/hooks/useRouterLink.ts +3 -1
- package/src/hooks/useSyncConfig.ts +9 -13
- package/src/index.ts +6 -7
- package/src/providers/ConfigContext.ts +2 -2
- package/src/providers/InitializeProvider.tsx +4 -4
- package/src/providers/ServiceClientProvider.tsx +14 -3
- package/src/providers/ThemeContext.tsx +12 -3
- package/src/providers/shared-data/SharedDataChangeEvent.ts +4 -3
- package/src/providers/shared-data/SharedDataContext.ts +1 -1
- package/src/providers/shared-data/SharedDataProvider.tsx +13 -8
- package/src/styles/patterns.styles.ts +13 -1
- package/src/styles/tokens.styles.ts +2 -1
- package/tailwind.config.ts +9 -0
- package/tailwind.css +1 -1
- package/dist/components/display/Card.css +0 -15
- package/dist/components/feedback/loading/LoadingContainer.d.ts +0 -12
- package/dist/components/feedback/loading/LoadingContainer.d.ts.map +0 -1
- package/dist/components/feedback/loading/LoadingContainer.js.map +0 -6
- package/dist/components/feedback/loading/LoadingContext.d.ts +0 -11
- package/dist/components/feedback/loading/LoadingContext.d.ts.map +0 -1
- package/dist/components/feedback/loading/LoadingContext.js +0 -14
- package/dist/components/feedback/loading/LoadingContext.js.map +0 -6
- package/dist/components/feedback/loading/LoadingProvider.d.ts +0 -7
- package/dist/components/feedback/loading/LoadingProvider.d.ts.map +0 -1
- package/dist/components/feedback/loading/LoadingProvider.js.map +0 -6
- package/dist/hooks/createPwaUpdate.d.ts.map +0 -1
- package/dist/hooks/createPwaUpdate.js.map +0 -6
- package/src/components/display/Card.css +0 -15
- package/src/components/feedback/loading/LoadingContext.ts +0 -20
- /package/dist/components/feedback/{loading/LoadingContainer.css → busy/BusyContainer.css} +0 -0
- /package/src/components/feedback/{loading/LoadingContainer.css → busy/BusyContainer.css} +0 -0
|
@@ -7,7 +7,9 @@ export function normalizeHeader(header?: string | string[]): string[] {
|
|
|
7
7
|
return header;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export function buildHeaderTable<TItem>(
|
|
10
|
+
export function buildHeaderTable<TItem>(
|
|
11
|
+
columns: DataSheetColumnDef<TItem>[],
|
|
12
|
+
): (HeaderDef | null)[][] {
|
|
11
13
|
if (columns.length === 0) return [];
|
|
12
14
|
|
|
13
15
|
const maxDepth = Math.max(...columns.map((c) => c.header.length));
|
|
@@ -84,7 +86,13 @@ export function buildHeaderTable<TItem>(columns: DataSheetColumnDef<TItem>[]): (
|
|
|
84
86
|
}
|
|
85
87
|
|
|
86
88
|
// 같은 병합 그룹에 속하는지 확인 (행 0~endRow까지 같은 텍스트 시퀀스)
|
|
87
|
-
function isSameGroup(
|
|
89
|
+
function isSameGroup(
|
|
90
|
+
padded: string[][],
|
|
91
|
+
colA: number,
|
|
92
|
+
colB: number,
|
|
93
|
+
startRow: number,
|
|
94
|
+
endRow: number,
|
|
95
|
+
): boolean {
|
|
88
96
|
for (let r = startRow; r < endRow; r++) {
|
|
89
97
|
if (padded[colA][r] !== padded[colB][r]) return false;
|
|
90
98
|
}
|
|
@@ -152,7 +160,8 @@ export function applySorting<TItem>(items: TItem[], sorts: SortingDef[]): TItem[
|
|
|
152
160
|
|
|
153
161
|
let result = [...items];
|
|
154
162
|
for (const sort of [...sorts].reverse()) {
|
|
155
|
-
const selector = (item: TItem) =>
|
|
163
|
+
const selector = (item: TItem) =>
|
|
164
|
+
objGetChainValue(item, sort.key) as string | number | undefined;
|
|
156
165
|
result = sort.desc ? result.orderByDesc(selector) : result.orderBy(selector);
|
|
157
166
|
}
|
|
158
167
|
return result;
|
|
@@ -15,8 +15,8 @@ export interface DataSheetProps<TItem> {
|
|
|
15
15
|
autoSort?: boolean;
|
|
16
16
|
|
|
17
17
|
// 페이지네이션
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
page?: number;
|
|
19
|
+
onPageChange?: (page: number) => void;
|
|
20
20
|
totalPageCount?: number;
|
|
21
21
|
itemsPerPage?: number;
|
|
22
22
|
displayPageCount?: number;
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
type JSX,
|
|
3
|
+
type ParentComponent,
|
|
4
|
+
splitProps,
|
|
5
|
+
createSignal,
|
|
6
|
+
onMount,
|
|
7
|
+
onCleanup,
|
|
8
|
+
} from "solid-js";
|
|
2
9
|
import { createElementSize } from "@solid-primitives/resize-observer";
|
|
3
10
|
import clsx from "clsx";
|
|
4
11
|
import { twMerge } from "tailwind-merge";
|
|
@@ -23,7 +30,12 @@ export interface CollapseProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
|
23
30
|
open?: boolean;
|
|
24
31
|
}
|
|
25
32
|
|
|
26
|
-
const transitionClass = clsx(
|
|
33
|
+
const transitionClass = clsx(
|
|
34
|
+
"transition-[margin-top]",
|
|
35
|
+
"duration-200",
|
|
36
|
+
"ease-out",
|
|
37
|
+
"motion-reduce:transition-none",
|
|
38
|
+
);
|
|
27
39
|
|
|
28
40
|
export const Collapse: ParentComponent<CollapseProps> = (props) => {
|
|
29
41
|
const [local, rest] = splitProps(props, ["children", "class", "style", "open"]);
|
|
@@ -54,7 +66,6 @@ export const Collapse: ParentComponent<CollapseProps> = (props) => {
|
|
|
54
66
|
data-collapse
|
|
55
67
|
class={twMerge("block", local.class)}
|
|
56
68
|
style={mergeStyles(local.style, { overflow: "hidden" })}
|
|
57
|
-
aria-hidden={!isOpen()}
|
|
58
69
|
>
|
|
59
70
|
<div
|
|
60
71
|
ref={setContentRef}
|
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
type JSX,
|
|
3
|
+
type ParentComponent,
|
|
4
|
+
createEffect,
|
|
5
|
+
onCleanup,
|
|
6
|
+
Show,
|
|
7
|
+
splitProps,
|
|
8
|
+
For,
|
|
9
|
+
useContext,
|
|
10
|
+
} from "solid-js";
|
|
2
11
|
import { Portal } from "solid-js/web";
|
|
3
12
|
import clsx from "clsx";
|
|
4
13
|
import { twMerge } from "tailwind-merge";
|
|
5
14
|
import { IconX } from "@tabler/icons-solidjs";
|
|
6
15
|
import { createControllableSignal } from "../../hooks/createControllableSignal";
|
|
7
16
|
import { createMountTransition } from "../../hooks/createMountTransition";
|
|
17
|
+
import { createPointerDrag } from "../../hooks/createPointerDrag";
|
|
8
18
|
import { mergeStyles } from "../../helpers/mergeStyles";
|
|
9
19
|
import { Icon } from "../display/Icon";
|
|
10
20
|
import { borderSubtle } from "../../styles/tokens.styles";
|
|
@@ -34,14 +44,14 @@ export interface DialogProps {
|
|
|
34
44
|
float?: boolean;
|
|
35
45
|
/** 전체 화면 모드 */
|
|
36
46
|
fill?: boolean;
|
|
37
|
-
/** 너비
|
|
38
|
-
|
|
39
|
-
/** 높이
|
|
40
|
-
|
|
41
|
-
/** 최소 너비
|
|
42
|
-
|
|
43
|
-
/** 최소 높이
|
|
44
|
-
|
|
47
|
+
/** 너비 */
|
|
48
|
+
width?: number;
|
|
49
|
+
/** 높이 */
|
|
50
|
+
height?: number;
|
|
51
|
+
/** 최소 너비 */
|
|
52
|
+
minWidth?: number;
|
|
53
|
+
/** 최소 높이 */
|
|
54
|
+
minHeight?: number;
|
|
45
55
|
/** 고정 위치 */
|
|
46
56
|
position?: "bottom-right" | "top-right";
|
|
47
57
|
/** 헤더 스타일 */
|
|
@@ -58,7 +68,15 @@ export interface DialogProps {
|
|
|
58
68
|
children: JSX.Element;
|
|
59
69
|
}
|
|
60
70
|
|
|
61
|
-
type ResizeDirection =
|
|
71
|
+
type ResizeDirection =
|
|
72
|
+
| "left"
|
|
73
|
+
| "right"
|
|
74
|
+
| "top"
|
|
75
|
+
| "bottom"
|
|
76
|
+
| "top-left"
|
|
77
|
+
| "top-right"
|
|
78
|
+
| "bottom-left"
|
|
79
|
+
| "bottom-right";
|
|
62
80
|
|
|
63
81
|
const RESIZE_DIRECTIONS: ResizeDirection[] = [
|
|
64
82
|
"left",
|
|
@@ -126,10 +144,10 @@ export const Dialog: ParentComponent<DialogProps> = (props) => {
|
|
|
126
144
|
"movable",
|
|
127
145
|
"float",
|
|
128
146
|
"fill",
|
|
129
|
-
"
|
|
130
|
-
"
|
|
131
|
-
"
|
|
132
|
-
"
|
|
147
|
+
"width",
|
|
148
|
+
"height",
|
|
149
|
+
"minWidth",
|
|
150
|
+
"minHeight",
|
|
133
151
|
"position",
|
|
134
152
|
"headerStyle",
|
|
135
153
|
"headerAction",
|
|
@@ -171,7 +189,8 @@ export const Dialog: ParentComponent<DialogProps> = (props) => {
|
|
|
171
189
|
let wrapperRef: HTMLDivElement | undefined;
|
|
172
190
|
|
|
173
191
|
const closeOnEscape = () => local.closeOnEscape ?? dialogDefaults?.().closeOnEscape ?? true;
|
|
174
|
-
const closeOnBackdrop = () =>
|
|
192
|
+
const closeOnBackdrop = () =>
|
|
193
|
+
local.closeOnBackdrop ?? dialogDefaults?.().closeOnBackdrop ?? false;
|
|
175
194
|
|
|
176
195
|
// Escape 키 감지
|
|
177
196
|
createEffect(() => {
|
|
@@ -238,8 +257,6 @@ export const Dialog: ParentComponent<DialogProps> = (props) => {
|
|
|
238
257
|
if ((event.target as HTMLElement).closest("button")) return;
|
|
239
258
|
|
|
240
259
|
const target = event.currentTarget as HTMLElement;
|
|
241
|
-
target.setPointerCapture(event.pointerId);
|
|
242
|
-
|
|
243
260
|
const dialogEl = dialogRef;
|
|
244
261
|
const wrapperEl = wrapperRef;
|
|
245
262
|
|
|
@@ -248,42 +265,37 @@ export const Dialog: ParentComponent<DialogProps> = (props) => {
|
|
|
248
265
|
const startTop = dialogEl.offsetTop;
|
|
249
266
|
const startLeft = dialogEl.offsetLeft;
|
|
250
267
|
|
|
251
|
-
|
|
252
|
-
e
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
dialogEl.
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
dialogEl.
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
dialogEl.
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
dialogEl.
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
target.removeEventListener("pointerup", stopDrag);
|
|
283
|
-
};
|
|
284
|
-
|
|
285
|
-
target.addEventListener("pointermove", doDrag);
|
|
286
|
-
target.addEventListener("pointerup", stopDrag);
|
|
268
|
+
createPointerDrag(target, event.pointerId, {
|
|
269
|
+
onMove(e) {
|
|
270
|
+
e.stopPropagation();
|
|
271
|
+
e.preventDefault();
|
|
272
|
+
|
|
273
|
+
dialogEl.style.position = "absolute";
|
|
274
|
+
dialogEl.style.left = `${startLeft + e.clientX - startX}px`;
|
|
275
|
+
dialogEl.style.top = `${startTop + e.clientY - startY}px`;
|
|
276
|
+
dialogEl.style.right = "auto";
|
|
277
|
+
dialogEl.style.bottom = "auto";
|
|
278
|
+
dialogEl.style.margin = "0";
|
|
279
|
+
|
|
280
|
+
// 화면 밖 방지
|
|
281
|
+
if (dialogEl.offsetLeft > wrapperEl.offsetWidth - 100) {
|
|
282
|
+
dialogEl.style.left = wrapperEl.offsetWidth - 100 + "px";
|
|
283
|
+
}
|
|
284
|
+
if (dialogEl.offsetTop > wrapperEl.offsetHeight - 100) {
|
|
285
|
+
dialogEl.style.top = wrapperEl.offsetHeight - 100 + "px";
|
|
286
|
+
}
|
|
287
|
+
if (dialogEl.offsetTop < 0) {
|
|
288
|
+
dialogEl.style.top = "0";
|
|
289
|
+
}
|
|
290
|
+
if (dialogEl.offsetLeft < -dialogEl.offsetWidth + 100) {
|
|
291
|
+
dialogEl.style.left = -dialogEl.offsetWidth + 100 + "px";
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
onEnd(e) {
|
|
295
|
+
e.stopPropagation();
|
|
296
|
+
e.preventDefault();
|
|
297
|
+
},
|
|
298
|
+
});
|
|
287
299
|
};
|
|
288
300
|
|
|
289
301
|
// 리사이즈
|
|
@@ -292,8 +304,6 @@ export const Dialog: ParentComponent<DialogProps> = (props) => {
|
|
|
292
304
|
if (!dialogRef) return;
|
|
293
305
|
|
|
294
306
|
const target = event.currentTarget as HTMLElement;
|
|
295
|
-
target.setPointerCapture(event.pointerId);
|
|
296
|
-
|
|
297
307
|
const dialogEl = dialogRef;
|
|
298
308
|
|
|
299
309
|
const startX = event.clientX;
|
|
@@ -303,47 +313,42 @@ export const Dialog: ParentComponent<DialogProps> = (props) => {
|
|
|
303
313
|
const startTop = dialogEl.offsetTop;
|
|
304
314
|
const startLeft = dialogEl.offsetLeft;
|
|
305
315
|
|
|
306
|
-
|
|
307
|
-
e
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
if (
|
|
312
|
-
dialogEl.style.
|
|
313
|
-
|
|
316
|
+
createPointerDrag(target, event.pointerId, {
|
|
317
|
+
onMove(e) {
|
|
318
|
+
e.stopPropagation();
|
|
319
|
+
e.preventDefault();
|
|
320
|
+
|
|
321
|
+
if (direction === "top" || direction === "top-right" || direction === "top-left") {
|
|
322
|
+
if (dialogEl.style.position === "absolute") {
|
|
323
|
+
dialogEl.style.top = startTop + (e.clientY - startY) + "px";
|
|
324
|
+
dialogEl.style.bottom = "auto";
|
|
325
|
+
}
|
|
326
|
+
dialogEl.style.height = `${Math.max(startHeight - (e.clientY - startY), local.minHeight ?? 0)}px`;
|
|
314
327
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
if (direction === "bottom" || direction === "bottom-right" || direction === "bottom-left") {
|
|
318
|
-
dialogEl.style.height = `${Math.max(startHeight + e.clientY - startY, local.minHeightPx ?? 0)}px`;
|
|
319
|
-
}
|
|
320
|
-
if (direction === "right" || direction === "bottom-right" || direction === "top-right") {
|
|
321
|
-
dialogEl.style.width = `${Math.max(
|
|
322
|
-
startWidth + (e.clientX - startX) * (dialogEl.style.position === "absolute" ? 1 : 2),
|
|
323
|
-
local.minWidthPx ?? 0,
|
|
324
|
-
)}px`;
|
|
325
|
-
}
|
|
326
|
-
if (direction === "left" || direction === "bottom-left" || direction === "top-left") {
|
|
327
|
-
if (dialogEl.style.position === "absolute") {
|
|
328
|
-
dialogEl.style.left = startLeft + (e.clientX - startX) + "px";
|
|
328
|
+
if (direction === "bottom" || direction === "bottom-right" || direction === "bottom-left") {
|
|
329
|
+
dialogEl.style.height = `${Math.max(startHeight + e.clientY - startY, local.minHeight ?? 0)}px`;
|
|
329
330
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
331
|
+
if (direction === "right" || direction === "bottom-right" || direction === "top-right") {
|
|
332
|
+
dialogEl.style.width = `${Math.max(
|
|
333
|
+
startWidth + (e.clientX - startX) * (dialogEl.style.position === "absolute" ? 1 : 2),
|
|
334
|
+
local.minWidth ?? 0,
|
|
335
|
+
)}px`;
|
|
336
|
+
}
|
|
337
|
+
if (direction === "left" || direction === "bottom-left" || direction === "top-left") {
|
|
338
|
+
if (dialogEl.style.position === "absolute") {
|
|
339
|
+
dialogEl.style.left = startLeft + (e.clientX - startX) + "px";
|
|
340
|
+
}
|
|
341
|
+
dialogEl.style.width = `${Math.max(
|
|
342
|
+
startWidth - (e.clientX - startX) * (dialogEl.style.position === "absolute" ? 1 : 2),
|
|
343
|
+
local.minWidth ?? 0,
|
|
344
|
+
)}px`;
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
onEnd(e) {
|
|
348
|
+
e.stopPropagation();
|
|
349
|
+
e.preventDefault();
|
|
350
|
+
},
|
|
351
|
+
});
|
|
347
352
|
};
|
|
348
353
|
|
|
349
354
|
// dialog 인라인 스타일 계산
|
|
@@ -354,19 +359,19 @@ export const Dialog: ParentComponent<DialogProps> = (props) => {
|
|
|
354
359
|
style.width = "100%";
|
|
355
360
|
style.height = "100%";
|
|
356
361
|
} else {
|
|
357
|
-
if (local.
|
|
358
|
-
style.width = `${local.
|
|
362
|
+
if (local.width !== undefined) {
|
|
363
|
+
style.width = `${local.width}px`;
|
|
359
364
|
}
|
|
360
|
-
if (local.
|
|
361
|
-
style.height = `${local.
|
|
365
|
+
if (local.height !== undefined) {
|
|
366
|
+
style.height = `${local.height}px`;
|
|
362
367
|
}
|
|
363
368
|
}
|
|
364
369
|
|
|
365
|
-
if (local.
|
|
366
|
-
style["min-width"] = `${local.
|
|
370
|
+
if (local.minWidth !== undefined) {
|
|
371
|
+
style["min-width"] = `${local.minWidth}px`;
|
|
367
372
|
}
|
|
368
|
-
if (local.
|
|
369
|
-
style["min-height"] = `${local.
|
|
373
|
+
if (local.minHeight !== undefined) {
|
|
374
|
+
style["min-height"] = `${local.minHeight}px`;
|
|
370
375
|
}
|
|
371
376
|
|
|
372
377
|
// position 모드
|
|
@@ -423,7 +428,9 @@ export const Dialog: ParentComponent<DialogProps> = (props) => {
|
|
|
423
428
|
"mx-auto",
|
|
424
429
|
"w-fit min-w-[200px]",
|
|
425
430
|
"bg-white dark:bg-base-800",
|
|
426
|
-
local.float
|
|
431
|
+
local.float
|
|
432
|
+
? clsx("shadow-md dark:shadow-black/30", "border", borderSubtle)
|
|
433
|
+
: "shadow-2xl dark:shadow-black/40",
|
|
427
434
|
local.fill ? "rounded-none border-none" : "rounded-lg",
|
|
428
435
|
"overflow-hidden",
|
|
429
436
|
"flex flex-col",
|
|
@@ -470,10 +477,14 @@ export const Dialog: ParentComponent<DialogProps> = (props) => {
|
|
|
470
477
|
<div
|
|
471
478
|
data-modal-header
|
|
472
479
|
class={clsx(headerClass(), "touch-none")}
|
|
473
|
-
style={
|
|
480
|
+
style={
|
|
481
|
+
typeof local.headerStyle === "string"
|
|
482
|
+
? mergeStyles(local.headerStyle)
|
|
483
|
+
: local.headerStyle
|
|
484
|
+
}
|
|
474
485
|
onPointerDown={handleHeaderPointerDown}
|
|
475
486
|
>
|
|
476
|
-
<h5 class={clsx("flex-1", "px-4 py-2", "text-sm font-
|
|
487
|
+
<h5 class={clsx("flex-1", "px-4 py-2", "text-sm font-bold")}>{local.title}</h5>
|
|
477
488
|
{local.headerAction}
|
|
478
489
|
<Show when={local.closable ?? true}>
|
|
479
490
|
<button
|
|
@@ -506,7 +517,12 @@ export const Dialog: ParentComponent<DialogProps> = (props) => {
|
|
|
506
517
|
{(direction) => (
|
|
507
518
|
<div
|
|
508
519
|
data-resize-bar={direction}
|
|
509
|
-
class={clsx(
|
|
520
|
+
class={clsx(
|
|
521
|
+
"absolute",
|
|
522
|
+
"touch-none",
|
|
523
|
+
resizePositionMap[direction],
|
|
524
|
+
resizeCursorMap[direction],
|
|
525
|
+
)}
|
|
510
526
|
onPointerDown={(e) => handleResizeBarPointerDown(e, direction)}
|
|
511
527
|
/>
|
|
512
528
|
)}
|
|
@@ -17,17 +17,20 @@ export interface DialogShowOptions {
|
|
|
17
17
|
movable?: boolean;
|
|
18
18
|
float?: boolean;
|
|
19
19
|
fill?: boolean;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
width?: number;
|
|
21
|
+
height?: number;
|
|
22
|
+
minWidth?: number;
|
|
23
|
+
minHeight?: number;
|
|
24
24
|
position?: "bottom-right" | "top-right";
|
|
25
25
|
headerStyle?: JSX.CSSProperties | string;
|
|
26
26
|
canDeactivate?: () => boolean;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export interface DialogContextValue {
|
|
30
|
-
show<T = undefined>(
|
|
30
|
+
show<T = undefined>(
|
|
31
|
+
factory: () => JSX.Element,
|
|
32
|
+
options: DialogShowOptions,
|
|
33
|
+
): Promise<T | undefined>;
|
|
31
34
|
}
|
|
32
35
|
|
|
33
36
|
export const DialogContext = createContext<DialogContextValue>();
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
type Accessor,
|
|
3
|
+
type ParentComponent,
|
|
4
|
+
createSignal,
|
|
5
|
+
For,
|
|
6
|
+
splitProps,
|
|
7
|
+
type JSX,
|
|
8
|
+
} from "solid-js";
|
|
2
9
|
import {
|
|
3
10
|
DialogContext,
|
|
4
11
|
DialogDefaultsContext,
|
|
@@ -46,7 +53,10 @@ export const DialogProvider: ParentComponent<DialogProviderProps> = (props) => {
|
|
|
46
53
|
|
|
47
54
|
const [entries, setEntries] = createSignal<DialogEntry[]>([]);
|
|
48
55
|
|
|
49
|
-
const show = <T,>(
|
|
56
|
+
const show = <T,>(
|
|
57
|
+
factory: () => JSX.Element,
|
|
58
|
+
options: DialogShowOptions,
|
|
59
|
+
): Promise<T | undefined> => {
|
|
50
60
|
return new Promise<T | undefined>((resolve) => {
|
|
51
61
|
const id = String(nextId++);
|
|
52
62
|
const [open, setOpen] = createSignal(true);
|
|
@@ -114,15 +124,17 @@ export const DialogProvider: ParentComponent<DialogProviderProps> = (props) => {
|
|
|
114
124
|
movable={entry.options.movable}
|
|
115
125
|
float={entry.options.float}
|
|
116
126
|
fill={entry.options.fill}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
127
|
+
width={entry.options.width}
|
|
128
|
+
height={entry.options.height}
|
|
129
|
+
minWidth={entry.options.minWidth}
|
|
130
|
+
minHeight={entry.options.minHeight}
|
|
121
131
|
position={entry.options.position}
|
|
122
132
|
headerStyle={entry.options.headerStyle}
|
|
123
133
|
canDeactivate={entry.options.canDeactivate}
|
|
124
134
|
>
|
|
125
|
-
<DialogInstanceContext.Provider value={instance}>
|
|
135
|
+
<DialogInstanceContext.Provider value={instance}>
|
|
136
|
+
{entry.factory()}
|
|
137
|
+
</DialogInstanceContext.Provider>
|
|
126
138
|
</Dialog>
|
|
127
139
|
);
|
|
128
140
|
}}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
type JSX,
|
|
3
|
+
type ParentComponent,
|
|
4
|
+
createSignal,
|
|
5
|
+
createEffect,
|
|
6
|
+
onCleanup,
|
|
7
|
+
Show,
|
|
8
|
+
splitProps,
|
|
9
|
+
} from "solid-js";
|
|
2
10
|
import { createResizeObserver } from "@solid-primitives/resize-observer";
|
|
3
11
|
import { createMountTransition } from "../../hooks/createMountTransition";
|
|
4
12
|
import { Portal } from "solid-js/web";
|
|
@@ -261,7 +269,9 @@ export const Dropdown: ParentComponent<DropdownProps> = (props) => {
|
|
|
261
269
|
|
|
262
270
|
const dir = direction();
|
|
263
271
|
const focusables = [
|
|
264
|
-
...popup.querySelectorAll<HTMLElement>(
|
|
272
|
+
...popup.querySelectorAll<HTMLElement>(
|
|
273
|
+
'[tabindex]:not([tabindex="-1"]), button, [data-list-item]',
|
|
274
|
+
),
|
|
265
275
|
];
|
|
266
276
|
|
|
267
277
|
if (dir === "down") {
|
|
@@ -40,11 +40,18 @@ function TabsTabInner(props: TabsTabProps) {
|
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
const baseClass = clsx(
|
|
43
|
+
const baseClass = clsx(
|
|
44
|
+
"relative cursor-pointer select-none font-medium",
|
|
45
|
+
"transition-colors",
|
|
46
|
+
"-mb-px",
|
|
47
|
+
);
|
|
44
48
|
|
|
45
49
|
const stateClass = () =>
|
|
46
50
|
isSelected()
|
|
47
|
-
? clsx(
|
|
51
|
+
? clsx(
|
|
52
|
+
"border-b-2 border-primary-500 text-primary-600",
|
|
53
|
+
"dark:border-primary-400 dark:text-primary-400",
|
|
54
|
+
)
|
|
48
55
|
: clsx(
|
|
49
56
|
"border-b-2 border-transparent",
|
|
50
57
|
"text-base-500 hover:border-base-300 hover:text-base-700",
|
|
@@ -60,7 +67,13 @@ function TabsTabInner(props: TabsTabProps) {
|
|
|
60
67
|
aria-selected={isSelected()}
|
|
61
68
|
aria-disabled={props.disabled ?? false}
|
|
62
69
|
tabIndex={props.disabled ? -1 : 0}
|
|
63
|
-
class={twMerge(
|
|
70
|
+
class={twMerge(
|
|
71
|
+
baseClass,
|
|
72
|
+
sizeClasses(),
|
|
73
|
+
stateClass(),
|
|
74
|
+
props.disabled && disabledClass,
|
|
75
|
+
props.class,
|
|
76
|
+
)}
|
|
64
77
|
onClick={() => {
|
|
65
78
|
if (!props.disabled) {
|
|
66
79
|
ctx.select(props.value);
|
|
@@ -97,7 +110,14 @@ interface TabsComponent {
|
|
|
97
110
|
}
|
|
98
111
|
|
|
99
112
|
const TabsInner: ParentComponent<TabsProps> = (props) => {
|
|
100
|
-
const [local, rest] = splitProps(props, [
|
|
113
|
+
const [local, rest] = splitProps(props, [
|
|
114
|
+
"value",
|
|
115
|
+
"onValueChange",
|
|
116
|
+
"size",
|
|
117
|
+
"class",
|
|
118
|
+
"style",
|
|
119
|
+
"children",
|
|
120
|
+
]);
|
|
101
121
|
|
|
102
122
|
const [value, setValue] = createControllableSignal<string | undefined>({
|
|
103
123
|
value: () => local.value,
|
|
@@ -112,7 +132,11 @@ const TabsInner: ParentComponent<TabsProps> = (props) => {
|
|
|
112
132
|
size: () => local.size,
|
|
113
133
|
};
|
|
114
134
|
|
|
115
|
-
const baseClass = clsx(
|
|
135
|
+
const baseClass = clsx(
|
|
136
|
+
"inline-flex items-center gap-1",
|
|
137
|
+
"border-b border-base-200",
|
|
138
|
+
"dark:border-base-700",
|
|
139
|
+
);
|
|
116
140
|
|
|
117
141
|
return (
|
|
118
142
|
<TabsContext.Provider value={contextValue}>
|
|
@@ -11,10 +11,9 @@ export interface AlertProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
|
11
11
|
|
|
12
12
|
const baseClass = clsx("block", "p-3", "rounded");
|
|
13
13
|
|
|
14
|
-
const themeClasses = Object.fromEntries(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
>;
|
|
14
|
+
const themeClasses = Object.fromEntries(
|
|
15
|
+
Object.entries(themeTokens).map(([theme, t]) => [theme, t.light]),
|
|
16
|
+
) as Record<AlertTheme, string>;
|
|
18
17
|
|
|
19
18
|
export const Alert: ParentComponent<AlertProps> = (props) => {
|
|
20
19
|
const [local, rest] = splitProps(props, ["children", "class", "theme"]);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type JSX, type ParentComponent, splitProps } from "solid-js";
|
|
2
2
|
import clsx from "clsx";
|
|
3
3
|
import { twMerge } from "tailwind-merge";
|
|
4
|
-
import "./Card.css";
|
|
5
4
|
|
|
6
5
|
export interface CardProps extends JSX.HTMLAttributes<HTMLDivElement> {}
|
|
7
6
|
|
|
@@ -12,7 +11,7 @@ const baseClass = clsx(
|
|
|
12
11
|
"shadow focus-within:shadow-md hover:shadow-md",
|
|
13
12
|
"dark:shadow-black/20 dark:focus-within:shadow-black/30 dark:hover:shadow-black/30",
|
|
14
13
|
"transition-shadow duration-300",
|
|
15
|
-
"animate-
|
|
14
|
+
"animate-fade-in",
|
|
16
15
|
);
|
|
17
16
|
|
|
18
17
|
export const Card: ParentComponent<CardProps> = (props) => {
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
type Component,
|
|
3
|
+
createEffect,
|
|
4
|
+
createSignal,
|
|
5
|
+
onCleanup,
|
|
6
|
+
splitProps,
|
|
7
|
+
type JSX,
|
|
8
|
+
} from "solid-js";
|
|
2
9
|
import { createResizeObserver } from "@solid-primitives/resize-observer";
|
|
3
10
|
import type * as echartsType from "echarts";
|
|
4
11
|
import clsx from "clsx";
|
|
@@ -6,13 +13,13 @@ import { twMerge } from "tailwind-merge";
|
|
|
6
13
|
|
|
7
14
|
export interface EchartsProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
8
15
|
option: echartsType.EChartsOption;
|
|
9
|
-
|
|
16
|
+
busy?: boolean;
|
|
10
17
|
}
|
|
11
18
|
|
|
12
19
|
const baseClass = clsx("block", "size-full");
|
|
13
20
|
|
|
14
21
|
export const Echarts: Component<EchartsProps> = (props) => {
|
|
15
|
-
const [local, rest] = splitProps(props, ["option", "
|
|
22
|
+
const [local, rest] = splitProps(props, ["option", "busy", "class"]);
|
|
16
23
|
let containerRef!: HTMLDivElement;
|
|
17
24
|
let chart: echartsType.EChartsType | undefined;
|
|
18
25
|
const [ready, setReady] = createSignal(false);
|
|
@@ -33,10 +40,10 @@ export const Echarts: Component<EchartsProps> = (props) => {
|
|
|
33
40
|
chart!.setOption(local.option);
|
|
34
41
|
});
|
|
35
42
|
|
|
36
|
-
//
|
|
43
|
+
// busy 상태 변경 감지
|
|
37
44
|
createEffect(() => {
|
|
38
45
|
if (!ready()) return;
|
|
39
|
-
if (local.
|
|
46
|
+
if (local.busy) {
|
|
40
47
|
chart!.showLoading();
|
|
41
48
|
} else {
|
|
42
49
|
chart!.hideLoading();
|