@rozie-ui/data-table-solid 0.4.0 → 0.5.0
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 +48 -42
- package/dist/index.cjs +424 -121
- package/dist/index.d.cts +7 -7
- package/dist/index.d.mts +7 -7
- package/dist/index.mjs +424 -121
- package/package.json +2 -2
- package/src/Column.tsx +2 -2
- package/src/DataTable.tsx +232 -29
- package/src/themes/base.css +38 -25
- package/src/themes/bootstrap.css +11 -0
- package/src/themes/material.css +11 -0
- package/src/themes/shadcn.css +11 -0
package/dist/index.d.cts
CHANGED
|
@@ -49,7 +49,7 @@ interface EditorSlotCtx {
|
|
|
49
49
|
}
|
|
50
50
|
interface DataTableProps {
|
|
51
51
|
/**
|
|
52
|
-
* The row data — `model: true`, so a committed cell/row edit writes a **fresh** array back through `
|
|
52
|
+
* The row data — `model: true`, so a committed cell/row edit writes a **fresh** array back through the two-way `data` binding (uncontrolled fallback `dataDefault`). A stable reference per Rozie's setup-once model — fed directly into table-core (never map/cloned in the watcher).
|
|
53
53
|
* @example
|
|
54
54
|
* <DataTable data={rows()} onDataChange={setRows} columns={cols} />
|
|
55
55
|
*/
|
|
@@ -57,7 +57,7 @@ interface DataTableProps {
|
|
|
57
57
|
defaultData?: any[];
|
|
58
58
|
onDataChange?: (data: any[]) => void;
|
|
59
59
|
/**
|
|
60
|
-
* Config-array column fallback (lower precedence than `<Column>` children). Each entry: `{ id?, field, header?, sortable?, filterable?, pinned?, width? }`. Columns may come from this array, from `<Column>` children, or both (id-keyed last-write-wins union).
|
|
60
|
+
* Config-array column fallback (lower precedence than `<Column>` children). Each entry: `{ id?, field, header?, sortable?, filterable?, pinned?, width? }`. Columns may come from this array, from `<Column>` children, or both (id-keyed last-write-wins union). A `pinned` value of `'left'` or `'right'` is applied once as the table's initial `columnPinning` state — identical to `<Column pinned>` — which also REORDERS that column, since table-core orders visible cells `[left-pinned, center, right-pinned]`. A consumer who has already expressed a pin (an initial two-way `columnPinning` model value or an interactive pin) owns the slice and this declaration is ignored.
|
|
61
61
|
*/
|
|
62
62
|
columns?: any[];
|
|
63
63
|
/**
|
|
@@ -101,7 +101,7 @@ interface DataTableProps {
|
|
|
101
101
|
*/
|
|
102
102
|
pageCount?: (number) | null;
|
|
103
103
|
/**
|
|
104
|
-
* Opt-in **expandable rows**. When `true`, a leading chevron expander column auto-injects (after the select column) and `getExpandedRowModel` activates; default `false` is byte-identical-off. Every row can expand to reveal a `#detail` panel unless `getSubRows` is supplied (then only rows with children expand).
|
|
104
|
+
* Opt-in **expandable rows**. When `true`, a leading chevron expander column auto-injects (after the select column) and `getExpandedRowModel` activates; default `false` is byte-identical-off. Every row can expand to reveal a `#detail` panel unless `getSubRows` is supplied (then only rows with children expand). Pass `expandable` as a real boolean — a valueless attribute only coerces to `true` on Vue and Lit.
|
|
105
105
|
*/
|
|
106
106
|
expandable?: boolean;
|
|
107
107
|
/**
|
|
@@ -119,7 +119,7 @@ interface DataTableProps {
|
|
|
119
119
|
*/
|
|
120
120
|
groupable?: boolean;
|
|
121
121
|
/**
|
|
122
|
-
* `GroupingState` — an ordered `string[]` of column ids (multi-column → nested groups, e.g. `['region','category']`). An empty/unbound list is ungrouped (byte-identical-off). Group-header rows are collapsible (they ride the expand model). Surfaces through `group-change`; uncontrolled fallback (`$data.groupingDefault`, default `[]`) when unbound — the default is `null` (mirroring `expanded`) so the uncontrolled fallback is reachable and the grouping auto-expand default can activate when a consumer applies grouping without binding `
|
|
122
|
+
* `GroupingState` — an ordered `string[]` of column ids (multi-column → nested groups, e.g. `['region','category']`). An empty/unbound list is ungrouped (byte-identical-off). Group-header rows are collapsible (they ride the expand model). Surfaces through `group-change`; uncontrolled fallback (`$data.groupingDefault`, default `[]`) when unbound — the default is `null` (mirroring `expanded`) so the uncontrolled fallback is reachable and the grouping auto-expand default can activate when a consumer applies grouping without binding the two-way `grouping` model (a non-null `[]` default would short-circuit it). All reads are null-guarded, so table-core still receives an array.
|
|
123
123
|
*/
|
|
124
124
|
grouping?: (any[]) | null;
|
|
125
125
|
defaultGrouping?: (any[]) | null;
|
|
@@ -159,7 +159,7 @@ interface DataTableProps {
|
|
|
159
159
|
*/
|
|
160
160
|
stickyHeader?: boolean;
|
|
161
161
|
/**
|
|
162
|
-
* `'table'` (default, row-oriented, byte-behaviorally identical to a plain accessible table) | `'grid'`
|
|
162
|
+
* `'table'` (default, row-oriented, byte-behaviorally identical to a plain accessible table) | `'grid'` — lights up the full WAI-ARIA **[grid interaction mode](/components/data-table-grid-mode)**: `role="grid"`, a roving single tab-stop, 2-D APG arrow-key cell navigation, range selection, and clipboard support.
|
|
163
163
|
*/
|
|
164
164
|
interactionMode?: string;
|
|
165
165
|
/**
|
|
@@ -309,7 +309,7 @@ interface ColumnProps {
|
|
|
309
309
|
*/
|
|
310
310
|
filterable?: boolean;
|
|
311
311
|
/**
|
|
312
|
-
*
|
|
312
|
+
* Initial pin side: `''` (unpinned) | `'left'` | `'right'`. Applied once as the table's starting `columnPinning` state, so `getIsPinned()` reports it and the column joins the matching sticky rail — which also reorders it, since visible cells are ordered `[left-pinned, center, right-pinned]`. Ignored if the consumer has already pinned something; an interactive unpin is never re-applied.
|
|
313
313
|
*/
|
|
314
314
|
pinned?: string;
|
|
315
315
|
/**
|
|
@@ -333,7 +333,7 @@ interface ColumnProps {
|
|
|
333
333
|
*/
|
|
334
334
|
editable?: boolean;
|
|
335
335
|
/**
|
|
336
|
-
*
|
|
336
|
+
* Editor type for this column: `'text'` | `'number'` | `'select'` | `'checkbox'` (built-in inputs), or `'custom'` to hand rendering to the `#editor` scoped slot (or a per-column `editor-<columnId>` fill). Default `'text'`. **`'custom'` is the gate:** a column left on a built-in type ignores any `#editor` fill and renders the built-in input. Requires `editable: true` — and, for any pointer or keyboard edit entry, `interactionMode="grid"` on the table.
|
|
337
337
|
*/
|
|
338
338
|
editor?: string;
|
|
339
339
|
/**
|
package/dist/index.d.mts
CHANGED
|
@@ -49,7 +49,7 @@ interface EditorSlotCtx {
|
|
|
49
49
|
}
|
|
50
50
|
interface DataTableProps {
|
|
51
51
|
/**
|
|
52
|
-
* The row data — `model: true`, so a committed cell/row edit writes a **fresh** array back through `
|
|
52
|
+
* The row data — `model: true`, so a committed cell/row edit writes a **fresh** array back through the two-way `data` binding (uncontrolled fallback `dataDefault`). A stable reference per Rozie's setup-once model — fed directly into table-core (never map/cloned in the watcher).
|
|
53
53
|
* @example
|
|
54
54
|
* <DataTable data={rows()} onDataChange={setRows} columns={cols} />
|
|
55
55
|
*/
|
|
@@ -57,7 +57,7 @@ interface DataTableProps {
|
|
|
57
57
|
defaultData?: any[];
|
|
58
58
|
onDataChange?: (data: any[]) => void;
|
|
59
59
|
/**
|
|
60
|
-
* Config-array column fallback (lower precedence than `<Column>` children). Each entry: `{ id?, field, header?, sortable?, filterable?, pinned?, width? }`. Columns may come from this array, from `<Column>` children, or both (id-keyed last-write-wins union).
|
|
60
|
+
* Config-array column fallback (lower precedence than `<Column>` children). Each entry: `{ id?, field, header?, sortable?, filterable?, pinned?, width? }`. Columns may come from this array, from `<Column>` children, or both (id-keyed last-write-wins union). A `pinned` value of `'left'` or `'right'` is applied once as the table's initial `columnPinning` state — identical to `<Column pinned>` — which also REORDERS that column, since table-core orders visible cells `[left-pinned, center, right-pinned]`. A consumer who has already expressed a pin (an initial two-way `columnPinning` model value or an interactive pin) owns the slice and this declaration is ignored.
|
|
61
61
|
*/
|
|
62
62
|
columns?: any[];
|
|
63
63
|
/**
|
|
@@ -101,7 +101,7 @@ interface DataTableProps {
|
|
|
101
101
|
*/
|
|
102
102
|
pageCount?: (number) | null;
|
|
103
103
|
/**
|
|
104
|
-
* Opt-in **expandable rows**. When `true`, a leading chevron expander column auto-injects (after the select column) and `getExpandedRowModel` activates; default `false` is byte-identical-off. Every row can expand to reveal a `#detail` panel unless `getSubRows` is supplied (then only rows with children expand).
|
|
104
|
+
* Opt-in **expandable rows**. When `true`, a leading chevron expander column auto-injects (after the select column) and `getExpandedRowModel` activates; default `false` is byte-identical-off. Every row can expand to reveal a `#detail` panel unless `getSubRows` is supplied (then only rows with children expand). Pass `expandable` as a real boolean — a valueless attribute only coerces to `true` on Vue and Lit.
|
|
105
105
|
*/
|
|
106
106
|
expandable?: boolean;
|
|
107
107
|
/**
|
|
@@ -119,7 +119,7 @@ interface DataTableProps {
|
|
|
119
119
|
*/
|
|
120
120
|
groupable?: boolean;
|
|
121
121
|
/**
|
|
122
|
-
* `GroupingState` — an ordered `string[]` of column ids (multi-column → nested groups, e.g. `['region','category']`). An empty/unbound list is ungrouped (byte-identical-off). Group-header rows are collapsible (they ride the expand model). Surfaces through `group-change`; uncontrolled fallback (`$data.groupingDefault`, default `[]`) when unbound — the default is `null` (mirroring `expanded`) so the uncontrolled fallback is reachable and the grouping auto-expand default can activate when a consumer applies grouping without binding `
|
|
122
|
+
* `GroupingState` — an ordered `string[]` of column ids (multi-column → nested groups, e.g. `['region','category']`). An empty/unbound list is ungrouped (byte-identical-off). Group-header rows are collapsible (they ride the expand model). Surfaces through `group-change`; uncontrolled fallback (`$data.groupingDefault`, default `[]`) when unbound — the default is `null` (mirroring `expanded`) so the uncontrolled fallback is reachable and the grouping auto-expand default can activate when a consumer applies grouping without binding the two-way `grouping` model (a non-null `[]` default would short-circuit it). All reads are null-guarded, so table-core still receives an array.
|
|
123
123
|
*/
|
|
124
124
|
grouping?: (any[]) | null;
|
|
125
125
|
defaultGrouping?: (any[]) | null;
|
|
@@ -159,7 +159,7 @@ interface DataTableProps {
|
|
|
159
159
|
*/
|
|
160
160
|
stickyHeader?: boolean;
|
|
161
161
|
/**
|
|
162
|
-
* `'table'` (default, row-oriented, byte-behaviorally identical to a plain accessible table) | `'grid'`
|
|
162
|
+
* `'table'` (default, row-oriented, byte-behaviorally identical to a plain accessible table) | `'grid'` — lights up the full WAI-ARIA **[grid interaction mode](/components/data-table-grid-mode)**: `role="grid"`, a roving single tab-stop, 2-D APG arrow-key cell navigation, range selection, and clipboard support.
|
|
163
163
|
*/
|
|
164
164
|
interactionMode?: string;
|
|
165
165
|
/**
|
|
@@ -309,7 +309,7 @@ interface ColumnProps {
|
|
|
309
309
|
*/
|
|
310
310
|
filterable?: boolean;
|
|
311
311
|
/**
|
|
312
|
-
*
|
|
312
|
+
* Initial pin side: `''` (unpinned) | `'left'` | `'right'`. Applied once as the table's starting `columnPinning` state, so `getIsPinned()` reports it and the column joins the matching sticky rail — which also reorders it, since visible cells are ordered `[left-pinned, center, right-pinned]`. Ignored if the consumer has already pinned something; an interactive unpin is never re-applied.
|
|
313
313
|
*/
|
|
314
314
|
pinned?: string;
|
|
315
315
|
/**
|
|
@@ -333,7 +333,7 @@ interface ColumnProps {
|
|
|
333
333
|
*/
|
|
334
334
|
editable?: boolean;
|
|
335
335
|
/**
|
|
336
|
-
*
|
|
336
|
+
* Editor type for this column: `'text'` | `'number'` | `'select'` | `'checkbox'` (built-in inputs), or `'custom'` to hand rendering to the `#editor` scoped slot (or a per-column `editor-<columnId>` fill). Default `'text'`. **`'custom'` is the gate:** a column left on a built-in type ignores any `#editor` fill and renders the built-in input. Requires `editable: true` — and, for any pointer or keyboard edit entry, `interactionMode="grid"` on the table.
|
|
337
337
|
*/
|
|
338
338
|
editor?: string;
|
|
339
339
|
/**
|