@nxgt/material-vue 0.38.0 → 0.40.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 (94) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +1 -0
  3. package/dist/{Button-5UyKA-x_.js → Button-BAIJ8YvT.js} +1 -1
  4. package/dist/{DropdownMenuTrigger-BsuyNVzV.js → DropdownMenuTrigger-C7uYPf_9.js} +36 -36
  5. package/dist/{HoverCardTrigger-CmCDiTn8.js → HoverCardTrigger-CKtL8teP.js} +122 -120
  6. package/dist/{camera-BWzF8sOW.js → camera-2UuZVfGS.js} +4 -4
  7. package/dist/components/base-content.css +64 -4
  8. package/dist/components/theme-tokens.css +7 -2
  9. package/dist/{components-B_s5oxUp.js → components-CCrK1Sbt.js} +13631 -13383
  10. package/dist/components.js +8 -8
  11. package/dist/composables.js +3 -3
  12. package/dist/dnd.js +1 -1
  13. package/dist/{form-scope-UzoU38db.js → form-scope-BLjSnqUf.js} +1 -1
  14. package/dist/{i18n-provider-BEvjls8b.js → i18n-provider-BpNC9SxV.js} +1 -1
  15. package/dist/i18n.js +4 -4
  16. package/dist/{icon-button-DhqJE6Ej.js → icon-button-5bl9odKW.js} +1 -1
  17. package/dist/in-dialog-Blhwwbyb.js +31 -0
  18. package/dist/lib/components/ui/collections/data-table/data-table-density.d.ts +15 -0
  19. package/dist/lib/components/ui/collections/data-table/data-table.stories.columns.d.ts +49 -0
  20. package/dist/lib/components/ui/collections/data-table/data-table.stories.template.d.ts +1 -0
  21. package/dist/lib/components/ui/collections/data-table/index.d.ts +1 -1
  22. package/dist/lib/components/ui/collections/data-table/types.d.ts +7 -0
  23. package/dist/lib/components/ui/collections/facet-group/facet-group-classes.d.ts +18 -0
  24. package/dist/lib/components/ui/collections/facet-group/facet-group.vue.d.ts +47 -0
  25. package/dist/lib/components/ui/collections/facet-group/index.d.ts +2 -0
  26. package/dist/lib/components/ui/collections/index.d.ts +1 -0
  27. package/dist/lib/components/ui/fields/contacts/consts.d.ts +1 -1
  28. package/dist/lib/components/ui/layout/sidebar/sidebar-menu-item.vue.d.ts +4 -3
  29. package/dist/lib/components/ui/menu-item-loading.d.ts +26 -0
  30. package/dist/lib/components/ui/overlays/context-menu/ContextMenuItem.vue.d.ts +4 -2
  31. package/dist/lib/components/ui/overlays/dialog/in-dialog.d.ts +12 -0
  32. package/dist/lib/components/ui/overlays/dropdown-menu/DropdownMenuItem.vue.d.ts +9 -3
  33. package/dist/lib/components/ui/overlays/menubar/MenubarItem.vue.d.ts +4 -2
  34. package/dist/lib/composables/use-hidden-input-name.d.ts +12 -0
  35. package/dist/lib/i18n/resources/en/en.d.ts +7 -0
  36. package/dist/lib/i18n/resources/en/material.json.d.ts +8 -1
  37. package/dist/lib/i18n/resources/fr/fr.d.ts +7 -0
  38. package/dist/lib/i18n/resources/fr/material.json.d.ts +8 -1
  39. package/dist/lib/i18n/resources/resources.d.ts +14 -0
  40. package/dist/lib/i18n/translator.d.ts +1 -1
  41. package/dist/lib/nuxt/component-names.d.ts +1 -1
  42. package/dist/lib.js +3 -3
  43. package/dist/main.js +17 -17
  44. package/dist/map.js +4 -4
  45. package/dist/material-vue.css +1 -1
  46. package/dist/{number.utils-Bpo9tUaJ.js → number.utils-C1eB3GDr.js} +427 -427
  47. package/dist/{pdf-outline-sidebar-BsePJlTi.js → pdf-outline-sidebar-BUvWHjiE.js} +2 -2
  48. package/dist/{pdf-page-Ct313mNF.js → pdf-page-B57B0uES.js} +1 -1
  49. package/dist/{pdf-page-list-JrRo2BeU.js → pdf-page-list-BHU7pW0b.js} +2 -2
  50. package/dist/{pdf-reader-tABBZMbZ.js → pdf-reader-CwTYGXq8.js} +8 -8
  51. package/dist/{pdf-sidebar-Caw9rzU-.js → pdf-sidebar-CtMy8Kw_.js} +3 -3
  52. package/dist/{pdf-thumbnail-sidebar-ZybLeUG7.js → pdf-thumbnail-sidebar-DS0iT3qo.js} +3 -3
  53. package/dist/{pdf-toolbar-BM8Sz_JN.js → pdf-toolbar-DL_vCyXG.js} +5 -5
  54. package/dist/pdf.js +2 -2
  55. package/dist/{print-format.utils-CQFIVeUA.js → print-format.utils-k5W0GBRF.js} +3 -3
  56. package/dist/{sortable-provider-CKkWYijj.js → sortable-provider-cYkCa6tm.js} +2 -2
  57. package/dist/{stored-language-CvOHC8AD.js → stored-language-DEyPmUzl.js} +16 -2
  58. package/dist/{stx-player-CsVKbwFk.js → stx-player-C_lPkXc6.js} +13 -13
  59. package/dist/{translator-k1rKIgC7.js → translator-B62GlCBp.js} +1 -1
  60. package/dist/{use-heading-spy-D-ipoQwl.js → use-heading-spy-T94lNeNA.js} +21 -21
  61. package/dist/{use-material-translation-1FdRx9I7.js → use-material-translation-DxU51--g.js} +3 -3
  62. package/docs/components/data-table-filter-and-lists.md +45 -1
  63. package/docs/components/feedback-and-status.md +7 -6
  64. package/docs/components/form-fields.md +1 -1
  65. package/docs/components/navigation-and-layout.md +6 -5
  66. package/docs/components/overlays-and-menus.md +3 -0
  67. package/docs/guides/csp.md +10 -0
  68. package/docs/guides/forms.md +55 -4
  69. package/docs/guides/i18n.md +3 -2
  70. package/docs/guides/ssr.md +8 -0
  71. package/docs/guides/theming.md +29 -6
  72. package/docs/previews/buttons-actions-button.webp +0 -0
  73. package/docs/previews/data-display-avatar.webp +0 -0
  74. package/docs/previews/data-display-badge.webp +0 -0
  75. package/docs/previews/data-display-chip.webp +0 -0
  76. package/docs/previews/data-display-statusindicator.webp +0 -0
  77. package/docs/previews/data-display-timeline.webp +0 -0
  78. package/docs/previews/data-table-filter-lists-facetgroup.webp +0 -0
  79. package/docs/previews/feedback-status-alert.webp +0 -0
  80. package/docs/previews/feedback-status-banner.webp +0 -0
  81. package/docs/previews/feedback-status-circularprogress.webp +0 -0
  82. package/docs/previews/feedback-status-emptystate.webp +0 -0
  83. package/docs/previews/feedback-status-progress.webp +0 -0
  84. package/docs/previews/feedback-status-spinner.webp +0 -0
  85. package/docs/previews/feedback-status-toast.webp +0 -0
  86. package/docs/previews/form-fields-passwordfield.webp +0 -0
  87. package/docs/previews/form-fields-ratingfield.webp +0 -0
  88. package/docs/roadmap.md +5 -0
  89. package/docs/troubleshooting.md +32 -5
  90. package/lib/components/base-content.css +64 -4
  91. package/lib/components/theme-tokens.css +7 -2
  92. package/lib/nuxt/component-names.ts +1 -0
  93. package/package.json +2 -2
  94. package/dist/use-inert-others-CtGqZKR8.js +0 -22
