@bridge-ui/vue 0.2.0 → 0.3.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 (107) hide show
  1. package/ai/skills/bridge-ui-components/SKILL.md +3 -1
  2. package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +1 -1
  3. package/dist/Components/ColorField/composables/useColorField.d.ts +2 -1
  4. package/dist/Components/DataTable/DataTable.js +5 -0
  5. package/dist/Components/DataTable/DataTable.vue.d.ts +43 -0
  6. package/dist/Components/DataTable/DataTable.vue_vue_type_script_setup_true_lang.js +382 -0
  7. package/dist/Components/DataTable/DataTableCellContent.js +5 -0
  8. package/dist/Components/DataTable/DataTableCellContent.vue.d.ts +23 -0
  9. package/dist/Components/DataTable/DataTableCellContent.vue_vue_type_script_setup_true_lang.js +38 -0
  10. package/dist/Components/DataTable/DataTableColumnsMenu.js +5 -0
  11. package/dist/Components/DataTable/DataTableColumnsMenu.vue.d.ts +11 -0
  12. package/dist/Components/DataTable/DataTableColumnsMenu.vue_vue_type_script_setup_true_lang.js +47 -0
  13. package/dist/Components/DataTable/DataTableFilterMenu.js +5 -0
  14. package/dist/Components/DataTable/DataTableFilterMenu.vue.d.ts +17 -0
  15. package/dist/Components/DataTable/DataTableFilterMenu.vue_vue_type_script_setup_true_lang.js +132 -0
  16. package/dist/Components/DataTable/DataTableFilterOptions.js +5 -0
  17. package/dist/Components/DataTable/DataTableFilterOptions.vue.d.ts +14 -0
  18. package/dist/Components/DataTable/DataTableFilterOptions.vue_vue_type_script_setup_true_lang.js +73 -0
  19. package/dist/Components/DataTable/DataTableSearch.js +5 -0
  20. package/dist/Components/DataTable/DataTableSearch.vue.d.ts +12 -0
  21. package/dist/Components/DataTable/DataTableSearch.vue_vue_type_script_setup_true_lang.js +39 -0
  22. package/dist/Components/DataTable/DataTableSelection.js +5 -0
  23. package/dist/Components/DataTable/DataTableSelection.vue.d.ts +20 -0
  24. package/dist/Components/DataTable/DataTableSelection.vue_vue_type_script_setup_true_lang.js +55 -0
  25. package/dist/Components/DataTable/DataTableSortButton.js +5 -0
  26. package/dist/Components/DataTable/DataTableSortButton.vue.d.ts +17 -0
  27. package/dist/Components/DataTable/DataTableSortButton.vue_vue_type_script_setup_true_lang.js +43 -0
  28. package/dist/Components/DataTable/DataTableToolbarButton.js +5 -0
  29. package/dist/Components/DataTable/DataTableToolbarButton.vue.d.ts +13 -0
  30. package/dist/Components/DataTable/DataTableToolbarButton.vue_vue_type_script_setup_true_lang.js +31 -0
  31. package/dist/Components/DataTable/composables/useDataTable.d.ts +557 -0
  32. package/dist/Components/DataTable/composables/useDataTable.js +479 -0
  33. package/dist/Components/DataTable/dataTable.types.d.ts +480 -0
  34. package/dist/Components/DataTable/index.d.ts +3 -0
  35. package/dist/Components/DataTable/index.js +3 -0
  36. package/dist/Components/DateField/composables/useDateField.d.ts +2 -1
  37. package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +2 -1
  38. package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +2 -1
  39. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +2 -1
  40. package/dist/Components/FormField/composables/useFormField.d.ts +1 -1
  41. package/dist/Components/Menu/Menu.vue_vue_type_script_setup_true_lang.js +1 -0
  42. package/dist/Components/Menu/composables/useMenu.d.ts +1 -1
  43. package/dist/Components/Menu/composables/useMenu.js +7 -3
  44. package/dist/Components/Menu/menu.types.d.ts +6 -0
  45. package/dist/Components/NumberField/composables/useNumberField.d.ts +1 -1
  46. package/dist/Components/PasswordField/composables/usePasswordField.d.ts +1 -1
  47. package/dist/Components/Radio/Radio.vue_vue_type_script_setup_true_lang.js +9 -9
  48. package/dist/Components/Radio/composables/useRadio.js +57 -54
  49. package/dist/Components/Select/composables/useSelect.d.ts +1 -1
  50. package/dist/Components/Slider/composables/useSlider.d.ts +2 -2
  51. package/dist/Components/Snackbar/composables/useSnackbar.d.ts +1 -1
  52. package/dist/Components/Table/Table.js +5 -0
  53. package/dist/Components/Table/Table.vue.d.ts +16 -0
  54. package/dist/Components/Table/Table.vue_vue_type_script_setup_true_lang.js +44 -0
  55. package/dist/Components/Table/TableBody.js +5 -0
  56. package/dist/Components/Table/TableBody.vue.d.ts +11 -0
  57. package/dist/Components/Table/TableBody.vue_vue_type_script_setup_true_lang.js +17 -0
  58. package/dist/Components/Table/TableCaption.js +5 -0
  59. package/dist/Components/Table/TableCaption.vue.d.ts +11 -0
  60. package/dist/Components/Table/TableCaption.vue_vue_type_script_setup_true_lang.js +17 -0
  61. package/dist/Components/Table/TableCell.js +5 -0
  62. package/dist/Components/Table/TableCell.vue.d.ts +11 -0
  63. package/dist/Components/Table/TableCell.vue_vue_type_script_setup_true_lang.js +19 -0
  64. package/dist/Components/Table/TableFooter.js +5 -0
  65. package/dist/Components/Table/TableFooter.vue.d.ts +11 -0
  66. package/dist/Components/Table/TableFooter.vue_vue_type_script_setup_true_lang.js +17 -0
  67. package/dist/Components/Table/TableHead.js +5 -0
  68. package/dist/Components/Table/TableHead.vue.d.ts +11 -0
  69. package/dist/Components/Table/TableHead.vue_vue_type_script_setup_true_lang.js +19 -0
  70. package/dist/Components/Table/TableHeader.js +5 -0
  71. package/dist/Components/Table/TableHeader.vue.d.ts +11 -0
  72. package/dist/Components/Table/TableHeader.vue_vue_type_script_setup_true_lang.js +17 -0
  73. package/dist/Components/Table/TableRow.js +5 -0
  74. package/dist/Components/Table/TableRow.vue.d.ts +11 -0
  75. package/dist/Components/Table/TableRow.vue_vue_type_script_setup_true_lang.js +17 -0
  76. package/dist/Components/Table/composables/useTable.d.ts +16 -0
  77. package/dist/Components/Table/composables/useTable.js +88 -0
  78. package/dist/Components/Table/composables/useTableCell.d.ts +12 -0
  79. package/dist/Components/Table/composables/useTableCell.js +40 -0
  80. package/dist/Components/Table/composables/useTablePart.d.ts +12 -0
  81. package/dist/Components/Table/composables/useTablePart.js +32 -0
  82. package/dist/Components/Table/composables/useTableRow.d.ts +6 -0
  83. package/dist/Components/Table/composables/useTableRow.js +29 -0
  84. package/dist/Components/Table/index.d.ts +14 -0
  85. package/dist/Components/Table/index.js +14 -0
  86. package/dist/Components/Table/table.types.d.ts +416 -0
  87. package/dist/Components/Table/tableInjectionKey.d.ts +114 -0
  88. package/dist/Components/Table/tableInjectionKey.js +4 -0
  89. package/dist/Components/TextField/composables/useTextField.d.ts +1 -1
  90. package/dist/Components/Textarea/composables/useTextarea.d.ts +1 -1
  91. package/dist/Components/TimeField/composables/useTimeField.d.ts +2 -1
  92. package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +2 -1
  93. package/docs/README.md +2 -0
  94. package/docs/components/CalendarDate.md +1 -1
  95. package/docs/components/DataTable.md +345 -0
  96. package/docs/components/DateField.md +2 -2
  97. package/docs/components/DatePicker.md +3 -3
  98. package/docs/components/DateRangePicker.md +1 -1
  99. package/docs/components/Pagination.md +2 -2
  100. package/docs/components/Table.md +122 -0
  101. package/docs/examples/i18n-dictionary.ts +4 -0
  102. package/docs/examples/icon-fontawesome.ts +8 -0
  103. package/docs/examples/icon-heroicons.ts +8 -0
  104. package/docs/examples/icon-lucide.ts +8 -0
  105. package/docs/examples/icon-phosphor.ts +8 -0
  106. package/docs/examples/icon-tabler.ts +8 -0
  107. package/package.json +9 -2
