@vielzeug/refine 2.3.0 → 2.4.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/dist/accordion-item.cjs +1 -1
- package/dist/accordion-item.cjs.map +1 -1
- package/dist/accordion-item.js +1 -1
- package/dist/accordion-item.js.map +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.cjs.map +1 -1
- package/dist/card.js +1 -1
- package/dist/card.js.map +1 -1
- package/dist/chat-message.cjs +1 -1
- package/dist/chat-message.cjs.map +1 -1
- package/dist/chat-message.js +1 -1
- package/dist/chat-message.js.map +1 -1
- package/dist/combobox.cjs +9 -7
- package/dist/combobox.cjs.map +1 -1
- package/dist/combobox.js +55 -48
- package/dist/combobox.js.map +1 -1
- package/dist/content/index.d.ts +2 -0
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/list/list-item.css.cjs +1 -1
- package/dist/content/list/list-item.css.cjs.map +1 -1
- package/dist/content/list/list-item.css.js +1 -1
- package/dist/content/list/list-item.css.js.map +1 -1
- package/dist/content/list/list-item.d.ts +9 -0
- package/dist/content/list/list-item.d.ts.map +1 -1
- package/dist/content/stats/stats.css.cjs +2 -0
- package/dist/content/stats/stats.css.cjs.map +1 -0
- package/dist/content/stats/stats.css.js +6 -0
- package/dist/content/stats/stats.css.js.map +1 -0
- package/dist/content/stats/stats.d.ts +72 -0
- package/dist/content/stats/stats.d.ts.map +1 -0
- package/dist/core/auto-resize.cjs +1 -1
- package/dist/core/auto-resize.cjs.map +1 -1
- package/dist/core/auto-resize.js +1 -1
- package/dist/core/auto-resize.js.map +1 -1
- package/dist/custom-elements.json +5087 -4791
- package/dist/datagrid.cjs +199 -179
- package/dist/datagrid.cjs.map +1 -1
- package/dist/datagrid.js +435 -321
- package/dist/datagrid.js.map +1 -1
- package/dist/disclosure/tab-item/tab-item.css.cjs +1 -1
- package/dist/disclosure/tab-item/tab-item.css.cjs.map +1 -1
- package/dist/disclosure/tab-item/tab-item.css.js +1 -1
- package/dist/disclosure/tab-item/tab-item.css.js.map +1 -1
- package/dist/disclosure/tab-item/tab-item.d.ts +3 -0
- package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -1
- package/dist/disclosure/tabs/tabs.css.cjs +1 -1
- package/dist/disclosure/tabs/tabs.css.cjs.map +1 -1
- package/dist/disclosure/tabs/tabs.css.js +1 -1
- package/dist/disclosure/tabs/tabs.css.js.map +1 -1
- package/dist/disclosure/tabs/tabs.d.ts +4 -0
- package/dist/disclosure/tabs/tabs.d.ts.map +1 -1
- package/dist/frameworks/elements.d.ts +2 -1
- package/dist/icon.cjs +1 -1
- package/dist/icon.cjs.map +1 -1
- package/dist/icon.js +1 -1
- package/dist/icon.js.map +1 -1
- package/dist/input.cjs +5 -4
- package/dist/input.cjs.map +1 -1
- package/dist/input.js +14 -8
- package/dist/input.js.map +1 -1
- package/dist/inputs/combobox/combobox-options.cjs +1 -1
- package/dist/inputs/combobox/combobox-options.cjs.map +1 -1
- package/dist/inputs/combobox/combobox-options.d.ts.map +1 -1
- package/dist/inputs/combobox/combobox-options.js +1 -0
- package/dist/inputs/combobox/combobox-options.js.map +1 -1
- package/dist/inputs/combobox/combobox.css.cjs +1 -1
- package/dist/inputs/combobox/combobox.css.cjs.map +1 -1
- package/dist/inputs/combobox/combobox.css.js +1 -1
- package/dist/inputs/combobox/combobox.css.js.map +1 -1
- package/dist/inputs/combobox/combobox.d.ts +1 -0
- package/dist/inputs/combobox/combobox.d.ts.map +1 -1
- package/dist/inputs/combobox/combobox.types.d.ts +7 -0
- package/dist/inputs/combobox/combobox.types.d.ts.map +1 -1
- package/dist/inputs/datagrid/datagrid-model.cjs +1 -1
- package/dist/inputs/datagrid/datagrid-model.cjs.map +1 -1
- package/dist/inputs/datagrid/datagrid-model.d.ts +17 -3
- package/dist/inputs/datagrid/datagrid-model.d.ts.map +1 -1
- package/dist/inputs/datagrid/datagrid-model.js +93 -70
- package/dist/inputs/datagrid/datagrid-model.js.map +1 -1
- package/dist/inputs/datagrid/datagrid.css.cjs +1 -1
- package/dist/inputs/datagrid/datagrid.css.cjs.map +1 -1
- package/dist/inputs/datagrid/datagrid.css.js +1 -1
- package/dist/inputs/datagrid/datagrid.css.js.map +1 -1
- package/dist/inputs/datagrid/datagrid.d.ts +54 -4
- package/dist/inputs/datagrid/datagrid.d.ts.map +1 -1
- package/dist/inputs/index.d.ts +1 -1
- package/dist/inputs/index.d.ts.map +1 -1
- package/dist/inputs/input/input.css.cjs +1 -1
- package/dist/inputs/input/input.css.cjs.map +1 -1
- package/dist/inputs/input/input.css.js +1 -1
- package/dist/inputs/input/input.css.js.map +1 -1
- package/dist/inputs/input/input.d.ts +3 -0
- package/dist/inputs/input/input.d.ts.map +1 -1
- package/dist/inputs/select/select.css.cjs +1 -1
- package/dist/inputs/select/select.css.cjs.map +1 -1
- package/dist/inputs/select/select.css.js +1 -1
- package/dist/inputs/select/select.css.js.map +1 -1
- package/dist/inputs/select/select.d.ts +5 -0
- package/dist/inputs/select/select.d.ts.map +1 -1
- package/dist/layout/navbar/navbar.d.ts +2 -0
- package/dist/layout/navbar/navbar.d.ts.map +1 -1
- package/dist/layout/sidebar/sidebar.css.cjs +1 -1
- package/dist/layout/sidebar/sidebar.css.cjs.map +1 -1
- package/dist/layout/sidebar/sidebar.css.js +1 -1
- package/dist/layout/sidebar/sidebar.css.js.map +1 -1
- package/dist/layout/sidebar/sidebar.d.ts +8 -0
- package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
- package/dist/list-item.cjs +6 -5
- package/dist/list-item.cjs.map +1 -1
- package/dist/list-item.js +23 -17
- package/dist/list-item.js.map +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.cjs.map +1 -1
- package/dist/list.js +1 -1
- package/dist/list.js.map +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.cjs.map +1 -1
- package/dist/menu.js +1 -1
- package/dist/menu.js.map +1 -1
- package/dist/navbar.cjs +2 -2
- package/dist/navbar.cjs.map +1 -1
- package/dist/navbar.js +7 -5
- package/dist/navbar.js.map +1 -1
- package/dist/navigation-menu.cjs +1 -1
- package/dist/navigation-menu.cjs.map +1 -1
- package/dist/navigation-menu.js +1 -1
- package/dist/navigation-menu.js.map +1 -1
- package/dist/overlay/popover/popover.css.cjs +1 -1
- package/dist/overlay/popover/popover.css.cjs.map +1 -1
- package/dist/overlay/popover/popover.css.js +1 -1
- package/dist/overlay/popover/popover.css.js.map +1 -1
- package/dist/overlay/popover/popover.d.ts +1 -0
- package/dist/overlay/popover/popover.d.ts.map +1 -1
- package/dist/overlay/shared/use-dialog.cjs +1 -1
- package/dist/overlay/shared/use-dialog.cjs.map +1 -1
- package/dist/overlay/shared/use-dialog.js +1 -1
- package/dist/overlay/shared/use-dialog.js.map +1 -1
- package/dist/overlay/shared/use-floating-trigger.cjs +1 -1
- package/dist/overlay/shared/use-floating-trigger.cjs.map +1 -1
- package/dist/overlay/shared/use-floating-trigger.js +1 -1
- package/dist/overlay/shared/use-floating-trigger.js.map +1 -1
- package/dist/popover.cjs.map +1 -1
- package/dist/popover.js.map +1 -1
- package/dist/radio.cjs +1 -1
- package/dist/radio.cjs.map +1 -1
- package/dist/radio.js +10 -8
- package/dist/radio.js.map +1 -1
- package/dist/rating.cjs +1 -1
- package/dist/rating.cjs.map +1 -1
- package/dist/rating.js +1 -1
- package/dist/rating.js.map +1 -1
- package/dist/refine.cjs +372 -323
- package/dist/refine.cjs.map +1 -1
- package/dist/refine.iife.js +372 -323
- package/dist/refine.iife.js.map +1 -1
- package/dist/refine.js +402 -353
- package/dist/refine.js.map +1 -1
- package/dist/select.cjs +16 -14
- package/dist/select.cjs.map +1 -1
- package/dist/select.js +118 -112
- package/dist/select.js.map +1 -1
- package/dist/sidebar.cjs +28 -23
- package/dist/sidebar.cjs.map +1 -1
- package/dist/sidebar.js +112 -77
- package/dist/sidebar.js.map +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.js +1 -1
- package/dist/slider.js.map +1 -1
- package/dist/stats.cjs +18 -0
- package/dist/stats.cjs.map +1 -0
- package/dist/stats.js +88 -0
- package/dist/stats.js.map +1 -0
- package/dist/stepper.cjs +1 -1
- package/dist/stepper.cjs.map +1 -1
- package/dist/stepper.js +1 -1
- package/dist/stepper.js.map +1 -1
- package/dist/styles/mixins/animation.css.cjs +2 -0
- package/dist/styles/mixins/animation.css.cjs.map +1 -1
- package/dist/styles/mixins/animation.css.d.ts.map +1 -1
- package/dist/styles/mixins/animation.css.js +2 -0
- package/dist/styles/mixins/animation.css.js.map +1 -1
- package/dist/tab-item.cjs +1 -1
- package/dist/tab-item.cjs.map +1 -1
- package/dist/tab-item.js +3 -2
- package/dist/tab-item.js.map +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.cjs.map +1 -1
- package/dist/tabs.js +3 -1
- package/dist/tabs.js.map +1 -1
- package/dist/toast.cjs.map +1 -1
- package/dist/toast.js.map +1 -1
- package/package.json +64 -56
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { HTMLResult } from '@vielzeug/ore';
|
|
1
2
|
import { type Readable } from '@vielzeug/ripple';
|
|
2
3
|
export type SortDirection = 'asc' | 'desc' | 'none';
|
|
3
4
|
export type SortState = {
|
|
@@ -7,12 +8,17 @@ export type SortState = {
|
|
|
7
8
|
export type DataGridColumn<T = Record<string, unknown>> = {
|
|
8
9
|
align?: 'left' | 'center' | 'right';
|
|
9
10
|
cell?: (item: T) => string;
|
|
11
|
+
filterLabel?: (item: T) => string;
|
|
12
|
+
filterValue?: (item: T) => number | string;
|
|
10
13
|
headerLabel?: string;
|
|
11
14
|
key: string;
|
|
12
15
|
label: string;
|
|
16
|
+
/** Render trusted structured cell content with Ore's safe template result. */
|
|
17
|
+
renderCell?: (item: T) => HTMLResult;
|
|
13
18
|
renderExpanded?: (item: T) => string;
|
|
14
19
|
resizable?: boolean;
|
|
15
20
|
sortable?: boolean;
|
|
21
|
+
sortType?: 'number' | 'text';
|
|
16
22
|
sortValue?: (item: T) => number | string;
|
|
17
23
|
width?: string;
|
|
18
24
|
};
|
|
@@ -22,7 +28,7 @@ export type FilterOption = {
|
|
|
22
28
|
label: string;
|
|
23
29
|
operators?: {
|
|
24
30
|
label: string;
|
|
25
|
-
value:
|
|
31
|
+
value: FilterOperator;
|
|
26
32
|
}[];
|
|
27
33
|
options: {
|
|
28
34
|
label?: string;
|
|
@@ -34,13 +40,20 @@ export type FilterRule = {
|
|
|
34
40
|
operator: FilterOperator;
|
|
35
41
|
values: Set<string>;
|
|
36
42
|
};
|
|
37
|
-
export type DataGridView = {
|
|
43
|
+
export type DataGridView<T = Record<string, unknown>> = {
|
|
44
|
+
filter?: (item: T) => boolean;
|
|
38
45
|
id: string;
|
|
39
46
|
label: string;
|
|
40
47
|
};
|
|
41
48
|
export type DataGridModelOptions<T = Record<string, unknown>> = {
|
|
49
|
+
activeView?: Readable<DataGridView<T> | undefined>;
|
|
42
50
|
clientSide: Readable<boolean>;
|
|
43
51
|
columns: Readable<DataGridColumn<T>[]>;
|
|
52
|
+
emptyValueLabel?: Readable<string>;
|
|
53
|
+
filterOperators?: Readable<{
|
|
54
|
+
label: string;
|
|
55
|
+
value: FilterOperator;
|
|
56
|
+
}[]>;
|
|
44
57
|
filterOptions: Readable<FilterOption[] | undefined>;
|
|
45
58
|
getRowKey: (item: T) => string;
|
|
46
59
|
items: Readable<T[]>;
|
|
@@ -68,6 +81,7 @@ export type DataGridModel<T = Record<string, unknown>> = {
|
|
|
68
81
|
readonly pageIndex: Readable<number>;
|
|
69
82
|
prevPage(): void;
|
|
70
83
|
removeFilter(key: string): void;
|
|
84
|
+
resetColumnVisibility(): void;
|
|
71
85
|
resetFilters(): void;
|
|
72
86
|
resetSearch(): void;
|
|
73
87
|
readonly searchActive: Readable<boolean>;
|
|
@@ -92,7 +106,7 @@ export type DataGridModel<T = Record<string, unknown>> = {
|
|
|
92
106
|
/**
|
|
93
107
|
* Feature-owned state and transform pipeline for `ore-datagrid`.
|
|
94
108
|
*
|
|
95
|
-
* Rows flow through query, filters, sorting, and pagination in order. Selection
|
|
109
|
+
* Rows flow through the active view, query, filters, sorting, and pagination in order. Selection
|
|
96
110
|
* and column visibility share the same model so every interactive grid concern
|
|
97
111
|
* has one reactive owner. Source-backed grids retain their server-owned rows by
|
|
98
112
|
* setting `clientSide` to false.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datagrid-model.d.ts","sourceRoot":"","sources":["../../../src/inputs/datagrid/datagrid-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,QAAQ,EAAiB,MAAM,kBAAkB,CAAC;AAE1E,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,aAAa,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IACxD,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"datagrid-model.d.ts","sourceRoot":"","sources":["../../../src/inputs/datagrid/datagrid-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,44 +18,55 @@ var r = [
|
|
|
18
18
|
value: "lt"
|
|
19
19
|
}
|
|
20
20
|
], i = (i) => {
|
|
21
|
-
let a = t(""), o = t(!1), s = t(/* @__PURE__ */ new Set()), c = t(/* @__PURE__ */ new Set()), l = t(/* @__PURE__ */ new Map()), u = t(""), d = t("none"), f = t(/* @__PURE__ */ new Set()), p = t(0), m = e(() => new Set(i.columns.value.map((e) => e.key))), h = e(() => i.columns.value.filter((e) => !s.value.has(e.key))), g = e(() => {
|
|
21
|
+
let a = t(""), o = t(!1), s = t(/* @__PURE__ */ new Set()), c = t(/* @__PURE__ */ new Set()), l = t(/* @__PURE__ */ new Map()), u = t(""), d = t("none"), f = t(/* @__PURE__ */ new Set()), p = t(0), m = e(() => /* @__PURE__ */ new Set([...i.columns.value.map((e) => e.key), ...(i.filterOptions.value ?? []).map((e) => e.key)])), h = e(() => i.columns.value.filter((e) => !s.value.has(e.key))), g = e(() => {
|
|
22
|
+
let e = i.items.value;
|
|
23
|
+
if (!i.clientSide.value) return e;
|
|
24
|
+
let t = i.activeView?.value?.filter;
|
|
25
|
+
return t ? e.filter(t) : e;
|
|
26
|
+
}), _ = (e, t) => {
|
|
27
|
+
let n = i.columns.value.find((e) => e.key === t);
|
|
28
|
+
return n?.filterValue ? n.filterValue(e) : e[t];
|
|
29
|
+
}, v = e(() => {
|
|
22
30
|
let e = new Set((i.filterOptions.value ?? []).map((e) => e.key)), t = [...c.value].filter((t) => !e.has(t));
|
|
23
31
|
if (!t.length) return /* @__PURE__ */ new Map();
|
|
24
32
|
let n = /* @__PURE__ */ new Map();
|
|
25
33
|
for (let e of t) {
|
|
26
|
-
let t = /* @__PURE__ */ new Set(),
|
|
27
|
-
for (let n of
|
|
28
|
-
let
|
|
29
|
-
|
|
30
|
-
label:
|
|
31
|
-
value:
|
|
34
|
+
let t = i.columns.value.find((t) => t.key === e), r = /* @__PURE__ */ new Set(), a = [];
|
|
35
|
+
for (let n of g.value) {
|
|
36
|
+
let o = _(n, e), s = o == null ? "" : String(o), c = t?.filterLabel?.(n) ?? t?.cell?.(n) ?? s;
|
|
37
|
+
r.has(s) || (r.add(s), a.push({
|
|
38
|
+
label: c || i.emptyValueLabel?.value || "(empty)",
|
|
39
|
+
value: s
|
|
32
40
|
}));
|
|
33
41
|
}
|
|
34
|
-
n.set(e,
|
|
42
|
+
n.set(e, a);
|
|
35
43
|
}
|
|
36
44
|
return n;
|
|
37
|
-
}),
|
|
38
|
-
let e = i.filterOptions.value ?? [], t = new Set(e.map((e) => e.key)), n = [...c.value].filter((e) => !t.has(e)).map((e) => ({
|
|
45
|
+
}), y = e(() => {
|
|
46
|
+
let e = i.filterOptions.value ?? [], t = new Set(e.map((e) => e.key)), n = e.filter((e) => c.value.has(e.key)), a = [...c.value].filter((e) => !t.has(e)).map((e) => ({
|
|
39
47
|
key: e,
|
|
40
48
|
label: i.columns.value.find((t) => t.key === e)?.label ?? e,
|
|
41
|
-
operators: r,
|
|
42
|
-
options:
|
|
49
|
+
operators: i.filterOperators?.value ?? r,
|
|
50
|
+
options: v.value.get(e) ?? []
|
|
43
51
|
}));
|
|
44
|
-
return [...
|
|
52
|
+
return [...n.map((e) => ({
|
|
45
53
|
...e,
|
|
46
|
-
operators: e.operators ?? r
|
|
47
|
-
})), ...
|
|
48
|
-
}),
|
|
49
|
-
let e =
|
|
54
|
+
operators: e.operators ?? i.filterOperators?.value ?? r
|
|
55
|
+
})), ...a];
|
|
56
|
+
}), b = e(() => {
|
|
57
|
+
let e = g.value;
|
|
50
58
|
if (!i.clientSide.value) return e;
|
|
51
59
|
let t = a.value.trim().toLowerCase();
|
|
52
|
-
return t ? e.filter((e) =>
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
return t ? e.filter((e) => i.columns.value.some((n) => {
|
|
61
|
+
let r = n.cell ? n.cell(e) : _(e, n.key);
|
|
62
|
+
return r != null && String(r).toLowerCase().includes(t);
|
|
63
|
+
})) : e;
|
|
64
|
+
}), x = e(() => {
|
|
65
|
+
let e = b.value;
|
|
55
66
|
return !i.clientSide.value || !l.value.size ? e : e.filter((e) => {
|
|
56
67
|
for (let [t, n] of l.value) {
|
|
57
68
|
if (!n.values.size || !m.value.has(t)) continue;
|
|
58
|
-
let r = e
|
|
69
|
+
let r = _(e, t), i = r == null ? "" : String(r);
|
|
59
70
|
if (n.operator === "equals" && !n.values.has(i) || n.operator === "contains" && ![...n.values].some((e) => i.toLowerCase().includes(e.toLowerCase()))) return !1;
|
|
60
71
|
if (n.operator === "gt" || n.operator === "lt") {
|
|
61
72
|
let e = parseFloat(i), t = [...n.values].map(parseFloat).filter((e) => !Number.isNaN(e));
|
|
@@ -65,50 +76,54 @@ var r = [
|
|
|
65
76
|
}
|
|
66
77
|
return !0;
|
|
67
78
|
});
|
|
68
|
-
}),
|
|
79
|
+
}), S = e(() => ({
|
|
69
80
|
direction: d.value,
|
|
70
81
|
key: u.value
|
|
71
|
-
})),
|
|
72
|
-
let e =
|
|
82
|
+
})), C = e(() => {
|
|
83
|
+
let e = x.value;
|
|
73
84
|
if (!i.clientSide.value || i.sortMode.value === "server") return e;
|
|
74
|
-
let { direction: t, key: n } =
|
|
85
|
+
let { direction: t, key: n } = S.value;
|
|
75
86
|
if (!n || t === "none") return e;
|
|
76
87
|
let r = i.columns.value.find((e) => e.key === n);
|
|
77
88
|
return e.slice().sort((e, i) => {
|
|
78
89
|
let a = r?.sortValue ? r.sortValue(e) : e[n], o = r?.sortValue ? r.sortValue(i) : i[n], s = typeof a == "number" && typeof o == "number" ? a - o : String(a ?? "").localeCompare(String(o ?? ""));
|
|
79
90
|
return t === "asc" ? s : -s;
|
|
80
91
|
});
|
|
81
|
-
}),
|
|
92
|
+
}), w = e(() => C.value.length), T = e(() => {
|
|
82
93
|
let e = i.pageSize.value;
|
|
83
|
-
return Math.ceil(
|
|
84
|
-
}),
|
|
94
|
+
return Math.ceil(w.value / (e <= 0 ? 2 ** 53 - 1 : e));
|
|
95
|
+
}), E = e(() => T.value ? Math.min(p.value, T.value - 1) : -1), D = e(() => {
|
|
85
96
|
let e = i.pageSize.value;
|
|
86
|
-
if (e <= 0) return
|
|
87
|
-
let t =
|
|
88
|
-
return
|
|
89
|
-
}),
|
|
97
|
+
if (e <= 0) return C.value;
|
|
98
|
+
let t = E.value * e;
|
|
99
|
+
return C.value.slice(t, t + e);
|
|
100
|
+
}), O = e(() => T.value > 0 && E.value < T.value - 1), k = e(() => E.value > 0), A = e(() => i.items.value.filter((e) => f.value.has(i.getRowKey(e))));
|
|
90
101
|
n(m, (e) => {
|
|
91
102
|
let t = new Set([...c.value].filter((t) => e.has(t))), n = new Map([...l.value].filter(([t]) => e.has(t)));
|
|
92
103
|
t.size !== c.value.size && (c.value = t), n.size !== l.value.size && (l.value = n);
|
|
93
|
-
}, { immediate: !1 }), n(
|
|
104
|
+
}, { immediate: !1 }), n(C, () => {
|
|
94
105
|
p.value = 0;
|
|
95
106
|
});
|
|
96
|
-
let
|
|
107
|
+
let j = (e) => {
|
|
97
108
|
f.value = e, i.onSelectionChange?.(e);
|
|
98
|
-
},
|
|
109
|
+
}, M = (e, t) => {
|
|
99
110
|
let n = new Map(l.value);
|
|
100
|
-
t.length
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
111
|
+
if (t.length) {
|
|
112
|
+
let r = y.value.find((t) => t.key === e)?.operators?.[0]?.value;
|
|
113
|
+
n.set(e, {
|
|
114
|
+
operator: n.get(e)?.operator ?? r ?? "contains",
|
|
115
|
+
values: new Set(t)
|
|
116
|
+
});
|
|
117
|
+
} else n.delete(e);
|
|
118
|
+
l.value = n;
|
|
119
|
+
}, N = (e, t) => {
|
|
105
120
|
let n = l.value.get(e);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
})
|
|
110
|
-
},
|
|
111
|
-
u.value = t === "none" ? "" : e, d.value = t, p.value = 0, i.onSortChange?.(
|
|
121
|
+
l.value = new Map(l.value).set(e, {
|
|
122
|
+
operator: t,
|
|
123
|
+
values: n?.values ?? /* @__PURE__ */ new Set()
|
|
124
|
+
});
|
|
125
|
+
}, P = (e, t) => {
|
|
126
|
+
u.value = t === "none" ? "" : e, d.value = t, p.value = 0, i.onSortChange?.(S.value);
|
|
112
127
|
};
|
|
113
128
|
return {
|
|
114
129
|
activateFilterKey: (e) => {
|
|
@@ -117,28 +132,28 @@ var r = [
|
|
|
117
132
|
clearAllFilters: () => {
|
|
118
133
|
c.value = /* @__PURE__ */ new Set(), l.value = /* @__PURE__ */ new Map();
|
|
119
134
|
},
|
|
120
|
-
clearSelection: () =>
|
|
121
|
-
currentPageItems:
|
|
122
|
-
filterDefs:
|
|
123
|
-
filteredRows:
|
|
135
|
+
clearSelection: () => j(/* @__PURE__ */ new Set()),
|
|
136
|
+
currentPageItems: D,
|
|
137
|
+
filterDefs: y,
|
|
138
|
+
filteredRows: x,
|
|
124
139
|
filterValues: l,
|
|
125
140
|
goToPage: (e) => {
|
|
126
141
|
Number.isFinite(e) && (p.value = Math.max(0, e));
|
|
127
142
|
},
|
|
128
|
-
hasNextPage:
|
|
129
|
-
hasPrevPage:
|
|
143
|
+
hasNextPage: O,
|
|
144
|
+
hasPrevPage: k,
|
|
130
145
|
hiddenColumns: s,
|
|
131
146
|
isAllSelected: () => {
|
|
132
|
-
let e =
|
|
147
|
+
let e = D.value;
|
|
133
148
|
return e.length > 0 && e.every((e) => f.value.has(i.getRowKey(e)));
|
|
134
149
|
},
|
|
135
150
|
nextPage: () => {
|
|
136
|
-
|
|
151
|
+
O.value && (p.value = E.value + 1);
|
|
137
152
|
},
|
|
138
|
-
pageCount:
|
|
139
|
-
pageIndex:
|
|
153
|
+
pageCount: T,
|
|
154
|
+
pageIndex: E,
|
|
140
155
|
prevPage: () => {
|
|
141
|
-
|
|
156
|
+
k.value && (p.value = E.value - 1);
|
|
142
157
|
},
|
|
143
158
|
removeFilter: (e) => {
|
|
144
159
|
let t = new Set(c.value);
|
|
@@ -146,6 +161,9 @@ var r = [
|
|
|
146
161
|
let n = new Map(l.value);
|
|
147
162
|
n.delete(e), l.value = n;
|
|
148
163
|
},
|
|
164
|
+
resetColumnVisibility: () => {
|
|
165
|
+
s.value = /* @__PURE__ */ new Set();
|
|
166
|
+
},
|
|
149
167
|
resetFilters: () => {
|
|
150
168
|
c.value = /* @__PURE__ */ new Set(), l.value = /* @__PURE__ */ new Map();
|
|
151
169
|
},
|
|
@@ -157,41 +175,46 @@ var r = [
|
|
|
157
175
|
selectAll: () => {
|
|
158
176
|
if (i.selectionMode.value !== "multi") return;
|
|
159
177
|
let e = new Set(f.value);
|
|
160
|
-
if (
|
|
161
|
-
else for (let t of
|
|
162
|
-
|
|
178
|
+
if (D.value.every((t) => e.has(i.getRowKey(t)))) for (let t of D.value) e.delete(i.getRowKey(t));
|
|
179
|
+
else for (let t of D.value) e.add(i.getRowKey(t));
|
|
180
|
+
j(e);
|
|
163
181
|
},
|
|
164
182
|
selectedKeys: e(() => new Set(f.value)),
|
|
165
|
-
selectedRows:
|
|
183
|
+
selectedRows: A,
|
|
166
184
|
setActiveFilterKeys: (e) => {
|
|
167
185
|
let t = new Set(e);
|
|
168
186
|
c.value = t, l.value = new Map([...l.value].filter(([e]) => t.has(e)));
|
|
169
187
|
},
|
|
170
|
-
setFilter:
|
|
171
|
-
setFilterOperator:
|
|
188
|
+
setFilter: M,
|
|
189
|
+
setFilterOperator: N,
|
|
172
190
|
setSearchQuery: (e) => {
|
|
173
191
|
a.value = e;
|
|
174
192
|
},
|
|
175
|
-
setSelection: (e) =>
|
|
193
|
+
setSelection: (e) => j(new Set(e)),
|
|
176
194
|
sortBy: (e) => {
|
|
177
195
|
let t = u.value === e ? d.value === "asc" ? "desc" : d.value === "desc" ? "none" : "asc" : "asc";
|
|
178
|
-
|
|
196
|
+
P(t === "none" ? "" : e, t);
|
|
179
197
|
},
|
|
180
|
-
sortState:
|
|
181
|
-
sortTo:
|
|
198
|
+
sortState: S,
|
|
199
|
+
sortTo: P,
|
|
182
200
|
toggleColumnVisibility: (e) => {
|
|
183
201
|
let t = new Set(s.value);
|
|
184
|
-
t.has(e)
|
|
202
|
+
if (t.has(e)) t.delete(e);
|
|
203
|
+
else {
|
|
204
|
+
if (h.value.length <= 1) return;
|
|
205
|
+
t.add(e);
|
|
206
|
+
}
|
|
207
|
+
s.value = t;
|
|
185
208
|
},
|
|
186
209
|
toggleRow: (e) => {
|
|
187
210
|
if (i.selectionMode.value === "none") return;
|
|
188
211
|
let t = new Set(f.value);
|
|
189
|
-
t.has(e) ? t.delete(e) : (i.selectionMode.value === "single" && t.clear(), t.add(e)),
|
|
212
|
+
t.has(e) ? t.delete(e) : (i.selectionMode.value === "single" && t.clear(), t.add(e)), j(t);
|
|
190
213
|
},
|
|
191
214
|
toggleSearch: () => {
|
|
192
215
|
o.value && (a.value = ""), o.value = !o.value;
|
|
193
216
|
},
|
|
194
|
-
totalItems:
|
|
217
|
+
totalItems: w,
|
|
195
218
|
visibleColumns: h
|
|
196
219
|
};
|
|
197
220
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datagrid-model.js","names":[],"sources":["../../../src/inputs/datagrid/datagrid-model.ts"],"sourcesContent":["import { computed, type Readable, signal, watch } from '@vielzeug/ripple';\n\nexport type SortDirection = 'asc' | 'desc' | 'none';\n\nexport type SortState = {\n direction: SortDirection;\n key: string;\n};\n\nexport type DataGridColumn<T = Record<string, unknown>> = {\n align?: 'left' | 'center' | 'right';\n cell?: (item: T) => string;\n headerLabel?: string;\n key: string;\n label: string;\n renderExpanded?: (item: T) => string;\n resizable?: boolean;\n sortable?: boolean;\n sortValue?: (item: T) => number | string;\n width?: string;\n};\n\nexport type SelectionMode = 'multi' | 'none' | 'single';\n\nexport type FilterOption = {\n key: string;\n label: string;\n operators?: { label: string; value: string }[];\n options: { label?: string; value: string }[];\n};\n\nexport type FilterOperator = 'contains' | 'equals' | 'gt' | 'lt';\n\nexport type FilterRule = {\n operator: FilterOperator;\n values: Set<string>;\n};\n\nexport type DataGridView = {\n id: string;\n label: string;\n};\n\nexport type DataGridModelOptions<T = Record<string, unknown>> = {\n clientSide: Readable<boolean>;\n columns: Readable<DataGridColumn<T>[]>;\n filterOptions: Readable<FilterOption[] | undefined>;\n getRowKey: (item: T) => string;\n items: Readable<T[]>;\n onSelectionChange?: (keys: Set<string>) => void;\n onSortChange?: (sort: SortState) => void;\n pageSize: Readable<number>;\n selectionMode: Readable<SelectionMode>;\n sortMode: Readable<'client' | 'server'>;\n};\n\nexport type DataGridModel<T = Record<string, unknown>> = {\n activateFilterKey(key: string): void;\n clearAllFilters(): void;\n clearSelection(): void;\n readonly currentPageItems: Readable<T[]>;\n readonly filterDefs: Readable<FilterOption[]>;\n readonly filteredRows: Readable<T[]>;\n readonly filterValues: Readable<Map<string, FilterRule>>;\n goToPage(index: number): void;\n readonly hasNextPage: Readable<boolean>;\n readonly hasPrevPage: Readable<boolean>;\n readonly hiddenColumns: Readable<Set<string>>;\n isAllSelected(): boolean;\n nextPage(): void;\n readonly pageCount: Readable<number>;\n readonly pageIndex: Readable<number>;\n prevPage(): void;\n removeFilter(key: string): void;\n resetFilters(): void;\n resetSearch(): void;\n readonly searchActive: Readable<boolean>;\n readonly searchQuery: Readable<string>;\n selectAll(): void;\n readonly selectedKeys: Readable<ReadonlySet<string>>;\n readonly selectedRows: Readable<T[]>;\n setActiveFilterKeys(keys: string[]): void;\n setFilter(key: string, values: string[]): void;\n setFilterOperator(key: string, operator: FilterOperator): void;\n setSearchQuery(query: string): void;\n setSelection(keys: Set<string>): void;\n sortBy(key: string): void;\n readonly sortState: Readable<SortState>;\n sortTo(key: string, direction: SortDirection): void;\n toggleColumnVisibility(key: string): void;\n toggleRow(key: string): void;\n toggleSearch(): void;\n readonly totalItems: Readable<number>;\n readonly visibleColumns: Readable<DataGridColumn<T>[]>;\n};\n\nconst DEFAULT_OPERATORS: { label: string; value: FilterOperator }[] = [\n { label: 'Contains', value: 'contains' },\n { label: 'Equals', value: 'equals' },\n { label: 'Greater than', value: 'gt' },\n { label: 'Less than', value: 'lt' },\n];\n\n/**\n * Feature-owned state and transform pipeline for `ore-datagrid`.\n *\n * Rows flow through query, filters, sorting, and pagination in order. Selection\n * and column visibility share the same model so every interactive grid concern\n * has one reactive owner. Source-backed grids retain their server-owned rows by\n * setting `clientSide` to false.\n */\nexport const createDataGridModel = <T extends Record<string, unknown>>(\n options: DataGridModelOptions<T>,\n): DataGridModel<T> => {\n const searchQuery = signal('');\n const searchActive = signal(false);\n const hiddenColumns = signal(new Set<string>());\n const activeFilterKeys = signal(new Set<string>());\n const filterValues = signal(new Map<string, FilterRule>());\n const sortKey = signal('');\n const sortDirection = signal<SortDirection>('none');\n const selectedKeys = signal(new Set<string>());\n const pageIndex = signal(0);\n\n const columnKeys = computed(() => new Set(options.columns.value.map((column) => column.key)));\n const visibleColumns = computed(() => options.columns.value.filter((column) => !hiddenColumns.value.has(column.key)));\n\n const colOptions = computed(() => {\n const externalKeys = new Set((options.filterOptions.value ?? []).map((filter) => filter.key));\n const activeKeys = [...activeFilterKeys.value].filter((key) => !externalKeys.has(key));\n\n if (!activeKeys.length) return new Map<string, { label: string; value: string }[]>();\n\n const derived = new Map<string, { label: string; value: string }[]>();\n\n for (const key of activeKeys) {\n const seen = new Set<string>();\n const values: { label: string; value: string }[] = [];\n\n for (const row of options.items.value) {\n const value = row[key];\n const stringValue = value == null ? '' : String(value);\n\n if (!seen.has(stringValue)) {\n seen.add(stringValue);\n values.push({ label: stringValue || '(empty)', value: stringValue });\n }\n }\n\n derived.set(key, values);\n }\n\n return derived;\n });\n\n const filterDefs = computed<FilterOption[]>(() => {\n const provided = options.filterOptions.value ?? [];\n const providedKeys = new Set(provided.map((filter) => filter.key));\n const derived = [...activeFilterKeys.value]\n .filter((key) => !providedKeys.has(key))\n .map((key) => {\n const column = options.columns.value.find((candidate) => candidate.key === key);\n\n return {\n key,\n label: column?.label ?? key,\n operators: DEFAULT_OPERATORS,\n options: colOptions.value.get(key) ?? [],\n };\n });\n\n return [...provided.map((filter) => ({ ...filter, operators: filter.operators ?? DEFAULT_OPERATORS })), ...derived];\n });\n\n const searchedRows = computed(() => {\n const rows = options.items.value;\n\n if (!options.clientSide.value) return rows;\n\n const query = searchQuery.value.trim().toLowerCase();\n\n if (!query) return rows;\n\n return rows.filter((row) =>\n Object.values(row).some((value) => value != null && String(value).toLowerCase().includes(query)),\n );\n });\n\n const filteredRows = computed(() => {\n const rows = searchedRows.value;\n\n if (!options.clientSide.value || !filterValues.value.size) return rows;\n\n return rows.filter((row) => {\n for (const [key, rule] of filterValues.value) {\n if (!rule.values.size || !columnKeys.value.has(key)) continue;\n\n const value = row[key];\n const stringValue = value == null ? '' : String(value);\n\n if (rule.operator === 'equals' && !rule.values.has(stringValue)) return false;\n\n if (\n rule.operator === 'contains' &&\n ![...rule.values].some((target) => stringValue.toLowerCase().includes(target.toLowerCase()))\n ) {\n return false;\n }\n\n if (rule.operator === 'gt' || rule.operator === 'lt') {\n const numericValue = parseFloat(stringValue);\n const targets = [...rule.values].map(parseFloat).filter((target) => !Number.isNaN(target));\n\n if (!targets.length) continue;\n\n if (rule.operator === 'gt' && !targets.some((target) => numericValue > target)) return false;\n\n if (rule.operator === 'lt' && !targets.some((target) => numericValue < target)) return false;\n }\n }\n\n return true;\n });\n });\n\n const sortState = computed<SortState>(() => ({ direction: sortDirection.value, key: sortKey.value }));\n const sortedRows = computed(() => {\n const rows = filteredRows.value;\n\n if (!options.clientSide.value || options.sortMode.value === 'server') return rows;\n\n const { direction, key } = sortState.value;\n\n if (!key || direction === 'none') return rows;\n\n const column = options.columns.value.find((candidate) => candidate.key === key);\n\n return rows.slice().sort((a, b) => {\n const aValue = column?.sortValue ? column.sortValue(a) : (a[key] as number | string);\n const bValue = column?.sortValue ? column.sortValue(b) : (b[key] as number | string);\n const comparison =\n typeof aValue === 'number' && typeof bValue === 'number'\n ? aValue - bValue\n : String(aValue ?? '').localeCompare(String(bValue ?? ''));\n\n return direction === 'asc' ? comparison : -comparison;\n });\n });\n\n const totalItems = computed(() => sortedRows.value.length);\n const pageCount = computed(() => {\n const size = options.pageSize.value;\n\n return Math.ceil(totalItems.value / (size <= 0 ? Number.MAX_SAFE_INTEGER : size));\n });\n const safePageIndex = computed(() => (pageCount.value ? Math.min(pageIndex.value, pageCount.value - 1) : -1));\n const currentPageItems = computed(() => {\n const size = options.pageSize.value;\n\n if (size <= 0) return sortedRows.value;\n\n const start = safePageIndex.value * size;\n\n return sortedRows.value.slice(start, start + size);\n });\n const hasNextPage = computed(() => pageCount.value > 0 && safePageIndex.value < pageCount.value - 1);\n const hasPrevPage = computed(() => safePageIndex.value > 0);\n const selectedRows = computed(() =>\n options.items.value.filter((item) => selectedKeys.value.has(options.getRowKey(item))),\n );\n\n watch(\n columnKeys,\n (keys) => {\n const nextActiveKeys = new Set([...activeFilterKeys.value].filter((key) => keys.has(key)));\n const nextValues = new Map([...filterValues.value].filter(([key]) => keys.has(key)));\n\n if (nextActiveKeys.size !== activeFilterKeys.value.size) activeFilterKeys.value = nextActiveKeys;\n\n if (nextValues.size !== filterValues.value.size) filterValues.value = nextValues;\n },\n { immediate: false },\n );\n\n watch(sortedRows, () => {\n pageIndex.value = 0;\n });\n\n const commitSelection = (next: Set<string>): void => {\n selectedKeys.value = next;\n options.onSelectionChange?.(next);\n };\n\n const setFilter = (key: string, values: string[]): void => {\n const next = new Map(filterValues.value);\n\n if (values.length) {\n next.set(key, { operator: next.get(key)?.operator ?? 'contains', values: new Set(values) });\n } else {\n next.delete(key);\n }\n\n filterValues.value = next;\n };\n\n const setFilterOperator = (key: string, operator: FilterOperator): void => {\n const rule = filterValues.value.get(key);\n\n if (rule) filterValues.value = new Map(filterValues.value).set(key, { ...rule, operator });\n };\n\n const sortTo = (key: string, direction: SortDirection): void => {\n sortKey.value = direction === 'none' ? '' : key;\n sortDirection.value = direction;\n pageIndex.value = 0;\n options.onSortChange?.(sortState.value);\n };\n\n return {\n activateFilterKey: (key) => {\n if (!activeFilterKeys.value.has(key)) activeFilterKeys.value = new Set([...activeFilterKeys.value, key]);\n },\n clearAllFilters: () => {\n activeFilterKeys.value = new Set();\n filterValues.value = new Map();\n },\n clearSelection: () => commitSelection(new Set()),\n currentPageItems,\n filterDefs,\n filteredRows,\n filterValues,\n goToPage: (index) => {\n if (Number.isFinite(index)) pageIndex.value = Math.max(0, index);\n },\n hasNextPage,\n hasPrevPage,\n hiddenColumns,\n isAllSelected: () => {\n const page = currentPageItems.value;\n\n return page.length > 0 && page.every((item) => selectedKeys.value.has(options.getRowKey(item)));\n },\n nextPage: () => {\n if (hasNextPage.value) pageIndex.value = safePageIndex.value + 1;\n },\n pageCount,\n pageIndex: safePageIndex,\n prevPage: () => {\n if (hasPrevPage.value) pageIndex.value = safePageIndex.value - 1;\n },\n removeFilter: (key) => {\n const nextActiveKeys = new Set(activeFilterKeys.value);\n\n nextActiveKeys.delete(key);\n activeFilterKeys.value = nextActiveKeys;\n\n const nextValues = new Map(filterValues.value);\n\n nextValues.delete(key);\n filterValues.value = nextValues;\n },\n resetFilters: () => {\n activeFilterKeys.value = new Set();\n filterValues.value = new Map();\n },\n resetSearch: () => {\n searchQuery.value = '';\n searchActive.value = false;\n },\n searchActive,\n searchQuery,\n selectAll: () => {\n if (options.selectionMode.value !== 'multi') return;\n\n const next = new Set(selectedKeys.value);\n\n if (currentPageItems.value.every((item) => next.has(options.getRowKey(item)))) {\n for (const item of currentPageItems.value) next.delete(options.getRowKey(item));\n } else {\n for (const item of currentPageItems.value) next.add(options.getRowKey(item));\n }\n\n commitSelection(next);\n },\n selectedKeys: computed(() => new Set(selectedKeys.value)),\n selectedRows,\n setActiveFilterKeys: (keys) => {\n const nextActiveKeys = new Set(keys);\n\n activeFilterKeys.value = nextActiveKeys;\n filterValues.value = new Map([...filterValues.value].filter(([key]) => nextActiveKeys.has(key)));\n },\n setFilter,\n setFilterOperator,\n setSearchQuery: (query) => {\n searchQuery.value = query;\n },\n setSelection: (keys) => commitSelection(new Set(keys)),\n sortBy: (key) => {\n const nextDirection =\n sortKey.value !== key\n ? 'asc'\n : sortDirection.value === 'asc'\n ? 'desc'\n : sortDirection.value === 'desc'\n ? 'none'\n : 'asc';\n\n sortTo(nextDirection === 'none' ? '' : key, nextDirection);\n },\n sortState,\n sortTo,\n toggleColumnVisibility: (key) => {\n const next = new Set(hiddenColumns.value);\n\n if (next.has(key)) next.delete(key);\n else next.add(key);\n\n hiddenColumns.value = next;\n },\n toggleRow: (key) => {\n if (options.selectionMode.value === 'none') return;\n\n const next = new Set(selectedKeys.value);\n\n if (next.has(key)) next.delete(key);\n else {\n if (options.selectionMode.value === 'single') next.clear();\n\n next.add(key);\n }\n\n commitSelection(next);\n },\n toggleSearch: () => {\n if (searchActive.value) searchQuery.value = '';\n\n searchActive.value = !searchActive.value;\n },\n totalItems,\n visibleColumns,\n };\n};\n"],"mappings":";;AAgGA,IAAM,IAAgE;CACpE;EAAE,OAAO;EAAY,OAAO;CAAW;CACvC;EAAE,OAAO;EAAU,OAAO;CAAS;CACnC;EAAE,OAAO;EAAgB,OAAO;CAAK;CACrC;EAAE,OAAO;EAAa,OAAO;CAAK;AACpC,GAUa,KACX,MACqB;CACrB,IAAM,IAAc,EAAO,EAAE,GACvB,IAAe,EAAO,EAAK,GAC3B,IAAgB,kBAAO,IAAI,IAAY,CAAC,GACxC,IAAmB,kBAAO,IAAI,IAAY,CAAC,GAC3C,IAAe,kBAAO,IAAI,IAAwB,CAAC,GACnD,IAAU,EAAO,EAAE,GACnB,IAAgB,EAAsB,MAAM,GAC5C,IAAe,kBAAO,IAAI,IAAY,CAAC,GACvC,IAAY,EAAO,CAAC,GAEpB,IAAa,QAAe,IAAI,IAAI,EAAQ,QAAQ,MAAM,KAAK,MAAW,EAAO,GAAG,CAAC,CAAC,GACtF,IAAiB,QAAe,EAAQ,QAAQ,MAAM,QAAQ,MAAW,CAAC,EAAc,MAAM,IAAI,EAAO,GAAG,CAAC,CAAC,GAE9G,IAAa,QAAe;EAChC,IAAM,IAAe,IAAI,KAAK,EAAQ,cAAc,SAAS,CAAC,EAAA,CAAG,KAAK,MAAW,EAAO,GAAG,CAAC,GACtF,IAAa,CAAC,GAAG,EAAiB,KAAK,CAAC,CAAC,QAAQ,MAAQ,CAAC,EAAa,IAAI,CAAG,CAAC;EAErF,IAAI,CAAC,EAAW,QAAQ,uBAAO,IAAI,IAAgD;EAEnF,IAAM,oBAAU,IAAI,IAAgD;EAEpE,KAAK,IAAM,KAAO,GAAY;GAC5B,IAAM,oBAAO,IAAI,IAAY,GACvB,IAA6C,CAAC;GAEpD,KAAK,IAAM,KAAO,EAAQ,MAAM,OAAO;IACrC,IAAM,IAAQ,EAAI,IACZ,IAAc,KAAS,OAAO,KAAK,OAAO,CAAK;IAErD,AAAK,EAAK,IAAI,CAAW,MACvB,EAAK,IAAI,CAAW,GACpB,EAAO,KAAK;KAAE,OAAO,KAAe;KAAW,OAAO;IAAY,CAAC;GAEvE;GAEA,EAAQ,IAAI,GAAK,CAAM;EACzB;EAEA,OAAO;CACT,CAAC,GAEK,IAAa,QAA+B;EAChD,IAAM,IAAW,EAAQ,cAAc,SAAS,CAAC,GAC3C,IAAe,IAAI,IAAI,EAAS,KAAK,MAAW,EAAO,GAAG,CAAC,GAC3D,IAAU,CAAC,GAAG,EAAiB,KAAK,CAAC,CACxC,QAAQ,MAAQ,CAAC,EAAa,IAAI,CAAG,CAAC,CAAC,CACvC,KAAK,OAGG;GACL;GACA,OAJa,EAAQ,QAAQ,MAAM,MAAM,MAAc,EAAU,QAAQ,CAIlE,CAAA,EAAQ,SAAS;GACxB,WAAW;GACX,SAAS,EAAW,MAAM,IAAI,CAAG,KAAK,CAAC;EACzC,EACD;EAEH,OAAO,CAAC,GAAG,EAAS,KAAK,OAAY;GAAE,GAAG;GAAQ,WAAW,EAAO,aAAa;EAAkB,EAAE,GAAG,GAAG,CAAO;CACpH,CAAC,GAEK,IAAe,QAAe;EAClC,IAAM,IAAO,EAAQ,MAAM;EAE3B,IAAI,CAAC,EAAQ,WAAW,OAAO,OAAO;EAEtC,IAAM,IAAQ,EAAY,MAAM,KAAK,CAAC,CAAC,YAAY;EAInD,OAFK,IAEE,EAAK,QAAQ,MAClB,OAAO,OAAO,CAAG,CAAC,CAAC,MAAM,MAAU,KAAS,QAAQ,OAAO,CAAK,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAK,CAAC,CACjG,IAJmB;CAKrB,CAAC,GAEK,IAAe,QAAe;EAClC,IAAM,IAAO,EAAa;EAI1B,OAFI,CAAC,EAAQ,WAAW,SAAS,CAAC,EAAa,MAAM,OAAa,IAE3D,EAAK,QAAQ,MAAQ;GAC1B,KAAK,IAAM,CAAC,GAAK,MAAS,EAAa,OAAO;IAC5C,IAAI,CAAC,EAAK,OAAO,QAAQ,CAAC,EAAW,MAAM,IAAI,CAAG,GAAG;IAErD,IAAM,IAAQ,EAAI,IACZ,IAAc,KAAS,OAAO,KAAK,OAAO,CAAK;IAIrD,IAFI,EAAK,aAAa,YAAY,CAAC,EAAK,OAAO,IAAI,CAAW,KAG5D,EAAK,aAAa,cAClB,CAAC,CAAC,GAAG,EAAK,MAAM,CAAC,CAAC,MAAM,MAAW,EAAY,YAAY,CAAC,CAAC,SAAS,EAAO,YAAY,CAAC,CAAC,GAE3F,OAAO;IAGT,IAAI,EAAK,aAAa,QAAQ,EAAK,aAAa,MAAM;KACpD,IAAM,IAAe,WAAW,CAAW,GACrC,IAAU,CAAC,GAAG,EAAK,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,QAAQ,MAAW,CAAC,OAAO,MAAM,CAAM,CAAC;KAEzF,IAAI,CAAC,EAAQ,QAAQ;KAIrB,IAFI,EAAK,aAAa,QAAQ,CAAC,EAAQ,MAAM,MAAW,IAAe,CAAM,KAEzE,EAAK,aAAa,QAAQ,CAAC,EAAQ,MAAM,MAAW,IAAe,CAAM,GAAG,OAAO;IACzF;GACF;GAEA,OAAO;EACT,CAAC;CACH,CAAC,GAEK,IAAY,SAA2B;EAAE,WAAW,EAAc;EAAO,KAAK,EAAQ;CAAM,EAAE,GAC9F,IAAa,QAAe;EAChC,IAAM,IAAO,EAAa;EAE1B,IAAI,CAAC,EAAQ,WAAW,SAAS,EAAQ,SAAS,UAAU,UAAU,OAAO;EAE7E,IAAM,EAAE,cAAW,WAAQ,EAAU;EAErC,IAAI,CAAC,KAAO,MAAc,QAAQ,OAAO;EAEzC,IAAM,IAAS,EAAQ,QAAQ,MAAM,MAAM,MAAc,EAAU,QAAQ,CAAG;EAE9E,OAAO,EAAK,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM;GACjC,IAAM,IAAS,GAAQ,YAAY,EAAO,UAAU,CAAC,IAAK,EAAE,IACtD,IAAS,GAAQ,YAAY,EAAO,UAAU,CAAC,IAAK,EAAE,IACtD,IACJ,OAAO,KAAW,YAAY,OAAO,KAAW,WAC5C,IAAS,IACT,OAAO,KAAU,EAAE,CAAC,CAAC,cAAc,OAAO,KAAU,EAAE,CAAC;GAE7D,OAAO,MAAc,QAAQ,IAAa,CAAC;EAC7C,CAAC;CACH,CAAC,GAEK,IAAa,QAAe,EAAW,MAAM,MAAM,GACnD,IAAY,QAAe;EAC/B,IAAM,IAAO,EAAQ,SAAS;EAE9B,OAAO,KAAK,KAAK,EAAW,SAAS,KAAQ,kBAA8B,EAAK;CAClF,CAAC,GACK,IAAgB,QAAgB,EAAU,QAAQ,KAAK,IAAI,EAAU,OAAO,EAAU,QAAQ,CAAC,IAAI,EAAG,GACtG,IAAmB,QAAe;EACtC,IAAM,IAAO,EAAQ,SAAS;EAE9B,IAAI,KAAQ,GAAG,OAAO,EAAW;EAEjC,IAAM,IAAQ,EAAc,QAAQ;EAEpC,OAAO,EAAW,MAAM,MAAM,GAAO,IAAQ,CAAI;CACnD,CAAC,GACK,IAAc,QAAe,EAAU,QAAQ,KAAK,EAAc,QAAQ,EAAU,QAAQ,CAAC,GAC7F,IAAc,QAAe,EAAc,QAAQ,CAAC,GACpD,IAAe,QACnB,EAAQ,MAAM,MAAM,QAAQ,MAAS,EAAa,MAAM,IAAI,EAAQ,UAAU,CAAI,CAAC,CAAC,CACtF;CAeA,AAbA,EACE,IACC,MAAS;EACR,IAAM,IAAiB,IAAI,IAAI,CAAC,GAAG,EAAiB,KAAK,CAAC,CAAC,QAAQ,MAAQ,EAAK,IAAI,CAAG,CAAC,CAAC,GACnF,IAAa,IAAI,IAAI,CAAC,GAAG,EAAa,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAS,EAAK,IAAI,CAAG,CAAC,CAAC;EAInF,AAFI,EAAe,SAAS,EAAiB,MAAM,SAAM,EAAiB,QAAQ,IAE9E,EAAW,SAAS,EAAa,MAAM,SAAM,EAAa,QAAQ;CACxE,GACA,EAAE,WAAW,GAAM,CACrB,GAEA,EAAM,SAAkB;EACtB,EAAU,QAAQ;CACpB,CAAC;CAED,IAAM,KAAmB,MAA4B;EAEnD,AADA,EAAa,QAAQ,GACrB,EAAQ,oBAAoB,CAAI;CAClC,GAEM,KAAa,GAAa,MAA2B;EACzD,IAAM,IAAO,IAAI,IAAI,EAAa,KAAK;EAQvC,AANI,EAAO,SACT,EAAK,IAAI,GAAK;GAAE,UAAU,EAAK,IAAI,CAAG,CAAC,EAAE,YAAY;GAAY,QAAQ,IAAI,IAAI,CAAM;EAAE,CAAC,IAE1F,EAAK,OAAO,CAAG,GAGjB,EAAa,QAAQ;CACvB,GAEM,KAAqB,GAAa,MAAmC;EACzE,IAAM,IAAO,EAAa,MAAM,IAAI,CAAG;EAEvC,AAAI,MAAM,EAAa,QAAQ,IAAI,IAAI,EAAa,KAAK,CAAC,CAAC,IAAI,GAAK;GAAE,GAAG;GAAM;EAAS,CAAC;CAC3F,GAEM,KAAU,GAAa,MAAmC;EAI9D,AAHA,EAAQ,QAAQ,MAAc,SAAS,KAAK,GAC5C,EAAc,QAAQ,GACtB,EAAU,QAAQ,GAClB,EAAQ,eAAe,EAAU,KAAK;CACxC;CAEA,OAAO;EACL,oBAAoB,MAAQ;GAC1B,AAAK,EAAiB,MAAM,IAAI,CAAG,MAAG,EAAiB,wBAAQ,IAAI,IAAI,CAAC,GAAG,EAAiB,OAAO,CAAG,CAAC;EACzG;EACA,uBAAuB;GAErB,AADA,EAAiB,wBAAQ,IAAI,IAAI,GACjC,EAAa,wBAAQ,IAAI,IAAI;EAC/B;EACA,sBAAsB,kBAAgB,IAAI,IAAI,CAAC;EAC/C;EACA;EACA;EACA;EACA,WAAW,MAAU;GACnB,AAAI,OAAO,SAAS,CAAK,MAAG,EAAU,QAAQ,KAAK,IAAI,GAAG,CAAK;EACjE;EACA;EACA;EACA;EACA,qBAAqB;GACnB,IAAM,IAAO,EAAiB;GAE9B,OAAO,EAAK,SAAS,KAAK,EAAK,OAAO,MAAS,EAAa,MAAM,IAAI,EAAQ,UAAU,CAAI,CAAC,CAAC;EAChG;EACA,gBAAgB;GACd,AAAI,EAAY,UAAO,EAAU,QAAQ,EAAc,QAAQ;EACjE;EACA;EACA,WAAW;EACX,gBAAgB;GACd,AAAI,EAAY,UAAO,EAAU,QAAQ,EAAc,QAAQ;EACjE;EACA,eAAe,MAAQ;GACrB,IAAM,IAAiB,IAAI,IAAI,EAAiB,KAAK;GAGrD,AADA,EAAe,OAAO,CAAG,GACzB,EAAiB,QAAQ;GAEzB,IAAM,IAAa,IAAI,IAAI,EAAa,KAAK;GAG7C,AADA,EAAW,OAAO,CAAG,GACrB,EAAa,QAAQ;EACvB;EACA,oBAAoB;GAElB,AADA,EAAiB,wBAAQ,IAAI,IAAI,GACjC,EAAa,wBAAQ,IAAI,IAAI;EAC/B;EACA,mBAAmB;GAEjB,AADA,EAAY,QAAQ,IACpB,EAAa,QAAQ;EACvB;EACA;EACA;EACA,iBAAiB;GACf,IAAI,EAAQ,cAAc,UAAU,SAAS;GAE7C,IAAM,IAAO,IAAI,IAAI,EAAa,KAAK;GAEvC,IAAI,EAAiB,MAAM,OAAO,MAAS,EAAK,IAAI,EAAQ,UAAU,CAAI,CAAC,CAAC,GAC1E,KAAK,IAAM,KAAQ,EAAiB,OAAO,EAAK,OAAO,EAAQ,UAAU,CAAI,CAAC;QAE9E,KAAK,IAAM,KAAQ,EAAiB,OAAO,EAAK,IAAI,EAAQ,UAAU,CAAI,CAAC;GAG7E,EAAgB,CAAI;EACtB;EACA,cAAc,QAAe,IAAI,IAAI,EAAa,KAAK,CAAC;EACxD;EACA,sBAAsB,MAAS;GAC7B,IAAM,IAAiB,IAAI,IAAI,CAAI;GAGnC,AADA,EAAiB,QAAQ,GACzB,EAAa,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAa,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAS,EAAe,IAAI,CAAG,CAAC,CAAC;EACjG;EACA;EACA;EACA,iBAAiB,MAAU;GACzB,EAAY,QAAQ;EACtB;EACA,eAAe,MAAS,EAAgB,IAAI,IAAI,CAAI,CAAC;EACrD,SAAS,MAAQ;GACf,IAAM,IACJ,EAAQ,UAAU,IAEd,EAAc,UAAU,QACtB,SACA,EAAc,UAAU,SACtB,SACA,QALJ;GAON,EAAO,MAAkB,SAAS,KAAK,GAAK,CAAa;EAC3D;EACA;EACA;EACA,yBAAyB,MAAQ;GAC/B,IAAM,IAAO,IAAI,IAAI,EAAc,KAAK;GAKxC,AAHI,EAAK,IAAI,CAAG,IAAG,EAAK,OAAO,CAAG,IAC7B,EAAK,IAAI,CAAG,GAEjB,EAAc,QAAQ;EACxB;EACA,YAAY,MAAQ;GAClB,IAAI,EAAQ,cAAc,UAAU,QAAQ;GAE5C,IAAM,IAAO,IAAI,IAAI,EAAa,KAAK;GASvC,AAPI,EAAK,IAAI,CAAG,IAAG,EAAK,OAAO,CAAG,KAE5B,EAAQ,cAAc,UAAU,YAAU,EAAK,MAAM,GAEzD,EAAK,IAAI,CAAG,IAGd,EAAgB,CAAI;EACtB;EACA,oBAAoB;GAGlB,AAFI,EAAa,UAAO,EAAY,QAAQ,KAE5C,EAAa,QAAQ,CAAC,EAAa;EACrC;EACA;EACA;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"datagrid-model.js","names":[],"sources":["../../../src/inputs/datagrid/datagrid-model.ts"],"sourcesContent":["import type { HTMLResult } from '@vielzeug/ore';\nimport { computed, type Readable, signal, watch } from '@vielzeug/ripple';\n\nexport type SortDirection = 'asc' | 'desc' | 'none';\n\nexport type SortState = {\n direction: SortDirection;\n key: string;\n};\n\nexport type DataGridColumn<T = Record<string, unknown>> = {\n align?: 'left' | 'center' | 'right';\n cell?: (item: T) => string;\n filterLabel?: (item: T) => string;\n filterValue?: (item: T) => number | string;\n headerLabel?: string;\n key: string;\n label: string;\n /** Render trusted structured cell content with Ore's safe template result. */\n renderCell?: (item: T) => HTMLResult;\n renderExpanded?: (item: T) => string;\n resizable?: boolean;\n sortable?: boolean;\n sortType?: 'number' | 'text';\n sortValue?: (item: T) => number | string;\n width?: string;\n};\n\nexport type SelectionMode = 'multi' | 'none' | 'single';\n\nexport type FilterOption = {\n key: string;\n label: string;\n operators?: { label: string; value: FilterOperator }[];\n options: { label?: string; value: string }[];\n};\n\nexport type FilterOperator = 'contains' | 'equals' | 'gt' | 'lt';\n\nexport type FilterRule = {\n operator: FilterOperator;\n values: Set<string>;\n};\n\nexport type DataGridView<T = Record<string, unknown>> = {\n filter?: (item: T) => boolean;\n id: string;\n label: string;\n};\n\nexport type DataGridModelOptions<T = Record<string, unknown>> = {\n activeView?: Readable<DataGridView<T> | undefined>;\n clientSide: Readable<boolean>;\n columns: Readable<DataGridColumn<T>[]>;\n emptyValueLabel?: Readable<string>;\n filterOperators?: Readable<{ label: string; value: FilterOperator }[]>;\n filterOptions: Readable<FilterOption[] | undefined>;\n getRowKey: (item: T) => string;\n items: Readable<T[]>;\n onSelectionChange?: (keys: Set<string>) => void;\n onSortChange?: (sort: SortState) => void;\n pageSize: Readable<number>;\n selectionMode: Readable<SelectionMode>;\n sortMode: Readable<'client' | 'server'>;\n};\n\nexport type DataGridModel<T = Record<string, unknown>> = {\n activateFilterKey(key: string): void;\n clearAllFilters(): void;\n clearSelection(): void;\n readonly currentPageItems: Readable<T[]>;\n readonly filterDefs: Readable<FilterOption[]>;\n readonly filteredRows: Readable<T[]>;\n readonly filterValues: Readable<Map<string, FilterRule>>;\n goToPage(index: number): void;\n readonly hasNextPage: Readable<boolean>;\n readonly hasPrevPage: Readable<boolean>;\n readonly hiddenColumns: Readable<Set<string>>;\n isAllSelected(): boolean;\n nextPage(): void;\n readonly pageCount: Readable<number>;\n readonly pageIndex: Readable<number>;\n prevPage(): void;\n removeFilter(key: string): void;\n resetColumnVisibility(): void;\n resetFilters(): void;\n resetSearch(): void;\n readonly searchActive: Readable<boolean>;\n readonly searchQuery: Readable<string>;\n selectAll(): void;\n readonly selectedKeys: Readable<ReadonlySet<string>>;\n readonly selectedRows: Readable<T[]>;\n setActiveFilterKeys(keys: string[]): void;\n setFilter(key: string, values: string[]): void;\n setFilterOperator(key: string, operator: FilterOperator): void;\n setSearchQuery(query: string): void;\n setSelection(keys: Set<string>): void;\n sortBy(key: string): void;\n readonly sortState: Readable<SortState>;\n sortTo(key: string, direction: SortDirection): void;\n toggleColumnVisibility(key: string): void;\n toggleRow(key: string): void;\n toggleSearch(): void;\n readonly totalItems: Readable<number>;\n readonly visibleColumns: Readable<DataGridColumn<T>[]>;\n};\n\nconst DEFAULT_OPERATORS: { label: string; value: FilterOperator }[] = [\n { label: 'Contains', value: 'contains' },\n { label: 'Equals', value: 'equals' },\n { label: 'Greater than', value: 'gt' },\n { label: 'Less than', value: 'lt' },\n];\n\n/**\n * Feature-owned state and transform pipeline for `ore-datagrid`.\n *\n * Rows flow through the active view, query, filters, sorting, and pagination in order. Selection\n * and column visibility share the same model so every interactive grid concern\n * has one reactive owner. Source-backed grids retain their server-owned rows by\n * setting `clientSide` to false.\n */\nexport const createDataGridModel = <T extends Record<string, unknown>>(\n options: DataGridModelOptions<T>,\n): DataGridModel<T> => {\n const searchQuery = signal('');\n const searchActive = signal(false);\n const hiddenColumns = signal(new Set<string>());\n const activeFilterKeys = signal(new Set<string>());\n const filterValues = signal(new Map<string, FilterRule>());\n const sortKey = signal('');\n const sortDirection = signal<SortDirection>('none');\n const selectedKeys = signal(new Set<string>());\n const pageIndex = signal(0);\n\n const filterKeys = computed(\n () =>\n new Set([\n ...options.columns.value.map((column) => column.key),\n ...(options.filterOptions.value ?? []).map((filter) => filter.key),\n ]),\n );\n const visibleColumns = computed(() => options.columns.value.filter((column) => !hiddenColumns.value.has(column.key)));\n const viewedRows = computed(() => {\n const rows = options.items.value;\n\n if (!options.clientSide.value) return rows;\n\n const filter = options.activeView?.value?.filter;\n return filter ? rows.filter(filter) : rows;\n });\n\n const resolveFilterValue = (row: T, key: string): unknown => {\n const column = options.columns.value.find((candidate) => candidate.key === key);\n return column?.filterValue ? column.filterValue(row) : row[key];\n };\n\n const colOptions = computed(() => {\n const externalKeys = new Set((options.filterOptions.value ?? []).map((filter) => filter.key));\n const activeKeys = [...activeFilterKeys.value].filter((key) => !externalKeys.has(key));\n\n if (!activeKeys.length) return new Map<string, { label: string; value: string }[]>();\n\n const derived = new Map<string, { label: string; value: string }[]>();\n\n for (const key of activeKeys) {\n const column = options.columns.value.find((candidate) => candidate.key === key);\n const seen = new Set<string>();\n const values: { label: string; value: string }[] = [];\n\n for (const row of viewedRows.value) {\n const value = resolveFilterValue(row, key);\n const stringValue = value == null ? '' : String(value);\n const displayValue = column?.filterLabel?.(row) ?? column?.cell?.(row) ?? stringValue;\n\n if (!seen.has(stringValue)) {\n seen.add(stringValue);\n values.push({ label: displayValue || options.emptyValueLabel?.value || '(empty)', value: stringValue });\n }\n }\n\n derived.set(key, values);\n }\n\n return derived;\n });\n\n const filterDefs = computed<FilterOption[]>(() => {\n const provided = options.filterOptions.value ?? [];\n const providedKeys = new Set(provided.map((filter) => filter.key));\n const activeProvided = provided.filter((filter) => activeFilterKeys.value.has(filter.key));\n const derived = [...activeFilterKeys.value]\n .filter((key) => !providedKeys.has(key))\n .map((key) => {\n const column = options.columns.value.find((candidate) => candidate.key === key);\n\n return {\n key,\n label: column?.label ?? key,\n operators: options.filterOperators?.value ?? DEFAULT_OPERATORS,\n options: colOptions.value.get(key) ?? [],\n };\n });\n\n return [\n ...activeProvided.map((filter) => ({\n ...filter,\n operators: filter.operators ?? options.filterOperators?.value ?? DEFAULT_OPERATORS,\n })),\n ...derived,\n ];\n });\n\n const searchedRows = computed(() => {\n const rows = viewedRows.value;\n\n if (!options.clientSide.value) return rows;\n\n const query = searchQuery.value.trim().toLowerCase();\n\n if (!query) return rows;\n\n return rows.filter((row) =>\n options.columns.value.some((column) => {\n const value = column.cell ? column.cell(row) : resolveFilterValue(row, column.key);\n return value != null && String(value).toLowerCase().includes(query);\n }),\n );\n });\n\n const filteredRows = computed(() => {\n const rows = searchedRows.value;\n\n if (!options.clientSide.value || !filterValues.value.size) return rows;\n\n return rows.filter((row) => {\n for (const [key, rule] of filterValues.value) {\n if (!rule.values.size || !filterKeys.value.has(key)) continue;\n\n const value = resolveFilterValue(row, key);\n const stringValue = value == null ? '' : String(value);\n\n if (rule.operator === 'equals' && !rule.values.has(stringValue)) return false;\n\n if (\n rule.operator === 'contains' &&\n ![...rule.values].some((target) => stringValue.toLowerCase().includes(target.toLowerCase()))\n ) {\n return false;\n }\n\n if (rule.operator === 'gt' || rule.operator === 'lt') {\n const numericValue = parseFloat(stringValue);\n const targets = [...rule.values].map(parseFloat).filter((target) => !Number.isNaN(target));\n\n if (!targets.length) continue;\n\n if (rule.operator === 'gt' && !targets.some((target) => numericValue > target)) return false;\n\n if (rule.operator === 'lt' && !targets.some((target) => numericValue < target)) return false;\n }\n }\n\n return true;\n });\n });\n\n const sortState = computed<SortState>(() => ({ direction: sortDirection.value, key: sortKey.value }));\n const sortedRows = computed(() => {\n const rows = filteredRows.value;\n\n if (!options.clientSide.value || options.sortMode.value === 'server') return rows;\n\n const { direction, key } = sortState.value;\n\n if (!key || direction === 'none') return rows;\n\n const column = options.columns.value.find((candidate) => candidate.key === key);\n\n return rows.slice().sort((a, b) => {\n const aValue = column?.sortValue ? column.sortValue(a) : (a[key] as number | string);\n const bValue = column?.sortValue ? column.sortValue(b) : (b[key] as number | string);\n const comparison =\n typeof aValue === 'number' && typeof bValue === 'number'\n ? aValue - bValue\n : String(aValue ?? '').localeCompare(String(bValue ?? ''));\n\n return direction === 'asc' ? comparison : -comparison;\n });\n });\n\n const totalItems = computed(() => sortedRows.value.length);\n const pageCount = computed(() => {\n const size = options.pageSize.value;\n\n return Math.ceil(totalItems.value / (size <= 0 ? Number.MAX_SAFE_INTEGER : size));\n });\n const safePageIndex = computed(() => (pageCount.value ? Math.min(pageIndex.value, pageCount.value - 1) : -1));\n const currentPageItems = computed(() => {\n const size = options.pageSize.value;\n\n if (size <= 0) return sortedRows.value;\n\n const start = safePageIndex.value * size;\n\n return sortedRows.value.slice(start, start + size);\n });\n const hasNextPage = computed(() => pageCount.value > 0 && safePageIndex.value < pageCount.value - 1);\n const hasPrevPage = computed(() => safePageIndex.value > 0);\n const selectedRows = computed(() =>\n options.items.value.filter((item) => selectedKeys.value.has(options.getRowKey(item))),\n );\n\n watch(\n filterKeys,\n (keys) => {\n const nextActiveKeys = new Set([...activeFilterKeys.value].filter((key) => keys.has(key)));\n const nextValues = new Map([...filterValues.value].filter(([key]) => keys.has(key)));\n\n if (nextActiveKeys.size !== activeFilterKeys.value.size) activeFilterKeys.value = nextActiveKeys;\n\n if (nextValues.size !== filterValues.value.size) filterValues.value = nextValues;\n },\n { immediate: false },\n );\n\n watch(sortedRows, () => {\n pageIndex.value = 0;\n });\n\n const commitSelection = (next: Set<string>): void => {\n selectedKeys.value = next;\n options.onSelectionChange?.(next);\n };\n\n const setFilter = (key: string, values: string[]): void => {\n const next = new Map(filterValues.value);\n\n if (values.length) {\n const defaultOperator = filterDefs.value.find((filter) => filter.key === key)?.operators?.[0]?.value;\n next.set(key, { operator: next.get(key)?.operator ?? defaultOperator ?? 'contains', values: new Set(values) });\n } else {\n next.delete(key);\n }\n\n filterValues.value = next;\n };\n\n const setFilterOperator = (key: string, operator: FilterOperator): void => {\n const rule = filterValues.value.get(key);\n filterValues.value = new Map(filterValues.value).set(key, {\n operator,\n values: rule?.values ?? new Set(),\n });\n };\n\n const sortTo = (key: string, direction: SortDirection): void => {\n sortKey.value = direction === 'none' ? '' : key;\n sortDirection.value = direction;\n pageIndex.value = 0;\n options.onSortChange?.(sortState.value);\n };\n\n return {\n activateFilterKey: (key) => {\n if (!activeFilterKeys.value.has(key)) activeFilterKeys.value = new Set([...activeFilterKeys.value, key]);\n },\n clearAllFilters: () => {\n activeFilterKeys.value = new Set();\n filterValues.value = new Map();\n },\n clearSelection: () => commitSelection(new Set()),\n currentPageItems,\n filterDefs,\n filteredRows,\n filterValues,\n goToPage: (index) => {\n if (Number.isFinite(index)) pageIndex.value = Math.max(0, index);\n },\n hasNextPage,\n hasPrevPage,\n hiddenColumns,\n isAllSelected: () => {\n const page = currentPageItems.value;\n\n return page.length > 0 && page.every((item) => selectedKeys.value.has(options.getRowKey(item)));\n },\n nextPage: () => {\n if (hasNextPage.value) pageIndex.value = safePageIndex.value + 1;\n },\n pageCount,\n pageIndex: safePageIndex,\n prevPage: () => {\n if (hasPrevPage.value) pageIndex.value = safePageIndex.value - 1;\n },\n removeFilter: (key) => {\n const nextActiveKeys = new Set(activeFilterKeys.value);\n\n nextActiveKeys.delete(key);\n activeFilterKeys.value = nextActiveKeys;\n\n const nextValues = new Map(filterValues.value);\n\n nextValues.delete(key);\n filterValues.value = nextValues;\n },\n resetColumnVisibility: () => {\n hiddenColumns.value = new Set();\n },\n resetFilters: () => {\n activeFilterKeys.value = new Set();\n filterValues.value = new Map();\n },\n resetSearch: () => {\n searchQuery.value = '';\n searchActive.value = false;\n },\n searchActive,\n searchQuery,\n selectAll: () => {\n if (options.selectionMode.value !== 'multi') return;\n\n const next = new Set(selectedKeys.value);\n\n if (currentPageItems.value.every((item) => next.has(options.getRowKey(item)))) {\n for (const item of currentPageItems.value) next.delete(options.getRowKey(item));\n } else {\n for (const item of currentPageItems.value) next.add(options.getRowKey(item));\n }\n\n commitSelection(next);\n },\n selectedKeys: computed(() => new Set(selectedKeys.value)),\n selectedRows,\n setActiveFilterKeys: (keys) => {\n const nextActiveKeys = new Set(keys);\n\n activeFilterKeys.value = nextActiveKeys;\n filterValues.value = new Map([...filterValues.value].filter(([key]) => nextActiveKeys.has(key)));\n },\n setFilter,\n setFilterOperator,\n setSearchQuery: (query) => {\n searchQuery.value = query;\n },\n setSelection: (keys) => commitSelection(new Set(keys)),\n sortBy: (key) => {\n const nextDirection =\n sortKey.value !== key\n ? 'asc'\n : sortDirection.value === 'asc'\n ? 'desc'\n : sortDirection.value === 'desc'\n ? 'none'\n : 'asc';\n\n sortTo(nextDirection === 'none' ? '' : key, nextDirection);\n },\n sortState,\n sortTo,\n toggleColumnVisibility: (key) => {\n const next = new Set(hiddenColumns.value);\n\n if (next.has(key)) next.delete(key);\n else {\n if (visibleColumns.value.length <= 1) return;\n next.add(key);\n }\n\n hiddenColumns.value = next;\n },\n toggleRow: (key) => {\n if (options.selectionMode.value === 'none') return;\n\n const next = new Set(selectedKeys.value);\n\n if (next.has(key)) next.delete(key);\n else {\n if (options.selectionMode.value === 'single') next.clear();\n\n next.add(key);\n }\n\n commitSelection(next);\n },\n toggleSearch: () => {\n if (searchActive.value) searchQuery.value = '';\n\n searchActive.value = !searchActive.value;\n },\n totalItems,\n visibleColumns,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`@layer refine.base{:host{--_row-hover-bg:var(--datagrid-row-hover-bg,color-mix(in oklch, var(--color-contrast-500) 5%, transparent));--_row-selected-bg:var(--datagrid-row-selected-bg,color-mix(in oklch, var(--_accent) 10%, transparent));--_row-selected-border:var(--datagrid-row-selected-border,var(--_accent))}.dg-scroll{max-height:var(--datagrid-max-height,none);overflow:auto}.dg-table{width:100%;font-size:var(--_font-size);table-layout:auto;border-collapse:collapse}.dg-head{z-index:2;background:var(--_header-bg);box-shadow:inset 0 calc(var(--border) * -1) 0 var(--_border-color);position:sticky;top:0}.dg-th{padding:var(--_cell-padding-y) var(--_cell-padding-x);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-500);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;-webkit-user-select:none;user-select:none;border-right:var(--border) solid var(--_border-color)}.dg-th:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left}.dg-th:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right}.dg-th[data-align=center]{text-align:center}.dg-th[data-align=right]{text-align:right}.dg-th:has(.dg-sort-btn){padding:0}.dg-sort-btn{--button-padding:var(--_cell-padding-y) var(--_cell-padding-x);--button-font-size:var(--text-xs);--button-font-weight:var(--font-semibold);--button-color:var(--color-contrast-500);--button-justify:flex-start;height:100%}.dg-th[data-align=center] .dg-sort-btn{--button-justify:center}.dg-th[data-align=right] .dg-sort-btn{--button-justify:flex-end}:host(:dir(rtl)) .dg-th,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th{border-right:none;border-left:var(--border) solid var(--_border-color)}.dg-th:last-child,.dg-th.dg-th-check,.dg-th.dg-th-expand,.dg-th.dg-th-last{border-right:none}:host(:dir(rtl)) .dg-th:last-child,:host(:dir(rtl)) .dg-th.dg-th-check,:host(:dir(rtl)) .dg-th.dg-th-expand,:host(:dir(rtl)) .dg-th.dg-th-last,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th:last-child,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-check,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-expand,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-last{border-left:none}.dg-th-inner{gap:var(--size-1);align-items:center;display:flex;position:relative}.dg-th[aria-sort]:has(.dg-sort-btn:hover):not(:has(.dg-sort-btn[aria-disabled=true])){background:color-mix(in oklch, var(--color-contrast-900) 5%, transparent)}.dg-th[aria-sort=ascending] .dg-sort-icon,.dg-th[aria-sort=descending] .dg-sort-icon{color:var(--_accent)}.dg-th-check{width:var(--size-5);min-width:var(--size-5);padding:var(--_cell-padding-y) var(--_cell-padding-x)}.dg-th-check,.dg-td-check{vertical-align:middle;text-align:center}.dg-td.dg-td-check{padding:var(--size-1) 0 0}.dg-check{cursor:pointer;justify-content:center;align-items:center;gap:0;min-height:0;display:inline-flex}.dg-body .dg-tr{border-bottom:var(--border) solid var(--_border-color);transition:background var(--transition-fast)}.dg-body .dg-tr:hover:not(:is([data-disabled],[aria-selected=true])){background:var(--_row-hover-bg)}.dg-body .dg-tr[aria-selected=true]{background:var(--_row-selected-bg)}.dg-body .dg-tr[data-selectable]{cursor:pointer;outline:none}.dg-body .dg-tr[data-selectable]:focus-visible{box-shadow:inset 0 0 0 2px var(--_row-selected-border)}.dg-body .dg-tr[data-disabled]{pointer-events:none;opacity:.45}:host([striped]) .dg-body .dg-tr:nth-child(2n){background:var(--_stripe-bg)}:host([striped]) .dg-body .dg-tr:nth-child(2n)[aria-selected=true]{background:var(--_row-selected-bg)}.dg-td{max-width:var(--datagrid-cell-max-width,32ch);padding:var(--_cell-padding-y) var(--_cell-padding-x);text-overflow:ellipsis;vertical-align:middle;color:var(--color-contrast-800);white-space:nowrap;border-right:var(--border) solid var(--_border-color);overflow:hidden}.dg-td[data-align=center]{text-align:center}.dg-td[data-align=right]{text-align:right}:host(:dir(rtl)) .dg-td,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td{border-right:none;border-left:var(--border) solid var(--_border-color)}.dg-td:last-child,.dg-td.dg-td-check,.dg-td.dg-td-expand,.dg-td.dg-td-last{border-right:none}:host(:dir(rtl)) .dg-td:last-child,:host(:dir(rtl)) .dg-td.dg-td-check,:host(:dir(rtl)) .dg-td.dg-td-expand,:host(:dir(rtl)) .dg-td.dg-td-last,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td:last-child,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-check,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-expand,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-last{border-left:none}.dg-empty{padding:var(--size-12) var(--_cell-padding-x);font-size:var(--text-sm);color:var(--color-contrast-400);text-align:center}.dg-empty-content{gap:var(--size-4);flex-direction:column;justify-content:center;align-items:center;display:flex}.dg-empty-actions{margin-top:var(--size-2)}.dg-controls{gap:var(--size-3);height:var(--size-8);padding:var(--size-1-5) var(--_cell-padding-x);background:var(--_header-bg);border-bottom:var(--border) solid var(--_border-color);justify-content:space-between;align-items:center;display:flex}.dg-tabs{gap:var(--size-1);flex:1;align-items:center;min-width:0;display:flex;overflow:hidden}.dg-tab{--button-padding:var(--size-0-5) var(--size-2-5);--button-font-size:var(--text-xs);--button-color:var(--color-contrast-500);flex:1;min-width:0}.dg-tab--active{--button-color:var(--color-contrast-900);--button-bg:color-mix(in oklch, var(--color-contrast-500) 10%, transparent);--button-border-color:var(--_border-color);--button-border:var(--border);font-weight:var(--font-semibold)}.dg-actions{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:flex}.dg-action-divider{width:var(--border);height:var(--size-4);margin-inline:var(--size-1);background:var(--_border-color);flex-shrink:0;display:inline-block}.dg-action-divider[hidden]{display:none}.dg-filter{width:100%;display:block}.dg-search{gap:var(--size-1);flex-direction:row-reverse;align-items:center;display:flex}.dg-search-input{--input-height:var(--size-7);opacity:0;width:0;transition:width var(--transition-fast), opacity var(--transition-fast);flex-shrink:0;display:block;overflow:hidden}.dg-search--open .dg-search-input{opacity:1;width:12rem;overflow:visible}@media (prefers-reduced-motion:reduce){.dg-search-input{transition:none}}.dg-action-popover{display:inline-flex}.dg-pop-header{padding:var(--size-3) var(--size-3) var(--size-2);justify-content:space-between;align-items:center;display:flex}.dg-pop-title{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-600);letter-spacing:.02em}.dg-pop-sort{padding-bottom:var(--size-2);flex-direction:column;display:flex}.dg-pop-sort-row{gap:var(--size-2);padding:var(--size-1) var(--size-3);align-items:center;display:flex}.dg-pop-select{--select-min-width:var(--size-20);flex:2}.dg-pop-dir-select{--select-min-width:var(--size-10);flex:1}.dg-pop-filter{flex-direction:column;display:flex}.dg-pop-filter-fields{padding:0 var(--size-3) var(--size-3)}.dg-pop-filter-rules{border-top:var(--border) solid var(--_border-color);padding-top:var(--size-1)}.dg-pop-filter-rules[hidden]{display:none}.dg-pop-filter-rule{gap:var(--size-2);padding:var(--size-2) var(--size-3);flex-direction:column;display:flex}.dg-pop-filter-rule-header{gap:var(--size-1-5);align-items:center;display:flex}.dg-pop-filter-field{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-800);white-space:nowrap}.dg-pop-filter-op-select{--select-min-width:0;--select-height:var(--size-6);--select-font-size:var(--text-2xs);--select-padding-x:var(--size-1-5);flex:1;min-width:6rem}.dg-pop-col-item{--button-radius:var(--rounded-md);justify-content:flex-start}.dg-pop-col-list{gap:var(--size-1);max-width:25rem;padding:var(--size-3);flex-wrap:wrap;display:flex}.dg-footer{gap:var(--size-2);padding:var(--size-2) var(--_cell-padding-x);font-size:var(--text-xs);color:var(--color-contrast-500);background:var(--_header-bg);align-items:center;display:flex}.dg-footer-info{white-space:nowrap}.dg-footer-end{gap:var(--size-2);align-items:center;width:fit-content;display:flex}.dg-footer-end:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}.dg-footer-end:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}.dg-page-size-wrap{flex-shrink:0;width:5rem}.dg-page-size-select{--select-min-width:0;--select-height:var(--size-7);--select-font-size:var(--text-xs);--select-padding-x:var(--size-2)}.dg-pagination{gap:var(--size-1);align-items:center;display:flex}:host(:dir(rtl)) .dg-page-btn,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-page-btn{transform:scaleX(-1)}.dg-page-btn{--button-color:var(--color-contrast-600);--button-radius:var(--rounded-md);width:var(--size-7);height:var(--size-7)}.dg-page-btn:hover{--button-color:var(--color-contrast-900);--button-bg:var(--color-contrast-300)}.dg-page-btn:disabled{cursor:not-allowed;opacity:.35}.dg-page-label{padding-inline:var(--size-1);white-space:nowrap}.dg-col-resize{inset-block:calc(var(--_cell-padding-y) * -1);width:var(--size-1);cursor:col-resize;-webkit-user-select:none;user-select:none;border-radius:var(--rounded);transition:background var(--transition-fast);background:0 0;position:absolute}.dg-col-resize:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:calc((var(--_cell-padding-x) + var(--border) + 2px) * -1)}.dg-col-resize:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:calc((var(--_cell-padding-x) + var(--border) + 2px) * -1)}.dg-col-resize:hover,.dg-col-resize:active{background:var(--_accent,var(--color-contrast-300))}.dg-td:focus-visible,.dg-th:focus-visible{outline:2px solid var(--_row-selected-border);outline-offset:-2px}.dg-tr-expanded .dg-td-expanded{padding:var(--_cell-padding-y) var(--_cell-padding-x);box-shadow:inset 0 0 0 9999px color-mix(in oklch, var(--color-contrast-600) 4%, var(--_bg,transparent)), inset 0 calc(var(--border) * -1) 0 var(--_border-color);border:none}.dg-tr-expanded:last-child .dg-td-expanded{box-shadow:inset 0 0 0 9999px color-mix(in oklch, var(--color-contrast-900) 4%, var(--_bg,transparent))}.dg-tr:has(+.dg-tr-expanded){border-bottom:none}.dg-th-expand,.dg-td-expand{width:var(--size-8);min-width:var(--size-8);padding-block:var(--size-1) 0;padding-inline:0 var(--size-2);text-align:center;white-space:nowrap;border-left:none;border-right:none}.dg-expand-btn{--button-color:var(--color-contrast-500);--button-radius:var(--rounded-sm);width:var(--size-5);height:var(--size-5)}.dg-expand-btn:hover{--button-color:var(--color-contrast-900)}.dg-expand-btn:disabled{cursor:not-allowed;opacity:.4}.dg-loading-overlay{z-index:3;background:color-mix(in oklch, var(--_bg,white) 40%, transparent);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);justify-content:center;align-items:center;display:none;position:absolute;inset:0}:host([loading]) .dg-loading-overlay{display:flex}:host([loading]) .dg-scroll table{pointer-events:none;opacity:.5}.dg-spin{animation:1s linear infinite dg-spin}@keyframes dg-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}}`;exports.default=e;
|
|
1
|
+
var e=`@layer refine.base{:host{--_row-hover-bg:var(--datagrid-row-hover-bg,color-mix(in oklch, var(--color-contrast-500) 5%, transparent));--_row-selected-bg:var(--datagrid-row-selected-bg,color-mix(in oklch, var(--_accent) 10%, transparent));--_row-selected-border:var(--datagrid-row-selected-border,var(--_accent))}.dg-scroll{max-height:var(--datagrid-max-height,none);overflow:auto}.dg-table{width:100%;font-size:var(--_font-size);table-layout:auto;border-collapse:collapse}.dg-head{z-index:2;background:var(--_header-bg);box-shadow:inset 0 calc(var(--border) * -1) 0 var(--_border-color);position:sticky;top:0}.dg-th{padding:var(--_cell-padding-y) var(--_cell-padding-x);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-500);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;-webkit-user-select:none;user-select:none;border-right:var(--border) solid var(--_border-color)}.dg-th:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left}.dg-th:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right}.dg-th[data-align=center]{text-align:center}.dg-th[data-align=right]{text-align:right}.dg-th:has(.dg-sort-btn){padding:0}.dg-sort-btn{--button-padding:var(--_cell-padding-y) var(--_cell-padding-x);--button-font-size:var(--text-xs);--button-font-weight:var(--font-semibold);--button-color:var(--color-contrast-500);--button-justify:flex-start;height:100%}.dg-th[data-align=center] .dg-sort-btn{--button-justify:center}.dg-th[data-align=right] .dg-sort-btn{--button-justify:flex-end}:host(:dir(rtl)) .dg-th,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th{border-right:none;border-left:var(--border) solid var(--_border-color)}.dg-th:last-child,.dg-th.dg-th-check,.dg-th.dg-th-expand,.dg-th.dg-th-last{border-right:none}:host(:dir(rtl)) .dg-th:last-child,:host(:dir(rtl)) .dg-th.dg-th-check,:host(:dir(rtl)) .dg-th.dg-th-expand,:host(:dir(rtl)) .dg-th.dg-th-last,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th:last-child,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-check,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-expand,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-last{border-left:none}.dg-th-inner{gap:var(--size-1);align-items:center;display:flex;position:relative}.dg-th[aria-sort]:has(.dg-sort-btn:hover):not(:has(.dg-sort-btn[aria-disabled=true])){background:color-mix(in oklch, var(--color-contrast-900) 5%, transparent)}.dg-th[aria-sort=ascending] .dg-sort-icon,.dg-th[aria-sort=descending] .dg-sort-icon{color:var(--_accent)}.dg-th-check{width:var(--size-5);min-width:var(--size-5);padding:var(--_cell-padding-y) var(--_cell-padding-x)}.dg-th-check,.dg-td-check{vertical-align:middle;text-align:center}.dg-td.dg-td-check{padding:var(--size-1) 0 0}.dg-check{cursor:pointer;justify-content:center;align-items:center;gap:0;min-height:0;display:inline-flex}.dg-body .dg-tr{border-bottom:var(--border) solid var(--_border-color);transition:background var(--transition-fast)}.dg-body .dg-tr:hover:not(:is([data-disabled],[aria-selected=true])){background:var(--_row-hover-bg)}.dg-body .dg-tr[aria-selected=true]{background:var(--_row-selected-bg)}.dg-body .dg-tr[data-selectable]{cursor:pointer;outline:none}.dg-body .dg-tr[data-selectable]:focus-visible{box-shadow:inset 0 0 0 2px var(--_row-selected-border)}.dg-body .dg-tr[data-disabled]{pointer-events:none;opacity:.45}:host([striped]) .dg-body .dg-tr:nth-child(2n){background:var(--_stripe-bg)}:host([striped]) .dg-body .dg-tr:nth-child(2n)[aria-selected=true]{background:var(--_row-selected-bg)}.dg-td{max-width:var(--datagrid-cell-max-width,32ch);padding:var(--_cell-padding-y) var(--_cell-padding-x);text-overflow:ellipsis;vertical-align:middle;color:var(--color-contrast-800);white-space:nowrap;border-right:var(--border) solid var(--_border-color);overflow:hidden}.dg-td[data-align=center]{text-align:center}.dg-td[data-align=right]{text-align:right}:host(:dir(rtl)) .dg-td,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td{border-right:none;border-left:var(--border) solid var(--_border-color)}.dg-td:last-child,.dg-td.dg-td-check,.dg-td.dg-td-expand,.dg-td.dg-td-last{border-right:none}:host(:dir(rtl)) .dg-td:last-child,:host(:dir(rtl)) .dg-td.dg-td-check,:host(:dir(rtl)) .dg-td.dg-td-expand,:host(:dir(rtl)) .dg-td.dg-td-last,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td:last-child,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-check,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-expand,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-last{border-left:none}.dg-empty{padding:var(--size-12) var(--_cell-padding-x);font-size:var(--text-sm);color:var(--color-contrast-400);text-align:center}.dg-empty-content{gap:var(--size-4);flex-direction:column;justify-content:center;align-items:center;display:flex}.dg-empty-actions{margin-top:var(--size-2)}.dg-controls{gap:var(--size-3);height:var(--size-8);padding:var(--size-1-5) var(--_cell-padding-x);background:var(--_header-bg);border-bottom:var(--border) solid var(--_border-color);justify-content:space-between;align-items:center;display:flex}.dg-tabs{gap:var(--size-1);flex:1;align-items:center;min-width:0;display:flex;overflow:hidden}.dg-tab{--button-padding:var(--size-0-5) var(--size-2-5);--button-font-size:var(--text-xs);--button-color:var(--color-contrast-500);flex:1;min-width:0}@media (width<=40rem){.dg-tabs{overscroll-behavior-inline:contain;scrollbar-width:none;overflow-x:auto}.dg-tabs::-webkit-scrollbar{display:none}.dg-tab{flex:none;min-width:max-content}}.dg-tab--active{--button-color:var(--color-contrast-900);--button-bg:color-mix(in oklch, var(--color-contrast-500) 10%, transparent);--button-border-color:var(--_border-color);--button-border:var(--border);font-weight:var(--font-semibold)}.dg-actions{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:flex}.dg-action-divider{width:var(--border);height:var(--size-4);margin-inline:var(--size-1);background:var(--_border-color);flex-shrink:0;display:inline-block}.dg-action-divider[hidden]{display:none}.dg-filter{width:100%;display:block}.dg-search{gap:var(--size-1);flex-direction:row-reverse;align-items:center;display:flex}.dg-search-input{--input-height:var(--size-7);opacity:0;width:0;transition:width var(--transition-fast), opacity var(--transition-fast);flex-shrink:0;display:block;overflow:hidden}.dg-search--open .dg-search-input{opacity:1;width:12rem;overflow:visible}@media (prefers-reduced-motion:reduce){.dg-search-input{transition:none}}.dg-action-popover{display:inline-flex}.dg-pop-header{gap:var(--size-3);min-height:var(--size-10);padding:var(--size-2) var(--size-3);border-bottom:var(--border) solid var(--_border-color);justify-content:space-between;align-items:center;display:flex}.dg-pop-title{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-600);letter-spacing:.02em}.dg-pop-heading,.dg-pop-heading>*{min-width:0;display:block}.dg-pop-heading small{font-size:var(--text-xs);color:var(--color-contrast-500);margin-top:var(--size-0-5)}.dg-pop-sort{flex-direction:column;display:flex}.dg-pop-sort-row{gap:var(--size-2);padding:var(--size-2) var(--size-3);align-items:center;display:flex}.dg-pop-select,.dg-pop-dir-select{--input-min-width:0;--select-min-width:0;width:0;min-width:0}.dg-pop-select{flex:2 1 0}.dg-pop-dir-select{flex:0 0 var(--size-28);width:var(--size-28)}.dg-pop-filter{flex-direction:column;display:flex}.dg-pop-filter-fields{padding:var(--size-2) var(--size-3)}.dg-pop-filter-rules{border-top:var(--border) solid var(--_border-color);padding-top:var(--size-1)}.dg-pop-filter-rules[hidden]{display:none}.dg-pop-filter-rule{gap:var(--size-2);padding:var(--size-2) var(--size-3);flex-direction:column;display:flex}.dg-pop-filter-rule-header{gap:var(--size-1-5);align-items:center;display:flex}.dg-pop-filter-field{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-800);white-space:nowrap}.dg-pop-filter-op-select{--input-min-width:0;--select-min-width:0;--select-height:var(--size-6);--select-font-size:var(--text-2xs);--select-padding-x:var(--size-1-5);flex:1 1 0;min-width:6rem}.dg-state-trigger{position:relative}.dg-state-trigger[data-customized]:after{width:var(--size-1-5);height:var(--size-1-5);content:"";background:var(--color-primary);border:var(--border) solid var(--_header-bg);top:var(--size-1);border-radius:50%;position:absolute}.dg-state-trigger[data-customized]:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{right:var(--size-1)}.dg-state-trigger[data-customized]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):after{left:var(--size-1)}.dg-pop-col{width:18rem}.dg-pop-col-list{gap:var(--size-0-5);max-height:min(50vh,24rem);padding:var(--size-2) var(--size-3);overscroll-behavior:contain;display:grid;overflow-y:auto}.dg-pop-col-item{--checkbox-size:var(--size-4);--checkbox-font-size:var(--text-sm);width:100%;padding:var(--size-1) var(--size-2);cursor:pointer;border-radius:var(--rounded-md)}.dg-pop-col-item:hover{background:var(--color-contrast-150)}.dg-pop-col-item::part(label){text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.dg-footer{gap:var(--size-2);padding:var(--size-1) var(--_cell-padding-x);font-size:var(--text-xs);color:var(--color-contrast-500);background:var(--_header-bg);flex-wrap:wrap;align-items:center;display:flex}.dg-footer-info{white-space:nowrap}.dg-footer-start{gap:var(--size-2);flex:auto;align-items:center;min-width:0;display:flex}.dg-page-size-wrap{width:var(--size-20);flex-shrink:0;order:-1}.dg-page-size-select{--input-height:var(--size-8);--input-min-width:0;--select-min-width:0;--select-font-size:var(--text-xs);--select-padding-x:var(--size-2)}.dg-pagination{gap:var(--size-1);flex-shrink:0;align-items:center;display:flex}.dg-pagination:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}.dg-pagination:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}:host(:dir(rtl)) .dg-page-btn,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-page-btn{transform:scaleX(-1)}.dg-page-btn{--button-color:var(--color-contrast-600);--button-radius:var(--rounded-md);width:var(--size-7);height:var(--size-7)}.dg-page-btn:hover{--button-color:var(--color-contrast-900);--button-bg:var(--color-contrast-300)}.dg-page-btn:disabled{cursor:not-allowed;opacity:.35}.dg-page-label{padding-inline:var(--size-1);white-space:nowrap}.dg-col-resize{inset-block:calc(var(--_cell-padding-y) * -1);width:var(--size-1);cursor:col-resize;-webkit-user-select:none;user-select:none;border-radius:var(--rounded);transition:background var(--transition-fast);background:0 0;position:absolute}.dg-col-resize:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:calc((var(--_cell-padding-x) + var(--border) + 2px) * -1)}.dg-col-resize:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:calc((var(--_cell-padding-x) + var(--border) + 2px) * -1)}.dg-col-resize:hover,.dg-col-resize:active{background:var(--_accent,var(--color-contrast-300))}.dg-td:focus-visible,.dg-th:focus-visible{outline:2px solid var(--_row-selected-border);outline-offset:-2px}.dg-tr-expanded .dg-td-expanded{padding:var(--_cell-padding-y) var(--_cell-padding-x);box-shadow:inset 0 0 0 9999px color-mix(in oklch, var(--color-contrast-600) 4%, var(--_bg,transparent)), inset 0 calc(var(--border) * -1) 0 var(--_border-color);border:none}.dg-tr-expanded:last-child .dg-td-expanded{box-shadow:inset 0 0 0 9999px color-mix(in oklch, var(--color-contrast-900) 4%, var(--_bg,transparent))}.dg-tr:has(+.dg-tr-expanded){border-bottom:none}.dg-th-expand,.dg-td-expand{width:var(--size-8);min-width:var(--size-8);padding-block:var(--size-1) 0;padding-inline:0 var(--size-2);text-align:center;white-space:nowrap;border-left:none;border-right:none}.dg-expand-btn{--button-color:var(--color-contrast-500);--button-radius:var(--rounded-sm);width:var(--size-5);height:var(--size-5)}.dg-expand-btn:hover{--button-color:var(--color-contrast-900)}.dg-expand-btn:disabled{cursor:not-allowed;opacity:.4}.dg-loading-overlay{z-index:3;background:color-mix(in oklch, var(--_bg,white) 40%, transparent);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);justify-content:center;align-items:center;display:none;position:absolute;inset:0}:host([loading]) .dg-loading-overlay{display:flex}:host([loading]) .dg-scroll table{pointer-events:none;opacity:.5}.dg-spin{animation:1s linear infinite dg-spin}@keyframes dg-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}}`;exports.default=e;
|
|
2
2
|
//# sourceMappingURL=datagrid.css.cjs.map
|