@nxgt/material 3.18.0 → 3.19.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 (60) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +2 -2
  3. package/dist/{async-slice-gqif7FX9.js → async-slice-nTRgm_ct.js} +2 -2
  4. package/dist/{button-Ck1Bif-Q.js → button-rdIhY2BT.js} +1 -1
  5. package/dist/charts.js +3 -3
  6. package/dist/{chip-B9pZFWbi.js → chip-CEau88ZV.js} +1 -1
  7. package/dist/{code-editor-M4DcaX-P.js → code-editor-DHB5ytUz.js} +4 -4
  8. package/dist/code-editor.js +4 -4
  9. package/dist/{code-language-items-Bnm_WDVg.js → code-language-items-Dww9amx_.js} +2 -2
  10. package/dist/{components-nq1rUKCK.js → components-CjC1GISf.js} +13234 -13140
  11. package/dist/components.js +15 -15
  12. package/dist/{dialog-jYcWDh9G.js → dialog-B2GXKBp3.js} +1 -1
  13. package/dist/dnd.js +1 -1
  14. package/dist/{dropdown-menu-BEZhNnhr.js → dropdown-menu-mTDyFwbQ.js} +1 -1
  15. package/dist/editor.js +7 -7
  16. package/dist/{empty-state-BBUsR0_X.js → empty-state-CJh9f2pc.js} +1 -1
  17. package/dist/hooks.js +2 -2
  18. package/dist/{i18n-provider-3TsMIGn1.js → i18n-provider-BpZOKh7U.js} +1 -1
  19. package/dist/i18n.js +5 -5
  20. package/dist/{icon-badge-92uhu2o6.js → icon-badge-CiWXvKCs.js} +1 -1
  21. package/dist/lib/components/ui/collections/data-table/partials/data-table-page-control.d.ts +3 -1
  22. package/dist/lib/components/ui/collections/data-table/server-pagination.d.ts +5 -0
  23. package/dist/lib/components/ui/collections/list-empty/empty-icon-style.d.ts +11 -0
  24. package/dist/lib/components/ui/collections/list-empty/list-empty-page.d.ts +9 -0
  25. package/dist/lib/components/ui/collections/list-empty/list-empty.d.ts +29 -6
  26. package/dist/lib/components/ui/collections/server-table/partials/server-table-band-classes.d.ts +9 -0
  27. package/dist/lib/components/ui/collections/server-table/partials/server-table-band.d.ts +5 -1
  28. package/dist/lib/components/ui/collections/server-table/partials/server-table-empty-page.d.ts +10 -0
  29. package/dist/lib/components/ui/collections/server-table/partials/server-table-passed-through.d.ts +2 -0
  30. package/dist/lib/components/ui/collections/server-table/server-table.d.ts +1 -1
  31. package/dist/lib/components/ui/collections/server-table/types.d.ts +43 -8
  32. package/dist/lib/components/ui/feedback/empty-state/empty-state.d.ts +2 -0
  33. package/dist/lib/i18n/resources/en/en.d.ts +2 -0
  34. package/dist/lib/i18n/resources/en/material.json.d.ts +2 -0
  35. package/dist/lib/i18n/resources/fr/fr.d.ts +2 -0
  36. package/dist/lib/i18n/resources/fr/material.json.d.ts +2 -0
  37. package/dist/lib/i18n/resources/resources.d.ts +4 -0
  38. package/dist/lib/i18n/translator.d.ts +1 -1
  39. package/dist/lib.js +1 -1
  40. package/dist/main.js +21 -21
  41. package/dist/map.js +4 -4
  42. package/dist/material.css +1 -1
  43. package/dist/pdf-reader.js +1 -1
  44. package/dist/print.js +2 -2
  45. package/dist/{public-BLw13izR.js → public-DWuBn4t_.js} +6 -6
  46. package/dist/{rich-code-block-DPe5USBG.js → rich-code-block-CLkufAhI.js} +4 -4
  47. package/dist/{sortable-provider-CtAb1Q02.js → sortable-provider-BofwO9zZ.js} +1 -1
  48. package/dist/{spinner-CcmXeIHf.js → spinner-B7HCQMFr.js} +1 -1
  49. package/dist/{stored-language-CsDEJDR7.js → stored-language-CJn_iWwG.js} +4 -0
  50. package/dist/theme-picker.js +2 -2
  51. package/dist/{theme-toggle-CWovcIQY.js → theme-toggle-mQzIR1hw.js} +1 -1
  52. package/dist/{toolbar-items-CrATPuOX.js → toolbar-items-Tn3MMu-s.js} +2 -2
  53. package/dist/{translate-material-X1daoGxE.js → translate-material-CCyVEi_f.js} +2 -2
  54. package/dist/{translator-BUVKAo4l.js → translator-1THr41fc.js} +1 -1
  55. package/dist/{use-chat-composer-UZVFm8Tw.js → use-chat-composer-BBFuKNqC.js} +12 -12
  56. package/dist/{use-heading-spy-ByraZUf9.js → use-heading-spy-DNFfHQJs.js} +1 -1
  57. package/dist/{use-material-translation-tD9XqIBm.js → use-material-translation-BFQODuQz.js} +2 -2
  58. package/docs/components/data-table-filter-and-lists.md +75 -10
  59. package/docs/roadmap.md +1 -1
  60. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @nxgt/material