@@ -0,0 +1,480 @@
1
+ import { HTMLAttributes, Slot, VNodeChild } from 'vue';
2
+ import { DataTableColumnBase, DataTableColumnSearch, DataTableFilterOption, DataTableFilters, DataTableItemSlotProps, DataTableLoadingVariant, DataTablePaginationSlotProps, DataTablePerPageSlotProps, DataTableSelectionMode, DataTableSorting, DataTableStickyEdge, DataTableStickyHeader } from '@bridge-ui/core/Domain';
3
+ import { TableAlign, TableRounded, TableSize, TableVariant } from '@bridge-ui/core/Tokens';
4
+ import { MergeHtmlProps, MergeProps } from '@bridge-ui/core/Utils';
5
+ import { CheckboxProps } from '../Checkbox/checkbox.types';
6
+ import { PaginationOwnProps } from '../Pagination/pagination.types';
7
+ import { ProgressOwnProps } from '../Progress/progress.types';
8
+ import { RadioProps } from '../Radio/radio.types';
9
+ import { SelectOwnProps } from '../Select/select.types';
10
+ import { TableAlignOverrides, TableRoundedOverrides, TableSizeOverrides, TableVariantOverrides } from '../Table/table.types';
11
+ import { TextFieldOwnProps } from '../TextField/textField.types';
12
+ export type { DataTableColumnBase, DataTableColumnSearch, DataTableFilterOption, DataTableFilters, DataTableItemSlotProps, DataTableLoadingVariant, DataTablePaginationSlotProps, DataTablePerPageSlotProps, DataTableSelectionMode, DataTableSorting, DataTableStickyEdge, DataTableStickyHeader, };
13
+ /**
14
+ * Column definition with Vue renderers.
15
+ */
16
+ export type DataTableColumn<T> = Omit<DataTableColumnBase<T>, "align"> & {
17
+ /**
18
+ * Text alignment for the header and cells.
19
+ *
20
+ * @default "start"
21
+ */
22
+ align?: MergeProps<TableAlign, TableAlignOverrides>;
23
+ /**
24
+ * Cell renderer for a data row. Used when no `#item.{id}` slot is set.
25
+ * Defaults to the column accessor (or `row[id]`).
26
+ *
27
+ * @default undefined
28
+ */
29
+ cell?: (row: T) => VNodeChild;
30
+ /**
31
+ * Header content.
32
+ */
33
+ header: VNodeChild;
34
+ /**
35
+ * Footer cell for a summary row. Receives the current (filtered) rows.
36
+ */
37
+ summary?: (rows: T[]) => VNodeChild;
38
+ };
39
+ export interface DataTableClasses {
40
+ /**
41
+ * Classes merged onto the body rowgroup.
42
+ */
43
+ body?: string;
44
+ /**
45
+ * Classes merged onto body cells.
46
+ */
47
+ cell?: string;
48
+ /**
49
+ * Classes merged onto the empty-state region.
50
+ */
51
+ empty?: string;
52
+ /**
53
+ * Classes merged onto the footer region below the table.
54
+ */
55
+ footer?: string;
56
+ /**
57
+ * Classes merged onto header cells.
58
+ */
59
+ head?: string;
60
+ /**
61
+ * Classes merged onto the header rowgroup.
62
+ */
63
+ header?: string;
64
+ /**
65
+ * Classes merged onto the loading region.
66
+ */
67
+ loading?: string;
68
+ /**
69
+ * Classes merged onto the pagination region.
70
+ */
71
+ pagination?: string;
72
+ /**
73
+ * Classes merged onto the per-page Select.
74
+ */
75
+ perPage?: string;
76
+ /**
77
+ * Classes merged onto the DataTable root.
78
+ */
79
+ root?: string;
80
+ /**
81
+ * Classes merged onto rows.
82
+ */
83
+ row?: string;
84
+ /**
85
+ * Classes merged onto the toolbar search field.
86
+ */
87
+ search?: string;
88
+ /**
89
+ * Classes merged onto the `<table>` element.
90
+ */
91
+ table?: string;
92
+ /**
93
+ * Classes merged onto the toolbar region.
94
+ */
95
+ toolbar?: string;
96
+ /**
97
+ * Classes merged onto the table wrapper (`Table` root).
98
+ */
99
+ wrapper?: string;
100
+ }
101
+ export interface DataTableCustomProps {
102
+ /**
103
+ * Props forwarded to the body rowgroup.
104
+ *
105
+ * @default undefined
106
+ */
107
+ body?: HTMLAttributes;
108
+ /**
109
+ * Props forwarded to body cells.
110
+ *
111
+ * @default undefined
112
+ */
113
+ cell?: HTMLAttributes;
114
+ /**
115
+ * Extra props for selection checkboxes.
116
+ *
117
+ * @default undefined
118
+ */
119
+ checkbox?: Partial<Omit<CheckboxProps, "modelValue" | "indeterminate">>;
120
+ /**
121
+ * Props forwarded to the empty-state region.
122
+ *
123
+ * @default undefined
124
+ */
125
+ empty?: HTMLAttributes;
126
+ /**
127
+ * Props forwarded to the footer region below the table.
128
+ *
129
+ * @default undefined
130
+ */
131
+ footer?: HTMLAttributes;
132
+ /**
133
+ * Props forwarded to header cells.
134
+ *
135
+ * @default undefined
136
+ */
137
+ head?: HTMLAttributes;
138
+ /**
139
+ * Props forwarded to the header rowgroup.
140
+ *
141
+ * @default undefined
142
+ */
143
+ header?: HTMLAttributes;
144
+ /**
145
+ * Props forwarded to the loading region.
146
+ *
147
+ * @default undefined
148
+ */
149
+ loading?: HTMLAttributes;
150
+ /**
151
+ * Extra props for the built-in `Pagination`.
152
+ *
153
+ * @default undefined
154
+ */
155
+ pagination?: Partial<Omit<PaginationOwnProps, "count">>;
156
+ /**
157
+ * Extra props for the built-in per-page `Select`.
158
+ *
159
+ * @default undefined
160
+ */
161
+ perPage?: Partial<Omit<SelectOwnProps, "options">>;
162
+ /**
163
+ * Extra props for the built-in `Progress` (`loadingVariant="bar"`).
164
+ *
165
+ * @default undefined
166
+ */
167
+ progress?: Partial<ProgressOwnProps>;
168
+ /**
169
+ * Extra props for selection radios (`selectionMode="single"`).
170
+ *
171
+ * @default undefined
172
+ */
173
+ radio?: Partial<Omit<RadioProps, "modelValue">>;
174
+ /**
175
+ * Props forwarded to the DataTable root.
176
+ *
177
+ * @default undefined
178
+ */
179
+ root?: HTMLAttributes;
180
+ /**
181
+ * Props forwarded to rows.
182
+ *
183
+ * @default undefined
184
+ */
185
+ row?: HTMLAttributes;
186
+ /**
187
+ * Extra props for the toolbar search field.
188
+ *
189
+ * @default undefined
190
+ */
191
+ search?: Partial<Omit<TextFieldOwnProps, "modelValue">>;
192
+ /**
193
+ * Props forwarded to the `<table>` element.
194
+ *
195
+ * @default undefined
196
+ */
197
+ table?: HTMLAttributes;
198
+ /**
199
+ * Props forwarded to the toolbar region.
200
+ *
201
+ * @default undefined
202
+ */
203
+ toolbar?: HTMLAttributes;
204
+ /**
205
+ * Props forwarded to the table wrapper (`Table` root).
206
+ *
207
+ * @default undefined
208
+ */
209
+ wrapper?: HTMLAttributes;
210
+ }
211
+ export interface DataTableEmits {
212
+ /**
213
+ * Emitted when per-column text search should update (`v-model:column-search`).
214
+ */
215
+ "update:columnSearch": [search: DataTableColumnSearch];
216
+ /**
217
+ * Emitted when expanded row ids should update (`v-model:expanded`).
218
+ */
219
+ "update:expanded": [ids: string[]];
220
+ /**
221
+ * Emitted when column filters should update (`v-model:filters`).
222
+ */
223
+ "update:filters": [filters: DataTableFilters];
224
+ /**
225
+ * Emitted when hidden column ids should update (`v-model:hidden-columns`).
226
+ */
227
+ "update:hiddenColumns": [ids: string[]];
228
+ /**
229
+ * Emitted when the numbered page should update (`v-model:page`).
230
+ */
231
+ "update:page": [page: number];
232
+ /**
233
+ * Emitted when the page size should update (`v-model:per-page`).
234
+ * DataTable also resets to page 1.
235
+ */
236
+ "update:perPage": [perPage: number];
237
+ /**
238
+ * Emitted when the toolbar search query should update (`v-model:search`).
239
+ */
240
+ "update:search": [query: string];
241
+ /**
242
+ * Emitted when selected row ids should update (`v-model:selection`).
243
+ */
244
+ "update:selection": [ids: string[]];
245
+ /**
246
+ * Emitted when sort should update (`v-model:sorting`).
247
+ */
248
+ "update:sorting": [sorting: DataTableSorting];
249
+ }
250
+ /**
251
+ * Opinionated data table. Compose with `columns` / `rows`.
252
+ */
253
+ export interface DataTableOwnProps<T> {
254
+ /**
255
+ * Classes for DataTable regions.
256
+ *
257
+ * @default undefined
258
+ */
259
+ classes?: DataTableClasses;
260
+ /**
261
+ * Column definitions (Bridge shape).
262
+ *
263
+ * @default []
264
+ */
265
+ columns?: DataTableColumn<T>[];
266
+ /**
267
+ * Controlled per-column text search: column id → query. Set `searchable`
268
+ * on a column to show the field in that header's filter menu.
269
+ *
270
+ * @default undefined
271
+ */
272
+ columnSearch?: DataTableColumnSearch;
273
+ /**
274
+ * Extra props for internal parts (`table`, `wrapper`, checkboxes, …).
275
+ *
276
+ * @default undefined
277
+ */
278
+ customProps?: DataTableCustomProps;
279
+ /**
280
+ * Controlled expanded row ids.
281
+ *
282
+ * @default undefined
283
+ */
284
+ expanded?: string[];
285
+ /**
286
+ * Controlled column filters: column id → selected option values.
287
+ *
288
+ * @default undefined
289
+ */
290
+ filters?: DataTableFilters;
291
+ /**
292
+ * Stretch the table to at least the wrapper width.
293
+ *
294
+ * @default true
295
+ */
296
+ full?: boolean;
297
+ /**
298
+ * Stable row id. Required for reliable selection.
299
+ *
300
+ * @default undefined
301
+ */
302
+ getRowId?: (row: T) => string;
303
+ /**
304
+ * Controlled hidden column ids.
305
+ *
306
+ * @default undefined
307
+ */
308
+ hiddenColumns?: string[];
309
+ /**
310
+ * Row hover styles on the body.
311
+ *
312
+ * @default false
313
+ */
314
+ hoverable?: boolean;
315
+ /**
316
+ * Show the loading region (`aria-busy` on the table).
317
+ *
318
+ * @default false
319
+ */
320
+ loading?: boolean;
321
+ /**
322
+ * How `loading` is shown. `overlay` dims the table; `bar` dims the table
323
+ * and draws a progress line under the header.
324
+ *
325
+ * @default "overlay"
326
+ */
327
+ loadingVariant?: DataTableLoadingVariant;
328
+ /**
329
+ * Controlled page for built-in numbered Pagination (1-based).
330
+ *
331
+ * @default undefined
332
+ */
333
+ page?: number;
334
+ /**
335
+ * Total pages for built-in numbered Pagination. Use this or `totalCount`.
336
+ *
337
+ * @default undefined
338
+ */
339
+ pageCount?: number;
340
+ /**
341
+ * Alignment of the built-in Pagination region.
342
+ *
343
+ * @default "end"
344
+ */
345
+ paginationAlign?: MergeProps<TableAlign, TableAlignOverrides>;
346
+ /**
347
+ * Page size. With `page` and no `pageCount`/`totalCount`, slices `rows`
348
+ * locally. With server paging, only drives the per-page Select.
349
+ *
350
+ * @default undefined
351
+ */
352
+ perPage?: number;
353
+ /**
354
+ * Options for the built-in per-page Select.
355
+ *
356
+ * @default [10, 25, 50, 100]
357
+ */
358
+ perPageOptions?: number[];
359
+ /**
360
+ * Corner radius of the table wrapper, header, and footer.
361
+ *
362
+ * @default "lg"
363
+ */
364
+ rounded?: MergeProps<TableRounded, TableRoundedOverrides>;
365
+ /**
366
+ * Current page of data (or the full set when not paging on the server).
367
+ *
368
+ * @default []
369
+ */
370
+ rows?: T[];
371
+ /**
372
+ * Controlled toolbar search query. Filters visible columns client-side,
373
+ * or emits `update:search` only when server-paged.
374
+ *
375
+ * @default undefined
376
+ */
377
+ search?: string;
378
+ /**
379
+ * Controlled selected row ids.
380
+ *
381
+ * @default undefined
382
+ */
383
+ selection?: string[];
384
+ /**
385
+ * Row selection chrome: radios (`single`) or checkboxes (`multiple`).
386
+ *
387
+ * @default "multiple"
388
+ */
389
+ selectionMode?: DataTableSelectionMode;
390
+ /**
391
+ * Cell padding / type scale.
392
+ *
393
+ * @default "md"
394
+ */
395
+ size?: MergeProps<TableSize, TableSizeOverrides>;
396
+ /**
397
+ * Controlled sort: one column, or `null` when unsorted.
398
+ *
399
+ * @default undefined
400
+ */
401
+ sorting?: DataTableSorting;
402
+ /**
403
+ * Stick header cells to the page (`true`) or inside the wrapper (`"boxed"`).
404
+ * For boxed, set a max height on `classes.wrapper` or `classes.root`.
405
+ *
406
+ * @default false
407
+ */
408
+ stickyHeader?: DataTableStickyHeader;
409
+ /**
410
+ * Alternating body row surfaces.
411
+ *
412
+ * @default false
413
+ */
414
+ striped?: boolean;
415
+ /**
416
+ * Total item count when the app owns paging. Derives page count with
417
+ * `perPage`. Use this or `pageCount`, not both (`pageCount` wins).
418
+ *
419
+ * @default undefined
420
+ */
421
+ totalCount?: number;
422
+ /**
423
+ * Chrome treatment. Built-in Pagination follows the matching variant.
424
+ *
425
+ * @default "plain"
426
+ */
427
+ variant?: MergeProps<TableVariant, TableVariantOverrides>;
428
+ }
429
+ /**
430
+ * Opinionated data table slots. Per-column cells use `#item.{columnId}`
431
+ * (`row`, `value`) and override `columns[].cell`.
432
+ */
433
+ export interface DataTableSlots<T = unknown> {
434
+ /**
435
+ * Shown when `rows` is empty.
436
+ */
437
+ empty?: Slot<undefined>;
438
+ /**
439
+ * Rendered in a spanning row when a row is expanded.
440
+ */
441
+ expanded?: Slot<{
442
+ row: T;
443
+ }>;
444
+ /**
445
+ * Region below the table, above pagination.
446
+ */
447
+ footer?: Slot<undefined>;
448
+ /**
449
+ * Catch-all cell slot when `#item.{columnId}` is not set.
450
+ */
451
+ item?: Slot<DataTableItemSlotProps<T>>;
452
+ /**
453
+ * Indicator shown when `loading` is set. Overlay defaults to a spin; bar
454
+ * defaults to `Progress` under the header.
455
+ */
456
+ loading?: Slot<undefined>;
457
+ /**
458
+ * Replaces the built-in numbered Pagination (no auto variant). Receives
459
+ * `page`, `count`, `variant`, and `onPageChange`.
460
+ */
461
+ pagination?: Slot<DataTablePaginationSlotProps>;
462
+ /**
463
+ * Replaces the built-in per-page Select. Receives `perPage`, `options`,
464
+ * and `onPerPageChange`.
465
+ */
466
+ perPage?: Slot<DataTablePerPageSlotProps>;
467
+ /**
468
+ * Replaces the toolbar search field.
469
+ */
470
+ search?: Slot<undefined>;
471
+ /**
472
+ * Leading toolbar region (left of Columns / Search).
473
+ */
474
+ toolbar?: Slot<undefined>;
475
+ /**
476
+ * Extra controls beside Columns and Search in the toolbar end cluster.
477
+ */
478
+ toolbarActions?: Slot<undefined>;
479
+ }
480
+ export type DataTableProps<T = unknown> = MergeHtmlProps<DataTableOwnProps<T>, HTMLAttributes>;
@@ -0,0 +1,3 @@
1
+ export { useDataTable } from './composables/useDataTable';
2
+ export type { DataTableClasses, DataTableColumn, DataTableColumnBase, DataTableColumnSearch, DataTableCustomProps, DataTableEmits, DataTableFilterOption, DataTableFilters, DataTableItemSlotProps, DataTableLoadingVariant, DataTableOwnProps, DataTablePaginationSlotProps, DataTablePerPageSlotProps, DataTableProps, DataTableSelectionMode, DataTableSlots, DataTableSorting, DataTableStickyEdge, DataTableStickyHeader, } from './dataTable.types';
3
+ export { default as DataTable } from './DataTable.vue';
@@ -0,0 +1,3 @@
1
+ import { useDataTable as e } from "./composables/useDataTable.js";
2
+ import t from "./DataTable.js";
3
+ export { t as DataTable, e as useDataTable };
@@ -179,7 +179,7 @@ export declare function useDateField(props: DateFieldOwnProps, model: Ref<null |
179
179
  dir?: string | undefined | undefined;
180
180
  draggable?: (boolean | "true" | "false") | undefined;
181
181
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
182
- enterKeyHint?: "done" | "search" | "enter" | "go" | "next" | "previous" | "send" | undefined;
182
+ enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
183
183
  hidden?: "" | "until-found" | "hidden" | (boolean | "true" | "false") | undefined;
184
184
  inert?: (boolean | "true" | "false") | undefined;
185
185
  placeholder?: string | undefined | undefined;
@@ -720,6 +720,7 @@ export declare function useDateField(props: DateFieldOwnProps, model: Ref<null |
720
720
  disableAutoFocus?: boolean;
721
721
  disableScrollLock?: boolean;
722
722
  keepMounted?: boolean;
723
+ matchWidth?: boolean;
723
724
  offset?: number;
724
725
  onShowChange?: (show: boolean) => void;
725
726
  persistent?: boolean;
@@ -178,7 +178,7 @@ export declare function useDateRangeField(props: DateRangeFieldOwnProps, model:
178
178
  dir?: string | undefined | undefined;
179
179
  draggable?: (boolean | "true" | "false") | undefined;
180
180
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
181
- enterKeyHint?: "done" | "search" | "enter" | "go" | "next" | "previous" | "send" | undefined;
181
+ enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
182
182
  hidden?: "" | "until-found" | "hidden" | (boolean | "true" | "false") | undefined;
183
183
  inert?: (boolean | "true" | "false") | undefined;
184
184
  placeholder?: string | undefined | undefined;
@@ -720,6 +720,7 @@ export declare function useDateRangeField(props: DateRangeFieldOwnProps, model:
720
720
  disableAutoFocus?: boolean;
721
721
  disableScrollLock?: boolean;
722
722
  keepMounted?: boolean;
723
+ matchWidth?: boolean;
723
724
  offset?: number;
724
725
  onShowChange?: (show: boolean) => void;
725
726
  persistent?: boolean;
@@ -179,7 +179,7 @@ export declare function useDateTimeField(props: DateTimeFieldOwnProps, model: Re
179
179
  dir?: string | undefined | undefined;
180
180
  draggable?: (boolean | "true" | "false") | undefined;
181
181
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
182
- enterKeyHint?: "done" | "search" | "enter" | "go" | "next" | "previous" | "send" | undefined;
182
+ enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
183
183
  hidden?: "" | "until-found" | "hidden" | (boolean | "true" | "false") | undefined;
184
184
  inert?: (boolean | "true" | "false") | undefined;
185
185
  placeholder?: string | undefined | undefined;
@@ -721,6 +721,7 @@ export declare function useDateTimeField(props: DateTimeFieldOwnProps, model: Re
721
721
  disableAutoFocus?: boolean;
722
722
  disableScrollLock?: boolean;
723
723
  keepMounted?: boolean;
724
+ matchWidth?: boolean;
724
725
  offset?: number;
725
726
  onShowChange?: (show: boolean) => void;
726
727
  persistent?: boolean;
@@ -180,7 +180,7 @@ export declare function useDateTimeRangeField(props: DateTimeRangeFieldOwnProps,
180
180
  dir?: string | undefined | undefined;
181
181
  draggable?: (boolean | "true" | "false") | undefined;
182
182
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
183
- enterKeyHint?: "done" | "search" | "enter" | "go" | "next" | "previous" | "send" | undefined;
183
+ enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
184
184
  hidden?: "" | "until-found" | "hidden" | (boolean | "true" | "false") | undefined;
185
185
  inert?: (boolean | "true" | "false") | undefined;
186
186
  placeholder?: string | undefined | undefined;
@@ -723,6 +723,7 @@ export declare function useDateTimeRangeField(props: DateTimeRangeFieldOwnProps,
723
723
  disableAutoFocus?: boolean;
724
724
  disableScrollLock?: boolean;
725
725
  keepMounted?: boolean;
726
+ matchWidth?: boolean;
726
727
  offset?: number;
727
728
  onShowChange?: (show: boolean) => void;
728
729
  persistent?: boolean;
@@ -190,7 +190,7 @@ export declare function useFormField(props: MaybeRefOrGetter<Omit<FormFieldOwnPr
190
190
  dir?: string | undefined | undefined;
191
191
  draggable?: (boolean | "true" | "false") | undefined;
192
192
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
193
- enterKeyHint?: "done" | "search" | "enter" | "go" | "next" | "previous" | "send" | undefined;
193
+ enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
194
194
  hidden?: "" | "until-found" | "hidden" | (boolean | "true" | "false") | undefined;
195
195
  inert?: (boolean | "true" | "false") | undefined;
196
196
  placeholder?: string | undefined | undefined;
@@ -29,6 +29,7 @@ var v = /*@__PURE__*/ l({
29
29
  type: Boolean,
30
30
  default: !1
31
31
  },
32
+ matchWidth: { type: Boolean },
32
33
  offset: { default: 4 },
33
34
  onShowChange: {},
34
35
  persistent: {
@@ -24,7 +24,7 @@ export declare function useMenu(props: MenuOwnProps, libDefaults: MenuLibDefault
24
24
  merged: import('vue').ComputedRef<MenuMerged>;
25
25
  menuId: string;
26
26
  mounted: Ref<boolean, boolean>;
27
- rootBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, Omit<Omit<MenuProps, "offset" | "classes" | "customProps" | "rounded" | "shadow" | "closeOnEscape" | "disableScrollLock" | "keepMounted" | "persistent" | "placement" | "teleportTo" | "closeOnClickAway" | "disableAutoFocus" | "strategy">, "anchorEl" | "onShowChange">>>;
27
+ rootBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, Omit<Omit<MenuProps, "offset" | "classes" | "customProps" | "rounded" | "shadow" | "closeOnEscape" | "disableScrollLock" | "keepMounted" | "persistent" | "placement" | "teleportTo" | "closeOnClickAway" | "disableAutoFocus" | "matchWidth" | "strategy">, "anchorEl" | "onShowChange">>>;
28
28
  isPortaled: import('vue').ComputedRef<boolean>;
29
29
  triggerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<{
30
30
  tabindex: number;
@@ -13,6 +13,7 @@ var le = [
13
13
  "rounded",
14
14
  "strategy",
15
15
  "placement",
16
+ "matchWidth",
16
17
  "persistent",
17
18
  "teleportTo",
18
19
  "customProps",
@@ -100,6 +101,7 @@ function v(v, ue, y = {}) {
100
101
  offset: L.value.offset,
101
102
  strategy: L.value.strategy,
102
103
  placement: L.value.placement,
104
+ matchWidth: L.value.matchWidth === !0,
103
105
  onReferenceHidden: () => {
104
106
  !M || !U.value || !P.value || q();
105
107
  }
@@ -146,7 +148,7 @@ function v(v, ue, y = {}) {
146
148
  j?.(), j = null, A?.(), A = null, O?.(), O = null, D?.release(), D = null, E = null, C.value = "", N.value = m, Y();
147
149
  }
148
150
  let xe = r(() => e(z.value?.root, pe.value, u({
149
- "relative inline-block text-left": !0,
151
+ "relative inline-flex": !0,
150
152
  [c(B.value, "root") ?? ""]: !0
151
153
  }))), Se = r(() => e(z.value?.trigger, {}, {
152
154
  tabindex: 0,
@@ -157,7 +159,7 @@ function v(v, ue, y = {}) {
157
159
  onClickCapture: he,
158
160
  "aria-controls": P.value ? x : void 0,
159
161
  class: u({
160
- "inline-block w-fit max-w-full cursor-pointer outline-hidden": !0,
162
+ "inline-flex w-fit max-w-full cursor-pointer outline-hidden": !0,
161
163
  [c(B.value, "trigger") ?? ""]: !0
162
164
  })
163
165
  })), Ce = r(() => e(z.value?.content, {}, {
@@ -167,7 +169,9 @@ function v(v, ue, y = {}) {
167
169
  style: { zIndex: N.value },
168
170
  "aria-hidden": V.value ? !0 : void 0,
169
171
  class: u({
170
- "bg-white text-dark-900 dark:bg-dark-800 dark:text-dark-100 ring-1 ring-black/5 dark:ring-white/10 outline-hidden overflow-hidden min-w-32 w-max max-w-[calc(100vw-16px)]": !0,
172
+ "bg-white text-dark-900 dark:bg-dark-800 dark:text-dark-100 ring-1 ring-black/5 dark:ring-white/10 outline-hidden overflow-hidden max-w-[calc(100vw-16px)]": !0,
173
+ "min-w-0 w-full": L.value.matchWidth === !0,
174
+ "min-w-32 w-max": L.value.matchWidth !== !0,
171
175
  "invisible pointer-events-none": V.value,
172
176
  [de.value ?? ""]: !0,
173
177
  [fe.value ?? ""]: !0,
@@ -112,6 +112,12 @@ export interface MenuOwnProps {
112
112
  * @default false
113
113
  */
114
114
  keepMounted?: boolean;
115
+ /**
116
+ * When true, the panel width matches the trigger / anchor.
117
+ *
118
+ * @default false
119
+ */
120
+ matchWidth?: boolean;
115
121
  /**
116
122
  * Gap between the trigger and the menu panel (px).
117
123
  *
@@ -178,7 +178,7 @@ export declare function useNumberField(props: NumberFieldOwnProps, model: Ref<nu
178
178
  dir?: string | undefined | undefined;
179
179
  draggable?: (boolean | "true" | "false") | undefined;
180
180
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
181
- enterKeyHint?: "done" | "search" | "enter" | "go" | "next" | "previous" | "send" | undefined;
181
+ enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
182
182
  hidden?: "" | "until-found" | "hidden" | (boolean | "true" | "false") | undefined;
183
183
  inert?: (boolean | "true" | "false") | undefined;
184
184
  placeholder?: string | undefined | undefined;
@@ -176,7 +176,7 @@ export declare function usePasswordField(props: PasswordFieldOwnProps, options?:
176
176
  dir?: string | undefined | undefined;
177
177
  draggable?: (boolean | "true" | "false") | undefined;
178
178
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
179
- enterKeyHint?: "done" | "search" | "enter" | "go" | "next" | "previous" | "send" | undefined;
179
+ enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
180
180
  hidden?: "" | "until-found" | "hidden" | (boolean | "true" | "false") | undefined;
181
181
  inert?: (boolean | "true" | "false") | undefined;
182
182
  placeholder?: string | undefined | undefined;