@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
package/README.md
CHANGED
|
@@ -1,218 +1,225 @@
|
|
|
1
1
|
# @simplysm/solid
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
SolidJS component library for the Simplysm framework. Provides form controls, layout components, data display, disclosure, feedback, providers, hooks, styles, directives, helpers, and feature-level composite components.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
|
-
```
|
|
7
|
+
```bash
|
|
8
8
|
pnpm add @simplysm/solid
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
11
|
+
## Table of Contents
|
|
12
|
+
|
|
13
|
+
- [Form Control](docs/form-control.md) — Input and selection components
|
|
14
|
+
- [Layout](docs/layout.md) — Page scaffolding and form layout
|
|
15
|
+
- [Data](docs/data.md) — Tables, lists, calendars, and kanban boards
|
|
16
|
+
- [Display](docs/display.md) — Visual presentation components
|
|
17
|
+
- [Disclosure](docs/disclosure.md) — Show/hide patterns (collapse, dropdown, dialog, tabs)
|
|
18
|
+
- [Feedback](docs/feedback.md) — Notifications, busy states, print, and progress
|
|
19
|
+
- [Providers](docs/providers.md) — Application-level context providers
|
|
20
|
+
- [Hooks](docs/hooks.md) — Reactive primitives and utility hooks
|
|
21
|
+
- [Styles, Directives, Helpers](docs/styles.md) — Design tokens, CSS patterns, directives, and utilities
|
|
22
|
+
- [Features](docs/features.md) — High-level composite components (CRUD, permissions, address search)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Form Control
|
|
27
|
+
|
|
28
|
+
Input and selection components for user data entry. All field components support `required`, `validate`, `disabled`, `inset`, `size`, and `touchMode` unless noted.
|
|
29
|
+
|
|
30
|
+
See [docs/form-control.md](docs/form-control.md) for full signatures and props.
|
|
31
|
+
|
|
32
|
+
| Component | Description |
|
|
33
|
+
|-----------|-------------|
|
|
34
|
+
| [`Button`](docs/form-control.md#button) | Interactive button with semantic themes and variants |
|
|
35
|
+
| [`Select`](docs/form-control.md#select) | Dropdown supporting single/multiple selection and hierarchical items |
|
|
36
|
+
| [`Combobox`](docs/form-control.md#combobox) | Async search combo box with optional free-text input |
|
|
37
|
+
| [`TextInput`](docs/form-control.md#textinput) | Text/password/email input with format transformation |
|
|
38
|
+
| [`NumberInput`](docs/form-control.md#numberinput) | Number input with comma formatting and min/max constraints |
|
|
39
|
+
| [`DatePicker`](docs/form-control.md#datepicker) | Date picker with configurable granularity (year/month/date) |
|
|
40
|
+
| [`DateTimePicker`](docs/form-control.md#datetimepicker) | Date-time picker (minute/second granularity) |
|
|
41
|
+
| [`TimePicker`](docs/form-control.md#timepicker) | Time picker (minute/second granularity) |
|
|
42
|
+
| [`Textarea`](docs/form-control.md#textarea) | Multi-line text input with auto-grow |
|
|
43
|
+
| [`Checkbox`](docs/form-control.md#checkbox) | Boolean checkbox input |
|
|
44
|
+
| [`Radio`](docs/form-control.md#radio) | Boolean radio input |
|
|
45
|
+
| [`CheckboxGroup`](docs/form-control.md#checkboxgroup) | Group of checkboxes for multi-value selection |
|
|
46
|
+
| [`RadioGroup`](docs/form-control.md#radiogroup) | Group of radio buttons for single-value selection |
|
|
47
|
+
| [`ColorPicker`](docs/form-control.md#colorpicker) | Color picker returning `#RRGGBB` hex strings |
|
|
48
|
+
| [`DateRangePicker`](docs/form-control.md#daterangepicker) | Date range picker with period type (day/month/range) |
|
|
49
|
+
| [`RichTextEditor`](docs/form-control.md#richtexteditor) | Rich text editor powered by Tiptap, outputs HTML |
|
|
50
|
+
| [`Numpad`](docs/form-control.md#numpad) | On-screen numeric keypad for touch input |
|
|
51
|
+
| [`StatePreset`](docs/form-control.md#statepreset) | Named state snapshot save/restore backed by SyncConfig |
|
|
52
|
+
| [`ThemeToggle`](docs/form-control.md#themetoggle) | Button cycling through light/system/dark themes |
|
|
53
|
+
| [`Invalid`](docs/form-control.md#invalid) | Validation wrapper with error indicator |
|
|
54
|
+
| [`Field.styles`](docs/form-control.md#field-styles-fieldstyles) | Style utilities for custom field components |
|
|
55
|
+
| [`Checkbox.styles`](docs/form-control.md#checkbox-styles-checkboxstyles) | Style utilities for custom checkbox/radio components |
|
|
14
56
|
|
|
15
|
-
|
|
16
|
-
- `echarts` ^6.0 — Required for Echarts chart components
|
|
57
|
+
---
|
|
17
58
|
|
|
18
|
-
##
|
|
59
|
+
## Layout
|
|
19
60
|
|
|
20
|
-
|
|
61
|
+
Structural layout components for page scaffolding and form organization.
|
|
62
|
+
|
|
63
|
+
See [docs/layout.md](docs/layout.md) for full details.
|
|
64
|
+
|
|
65
|
+
| Component | Description |
|
|
66
|
+
|-----------|-------------|
|
|
67
|
+
| [`FormGroup`](docs/layout.md#formgroup) | Responsive form layout with label-field pairs |
|
|
68
|
+
| [`FormTable`](docs/layout.md#formtable) | Styled HTML table for form layouts |
|
|
69
|
+
| [`Sidebar`](docs/layout.md#sidebar) | Responsive sidebar navigation |
|
|
70
|
+
| [`SidebarContext`](docs/layout.md#sidebarcontext) | Context and utilities for the Sidebar |
|
|
71
|
+
| [`Topbar`](docs/layout.md#topbar) | Top navigation bar with actions, menu, and user slots |
|
|
72
|
+
| [`TopbarContext`](docs/layout.md#topbarcontext) | Context for injecting page-level topbar actions |
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Data
|
|
77
|
+
|
|
78
|
+
Components for displaying and managing tabular, list, calendar, and kanban data.
|
|
21
79
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
80
|
+
See [docs/data.md](docs/data.md) for full details.
|
|
81
|
+
|
|
82
|
+
| Component | Description |
|
|
83
|
+
|-----------|-------------|
|
|
84
|
+
| [`Table`](docs/data.md#table) | Styled HTML table |
|
|
85
|
+
| [`List`](docs/data.md#list) | Keyboard-navigable list with tree support |
|
|
86
|
+
| [`ListContext`](docs/data.md#listcontext) | Context for tracking nesting level in List |
|
|
87
|
+
| [`ListItem.styles`](docs/data.md#listitemstyles) | Style constants for custom list item implementations |
|
|
88
|
+
| [`Pagination`](docs/data.md#pagination) | Page navigation control |
|
|
89
|
+
| [`DataSheet`](docs/data.md#datasheet) | Feature-rich data grid with sorting, pagination, selection, tree, and reorder |
|
|
90
|
+
| [`Calendar`](docs/data.md#calendar) | Monthly calendar view rendering items on dates |
|
|
91
|
+
| [`Kanban`](docs/data.md#kanban) | Kanban board with drag-and-drop card reordering |
|
|
92
|
+
| [`KanbanContext`](docs/data.md#kanbancontext) | Internal context and types for Kanban |
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Display
|
|
97
|
+
|
|
98
|
+
Visual presentation components for rendering data, media, and decorative elements.
|
|
30
99
|
|
|
31
|
-
|
|
100
|
+
See [docs/display.md](docs/display.md) for full details.
|
|
101
|
+
|
|
102
|
+
| Component | Description |
|
|
103
|
+
|-----------|-------------|
|
|
104
|
+
| [`Barcode`](docs/display.md#barcode) | Renders barcodes using bwip-js |
|
|
105
|
+
| [`Card`](docs/display.md#card) | White surface card with shadow and hover animation |
|
|
106
|
+
| [`Echarts`](docs/display.md#echarts) | Apache ECharts chart with lazy loading and auto-resize |
|
|
107
|
+
| [`Icon`](docs/display.md#icon) | Renders a Tabler icon SVG |
|
|
108
|
+
| [`Tag`](docs/display.md#tag) | Inline badge/tag with semantic color theming |
|
|
109
|
+
| [`Link`](docs/display.md#link) | Styled anchor with theme and disabled support |
|
|
110
|
+
| [`Alert`](docs/display.md#alert) | Styled alert/callout block |
|
|
32
111
|
|
|
33
|
-
|
|
34
|
-
import "@simplysm/solid/tailwind.css";
|
|
35
|
-
```
|
|
112
|
+
---
|
|
36
113
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
114
|
+
## Disclosure
|
|
115
|
+
|
|
116
|
+
Components for showing and hiding content.
|
|
117
|
+
|
|
118
|
+
See [docs/disclosure.md](docs/disclosure.md) for full details.
|
|
119
|
+
|
|
120
|
+
| Component | Description |
|
|
121
|
+
|-----------|-------------|
|
|
122
|
+
| [`Collapse`](docs/disclosure.md#collapse) | Animated height-collapse panel |
|
|
123
|
+
| [`Dropdown`](docs/disclosure.md#dropdown) | Popup dropdown with trigger/content slots |
|
|
124
|
+
| [`Dialog`](docs/disclosure.md#dialog) | Dialog with header, actions, resize/move support |
|
|
125
|
+
| [`DialogContext`](docs/disclosure.md#dialogcontext) | Hook for programmatic dialog management |
|
|
126
|
+
| [`DialogProvider`](docs/disclosure.md#dialogprovider) | Provider enabling `useDialog()` |
|
|
127
|
+
| [`DialogInstanceContext`](docs/disclosure.md#dialoginstancecontext) | Context for dialog result communication |
|
|
128
|
+
| [`Tabs`](docs/disclosure.md#tabs) | Tab navigation component |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Feedback
|
|
133
|
+
|
|
134
|
+
Components for user feedback.
|
|
135
|
+
|
|
136
|
+
See [docs/feedback.md](docs/feedback.md) for full details.
|
|
137
|
+
|
|
138
|
+
| Component | Description |
|
|
139
|
+
|-----------|-------------|
|
|
140
|
+
| [`NotificationContext`](docs/feedback.md#notificationcontext) | Hook for in-app notifications |
|
|
141
|
+
| [`NotificationBell`](docs/feedback.md#notificationbell) | Bell icon with unread count |
|
|
142
|
+
| [`NotificationBanner`](docs/feedback.md#notificationbanner) | Portal-based notification banner |
|
|
143
|
+
| [`BusyContext`](docs/feedback.md#busycontext) | Hook for global busy state overlays |
|
|
144
|
+
| [`BusyContainer`](docs/feedback.md#busycontainer) | Container with spinner/bar loading overlay |
|
|
145
|
+
| [`PrintContext`](docs/feedback.md#printcontext) | Hook for print and PDF generation |
|
|
146
|
+
| [`PrintProvider`](docs/feedback.md#printprovider) | Provider enabling `usePrint()` |
|
|
147
|
+
| [`Print`](docs/feedback.md#print) | Printable content layout with pages |
|
|
148
|
+
| [`PrintInstanceContext`](docs/feedback.md#printinstancecontext) | Context for print component communication |
|
|
149
|
+
| [`Progress`](docs/feedback.md#progress) | Progress bar component |
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Providers
|
|
154
|
+
|
|
155
|
+
Application-level context providers for configuration, storage, theming, i18n, and shared data.
|
|
156
|
+
|
|
157
|
+
See [docs/providers.md](docs/providers.md) for full details.
|
|
158
|
+
|
|
159
|
+
| Provider | Description |
|
|
160
|
+
|----------|-------------|
|
|
161
|
+
| [`ConfigContext`](docs/providers.md#configcontext) | Application-wide configuration context |
|
|
162
|
+
| [`SyncStorageContext`](docs/providers.md#syncstoragecontext) | Persistent key-value storage with pluggable adapter |
|
|
163
|
+
| [`LoggerContext`](docs/providers.md#loggercontext) | Structured logging with pluggable adapter |
|
|
164
|
+
| [`ThemeContext`](docs/providers.md#themecontext) | Light/dark/system theme management |
|
|
165
|
+
| [`ServiceClientContext`](docs/providers.md#serviceclientcontext) | WebSocket service client context |
|
|
166
|
+
| [`SystemProvider`](docs/providers.md#systemprovider) | Composite root provider for applications |
|
|
167
|
+
| [`SharedDataContext`](docs/providers.md#shareddatacontext) | Shared data synchronized with the server |
|
|
168
|
+
| [`SharedDataChangeEvent`](docs/providers.md#shareddatachangeevent) | Event class for shared data change notifications |
|
|
169
|
+
| [`I18nContext`](docs/providers.md#i18ncontext) | Internationalization with built-in EN/KO dictionaries |
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Hooks
|
|
174
|
+
|
|
175
|
+
Reactive primitives and utility hooks.
|
|
176
|
+
|
|
177
|
+
See [docs/hooks.md](docs/hooks.md) for full details.
|
|
178
|
+
|
|
179
|
+
| Hook | Description |
|
|
180
|
+
|------|-------------|
|
|
181
|
+
| [`useLocalStorage`](docs/hooks.md#uselocalstorage) | Reactive localStorage accessor with SSR safety |
|
|
182
|
+
| [`useSyncConfig`](docs/hooks.md#usesyncconfig) | Persistent configuration backed by SyncStorage |
|
|
183
|
+
| [`useLogger`](docs/hooks.md#uselogger) | Structured logger from the logger context |
|
|
184
|
+
| [`createControllableSignal`](docs/hooks.md#createcontrollablesignal) | Signal for controlled/uncontrolled patterns |
|
|
185
|
+
| [`createControllableStore`](docs/hooks.md#createcontrollablestore) | Store for controlled/uncontrolled patterns |
|
|
186
|
+
| [`createIMEHandler`](docs/hooks.md#createimehandler) | IME composition handlers for CJK input |
|
|
187
|
+
| [`createMountTransition`](docs/hooks.md#createmounttransition) | Mount/unmount lifecycle with animation support |
|
|
188
|
+
| [`createSlotSignal`](docs/hooks.md#createslotsignal) | Slot registration for compound components |
|
|
189
|
+
| [`useRouterLink`](docs/hooks.md#userouterlink) | SolidJS Router navigation click handler |
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Styles, Directives, Helpers
|
|
194
|
+
|
|
195
|
+
Design tokens, CSS class patterns, directives, and utilities.
|
|
196
|
+
|
|
197
|
+
See [docs/styles.md](docs/styles.md) for full details.
|
|
198
|
+
|
|
199
|
+
| Export | Description |
|
|
200
|
+
|--------|-------------|
|
|
201
|
+
| [`tokens.styles`](docs/styles.md#tokensstyles) | Design token constants and type definitions |
|
|
202
|
+
| [`patterns.styles`](docs/styles.md#patternsstyles) | Reusable Tailwind class patterns |
|
|
203
|
+
| [`ripple`](docs/styles.md#ripple-directive) | Material-style ripple click effect directive |
|
|
204
|
+
| [`mergeStyles`](docs/styles.md#mergestyles) | Merge multiple CSS style values into one object |
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Features
|
|
209
|
+
|
|
210
|
+
High-level composite components combining multiple primitives into application-ready patterns.
|
|
211
|
+
|
|
212
|
+
See [docs/features.md](docs/features.md) for full details.
|
|
49
213
|
|
|
50
|
-
|
|
|
51
|
-
|
|
52
|
-
| `
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
|
61
|
-
|
|
62
|
-
| `src/components/form-control/Button.tsx` | `ButtonProps`, `Button` | Button with ripple effect, theme/variant/size/inset options | `Button.spec.tsx` |
|
|
63
|
-
| `src/components/form-control/select/Select.tsx` | `SelectProps`, `Select` | Dropdown selection with single/multiple mode, search, hierarchical items | `Select.spec.tsx` |
|
|
64
|
-
| `src/components/form-control/combobox/Combobox.tsx` | `ComboboxProps`, `Combobox` | Autocomplete with async search, debounce, and custom value support | `Combobox.spec.tsx` |
|
|
65
|
-
| `src/components/form-control/field/TextInput.tsx` | `TextInputProps`, `TextInput` | Text input with IME support, format mask, prefix slot, validation | `TextInput.spec.tsx` |
|
|
66
|
-
| `src/components/form-control/field/NumberInput.tsx` | `NumberInputProps`, `NumberInput` | Numeric input with thousand-separator, min/max, prefix slot, validation | `NumberInput.spec.tsx` |
|
|
67
|
-
| `src/components/form-control/field/DatePicker.tsx` | `DatePickerProps`, `DatePicker` | Date input supporting year/month/date units (DateOnly type) | `DatePicker.spec.tsx` |
|
|
68
|
-
| `src/components/form-control/field/DateTimePicker.tsx` | `DateTimePickerProps`, `DateTimePicker` | Date-time input supporting minute/second units (DateTime type) | `DateTimePicker.spec.tsx` |
|
|
69
|
-
| `src/components/form-control/field/TimePicker.tsx` | `TimePickerProps`, `TimePicker` | Time input supporting minute/second units (Time type) | `TimePicker.spec.tsx` |
|
|
70
|
-
| `src/components/form-control/field/Textarea.tsx` | `TextareaProps`, `Textarea` | Auto-height textarea with IME support, minRows, validation | `Textarea.spec.tsx` |
|
|
71
|
-
| `src/components/form-control/field/Field.styles.ts` | `FieldSize`, `fieldBaseClass`, `fieldSizeClasses`, `fieldInsetClass`, `fieldInsetHeightClass`, `fieldInsetSizeHeightClasses`, `fieldDisabledClass`, `textAreaBaseClass`, `textAreaSizeClasses`, `fieldInputClass`, `fieldGapClasses`, `getFieldWrapperClass`, `getTextareaWrapperClass` | Shared Tailwind class tokens and wrapper class generators for field components | - |
|
|
72
|
-
| `src/components/form-control/checkbox/Checkbox.tsx` | `CheckboxProps`, `Checkbox` | Checkbox with ripple, controlled/uncontrolled, inset/inline modes | `Checkbox.spec.tsx` |
|
|
73
|
-
| `src/components/form-control/checkbox/Checkbox.styles.ts` | `CheckboxSize`, `checkboxBaseClass`, `indicatorBaseClass`, `checkedClass`, `checkboxSizeClasses`, `checkboxInsetClass`, `checkboxInsetSizeHeightClasses`, `checkboxInlineClass`, `checkboxDisabledClass` | Tailwind class tokens shared by Checkbox and Radio components | - |
|
|
74
|
-
| `src/components/form-control/checkbox/Radio.tsx` | `RadioProps`, `Radio` | Radio button (single-select variant of Checkbox) with ripple effect | `Radio.spec.tsx` |
|
|
75
|
-
| `src/components/form-control/checkbox/CheckboxGroup.tsx` | `CheckboxGroup` | Group of checkboxes with multi-select value binding and validation | `CheckboxGroup.spec.tsx` |
|
|
76
|
-
| `src/components/form-control/checkbox/RadioGroup.tsx` | `RadioGroup` | Group of radio buttons with single-select value binding and validation | `RadioGroup.spec.tsx` |
|
|
77
|
-
| `src/components/form-control/color-picker/ColorPicker.tsx` | `ColorPickerProps`, `ColorPicker` | Native color picker input (#RRGGBB) with size and inset support | `ColorPicker.spec.tsx` |
|
|
78
|
-
| `src/components/form-control/date-range-picker/DateRangePicker.tsx` | `DateRangePeriodType`, `DateRangePickerProps`, `DateRangePicker` | Date range input with day/month/range period type selection | `DateRangePicker.spec.tsx` |
|
|
79
|
-
| `src/components/form-control/editor/RichTextEditor.tsx` | `RichTextEditorProps`, `RichTextEditor` | WYSIWYG rich text editor (Tiptap) with toolbar, table, image support | - |
|
|
80
|
-
| `src/components/form-control/numpad/Numpad.tsx` | `NumpadProps`, `Numpad` | On-screen numeric keypad with optional ENT/minus buttons | `Numpad.spec.tsx` |
|
|
81
|
-
| `src/components/form-control/state-preset/StatePreset.tsx` | `StatePresetProps`, `StatePreset` | Named state preset chips — save, restore, and overwrite arbitrary values | - |
|
|
82
|
-
| `src/components/form-control/ThemeToggle.tsx` | `ThemeToggleProps`, `ThemeToggle` | Icon button that cycles light/system/dark theme modes | - |
|
|
83
|
-
| `src/components/form-control/Invalid.tsx` | `InvalidProps`, `Invalid` | Validation wrapper that shows border or dot indicator with native form validity | `Invalid.spec.tsx` |
|
|
84
|
-
|
|
85
|
-
### Layout
|
|
86
|
-
|
|
87
|
-
| Source | Exports | Description | Test |
|
|
88
|
-
|--------|---------|-------------|------|
|
|
89
|
-
| `src/components/layout/FormGroup.tsx` | `FormGroupProps`, `FormGroupItemProps`, `FormGroup` | Labeled field group in vertical or inline (horizontal) layout | `FormGroup.spec.tsx` |
|
|
90
|
-
| `src/components/layout/FormTable.tsx` | `FormTableProps`, `FormTable` | Table layout for aligned label/field rows in forms | `FormTable.spec.tsx` |
|
|
91
|
-
| `src/components/layout/sidebar/Sidebar.tsx` | `SidebarProps`, `SidebarContainerProps`, `SidebarMenuProps`, `SidebarUserMenu`, `SidebarUserProps`, `Sidebar` | Collapsible sidebar with slide animation, responsive desktop/mobile behavior | `Sidebar.spec.tsx` |
|
|
92
|
-
| `src/components/layout/sidebar/SidebarContext.ts` | `SM_MEDIA_QUERY`, `SidebarContextValue`, `SidebarContext`, `useSidebarContext`, `useSidebarContextOptional` | Context providing toggle state for Sidebar open/close coordination | - |
|
|
93
|
-
| `src/components/layout/topbar/Topbar.tsx` | `TopbarProps`, `TopbarContainerProps`, `TopbarMenuItem`, `TopbarMenuProps`, `TopbarUserMenu`, `TopbarUserProps`, `Topbar` | App topbar with optional sidebar toggle button and menu/user slots | - |
|
|
94
|
-
| `src/components/layout/topbar/TopbarContext.ts` | `TopbarContextValue`, `TopbarContext`, `useTopbarActionsAccessor`, `createTopbarActions` | Context for injecting page-level action buttons into the topbar | `createTopbarActions.spec.tsx` |
|
|
95
|
-
|
|
96
|
-
### Data
|
|
97
|
-
|
|
98
|
-
| Source | Exports | Description | Test |
|
|
99
|
-
|--------|---------|-------------|------|
|
|
100
|
-
| `src/components/data/Table.tsx` | `TableProps`, `Table` | Simple bordered HTML table with optional inset (borderless) style | `Table.spec.tsx` |
|
|
101
|
-
| `src/components/data/list/List.tsx` | `ListProps`, `List` | Keyboard-navigable list container with tree expand/collapse support | `List.spec.tsx` |
|
|
102
|
-
| `src/components/data/list/ListContext.ts` | `ListContextValue`, `ListContext`, `useListContext` | Context carrying nesting level for recursive List rendering | - |
|
|
103
|
-
| `src/components/data/list/ListItem.styles.ts` | `listItemBaseClass`, `listItemSizeClasses`, `listItemSelectedClass`, `listItemDisabledClass`, `listItemReadonlyClass`, `listItemIndentGuideClass`, `listItemContentClass`, `getListItemSelectedIconClass` | Tailwind class tokens for ListItem states (selected, disabled, readonly, indent) | - |
|
|
104
|
-
| `src/components/data/Pagination.tsx` | `PaginationProps`, `Pagination` | Page navigation bar with first/prev/next/last buttons | `Pagination.spec.tsx` |
|
|
105
|
-
| `src/components/data/sheet/DataSheet.tsx` | `DataSheet` | Feature-rich data grid with sorting, selection, tree expand, reorder, pagination | `DataSheet.spec.tsx` |
|
|
106
|
-
| `src/components/data/sheet/DataSheet.styles.ts` | `dataSheetContainerClass`, `tableClass`, `thClass`, `thContentClass`, `tdClass`, `summaryThClass`, `insetContainerClass`, `insetTableClass`, `defaultContainerClass`, `sortableThClass`, `sortIconClass`, `toolbarClass`, `fixedClass`, `fixedLastClass`, `resizerClass`, `resizeIndicatorClass`, `featureThClass`, `featureTdClass`, `expandIndentGuideClass`, `expandIndentGuideLineClass`, `expandToggleClass`, `selectSingleClass`, `selectSingleSelectedClass`, `selectSingleUnselectedClass`, `reorderHandleClass`, `reorderIndicatorClass`, `featureCellWrapperClass`, `featureCellBodyWrapperClass`, `featureCellClickableClass`, `featureCellBodyClickableClass`, `reorderCellWrapperClass`, `configButtonClass` | Tailwind class tokens for all DataSheet internal visual elements | - |
|
|
107
|
-
| `src/components/data/sheet/types.ts` | `DataSheetProps`, `DataSheetColumnProps`, `DataSheetCellContext`, `SortingDef`, `DataSheetConfig`, `DataSheetConfigColumn`, `DataSheetColumnDef`, `HeaderDef`, `FlatItem`, `DataSheetDragPosition`, `DataSheetReorderEvent`, `DataSheetConfigColumnInfo` | TypeScript types and interfaces for DataSheet props, column defs, and internal structures | - |
|
|
108
|
-
| `src/components/data/calendar/Calendar.tsx` | `CalendarProps`, `Calendar` | Monthly calendar grid that renders arbitrary items on their DateOnly date | - |
|
|
109
|
-
| `src/components/data/kanban/Kanban.tsx` | `KanbanCardProps`, `KanbanLaneProps`, `KanbanProps`, `Kanban` | Kanban board with drag-and-drop card reordering and multi-select | `Kanban.selection.spec.tsx` |
|
|
110
|
-
| `src/components/data/kanban/KanbanContext.ts` | `KanbanCardRef`, `KanbanDropInfo`, `KanbanDropTarget`, `KanbanContextValue`, `KanbanContext`, `useKanbanContext`, `KanbanLaneContextValue`, `KanbanLaneContext`, `useKanbanLaneContext` | Contexts sharing drag state and selection state between Kanban board and lanes | - |
|
|
111
|
-
|
|
112
|
-
### Display
|
|
113
|
-
|
|
114
|
-
| Source | Exports | Description | Test |
|
|
115
|
-
|--------|---------|-------------|------|
|
|
116
|
-
| `src/components/display/Barcode.tsx` | `BarcodeType`, `BarcodeProps`, `Barcode` | Barcode/QR code renderer using bwip-js with many format options | `Barcode.spec.tsx` |
|
|
117
|
-
| `src/components/display/Card.tsx` | `CardProps`, `Card` | Elevated card container with shadow and fade-in animation | `Card.spec.tsx` |
|
|
118
|
-
| `src/components/display/Echarts.tsx` | `EchartsProps`, `Echarts` | Apache ECharts wrapper with resize observer and busy overlay support | - |
|
|
119
|
-
| `src/components/display/Icon.tsx` | `IconProps`, `Icon` | Wrapper for Tabler icon components with size normalization | - |
|
|
120
|
-
| `src/components/display/Tag.tsx` | `TagTheme`, `TagProps`, `Tag` | Inline colored badge/tag with semantic theme options | `Tag.spec.tsx` |
|
|
121
|
-
| `src/components/display/Link.tsx` | `LinkTheme`, `LinkProps`, `Link` | Themed anchor link with disabled state support | `Link.spec.tsx` |
|
|
122
|
-
| `src/components/display/Alert.tsx` | `AlertTheme`, `AlertProps`, `Alert` | Block alert box with semantic theme background colors | `Alert.spec.tsx` |
|
|
123
|
-
|
|
124
|
-
### Disclosure
|
|
125
|
-
|
|
126
|
-
| Source | Exports | Description | Test |
|
|
127
|
-
|--------|---------|-------------|------|
|
|
128
|
-
| `src/components/disclosure/Collapse.tsx` | `CollapseProps`, `Collapse` | Animated height-based expand/collapse container | `Collapse.spec.tsx` |
|
|
129
|
-
| `src/components/disclosure/Dropdown.tsx` | `DropdownProps`, `Dropdown` | Positioned floating dropdown with Portal rendering and keyboard navigation | `Dropdown.spec.tsx` |
|
|
130
|
-
| `src/components/disclosure/Dialog.tsx` | `DialogProps`, `Dialog` | Modal dialog with draggable/resizable/closable options and backdrop | `Dialog.spec.tsx` |
|
|
131
|
-
| `src/components/disclosure/DialogContext.ts` | `DialogDefaults`, `DialogShowOptions`, `DialogContextValue`, `DialogDefaultsContext`, `DialogContext`, `useDialog` | Context and hook for opening programmatic dialogs imperatively | - |
|
|
132
|
-
| `src/components/disclosure/DialogInstanceContext.ts` | `DialogInstance`, `DialogInstanceContext`, `useDialogInstance` | Context providing close() to components rendered inside a dialog | - |
|
|
133
|
-
| `src/components/disclosure/DialogProvider.tsx` | `DialogProviderProps`, `DialogProvider` | Provider that manages programmatic dialog stack via useDialog() | `DialogProvider.spec.tsx` |
|
|
134
|
-
| `src/components/disclosure/Tabs.tsx` | `Tabs` | Tab bar with controlled/uncontrolled active tab selection | `Tabs.spec.tsx` |
|
|
135
|
-
|
|
136
|
-
### Feedback
|
|
137
|
-
|
|
138
|
-
| Source | Exports | Description | Test |
|
|
139
|
-
|--------|---------|-------------|------|
|
|
140
|
-
| `src/components/feedback/notification/NotificationContext.ts` | `NotificationTheme`, `NotificationAction`, `NotificationItem`, `NotificationOptions`, `NotificationUpdateOptions`, `NotificationContextValue`, `NotificationContext`, `useNotification` | Context and hook for creating/updating/removing toast notifications | `NotificationContext.spec.tsx` |
|
|
141
|
-
| `src/components/feedback/notification/NotificationBell.tsx` | `NotificationBellProps`, `NotificationBell` | Bell icon button that shows notification history dropdown | `NotificationBell.spec.tsx` |
|
|
142
|
-
| `src/components/feedback/notification/NotificationBanner.tsx` | `NotificationBanner` | Fixed top-right banner that displays incoming notifications | `NotificationBanner.spec.tsx` |
|
|
143
|
-
| `src/components/feedback/busy/BusyContext.ts` | `BusyVariant`, `BusyContextValue`, `BusyContext`, `useBusy` | Context and hook for showing/hiding spinner or progress bar overlay | - |
|
|
144
|
-
| `src/components/feedback/busy/BusyContainer.tsx` | `BusyContainerProps`, `BusyContainer` | Container that overlays a spinner or progress bar while busy | `BusyContainer.spec.tsx` |
|
|
145
|
-
| `src/components/feedback/print/PrintContext.ts` | `PrintOptions`, `PrintContextValue`, `PrintContext`, `usePrint` | Context and hook for sending content to printer or exporting as PDF | - |
|
|
146
|
-
| `src/components/feedback/print/PrintProvider.tsx` | `PrintProvider` | Provider that implements toPrinter() and toPdf() via jsPDF and html-to-image | - |
|
|
147
|
-
| `src/components/feedback/print/Print.tsx` | `Print` | Declarative print content wrapper with Print.Page sub-component | `Print.spec.tsx` |
|
|
148
|
-
| `src/components/feedback/print/PrintInstanceContext.ts` | `PrintInstance`, `PrintInstanceContext`, `usePrintInstance` | Context providing ready() callback to print content components | - |
|
|
149
|
-
| `src/components/feedback/Progress.tsx` | `ProgressTheme`, `ProgressProps`, `Progress` | Horizontal progress bar with theme and size options | - |
|
|
150
|
-
|
|
151
|
-
### Providers
|
|
152
|
-
|
|
153
|
-
| Source | Exports | Description | Test |
|
|
154
|
-
|--------|---------|-------------|------|
|
|
155
|
-
| `src/providers/ConfigContext.tsx` | `AppConfig`, `ConfigContext`, `useConfig`, `ConfigProvider` | App-wide configuration provider (clientName as storage key prefix) | `ConfigContext.spec.tsx` |
|
|
156
|
-
| `src/providers/SyncStorageContext.tsx` | `StorageAdapter`, `SyncStorageContextValue`, `SyncStorageContext`, `useSyncStorage`, `SyncStorageProvider` | Pluggable storage adapter provider (localStorage by default, swappable) | `SyncStorageContext.spec.tsx` |
|
|
157
|
-
| `src/providers/LoggerContext.tsx` | `LogAdapter`, `LoggerContextValue`, `LoggerContext`, `LoggerProvider` | Logger provider with chainable adapter decoration (consola by default) | `LoggerContext.spec.tsx` |
|
|
158
|
-
| `src/providers/ThemeContext.tsx` | `ThemeMode`, `ResolvedTheme`, `useTheme`, `ThemeProvider` | Theme provider managing light/dark/system mode with OS detection | - |
|
|
159
|
-
| `src/providers/ServiceClientContext.ts` | `ServiceClientContextValue`, `ServiceClientContext`, `useServiceClient` | Context for managing named WebSocket service client connections | `ServiceClientContext.spec.tsx` |
|
|
160
|
-
| `src/providers/shared-data/SharedDataContext.ts` | `SharedDataDefinition`, `SharedDataAccessor`, `SharedDataValue`, `SharedDataContext`, `useSharedData` | Context for reactive server-synced shared data with live-update subscriptions | `SharedDataProvider.spec.tsx` |
|
|
161
|
-
| `src/providers/shared-data/SharedDataChangeEvent.ts` | `SharedDataChangeEvent` | Service event definition for broadcasting shared data changes | - |
|
|
162
|
-
| `src/providers/SystemProvider.tsx` | `BusyVariant`, `SystemProvider` | Composite root provider that composes all infrastructure providers | - |
|
|
163
|
-
| `src/providers/i18n/I18nContext.tsx` | `useI18n`, `useI18nOptional`, `I18nProvider` | Internationalization provider with t(), locale management, and localStorage persistence | `I18nContext.spec.tsx` |
|
|
164
|
-
| `src/providers/i18n/I18nContext.types.ts` | `I18nContextValue`, `I18nConfigureOptions`, `FlatDict` | TypeScript types for I18n context value, configure options, and flat dict | - |
|
|
165
|
-
|
|
166
|
-
### Hooks
|
|
167
|
-
|
|
168
|
-
| Source | Exports | Description | Test |
|
|
169
|
-
|--------|---------|-------------|------|
|
|
170
|
-
| `src/hooks/useLocalStorage.ts` | `useLocalStorage` | Reactive localStorage signal with clientName-prefixed keys | `useLocalStorage.spec.tsx` |
|
|
171
|
-
| `src/hooks/useSyncConfig.ts` | `useSyncConfig` | Persistent config signal synced via SyncStorageProvider (falls back to localStorage) | `useSyncConfig.spec.tsx` |
|
|
172
|
-
| `src/hooks/useLogger.ts` | `Logger`, `useLogger` | Logger hook that delegates to LoggerContext adapter (consola fallback) | `useLogger.spec.tsx` |
|
|
173
|
-
| `src/hooks/createControllableSignal.ts` | `createControllableSignal` | Controlled/uncontrolled signal pattern hook supporting functional setters | `createControllableSignal.spec.ts` |
|
|
174
|
-
| `src/hooks/createControllableStore.ts` | `createControllableStore` | Controlled/uncontrolled store pattern hook for object/array state | - |
|
|
175
|
-
| `src/hooks/createIMEHandler.ts` | `createIMEHandler` | IME composition handler that delays value commit to prevent Korean input breakage | `createIMEHandler.spec.ts` |
|
|
176
|
-
| `src/hooks/createMountTransition.ts` | `createMountTransition` | Mount/unmount animation hook providing mounted and animating signals | `createMountTransition.spec.ts` |
|
|
177
|
-
| `src/hooks/createSlotSignal.ts` | `SlotAccessor`, `createSlotSignal` | Signal factory for registering JSX slot content from child components | - |
|
|
178
|
-
| `src/hooks/useRouterLink.ts` | `RouterLinkOptions`, `useRouterLink` | Router navigation hook with Shift+click new-window support | `useRouterLink.spec.tsx` |
|
|
179
|
-
|
|
180
|
-
### Styles
|
|
181
|
-
|
|
182
|
-
| Source | Exports | Description | Test |
|
|
183
|
-
|--------|---------|-------------|------|
|
|
184
|
-
| `src/styles/tokens.styles.ts` | `borderDefault`, `borderSubtle`, `bgSurface`, `textDefault`, `textMuted`, `textPlaceholder`, `disabledOpacity`, `ComponentSize`, `ComponentSizeCompact`, `paddingXs`, `paddingSm`, `paddingLg`, `paddingXl`, `SemanticTheme`, `themeTokens` | Design token constants (colors, sizes, themes) as Tailwind class strings | - |
|
|
185
|
-
| `src/styles/patterns.styles.ts` | `iconButtonBase`, `insetFocusOutline`, `insetFocusOutlineSelf`, `insetBase`, `fieldSurface`, `inputBase` | Reusable Tailwind class patterns for icon buttons, inset fields, and input elements | - |
|
|
186
|
-
|
|
187
|
-
### Directives
|
|
188
|
-
|
|
189
|
-
| Source | Exports | Description | Test |
|
|
190
|
-
|--------|---------|-------------|------|
|
|
191
|
-
| `src/directives/ripple.ts` | `ripple` | SolidJS directive that adds a Material-style ripple effect on click | `ripple.spec.tsx` |
|
|
192
|
-
|
|
193
|
-
### Helpers
|
|
194
|
-
|
|
195
|
-
| Source | Exports | Description | Test |
|
|
196
|
-
|--------|---------|-------------|------|
|
|
197
|
-
| `src/helpers/mergeStyles.ts` | `mergeStyles` | Merges multiple JSX style objects or strings into a single style object | `mergeStyles.spec.ts` |
|
|
198
|
-
| `src/helpers/createAppStructure.ts` | `AppStructureGroupItem`, `AppStructureLeafItem`, `AppStructureItem`, `AppStructureSubPerm`, `AppMenu`, `AppPerm`, `AppFlatPerm`, `AppRoute`, `AppFlatMenu`, `AppStructure`, `createAppStructure` | Builds typed app route/menu/permission structures from a nested definition tree | `createAppStructure.spec.tsx` |
|
|
199
|
-
| `src/helpers/createSlotComponent.ts` | `createSlotComponent` | Factory for creating slot registration sub-components that inject into parent context | - |
|
|
200
|
-
|
|
201
|
-
### Features
|
|
202
|
-
|
|
203
|
-
| Source | Exports | Description | Test |
|
|
204
|
-
|--------|---------|-------------|------|
|
|
205
|
-
| `src/components/features/address/AddressSearch.tsx` | `AddressSearchResult`, `AddressSearchContent` | Daum Postcode address search dialog content component | `AddressSearch.spec.tsx` |
|
|
206
|
-
| `src/components/features/shared-data/SharedDataSelect.tsx` | `SharedDataSelectProps`, `SharedDataSelect` | Select dropdown bound to a SharedDataAccessor with search and edit action | - |
|
|
207
|
-
| `src/components/features/shared-data/SharedDataSelectButton.tsx` | `SharedDataSelectButtonProps`, `SharedDataSelectButton` | Button-trigger selector bound to a SharedDataAccessor via modal list | - |
|
|
208
|
-
| `src/components/features/shared-data/SharedDataSelectList.tsx` | `SharedDataSelectListProps`, `SharedDataSelectListComponent`, `SharedDataSelectList` | Paginated list for selecting a single item from a SharedDataAccessor | `SharedDataSelectList.spec.tsx` |
|
|
209
|
-
| `src/components/features/data-select-button/DataSelectButton.tsx` | `DataSelectModalResult`, `DataSelectButtonProps`, `DataSelectButton` | Button that opens a modal dialog for selecting items from an async data source | `DataSelectButton.spec.tsx` |
|
|
210
|
-
| `src/components/features/crud-sheet/CrudSheet.tsx` | `CrudSheet` | Full CRUD data grid with inline/modal edit, Excel import/export, search | `CrudSheet.spec.tsx` |
|
|
211
|
-
| `src/components/features/crud-sheet/types.ts` | `SearchResult`, `InlineEditConfig`, `ModalEditConfig`, `ExcelConfig`, `SelectResult`, `CrudSheetCellContext`, `CrudSheetContext`, `CrudSheetProps`, `CrudSheetColumnDef`, `CrudSheetColumnProps`, `CrudSheetFilterDef`, `CrudSheetToolsDef`, `CrudSheetHeaderDef` | TypeScript types and interfaces for CrudSheet configuration and callbacks | - |
|
|
212
|
-
| `src/components/features/crud-detail/CrudDetail.tsx` | `CrudDetail` | Detail form panel with load/save/refresh lifecycle and change tracking | `CrudDetail.spec.tsx` |
|
|
213
|
-
| `src/components/features/crud-detail/types.ts` | `CrudDetailInfo`, `CrudDetailContext`, `CrudDetailProps`, `CrudDetailToolsDef`, `CrudDetailBeforeDef`, `CrudDetailAfterDef` | TypeScript types and interfaces for CrudDetail props and context | - |
|
|
214
|
-
| `src/components/features/permission-table/PermissionTable.tsx` | `PermissionTableProps`, `collectAllPerms`, `filterByModules`, `changePermCheck`, `PermissionTable` | Permission matrix table for managing role-based access per module/action | `PermissionTable.spec.tsx` |
|
|
215
|
-
|
|
216
|
-
## License
|
|
217
|
-
|
|
218
|
-
Apache-2.0
|
|
214
|
+
| Component | Description |
|
|
215
|
+
|-----------|-------------|
|
|
216
|
+
| [`AddressSearchContent`](docs/features.md#addresssearchcontent) | Korean address search dialog via Daum Postcode API |
|
|
217
|
+
| [`SharedDataSelect`](docs/features.md#shareddataselect) | Select pre-wired to a SharedDataAccessor |
|
|
218
|
+
| [`SharedDataSelectButton`](docs/features.md#shareddataselectbutton) | DataSelectButton pre-wired to a SharedDataAccessor |
|
|
219
|
+
| [`SharedDataSelectList`](docs/features.md#shareddataselectlist) | Searchable list with pagination for SharedDataAccessor |
|
|
220
|
+
| [`DataSelectButton`](docs/features.md#dataselectbutton) | Generic trigger button opening a selection dialog |
|
|
221
|
+
| [`CrudSheet`](docs/features.md#crudsheet) | Full CRUD data grid with inline/dialog edit and Excel support |
|
|
222
|
+
| [`CrudDetail`](docs/features.md#cruddetail) | Detail form with load/save/delete lifecycle |
|
|
223
|
+
| [`PermissionTable`](docs/features.md#permissiontable) | Permission editor grid with cascading checkbox logic |
|
|
224
|
+
| [`createAppStructure`](docs/features.md#createappstructure) | Typed app structure builder (routes, menus, permissions) |
|
|
225
|
+
| [`createSlotComponent`](docs/features.md#createslotcomponent) | Factory for slot registration in compound components |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\calendar\\Calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,GAAG,EAAc,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,MAAM,WAAW,aAAa,CAAC,MAAM,CAAE,SAAQ,IAAI,CACjD,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,EACpC,UAAU,CACX;IACC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,QAAQ,CAAC;IACvD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC;IACzD,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA0BD,iBAAS,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\calendar\\Calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,GAAG,EAAc,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,MAAM,WAAW,aAAa,CAAC,MAAM,CAAE,SAAQ,IAAI,CACjD,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,EACpC,UAAU,CACX;IACC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,QAAQ,CAAC;IACvD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC;IACzD,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA0BD,iBAAS,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,eA+GzD;AAED,eAAO,MAAM,QAAQ,qBAAe,CAAC"}
|
|
@@ -11,7 +11,7 @@ import { DateOnly } from "@simplysm/core-common";
|
|
|
11
11
|
import clsx from "clsx";
|
|
12
12
|
import { twMerge } from "tailwind-merge";
|
|
13
13
|
import { createControllableSignal } from "../../../hooks/createControllableSignal.js";
|
|
14
|
-
import {
|
|
14
|
+
import { useI18n } from "../../../providers/i18n/I18nContext.js";
|
|
15
15
|
const baseClass = clsx(
|
|
16
16
|
"w-full",
|
|
17
17
|
"border-separate border-spacing-0",
|
|
@@ -39,7 +39,7 @@ function CalendarBase(props) {
|
|
|
39
39
|
value: () => local.yearMonth ?? new DateOnly().setDay(1),
|
|
40
40
|
onChange: () => local.onYearMonthChange
|
|
41
41
|
});
|
|
42
|
-
const i18n =
|
|
42
|
+
const i18n = useI18n();
|
|
43
43
|
const weekNames = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
|
|
44
44
|
const weekHeaders = createMemo(() => {
|
|
45
45
|
const start = weekStartDay();
|
|
@@ -47,15 +47,7 @@ function CalendarBase(props) {
|
|
|
47
47
|
length: 7
|
|
48
48
|
}, (_, i) => {
|
|
49
49
|
const key = weekNames[(start + i) % 7];
|
|
50
|
-
return
|
|
51
|
-
sun: "Sun",
|
|
52
|
-
mon: "Mon",
|
|
53
|
-
tue: "Tue",
|
|
54
|
-
wed: "Wed",
|
|
55
|
-
thu: "Thu",
|
|
56
|
-
fri: "Fri",
|
|
57
|
-
sat: "Sat"
|
|
58
|
-
}[key];
|
|
50
|
+
return i18n.t(`calendar.weeks.${key}`);
|
|
59
51
|
});
|
|
60
52
|
});
|
|
61
53
|
const dataTable = createMemo(() => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/data/calendar/Calendar.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;AAAA,SAASA,YAAYC,KAAeC,kBAAkB;AACtD,SAASC,gBAAgB;AACzB,OAAOC,UAAU;AACjB,SAASC,eAAe;AACxB,SAASC,gCAAgC;AACzC,SAASC,
|
|
5
|
-
"names": ["createMemo", "For", "splitProps", "DateOnly", "clsx", "twMerge", "createControllableSignal", "
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["createMemo", "For", "splitProps", "DateOnly", "clsx", "twMerge", "createControllableSignal", "useI18n", "baseClass", "notCurrentClass", "dayClass", "notCurrentDayClass", "contentClass", "CalendarBase", "props", "local", "rest", "weekStartDay", "minDaysInFirstWeek", "yearMonth", "value", "setDay", "onChange", "onYearMonthChange", "i18n", "weekNames", "weekHeaders", "start", "Array", "from", "length", "_", "i", "key", "t", "dataTable", "ym", "items", "getDate", "getItemDate", "itemMap", "Map", "date", "tick", "arr", "get", "push", "item", "index", "set", "firstDate", "getWeekSeqStartDate", "result", "r", "row", "c", "addDays", "getClassName", "class", "_el$", "_tmpl$", "_el$2", "firstChild", "_el$3", "_el$4", "nextSibling", "_$spread", "_$mergeProps", "_$insert", "_$createComponent", "each", "children", "header", "_el$5", "_tmpl$2", "_el$6", "_tmpl$3", "cell", "_el$7", "_tmpl$4", "_el$8", "_el$9", "day", "_$className", "entry", "renderItem", "_$effect", "_p$", "_v$", "month", "_v$2", "e", "undefined", "Calendar"]
|
|
6
6
|
}
|
|
@@ -25,13 +25,13 @@ import { Checkbox } from "../../form-control/checkbox/Checkbox.js";
|
|
|
25
25
|
import { Pagination } from "../Pagination.js";
|
|
26
26
|
import { useSyncConfig } from "../../../hooks/useSyncConfig.js";
|
|
27
27
|
import { DialogContext } from "../../disclosure/DialogContext.js";
|
|
28
|
-
import {
|
|
28
|
+
import { useI18n } from "../../../providers/i18n/I18nContext.js";
|
|
29
29
|
import "./DataSheet.css";
|
|
30
30
|
import { configButtonClass, defaultContainerClass, expandIndentGuideClass, expandIndentGuideLineClass, expandToggleClass, featureCellBodyClickableClass, featureCellBodyWrapperClass, featureCellClickableClass, featureCellWrapperClass, featureTdClass, featureThClass, fixedClass, fixedLastClass, insetContainerClass, insetTableClass, reorderCellWrapperClass, reorderHandleClass, reorderIndicatorClass, resizeIndicatorClass, resizerClass, selectSingleClass, selectSingleSelectedClass, selectSingleUnselectedClass, dataSheetContainerClass, sortableThClass, sortIconClass, summaryThClass, tableClass, tdClass, thClass, thContentClass, toolbarClass } from "./DataSheet.styles.js";
|
|
31
31
|
const DataSheet = (props) => {
|
|
32
32
|
const [local] = splitProps(props, ["items", "persistKey", "hideConfigBar", "inset", "contentStyle", "sorts", "onSortsChange", "autoSort", "page", "onPageChange", "totalPageCount", "itemsPerPage", "displayPageCount", "expandedItems", "onExpandedItemsChange", "getChildren", "selectMode", "selectedItems", "onSelectedItemsChange", "autoSelect", "isItemSelectable", "cellClass", "cellStyle", "onItemsReorder", "class", "children"]);
|
|
33
|
-
const
|
|
34
|
-
const i18n =
|
|
33
|
+
const dialog = useContext(DialogContext);
|
|
34
|
+
const i18n = useI18n();
|
|
35
35
|
const resolved = children(() => local.children);
|
|
36
36
|
const columnDefs = createMemo(() => resolved.toArray().filter(isDataSheetColumnDef));
|
|
37
37
|
const [config, setConfig] = local.persistKey != null && local.persistKey !== "" ? useSyncConfig(`sheet.${local.persistKey}`, {
|
|
@@ -75,8 +75,8 @@ const DataSheet = (props) => {
|
|
|
75
75
|
columnRecord: record
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
|
-
async function
|
|
79
|
-
if (!
|
|
78
|
+
async function openConfigDialog() {
|
|
79
|
+
if (!dialog) return;
|
|
80
80
|
const {
|
|
81
81
|
DataSheetConfigDialog
|
|
82
82
|
} = await import("./DataSheetConfigDialog");
|
|
@@ -90,7 +90,7 @@ const DataSheet = (props) => {
|
|
|
90
90
|
width: col.width
|
|
91
91
|
}));
|
|
92
92
|
const currentConfig = config();
|
|
93
|
-
const result = await
|
|
93
|
+
const result = await dialog.show(() => _$createComponent(DataSheetConfigDialog, {
|
|
94
94
|
columnInfos,
|
|
95
95
|
currentConfig
|
|
96
96
|
}), {
|
|
@@ -526,7 +526,7 @@ const DataSheet = (props) => {
|
|
|
526
526
|
var _el$ = _tmpl$5(), _el$5 = _el$.firstChild, _el$6 = _el$5.firstChild, _el$7 = _el$6.firstChild, _el$1 = _el$7.nextSibling, _el$11 = _el$1.nextSibling, _el$12 = _el$6.nextSibling, _el$13 = _el$12.nextSibling;
|
|
527
527
|
_$insert(_el$, _$createComponent(Show, {
|
|
528
528
|
get when() {
|
|
529
|
-
return _$memo(() => !!!local.hideConfigBar)() && (
|
|
529
|
+
return _$memo(() => !!!local.hideConfigBar)() && (dialog != null || effectivePageCount() > 1);
|
|
530
530
|
},
|
|
531
531
|
get children() {
|
|
532
532
|
var _el$2 = _tmpl$2(), _el$3 = _el$2.firstChild;
|
|
@@ -552,10 +552,10 @@ const DataSheet = (props) => {
|
|
|
552
552
|
}
|
|
553
553
|
}), _el$3);
|
|
554
554
|
_$insert(_el$2, _$createComponent(Show, {
|
|
555
|
-
when:
|
|
555
|
+
when: dialog != null,
|
|
556
556
|
get children() {
|
|
557
557
|
var _el$4 = _tmpl$();
|
|
558
|
-
_el$4.$$click =
|
|
558
|
+
_el$4.$$click = openConfigDialog;
|
|
559
559
|
_$className(_el$4, configButtonClass);
|
|
560
560
|
_$insert(_el$4, _$createComponent(Icon, {
|
|
561
561
|
icon: IconSettings,
|
|
@@ -634,7 +634,7 @@ const DataSheet = (props) => {
|
|
|
634
634
|
}
|
|
635
635
|
}));
|
|
636
636
|
_$effect((_p$) => {
|
|
637
|
-
var _v$7 = twMerge(featureThClass, fixedClass, "z-[5]", isExpandColLastFixed() ? fixedLastClass : void 0), _v$8 = featureHeaderRowspan(), _v$9 = isAllExpanded() ?
|
|
637
|
+
var _v$7 = twMerge(featureThClass, fixedClass, "z-[5]", isExpandColLastFixed() ? fixedLastClass : void 0), _v$8 = featureHeaderRowspan(), _v$9 = isAllExpanded() ? i18n.t("dataSheet.collapseAll") : i18n.t("dataSheet.expandAll");
|
|
638
638
|
_v$7 !== _p$.e && _$className(_el$16, _p$.e = _v$7);
|
|
639
639
|
_v$8 !== _p$.t && _$setAttribute(_el$16, "rowspan", _p$.t = _v$8);
|
|
640
640
|
_v$9 !== _p$.a && _$setAttribute(_el$18, "title", _p$.a = _v$9);
|