@nxgt/material 3.38.0 → 3.41.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 +23 -0
- package/README.md +3 -3
- package/dist/{async-slice-DqjtOYlO.js → async-slice-Dj0tAKRI.js} +2 -2
- package/dist/{button-D52ron-a.js → button-CTsT_LqL.js} +1 -1
- package/dist/charts.js +1733 -1364
- package/dist/{chip-0XYwSp9o.js → chip-DP7EyhtT.js} +1 -1
- package/dist/{code-editor-BetIXpJ6.js → code-editor-BWn0AXBf.js} +4 -4
- package/dist/code-editor.js +4 -4
- package/dist/{code-language-items-C7prxl_7.js → code-language-items-CCRuLYpA.js} +2 -2
- package/dist/components/components.css +1 -0
- package/dist/components/ui/widgets/native-charts/native-charts-reference.css +102 -0
- package/dist/{components-NoCZ44Ri.js → components-BUFDh6nQ.js} +16216 -15813
- package/dist/components.js +15 -15
- package/dist/{dialog-BCsT_aLo.js → dialog-uQld1gKm.js} +1 -1
- package/dist/dnd.js +1 -1
- package/dist/{dropdown-menu-Crt5QvTr.js → dropdown-menu-BA70o7HC.js} +1 -1
- package/dist/editor.js +7 -7
- package/dist/{empty-state-DFWq2CWB.js → empty-state-BzwyRX5J.js} +1 -1
- package/dist/hooks.js +2 -2
- package/dist/{i18n-provider-C0RBM8rH.js → i18n-provider-DkeMr5bw.js} +1 -1
- package/dist/i18n.js +5 -5
- package/dist/{icon-badge-XBoBIt_R.js → icon-badge-D_z5BGbc.js} +1 -1
- package/dist/lib/charts/index.d.ts +3 -1
- package/dist/lib/components/ui/collections/server-table/bulk-action-targets.d.ts +18 -0
- package/dist/lib/components/ui/collections/server-table/bulk-action.d.ts +50 -3
- package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-buttons.d.ts +5 -3
- package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-focus.d.ts +31 -0
- package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-more.d.ts +24 -0
- package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-notice.d.ts +16 -0
- package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-texts.d.ts +9 -0
- package/dist/lib/components/ui/collections/server-table/server-table.d.ts +1 -1
- package/dist/lib/components/ui/dates/date-field/date-field-content.d.ts +1 -1
- package/dist/lib/components/ui/dates/date-field/date-field-popover.d.ts +3 -1
- package/dist/lib/components/ui/dates/date-field/date-field-sheet-entry.d.ts +3 -2
- package/dist/lib/components/ui/dates/date-field/date-field-surface.d.ts +1 -1
- package/dist/lib/components/ui/dates/date-field/date-field-typed.d.ts +3 -3
- package/dist/lib/components/ui/dates/date-field/date-field.d.ts +23 -2
- package/dist/lib/components/ui/dates/date-field/use-typed-date.d.ts +3 -1
- package/dist/lib/components/ui/dates/date-field/use-zoned-content.d.ts +36 -0
- package/dist/lib/components/ui/dates/date-range-field/date-range-field.types.d.ts +1 -1
- package/dist/lib/components/ui/dates/picker-popover/hero-text.d.ts +1 -0
- package/dist/lib/components/ui/dates/picker-trigger/floating-clock.d.ts +7 -0
- package/dist/lib/components/ui/dates/picker-trigger/typed-day.d.ts +8 -0
- package/dist/lib/components/ui/dates/picker-trigger/use-zoned-date-props.d.ts +38 -0
- package/dist/lib/components/ui/dates/picker-trigger/use-zoned-value.d.ts +20 -0
- package/dist/lib/components/ui/dates/picker-trigger/zoned-bounds.d.ts +16 -0
- package/dist/lib/components/ui/dates/picker-trigger/zoned-matchers.d.ts +8 -0
- package/dist/lib/components/ui/dates/time-field/time-field.d.ts +14 -1
- package/dist/lib/components/ui/dates/time-field/time-form-field.d.ts +5 -1
- package/dist/lib/components/ui/dates/time-field/time-string-field.d.ts +3 -2
- package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
- package/dist/lib/components/ui/primitives/segmented-input/segment-date-time.d.ts +13 -0
- package/dist/lib/components/ui/primitives/segmented-input/segment-defs.d.ts +6 -0
- package/dist/lib/components/ui/primitives/segmented-input/segment-floating.d.ts +11 -0
- package/dist/lib/components/ui/primitives/segmented-input/segment-part.d.ts +19 -0
- package/dist/lib/components/ui/widgets/native-charts/core/point-tones.d.ts +17 -0
- package/dist/lib/components/ui/widgets/native-charts/core/reference-text.d.ts +30 -0
- package/dist/lib/components/ui/widgets/native-charts/core/reference.d.ts +45 -0
- package/dist/lib/components/ui/widgets/native-charts/core/summary.d.ts +3 -0
- package/dist/lib/components/ui/widgets/native-charts/core/table.d.ts +7 -0
- package/dist/lib/components/ui/widgets/native-charts/core/types.d.ts +25 -0
- package/dist/lib/components/ui/widgets/native-charts/hooks/chart-model-types.d.ts +18 -1
- package/dist/lib/components/ui/widgets/native-charts/hooks/model-parts.d.ts +3 -0
- package/dist/lib/components/ui/widgets/native-charts/hooks/model-series.d.ts +3 -0
- package/dist/lib/components/ui/widgets/native-charts/hooks/model-tones.d.ts +19 -0
- package/dist/lib/components/ui/widgets/native-charts/hooks/use-chart-model.d.ts +3 -3
- package/dist/lib/components/ui/widgets/native-charts/index.d.ts +1 -1
- package/dist/lib/components/ui/widgets/native-charts/line-chart/line-chart-types.d.ts +26 -1
- package/dist/lib/components/ui/widgets/native-charts/line-chart/line-geometry.d.ts +4 -0
- package/dist/lib/components/ui/widgets/native-charts/line-chart/partials/reference-marks.d.ts +17 -0
- package/dist/lib/components/ui/widgets/native-charts/line-chart/partials/tone-points.d.ts +11 -0
- package/dist/lib/components/ui/widgets/native-charts/partials/chart-tooltip.d.ts +3 -0
- package/dist/lib/i18n/resources/en/en.d.ts +23 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +23 -0
- package/dist/lib/i18n/resources/fr/fr.d.ts +23 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +23 -0
- package/dist/lib/i18n/resources/resources.d.ts +46 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib/lib/zoned-floating.d.ts +30 -0
- package/dist/lib/lib/zoned-instant.d.ts +16 -0
- package/dist/lib/lib/zoned.d.ts +11 -4
- package/dist/lib.js +1 -1
- package/dist/main.js +21 -21
- package/dist/map.js +4 -4
- package/dist/material.css +1 -1
- package/dist/pdf-reader.js +1 -1
- package/dist/print.js +2 -2
- package/dist/{public-CWIpzLzO.js → public-ib0sK0Hr.js} +6 -6
- package/dist/{rich-code-block-C4aBv4cA.js → rich-code-block-D_PTTZWQ.js} +4 -4
- package/dist/{sortable-provider-0uBi0zcP.js → sortable-provider-CrS51nKB.js} +1 -1
- package/dist/{spinner-CuxEwO0d.js → spinner-DLd_IHev.js} +1 -1
- package/dist/{stored-language-D8aemZhx.js → stored-language-B5SMR-W2.js} +46 -0
- package/dist/theme-picker.js +2 -2
- package/dist/{theme-toggle-ik5nV1P5.js → theme-toggle-wJYmnwgu.js} +1 -1
- package/dist/{toolbar-items-C97E5HRa.js → toolbar-items-BLjrk8uU.js} +2 -2
- package/dist/{translate-material-B84ufMSF.js → translate-material-BYRDtSEk.js} +2 -2
- package/dist/{translator-Bq8UHmvu.js → translator-C-_M57ZA.js} +1 -1
- package/dist/{use-chat-composer-DmDcEGp4.js → use-chat-composer-DrFgIE3T.js} +12 -12
- package/dist/{use-heading-spy-BgG7Q47k.js → use-heading-spy-wElRpO2G.js} +1 -1
- package/dist/{use-material-translation-CiYhVc39.js → use-material-translation-CFF73jk5.js} +2 -2
- package/docs/README.md +1 -1
- package/docs/components/data-table-filter-and-lists.md +59 -4
- package/docs/components/date-and-time.md +77 -3
- package/docs/components/rich-widgets.md +6 -0
- package/docs/guides/charts.md +78 -2
- package/docs/guides/forms.md +2 -2
- package/docs/guides/i18n.md +3 -2
- package/docs/roadmap.md +7 -0
- package/docs/troubleshooting.md +9 -1
- package/lib/components/components.css +1 -0
- package/lib/components/ui/widgets/native-charts/native-charts-reference.css +102 -0
- package/package.json +2 -2
package/dist/pdf-reader.js
CHANGED
package/dist/print.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as e } from "./i18n-provider-
|
|
2
|
-
import { t } from "./translate-material-
|
|
1
|
+
import { r as e } from "./i18n-provider-DkeMr5bw.js";
|
|
2
|
+
import { t } from "./translate-material-BYRDtSEk.js";
|
|
3
3
|
import { Children as n, createContext as r, isValidElement as i, useCallback as a, useContext as o, useEffect as s, useMemo as c, useState as l } from "react";
|
|
4
4
|
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
5
5
|
import { resolvePdfFileName as f } from "@nxgt/material-core/pdf-file-name";
|
|
@@ -6,18 +6,18 @@ import { c as i, i as a, l as o, n as s, o as c, s as l } from "./dist-lmHmz_bu.
|
|
|
6
6
|
import { a as u, o as d } from "./tooltip-CkttDIab.js";
|
|
7
7
|
import { i as f } from "./dist-C4wtXCjf.js";
|
|
8
8
|
import { r as p, t as m } from "./in-dialog-Vwkyp-M5.js";
|
|
9
|
-
import { C as h, D as g, E as _, O as v, S as y, T as b, _ as x, f as S, g as ee, k as te, r as ne, t as C, u as re, w } from "./dialog-
|
|
10
|
-
import { c as T, d as ie, f as E, i as ae, l as oe, n as se, o as D, t as ce, u as O } from "./dropdown-menu-
|
|
11
|
-
import { S as le, a as k, d as A, g as ue, h as de, i as fe, m as pe, n as j, r as me, t as M, u as he, w as ge } from "./toolbar-items-
|
|
12
|
-
import { t as N } from "./use-material-translation-
|
|
13
|
-
import { t as _e } from "./button-
|
|
9
|
+
import { C as h, D as g, E as _, O as v, S as y, T as b, _ as x, f as S, g as ee, k as te, r as ne, t as C, u as re, w } from "./dialog-uQld1gKm.js";
|
|
10
|
+
import { c as T, d as ie, f as E, i as ae, l as oe, n as se, o as D, t as ce, u as O } from "./dropdown-menu-BA70o7HC.js";
|
|
11
|
+
import { S as le, a as k, d as A, g as ue, h as de, i as fe, m as pe, n as j, r as me, t as M, u as he, w as ge } from "./toolbar-items-BLjrk8uU.js";
|
|
12
|
+
import { t as N } from "./use-material-translation-CFF73jk5.js";
|
|
13
|
+
import { t as _e } from "./button-CTsT_LqL.js";
|
|
14
14
|
import { n as ve, t as ye } from "./icon-button-CN9r5TNE.js";
|
|
15
15
|
import { t as be } from "./useEvent-2fKq-6w8.js";
|
|
16
16
|
import { n as xe, t as Se } from "./toggle-group-BMJNcFAC.js";
|
|
17
17
|
import { o as Ce } from "./escape-owner-C4W_sOAU.js";
|
|
18
18
|
import { n as we } from "./use-slice-reducer-BGkeGtML.js";
|
|
19
19
|
import { r as Te } from "./use-csp-nonce-ZKs9k-ov.js";
|
|
20
|
-
import { n as Ee, t as De } from "./empty-state-
|
|
20
|
+
import { n as Ee, t as De } from "./empty-state-BzwyRX5J.js";
|
|
21
21
|
import { t as Oe } from "./client-only.utils-3nHNzCki.js";
|
|
22
22
|
import { t as ke } from "./use-scroll-away-PQRFZkT2.js";
|
|
23
23
|
import { ArrowLeft as Ae, BookOpenText as je, ChevronDown as Me, ChevronLeft as Ne, ChevronRight as Pe, ChevronUp as Fe, Download as Ie, Eraser as Le, FileText as Re, FileWarning as ze, FileX2 as Be, Highlighter as Ve, KeyRound as He, LayoutGrid as Ue, List as We, Loader2 as Ge, Maximize as Ke, MessageSquareText as qe, Minimize as Je, MoreVertical as Ye, MousePointer2 as Xe, MoveHorizontal as Ze, PanelLeft as Qe, Pen as $e, PencilLine as et, Printer as tt, RotateCw as nt, Search as rt, StickyNote as it, Type as at, Underline as ot, Undo2 as st, Volume2 as ct, X as lt, XIcon as ut, ZoomIn as dt, ZoomOut as ft } from "lucide-react";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as e } from "./tooltip-CkttDIab.js";
|
|
2
|
-
import { c as t, n, t as r } from "./dropdown-menu-
|
|
3
|
-
import { t as i } from "./use-material-translation-
|
|
4
|
-
import { a, i as o, n as s, o as c, t as l } from "./code-language-items-
|
|
2
|
+
import { c as t, n, t as r } from "./dropdown-menu-BA70o7HC.js";
|
|
3
|
+
import { t as i } from "./use-material-translation-CFF73jk5.js";
|
|
4
|
+
import { a, i as o, n as s, o as c, t as l } from "./code-language-items-CCRuLYpA.js";
|
|
5
5
|
import { i as u, n as d, r as f, s as p } from "./dist-C3GR7kJd.js";
|
|
6
6
|
import { t as m } from "./code-block-spec-CGLKRhwD.js";
|
|
7
7
|
import { Check as h, ChevronDown as g, Copy as _, Maximize2 as v, WrapText as y } from "lucide-react";
|
|
@@ -143,7 +143,7 @@ function M({ node: e, editor: t, updateAttributes: n, editable: r, wrap: a, onWr
|
|
|
143
143
|
}
|
|
144
144
|
//#endregion
|
|
145
145
|
//#region lib/components/ui/widgets/editor/extensions/code/code-block-open.tsx
|
|
146
|
-
var N = x(() => import("./code-editor-
|
|
146
|
+
var N = x(() => import("./code-editor-BWn0AXBf.js").then((e) => e.n).then((e) => ({ default: e.CodeEditor })));
|
|
147
147
|
function P() {
|
|
148
148
|
let { t: e } = i();
|
|
149
149
|
return /* @__PURE__ */ T("div", {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
2
|
import { t } from "./dist-DVRQkaTK.js";
|
|
3
|
-
import { t as n } from "./use-material-translation-
|
|
3
|
+
import { t as n } from "./use-material-translation-CFF73jk5.js";
|
|
4
4
|
import { t as r } from "./icon-button-CN9r5TNE.js";
|
|
5
5
|
import { t as i } from "./compose-refs-DZ0iIVF-.js";
|
|
6
6
|
import { GripVertical as a } from "lucide-react";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
2
|
import { o as t } from "./tooltip-CkttDIab.js";
|
|
3
|
-
import { t as n } from "./use-material-translation-
|
|
3
|
+
import { t as n } from "./use-material-translation-CFF73jk5.js";
|
|
4
4
|
import { jsx as r } from "react/jsx-runtime";
|
|
5
5
|
//#region lib/components/ui/feedback/spinner/spinner.tsx
|
|
6
6
|
var i = t("transition-all duration-500", {
|
|
@@ -2012,6 +2012,7 @@ var t = {
|
|
|
2012
2012
|
"error-hint": "Check your connection, then try again.",
|
|
2013
2013
|
"bulk-action": "{label} ({count})",
|
|
2014
2014
|
"bulk-action-name": "{label} {count, plural, one {# row} other {# rows}}",
|
|
2015
|
+
"bulk-max-notice": "Select {max, plural, one {# row} other {# rows}} or fewer to {label}",
|
|
2015
2016
|
"bulk-more": "More"
|
|
2016
2017
|
},
|
|
2017
2018
|
"list-empty": { clear: "Clear search and filters" },
|
|
@@ -2222,6 +2223,7 @@ var t = {
|
|
|
2222
2223
|
apply: "Apply",
|
|
2223
2224
|
"no-range": "No dates yet",
|
|
2224
2225
|
"type-date": "Type the date",
|
|
2226
|
+
"type-date-time": "Type the date and time",
|
|
2225
2227
|
"type-range": "Type the dates",
|
|
2226
2228
|
"select-date": "Select date",
|
|
2227
2229
|
"select-dates": "Select dates",
|
|
@@ -2654,6 +2656,8 @@ var t = {
|
|
|
2654
2656
|
"no-data": "No data to show",
|
|
2655
2657
|
loading: "Loading chart",
|
|
2656
2658
|
"status-value": "{series} {value}",
|
|
2659
|
+
"status-value-tone": "{series} {value} ({tone})",
|
|
2660
|
+
"table-tone": "{series} tone",
|
|
2657
2661
|
"status-point": "{label}: {values}",
|
|
2658
2662
|
"table-caption": "{title}: the data",
|
|
2659
2663
|
"status-slice": "{label}: {value}, {share}",
|
|
@@ -2697,6 +2701,20 @@ var t = {
|
|
|
2697
2701
|
"zoom-reset": "Reset zoom",
|
|
2698
2702
|
"zoom-showing": "Showing {from} to {to}",
|
|
2699
2703
|
"zoom-range": "{from} to {to}",
|
|
2704
|
+
tone: {
|
|
2705
|
+
primary: "Primary",
|
|
2706
|
+
secondary: "Secondary",
|
|
2707
|
+
tertiary: "Tertiary",
|
|
2708
|
+
success: "Success",
|
|
2709
|
+
info: "Info",
|
|
2710
|
+
warning: "Warning",
|
|
2711
|
+
error: "Error",
|
|
2712
|
+
neutral: "Neutral"
|
|
2713
|
+
},
|
|
2714
|
+
reference: {
|
|
2715
|
+
band: "{label}: {from} to {to}",
|
|
2716
|
+
threshold: "{label}: {value}"
|
|
2717
|
+
},
|
|
2700
2718
|
kind: {
|
|
2701
2719
|
line: "line chart",
|
|
2702
2720
|
area: "area chart",
|
|
@@ -2716,6 +2734,11 @@ var t = {
|
|
|
2716
2734
|
range: "{count, plural, one {# point} other {# points}}, from {first} to {last}.",
|
|
2717
2735
|
series: "{series}: from {start} to {end}, highest {max} ({maxAt}), lowest {min} ({minAt}).",
|
|
2718
2736
|
hidden: "Hidden: {series}.",
|
|
2737
|
+
bands: "Reference ranges: {list}.",
|
|
2738
|
+
thresholds: "Thresholds: {list}.",
|
|
2739
|
+
outside: "{series}: {count} of {total, plural, one {# point} other {# points}} outside {band}.",
|
|
2740
|
+
tones: "{series}: {list}, of {total, plural, one {# point} other {# points}}.",
|
|
2741
|
+
"tone-count": "{count} {tone}",
|
|
2719
2742
|
slices: "{count, plural, one {# slice} other {# slices}}, {total} in all.",
|
|
2720
2743
|
largest: "Largest: {list}.",
|
|
2721
2744
|
slice: "{label} {value} ({share})",
|
|
@@ -4759,6 +4782,7 @@ var t = {
|
|
|
4759
4782
|
"error-hint": "Vérifiez votre connexion, puis réessayez.",
|
|
4760
4783
|
"bulk-action": "{label} ({count})",
|
|
4761
4784
|
"bulk-action-name": "{label} : {count, plural, one {# ligne} other {# lignes}}",
|
|
4785
|
+
"bulk-max-notice": "Sélectionnez {max, plural, one {# ligne} other {# lignes}} ou moins pour {label}",
|
|
4762
4786
|
"bulk-more": "Plus"
|
|
4763
4787
|
},
|
|
4764
4788
|
"list-empty": { clear: "Effacer la recherche et les filtres" },
|
|
@@ -4969,6 +4993,7 @@ var t = {
|
|
|
4969
4993
|
apply: "Appliquer",
|
|
4970
4994
|
"no-range": "Aucune date",
|
|
4971
4995
|
"type-date": "Saisir la date",
|
|
4996
|
+
"type-date-time": "Saisir la date et l’heure",
|
|
4972
4997
|
"type-range": "Saisir les dates",
|
|
4973
4998
|
"select-date": "Choisir la date",
|
|
4974
4999
|
"select-dates": "Choisir les dates",
|
|
@@ -5401,6 +5426,8 @@ var t = {
|
|
|
5401
5426
|
"no-data": "Aucune donnée à afficher",
|
|
5402
5427
|
loading: "Chargement du graphique",
|
|
5403
5428
|
"status-value": "{series} {value}",
|
|
5429
|
+
"status-value-tone": "{series} {value} ({tone})",
|
|
5430
|
+
"table-tone": "{series} : ton",
|
|
5404
5431
|
"status-point": "{label} : {values}",
|
|
5405
5432
|
"table-caption": "{title} : les données",
|
|
5406
5433
|
"status-slice": "{label} : {value}, {share}",
|
|
@@ -5444,6 +5471,20 @@ var t = {
|
|
|
5444
5471
|
"zoom-reset": "Réinitialiser le zoom",
|
|
5445
5472
|
"zoom-showing": "Affichage de {from} à {to}",
|
|
5446
5473
|
"zoom-range": "{from} à {to}",
|
|
5474
|
+
tone: {
|
|
5475
|
+
primary: "Principal",
|
|
5476
|
+
secondary: "Secondaire",
|
|
5477
|
+
tertiary: "Tertiaire",
|
|
5478
|
+
success: "Succès",
|
|
5479
|
+
info: "Information",
|
|
5480
|
+
warning: "Alerte",
|
|
5481
|
+
error: "Erreur",
|
|
5482
|
+
neutral: "Neutre"
|
|
5483
|
+
},
|
|
5484
|
+
reference: {
|
|
5485
|
+
band: "{label} : de {from} à {to}",
|
|
5486
|
+
threshold: "{label} : {value}"
|
|
5487
|
+
},
|
|
5447
5488
|
kind: {
|
|
5448
5489
|
line: "graphique en courbes",
|
|
5449
5490
|
area: "graphique en aires",
|
|
@@ -5463,6 +5504,11 @@ var t = {
|
|
|
5463
5504
|
range: "{count, plural, one {# point} other {# points}}, de {first} à {last}.",
|
|
5464
5505
|
series: "{series} : de {start} à {end}, maximum {max} ({maxAt}), minimum {min} ({minAt}).",
|
|
5465
5506
|
hidden: "Masquées : {series}.",
|
|
5507
|
+
bands: "Plages de référence : {list}.",
|
|
5508
|
+
thresholds: "Seuils : {list}.",
|
|
5509
|
+
outside: "{series} : {count} sur {total, plural, one {# point} other {# points}} hors de {band}.",
|
|
5510
|
+
tones: "{series} : {list}, sur {total, plural, one {# point} other {# points}}.",
|
|
5511
|
+
"tone-count": "{count} {tone}",
|
|
5466
5512
|
slices: "{count, plural, one {# part} other {# parts}}, {total} au total.",
|
|
5467
5513
|
largest: "Les plus grandes : {list}.",
|
|
5468
5514
|
slice: "{label} {value} ({share})",
|
package/dist/theme-picker.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
2
|
import { a as t, i as n, n as r, o as i, r as a, t as o } from "./bubble-input-B7BVd9fX.js";
|
|
3
|
-
import { t as s } from "./use-material-translation-
|
|
3
|
+
import { t as s } from "./use-material-translation-CFF73jk5.js";
|
|
4
4
|
import { a as c, r as l } from "./icon-sprites-CaYXzOL4.js";
|
|
5
5
|
import { t as u } from "./use-theme-DMcyJ52N.js";
|
|
6
6
|
import { a as d, r as f } from "./theme-context-Cofk6vgs.js";
|
|
7
|
-
import { t as p } from "./theme-toggle-
|
|
7
|
+
import { t as p } from "./theme-toggle-wJYmnwgu.js";
|
|
8
8
|
import { n as m, t as h } from "./nxgt-theme-ZS945iMP.js";
|
|
9
9
|
import { Check as g } from "lucide-react";
|
|
10
10
|
import { useContext as _ } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "./use-material-translation-
|
|
1
|
+
import { t as e } from "./use-material-translation-CFF73jk5.js";
|
|
2
2
|
import { i as t } from "./theme-store-CSl51uNH.js";
|
|
3
3
|
import { n, t as r } from "./use-theme-DMcyJ52N.js";
|
|
4
4
|
import { r as i } from "./theme-context-Cofk6vgs.js";
|
|
@@ -4,9 +4,9 @@ import { a as i, c as a, i as o, l as s, r as c, s as l } from "./dist-lmHmz_bu.
|
|
|
4
4
|
import { b as u, c as d, d as f, f as p, l as m, t as h, u as g, x as _ } from "./tooltip-CkttDIab.js";
|
|
5
5
|
import { i as v, n as y, r as b, t as x } from "./dist-C4wtXCjf.js";
|
|
6
6
|
import { a as S, c as C, l as w, o as T, r as ee, s as te, t as E } from "./in-dialog-Vwkyp-M5.js";
|
|
7
|
-
import { A as ne, M as re, N as ie, b as ae, d as oe, f as se, i as ce, j as le, l as ue, n as de, o as fe, r as pe, t as me, u as he, y as ge } from "./dropdown-menu-
|
|
7
|
+
import { A as ne, M as re, N as ie, b as ae, d as oe, f as se, i as ce, j as le, l as ue, n as de, o as fe, r as pe, t as me, u as he, y as ge } from "./dropdown-menu-BA70o7HC.js";
|
|
8
8
|
import { a as _e, n as ve, r as ye, t as be } from "./dist-B7RjY7SL.js";
|
|
9
|
-
import { t as xe } from "./use-material-translation-
|
|
9
|
+
import { t as xe } from "./use-material-translation-CFF73jk5.js";
|
|
10
10
|
import { t as Se } from "./warn-once-C_e47JM8.js";
|
|
11
11
|
import { o as Ce } from "./escape-owner-C4W_sOAU.js";
|
|
12
12
|
import { ChevronLeft as we, ChevronRightIcon as Te, MoreVertical as Ee } from "lucide-react";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "./stored-language-
|
|
2
|
-
import { a as e, r as t } from "./translator-
|
|
1
|
+
import "./stored-language-B5SMR-W2.js";
|
|
2
|
+
import { a as e, r as t } from "./translator-C-_M57ZA.js";
|
|
3
3
|
//#region lib/i18n/translate-material.ts
|
|
4
4
|
function n(n, r, i, a) {
|
|
5
5
|
if (n) for (let e of /* @__PURE__ */ new Set([n, n.split("-")[0]])) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./is-production-GLw59WU8.js";
|
|
2
|
-
import { a as t, i as n, r, t as i } from "./stored-language-
|
|
2
|
+
import { a as t, i as n, r, t as i } from "./stored-language-B5SMR-W2.js";
|
|
3
3
|
import { t as a } from "./get-CTzJAwfc.js";
|
|
4
4
|
//#region ../../node_modules/@formatjs/fast-memoize/index.js
|
|
5
5
|
function o(e, t) {
|
|
@@ -7,21 +7,21 @@ import { a as o, c as s, i as c, l, n as u, o as d, r as f, s as p, t as m } fro
|
|
|
7
7
|
import { _ as h, a as g, g as _, h as v, m as y, o as b, p as x, t as S, v as C, y as w } from "./tooltip-CkttDIab.js";
|
|
8
8
|
import { a as T, i as E, n as D, r as O, t as k } from "./dist-C4wtXCjf.js";
|
|
9
9
|
import { i as A, n as ee, t as j } from "./in-dialog-Vwkyp-M5.js";
|
|
10
|
-
import { A as M, C as N, D as te, E as ne, O as P, S as re, T as ie, _ as F, b as ae, f as oe, g as se, k as I, l as ce, m as le, n as ue, o as de, r as fe, s as pe, t as me, u as he, v as ge, w as _e, x as ve, y as ye } from "./dialog-
|
|
10
|
+
import { A as M, C as N, D as te, E as ne, O as P, S as re, T as ie, _ as F, b as ae, f as oe, g as se, k as I, l as ce, m as le, n as ue, o as de, r as fe, s as pe, t as me, u as he, v as ge, w as _e, x as ve, y as ye } from "./dialog-uQld1gKm.js";
|
|
11
11
|
import { A as be, C as xe, D as Se, E as Ce, O as we, S as Te, T as Ee, _ as De, a as Oe, b as ke, d as Ae, f as je, g as Me, h as Ne, i as Pe, k as Fe, l as Ie, m as Le, n as Re, o as ze, p as Be, r as Ve, s as He, t as Ue, u as We, v as Ge, w as Ke, x as qe, y as Je } from "./floating-ui.dom-KkZSW8_E.js";
|
|
12
|
-
import { D as Ye, E as Xe, N as Ze, O as Qe, c as $e, d as et, f as tt, i as nt, k as rt, m as it, n as at, o as ot, p as st, t as ct, u as lt } from "./dropdown-menu-
|
|
12
|
+
import { D as Ye, E as Xe, N as Ze, O as Qe, c as $e, d as et, f as tt, i as nt, k as rt, m as it, n as at, o as ot, p as st, t as ct, u as lt } from "./dropdown-menu-BA70o7HC.js";
|
|
13
13
|
import { a as ut, i as dt, n as ft } from "./field-blur-context-Cft9s7Hg.js";
|
|
14
|
-
import { C as pt, S as mt, a as ht, c as gt, d as _t, l as vt, n as yt, o as bt, s as xt, u as St } from "./toolbar-items-
|
|
14
|
+
import { C as pt, S as mt, a as ht, c as gt, d as _t, l as vt, n as yt, o as bt, s as xt, u as St } from "./toolbar-items-BLjrk8uU.js";
|
|
15
15
|
import { a as Ct, i as wt, n as Tt, o as Et, t as Dt } from "./bubble-input-B7BVd9fX.js";
|
|
16
16
|
import { i as Ot } from "./dist-B7RjY7SL.js";
|
|
17
|
-
import "./stored-language-
|
|
18
|
-
import { a as kt } from "./translator-
|
|
17
|
+
import "./stored-language-B5SMR-W2.js";
|
|
18
|
+
import { a as kt } from "./translator-C-_M57ZA.js";
|
|
19
19
|
import { h as At } from "./get-CTzJAwfc.js";
|
|
20
20
|
import { t as jt } from "./isEmpty-F_g3jLf8.js";
|
|
21
|
-
import { t as L } from "./use-material-translation-
|
|
22
|
-
import { t as Mt } from "./spinner-
|
|
21
|
+
import { t as L } from "./use-material-translation-CFF73jk5.js";
|
|
22
|
+
import { t as Mt } from "./spinner-DLd_IHev.js";
|
|
23
23
|
import { a as Nt } from "./button-tones-BwuVvAmd.js";
|
|
24
|
-
import { a as Pt, i as Ft, o as It, r as Lt, t as Rt } from "./button-
|
|
24
|
+
import { a as Pt, i as Ft, o as It, r as Lt, t as Rt } from "./button-CTsT_LqL.js";
|
|
25
25
|
import { t as R } from "./icon-button-CN9r5TNE.js";
|
|
26
26
|
import { a as zt, r as Bt } from "./icon-sprites-CaYXzOL4.js";
|
|
27
27
|
import { t as Vt } from "./use-ssr-media-query-C6M5m8sf.js";
|
|
@@ -35,10 +35,10 @@ import { a as tn, i as nn, o as rn } from "./escape-owner-C4W_sOAU.js";
|
|
|
35
35
|
import { n as an } from "./use-slice-reducer-BGkeGtML.js";
|
|
36
36
|
import { t as on } from "./browser-only-DQ94lWF8.js";
|
|
37
37
|
import { t as sn } from "./compose-refs-DZ0iIVF-.js";
|
|
38
|
-
import { n as cn, r as ln, t as un } from "./chip-
|
|
39
|
-
import { n as dn, t as fn } from "./icon-badge-
|
|
38
|
+
import { n as cn, r as ln, t as un } from "./chip-DP7EyhtT.js";
|
|
39
|
+
import { n as dn, t as fn } from "./icon-badge-D_z5BGbc.js";
|
|
40
40
|
import { r as pn } from "./use-csp-nonce-ZKs9k-ov.js";
|
|
41
|
-
import { t as mn } from "./empty-state-
|
|
41
|
+
import { t as mn } from "./empty-state-BzwyRX5J.js";
|
|
42
42
|
import { t as hn } from "./skeleton-DSdtr2qc.js";
|
|
43
43
|
import { H as gn, V as _n, X as vn, bt as yn, it as bn, lt as xn, n as Sn, t as Cn, xt as wn, yt as Tn } from "./dist-moutbfbd.js";
|
|
44
44
|
import { t as En } from "./markdown-Dw_uH7j7.js";
|
|
@@ -10909,7 +10909,7 @@ var jS = (e = {}) => Dn({
|
|
|
10909
10909
|
let [{ default: t }, { lowlight: n }, { richCodeBlock: r }] = await Promise.all([
|
|
10910
10910
|
import("./dist-CRMFGjng.js"),
|
|
10911
10911
|
import("./lowlight-OtcjU2Sa.js"),
|
|
10912
|
-
import("./rich-code-block-
|
|
10912
|
+
import("./rich-code-block-D_PTTZWQ.js")
|
|
10913
10913
|
]);
|
|
10914
10914
|
return [r(t, {
|
|
10915
10915
|
lowlight: n,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as e } from "./i18n-provider-
|
|
1
|
+
import { r as e } from "./i18n-provider-DkeMr5bw.js";
|
|
2
2
|
import { _ as t, g as n, h as r, n as i, v as a, y as o } from "./number.utils-BG_eEt5g.js";
|
|
3
3
|
import { useCallback as s, useEffect as c, useMemo as l, useRef as u } from "react";
|
|
4
4
|
//#region ../../node_modules/date-fns/locale/fr/_lib/formatDistance.js
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as e } from "./i18n-provider-
|
|
2
|
-
import { t } from "./translate-material-
|
|
1
|
+
import { r as e } from "./i18n-provider-DkeMr5bw.js";
|
|
2
|
+
import { t } from "./translate-material-BYRDtSEk.js";
|
|
3
3
|
import { useCallback as n } from "react";
|
|
4
4
|
//#region lib/i18n/use-material-translation.ts
|
|
5
5
|
function r() {
|
package/docs/README.md
CHANGED
|
@@ -9,7 +9,7 @@ detail: every option, the second example, and the traps.
|
|
|
9
9
|
| [Components](components/README.md) | You are looking for a component — one preview per category, then one page per category |
|
|
10
10
|
| [Forms](guides/forms.md) | You are building a form: the field / `*FormField` pair, React Hook Form + Zod, what each field emits, server errors, multi-step forms |
|
|
11
11
|
| [Themes for your app](guides/themes.md) | You define your own themes: `defineTheme` modules, the Vite plugin's `themes` option, the `nxgt-theme` command and its CI check, the tone warnings |
|
|
12
|
-
| [Charts](guides/charts.md) | You draw charts with `@nxgt/material/charts`: each chart, the shared props, zoom and phone scroll, the keyboard, accessibility, theming the `--chart-1..5` tokens, and moving off the Nivo charts, removed in 3.0 |
|
|
12
|
+
| [Charts](guides/charts.md) | You draw charts with `@nxgt/material/charts`: each chart, the shared props, reference bands, thresholds and point tones, zoom and phone scroll, the keyboard, accessibility, theming the `--chart-1..5` tokens, and moving off the Nivo charts, removed in 3.0 |
|
|
13
13
|
| [Cards and tiles](guides/cards-and-tiles.md) | You want a `DataTable` as a list of cards or tiles: `layout`, `renderCard`, `renderTile`, the card's one link, selection, the sort control, columns by the list's width |
|
|
14
14
|
| [DataGrid](guides/data-grid.md) | You are building an editable grid: columns and editors, save modes and conflicts, resizing, hiding and reordering columns, paste, fill and series, undo, totals, long lists, phones, custom editors, CSP |
|
|
15
15
|
| [Code editor](guides/code-editor.md) | You want `CodeEditor` or `CodeDiff` in a theme preset or your own (`defineCodeTheme`), several themes on one page, Monaco bundled instead of the CDN, or the new `@nxgt/material/code-editor` import (the reader look, the view props, the `ref` handle and the file tabs are in the component's own page) |
|
|
@@ -861,12 +861,12 @@ export default function Students() {
|
|
|
861
861
|
```
|
|
862
862
|
- **Bulk actions that count and run only their rows.** `bulkActions` also
|
|
863
863
|
takes a list of `ServerTableBulkAction<T>` (`{ id, label, icon?, appliesTo?,
|
|
864
|
-
onClick, variant?, color?, loading? }`). Each button reads "Label (n)", n
|
|
864
|
+
name?, max?, maxNotice?, onClick, variant?, color?, loading? }`). Each button reads "Label (n)", n
|
|
865
865
|
being the selected rows the action applies to, and is named "Label n rows"
|
|
866
866
|
(`material.server-table.bulk-action` and `bulk-action-name`, English and
|
|
867
867
|
French); `variant` (default `'tonal'`) and `color` (`'destructive'` for a
|
|
868
868
|
destructive one) style the button, `loading` makes it busy; the type is
|
|
869
|
-
exported as `ServerTableBulkAction`. It is not rendered when n is 0, so 5 rows selected with none
|
|
869
|
+
exported as `ServerTableBulkAction`, with `ServerTableBulkContext`. It is not rendered when n is 0, so 5 rows selected with none
|
|
870
870
|
archived show no "Restore". `onClick(ids, selection, rows)` receives only
|
|
871
871
|
those ids and rows. An action without `appliesTo` applies to the whole
|
|
872
872
|
selection: it shows the selection's size and gets every id. **Across
|
|
@@ -880,6 +880,61 @@ export default function Students() {
|
|
|
880
880
|
(an action without it still gets every selected id). A row's snapshot is
|
|
881
881
|
dropped when it is deselected, when the selection is cleared and when the
|
|
882
882
|
query changes.
|
|
883
|
+
|
|
884
|
+
**Name, maximum and focus (`name`, `max`, `maxNotice`, `onClick`'s fourth
|
|
885
|
+
argument).** All three are optional and additive:
|
|
886
|
+
- `name: (count) => string` is the button's accessible name and tooltip,
|
|
887
|
+
e.g. `(n) => `Archive ${n} people``, instead of the generic "Archive 2
|
|
888
|
+
rows". Start it with the visible `label`: the button reads "Archive (2)",
|
|
889
|
+
and a name that begins with it lets speech input ("click Archive") and
|
|
890
|
+
screen readers agree (WCAG 2.5.3, Label in Name). It applies to the
|
|
891
|
+
toolbar, the phone's bar and the More menu's items alike.
|
|
892
|
+
- `max: 100` is the most rows one call takes, counted on the rows the action
|
|
893
|
+
applies to. Above it the button is replaced by `maxNotice`: a short muted
|
|
894
|
+
text, by default "Select 100 rows or fewer to archive"
|
|
895
|
+
(`material.server-table.bulk-max-notice`, English and French), or your own
|
|
896
|
+
node or `(count, max) => node`. The notice is told politely once, when the
|
|
897
|
+
action goes past `max`; moving from 101 to 102 rows says nothing more.
|
|
898
|
+
Under `max` again, the button returns. On a phone an action in the bar
|
|
899
|
+
shows the notice inline; one in the More menu is a disabled item whose
|
|
900
|
+
notice is its description (`aria-describedby`), so it reads under its label.
|
|
901
|
+
- `onClick(ids, selection, rows, { trigger, focusTrigger })`: `trigger` is the
|
|
902
|
+
button the action started from (the "More" button for a More-menu item),
|
|
903
|
+
and `focusTrigger()` gives it the focus back, found again at call time, so
|
|
904
|
+
it works after a re-render. When the action is gone by then (its count fell
|
|
905
|
+
to 0, or past `max`) the focus goes to the next bulk action, else "More",
|
|
906
|
+
else the table's "Select all" (the table itself without one), never the
|
|
907
|
+
body. A handler that takes three parameters stays valid.
|
|
908
|
+
```tsx
|
|
909
|
+
const [confirm, setConfirm] = useState<{ ids: string[]; focus: () => void } | null>(null);
|
|
910
|
+
<ServerTable<Person>
|
|
911
|
+
{...props}
|
|
912
|
+
bulkActions={[
|
|
913
|
+
{
|
|
914
|
+
id: 'archive',
|
|
915
|
+
label: 'Archive',
|
|
916
|
+
appliesTo: (person) => !person.archived,
|
|
917
|
+
name: (n) => `Archive ${n} ${n === 1 ? 'person' : 'people'}`,
|
|
918
|
+
max: 100,
|
|
919
|
+
onClick: (ids, _selection, _rows, { focusTrigger }) =>
|
|
920
|
+
setConfirm({ ids, focus: focusTrigger }),
|
|
921
|
+
},
|
|
922
|
+
]}
|
|
923
|
+
/>
|
|
924
|
+
<Dialog open={confirm != null} onOpenChange={(open) => !open && setConfirm(null)}>
|
|
925
|
+
<DialogContent
|
|
926
|
+
// Without this, the focus goes back to what Radix remembers, which is
|
|
927
|
+
// gone when the action was in the More menu or has disappeared.
|
|
928
|
+
onCloseAutoFocus={(event) => {
|
|
929
|
+
event.preventDefault();
|
|
930
|
+
confirm?.focus();
|
|
931
|
+
}}
|
|
932
|
+
>
|
|
933
|
+
{/* … */}
|
|
934
|
+
</DialogContent>
|
|
935
|
+
</Dialog>
|
|
936
|
+
```
|
|
937
|
+
|
|
883
938
|
```tsx
|
|
884
939
|
<ServerTable<Item>
|
|
885
940
|
{...props}
|
|
@@ -932,7 +987,7 @@ Its props are `ServerTableProps<T>`; `filter` is a `ServerTableFilter`,
|
|
|
932
987
|
| `error` | `ServerTableError \| null` | — | the fetch failed: the failure and a Retry replace the rows |
|
|
933
988
|
| `onRetry` | `() => unknown` | — | the error's Retry; a returned promise keeps it loading |
|
|
934
989
|
| `onClearFilters` | `() => void` | focus the table | without `filter`, after "clear" |
|
|
935
|
-
| `bulkActions` | `(ids, selection: ServerTableSelection) => ReactNode \| ServerTableBulkAction<T>[]` | — | the selection's toolbar: your own buttons, or a list of actions
|
|
990
|
+
| `bulkActions` | `(ids, selection: ServerTableSelection) => ReactNode \| ServerTableBulkAction<T>[]` | — | the selection's toolbar: your own buttons, or a list of actions (`appliesTo`, `name`, `max`, `maxNotice`; `onClick` also gets a `ServerTableBulkContext`) that each count and run only the rows they apply to |
|
|
936
991
|
| `enableRowSelection`, `rowSelectionDisabledReason` | `boolean \| (row) => boolean`, `(row) => string \| undefined` | all rows, no reason | with `bulkActions`: which rows can be selected, and why one cannot ([DataTable](#datatable)) |
|
|
937
992
|
| `pageHref` | `(params) => string` | `` `?${params}` `` | Previous / Next hrefs |
|
|
938
993
|
| `pagingNames` | `{ after?, trail? }` | `after`, `trail` | the cursor's params |
|
|
@@ -965,7 +1020,7 @@ rows (the bulk bar is not drawn under it). With the declarative list form of
|
|
|
965
1020
|
line rather than scroll, and past the third action the rest go into a "More"
|
|
966
1021
|
menu (`material.server-table.bulk-more`), each item keeping its count. From
|
|
967
1022
|
768px the buttons read "Label (n)" as before. When the focused button
|
|
968
|
-
disappears the focus goes to the next one, else to "Select all". The function
|
|
1023
|
+
disappears the focus goes to the next one, else to "More", else to "Select all"; an action past `max` shows its notice there (an inline text, or a disabled More item). The function
|
|
969
1024
|
form (`bulkActions={(ids) => node}`) is drawn whole in the row, so keep it to
|
|
970
1025
|
one or two compact buttons; the footer's polite status still tells the selection once. The cards'
|
|
971
1026
|
own list bar row is gone in this layout; the names, the sort menu and the
|
|
@@ -177,7 +177,9 @@ export function Delivery() {
|
|
|
177
177
|
| `onValueChange` | `(value?: Date) => void` | — | `undefined` when the day is unselected |
|
|
178
178
|
| `entry` | `'typed'` | — | deprecated, no effect: the date is always typed in segments, with a button that opens the calendar (`'button'`, the 2.x trigger, was removed in 3.0) |
|
|
179
179
|
| `clearable` | `boolean` | `!required` | a ✕ (named "Clear") that empties the typed field; shown only while it holds a date and is not `disabled` |
|
|
180
|
-
| `showTimePicker` | `boolean` | — | adds
|
|
180
|
+
| `showTimePicker` | `boolean` | — | adds the time of day (a day click in the calendar keeps it): its hours and minutes (and AM / PM on a 12-hour clock) are typed in segments after the date, and a `TimePicker` with an OK button and a Cancel button sits beside the calendar from 768px and under it in a sheet; the popover stays open. Typed and picked are one value. The field has a value once the date and the time are both complete (see [Time zones and typed time](#time-zones-and-typed-time)) |
|
|
181
|
+
| `hourCycle` | `12 \| 24` | the language's | the clock of the typed time and of the picker (English 12, French 24); with `showTimePicker` |
|
|
182
|
+
| `timeZone` | IANA name (`'Europe/Paris'`) | the machine's zone | the field reads and writes the wall clock of that zone; `value` and `onValueChange` stay the true instant ([below](#time-zones-and-typed-time)) |
|
|
181
183
|
| `placeholder`, `label`, `helperText`, `error`, `required` | | — | `label` and `helperText` sit beside the field; `error` and `required` its state. `placeholder` names a field with no label |
|
|
182
184
|
| `disabled` | `boolean` | — | disables the field: no segment takes a key and the calendar cannot be opened |
|
|
183
185
|
| `disabledDays` | react-day-picker's `Matcher \| Matcher[]` | — | days that cannot be picked (the calendar's `disabled`), e.g. `{ dayOfWeek: [0] }` |
|
|
@@ -257,6 +259,77 @@ resized, a phone turned) keeps the field as it is: a partial entry stays,
|
|
|
257
259
|
and so do the "Open calendar" button and its focus; an open picker keeps
|
|
258
260
|
the focus when it moves between the popover and the sheet.
|
|
259
261
|
|
|
262
|
+
### Time zones and typed time
|
|
263
|
+
|
|
264
|
+
With `showTimePicker` the trigger reads `mm / dd / yyyy 09 : 30 AM` (the
|
|
265
|
+
locale's order and clock; `hourCycle` forces one). The time is typed like the
|
|
266
|
+
date: digits move on once a segment is full, a separator or an arrow moves
|
|
267
|
+
between segments, ArrowUp and ArrowDown step the focused one (wrapping), "a"
|
|
268
|
+
or "p" sets AM / PM, and a pasted "07/01/2026 9:30 PM" fills all of them. The
|
|
269
|
+
segments are in one `group` named by the label; "Hours", "Minutes" and
|
|
270
|
+
"AM / PM" are `spinbutton`s like the date's. On a phone, where the segments
|
|
271
|
+
are 44px wide, the time wraps whole under the date when the two do not fit.
|
|
272
|
+
|
|
273
|
+
A value needs the date and the time both complete: while one segment is empty
|
|
274
|
+
the field emits `undefined` (a partial entry stays on screen), so a form's
|
|
275
|
+
`required` rule refuses it, says so in the helper text and marks every segment
|
|
276
|
+
`aria-invalid`, exactly as for a half-typed date. The calendar, the tiles and
|
|
277
|
+
the segments edit the same value: a day picked in the calendar keeps the time
|
|
278
|
+
of day, and a time typed shows in the tiles when the picker opens. (Before,
|
|
279
|
+
with `showTimePicker`, a day picked in the calendar put the time back to
|
|
280
|
+
midnight.) On the phone's sheet the pencil's large field takes the time too
|
|
281
|
+
and is named `material.dates.type-date-time`.
|
|
282
|
+
|
|
283
|
+
`timeZone` (an IANA name such as `Europe/Paris`) makes the field a form for the
|
|
284
|
+
wall clock of that zone, whatever zone the browser runs in:
|
|
285
|
+
|
|
286
|
+
| | |
|
|
287
|
+
| --- | --- |
|
|
288
|
+
| `value`, `onValueChange` | the true instant, a `Date`, as without `timeZone` |
|
|
289
|
+
| Shown | the instant's wall clock in the zone: `2026-07-01T07:30:00Z` is `09:30` for `Europe/Paris` and `03:30` for `America/Toronto` |
|
|
290
|
+
| Typed or picked | read as the zone's wall clock: `09:30` typed with `Europe/Paris` emits `07:30Z` in summer and `08:30Z` in winter |
|
|
291
|
+
| `minDate`, `maxDate` | instants, compared as the days they fall on in the zone |
|
|
292
|
+
| `disablePast`, `disableFuture`, today's mark | today in the zone, not the machine's |
|
|
293
|
+
| `disabledDays` | `Date`s in a matcher are the days they fall on in the zone; a function sees the zone's days |
|
|
294
|
+
| Unknown name | read as `UTC` (as `ZonedTime` does) |
|
|
295
|
+
| No `timeZone` | the machine's zone, as before |
|
|
296
|
+
|
|
297
|
+
Daylight-saving changes have one rule each, the one of Temporal's
|
|
298
|
+
`compatible` mode:
|
|
299
|
+
|
|
300
|
+
- **A time that does not exist** (the clocks go forward: 02:30 on 29 March
|
|
301
|
+
2026 in `Europe/Paris`) is read with the offset in force before the gap, so
|
|
302
|
+
it lands the length of the gap later: 03:30. The field shows 03:30 right
|
|
303
|
+
away.
|
|
304
|
+
- **A time that happens twice** (the clocks go back: 02:30 on 25 October 2026
|
|
305
|
+
in `Europe/Paris`) is the first occurrence, `00:30Z`. If the value being
|
|
306
|
+
edited already is the second occurrence (`01:30Z`), editing its minutes
|
|
307
|
+
keeps the second one, so the time never jumps an hour back under the typing.
|
|
308
|
+
|
|
309
|
+
The server renders the wall clock from `Intl` with the explicit zone, never
|
|
310
|
+
from the machine, so the HTML hydrates identically whatever zone the server
|
|
311
|
+
and the browser run in. Inside, the wall clock is a floating date (read
|
|
312
|
+
through UTC), so a time the browser's own clocks skip (02:30 Paris on the
|
|
313
|
+
day Toronto springs forward) is shown, typed and picked as it is. A
|
|
314
|
+
`disabledDays` matcher that holds a `Date` (`Date`, `{ before }`,
|
|
315
|
+
`{ after }`, `{ from, to }`, and lists of them) names the days those instants
|
|
316
|
+
fall on in the zone; a function matcher is given the zone's days. With no
|
|
317
|
+
value, a time picked first is dated today in the zone and must pass the
|
|
318
|
+
bounds (`disablePast`...).
|
|
319
|
+
|
|
320
|
+
```tsx
|
|
321
|
+
<DateField
|
|
322
|
+
label="Starts"
|
|
323
|
+
timeZone="Europe/Paris"
|
|
324
|
+
showTimePicker
|
|
325
|
+
value={startsAt}
|
|
326
|
+
onValueChange={setStartsAt}
|
|
327
|
+
disablePast
|
|
328
|
+
/>
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
`DateFormField` takes the same props. `DateRangeField` has no `timeZone` (react-day-picker's own `timeZone` prop is no longer accepted by `DateField` or `DateRangeField`: use `DateField`'s `timeZone`, or drop it from a range).
|
|
332
|
+
|
|
260
333
|
### Pickers' surfaces
|
|
261
334
|
|
|
262
335
|
The popover has 28px corners, a soft lift and 12px of
|
|
@@ -277,7 +350,7 @@ Storybook: `Date & time/Pickers surfaces/Phone sheet`, `/Popover` and `/Cancel`.
|
|
|
277
350
|
**Emits:** `Date | undefined`.
|
|
278
351
|
**Form wrapper:** `DateFormField` — `control` and `name`, see
|
|
279
352
|
[forms](../guides/forms.md#the-pair) and [what each field emits](../guides/forms.md#what-each-field-emits).
|
|
280
|
-
**Storybook:** `Date & time/DateField`, `Date & time/DateField/Typed entry`, `Date & time/DateField/Phone sheet` · **Vue:** `DateField`, `DateFormField` (`disabled-days`, same rules; the 2.x trigger only, no typed entry)
|
|
353
|
+
**Storybook:** `Date & time/DateField`, `Date & time/DateField/Typed entry`, `Date & time/DateField/Time zone`, `Date & time/DateField/Phone sheet` · **Vue:** `DateField`, `DateFormField` (`disabled-days`, same rules; the 2.x trigger only, no typed entry)
|
|
281
354
|
|
|
282
355
|
---
|
|
283
356
|
|
|
@@ -587,6 +660,7 @@ export function OpensAt() {
|
|
|
587
660
|
| `value` | `Date` | — | only the hours and minutes are shown |
|
|
588
661
|
| `onValueChange` | `(value?: Date) => void` | — | on every hour, minute or AM / PM change |
|
|
589
662
|
| `size` | `'default' \| 'sm'` | `'default'` | `'sm'` is the compact 36px box (the field radius is unchanged) |
|
|
663
|
+
| `timeZone` | IANA name (`'Europe/Paris'`) | the machine's zone | the segments and the picker show the value's wall clock in that zone and what is typed or picked is read in it; `value` and `onValueChange` stay the true instant. The time lands on the value's day in the zone (today in the zone with no value). The same rules as `DateField`'s ([Time zones and typed time](#time-zones-and-typed-time)): a time skipped by the clocks moves to the end of the gap, a repeated one is the first, unless the value holds the second. `TimeFormField` takes it too; with `asString` the `'HH:mm'` string is the wall clock itself and `timeZone` has no effect, and `TimeStringField` has none |
|
|
590
664
|
| `variant`, `hourCycle`, `minuteStep` | | `'tiles'`, the language's, `5` | passed to the `TimePicker` ([below](#timepicker)); `hourCycle` sets the segments' clock too |
|
|
591
665
|
| `entry` | `'typed'` | — | deprecated, no effect: the time is always typed in segments, with a button that opens the picker (`'button'`, the 2.x trigger, was removed in 3.0) |
|
|
592
666
|
| `clearable` | `boolean` | `!required` | a ✕ (named "Clear") that empties the typed field; shown only while it holds a time and is not `disabled` |
|
|
@@ -647,7 +721,7 @@ unchanged.
|
|
|
647
721
|
state.
|
|
648
722
|
**Form wrapper:** `TimeFormField` — `control` and `name` (plus `asString`), see
|
|
649
723
|
[forms](../guides/forms.md#the-pair) and [what each field emits](../guides/forms.md#what-each-field-emits).
|
|
650
|
-
**Storybook:** `Date & time/TimeField`, `Date & time/TimeField/Typed entry`, `Date & time/TimeField/Phone sheet` · **Vue:** `TimeField`, `TimeFormField` (the 2.x trigger only, no typed entry)
|
|
724
|
+
**Storybook:** `Date & time/TimeField`, `Date & time/TimeField/Typed entry`, `Date & time/TimeField/Time zone`, `Date & time/TimeField/Phone sheet` · **Vue:** `TimeField`, `TimeFormField` (the 2.x trigger only, no typed entry)
|
|
651
725
|
|
|
652
726
|
---
|
|
653
727
|
|
|
@@ -278,6 +278,12 @@ import { LineChart } from '@nxgt/material/charts';
|
|
|
278
278
|
/>;
|
|
279
279
|
```
|
|
280
280
|
|
|
281
|
+
A line chart can be read against a reference: `bands` shade a range of the
|
|
282
|
+
value axis (a normal range), `thresholds` draw labelled lines and `pointTone`
|
|
283
|
+
rings the values that need a word, which the tooltip, the summary and the
|
|
284
|
+
"View data" table repeat
|
|
285
|
+
([guide](../guides/charts.md#reading-values-against-a-reference)).
|
|
286
|
+
|
|
281
287
|
Parts: `LineChart`, `AreaChart`, `BarChart`, `PieChart`, `DonutChart`, `Gauge`,
|
|
282
288
|
`RadialBarChart`, `FunnelChart`, `HeatmapChart`, `RadarChart`, `ScatterChart`,
|
|
283
289
|
`ComboChart`.
|