@bridge-ui/vue 0.2.0 → 0.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.
Files changed (135) hide show
  1. package/ai/skills/bridge-ui-components/SKILL.md +3 -1
  2. package/dist/Components/Autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +40 -45
  3. package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +2 -1
  4. package/dist/Components/ColorField/ColorField.vue_vue_type_script_setup_true_lang.js +39 -44
  5. package/dist/Components/ColorField/composables/useColorField.d.ts +3 -1
  6. package/dist/Components/DataTable/DataTable.js +5 -0
  7. package/dist/Components/DataTable/DataTable.vue.d.ts +43 -0
  8. package/dist/Components/DataTable/DataTable.vue_vue_type_script_setup_true_lang.js +396 -0
  9. package/dist/Components/DataTable/DataTableCellContent.js +5 -0
  10. package/dist/Components/DataTable/DataTableCellContent.vue.d.ts +23 -0
  11. package/dist/Components/DataTable/DataTableCellContent.vue_vue_type_script_setup_true_lang.js +38 -0
  12. package/dist/Components/DataTable/DataTableColumnsMenu.js +5 -0
  13. package/dist/Components/DataTable/DataTableColumnsMenu.vue.d.ts +17 -0
  14. package/dist/Components/DataTable/DataTableColumnsMenu.vue_vue_type_script_setup_true_lang.js +92 -0
  15. package/dist/Components/DataTable/DataTableFilterMenu.js +5 -0
  16. package/dist/Components/DataTable/DataTableFilterMenu.vue.d.ts +20 -0
  17. package/dist/Components/DataTable/DataTableFilterMenu.vue_vue_type_script_setup_true_lang.js +151 -0
  18. package/dist/Components/DataTable/DataTableFilterOptions.js +5 -0
  19. package/dist/Components/DataTable/DataTableFilterOptions.vue.d.ts +17 -0
  20. package/dist/Components/DataTable/DataTableFilterOptions.vue_vue_type_script_setup_true_lang.js +81 -0
  21. package/dist/Components/DataTable/DataTableSearch.js +5 -0
  22. package/dist/Components/DataTable/DataTableSearch.vue.d.ts +12 -0
  23. package/dist/Components/DataTable/DataTableSearch.vue_vue_type_script_setup_true_lang.js +39 -0
  24. package/dist/Components/DataTable/DataTableSelection.js +5 -0
  25. package/dist/Components/DataTable/DataTableSelection.vue.d.ts +20 -0
  26. package/dist/Components/DataTable/DataTableSelection.vue_vue_type_script_setup_true_lang.js +56 -0
  27. package/dist/Components/DataTable/DataTableSortButton.js +5 -0
  28. package/dist/Components/DataTable/DataTableSortButton.vue.d.ts +17 -0
  29. package/dist/Components/DataTable/DataTableSortButton.vue_vue_type_script_setup_true_lang.js +43 -0
  30. package/dist/Components/DataTable/DataTableToolbarButton.js +5 -0
  31. package/dist/Components/DataTable/DataTableToolbarButton.vue.d.ts +14 -0
  32. package/dist/Components/DataTable/DataTableToolbarButton.vue_vue_type_script_setup_true_lang.js +31 -0
  33. package/dist/Components/DataTable/composables/useDataTable.d.ts +565 -0
  34. package/dist/Components/DataTable/composables/useDataTable.js +511 -0
  35. package/dist/Components/DataTable/composables/useDataTableColumnsMenu.d.ts +27 -0
  36. package/dist/Components/DataTable/composables/useDataTableColumnsMenu.js +54 -0
  37. package/dist/Components/DataTable/dataTable.types.d.ts +497 -0
  38. package/dist/Components/DataTable/index.d.ts +3 -0
  39. package/dist/Components/DataTable/index.js +3 -0
  40. package/dist/Components/DateField/DateField.vue_vue_type_script_setup_true_lang.js +52 -57
  41. package/dist/Components/DateField/composables/useDateField.d.ts +3 -1
  42. package/dist/Components/DateRangeField/DateRangeField.vue_vue_type_script_setup_true_lang.js +50 -55
  43. package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +3 -1
  44. package/dist/Components/DateTimeField/DateTimeField.vue_vue_type_script_setup_true_lang.js +56 -61
  45. package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +3 -1
  46. package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue_vue_type_script_setup_true_lang.js +56 -61
  47. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +3 -1
  48. package/dist/Components/FormField/composables/useFormField.d.ts +2 -1
  49. package/dist/Components/FormField/composables/useFormField.js +80 -75
  50. package/dist/Components/Menu/Menu.vue_vue_type_script_setup_true_lang.js +1 -0
  51. package/dist/Components/Menu/composables/useMenu.d.ts +1 -1
  52. package/dist/Components/Menu/composables/useMenu.js +7 -3
  53. package/dist/Components/Menu/menu.types.d.ts +6 -0
  54. package/dist/Components/NumberField/NumberField.vue_vue_type_script_setup_true_lang.js +53 -43
  55. package/dist/Components/NumberField/composables/useNumberField.d.ts +9 -2
  56. package/dist/Components/NumberField/composables/useNumberField.js +49 -36
  57. package/dist/Components/NumberField/index.d.ts +1 -1
  58. package/dist/Components/NumberField/numberField.types.d.ts +13 -1
  59. package/dist/Components/PasswordField/PasswordField.vue_vue_type_script_setup_true_lang.js +28 -33
  60. package/dist/Components/PasswordField/composables/usePasswordField.d.ts +2 -1
  61. package/dist/Components/Radio/Radio.vue_vue_type_script_setup_true_lang.js +9 -9
  62. package/dist/Components/Radio/composables/useRadio.js +57 -54
  63. package/dist/Components/Select/Select.vue_vue_type_script_setup_true_lang.js +42 -47
  64. package/dist/Components/Select/composables/useSelect.d.ts +2 -1
  65. package/dist/Components/Slider/Slider.vue_vue_type_script_setup_true_lang.js +43 -48
  66. package/dist/Components/Slider/composables/useSlider.d.ts +3 -3
  67. package/dist/Components/Snackbar/composables/useSnackbar.d.ts +1 -1
  68. package/dist/Components/Table/Table.js +5 -0
  69. package/dist/Components/Table/Table.vue.d.ts +16 -0
  70. package/dist/Components/Table/Table.vue_vue_type_script_setup_true_lang.js +44 -0
  71. package/dist/Components/Table/TableBody.js +5 -0
  72. package/dist/Components/Table/TableBody.vue.d.ts +11 -0
  73. package/dist/Components/Table/TableBody.vue_vue_type_script_setup_true_lang.js +17 -0
  74. package/dist/Components/Table/TableCaption.js +5 -0
  75. package/dist/Components/Table/TableCaption.vue.d.ts +11 -0
  76. package/dist/Components/Table/TableCaption.vue_vue_type_script_setup_true_lang.js +17 -0
  77. package/dist/Components/Table/TableCell.js +5 -0
  78. package/dist/Components/Table/TableCell.vue.d.ts +11 -0
  79. package/dist/Components/Table/TableCell.vue_vue_type_script_setup_true_lang.js +19 -0
  80. package/dist/Components/Table/TableFooter.js +5 -0
  81. package/dist/Components/Table/TableFooter.vue.d.ts +11 -0
  82. package/dist/Components/Table/TableFooter.vue_vue_type_script_setup_true_lang.js +17 -0
  83. package/dist/Components/Table/TableHead.js +5 -0
  84. package/dist/Components/Table/TableHead.vue.d.ts +11 -0
  85. package/dist/Components/Table/TableHead.vue_vue_type_script_setup_true_lang.js +19 -0
  86. package/dist/Components/Table/TableHeader.js +5 -0
  87. package/dist/Components/Table/TableHeader.vue.d.ts +11 -0
  88. package/dist/Components/Table/TableHeader.vue_vue_type_script_setup_true_lang.js +17 -0
  89. package/dist/Components/Table/TableRow.js +5 -0
  90. package/dist/Components/Table/TableRow.vue.d.ts +11 -0
  91. package/dist/Components/Table/TableRow.vue_vue_type_script_setup_true_lang.js +17 -0
  92. package/dist/Components/Table/composables/useTable.d.ts +19 -0
  93. package/dist/Components/Table/composables/useTable.js +89 -0
  94. package/dist/Components/Table/composables/useTableCell.d.ts +12 -0
  95. package/dist/Components/Table/composables/useTableCell.js +40 -0
  96. package/dist/Components/Table/composables/useTablePart.d.ts +12 -0
  97. package/dist/Components/Table/composables/useTablePart.js +32 -0
  98. package/dist/Components/Table/composables/useTableRow.d.ts +6 -0
  99. package/dist/Components/Table/composables/useTableRow.js +29 -0
  100. package/dist/Components/Table/index.d.ts +14 -0
  101. package/dist/Components/Table/index.js +14 -0
  102. package/dist/Components/Table/table.types.d.ts +417 -0
  103. package/dist/Components/Table/tableInjectionKey.d.ts +114 -0
  104. package/dist/Components/Table/tableInjectionKey.js +4 -0
  105. package/dist/Components/TextField/TextField.vue_vue_type_script_setup_true_lang.js +11 -16
  106. package/dist/Components/TextField/composables/useTextField.d.ts +2 -1
  107. package/dist/Components/Textarea/Textarea.vue_vue_type_script_setup_true_lang.js +15 -20
  108. package/dist/Components/Textarea/composables/useTextarea.d.ts +2 -1
  109. package/dist/Components/TimeField/TimeField.vue_vue_type_script_setup_true_lang.js +45 -50
  110. package/dist/Components/TimeField/composables/useTimeField.d.ts +3 -1
  111. package/dist/Components/TimeRangeField/TimeRangeField.vue_vue_type_script_setup_true_lang.js +45 -50
  112. package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +3 -1
  113. package/dist/Utils/index.d.ts +1 -0
  114. package/dist/Utils/index.js +28 -27
  115. package/dist/Utils/useOptionalModel.d.ts +6 -0
  116. package/dist/Utils/useOptionalModel.js +13 -0
  117. package/dist/augments.d.ts +1 -1
  118. package/dist/index.d.ts +1 -1
  119. package/dist/theme.css +46 -42
  120. package/docs/README.md +2 -0
  121. package/docs/components/CalendarDate.md +1 -1
  122. package/docs/components/DataTable.md +371 -0
  123. package/docs/components/DateField.md +2 -2
  124. package/docs/components/DatePicker.md +3 -3
  125. package/docs/components/DateRangePicker.md +1 -1
  126. package/docs/components/NumberField.md +17 -6
  127. package/docs/components/Pagination.md +2 -2
  128. package/docs/components/Table.md +122 -0
  129. package/docs/examples/i18n-dictionary.ts +10 -0
  130. package/docs/examples/icon-fontawesome.ts +12 -0
  131. package/docs/examples/icon-heroicons.ts +12 -0
  132. package/docs/examples/icon-lucide.ts +12 -0
  133. package/docs/examples/icon-phosphor.ts +12 -0
  134. package/docs/examples/icon-tabler.ts +12 -0
  135. package/package.json +9 -2
