@rjsf/fluentui-rc 6.0.0-beta.9 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +2 -0
  2. package/dist/core.umd.js +129 -51
  3. package/dist/{index.js → index.cjs} +210 -123
  4. package/dist/index.cjs.map +7 -0
  5. package/dist/index.esm.js +192 -105
  6. package/dist/index.esm.js.map +4 -4
  7. package/lib/AddButton/AddButton.js +1 -1
  8. package/lib/AddButton/AddButton.js.map +1 -1
  9. package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.d.ts +3 -3
  10. package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js +1 -1
  11. package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js.map +1 -1
  12. package/lib/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +1 -1
  13. package/lib/ArrayFieldTemplate/ArrayFieldTemplate.js +4 -5
  14. package/lib/ArrayFieldTemplate/ArrayFieldTemplate.js.map +1 -1
  15. package/lib/BaseInputTemplate/BaseInputTemplate.js +2 -2
  16. package/lib/BaseInputTemplate/BaseInputTemplate.js.map +1 -1
  17. package/lib/CheckboxWidget/CheckboxWidget.js +4 -4
  18. package/lib/CheckboxWidget/CheckboxWidget.js.map +1 -1
  19. package/lib/CheckboxesWidget/CheckboxesWidget.d.ts +1 -1
  20. package/lib/CheckboxesWidget/CheckboxesWidget.js +2 -2
  21. package/lib/CheckboxesWidget/CheckboxesWidget.js.map +1 -1
  22. package/lib/FieldErrorTemplate/FieldErrorTemplate.js +2 -2
  23. package/lib/FieldErrorTemplate/FieldErrorTemplate.js.map +1 -1
  24. package/lib/FieldHelpTemplate/FieldHelpTemplate.js +2 -2
  25. package/lib/FieldHelpTemplate/FieldHelpTemplate.js.map +1 -1
  26. package/lib/FieldTemplate/FieldTemplate.js +2 -2
  27. package/lib/FieldTemplate/FieldTemplate.js.map +1 -1
  28. package/lib/IconButton/IconButton.d.ts +7 -5
  29. package/lib/IconButton/IconButton.js.map +1 -1
  30. package/lib/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.d.ts +2 -0
  31. package/lib/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.js +13 -0
  32. package/lib/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.js.map +1 -0
  33. package/lib/MultiSchemaFieldTemplate/index.d.ts +2 -0
  34. package/lib/MultiSchemaFieldTemplate/index.js +3 -0
  35. package/lib/MultiSchemaFieldTemplate/index.js.map +1 -0
  36. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js +4 -3
  37. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js.map +1 -1
  38. package/lib/OptionalDataControlsTemplate/OptionalDataControlsTemplate.d.ts +10 -0
  39. package/lib/OptionalDataControlsTemplate/OptionalDataControlsTemplate.js +22 -0
  40. package/lib/OptionalDataControlsTemplate/OptionalDataControlsTemplate.js.map +1 -0
  41. package/lib/OptionalDataControlsTemplate/index.d.ts +2 -0
  42. package/lib/OptionalDataControlsTemplate/index.js +3 -0
  43. package/lib/OptionalDataControlsTemplate/index.js.map +1 -0
  44. package/lib/RadioWidget/RadioWidget.d.ts +1 -1
  45. package/lib/RadioWidget/RadioWidget.js +2 -2
  46. package/lib/RadioWidget/RadioWidget.js.map +1 -1
  47. package/lib/RangeWidget/RangeWidget.js.map +1 -1
  48. package/lib/SelectWidget/SelectWidget.d.ts +1 -1
  49. package/lib/SelectWidget/SelectWidget.js +2 -2
  50. package/lib/SelectWidget/SelectWidget.js.map +1 -1
  51. package/lib/Templates/Templates.js +4 -0
  52. package/lib/Templates/Templates.js.map +1 -1
  53. package/lib/TextareaWidget/TextareaWidget.js +2 -2
  54. package/lib/TextareaWidget/TextareaWidget.js.map +1 -1
  55. package/lib/TitleField/TitleField.d.ts +1 -1
  56. package/lib/TitleField/TitleField.js +7 -2
  57. package/lib/TitleField/TitleField.js.map +1 -1
  58. package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js +3 -4
  59. package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js.map +1 -1
  60. package/lib/tsconfig.tsbuildinfo +1 -1
  61. package/package.json +18 -18
  62. package/src/AddButton/AddButton.tsx +1 -1
  63. package/src/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx +3 -3
  64. package/src/ArrayFieldTemplate/ArrayFieldTemplate.tsx +23 -17
  65. package/src/BaseInputTemplate/BaseInputTemplate.tsx +5 -4
  66. package/src/CheckboxWidget/CheckboxWidget.tsx +6 -5
  67. package/src/CheckboxesWidget/CheckboxesWidget.tsx +3 -2
  68. package/src/FieldErrorTemplate/FieldErrorTemplate.tsx +2 -2
  69. package/src/FieldHelpTemplate/FieldHelpTemplate.tsx +2 -2
  70. package/src/FieldTemplate/FieldTemplate.tsx +6 -4
  71. package/src/IconButton/IconButton.tsx +12 -6
  72. package/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx +25 -0
  73. package/src/MultiSchemaFieldTemplate/index.ts +2 -0
  74. package/src/ObjectFieldTemplate/ObjectFieldTemplate.tsx +10 -6
  75. package/src/OptionalDataControlsTemplate/OptionalDataControlsTemplate.tsx +48 -0
  76. package/src/OptionalDataControlsTemplate/index.ts +2 -0
  77. package/src/RadioWidget/RadioWidget.tsx +3 -2
  78. package/src/RangeWidget/RangeWidget.tsx +1 -1
  79. package/src/SelectWidget/SelectWidget.tsx +3 -2
  80. package/src/Templates/Templates.ts +4 -0
  81. package/src/TextareaWidget/TextareaWidget.tsx +3 -2
  82. package/src/TitleField/TitleField.tsx +16 -3
  83. package/src/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx +6 -7
  84. package/dist/index.js.map +0 -7
