@nxgt/material 3.88.1 → 3.90.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/README.md +8 -5
- package/dist/{alert-dialog-CEGs7LMN.js → alert-dialog-BFk4ye-3.js} +1 -1
- package/dist/{async-slice-CR0M95Jq.js → async-slice-gGyfyUw2.js} +1 -1
- package/dist/{button-DuTNpo28.js → button-C5OEq9bi.js} +1 -1
- package/dist/{calculator-DsGk_fCw.js → calculator-Dg_L6d3R.js} +16 -16
- package/dist/calculator-field.js +6 -6
- package/dist/{calculator-segment-DMFptsDf.js → calculator-segment-CvAaDqKf.js} +1 -1
- package/dist/calculator.js +1 -1
- package/dist/charts.js +3 -3
- package/dist/{chip-C-RAjar5.js → chip-DOxFA4BI.js} +2 -2
- package/dist/{code-editor-DApeIOZ3.js → code-editor-tiAjhXW-.js} +4 -4
- package/dist/code-editor.js +4 -4
- package/dist/{code-language-items-CGtYfc1l.js → code-language-items-CcdzQvLT.js} +2 -2
- package/dist/{components-DiEY0nrG.js → components-HQy9UW9D.js} +19870 -19548
- package/dist/components.js +38 -37
- package/dist/{conversion-variant-DfQiOwYC.js → conversion-variant-4gCdFWV-.js} +3 -3
- package/dist/currency-field-CIqe7Wg4.js +289 -0
- package/dist/{dialog-Bul68q8u.js → dialog-d6Kdf5wc.js} +3 -3
- package/dist/dnd.js +1 -1
- package/dist/{dropdown-menu-xUUE5X6T.js → dropdown-menu-DO5kUvof.js} +1 -1
- package/dist/editor.js +139 -139
- package/dist/{empty-state-D7ofGDU_.js → empty-state-DQnICuun.js} +1 -1
- package/dist/{financial-variant-CYgRZzKT.js → financial-variant-D80C1hVD.js} +14 -14
- package/dist/{hooks-CpvvZCs7.js → hooks-C-yLDF39.js} +2 -2
- package/dist/hooks.js +2 -2
- package/dist/{hover-card-CZLFQwZv.js → hover-card-DU3TAME4.js} +1 -1
- package/dist/i18n.js +3 -3
- package/dist/{icon-badge-0Xo9q7Ey.js → icon-badge-BGczZ4Hc.js} +1 -1
- package/dist/{icon-button-DE1EcO2-.js → icon-button-D0xjBCst.js} +1 -1
- package/dist/input-group-CSlXMFxu.js +70 -0
- package/dist/lib/components/ui/actions/back-link/back-link.d.ts +10 -2
- package/dist/lib/components/ui/collections/data-grid/grid-cell-tone.d.ts +12 -0
- package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-access.d.ts +4 -3
- package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-flags.d.ts +12 -0
- package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-value.d.ts +4 -1
- package/dist/lib/components/ui/collections/data-table/partials/data-table-cell-content.d.ts +11 -0
- package/dist/lib/components/ui/collections/data-table/table-meta.d.ts +50 -2
- package/dist/lib/components/ui/collections/filter/use-filter-field-config.d.ts +1 -0
- package/dist/lib/components/ui/collections/list-pane/list-pane-item.d.ts +3 -1
- package/dist/lib/components/ui/collections/list-pane/partials/list-pane-item-content.d.ts +2 -1
- package/dist/lib/components/ui/dates/age-field/age-field.d.ts +8 -0
- package/dist/lib/components/ui/dates/age-field/age-form-field.d.ts +8 -0
- package/dist/lib/components/ui/dates/age-field/age-reading.d.ts +11 -0
- package/dist/lib/components/ui/dates/age-field/age-value.d.ts +9 -0
- package/dist/lib/components/ui/dates/age-field/index.d.ts +4 -0
- package/dist/lib/components/ui/dates/age-field/types.d.ts +40 -0
- package/dist/lib/components/ui/dates/index.d.ts +1 -0
- package/dist/lib/components/ui/display/badge/badge.d.ts +4 -1
- package/dist/lib/components/ui/display/entity-header/entity-header.d.ts +8 -1
- package/dist/lib/components/ui/display/index.d.ts +2 -0
- package/dist/lib/components/ui/display/person-cell/index.d.ts +1 -0
- package/dist/lib/components/ui/display/person-cell/person-cell.d.ts +23 -0
- package/dist/lib/components/ui/display/tone-value/index.d.ts +2 -0
- package/dist/lib/components/ui/display/tone-value/tone-value.d.ts +23 -0
- package/dist/lib/components/ui/feedback/error-state/partials/error-state-actions.d.ts +6 -1
- package/dist/lib/components/ui/feedback/page-load-failed/page-load-failed.d.ts +8 -1
- package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
- package/dist/lib/components/ui/fields/number-field/number-control.d.ts +2 -2
- package/dist/lib/components/ui/fields/switch/partials/switch-row.d.ts +4 -2
- package/dist/lib/components/ui/fields/switch/switch.d.ts +7 -1
- package/dist/lib/components/ui/layout/app-shell/activity-content-aside-parts.d.ts +68 -0
- package/dist/lib/components/ui/layout/app-shell/activity-content-aside-toggle.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-shell/activity-content-aside.d.ts +5 -2
- package/dist/lib/components/ui/layout/app-shell/activity-content-aside.types.d.ts +13 -0
- package/dist/lib/components/ui/layout/app-shell/activity-content.d.ts +3 -2
- package/dist/lib/components/ui/layout/app-shell/app-shell.utils.d.ts +3 -1
- package/dist/lib/components/ui/layout/app-shell/app-sidebar-entries.d.ts +5 -2
- package/dist/lib/components/ui/layout/app-shell/app-sidebar-icon-item.d.ts +2 -1
- package/dist/lib/components/ui/layout/app-shell/app-sidebar.d.ts +3 -1
- package/dist/lib/components/ui/layout/app-shell/types.d.ts +14 -5
- package/dist/lib/components/ui/primitives/tabs/partials/tabs-list.d.ts +8 -2
- package/dist/lib/components/ui/primitives/tabs/tabs-nav.d.ts +5 -1
- package/dist/lib/components/ui/primitives/tabs/tabs-overflow-classes.d.ts +3 -0
- package/dist/lib/components/ui/selection/sortable-list/index.d.ts +1 -1
- package/dist/lib/components/ui/selection/sortable-list/sortable-list-context.d.ts +3 -1
- package/dist/lib/components/ui/selection/sortable-list/sortable-list.d.ts +6 -2
- package/dist/lib/components/ui/selection/sortable-list/types.d.ts +1 -0
- package/dist/lib/components/ui/selection/sortable-list/use-sortable-list-labels.d.ts +3 -0
- package/dist/lib/i18n/resources/en/en.d.ts +11 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +12 -1
- package/dist/lib/i18n/resources/fr/fr.d.ts +11 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +12 -1
- package/dist/lib/i18n/resources/resources.d.ts +22 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib.js +1 -1
- package/dist/main.js +54 -53
- package/dist/map.js +7 -7
- package/dist/material.css +1 -1
- package/dist/pdf-reader.js +1 -1
- package/dist/{percent-field-BFwxazf1.js → percent-field-DyJ2yOH4.js} +1 -1
- package/dist/{picker-surface-DkfTv_ft.js → picker-surface-CnlOKQ3D.js} +4 -4
- package/dist/{popover-BM6xApJd.js → popover-BevReSHi.js} +1 -1
- package/dist/{pos-types-CpTpT4vE.js → pos-types-BrZBX0Zg.js} +1 -1
- package/dist/{pos-variant-Bs5BUB1L.js → pos-variant-G12HCSfQ.js} +4 -4
- package/dist/print.js +1 -1
- package/dist/{programmer-variant-B1eI1fd0.js → programmer-variant-WWLwTGRF.js} +2 -2
- package/dist/{public-CzLMnSsS.js → public-C1a6wQ6o.js} +19 -19
- package/dist/{rich-code-block-CdVtxD75.js → rich-code-block-Dh9J-VZ8.js} +5 -5
- package/dist/{scientific-variant-rfvJKxB4.js → scientific-variant-BvutlF8a.js} +2 -2
- package/dist/{sortable-provider-BopzsciJ.js → sortable-provider-BrA5tfJX.js} +2 -2
- package/dist/{spinner-DcW21pN1.js → spinner-JnLLiLIO.js} +1 -1
- package/dist/{tabs-CdoBFtWx.js → tabs-dXCZGShv.js} +63 -61
- package/dist/theme-picker.js +2 -2
- package/dist/{theme-toggle-Ch3GkDDU.js → theme-toggle-BmcK6mXV.js} +1 -1
- package/dist/{toolbar-items-CZ1lJXZZ.js → toolbar-items-B-kMYsDT.js} +4 -4
- package/dist/{translate-material-BrYBBZ66.js → translate-material-BmpcP1p1.js} +1 -1
- package/dist/{translator-DoVsjUff.js → translator-CfoXTrZd.js} +24 -2
- package/dist/{use-chat-composer-C9DG7O1Z.js → use-chat-composer-DFD_eF-r.js} +4197 -4246
- package/dist/{use-heading-spy-kyOSe9rb.js → use-heading-spy-BcNK1qvq.js} +4 -4
- package/dist/{use-material-translation-BdrItuwY.js → use-material-translation-DoymV6IP.js} +1 -1
- package/dist/{use-return-focus-Cqzvj9R0.js → use-return-focus-CLEnhfka.js} +1 -1
- package/docs/components/README.md +2 -1
- package/docs/components/buttons-and-actions.md +10 -1
- package/docs/components/data-display.md +80 -4
- package/docs/components/data-table-filter-and-lists.md +56 -3
- package/docs/components/date-and-time.md +53 -1
- package/docs/components/feedback-and-status.md +11 -2
- package/docs/components/form-fields.md +11 -2
- package/docs/components/navigation-and-layout.md +2 -2
- package/docs/components/primitives.md +7 -0
- package/docs/components/selection-and-choice.md +4 -2
- package/docs/guides/app-shell.md +46 -11
- package/docs/guides/data-grid.md +12 -0
- package/docs/guides/forms.md +1 -0
- package/docs/guides/i18n.md +1 -1
- package/docs/previews/data-display-personcell.webp +0 -0
- package/docs/previews/data-display-tonevalue.webp +0 -0
- package/docs/previews/date-time-agefield.webp +0 -0
- package/docs/roadmap.md +23 -0
- package/package.json +2 -2
- package/dist/currency-field-cwC7cqUE.js +0 -286
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# @nxgt/material
|
|
2
2
|
|
|
3
|
+
## 3.90.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#2608](https://github.com/softistx/nxgt-material/pull/2608) [`6b85084`](https://github.com/softistx/nxgt-material/commit/6b8508406e37fa2e9c63c3c554cce809f867c2a8) Thanks [@SteveGT96](https://github.com/SteveGT96)! - ActivityContent: add `asidePhone` (`'stack'` | `'toggle'`), `asidePreviewLabel` and `asideMainLabel`. With `asidePhone="toggle"` the side panel (a form's live preview, say) is not stacked below the content on a phone: a two-button switch above the content ("Content" / "Preview"; French: "Contenu" / "Aperçu") swaps the two, the content staying mounted; from `asideFrom` nothing changes. Known limit: a save bar inside the content is hidden while the preview shows (a footer slot is tracked in [#2609](https://github.com/softistx/nxgt-material/issues/2609)). New i18n keys `material.app-shell.aside-main`, `aside-preview` and `aside-toggle`. [#2604](https://github.com/softistx/nxgt-material/issues/2604)
|
|
8
|
+
|
|
9
|
+
- [#2643](https://github.com/softistx/nxgt-material/pull/2643) [`b6219b1`](https://github.com/softistx/nxgt-material/commit/b6219b14eb16eab5306f13c8da7c0fdff5bdf721) Thanks [@SteveGT96](https://github.com/SteveGT96)! - BackLink: add `flush`. It drops the start padding so the arrow lines up with the page's start edge and the content under it, in LTR and RTL, instead of a hand-written negative margin. [#2584](https://github.com/softistx/nxgt-material/issues/2584)
|
|
10
|
+
|
|
11
|
+
- [#2605](https://github.com/softistx/nxgt-material/pull/2605) [`2ee855f`](https://github.com/softistx/nxgt-material/commit/2ee855f842cf6283669a301f331a534cf87aea18) Thanks [@SteveGT96](https://github.com/SteveGT96)! - EntityHeader: add a `surface` prop (`'card'` | `'none'`). `'card'` is the default and keeps today's look; `'none'` draws the header flat, with no background, padding or shadow, for a header that sits directly on a page band so surfaces do not nest. [#2603](https://github.com/softistx/nxgt-material/issues/2603)
|
|
12
|
+
|
|
13
|
+
- [#2614](https://github.com/softistx/nxgt-material/pull/2614) [`2630fa2`](https://github.com/softistx/nxgt-material/commit/2630fa27cd09aeb78ae6b96853091915acdd8062) Thanks [@SteveGT96](https://github.com/SteveGT96)! - PageLoadFailed: add an optional retry action (`onRetry`, `retrying`, `retryLabel`, like ErrorState). It is the filled primary action with the "Back to the start" link beside it; without `onRetry` the component renders as before. [#2611](https://github.com/softistx/nxgt-material/issues/2611)
|
|
14
|
+
|
|
15
|
+
- [#2602](https://github.com/softistx/nxgt-material/pull/2602) [`db6f8c3`](https://github.com/softistx/nxgt-material/commit/db6f8c3fd1eca0d242a35c358d1ada411f1bead7) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Switch, SwitchField, SwitchFormField: add `variant` (`'box'` | `'plain'`). `box` is the default and keeps today's bordered, tinted row; `plain` draws a labelled switch with the label beside it and no border or tint. [#2579](https://github.com/softistx/nxgt-material/issues/2579)
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [#2613](https://github.com/softistx/nxgt-material/pull/2613) [`a07b331`](https://github.com/softistx/nxgt-material/commit/a07b3319492ed89e40569d405b73e0b177f29fa6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Show the label of a `display: 'icon'` menu item in the phone's menu sheet. The entry stays an icon-only button in the collapsed rail and the expanded sidebar, but the sheet, where a lone icon reads poorly, now draws the icon and its label.
|
|
20
|
+
|
|
21
|
+
## 3.89.0
|
|
22
|
+
|
|
23
|
+
### Minor Changes
|
|
24
|
+
|
|
25
|
+
- [#2581](https://github.com/softistx/nxgt-material/pull/2581) [`c3f6715`](https://github.com/softistx/nxgt-material/commit/c3f6715d84eb5a83ab770252f16d0afe9b763eb6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - feat(dates): add `AgeField` and `AgeFormField`, an age as a number and a unit (day, week, month, year; the allowed `units` configurable), with a value like `{ value: 2, unit: 'month' }`, `min` and `max` per unit, and the age read aloud by locale ("2 months", « 2 mois », `material.age-field.*`) ([#2574](https://github.com/softistx/nxgt-material/issues/2574)).
|
|
26
|
+
|
|
27
|
+
- [#2593](https://github.com/softistx/nxgt-material/pull/2593) [`6668fc0`](https://github.com/softistx/nxgt-material/commit/6668fc0246f34e997001787b195449e91e3866ff) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Badge: add a `size` prop (`sm` | `md`). `sm` is the default and keeps today's 20 px look; `md` is a 24 px badge with larger text and icon, for a list or table row next to body text. [#2582](https://github.com/softistx/nxgt-material/issues/2582)
|
|
28
|
+
|
|
29
|
+
- [#2587](https://github.com/softistx/nxgt-material/pull/2587) [`81249b8`](https://github.com/softistx/nxgt-material/commit/81249b88e417ad6a9efb78a65eff68332c5eddb5) Thanks [@SteveGT96](https://github.com/SteveGT96)! - feat(app-shell): `MenuItem.childrenIn: 'sidebar'` keeps an entry's `children` in the expanded sidebar and the top dropdown while the phone's menu sheet shows the entry as a plain link to its `url`, with its badge ([#2573](https://github.com/softistx/nxgt-material/issues/2573)).
|
|
30
|
+
|
|
31
|
+
- [#2598](https://github.com/softistx/nxgt-material/pull/2598) [`7ddcfb6`](https://github.com/softistx/nxgt-material/commit/7ddcfb64cc170e7f2883b8aaab1d2c533628ad75) Thanks [@SteveGT96](https://github.com/SteveGT96)! - feat(sortable-list): add `labelLines={2}` to let a row's label take two lines instead of one, and `rowActions` for a "..." menu (`RowMenu`; the item type is exported as `SortableListRowAction`) on each row beside the remove button; both pass through `SortableListFormField`, and `ListPaneItem` takes `titleLines` ([#2594](https://github.com/softistx/nxgt-material/issues/2594)).
|
|
32
|
+
|
|
33
|
+
- [#2595](https://github.com/softistx/nxgt-material/pull/2595) [`3d88273`](https://github.com/softistx/nxgt-material/commit/3d88273219c54214636d3150d2f19cd1d2eee3dd) Thanks [@SteveGT96](https://github.com/SteveGT96)! - feat(tabs): add `scrollButtons="none"` to `TabsList` and `TabsNav`, a plain horizontally scrollable row with no chevron buttons (default `"auto"`, unchanged); the edge fade stays as the overflow cue, with `data-overflow-left` / `data-overflow-right` and the selected tab still scrolled into view ([#2577](https://github.com/softistx/nxgt-material/issues/2577)).
|
|
34
|
+
|
|
35
|
+
- [#2576](https://github.com/softistx/nxgt-material/pull/2576) [`5772932`](https://github.com/softistx/nxgt-material/commit/5772932fbd704ff5d26972689f0a2079b5f8b6e6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - New `meta.cellClassName(value, row)` on a column of `DataTable`, `ServerTable` and `DataGrid`: it returns classes for a body cell (or `undefined`) from the value the cell shows, merged after `meta.className`, so a cell is styled by its data without a custom `cell` renderer. `DataTable` and `ServerTable` pass `cell.getValue()` and the row's original; `DataGrid` passes the value the cell shows now, so the class follows an edit, a save and an undo. Not available in `@nxgt/material-vue` yet ([#2569](https://github.com/softistx/nxgt-material/issues/2569)). Fixes [#1117](https://github.com/softistx/nxgt-material/issues/1117).
|
|
36
|
+
|
|
37
|
+
- [#2576](https://github.com/softistx/nxgt-material/pull/2576) [`5772932`](https://github.com/softistx/nxgt-material/commit/5772932fbd704ff5d26972689f0a2079b5f8b6e6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - New `PersonCell`, a decorative initials avatar before a name for the first column of a table of people or a card title: `<PersonCell name src? initials? tone? description? size? />`. The avatar is `aria-hidden` and neutral by default (24 px as `sm`, the default, in a table; 32 px as `md` in a card), the initials come from the name or from `initials`, the name and the optional muted description truncate with an ellipsis (`min-w-0`) while their full text stays in the DOM. Not in `@nxgt/material-vue` yet ([#2569](https://github.com/softistx/nxgt-material/issues/2569)). Fixes [#1112](https://github.com/softistx/nxgt-material/issues/1112).
|
|
38
|
+
|
|
39
|
+
- [#2576](https://github.com/softistx/nxgt-material/pull/2576) [`5772932`](https://github.com/softistx/nxgt-material/commit/5772932fbd704ff5d26972689f0a2079b5f8b6e6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - New `meta.tone(value, row)` on a column of `DataTable`, `ServerTable` and `DataGrid`: it returns a tone or `undefined` from the value a cell shows. The cell gets `data-tone` and its content the new `ToneValue` (exported): the value in the tone's text colour after an `aria-hidden` shape fixed per tone (diamond for `error`, triangle for `warning`, circle for `success`, square for another tone, none for `neutral`), so the tone holds in dark, on a selected row and in forced colours. `meta.toneLabel` adds visually hidden words after the value (off by default). The default card of the `cards` and `tiles` layouts shows it too; a custom `renderCard` imports `ToneValue`. In `DataGrid` the tone is read from the value the cell shows now, so it follows an edit, a pending save, a refused save put back and an undo, while an edited cell keeps its editor ring and a text kept as an error is not toned; on a phone the list summary and the row panel show `ToneValue` too. `toneBands` (bands on a number, from `@nxgt/material-core/cell-tone`) is re-exported from `@nxgt/material/components`. Not in `@nxgt/material-vue` yet ([#2569](https://github.com/softistx/nxgt-material/issues/2569)). Fixes [#1032](https://github.com/softistx/nxgt-material/issues/1032).
|
|
40
|
+
|
|
41
|
+
### Patch Changes
|
|
42
|
+
|
|
43
|
+
- [#2600](https://github.com/softistx/nxgt-material/pull/2600) [`2a54443`](https://github.com/softistx/nxgt-material/commit/2a544430535a8d5324e8ccbeaca800e85e27233a) Thanks [@SteveGT96](https://github.com/SteveGT96)! - fix(number-field): draw the `suffix` inside the input box as its end adornment, with or without steppers, instead of after the increase button outside the border; `PercentField`'s `%` follows ([#2578](https://github.com/softistx/nxgt-material/issues/2578)).
|
|
44
|
+
- Updated dependencies [[`5772932`](https://github.com/softistx/nxgt-material/commit/5772932fbd704ff5d26972689f0a2079b5f8b6e6)]:
|
|
45
|
+
- @nxgt/material-core@0.53.0
|
|
46
|
+
|
|
3
47
|
## 3.88.1
|
|
4
48
|
|
|
5
49
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -701,6 +701,7 @@ Not components: what the stylesheet gives any element.
|
|
|
701
701
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-daterangefield.webp" width="120" alt="DateRangeField"> | [`DateRangeField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#daterangefield) · `DateRangeFormField` | From / to range typed in segments or picked in a calendar (two months on a desktop, a bottom sheet on a phone), with presets (label and dates, the chosen one tinted with a bar) and times. A tonal box, ranges as a connected pill. | `DateRangeField`, `DateRangeFormField` |
|
|
702
702
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-timefield.webp" width="120" alt="TimeField"> | [`TimeField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#timefield), `TimeStringField`, `TimeFormField` | A time typed in segments, with a button that opens a `TimePicker` in a popover, or in a bottom sheet on a phone. A tonal box; `size="sm"` is compact, `TimeStringField` takes an `HH:mm` string. | `TimeField`, `TimeFormField`; `TimeStringField`: — (later) |
|
|
703
703
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-timepicker.webp" width="120" alt="TimePicker"> | [`TimePicker`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#timepicker) | Hours and minutes as big tiles with steppers, an AM / PM pair and quick minutes (columns with `variant="columns"`), 12- or 24-hour by language. | `TimePicker` |
|
|
704
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-agefield.webp" width="120" alt="AgeField"> | [`AgeField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#agefield) · `AgeFormField` | An age as a number and a unit (days, weeks, months, years), `{ value: 2, unit: 'month' }`, read aloud by locale: "2 months". `min` and `max` can differ per unit. | — |
|
|
704
705
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-durationfield.webp" width="120" alt="DurationField"> | [`DurationField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#durationfield) · `DurationFormField` | Hours and minutes combined into a total in minutes, typed on one line, "1 h 29 min", with one −/+ pair for the focused part (`variant="fields"` for the two number fields). | `DurationField`, `DurationFormField` |
|
|
705
706
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-halfdayrangefield.webp" width="120" alt="HalfDayRangeField"> | [`HalfDayRangeField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#halfdayrangefield) · `HalfDayRangeFormField` | A range whose two ends are each a day plus morning or afternoon, ordered on the half, for absences and closures counted to the half day. | — (later, #2555) |
|
|
706
707
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-minimonth.webp" width="120" alt="MiniMonth"> | [`MiniMonth`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#minimonth) | Compact month navigator: today ringed, a week band, event dots, a keyboard date grid. | — |
|
|
@@ -726,7 +727,7 @@ Not components: what the stylesheet gives any element.
|
|
|
726
727
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/selection-choice-transferlist.webp" width="120" alt="TransferList"> | [`TransferList`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/selection-and-choice.md#transferlist) · `TransferListFormField` | Two-pane picker with search, drag-and-drop, reordering and a `max`. | `TransferList`, `TransferListFormField` |
|
|
727
728
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/selection-choice-sortablelist.webp" width="120" alt="SortableList"> | [`SortableList`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/selection-and-choice.md#sortablelist) · `SortableListFormField` | Searchable list of strings you reorder by dragging or with the keyboard. | `SortableList`, `SortableListFormField` |
|
|
728
729
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/selection-choice-transferlist.webp" width="120" alt="TransferList"> | [`TransferList`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/selection-and-choice.md#transferlist) · `TransferListFormField` | Two-pane picker with search, counts, select-all, Shift-range checks, drag-and-drop between panes, reordering and a `max`; avatar and badge slots, a `compact` density, and panes that stack in a narrow container. | `TransferList`, `TransferListFormField` |
|
|
729
|
-
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/selection-choice-sortablelist.webp" width="120" alt="SortableList"> | [`SortableList`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/selection-and-choice.md#sortablelist) · `SortableListFormField` | Searchable list you reorder by dragging (row or grip) or with the keyboard (Space to pick up, arrows, Space to drop, Escape to cancel), each step announced; `numbered`, `removable`, locked rows, `cards` or `plain`, `compact`. | `SortableList`, `SortableListFormField` |
|
|
730
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/selection-choice-sortablelist.webp" width="120" alt="SortableList"> | [`SortableList`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/selection-and-choice.md#sortablelist) · `SortableListFormField` | Searchable list you reorder by dragging (row or grip) or with the keyboard (Space to pick up, arrows, Space to drop, Escape to cancel), each step announced; `numbered`, `removable`, two-line labels (`labelLines`), a row menu (`rowActions`), locked rows, `cards` or `plain`, `compact`. | `SortableList`, `SortableListFormField` |
|
|
730
731
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/selection-choice-treeselectfield.webp" width="120" alt="TreeSelectField"> | [`TreeSelectField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/selection-and-choice.md#treeselectfield) · `TreeSelectFormField` | A field that opens a `Tree` in a popover: pick one node, or several as chips, with an optional filter. | `TreeSelectField`, `TreeSelectFormField` |
|
|
731
732
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/selection-choice-switcher.webp" width="120" alt="Switcher"> | [`Switcher`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/selection-and-choice.md#switcher) | Switches the active workspace, establishment or class: a menu, or a searchable panel with groups and links; an expressive variant; a clipped subtitle keeps its full text; a compact icon-only trigger (`size="compact"`) for the app bar; `open`/`onOpenChange`, and a link pick closes it. | `Switcher` |
|
|
732
733
|
|
|
@@ -736,16 +737,18 @@ Not components: what the stylesheet gives any element.
|
|
|
736
737
|
| --- | --- | --- | --- |
|
|
737
738
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-avatar.webp" width="120" alt="Avatar"> | [`Avatar`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#avatar), `AvatarImage`, `AvatarFallback`, `AvatarBase` | Image with a fallback and an optional online / offline dot; `shape` clips it to an expressive shape; the initials scale with the size (40 % of the diameter); `tone` colours the fallback. | `Avatar`, `AvatarImage`, `AvatarFallback` |
|
|
738
739
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-avatargroup.webp" width="120" alt="AvatarGroup"> | [`AvatarGroup`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#avatargroup) | Overlapping avatars with a `+N` overflow. | `AvatarGroup` |
|
|
740
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-personcell.webp" width="120" alt="PersonCell"> | [`PersonCell`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#personcell) | A decorative initials avatar (24 px in a table, 32 px in a card) before a name that truncates; optional `src`, `initials`, `tone` and a muted `description`. | — |
|
|
739
741
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-seatring.webp" width="120" alt="SeatRing"> | [`SeatRing`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#seatring) | Participants as seats around a circle, or in a grid on a narrow box; avatar, name, status, badge and centre slots; optionally a listbox to pick one or several (`selectionMode`). | — |
|
|
740
742
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-secretcard.webp" width="120" alt="SecretCard"> | [`SecretCard`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#secretcard) | A card whose secret is not rendered until a deliberate tap or click reveals it (a role, a one-time code, a recovery key); hide again, optional `autoHideMs`, controlled or not, polite announcement. | — |
|
|
741
743
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-shape.webp" width="120" alt="Shape"> | [`Shape`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#shape) | Material 3 Expressive's 35 shapes and a squircle as a backdrop, an icon container or a mask for a photo, with a morph; eight tones or an app tone. | — |
|
|
742
|
-
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-badge.webp" width="120" alt="Badge"> | [`Badge`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#badge) | Status pill, 20 px: default, secondary, error, success, info, warning, `soft` (tonal, for states), outlined; an optional decorative `icon` before the words. | `Badge` |
|
|
744
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-badge.webp" width="120" alt="Badge"> | [`Badge`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#badge) | Status pill, `sm` (20 px) or `md` (24 px): default, secondary, error, success, info, warning, `soft` (tonal, for states), outlined; an optional decorative `icon` before the words. | `Badge` |
|
|
743
745
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-countbadge.webp" width="120" alt="CountBadge"> | [`CountBadge`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#countbadge) | Count in the corner of its children, capped at `99+` and hidden at 0; `animated` pops it in when it changes. | `CountBadge` |
|
|
744
746
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-highlightedtext.webp" width="120" alt="HighlightedText"> | [`HighlightedText`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#highlightedtext) | A string with the words of a search query in a themed `<mark>`, folding case, accents and ligatures; `highlightRanges` gives the offsets. | — |
|
|
745
747
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-dayseparator.webp" width="120" alt="DaySeparator"> | [`DaySeparator`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#dayseparator), `isNewDay`, `formatDayLabel` | "Today", "Yesterday", the weekday or the date between two hairlines, in the provider's language; sticky if asked. | — |
|
|
746
748
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-periodcards.webp" width="120" alt="PeriodCards"> | [`PeriodCards`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#periodcards) | Consecutive date ranges (terms, sprints) as cards: a "Current" marker with `aria-current`, a link over each card, as many 14rem columns as fit (one on a phone). | — |
|
|
747
749
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-chip.webp" width="120" alt="Chip"> | [`Chip`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#chip) | Compact pill in three looks (hairline, soft, tag) and a dashed add pill, with leading, avatar and trailing slots, a selected state and a dismiss button; a coloured soft chip reads as a status (the tone's container, its text colour on it). | `Chip` |
|
|
748
750
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-statcard.webp" width="120" alt="StatCard"> | [`StatCard`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#statcard) | KPI tile with value, hint, icon, toned delta and a loading skeleton; `tone` and `variant` (`outlined`, `tonal`, `filled`) colour it, `valueSize` enlarges the value, `size="sm"` makes a compact tile (it ignores `hint`, `delta` and `valueSize`); `href` (and `linkComponent`) makes the whole card one link with a trailing chevron; `StatCardGroup` lays compact tiles 2×2 on a phone and in a row beside, holds its width in a flex row, and `align="end"` sets them against its end edge. | `StatCard` |
|
|
751
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-tonevalue.webp" width="120" alt="ToneValue"> | [`ToneValue`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#tonevalue) | A value in its tone's text colour after a shape (diamond, triangle, circle, square), so colour is never the only signal; what `meta.tone` / `meta.toneLabel` put in a `DataTable`, `ServerTable` or `DataGrid` cell, with `toneBands` from `@nxgt/material-core/cell-tone`. | — |
|
|
749
752
|
| | [`TotalsList`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#totalslist) | On-screen `PrintTotals`: a `dl` of labelled figures, labels at the start, right-aligned tabular amounts, a ruled `last` row for the grand total, a `tone` per amount, an accessible `label`; rows share the shape of `PrintTotalRow`. | — (later, #2492) |
|
|
750
753
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-metric-cards.webp" width="120" alt="TrendCard"> | [`TrendCard`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#metric-cards), `GoalCard`, `BreakdownCard`, `RankCard`, `CompareCard`, `HeatweekCard`, `FunnelCard`, `GaugeCard`, `SparkbarCard`, `DeltaListCard`, `BandCard`, `LatencyCard`, `RatioCard`, `ThresholdCard`, `PaceCard`, `HistogramCard`, `Sparkline` | Dashboard tiles including compare, heat, funnel, gauge, spark bars, delta list, range band, latency, ratio, threshold, pace and labelled histogram. Container queries. A `tone` (named, or your app's) draws the accent in it; deltas and breaches stay semantic. | `TrendCard`, `GoalCard`, `BreakdownCard`, `RankCard`, `CompareCard`, `HeatweekCard`, `FunnelCard`, `GaugeCard`, `SparkbarCard`, `DeltaListCard`, `BandCard`, `LatencyCard`, `RatioCard`, `ThresholdCard`, `PaceCard`, `HistogramCard` |
|
|
751
754
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-card-presets.webp" width="120" alt="FeatureCard"> | [`FeatureCard`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#card-presets), `MediaCard`, `PricingCard`, `ProfileCard`, `QuoteCard`, `OverlayCard`, `SpotlightCard`, `CrewCard`, `SplitCard`, `TicketCard`, `NoticeCard`, `TimelineCard`, `MessageCard`, `EventCard`, `StackCard`, `LinkCard`, `AlbumCard`, `TagCard`, `ReceiptCard`, `ReviewCard`, `OfferCard`, `PlaceCard`, `FileCard`, `StatusCard`, `ScoreCard`, `ShortcutCard`, `ChecklistCard` | Card presets including overlay, ticket, inbox, event, stack, link, album, tags, receipt, review, offer, place, file, status, score, shortcuts and checklist. Container queries. | `FeatureCard`, `MediaCard`, `PricingCard`, `ProfileCard`, `QuoteCard`, `OverlayCard`, `SpotlightCard`, `CrewCard`, `SplitCard`, `TicketCard`, `NoticeCard`, `TimelineCard`, `MessageCard`, `EventCard`, `StackCard`, `LinkCard`, `AlbumCard`, `TagCard`, `ReceiptCard`, `ReviewCard`, `OfferCard`, `PlaceCard`, `FileCard`, `StatusCard`, `ScoreCard`, `ShortcutCard`, `ChecklistCard` |
|
|
@@ -779,13 +782,13 @@ Not components: what the stylesheet gives any element.
|
|
|
779
782
|
|
|
780
783
|
| Preview | Component | What it does | @nxgt/material-vue |
|
|
781
784
|
| --- | --- | --- | --- |
|
|
782
|
-
| <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` |
|
|
785
|
+
| <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`). A column styles its cells by value with `meta.cellClassName`, `meta.tone` and `meta.toneLabel` ([guide](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#cells-toned-by-their-value)). | `DataTable`, `DataTableColumnHeader`, `DataTablePagination`, `DataTableServerFooter`, `DataTableViewOptions` |
|
|
783
786
|
| <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`, 44px targets on a touch screen, focus kept while a page loads), actions that stay on the search's row on a phone (`bandActions`), `surface="none"` to sit in a Card with no frame of its own, a bulk bar that reserves no row until a selection, bulk actions with `appliesTo` that count and run only the selected rows they apply to (hidden at zero), an accessible `name`, a `max` rows with a notice, and `focusTrigger()` to give the focus back after a dialog, 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` |
|
|
784
787
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-table-filter-lists-rowmenu.webp" width="120" alt="RowMenu"> | [`RowMenu`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#rowmenu), `RowMenuTrigger`, `rowMenuColumn` | A row's "..." button named after its row ("Actions for Ada"; 44px on touch, 36px with a mouse from `md`), its menu aligned to the end with the destructive item last and 44px items on touch, and a column helper for `DataTable` and `ServerTable` under a hidden but named "Actions" header; focus returns to the button, also from a dialog an item opened; `useRowMenuFocus()` / `focusRowMenu(rowId)` hands it back to one row's button after an async action, a toast or a later dialog, and `rowFocusProps(rowId)` marks a plain row button the same way. | — |
|
|
785
788
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-table-filter-lists-recordactionsmenu.webp" width="120" alt="RecordActionsMenu"> | [`RecordActionsMenu`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#recordactionsmenu), `useRecordActions` | A record's archive, restore and delete menu over `RowMenu`: Archive runs at once with an Undo toast that stays until dismissed, Restore runs at once, Delete permanently (archived records only) always asks and keeps a refusal in its locked dialog; `can` hides what is not allowed (and the whole menu when nothing is), `send` does the action, `onDone` follows it, `items` / `children` add your own entries, `messages` renames the words; `archivePolicy="confirm"` asks before archiving (no Undo), `consequence` notes what an action entails, `successAction` adds a toast action, and `ActionRefusal` / `isActionRefusal` carry a refusal's details and action. | — |
|
|
786
789
|
| <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` |
|
|
787
790
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-table-filter-lists-pagefooter.webp" width="120" alt="PageFooter"> | [`PageFooter`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#pagefooter) | The page footer of a feed that is not a table (a list of cards, a news feed) under a `FilterBar`: the range ("21–40 of 134") and Previous / Next as real links built from the URL's cursor trail (`pageInfo`, `totalCount`, `params`; `totalCount` is optional: a feed with no total shows no range, only Previous / Next; `hideOnSinglePage` renders nothing when there is no previous and no next page), the same footer `ServerTable` draws, icon-only with `pageControls="icon"` (44px targets on a touch screen); an end with no page is a disabled button, `aria-disabled`. | `PageFooter` |
|
|
788
|
-
| <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) |
|
|
791
|
+
| <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. Columns take the same `meta.cellClassName`, `meta.tone` and `meta.toneLabel` as `DataTable` ([guide](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#cells-toned-by-their-value)). | — (later) |
|
|
789
792
|
| <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) |
|
|
790
793
|
| <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`, `FilterBar`, `useFilterUrlQuery` · `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; `bandDensity="compact"` as on `ServerTable`), and `FilterBar`, the same bar bound to the URL for a feed or list without a table (`useFilterUrlQuery` is its hook, also `ServerTable`'s), a field `default` shown as an uncounted hint chip (a button that opens the editor on the default), a pressed toggle or checked values with a "Default" word (`defaults` prop), a `scope` field as a leading pill kept by "Clear all", a server refusal shown on the chip (`errors`, its words in the Alert under the bar unless `errorSummary={false}`), on the search box (`searchError`) or as an Alert under the bar (`formError`) and a model with `search: false`; the filter bar's "Filters (N)" (`FilterSheetTrigger`) can be placed inside a `ServerTable` (its actions). | `Filter`, `FilterProvider`, `FilterContent`, `FilterChips`, `FilterPresets`, `FilterSheetTrigger`, `FilterFormField`; `FilterBar`, `useFilterUrlQuery`: — (later, #1569) |
|
|
791
794
|
| — | [`FilterInline`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-table-filter-and-lists.md#filterinline-filterpopover-filterdialog-filtersheet-filterdrawer), `FilterPopover`, `FilterDialog`, `FilterSheet`, `FilterDrawer` | The filter panel shown inline, or in a popover, dialog, sheet or drawer. | `FilterInline`, `FilterPopover`, `FilterDialog`, `FilterSheet`, `FilterDrawer` |
|
|
@@ -862,7 +865,7 @@ Not components: what the stylesheet gives any element.
|
|
|
862
865
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-customdialog.webp" width="120" alt="CustomDialog"> | [`CustomDialog`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#customdialog) | Ready-made dialog with trigger, icon, title, body and footer. | `CustomDialog` |
|
|
863
866
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-stepupdialog.webp" width="120" alt="StepUpDialog"> | [`StepUpDialog`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#stepupdialog) | "Confirm it's you": a dialog that asks for a one-time code, driven by props (`via`, `attemptsLeft`, `error`, `pending`, `confirming`). The title takes the focus, the field after a refusal; `DialogFooter` `stackOnPhone={false}` keeps its footer one row on a phone. | — |
|
|
864
867
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-emptystate.webp" width="120" alt="EmptyState"> | [`EmptyState`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#emptystate) | Illustration, title, description and action, by kind (empty, search, not-found, unauthorized); `compact` size, or `inline` as one row in a list. | `EmptyState` |
|
|
865
|
-
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-pageloadfailed.webp" width="120" alt="PageLoadFailed"> | [`PageLoadFailed`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#pageloadfailed) | An `EmptyState` for a page opened at a cursor that failed, with a "Back to the start" link. | not yet |
|
|
868
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-pageloadfailed.webp" width="120" alt="PageLoadFailed"> | [`PageLoadFailed`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#pageloadfailed) | An `EmptyState` for a page opened at a cursor that failed, with a "Back to the start" link and an optional Retry (`onRetry`). | not yet |
|
|
866
869
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-errorstate.webp" width="120" alt="ErrorState"> | [`ErrorState`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#errorstate) | Failure block (`role="alert"`) with illustration, outlined Retry and collapsed technical details; generic, offline and maintenance kinds. | `ErrorState` |
|
|
867
870
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-progress.webp" width="120" alt="Progress"> | [`Progress`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#progress), `CircularProgress`, `ProgressField` | Material 3 Expressive linear bar and circular ring (flat or wavy, eight tones, buffer and stop dot), and a labelled progress field. | `Progress`, `CircularProgress`, `ProgressField` |
|
|
868
871
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-scrollprogress.webp" width="120" alt="ScrollProgress"> | [`ScrollProgress`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#scrollprogress) | Hairline that tracks window or a scrollable `target` (`react-use` `useWindowScroll` / `useScroll`). `DocProgress` composes it. | `ScrollProgress` |
|
|
@@ -4,7 +4,7 @@ import { o as n } from "./dist-DVRQkaTK.js";
|
|
|
4
4
|
import { r } from "./dist-DWZXlCZR.js";
|
|
5
5
|
import { a as i } from "./dist-DHdUUM1w.js";
|
|
6
6
|
import { t as a } from "./in-dialog-D61Yeaol.js";
|
|
7
|
-
import { a as o, c as s, d as c, i as l, l as u, n as d, o as f, r as p, s as m, t as h, u as g } from "./use-return-focus-
|
|
7
|
+
import { a as o, c as s, d as c, i as l, l as u, n as d, o as f, r as p, s as m, t as h, u as g } from "./use-return-focus-CLEnhfka.js";
|
|
8
8
|
import { i as _ } from "./escape-owner-DpaP0lm1.js";
|
|
9
9
|
import * as v from "react";
|
|
10
10
|
import { Fragment as y, isValidElement as b } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as e, r as t, s as n, u as r } from "./translator-
|
|
1
|
+
import { l as e, r as t, s as n, u as r } from "./translator-CfoXTrZd.js";
|
|
2
2
|
import { t as i } from "./_baseIsEqual-C6ksIHya.js";
|
|
3
3
|
import { useMemo as a } from "react";
|
|
4
4
|
import { asyncThunkCreator as o, buildCreateSlice as s } from "@reduxjs/toolkit";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
2
|
import { n as t, t as n } from "./dist-DVRQkaTK.js";
|
|
3
|
-
import { n as r, t as i } from "./spinner-
|
|
3
|
+
import { n as r, t as i } from "./spinner-JnLLiLIO.js";
|
|
4
4
|
import { t as a } from "./dist-DkQbkF9T.js";
|
|
5
5
|
import { a as o, i as s, n as c, o as l, s as u, t as d } from "./use-click-lock-Bwg_caHO.js";
|
|
6
6
|
import { t as f } from "./is-production-GLw59WU8.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as a } from "./button-
|
|
4
|
-
import { t as o } from "./use-material-translation-
|
|
5
|
-
import { t as s } from "./icon-button-
|
|
2
|
+
import { d as t, n, r, t as i } from "./tabs-dXCZGShv.js";
|
|
3
|
+
import { t as a } from "./button-C5OEq9bi.js";
|
|
4
|
+
import { t as o } from "./use-material-translation-DoymV6IP.js";
|
|
5
|
+
import { t as s } from "./icon-button-D0xjBCst.js";
|
|
6
6
|
import { t as c } from "./copy-to-clipboard-Be5Ffvs_.js";
|
|
7
7
|
import { t as l } from "./useEvent-2fKq-6w8.js";
|
|
8
8
|
import { t as u } from "./useLatest-C2PnQEeD.js";
|
|
@@ -11,7 +11,7 @@ import { t as f } from "./skeleton-DSdtr2qc.js";
|
|
|
11
11
|
import { t as p } from "./live-status-BGPaN8r8.js";
|
|
12
12
|
import { n as m, t as h } from "./calculator-context-BugcKuVG.js";
|
|
13
13
|
import { a as g, c as _, i as v, l as y, n as b, o as ee, r as te, s as ne } from "./calculator-announce-DRd2c6Dq.js";
|
|
14
|
-
import { i as re, t as ie } from "./pos-types-
|
|
14
|
+
import { i as re, t as ie } from "./pos-types-BrZBX0Zg.js";
|
|
15
15
|
import { a as ae, r as oe } from "./key-layout-cR79xfGE.js";
|
|
16
16
|
import { n as x, r as se, t as ce } from "./programmer-word-CNCF7DJF.js";
|
|
17
17
|
import { t as le } from "./standard-layout-BuSRr3TY.js";
|
|
@@ -279,11 +279,11 @@ function Le({ helpId: e }) {
|
|
|
279
279
|
//#endregion
|
|
280
280
|
//#region lib/components/ui/widgets/calculator/variants/variant-loader.ts
|
|
281
281
|
var Re = {
|
|
282
|
-
scientific: () => import("./scientific-variant-
|
|
283
|
-
pos: () => import("./pos-variant-
|
|
284
|
-
programmer: () => import("./programmer-variant-
|
|
285
|
-
financial: () => import("./financial-variant-
|
|
286
|
-
conversion: () => import("./conversion-variant-
|
|
282
|
+
scientific: () => import("./scientific-variant-BvutlF8a.js"),
|
|
283
|
+
pos: () => import("./pos-variant-G12HCSfQ.js"),
|
|
284
|
+
programmer: () => import("./programmer-variant-WWLwTGRF.js"),
|
|
285
|
+
financial: () => import("./financial-variant-D80C1hVD.js"),
|
|
286
|
+
conversion: () => import("./conversion-variant-4gCdFWV-.js")
|
|
287
287
|
}, B = "failed", V = /* @__PURE__ */ new Map(), H = /* @__PURE__ */ new Map(), U = /* @__PURE__ */ new Set(), W = () => {
|
|
288
288
|
for (let e of U) e();
|
|
289
289
|
};
|
|
@@ -432,24 +432,24 @@ function qe(e) {
|
|
|
432
432
|
//#region lib/components/ui/widgets/calculator/partials/calculator-switcher.tsx
|
|
433
433
|
function Je({ children: e }) {
|
|
434
434
|
let { t: a } = o(), { variant: s, variants: c, setVariant: l } = m();
|
|
435
|
-
return /* @__PURE__ */ k(
|
|
435
|
+
return /* @__PURE__ */ k(i, {
|
|
436
436
|
value: s,
|
|
437
437
|
variant: "segmented",
|
|
438
438
|
className: "nxgt-calc-tabs",
|
|
439
439
|
onValueChange: (e) => l(e),
|
|
440
|
-
children: [/* @__PURE__ */ O(
|
|
440
|
+
children: [/* @__PURE__ */ O(r, {
|
|
441
441
|
"aria-label": a("material.calculator.variants.label", "Calculator type"),
|
|
442
442
|
className: "nxgt-calc-switcher",
|
|
443
443
|
children: c.map((e) => {
|
|
444
|
-
let
|
|
445
|
-
return /* @__PURE__ */ O(
|
|
444
|
+
let t = q[e];
|
|
445
|
+
return /* @__PURE__ */ O(n, {
|
|
446
446
|
value: e,
|
|
447
447
|
onPointerEnter: () => void G(e),
|
|
448
448
|
onFocus: () => void G(e),
|
|
449
|
-
children: a(
|
|
449
|
+
children: a(t.key, t.fallback)
|
|
450
450
|
}, e);
|
|
451
451
|
})
|
|
452
|
-
}), /* @__PURE__ */ O(
|
|
452
|
+
}), /* @__PURE__ */ O(t, {
|
|
453
453
|
value: s,
|
|
454
454
|
className: "nxgt-calc-panel",
|
|
455
455
|
children: e
|
package/dist/calculator-field.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
|
-
import { t } from "./button-
|
|
3
|
-
import { t as n } from "./use-material-translation-
|
|
4
|
-
import { t as r } from "./icon-button-
|
|
5
|
-
import { a as i, i as a, n as o, r as s, t as c } from "./picker-surface-
|
|
6
|
-
import { r as l, t as u } from "./currency-field-
|
|
2
|
+
import { t } from "./button-C5OEq9bi.js";
|
|
3
|
+
import { t as n } from "./use-material-translation-DoymV6IP.js";
|
|
4
|
+
import { t as r } from "./icon-button-D0xjBCst.js";
|
|
5
|
+
import { a as i, i as a, n as o, r as s, t as c } from "./picker-surface-CnlOKQ3D.js";
|
|
6
|
+
import { r as l, t as u } from "./currency-field-CIqe7Wg4.js";
|
|
7
7
|
import { r as d, t as f } from "./field-blur-DkiZOVNV.js";
|
|
8
|
-
import { t as p } from "./calculator-
|
|
8
|
+
import { t as p } from "./calculator-Dg_L6d3R.js";
|
|
9
9
|
import { useId as m, useState as h } from "react";
|
|
10
10
|
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
11
11
|
import { Calculator as y } from "lucide-react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "./use-material-translation-
|
|
1
|
+
import { t as e } from "./use-material-translation-DoymV6IP.js";
|
|
2
2
|
import { jsx as t } from "react/jsx-runtime";
|
|
3
3
|
//#region lib/components/ui/widgets/calculator/partials/calculator-segment.tsx
|
|
4
4
|
function n({ label: n, choices: r, value: i, nameKey: a, onChange: o }) {
|
package/dist/calculator.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./calculator-
|
|
1
|
+
import { n as e, t } from "./calculator-Dg_L6d3R.js";
|
|
2
2
|
export { e as CALCULATOR_VARIANTS, t as Calculator };
|
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
3
|
import { t as n } from "./warn-once-C_e47JM8.js";
|
|
4
|
-
import { t as r } from "./button-
|
|
5
|
-
import { t as i } from "./use-material-translation-
|
|
4
|
+
import { t as r } from "./button-C5OEq9bi.js";
|
|
5
|
+
import { t as i } from "./use-material-translation-DoymV6IP.js";
|
|
6
6
|
import { t as a } from "./use-ssr-media-query-C6M5m8sf.js";
|
|
7
7
|
import { i as o, n as s, r as c, t as l } from "./util-4heV2LPI.js";
|
|
8
8
|
import { t as u } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
|
|
9
|
-
import { t as d } from "./chip-
|
|
9
|
+
import { t as d } from "./chip-DOxFA4BI.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,7 +1,7 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
|
-
import { n as t } from "./spinner-
|
|
2
|
+
import { n as t } from "./spinner-JnLLiLIO.js";
|
|
3
3
|
import { s as n } from "./use-click-lock-Bwg_caHO.js";
|
|
4
|
-
import { t as r } from "./use-material-translation-
|
|
4
|
+
import { t as r } from "./use-material-translation-DoymV6IP.js";
|
|
5
5
|
import { t as i } from "./react-node-text-Crkpfpco.js";
|
|
6
6
|
import { cloneElement as a, isValidElement as o } from "react";
|
|
7
7
|
import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
@@ -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 { t as n } from "./dist-DWZXlCZR.js";
|
|
4
|
-
import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-
|
|
4
|
+
import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-DO5kUvof.js";
|
|
5
5
|
import { a as c, i as l, n as u } from "./field-blur-context-BLGgf_3z.js";
|
|
6
|
-
import { a as d, o as f, r as p, s as m, t as h } from "./toolbar-items-
|
|
6
|
+
import { a as d, o as f, r as p, s as m, t as h } from "./toolbar-items-B-kMYsDT.js";
|
|
7
7
|
import { t as g } from "./is-production-GLw59WU8.js";
|
|
8
|
-
import { t as _ } from "./use-material-translation-
|
|
9
|
-
import { i as v, n as y, o as b, t as x } from "./code-language-items-
|
|
8
|
+
import { t as _ } from "./use-material-translation-DoymV6IP.js";
|
|
9
|
+
import { i as v, n as y, o as b, t as x } from "./code-language-items-CcdzQvLT.js";
|
|
10
10
|
import { t as S } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
|
|
11
11
|
import { n as C, t as w } from "./escape-owner-DpaP0lm1.js";
|
|
12
12
|
import { t as T } from "./skeleton-DSdtr2qc.js";
|
package/dist/code-editor.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
2
|
import { t } from "./dist-DWZXlCZR.js";
|
|
3
|
-
import { o as n, r, s as i, t as a } from "./toolbar-items-
|
|
4
|
-
import { t as o } from "./use-material-translation-
|
|
5
|
-
import { i as s, n as c, o as l } from "./code-language-items-
|
|
3
|
+
import { o as n, r, s as i, t as a } from "./toolbar-items-B-kMYsDT.js";
|
|
4
|
+
import { t as o } from "./use-material-translation-DoymV6IP.js";
|
|
5
|
+
import { i as s, n as c, o as l } from "./code-language-items-CcdzQvLT.js";
|
|
6
6
|
import { t as u } from "./skeleton-DSdtr2qc.js";
|
|
7
7
|
import { t as d } from "./live-status-BGPaN8r8.js";
|
|
8
8
|
import { t as f } from "./use-mobile-BDro060N.js";
|
|
9
9
|
import { t as p } from "./react-node-text-Crkpfpco.js";
|
|
10
|
-
import { a as m, c as h, d as g, f as _, i as v, l as y, m as b, o as x, p as S, r as C, s as w, t as T, u as E } from "./code-editor-
|
|
10
|
+
import { a as m, c as h, d as g, f as _, i as v, l as y, m as b, o as x, p as S, r as C, s as w, t as T, u as E } from "./code-editor-tiAjhXW-.js";
|
|
11
11
|
import { r as D, t as O } from "./field-blur-DkiZOVNV.js";
|
|
12
12
|
import { useEffect as k, useRef as A, useState as j } from "react";
|
|
13
13
|
import { Fragment as M, jsx as N, jsxs as P } from "react/jsx-runtime";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as e, f as t } from "./dropdown-menu-
|
|
2
|
-
import { t as n } from "./use-material-translation-
|
|
1
|
+
import { d as e, f as t } from "./dropdown-menu-DO5kUvof.js";
|
|
2
|
+
import { t as n } from "./use-material-translation-DoymV6IP.js";
|
|
3
3
|
import { t as r } from "./copy-to-clipboard-Be5Ffvs_.js";
|
|
4
4
|
import { t as i } from "./live-status-BGPaN8r8.js";
|
|
5
5
|
import { useEffect as a, useRef as o, useState as s } from "react";
|