@simplysm/solid 13.0.72 → 13.0.74
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 +209 -202
- package/dist/components/data/calendar/Calendar.d.ts.map +1 -1
- package/dist/components/data/calendar/Calendar.js +3 -11
- package/dist/components/data/calendar/Calendar.js.map +2 -2
- package/dist/components/data/sheet/DataSheet.js +10 -10
- package/dist/components/data/sheet/DataSheet.js.map +2 -2
- package/dist/components/data/sheet/DataSheetConfigDialog.d.ts.map +1 -1
- package/dist/components/data/sheet/DataSheetConfigDialog.js +27 -9
- package/dist/components/data/sheet/DataSheetConfigDialog.js.map +2 -2
- package/dist/components/disclosure/Dialog.d.ts +1 -1
- package/dist/components/disclosure/Dialog.d.ts.map +1 -1
- package/dist/components/disclosure/Dialog.js +5 -5
- package/dist/components/disclosure/Dialog.js.map +2 -2
- package/dist/components/disclosure/dialogZIndex.d.ts +1 -1
- package/dist/components/features/crud-detail/CrudDetail.js +23 -23
- package/dist/components/features/crud-detail/CrudDetail.js.map +2 -2
- package/dist/components/features/crud-sheet/CrudSheet.js +49 -49
- package/dist/components/features/crud-sheet/CrudSheet.js.map +2 -2
- package/dist/components/features/crud-sheet/types.d.ts +4 -4
- package/dist/components/features/crud-sheet/types.d.ts.map +1 -1
- package/dist/components/features/data-select-button/DataSelectButton.d.ts +25 -7
- package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -1
- package/dist/components/features/data-select-button/DataSelectButton.js +27 -12
- package/dist/components/features/data-select-button/DataSelectButton.js.map +2 -2
- package/dist/components/features/permission-table/PermissionTable.js +4 -4
- package/dist/components/features/permission-table/PermissionTable.js.map +2 -2
- package/dist/components/features/shared-data/SharedDataSelect.d.ts +22 -10
- package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -1
- package/dist/components/features/shared-data/SharedDataSelect.js +113 -29
- package/dist/components/features/shared-data/SharedDataSelect.js.map +2 -2
- package/dist/components/features/shared-data/SharedDataSelectButton.d.ts +3 -3
- package/dist/components/features/shared-data/SharedDataSelectButton.d.ts.map +1 -1
- package/dist/components/features/shared-data/SharedDataSelectButton.js.map +1 -1
- package/dist/components/features/shared-data/SharedDataSelectList.js +5 -4
- package/dist/components/features/shared-data/SharedDataSelectList.js.map +2 -2
- package/dist/components/feedback/notification/NotificationBanner.js +3 -3
- package/dist/components/feedback/notification/NotificationBanner.js.map +2 -2
- package/dist/components/feedback/notification/NotificationBell.d.ts.map +1 -1
- package/dist/components/feedback/notification/NotificationBell.js +12 -5
- package/dist/components/feedback/notification/NotificationBell.js.map +2 -2
- package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -1
- package/dist/components/feedback/notification/NotificationProvider.js +3 -1
- package/dist/components/feedback/notification/NotificationProvider.js.map +2 -2
- package/dist/components/form-control/ThemeToggle.d.ts.map +1 -1
- package/dist/components/form-control/ThemeToggle.js +9 -6
- package/dist/components/form-control/ThemeToggle.js.map +2 -2
- package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/Checkbox.js +3 -1
- package/dist/components/form-control/checkbox/Checkbox.js.map +2 -2
- package/dist/components/form-control/checkbox/CheckboxGroup.js +1 -1
- package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -2
- package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/Radio.js +3 -1
- package/dist/components/form-control/checkbox/Radio.js.map +2 -2
- package/dist/components/form-control/checkbox/RadioGroup.js +1 -1
- package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -2
- package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
- package/dist/components/form-control/color-picker/ColorPicker.js +3 -1
- package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
- package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/form-control/combobox/Combobox.js +9 -5
- package/dist/components/form-control/combobox/Combobox.js.map +2 -2
- package/dist/components/form-control/date-range-picker/DateRangePicker.js +9 -9
- package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
- package/dist/components/form-control/editor/EditorToolbar.js +3 -3
- package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
- package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
- package/dist/components/form-control/field/DatePicker.js +9 -3
- package/dist/components/form-control/field/DatePicker.js.map +2 -2
- package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
- package/dist/components/form-control/field/DateTimePicker.js +9 -3
- package/dist/components/form-control/field/DateTimePicker.js.map +2 -2
- package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
- package/dist/components/form-control/field/NumberInput.js +9 -3
- package/dist/components/form-control/field/NumberInput.js.map +2 -2
- package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
- package/dist/components/form-control/field/TextInput.js +10 -4
- 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 +9 -3
- package/dist/components/form-control/field/Textarea.js.map +2 -2
- package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
- package/dist/components/form-control/field/TimePicker.js +9 -3
- package/dist/components/form-control/field/TimePicker.js.map +2 -2
- package/dist/components/form-control/numpad/Numpad.d.ts.map +1 -1
- package/dist/components/form-control/numpad/Numpad.js +5 -1
- package/dist/components/form-control/numpad/Numpad.js.map +2 -2
- package/dist/components/form-control/select/Select.js +7 -7
- package/dist/components/form-control/select/Select.js.map +2 -2
- package/dist/components/form-control/state-preset/StatePreset.d.ts.map +1 -1
- package/dist/components/form-control/state-preset/StatePreset.js +42 -20
- package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
- package/dist/components/layout/sidebar/SidebarContainer.js +3 -3
- package/dist/components/layout/sidebar/SidebarContainer.js.map +2 -2
- package/dist/components/layout/sidebar/SidebarMenu.d.ts.map +1 -1
- package/dist/components/layout/sidebar/SidebarMenu.js +5 -2
- package/dist/components/layout/sidebar/SidebarMenu.js.map +2 -2
- package/dist/components/layout/topbar/Topbar.js +3 -4
- package/dist/components/layout/topbar/Topbar.js.map +2 -2
- package/dist/components/layout/topbar/TopbarMenu.js +3 -3
- package/dist/components/layout/topbar/TopbarMenu.js.map +2 -2
- package/dist/hooks/createSelectionGroup.d.ts +2 -2
- package/dist/hooks/createSelectionGroup.d.ts.map +1 -1
- package/dist/hooks/createSelectionGroup.js +5 -2
- package/dist/hooks/createSelectionGroup.js.map +2 -2
- package/dist/providers/i18n/I18nContext.d.ts +0 -4
- package/dist/providers/i18n/I18nContext.d.ts.map +1 -1
- package/dist/providers/i18n/I18nContext.js +1 -5
- package/dist/providers/i18n/I18nContext.js.map +2 -2
- package/dist/providers/i18n/locales/en.d.ts +38 -0
- package/dist/providers/i18n/locales/en.d.ts.map +1 -1
- package/dist/providers/i18n/locales/en.js +39 -1
- package/dist/providers/i18n/locales/en.js.map +1 -1
- package/dist/providers/i18n/locales/ko.d.ts +38 -0
- package/dist/providers/i18n/locales/ko.d.ts.map +1 -1
- package/dist/providers/i18n/locales/ko.js +39 -1
- package/dist/providers/i18n/locales/ko.js.map +1 -1
- package/package.json +6 -6
- package/src/components/data/calendar/Calendar.tsx +3 -4
- package/src/components/data/sheet/DataSheet.tsx +11 -11
- package/src/components/data/sheet/DataSheetConfigDialog.tsx +12 -10
- package/src/components/data/sheet/types.ts +1 -1
- package/src/components/disclosure/Dialog.tsx +10 -10
- package/src/components/disclosure/dialogZIndex.ts +1 -1
- package/src/components/features/crud-detail/CrudDetail.tsx +25 -25
- package/src/components/features/crud-sheet/CrudSheet.tsx +53 -53
- package/src/components/features/crud-sheet/types.ts +4 -4
- package/src/components/features/data-select-button/DataSelectButton.tsx +51 -21
- package/src/components/features/permission-table/PermissionTable.tsx +3 -3
- package/src/components/features/shared-data/SharedDataSelect.tsx +172 -33
- package/src/components/features/shared-data/SharedDataSelectButton.tsx +3 -2
- package/src/components/features/shared-data/SharedDataSelectList.tsx +4 -4
- package/src/components/feedback/notification/NotificationBanner.tsx +3 -3
- package/src/components/feedback/notification/NotificationBell.tsx +6 -4
- package/src/components/feedback/notification/NotificationProvider.tsx +3 -1
- package/src/components/form-control/ThemeToggle.tsx +10 -6
- package/src/components/form-control/checkbox/Checkbox.tsx +4 -1
- package/src/components/form-control/checkbox/CheckboxGroup.tsx +1 -1
- package/src/components/form-control/checkbox/Radio.tsx +4 -1
- package/src/components/form-control/checkbox/RadioGroup.tsx +1 -1
- package/src/components/form-control/color-picker/ColorPicker.tsx +4 -1
- package/src/components/form-control/combobox/Combobox.tsx +6 -3
- package/src/components/form-control/date-range-picker/DateRangePicker.tsx +8 -8
- package/src/components/form-control/editor/EditorToolbar.tsx +23 -23
- package/src/components/form-control/field/DatePicker.tsx +6 -3
- package/src/components/form-control/field/DateTimePicker.tsx +6 -3
- package/src/components/form-control/field/NumberInput.tsx +6 -3
- package/src/components/form-control/field/TextInput.tsx +7 -4
- package/src/components/form-control/field/Textarea.tsx +6 -3
- package/src/components/form-control/field/TimePicker.tsx +6 -3
- package/src/components/form-control/numpad/Numpad.tsx +3 -1
- package/src/components/form-control/select/Select.tsx +7 -7
- package/src/components/form-control/state-preset/StatePreset.tsx +14 -12
- package/src/components/layout/sidebar/SidebarContainer.tsx +3 -3
- package/src/components/layout/sidebar/SidebarMenu.tsx +3 -1
- package/src/components/layout/topbar/Topbar.tsx +3 -3
- package/src/components/layout/topbar/TopbarMenu.tsx +3 -3
- package/src/hooks/createSelectionGroup.tsx +8 -4
- package/src/providers/i18n/I18nContext.tsx +0 -7
- package/src/providers/i18n/locales/en.ts +38 -0
- package/src/providers/i18n/locales/ko.ts +38 -0
- package/tailwind.config.ts +2 -2
- package/tests/components/data/kanban/Kanban.selection.spec.tsx +34 -24
- package/tests/components/disclosure/Dialog.spec.tsx +28 -28
- package/tests/components/disclosure/DialogProvider.spec.tsx +51 -25
- package/tests/components/features/address/AddressSearch.spec.tsx +12 -4
- package/tests/components/features/crud-detail/CrudDetail.spec.tsx +1 -0
- package/tests/components/features/crud-sheet/CrudSheet.spec.tsx +30 -6
- package/tests/components/features/data-select-button/DataSelectButton.spec.tsx +77 -56
- package/tests/components/features/permission-table/PermissionTable.spec.tsx +12 -8
- package/tests/components/features/shared-data/SharedDataSelect.spec.tsx +172 -0
- package/tests/components/features/shared-data/SharedDataSelectList.spec.tsx +14 -2
- package/tests/components/feedback/notification/LiveRegion.spec.tsx +20 -9
- package/tests/components/feedback/notification/NotificationBanner.spec.tsx +64 -46
- package/tests/components/feedback/notification/NotificationBell.spec.tsx +70 -51
- package/tests/components/feedback/notification/NotificationContext.spec.tsx +105 -78
- package/tests/components/form-control/checkbox/Checkbox.spec.tsx +25 -20
- package/tests/components/form-control/checkbox/CheckboxGroup.spec.tsx +53 -30
- package/tests/components/form-control/checkbox/Radio.spec.tsx +25 -20
- package/tests/components/form-control/checkbox/RadioGroup.spec.tsx +53 -30
- package/tests/components/form-control/color-picker/ColorPicker.spec.tsx +24 -15
- package/tests/components/form-control/combobox/Combobox.spec.tsx +92 -59
- package/tests/components/form-control/date-range-picker/DateRangePicker.spec.tsx +2 -2
- package/tests/components/form-control/field/DatePicker.spec.tsx +50 -44
- package/tests/components/form-control/field/DateTimePicker.spec.tsx +51 -45
- package/tests/components/form-control/field/NumberInput.spec.tsx +53 -47
- package/tests/components/form-control/field/TextInput.spec.tsx +50 -44
- package/tests/components/form-control/field/Textarea.spec.tsx +35 -29
- package/tests/components/form-control/field/TimePicker.spec.tsx +43 -37
- package/tests/components/form-control/numpad/Numpad.spec.tsx +175 -25
- package/tests/components/form-control/select/Select.spec.tsx +5 -0
- package/tests/components/form-control/select/SelectItem.spec.tsx +1 -0
- package/tests/components/layout/sidebar/Sidebar.spec.tsx +79 -35
- package/tests/components/layout/sidebar/SidebarContainer.spec.tsx +1 -0
- package/tests/components/layout/sidebar/SidebarMenu.spec.tsx +28 -17
- package/tests/components/layout/topbar/TopbarActions.spec.tsx +41 -23
- package/tests/components/layout/topbar/createTopbarActions.spec.tsx +1 -0
- package/tests/hooks/usePrint.spec.tsx +1 -1
- package/tests/hooks/useRouterLink.spec.tsx +2 -0
- package/tests/hooks/useSyncConfig.spec.tsx +1 -0
- package/tests/providers/ErrorLoggerProvider.spec.tsx +1 -0
- package/tests/providers/PwaUpdateProvider.spec.tsx +16 -6
- package/tests/providers/ServiceClientContext.spec.tsx +40 -25
- package/tests/providers/i18n/I18nContext.spec.tsx +3 -4
- package/tests/providers/shared-data/SharedDataProvider.spec.tsx +2 -0
- package/dist/hooks/usePrint.d.ts +0 -3
- package/dist/hooks/usePrint.d.ts.map +0 -1
- package/dist/hooks/usePrint.js +0 -5
- package/dist/hooks/usePrint.js.map +0 -6
- package/src/hooks/usePrint.ts +0 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/providers/i18n/locales/ko.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/solid",
|
|
3
|
-
"version": "13.0.
|
|
3
|
+
"version": "13.0.74",
|
|
4
4
|
"description": "Simplysm package - SolidJS library",
|
|
5
5
|
"author": "simplysm",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@solid-primitives/resize-observer": "^2.1.5",
|
|
29
29
|
"@solid-primitives/storage": "^4.3.4",
|
|
30
30
|
"@solidjs/router": "^0.15.4",
|
|
31
|
-
"@tabler/icons-solidjs": "^3.
|
|
31
|
+
"@tabler/icons-solidjs": "^3.38.0",
|
|
32
32
|
"@tiptap/core": "^3.20.0",
|
|
33
33
|
"@tiptap/extension-color": "^3.20.0",
|
|
34
34
|
"@tiptap/extension-highlight": "^3.20.0",
|
|
@@ -51,10 +51,10 @@
|
|
|
51
51
|
"tabbable": "^6.4.0",
|
|
52
52
|
"tailwind-merge": "^3.5.0",
|
|
53
53
|
"tailwindcss": "^3.4.19",
|
|
54
|
-
"@simplysm/core-
|
|
55
|
-
"@simplysm/core-
|
|
56
|
-
"@simplysm/service-
|
|
57
|
-
"@simplysm/service-
|
|
54
|
+
"@simplysm/core-browser": "13.0.74",
|
|
55
|
+
"@simplysm/core-common": "13.0.74",
|
|
56
|
+
"@simplysm/service-client": "13.0.74",
|
|
57
|
+
"@simplysm/service-common": "13.0.74"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@solidjs/testing-library": "^0.8.10"
|
|
@@ -3,7 +3,7 @@ import { DateOnly } from "@simplysm/core-common";
|
|
|
3
3
|
import clsx from "clsx";
|
|
4
4
|
import { twMerge } from "tailwind-merge";
|
|
5
5
|
import { createControllableSignal } from "../../../hooks/createControllableSignal";
|
|
6
|
-
import {
|
|
6
|
+
import { useI18n } from "../../../providers/i18n/I18nContext";
|
|
7
7
|
|
|
8
8
|
export interface CalendarProps<TValue> extends Omit<
|
|
9
9
|
JSX.HTMLAttributes<HTMLTableElement>,
|
|
@@ -62,15 +62,14 @@ function CalendarBase<TValue>(props: CalendarProps<TValue>) {
|
|
|
62
62
|
onChange: () => local.onYearMonthChange,
|
|
63
63
|
});
|
|
64
64
|
|
|
65
|
-
const i18n =
|
|
65
|
+
const i18n = useI18n();
|
|
66
66
|
const weekNames = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"] as const;
|
|
67
67
|
|
|
68
68
|
const weekHeaders = createMemo(() => {
|
|
69
69
|
const start = weekStartDay();
|
|
70
70
|
return Array.from({ length: 7 }, (_, i) => {
|
|
71
71
|
const key = weekNames[(start + i) % 7];
|
|
72
|
-
return i18n
|
|
73
|
-
{ sun: "Sun", mon: "Mon", tue: "Tue", wed: "Wed", thu: "Thu", fri: "Fri", sat: "Sat" }[key];
|
|
72
|
+
return i18n.t(`calendar.weeks.${key}`);
|
|
74
73
|
});
|
|
75
74
|
});
|
|
76
75
|
|
|
@@ -39,7 +39,7 @@ import { Checkbox } from "../../form-control/checkbox/Checkbox";
|
|
|
39
39
|
import { Pagination } from "../Pagination";
|
|
40
40
|
import { useSyncConfig } from "../../../hooks/useSyncConfig";
|
|
41
41
|
import { DialogContext } from "../../disclosure/DialogContext";
|
|
42
|
-
import {
|
|
42
|
+
import { useI18n } from "../../../providers/i18n/I18nContext";
|
|
43
43
|
import "./DataSheet.css";
|
|
44
44
|
import {
|
|
45
45
|
configButtonClass,
|
|
@@ -111,8 +111,8 @@ export const DataSheet: DataSheetComponent = <T,>(props: DataSheetProps<T>) => {
|
|
|
111
111
|
"children",
|
|
112
112
|
]);
|
|
113
113
|
|
|
114
|
-
const
|
|
115
|
-
const i18n =
|
|
114
|
+
const dialog = useContext(DialogContext);
|
|
115
|
+
const i18n = useI18n();
|
|
116
116
|
|
|
117
117
|
// #region Column Collection
|
|
118
118
|
const resolved = children(() => local.children);
|
|
@@ -163,8 +163,8 @@ export const DataSheet: DataSheetComponent = <T,>(props: DataSheetProps<T>) => {
|
|
|
163
163
|
setConfig({ ...prev, columnRecord: record });
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
async function
|
|
167
|
-
if (!
|
|
166
|
+
async function openConfigDialog(): Promise<void> {
|
|
167
|
+
if (!dialog) return;
|
|
168
168
|
|
|
169
169
|
const { DataSheetConfigDialog } = await import("./DataSheetConfigDialog");
|
|
170
170
|
|
|
@@ -185,7 +185,7 @@ export const DataSheet: DataSheetComponent = <T,>(props: DataSheetProps<T>) => {
|
|
|
185
185
|
|
|
186
186
|
const currentConfig = config();
|
|
187
187
|
|
|
188
|
-
const result = await
|
|
188
|
+
const result = await dialog.show<DataSheetConfig>(
|
|
189
189
|
() => <DataSheetConfigDialog columnInfos={columnInfos} currentConfig={currentConfig} />,
|
|
190
190
|
{
|
|
191
191
|
header: "Sheet Settings",
|
|
@@ -770,7 +770,7 @@ export const DataSheet: DataSheetComponent = <T,>(props: DataSheetProps<T>) => {
|
|
|
770
770
|
local.class,
|
|
771
771
|
)}
|
|
772
772
|
>
|
|
773
|
-
<Show when={!local.hideConfigBar && (
|
|
773
|
+
<Show when={!local.hideConfigBar && (dialog != null || effectivePageCount() > 1)}>
|
|
774
774
|
<div class={toolbarClass}>
|
|
775
775
|
<Show when={effectivePageCount() > 1}>
|
|
776
776
|
<Pagination
|
|
@@ -782,10 +782,10 @@ export const DataSheet: DataSheetComponent = <T,>(props: DataSheetProps<T>) => {
|
|
|
782
782
|
/>
|
|
783
783
|
</Show>
|
|
784
784
|
<div class="flex-1" />
|
|
785
|
-
<Show when={
|
|
785
|
+
<Show when={dialog != null}>
|
|
786
786
|
<button
|
|
787
787
|
class={configButtonClass}
|
|
788
|
-
onClick={
|
|
788
|
+
onClick={openConfigDialog}
|
|
789
789
|
title="Sheet Settings"
|
|
790
790
|
type="button"
|
|
791
791
|
>
|
|
@@ -845,8 +845,8 @@ export const DataSheet: DataSheetComponent = <T,>(props: DataSheetProps<T>) => {
|
|
|
845
845
|
class={expandToggleClass}
|
|
846
846
|
onClick={toggleExpandAll}
|
|
847
847
|
title={isAllExpanded()
|
|
848
|
-
?
|
|
849
|
-
:
|
|
848
|
+
? i18n.t("dataSheet.collapseAll")
|
|
849
|
+
: i18n.t("dataSheet.expandAll")}
|
|
850
850
|
>
|
|
851
851
|
<Icon
|
|
852
852
|
icon={IconChevronDown}
|
|
@@ -13,6 +13,7 @@ import { Checkbox } from "../../form-control/checkbox/Checkbox";
|
|
|
13
13
|
import { TextInput } from "../../form-control/field/TextInput";
|
|
14
14
|
import { Button } from "../../form-control/Button";
|
|
15
15
|
import { borderSubtle } from "../../../styles/tokens.styles";
|
|
16
|
+
import { useI18n } from "../../../providers/i18n/I18nContext";
|
|
16
17
|
|
|
17
18
|
const containerClass = clsx("flex flex-col", "gap-2", "p-2");
|
|
18
19
|
const sheetWrapperClass = clsx("rounded border", borderSubtle);
|
|
@@ -34,8 +35,9 @@ export interface DataSheetConfigDialogProps {
|
|
|
34
35
|
|
|
35
36
|
export const DataSheetConfigDialog: Component<DataSheetConfigDialogProps> = (props) => {
|
|
36
37
|
const dialog = useDialogInstance<DataSheetConfig>();
|
|
38
|
+
const i18n = useI18n();
|
|
37
39
|
|
|
38
|
-
/* eslint-disable solid/reactivity --
|
|
40
|
+
/* eslint-disable solid/reactivity -- dialog props are static values only used once at mount time */
|
|
39
41
|
const initialItems: EditColumnItem[] = props.columnInfos
|
|
40
42
|
.filter((info) => !info.collapse)
|
|
41
43
|
.map((info) => {
|
|
@@ -105,7 +107,7 @@ export const DataSheetConfigDialog: Component<DataSheetConfigDialogProps> = (pro
|
|
|
105
107
|
}
|
|
106
108
|
|
|
107
109
|
function handleReset(): void {
|
|
108
|
-
if (!confirm("
|
|
110
|
+
if (!confirm(i18n.t("dataSheetConfigDialog.resetConfirm"))) return;
|
|
109
111
|
dialog?.close({ columnRecord: {} });
|
|
110
112
|
}
|
|
111
113
|
|
|
@@ -115,13 +117,13 @@ export const DataSheetConfigDialog: Component<DataSheetConfigDialogProps> = (pro
|
|
|
115
117
|
<DataSheet items={editItems} inset hideConfigBar onItemsReorder={handleReorder}>
|
|
116
118
|
<DataSheet.Column<EditColumnItem>
|
|
117
119
|
key="header"
|
|
118
|
-
header="
|
|
120
|
+
header={i18n.t("dataSheetConfigDialog.column")}
|
|
119
121
|
class="px-2 py-1"
|
|
120
122
|
sortable={false}
|
|
121
123
|
>
|
|
122
124
|
{(ctx) => ctx.item.headerText}
|
|
123
125
|
</DataSheet.Column>
|
|
124
|
-
<DataSheet.Column<EditColumnItem> key="fixed" header="
|
|
126
|
+
<DataSheet.Column<EditColumnItem> key="fixed" header={i18n.t("dataSheetConfigDialog.fixed")} sortable={false}>
|
|
125
127
|
{(ctx) => (
|
|
126
128
|
<Checkbox
|
|
127
129
|
inset
|
|
@@ -130,7 +132,7 @@ export const DataSheetConfigDialog: Component<DataSheetConfigDialogProps> = (pro
|
|
|
130
132
|
/>
|
|
131
133
|
)}
|
|
132
134
|
</DataSheet.Column>
|
|
133
|
-
<DataSheet.Column<EditColumnItem> key="hidden" header="
|
|
135
|
+
<DataSheet.Column<EditColumnItem> key="hidden" header={i18n.t("dataSheetConfigDialog.hidden")} sortable={false}>
|
|
134
136
|
{(ctx) => (
|
|
135
137
|
<Checkbox
|
|
136
138
|
inset
|
|
@@ -139,13 +141,13 @@ export const DataSheetConfigDialog: Component<DataSheetConfigDialogProps> = (pro
|
|
|
139
141
|
/>
|
|
140
142
|
)}
|
|
141
143
|
</DataSheet.Column>
|
|
142
|
-
<DataSheet.Column<EditColumnItem> key="width" header="
|
|
144
|
+
<DataSheet.Column<EditColumnItem> key="width" header={i18n.t("dataSheetConfigDialog.width")} sortable={false}>
|
|
143
145
|
{(ctx) => (
|
|
144
146
|
<TextInput
|
|
145
147
|
value={ctx.item.width}
|
|
146
148
|
onValueChange={(v) => updateItem(ctx.item.key, "width", v)}
|
|
147
149
|
inset
|
|
148
|
-
placeholder="
|
|
150
|
+
placeholder={i18n.t("dataSheetConfigDialog.autoPlaceholder")}
|
|
149
151
|
/>
|
|
150
152
|
)}
|
|
151
153
|
</DataSheet.Column>
|
|
@@ -154,12 +156,12 @@ export const DataSheetConfigDialog: Component<DataSheetConfigDialogProps> = (pro
|
|
|
154
156
|
|
|
155
157
|
<div class={footerClass}>
|
|
156
158
|
<Button onClick={handleReset} theme="warning" variant="solid">
|
|
157
|
-
|
|
159
|
+
{i18n.t("dataSheetConfigDialog.reset")}
|
|
158
160
|
</Button>
|
|
159
161
|
<div class={footerActionsClass}>
|
|
160
|
-
<Button onClick={() => dialog?.close(undefined)}>
|
|
162
|
+
<Button onClick={() => dialog?.close(undefined)}>{i18n.t("dataSheetConfigDialog.cancel")}</Button>
|
|
161
163
|
<Button onClick={handleOk} theme="primary" variant="solid">
|
|
162
|
-
|
|
164
|
+
{i18n.t("dataSheetConfigDialog.confirm")}
|
|
163
165
|
</Button>
|
|
164
166
|
</div>
|
|
165
167
|
</div>
|
|
@@ -138,7 +138,7 @@ export interface DataSheetReorderEvent<TItem> {
|
|
|
138
138
|
position: DataSheetDragPosition;
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
// Column information passed to config
|
|
141
|
+
// Column information passed to config dialog
|
|
142
142
|
export interface DataSheetConfigColumnInfo {
|
|
143
143
|
key: string;
|
|
144
144
|
header: string[];
|
|
@@ -21,7 +21,7 @@ import { createMountTransition } from "../../hooks/createMountTransition";
|
|
|
21
21
|
import { startPointerDrag } from "../../helpers/startPointerDrag";
|
|
22
22
|
import { createSlotComponent } from "../../helpers/createSlotComponent";
|
|
23
23
|
import { mergeStyles } from "../../helpers/mergeStyles";
|
|
24
|
-
import {
|
|
24
|
+
import { useI18n } from "../../providers/i18n/I18nContext";
|
|
25
25
|
import { Icon } from "../display/Icon";
|
|
26
26
|
import { borderSubtle } from "../../styles/tokens.styles";
|
|
27
27
|
import { DialogDefaultsContext } from "./DialogContext";
|
|
@@ -39,7 +39,7 @@ const DialogHeader = createSlotComponent(DialogSlotsContext, (ctx) => ctx.setHea
|
|
|
39
39
|
const DialogAction = createSlotComponent(DialogSlotsContext, (ctx) => ctx.setAction);
|
|
40
40
|
|
|
41
41
|
export interface DialogProps {
|
|
42
|
-
/**
|
|
42
|
+
/** Dialog open state */
|
|
43
43
|
open?: boolean;
|
|
44
44
|
/** Callback when open state changes */
|
|
45
45
|
onOpenChange?: (open: boolean) => void;
|
|
@@ -146,7 +146,7 @@ interface DialogComponent extends ParentComponent<DialogProps> {
|
|
|
146
146
|
|
|
147
147
|
export const Dialog: DialogComponent = (props) => {
|
|
148
148
|
const dialogDefaults = useContext(DialogDefaultsContext);
|
|
149
|
-
const i18n =
|
|
149
|
+
const i18n = useI18n();
|
|
150
150
|
|
|
151
151
|
const [local] = splitProps(props, [
|
|
152
152
|
"open",
|
|
@@ -479,10 +479,10 @@ export const Dialog: DialogComponent = (props) => {
|
|
|
479
479
|
<Show when={mounted()}>
|
|
480
480
|
<Portal>
|
|
481
481
|
<DialogSlotsContext.Provider value={{ setHeader, setAction }}>
|
|
482
|
-
<div ref={setWrapperRef} data-
|
|
482
|
+
<div ref={setWrapperRef} data-dialog class={wrapperClass()}>
|
|
483
483
|
{/* Backdrop */}
|
|
484
484
|
<Show when={!local.float}>
|
|
485
|
-
<div data-
|
|
485
|
+
<div data-dialog-backdrop class={backdropClass()} onClick={handleBackdropClick} />
|
|
486
486
|
</Show>
|
|
487
487
|
|
|
488
488
|
{/* Dialog */}
|
|
@@ -490,7 +490,7 @@ export const Dialog: DialogComponent = (props) => {
|
|
|
490
490
|
ref={(el) => {
|
|
491
491
|
dialogRef = el;
|
|
492
492
|
}}
|
|
493
|
-
data-
|
|
493
|
+
data-dialog-panel
|
|
494
494
|
role="dialog"
|
|
495
495
|
aria-modal={local.float ? undefined : true}
|
|
496
496
|
aria-labelledby={hasHeader() ? headerId : undefined}
|
|
@@ -503,7 +503,7 @@ export const Dialog: DialogComponent = (props) => {
|
|
|
503
503
|
{/* Header */}
|
|
504
504
|
<Show when={hasHeader()}>
|
|
505
505
|
<div
|
|
506
|
-
data-
|
|
506
|
+
data-dialog-header
|
|
507
507
|
class={clsx(headerClass(), "touch-none")}
|
|
508
508
|
style={
|
|
509
509
|
typeof local.headerStyle === "string"
|
|
@@ -518,10 +518,10 @@ export const Dialog: DialogComponent = (props) => {
|
|
|
518
518
|
<Show when={action()}>{action()!()}</Show>
|
|
519
519
|
<Show when={local.closable ?? true}>
|
|
520
520
|
<Button
|
|
521
|
-
data-
|
|
521
|
+
data-dialog-close
|
|
522
522
|
size={"sm"}
|
|
523
523
|
variant={"ghost"}
|
|
524
|
-
aria-label={i18n
|
|
524
|
+
aria-label={i18n.t("dialog.close")}
|
|
525
525
|
onClick={handleCloseClick}
|
|
526
526
|
>
|
|
527
527
|
<Icon icon={IconX} />
|
|
@@ -531,7 +531,7 @@ export const Dialog: DialogComponent = (props) => {
|
|
|
531
531
|
</Show>
|
|
532
532
|
|
|
533
533
|
{/* Content */}
|
|
534
|
-
<div data-
|
|
534
|
+
<div data-dialog-content class={dialogContentClass}>
|
|
535
535
|
{local.children}
|
|
536
536
|
</div>
|
|
537
537
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Dialog z-index registry
|
|
3
3
|
*
|
|
4
4
|
* Manages z-index of open Dialogs to prevent infinite increase.
|
|
5
|
-
* Base starting value is 2000 (same as tailwind z-
|
|
5
|
+
* Base starting value is 2000 (same as tailwind z-dialog), uses only as many as there are open Dialogs.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
const BASE_Z = 2000;
|
|
@@ -22,7 +22,7 @@ import { createTopbarActions, TopbarContext } from "../../layout/topbar/TopbarCo
|
|
|
22
22
|
import { useDialogInstance } from "../../disclosure/DialogInstanceContext";
|
|
23
23
|
import { Dialog } from "../../disclosure/Dialog";
|
|
24
24
|
import { createEventListener } from "@solid-primitives/event-listener";
|
|
25
|
-
import {
|
|
25
|
+
import { useI18n } from "../../../providers/i18n/I18nContext";
|
|
26
26
|
import clsx from "clsx";
|
|
27
27
|
import {
|
|
28
28
|
IconCheck,
|
|
@@ -64,11 +64,11 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
64
64
|
]);
|
|
65
65
|
|
|
66
66
|
const noti = useNotification();
|
|
67
|
-
const i18n =
|
|
67
|
+
const i18n = useI18n();
|
|
68
68
|
const topbarCtx = useContext(TopbarContext);
|
|
69
69
|
const dialogInstance = useDialogInstance<boolean>();
|
|
70
70
|
|
|
71
|
-
const
|
|
71
|
+
const isInDialog = dialogInstance !== undefined;
|
|
72
72
|
|
|
73
73
|
const canEdit = () => local.editable ?? true;
|
|
74
74
|
|
|
@@ -96,7 +96,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
96
96
|
originalData = objClone(result.data);
|
|
97
97
|
setInfo(result.info);
|
|
98
98
|
} catch (err) {
|
|
99
|
-
noti.error(err, i18n
|
|
99
|
+
noti.error(err, i18n.t("crudDetail.lookupFailed"));
|
|
100
100
|
}
|
|
101
101
|
setBusyCount((c) => c - 1);
|
|
102
102
|
setReady(true);
|
|
@@ -119,7 +119,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
119
119
|
// -- Refresh --
|
|
120
120
|
async function handleRefresh() {
|
|
121
121
|
if (hasChanges()) {
|
|
122
|
-
if (!confirm(i18n
|
|
122
|
+
if (!confirm(i18n.t("crudDetail.discardChanges"))) return;
|
|
123
123
|
}
|
|
124
124
|
await doLoad();
|
|
125
125
|
}
|
|
@@ -131,7 +131,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
131
131
|
|
|
132
132
|
const currentInfo = info();
|
|
133
133
|
if (currentInfo && !currentInfo.isNew && !hasChanges()) {
|
|
134
|
-
noti.info(i18n
|
|
134
|
+
noti.info(i18n.t("crudDetail.notice"), i18n.t("crudDetail.noChanges"));
|
|
135
135
|
return;
|
|
136
136
|
}
|
|
137
137
|
|
|
@@ -139,7 +139,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
139
139
|
try {
|
|
140
140
|
const result = await local.submit(objClone(unwrap(data)));
|
|
141
141
|
if (result) {
|
|
142
|
-
noti.success(i18n
|
|
142
|
+
noti.success(i18n.t("crudDetail.saveCompleted"), i18n.t("crudDetail.saveSuccess"));
|
|
143
143
|
if (dialogInstance) {
|
|
144
144
|
dialogInstance.close(true);
|
|
145
145
|
} else {
|
|
@@ -147,7 +147,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
} catch (err) {
|
|
150
|
-
noti.error(err, i18n
|
|
150
|
+
noti.error(err, i18n.t("crudDetail.saveFailed"));
|
|
151
151
|
}
|
|
152
152
|
setBusyCount((c) => c - 1);
|
|
153
153
|
}
|
|
@@ -171,7 +171,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
171
171
|
try {
|
|
172
172
|
const result = await local.toggleDelete(del);
|
|
173
173
|
if (result) {
|
|
174
|
-
noti.success(del ?
|
|
174
|
+
noti.success(del ? i18n.t("crudDetail.deleteCompleted") : i18n.t("crudDetail.restoreCompleted"), del ? i18n.t("crudDetail.deleteSuccess") : i18n.t("crudDetail.restoreSuccess"));
|
|
175
175
|
if (dialogInstance) {
|
|
176
176
|
dialogInstance.close(true);
|
|
177
177
|
} else {
|
|
@@ -179,7 +179,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
} catch (err) {
|
|
182
|
-
noti.error(err, del ?
|
|
182
|
+
noti.error(err, del ? i18n.t("crudDetail.deleteFailed") : i18n.t("crudDetail.restoreFailed"));
|
|
183
183
|
}
|
|
184
184
|
setBusyCount((c) => c - 1);
|
|
185
185
|
}
|
|
@@ -211,7 +211,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
211
211
|
onClick={() => formRef?.requestSubmit()}
|
|
212
212
|
>
|
|
213
213
|
<Icon icon={IconDeviceFloppy} class="mr-1" />
|
|
214
|
-
{i18n
|
|
214
|
+
{i18n.t("crudDetail.save")}
|
|
215
215
|
</Button>
|
|
216
216
|
</Show>
|
|
217
217
|
<Show
|
|
@@ -227,13 +227,13 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
227
227
|
onClick={() => void handleToggleDelete()}
|
|
228
228
|
>
|
|
229
229
|
<Icon icon={info()!.isDeleted ? IconTrashOff : IconTrash} class="mr-1" />
|
|
230
|
-
{info()!.isDeleted ?
|
|
230
|
+
{info()!.isDeleted ? i18n.t("crudDetail.restore") : i18n.t("crudDetail.delete")}
|
|
231
231
|
</Button>
|
|
232
232
|
)}
|
|
233
233
|
</Show>
|
|
234
234
|
<Button size="lg" variant="ghost" theme="info" onClick={() => void handleRefresh()}>
|
|
235
235
|
<Icon icon={IconRefresh} class="mr-1" />
|
|
236
|
-
{i18n
|
|
236
|
+
{i18n.t("crudDetail.refresh")}
|
|
237
237
|
</Button>
|
|
238
238
|
</>
|
|
239
239
|
));
|
|
@@ -272,8 +272,8 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
272
272
|
// -- Render --
|
|
273
273
|
return (
|
|
274
274
|
<>
|
|
275
|
-
{/*
|
|
276
|
-
<Show when={
|
|
275
|
+
{/* Dialog mode: Dialog.Action (refresh button in header) */}
|
|
276
|
+
<Show when={isInDialog}>
|
|
277
277
|
<Dialog.Action>
|
|
278
278
|
<Button size={"sm"} variant={"ghost"} onClick={() => void handleRefresh()}>
|
|
279
279
|
<Icon icon={IconRefresh} />
|
|
@@ -287,9 +287,9 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
287
287
|
class={clsx("flex h-full flex-col gap-2", local.class)}
|
|
288
288
|
>
|
|
289
289
|
{/* Toolbar */}
|
|
290
|
-
<Show when={(!
|
|
290
|
+
<Show when={(!isInDialog && !topbarCtx) || defs().tools}>
|
|
291
291
|
<div class="flex gap-2 pb-0">
|
|
292
|
-
<Show when={!topbarCtx && !
|
|
292
|
+
<Show when={!topbarCtx && !isInDialog}>
|
|
293
293
|
<Show when={canEdit() && local.submit}>
|
|
294
294
|
<Button
|
|
295
295
|
size="sm"
|
|
@@ -298,7 +298,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
298
298
|
onClick={() => formRef?.requestSubmit()}
|
|
299
299
|
>
|
|
300
300
|
<Icon icon={IconDeviceFloppy} class="mr-1" />
|
|
301
|
-
{i18n
|
|
301
|
+
{i18n.t("crudDetail.save")}
|
|
302
302
|
</Button>
|
|
303
303
|
</Show>
|
|
304
304
|
<Show
|
|
@@ -318,13 +318,13 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
318
318
|
onClick={() => void handleToggleDelete()}
|
|
319
319
|
>
|
|
320
320
|
<Icon icon={info()!.isDeleted ? IconTrashOff : IconTrash} class="mr-1" />
|
|
321
|
-
{info()!.isDeleted ?
|
|
321
|
+
{info()!.isDeleted ? i18n.t("crudDetail.restore") : i18n.t("crudDetail.delete")}
|
|
322
322
|
</Button>
|
|
323
323
|
)}
|
|
324
324
|
</Show>
|
|
325
325
|
<Button size="sm" theme="info" variant="ghost" onClick={() => void handleRefresh()}>
|
|
326
326
|
<Icon icon={IconRefresh} class="mr-1" />
|
|
327
|
-
{i18n
|
|
327
|
+
{i18n.t("crudDetail.refresh")}
|
|
328
328
|
</Button>
|
|
329
329
|
</Show>
|
|
330
330
|
<Show when={defs().tools}>{(toolsDef) => toolsDef().children}</Show>
|
|
@@ -343,7 +343,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
343
343
|
<Show when={info()?.lastModifiedAt}>
|
|
344
344
|
{(_) => (
|
|
345
345
|
<div class="px-2 pb-1 text-xs text-base-400">
|
|
346
|
-
{i18n
|
|
346
|
+
{i18n.t("crudDetail.lastModified")}: {info()!.lastModifiedAt!.toFormatString("yyyy-MM-dd HH:mm")}
|
|
347
347
|
<Show when={info()?.lastModifiedBy}> ({info()!.lastModifiedBy})</Show>
|
|
348
348
|
</div>
|
|
349
349
|
)}
|
|
@@ -352,8 +352,8 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
352
352
|
{/* After (outside form) */}
|
|
353
353
|
<Show when={defs().after}>{(afterDef) => afterDef().children}</Show>
|
|
354
354
|
|
|
355
|
-
{/*
|
|
356
|
-
<Show when={
|
|
355
|
+
{/* Dialog mode: bottom bar */}
|
|
356
|
+
<Show when={isInDialog && canEdit()}>
|
|
357
357
|
<div class="flex gap-2 border-t border-base-200 px-3 py-1.5">
|
|
358
358
|
<div class="flex-1" />
|
|
359
359
|
<Show
|
|
@@ -362,7 +362,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
362
362
|
{(_) => (
|
|
363
363
|
<Button variant={"solid"} theme="danger" onClick={() => void handleToggleDelete()}>
|
|
364
364
|
<Icon icon={info()!.isDeleted ? IconTrashOff : IconTrash} class="mr-1" />
|
|
365
|
-
{info()!.isDeleted ?
|
|
365
|
+
{info()!.isDeleted ? i18n.t("crudDetail.restore") : i18n.t("crudDetail.delete")}
|
|
366
366
|
</Button>
|
|
367
367
|
)}
|
|
368
368
|
</Show>
|
|
@@ -374,7 +374,7 @@ const CrudDetailBase = <TData extends object>(props: CrudDetailProps<TData>) =>
|
|
|
374
374
|
class={"gap-1"}
|
|
375
375
|
>
|
|
376
376
|
<Icon icon={IconCheck} />
|
|
377
|
-
{i18n
|
|
377
|
+
{i18n.t("crudDetail.confirm")}
|
|
378
378
|
</Button>
|
|
379
379
|
</Show>
|
|
380
380
|
</div>
|