package/dist/index.esm.js CHANGED
@@ -42,7 +42,7 @@ function AddButton({
42
42
  ...props
43
43
  }) {
44
44
  const { translateString } = registry;
45
- return /* @__PURE__ */ jsx2(Button, { ...props, icon: /* @__PURE__ */ jsx2(AddRegular, {}), title: translateString(TranslatableString.AddItemButton) });
45
+ return /* @__PURE__ */ jsx2(Button, { title: translateString(TranslatableString.AddItemButton), ...props, icon: /* @__PURE__ */ jsx2(AddRegular, {}) });
46
46
  }
47
47
 
48
48
  // src/ArrayFieldTemplate/ArrayFieldTemplate.tsx
@@ -60,7 +60,20 @@ var useStyles2 = makeStyles2({
60
60
  }
61
61
  });
62
62
  function ArrayFieldTemplate(props) {
63
- const { canAdd, disabled, idSchema, uiSchema, items, onAddClick, readonly, registry, required, schema, title } = props;
63
+ const {
64
+ canAdd,
65
+ disabled,
66
+ fieldPathId,
67
+ uiSchema,
68
+ items,
69
+ optionalDataControl,
70
+ onAddClick,
71
+ readonly,
72
+ registry,
73
+ required,
74
+ schema,
75
+ title
76
+ } = props;
64
77
  const classes = useStyles2();
65
78
  const uiOptions = getUiOptions2(uiSchema);
66
79
  const ArrayFieldDescriptionTemplate = getTemplate2(
@@ -68,16 +81,12 @@ function ArrayFieldTemplate(props) {
68
81
  registry,
69
82
  uiOptions
70
83
  );
71
- const ArrayFieldItemTemplate2 = getTemplate2(
72
- "ArrayFieldItemTemplate",
73
- registry,
74
- uiOptions
75
- );
76
84
  const ArrayFieldTitleTemplate = getTemplate2(
77
85
  "ArrayFieldTitleTemplate",
78
86
  registry,
79
87
  uiOptions
80
88
  );
89
+ const showOptionalDataControlInTitle = !readonly && !disabled;
81
90
  const {
82
91
  ButtonTemplates: { AddButton: AddButton2 }
83
92
  } = registry.templates;
@@ -85,18 +94,19 @@ function ArrayFieldTemplate(props) {
85
94
  /* @__PURE__ */ jsx3(
86
95
  ArrayFieldTitleTemplate,
87
96
  {
88
- idSchema,
97
+ fieldPathId,
89
98
  title: uiOptions.title || title,
90
99
  schema,
91
100
  uiSchema,
92
101
  required,
93
- registry
102
+ registry,
103
+ optionalDataControl: showOptionalDataControlInTitle ? optionalDataControl : void 0
94
104
  }
95
105
  ),
96
106
  /* @__PURE__ */ jsx3(
97
107
  ArrayFieldDescriptionTemplate,
98
108
  {
99
- idSchema,
109
+ fieldPathId,
100
110
  description: uiOptions.description || schema.description,
101
111
  schema,
102
112
  uiSchema,
@@ -104,11 +114,12 @@ function ArrayFieldTemplate(props) {
104
114
  }
105
115
  ),
106
116
  /* @__PURE__ */ jsxs2(Flex2, { column: true, className: classes.arrayItemList, children: [
107
- items && items.map(({ key, ...itemProps }) => /* @__PURE__ */ jsx3(ArrayFieldItemTemplate2, { ...itemProps }, key)),
117
+ !showOptionalDataControlInTitle ? optionalDataControl : void 0,
118
+ items,
108
119
  canAdd && /* @__PURE__ */ jsx3(Flex2, { hAlign: "end", children: /* @__PURE__ */ jsx3(
109
120
  AddButton2,
110
121
  {
111
- id: buttonId(idSchema, "add"),
122
+ id: buttonId(fieldPathId, "add"),
112
123
  className: "rjsf-array-item-add",
113
124
  onClick: onAddClick,
114
125
  disabled: disabled || readonly,
@@ -116,7 +127,7 @@ function ArrayFieldTemplate(props) {
116
127
  registry
117
128
  }
118
129
  ) })
119
- ] }, `array-item-list-${idSchema.$id}`)
130
+ ] }, `array-item-list-${fieldPathId.$id}`)
120
131
  ] });
121
132
  }
122
133
 