2
2
 
3
+ ## 3.19.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1537](https://github.com/softistx/nxgt-material/pull/1537) [`cbb0fe3`](https://github.com/softistx/nxgt-material/commit/cbb0fe3eb7c36f04930578d8dee72c6c271daf84) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ServerTable` gets a `description` (a muted line under the `title`, or alone above the band's controls when there is no `title`, so a page whose `h1` is elsewhere keeps a heading-less band: leaving out `title` gives a band with no heading) and a richer empty page: `empty.none` and `empty.noMatch` take a `ListEmptyPage` (`{ title, description?, illustration?, action? }`) besides a title, so "nothing yet" draws a scene (a scene id of a registered set, or `true`) and a call to action while "nothing matches" keeps its "no results" scene and its way out. `empty.iconStyle` (and `ListEmpty`'s) sets the icon style of those scenes, keeping the `IllustrationDefaults` icons and scene sets above it, for an app that serves only some sprites. A title given as before behaves as before. `empty.none` and `empty.noMatch` (and `ListEmpty`'s `none` and `noMatch`) widen from `ReactNode` to `ReactNode | ListEmptyPage`: code that reads them back reads `.title` of a page, or handles the page form.
8
+
9
+ - [#1571](https://github.com/softistx/nxgt-material/pull/1571) [`2cac20d`](https://github.com/softistx/nxgt-material/commit/2cac20d8bda60b486e664903d6e60477f8d7dec9) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ServerTable` takes `bandDensity="compact"` (the room above and under the band halved, the controls unchanged), `pageControls="icon"` (the footer's Previous and Next as icon-only buttons with a tooltip, named "Previous page" / "Next page"; new keys `material.table.pagination.previous-page` and `next-page`; also `pagination.pageControls` on a manual `DataTable`) and `filterRef` (`focus()` on the Filter's first control). The Filter's focus contract falls to the first shown control (a quick filter, "Add filter", "Filters (N)") when the bar has no search, in `filterFocusElement` of `@nxgt/material-core/filter`. Additive: the defaults look as before.
10
+
11
+ - [#1536](https://github.com/softistx/nxgt-material/pull/1536) [`63466ff`](https://github.com/softistx/nxgt-material/commit/63466ffe24f3aad3565e68512e6186ebdd5b79f2) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ServerTable` takes `enableRowSelection` (`boolean` or `(row) => boolean`, as `DataTable`'s) and `rowSelectionDisabledReason`: with `bulkActions`, a locked row's checkbox is `aria-disabled` but focusable and described by the reason, "Select all" skips locked rows, and its checked and indeterminate states count only the rows that can be selected. A tap on a locked checkbox shows its reason too (in `DataTable`, whose tooltip opened on hover and focus only). Additive.
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [[`2cac20d`](https://github.com/softistx/nxgt-material/commit/2cac20d8bda60b486e664903d6e60477f8d7dec9)]:
16
+ - @nxgt/material-core@0.33.0
17
+
3
18
  ## 3.18.0
4
19
 
5
20
  ### Minor Changes
package/README.md CHANGED
@@ -627,8 +627,8 @@ Not components: what the stylesheet gives any element.
627
627
  | Preview | Component | What it does | @nxgt/material-vue |
628
628
  | --- | --- | --- | --- |
629
629
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-table-filter-lists-datatable.webp" width="120" alt="DataTable"> | [`DataTable`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/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. Or cards and tiles instead of the table (`layout`, `renderCard`, `renderTile`), and `layout={{ phone: 'tiles', wide: 'table' }}` for tiles on a phone ([cards and tiles guide](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/cards-and-tiles.md)). Long lists render only the rows in view (`virtual`). | `DataTable`, `DataTableColumnHeader`, `DataTablePagination`, `DataTableServerFooter`, `DataTableViewOptions` |
630
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-table-filter-lists-servertable.webp" width="120" alt="ServerTable"> | [`ServerTable`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#servertable), `createSorting`, `tableFilters`, `defineFilterModel`, `parseFilterQuery`, `serializeFilterQuery`, `paramsFromQuery`, `serverPagination`… | A server-mode `DataTable` driven by the URL's search params, for any router: the Filter in its top band with the page's title and actions, the sort, forward cursor paging, a selection reset on a new query, the empty page with the filters as removable chips, a page past the last (rows deleted) that says so and links back to the first, an error state with Retry for a failed fetch (`error`, `onRetry`), and one count announced. | `ServerTable`, `createSorting`, `tableFilters`, `serverPagination` |
631
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-table-filter-lists-listempty.webp" width="120" alt="ListEmpty"> | [`ListEmpty`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#listempty) | A list's empty page: nothing yet, or nothing matches with what narrows it and a way out (a button or a link); its title is an `h2` (`headingLevel`). | `ListEmpty` |
630
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-table-filter-lists-servertable.webp" width="120" alt="ServerTable"> | [`ServerTable`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#servertable), `createSorting`, `tableFilters`, `defineFilterModel`, `parseFilterQuery`, `serializeFilterQuery`, `paramsFromQuery`, `serverPagination`… | A server-mode `DataTable` driven by the URL's search params, for any router: the Filter in its top band with the page's title (optional), description and actions, the sort, forward cursor paging, a selection reset on a new query, the empty page (a scene and an action for "nothing yet", the filters as removable chips), a compact band (`bandDensity`), icon-only Previous / Next (`pageControls`), a `filterRef` to focus the Filter, a page past the last (rows deleted) that says so and links back to the first, an error state with Retry for a failed fetch (`error`, `onRetry`), and one count announced. | `ServerTable`, `createSorting`, `tableFilters`, `serverPagination` |
631
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-table-filter-lists-listempty.webp" width="120" alt="ListEmpty"> | [`ListEmpty`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#listempty) | A list's empty page: nothing yet (a title, or a scene, a line and an action), or nothing matches with what narrows it and a way out (a button or a link); its title is an `h2` (`headingLevel`). | `ListEmpty` |
632
632
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-table-filter-lists-datagrid.webp" width="120" alt="DataGrid"> | [`DataGrid`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#datagrid) | An editable grid over `DataTable`'s columns: spreadsheet keys, a selected range, editors for text, numbers (with codes such as "abs"), options, dates and checkboxes, or your own; paste from Excel or Sheets, a fill handle that continues series, resizable, hideable and reorderable columns, undo, totals, and saving per cell, per row or in a batch with versions and conflicts ([guide](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/data-grid.md)). Long grids render only what is in view; on a phone it is a list of rows that open a panel. | — (later) |
633
633
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-table-filter-lists-daygroupedlist.webp" width="120" alt="DayGroupedList"> | [`DayGroupedList`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#daygroupedlist), `groupByDay` | A list split by day — Today, Yesterday, This week, Earlier — under headings that stick while their items scroll. | — (later) |
634
634
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-table-filter-lists-filter.webp" width="120" alt="Filter"> | [`Filter`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#filter), `FilterProvider`, `FilterContent`, `FilterChips`, `FilterPresets`, `FilterSheetTrigger` · `FilterFormField` | Schema-driven filters with chips, presets, validation, and URL or storage persistence, and a query-driven `variant="bar"` / `"facets"` (quick filters, locked conditions, a phone sheet, a URL codec for a loader); the filter bar's "Filters (N)" (`FilterSheetTrigger`) can be placed inside a `ServerTable` (its actions). | `Filter`, `FilterProvider`, `FilterContent`, `FilterChips`, `FilterPresets`, `FilterSheetTrigger`, `FilterFormField` |
@@ -1,5 +1,5 @@
1
- import { i as e, r as t, t as n } from "./stored-language-CsDEJDR7.js";
2
- import { r } from "./translator-BUVKAo4l.js";
1
+ import { i as e, r as t, t as n } from "./stored-language-CJn_iWwG.js";
2
+ import { r } from "./translator-1THr41fc.js";
3
3
  import { t as i } from "./_baseIsEqual-C6ksIHya.js";
4
4
  import { useMemo as a } from "react";
5
5
  import { asyncThunkCreator as o, buildCreateSlice as s } from "@reduxjs/toolkit";
@@ -2,7 +2,7 @@ import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { n as t, t as n } from "./dist-DVRQkaTK.js";
3
3
  import { o as r, t as i } from "./tooltip-CkttDIab.js";
4
4
  import { t as a } from "./is-production-GLw59WU8.js";
5
- import { t as o } from "./spinner-CcmXeIHf.js";
5
+ import { t as o } from "./spinner-B7HCQMFr.js";
6
6
  import { a as s, i as c, r as l, t as u } from "./button-tones-BwuVvAmd.js";
7
7
  import { t as d } from "./button-group-context-CaP0X5p_.js";
8
8
  import { t as f } from "./has-text-content-Ds2dkHX_.js";
package/dist/charts.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { t as e } from "./ui.utils-CAnKTCw5.js";
2
2
  import { t } from "./utils-BLfntITJ.js";
3
- import { t as n } from "./use-material-translation-tD9XqIBm.js";
4
- import { t as r } from "./button-Ck1Bif-Q.js";
3
+ import { t as n } from "./use-material-translation-BFQODuQz.js";
4
+ import { t as r } from "./button-rdIhY2BT.js";
5
5
  import { t as i } from "./use-ssr-media-query-C6M5m8sf.js";
6
6
  import { i as a, n as o, r as s, t as c } from "./util-4heV2LPI.js";
7
7
  import { t as l } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
8
8
  import { t as u } from "./warn-once-C_e47JM8.js";
9
- import { t as d } from "./chip-B9pZFWbi.js";
9
+ import { t as d } from "./chip-CEau88ZV.js";
10
10
  import { c as f, d as p, f as m, i as h, o as g, p as _, s as v, t as y } from "./line-path-C5pZGC49.js";
11
11
  import { t as b } from "./live-status-BGPaN8r8.js";
12
12
  import { t as x } from "./linear-G97mfnKF.js";
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { t } from "./tooltip-CkttDIab.js";
3
- import { t as n } from "./use-material-translation-tD9XqIBm.js";
3
+ import { t as n } from "./use-material-translation-BFQODuQz.js";
4
4
  import { a as r } from "./button-tones-BwuVvAmd.js";
5
5
  import { t as i } from "./react-node-text-Crkpfpco.js";
6
6
  import { Check as a, X as o } from "lucide-react";
@@ -1,12 +1,12 @@
1
1
  import { r as e } from "./rolldown-runtime-BFFgcFxR.js";
2
2
  import { t } from "./utils-BLfntITJ.js";
3
3
  import { a as n } from "./dist-lmHmz_bu.js";
4
- import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-BEZhNnhr.js";
4
+ import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-mTDyFwbQ.js";
5
5
  import { a as c, i as l, n as u } from "./field-blur-context-Cft9s7Hg.js";
6
- import { a as d, d as f, r as p, t as m, u as h } from "./toolbar-items-CrATPuOX.js";
6
+ import { a as d, d as f, r as p, t as m, u as h } from "./toolbar-items-Tn3MMu-s.js";
7
7
  import { t as g } from "./is-production-GLw59WU8.js";
8
- import { t as _ } from "./use-material-translation-tD9XqIBm.js";
9
- import { i as v, n as y, o as b, t as x } from "./code-language-items-Bnm_WDVg.js";
8
+ import { t as _ } from "./use-material-translation-BFQODuQz.js";
9
+ import { i as v, n as y, o as b, t as x } from "./code-language-items-Dww9amx_.js";
10
10
  import { t as S } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
11
11
  import { n as C, t as w } from "./escape-owner-C4W_sOAU.js";
12
12
  import { t as T } from "./skeleton-DSdtr2qc.js";
@@ -1,14 +1,14 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { a as t } from "./dist-lmHmz_bu.js";
3
- import { d as n, r, t as i, u as a } from "./toolbar-items-CrATPuOX.js";
4
- import { t as o } from "./use-material-translation-tD9XqIBm.js";
5
- import { i as s, n as c, o as l } from "./code-language-items-Bnm_WDVg.js";
3
+ import { d as n, r, t as i, u as a } from "./toolbar-items-Tn3MMu-s.js";
4
+ import { t as o } from "./use-material-translation-BFQODuQz.js";
5
+ import { i as s, n as c, o as l } from "./code-language-items-Dww9amx_.js";
6
6
  import { r as u, t as d } from "./field-blur-CJHzVSh9.js";
7
7
  import { t as f } from "./skeleton-DSdtr2qc.js";
8
8
  import { t as p } from "./live-status-BGPaN8r8.js";
9
9
  import { t as m } from "./use-mobile-BDro060N.js";
10
10
  import { t as h } from "./react-node-text-Crkpfpco.js";
11
- import { a as g, c as _, d as v, f as y, i as b, l as x, m as S, o as C, p as w, r as T, s as E, t as D, u as O } from "./code-editor-M4DcaX-P.js";
11
+ import { a as g, c as _, d as v, f as y, i as b, l as x, m as S, o as C, p as w, r as T, s as E, t as D, u as O } from "./code-editor-DHB5ytUz.js";
12
12
  import { ChevronDown as k, ChevronUp as A, Columns2 as j } from "lucide-react";
13
13
  import { useEffect as M, useRef as N, useState as P } from "react";
14
14
  import { Fragment as F, jsx as I, jsxs as L } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import { d as e, f as t } from "./dropdown-menu-BEZhNnhr.js";
2
- import { t as n } from "./use-material-translation-tD9XqIBm.js";
1
+ import { d as e, f as t } from "./dropdown-menu-mTDyFwbQ.js";
2
+ import { t as n } from "./use-material-translation-BFQODuQz.js";
3
3
  import { t as r } from "./live-status-BGPaN8r8.js";
4
4
  import { useEffect as i, useRef as a, useState as o } from "react";
5
5
  import { jsx as s } from "react/jsx-runtime";