@@ -0,0 +1,511 @@
1
+ import { mergePartBind as e, useBridgeUIComponent as t, useBridgeUIMergedRegistryClasses as n } from "../../../Utils/index.js";
2
+ import { computed as r, getCurrentInstance as i, onBeforeUnmount as a, ref as o, useAttrs as ee, useSlots as te } from "vue";
3
+ import { compact as ne, fromPairs as re, get as s, head as ie, isArray as ae, isEmpty as oe, isFunction as c, isNil as se, isString as ce, keyBy as le, map as l, omit as ue } from "es-toolkit/compat";
4
+ import { DATATABLE_EXPAND_COLUMN_ID as u, DATATABLE_SELECTION_COLUMN_ID as d, getDataTableAriaSort as de, getDataTableColumnAccessor as f, getDataTableColumnCssWidth as fe, getDataTableColumnFilterValues as pe, getDataTableColumnSearch as me, getDataTableDefaultCellContent as he, getDataTablePaginationVariant as ge, getDataTablePerPageSelectOptions as _e, getDataTableResolvedPageCount as ve, getDataTableResolvedPerPage as ye, getDataTableSelectAllState as be, getDataTableSortIcon as xe, getDataTableStickyInsets as Se, getDataTableStickyPing as Ce, isDataTableClientPaged as we, isDataTableColumnFilterable as p, isDataTableColumnFiltered as Te, isDataTableColumnSearchable as Ee, isDataTableColumnSearched as De, isDataTableExpandEnabled as Oe, isDataTablePerPageEnabled as ke, isDataTableSearchEnabled as Ae, isDataTableSelectionEnabled as je, isDataTableSelectionMultiple as Me, isDataTableServerPaged as Ne, isDataTableStickyHeader as Pe, isDataTableStickyHeaderBoxed as Fe, isDataTableVisibilityEnabled as Ie, matchDataTableSearch as Le, observeDataTablePaginationInline as Re, resolveDataTableRowId as ze, rowMatchesDataTableColumnSearch as Be, rowSelectionToIds as Ve, selectionToRowSelection as He, setDataTableColumnFilter as Ue, setDataTableColumnSearch as We, setDataTableRowSelection as Ge, sliceDataTablePage as Ke, toggleDataTableColumnVisibility as qe, toggleDataTablePageSelection as Je, toggleDataTableRowExpansion as Ye, toggleDataTableSorting as Xe } from "@bridge-ui/core/Domain";
5
+ import { tableVariantProps as Ze } from "@bridge-ui/core/Tokens";
6
+ import { cn as m, mergeBridgeUILayeredClasses as Qe, splitComponentProps as $e } from "@bridge-ui/core/Utils";
7
+ import { getCoreRowModel as h, getFilteredRowModel as g, getSortedRowModel as _, useVueTable as et } from "@tanstack/vue-table";
8
+ //#region src/Components/DataTable/composables/useDataTable.ts
9
+ var tt = /* @__PURE__ */ "full.page.rows.size.search.classes.columns.filters.loading.perPage.rounded.sorting.striped.variant.expanded.getRowId.hoverable.pageCount.selection.totalCount.customProps.columnSearch.stickyHeader.filterOverlay.hiddenColumns.selectionMode.columnsOverlay.loadingVariant.perPageOptions.columnsShowFooter".split(".");
10
+ function v(e) {
11
+ let t = e.target;
12
+ return t instanceof Element && !!t.closest("button, input, a");
13
+ }
14
+ var nt = {
15
+ enableHiding: !1,
16
+ enableSorting: !1,
17
+ cell: () => null,
18
+ header: () => null
19
+ }, rt = [], it = [], at = [], ot = h(), st = _(), ct = g();
20
+ function y(h, g, _) {
21
+ let y = ee(), b = te(), lt = i(), x = r(() => $e({
22
+ bridgeKeys: tt,
23
+ props: {
24
+ ...y,
25
+ ...h,
26
+ page: _.page.value,
27
+ perPage: _.perPage.value,
28
+ filters: _.filters.value,
29
+ sorting: _.sorting.value,
30
+ expanded: _.expanded.value,
31
+ selection: _.selection.value,
32
+ columnSearch: _.columnSearch.value,
33
+ hiddenColumns: _.hiddenColumns.value
34
+ }
35
+ })), { merged: S, components: ut, entry: dt } = t({
36
+ libDefaults: g,
37
+ componentName: "DataTable",
38
+ props: () => x.value.componentProps
39
+ }), C = r(() => S.value.customProps), ft = r(() => ue(x.value.inheritedAttrs, ["children"])), w = n({
40
+ entry: dt,
41
+ props: () => x.value.componentProps
42
+ }), pt = r(() => Qe(Ze, s(ut.value, [
43
+ "Table",
44
+ "tokens",
45
+ "variant"
46
+ ]))), T = r(() => s(pt.value, S.value.variant)), E = r(() => S.value.columns ?? it), D = r(() => le(E.value, "id")), mt = r(() => S.value.rows ?? rt), O = r(() => je(_.selection.value, y["onUpdate:selection"] !== void 0)), k = r(() => Oe(_.expanded.value, y["onUpdate:expanded"] !== void 0, b.expanded !== void 0)), A = r(() => Ie(_.hiddenColumns.value, y["onUpdate:hiddenColumns"] !== void 0)), ht = r(() => Me(S.value.selectionMode)), j = r(() => Ne(_.page.value, S.value.pageCount, S.value.totalCount)), M = r(() => we(_.page.value, _.perPage.value, S.value.pageCount, S.value.totalCount)), N = r(() => ye(_.perPage.value)), P = r(() => Pe(S.value.stickyHeader)), F = r(() => Fe(S.value.stickyHeader)), gt = r(() => _.sorting.value ? [{
47
+ id: _.sorting.value.id,
48
+ desc: _.sorting.value.desc
49
+ }] : []), _t = r(() => l(_.filters.value ?? {}, (e, t) => ({
50
+ id: t,
51
+ value: e
52
+ }))), vt = r(() => He(_.selection.value)), I = r(() => _.hiddenColumns.value ?? at), yt = r(() => re(I.value.map((e) => [e, !1]))), bt = r(() => {
53
+ let e = E.value.map((e) => ({
54
+ id: e.id,
55
+ enableSorting: e.sortable === !0,
56
+ enableHiding: e.hideable !== !1,
57
+ enableColumnFilter: p(e),
58
+ header: () => e.header,
59
+ cell: (t) => e.cell?.(t.row.original) ?? null,
60
+ accessorFn: (t) => f(t, e),
61
+ filterFn: (e, t, n) => {
62
+ let r = ae(n) ? n : [];
63
+ return oe(r) ? !0 : r.includes(String(e.getValue(t) ?? ""));
64
+ }
65
+ }));
66
+ return ne([
67
+ O.value ? {
68
+ ...nt,
69
+ id: d
70
+ } : void 0,
71
+ k.value ? {
72
+ ...nt,
73
+ id: u
74
+ } : void 0,
75
+ ...e
76
+ ]);
77
+ }), L = et({
78
+ data: mt,
79
+ enableSortingRemoval: !0,
80
+ getCoreRowModel: ot,
81
+ get columns() {
82
+ return bt.value;
83
+ },
84
+ get manualSorting() {
85
+ return j.value;
86
+ },
87
+ get manualFiltering() {
88
+ return j.value;
89
+ },
90
+ get enableHiding() {
91
+ return A.value;
92
+ },
93
+ get enableRowSelection() {
94
+ return O.value;
95
+ },
96
+ get enableMultiRowSelection() {
97
+ return ht.value;
98
+ },
99
+ get getSortedRowModel() {
100
+ return j.value ? void 0 : st;
101
+ },
102
+ getRowId: (e, t) => ze(e, t, S.value.getRowId),
103
+ get getFilteredRowModel() {
104
+ return j.value ? void 0 : ct;
105
+ },
106
+ onRowSelectionChange: (e) => {
107
+ let t = c(e) ? e(vt.value) : e;
108
+ _.selection.value = Ve(t);
109
+ },
110
+ onSortingChange: (e) => {
111
+ let t = c(e) ? e(gt.value) : e, n = ie(t);
112
+ _.sorting.value = n ? {
113
+ id: n.id,
114
+ desc: n.desc
115
+ } : null;
116
+ },
117
+ state: {
118
+ get sorting() {
119
+ return gt.value;
120
+ },
121
+ get rowSelection() {
122
+ return vt.value;
123
+ },
124
+ get columnFilters() {
125
+ return _t.value;
126
+ },
127
+ get columnVisibility() {
128
+ return yt.value;
129
+ }
130
+ }
131
+ }), R = r(() => {
132
+ let e = L.getRowModel().rows;
133
+ if (j.value) return e;
134
+ let t = _.search.value ?? "", n = I.value;
135
+ return e.filter((e) => Be(e.original, E.value, _.columnSearch.value, n) ? t.trim().length === 0 || E.value.some((r) => !n.includes(r.id) && Le(f(e.original, r), t)) : !1);
136
+ }), z = r(() => M.value ? Ke(R.value, _.page.value ?? 1, N.value) : R.value), B = r(() => l(z.value, "id")), xt = r(() => be(B.value, _.selection.value ?? [])), V = r(() => {
137
+ let e = (ie(L.getHeaderGroups())?.headers ?? []).map((e) => {
138
+ let t = s(D.value, e.column.id);
139
+ return {
140
+ column: t,
141
+ id: e.column.id,
142
+ width: t?.width,
143
+ sticky: t?.sticky,
144
+ isExpand: e.column.id === u,
145
+ isSelection: e.column.id === d
146
+ };
147
+ }), t = Se(e, P.value ? 20 : 10);
148
+ return e.map((e) => {
149
+ let n = s(t, e.id), r = e.column?.sortable ? de(_.sorting.value ?? null, e.id) : "none";
150
+ return {
151
+ ariaSort: r,
152
+ id: e.id,
153
+ width: e.width,
154
+ sticky: n?.sticky,
155
+ isExpand: e.isExpand,
156
+ align: e.column?.align,
157
+ stickyStyle: n?.style,
158
+ header: e.column?.header,
159
+ classes: e.column?.classes,
160
+ isSelection: e.isSelection,
161
+ stickyEdge: n?.edge === !0,
162
+ ellipsis: e.column?.ellipsis === !0,
163
+ sortable: e.column?.sortable === !0,
164
+ sortIcon: xe(r),
165
+ hideable: e.column?.hideable !== !1,
166
+ filterOptions: e.column?.filters ?? [],
167
+ filterable: p(e.column),
168
+ searchable: Ee(e.column),
169
+ filterMultiple: e.column?.filterMultiple !== !1,
170
+ searchQuery: me(_.columnSearch.value, e.id),
171
+ filterValues: pe(_.filters.value, e.id),
172
+ filterActive: Te(_.filters.value, e.id) || De(_.columnSearch.value, e.id)
173
+ };
174
+ });
175
+ }), H = r(() => {
176
+ let e = Se(V.value.map((e) => ({
177
+ id: e.id,
178
+ width: e.width,
179
+ sticky: e.sticky,
180
+ isExpand: e.isExpand,
181
+ isSelection: e.isSelection
182
+ })), 1);
183
+ return z.value.map((t) => ({
184
+ id: t.id,
185
+ original: t.original,
186
+ expanded: (_.expanded.value ?? []).includes(t.id),
187
+ selected: (_.selection.value ?? []).includes(t.id),
188
+ cells: t.getVisibleCells().map((n) => {
189
+ let r = s(D.value, n.column.id), i = s(e, n.column.id), a = r ? f(t.original, r) : void 0;
190
+ return {
191
+ tooltip: r?.ellipsis === !0 && !se(a) && a !== "" ? String(a) : void 0,
192
+ value: a,
193
+ id: n.column.id,
194
+ width: r?.width,
195
+ align: r?.align,
196
+ sticky: i?.sticky,
197
+ classes: r?.classes,
198
+ stickyStyle: i?.style,
199
+ stickyEdge: i?.edge === !0,
200
+ ellipsis: r?.ellipsis === !0,
201
+ isExpand: n.column.id === u,
202
+ isSelection: n.column.id === d,
203
+ content: r?.cell ? r.cell(t.original) : he(a)
204
+ };
205
+ })
206
+ }));
207
+ }), St = r(() => V.value.length), Ct = r(() => !!b.pagination || !!b.perPage || j.value || M.value), U = r(() => ke(_.perPage.value, lt?.vnode.props?.["onUpdate:perPage"] !== void 0, !!b.perPage)), W = r(() => ve({
208
+ perPage: _.perPage.value,
209
+ clientPaged: M.value,
210
+ pageCount: S.value.pageCount,
211
+ totalCount: S.value.totalCount,
212
+ filteredCount: R.value.length
213
+ })), wt = r(() => H.value.length === 0), G = r(() => ge(S.value.variant)), Tt = r(() => e(C.value?.root, ft.value, { class: m({ [F.value ? "" : s(w.value, "root") ?? ""]: !0 }) })), Et = r(() => V.value.some((e) => !!e.stickyStyle)), K = o({
214
+ end: !1,
215
+ start: !1
216
+ }), q;
217
+ function J(e) {
218
+ let t = e ? Ce(e.scrollLeft, e.scrollWidth, e.clientWidth) : {
219
+ end: !1,
220
+ start: !1
221
+ };
222
+ (K.value.end !== t.end || K.value.start !== t.start) && (K.value = t);
223
+ }
224
+ function Y(e) {
225
+ q?.disconnect(), q = void 0, J(e), !(!e || typeof ResizeObserver > "u") && (q = new ResizeObserver(() => {
226
+ J(e);
227
+ }), q.observe(e));
228
+ }
229
+ let X = o(!1), Z;
230
+ function Q(e) {
231
+ Z?.(), Z = void 0, e && (Z = Re(e, (e) => {
232
+ X.value !== e && (X.value = e);
233
+ }));
234
+ }
235
+ function Dt(e) {
236
+ let t = e.el;
237
+ Q(t instanceof HTMLElement ? t : null);
238
+ }
239
+ function Ot() {
240
+ Q(null);
241
+ }
242
+ function kt(e) {
243
+ let t = C.value?.wrapper?.onScroll;
244
+ c(t) && t(e);
245
+ let n = e.currentTarget;
246
+ n instanceof HTMLElement && J(n);
247
+ }
248
+ function At(e, t) {
249
+ let n = C.value?.wrapper?.[e];
250
+ c(n) && n(t);
251
+ }
252
+ function jt(e) {
253
+ At("onVnodeMounted", e);
254
+ let t = e.el;
255
+ Y(t instanceof HTMLElement ? t : null);
256
+ }
257
+ function Mt(e) {
258
+ At("onVnodeUnmounted", e), Y(null);
259
+ }
260
+ a(() => {
261
+ Y(null), Q(null);
262
+ });
263
+ let Nt = r(() => ({
264
+ size: S.value.size,
265
+ variant: S.value.variant,
266
+ rounded: S.value.rounded,
267
+ full: S.value.full !== !1,
268
+ striped: S.value.striped === !0,
269
+ stickyHeader: P.value,
270
+ hoverable: S.value.hoverable === !0,
271
+ customProps: {
272
+ table: {
273
+ ...C.value?.table,
274
+ "aria-busy": S.value.loading || void 0
275
+ },
276
+ root: {
277
+ ...C.value?.wrapper,
278
+ onScroll: kt,
279
+ onVnodeMounted: jt,
280
+ onVnodeUnmounted: Mt
281
+ }
282
+ },
283
+ classes: {
284
+ row: s(w.value, "row"),
285
+ body: s(w.value, "body"),
286
+ cell: s(w.value, "cell"),
287
+ head: s(w.value, "head"),
288
+ header: m({
289
+ "relative z-40": S.value.loading && S.value.loadingVariant === "bar",
290
+ [s(w.value, "header") ?? ""]: !0
291
+ }),
292
+ table: m({
293
+ "border-separate border-spacing-0": Et.value && !P.value,
294
+ [s(w.value, "table") ?? ""]: !0
295
+ }),
296
+ root: m({
297
+ "overflow-auto": F.value,
298
+ [s(w.value, "wrapper") ?? ""]: !0,
299
+ [F.value ? s(w.value, "root") ?? "" : ""]: !0
300
+ })
301
+ }
302
+ }));
303
+ function Pt(e, t = !1) {
304
+ let n = fe(e.width, e.isExpand || e.isSelection), r = t && P.value;
305
+ return {
306
+ ...n ? {
307
+ width: n,
308
+ maxWidth: n
309
+ } : {},
310
+ ...e.stickyStyle,
311
+ ...t && e.stickyStyle && !r ? { zIndex: 20 } : {},
312
+ ...r ? {
313
+ top: 0,
314
+ position: "sticky",
315
+ zIndex: e.stickyStyle ? 20 : 11
316
+ } : {}
317
+ };
318
+ }
319
+ function Ft(e) {
320
+ return e.isSelection || e.isExpand ? "center" : e.align ?? "start";
321
+ }
322
+ function It(e) {
323
+ return e.isSelection || e.isExpand ? "center" : e.align ?? "start";
324
+ }
325
+ function Lt(t) {
326
+ let n = t.isSelection || t.isExpand;
327
+ return e(C.value?.head, {}, {
328
+ style: Pt(t, !0),
329
+ tabindex: t.sortable ? 0 : void 0,
330
+ "aria-sort": t.sortable ? t.ariaSort : void 0,
331
+ onClick: t.sortable ? (e) => {
332
+ v(e) || $(t.id);
333
+ } : void 0,
334
+ onKeydown: t.sortable ? (e) => {
335
+ v(e) || (e.key === "Enter" || e.key === " ") && (e.preventDefault(), $(t.id));
336
+ } : void 0,
337
+ class: m({
338
+ "min-w-0": !0,
339
+ relative: t.sortable,
340
+ "border-e-0": n,
341
+ "sticky z-20": !!t.stickyStyle,
342
+ "after:hidden": n,
343
+ "cursor-pointer hover:bg-dark-500/10 dark:hover:bg-dark-500/15": t.sortable,
344
+ [s(T.value, "cellStickyEdgeStart") ?? ""]: t.sticky === "start" && t.stickyEdge && K.value.start,
345
+ [s(T.value, "cellStickyEdgeEnd") ?? ""]: t.sticky === "end" && t.stickyEdge && K.value.end,
346
+ [t.classes?.header ?? ""]: !0
347
+ })
348
+ });
349
+ }
350
+ function Rt(t) {
351
+ let n = t.isSelection || t.isExpand;
352
+ return e(C.value?.cell, {}, {
353
+ style: Pt(t),
354
+ class: m({
355
+ "min-w-0": !0,
356
+ "border-e-0": n,
357
+ "after:hidden": n,
358
+ [s(T.value, "cellSticky") ?? ""]: !!t.stickyStyle,
359
+ [s(T.value, "cellStickyEdgeStart") ?? ""]: t.sticky === "start" && t.stickyEdge && K.value.start,
360
+ [s(T.value, "cellStickyEdgeEnd") ?? ""]: t.sticky === "end" && t.stickyEdge && K.value.end,
361
+ [t.classes?.cell ?? ""]: !0
362
+ })
363
+ });
364
+ }
365
+ let zt = r(() => e(C.value?.toolbar, {}, { class: m({
366
+ "flex items-center justify-between gap-3 pb-3": !0,
367
+ [s(w.value, "toolbar") ?? ""]: !0
368
+ }) })), Bt = r(() => e(C.value?.empty, {}, { class: m({
369
+ "flex flex-col items-center justify-center gap-2 py-12 text-sm text-dark-400 dark:text-dark-500": !0,
370
+ [s(w.value, "empty") ?? ""]: !0
371
+ }) })), Vt = r(() => e(C.value?.loading, {}, { class: m({
372
+ "absolute inset-0 z-30 bg-white/50 dark:bg-dark-900/50": !0,
373
+ "flex items-center justify-center": S.value.loadingVariant !== "bar",
374
+ [s(w.value, "loading") ?? ""]: !0
375
+ }) })), Ht = r(() => e({}, {}, { class: m({ "pointer-events-none absolute inset-x-0 top-0 z-40": !0 }) })), Ut = r(() => e({}, {}, { class: m({ "w-fit min-w-0 max-w-full": S.value.full === !1 }) })), Wt = r(() => e(C.value?.footer, {}, { class: m({
376
+ "w-0 min-w-full": S.value.full === !1,
377
+ "border-t border-dark-200 bg-dark-50 px-3 py-2.5 text-sm text-dark-600 dark:border-dark-700 dark:bg-dark-800 dark:text-dark-300": !0,
378
+ [s(w.value, "footer") ?? ""]: !0
379
+ }) })), Gt = r(() => e({}, {}, {
380
+ onVnodeMounted: Dt,
381
+ onVnodeUnmounted: Ot,
382
+ class: m({
383
+ "flex items-center gap-3 py-3 [&>*]:shrink-0": !0,
384
+ "flex-col justify-center": U.value && !X.value,
385
+ "flex-row": !U.value || X.value,
386
+ "justify-end": !U.value,
387
+ "justify-between": U.value && X.value,
388
+ "w-full": S.value.full !== !1,
389
+ "w-0 min-w-full": S.value.full === !1,
390
+ [s(w.value, "pagination") ?? ""]: !0
391
+ })
392
+ }));
393
+ function $(e) {
394
+ _.sorting.value = Xe(_.sorting.value ?? null, e);
395
+ }
396
+ function Kt(e, t) {
397
+ _.selection.value = Ge(_.selection.value ?? [], e, t, S.value.selectionMode);
398
+ }
399
+ function qt(e) {
400
+ _.perPage.value = e, _.page.value !== 1 && (_.page.value = 1);
401
+ }
402
+ function Jt(e) {
403
+ _.search.value = e, _.page.value !== 1 && (_.page.value = 1);
404
+ }
405
+ let Yt = r(() => ({
406
+ page: _.page.value ?? 1,
407
+ variant: G.value,
408
+ count: W.value ?? 1,
409
+ onPageChange: (e) => {
410
+ _.page.value = e;
411
+ }
412
+ })), Xt = r(() => ({
413
+ perPage: N.value,
414
+ onPerPageChange: qt,
415
+ options: _e(N.value, S.value.perPageOptions)
416
+ }));
417
+ function Zt(e) {
418
+ _.selection.value = Je(_.selection.value ?? [], B.value, e);
419
+ }
420
+ function Qt(e, t, n) {
421
+ let r = s(D.value, e);
422
+ r?.filters && r.filters.length > 0 && (_.filters.value = Ue(_.filters.value, e, t)), Ee(r) && (_.columnSearch.value = We(_.columnSearch.value, e, n)), _.page.value !== 1 && (_.page.value = 1);
423
+ }
424
+ function $t(e, t) {
425
+ _.expanded.value = Ye(_.expanded.value ?? [], e, t);
426
+ }
427
+ function en(e, t) {
428
+ _.hiddenColumns.value = qe(_.hiddenColumns.value ?? [], e, t, l(E.value, "id"));
429
+ }
430
+ function tn(e) {
431
+ _.hiddenColumns.value = e;
432
+ }
433
+ let nn = r(() => {
434
+ if (!E.value.some((e) => e.summary !== void 0)) return null;
435
+ let e = l(R.value, "original");
436
+ return V.value.map((t) => {
437
+ let n = s(D.value, t.id);
438
+ return {
439
+ id: t.id,
440
+ ellipsis: !1,
441
+ value: void 0,
442
+ tooltip: void 0,
443
+ width: t.width,
444
+ align: t.align,
445
+ sticky: t.sticky,
446
+ classes: t.classes,
447
+ isExpand: t.isExpand,
448
+ stickyEdge: t.stickyEdge,
449
+ stickyStyle: t.stickyStyle,
450
+ isSelection: t.isSelection,
451
+ content: t.isSelection || t.isExpand ? null : n?.summary?.(e) ?? null
452
+ };
453
+ });
454
+ }), rn = r(() => E.value.map((e) => ({
455
+ id: e.id,
456
+ hideable: e.hideable !== !1,
457
+ hidden: I.value.includes(e.id),
458
+ label: ce(e.header) ? e.header : e.id
459
+ }))), an = r(() => Ae(_.search.value, lt?.vnode.props?.["onUpdate:search"] !== void 0, b.search !== void 0));
460
+ return {
461
+ merged: S,
462
+ pageIds: B,
463
+ rowViews: H,
464
+ rootBind: Tt,
465
+ emptyBind: Bt,
466
+ showEmpty: wt,
467
+ frameBind: Ut,
468
+ tableProps: Nt,
469
+ footerBind: Wt,
470
+ showSearch: an,
471
+ getHeadBind: Lt,
472
+ headerViews: V,
473
+ loadingBind: Vt,
474
+ onToggleRow: Kt,
475
+ toolbarBind: zt,
476
+ getCellBind: Rt,
477
+ columnCount: St,
478
+ clientPaged: M,
479
+ serverPaged: j,
480
+ showPerPage: U,
481
+ showToolbar: r(() => !!b.toolbar || !!b.toolbarActions || A.value || an.value),
482
+ getHeadAlign: Ft,
483
+ getCellAlign: It,
484
+ onTogglePage: Zt,
485
+ onToggleSort: $,
486
+ summaryCells: nn,
487
+ expandEnabled: k,
488
+ onChangeSearch: Jt,
489
+ loadingBarBind: Ht,
490
+ paginationBind: Gt,
491
+ selectAllState: xt,
492
+ showPagination: Ct,
493
+ onToggleExpand: $t,
494
+ visibilityItems: rn,
495
+ onChangePerPage: qt,
496
+ resolvedPerPage: N,
497
+ selectionEnabled: O,
498
+ perPageSlotProps: Xt,
499
+ paginationVariant: G,
500
+ resolvedPageCount: W,
501
+ selectionMultiple: ht,
502
+ visibilityEnabled: A,
503
+ paginationSlotProps: Yt,
504
+ onCommitColumnFilter: Qt,
505
+ onHiddenColumnsChange: tn,
506
+ onToggleColumnVisibility: en,
507
+ loadingBar: r(() => S.value.loadingVariant === "bar")
508
+ };
509
+ }
510
+ //#endregion
511
+ export { y as useDataTable };
@@ -0,0 +1,27 @@
1
+ import { FieldOverlayMode } from '@bridge-ui/core/Domain';
2
+ import { DataTableVisibilityItem } from './useDataTable';
3
+ /**
4
+ * Column visibility overlay state: draft when the footer is shown, live
5
+ * otherwise.
6
+ */
7
+ export declare function useDataTableColumnsMenu(props: {
8
+ items: DataTableVisibilityItem[];
9
+ overlay?: FieldOverlayMode;
10
+ showFooter?: boolean;
11
+ }, onChange: (hiddenIds: string[]) => void): {
12
+ show: import('vue').Ref<boolean, boolean>;
13
+ onApply: () => void;
14
+ onReset: () => void;
15
+ isHidden: (item: DataTableVisibilityItem) => boolean;
16
+ triggerRef: import('vue').Ref<HTMLSpanElement | null, HTMLSpanElement | null>;
17
+ controlSize: import('vue').ComputedRef<"md" | "sm">;
18
+ onToggleItem: (item: DataTableVisibilityItem) => void;
19
+ onToggleShow: () => void;
20
+ overlayCustomProps: import('vue').ComputedRef<{
21
+ menu: {
22
+ anchorEl: HTMLSpanElement | null;
23
+ placement: "bottom";
24
+ };
25
+ }>;
26
+ showFooter: import('vue').ComputedRef<boolean>;
27
+ };
@@ -0,0 +1,54 @@
1
+ import { useBreakpoint as e } from "../../../Utils/useBreakpoint.js";
2
+ import { computed as t, ref as n, watch as r } from "vue";
3
+ import { getDataTableHiddenColumnIds as i, getDataTableResetHiddenColumnIds as a, getFieldOverlayControlSize as o, resolveFieldOverlay as s, resolveFieldShowFooter as c, toggleDataTableColumnVisibility as l } from "@bridge-ui/core/Domain";
4
+ //#region src/Components/DataTable/composables/useDataTableColumnsMenu.ts
5
+ function u(u, d) {
6
+ let f = n(!1), p = e(), m = n([]), h = n(null), g = t(() => s(u.overlay, p.mobile)), _ = t(() => c(u.showFooter, g.value)), v = t(() => o(g.value)), y = t(() => ({ menu: {
7
+ anchorEl: h.value,
8
+ placement: "bottom"
9
+ } }));
10
+ r(f, (e) => {
11
+ e && b();
12
+ }, { flush: "sync" });
13
+ function b() {
14
+ m.value = i(u.items);
15
+ }
16
+ function x() {
17
+ return _.value ? m.value : i(u.items);
18
+ }
19
+ function S(e) {
20
+ return x().includes(e.id);
21
+ }
22
+ function C() {
23
+ f.value = !f.value;
24
+ }
25
+ function w(e) {
26
+ if (!e.hideable) return;
27
+ let t = l(x(), e.id, !S(e), u.items.map((e) => e.id));
28
+ if (_.value) {
29
+ m.value = t;
30
+ return;
31
+ }
32
+ d(t);
33
+ }
34
+ function T() {
35
+ m.value = a(u.items);
36
+ }
37
+ function E() {
38
+ d(m.value), f.value = !1;
39
+ }
40
+ return {
41
+ show: f,
42
+ onApply: E,
43
+ onReset: T,
44
+ isHidden: S,
45
+ triggerRef: h,
46
+ controlSize: v,
47
+ onToggleItem: w,
48
+ onToggleShow: C,
49
+ overlayCustomProps: y,
50
+ showFooter: _
51
+ };
52
+ }
53
+ //#endregion
54
+ export { u as useDataTableColumnsMenu };