@nxgt/material 2.18.1 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +80 -0
- package/README.md +1 -0
- package/dist/{_Uint8Array-C7apDrb7.js → _Uint8Array-B6RHzY7k.js} +1 -1
- package/dist/{_overRest-CCAbV-eT.js → _overRest-Cs3RIAVd.js} +1 -1
- package/dist/{async-slice-Cuekts5f.js → async-slice-CgbRYTRY.js} +3 -3
- package/dist/{blockDiagram-BEXU5L5S-iNiTd2F6.js → blockDiagram-BEXU5L5S-D5ptXmBP.js} +2 -2
- package/dist/{chunk-3FUC2YCW-C3_88DyD.js → chunk-3FUC2YCW-al8CepY8.js} +2 -2
- package/dist/{chunk-7M6MHVWA-DSA5AJyK.js → chunk-7M6MHVWA-BERAnmfo.js} +1 -1
- package/dist/{chunk-GNY47TPC-AFxr6Xhs.js → chunk-GNY47TPC-DMMDhC9T.js} +4 -4
- package/dist/{chunk-NETBCI7D-DUZYHta0.js → chunk-NETBCI7D-CsMBdu5o.js} +1 -1
- package/dist/{chunk-Z7XXMR3K-DDFBvLN4.js → chunk-Z7XXMR3K-CLYmaWUD.js} +1 -1
- package/dist/{classDiagram-v2-NBCMYWYE-Cx1q9jwX.js → classDiagram-v2-NBCMYWYE-C-6ddqhF.js} +2 -2
- package/dist/components/base.css +3 -1
- package/dist/{components-CEXxj5QP.js → components-C5y9FL-6.js} +23810 -23437
- package/dist/components.js +6 -6
- package/dist/{dagre-6A5THRUB-B3FAoh2m.js → dagre-6A5THRUB-Ck8np52h.js} +11 -11
- package/dist/{diagram-22UHCM2B-B1mxqDwI.js → diagram-22UHCM2B-oIfSvE0L.js} +2 -2
- package/dist/{diagram-3UASUU5V-DKbBxWI5.js → diagram-3UASUU5V-CAG93Qkg.js} +1 -1
- package/dist/dnd.js +1 -1
- package/dist/{elk-276RUBZZ-CeiRDj87.js → elk-276RUBZZ-BfEvNh_f.js} +3 -3
- package/dist/{erDiagram-OPXOYQCR-nyCpuYg6.js → erDiagram-OPXOYQCR-B966QSkJ.js} +2 -2
- package/dist/{field-blur-DNHXOY0J.js → field-blur-B6VqkpE6.js} +35 -23
- package/dist/{flowDiagram-KWPJA3E3-CAt7iv16.js → flowDiagram-KWPJA3E3-CzUHW7vw.js} +3 -3
- package/dist/{ganttDiagram-FUAMR5RP-g4YEKVC-.js → ganttDiagram-FUAMR5RP-B4JstFXN.js} +1 -1
- package/dist/{graphlib-DxjKaXeR.js → graphlib-CORKO6lR.js} +6 -6
- package/dist/hooks.js +2 -2
- package/dist/{i18n-provider-Dv9ZSmgO.js → i18n-provider-BC7MMAID.js} +1 -1
- package/dist/i18n.js +6 -6
- package/dist/{isArrayLikeObject-H8k6W51O.js → isArrayLikeObject-gzSxxbGJ.js} +3 -3
- package/dist/{isEmpty-B0Bavg-e.js → isEmpty-SD8ldTK-.js} +3 -3
- package/dist/{journeyDiagram-ZHPQQLJL-v7NsJ_vl.js → journeyDiagram-ZHPQQLJL-DcgTl4Bw.js} +1 -1
- package/dist/lib/components/ui/fields/index.d.ts +1 -0
- package/dist/lib/components/ui/fields/repeatable-group/index.d.ts +2 -0
- package/dist/lib/components/ui/fields/repeatable-group/partials/repeatable-group-footer.d.ts +14 -0
- package/dist/lib/components/ui/fields/repeatable-group/partials/repeatable-group-row.d.ts +19 -0
- package/dist/lib/components/ui/fields/repeatable-group/partials/repeatable-group-rows.d.ts +21 -0
- package/dist/lib/components/ui/fields/repeatable-group/partials/repeatable-group-status.d.ts +11 -0
- package/dist/lib/components/ui/fields/repeatable-group/repeatable-group-classes.d.ts +33 -0
- package/dist/lib/components/ui/fields/repeatable-group/repeatable-group-form-field.d.ts +28 -0
- package/dist/lib/components/ui/fields/repeatable-group/repeatable-group-names.d.ts +16 -0
- package/dist/lib/components/ui/fields/repeatable-group/repeatable-group.d.ts +12 -0
- package/dist/lib/components/ui/fields/repeatable-group/types.d.ts +45 -0
- package/dist/lib/components/ui/fields/repeatable-group/use-repeatable-group.d.ts +32 -0
- package/dist/lib/components/ui/fields/search-field/search-field.d.ts +7 -1
- package/dist/lib/components/ui/overlays/command/command-item.d.ts +10 -0
- package/dist/lib/components/ui/overlays/command/command.d.ts +5 -2
- package/dist/lib/components/ui/primitives/typography/typography.d.ts +2 -1
- package/dist/lib/components/ui/selection/checkbox-group/checkbox-group.d.ts +2 -0
- package/dist/lib/components/ui/selection/option-count/option-count.d.ts +18 -0
- package/dist/lib/components/ui/selection/radio-group/radio-group.d.ts +2 -0
- package/dist/lib/components/ui/selection/select-chip-field/next-selection.d.ts +10 -0
- package/dist/lib/components/ui/selection/select-chip-field/select-chip-field.d.ts +8 -1
- package/dist/lib/components/ui/selection/select-chip-field/select-chip-header.d.ts +15 -0
- package/dist/lib/components/ui/selection/select-chip-field/select-chip-option.d.ts +13 -0
- package/dist/lib/i18n/resources/en/en.d.ts +14 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +14 -0
- package/dist/lib/i18n/resources/fr/fr.d.ts +14 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +14 -0
- package/dist/lib/i18n/resources/resources.d.ts +28 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib.js +2 -2
- package/dist/main.js +16 -16
- package/dist/map.js +2 -2
- package/dist/material.css +1 -1
- package/dist/{merge-Js8537dg.js → merge-Cek5eQP5.js} +4 -4
- package/dist/{mermaid.core-BHmjz3IJ.js → mermaid.core-DZMjEtsT.js} +21 -21
- package/dist/{mindmap-definition-NLK3R4M7-xOeGZSSo.js → mindmap-definition-NLK3R4M7-BWaJFjFb.js} +2 -2
- package/dist/{pieDiagram-5QR66LMP-5nOKLXqH.js → pieDiagram-5QR66LMP-C8iomTeg.js} +1 -1
- package/dist/print.js +2 -2
- package/dist/{quadrantDiagram-O4NWA36T-B0RNQlBB.js → quadrantDiagram-O4NWA36T-D529X2yn.js} +1 -1
- package/dist/{requirementDiagram-PLB6GJNP-Cw85zSzP.js → requirementDiagram-PLB6GJNP-Cs5ieS_S.js} +2 -2
- package/dist/{sankeyDiagram-IPEJSGJF-APZoNvA9.js → sankeyDiagram-IPEJSGJF-BOIAba-k.js} +1 -1
- package/dist/{sortable-provider-CUT5Wfdl.js → sortable-provider-DNmv3XmW.js} +1 -1
- package/dist/{stateDiagram-v2-GCMORJYK-CfSjJkc3.js → stateDiagram-v2-GCMORJYK-CT46B5KK.js} +2 -2
- package/dist/{stored-language-BKoohv2_.js → stored-language-FHwsTPoM.js} +24 -0
- package/dist/{swimlanes-2SLR337P-Bv2VKn_d.js → swimlanes-2SLR337P-C8TrgNLm.js} +3 -3
- package/dist/{swimlanesDiagram-TC7HE7FX-Jk8do14f.js → swimlanesDiagram-TC7HE7FX-Dii9S4bC.js} +3 -3
- package/dist/{timeline-definition-EJHVYXUP-Bc40K9sk.js → timeline-definition-EJHVYXUP-K00somtn.js} +1 -1
- package/dist/{translate-material-CCJg3yfc.js → translate-material-cZ6VSQ98.js} +2 -2
- package/dist/{translator-DEde7BKz.js → translator-DX_ArUA5.js} +1 -1
- package/dist/{use-heading-spy-XkSExwoT.js → use-heading-spy-DR1jat6E.js} +2 -2
- package/dist/{use-material-translation-Cndoq_iK.js → use-material-translation-W6jOKCbO.js} +2 -2
- package/dist/{usecaseDiagram-POWQR4AR-CKd5UWWw.js → usecaseDiagram-POWQR4AR-liF9q6mE.js} +2 -2
- package/dist/{xychartDiagram-PMCCYNJV-CQJbSV7N.js → xychartDiagram-PMCCYNJV-B9Qx3wAO.js} +1 -1
- package/docs/components/README.md +1 -1
- package/docs/components/form-fields.md +146 -0
- package/docs/components/overlays-and-menus.md +2 -0
- package/docs/components/primitives.md +3 -1
- package/docs/components/selection-and-choice.md +20 -4
- package/docs/guides/forms.md +35 -0
- package/docs/previews/form-fields-repeatablegroup.webp +0 -0
- package/docs/roadmap.md +7 -0
- package/docs/troubleshooting.md +42 -0
- package/lib/components/base.css +3 -1
- package/package.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { S as e, _ as t, g as n, p as r, v as i, w as a, x as o } from "./translator-
|
|
2
|
-
import { n as s, r as c } from "./_overRest-
|
|
3
|
-
import { a as l, c as u, d, i as f, l as p, n as m, p as h, r as g, t as _, u as v } from "./_Uint8Array-
|
|
4
|
-
import { n as y, r as b, t as x } from "./isArrayLikeObject-
|
|
1
|
+
import { S as e, _ as t, g as n, p as r, v as i, w as a, x as o } from "./translator-DX_ArUA5.js";
|
|
2
|
+
import { n as s, r as c } from "./_overRest-Cs3RIAVd.js";
|
|
3
|
+
import { a as l, c as u, d, i as f, l as p, n as m, p as h, r as g, t as _, u as v } from "./_Uint8Array-B6RHzY7k.js";
|
|
4
|
+
import { n as y, r as b, t as x } from "./isArrayLikeObject-gzSxxbGJ.js";
|
|
5
5
|
//#region ../../node_modules/lodash-es/_baseCreate.js
|
|
6
6
|
var S = Object.create, C = function() {
|
|
7
7
|
function e() {}
|
|
@@ -8,9 +8,9 @@ import { a as he } from "./chunk-MBY4JIJT-BFIqOe-8.js";
|
|
|
8
8
|
import "./chunk-7PRAP22T-0C6_H8Li.js";
|
|
9
9
|
import "./chunk-7INBJB4K-k-I67NSP.js";
|
|
10
10
|
import "./chunk-5DYCD2WN-Cd1zazNp.js";
|
|
11
|
-
import "./chunk-Z7XXMR3K-
|
|
11
|
+
import "./chunk-Z7XXMR3K-CLYmaWUD.js";
|
|
12
12
|
import "./chunk-UA2S7LBM-ChuksCDg.js";
|
|
13
|
-
import { n as ge } from "./chunk-GNY47TPC-
|
|
13
|
+
import { n as ge } from "./chunk-GNY47TPC-DMMDhC9T.js";
|
|
14
14
|
import { n as _e, t as ve } from "./chunk-LNGE3PJU-DJjGTS7O.js";
|
|
15
15
|
//#region ../../node_modules/es-toolkit/dist/compat/_internal/isPrototype.mjs
|
|
16
16
|
function ye(e) {
|
|
@@ -302,7 +302,7 @@ var qe = "c4", Je = {
|
|
|
302
302
|
id: Ye,
|
|
303
303
|
detector: /* @__PURE__ */ p((e) => /^\s*(graph|flowchart)/.test(e), "detector"),
|
|
304
304
|
loader: /* @__PURE__ */ p(async () => {
|
|
305
|
-
let { diagram: e } = await import("./flowDiagram-KWPJA3E3-
|
|
305
|
+
let { diagram: e } = await import("./flowDiagram-KWPJA3E3-CzUHW7vw.js");
|
|
306
306
|
return {
|
|
307
307
|
id: Ye,
|
|
308
308
|
diagram: e
|
|
@@ -312,7 +312,7 @@ var qe = "c4", Je = {
|
|
|
312
312
|
id: Ze,
|
|
313
313
|
detector: /* @__PURE__ */ p((e) => /^\s*agentflow-beta\b/.test(e), "detector"),
|
|
314
314
|
loader: /* @__PURE__ */ p(async () => {
|
|
315
|
-
let { diagram: e } = await import("./diagram-22UHCM2B-
|
|
315
|
+
let { diagram: e } = await import("./diagram-22UHCM2B-oIfSvE0L.js");
|
|
316
316
|
return {
|
|
317
317
|
id: Ze,
|
|
318
318
|
diagram: e
|
|
@@ -322,7 +322,7 @@ var qe = "c4", Je = {
|
|
|
322
322
|
id: $e,
|
|
323
323
|
detector: /* @__PURE__ */ p((e) => /^\s*swimlane-beta\b/.test(e), "detector"),
|
|
324
324
|
loader: /* @__PURE__ */ p(async () => {
|
|
325
|
-
let { diagram: e } = await import("./swimlanesDiagram-TC7HE7FX-
|
|
325
|
+
let { diagram: e } = await import("./swimlanesDiagram-TC7HE7FX-Dii9S4bC.js");
|
|
326
326
|
return {
|
|
327
327
|
id: $e,
|
|
328
328
|
diagram: e
|
|
@@ -332,7 +332,7 @@ var qe = "c4", Je = {
|
|
|
332
332
|
id: tt,
|
|
333
333
|
detector: /* @__PURE__ */ p((e) => /^\s*erDiagram/.test(e), "detector"),
|
|
334
334
|
loader: /* @__PURE__ */ p(async () => {
|
|
335
|
-
let { diagram: e } = await import("./erDiagram-OPXOYQCR-
|
|
335
|
+
let { diagram: e } = await import("./erDiagram-OPXOYQCR-B966QSkJ.js");
|
|
336
336
|
return {
|
|
337
337
|
id: tt,
|
|
338
338
|
diagram: e
|
|
@@ -352,7 +352,7 @@ var qe = "c4", Je = {
|
|
|
352
352
|
id: at,
|
|
353
353
|
detector: /* @__PURE__ */ p((e) => /^\s*gantt/.test(e), "detector"),
|
|
354
354
|
loader: /* @__PURE__ */ p(async () => {
|
|
355
|
-
let { diagram: e } = await import("./ganttDiagram-FUAMR5RP-
|
|
355
|
+
let { diagram: e } = await import("./ganttDiagram-FUAMR5RP-B4JstFXN.js");
|
|
356
356
|
return {
|
|
357
357
|
id: at,
|
|
358
358
|
diagram: e
|
|
@@ -372,7 +372,7 @@ var qe = "c4", Je = {
|
|
|
372
372
|
id: lt,
|
|
373
373
|
detector: /* @__PURE__ */ p((e) => /^\s*pie/.test(e), "detector"),
|
|
374
374
|
loader: /* @__PURE__ */ p(async () => {
|
|
375
|
-
let { diagram: e } = await import("./pieDiagram-5QR66LMP-
|
|
375
|
+
let { diagram: e } = await import("./pieDiagram-5QR66LMP-C8iomTeg.js");
|
|
376
376
|
return {
|
|
377
377
|
id: lt,
|
|
378
378
|
diagram: e
|
|
@@ -382,7 +382,7 @@ var qe = "c4", Je = {
|
|
|
382
382
|
id: dt,
|
|
383
383
|
detector: /* @__PURE__ */ p((e) => /^\s*quadrantChart/.test(e), "detector"),
|
|
384
384
|
loader: /* @__PURE__ */ p(async () => {
|
|
385
|
-
let { diagram: e } = await import("./quadrantDiagram-O4NWA36T-
|
|
385
|
+
let { diagram: e } = await import("./quadrantDiagram-O4NWA36T-D529X2yn.js");
|
|
386
386
|
return {
|
|
387
387
|
id: dt,
|
|
388
388
|
diagram: e
|
|
@@ -392,7 +392,7 @@ var qe = "c4", Je = {
|
|
|
392
392
|
id: pt,
|
|
393
393
|
detector: /* @__PURE__ */ p((e) => /^\s*xychart(-beta)?/.test(e), "detector"),
|
|
394
394
|
loader: /* @__PURE__ */ p(async () => {
|
|
395
|
-
let { diagram: e } = await import("./xychartDiagram-PMCCYNJV-
|
|
395
|
+
let { diagram: e } = await import("./xychartDiagram-PMCCYNJV-B9Qx3wAO.js");
|
|
396
396
|
return {
|
|
397
397
|
id: pt,
|
|
398
398
|
diagram: e
|
|
@@ -402,7 +402,7 @@ var qe = "c4", Je = {
|
|
|
402
402
|
id: ht,
|
|
403
403
|
detector: /* @__PURE__ */ p((e) => /^\s*requirement(Diagram)?/.test(e), "detector"),
|
|
404
404
|
loader: /* @__PURE__ */ p(async () => {
|
|
405
|
-
let { diagram: e } = await import("./requirementDiagram-PLB6GJNP-
|
|
405
|
+
let { diagram: e } = await import("./requirementDiagram-PLB6GJNP-Cs5ieS_S.js");
|
|
406
406
|
return {
|
|
407
407
|
id: ht,
|
|
408
408
|
diagram: e
|
|
@@ -422,7 +422,7 @@ var qe = "c4", Je = {
|
|
|
422
422
|
id: yt,
|
|
423
423
|
detector: /* @__PURE__ */ p((e) => /^\s*classDiagram/.test(e), "detector"),
|
|
424
424
|
loader: /* @__PURE__ */ p(async () => {
|
|
425
|
-
let { diagram: e } = await import("./classDiagram-v2-NBCMYWYE-
|
|
425
|
+
let { diagram: e } = await import("./classDiagram-v2-NBCMYWYE-C-6ddqhF.js");
|
|
426
426
|
return {
|
|
427
427
|
id: yt,
|
|
428
428
|
diagram: e
|
|
@@ -432,7 +432,7 @@ var qe = "c4", Je = {
|
|
|
432
432
|
id: xt,
|
|
433
433
|
detector: /* @__PURE__ */ p((e) => /^\s*stateDiagram/.test(e), "detector"),
|
|
434
434
|
loader: /* @__PURE__ */ p(async () => {
|
|
435
|
-
let { diagram: e } = await import("./stateDiagram-v2-GCMORJYK-
|
|
435
|
+
let { diagram: e } = await import("./stateDiagram-v2-GCMORJYK-CT46B5KK.js");
|
|
436
436
|
return {
|
|
437
437
|
id: xt,
|
|
438
438
|
diagram: e
|
|
@@ -442,7 +442,7 @@ var qe = "c4", Je = {
|
|
|
442
442
|
id: Ct,
|
|
443
443
|
detector: /* @__PURE__ */ p((e) => /^\s*journey/.test(e), "detector"),
|
|
444
444
|
loader: /* @__PURE__ */ p(async () => {
|
|
445
|
-
let { diagram: e } = await import("./journeyDiagram-ZHPQQLJL-
|
|
445
|
+
let { diagram: e } = await import("./journeyDiagram-ZHPQQLJL-DcgTl4Bw.js");
|
|
446
446
|
return {
|
|
447
447
|
id: Ct,
|
|
448
448
|
diagram: e
|
|
@@ -460,7 +460,7 @@ var qe = "c4", Je = {
|
|
|
460
460
|
id: Ot,
|
|
461
461
|
detector: /* @__PURE__ */ p((e, t = {}) => /^\s*flowchart-elk/.test(e) ? (t.layout = "elk", !0) : !1, "detector"),
|
|
462
462
|
loader: /* @__PURE__ */ p(async () => {
|
|
463
|
-
let { diagram: e } = await import("./flowDiagram-KWPJA3E3-
|
|
463
|
+
let { diagram: e } = await import("./flowDiagram-KWPJA3E3-CzUHW7vw.js");
|
|
464
464
|
return {
|
|
465
465
|
id: Ot,
|
|
466
466
|
diagram: e
|
|
@@ -470,7 +470,7 @@ var qe = "c4", Je = {
|
|
|
470
470
|
id: At,
|
|
471
471
|
detector: /* @__PURE__ */ p((e) => /^\s*timeline/.test(e), "detector"),
|
|
472
472
|
loader: /* @__PURE__ */ p(async () => {
|
|
473
|
-
let { diagram: e } = await import("./timeline-definition-EJHVYXUP-
|
|
473
|
+
let { diagram: e } = await import("./timeline-definition-EJHVYXUP-K00somtn.js");
|
|
474
474
|
return {
|
|
475
475
|
id: At,
|
|
476
476
|
diagram: e
|
|
@@ -480,7 +480,7 @@ var qe = "c4", Je = {
|
|
|
480
480
|
id: Mt,
|
|
481
481
|
detector: /* @__PURE__ */ p((e) => /^\s*mindmap/.test(e), "detector"),
|
|
482
482
|
loader: /* @__PURE__ */ p(async () => {
|
|
483
|
-
let { diagram: e } = await import("./mindmap-definition-NLK3R4M7-
|
|
483
|
+
let { diagram: e } = await import("./mindmap-definition-NLK3R4M7-BWaJFjFb.js");
|
|
484
484
|
return {
|
|
485
485
|
id: Mt,
|
|
486
486
|
diagram: e
|
|
@@ -500,7 +500,7 @@ var qe = "c4", Je = {
|
|
|
500
500
|
id: It,
|
|
501
501
|
detector: /* @__PURE__ */ p((e) => /^\s*sankey(-beta)?/.test(e), "detector"),
|
|
502
502
|
loader: /* @__PURE__ */ p(async () => {
|
|
503
|
-
let { diagram: e } = await import("./sankeyDiagram-IPEJSGJF-
|
|
503
|
+
let { diagram: e } = await import("./sankeyDiagram-IPEJSGJF-BOIAba-k.js");
|
|
504
504
|
return {
|
|
505
505
|
id: It,
|
|
506
506
|
diagram: e
|
|
@@ -530,7 +530,7 @@ var qe = "c4", Je = {
|
|
|
530
530
|
id: Ht,
|
|
531
531
|
detector: /* @__PURE__ */ p((e) => /^\s*block(-beta)?/.test(e), "detector"),
|
|
532
532
|
loader: /* @__PURE__ */ p(async () => {
|
|
533
|
-
let { diagram: e } = await import("./blockDiagram-BEXU5L5S-
|
|
533
|
+
let { diagram: e } = await import("./blockDiagram-BEXU5L5S-D5ptXmBP.js");
|
|
534
534
|
return {
|
|
535
535
|
id: Ht,
|
|
536
536
|
diagram: e
|
|
@@ -590,7 +590,7 @@ var qe = "c4", Je = {
|
|
|
590
590
|
id: en,
|
|
591
591
|
detector: /* @__PURE__ */ p((e) => /^\s*treemap/.test(e), "detector"),
|
|
592
592
|
loader: /* @__PURE__ */ p(async () => {
|
|
593
|
-
let { diagram: e } = await import("./diagram-3UASUU5V-
|
|
593
|
+
let { diagram: e } = await import("./diagram-3UASUU5V-CAG93Qkg.js");
|
|
594
594
|
return {
|
|
595
595
|
id: en,
|
|
596
596
|
diagram: e
|
|
@@ -600,7 +600,7 @@ var qe = "c4", Je = {
|
|
|
600
600
|
id: nn,
|
|
601
601
|
detector: /* @__PURE__ */ p((e) => /^\s*usecase-beta(?:\s|$)/.test(e), "detector"),
|
|
602
602
|
loader: /* @__PURE__ */ p(async () => {
|
|
603
|
-
let { diagram: e } = await import("./usecaseDiagram-POWQR4AR-
|
|
603
|
+
let { diagram: e } = await import("./usecaseDiagram-POWQR4AR-liF9q6mE.js");
|
|
604
604
|
return {
|
|
605
605
|
id: nn,
|
|
606
606
|
diagram: e
|
package/dist/{mindmap-definition-NLK3R4M7-xOeGZSSo.js → mindmap-definition-NLK3R4M7-BWaJFjFb.js}
RENAMED
|
@@ -7,11 +7,11 @@ import "./chunk-MBY4JIJT-BFIqOe-8.js";
|
|
|
7
7
|
import "./chunk-7PRAP22T-0C6_H8Li.js";
|
|
8
8
|
import "./chunk-7INBJB4K-k-I67NSP.js";
|
|
9
9
|
import "./chunk-5DYCD2WN-Cd1zazNp.js";
|
|
10
|
-
import "./chunk-Z7XXMR3K-
|
|
10
|
+
import "./chunk-Z7XXMR3K-CLYmaWUD.js";
|
|
11
11
|
import { t as u } from "./chunk-XXDRQBXY-dKXxu_aj.js";
|
|
12
12
|
import { t as d } from "./chunk-WEXAMYUT-CbFOhEve.js";
|
|
13
13
|
import "./chunk-UA2S7LBM-ChuksCDg.js";
|
|
14
|
-
import { r as f, t as p } from "./chunk-GNY47TPC-
|
|
14
|
+
import { r as f, t as p } from "./chunk-GNY47TPC-DMMDhC9T.js";
|
|
15
15
|
//#region ../../node_modules/uuid/dist/stringify.js
|
|
16
16
|
var m = [];
|
|
17
17
|
for (let e = 0; e < 256; ++e) m.push((e + 256).toString(16).slice(1));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ct as e, ot as t } from "./components-
|
|
1
|
+
import { ct as e, ot as t } from "./components-C5y9FL-6.js";
|
|
2
2
|
import { n } from "./src-CsLQInsN.js";
|
|
3
3
|
import { i as r, p as i } from "./chunk-ZIGJFQKS-9VXArDKF.js";
|
|
4
4
|
import { t as a } from "./ordinal-DwxdXP1t.js";
|
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-BC7MMAID.js";
|
|
2
|
+
import { t } from "./translate-material-cZ6VSQ98.js";
|
|
3
3
|
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
4
|
import { Children as i, createContext as a, isValidElement as o, useCallback as s, useContext as c, useEffect as l, useMemo as u, useState as d } from "react";
|
|
5
5
|
import { OBJECT_URL_TTL_MS as f, downloadPdfFile as p } from "@nxgt/material-core/pdf-download";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { rt as e } from "./components-
|
|
1
|
+
import { rt as e } from "./components-C5y9FL-6.js";
|
|
2
2
|
import { n as t, t as n } from "./src-CsLQInsN.js";
|
|
3
3
|
import { n as r } from "./chunk-Y2CYZVJY-BAad7w_K.js";
|
|
4
4
|
import { D as i, H as a, U as o, a as s, c, f as l, q as u, v as d, w as f, x as p, y as m, z as h } from "./chunk-O7XYJQB3-BChweQ_V.js";
|
package/dist/{requirementDiagram-PLB6GJNP-Cw85zSzP.js → requirementDiagram-PLB6GJNP-Cs5ieS_S.js}
RENAMED
|
@@ -8,11 +8,11 @@ import "./chunk-7PRAP22T-0C6_H8Li.js";
|
|
|
8
8
|
import { a as p, i as m, o as h, r as g } from "./chunk-J5ZVWO5B-DmRRmhon.js";
|
|
9
9
|
import "./chunk-7INBJB4K-k-I67NSP.js";
|
|
10
10
|
import "./chunk-5DYCD2WN-Cd1zazNp.js";
|
|
11
|
-
import "./chunk-Z7XXMR3K-
|
|
11
|
+
import "./chunk-Z7XXMR3K-CLYmaWUD.js";
|
|
12
12
|
import { t as _ } from "./chunk-XXDRQBXY-dKXxu_aj.js";
|
|
13
13
|
import { t as v } from "./chunk-WEXAMYUT-CbFOhEve.js";
|
|
14
14
|
import "./chunk-UA2S7LBM-ChuksCDg.js";
|
|
15
|
-
import { r as y, t as b } from "./chunk-GNY47TPC-
|
|
15
|
+
import { r as y, t as b } from "./chunk-GNY47TPC-DMMDhC9T.js";
|
|
16
16
|
//#region ../../node_modules/mermaid/dist/chunks/mermaid.core/requirementDiagram-PLB6GJNP.mjs
|
|
17
17
|
var x = (function() {
|
|
18
18
|
var e = /* @__PURE__ */ n(function(e, t, n, r) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./utils-DC8bw9A_.js";
|
|
2
2
|
import { pt as t, t as n } from "./icon-button-B1nN3J6B.js";
|
|
3
|
-
import { t as r } from "./use-material-translation-
|
|
3
|
+
import { t as r } from "./use-material-translation-W6jOKCbO.js";
|
|
4
4
|
import { GripVertical as i } from "lucide-react";
|
|
5
5
|
import { jsx as a } from "react/jsx-runtime";
|
|
6
6
|
import o, { cloneElement as s, createContext as c, forwardRef as l, memo as u, useCallback as d, useContext as f, useEffect as p, useLayoutEffect as m, useMemo as h, useReducer as g, useRef as _, useState as v } from "react";
|
|
@@ -8,12 +8,12 @@ import "./chunk-7PRAP22T-0C6_H8Li.js";
|
|
|
8
8
|
import { a as h, i as g, o as _, r as v } from "./chunk-J5ZVWO5B-DmRRmhon.js";
|
|
9
9
|
import "./chunk-7INBJB4K-k-I67NSP.js";
|
|
10
10
|
import "./chunk-5DYCD2WN-Cd1zazNp.js";
|
|
11
|
-
import "./chunk-Z7XXMR3K-
|
|
11
|
+
import "./chunk-Z7XXMR3K-CLYmaWUD.js";
|
|
12
12
|
import { t as y } from "./chunk-GWA4HPMP-B8jXI0Tl.js";
|
|
13
13
|
import { t as b } from "./chunk-XXDRQBXY-dKXxu_aj.js";
|
|
14
14
|
import { t as x } from "./chunk-WEXAMYUT-CbFOhEve.js";
|
|
15
15
|
import "./chunk-UA2S7LBM-ChuksCDg.js";
|
|
16
|
-
import { r as S, t as C } from "./chunk-GNY47TPC-
|
|
16
|
+
import { r as S, t as C } from "./chunk-GNY47TPC-DMMDhC9T.js";
|
|
17
17
|
//#region ../../node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-v2-GCMORJYK.mjs
|
|
18
18
|
var w = (function() {
|
|
19
19
|
var e = /* @__PURE__ */ i(function(e, t, n, r) {
|
|
@@ -752,6 +752,7 @@ var e = {
|
|
|
752
752
|
placeholder: "Search…",
|
|
753
753
|
empty: "No results"
|
|
754
754
|
},
|
|
755
|
+
"option-count": { label: "{count, plural, one {result} other {results}}" },
|
|
755
756
|
autocomplete: {
|
|
756
757
|
empty: "No option found.",
|
|
757
758
|
add: "Add \"{query}\"",
|
|
@@ -1231,6 +1232,17 @@ var e = {
|
|
|
1231
1232
|
saved: "I have saved these codes",
|
|
1232
1233
|
"saved-required": "Tick the box once your codes are safe",
|
|
1233
1234
|
done: "Done"
|
|
1235
|
+
},
|
|
1236
|
+
"repeatable-group": {
|
|
1237
|
+
row: "row",
|
|
1238
|
+
add: "Add {label}",
|
|
1239
|
+
remove: "Remove {label} {index}",
|
|
1240
|
+
"move-up": "Move {label} {index} up",
|
|
1241
|
+
"move-down": "Move {label} {index} down",
|
|
1242
|
+
added: "Added {label} {index}",
|
|
1243
|
+
removed: "Removed {label} {index}",
|
|
1244
|
+
moved: "Moved {label} {from} to position {to}",
|
|
1245
|
+
"max-reached": "Maximum reached ({max})"
|
|
1234
1246
|
}
|
|
1235
1247
|
} },
|
|
1236
1248
|
fr: { material: {
|
|
@@ -1984,6 +1996,7 @@ var e = {
|
|
|
1984
1996
|
placeholder: "Rechercher…",
|
|
1985
1997
|
empty: "Aucun résultat"
|
|
1986
1998
|
},
|
|
1999
|
+
"option-count": { label: "{count, plural, one {résultat} other {résultats}}" },
|
|
1987
2000
|
autocomplete: {
|
|
1988
2001
|
empty: "Aucune option.",
|
|
1989
2002
|
add: "Ajouter « {query} »",
|
|
@@ -2463,6 +2476,17 @@ var e = {
|
|
|
2463
2476
|
saved: "J'ai enregistré ces codes",
|
|
2464
2477
|
"saved-required": "Cochez la case une fois vos codes en lieu sûr",
|
|
2465
2478
|
done: "Terminé"
|
|
2479
|
+
},
|
|
2480
|
+
"repeatable-group": {
|
|
2481
|
+
row: "ligne",
|
|
2482
|
+
add: "Ajouter une {label}",
|
|
2483
|
+
remove: "Retirer la {label} {index}",
|
|
2484
|
+
"move-up": "Monter la {label} {index}",
|
|
2485
|
+
"move-down": "Descendre la {label} {index}",
|
|
2486
|
+
added: "Ajout : {label} {index}",
|
|
2487
|
+
removed: "Suppression : {label} {index}",
|
|
2488
|
+
moved: "Déplacement : {label} {from} en position {to}",
|
|
2489
|
+
"max-reached": "Maximum atteint ({max})"
|
|
2466
2490
|
}
|
|
2467
2491
|
} }
|
|
2468
2492
|
}, t = "language", n = "en", r = Object.keys(e);
|
|
@@ -7,10 +7,10 @@ import "./chunk-MBY4JIJT-BFIqOe-8.js";
|
|
|
7
7
|
import "./chunk-7PRAP22T-0C6_H8Li.js";
|
|
8
8
|
import "./chunk-7INBJB4K-k-I67NSP.js";
|
|
9
9
|
import "./chunk-5DYCD2WN-Cd1zazNp.js";
|
|
10
|
-
import "./chunk-Z7XXMR3K-
|
|
10
|
+
import "./chunk-Z7XXMR3K-CLYmaWUD.js";
|
|
11
11
|
import "./chunk-UA2S7LBM-ChuksCDg.js";
|
|
12
|
-
import { r as n } from "./chunk-3FUC2YCW-
|
|
13
|
-
import { t as r } from "./chunk-NETBCI7D-
|
|
12
|
+
import { r as n } from "./chunk-3FUC2YCW-al8CepY8.js";
|
|
13
|
+
import { t as r } from "./chunk-NETBCI7D-CsMBdu5o.js";
|
|
14
14
|
//#region ../../node_modules/mermaid/dist/chunks/mermaid.core/swimlanes-2SLR337P.mjs
|
|
15
15
|
function i(e, { measure: t }) {
|
|
16
16
|
let n = e.config?.swimlane?.lineHops;
|
package/dist/{swimlanesDiagram-TC7HE7FX-Jk8do14f.js → swimlanesDiagram-TC7HE7FX-Dii9S4bC.js}
RENAMED
|
@@ -7,14 +7,14 @@ import "./chunk-MBY4JIJT-BFIqOe-8.js";
|
|
|
7
7
|
import "./chunk-7PRAP22T-0C6_H8Li.js";
|
|
8
8
|
import "./chunk-7INBJB4K-k-I67NSP.js";
|
|
9
9
|
import "./chunk-5DYCD2WN-Cd1zazNp.js";
|
|
10
|
-
import "./chunk-Z7XXMR3K-
|
|
10
|
+
import "./chunk-Z7XXMR3K-CLYmaWUD.js";
|
|
11
11
|
import "./chunk-GWA4HPMP-B8jXI0Tl.js";
|
|
12
12
|
import "./chunk-XXDRQBXY-dKXxu_aj.js";
|
|
13
13
|
import "./chunk-WEXAMYUT-CbFOhEve.js";
|
|
14
14
|
import "./chunk-UA2S7LBM-ChuksCDg.js";
|
|
15
|
-
import "./chunk-GNY47TPC-
|
|
15
|
+
import "./chunk-GNY47TPC-DMMDhC9T.js";
|
|
16
16
|
import "./chunk-LNGE3PJU-DJjGTS7O.js";
|
|
17
|
-
import { r as t, t as n } from "./chunk-7M6MHVWA-
|
|
17
|
+
import { r as t, t as n } from "./chunk-7M6MHVWA-BERAnmfo.js";
|
|
18
18
|
//#region ../../node_modules/mermaid/dist/chunks/mermaid.core/swimlanesDiagram-TC7HE7FX.mjs
|
|
19
19
|
var r = n({ styles: /* @__PURE__ */ e((e) => `${t(e)}
|
|
20
20
|
.swimlane.cluster:not([data-color-id]) rect {
|
package/dist/{timeline-definition-EJHVYXUP-Bc40K9sk.js → timeline-definition-EJHVYXUP-K00somtn.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ct as e } from "./components-
|
|
1
|
+
import { ct as e } from "./components-C5y9FL-6.js";
|
|
2
2
|
import { n as t, t as n } from "./src-CsLQInsN.js";
|
|
3
3
|
import { p as r } from "./chunk-ZIGJFQKS-9VXArDKF.js";
|
|
4
4
|
import { n as i, t as a } from "./chunk-Y2CYZVJY-BAad7w_K.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "./stored-language-
|
|
2
|
-
import { E as e, r as t } from "./translator-
|
|
1
|
+
import "./stored-language-FHwsTPoM.js";
|
|
2
|
+
import { E as e, r as t } from "./translator-DX_ArUA5.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,4 +1,4 @@
|
|
|
1
|
-
import { a as e, i as t, o as n, t as r } from "./stored-language-
|
|
1
|
+
import { a as e, i as t, o as n, t as r } from "./stored-language-FHwsTPoM.js";
|
|
2
2
|
//#region ../../node_modules/@formatjs/fast-memoize/index.js
|
|
3
3
|
function i(e, t) {
|
|
4
4
|
let n = t && t.cache ? t.cache : ne, r = t && t.serializer ? t.serializer : ee;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as e } from "./stored-language-
|
|
2
|
-
import { r as t } from "./i18n-provider-
|
|
1
|
+
import { n as e } from "./stored-language-FHwsTPoM.js";
|
|
2
|
+
import { r as t } from "./i18n-provider-BC7MMAID.js";
|
|
3
3
|
import { _ as n, g as r, h as i, n as a, v as o, y as s } from "./number.utils-BiBN2hWJ.js";
|
|
4
4
|
import { createContext as c, useCallback as l, useContext as u, useEffect as d, useMemo as f, useRef as p, useSyncExternalStore as m } from "react";
|
|
5
5
|
//#region lib/hooks/resolve-theme.ts
|
|
@@ -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-BC7MMAID.js";
|
|
2
|
+
import { t } from "./translate-material-cZ6VSQ98.js";
|
|
3
3
|
import { useCallback as n } from "react";
|
|
4
4
|
//#region lib/i18n/use-material-translation.ts
|
|
5
5
|
function r() {
|
|
@@ -8,11 +8,11 @@ import "./chunk-7PRAP22T-0C6_H8Li.js";
|
|
|
8
8
|
import { a as g, i as _, o as v, r as y } from "./chunk-J5ZVWO5B-DmRRmhon.js";
|
|
9
9
|
import "./chunk-7INBJB4K-k-I67NSP.js";
|
|
10
10
|
import "./chunk-5DYCD2WN-Cd1zazNp.js";
|
|
11
|
-
import "./chunk-Z7XXMR3K-
|
|
11
|
+
import "./chunk-Z7XXMR3K-CLYmaWUD.js";
|
|
12
12
|
import { t as ee } from "./chunk-XXDRQBXY-dKXxu_aj.js";
|
|
13
13
|
import { t as te } from "./chunk-WEXAMYUT-CbFOhEve.js";
|
|
14
14
|
import "./chunk-UA2S7LBM-ChuksCDg.js";
|
|
15
|
-
import { r as ne, t as re } from "./chunk-GNY47TPC-
|
|
15
|
+
import { r as ne, t as re } from "./chunk-GNY47TPC-DMMDhC9T.js";
|
|
16
16
|
//#region ../../node_modules/chevrotain/node_modules/lodash-es/_freeGlobal.js
|
|
17
17
|
var ie = typeof global == "object" && global && global.Object === Object && global, ae = typeof self == "object" && self && self.Object === Object && self, b = ie || ae || Function("return this")(), oe = b.Symbol, se = Object.prototype, ce = se.hasOwnProperty, le = se.toString, ue = oe ? oe.toStringTag : void 0;
|
|
18
18
|
function de(e) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { at as e, rt as t, st as n } from "./components-
|
|
1
|
+
import { at as e, rt as t, st as n } from "./components-C5y9FL-6.js";
|
|
2
2
|
import { n as r } from "./src-CsLQInsN.js";
|
|
3
3
|
import { i } from "./chunk-ZIGJFQKS-9VXArDKF.js";
|
|
4
4
|
import { n as a } from "./chunk-Y2CYZVJY-BAad7w_K.js";
|
|
@@ -26,7 +26,7 @@ Anything you press that is not a field: buttons, link buttons, copy, load more,
|
|
|
26
26
|
|
|
27
27
|
## [Form fields](form-fields.md)
|
|
28
28
|
|
|
29
|
-
Labelled inputs with a value, each with its form-library wrapper, and the composite values (attributes, contacts, address, opening hours),
|
|
29
|
+
Labelled inputs with a value, each with its form-library wrapper, and the composite values (attributes, contacts, address, opening hours), the titled sections a long form is laid out in, and the rows a user adds and removes. 26 entries.
|
|
30
30
|
|
|
31
31
|
[<img src="../previews/form-fields-textfield.webp" height="72" alt="TextField">](form-fields.md#textfield)
|
|
32
32
|
[<img src="../previews/form-fields-phonefield.webp" height="72" alt="PhoneField">](form-fields.md#phonefield)
|
|
@@ -11,6 +11,7 @@ for the value type each one writes. Everything is imported from
|
|
|
11
11
|
| --- | --- | --- |
|
|
12
12
|
| <img src="../previews/form-fields-field.webp" width="96" alt=""> | [Field](#field) | Renders the field matching a config `type` |
|
|
13
13
|
| <img src="../previews/form-fields-formsection.webp" width="96" alt=""> | [FormSection](#formsection) | Titled section of a form, one column on a phone |
|
|
14
|
+
| <img src="../previews/form-fields-repeatablegroup.webp" width="96" alt=""> | [RepeatableGroup](#repeatablegroup) | Rows a user adds, removes and reorders |
|
|
14
15
|
| <img src="../previews/form-fields-textfield.webp" width="96" alt=""> | [TextField](#textfield) | Labelled input with adornments and helper text |
|
|
15
16
|
| <img src="../previews/form-fields-textareafield.webp" width="96" alt=""> | [TextareaField](#textareafield) | Labelled textarea with row sizing and a counter |
|
|
16
17
|
| <img src="../previews/form-fields-emailfield.webp" width="96" alt=""> | [EmailField](#emailfield) | Validates on blur, `mailto:` button |
|
|
@@ -163,6 +164,131 @@ semibold, uppercase and muted, set apart from the fields' labels, and reads
|
|
|
163
164
|
|
|
164
165
|
---
|
|
165
166
|
|
|
167
|
+
## RepeatableGroup
|
|
168
|
+
|
|
169
|
+

|
|
170
|
+
|
|
171
|
+
Rows of fields a user adds, removes and, optionally, reorders — a school
|
|
172
|
+
year's periods, a list of contacts. `RepeatableGroupFormField` wires it to
|
|
173
|
+
react-hook-form's `useFieldArray`; each row's fields are your own form
|
|
174
|
+
wrappers, rendered by `renderRow`.
|
|
175
|
+
|
|
176
|
+
```tsx
|
|
177
|
+
import { useForm } from 'react-hook-form';
|
|
178
|
+
import {
|
|
179
|
+
Button,
|
|
180
|
+
DateFormField,
|
|
181
|
+
RepeatableGroupFormField,
|
|
182
|
+
TextFormField,
|
|
183
|
+
} from '@nxgt/material/components';
|
|
184
|
+
|
|
185
|
+
type Period = { name: string; start?: Date; end?: Date };
|
|
186
|
+
type Values = { periods: Period[] };
|
|
187
|
+
|
|
188
|
+
export function SchoolYearForm({ onSave }: { onSave: (values: Values) => void }) {
|
|
189
|
+
const { control, handleSubmit } = useForm<Values>({
|
|
190
|
+
defaultValues: { periods: [{ name: 'Term 1' }] },
|
|
191
|
+
});
|
|
192
|
+
return (
|
|
193
|
+
<form className="form-grid-layout" onSubmit={handleSubmit(onSave)}>
|
|
194
|
+
<div data-slot="form-fields">
|
|
195
|
+
<RepeatableGroupFormField
|
|
196
|
+
control={control}
|
|
197
|
+
name="periods"
|
|
198
|
+
label="Periods"
|
|
199
|
+
rowLabel="period"
|
|
200
|
+
addLabel="Add period"
|
|
201
|
+
max={6}
|
|
202
|
+
reorderable
|
|
203
|
+
emptyTitle="No periods yet"
|
|
204
|
+
newRow={() => ({ name: '' })}
|
|
205
|
+
renderRow={({ index }) => (
|
|
206
|
+
<>
|
|
207
|
+
<TextFormField control={control} name={`periods.${index}.name`} label="Name" />
|
|
208
|
+
<DateFormField control={control} name={`periods.${index}.start`} label="Start date" />
|
|
209
|
+
<DateFormField control={control} name={`periods.${index}.end`} label="End date" />
|
|
210
|
+
</>
|
|
211
|
+
)}
|
|
212
|
+
/>
|
|
213
|
+
</div>
|
|
214
|
+
<div data-slot="form-actions">
|
|
215
|
+
<Button type="submit">Save</Button>
|
|
216
|
+
</div>
|
|
217
|
+
</form>
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
| Prop | Type | Default | Effect |
|
|
223
|
+
| --- | --- | --- | --- |
|
|
224
|
+
| `control`, `name` | `Control<T>`, `ArrayPath<T>` | — | the form and its array (`RepeatableGroupFormField`) |
|
|
225
|
+
| `newRow` | `() => FieldArray<T, N>` | — | the value Add appends |
|
|
226
|
+
| `renderRow` | `(row) => ReactNode` | — | one row's fields; `row` is `{ field, index, position, path }` (`index` 0-based, `position` 1-based, `path` `${name}.${index}`) |
|
|
227
|
+
| `label` | `ReactNode` | — | names the group (the list inside it is not named again) |
|
|
228
|
+
| `rowLabel` | `string` | `'row'` (translated) | names each row's buttons ("Remove period 2") and the announcements |
|
|
229
|
+
| `addLabel` | `string` | `'Add {rowLabel}'` | the Add button's text |
|
|
230
|
+
| `reorderable` | `boolean` | `false` | move up / move down buttons on each row |
|
|
231
|
+
| `max` | `number` | — | at this many rows, Add is disabled and says why |
|
|
232
|
+
| `min` | `number` | — | at this many rows, Remove is disabled |
|
|
233
|
+
| `emptyTitle`, `emptyDescription` | `ReactNode` | — | an `EmptyState` when there is no row |
|
|
234
|
+
| `disabled` | `boolean` | the form's | disables every button |
|
|
235
|
+
|
|
236
|
+
Without a form library, `RepeatableGroup` takes the rows and the three
|
|
237
|
+
actions; the move buttons show only with `onMove`:
|
|
238
|
+
|
|
239
|
+
```tsx
|
|
240
|
+
import { useState } from 'react';
|
|
241
|
+
import { RepeatableGroup, TextField } from '@nxgt/material/components';
|
|
242
|
+
|
|
243
|
+
type Guest = { id: string; name: string };
|
|
244
|
+
|
|
245
|
+
export function Guests() {
|
|
246
|
+
const [guests, setGuests] = useState<Guest[]>([]);
|
|
247
|
+
const rename = (index: number, name: string) =>
|
|
248
|
+
setGuests((list) => list.map((g, i) => (i === index ? { ...g, name } : g)));
|
|
249
|
+
return (
|
|
250
|
+
<RepeatableGroup
|
|
251
|
+
label="Guests"
|
|
252
|
+
rowLabel="guest"
|
|
253
|
+
items={guests}
|
|
254
|
+
onAdd={() => setGuests((list) => [...list, { id: crypto.randomUUID(), name: '' }])}
|
|
255
|
+
onRemove={(index) => setGuests((list) => list.filter((_, i) => i !== index))}
|
|
256
|
+
renderRow={({ item, index }) => (
|
|
257
|
+
<TextField label="Name" value={item.name} onChange={(e) => rename(index, e.target.value)} />
|
|
258
|
+
)}
|
|
259
|
+
/>
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
`getKey` defaults to the item's `id`. That is the key react-hook-form's
|
|
265
|
+
`useFieldArray` puts on each of its `fields` (a generated id, not your data's),
|
|
266
|
+
so `RepeatableGroupFormField` needs none; a plain list without an `id` falls
|
|
267
|
+
back to the index, and should pass `getKey`. `error` shows an error under the
|
|
268
|
+
rows.
|
|
269
|
+
|
|
270
|
+
`rowLabel` is a lower-case noun. The French templates carry the feminine
|
|
271
|
+
article ("Ajouter une ligne", "Retirer la ligne 2"), so a French app passes a
|
|
272
|
+
feminine noun (`rowLabel="période"`), or overrides `addLabel` and the
|
|
273
|
+
`material.repeatable-group.*` keys in its own bundle (`mergeResources`) for a
|
|
274
|
+
masculine one.
|
|
275
|
+
|
|
276
|
+
- **Semantics:** a `role="group"` named by `label`, its rows a list
|
|
277
|
+
(`getAllByRole('listitem')`), each row's icon buttons named after it
|
|
278
|
+
("Remove period 2", "Move period 2 up").
|
|
279
|
+
- **Focus and announcements:** see
|
|
280
|
+
[Rows a user adds and removes](../guides/forms.md#rows-a-user-adds-and-removes);
|
|
281
|
+
at `max`, Add stays focusable (`aria-disabled`) and is described by
|
|
282
|
+
"Maximum reached (6)".
|
|
283
|
+
- **Errors:** the array's own error (`errors.<name>.message` or `.root.message`)
|
|
284
|
+
describes the group; each row's fields show their own.
|
|
285
|
+
- **Layout:** one column on a phone, columns of at least 11rem from a container
|
|
286
|
+
width of `@xl`; no inline style.
|
|
287
|
+
|
|
288
|
+
**Storybook:** `Form fields/RepeatableGroup` · **Vue:** `RepeatableGroup`, `RepeatableGroupFormField`
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
166
292
|
## TextField
|
|
167
293
|
|
|
168
294
|

|
|
@@ -429,8 +555,28 @@ import { SearchField } from '@nxgt/material/components';
|
|
|
429
555
|
| `onValueChange` | `(value: string) => void` | — | the text, debounced when `debounceMs` is set; the latest `onValueChange` is called when the delay ends, so an inline arrow is safe |
|
|
430
556
|
| `debounceMs` | `number` | `0` | delay before `onValueChange`; `0` calls it on every key |
|
|
431
557
|
| `loading` | `boolean` | `false` | spinner in place of the clear button |
|
|
558
|
+
| `shortcut` | `string` | — | a hint for the key that focuses the field, e.g. `"/"`: a `Kbd` at the end while the field is empty, not loading and not disabled (`aria-hidden`) and `aria-keyshortcuts` on the input. It binds no key; your page listens and focuses the field |
|
|
432
559
|
| `onChange` | native handler | — | still fires on every key, undebounced |
|
|
433
560
|
|
|
561
|
+
The `shortcut` hint binds no key. `SearchField` passes `id` and the other
|
|
562
|
+
input props to the `<input>`, so the page focuses it by `id`:
|
|
563
|
+
|
|
564
|
+
```tsx
|
|
565
|
+
useEffect(() => {
|
|
566
|
+
const onKey = (event: KeyboardEvent) => {
|
|
567
|
+
const target = event.target as HTMLElement;
|
|
568
|
+
if (event.key === '/' && !target.closest('input, textarea, [contenteditable]')) {
|
|
569
|
+
event.preventDefault();
|
|
570
|
+
document.getElementById('orders-search')?.focus();
|
|
571
|
+
}
|
|
572
|
+
};
|
|
573
|
+
document.addEventListener('keydown', onKey);
|
|
574
|
+
return () => document.removeEventListener('keydown', onKey);
|
|
575
|
+
}, []);
|
|
576
|
+
|
|
577
|
+
<SearchField id="orders-search" shortcut="/" />
|
|
578
|
+
```
|
|
579
|
+
|
|
434
580
|
**Emits:** `string` through `onValueChange`; `SearchFormField` stores `string`.
|
|
435
581
|
**Form wrapper:** `SearchFormField` — `control` and `name`, see
|
|
436
582
|
[forms](../guides/forms.md#the-pair) and [what each field emits](../guides/forms.md#what-each-field-emits).
|
|
@@ -609,6 +609,8 @@ Parts: `Command`, `CommandDialog`, `CommandInput`, `CommandList`,
|
|
|
609
609
|
| --- | --- | --- | --- |
|
|
610
610
|
| `onSelect` (`CommandItem`) | `(value: string) => void` | — | Enter or click on the item |
|
|
611
611
|
| `value` / `keywords` (`CommandItem`) | `string` / `string[]` | the item's text | what the filter matches |
|
|
612
|
+
| `checked` (`CommandItem`) | `boolean` | — | sets `aria-checked` and shows a checkbox indicator, for a multi-choice list. cmdk's `aria-selected` keeps meaning "highlighted" |
|
|
613
|
+
| `multiselectable` (`CommandList`) | `boolean` | — | sets `aria-multiselectable` on the list |
|
|
612
614
|
| `shouldFilter` (`Command`) | `boolean` | `true` | `false` when you filter the items yourself (server search) |
|
|
613
615
|
| `title` / `description` (`CommandDialog`) | `string` | `"Command Palette"` / `"Search for a command to run..."` (translated) | the dialog's title and description, inside the dialog and visually hidden |
|
|
614
616
|
| `open`, `onOpenChange` (`CommandDialog`) | as `Dialog` | — | `CommandDialog` takes every `Dialog` prop |
|
|
@@ -176,14 +176,16 @@ import { Typography } from '@nxgt/material/components';
|
|
|
176
176
|
| Prop | Type | Default | Effect |
|
|
177
177
|
| --- | --- | --- | --- |
|
|
178
178
|
| `variant` | `'huge-large' \| 'huge-medium' \| 'huge-small' \| 'headline-larger' \| 'headline-large' \| 'headline-medium' \| 'headline-small' \| 'title-large' \| 'title-medium' \| 'title-small' \| 'body-medium' \| 'body-small' \| 'caption' \| 'normal'` | `'normal'` | size and weight; `caption` is also muted |
|
|
179
|
+
| `tone` | `'default' \| 'muted' \| 'primary' \| 'error'` | `'default'` | text colour: `muted` is `text-muted-foreground`, `primary` is `text-primary`, `error` is `text-error-text`; `default` inherits (a `className` colour still wins) |
|
|
179
180
|
| `as` | an intrinsic tag name (`keyof JSX.IntrinsicElements`) | `'div'` | the element to render, keeping the variant, e.g. `as="h2"` or `as="span"` |
|
|
180
181
|
| `asChild` | `boolean` | `false` | merge the classes onto the single child instead of rendering an element |
|
|
181
182
|
|
|
182
|
-
It renders a `<div>` unless `as` or `asChild` says otherwise:
|
|
183
|
+
It renders a `<div>` unless `as` or `asChild` says otherwise. Use `as="span"` inside a `<button>` or a link, where a `<div>` is invalid HTML. It sets no `overflow`, so it is never a scroll region: text with break points wraps, while an unbreakable string can overflow its box (add `wrap-anywhere` or `min-w-0`; put your own wrapper with `overflow-auto` and `tabIndex={0}` around it to scroll):
|
|
183
184
|
|
|
184
185
|
```tsx
|
|
185
186
|
<Typography as="span" variant="title-small">Inline</Typography>
|
|
186
187
|
<Typography asChild variant="body-medium"><a href="/docs">Docs</a></Typography>
|
|
188
|
+
<Typography tone="muted" variant="body-medium">Jan 3 to Jan 9</Typography>
|
|
187
189
|
```
|
|
188
190
|
|
|
189
191
|
The variants are also exported as `typographyVariants` for use on your own elements.
|