@sectile/vue 0.7.0 → 0.8.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 +4 -2
- package/dist/accordion.d.ts +0 -1
- package/dist/alert-dialog.d.ts +0 -2
- package/dist/alert-dialog.js.map +1 -1
- package/dist/calendar.d.ts +2 -3
- package/dist/calendar.js +14 -14
- package/dist/calendar.js.map +1 -1
- package/dist/carousel.d.ts +22 -1
- package/dist/carousel.js +7 -1
- package/dist/carousel.js.map +1 -1
- package/dist/cascade-list.d.ts +339 -0
- package/dist/cascade-list.js +240 -0
- package/dist/cascade-list.js.map +1 -0
- package/dist/cascade-select.d.ts +11 -42
- package/dist/cascade-select.js +19 -27
- package/dist/cascade-select.js.map +1 -1
- package/dist/checkbox-group.d.ts +9 -1
- package/dist/checkbox-group.js +57 -13
- package/dist/checkbox-group.js.map +1 -1
- package/dist/checkbox.d.ts +0 -1
- package/dist/checkbox.js +15 -8
- package/dist/checkbox.js.map +1 -1
- package/dist/color-picker.d.ts +0 -1
- package/dist/combobox.d.ts +0 -1
- package/dist/combobox.js +46 -6
- package/dist/combobox.js.map +1 -1
- package/dist/data-grid.d.ts +214 -0
- package/dist/data-grid.js +107 -0
- package/dist/data-grid.js.map +1 -0
- package/dist/data-table.d.ts +232 -0
- package/dist/data-table.js +116 -0
- package/dist/data-table.js.map +1 -0
- package/dist/data-tree-grid.d.ts +225 -0
- package/dist/data-tree-grid.js +98 -0
- package/dist/data-tree-grid.js.map +1 -0
- package/dist/date-field.d.ts +1 -2
- package/dist/date-field.js +1 -1
- package/dist/date-field.js.map +1 -1
- package/dist/date-picker.d.ts +37 -6
- package/dist/date-picker.js +3 -1
- package/dist/date-picker.js.map +1 -1
- package/dist/date-range-field.d.ts +2 -3
- package/dist/date-range-field.js +24 -6
- package/dist/date-range-field.js.map +1 -1
- package/dist/date-range-picker.d.ts +37 -6
- package/dist/date-range-picker.js +3 -1
- package/dist/date-range-picker.js.map +1 -1
- package/dist/date-time-field.d.ts +1 -2
- package/dist/date-time-field.js +1 -1
- package/dist/date-time-field.js.map +1 -1
- package/dist/date-time-picker.d.ts +38 -7
- package/dist/date-time-picker.js +3 -1
- package/dist/date-time-picker.js.map +1 -1
- package/dist/date-time-range-picker.d.ts +38 -7
- package/dist/date-time-range-picker.js +3 -1
- package/dist/date-time-range-picker.js.map +1 -1
- package/dist/dialog.d.ts +0 -2
- package/dist/dialog.js.map +1 -1
- package/dist/disclosure.d.ts +0 -1
- package/dist/drawer.d.ts +1 -2
- package/dist/editable.d.ts +0 -1
- package/dist/editable.js +25 -6
- package/dist/editable.js.map +1 -1
- package/dist/feed.d.ts +0 -1
- package/dist/form.d.ts +88 -115
- package/dist/form.js +461 -233
- package/dist/form.js.map +1 -1
- package/dist/grid.d.ts +0 -1
- package/dist/grid.js +51 -6
- package/dist/grid.js.map +1 -1
- package/dist/host-provider.d.ts +0 -13
- package/dist/host-provider.js +0 -16
- package/dist/host-provider.js.map +1 -1
- package/dist/index.d.ts +14 -39
- package/dist/index.js +6 -19
- package/dist/index.js.map +1 -1
- package/dist/internal/cascade-choice.d.ts +204 -0
- package/dist/internal/cascade-choice.js +161 -0
- package/dist/internal/cascade-choice.js.map +1 -0
- package/dist/internal/collection.d.ts +3 -8
- package/dist/internal/collection.js +14 -20
- package/dist/internal/collection.js.map +1 -1
- package/dist/internal/controlled-state.d.ts +0 -1
- package/dist/internal/date-picker.d.ts +78 -9
- package/dist/internal/date-picker.js +116 -27
- package/dist/internal/date-picker.js.map +1 -1
- package/dist/internal/decimal-input.d.ts +1 -0
- package/dist/internal/decimal-input.js +24 -0
- package/dist/internal/decimal-input.js.map +1 -0
- package/dist/internal/form-control-inventory.d.ts +4 -1
- package/dist/internal/form-control-inventory.js +1 -0
- package/dist/internal/form-control-inventory.js.map +1 -1
- package/dist/internal/form-control.d.ts +100 -2
- package/dist/internal/form-control.js +103 -1
- package/dist/internal/form-control.js.map +1 -1
- package/dist/internal/native-field.d.ts +0 -1
- package/dist/internal/native-field.js +11 -2
- package/dist/internal/native-field.js.map +1 -1
- package/dist/internal/native-input.d.ts +0 -1
- package/dist/internal/part-contract.d.ts +0 -1
- package/dist/internal/popup.d.ts +5 -27
- package/dist/internal/popup.js +14 -20
- package/dist/internal/popup.js.map +1 -1
- package/dist/internal/presence.d.ts +0 -1
- package/dist/internal/scheduled-task.d.ts +5 -0
- package/dist/internal/scheduled-task.js +28 -0
- package/dist/internal/scheduled-task.js.map +1 -0
- package/dist/internal/tabs-context.d.ts +2 -3
- package/dist/internal/tabular-components.d.ts +27 -0
- package/dist/internal/tabular-components.js +26 -0
- package/dist/internal/tabular-components.js.map +1 -0
- package/dist/internal/tabular-parts.d.ts +57 -0
- package/dist/internal/tabular-parts.js +239 -0
- package/dist/internal/tabular-parts.js.map +1 -0
- package/dist/internal/tabular-profile.d.ts +75 -0
- package/dist/internal/tabular-profile.js +209 -0
- package/dist/internal/tabular-profile.js.map +1 -0
- package/dist/internal/virtual-collection-model.d.ts +42 -0
- package/dist/internal/virtual-collection-model.js +241 -0
- package/dist/internal/virtual-collection-model.js.map +1 -0
- package/dist/internal/virtual-collection.d.ts +38 -0
- package/dist/internal/virtual-collection.js +87 -0
- package/dist/internal/virtual-collection.js.map +1 -0
- package/dist/{virtual.d.ts → internal/virtual-core.d.ts} +9 -4
- package/dist/{virtual.js → internal/virtual-core.js} +7 -7
- package/dist/internal/virtual-core.js.map +1 -0
- package/dist/internal/virtual-list.d.ts +214 -0
- package/dist/internal/virtual-list.js +401 -0
- package/dist/internal/virtual-list.js.map +1 -0
- package/dist/listbox.d.ts +0 -1
- package/dist/listbox.js +52 -6
- package/dist/listbox.js.map +1 -1
- package/dist/menu-button.d.ts +0 -1
- package/dist/menu.d.ts +0 -1
- package/dist/menubar.d.ts +0 -1
- package/dist/meter-group.d.ts +369 -0
- package/dist/meter-group.js +271 -0
- package/dist/meter-group.js.map +1 -0
- package/dist/meter.d.ts +191 -0
- package/dist/meter.js +133 -0
- package/dist/meter.js.map +1 -0
- package/dist/month-picker.d.ts +37 -6
- package/dist/month-picker.js +3 -1
- package/dist/month-picker.js.map +1 -1
- package/dist/month-range-picker.d.ts +37 -6
- package/dist/month-range-picker.js +3 -1
- package/dist/month-range-picker.js.map +1 -1
- package/dist/multi-thumb-slider.d.ts +0 -1
- package/dist/navigation-menu.d.ts +0 -1
- package/dist/number-field.d.ts +0 -1
- package/dist/pagination.d.ts +23 -2
- package/dist/pagination.js +6 -1
- package/dist/pagination.js.map +1 -1
- package/dist/pin-input.d.ts +0 -1
- package/dist/pin-input.js +1 -1
- package/dist/pin-input.js.map +1 -1
- package/dist/popover.d.ts +0 -2
- package/dist/popover.js.map +1 -1
- package/dist/primitive.d.ts +0 -1
- package/dist/primitive.js +8 -4
- package/dist/primitive.js.map +1 -1
- package/dist/progress.d.ts +148 -0
- package/dist/progress.js +110 -0
- package/dist/progress.js.map +1 -0
- package/dist/quantity-field.d.ts +0 -1
- package/dist/radio-group.d.ts +0 -1
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/range-calendar.d.ts +2 -3
- package/dist/rating.d.ts +0 -1
- package/dist/rating.js +10 -1
- package/dist/rating.js.map +1 -1
- package/dist/reorder.d.ts +1 -2
- package/dist/select.d.ts +18 -44
- package/dist/select.js +11 -13
- package/dist/select.js.map +1 -1
- package/dist/slider.d.ts +0 -1
- package/dist/spin-button.d.ts +0 -1
- package/dist/spin-button.js +17 -4
- package/dist/spin-button.js.map +1 -1
- package/dist/stepper.d.ts +0 -1
- package/dist/stepper.js +19 -2
- package/dist/stepper.js.map +1 -1
- package/dist/switch.d.ts +0 -1
- package/dist/tabs.d.ts +0 -1
- package/dist/tabs.js +4 -22
- package/dist/tabs.js.map +1 -1
- package/dist/tags-input.d.ts +0 -1
- package/dist/tags-input.js +18 -5
- package/dist/tags-input.js.map +1 -1
- package/dist/temporal-provider.d.ts +21 -0
- package/dist/temporal-provider.js +30 -0
- package/dist/temporal-provider.js.map +1 -0
- package/dist/text.d.ts +0 -1
- package/dist/text.js +18 -4
- package/dist/text.js.map +1 -1
- package/dist/time-field.d.ts +1 -2
- package/dist/time-field.js +1 -1
- package/dist/time-field.js.map +1 -1
- package/dist/time-range-field.d.ts +2 -2
- package/dist/time-range-field.js +6 -4
- package/dist/time-range-field.js.map +1 -1
- package/dist/timer.d.ts +0 -1
- package/dist/toast.d.ts +11 -2
- package/dist/toast.js +22 -9
- package/dist/toast.js.map +1 -1
- package/dist/toggle-button.d.ts +0 -1
- package/dist/toggle-group.d.ts +0 -1
- package/dist/toggle-group.js +1 -1
- package/dist/toggle-group.js.map +1 -1
- package/dist/toolbar.d.ts +0 -1
- package/dist/tooltip.d.ts +1 -3
- package/dist/tooltip.js.map +1 -1
- package/dist/tree-grid.d.ts +0 -1
- package/dist/tree-grid.js +62 -8
- package/dist/tree-grid.js.map +1 -1
- package/dist/tree-view.d.ts +0 -1
- package/dist/tree-view.js +51 -10
- package/dist/tree-view.js.map +1 -1
- package/dist/virtual-core.d.ts +1 -0
- package/dist/virtual-core.js +2 -0
- package/dist/virtual-core.js.map +1 -0
- package/dist/virtual-grid.d.ts +188 -0
- package/dist/virtual-grid.js +306 -0
- package/dist/virtual-grid.js.map +1 -0
- package/dist/virtual-list.d.ts +1 -0
- package/dist/virtual-list.js +2 -0
- package/dist/virtual-list.js.map +1 -0
- package/dist/virtual-masonry.d.ts +198 -0
- package/dist/virtual-masonry.js +221 -0
- package/dist/virtual-masonry.js.map +1 -0
- package/dist/virtual-spatial.d.ts +157 -0
- package/dist/virtual-spatial.js +159 -0
- package/dist/virtual-spatial.js.map +1 -0
- package/dist/window-splitter.d.ts +0 -1
- package/dist/year-picker.d.ts +37 -6
- package/dist/year-picker.js +3 -1
- package/dist/year-picker.js.map +1 -1
- package/dist/year-range-picker.d.ts +37 -6
- package/dist/year-range-picker.js +3 -1
- package/dist/year-range-picker.js.map +1 -1
- package/package.json +173 -89
- package/dist/accordion.d.ts.map +0 -1
- package/dist/alert-dialog.d.ts.map +0 -1
- package/dist/calendar.d.ts.map +0 -1
- package/dist/carousel.d.ts.map +0 -1
- package/dist/cascade-select.d.ts.map +0 -1
- package/dist/checkbox-group.d.ts.map +0 -1
- package/dist/checkbox.d.ts.map +0 -1
- package/dist/color-picker.d.ts.map +0 -1
- package/dist/combobox.d.ts.map +0 -1
- package/dist/date-field.d.ts.map +0 -1
- package/dist/date-picker.d.ts.map +0 -1
- package/dist/date-range-field.d.ts.map +0 -1
- package/dist/date-range-picker.d.ts.map +0 -1
- package/dist/date-time-field.d.ts.map +0 -1
- package/dist/date-time-picker.d.ts.map +0 -1
- package/dist/date-time-range-picker.d.ts.map +0 -1
- package/dist/dialog.d.ts.map +0 -1
- package/dist/disclosure.d.ts.map +0 -1
- package/dist/drawer.d.ts.map +0 -1
- package/dist/editable.d.ts.map +0 -1
- package/dist/feed.d.ts.map +0 -1
- package/dist/form.d.ts.map +0 -1
- package/dist/grid.d.ts.map +0 -1
- package/dist/host-provider.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/internal/collection.d.ts.map +0 -1
- package/dist/internal/controlled-state.d.ts.map +0 -1
- package/dist/internal/date-picker.d.ts.map +0 -1
- package/dist/internal/form-control-inventory.d.ts.map +0 -1
- package/dist/internal/form-control.d.ts.map +0 -1
- package/dist/internal/native-field.d.ts.map +0 -1
- package/dist/internal/native-input.d.ts.map +0 -1
- package/dist/internal/part-contract.d.ts.map +0 -1
- package/dist/internal/popup.d.ts.map +0 -1
- package/dist/internal/presence.d.ts.map +0 -1
- package/dist/internal/tabs-context.d.ts.map +0 -1
- package/dist/listbox.d.ts.map +0 -1
- package/dist/menu-button.d.ts.map +0 -1
- package/dist/menu.d.ts.map +0 -1
- package/dist/menubar.d.ts.map +0 -1
- package/dist/month-picker.d.ts.map +0 -1
- package/dist/month-range-picker.d.ts.map +0 -1
- package/dist/multi-thumb-slider.d.ts.map +0 -1
- package/dist/navigation-menu.d.ts.map +0 -1
- package/dist/number-field.d.ts.map +0 -1
- package/dist/pagination.d.ts.map +0 -1
- package/dist/pin-input.d.ts.map +0 -1
- package/dist/popover.d.ts.map +0 -1
- package/dist/primitive.d.ts.map +0 -1
- package/dist/quantity-field.d.ts.map +0 -1
- package/dist/radio-group.d.ts.map +0 -1
- package/dist/range-calendar.d.ts.map +0 -1
- package/dist/rating.d.ts.map +0 -1
- package/dist/reorder.d.ts.map +0 -1
- package/dist/select.d.ts.map +0 -1
- package/dist/slider.d.ts.map +0 -1
- package/dist/spin-button.d.ts.map +0 -1
- package/dist/stepper.d.ts.map +0 -1
- package/dist/switch.d.ts.map +0 -1
- package/dist/tabs.d.ts.map +0 -1
- package/dist/tags-input.d.ts.map +0 -1
- package/dist/text.d.ts.map +0 -1
- package/dist/time-field.d.ts.map +0 -1
- package/dist/time-range-field.d.ts.map +0 -1
- package/dist/timer.d.ts.map +0 -1
- package/dist/toast.d.ts.map +0 -1
- package/dist/toggle-button.d.ts.map +0 -1
- package/dist/toggle-group.d.ts.map +0 -1
- package/dist/toolbar.d.ts.map +0 -1
- package/dist/tooltip.d.ts.map +0 -1
- package/dist/tree-grid.d.ts.map +0 -1
- package/dist/tree-view.d.ts.map +0 -1
- package/dist/virtual.d.ts.map +0 -1
- package/dist/virtual.js.map +0 -1
- package/dist/window-splitter.d.ts.map +0 -1
- package/dist/year-picker.d.ts.map +0 -1
- package/dist/year-range-picker.d.ts.map +0 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { getCurrentScope, onScopeDispose, toValue, watch } from 'vue';
|
|
2
|
+
import { connectDataGrid } from '@sectile/dom/tabular';
|
|
3
|
+
import { createDataGrid, } from '@sectile/tabular/data-grid';
|
|
4
|
+
import { createTabularComponentSuite } from './internal/tabular-components.js';
|
|
5
|
+
import { createTabularParts } from './internal/tabular-parts.js';
|
|
6
|
+
import { aliasVueProfileController, controlledValues, createVueProfileController, useProfile, useProfileSource } from './internal/tabular-profile.js';
|
|
7
|
+
const hosts = new WeakMap();
|
|
8
|
+
export function defineDataGridColumns(columns) { return columns; }
|
|
9
|
+
export function useDataGrid(options) {
|
|
10
|
+
for (const property of ['query', 'rowSelection', 'columnState', 'accessState', 'cursor', 'editState', 'columnSizeState'])
|
|
11
|
+
assertExclusive(options, property);
|
|
12
|
+
const semantic = createDataGrid({
|
|
13
|
+
columns: stripColumns(toValue(options.columns)),
|
|
14
|
+
...(options.headers === undefined ? {} : { headers: toValue(options.headers) }),
|
|
15
|
+
...(options.limits === undefined ? {} : { limits: options.limits }),
|
|
16
|
+
...(options.isCellDisabled === undefined ? {} : { isCellDisabled: options.isCellDisabled }),
|
|
17
|
+
controlled: { query: options.query !== undefined, rowSelection: options.rowSelection !== undefined, columnState: options.columnState !== undefined, accessState: options.accessState !== undefined, expansion: false },
|
|
18
|
+
initialValues: {
|
|
19
|
+
...(options.query === undefined && options.defaultQuery === undefined ? {} : { query: options.query?.value ?? options.defaultQuery }),
|
|
20
|
+
...(options.rowSelection === undefined && options.defaultRowSelection === undefined ? {} : { rowSelection: options.rowSelection?.value ?? options.defaultRowSelection }),
|
|
21
|
+
...(options.columnState === undefined && options.defaultColumnState === undefined ? {} : { columnState: options.columnState?.value ?? options.defaultColumnState }),
|
|
22
|
+
...(options.accessState === undefined && options.defaultAccessState === undefined ? {} : { accessState: options.accessState?.value ?? options.defaultAccessState }),
|
|
23
|
+
},
|
|
24
|
+
...(options.onQueryChange === undefined ? {} : { onQueryChange: options.onQueryChange }),
|
|
25
|
+
...(options.onRowSelectionChange === undefined ? {} : { onRowSelectionChange: options.onRowSelectionChange }),
|
|
26
|
+
...(options.onColumnStateChange === undefined ? {} : { onColumnStateChange: options.onColumnStateChange }),
|
|
27
|
+
...(options.onAccessStateChange === undefined ? {} : { onAccessStateChange: options.onAccessStateChange }),
|
|
28
|
+
});
|
|
29
|
+
const base = createVueProfileController(semantic);
|
|
30
|
+
const notify = (before, after) => {
|
|
31
|
+
if (before.cursor !== after.cursor)
|
|
32
|
+
options.onCursorChange?.(after.cursor);
|
|
33
|
+
if (before.edit !== after.edit)
|
|
34
|
+
options.onEditStateChange?.(after.edit);
|
|
35
|
+
};
|
|
36
|
+
const controller = Object.freeze({
|
|
37
|
+
...base,
|
|
38
|
+
dispatch: (event, revision) => { const before = base.getSnapshot(); const result = base.dispatch(event, revision); if (result.ok)
|
|
39
|
+
notify(before, result.value.snapshot); return result; },
|
|
40
|
+
synchronizeView: (response) => { const before = base.getSnapshot(); const result = base.synchronizeView(response); if (result.ok)
|
|
41
|
+
notify(before, result.value); return result; },
|
|
42
|
+
syncControlledValues: (values) => { const before = base.getSnapshot(); const result = base.syncControlledValues(values); if (result.ok)
|
|
43
|
+
notify(before, result.value); return result; },
|
|
44
|
+
requestView: () => { const before = base.getSnapshot(); const result = base.requestView(); if (result.ok)
|
|
45
|
+
notify(before, result.value); return result; },
|
|
46
|
+
abandonRequest: (requestID) => { const before = base.getSnapshot(); const result = base.abandonRequest(requestID); if (result.ok)
|
|
47
|
+
notify(before, result.value); return result; },
|
|
48
|
+
getProjection: () => semantic.getProjection(),
|
|
49
|
+
});
|
|
50
|
+
aliasVueProfileController(controller, base);
|
|
51
|
+
hosts.set(controller, Object.freeze({ ...(options.columnSizeState === undefined ? {} : { columnSizes: options.columnSizeState.value }), ...(options.defaultColumnSizeState === undefined ? {} : { defaultColumnSizes: options.defaultColumnSizeState }), ...(options.onColumnSizeStateChange === undefined ? {} : { onColumnSizesChange: options.onColumnSizeStateChange }) }));
|
|
52
|
+
if (options.initialView !== undefined)
|
|
53
|
+
unwrap(controller.synchronizeView(options.initialView));
|
|
54
|
+
const desiredCursor = options.cursor?.value ?? options.defaultCursor;
|
|
55
|
+
if (desiredCursor?.current !== null && desiredCursor?.current !== undefined && controller.getProjection().rows.length > 0)
|
|
56
|
+
unwrap(controller.dispatch({ type: 'focus-cell', cell: desiredCursor.current }));
|
|
57
|
+
const stops = [];
|
|
58
|
+
const sync = () => unwrap(controller.syncControlledValues(controlledValues(options)));
|
|
59
|
+
for (const source of [options.query, options.rowSelection, options.columnState, options.accessState])
|
|
60
|
+
if (source !== undefined)
|
|
61
|
+
stops.push(watch(() => source.value, sync));
|
|
62
|
+
if (options.sourceKey !== undefined)
|
|
63
|
+
stops.push(watch(() => toValue(options.sourceKey), () => { unwrap(controller.dispatch({ type: 'replace-source' })); }));
|
|
64
|
+
stops.push(watch(() => toValue(options.columns), () => { unwrap(controller.dispatch({ type: 'replace-source' })); }, { deep: false }));
|
|
65
|
+
if (options.cursor !== undefined)
|
|
66
|
+
stops.push(watch(() => options.cursor.value, (value) => { if (value.current !== null)
|
|
67
|
+
unwrap(controller.dispatch({ type: 'focus-cell', cell: value.current })); }));
|
|
68
|
+
if (options.editState !== undefined)
|
|
69
|
+
stops.push(watch(() => options.editState.value, (value) => { unwrap(controller.dispatch(value.kind === 'editing' ? { type: 'begin-edit', cell: value.cell } : { type: 'cancel-edit', reason: 'application' })); }));
|
|
70
|
+
const rawDispose = controller.dispose;
|
|
71
|
+
const wrapped = Object.freeze({ ...controller, dispose: () => { for (const stop of stops.splice(0))
|
|
72
|
+
stop(); rawDispose(); } });
|
|
73
|
+
aliasVueProfileController(wrapped, controller);
|
|
74
|
+
hosts.set(wrapped, hosts.get(controller) ?? {});
|
|
75
|
+
if (getCurrentScope() !== undefined)
|
|
76
|
+
onScopeDispose(wrapped.dispose);
|
|
77
|
+
return wrapped;
|
|
78
|
+
}
|
|
79
|
+
export function useDataGridSource(controller, resolver, options) { return useProfileSource(controller, resolver, options); }
|
|
80
|
+
const publicKey = Symbol('SectileDataGrid');
|
|
81
|
+
const privateKey = Symbol('SectileDataGridHost');
|
|
82
|
+
export function useDataGridContext() { return useProfile(publicKey, 'useDataGridContext'); }
|
|
83
|
+
const parts = createTabularParts({ profile: 'data-grid', prefix: 'DataGrid', publicKey, privateKey, connect: (element, controller, callbacks) => connectDataGrid({ controller: controller, root: element, ...hosts.get(controller), ...(callbacks.onCommand === undefined ? {} : { onCommand: callbacks.onCommand }), onSnapshotChange: callbacks.onSnapshotChange }) });
|
|
84
|
+
const componentSuites = new WeakMap();
|
|
85
|
+
export function createDataGridComponents(controller) {
|
|
86
|
+
return createTabularComponentSuite(parts, controller, componentSuites, 'DataGrid', {
|
|
87
|
+
Root: 'Root',
|
|
88
|
+
Header: 'Header',
|
|
89
|
+
HeaderRow: 'HeaderRow',
|
|
90
|
+
ColumnHeader: 'ColumnHeader',
|
|
91
|
+
SortTrigger: 'SortTrigger',
|
|
92
|
+
FilterControl: 'FilterControl',
|
|
93
|
+
ColumnResizeHandle: 'ColumnResizeHandle',
|
|
94
|
+
Body: 'Body',
|
|
95
|
+
Row: 'Row',
|
|
96
|
+
RowSelectionControl: 'SelectionControl',
|
|
97
|
+
BulkSelectionControl: 'BulkSelectionControl',
|
|
98
|
+
Cell: 'Cell',
|
|
99
|
+
Editor: 'Editor',
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function stripColumns(columns) { return columns.map(({ getValue: _getValue, groupValue: _groupValue, aggregate: _aggregate, ...column }) => Object.freeze(column)); }
|
|
103
|
+
function assertExclusive(options, property) { const values = options; const fallback = `default${property[0].toUpperCase()}${property.slice(1)}`; if (values[property] !== undefined && values[fallback] !== undefined)
|
|
104
|
+
throw new TypeError(`${property} and ${fallback} are mutually exclusive.`); }
|
|
105
|
+
function unwrap(result) { if (!result.ok)
|
|
106
|
+
throw new TypeError(result.error.message); return result.value; }
|
|
107
|
+
//# sourceMappingURL=data-grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-grid.js","sourceRoot":"","sources":["../src/data-grid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { type ComputedRef, type Ref } from 'vue';
|
|
2
|
+
import { type DataTableColumnSizeState as DOMDataTableColumnSizeState, type DataTableDOMCommand as DOMDataTableCommand } from '@sectile/dom/tabular';
|
|
3
|
+
import { type DataTableCommand as SemanticDataTableCommand, type DataTableController as SemanticDataTableController, type DataTableEvent, type DataTableProjection, type DataTableUpdate } from '@sectile/tabular/data-table';
|
|
4
|
+
import type { TabularAcceptedViewState, TabularAccessState, TabularCellRecord, TabularColumnDefinition, TabularColumnState, TabularError, TabularGroupID, TabularHeaderNode, TabularHeaderNodeID, TabularLimits, TabularQuery, TabularRequest, TabularRequestState, TabularResult, TabularRow, TabularRowID, TabularRowSelection, TabularSnapshot, TabularView, TabularViewResponse, TabularWireCells, TabularWireValue } from '@sectile/tabular';
|
|
5
|
+
import type { PrimitiveAs } from './primitive.js';
|
|
6
|
+
import { type HostConnection } from './internal/tabular-parts.js';
|
|
7
|
+
import { type TabularBodyComponent, type TabularComponent } from './internal/tabular-components.js';
|
|
8
|
+
import { type ProfileContext, type SourceReturn, type SourceStatus, type VueProfileController } from './internal/tabular-profile.js';
|
|
9
|
+
export interface DataTableColumn<RecordValue = unknown, ID extends string = string, CellValue extends TabularWireValue = TabularWireValue> extends TabularColumnDefinition {
|
|
10
|
+
readonly id: ID;
|
|
11
|
+
readonly getValue?: (record: RecordValue) => CellValue;
|
|
12
|
+
readonly groupValue?: (record: RecordValue) => TabularWireValue;
|
|
13
|
+
readonly aggregate?: (values: readonly CellValue[]) => TabularWireValue;
|
|
14
|
+
}
|
|
15
|
+
export type DataTableCellsFromColumns<Columns extends readonly DataTableColumn<never>[]> = Readonly<{
|
|
16
|
+
[Column in Columns[number] as Column['id']]: Column extends {
|
|
17
|
+
readonly getValue: (record: never) => infer Value;
|
|
18
|
+
} ? Extract<Value, TabularWireValue> : TabularWireValue;
|
|
19
|
+
}>;
|
|
20
|
+
export type DataTableColumnID<LeafCells extends object, GroupCells extends object = LeafCells> = Extract<keyof LeafCells | keyof GroupCells, string>;
|
|
21
|
+
export type DataTableCellValue<Cells extends object, Column extends string> = Column extends keyof Cells ? TabularWireCells<Cells>[Column] : TabularWireValue;
|
|
22
|
+
export type DataTableReactiveInput<T> = T | Ref<T> | (() => T);
|
|
23
|
+
export interface DataTableWritableRef<T> {
|
|
24
|
+
value: T;
|
|
25
|
+
}
|
|
26
|
+
export type DataTableQuery = TabularQuery;
|
|
27
|
+
export type DataTableViewRow<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = TabularRow<LeafCells, GroupCells>;
|
|
28
|
+
export type DataTableView<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = TabularView<DataTableViewRow<LeafCells, GroupCells>>;
|
|
29
|
+
export type DataTableViewResponse<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = TabularViewResponse<DataTableViewRow<LeafCells, GroupCells>>;
|
|
30
|
+
export type DataTableRowSelection = TabularRowSelection;
|
|
31
|
+
export type DataTableGroupID = TabularGroupID;
|
|
32
|
+
export type DataTableRowID = TabularRowID;
|
|
33
|
+
export type DataTableColumnState = TabularColumnState;
|
|
34
|
+
export type DataTableAccessState = TabularAccessState;
|
|
35
|
+
export type DataTableRequestState = TabularRequestState;
|
|
36
|
+
export type DataTableAcceptedViewState<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = TabularAcceptedViewState<DataTableViewRow<LeafCells, GroupCells>>;
|
|
37
|
+
export type DataTableColumnSizeState = DOMDataTableColumnSizeState;
|
|
38
|
+
export type DataTableSourceStatus = SourceStatus;
|
|
39
|
+
export type DataTableSemanticCommand = SemanticDataTableCommand;
|
|
40
|
+
export type DataTableCommand = DOMDataTableCommand;
|
|
41
|
+
export type DataTableError = TabularError;
|
|
42
|
+
export type DataTableCommandHandler = (command: DataTableCommand) => void;
|
|
43
|
+
export type DataTableErrorHandler = (error: DataTableError) => void;
|
|
44
|
+
export type DataTableSourceErrorHandler = (error: unknown) => void;
|
|
45
|
+
export type DataTableStatusChangeHandler = (status: DataTableSourceStatus) => void;
|
|
46
|
+
export type DataTableQueryChangeHandler = (query: DataTableQuery) => void;
|
|
47
|
+
export type DataTableRowSelectionChangeHandler = (selection: DataTableRowSelection) => void;
|
|
48
|
+
export type DataTableColumnStateChangeHandler = (state: DataTableColumnState) => void;
|
|
49
|
+
export type DataTableAccessStateChangeHandler = (state: DataTableAccessState) => void;
|
|
50
|
+
export type DataTableExpansionChangeHandler = (expansion: readonly DataTableGroupID[]) => void;
|
|
51
|
+
export type DataTableColumnSizeChangeHandler = (state: DataTableColumnSizeState) => void;
|
|
52
|
+
export interface UseDataTableOptions<Columns extends readonly DataTableColumn<never>[] = readonly DataTableColumn<never>[], LeafCells extends object = DataTableCellsFromColumns<Columns>, GroupCells extends object = LeafCells> {
|
|
53
|
+
readonly columns: DataTableReactiveInput<Columns>;
|
|
54
|
+
readonly headers?: DataTableReactiveInput<readonly TabularHeaderNode[]>;
|
|
55
|
+
readonly sourceKey?: DataTableReactiveInput<string>;
|
|
56
|
+
readonly limits?: Partial<TabularLimits>;
|
|
57
|
+
readonly initialView?: DataTableViewResponse<LeafCells, GroupCells>;
|
|
58
|
+
readonly query?: DataTableWritableRef<DataTableQuery>;
|
|
59
|
+
readonly defaultQuery?: DataTableQuery;
|
|
60
|
+
readonly onQueryChange?: DataTableQueryChangeHandler;
|
|
61
|
+
readonly rowSelection?: DataTableWritableRef<DataTableRowSelection>;
|
|
62
|
+
readonly defaultRowSelection?: DataTableRowSelection;
|
|
63
|
+
readonly onRowSelectionChange?: DataTableRowSelectionChangeHandler;
|
|
64
|
+
readonly columnState?: DataTableWritableRef<DataTableColumnState>;
|
|
65
|
+
readonly defaultColumnState?: DataTableColumnState;
|
|
66
|
+
readonly onColumnStateChange?: DataTableColumnStateChangeHandler;
|
|
67
|
+
readonly accessState?: DataTableWritableRef<DataTableAccessState>;
|
|
68
|
+
readonly defaultAccessState?: DataTableAccessState;
|
|
69
|
+
readonly onAccessStateChange?: DataTableAccessStateChangeHandler;
|
|
70
|
+
readonly expansion?: DataTableWritableRef<readonly DataTableGroupID[]>;
|
|
71
|
+
readonly defaultExpansion?: readonly DataTableGroupID[];
|
|
72
|
+
readonly onExpansionChange?: DataTableExpansionChangeHandler;
|
|
73
|
+
readonly columnSizeState?: DataTableWritableRef<Readonly<Record<string, number>>>;
|
|
74
|
+
readonly defaultColumnSizeState?: Readonly<Record<string, number>>;
|
|
75
|
+
readonly onColumnSizeStateChange?: DataTableColumnSizeChangeHandler;
|
|
76
|
+
}
|
|
77
|
+
declare const dataTableSchema: unique symbol;
|
|
78
|
+
export interface DataTableController<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> extends VueProfileController<TabularSnapshot, DataTableEvent, SemanticDataTableCommand> {
|
|
79
|
+
readonly [dataTableSchema]?: {
|
|
80
|
+
readonly leaf: LeafCells;
|
|
81
|
+
readonly group: GroupCells;
|
|
82
|
+
};
|
|
83
|
+
readonly acceptedViewState: ComputedRef<DataTableAcceptedViewState<LeafCells, GroupCells>>;
|
|
84
|
+
getProjection(): DataTableProjection;
|
|
85
|
+
}
|
|
86
|
+
export declare function defineDataTableColumns<const Columns extends readonly DataTableColumn<never>[]>(columns: Columns): Columns;
|
|
87
|
+
export declare function useDataTable<ExplicitLeafCells extends object | undefined = undefined, ExplicitGroupCells extends object | undefined = ExplicitLeafCells, const Columns extends readonly DataTableColumn<never>[] = readonly DataTableColumn<never>[], LeafCells extends object = ExplicitLeafCells extends object ? ExplicitLeafCells : DataTableCellsFromColumns<Columns>, GroupCells extends object = ExplicitGroupCells extends object ? ExplicitGroupCells : LeafCells>(options: UseDataTableOptions<Columns, LeafCells, GroupCells>): DataTableController<LeafCells, GroupCells>;
|
|
88
|
+
export type DataTableSourceResolver<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = (request: TabularRequest, context: {
|
|
89
|
+
readonly signal: AbortSignal;
|
|
90
|
+
}) => DataTableViewResponse<LeafCells, GroupCells> | Promise<DataTableViewResponse<LeafCells, GroupCells>>;
|
|
91
|
+
export interface UseDataTableSourceOptions {
|
|
92
|
+
readonly onError?: DataTableSourceErrorHandler;
|
|
93
|
+
readonly onStatusChange?: DataTableStatusChangeHandler;
|
|
94
|
+
}
|
|
95
|
+
export interface UseDataTableSourceReturn extends SourceReturn {
|
|
96
|
+
}
|
|
97
|
+
export declare function useDataTableSource<LeafCells extends object, GroupCells extends object>(controller: DataTableController<LeafCells, GroupCells>, resolver: DataTableSourceResolver<LeafCells, GroupCells>, options?: UseDataTableSourceOptions): UseDataTableSourceReturn;
|
|
98
|
+
export interface DataTableContextValue extends Omit<ProfileContext<TabularSnapshot, DataTableEvent, SemanticDataTableCommand, HostConnection>, 'connection'> {
|
|
99
|
+
}
|
|
100
|
+
export declare function useDataTableContext(): DataTableContextValue;
|
|
101
|
+
export interface DataTableProviderProps {
|
|
102
|
+
}
|
|
103
|
+
export interface DataTableRootProps {
|
|
104
|
+
readonly onCommand?: DataTableCommandHandler;
|
|
105
|
+
readonly onError?: DataTableErrorHandler;
|
|
106
|
+
readonly as?: PrimitiveAs;
|
|
107
|
+
readonly asChild?: boolean;
|
|
108
|
+
}
|
|
109
|
+
export interface DataTableRootSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> {
|
|
110
|
+
readonly acceptedViewState: DataTableAcceptedViewState<LeafCells, GroupCells>;
|
|
111
|
+
readonly requestState: DataTableRequestState;
|
|
112
|
+
readonly query: DataTableQuery;
|
|
113
|
+
readonly rowSelection: DataTableRowSelection;
|
|
114
|
+
readonly columnState: DataTableColumnState;
|
|
115
|
+
readonly accessState: DataTableAccessState;
|
|
116
|
+
readonly expansion: readonly DataTableGroupID[];
|
|
117
|
+
readonly rows: readonly DataTableViewRow<LeafCells, GroupCells>[];
|
|
118
|
+
}
|
|
119
|
+
export interface DataTableRootExpose<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> {
|
|
120
|
+
readonly controller: DataTableController<LeafCells, GroupCells>;
|
|
121
|
+
refresh(): void;
|
|
122
|
+
}
|
|
123
|
+
export interface DataTablePartProps {
|
|
124
|
+
readonly as?: PrimitiveAs;
|
|
125
|
+
readonly asChild?: boolean;
|
|
126
|
+
}
|
|
127
|
+
export type DataTableHeaderRowProps = DataTablePartProps;
|
|
128
|
+
export type DataTableColumnHeaderProps<Column extends string = string> = DataTablePartProps & ({
|
|
129
|
+
readonly column: Column;
|
|
130
|
+
readonly header?: never;
|
|
131
|
+
} | {
|
|
132
|
+
readonly header: TabularHeaderNodeID;
|
|
133
|
+
readonly column?: never;
|
|
134
|
+
});
|
|
135
|
+
export interface DataTableSortTriggerProps<Column extends string = string> extends DataTablePartProps {
|
|
136
|
+
readonly column: Column;
|
|
137
|
+
readonly comparator?: string;
|
|
138
|
+
}
|
|
139
|
+
export type DataTableFilterControlProps<Column extends string = string> = DataTablePartProps & ({
|
|
140
|
+
readonly scope: 'global';
|
|
141
|
+
readonly id: string;
|
|
142
|
+
readonly predicate: string;
|
|
143
|
+
} | {
|
|
144
|
+
readonly scope: 'column';
|
|
145
|
+
readonly column: Column;
|
|
146
|
+
readonly id: string;
|
|
147
|
+
readonly predicate: string;
|
|
148
|
+
});
|
|
149
|
+
export interface DataTableColumnResizeHandleProps<Column extends string = string> extends DataTablePartProps {
|
|
150
|
+
readonly column: Column;
|
|
151
|
+
readonly minSize?: number;
|
|
152
|
+
readonly maxSize?: number;
|
|
153
|
+
}
|
|
154
|
+
export interface DataTableRowProps extends DataTablePartProps {
|
|
155
|
+
readonly rowID: DataTableRowID | DataTableGroupID;
|
|
156
|
+
}
|
|
157
|
+
export interface DataTableSelectionControlProps extends DataTablePartProps {
|
|
158
|
+
readonly rowID?: DataTableRowID;
|
|
159
|
+
readonly name: string;
|
|
160
|
+
readonly value?: string;
|
|
161
|
+
readonly form?: string;
|
|
162
|
+
readonly disabled?: boolean;
|
|
163
|
+
}
|
|
164
|
+
export interface DataTableBulkSelectionControlProps extends DataTablePartProps {
|
|
165
|
+
readonly target: {
|
|
166
|
+
readonly kind: 'all-matching';
|
|
167
|
+
} | {
|
|
168
|
+
readonly kind: 'group-leaves';
|
|
169
|
+
readonly groupID: DataTableGroupID;
|
|
170
|
+
};
|
|
171
|
+
readonly disabled?: boolean;
|
|
172
|
+
}
|
|
173
|
+
export interface DataTableDisclosureProps extends DataTablePartProps {
|
|
174
|
+
readonly rowID?: DataTableGroupID;
|
|
175
|
+
readonly disabled?: boolean;
|
|
176
|
+
}
|
|
177
|
+
export interface DataTableCellProps<Column extends string = string> extends DataTablePartProps {
|
|
178
|
+
readonly rowID?: DataTableRowID | DataTableGroupID;
|
|
179
|
+
readonly column: Column;
|
|
180
|
+
}
|
|
181
|
+
export interface DataTableEditorProps<Column extends string = string> extends DataTableCellProps<Column> {
|
|
182
|
+
readonly parseValue?: (value: string) => TabularResult<TabularWireValue>;
|
|
183
|
+
readonly commitOnChange?: boolean;
|
|
184
|
+
}
|
|
185
|
+
export interface DataTablePartSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> extends DataTableRootSlotProps<LeafCells, GroupCells> {
|
|
186
|
+
readonly row?: DataTableViewRow<LeafCells, GroupCells>;
|
|
187
|
+
readonly isGroup?: boolean;
|
|
188
|
+
}
|
|
189
|
+
export interface DataTableBodySlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> extends DataTableRootSlotProps<LeafCells, GroupCells> {
|
|
190
|
+
readonly row: DataTableViewRow<LeafCells, GroupCells>;
|
|
191
|
+
readonly rowIndex: number;
|
|
192
|
+
readonly isGroup: boolean;
|
|
193
|
+
}
|
|
194
|
+
export type DataTableProviderSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
|
|
195
|
+
export type DataTableCaptionProps = DataTablePartProps;
|
|
196
|
+
export type DataTableHeaderProps = DataTablePartProps;
|
|
197
|
+
export interface DataTableBodyProps extends DataTablePartProps {
|
|
198
|
+
readonly manual?: boolean;
|
|
199
|
+
}
|
|
200
|
+
export type DataTableCaptionSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
|
|
201
|
+
export type DataTableHeaderSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
|
|
202
|
+
export type DataTableHeaderRowSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
|
|
203
|
+
export type DataTableColumnHeaderSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
|
|
204
|
+
export type DataTableSortTriggerSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
|
|
205
|
+
export type DataTableFilterControlSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
|
|
206
|
+
export type DataTableColumnResizeHandleSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
|
|
207
|
+
export type DataTableRowSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
|
|
208
|
+
export type DataTableSelectionControlSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTablePartSlotProps<LeafCells, GroupCells>;
|
|
209
|
+
export type DataTableBulkSelectionControlSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
|
|
210
|
+
export type DataTableDisclosureSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTablePartSlotProps<LeafCells, GroupCells>;
|
|
211
|
+
export type DataTableCellSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTablePartSlotProps<LeafCells, GroupCells>;
|
|
212
|
+
export type DataTableEditorSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTablePartSlotProps<LeafCells, GroupCells>;
|
|
213
|
+
export interface DataTableComponents<LeafCells extends object, GroupCells extends object = LeafCells> {
|
|
214
|
+
readonly Provider: TabularComponent<DataTableProviderProps, DataTableProviderSlotProps<LeafCells, GroupCells>>;
|
|
215
|
+
readonly Root: TabularComponent<DataTableRootProps, DataTableRootSlotProps<LeafCells, GroupCells>>;
|
|
216
|
+
readonly Caption: TabularComponent<DataTableCaptionProps, DataTableCaptionSlotProps<LeafCells, GroupCells>>;
|
|
217
|
+
readonly Header: TabularComponent<DataTableHeaderProps, DataTableHeaderSlotProps<LeafCells, GroupCells>>;
|
|
218
|
+
readonly HeaderRow: TabularComponent<DataTableHeaderRowProps, DataTableHeaderRowSlotProps<LeafCells, GroupCells>>;
|
|
219
|
+
readonly ColumnHeader: TabularComponent<DataTableColumnHeaderProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableColumnHeaderSlotProps<LeafCells, GroupCells>>;
|
|
220
|
+
readonly SortTrigger: TabularComponent<DataTableSortTriggerProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableSortTriggerSlotProps<LeafCells, GroupCells>>;
|
|
221
|
+
readonly FilterControl: TabularComponent<DataTableFilterControlProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableFilterControlSlotProps<LeafCells, GroupCells>>;
|
|
222
|
+
readonly ColumnResizeHandle: TabularComponent<DataTableColumnResizeHandleProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableColumnResizeHandleSlotProps<LeafCells, GroupCells>>;
|
|
223
|
+
readonly Body: TabularBodyComponent<DataTableBodyProps, DataTableRootSlotProps<LeafCells, GroupCells>, DataTableBodySlotProps<LeafCells, GroupCells>>;
|
|
224
|
+
readonly Row: TabularComponent<DataTableRowProps, DataTableRowSlotProps<LeafCells, GroupCells>>;
|
|
225
|
+
readonly SelectionControl: TabularComponent<DataTableSelectionControlProps, DataTableSelectionControlSlotProps<LeafCells, GroupCells>>;
|
|
226
|
+
readonly BulkSelectionControl: TabularComponent<DataTableBulkSelectionControlProps, DataTableBulkSelectionControlSlotProps<LeafCells, GroupCells>>;
|
|
227
|
+
readonly Disclosure: TabularComponent<DataTableDisclosureProps, DataTableDisclosureSlotProps<LeafCells, GroupCells>>;
|
|
228
|
+
readonly Cell: TabularComponent<DataTableCellProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableCellSlotProps<LeafCells, GroupCells>>;
|
|
229
|
+
readonly Editor: TabularComponent<DataTableEditorProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableEditorSlotProps<LeafCells, GroupCells>>;
|
|
230
|
+
}
|
|
231
|
+
export declare function createDataTableComponents<LeafCells extends object, GroupCells extends object>(controller: DataTableController<LeafCells, GroupCells>): DataTableComponents<LeafCells, GroupCells>;
|
|
232
|
+
export type { DataTableEvent, DataTableProjection, DataTableUpdate, SemanticDataTableController };
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { getCurrentScope, onScopeDispose, toValue, watch, } from 'vue';
|
|
2
|
+
import { connectDataTable, } from '@sectile/dom/tabular';
|
|
3
|
+
import { createDataTable, } from '@sectile/tabular/data-table';
|
|
4
|
+
import { createTabularParts } from './internal/tabular-parts.js';
|
|
5
|
+
import { createTabularComponentSuite, } from './internal/tabular-components.js';
|
|
6
|
+
import { controlledValues, aliasVueProfileController, createVueProfileController, semanticController, useProfile, useProfileSource, } from './internal/tabular-profile.js';
|
|
7
|
+
const hosts = new WeakMap();
|
|
8
|
+
export function defineDataTableColumns(columns) { return columns; }
|
|
9
|
+
export function useDataTable(options) {
|
|
10
|
+
assertExclusive(options, 'query');
|
|
11
|
+
assertExclusive(options, 'rowSelection');
|
|
12
|
+
assertExclusive(options, 'columnState');
|
|
13
|
+
assertExclusive(options, 'accessState');
|
|
14
|
+
assertExclusive(options, 'expansion');
|
|
15
|
+
assertExclusive(options, 'columnSizeState');
|
|
16
|
+
const initialValues = Object.freeze({
|
|
17
|
+
...(options.query === undefined && options.defaultQuery === undefined ? {} : { query: options.query?.value ?? options.defaultQuery }),
|
|
18
|
+
...(options.rowSelection === undefined && options.defaultRowSelection === undefined ? {} : { rowSelection: options.rowSelection?.value ?? options.defaultRowSelection }),
|
|
19
|
+
...(options.columnState === undefined && options.defaultColumnState === undefined ? {} : { columnState: options.columnState?.value ?? options.defaultColumnState }),
|
|
20
|
+
...(options.accessState === undefined && options.defaultAccessState === undefined ? {} : { accessState: options.accessState?.value ?? options.defaultAccessState }),
|
|
21
|
+
...(options.expansion === undefined && options.defaultExpansion === undefined ? {} : { expansion: options.expansion?.value ?? options.defaultExpansion }),
|
|
22
|
+
});
|
|
23
|
+
const semanticOptions = {
|
|
24
|
+
columns: stripColumns(toValue(options.columns)),
|
|
25
|
+
...(options.headers === undefined ? {} : { headers: toValue(options.headers) }),
|
|
26
|
+
...(options.limits === undefined ? {} : { limits: options.limits }),
|
|
27
|
+
controlled: {
|
|
28
|
+
query: options.query !== undefined,
|
|
29
|
+
rowSelection: options.rowSelection !== undefined,
|
|
30
|
+
columnState: options.columnState !== undefined,
|
|
31
|
+
accessState: options.accessState !== undefined,
|
|
32
|
+
expansion: options.expansion !== undefined,
|
|
33
|
+
},
|
|
34
|
+
initialValues,
|
|
35
|
+
...(options.onQueryChange === undefined ? {} : { onQueryChange: options.onQueryChange }),
|
|
36
|
+
...(options.onRowSelectionChange === undefined ? {} : { onRowSelectionChange: options.onRowSelectionChange }),
|
|
37
|
+
...(options.onColumnStateChange === undefined ? {} : { onColumnStateChange: options.onColumnStateChange }),
|
|
38
|
+
...(options.onAccessStateChange === undefined ? {} : { onAccessStateChange: options.onAccessStateChange }),
|
|
39
|
+
...(options.onExpansionChange === undefined ? {} : { onExpansionChange: options.onExpansionChange }),
|
|
40
|
+
};
|
|
41
|
+
const semantic = createDataTable(semanticOptions);
|
|
42
|
+
const base = createVueProfileController(semantic);
|
|
43
|
+
const controller = Object.freeze({ ...base, getProjection: () => semantic.getProjection() });
|
|
44
|
+
aliasVueProfileController(controller, base);
|
|
45
|
+
hosts.set(controller, Object.freeze({
|
|
46
|
+
...(options.columnSizeState === undefined ? {} : { columnSizes: options.columnSizeState.value }),
|
|
47
|
+
...(options.defaultColumnSizeState === undefined ? {} : { defaultColumnSizes: options.defaultColumnSizeState }),
|
|
48
|
+
...(options.onColumnSizeStateChange === undefined ? {} : { onColumnSizesChange: options.onColumnSizeStateChange }),
|
|
49
|
+
}));
|
|
50
|
+
if (options.initialView !== undefined)
|
|
51
|
+
unwrapResult(controller.synchronizeView(options.initialView));
|
|
52
|
+
const stops = [];
|
|
53
|
+
const sync = () => { unwrapResult(controller.syncControlledValues(controlledValues(options))); };
|
|
54
|
+
for (const source of [options.query, options.rowSelection, options.columnState, options.accessState, options.expansion])
|
|
55
|
+
if (source !== undefined)
|
|
56
|
+
stops.push(watch(() => source.value, sync, { deep: false }));
|
|
57
|
+
if (options.sourceKey !== undefined)
|
|
58
|
+
stops.push(watch(() => toValue(options.sourceKey), () => { unwrapResult(controller.dispatch({ type: 'replace-source' })); }));
|
|
59
|
+
stops.push(watch(() => toValue(options.columns), () => { unwrapResult(controller.dispatch({ type: 'replace-source' })); }, { deep: false }));
|
|
60
|
+
const dispose = controller.dispose;
|
|
61
|
+
const wrapped = Object.freeze({ ...controller, dispose: () => { for (const stop of stops.splice(0))
|
|
62
|
+
stop(); dispose(); } });
|
|
63
|
+
aliasVueProfileController(wrapped, controller);
|
|
64
|
+
hosts.set(wrapped, hosts.get(controller) ?? {});
|
|
65
|
+
if (getCurrentScope() !== undefined)
|
|
66
|
+
onScopeDispose(wrapped.dispose);
|
|
67
|
+
return wrapped;
|
|
68
|
+
}
|
|
69
|
+
export function useDataTableSource(controller, resolver, options) {
|
|
70
|
+
return useProfileSource(controller, resolver, options);
|
|
71
|
+
}
|
|
72
|
+
const publicKey = Symbol('SectileDataTable');
|
|
73
|
+
const privateKey = Symbol('SectileDataTableHost');
|
|
74
|
+
export function useDataTableContext() { return useProfile(publicKey, 'useDataTableContext'); }
|
|
75
|
+
const parts = createTabularParts({
|
|
76
|
+
profile: 'data-table', prefix: 'DataTable', publicKey, privateKey,
|
|
77
|
+
connect: (element, controller, callbacks) => connectDataTable({
|
|
78
|
+
controller: semanticController(controller),
|
|
79
|
+
table: element,
|
|
80
|
+
...hosts.get(controller),
|
|
81
|
+
...(callbacks.onCommand === undefined ? {} : { onCommand: callbacks.onCommand }),
|
|
82
|
+
onSnapshotChange: callbacks.onSnapshotChange,
|
|
83
|
+
}),
|
|
84
|
+
});
|
|
85
|
+
const componentSuites = new WeakMap();
|
|
86
|
+
export function createDataTableComponents(controller) {
|
|
87
|
+
return createTabularComponentSuite(parts, controller, componentSuites, 'DataTable', {
|
|
88
|
+
Root: 'Root',
|
|
89
|
+
Caption: 'Caption',
|
|
90
|
+
Header: 'Header',
|
|
91
|
+
HeaderRow: 'HeaderRow',
|
|
92
|
+
ColumnHeader: 'ColumnHeader',
|
|
93
|
+
SortTrigger: 'SortTrigger',
|
|
94
|
+
FilterControl: 'FilterControl',
|
|
95
|
+
ColumnResizeHandle: 'ColumnResizeHandle',
|
|
96
|
+
Body: 'Body',
|
|
97
|
+
Row: 'Row',
|
|
98
|
+
SelectionControl: 'SelectionControl',
|
|
99
|
+
BulkSelectionControl: 'BulkSelectionControl',
|
|
100
|
+
Disclosure: 'Disclosure',
|
|
101
|
+
Cell: 'Cell',
|
|
102
|
+
Editor: 'Editor',
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function stripColumns(columns) {
|
|
106
|
+
return columns.map(({ getValue: _getValue, groupValue: _groupValue, aggregate: _aggregate, ...column }) => Object.freeze(column));
|
|
107
|
+
}
|
|
108
|
+
function assertExclusive(options, property) {
|
|
109
|
+
const values = options;
|
|
110
|
+
const fallback = `default${property[0].toUpperCase()}${property.slice(1)}`;
|
|
111
|
+
if (values[property] !== undefined && values[fallback] !== undefined)
|
|
112
|
+
throw new TypeError(`${property} and ${fallback} are mutually exclusive.`);
|
|
113
|
+
}
|
|
114
|
+
function unwrapResult(result) { if (!result.ok)
|
|
115
|
+
throw new TypeError(result.error.message); return result.value; }
|
|
116
|
+
//# sourceMappingURL=data-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table.js","sourceRoot":"","sources":["../src/data-table.ts"],"names":[],"mappings":"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"}
|