@simplysm/solid 13.0.78 → 13.0.81
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 +23 -217
- package/dist/components/data/Pagination.js +2 -2
- package/dist/components/data/Pagination.js.map +2 -2
- package/dist/components/data/Table.js +2 -2
- package/dist/components/data/Table.js.map +2 -2
- package/dist/components/data/calendar/Calendar.js +2 -2
- package/dist/components/data/calendar/Calendar.js.map +2 -2
- package/dist/components/data/kanban/Kanban.js +3 -3
- package/dist/components/data/kanban/Kanban.js.map +2 -2
- package/dist/components/data/list/ListItem.js +1 -1
- package/dist/components/data/list/ListItem.js.map +1 -1
- package/dist/components/data/list/ListItem.styles.js +1 -1
- package/dist/components/data/list/ListItem.styles.js.map +1 -1
- package/dist/components/data/sheet/DataSheet.js +16 -16
- package/dist/components/data/sheet/DataSheet.js.map +2 -2
- package/dist/components/data/sheet/DataSheet.styles.d.ts.map +1 -1
- package/dist/components/data/sheet/DataSheet.styles.js +2 -2
- package/dist/components/data/sheet/DataSheet.styles.js.map +1 -1
- package/dist/components/data/sheet/DataSheetConfigDialog.js +5 -5
- package/dist/components/data/sheet/DataSheetConfigDialog.js.map +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetExpansion.d.ts → createDataSheetExpansion.d.ts} +4 -4
- package/dist/components/data/sheet/hooks/createDataSheetExpansion.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetExpansion.js → createDataSheetExpansion.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetExpansion.js.map → createDataSheetExpansion.js.map} +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetFixedColumns.d.ts → createDataSheetFixedColumns.d.ts} +3 -3
- package/dist/components/data/sheet/hooks/createDataSheetFixedColumns.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetFixedColumns.js → createDataSheetFixedColumns.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetFixedColumns.js.map → createDataSheetFixedColumns.js.map} +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetHeaderCell.d.ts → createDataSheetHeaderCell.d.ts} +3 -3
- package/dist/components/data/sheet/hooks/createDataSheetHeaderCell.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetHeaderCell.js → createDataSheetHeaderCell.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetHeaderCell.js.map → createDataSheetHeaderCell.js.map} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetPaging.d.ts → createDataSheetPaging.d.ts} +4 -4
- package/dist/components/data/sheet/hooks/createDataSheetPaging.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetPaging.js → createDataSheetPaging.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetPaging.js.map → createDataSheetPaging.js.map} +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetReorder.d.ts → createDataSheetReorder.d.ts} +3 -3
- package/dist/components/data/sheet/hooks/createDataSheetReorder.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetReorder.js → createDataSheetReorder.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetReorder.js.map → createDataSheetReorder.js.map} +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetSelection.d.ts → createDataSheetSelection.d.ts} +4 -4
- package/dist/components/data/sheet/hooks/createDataSheetSelection.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetSelection.js → createDataSheetSelection.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetSelection.js.map → createDataSheetSelection.js.map} +2 -2
- package/dist/components/data/sheet/hooks/{useDataSheetSorting.d.ts → createDataSheetSorting.d.ts} +4 -4
- package/dist/components/data/sheet/hooks/createDataSheetSorting.d.ts.map +1 -0
- package/dist/components/data/sheet/hooks/{useDataSheetSorting.js → createDataSheetSorting.js} +3 -3
- package/dist/components/data/sheet/hooks/{useDataSheetSorting.js.map → createDataSheetSorting.js.map} +2 -2
- package/dist/components/disclosure/Dialog.d.ts +2 -2
- package/dist/components/disclosure/Dialog.d.ts.map +1 -1
- package/dist/components/disclosure/Dialog.js +4 -4
- package/dist/components/disclosure/Dialog.js.map +2 -2
- package/dist/components/disclosure/Tabs.js +3 -3
- package/dist/components/disclosure/Tabs.js.map +2 -2
- package/dist/components/features/crud-sheet/CrudSheet.js +3 -3
- package/dist/components/features/crud-sheet/CrudSheet.js.map +2 -2
- package/dist/components/features/data-select-button/DataSelectButton.d.ts +23 -9
- package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -1
- package/dist/components/features/data-select-button/DataSelectButton.js +1 -1
- package/dist/components/features/data-select-button/DataSelectButton.js.map +1 -1
- package/dist/components/features/permission-table/PermissionTable.js +2 -2
- package/dist/components/features/permission-table/PermissionTable.js.map +2 -2
- package/dist/components/features/shared-data/SharedDataSelect.d.ts +23 -9
- package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -1
- package/dist/components/features/shared-data/SharedDataSelect.js.map +1 -1
- package/dist/components/features/shared-data/SharedDataSelectButton.d.ts +25 -10
- 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 +1 -1
- package/dist/components/features/shared-data/SharedDataSelectList.js.map +2 -2
- package/dist/components/feedback/Progress.d.ts +1 -1
- package/dist/components/feedback/Progress.d.ts.map +1 -1
- package/dist/components/feedback/Progress.js +3 -3
- package/dist/components/feedback/Progress.js.map +2 -2
- package/dist/components/form-control/Button.js +2 -2
- package/dist/components/form-control/Button.js.map +2 -2
- package/dist/components/form-control/DropdownTrigger.styles.js +2 -2
- package/dist/components/form-control/DropdownTrigger.styles.js.map +1 -1
- package/dist/components/form-control/ThemeToggle.js +4 -4
- package/dist/components/form-control/ThemeToggle.js.map +2 -2
- package/dist/components/form-control/checkbox/Checkbox.d.ts +3 -3
- package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/Checkbox.styles.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/Checkbox.styles.js +3 -3
- package/dist/components/form-control/checkbox/Checkbox.styles.js.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 +3 -3
- package/dist/components/form-control/checkbox/Radio.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 +3 -3
- package/dist/components/form-control/checkbox/SelectableBase.d.ts.map +1 -1
- package/dist/components/form-control/checkbox/SelectableBase.js +10 -10
- package/dist/components/form-control/checkbox/SelectableBase.js.map +2 -2
- package/dist/components/form-control/color-picker/ColorPicker.js +2 -2
- package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
- package/dist/components/form-control/date-range-picker/DateRangePicker.js +1 -1
- package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
- package/dist/components/form-control/editor/EditorToolbar.js +1 -1
- package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
- package/dist/components/form-control/editor/RichTextEditor.js +2 -2
- package/dist/components/form-control/editor/RichTextEditor.js.map +2 -2
- package/dist/components/form-control/field/Field.styles.js +7 -7
- package/dist/components/form-control/field/Field.styles.js.map +1 -1
- package/dist/components/form-control/field/NumberInput.js +1 -1
- package/dist/components/form-control/field/NumberInput.js.map +1 -1
- package/dist/components/form-control/field/TextInput.js +1 -1
- package/dist/components/form-control/field/TextInput.js.map +1 -1
- package/dist/components/form-control/field/Textarea.js +1 -1
- package/dist/components/form-control/field/Textarea.js.map +1 -1
- package/dist/components/form-control/numpad/Numpad.d.ts +2 -2
- package/dist/components/form-control/numpad/Numpad.d.ts.map +1 -1
- package/dist/components/form-control/numpad/Numpad.js +4 -4
- package/dist/components/form-control/numpad/Numpad.js.map +2 -2
- package/dist/components/form-control/select/Select.js +1 -1
- package/dist/components/form-control/select/Select.js.map +2 -2
- package/dist/components/form-control/state-preset/StatePreset.js +8 -8
- package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
- package/dist/components/layout/topbar/Topbar.js +3 -3
- package/dist/components/layout/topbar/Topbar.js.map +2 -2
- package/dist/providers/PwaUpdateProvider.d.ts.map +1 -1
- package/dist/providers/PwaUpdateProvider.js +11 -4
- package/dist/providers/PwaUpdateProvider.js.map +2 -2
- package/dist/styles/control.styles.d.ts +3 -3
- package/dist/styles/control.styles.d.ts.map +1 -1
- package/dist/styles/control.styles.js +2 -2
- package/dist/styles/control.styles.js.map +1 -1
- package/docs/data.md +204 -0
- package/docs/disclosure.md +139 -0
- package/docs/display.md +125 -0
- package/docs/features.md +282 -0
- package/docs/feedback.md +136 -0
- package/docs/form-controls.md +520 -0
- package/docs/helpers.md +172 -0
- package/docs/hooks.md +146 -0
- package/docs/layout.md +94 -0
- package/docs/providers.md +179 -0
- package/package.json +19 -18
- package/src/components/data/Pagination.tsx +2 -2
- package/src/components/data/Table.tsx +2 -2
- package/src/components/data/calendar/Calendar.tsx +2 -2
- package/src/components/data/kanban/Kanban.tsx +2 -2
- package/src/components/data/list/ListItem.styles.ts +1 -1
- package/src/components/data/list/ListItem.tsx +1 -1
- package/src/components/data/sheet/DataSheet.styles.ts +2 -2
- package/src/components/data/sheet/DataSheet.tsx +16 -16
- package/src/components/data/sheet/DataSheetConfigDialog.tsx +5 -5
- package/src/components/data/sheet/hooks/{useDataSheetExpansion.ts → createDataSheetExpansion.ts} +5 -5
- package/src/components/data/sheet/hooks/{useDataSheetFixedColumns.ts → createDataSheetFixedColumns.ts} +3 -3
- package/src/components/data/sheet/hooks/{useDataSheetHeaderCell.tsx → createDataSheetHeaderCell.tsx} +2 -2
- package/src/components/data/sheet/hooks/{useDataSheetPaging.ts → createDataSheetPaging.ts} +5 -5
- package/src/components/data/sheet/hooks/{useDataSheetReorder.ts → createDataSheetReorder.ts} +3 -3
- package/src/components/data/sheet/hooks/{useDataSheetSelection.ts → createDataSheetSelection.ts} +5 -5
- package/src/components/data/sheet/hooks/{useDataSheetSorting.ts → createDataSheetSorting.ts} +5 -5
- package/src/components/disclosure/Dialog.tsx +5 -5
- package/src/components/disclosure/Tabs.tsx +3 -3
- package/src/components/features/crud-sheet/CrudSheet.tsx +3 -3
- package/src/components/features/data-select-button/DataSelectButton.tsx +42 -11
- package/src/components/features/permission-table/PermissionTable.tsx +2 -2
- package/src/components/features/shared-data/SharedDataSelect.tsx +45 -14
- package/src/components/features/shared-data/SharedDataSelectButton.tsx +38 -11
- package/src/components/features/shared-data/SharedDataSelectList.tsx +1 -1
- package/src/components/feedback/Progress.tsx +4 -4
- package/src/components/form-control/Button.tsx +2 -2
- package/src/components/form-control/DropdownTrigger.styles.ts +2 -2
- package/src/components/form-control/ThemeToggle.tsx +4 -4
- package/src/components/form-control/checkbox/Checkbox.styles.ts +3 -3
- package/src/components/form-control/checkbox/Checkbox.tsx +3 -3
- package/src/components/form-control/checkbox/CheckboxGroup.tsx +2 -2
- package/src/components/form-control/checkbox/Radio.tsx +3 -3
- package/src/components/form-control/checkbox/RadioGroup.tsx +2 -2
- package/src/components/form-control/checkbox/SelectableBase.tsx +15 -15
- package/src/components/form-control/color-picker/ColorPicker.tsx +2 -2
- package/src/components/form-control/date-range-picker/DateRangePicker.tsx +1 -1
- package/src/components/form-control/editor/EditorToolbar.tsx +1 -1
- package/src/components/form-control/editor/RichTextEditor.tsx +2 -2
- package/src/components/form-control/field/Field.styles.ts +7 -7
- package/src/components/form-control/field/NumberInput.tsx +1 -1
- package/src/components/form-control/field/TextInput.tsx +1 -1
- package/src/components/form-control/field/Textarea.tsx +1 -1
- package/src/components/form-control/numpad/Numpad.tsx +6 -6
- package/src/components/form-control/select/Select.tsx +1 -1
- package/src/components/form-control/state-preset/StatePreset.tsx +9 -9
- package/src/components/layout/topbar/Topbar.tsx +3 -3
- package/src/providers/PwaUpdateProvider.tsx +12 -5
- package/src/styles/control.styles.ts +3 -3
- package/tests/components/data/sheet/hooks/{useDataSheetExpansion.spec.ts → createDataSheetExpansion.spec.ts} +16 -16
- package/tests/components/data/sheet/hooks/{useDataSheetFixedColumns.spec.ts → createDataSheetFixedColumns.spec.ts} +27 -27
- package/tests/components/data/sheet/hooks/{useDataSheetPaging.spec.ts → createDataSheetPaging.spec.ts} +16 -16
- package/tests/components/data/sheet/hooks/{useDataSheetReorder.spec.ts → createDataSheetReorder.spec.ts} +14 -14
- package/tests/components/data/sheet/hooks/{useDataSheetSelection.spec.ts → createDataSheetSelection.spec.ts} +26 -26
- package/tests/components/data/sheet/hooks/{useDataSheetSorting.spec.ts → createDataSheetSorting.spec.ts} +13 -13
- package/tests/components/disclosure/Dialog.spec.tsx +2 -2
- package/tests/components/features/data-select-button/DataSelectButton.spec.tsx +55 -6
- package/tests/components/features/shared-data/SharedDataSelect.spec.tsx +40 -0
- package/tests/components/form-control/checkbox/Checkbox.spec.tsx +8 -8
- package/tests/components/form-control/checkbox/Radio.spec.tsx +9 -9
- package/tests/components/form-control/numpad/Numpad.spec.tsx +10 -10
- package/dist/components/data/sheet/hooks/useDataSheetExpansion.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetFixedColumns.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetHeaderCell.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetPaging.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetReorder.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetSelection.d.ts.map +0 -1
- package/dist/components/data/sheet/hooks/useDataSheetSorting.d.ts.map +0 -1
package/docs/data.md
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# Data
|
|
2
|
+
|
|
3
|
+
## Table
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
interface TableProps extends JSX.HTMLAttributes<HTMLTableElement> {
|
|
7
|
+
inset?: boolean;
|
|
8
|
+
}
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Basic HTML table with consistent styling.
|
|
12
|
+
|
|
13
|
+
**Sub-components:** `Table.Row`, `Table.HeaderCell`, `Table.Cell`
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## List
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
interface ListProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
21
|
+
inset?: boolean;
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Vertical list with keyboard navigation (ArrowUp/Down, Home/End) and tree-view support (ArrowRight/Left to expand/collapse).
|
|
26
|
+
|
|
27
|
+
**Sub-component:** `List.Item`
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Pagination
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
interface PaginationProps extends JSX.HTMLAttributes<HTMLElement> {
|
|
35
|
+
page: number;
|
|
36
|
+
onPageChange?: (page: number) => void;
|
|
37
|
+
totalPageCount: number;
|
|
38
|
+
displayPageCount?: number;
|
|
39
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl";
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Page navigation control. `page` is 1-based. `displayPageCount` controls how many page numbers are visible at once.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## DataSheet
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
interface DataSheetProps<TItem> {
|
|
51
|
+
items?: TItem[];
|
|
52
|
+
storageKey?: string;
|
|
53
|
+
hideConfigBar?: boolean;
|
|
54
|
+
inset?: boolean;
|
|
55
|
+
contentStyle?: JSX.CSSProperties | string;
|
|
56
|
+
|
|
57
|
+
// Sorting
|
|
58
|
+
sorts?: SortingDef[];
|
|
59
|
+
onSortsChange?: (sorts: SortingDef[]) => void;
|
|
60
|
+
autoSort?: boolean;
|
|
61
|
+
|
|
62
|
+
// Pagination
|
|
63
|
+
page?: number;
|
|
64
|
+
onPageChange?: (page: number) => void;
|
|
65
|
+
totalPageCount?: number;
|
|
66
|
+
pageSize?: number;
|
|
67
|
+
displayPageCount?: number;
|
|
68
|
+
|
|
69
|
+
// Selection
|
|
70
|
+
selectionMode?: "single" | "multiple";
|
|
71
|
+
selection?: TItem[];
|
|
72
|
+
onSelectionChange?: (items: TItem[]) => void;
|
|
73
|
+
autoSelect?: boolean;
|
|
74
|
+
isItemSelectable?: (item: TItem) => boolean | string;
|
|
75
|
+
|
|
76
|
+
// Tree expansion
|
|
77
|
+
expandedItems?: TItem[];
|
|
78
|
+
onExpandedItemsChange?: (items: TItem[]) => void;
|
|
79
|
+
itemChildren?: (item: TItem, index: number) => TItem[] | undefined;
|
|
80
|
+
|
|
81
|
+
// Cell styling
|
|
82
|
+
cellClass?: (item: TItem, colKey: string) => string | undefined;
|
|
83
|
+
cellStyle?: (item: TItem, colKey: string) => string | undefined;
|
|
84
|
+
|
|
85
|
+
// Reordering
|
|
86
|
+
onItemsReorder?: (event: DataSheetReorderEvent<TItem>) => void;
|
|
87
|
+
|
|
88
|
+
class?: string;
|
|
89
|
+
children: JSX.Element;
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Advanced data grid with sorting, pagination, row selection, tree expansion, column reordering, and column configuration persistence.
|
|
94
|
+
|
|
95
|
+
- `storageKey` — persists column configuration (width, visibility, order) to sync storage
|
|
96
|
+
- `autoSort` — sorts items client-side without `onSortsChange`
|
|
97
|
+
- `autoSelect` — manages selection state internally
|
|
98
|
+
- `itemChildren` — enables tree-structured rows
|
|
99
|
+
|
|
100
|
+
**Sub-component:** `DataSheet.Column`
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
interface DataSheetColumnProps<TItem> {
|
|
104
|
+
key: string;
|
|
105
|
+
header?: string | string[];
|
|
106
|
+
headerContent?: () => JSX.Element;
|
|
107
|
+
headerStyle?: string;
|
|
108
|
+
summary?: () => JSX.Element;
|
|
109
|
+
tooltip?: string;
|
|
110
|
+
fixed?: boolean;
|
|
111
|
+
hidden?: boolean;
|
|
112
|
+
collapse?: boolean;
|
|
113
|
+
width?: string;
|
|
114
|
+
class?: string;
|
|
115
|
+
sortable?: boolean;
|
|
116
|
+
resizable?: boolean;
|
|
117
|
+
children: (ctx: DataSheetCellContext<TItem>) => JSX.Element;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
interface DataSheetCellContext<TItem> {
|
|
121
|
+
item: TItem;
|
|
122
|
+
index: number;
|
|
123
|
+
row: number;
|
|
124
|
+
depth: number;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
interface SortingDef {
|
|
128
|
+
key: string;
|
|
129
|
+
desc: boolean;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
interface DataSheetReorderEvent<TItem> {
|
|
133
|
+
item: TItem;
|
|
134
|
+
targetItem: TItem;
|
|
135
|
+
position: "before" | "after" | "inside";
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Calendar
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
interface CalendarProps<TValue> extends Omit<JSX.HTMLAttributes<HTMLTableElement>, "children"> {
|
|
145
|
+
items: TValue[];
|
|
146
|
+
getItemDate: (item: TValue, index: number) => DateOnly;
|
|
147
|
+
renderItem: (item: TValue, index: number) => JSX.Element;
|
|
148
|
+
yearMonth?: DateOnly;
|
|
149
|
+
onYearMonthChange?: (value: DateOnly) => void;
|
|
150
|
+
weekStartDay?: number;
|
|
151
|
+
minDaysInFirstWeek?: number;
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Monthly calendar view that renders items on their corresponding dates. `getItemDate` maps items to dates. `renderItem` renders each item cell.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Kanban
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
interface KanbanProps<TCardValue, TLaneValue> extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "children" | "onDrop"> {
|
|
163
|
+
onDrop?: (info: KanbanDropInfo<TLaneValue, TCardValue>) => void;
|
|
164
|
+
selectedValues?: TCardValue[];
|
|
165
|
+
onSelectedValuesChange?: (values: TCardValue[]) => void;
|
|
166
|
+
children?: JSX.Element;
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Kanban board with drag-and-drop card management.
|
|
171
|
+
|
|
172
|
+
**Sub-components:**
|
|
173
|
+
- `Kanban.Lane` — `{ value?: TLaneValue; busy?: boolean; collapsible?: boolean; collapsed?: boolean; onCollapsedChange?: (collapsed: boolean) => void }`
|
|
174
|
+
- `Kanban.Card` — `{ value?: TCardValue; draggable?: boolean; selectable?: boolean; contentClass?: string }`
|
|
175
|
+
- `Kanban.LaneTitle` — lane title slot
|
|
176
|
+
- `Kanban.LaneTools` — lane toolbar slot
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Usage Examples
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
import { DataSheet, Pagination } from "@simplysm/solid";
|
|
184
|
+
|
|
185
|
+
<DataSheet
|
|
186
|
+
items={data()}
|
|
187
|
+
sorts={sorts()}
|
|
188
|
+
onSortsChange={setSorts}
|
|
189
|
+
page={page()}
|
|
190
|
+
onPageChange={setPage}
|
|
191
|
+
totalPageCount={totalPages()}
|
|
192
|
+
selectionMode="multiple"
|
|
193
|
+
selection={selected()}
|
|
194
|
+
onSelectionChange={setSelected}
|
|
195
|
+
storageKey="my-table"
|
|
196
|
+
>
|
|
197
|
+
<DataSheet.Column key="name" header="Name" sortable>
|
|
198
|
+
{(ctx) => ctx.item.name}
|
|
199
|
+
</DataSheet.Column>
|
|
200
|
+
<DataSheet.Column key="age" header="Age" sortable width="80px">
|
|
201
|
+
{(ctx) => ctx.item.age}
|
|
202
|
+
</DataSheet.Column>
|
|
203
|
+
</DataSheet>
|
|
204
|
+
```
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Disclosure
|
|
2
|
+
|
|
3
|
+
## Collapse
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
interface CollapseProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
7
|
+
open?: boolean;
|
|
8
|
+
}
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Collapsible content panel with CSS transition. Content is hidden when `open` is `false`.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Dropdown
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
interface DropdownProps {
|
|
19
|
+
position?: { x: number; y: number };
|
|
20
|
+
open?: boolean;
|
|
21
|
+
onOpenChange?: (open: boolean) => void;
|
|
22
|
+
maxHeight?: number;
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
keyboardNav?: boolean;
|
|
25
|
+
class?: string;
|
|
26
|
+
style?: JSX.CSSProperties;
|
|
27
|
+
children: JSX.Element;
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Dropdown popup anchored to a trigger element. When `position` is provided instead of a trigger, the popup appears at the given absolute coordinates (useful for context menus). `keyboardNav` enables ArrowUp/Down navigation. Default `maxHeight` is 300px.
|
|
32
|
+
|
|
33
|
+
**Sub-components:**
|
|
34
|
+
- `Dropdown.Trigger` — the element that opens the dropdown on click
|
|
35
|
+
- `Dropdown.Content` — the popup content
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Dialog
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
interface DialogProps {
|
|
43
|
+
open?: boolean;
|
|
44
|
+
onOpenChange?: (open: boolean) => void;
|
|
45
|
+
withCloseButton?: boolean;
|
|
46
|
+
closeOnInteractOutside?: boolean;
|
|
47
|
+
closeOnEscape?: boolean;
|
|
48
|
+
resizable?: boolean;
|
|
49
|
+
draggable?: boolean;
|
|
50
|
+
mode?: "float" | "fill";
|
|
51
|
+
width?: number;
|
|
52
|
+
height?: number;
|
|
53
|
+
minWidth?: number;
|
|
54
|
+
minHeight?: number;
|
|
55
|
+
position?: "bottom-right" | "top-right";
|
|
56
|
+
headerStyle?: JSX.CSSProperties | string;
|
|
57
|
+
beforeClose?: () => boolean;
|
|
58
|
+
onCloseComplete?: () => void;
|
|
59
|
+
class?: string;
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Modal dialog with overlay. Supports both declarative (template) and programmatic usage.
|
|
64
|
+
|
|
65
|
+
- `mode="float"` — centered floating dialog (default)
|
|
66
|
+
- `mode="fill"` — full-screen dialog
|
|
67
|
+
- `beforeClose` — return `false` to prevent closing
|
|
68
|
+
- `resizable` / `draggable` — enable resize handles / drag-to-move
|
|
69
|
+
|
|
70
|
+
**Sub-components:**
|
|
71
|
+
- `Dialog.Header` — dialog title bar
|
|
72
|
+
- `Dialog.Action` — dialog action buttons area
|
|
73
|
+
|
|
74
|
+
### Programmatic API
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
interface DialogContextValue {
|
|
78
|
+
show<P>(
|
|
79
|
+
component: Component<P>,
|
|
80
|
+
props: Omit<P, "close">,
|
|
81
|
+
options?: DialogShowOptions,
|
|
82
|
+
): Promise<ExtractCloseResult<P> | undefined>;
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Use `DialogProvider` and `useDialog()` for programmatic dialog management. The shown component receives a `close(result?)` prop to close the dialog and return a value.
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
const dialog = useDialog();
|
|
90
|
+
const result = await dialog.show(MyDialogContent, { data }, {
|
|
91
|
+
width: 600,
|
|
92
|
+
withCloseButton: true,
|
|
93
|
+
});
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Tabs
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
interface TabsProps {
|
|
102
|
+
value?: string;
|
|
103
|
+
onValueChange?: (value: string) => void;
|
|
104
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl";
|
|
105
|
+
class?: string;
|
|
106
|
+
style?: JSX.CSSProperties;
|
|
107
|
+
children?: JSX.Element;
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Tab navigation. Content rendering is managed externally based on the selected `value`.
|
|
112
|
+
|
|
113
|
+
**Sub-component:** `Tabs.Tab` — `{ value: string; disabled?: boolean; class?: string; children?: JSX.Element }`
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Usage Examples
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
import { Dialog, Dropdown, Tabs, Collapse } from "@simplysm/solid";
|
|
121
|
+
|
|
122
|
+
// Declarative dialog
|
|
123
|
+
<Dialog open={isOpen()} onOpenChange={setIsOpen} width={500} withCloseButton>
|
|
124
|
+
<Dialog.Header>Edit User</Dialog.Header>
|
|
125
|
+
<form>...</form>
|
|
126
|
+
<Dialog.Action>
|
|
127
|
+
<Button onClick={() => setIsOpen(false)}>Cancel</Button>
|
|
128
|
+
<Button theme="primary" onClick={save}>Save</Button>
|
|
129
|
+
</Dialog.Action>
|
|
130
|
+
</Dialog>
|
|
131
|
+
|
|
132
|
+
// Tabs
|
|
133
|
+
<Tabs value={tab()} onValueChange={setTab}>
|
|
134
|
+
<Tabs.Tab value="general">General</Tabs.Tab>
|
|
135
|
+
<Tabs.Tab value="settings">Settings</Tabs.Tab>
|
|
136
|
+
</Tabs>
|
|
137
|
+
<Show when={tab() === "general"}>General content</Show>
|
|
138
|
+
<Show when={tab() === "settings"}>Settings content</Show>
|
|
139
|
+
```
|
package/docs/display.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Display
|
|
2
|
+
|
|
3
|
+
## Card
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
interface CardProps extends JSX.HTMLAttributes<HTMLDivElement> {}
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Simple card container with default border and background styling.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Icon
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
interface IconProps extends Omit<TablerIconProps, "size"> {
|
|
17
|
+
icon: Component<TablerIconProps>;
|
|
18
|
+
size?: string | number;
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Renders a Tabler icon. Pass the icon component via the `icon` prop.
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import { Icon } from "@simplysm/solid";
|
|
26
|
+
import { IconUser } from "@tabler/icons-solidjs";
|
|
27
|
+
|
|
28
|
+
<Icon icon={IconUser} size={24} />
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Tag
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
interface TagProps extends JSX.HTMLAttributes<HTMLSpanElement> {
|
|
37
|
+
theme?: "base" | "primary" | "success" | "warning" | "danger" | "danger-light" | "neutral";
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Inline badge/tag with semantic theming.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Link
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
interface LinkProps extends JSX.AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
49
|
+
theme?: "base" | "primary" | "success" | "warning" | "danger" | "danger-light" | "neutral";
|
|
50
|
+
disabled?: boolean;
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Styled anchor link with theme and disabled state.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Alert
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
interface AlertProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
62
|
+
theme?: "base" | "primary" | "success" | "warning" | "danger" | "danger-light" | "neutral";
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Alert banner with semantic theming.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Barcode
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
interface BarcodeProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
74
|
+
type: BarcodeType;
|
|
75
|
+
value?: string;
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Renders barcodes and QR codes using bwip-js. `type` supports 111+ barcode formats including `"qrcode"`, `"code128"`, `"ean13"`, `"datamatrix"`, etc.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Echarts
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
interface EchartsProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
87
|
+
option: echarts.EChartsOption;
|
|
88
|
+
busy?: boolean;
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Apache ECharts wrapper. Requires `echarts` as a peer dependency. Set `busy` to show a loading overlay.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Progress
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
interface ProgressProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
100
|
+
value: number;
|
|
101
|
+
theme?: "base" | "primary" | "success" | "warning" | "danger" | "danger-light" | "neutral";
|
|
102
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl";
|
|
103
|
+
inset?: boolean;
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Progress bar. `value` is in the range 0–100 (0 = 0%, 100 = 100%). Pass `children` to display custom content instead of the default percentage text.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Usage Examples
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { Card, Tag, Alert, Progress, Icon } from "@simplysm/solid";
|
|
115
|
+
import { IconCheck } from "@tabler/icons-solidjs";
|
|
116
|
+
|
|
117
|
+
<Card>
|
|
118
|
+
<Tag theme="success">Active</Tag>
|
|
119
|
+
<Progress value={75} theme="primary" />
|
|
120
|
+
</Card>
|
|
121
|
+
|
|
122
|
+
<Alert theme="warning">
|
|
123
|
+
<Icon icon={IconCheck} /> Operation completed with warnings.
|
|
124
|
+
</Alert>
|
|
125
|
+
```
|