@nxgt/material 3.39.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 +12 -0
- package/README.md +3 -3
- package/dist/{async-slice-BtUexP2l.js → async-slice-Dj0tAKRI.js} +2 -2
- package/dist/{button-CCAYSsgh.js → button-CTsT_LqL.js} +1 -1
- package/dist/charts.js +1733 -1364
- package/dist/{chip-Corr637n.js → chip-DP7EyhtT.js} +1 -1
- package/dist/{code-editor-B8_ny_jT.js → code-editor-BWn0AXBf.js} +4 -4
- package/dist/code-editor.js +4 -4
- package/dist/{code-language-items-1E5Qmfzb.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-CTKlqX8g.js → components-BUFDh6nQ.js} +5261 -5133
- package/dist/components.js +15 -15
- package/dist/{dialog-DGlnqBbX.js → dialog-uQld1gKm.js} +1 -1
- package/dist/dnd.js +1 -1
- package/dist/{dropdown-menu-B-buMTGc.js → dropdown-menu-BA70o7HC.js} +1 -1
- package/dist/editor.js +7 -7
- package/dist/{empty-state-DKgPt475.js → empty-state-BzwyRX5J.js} +1 -1
- package/dist/hooks.js +2 -2
- package/dist/{i18n-provider-Bc7bdIRW.js → i18n-provider-DkeMr5bw.js} +1 -1
- package/dist/i18n.js +5 -5
- package/dist/{icon-badge-BzLsPW3c.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/fields/contacts/placeholders.d.ts +1 -1
- 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 +22 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +22 -0
- package/dist/lib/i18n/resources/fr/fr.d.ts +22 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +22 -0
- package/dist/lib/i18n/resources/resources.d.ts +44 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- 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-CNlIuQOj.js → public-ib0sK0Hr.js} +6 -6
- package/dist/{rich-code-block-Jo0OLy0J.js → rich-code-block-D_PTTZWQ.js} +4 -4
- package/dist/{sortable-provider-DgIo378H.js → sortable-provider-CrS51nKB.js} +1 -1
- package/dist/{spinner-BTR8rVN9.js → spinner-DLd_IHev.js} +1 -1
- package/dist/{stored-language-Bbwcy-Pv.js → stored-language-B5SMR-W2.js} +44 -0
- package/dist/theme-picker.js +2 -2
- package/dist/{theme-toggle-DMZ_3HiG.js → theme-toggle-wJYmnwgu.js} +1 -1
- package/dist/{toolbar-items-D3SPTgXE.js → toolbar-items-BLjrk8uU.js} +2 -2
- package/dist/{translate-material-CRF13PON.js → translate-material-BYRDtSEk.js} +2 -2
- package/dist/{translator-D7AVZCfQ.js → translator-C-_M57ZA.js} +1 -1
- package/dist/{use-chat-composer-D3kvp8Fw.js → use-chat-composer-DrFgIE3T.js} +12 -12
- package/dist/{use-heading-spy-uyhOQV2O.js → use-heading-spy-wElRpO2G.js} +1 -1
- package/dist/{use-material-translation-kISeB-fY.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/rich-widgets.md +6 -0
- package/docs/guides/charts.md +78 -2
- package/docs/guides/i18n.md +1 -1
- package/docs/roadmap.md +7 -0
- package/lib/components/components.css +1 -0
- package/lib/components/ui/widgets/native-charts/native-charts-reference.css +102 -0
- package/package.json +1 -1
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" },
|
|
@@ -2655,6 +2656,8 @@ var t = {
|
|
|
2655
2656
|
"no-data": "No data to show",
|
|
2656
2657
|
loading: "Loading chart",
|
|
2657
2658
|
"status-value": "{series} {value}",
|
|
2659
|
+
"status-value-tone": "{series} {value} ({tone})",
|
|
2660
|
+
"table-tone": "{series} tone",
|
|
2658
2661
|
"status-point": "{label}: {values}",
|
|
2659
2662
|
"table-caption": "{title}: the data",
|
|
2660
2663
|
"status-slice": "{label}: {value}, {share}",
|
|
@@ -2698,6 +2701,20 @@ var t = {
|
|
|
2698
2701
|
"zoom-reset": "Reset zoom",
|
|
2699
2702
|
"zoom-showing": "Showing {from} to {to}",
|
|
2700
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
|
+
},
|
|
2701
2718
|
kind: {
|
|
2702
2719
|
line: "line chart",
|
|
2703
2720
|
area: "area chart",
|
|
@@ -2717,6 +2734,11 @@ var t = {
|
|
|
2717
2734
|
range: "{count, plural, one {# point} other {# points}}, from {first} to {last}.",
|
|
2718
2735
|
series: "{series}: from {start} to {end}, highest {max} ({maxAt}), lowest {min} ({minAt}).",
|
|
2719
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}",
|
|
2720
2742
|
slices: "{count, plural, one {# slice} other {# slices}}, {total} in all.",
|
|
2721
2743
|
largest: "Largest: {list}.",
|
|
2722
2744
|
slice: "{label} {value} ({share})",
|
|
@@ -4760,6 +4782,7 @@ var t = {
|
|
|
4760
4782
|
"error-hint": "Vérifiez votre connexion, puis réessayez.",
|
|
4761
4783
|
"bulk-action": "{label} ({count})",
|
|
4762
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}",
|
|
4763
4786
|
"bulk-more": "Plus"
|
|
4764
4787
|
},
|
|
4765
4788
|
"list-empty": { clear: "Effacer la recherche et les filtres" },
|
|
@@ -5403,6 +5426,8 @@ var t = {
|
|
|
5403
5426
|
"no-data": "Aucune donnée à afficher",
|
|
5404
5427
|
loading: "Chargement du graphique",
|
|
5405
5428
|
"status-value": "{series} {value}",
|
|
5429
|
+
"status-value-tone": "{series} {value} ({tone})",
|
|
5430
|
+
"table-tone": "{series} : ton",
|
|
5406
5431
|
"status-point": "{label} : {values}",
|
|
5407
5432
|
"table-caption": "{title} : les données",
|
|
5408
5433
|
"status-slice": "{label} : {value}, {share}",
|
|
@@ -5446,6 +5471,20 @@ var t = {
|
|
|
5446
5471
|
"zoom-reset": "Réinitialiser le zoom",
|
|
5447
5472
|
"zoom-showing": "Affichage de {from} à {to}",
|
|
5448
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
|
+
},
|
|
5449
5488
|
kind: {
|
|
5450
5489
|
line: "graphique en courbes",
|
|
5451
5490
|
area: "graphique en aires",
|
|
@@ -5465,6 +5504,11 @@ var t = {
|
|
|
5465
5504
|
range: "{count, plural, one {# point} other {# points}}, de {first} à {last}.",
|
|
5466
5505
|
series: "{series} : de {start} à {end}, maximum {max} ({maxAt}), minimum {min} ({minAt}).",
|
|
5467
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}",
|
|
5468
5512
|
slices: "{count, plural, one {# part} other {# parts}}, {total} au total.",
|
|
5469
5513
|
largest: "Les plus grandes : {list}.",
|
|
5470
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
|
|
@@ -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`.
|
package/docs/guides/charts.md
CHANGED
|
@@ -63,7 +63,7 @@ export function SalesChart() {
|
|
|
63
63
|
plot of the right height; the plot is drawn once the browser has measured its
|
|
64
64
|
width, with its final geometry (the entry motion only runs after that).
|
|
65
65
|
Nothing mismatches on hydration.
|
|
66
|
-
- **Types:** `ChartRow`, `RowKey`, `ChartValue`, `ChartSeries`, `ChartAxis`, `ChartXAxis`,
|
|
66
|
+
- **Types:** `ChartRow`, `RowKey`, `ChartValue`, `ChartSeries`, `ChartAxis`, `ChartXAxis`, `ChartBand`, `ChartThreshold`,
|
|
67
67
|
`ChartPoint`, `ChartBaseProps`, `ChartColor`, `ChartShape`, `ChartSlice`,
|
|
68
68
|
`ScatterSeries`, `ScatterPoint`, `ComboSeries`, `ChartRange`,
|
|
69
69
|
`ChartZoomOptions`, `ChartScrollOptions`, `ChartRangeProps`, `HeatColumn`,
|
|
@@ -203,6 +203,80 @@ The funnel is one series, so it takes no `legend`, `hidden` or `grid`; the round
|
|
|
203
203
|
charts take no `grid`, and the heat map no `hidden`, `grid` or `patterns` (these
|
|
204
204
|
are left out of their props types).
|
|
205
205
|
|
|
206
|
+
## Reading values against a reference
|
|
207
|
+
|
|
208
|
+
`LineChart` (and `AreaChart`, which takes the same props) can draw the range a
|
|
209
|
+
value is read against, so it is not painted outside the chart where the
|
|
210
|
+
tooltip, the summary and the table would miss it.
|
|
211
|
+
|
|
212
|
+
```tsx
|
|
213
|
+
'use client';
|
|
214
|
+
import { LineChart } from '@nxgt/material/charts';
|
|
215
|
+
import type { ChartBand, ChartPoint, ChartThreshold } from '@nxgt/material/charts';
|
|
216
|
+
|
|
217
|
+
// Module-level (or memoized): the arrays and the function key the summary and the table.
|
|
218
|
+
const bands: ChartBand[] = [
|
|
219
|
+
{ from: 40, to: 60, label: 'Normal range', tone: 'success' },
|
|
220
|
+
];
|
|
221
|
+
const thresholds: ChartThreshold[] = [
|
|
222
|
+
{ value: 70, label: 'Upper limit', tone: 'error' },
|
|
223
|
+
{ value: 30, label: 'Lower limit', tone: 'info', dash: false },
|
|
224
|
+
];
|
|
225
|
+
const toneOf = (point: ChartPoint) =>
|
|
226
|
+
point.value > 70 ? 'error' : point.value > 60 ? 'warning' : point.value < 40 ? 'info' : undefined;
|
|
227
|
+
|
|
228
|
+
<LineChart
|
|
229
|
+
title="Daily readings"
|
|
230
|
+
data={readings}
|
|
231
|
+
x="day"
|
|
232
|
+
series={[{ key: 'reading', label: 'Reading' }]}
|
|
233
|
+
points
|
|
234
|
+
bands={bands}
|
|
235
|
+
thresholds={thresholds}
|
|
236
|
+
pointTone={toneOf}
|
|
237
|
+
toneLabels={{ error: 'Critical', warning: 'High', info: 'Low' }}
|
|
238
|
+
/>;
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
| Prop | Effect |
|
|
242
|
+
| --- | --- |
|
|
243
|
+
| `bands` | `{ from, to, label, tone? }[]`: a wash across the plot behind the lines, with its `label` inside it at the left. `from` and `to` may come in either order. |
|
|
244
|
+
| `thresholds` | `{ value, label, tone?, dash? }[]`: a horizontal line behind the series with its `label` above it at the right end; dashed unless `dash: false`. |
|
|
245
|
+
| `pointTone` | `(point: ChartPoint, series: ChartSeries) => Tone \| undefined`: the tone of one value. It is given the point `onPointClick` gets, so `point.index` is the row of the full `data` even when the chart is zoomed. |
|
|
246
|
+
| `toneLabels` | `{ [tone]: word }`: the word of each tone, in your language and domain. Unset, the library's neutral word ("Error", translated by `material.charts.tone.*`); an app tone you declared falls back to its own name. |
|
|
247
|
+
|
|
248
|
+
**The value axis holds them.** Unless `yAxis.min` and `yAxis.max` pin it, the
|
|
249
|
+
axis grows to include every band end and threshold, so none is out of view.
|
|
250
|
+
With a pinned axis a band is clipped to the plot and a threshold outside it is
|
|
251
|
+
not drawn (it stays in the summary and the table). The scales are the chart's
|
|
252
|
+
own, so a `zoom` window, a phone `scroll` and a resize keep them right.
|
|
253
|
+
|
|
254
|
+
**The words are carried everywhere the picture is.**
|
|
255
|
+
|
|
256
|
+
- The **tooltip** and the **live status** add the tone's word to a toned
|
|
257
|
+
value: `Day 4: Reading 63 (High)`.
|
|
258
|
+
- The **summary** lists the ranges and lines (`Reference ranges: Normal range:
|
|
259
|
+
40 to 60. Thresholds: Upper limit: 70`), says how many values of each series
|
|
260
|
+
lie outside each band (`Reading: 5 of 12 points outside Normal range.`) and
|
|
261
|
+
counts the tones (`Reading: 2 High, 1 Critical, 2 Low, of 12 points.`). Over
|
|
262
|
+
a `zoom` window it counts the window's rows.
|
|
263
|
+
- **View data** gets a column after each toned series (`Reading tone`) and a
|
|
264
|
+
list of the ranges and lines under the table.
|
|
265
|
+
|
|
266
|
+
**Never colour alone.** A toned point is drawn as a ring in the tone's colour
|
|
267
|
+
round the value (the series' own shape inside the ring with `patterns`), so it
|
|
268
|
+
differs from an untoned dot by its form. A band is a decorative tint: the
|
|
269
|
+
label, the summary and the table carry its meaning. Labels use the tone's text
|
|
270
|
+
colour (4.5:1) on a card-coloured halo, lines and rings hold 3:1, and in
|
|
271
|
+
forced colours the band is outlined and the lines, labels and rings use system
|
|
272
|
+
colours. Nothing animates: reduced motion changes nothing here. Labels are
|
|
273
|
+
cut to 45% of the plot's width, and a label in a right-to-left script is set
|
|
274
|
+
right to left (the plot itself is never mirrored, see
|
|
275
|
+
[Right-to-left pages](#right-to-left-pages)).
|
|
276
|
+
|
|
277
|
+
A custom `tooltip` function receives the points as before; read the tone from
|
|
278
|
+
your own `pointTone` if it should show the word.
|
|
279
|
+
|
|
206
280
|
## Shared props
|
|
207
281
|
|
|
208
282
|
Every chart takes the shared props (`ChartBaseProps`):
|
|
@@ -398,7 +472,9 @@ keyboard behaviour.
|
|
|
398
472
|
contrast alone, so the heat map is exempt from the 3:1 non-text rule for that
|
|
399
473
|
step, and **View data** (the whole matrix as a table) is the accessible
|
|
400
474
|
fallback; the number in a cell keeps 4.5:1 against its own fill.
|
|
401
|
-
- **Never colour alone:** `patterns` adds shapes, dashes and fill patterns
|
|
475
|
+
- **Never colour alone:** `patterns` adds shapes, dashes and fill patterns; a
|
|
476
|
+
toned point is a ring and its word is in the tooltip, the summary and the
|
|
477
|
+
table ([Reading values against a reference](#reading-values-against-a-reference)).
|
|
402
478
|
- **Reduced motion:** with `prefers-reduced-motion`, the final geometry shows at
|
|
403
479
|
once with a short 120ms fade; there is no bounce, draw-in or morph, and the
|
|
404
480
|
crosshair jumps.
|
package/docs/guides/i18n.md
CHANGED
|
@@ -404,7 +404,7 @@ fichier.") when it cannot show it, `material.file-preview.download`
|
|
|
404
404
|
"Seuls les premiers {size} de ce fichier sont affichés.") under a text cut
|
|
405
405
|
by the size cap; the text or Markdown it shows scrolls in a region named by
|
|
406
406
|
`material.file-preview.content` ("Contents of {name}", "Contenu de {name}").
|
|
407
|
-
A `ServerTable` bulk action with a list entry reads `material.server-table.bulk-action` ("{label} ({count})", the same in French) and is named by `material.server-table.bulk-action-name` ("{label} {count, plural, one {# row} other {# rows}}"; "{label} : {count, plural, one {# ligne} other {# lignes}}").
|
|
407
|
+
A `ServerTable` bulk action with a list entry reads `material.server-table.bulk-action` ("{label} ({count})", the same in French) and is named by `material.server-table.bulk-action-name` ("{label} {count, plural, one {# row} other {# rows}}"; "{label} : {count, plural, one {# ligne} other {# lignes}}"). Past the action's `max` the notice that replaces its button reads `material.server-table.bulk-max-notice` ("Select {max, plural, one {# row} other {# rows}} or fewer to {label}"; "Sélectionnez {max, plural, one {# ligne} other {# lignes}} ou moins pour {label}"), unless the action gives its `maxNotice`; an action's `name` replaces `bulk-action-name`.
|
|
408
408
|
`ServerTable`'s own live region (without `filter`) says
|
|
409
409
|
`material.server-table.results` once a new query is answered ("{count,
|
|
410
410
|
plural, =0 {No results} one {# result} other {# results}}"; "{count, plural,
|
package/docs/roadmap.md
CHANGED
|
@@ -482,6 +482,13 @@ version they shipped in, and planned entries may name the major they target.
|
|
|
482
482
|
slider handles) and a phone scroll that opens on the latest point. The
|
|
483
483
|
light `--chart-4` is now a purple. Client-only, like `/editor`.
|
|
484
484
|
([Charts](guides/charts.md))
|
|
485
|
+
- **Reference bands, thresholds and point tones on the line chart** — `bands`
|
|
486
|
+
shade a range of the value axis, `thresholds` draw labelled lines, and
|
|
487
|
+
`pointTone` rings the values that need a word (`toneLabels` gives the words).
|
|
488
|
+
The words reach the tooltip, the live status, the summary (values outside a
|
|
489
|
+
band, tone counts) and a tone column of "View data"; the axis grows to hold
|
|
490
|
+
them and a zoom window keeps them right.
|
|
491
|
+
([Reading values against a reference](guides/charts.md#reading-values-against-a-reference))
|
|
485
492
|
|
|
486
493
|
- **The page's title in the app bar, a text breadcrumb root and the tenant in the menu** —
|
|
487
494
|
a route's `handle.title` (a node, or a function of the match like
|
|
@@ -150,6 +150,7 @@
|
|
|
150
150
|
@import "./ui/widgets/native-charts/native-charts-round.css";
|
|
151
151
|
@import "./ui/widgets/native-charts/native-charts-heat.css";
|
|
152
152
|
@import "./ui/widgets/native-charts/native-charts-points.css";
|
|
153
|
+
@import "./ui/widgets/native-charts/native-charts-reference.css";
|
|
153
154
|
@import "./ui/widgets/native-charts/native-charts-zoom.css";
|
|
154
155
|
/* The editor's documents: `.nxgt-prose`, shared with the viewer. */
|
|
155
156
|
@import "./editor-prose.css";
|