@@ -142,6 +153,7 @@ var useStyles3 = makeStyles3({
142
153
  function BaseInputTemplate(props) {
143
154
  const {
144
155
  id,
156
+ htmlName,
145
157
  placeholder,
146
158
  required,
147
159
  readonly,
@@ -172,7 +184,7 @@ function BaseInputTemplate(props) {
172
184
  Input,
173
185
  {
174
186
  id,
175
- name: id,
187
+ name: htmlName || id,
176
188
  placeholder,
177
189
  autoFocus: autofocus,
178
190
  required,
@@ -322,12 +334,12 @@ var useStyles6 = makeStyles6({
322
334
  errorLabel: { color: tokens3.colorPaletteRedForeground1 }
323
335
  });
324
336
  function FieldErrorTemplate(props) {
325
- const { errors = [], idSchema } = props;
337
+ const { errors = [], fieldPathId } = props;
326
338
  const classes = useStyles6();
327
339
  if (errors.length === 0) {
328
340
  return null;
329
341
  }
330
- const id = errorId(idSchema);
342
+ const id = errorId(fieldPathId);
331
343
  return /* @__PURE__ */ jsx8("ul", { className: classes.list, children: errors.map((error, i) => {
332
344
  return /* @__PURE__ */ jsx8("li", { className: classes.listItem, children: /* @__PURE__ */ jsx8("small", { className: classes.errorLabel, id, children: error }) }, i);
333
345
  }) });
@@ -338,11 +350,11 @@ import { Caption1 } from "@fluentui/react-components";
338
350
  import { helpId } from "@rjsf/utils";
339
351
  import { jsx as jsx9 } from "react/jsx-runtime";
340
352
  function FieldHelpTemplate(props) {
341
- const { idSchema, help } = props;
353
+ const { fieldPathId, help } = props;
342
354
  if (!help) {
343
355
  return null;
344
356
  }
345
- const id = helpId(idSchema);
357
+ const id = helpId(fieldPathId);
346
358
  return /* @__PURE__ */ jsx9(Caption1, { id, children: help });
347
359
  }
348
360
 
@@ -363,8 +375,9 @@ function FieldTemplate(props) {
363
375
  displayLabel,
364
376
  hidden,
365
377
  label,
366
- onDropPropertyClick,
367
- onKeyChange,
378
+ onKeyRename,
379
+ onKeyRenameBlur,
380
+ onRemoveProperty,
368
381
  readonly,
369
382
  required,
370
383
  rawErrors = [],
@@ -393,8 +406,9 @@ function FieldTemplate(props) {
393
406
  disabled,
394
407
  id,
395
408
  label,
396
- onDropPropertyClick,
397
- onKeyChange,
409
+ onKeyRename,
410
+ onKeyRenameBlur,
411
+ onRemoveProperty,
398
412
  readonly,
399
413
  required,
400
414
  schema,
@@ -426,6 +440,23 @@ function GridTemplate(props) {
426
440
  return /* @__PURE__ */ jsx11("div", { style, ...rest, children });
427
441
  }
428
442
 
443
+ // src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx
444
+ import { makeStyles as makeStyles7 } from "@fluentui/react-components";
445
+ import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
446
+ var useStyles7 = makeStyles7({
447
+ root: {
448
+ "> div": { marginBottom: "4px" }
449
+ }
450
+ });
451
+ function MultiSchemaFieldTemplate(props) {
452
+ const { selector, optionSchemaField } = props;
453
+ const styles = useStyles7();
454
+ return /* @__PURE__ */ jsxs6("div", { className: styles.root, children: [
455
+ /* @__PURE__ */ jsx12("div", { children: selector }),
456
+ optionSchemaField
457
+ ] });
458
+ }
459
+
429
460
  // src/ObjectFieldTemplate/ObjectFieldTemplate.tsx
430
461
  import { Flex as Flex3 } from "@fluentui/react-migration-v0-v9";
431
462
  import {
@@ -436,7 +467,7 @@ import {
436
467
  titleId,
437
468
  buttonId as buttonId2
438
469
  } from "@rjsf/utils";
439
- import { Fragment as Fragment3, jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
470
+ import { Fragment as Fragment3, jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
440
471
  function ObjectFieldTemplate(props) {
441
472
  const {
442
473
  description,
@@ -446,10 +477,11 @@ function ObjectFieldTemplate(props) {
446
477
  disabled,
447
478
  readonly,
448
479
  uiSchema,
449
- idSchema,
480
+ fieldPathId,
450
481
  schema,
451
482
  formData,
452
- onAddClick,
483
+ optionalDataControl,
484
+ onAddProperty,
453
485
  registry
454
486
  } = props;
455
487
  const uiOptions = getUiOptions4(uiSchema);
@@ -459,45 +491,48 @@ function ObjectFieldTemplate(props) {
459
491
  registry,
460
492
  uiOptions
461
493
  );
494
+ const showOptionalDataControlInTitle = !readonly && !disabled;
462
495
  const {
463
496
  ButtonTemplates: { AddButton: AddButton2 }
464
497
  } = registry.templates;
465
- return /* @__PURE__ */ jsxs6(Fragment3, { children: [
466
- title && /* @__PURE__ */ jsx12(
498
+ return /* @__PURE__ */ jsxs7(Fragment3, { children: [
499
+ title && /* @__PURE__ */ jsx13(
467
500
  TitleFieldTemplate,
468
501
  {
469
- id: titleId(idSchema),
502
+ id: titleId(fieldPathId),
470
503
  title,
471
504
  required,
472
505
  schema,
473
506
  uiSchema,
474
- registry
507
+ registry,
508
+ optionalDataControl: showOptionalDataControlInTitle ? optionalDataControl : void 0
475
509
  }
476
510
  ),
477
- description && /* @__PURE__ */ jsx12(
511
+ description && /* @__PURE__ */ jsx13(
478
512
  DescriptionFieldTemplate,
479
513
  {
480
- id: descriptionId(idSchema),
514
+ id: descriptionId(fieldPathId),
481
515
  description,
482
516
  schema,
483
517
  uiSchema,
484
518
  registry
485
519
  }
486
520
  ),
487
- /* @__PURE__ */ jsxs6(Flex3, { fill: true, column: true, gap: "gap.medium", children: [
521
+ /* @__PURE__ */ jsxs7(Flex3, { fill: true, column: true, gap: "gap.medium", children: [
522
+ !showOptionalDataControlInTitle ? optionalDataControl : void 0,
488
523
  properties.map(
489
524
  (element, index) => (
490
525
  // Remove the <Grid> if the inner element is hidden as the <Grid>
491
526
  // itself would otherwise still take up space.
492
- element.hidden ? element.content : /* @__PURE__ */ jsx12(Flex3, { column: true, fill: true, style: { marginBottom: "10px" }, children: element.content }, index)
527
+ element.hidden ? element.content : /* @__PURE__ */ jsx13(Flex3, { column: true, fill: true, style: { marginBottom: "10px" }, children: element.content }, index)
493
528
  )
494
529
  ),
495
- canExpand(schema, uiSchema, formData) && /* @__PURE__ */ jsx12(Flex3, { hAlign: "end", children: /* @__PURE__ */ jsx12(
530
+ canExpand(schema, uiSchema, formData) && /* @__PURE__ */ jsx13(Flex3, { hAlign: "end", children: /* @__PURE__ */ jsx13(
496
531
  AddButton2,
497
532
  {
498
- id: buttonId2(idSchema, "add"),
533
+ id: buttonId2(fieldPathId, "add"),
499
534
  className: "rjsf-object-property-expand",
500
- onClick: onAddClick(schema),
535
+ onClick: onAddProperty,
501
536
  disabled: disabled || readonly,
502
537
  uiSchema,
503
538
  registry
@@ -507,28 +542,66 @@ function ObjectFieldTemplate(props) {
507
542
  ] });
508
543
  }
509
544
 
545
+ // src/OptionalDataControlsTemplate/OptionalDataControlsTemplate.tsx
546
+ import { AddSquareMultipleRegular, SubtractSquareMultipleRegular } from "@fluentui/react-icons";
547
+ import { jsx as jsx14 } from "react/jsx-runtime";
548
+ function OptionalDataControlsTemplate(props) {
549
+ const { id, registry, label, onAddClick, onRemoveClick } = props;
550
+ if (onAddClick) {
551
+ return /* @__PURE__ */ jsx14(
552
+ FluentIconButton,
553
+ {
554
+ id,
555
+ registry,
556
+ icon: /* @__PURE__ */ jsx14(AddSquareMultipleRegular, {}),
557
+ className: "rjsf-add-optional-data",
558
+ onClick: onAddClick,
559
+ title: label,
560
+ size: "small",
561
+ appearance: "secondary"
562
+ }
563
+ );
564
+ } else if (onRemoveClick) {
565
+ return /* @__PURE__ */ jsx14(
566
+ FluentIconButton,
567
+ {
568
+ id,
569
+ registry,
570
+ icon: /* @__PURE__ */ jsx14(SubtractSquareMultipleRegular, {}),
571
+ className: "rjsf-remove-optional-data",
572
+ onClick: onRemoveClick,
573
+ title: label,
574
+ size: "small",
575
+ appearance: "secondary"
576
+ }
577
+ );
578
+ }
579
+ return /* @__PURE__ */ jsx14("em", { id, children: label });
580
+ }
581
+
510
582
  // src/SubmitButton/SubmitButton.tsx
511
583
  import { getSubmitButtonOptions } from "@rjsf/utils";
512
- import { Button as Button3, makeStyles as makeStyles7, tokens as tokens4 } from "@fluentui/react-components";
513
- import { jsx as jsx13 } from "react/jsx-runtime";
514
- var useStyles7 = makeStyles7({
584
+ import { Button as Button3, makeStyles as makeStyles8, tokens as tokens4 } from "@fluentui/react-components";
585
+ import { jsx as jsx15 } from "react/jsx-runtime";
586
+ var useStyles8 = makeStyles8({
515
587
  buttonRow: {
516
588
  marginTop: tokens4.spacingVerticalL
517
589
  }
518
590
  });
519
591
  function SubmitButton({ uiSchema }) {
520
- const classes = useStyles7();
592
+ const classes = useStyles8();
521
593
  const { submitText, norender, props: submitButtonProps } = getSubmitButtonOptions(uiSchema);
522
594
  if (norender) {
523
595
  return null;
524
596
  }
525
- return /* @__PURE__ */ jsx13("div", { className: classes.buttonRow, children: /* @__PURE__ */ jsx13(Button3, { appearance: "primary", type: "submit", ...submitButtonProps, children: submitText }) });
597
+ return /* @__PURE__ */ jsx15("div", { className: classes.buttonRow, children: /* @__PURE__ */ jsx15(Button3, { appearance: "primary", type: "submit", ...submitButtonProps, children: submitText }) });
526
598
  }
527
599
 
528
600
  // src/TitleField/TitleField.tsx
529
- import { Text as Text4, Divider, makeStyles as makeStyles8 } from "@fluentui/react-components";
530
- import { jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
531
- var useStyles8 = makeStyles8({
601
+ import { Flex as Flex4 } from "@fluentui/react-migration-v0-v9";
602
+ import { Text as Text4, Divider, makeStyles as makeStyles9 } from "@fluentui/react-components";
603
+ import { jsx as jsx16, jsxs as jsxs8 } from "react/jsx-runtime";
604
+ var useStyles9 = makeStyles9({
532
605
  root: {
533
606
  marginTop: "8px",
534
607
  marginBottom: "8px"
@@ -536,12 +609,20 @@ var useStyles8 = makeStyles8({
536
609
  });
537
610
  function TitleField({
538
611
  id,
539
- title
612
+ title,
613
+ optionalDataControl
540
614
  }) {
541
- const classes = useStyles8();
542
- return /* @__PURE__ */ jsxs7("div", { id, className: classes.root, children: [
543
- /* @__PURE__ */ jsx14(Text4, { as: "h5", size: 600, children: title }),
544
- /* @__PURE__ */ jsx14(Divider, {})
615
+ const classes = useStyles9();
616
+ let heading = /* @__PURE__ */ jsx16(Text4, { as: "h5", size: 600, style: { marginBlock: 0 }, children: title });
617
+ if (optionalDataControl) {
618
+ heading = /* @__PURE__ */ jsxs8(Flex4, { children: [
619
+ /* @__PURE__ */ jsx16(Flex4, { fill: true, children: heading }),
620
+ /* @__PURE__ */ jsx16(Flex4, { hAlign: "end", children: optionalDataControl })
621
+ ] });
622
+ }
623
+ return /* @__PURE__ */ jsxs8("div", { id, className: classes.root, children: [
624
+ heading,
625
+ /* @__PURE__ */ jsx16(Divider, {})
545
626
  ] });
546
627
  }
547
628
 
@@ -551,10 +632,10 @@ import {
551
632
  buttonId as buttonId3,
552
633
  TranslatableString as TranslatableString4
553
634
  } from "@rjsf/utils";
554
- import { Field as Field2, Input as Input2, makeStyles as makeStyles9 } from "@fluentui/react-components";
555
- import { Flex as Flex4 } from "@fluentui/react-migration-v0-v9";
556
- import { jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
557
- var useStyles9 = makeStyles9({
635
+ import { Field as Field2, Input as Input2, makeStyles as makeStyles10 } from "@fluentui/react-components";
636
+ import { Flex as Flex5 } from "@fluentui/react-migration-v0-v9";
637
+ import { jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
638
+ var useStyles10 = makeStyles10({
558
639
  input: {
559
640
  width: "100%"
560
641
  },
@@ -570,8 +651,8 @@ function WrapIfAdditionalTemplate(props) {
570
651
  disabled,
571
652
  id,
572
653
  label,
573
- onDropPropertyClick,
574
- onKeyChange,
654
+ onRemoveProperty,
655
+ onKeyRenameBlur,
575
656
  readonly,
576
657
  required,
577
658
  schema,
@@ -579,7 +660,7 @@ function WrapIfAdditionalTemplate(props) {
579
660
  registry
580
661
  } = props;
581
662
  const { templates, translateString } = registry;
582
- const classes = useStyles9();
663
+ const classes = useStyles10();
583
664
  const { RemoveButton: RemoveButton2 } = templates.ButtonTemplates;
584
665
  const keyLabel = translateString(TranslatableString4.KeyLabel, [label]);
585
666
  const additional = ADDITIONAL_PROPERTY_FLAG in schema;
@@ -590,11 +671,10 @@ function WrapIfAdditionalTemplate(props) {
590
671
  fontWeight: "bold"
591
672
  };
592
673
  if (!additional) {
593
- return /* @__PURE__ */ jsx15("div", { className: classNames, style, children });
674
+ return /* @__PURE__ */ jsx17("div", { className: classNames, style, children });
594
675
  }
595
- const handleBlur = ({ target }) => onKeyChange(target.value);
596
- return /* @__PURE__ */ jsxs8(Flex4, { gap: "gap.medium", vAlign: "center", className: classNames, style, children: [
597
- /* @__PURE__ */ jsx15("div", { children: /* @__PURE__ */ jsx15(Field2, { label: keyLabel, required, children: /* @__PURE__ */ jsx15(
676
+ return /* @__PURE__ */ jsxs9(Flex5, { gap: "gap.medium", vAlign: "center", className: classNames, style, children: [
677
+ /* @__PURE__ */ jsx17("div", { children: /* @__PURE__ */ jsx17(Field2, { label: keyLabel, required, children: /* @__PURE__ */ jsx17(
598
678
  Input2,
599
679
  {
600
680
  required,
@@ -602,15 +682,15 @@ function WrapIfAdditionalTemplate(props) {
602
682
  disabled: disabled || readonly,
603
683
  id: `${id}-key`,
604
684
  name: `${id}-key`,
605
- onBlur: !readonly ? handleBlur : void 0,
685
+ onBlur: !readonly ? onKeyRenameBlur : void 0,
606
686
  type: "text",
607
687
  input: {
608
688
  className: classes.input
609
689
  }
610
690
  }
611
691
  ) }) }),
612
- /* @__PURE__ */ jsx15("div", { children }),
613
- /* @__PURE__ */ jsx15("div", { children: /* @__PURE__ */ jsx15(
692
+ /* @__PURE__ */ jsx17("div", { children }),
693
+ /* @__PURE__ */ jsx17("div", { children: /* @__PURE__ */ jsx17(
614
694
  RemoveButton2,
615
695
  {
616
696
  id: buttonId3(id, "remove"),
@@ -618,7 +698,7 @@ function WrapIfAdditionalTemplate(props) {
618
698
  className: "rjsf-object-property-remove",
619
699
  style: btnStyle,
620
700
  disabled: disabled || readonly,
621
- onClick: onDropPropertyClick(label),
701
+ onClick: onRemoveProperty,
622
702
  uiSchema,
623
703
  registry
624
704
  }
@@ -646,7 +726,9 @@ function generateTemplates() {
646
726
  FieldHelpTemplate,
647
727
  FieldTemplate,
648
728
  GridTemplate,
729
+ MultiSchemaFieldTemplate,
649
730
  ObjectFieldTemplate,
731
+ OptionalDataControlsTemplate,
650
732
  TitleFieldTemplate: TitleField,
651
733
  WrapIfAdditionalTemplate
652
734
  };
@@ -661,11 +743,12 @@ import {
661
743
  schemaRequiresTrueValue
662
744
  } from "@rjsf/utils";
663
745
  import { Checkbox } from "@fluentui/react-components";
664
- import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
746
+ import { Fragment as Fragment4, jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
665
747
  function CheckboxWidget(props) {
666
748
  const {
667
749
  schema,
668
750
  id,
751
+ htmlName,
669
752
  value,
670
753
  disabled,
671
754
  readonly,
@@ -686,11 +769,11 @@ function CheckboxWidget(props) {
686
769
  );
687
770
  const required = schemaRequiresTrueValue(schema);
688
771
  const _onChange = ({ target: { checked } }) => onChange(checked);
689
- const _onBlur = ({ target }) => onBlur(id, target && target.value);
690
- const _onFocus = ({ target }) => onFocus(id, target && target.value);
772
+ const _onBlur = ({ target }) => onBlur(id, target && target.checked);
773
+ const _onFocus = ({ target }) => onFocus(id, target && target.checked);
691
774
  const description = options.description ?? schema.description;
692
- return /* @__PURE__ */ jsxs9(Fragment4, { children: [
693
- !hideLabel && description && /* @__PURE__ */ jsx16(
775
+ return /* @__PURE__ */ jsxs10(Fragment4, { children: [
776
+ !hideLabel && description && /* @__PURE__ */ jsx18(
694
777
  DescriptionFieldTemplate,
695
778
  {
696
779
  id: descriptionId2(id),
@@ -700,11 +783,11 @@ function CheckboxWidget(props) {
700
783
  registry
701
784
  }
702
785
  ),
703
- /* @__PURE__ */ jsx16(
786
+ /* @__PURE__ */ jsx18(
704
787
  Checkbox,
705
788
  {
706
789
  id,
707
- name: id,
790
+ name: htmlName || id,
708
791
  label,
709
792
  checked: typeof value === "undefined" ? false : Boolean(value),
710
793
  required,
@@ -730,12 +813,13 @@ import {
730
813
  optionId
731
814
  } from "@rjsf/utils";
732
815
  import { Label as Label2, Checkbox as Checkbox2 } from "@fluentui/react-components";
733
- import { Flex as Flex5 } from "@fluentui/react-migration-v0-v9";
734
- import { Fragment as Fragment5, jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
816
+ import { Flex as Flex6 } from "@fluentui/react-migration-v0-v9";
817
+ import { Fragment as Fragment5, jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
735
818
  function CheckboxesWidget({
736
819
  label,
737
820
  hideLabel,
738
821
  id,
822
+ htmlName,
739
823
  disabled,
740
824
  options,
741
825
  value,
@@ -757,19 +841,19 @@ function CheckboxesWidget({
757
841
  };
758
842
  const _onBlur = ({ target }) => onBlur(id, enumOptionsValueForIndex(target && target.value, enumOptions, emptyValue));
759
843
  const _onFocus = ({ target }) => onFocus(id, enumOptionsValueForIndex(target && target.value, enumOptions, emptyValue));
760
- return /* @__PURE__ */ jsxs10(Fragment5, { children: [
844
+ return /* @__PURE__ */ jsxs11(Fragment5, { children: [
761
845
  labelValue2(
762
- /* @__PURE__ */ jsx17(Label2, { required, htmlFor: id, children: label || void 0 }),
846
+ /* @__PURE__ */ jsx19(Label2, { required, htmlFor: id, children: label || void 0 }),
763
847
  hideLabel
764
848
  ),
765
- /* @__PURE__ */ jsx17(Flex5, { column: !inline, children: Array.isArray(enumOptions) && enumOptions.map((option, index) => {
849
+ /* @__PURE__ */ jsx19(Flex6, { column: !inline, children: Array.isArray(enumOptions) && enumOptions.map((option, index) => {
766
850
  const checked = enumOptionsIsSelected(option.value, checkboxesValues);
767
851
  const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;
768
- return /* @__PURE__ */ jsx17(
852
+ return /* @__PURE__ */ jsx19(
769
853
  Checkbox2,
770
854
  {
771
855
  id: optionId(id, index),
772
- name: id,
856
+ name: htmlName || id,
773
857
  label: option.label,
774
858
  checked,
775
859
  disabled: disabled || itemDisabled || readonly,
@@ -794,9 +878,10 @@ import {
794
878
  optionId as optionId2
795
879
  } from "@rjsf/utils";
796
880
  import { Label as Label3, Radio, RadioGroup } from "@fluentui/react-components";
797
- import { Fragment as Fragment6, jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
881
+ import { Fragment as Fragment6, jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
798
882
  function RadioWidget({
799
883
  id,
884
+ htmlName,
800
885
  options,
801
886
  value,
802
887
  required,
@@ -813,16 +898,16 @@ function RadioWidget({
813
898
  const _onBlur = ({ target }) => onBlur(id, enumOptionsValueForIndex2(target && target.value, enumOptions, emptyValue));
814
899
  const _onFocus = ({ target }) => onFocus(id, enumOptionsValueForIndex2(target && target.value, enumOptions, emptyValue));
815
900
  const selectedIndex = enumOptionsIndexForValue(value, enumOptions) ?? void 0;
816
- return /* @__PURE__ */ jsxs11(Fragment6, { children: [
901
+ return /* @__PURE__ */ jsxs12(Fragment6, { children: [
817
902
  labelValue3(
818
- /* @__PURE__ */ jsx18(Label3, { required, htmlFor: id, children: label || void 0 }),
903
+ /* @__PURE__ */ jsx20(Label3, { required, htmlFor: id, children: label || void 0 }),
819
904
  hideLabel
820
905
  ),
821
- /* @__PURE__ */ jsx18(
906
+ /* @__PURE__ */ jsx20(
822
907
  RadioGroup,
823
908
  {
824
909
  id,
825
- name: id,
910
+ name: htmlName || id,
826
911
  layout: inline ? "horizontal" : "vertical",
827
912
  value: selectedIndex,
828
913
  onChange: _onChange,
@@ -831,7 +916,7 @@ function RadioWidget({
831
916
  "aria-describedby": ariaDescribedByIds4(id),
832
917
  children: Array.isArray(enumOptions) && enumOptions.map((option, index) => {
833
918
  const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;
834
- return /* @__PURE__ */ jsx18(
919
+ return /* @__PURE__ */ jsx20(
835
920
  Radio,
836
921
  {
837
922
  id: optionId2(id, index),
@@ -854,7 +939,7 @@ import {
854
939
  rangeSpec
855
940
  } from "@rjsf/utils";
856
941
  import { Label as Label4, Slider } from "@fluentui/react-components";
857
- import { Fragment as Fragment7, jsx as jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
942
+ import { Fragment as Fragment7, jsx as jsx21, jsxs as jsxs13 } from "react/jsx-runtime";
858
943
  function RangeWidget(props) {
859
944
  const { value, readonly, disabled, onBlur, onFocus, options, schema, onChange, required, label, hideLabel, id } = props;
860
945
  const sliderProps = { value, label, id, name: id, ...rangeSpec(schema) };
@@ -863,12 +948,12 @@ function RangeWidget(props) {
863
948
  };
864
949
  const _onBlur = ({ target }) => onBlur(id, target && target.value);
865
950
  const _onFocus = ({ target }) => onFocus(id, target && target.value);
866
- return /* @__PURE__ */ jsxs12(Fragment7, { children: [
951
+ return /* @__PURE__ */ jsxs13(Fragment7, { children: [
867
952
  labelValue4(
868
- /* @__PURE__ */ jsx19(Label4, { required, htmlFor: id, children: label || void 0 }),
953
+ /* @__PURE__ */ jsx21(Label4, { required, htmlFor: id, children: label || void 0 }),
869
954
  hideLabel
870
955
  ),
871
- /* @__PURE__ */ jsx19(
956
+ /* @__PURE__ */ jsx21(
872
957
  Slider,
873
958
  {
874
959
  disabled: disabled || readonly,
@@ -890,7 +975,7 @@ import {
890
975
  labelValue as labelValue5
891
976
  } from "@rjsf/utils";
892
977
  import { Dropdown, Field as Field3, Option } from "@fluentui/react-components";
893
- import { jsx as jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
978
+ import { jsx as jsx22, jsxs as jsxs14 } from "react/jsx-runtime";
894
979
  function getValue(data, multiple) {
895
980
  if (multiple) {
896
981
  return data.selectedOptions;
@@ -899,6 +984,7 @@ function getValue(data, multiple) {
899
984
  }
900
985
  function SelectWidget({
901
986
  id,
987
+ htmlName,
902
988
  options,
903
989
  label,
904
990
  hideLabel,
@@ -931,17 +1017,17 @@ function SelectWidget({
931
1017
  return onChange(enumOptionsValueForIndex3(newValue, enumOptions, optEmptyVal));
932
1018
  };
933
1019
  const showPlaceholderOption = !multiple && schema.default === void 0;
934
- return /* @__PURE__ */ jsx20(
1020
+ return /* @__PURE__ */ jsx22(
935
1021
  Field3,
936
1022
  {
937
1023
  label: labelValue5(label, hideLabel),
938
1024
  validationState: rawErrors.length ? "error" : void 0,
939
1025
  required,
940
- children: /* @__PURE__ */ jsxs13(
1026
+ children: /* @__PURE__ */ jsxs14(
941
1027
  Dropdown,
942
1028
  {
943
1029
  id,
944
- name: id,
1030
+ name: htmlName || id,
945
1031
  multiselect: multiple,
946
1032
  className: "form-control",
947
1033
  value: dropdownValue,
@@ -953,10 +1039,10 @@ function SelectWidget({
953
1039
  selectedOptions: selectedIndexesAsArray,
954
1040
  "aria-describedby": ariaDescribedByIds6(id),
955
1041
  children: [
956
- showPlaceholderOption && /* @__PURE__ */ jsx20(Option, { value: "", children: placeholder || "" }),
1042
+ showPlaceholderOption && /* @__PURE__ */ jsx22(Option, { value: "", children: placeholder || "" }),
957
1043
  Array.isArray(enumOptions) && enumOptions.map(({ value: value2, label: label2 }, i) => {
958
1044
  const disabled2 = enumDisabled && enumDisabled.indexOf(value2) !== -1;
959
- return /* @__PURE__ */ jsx20(Option, { value: String(i), disabled: disabled2, children: label2 }, i);
1045
+ return /* @__PURE__ */ jsx22(Option, { value: String(i), disabled: disabled2, children: label2 }, i);
960
1046
  })
961
1047
  ]
962
1048
  }
@@ -967,13 +1053,13 @@ function SelectWidget({
967
1053
  var SelectWidget_default = SelectWidget;
968
1054
 
969
1055
  // src/TextareaWidget/TextareaWidget.tsx
970
- import { Label as Label5, Textarea, makeStyles as makeStyles10 } from "@fluentui/react-components";
1056
+ import { Label as Label5, Textarea, makeStyles as makeStyles11 } from "@fluentui/react-components";
971
1057
  import {
972
1058
  ariaDescribedByIds as ariaDescribedByIds7,
973
1059
  labelValue as labelValue6
974
1060
  } from "@rjsf/utils";
975
- import { Fragment as Fragment8, jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
976
- var useStyles10 = makeStyles10({
1061
+ import { Fragment as Fragment8, jsx as jsx23, jsxs as jsxs15 } from "react/jsx-runtime";
1062
+ var useStyles11 = makeStyles11({
977
1063
  label: {
978
1064
  paddingTop: "2px",
979
1065
  paddingBottom: "2px",
@@ -983,6 +1069,7 @@ var useStyles10 = makeStyles10({
983
1069
  function TextareaWidget(props) {
984
1070
  const {
985
1071
  id,
1072
+ htmlName,
986
1073
  placeholder,
987
1074
  required,
988
1075
  readonly,
@@ -998,7 +1085,7 @@ function TextareaWidget(props) {
998
1085
  options,
999
1086
  schema
1000
1087
  } = props;
1001
- const classes = useStyles10();
1088
+ const classes = useStyles11();
1002
1089
  const _onChange = ({ target: { value: value2 } }) => onChange(value2 === "" ? options.emptyValue : value2);
1003
1090
  const _onBlur = ({ target }) => onBlur(id, target && target.value);
1004
1091
  const _onFocus = ({ target }) => onFocus(id, target && target.value);
@@ -1006,16 +1093,16 @@ function TextareaWidget(props) {
1006
1093
  if (typeof options.rows === "string" || typeof options.rows === "number") {
1007
1094
  rows = options.rows;
1008
1095
  }
1009
- return /* @__PURE__ */ jsxs14(Fragment8, { children: [
1096
+ return /* @__PURE__ */ jsxs15(Fragment8, { children: [
1010
1097
  labelValue6(
1011
- /* @__PURE__ */ jsx21(Label5, { htmlFor: id, required, disabled, className: classes.label, children: label }),
1098
+ /* @__PURE__ */ jsx23(Label5, { htmlFor: id, required, disabled, className: classes.label, children: label }),
1012
1099
  hideLabel
1013
1100
  ),
1014
- /* @__PURE__ */ jsx21(
1101
+ /* @__PURE__ */ jsx23(
1015
1102
  Textarea,
1016
1103
  {
1017
1104
  id,
1018
- name: id,
1105
+ name: htmlName || id,
1019
1106
  placeholder,
1020
1107
  autoFocus: autofocus,
1021
1108
  required,
@@ -1062,14 +1149,14 @@ var FluentForm_default = generateForm();
1062
1149
  // src/FluentUIRCFrameProvider.tsx
1063
1150
  import { FluentProvider, RendererProvider, createDOMRenderer, teamsLightTheme } from "@fluentui/react-components";
1064
1151
  import { useMemo } from "react";
1065
- import { jsx as jsx22 } from "react/jsx-runtime";
1152
+ import { jsx as jsx24 } from "react/jsx-runtime";
1066
1153
  var FluentWrapper = (props) => {
1067
1154
  const { children, targetDocument } = props;
1068
1155
  const renderer = useMemo(() => createDOMRenderer(targetDocument), [targetDocument]);
1069
- return /* @__PURE__ */ jsx22(RendererProvider, { renderer, targetDocument, children: /* @__PURE__ */ jsx22(FluentProvider, { targetDocument, theme: teamsLightTheme, children }) });
1156
+ return /* @__PURE__ */ jsx24(RendererProvider, { renderer, targetDocument, children: /* @__PURE__ */ jsx24(FluentProvider, { targetDocument, theme: teamsLightTheme, children }) });
1070
1157
  };
1071
1158
  var __createFluentUIRCFrameProvider = (props) => ({ document }) => {
1072
- return /* @__PURE__ */ jsx22(FluentWrapper, { targetDocument: document, children: props.children });
1159
+ return /* @__PURE__ */ jsx24(FluentWrapper, { targetDocument: document, children: props.children });
1073
1160
  };
1074
1161
 
1075
1162
  // src/index.ts