@simplysm/solid 13.0.27 → 13.0.29
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 +6 -5
- package/dist/components/data/Pagination.d.ts.map +1 -1
- package/dist/components/data/Pagination.js.map +1 -1
- package/dist/components/data/calendar/Calendar.d.ts.map +1 -1
- package/dist/components/data/calendar/Calendar.js.map +1 -1
- package/dist/components/data/kanban/Kanban.d.ts.map +1 -1
- package/dist/components/data/kanban/Kanban.js +2 -2
- 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.map +1 -1
- package/dist/components/data/sheet/DataSheet.styles.d.ts.map +1 -1
- package/dist/components/data/sheet/DataSheet.styles.js +23 -5
- 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/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.map +1 -1
- package/dist/components/disclosure/Dialog.js.map +1 -1
- 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.map +1 -1
- 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/busy/BusyContainer.d.ts +12 -0
- package/dist/components/feedback/busy/BusyContainer.d.ts.map +1 -0
- package/dist/components/feedback/{loading/LoadingContainer.js → busy/BusyContainer.js} +7 -7
- 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.map +1 -1
- package/dist/components/feedback/notification/NotificationBell.d.ts.map +1 -1
- package/dist/components/feedback/notification/NotificationBell.js.map +1 -1
- 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.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.map +1 -1
- package/dist/components/form-control/Invalid.js +1 -1
- package/dist/components/form-control/Invalid.js.map +1 -1
- package/dist/components/form-control/ThemeToggle.d.ts.map +1 -1
- package/dist/components/form-control/ThemeToggle.js.map +1 -1
- package/dist/components/form-control/checkbox/Checkbox.styles.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/Checkbox.styles.js +5 -1
- package/dist/components/form-control/checkbox/Checkbox.styles.js.map +1 -1
- package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
- package/dist/components/form-control/color-picker/ColorPicker.js.map +1 -1
- package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/form-control/combobox/Combobox.js +5 -5
- 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.map +1 -1
- 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.map +1 -1
- package/dist/components/form-control/field/DatePicker.js.map +1 -1
- package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
- package/dist/components/form-control/field/DateTimePicker.js.map +1 -1
- package/dist/components/form-control/field/Field.styles.d.ts.map +1 -1
- package/dist/components/form-control/field/Field.styles.js +17 -3
- package/dist/components/form-control/field/Field.styles.js.map +1 -1
- package/dist/components/form-control/field/NumberInput.d.ts +3 -0
- package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
- package/dist/components/form-control/field/NumberInput.js +23 -5
- package/dist/components/form-control/field/NumberInput.js.map +2 -2
- package/dist/components/form-control/field/TextInput.d.ts +4 -1
- package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
- package/dist/components/form-control/field/TextInput.js +23 -6
- package/dist/components/form-control/field/TextInput.js.map +2 -2
- package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
- package/dist/components/form-control/field/Textarea.js.map +1 -1
- package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
- package/dist/components/form-control/field/TimePicker.js.map +1 -1
- package/dist/components/form-control/select/Select.d.ts.map +1 -1
- package/dist/components/form-control/select/Select.js.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/dist/components/layout/sidebar/SidebarUser.d.ts.map +1 -1
- package/dist/components/layout/sidebar/SidebarUser.js +2 -2
- 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/useClipboardValueCopy.js +3 -1
- package/dist/hooks/useClipboardValueCopy.js.map +1 -1
- 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/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.js +4 -4
- package/dist/hooks/useSyncConfig.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- 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 +3 -3
- 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.map +1 -1
- 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.js +1 -1
- package/dist/styles/tokens.styles.d.ts +1 -1
- package/dist/styles/tokens.styles.js +1 -1
- package/docs/display.md +19 -2
- package/docs/feedback.md +10 -10
- package/docs/hooks.md +6 -6
- package/docs/layout.md +3 -3
- package/docs/providers.md +1 -1
- package/package.json +3 -3
- package/src/components/data/Pagination.tsx +6 -1
- package/src/components/data/calendar/Calendar.tsx +18 -4
- package/src/components/data/kanban/Kanban.tsx +62 -18
- 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 +23 -5
- package/src/components/data/sheet/DataSheet.tsx +100 -25
- 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/disclosure/Collapse.tsx +14 -3
- package/src/components/disclosure/Dialog.tsx +35 -6
- package/src/components/disclosure/DialogContext.ts +4 -1
- package/src/components/disclosure/DialogProvider.tsx +15 -3
- 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/{loading/LoadingContainer.tsx → busy/BusyContainer.tsx} +43 -14
- 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 +13 -2
- package/src/components/feedback/notification/NotificationBell.tsx +17 -3
- package/src/components/feedback/notification/NotificationContext.ts +4 -1
- package/src/components/feedback/notification/NotificationProvider.tsx +3 -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 +5 -1
- package/src/components/form-control/ThemeToggle.tsx +6 -2
- package/src/components/form-control/checkbox/Checkbox.styles.ts +5 -1
- package/src/components/form-control/color-picker/ColorPicker.tsx +15 -2
- package/src/components/form-control/combobox/Combobox.tsx +16 -8
- package/src/components/form-control/editor/EditorToolbar.tsx +16 -5
- package/src/components/form-control/editor/RichTextEditor.tsx +22 -4
- package/src/components/form-control/field/DatePicker.tsx +5 -1
- package/src/components/form-control/field/DateTimePicker.tsx +8 -1
- package/src/components/form-control/field/Field.styles.ts +17 -3
- package/src/components/form-control/field/NumberInput.tsx +24 -0
- package/src/components/form-control/field/TextInput.tsx +28 -5
- package/src/components/form-control/field/Textarea.tsx +2 -1
- package/src/components/form-control/field/TimePicker.tsx +5 -1
- package/src/components/form-control/select/Select.tsx +32 -7
- package/src/components/form-control/select/SelectItem.tsx +3 -1
- package/src/components/form-control/state-preset/StatePreset.tsx +39 -14
- 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 +7 -1
- package/src/components/layout/sidebar/SidebarUser.tsx +9 -4
- 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/useClipboardValueCopy.ts +5 -2
- package/src/hooks/useLocalStorage.ts +3 -1
- package/src/hooks/usePrint.ts +9 -4
- package/src/hooks/useRouterLink.ts +3 -1
- package/src/hooks/useSyncConfig.ts +7 -7
- package/src/index.ts +5 -4
- package/src/providers/ConfigContext.ts +2 -2
- package/src/providers/InitializeProvider.tsx +2 -2
- package/src/providers/ServiceClientProvider.tsx +14 -3
- package/src/providers/ThemeContext.tsx +10 -2
- 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 +1 -1
- package/src/styles/tokens.styles.ts +1 -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/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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Accessor, createMemo } from "solid-js";
|
|
1
|
+
import { type Accessor, createMemo, createRoot } from "solid-js";
|
|
2
2
|
import type { Component } from "solid-js";
|
|
3
3
|
import type { IconProps } from "@tabler/icons-solidjs";
|
|
4
4
|
import type { SidebarMenuItem } from "../components/layout/sidebar/SidebarMenu";
|
|
@@ -26,7 +26,9 @@ export interface AppStructureLeafItem<TModule> {
|
|
|
26
26
|
isNotMenu?: boolean;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
export type AppStructureItem<TModule> =
|
|
29
|
+
export type AppStructureItem<TModule> =
|
|
30
|
+
| AppStructureGroupItem<TModule>
|
|
31
|
+
| AppStructureLeafItem<TModule>;
|
|
30
32
|
|
|
31
33
|
export interface AppStructureSubPerm<TModule> {
|
|
32
34
|
code: string;
|
|
@@ -59,7 +61,9 @@ export interface AppStructure<TModule> {
|
|
|
59
61
|
|
|
60
62
|
// ── 내부 헬퍼 ──
|
|
61
63
|
|
|
62
|
-
function isGroupItem<TModule>(
|
|
64
|
+
function isGroupItem<TModule>(
|
|
65
|
+
item: AppStructureItem<TModule>,
|
|
66
|
+
): item is AppStructureGroupItem<TModule> {
|
|
63
67
|
return "children" in item;
|
|
64
68
|
}
|
|
65
69
|
|
|
@@ -81,7 +85,11 @@ function checkModules<TModule>(
|
|
|
81
85
|
return true;
|
|
82
86
|
}
|
|
83
87
|
|
|
84
|
-
function collectRoutes<TModule>(
|
|
88
|
+
function collectRoutes<TModule>(
|
|
89
|
+
items: AppStructureItem<TModule>[],
|
|
90
|
+
parentCodes: string[],
|
|
91
|
+
routes: AppRoute[],
|
|
92
|
+
): void {
|
|
85
93
|
for (const item of items) {
|
|
86
94
|
const codes = [...parentCodes, item.code];
|
|
87
95
|
|
|
@@ -179,23 +187,29 @@ export function createAppStructure<TModule>(opts: {
|
|
|
179
187
|
|
|
180
188
|
const routes = extractRoutes(opts.items);
|
|
181
189
|
|
|
182
|
-
const
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
190
|
+
const memos = createRoot(() => {
|
|
191
|
+
const usableMenus = createMemo(() => {
|
|
192
|
+
const menus: SidebarMenuItem[] = [];
|
|
193
|
+
for (const top of opts.items) {
|
|
194
|
+
if (isGroupItem(top)) {
|
|
195
|
+
menus.push(
|
|
196
|
+
...buildMenus(top.children, "/" + top.code, opts.usableModules?.(), permRecord()),
|
|
197
|
+
);
|
|
198
|
+
}
|
|
187
199
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
});
|
|
200
|
+
return menus;
|
|
201
|
+
});
|
|
191
202
|
|
|
192
|
-
|
|
203
|
+
const usableFlatMenus = createMemo(() => flattenMenus(usableMenus()));
|
|
204
|
+
|
|
205
|
+
return { usableMenus, usableFlatMenus };
|
|
206
|
+
});
|
|
193
207
|
|
|
194
208
|
return {
|
|
195
209
|
items: opts.items,
|
|
196
210
|
routes,
|
|
197
|
-
usableMenus,
|
|
198
|
-
usableFlatMenus,
|
|
211
|
+
usableMenus: memos.usableMenus,
|
|
212
|
+
usableFlatMenus: memos.usableFlatMenus,
|
|
199
213
|
permRecord,
|
|
200
214
|
getTitleChainByHref(href: string): string[] {
|
|
201
215
|
const codes = href.split("/").filter(Boolean);
|
|
@@ -24,7 +24,9 @@ import { type JSX } from "solid-js";
|
|
|
24
24
|
* // => { color: "red", background: "blue" }
|
|
25
25
|
* ```
|
|
26
26
|
*/
|
|
27
|
-
export function mergeStyles(
|
|
27
|
+
export function mergeStyles(
|
|
28
|
+
...styles: (JSX.CSSProperties | string | undefined)[]
|
|
29
|
+
): JSX.CSSProperties {
|
|
28
30
|
const result: Record<string, string> = {};
|
|
29
31
|
|
|
30
32
|
for (const style of styles) {
|
|
@@ -41,7 +43,9 @@ export function mergeStyles(...styles: (JSX.CSSProperties | string | undefined)[
|
|
|
41
43
|
const value = declaration.slice(colonIndex + 1).trim();
|
|
42
44
|
if (property && value) {
|
|
43
45
|
// kebab-case를 camelCase로 변환
|
|
44
|
-
const camelProperty = property.replace(/-([a-z])/g, (_, letter: string) =>
|
|
46
|
+
const camelProperty = property.replace(/-([a-z])/g, (_, letter: string) =>
|
|
47
|
+
letter.toUpperCase(),
|
|
48
|
+
);
|
|
45
49
|
result[camelProperty] = value;
|
|
46
50
|
}
|
|
47
51
|
}
|
|
@@ -26,7 +26,10 @@ export function splitSlots<K extends string>(
|
|
|
26
26
|
): [Accessor<Record<K, HTMLElement[]>>, Accessor<JSX.Element[]>] {
|
|
27
27
|
const memo = createMemo(() => {
|
|
28
28
|
const arr = resolved.toArray();
|
|
29
|
-
const result = Object.fromEntries(keys.map((k) => [k, []])) as unknown as Record<
|
|
29
|
+
const result = Object.fromEntries(keys.map((k) => [k, []])) as unknown as Record<
|
|
30
|
+
K,
|
|
31
|
+
HTMLElement[]
|
|
32
|
+
>;
|
|
30
33
|
const content: JSX.Element[] = [];
|
|
31
34
|
|
|
32
35
|
for (const c of arr) {
|
|
@@ -50,7 +50,8 @@ export function createControllableSignal<TValue>(options: {
|
|
|
50
50
|
const isControlled = () => options.onChange() !== undefined;
|
|
51
51
|
const value = () => (isControlled() ? options.value() : internalValue());
|
|
52
52
|
const setValue = (newValue: TValue | ((prev: TValue) => TValue)) => {
|
|
53
|
-
const resolved =
|
|
53
|
+
const resolved =
|
|
54
|
+
typeof newValue === "function" ? (newValue as (prev: TValue) => TValue)(value()) : newValue;
|
|
54
55
|
|
|
55
56
|
if (isControlled()) {
|
|
56
57
|
options.onChange()?.(resolved);
|
|
@@ -46,8 +46,11 @@ function extractTextFromRange(range: Range): string | null {
|
|
|
46
46
|
if (!root) return null;
|
|
47
47
|
|
|
48
48
|
// 선택 범위에 폼 컨트롤이 없으면 브라우저 기본 동작 사용
|
|
49
|
-
const formSelector =
|
|
50
|
-
|
|
49
|
+
const formSelector =
|
|
50
|
+
'input:not([type=hidden]), textarea, select, [role="checkbox"], [role="radio"]';
|
|
51
|
+
const hasFormElements = [...root.querySelectorAll(formSelector)].some((el) =>
|
|
52
|
+
range.intersectsNode(el),
|
|
53
|
+
);
|
|
51
54
|
if (!hasFormElements) return null;
|
|
52
55
|
|
|
53
56
|
const parts: string[] = [];
|
|
@@ -47,7 +47,9 @@ export function useLocalStorage<TValue>(
|
|
|
47
47
|
|
|
48
48
|
const [value, setValue] = createSignal<TValue | undefined>(storedValue);
|
|
49
49
|
|
|
50
|
-
const setAndStore = (
|
|
50
|
+
const setAndStore = (
|
|
51
|
+
newValue: TValue | undefined | ((prev: TValue | undefined) => TValue | undefined),
|
|
52
|
+
) => {
|
|
51
53
|
let resolved: TValue | undefined;
|
|
52
54
|
|
|
53
55
|
if (typeof newValue === "function") {
|
package/src/hooks/usePrint.ts
CHANGED
|
@@ -2,8 +2,11 @@ import type { JSX } from "solid-js";
|
|
|
2
2
|
import { render } from "solid-js/web";
|
|
3
3
|
import { jsPDF } from "jspdf";
|
|
4
4
|
import * as htmlToImage from "html-to-image";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { useBusy } from "../components/feedback/busy/BusyContext";
|
|
6
|
+
import {
|
|
7
|
+
PrintInstanceContext,
|
|
8
|
+
type PrintInstance,
|
|
9
|
+
} from "../components/feedback/print/PrintInstanceContext";
|
|
7
10
|
|
|
8
11
|
// --- Types ---
|
|
9
12
|
|
|
@@ -74,7 +77,9 @@ function waitForImages(container: HTMLElement): Promise<void> {
|
|
|
74
77
|
).then(() => undefined);
|
|
75
78
|
}
|
|
76
79
|
|
|
77
|
-
async function renderAndWait(
|
|
80
|
+
async function renderAndWait(
|
|
81
|
+
factory: () => JSX.Element,
|
|
82
|
+
): Promise<{ container: HTMLElement; dispose: () => void }> {
|
|
78
83
|
const container = document.createElement("div");
|
|
79
84
|
container.style.position = "fixed";
|
|
80
85
|
container.style.left = "-9999px";
|
|
@@ -129,7 +134,7 @@ async function renderAndWait(factory: () => JSX.Element): Promise<{ container: H
|
|
|
129
134
|
// --- Hook ---
|
|
130
135
|
|
|
131
136
|
export function usePrint(): UsePrintReturn {
|
|
132
|
-
const busy =
|
|
137
|
+
const busy = useBusy();
|
|
133
138
|
|
|
134
139
|
const toPrinter = async (factory: () => JSX.Element, options?: PrintOptions): Promise<void> => {
|
|
135
140
|
busy.show();
|
|
@@ -39,7 +39,9 @@ export interface RouterLinkOptions {
|
|
|
39
39
|
* </ListItem>
|
|
40
40
|
* ```
|
|
41
41
|
*/
|
|
42
|
-
export function useRouterLink(): (
|
|
42
|
+
export function useRouterLink(): (
|
|
43
|
+
options: RouterLinkOptions,
|
|
44
|
+
) => (e: MouseEvent | KeyboardEvent) => void {
|
|
43
45
|
const navigate = useNavigate();
|
|
44
46
|
|
|
45
47
|
return (options: RouterLinkOptions) => {
|
|
@@ -9,13 +9,13 @@ import { useConfig } from "../providers/ConfigContext";
|
|
|
9
9
|
*
|
|
10
10
|
* @param key - Storage key for the config value
|
|
11
11
|
* @param defaultValue - Default value if no stored value exists
|
|
12
|
-
* @returns Tuple of [value accessor, value setter,
|
|
12
|
+
* @returns Tuple of [value accessor, value setter, busy state accessor]
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* ```tsx
|
|
16
|
-
* const [theme, setTheme,
|
|
16
|
+
* const [theme, setTheme, busy] = useSyncConfig("user-theme", "light");
|
|
17
17
|
*
|
|
18
|
-
* <Show when={!
|
|
18
|
+
* <Show when={!busy()}>
|
|
19
19
|
* <button onClick={() => setTheme(theme() === "light" ? "dark" : "light")}>
|
|
20
20
|
* Toggle theme
|
|
21
21
|
* </button>
|
|
@@ -29,7 +29,7 @@ export function useSyncConfig<TValue>(
|
|
|
29
29
|
const config = useConfig();
|
|
30
30
|
const prefixedKey = `${config.clientName}.${key}`;
|
|
31
31
|
const [value, setValue] = createSignal<TValue>(defaultValue);
|
|
32
|
-
const [
|
|
32
|
+
const [busy, setBusy] = createSignal(false);
|
|
33
33
|
|
|
34
34
|
// Initialize from storage
|
|
35
35
|
const initializeFromStorage = async () => {
|
|
@@ -47,7 +47,7 @@ export function useSyncConfig<TValue>(
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
// Use syncStorage asynchronously
|
|
50
|
-
|
|
50
|
+
setBusy(true);
|
|
51
51
|
try {
|
|
52
52
|
const stored = await config.syncStorage.getItem(prefixedKey);
|
|
53
53
|
if (stored !== null) {
|
|
@@ -64,7 +64,7 @@ export function useSyncConfig<TValue>(
|
|
|
64
64
|
// Ignore parse errors
|
|
65
65
|
}
|
|
66
66
|
} finally {
|
|
67
|
-
|
|
67
|
+
setBusy(false);
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
70
|
|
|
@@ -98,5 +98,5 @@ export function useSyncConfig<TValue>(
|
|
|
98
98
|
// No cleanup needed for storage operations
|
|
99
99
|
});
|
|
100
100
|
|
|
101
|
-
return [value, setValue,
|
|
101
|
+
return [value, setValue, busy];
|
|
102
102
|
}
|
package/src/index.ts
CHANGED
|
@@ -72,6 +72,7 @@ export * from "./components/display/Card";
|
|
|
72
72
|
export * from "./components/display/Echarts";
|
|
73
73
|
export * from "./components/display/Icon";
|
|
74
74
|
export * from "./components/display/Tag";
|
|
75
|
+
export * from "./components/display/Link";
|
|
75
76
|
export * from "./components/display/Alert";
|
|
76
77
|
|
|
77
78
|
//#endregion
|
|
@@ -96,10 +97,10 @@ export * from "./components/feedback/notification/NotificationBell";
|
|
|
96
97
|
export * from "./components/feedback/notification/NotificationProvider";
|
|
97
98
|
export * from "./components/feedback/notification/NotificationBanner";
|
|
98
99
|
|
|
99
|
-
//
|
|
100
|
-
export * from "./components/feedback/
|
|
101
|
-
export * from "./components/feedback/
|
|
102
|
-
export * from "./components/feedback/
|
|
100
|
+
// Busy
|
|
101
|
+
export * from "./components/feedback/busy/BusyContext";
|
|
102
|
+
export * from "./components/feedback/busy/BusyContainer";
|
|
103
|
+
export * from "./components/feedback/busy/BusyProvider";
|
|
103
104
|
|
|
104
105
|
// Print
|
|
105
106
|
export * from "./components/feedback/print/Print";
|
|
@@ -5,7 +5,7 @@ import { useClipboardValueCopy } from "../hooks/useClipboardValueCopy";
|
|
|
5
5
|
import { ThemeProvider } from "./ThemeContext";
|
|
6
6
|
import { NotificationProvider } from "../components/feedback/notification/NotificationProvider";
|
|
7
7
|
import { NotificationBanner } from "../components/feedback/notification/NotificationBanner";
|
|
8
|
-
import {
|
|
8
|
+
import { BusyProvider } from "../components/feedback/busy/BusyProvider";
|
|
9
9
|
|
|
10
10
|
import { createPwaUpdate } from "../hooks/createPwaUpdate";
|
|
11
11
|
import { useLogger } from "../hooks/useLogger";
|
|
@@ -70,7 +70,7 @@ export const InitializeProvider: ParentComponent<{ config: AppConfig }> = (props
|
|
|
70
70
|
<NotificationBanner />
|
|
71
71
|
<GlobalErrorLogger />
|
|
72
72
|
<PwaUpdater />
|
|
73
|
-
<
|
|
73
|
+
<BusyProvider variant={props.config.busyVariant}>{props.children}</BusyProvider>
|
|
74
74
|
</NotificationProvider>
|
|
75
75
|
</ThemeProvider>
|
|
76
76
|
</ConfigContext.Provider>
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { type ParentComponent, onCleanup } from "solid-js";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
createServiceClient,
|
|
4
|
+
type ServiceClient,
|
|
5
|
+
type ServiceConnectionConfig,
|
|
6
|
+
} from "@simplysm/service-client";
|
|
3
7
|
import { ServiceClientContext, type ServiceClientContextValue } from "./ServiceClientContext";
|
|
4
8
|
import { useConfig } from "./ConfigContext";
|
|
5
9
|
import { useNotification } from "../components/feedback/notification/NotificationContext";
|
|
@@ -19,7 +23,10 @@ export const ServiceClientProvider: ParentComponent = (props) => {
|
|
|
19
23
|
clientMap.clear();
|
|
20
24
|
});
|
|
21
25
|
|
|
22
|
-
const connect = async (
|
|
26
|
+
const connect = async (
|
|
27
|
+
key: string,
|
|
28
|
+
options?: Partial<ServiceConnectionConfig>,
|
|
29
|
+
): Promise<void> => {
|
|
23
30
|
if (clientMap.has(key)) {
|
|
24
31
|
const existing = clientMap.get(key)!;
|
|
25
32
|
if (!existing.connected) {
|
|
@@ -128,5 +135,9 @@ export const ServiceClientProvider: ParentComponent = (props) => {
|
|
|
128
135
|
isConnected,
|
|
129
136
|
};
|
|
130
137
|
|
|
131
|
-
return
|
|
138
|
+
return (
|
|
139
|
+
<ServiceClientContext.Provider value={contextValue}>
|
|
140
|
+
{props.children}
|
|
141
|
+
</ServiceClientContext.Provider>
|
|
142
|
+
);
|
|
132
143
|
};
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
createContext,
|
|
3
|
+
useContext,
|
|
4
|
+
type ParentComponent,
|
|
5
|
+
createMemo,
|
|
6
|
+
createEffect,
|
|
7
|
+
onCleanup,
|
|
8
|
+
} from "solid-js";
|
|
2
9
|
import { createMediaQuery } from "@solid-primitives/media";
|
|
3
10
|
import { useSyncConfig } from "../hooks/useSyncConfig";
|
|
4
11
|
|
|
@@ -95,7 +102,8 @@ export const ThemeProvider: ParentComponent = (props) => {
|
|
|
95
102
|
// 다음 모드로 순환
|
|
96
103
|
const cycleMode = () => {
|
|
97
104
|
const current = mode();
|
|
98
|
-
const next: ThemeMode =
|
|
105
|
+
const next: ThemeMode =
|
|
106
|
+
current === "light" ? "system" : current === "system" ? "dark" : "light";
|
|
99
107
|
setMode(next);
|
|
100
108
|
};
|
|
101
109
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { defineEvent } from "@simplysm/service-common";
|
|
2
2
|
|
|
3
|
-
export const SharedDataChangeEvent = defineEvent<
|
|
4
|
-
|
|
5
|
-
)
|
|
3
|
+
export const SharedDataChangeEvent = defineEvent<
|
|
4
|
+
{ name: string; filter: unknown },
|
|
5
|
+
(string | number)[] | undefined
|
|
6
|
+
>("SharedDataChangeEvent");
|
|
@@ -18,7 +18,7 @@ export type SharedDataValue<TSharedData extends Record<string, unknown>> = {
|
|
|
18
18
|
[K in keyof TSharedData]: SharedDataAccessor<TSharedData[K]>;
|
|
19
19
|
} & {
|
|
20
20
|
wait: () => Promise<void>;
|
|
21
|
-
|
|
21
|
+
busy: Accessor<boolean>;
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
export const SharedDataContext = createContext<SharedDataValue<Record<string, unknown>>>();
|
|
@@ -19,8 +19,8 @@ export function SharedDataProvider<TSharedData extends Record<string, unknown>>(
|
|
|
19
19
|
const notification = useNotification();
|
|
20
20
|
const logger = useLogger();
|
|
21
21
|
|
|
22
|
-
const [
|
|
23
|
-
const
|
|
22
|
+
const [busyCount, setBusyCount] = createSignal(0);
|
|
23
|
+
const busy: Accessor<boolean> = () => busyCount() > 0;
|
|
24
24
|
|
|
25
25
|
const signalMap = new Map<string, ReturnType<typeof createSignal<unknown[]>>>();
|
|
26
26
|
const memoMap = new Map<string, Accessor<Map<string | number, unknown>>>();
|
|
@@ -49,7 +49,7 @@ export function SharedDataProvider<TSharedData extends Record<string, unknown>>(
|
|
|
49
49
|
const currentVersion = (versionMap.get(name) ?? 0) + 1;
|
|
50
50
|
versionMap.set(name, currentVersion);
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
setBusyCount((c) => c + 1);
|
|
53
53
|
try {
|
|
54
54
|
const signal = signalMap.get(name);
|
|
55
55
|
if (!signal) throw new Error(`'${name}'에 대한 공유데이터 저장소가 없습니다.`);
|
|
@@ -77,19 +77,22 @@ export function SharedDataProvider<TSharedData extends Record<string, unknown>>(
|
|
|
77
77
|
err instanceof Error ? err.message : `'${name}' 데이터를 불러오는 중 오류가 발생했습니다.`,
|
|
78
78
|
);
|
|
79
79
|
} finally {
|
|
80
|
-
|
|
80
|
+
setBusyCount((c) => c - 1);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
async function wait(): Promise<void> {
|
|
85
85
|
// eslint-disable-next-line solid/reactivity -- waitUntil은 폴링 기반이므로 tracked scope 불필요
|
|
86
|
-
await waitUntil(() =>
|
|
86
|
+
await waitUntil(() => busyCount() <= 0);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
const accessors: Record<string, SharedDataAccessor<unknown>> = {};
|
|
90
90
|
|
|
91
91
|
// eslint-disable-next-line solid/reactivity -- definitions는 초기 설정용으로 마운트 시 1회만 읽음
|
|
92
|
-
for (const [name, def] of Object.entries(props.definitions) as [
|
|
92
|
+
for (const [name, def] of Object.entries(props.definitions) as [
|
|
93
|
+
string,
|
|
94
|
+
SharedDataDefinition<unknown>,
|
|
95
|
+
][]) {
|
|
93
96
|
const [items, setItems] = createSignal<unknown[]>([]);
|
|
94
97
|
// eslint-disable-next-line solid/reactivity -- signal 참조를 Map에 저장하는 것은 반응성 접근이 아님
|
|
95
98
|
signalMap.set(name, [items, setItems]);
|
|
@@ -145,8 +148,10 @@ export function SharedDataProvider<TSharedData extends Record<string, unknown>>(
|
|
|
145
148
|
const contextValue = {
|
|
146
149
|
...accessors,
|
|
147
150
|
wait,
|
|
148
|
-
|
|
151
|
+
busy,
|
|
149
152
|
} as SharedDataValue<Record<string, unknown>>;
|
|
150
153
|
|
|
151
|
-
return
|
|
154
|
+
return (
|
|
155
|
+
<SharedDataContext.Provider value={contextValue}>{props.children}</SharedDataContext.Provider>
|
|
156
|
+
);
|
|
152
157
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// ── 테두리 ──
|
|
2
2
|
export const borderDefault = "border-base-300 dark:border-base-700";
|
|
3
|
-
export const borderSubtle = "border-base-200 dark:border-base-
|
|
3
|
+
export const borderSubtle = "border-base-200 dark:border-base-700";
|
|
4
4
|
|
|
5
5
|
// ── 표면 배경 ──
|
|
6
6
|
export const bgSurface = "bg-white dark:bg-base-900";
|
package/tailwind.config.ts
CHANGED
|
@@ -35,6 +35,15 @@ export default {
|
|
|
35
35
|
},
|
|
36
36
|
height: fieldSizes,
|
|
37
37
|
size: fieldSizes,
|
|
38
|
+
keyframes: {
|
|
39
|
+
"fade-in": {
|
|
40
|
+
from: { opacity: "0", transform: "translateY(-1rem)" },
|
|
41
|
+
to: { opacity: "1", transform: "translateY(0)" },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
animation: {
|
|
45
|
+
"fade-in": "fade-in 0.6s ease-out both",
|
|
46
|
+
},
|
|
38
47
|
zIndex: {
|
|
39
48
|
"sidebar": "100",
|
|
40
49
|
"sidebar-backdrop": "99",
|
package/tailwind.css
CHANGED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type ParentComponent, type JSX } from "solid-js";
|
|
2
|
-
import { type LoadingVariant } from "./LoadingContext";
|
|
3
|
-
import "./LoadingContainer.css";
|
|
4
|
-
export interface LoadingContainerProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "children"> {
|
|
5
|
-
busy?: boolean;
|
|
6
|
-
variant?: LoadingVariant;
|
|
7
|
-
message?: string;
|
|
8
|
-
progressPercent?: number;
|
|
9
|
-
children?: JSX.Element;
|
|
10
|
-
}
|
|
11
|
-
export declare const LoadingContainer: ParentComponent<LoadingContainerProps>;
|
|
12
|
-
//# sourceMappingURL=LoadingContainer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/loading/LoadingContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,GAAG,EAAyD,MAAM,UAAU,CAAC;AAGjH,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,wBAAwB,CAAC;AAEhC,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACjG,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAmCD,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAAC,qBAAqB,CAmFnE,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/components/feedback/loading/LoadingContainer.tsx"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["splitProps", "createEffect", "onCleanup", "Show", "useContext", "clsx", "twMerge", "LoadingContext", "createMountTransition", "baseClass", "screenBaseClass", "spinnerClass", "messageClass", "progressTrackClass", "progressBarClass", "barIndicatorClass", "LoadingContainer", "props", "local", "rest", "loadingCtx", "currVariant", "variant", "mounted", "animating", "unmount", "busy", "handleTransitionEnd", "e", "propertyName", "containerRef", "handleKeyDownCapture", "preventDefault", "stopPropagation", "addEventListener", "capture", "removeEventListener", "screenClass", "rectClass", "_el$", "_tmpl$", "_ref$", "_$use", "_$spread", "_$mergeProps", "class", "_$insert", "_$createComponent", "when", "children", "_el$2", "_tmpl$4", "_el$3", "firstChild", "_el$4", "_$className", "_$memo", "_el$5", "_tmpl$2", "_el$6", "_el$7", "nextSibling", "_$effect", "_p$", "_v$", "_v$2", "t", "undefined", "message", "_el$8", "_tmpl$3", "_el$9", "progressPercent", "_el$0", "_el$1", "_$p", "_$setStyleProperty", "_v$3", "_v$4"]
|
|
6
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { type Accessor } from "solid-js";
|
|
2
|
-
export type LoadingVariant = "spinner" | "bar";
|
|
3
|
-
export interface LoadingContextValue {
|
|
4
|
-
variant: Accessor<LoadingVariant>;
|
|
5
|
-
show: (message?: string) => void;
|
|
6
|
-
hide: () => void;
|
|
7
|
-
setProgress: (percent: number | undefined) => void;
|
|
8
|
-
}
|
|
9
|
-
export declare const LoadingContext: import("solid-js").Context<LoadingContextValue | undefined>;
|
|
10
|
-
export declare function useLoading(): LoadingContextValue;
|
|
11
|
-
//# sourceMappingURL=LoadingContext.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingContext.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/loading/LoadingContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,KAAK,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACpD;AAED,eAAO,MAAM,cAAc,6DAAuC,CAAC;AAEnE,wBAAgB,UAAU,IAAI,mBAAmB,CAMhD"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { createContext, useContext } from "solid-js";
|
|
2
|
-
const LoadingContext = createContext();
|
|
3
|
-
function useLoading() {
|
|
4
|
-
const context = useContext(LoadingContext);
|
|
5
|
-
if (!context) {
|
|
6
|
-
throw new Error("useLoading\uC740 LoadingProvider \uB0B4\uBD80\uC5D0\uC11C\uB9CC \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4");
|
|
7
|
-
}
|
|
8
|
-
return context;
|
|
9
|
-
}
|
|
10
|
-
export {
|
|
11
|
-
LoadingContext,
|
|
12
|
-
useLoading
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=LoadingContext.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/components/feedback/loading/LoadingContext.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,eAAe,kBAAiC;AAWlD,MAAM,iBAAiB,cAAmC;AAE1D,SAAS,aAAkC;AAChD,QAAM,UAAU,WAAW,cAAc;AACzC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,oHAA8C;AAAA,EAChE;AACA,SAAO;AACT;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type ParentComponent } from "solid-js";
|
|
2
|
-
import { type LoadingVariant } from "./LoadingContext";
|
|
3
|
-
export interface LoadingProviderProps {
|
|
4
|
-
variant?: LoadingVariant;
|
|
5
|
-
}
|
|
6
|
-
export declare const LoadingProvider: ParentComponent<LoadingProviderProps>;
|
|
7
|
-
//# sourceMappingURL=LoadingProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/loading/LoadingProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAgB,MAAM,UAAU,CAAC;AAG9D,OAAO,EAA4C,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKjG,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,oBAAoB,CA6CjE,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/components/feedback/loading/LoadingProvider.tsx"],
|
|
4
|
-
"mappings": ";;AAAA,SAA+BA,oBAAoB;AACnD,SAASC,cAAc;AACvB,OAAOC,UAAU;AACjB,SAASC,sBAAqE;AAC9E,SAASC,wBAAwB;AAEjC,MAAMC,eAAeH,KAAK,sBAAsB,qBAAqB,iBAAiB;AAM/E,MAAMI,kBAA0DC,WAAU;AAC/E,QAAM,CAACC,WAAWC,YAAY,IAAIT,aAAa,CAAC;AAChD,QAAM,CAACU,SAASC,UAAU,IAAIX,aAAiC;AAC/D,QAAM,CAACY,UAAUC,WAAW,IAAIb,aAAiC;AAEjE,QAAMc,UAAUA,MAAsBP,MAAMO,WAAW;AAEvD,QAAMC,OAAQC,SAAuB;AACnCP,iBAAcQ,OAAMA,IAAI,CAAC;AACzB,QAAID,QAAQE,QAAW;AACrBP,iBAAWK,GAAG;IAChB;EACF;AAEA,QAAMG,OAAOA,MAAY;AACvB,UAAMC,WAAWC,KAAKC,IAAI,GAAGd,UAAU,IAAI,CAAC;AAC5CC,iBAAaW,QAAQ;AACrB,QAAIA,YAAY,GAAG;AACjBT,iBAAWO,MAAS;AACpBL,kBAAYK,MAAS;IACvB;EACF;AAEA,QAAMK,eAAoC;IACxCT;IACAC;IACAI;IACAN,aAAcW,aAAgCX,YAAYW,OAAO;EACnE;AAEA,SAAAC,kBACGtB,eAAeuB,UAAQ;IAACC,OAAOJ;IAAY,IAAAK,WAAA;AAAA,aAAA,CAAAC,OAAA,MACzCtB,MAAMqB,QAAQ,GAAAH,kBACdxB,QAAM;QAAA,IAAA2B,WAAA;AAAA,iBAAAH,kBACJrB,kBAAgB;YAAA,IACf0B,OAAI;AAAA,qBAAEtB,UAAU,IAAI;YAAC;YAAA,IACrBM,UAAO;AAAA,qBAAEA,QAAQ;YAAC;YAAA,IAClBJ,UAAO;AAAA,qBAAEA,QAAQ;YAAC;YAAA,IAClBqB,kBAAe;AAAA,qBAAEnB,SAAS;YAAC;YAAA,SACpBP;YAAY,IACnB2B,QAAK;AAAA,qBAAE;gBAAE,kBAAkBxB,UAAU,IAAI,IAAI,SAAS;cAAO;YAAC;UAAA,CAAA;QAAA;MAAA,CAAA,CAAA;IAAA;EAAA,CAAA;AAKxE;",
|
|
5
|
-
"names": ["createSignal", "Portal", "clsx", "LoadingContext", "LoadingContainer", "overlayClass", "LoadingProvider", "props", "busyCount", "setBusyCount", "message", "setMessage", "progress", "setProgress", "variant", "show", "msg", "c", "undefined", "hide", "newCount", "Math", "max", "contextValue", "percent", "_$createComponent", "Provider", "value", "children", "_$memo", "busy", "progressPercent", "style"]
|
|
6
|
-
}
|