@simplysm/solid 13.0.76 → 13.0.77
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 +9 -10
- package/dist/components/data/kanban/Kanban.d.ts +31 -38
- package/dist/components/data/kanban/Kanban.d.ts.map +1 -1
- package/dist/components/data/kanban/Kanban.js.map +1 -1
- package/dist/components/data/list/List.d.ts +7 -28
- package/dist/components/data/list/List.d.ts.map +1 -1
- package/dist/components/data/list/List.js +3 -2
- package/dist/components/data/list/List.js.map +2 -2
- package/dist/components/data/sheet/DataSheet.d.ts +3 -8
- package/dist/components/data/sheet/DataSheet.d.ts.map +1 -1
- package/dist/components/data/sheet/DataSheet.js +305 -418
- package/dist/components/data/sheet/DataSheet.js.map +2 -2
- package/dist/components/data/sheet/{types.d.ts → DataSheet.types.d.ts} +9 -3
- package/dist/components/data/sheet/DataSheet.types.d.ts.map +1 -0
- package/dist/components/data/sheet/DataSheet.types.js +1 -0
- package/dist/components/data/sheet/{sheetUtils.d.ts → DataSheet.utils.d.ts} +2 -2
- package/dist/components/data/sheet/DataSheet.utils.d.ts.map +1 -0
- package/dist/components/data/sheet/{sheetUtils.js → DataSheet.utils.js} +3 -3
- package/dist/components/data/sheet/DataSheet.utils.js.map +6 -0
- package/dist/components/data/sheet/DataSheetColumn.d.ts +1 -1
- package/dist/components/data/sheet/DataSheetColumn.d.ts.map +1 -1
- package/dist/components/data/sheet/DataSheetConfigDialog.d.ts +1 -1
- package/dist/components/data/sheet/DataSheetConfigDialog.d.ts.map +1 -1
- package/dist/components/data/sheet/hooks/useDataSheetExpansion.d.ts +1 -1
- package/dist/components/data/sheet/hooks/useDataSheetExpansion.d.ts.map +1 -1
- package/dist/components/data/sheet/hooks/useDataSheetExpansion.js +1 -1
- package/dist/components/data/sheet/hooks/useDataSheetFixedColumns.d.ts +2 -2
- package/dist/components/data/sheet/hooks/useDataSheetFixedColumns.d.ts.map +1 -1
- package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.d.ts +27 -0
- package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.js +173 -0
- package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.js.map +6 -0
- package/dist/components/data/sheet/hooks/useDataSheetReorder.d.ts +1 -2
- package/dist/components/data/sheet/hooks/useDataSheetReorder.d.ts.map +1 -1
- package/dist/components/data/sheet/hooks/useDataSheetReorder.js.map +1 -1
- package/dist/components/data/sheet/hooks/useDataSheetSelection.d.ts +2 -2
- package/dist/components/data/sheet/hooks/useDataSheetSelection.d.ts.map +1 -1
- package/dist/components/data/sheet/hooks/useDataSheetSelection.js +2 -2
- package/dist/components/data/sheet/hooks/useDataSheetSelection.js.map +1 -1
- package/dist/components/data/sheet/hooks/useDataSheetSorting.d.ts +1 -1
- package/dist/components/data/sheet/hooks/useDataSheetSorting.d.ts.map +1 -1
- package/dist/components/data/sheet/hooks/useDataSheetSorting.js +1 -1
- package/dist/components/disclosure/Dialog.d.ts +6 -10
- package/dist/components/disclosure/Dialog.d.ts.map +1 -1
- package/dist/components/disclosure/Dialog.js +11 -14
- package/dist/components/disclosure/Dialog.js.map +2 -2
- package/dist/components/disclosure/Dropdown.d.ts +8 -12
- 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 +3 -5
- package/dist/components/disclosure/Tabs.d.ts.map +1 -1
- package/dist/components/disclosure/Tabs.js.map +1 -1
- package/dist/components/display/Barcode.d.ts +1 -1
- package/dist/components/display/Barcode.d.ts.map +1 -1
- package/dist/components/display/Barcode.js +2 -1
- package/dist/components/display/Barcode.js.map +2 -2
- package/dist/components/display/Barcode.types.d.ts +2 -0
- package/dist/components/display/Barcode.types.d.ts.map +1 -0
- package/dist/components/display/Barcode.types.js +1 -0
- package/dist/components/display/Echarts.d.ts +2 -2
- package/dist/components/display/Echarts.d.ts.map +1 -1
- package/dist/components/display/Echarts.js +7 -8
- package/dist/components/display/Echarts.js.map +2 -2
- package/dist/components/features/address/AddressSearch.d.ts.map +1 -1
- package/dist/components/features/address/AddressSearch.js +4 -1
- package/dist/components/features/address/AddressSearch.js.map +2 -2
- package/dist/components/features/crud-detail/CrudDetail.d.ts +12 -13
- package/dist/components/features/crud-detail/CrudDetail.d.ts.map +1 -1
- package/dist/components/features/crud-detail/CrudDetail.js +18 -15
- package/dist/components/features/crud-detail/CrudDetail.js.map +2 -2
- package/dist/components/features/crud-detail/{types.d.ts → CrudDetail.types.d.ts} +1 -1
- package/dist/components/features/crud-detail/CrudDetail.types.d.ts.map +1 -0
- package/dist/components/features/crud-detail/CrudDetail.types.js +1 -0
- package/dist/components/features/crud-sheet/CrudSheet.d.ts +3 -13
- package/dist/components/features/crud-sheet/CrudSheet.d.ts.map +1 -1
- package/dist/components/features/crud-sheet/CrudSheet.js +62 -73
- package/dist/components/features/crud-sheet/CrudSheet.js.map +2 -2
- package/dist/components/features/crud-sheet/{types.d.ts → CrudSheet.types.d.ts} +10 -10
- package/dist/components/features/crud-sheet/CrudSheet.types.d.ts.map +1 -0
- package/dist/components/features/crud-sheet/CrudSheet.types.js +1 -0
- package/dist/components/features/crud-sheet/CrudSheet.types.js.map +6 -0
- package/dist/components/features/crud-sheet/CrudSheetColumn.d.ts +1 -1
- package/dist/components/features/crud-sheet/CrudSheetColumn.d.ts.map +1 -1
- package/dist/components/features/crud-sheet/CrudSheetTools.d.ts +1 -1
- package/dist/components/features/crud-sheet/CrudSheetTools.d.ts.map +1 -1
- package/dist/components/features/data-select-button/DataSelectButton.d.ts +2 -2
- package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -1
- package/dist/components/features/data-select-button/DataSelectButton.js +3 -3
- package/dist/components/features/data-select-button/DataSelectButton.js.map +2 -2
- package/dist/components/features/shared-data/SharedDataSelect.d.ts +7 -11
- package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -1
- package/dist/components/features/shared-data/SharedDataSelect.js +5 -4
- package/dist/components/features/shared-data/SharedDataSelect.js.map +2 -2
- 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.d.ts +8 -15
- package/dist/components/features/shared-data/SharedDataSelectList.d.ts.map +1 -1
- package/dist/components/features/shared-data/SharedDataSelectList.js +5 -3
- package/dist/components/features/shared-data/SharedDataSelectList.js.map +2 -2
- package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -1
- package/dist/components/feedback/notification/NotificationProvider.js +9 -1
- package/dist/components/feedback/notification/NotificationProvider.js.map +2 -2
- package/dist/components/feedback/print/Print.d.ts +4 -6
- package/dist/components/feedback/print/Print.d.ts.map +1 -1
- package/dist/components/feedback/print/Print.js +3 -2
- package/dist/components/feedback/print/Print.js.map +2 -2
- package/dist/components/feedback/print/PrintProvider.d.ts.map +1 -1
- package/dist/components/feedback/print/PrintProvider.js +1 -0
- package/dist/components/feedback/print/PrintProvider.js.map +1 -1
- package/dist/components/form-control/Invalid.d.ts +1 -1
- package/dist/components/form-control/Invalid.d.ts.map +1 -1
- package/dist/components/form-control/Invalid.js +27 -26
- package/dist/components/form-control/Invalid.js.map +2 -2
- package/dist/components/form-control/checkbox/Checkbox.d.ts +1 -1
- package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/CheckboxGroup.d.ts +10 -10
- package/dist/components/form-control/checkbox/CheckboxGroup.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/CheckboxGroup.js +2 -2
- package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -2
- package/dist/components/form-control/checkbox/Radio.d.ts +1 -1
- package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/RadioGroup.d.ts +10 -10
- package/dist/components/form-control/checkbox/RadioGroup.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/RadioGroup.js +2 -2
- package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -2
- package/dist/components/form-control/checkbox/SelectableBase.d.ts +1 -1
- package/dist/components/form-control/checkbox/SelectableBase.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/SelectableBase.js +3 -3
- package/dist/components/form-control/checkbox/SelectableBase.js.map +2 -2
- package/dist/components/form-control/checkbox/SelectionGroupBase.d.ts +1 -1
- package/dist/components/form-control/checkbox/SelectionGroupBase.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/SelectionGroupBase.js +3 -3
- package/dist/components/form-control/checkbox/SelectionGroupBase.js.map +2 -2
- package/dist/components/form-control/color-picker/ColorPicker.d.ts +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 -3
- package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
- package/dist/components/form-control/combobox/Combobox.d.ts +3 -3
- package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/form-control/combobox/Combobox.js +10 -5
- package/dist/components/form-control/combobox/Combobox.js.map +2 -2
- package/dist/components/form-control/date-range-picker/DateRangePicker.js +4 -4
- package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
- package/dist/components/form-control/editor/EditorToolbar.d.ts.map +1 -1
- package/dist/components/form-control/editor/EditorToolbar.js +176 -312
- package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
- package/dist/components/form-control/field/DatePicker.d.ts +2 -2
- package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
- package/dist/components/form-control/field/DatePicker.js +3 -3
- package/dist/components/form-control/field/DatePicker.js.map +2 -2
- package/dist/components/form-control/field/DateTimePicker.d.ts +2 -2
- package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
- package/dist/components/form-control/field/DateTimePicker.js +3 -3
- package/dist/components/form-control/field/DateTimePicker.js.map +2 -2
- package/dist/components/form-control/field/FieldShell.d.ts +1 -1
- package/dist/components/form-control/field/FieldShell.d.ts.map +1 -1
- package/dist/components/form-control/field/FieldShell.js +2 -2
- package/dist/components/form-control/field/FieldShell.js.map +2 -2
- package/dist/components/form-control/field/NumberInput.d.ts +7 -28
- package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
- package/dist/components/form-control/field/NumberInput.js +7 -5
- package/dist/components/form-control/field/NumberInput.js.map +2 -2
- package/dist/components/form-control/field/TextInput.d.ts +7 -23
- package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
- package/dist/components/form-control/field/TextInput.js +6 -5
- package/dist/components/form-control/field/TextInput.js.map +2 -2
- package/dist/components/form-control/field/Textarea.d.ts +2 -2
- package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
- package/dist/components/form-control/field/Textarea.js +3 -3
- package/dist/components/form-control/field/Textarea.js.map +2 -2
- package/dist/components/form-control/field/TimePicker.d.ts +2 -2
- package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
- package/dist/components/form-control/field/TimePicker.js +3 -3
- package/dist/components/form-control/field/TimePicker.js.map +2 -2
- package/dist/components/form-control/select/Select.d.ts +22 -44
- package/dist/components/form-control/select/Select.d.ts.map +1 -1
- package/dist/components/form-control/select/Select.js +8 -6
- package/dist/components/form-control/select/Select.js.map +2 -2
- package/dist/components/form-control/state-preset/StatePreset.js +5 -5
- package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
- package/dist/components/layout/sidebar/Sidebar.d.ts +5 -102
- package/dist/components/layout/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/components/layout/sidebar/Sidebar.js.map +1 -1
- package/dist/components/layout/topbar/Topbar.d.ts +1 -1
- package/dist/components/layout/topbar/Topbar.d.ts.map +1 -1
- package/dist/components/layout/topbar/Topbar.js +3 -3
- package/dist/components/layout/topbar/Topbar.js.map +2 -2
- package/dist/helpers/createAppStructure.d.ts.map +1 -1
- package/dist/helpers/createAppStructure.js.map +1 -1
- package/dist/hooks/createControllableStore.js +5 -5
- package/dist/hooks/createControllableStore.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/ServiceClientProvider.d.ts +2 -2
- package/dist/providers/ServiceClientProvider.d.ts.map +1 -1
- package/dist/providers/ServiceClientProvider.js.map +1 -1
- package/dist/providers/shared-data/SharedDataProvider.d.ts +1 -1
- package/dist/providers/shared-data/SharedDataProvider.d.ts.map +1 -1
- package/dist/providers/shared-data/SharedDataProvider.js +98 -86
- package/dist/providers/shared-data/SharedDataProvider.js.map +2 -2
- package/package.json +5 -5
- package/src/components/data/kanban/Kanban.tsx +37 -32
- package/src/components/data/list/List.tsx +3 -6
- package/src/components/data/sheet/DataSheet.tsx +224 -334
- package/src/components/data/sheet/{types.ts → DataSheet.types.ts} +8 -2
- package/src/components/data/sheet/{sheetUtils.ts → DataSheet.utils.ts} +3 -3
- package/src/components/data/sheet/DataSheetColumn.tsx +1 -1
- package/src/components/data/sheet/DataSheetConfigDialog.tsx +1 -1
- package/src/components/data/sheet/hooks/useDataSheetExpansion.ts +2 -2
- package/src/components/data/sheet/hooks/useDataSheetFixedColumns.ts +2 -2
- package/src/components/data/sheet/hooks/useDataSheetHeaderCell.tsx +168 -0
- package/src/components/data/sheet/hooks/useDataSheetReorder.ts +1 -2
- package/src/components/data/sheet/hooks/useDataSheetSelection.ts +4 -4
- package/src/components/data/sheet/hooks/useDataSheetSorting.ts +2 -2
- package/src/components/disclosure/Dialog.tsx +21 -27
- package/src/components/disclosure/Dropdown.tsx +1 -6
- package/src/components/disclosure/Tabs.tsx +1 -6
- package/src/components/display/Barcode.tsx +4 -113
- package/src/components/display/Barcode.types.ts +111 -0
- package/src/components/display/Echarts.tsx +10 -11
- package/src/components/features/address/AddressSearch.tsx +21 -3
- package/src/components/features/crud-detail/CrudDetail.tsx +21 -38
- package/src/components/features/crud-sheet/CrudSheet.tsx +77 -93
- package/src/components/features/crud-sheet/{types.ts → CrudSheet.types.ts} +9 -9
- package/src/components/features/crud-sheet/CrudSheetColumn.tsx +1 -1
- package/src/components/features/crud-sheet/CrudSheetTools.tsx +1 -1
- package/src/components/features/data-select-button/DataSelectButton.tsx +8 -8
- package/src/components/features/shared-data/SharedDataSelect.tsx +23 -34
- package/src/components/features/shared-data/SharedDataSelectButton.tsx +1 -4
- package/src/components/features/shared-data/SharedDataSelectList.tsx +6 -10
- package/src/components/feedback/notification/NotificationProvider.tsx +9 -1
- package/src/components/feedback/print/Print.tsx +4 -8
- package/src/components/feedback/print/PrintProvider.tsx +2 -1
- package/src/components/form-control/Invalid.tsx +33 -29
- package/src/components/form-control/checkbox/Checkbox.tsx +1 -1
- package/src/components/form-control/checkbox/CheckboxGroup.tsx +3 -12
- package/src/components/form-control/checkbox/Radio.tsx +1 -1
- package/src/components/form-control/checkbox/RadioGroup.tsx +3 -12
- package/src/components/form-control/checkbox/SelectableBase.tsx +3 -3
- package/src/components/form-control/checkbox/SelectionGroupBase.tsx +3 -3
- package/src/components/form-control/color-picker/ColorPicker.tsx +4 -4
- package/src/components/form-control/combobox/Combobox.tsx +23 -18
- package/src/components/form-control/date-range-picker/DateRangePicker.tsx +5 -5
- package/src/components/form-control/editor/EditorToolbar.tsx +82 -202
- package/src/components/form-control/field/DatePicker.tsx +4 -4
- package/src/components/form-control/field/DateTimePicker.tsx +4 -4
- package/src/components/form-control/field/FieldShell.tsx +2 -2
- package/src/components/form-control/field/NumberInput.tsx +8 -11
- package/src/components/form-control/field/TextInput.tsx +7 -11
- package/src/components/form-control/field/Textarea.tsx +4 -4
- package/src/components/form-control/field/TimePicker.tsx +4 -4
- package/src/components/form-control/select/Select.tsx +33 -42
- package/src/components/form-control/state-preset/StatePreset.tsx +5 -5
- package/src/components/layout/sidebar/Sidebar.tsx +1 -7
- package/src/components/layout/topbar/Topbar.tsx +3 -3
- package/src/helpers/createAppStructure.ts +16 -0
- package/src/hooks/createControllableStore.ts +5 -5
- package/src/index.ts +4 -3
- package/src/providers/ServiceClientProvider.tsx +4 -4
- package/src/providers/shared-data/SharedDataProvider.tsx +136 -113
- package/tests/components/data/sheet/DataSheet.spec.tsx +2 -2
- package/tests/components/data/sheet/hooks/useDataSheetFixedColumns.spec.ts +1 -1
- package/tests/components/data/sheet/hooks/useDataSheetSelection.spec.ts +34 -17
- package/tests/components/data/sheet/hooks/useDataSheetSorting.spec.ts +1 -1
- package/tests/components/disclosure/Dialog.spec.tsx +7 -7
- package/tests/components/display/Barcode.spec.tsx +15 -1
- package/tests/components/features/crud-sheet/CrudSheet.spec.tsx +6 -6
- package/tests/components/form-control/Invalid.spec.tsx +5 -5
- package/tests/components/form-control/combobox/Combobox.spec.tsx +24 -1
- package/tests/components/layout/topbar/TopbarActions.spec.tsx +4 -4
- package/tests/components/layout/topbar/{createTopbarActions.spec.tsx → useTopbarActions.spec.tsx} +4 -4
- package/tests/providers/shared-data/SharedDataProvider.spec.tsx +130 -8
- package/dist/components/data/sheet/sheetUtils.d.ts.map +0 -1
- package/dist/components/data/sheet/sheetUtils.js.map +0 -6
- package/dist/components/data/sheet/types.d.ts.map +0 -1
- package/dist/components/data/sheet/types.js +0 -1
- package/dist/components/features/crud-detail/types.d.ts.map +0 -1
- package/dist/components/features/crud-detail/types.js +0 -1
- package/dist/components/features/crud-sheet/types.d.ts.map +0 -1
- package/dist/components/features/crud-sheet/types.js +0 -1
- package/dist/components/feedback/notification/index.d.ts +0 -4
- package/dist/components/feedback/notification/index.d.ts.map +0 -1
- package/dist/components/feedback/notification/index.js +0 -4
- package/dist/components/feedback/notification/index.js.map +0 -6
- package/src/components/feedback/notification/index.ts +0 -3
- /package/dist/components/data/sheet/{types.js.map → DataSheet.types.js.map} +0 -0
- /package/dist/components/{features/crud-detail/types.js.map → display/Barcode.types.js.map} +0 -0
- /package/dist/components/features/{crud-sheet/types.js.map → crud-detail/CrudDetail.types.js.map} +0 -0
- /package/src/components/features/crud-detail/{types.ts → CrudDetail.types.ts} +0 -0
|
@@ -144,10 +144,6 @@ export interface SelectItemProps<TValue = unknown> extends Omit<
|
|
|
144
144
|
disabled?: boolean;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
interface SelectItemComponent<TValue = unknown> extends ParentComponent<SelectItemProps<TValue>> {
|
|
148
|
-
Children: typeof SelectItemChildren;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
147
|
/**
|
|
152
148
|
* Selectable item within Select dropdown
|
|
153
149
|
*
|
|
@@ -164,12 +160,12 @@ interface SelectItemComponent<TValue = unknown> extends ParentComponent<SelectIt
|
|
|
164
160
|
* </Select.Item>
|
|
165
161
|
* ```
|
|
166
162
|
*/
|
|
167
|
-
const
|
|
168
|
-
props: SelectItemProps<
|
|
163
|
+
const SelectItemInner = <TValue,>(
|
|
164
|
+
props: SelectItemProps<TValue> & { children?: JSX.Element },
|
|
169
165
|
) => {
|
|
170
166
|
const [local, rest] = splitProps(props, ["children", "class", "value", "disabled"]);
|
|
171
167
|
|
|
172
|
-
const context = useSelectContext<
|
|
168
|
+
const context = useSelectContext<TValue>();
|
|
173
169
|
|
|
174
170
|
const [childrenSlot, ItemChildrenProvider] = createItemChildrenSlotAccessor();
|
|
175
171
|
const hasChildren = () => childrenSlot() !== undefined;
|
|
@@ -231,7 +227,9 @@ const SelectItem: SelectItemComponent = <T,>(
|
|
|
231
227
|
);
|
|
232
228
|
};
|
|
233
229
|
|
|
234
|
-
SelectItem
|
|
230
|
+
const SelectItem = Object.assign(SelectItemInner, {
|
|
231
|
+
Children: SelectItemChildren,
|
|
232
|
+
});
|
|
235
233
|
|
|
236
234
|
//#endregion
|
|
237
235
|
|
|
@@ -257,8 +255,8 @@ interface SelectCommonProps<TValue = unknown> {
|
|
|
257
255
|
/** Custom validation function */
|
|
258
256
|
validate?: (value: unknown) => string | undefined;
|
|
259
257
|
|
|
260
|
-
/**
|
|
261
|
-
|
|
258
|
+
/** lazyValidation: Show error only after blur */
|
|
259
|
+
lazyValidation?: boolean;
|
|
262
260
|
|
|
263
261
|
/** Search text extraction function (shows search input when set) */
|
|
264
262
|
itemSearchText?: (item: TValue) => string;
|
|
@@ -282,10 +280,10 @@ interface SelectSingleBaseProps<TValue> extends SelectCommonProps<TValue> {
|
|
|
282
280
|
value?: TValue;
|
|
283
281
|
|
|
284
282
|
/** Value change callback */
|
|
285
|
-
onValueChange?: (value: TValue) => void;
|
|
283
|
+
onValueChange?: (value: TValue | undefined) => void;
|
|
286
284
|
|
|
287
285
|
/** Display direction for multiple select (not used in single select) */
|
|
288
|
-
|
|
286
|
+
tagDirection?: never;
|
|
289
287
|
|
|
290
288
|
/** Hide select all button (not used in single select) */
|
|
291
289
|
hideSelectAll?: never;
|
|
@@ -303,7 +301,7 @@ interface SelectMultipleBaseProps<TValue> extends SelectCommonProps<TValue> {
|
|
|
303
301
|
onValueChange?: (value: TValue[]) => void;
|
|
304
302
|
|
|
305
303
|
/** Display direction for multiple select */
|
|
306
|
-
|
|
304
|
+
tagDirection?: "horizontal" | "vertical";
|
|
307
305
|
|
|
308
306
|
/** Hide select all button */
|
|
309
307
|
hideSelectAll?: boolean;
|
|
@@ -331,13 +329,6 @@ export type SelectProps<TValue = unknown> =
|
|
|
331
329
|
| (SelectMultipleBaseProps<TValue> & SelectWithItemsPropsBase<TValue>)
|
|
332
330
|
| (SelectMultipleBaseProps<TValue> & SelectWithChildrenPropsBase<TValue>);
|
|
333
331
|
|
|
334
|
-
interface SelectComponent {
|
|
335
|
-
<TValue = unknown>(props: SelectProps<TValue>): JSX.Element;
|
|
336
|
-
Item: typeof SelectItem;
|
|
337
|
-
Action: typeof SelectAction;
|
|
338
|
-
Header: typeof SelectHeader;
|
|
339
|
-
ItemTemplate: typeof SelectItemTemplate;
|
|
340
|
-
}
|
|
341
332
|
|
|
342
333
|
/**
|
|
343
334
|
* Select component
|
|
@@ -358,8 +349,8 @@ interface SelectComponent {
|
|
|
358
349
|
* </Select>
|
|
359
350
|
* ```
|
|
360
351
|
*/
|
|
361
|
-
const SelectInnerComponent = <
|
|
362
|
-
const [local, rest] = splitProps(props as SelectProps<
|
|
352
|
+
const SelectInnerComponent = <TValue,>(props: SelectProps<TValue>) => {
|
|
353
|
+
const [local, rest] = splitProps(props as SelectProps<TValue> & { children?: JSX.Element }, [
|
|
363
354
|
"children",
|
|
364
355
|
"class",
|
|
365
356
|
"style",
|
|
@@ -371,13 +362,13 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
371
362
|
"placeholder",
|
|
372
363
|
"size",
|
|
373
364
|
"inset",
|
|
374
|
-
"
|
|
365
|
+
"tagDirection",
|
|
375
366
|
"hideSelectAll",
|
|
376
367
|
"items",
|
|
377
368
|
"itemChildren",
|
|
378
369
|
"renderValue",
|
|
379
370
|
"validate",
|
|
380
|
-
"
|
|
371
|
+
"lazyValidation",
|
|
381
372
|
"itemSearchText",
|
|
382
373
|
"isItemHidden",
|
|
383
374
|
]);
|
|
@@ -396,14 +387,14 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
396
387
|
});
|
|
397
388
|
|
|
398
389
|
// Manage selected value (controlled/uncontrolled pattern)
|
|
399
|
-
type ValueType =
|
|
390
|
+
type ValueType = TValue | TValue[] | undefined;
|
|
400
391
|
const [value, setValue] = createControllableSignal<ValueType>({
|
|
401
392
|
value: () => local.value,
|
|
402
393
|
onChange: () => local.onValueChange as ((v: ValueType) => void) | undefined,
|
|
403
394
|
} as Parameters<typeof createControllableSignal<ValueType>>[0]);
|
|
404
395
|
|
|
405
396
|
// Check if value is selected
|
|
406
|
-
const isSelected = (itemValue:
|
|
397
|
+
const isSelected = (itemValue: TValue): boolean => {
|
|
407
398
|
const current = value();
|
|
408
399
|
if (current === undefined) return false;
|
|
409
400
|
|
|
@@ -414,9 +405,9 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
414
405
|
};
|
|
415
406
|
|
|
416
407
|
// Toggle value
|
|
417
|
-
const toggleValue = (itemValue:
|
|
408
|
+
const toggleValue = (itemValue: TValue) => {
|
|
418
409
|
if (local.multiple) {
|
|
419
|
-
const current = (value() as
|
|
410
|
+
const current = (value() as TValue[] | undefined) ?? [];
|
|
420
411
|
const idx = current.indexOf(itemValue);
|
|
421
412
|
if (idx >= 0) {
|
|
422
413
|
setValue([...current.slice(0, idx), ...current.slice(idx + 1)]);
|
|
@@ -443,7 +434,7 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
443
434
|
_setItemTemplate(() => fn);
|
|
444
435
|
|
|
445
436
|
// Context value
|
|
446
|
-
const contextValue: SelectContextValue<
|
|
437
|
+
const contextValue: SelectContextValue<TValue> = {
|
|
447
438
|
multiple: () => local.multiple ?? false,
|
|
448
439
|
isSelected,
|
|
449
440
|
toggleValue,
|
|
@@ -479,7 +470,7 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
479
470
|
});
|
|
480
471
|
|
|
481
472
|
// Search filtering (supports hierarchical structure)
|
|
482
|
-
const filteredItems = createMemo(():
|
|
473
|
+
const filteredItems = createMemo((): TValue[] | undefined => {
|
|
483
474
|
if (!local.items) return undefined;
|
|
484
475
|
if (!local.itemSearchText || !searchText()) return local.items;
|
|
485
476
|
|
|
@@ -487,7 +478,7 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
487
478
|
if (terms.length === 0) return local.items;
|
|
488
479
|
|
|
489
480
|
// Include parent when child matches in hierarchical structure
|
|
490
|
-
const matchesSearch = (item:
|
|
481
|
+
const matchesSearch = (item: TValue): boolean => {
|
|
491
482
|
const itemText = local.itemSearchText!(item).toLowerCase();
|
|
492
483
|
if (terms.every((t) => itemText.includes(t.toLowerCase()))) return true;
|
|
493
484
|
|
|
@@ -504,7 +495,7 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
504
495
|
});
|
|
505
496
|
|
|
506
497
|
// Items with hidden filter applied
|
|
507
|
-
const visibleItems = createMemo(():
|
|
498
|
+
const visibleItems = createMemo((): TValue[] | undefined => {
|
|
508
499
|
const items = filteredItems();
|
|
509
500
|
if (!items || !local.isItemHidden) return items;
|
|
510
501
|
|
|
@@ -526,7 +517,7 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
526
517
|
|
|
527
518
|
// Deselect all
|
|
528
519
|
const handleDeselectAll = () => {
|
|
529
|
-
setValue([] as
|
|
520
|
+
setValue([] as TValue[]);
|
|
530
521
|
};
|
|
531
522
|
|
|
532
523
|
// Inner component: resolve children inside Provider to trigger slot registration
|
|
@@ -536,13 +527,13 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
536
527
|
|
|
537
528
|
// Extract itemTemplate function
|
|
538
529
|
const getItemTemplate = ():
|
|
539
|
-
| ((item:
|
|
530
|
+
| ((item: TValue, index: number, depth: number) => JSX.Element)
|
|
540
531
|
| undefined => {
|
|
541
|
-
return itemTemplate() as ((item:
|
|
532
|
+
return itemTemplate() as ((item: TValue, index: number, depth: number) => JSX.Element) | undefined;
|
|
542
533
|
};
|
|
543
534
|
|
|
544
535
|
// Render items recursively
|
|
545
|
-
const renderItems = (itemList:
|
|
536
|
+
const renderItems = (itemList: TValue[], depth: number): JSX.Element => {
|
|
546
537
|
const tpl = getItemTemplate();
|
|
547
538
|
return (
|
|
548
539
|
<For each={itemList}>
|
|
@@ -578,7 +569,7 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
578
569
|
};
|
|
579
570
|
|
|
580
571
|
// Render selected value (reuse itemTemplate when in items mode)
|
|
581
|
-
const renderValue = (renderVal:
|
|
572
|
+
const renderValue = (renderVal: TValue): JSX.Element => {
|
|
582
573
|
if (local.renderValue) {
|
|
583
574
|
return local.renderValue(renderVal);
|
|
584
575
|
}
|
|
@@ -598,7 +589,7 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
598
589
|
}
|
|
599
590
|
|
|
600
591
|
if (local.multiple && Array.isArray(current)) {
|
|
601
|
-
const direction = local.
|
|
592
|
+
const direction = local.tagDirection ?? "horizontal";
|
|
602
593
|
return (
|
|
603
594
|
<div class={clsx("flex gap-1", direction === "vertical" ? "flex-col" : "flex-wrap")}>
|
|
604
595
|
<For each={current}>{(v) => <span class={clsx("rounded px-1", bg.subtle)}>{renderValue(v)}</span>}</For>
|
|
@@ -606,7 +597,7 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
606
597
|
);
|
|
607
598
|
}
|
|
608
599
|
|
|
609
|
-
return renderValue(current as
|
|
600
|
+
return renderValue(current as TValue);
|
|
610
601
|
};
|
|
611
602
|
|
|
612
603
|
// Show unset item: single select + not required + items mode
|
|
@@ -681,7 +672,7 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
681
672
|
<Show when={local.items} fallback={resolved()}>
|
|
682
673
|
{/* Unset item */}
|
|
683
674
|
<Show when={showUnsetItem()}>
|
|
684
|
-
<SelectItem value={undefined as
|
|
675
|
+
<SelectItem value={undefined as TValue}>
|
|
685
676
|
<span class={text.muted}>{i18n.t("select.unset")}</span>
|
|
686
677
|
</SelectItem>
|
|
687
678
|
</Show>
|
|
@@ -706,7 +697,7 @@ const SelectInnerComponent = <T,>(props: SelectProps<T>) => {
|
|
|
706
697
|
};
|
|
707
698
|
|
|
708
699
|
return (
|
|
709
|
-
<Invalid message={errorMsg()} variant="border"
|
|
700
|
+
<Invalid message={errorMsg()} variant="border" lazyValidation={local.lazyValidation}>
|
|
710
701
|
<SelectCtx.Provider value={contextValue as SelectContextValue}>
|
|
711
702
|
<HeaderProvider>
|
|
712
703
|
<ActionProvider>
|
|
@@ -724,5 +715,5 @@ export const Select = Object.assign(SelectInnerComponent, {
|
|
|
724
715
|
Header: SelectHeader,
|
|
725
716
|
Action: SelectAction,
|
|
726
717
|
ItemTemplate: SelectItemTemplate,
|
|
727
|
-
})
|
|
718
|
+
});
|
|
728
719
|
//#endregion
|
|
@@ -3,7 +3,7 @@ import type { JSX } from "solid-js";
|
|
|
3
3
|
import { twMerge } from "tailwind-merge";
|
|
4
4
|
import clsx from "clsx";
|
|
5
5
|
import { IconDeviceFloppy, IconStar, IconX } from "@tabler/icons-solidjs";
|
|
6
|
-
import {
|
|
6
|
+
import { obj } from "@simplysm/core-common";
|
|
7
7
|
import { useSyncConfig } from "../../../hooks/useSyncConfig";
|
|
8
8
|
import { useNotification } from "../../feedback/notification/NotificationProvider";
|
|
9
9
|
import { Icon } from "../../display/Icon";
|
|
@@ -119,7 +119,7 @@ function StatePresetInner<TValue>(props: StatePresetProps<TValue>): JSX.Element
|
|
|
119
119
|
|
|
120
120
|
const newPreset: StatePresetItem<TValue> = {
|
|
121
121
|
name,
|
|
122
|
-
state:
|
|
122
|
+
state: obj.clone(local.value),
|
|
123
123
|
};
|
|
124
124
|
setPresets([...presets(), newPreset]);
|
|
125
125
|
notification.info(i18n.t("statePreset.saved"), i18n.t("statePreset.savedMessage", { name }));
|
|
@@ -128,8 +128,8 @@ function StatePresetInner<TValue>(props: StatePresetProps<TValue>): JSX.Element
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
function handleRestore(preset: StatePresetItem<TValue>): void {
|
|
131
|
-
if (!
|
|
132
|
-
local.onValueChange(
|
|
131
|
+
if (!obj.equal(local.value, preset.state)) {
|
|
132
|
+
local.onValueChange(obj.clone(preset.state));
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
|
|
@@ -138,7 +138,7 @@ function StatePresetInner<TValue>(props: StatePresetProps<TValue>): JSX.Element
|
|
|
138
138
|
const presetName = snapshot[index].name;
|
|
139
139
|
|
|
140
140
|
const updated = snapshot.map((p, i) =>
|
|
141
|
-
i === index ? { ...p, state:
|
|
141
|
+
i === index ? { ...p, state: obj.clone(local.value) } : p,
|
|
142
142
|
);
|
|
143
143
|
setPresets(updated);
|
|
144
144
|
|
|
@@ -466,12 +466,6 @@ export interface SidebarProps extends JSX.HTMLAttributes<HTMLElement> {
|
|
|
466
466
|
* </Sidebar>
|
|
467
467
|
* ```
|
|
468
468
|
*/
|
|
469
|
-
interface SidebarComponent extends ParentComponent<SidebarProps> {
|
|
470
|
-
Container: typeof SidebarContainer;
|
|
471
|
-
Menu: typeof SidebarMenu;
|
|
472
|
-
User: typeof SidebarUser;
|
|
473
|
-
}
|
|
474
|
-
|
|
475
469
|
const SidebarInner: ParentComponent<SidebarProps> = (props) => {
|
|
476
470
|
const [local, rest] = splitProps(props, ["children", "class", "style"]);
|
|
477
471
|
|
|
@@ -518,6 +512,6 @@ export const Sidebar = Object.assign(SidebarInner, {
|
|
|
518
512
|
Container: SidebarContainer,
|
|
519
513
|
Menu: SidebarMenu,
|
|
520
514
|
User: SidebarUser,
|
|
521
|
-
})
|
|
515
|
+
});
|
|
522
516
|
|
|
523
517
|
//#endregion
|
|
@@ -43,10 +43,10 @@ export function useTopbarActionsAccessor(): Accessor<JSX.Element | undefined> {
|
|
|
43
43
|
return context.actions;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
export function
|
|
46
|
+
export function useTopbarActions(accessor: () => JSX.Element): void {
|
|
47
47
|
const context = useContext(TopbarContext);
|
|
48
48
|
if (!context) {
|
|
49
|
-
throw new Error("
|
|
49
|
+
throw new Error("useTopbarActions can only be used inside Topbar.Container");
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
context.setActions(() => accessor());
|
|
@@ -450,7 +450,7 @@ const TopbarUser: ParentComponent<TopbarUserProps> = (props) => {
|
|
|
450
450
|
*
|
|
451
451
|
* @remarks
|
|
452
452
|
* - Used inside TopbarContainer
|
|
453
|
-
* - Displays actions set by
|
|
453
|
+
* - Displays actions set by useTopbarActions()
|
|
454
454
|
*/
|
|
455
455
|
const TopbarActions: Component = () => {
|
|
456
456
|
const context = useContext(TopbarContext);
|
|
@@ -2,6 +2,7 @@ import type { Component, ParentComponent } from "solid-js";
|
|
|
2
2
|
import { type Accessor, createContext, createMemo, createRoot, useContext } from "solid-js";
|
|
3
3
|
import type { IconProps } from "@tabler/icons-solidjs";
|
|
4
4
|
|
|
5
|
+
//#region Types
|
|
5
6
|
// ── Input Types ──
|
|
6
7
|
|
|
7
8
|
export interface AppStructureGroupItem<TModule> {
|
|
@@ -80,7 +81,9 @@ export interface AppStructure<TModule> {
|
|
|
80
81
|
allFlatPerms: AppFlatPerm<TModule>[];
|
|
81
82
|
getTitleChainByHref(href: string): string[];
|
|
82
83
|
}
|
|
84
|
+
//#endregion
|
|
83
85
|
|
|
86
|
+
//#region Type Inference
|
|
84
87
|
// ── Perms Type Inference ──
|
|
85
88
|
|
|
86
89
|
type PermKey<TItem> = TItem extends { code: infer C extends string }
|
|
@@ -113,7 +116,9 @@ type InferPerms<TItems extends any[]> = {
|
|
|
113
116
|
? InferPerms<C>
|
|
114
117
|
: InferLeafPerms<Item>;
|
|
115
118
|
};
|
|
119
|
+
//#endregion
|
|
116
120
|
|
|
121
|
+
//#region Internal Helpers
|
|
117
122
|
// ── Internal Helpers ──
|
|
118
123
|
|
|
119
124
|
function isGroupItem<TModule>(
|
|
@@ -139,7 +144,9 @@ function checkModules<TModule>(
|
|
|
139
144
|
|
|
140
145
|
return true;
|
|
141
146
|
}
|
|
147
|
+
//#endregion
|
|
142
148
|
|
|
149
|
+
//#region Routes
|
|
143
150
|
// ── Routes ──
|
|
144
151
|
|
|
145
152
|
function buildUsableRoutes<TModule>(
|
|
@@ -170,7 +177,9 @@ function buildUsableRoutes<TModule>(
|
|
|
170
177
|
|
|
171
178
|
return result;
|
|
172
179
|
}
|
|
180
|
+
//#endregion
|
|
173
181
|
|
|
182
|
+
//#region Menus
|
|
174
183
|
// ── Menus ──
|
|
175
184
|
|
|
176
185
|
function buildMenus<TModule>(
|
|
@@ -217,7 +226,9 @@ function flattenMenus(menus: AppMenu[], titleChain: string[] = []): AppFlatMenu[
|
|
|
217
226
|
|
|
218
227
|
return result;
|
|
219
228
|
}
|
|
229
|
+
//#endregion
|
|
220
230
|
|
|
231
|
+
//#region Perms
|
|
221
232
|
// ── Perms ──
|
|
222
233
|
|
|
223
234
|
function buildPerms<TModule>(
|
|
@@ -396,7 +407,9 @@ function buildPermsObject<TModule>(
|
|
|
396
407
|
|
|
397
408
|
return obj;
|
|
398
409
|
}
|
|
410
|
+
//#endregion
|
|
399
411
|
|
|
412
|
+
//#region Info
|
|
400
413
|
// ── Info ──
|
|
401
414
|
|
|
402
415
|
function findItemChainByCodes<TModule>(
|
|
@@ -415,7 +428,9 @@ function findItemChainByCodes<TModule>(
|
|
|
415
428
|
|
|
416
429
|
return result;
|
|
417
430
|
}
|
|
431
|
+
//#endregion
|
|
418
432
|
|
|
433
|
+
//#region createAppStructure
|
|
419
434
|
// ── Main Function ──
|
|
420
435
|
|
|
421
436
|
function buildAppStructure<TModule, const TItems extends AppStructureItem<TModule>[]>(opts: {
|
|
@@ -517,3 +532,4 @@ export function createAppStructure<TModule, const TItems extends AppStructureIte
|
|
|
517
532
|
|
|
518
533
|
return { AppStructureProvider, useAppStructure };
|
|
519
534
|
}
|
|
535
|
+
//#endregion
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createEffect } from "solid-js";
|
|
2
2
|
import { createStore, reconcile, unwrap } from "solid-js/store";
|
|
3
3
|
import type { SetStoreFunction } from "solid-js/store";
|
|
4
|
-
import {
|
|
4
|
+
import { obj } from "@simplysm/core-common";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Store hook that supports the controlled/uncontrolled pattern.
|
|
@@ -30,7 +30,7 @@ export function createControllableStore<TValue extends object>(options: {
|
|
|
30
30
|
value: () => TValue;
|
|
31
31
|
onChange: () => ((value: TValue) => void) | undefined;
|
|
32
32
|
}): [TValue, SetStoreFunction<TValue>] {
|
|
33
|
-
const [store, rawSet] = createStore<TValue>(
|
|
33
|
+
const [store, rawSet] = createStore<TValue>(obj.clone(options.value()));
|
|
34
34
|
|
|
35
35
|
// Sync internal store when external value changes
|
|
36
36
|
createEffect(() => {
|
|
@@ -39,10 +39,10 @@ export function createControllableStore<TValue extends object>(options: {
|
|
|
39
39
|
|
|
40
40
|
// Wrap setter with a function wrapper to add onChange notification
|
|
41
41
|
const wrappedSet = ((...args: any[]) => {
|
|
42
|
-
const before =
|
|
42
|
+
const before = obj.clone(unwrap(store));
|
|
43
43
|
(rawSet as any)(...args);
|
|
44
|
-
if (!
|
|
45
|
-
options.onChange()?.(
|
|
44
|
+
if (!obj.equal(before, unwrap(store))) {
|
|
45
|
+
options.onChange()?.(obj.clone(unwrap(store)));
|
|
46
46
|
}
|
|
47
47
|
}) as SetStoreFunction<TValue>;
|
|
48
48
|
|
package/src/index.ts
CHANGED
|
@@ -54,7 +54,7 @@ export * from "./components/data/list/ListItem.styles";
|
|
|
54
54
|
export * from "./components/data/Pagination";
|
|
55
55
|
export * from "./components/data/sheet/DataSheet";
|
|
56
56
|
export * from "./components/data/sheet/DataSheet.styles";
|
|
57
|
-
export * from "./components/data/sheet/types";
|
|
57
|
+
export * from "./components/data/sheet/DataSheet.types";
|
|
58
58
|
export * from "./components/data/calendar/Calendar";
|
|
59
59
|
export * from "./components/data/kanban/Kanban";
|
|
60
60
|
|
|
@@ -63,6 +63,7 @@ export * from "./components/data/kanban/Kanban";
|
|
|
63
63
|
//#region ========== Display ==========
|
|
64
64
|
|
|
65
65
|
export * from "./components/display/Barcode";
|
|
66
|
+
export * from "./components/display/Barcode.types";
|
|
66
67
|
export * from "./components/display/Card";
|
|
67
68
|
export * from "./components/display/Echarts";
|
|
68
69
|
export * from "./components/display/Icon";
|
|
@@ -181,11 +182,11 @@ export * from "./components/features/data-select-button/DataSelectButton";
|
|
|
181
182
|
|
|
182
183
|
// CrudSheet
|
|
183
184
|
export * from "./components/features/crud-sheet/CrudSheet";
|
|
184
|
-
export * from "./components/features/crud-sheet/types";
|
|
185
|
+
export * from "./components/features/crud-sheet/CrudSheet.types";
|
|
185
186
|
|
|
186
187
|
// CrudDetail
|
|
187
188
|
export * from "./components/features/crud-detail/CrudDetail";
|
|
188
|
-
export * from "./components/features/crud-detail/types";
|
|
189
|
+
export * from "./components/features/crud-detail/CrudDetail.types";
|
|
189
190
|
|
|
190
191
|
// PermissionTable
|
|
191
192
|
export * from "./components/features/permission-table/PermissionTable";
|
|
@@ -2,7 +2,7 @@ import { createContext, type ParentComponent, onCleanup, useContext } from "soli
|
|
|
2
2
|
import {
|
|
3
3
|
createServiceClient,
|
|
4
4
|
type ServiceClient,
|
|
5
|
-
type
|
|
5
|
+
type ServiceConnectionOptions,
|
|
6
6
|
} from "@simplysm/service-client";
|
|
7
7
|
import { useConfig } from "./ConfigContext";
|
|
8
8
|
import { useNotification } from "../components/feedback/notification/NotificationProvider";
|
|
@@ -12,7 +12,7 @@ import { useNotification } from "../components/feedback/notification/Notificatio
|
|
|
12
12
|
*/
|
|
13
13
|
export interface ServiceClientContextValue {
|
|
14
14
|
/** Open a WebSocket connection (defaults to "default" if key is omitted) */
|
|
15
|
-
connect: (key?: string, options?: Partial<
|
|
15
|
+
connect: (key?: string, options?: Partial<ServiceConnectionOptions>) => Promise<void>;
|
|
16
16
|
/** Close a connection */
|
|
17
17
|
close: (key?: string) => Promise<void>;
|
|
18
18
|
/** Get a connected client instance (throws if the key is not connected) */
|
|
@@ -100,7 +100,7 @@ export const ServiceClientProvider: ParentComponent = (props) => {
|
|
|
100
100
|
|
|
101
101
|
const connect = async (
|
|
102
102
|
key?: string,
|
|
103
|
-
options?: Partial<
|
|
103
|
+
options?: Partial<ServiceConnectionOptions>,
|
|
104
104
|
): Promise<void> => {
|
|
105
105
|
const resolvedKey = key ?? "default";
|
|
106
106
|
|
|
@@ -113,7 +113,7 @@ export const ServiceClientProvider: ParentComponent = (props) => {
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
const defaultConfig:
|
|
116
|
+
const defaultConfig: ServiceConnectionOptions = {
|
|
117
117
|
host: location.hostname,
|
|
118
118
|
port: Number(location.port) || (location.protocol.startsWith("https") ? 443 : 80),
|
|
119
119
|
ssl: location.protocol.startsWith("https"),
|