package/CHANGELOG.md CHANGED
@@ -1,5 +1,69 @@
1
1
  # @nxgt/material-vue
2
2
 
3
+ ## 0.40.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#600](https://github.com/softistx/nxgt-material/pull/600) [`dc87227`](https://github.com/softistx/nxgt-material/commit/dc8722706540ffb87af8e6da003ef86e48f5279c) Thanks [@SteveGT96](https://github.com/SteveGT96)! - New `FacetGroup`, a collapsible facet for a filter panel: a header button (a disclosure with `aria-expanded` and `aria-controls`, inside a heading) showing the `title`, a count Badge of the `activeCount` (hidden at 0) and a chevron that turns over unless the user prefers reduced motion, over the values, typically a `CheckboxGroup` with option counts. It is open by default (`defaultOpen`), controlled with `open` / `onOpenChange` (React) or `v-model:open` (Vue). With active values the toggle is named "Level, 2 selected" (`material.facet-group.name`, an ICU plural; "Level, 2 sélectionnés" in French); `onClear` (React) / `@clear` (Vue) shows a "Clear" button named "Clear Level" (`material.facet-group.clear` and `clear-label`), a sibling of the toggle that hands the focus to the toggle as it disappears. `density` is `'comfortable'` (40px header) or `'compact'` (28px), as DataTable's, with every target at least 24px; `headingLevel` sets the heading (default 3). Exported from `/components` with the `FacetGroupProps` and `FacetGroupDensity` types. The facets panel built from it comes later.
8
+
9
+ Nothing to change in an existing app.
10
+
11
+ - [#603](https://github.com/softistx/nxgt-material/pull/603) [`79a3e81`](https://github.com/softistx/nxgt-material/commit/79a3e8157d066d39136c2aa1b06361a4d3a818c3) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `DropdownMenuItem`, `ContextMenuItem` and `MenubarItem` take `loading`: a busy item (a sign-out in flight) stays focusable and in the arrow-key order, is `aria-busy` and `aria-disabled`, shows a spinner in place of its leading icon, and ignores a selection (`onSelect` / `@select` does not fire and the menu stays open). It is not `disabled`, which would take the item out of the focus.
12
+
13
+ - [#602](https://github.com/softistx/nxgt-material/pull/602) [`202ff81`](https://github.com/softistx/nxgt-material/commit/202ff8116abbcc9fe231f64d4c7483c14550ecc6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Fix the contrast of a DataTable on a Card and the warning tone, so apps can drop their axe `color-contrast` exclusions for the DataTable header and its selected rows ([#597](https://github.com/softistx/nxgt-material/issues/597), [#598](https://github.com/softistx/nxgt-material/issues/598)).
14
+
15
+ - **Selected rows** are a light primary tint (15 %) with `foreground` text, a bar on the inline-start edge of the first cell (a `before:` pseudo-element: it follows right-to-left and keeps the cell's own shadow) and the checkbox. Cell text and links read at 15.9:1 in light; in dark 17.5:1 on a page, 17.1:1 in a DataTable on a Card and 15.4:1 for a bare TableRow on a Card. A `text-muted-foreground` text is drawn at 70 % foreground (7.0:1 in light, 8.15:1 in dark for a bare row on a Card). The bar is 5.9:1 in light and 8.2:1 or more in dark against the row, and the checked checkbox (lightened in the dark theme, `Checkbox` in both packages) is 3:1 or more. The tint is 1.2:1 from its neighbour in light and 1.06 to 1.11:1 in dark: the bar and the checkbox are what mark the row. Vue's selected rows get the same look (they were `muted`).
16
+ - **Header labels** already read `foreground` (14.4:1 or more); a new "On a card" story keeps them measured. `TableCaption` (React) is `text-muted-foreground`, as in Vue, instead of near-white. The focus outline of a linked row and of its link is `foreground` (it was `ring`, 2.6:1).
17
+ - **`--warning`** is amber (`oklch(0.52 0.13 62)` light, `oklch(0.7 0.15 70)` dark) instead of a red-orange next to `--error`, so a warning `Alert`, `Banner`, `Badge`, `Button` or toast no longer reads as an error. As text, dark is 7.3:1 on `--background` and 6.5:1 on `--card`; light is 5.5:1 under its foreground. Alert text stays at 5:1 or more, icons at 3:1 or more. `--warning-foreground` is unchanged.
18
+
19
+ Migration:
20
+
21
+ - Cells that put `text-primary-foreground` on a selected row, or relied on `Typography`, `HelperText` or `Checkbox` switching colour inside one: search `text-primary-foreground` in your row and cell renderers and use the default text colour. The switch is gone.
22
+ - Apps that keep the shipped `--warning`: their `bg-warning` and `text-warning` surfaces and visual baselines change hue to amber, so re-check custom colour pairs. An app that sets its own `--warning` is unaffected.
23
+ - Drop the contrast exclusions for the DataTable header and `tr[data-state="selected"] td`.
24
+
25
+ ### Patch Changes
26
+
27
+ - [#603](https://github.com/softistx/nxgt-material/pull/603) [`d41d407`](https://github.com/softistx/nxgt-material/commit/d41d40700a137d8a37e55f70668e8d88c6a5019e) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `Banner`: with an `action`, the action drops below the title and description on a phone (under `sm`), in line with the text, instead of squeezing them to one word per line; from `sm` up it stays beside the text. `icon={false}` shows no icon, and the action lines up with the text either way.
28
+
29
+ - [#601](https://github.com/softistx/nxgt-material/pull/601) [`0c016bc`](https://github.com/softistx/nxgt-material/commit/0c016bc46e72317910906b367d0a45ea5b7d798e) Thanks [@SteveGT96](https://github.com/SteveGT96)! - DateField, DateRangeField and the event calendar's date picker: the calendar popover is capped at the room the viewport leaves it and scrolls inside, so its month navigation stays reachable ([#599](https://github.com/softistx/nxgt-material/issues/599)). A field low in a Dialog opens its calendar above the field; a six-week month made the popover taller than the room above and its top (the caption and the previous and next month buttons) left the viewport, so the mouse could no longer change month. No API change.
30
+
31
+ - [#591](https://github.com/softistx/nxgt-material/pull/591) [`5b6470e`](https://github.com/softistx/nxgt-material/commit/5b6470e1044b631538a0edad5451b5674aa963fc) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `Checkbox`, `Switch`, `RadioGroup` and `Select` no longer render their hidden form input on the server. Radix (React) and Reka (Vue) rendered it there with a hard-coded inline `style`, which a strict `style-src-attr` blocked: a CSP report fired and the native box showed until hydration. The input is now created after mount, so it is still there for a form to submit. In `@nxgt/material-vue` the same happened whenever the control has a `name`.
32
+
33
+ A native form post before hydration no longer carries these four controls' values. The indicator of a checked `Checkbox`, `SelectValue` and the `RadioGroup` root still carry an inline style (`pointer-events:none`, `outline:none`), so the recommended policy keeps `style-src-attr 'unsafe-inline'` (softistx/nxgt-material#596).
34
+
35
+ - [#592](https://github.com/softistx/nxgt-material/pull/592) [`b4d55f6`](https://github.com/softistx/nxgt-material/commit/b4d55f6a70b27b752416b45c5ef9d7fa36fd7e37) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `CodeEditor` and `CodeDiff` cancel Monaco's load when they unmount and catch its rejection, so a failed or cancelled load shows a message instead of an unhandled rejection.
36
+
37
+ - [#607](https://github.com/softistx/nxgt-material/pull/607) [`3b671a5`](https://github.com/softistx/nxgt-material/commit/3b671a5b8d0109fa645d0de52bc716104f7f8831) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Two fixes seen on a phone and on the collapsed sidebar (softistx/nxgt-material#605).
38
+
39
+ - **`SidebarMenuItem` no tooltip beside a visible label.** The collapsed rail showed each label under its icon and also opened a tooltip repeating it, above the entry, over the entry above it (the selected pill). An entry that shows its label, collapsed or expanded, now has no tooltip; its accessible name is the label. A `tooltip` you pass is still shown, now to the right of the entry (`side="right"`) so it never covers a neighbour, and an icon-only entry (no label, an `aria-label`) shows its `aria-label` there. Keyboard focus shows it as before. `Tooltip` (React) takes a `side` prop. In `@nxgt/material-vue`, `SidebarMenuItem` now binds its attributes (`aria-label`, `onClick`...) to the link or button itself.
40
+ - **`Toaster` on a phone starts below the app bar.** Under 600px with no `position`, toasts sat at the very top and covered the app shell's sticky bar (menu button, title, account control), which could not be reached while a toast showed. They now start 80px down (`mobileOffset` `{ top: 80 }`, from `@nxgt/material-core/touch-hover`). Desktop is unchanged, and a `position` or a `mobileOffset` you pass is kept as is.
41
+
42
+ Migration: an app that relied on the toast at the very top of a phone, or on the collapsed rail's label tooltip, sets `<Toaster mobileOffset={{ top: 16 }} />` (Vue: `:mobile-offset="{ top: 16 }"`) or passes `tooltip` on the entry.
43
+ - Updated dependencies [[`3b671a5`](https://github.com/softistx/nxgt-material/commit/3b671a5b8d0109fa645d0de52bc716104f7f8831)]:
44
+ - @nxgt/material-core@0.11.1
45
+
46
+ ## 0.39.0
47
+
48
+ ### Minor Changes
49
+
50
+ - [#588](https://github.com/softistx/nxgt-material/pull/588) [`f8ef212`](https://github.com/softistx/nxgt-material/commit/f8ef2120be53d5a60a976ff47355d1eb487672b1) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `DataTable` takes a `density` prop, `'comfortable'` (default, the look it always had) or `'compact'`, which tightens the cell padding above and below, the row and header heights, the sort and expand buttons (the expand button keeps 28px, above the 24px target minimum) and the gap between rows, the selection column included. The table carries it as `data-density`, styled with classes, so a strict CSP is unaffected; a `DataTable` nested in an expanded row keeps its own density. The toolbar band, the empty state and the print variant keep their size. The `DataTableDensity` type is exported.
51
+
52
+ Also in this release:
53
+
54
+ - `@nxgt/material`: `TableHead` now sets `text-foreground`, as `@nxgt/material-vue`'s does. It affects every React `Table` header: the header text is the foreground colour, no longer the muted inherited one (3.97:1 contrast on the header band, now above 4.5:1).
55
+ - Both: the `expand` column's header is no longer empty. It holds a visually hidden "Expand" (`material.table.labels.expand`, "Déplier" in French), which fixes axe's `empty-table-header`. An app that overrides the `material.table.labels` bundle can add the key.
56
+
57
+ Nothing to change in an existing app.
58
+
59
+ ### Patch Changes
60
+
61
+ - [#579](https://github.com/softistx/nxgt-material/pull/579) [`69562df`](https://github.com/softistx/nxgt-material/commit/69562dff2d874d60f066d45dd6dc7df418112041) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Autocomplete in a dialog: the open list no longer covers the dialog's own controls ([#577](https://github.com/softistx/nxgt-material/issues/577)). Inside a `DialogContent`, `DialogScrollContent`, `AlertDialogContent` or `SheetContent`, the list opens under the field's helper text, in the layer's flow, and pushes what follows (the footer, the Save button) down instead of floating over it. It never flips up over the title, and its options scroll past 15rem. The layer grows while the list is open (a dialog stays capped at the viewport and scrolls) and shrinks back at once on a pick, so the next field does not move under a click aimed at it. A closed field is as tall in a dialog as outside one. A `PopoverContent`, `HoverCardContent` or menu content opened from a dialog keeps a floating list, as on the page. A `DrawerContent` on the page is not covered yet: its list still floats ([#582](https://github.com/softistx/nxgt-material/issues/582)). Outside these layers nothing changes. No API change.
62
+
63
+ - [#586](https://github.com/softistx/nxgt-material/pull/586) [`a3d9c79`](https://github.com/softistx/nxgt-material/commit/a3d9c79310c09e14d25b67db5c5c73afa4f875b4) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `.form-grid-layout` no longer caps its height (`max-h-[calc(100lvh-…)]`) nor scrolls `[data-slot="form-fields"]` in a box of its own: a long form grows with the page, and the page (or the `DialogContent` / `SheetContent` around it) is the one scroll. `[data-slot="form-actions"]` is sticky at the bottom of that scroll on a blurred `bg-background/90`, so Cancel and Save stay in reach. In a `DialogContent` or an `AlertDialogContent` the stuck actions fill the dialog's padding below them, and `ConfirmationDialog`'s footer sticks the same way when it holds a form (any dialog holding a `.form-grid-layout` without `form-actions` does). A form that is a direct child of `DrawerContent` scrolls itself, since a drawer does not. The fields' controls and links carry `scroll-margin-bottom` (6rem plus a dialog's bottom padding, 7.5rem above `ConfirmationDialog`'s footer), so a field tabbed to is scrolled clear of the actions in any scroll box (WCAG 2.4.11); `--form-actions-clearance` raises it for taller actions, and `--form-actions-fill` names a dialog's bottom padding when it is not the default.
64
+
65
+ Migration: search for `form-grid-layout` in a box with a fixed height that relied on the fields scrolling inside it; give that form (or box) the height and the scroll yourself (`max-h-[60vh] overflow-y-auto`), and the actions stick to its bottom. To keep the actions in place, add `static` to `[data-slot="form-actions"]`. An app's own fixed bottom bar or floating button now sits under the sticky actions (`z-index: 10`): give it a z-index above 10. Storybook: `Guides/Forms/Form grid layout`, `Guides/Forms/Form grid layout, overlays` and `Guides/Forms/Form grid layout, dialogs`.
66
+
3
67
  ## 0.38.0
4
68
 
5
69
  ### Minor Changes
package/README.md CHANGED
@@ -499,6 +499,7 @@ React-only for now: `StepperIndicator` ([roadmap](https://cdn.jsdelivr.net/npm/@
499
499
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-datatable.webp" width="120" alt="DataTable"> | [`DataTable`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#datatable), `DataTableColumnHeader`, `DataTablePagination`, `DataTableServerFooter`, `DataTableViewOptions` | TanStack Table v9 with sorting, filtering, selection, expandable rows, pagination or load-more, column visibility, skeleton rows while loading and your own empty state — or one server page at a time, with controlled sorting and selection, cursor Previous / Next links and row links. On a phone it keeps its header row and scrolls sideways in a keyboard-reachable region; the page does not. | `DataTable`, `DataTableColumnHeader`, `DataTablePagination`, `DataTableServerFooter`, `DataTableViewOptions` |
500
500
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-filter.webp" width="120" alt="Filter"> | [`Filter`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#filter) · `FilterFormField`, `FilterProvider`, `FilterTrigger`, `FilterChips`, `FilterContent`, `FilterGroups`, `FilterGroup`, `FilterField`, `FilterActions`, `FilterPresets` | Schema-driven filters with chips, presets, validation, and URL or storage persistence. | `Filter`, `FilterProvider`, `FilterContent`, `FilterChips`, `FilterPresets`, `FilterFormField` |
501
501
  | — | [`FilterInline`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#filterinline-filterpopover-filterdialog-filtersheet-filterdrawer), `FilterDialog`, `FilterSheet`, `FilterDrawer`, `FilterPopover` | The filter panel shown inline, or in a popover, dialog, sheet or drawer. | `FilterInline`, `FilterPopover`, `FilterDialog`, `FilterSheet`, `FilterDrawer` |
502
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-facetgroup.webp" width="120" alt="FacetGroup"> | [`FacetGroup`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#facetgroup) | A collapsible facet: a header button with the title, a count Badge of the active values, Clear and a chevron, over the values (typically a `CheckboxGroup` with counts). | `FacetGroup` |
502
503
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-pagination.webp" width="120" alt="Pagination"> | [`Pagination`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#pagination), `PaginationContent`, `PaginationItem`, `PaginationFirst`, `PaginationLast`, `PaginationLink`, `PaginationBar`, `paginationItems` + parts | Pagination primitives on Reka UI's `Pagination`, with first / last buttons and ellipses. `PaginationBar` adds a sibling window with ellipses. | `Pagination` (parts), `PaginationFirst`, `PaginationLast`, `PaginationLink`, `PaginationBar`, `paginationItems` |
503
504
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-tree.webp" width="120" alt="Tree"> | [`Tree`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#tree), `TreeItem` | Expandable tree with none, single or multiple selection and keyboard navigation. | `Tree`, `TreeItem`, `useTree` |
504
505
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-drag-and-drop.webp" width="120" alt="Drag and drop"> | [`DndProvider`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#drag-and-drop), `Draggable`, `Droppable`, `DraggableDroppable`, `SortableProvider`, `Sortable`, `DragHandle`, `DndOverlay` | Drag-and-drop primitives; see [dnd](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/guides/helpers.md#nxgtmaterial-vuednd). | `DndProvider`, `Draggable`, `Droppable`, `Sortable`, `DragHandle` |
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./utils-CykWQ0iJ.js";
2
- import { t } from "./use-material-translation-1FdRx9I7.js";
2
+ import { t } from "./use-material-translation-DxU51--g.js";
3
3
  import { Comment as n, Fragment as r, Text as i, computed as a, createBlock as o, createElementBlock as s, createElementVNode as c, createTextVNode as l, createVNode as u, defineComponent as d, guardReactiveProps as f, h as p, inject as ee, isVNode as m, mergeProps as h, normalizeClass as g, normalizeProps as _, onBeforeUnmount as v, openBlock as y, provide as b, ref as x, renderSlot as S, shallowRef as C, unref as w, useAttrs as te, useSlots as ne, watch as T, withCtx as E } from "vue";
4
4
  import { Primitive as D, TooltipArrow as O, TooltipContent as k, TooltipPortal as A, TooltipProvider as re, TooltipRoot as j, TooltipTrigger as M, useForwardPropsEmits as N } from "reka-ui";
5
5
  import { cva as P } from "class-variance-authority";
@@ -1,12 +1,12 @@
1
1
  import { t as e } from "./utils-CykWQ0iJ.js";
2
- import { t } from "./use-inert-others-CtGqZKR8.js";
3
- import { createBlock as n, createElementVNode as r, createVNode as i, defineComponent as a, guardReactiveProps as o, mergeProps as s, normalizeProps as c, openBlock as l, renderSlot as u, unref as d, withCtx as f } from "vue";
4
- import { Circle as p } from "@lucide/vue";
5
- import { DropdownMenuContent as m, DropdownMenuItemIndicator as h, DropdownMenuPortal as g, DropdownMenuRadioGroup as _, DropdownMenuRadioItem as v, DropdownMenuRoot as y, DropdownMenuSeparator as b, DropdownMenuTrigger as x, injectDropdownMenuRootContext as S, useForwardProps as C, useForwardPropsEmits as w } from "reka-ui";
6
- import { reactiveOmit as T } from "@vueuse/core";
2
+ import { r as t, t as n } from "./in-dialog-Blhwwbyb.js";
3
+ import { createBlock as r, createElementVNode as i, createVNode as a, defineComponent as o, guardReactiveProps as s, mergeProps as c, normalizeProps as l, openBlock as u, renderSlot as d, unref as f, withCtx as p } from "vue";
4
+ import { Circle as m } from "@lucide/vue";
5
+ import { DropdownMenuContent as h, DropdownMenuItemIndicator as g, DropdownMenuPortal as _, DropdownMenuRadioGroup as v, DropdownMenuRadioItem as y, DropdownMenuRoot as b, DropdownMenuSeparator as x, DropdownMenuTrigger as S, injectDropdownMenuRootContext as C, useForwardProps as w, useForwardPropsEmits as T } from "reka-ui";
6
+ import { reactiveOmit as E } from "@vueuse/core";
7
7
  //#endregion
8
8
  //#region lib/components/ui/overlays/dropdown-menu/DropdownMenu.vue
9
- var E = /* @__PURE__ */ a({
9
+ var D = /* @__PURE__ */ o({
10
10
  __name: "DropdownMenu",
11
11
  props: {
12
12
  defaultOpen: { type: Boolean },
@@ -19,13 +19,13 @@ var E = /* @__PURE__ */ a({
19
19
  },
20
20
  emits: ["update:open"],
21
21
  setup(e, { emit: t }) {
22
- let r = e, i = w(r, t);
23
- return (e, t) => (l(), n(d(y), s({ "data-slot": "dropdown-menu" }, d(i), { modal: r.modal }), {
24
- default: f((t) => [u(e.$slots, "default", c(o(t)))]),
22
+ let n = e, i = T(n, t);
23
+ return (e, t) => (u(), r(f(b), c({ "data-slot": "dropdown-menu" }, f(i), { modal: n.modal }), {
24
+ default: p((t) => [d(e.$slots, "default", l(s(t)))]),
25
25
  _: 3
26
26
  }, 16, ["modal"]));
27
27
  }
28
- }), D = /* @__PURE__ */ a({
28
+ }), O = /* @__PURE__ */ o({
29
29
  inheritAttrs: !1,
30
30
  __name: "DropdownMenuContent",
31
31
  props: {
@@ -68,23 +68,23 @@ var E = /* @__PURE__ */ a({
68
68
  "interactOutside",
69
69
  "closeAutoFocus"
70
70
  ],
71
- setup(r, { emit: a }) {
72
- let o = r, c = a, p = w(T(o, "class", "to"), c), h = S();
73
- return t("content", () => h.modal.value && h.open.value), (t, a) => (l(), n(d(g), { to: r.to }, {
74
- default: f(() => [i(d(m), s({
71
+ setup(i, { emit: o }) {
72
+ let s = i, l = o, m = T(E(s, "class", "to"), l), g = C();
73
+ return t("content", () => g.modal.value && g.open.value), n(!1), (t, n) => (u(), r(f(_), { to: i.to }, {
74
+ default: p(() => [a(f(h), c({
75
75
  ref: "content",
76
76
  "data-slot": "dropdown-menu-content"
77
77
  }, {
78
78
  ...t.$attrs,
79
- ...d(p)
80
- }, { class: d(e)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--reka-dropdown-menu-content-available-height) min-w-[8rem] origin-(--reka-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", o.class) }), {
81
- default: f(() => [u(t.$slots, "default")]),
79
+ ...f(m)
80
+ }, { class: f(e)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--reka-dropdown-menu-content-available-height) min-w-[8rem] origin-(--reka-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", s.class) }), {
81
+ default: p(() => [d(t.$slots, "default")]),
82
82
  _: 3
83
83
  }, 16, ["class"])]),
84
84
  _: 3
85
85
  }, 8, ["to"]));
86
86
  }
87
- }), O = /* @__PURE__ */ a({
87
+ }), k = /* @__PURE__ */ o({
88
88
  __name: "DropdownMenuRadioGroup",
89
89
  props: {
90
90
  modelValue: {},
@@ -93,13 +93,13 @@ var E = /* @__PURE__ */ a({
93
93
  },
94
94
  emits: ["update:modelValue"],
95
95
  setup(e, { emit: t }) {
96
- let r = w(e, t);
97
- return (e, t) => (l(), n(d(_), s({ "data-slot": "dropdown-menu-radio-group" }, d(r)), {
98
- default: f(() => [u(e.$slots, "default")]),
96
+ let n = T(e, t);
97
+ return (e, t) => (u(), r(f(v), c({ "data-slot": "dropdown-menu-radio-group" }, f(n)), {
98
+ default: p(() => [d(e.$slots, "default")]),
99
99
  _: 3
100
100
  }, 16));
101
101
  }
102
- }), k = { class: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center" }, A = /* @__PURE__ */ a({
102
+ }), A = { class: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center" }, j = /* @__PURE__ */ o({
103
103
  __name: "DropdownMenuRadioItem",
104
104
  props: {
105
105
  value: {},
@@ -116,17 +116,17 @@ var E = /* @__PURE__ */ a({
116
116
  ] }
117
117
  },
118
118
  emits: ["select"],
119
- setup(t, { emit: a }) {
120
- let o = t, c = a, m = w(T(o, "class"), c);
121
- return (t, a) => (l(), n(d(v), s({ "data-slot": "dropdown-menu-radio-item" }, d(m), { class: d(e)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", o.class) }), {
122
- default: f(() => [r("span", k, [i(d(h), null, {
123
- default: f(() => [u(t.$slots, "indicator-icon", {}, () => [i(d(p), { class: "size-2 fill-current" })])]),
119
+ setup(t, { emit: n }) {
120
+ let o = t, s = n, l = T(E(o, "class"), s);
121
+ return (t, n) => (u(), r(f(y), c({ "data-slot": "dropdown-menu-radio-item" }, f(l), { class: f(e)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", o.class) }), {
122
+ default: p(() => [i("span", A, [a(f(g), null, {
123
+ default: p(() => [d(t.$slots, "indicator-icon", {}, () => [a(f(m), { class: "size-2 fill-current" })])]),
124
124
  _: 3
125
- })]), u(t.$slots, "default")]),
125
+ })]), d(t.$slots, "default")]),
126
126
  _: 3
127
127
  }, 16, ["class"]));
128
128
  }
129
- }), j = /* @__PURE__ */ a({
129
+ }), M = /* @__PURE__ */ o({
130
130
  __name: "DropdownMenuSeparator",
131
131
  props: {
132
132
  asChild: { type: Boolean },
@@ -140,10 +140,10 @@ var E = /* @__PURE__ */ a({
140
140
  ] }
141
141
  },
142
142
  setup(t) {
143
- let r = t, i = T(r, "class");
144
- return (t, a) => (l(), n(d(b), s({ "data-slot": "dropdown-menu-separator" }, d(i), { class: d(e)("bg-border -mx-1 my-1 h-px", r.class) }), null, 16, ["class"]));
143
+ let n = t, i = E(n, "class");
144
+ return (t, a) => (u(), r(f(x), c({ "data-slot": "dropdown-menu-separator" }, f(i), { class: f(e)("bg-border -mx-1 my-1 h-px", n.class) }), null, 16, ["class"]));
145
145
  }
146
- }), M = /* @__PURE__ */ a({
146
+ }), N = /* @__PURE__ */ o({
147
147
  __name: "DropdownMenuTrigger",
148
148
  props: {
149
149
  disabled: { type: Boolean },
@@ -151,12 +151,12 @@ var E = /* @__PURE__ */ a({
151
151
  as: {}
152
152
  },
153
153
  setup(e) {
154
- let t = C(e);
155
- return (e, r) => (l(), n(d(x), s({ "data-slot": "dropdown-menu-trigger" }, d(t)), {
156
- default: f(() => [u(e.$slots, "default")]),
154
+ let t = w(e);
155
+ return (e, n) => (u(), r(f(S), c({ "data-slot": "dropdown-menu-trigger" }, f(t)), {
156
+ default: p(() => [d(e.$slots, "default")]),
157
157
  _: 3
158
158
  }, 16));
159
159
  }
160
160
  });
161
161
  //#endregion
162
- export { D as a, O as i, j as n, E as o, A as r, M as t };
162
+ export { O as a, k as i, M as n, D as o, j as r, N as t };