@rjsf/mui 5.11.2 → 5.12.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 (211) hide show
  1. package/dist/index.js +1003 -5
  2. package/dist/index.js.map +7 -0
  3. package/dist/mui.esm.js +650 -824
  4. package/dist/mui.esm.js.map +7 -1
  5. package/dist/mui.umd.js +852 -0
  6. package/lib/AddButton/AddButton.d.ts +5 -0
  7. package/lib/AddButton/AddButton.js +13 -0
  8. package/lib/AddButton/AddButton.js.map +1 -0
  9. package/lib/AddButton/index.d.ts +2 -0
  10. package/lib/AddButton/index.js +3 -0
  11. package/lib/AddButton/index.js.map +1 -0
  12. package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.d.ts +7 -0
  13. package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js +21 -0
  14. package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js.map +1 -0
  15. package/lib/ArrayFieldItemTemplate/index.d.ts +2 -0
  16. package/lib/ArrayFieldItemTemplate/index.js +3 -0
  17. package/lib/ArrayFieldItemTemplate/index.js.map +1 -0
  18. package/lib/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +7 -0
  19. package/lib/ArrayFieldTemplate/ArrayFieldTemplate.js +25 -0
  20. package/lib/ArrayFieldTemplate/ArrayFieldTemplate.js.map +1 -0
  21. package/lib/ArrayFieldTemplate/index.d.ts +2 -0
  22. package/lib/ArrayFieldTemplate/index.js +3 -0
  23. package/lib/ArrayFieldTemplate/index.js.map +1 -0
  24. package/lib/BaseInputTemplate/BaseInputTemplate.d.ts +9 -0
  25. package/lib/BaseInputTemplate/BaseInputTemplate.js +32 -0
  26. package/lib/BaseInputTemplate/BaseInputTemplate.js.map +1 -0
  27. package/lib/BaseInputTemplate/index.d.ts +2 -0
  28. package/lib/BaseInputTemplate/index.js +3 -0
  29. package/lib/BaseInputTemplate/index.js.map +1 -0
  30. package/lib/CheckboxWidget/CheckboxWidget.d.ts +8 -0
  31. package/lib/CheckboxWidget/CheckboxWidget.js +24 -0
  32. package/lib/CheckboxWidget/CheckboxWidget.js.map +1 -0
  33. package/lib/CheckboxWidget/index.d.ts +2 -0
  34. package/lib/CheckboxWidget/index.js +3 -0
  35. package/lib/CheckboxWidget/index.js.map +1 -0
  36. package/lib/CheckboxesWidget/CheckboxesWidget.d.ts +8 -0
  37. package/lib/CheckboxesWidget/CheckboxesWidget.js +33 -0
  38. package/lib/CheckboxesWidget/CheckboxesWidget.js.map +1 -0
  39. package/lib/CheckboxesWidget/index.d.ts +2 -0
  40. package/lib/CheckboxesWidget/index.js +3 -0
  41. package/lib/CheckboxesWidget/index.js.map +1 -0
  42. package/lib/DescriptionField/DescriptionField.d.ts +7 -0
  43. package/lib/DescriptionField/DescriptionField.js +14 -0
  44. package/lib/DescriptionField/DescriptionField.js.map +1 -0
  45. package/lib/DescriptionField/index.d.ts +2 -0
  46. package/lib/DescriptionField/index.js +3 -0
  47. package/lib/DescriptionField/index.js.map +1 -0
  48. package/lib/ErrorList/ErrorList.d.ts +7 -0
  49. package/lib/ErrorList/ErrorList.js +21 -0
  50. package/lib/ErrorList/ErrorList.js.map +1 -0
  51. package/lib/ErrorList/index.d.ts +2 -0
  52. package/lib/ErrorList/index.js +3 -0
  53. package/lib/ErrorList/index.js.map +1 -0
  54. package/lib/FieldErrorTemplate/FieldErrorTemplate.d.ts +7 -0
  55. package/lib/FieldErrorTemplate/FieldErrorTemplate.js +20 -0
  56. package/lib/FieldErrorTemplate/FieldErrorTemplate.js.map +1 -0
  57. package/lib/FieldErrorTemplate/index.d.ts +2 -0
  58. package/lib/FieldErrorTemplate/index.js +3 -0
  59. package/lib/FieldErrorTemplate/index.js.map +1 -0
  60. package/lib/FieldHelpTemplate/FieldHelpTemplate.d.ts +7 -0
  61. package/lib/FieldHelpTemplate/FieldHelpTemplate.js +16 -0
  62. package/lib/FieldHelpTemplate/FieldHelpTemplate.js.map +1 -0
  63. package/lib/FieldHelpTemplate/index.d.ts +2 -0
  64. package/lib/FieldHelpTemplate/index.js +3 -0
  65. package/lib/FieldHelpTemplate/index.js.map +1 -0
  66. package/lib/FieldTemplate/FieldTemplate.d.ts +8 -0
  67. package/lib/FieldTemplate/FieldTemplate.js +19 -0
  68. package/lib/FieldTemplate/FieldTemplate.js.map +1 -0
  69. package/lib/FieldTemplate/index.d.ts +2 -0
  70. package/lib/FieldTemplate/index.js +3 -0
  71. package/lib/FieldTemplate/index.js.map +1 -0
  72. package/lib/IconButton/IconButton.d.ts +7 -0
  73. package/lib/IconButton/IconButton.js +30 -0
  74. package/lib/IconButton/IconButton.js.map +1 -0
  75. package/lib/IconButton/index.d.ts +2 -0
  76. package/lib/IconButton/index.js +3 -0
  77. package/lib/IconButton/index.js.map +1 -0
  78. package/lib/MuiForm/MuiForm.d.ts +6 -0
  79. package/lib/MuiForm/MuiForm.js +7 -0
  80. package/lib/MuiForm/MuiForm.js.map +1 -0
  81. package/lib/MuiForm/index.d.ts +2 -0
  82. package/lib/MuiForm/index.js +3 -0
  83. package/lib/MuiForm/index.js.map +1 -0
  84. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +9 -0
  85. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js +22 -0
  86. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js.map +1 -0
  87. package/lib/ObjectFieldTemplate/index.d.ts +2 -0
  88. package/lib/ObjectFieldTemplate/index.js +3 -0
  89. package/lib/ObjectFieldTemplate/index.js.map +1 -0
  90. package/lib/RadioWidget/RadioWidget.d.ts +8 -0
  91. package/lib/RadioWidget/RadioWidget.js +27 -0
  92. package/lib/RadioWidget/RadioWidget.js.map +1 -0
  93. package/lib/RadioWidget/index.d.ts +2 -0
  94. package/lib/RadioWidget/index.js +3 -0
  95. package/lib/RadioWidget/index.js.map +1 -0
  96. package/lib/RangeWidget/RangeWidget.d.ts +8 -0
  97. package/lib/RangeWidget/RangeWidget.js +20 -0
  98. package/lib/RangeWidget/RangeWidget.js.map +1 -0
  99. package/lib/RangeWidget/index.d.ts +2 -0
  100. package/lib/RangeWidget/index.js +3 -0
  101. package/lib/RangeWidget/index.js.map +1 -0
  102. package/lib/SelectWidget/SelectWidget.d.ts +9 -0
  103. package/lib/SelectWidget/SelectWidget.js +29 -0
  104. package/lib/SelectWidget/SelectWidget.js.map +1 -0
  105. package/lib/SelectWidget/index.d.ts +2 -0
  106. package/lib/SelectWidget/index.js +3 -0
  107. package/lib/SelectWidget/index.js.map +1 -0
  108. package/lib/SubmitButton/SubmitButton.d.ts +5 -0
  109. package/lib/SubmitButton/SubmitButton.js +14 -0
  110. package/lib/SubmitButton/SubmitButton.js.map +1 -0
  111. package/lib/SubmitButton/index.d.ts +2 -0
  112. package/lib/SubmitButton/index.js +3 -0
  113. package/lib/SubmitButton/index.js.map +1 -0
  114. package/lib/Templates/Templates.d.ts +4 -0
  115. package/lib/Templates/Templates.js +39 -0
  116. package/lib/Templates/Templates.js.map +1 -0
  117. package/lib/Templates/index.d.ts +2 -0
  118. package/lib/Templates/index.js +3 -0
  119. package/lib/Templates/index.js.map +1 -0
  120. package/lib/TextareaWidget/TextareaWidget.d.ts +7 -0
  121. package/lib/TextareaWidget/TextareaWidget.js +16 -0
  122. package/lib/TextareaWidget/TextareaWidget.js.map +1 -0
  123. package/lib/TextareaWidget/index.d.ts +2 -0
  124. package/lib/TextareaWidget/index.js +3 -0
  125. package/lib/TextareaWidget/index.js.map +1 -0
  126. package/lib/Theme/Theme.d.ts +5 -0
  127. package/lib/Theme/Theme.js +10 -0
  128. package/lib/Theme/Theme.js.map +1 -0
  129. package/lib/Theme/index.d.ts +2 -0
  130. package/lib/Theme/index.js +3 -0
  131. package/lib/Theme/index.js.map +1 -0
  132. package/lib/TitleField/TitleField.d.ts +7 -0
  133. package/lib/TitleField/TitleField.js +12 -0
  134. package/lib/TitleField/TitleField.js.map +1 -0
  135. package/lib/TitleField/index.d.ts +2 -0
  136. package/lib/TitleField/index.js +3 -0
  137. package/lib/TitleField/index.js.map +1 -0
  138. package/lib/Widgets/Widgets.d.ts +4 -0
  139. package/lib/Widgets/Widgets.js +18 -0
  140. package/lib/Widgets/Widgets.js.map +1 -0
  141. package/lib/Widgets/index.d.ts +2 -0
  142. package/lib/Widgets/index.js +3 -0
  143. package/lib/Widgets/index.js.map +1 -0
  144. package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.d.ts +8 -0
  145. package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js +29 -0
  146. package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js.map +1 -0
  147. package/lib/WrapIfAdditionalTemplate/index.d.ts +2 -0
  148. package/lib/WrapIfAdditionalTemplate/index.js +3 -0
  149. package/lib/WrapIfAdditionalTemplate/index.js.map +1 -0
  150. package/lib/index.d.ts +6 -0
  151. package/lib/index.js +7 -0
  152. package/lib/index.js.map +1 -0
  153. package/package.json +24 -16
  154. package/src/AddButton/AddButton.tsx +18 -0
  155. package/src/AddButton/index.ts +2 -0
  156. package/src/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx +91 -0
  157. package/src/ArrayFieldItemTemplate/index.ts +2 -0
  158. package/src/ArrayFieldTemplate/ArrayFieldTemplate.tsx +87 -0
  159. package/src/ArrayFieldTemplate/index.ts +2 -0
  160. package/src/BaseInputTemplate/BaseInputTemplate.tsx +106 -0
  161. package/src/BaseInputTemplate/index.ts +2 -0
  162. package/src/CheckboxWidget/CheckboxWidget.tsx +87 -0
  163. package/src/CheckboxWidget/index.ts +2 -0
  164. package/src/CheckboxesWidget/CheckboxesWidget.tsx +92 -0
  165. package/src/CheckboxesWidget/index.ts +2 -0
  166. package/src/DescriptionField/DescriptionField.tsx +23 -0
  167. package/src/DescriptionField/index.ts +2 -0
  168. package/src/ErrorList/ErrorList.tsx +39 -0
  169. package/src/ErrorList/index.ts +2 -0
  170. package/src/FieldErrorTemplate/FieldErrorTemplate.tsx +32 -0
  171. package/src/FieldErrorTemplate/index.ts +2 -0
  172. package/src/FieldHelpTemplate/FieldHelpTemplate.tsx +19 -0
  173. package/src/FieldHelpTemplate/index.ts +2 -0
  174. package/src/FieldTemplate/FieldTemplate.tsx +81 -0
  175. package/src/FieldTemplate/index.ts +2 -0
  176. package/src/IconButton/IconButton.tsx +81 -0
  177. package/src/IconButton/index.ts +2 -0
  178. package/src/MuiForm/MuiForm.tsx +15 -0
  179. package/src/MuiForm/index.ts +2 -0
  180. package/src/ObjectFieldTemplate/ObjectFieldTemplate.tsx +99 -0
  181. package/src/ObjectFieldTemplate/index.ts +2 -0
  182. package/src/RadioWidget/RadioWidget.tsx +83 -0
  183. package/src/RadioWidget/index.ts +2 -0
  184. package/src/RangeWidget/RangeWidget.tsx +51 -0
  185. package/src/RangeWidget/index.ts +2 -0
  186. package/src/SelectWidget/SelectWidget.tsx +100 -0
  187. package/src/SelectWidget/index.ts +2 -0
  188. package/src/SubmitButton/SubmitButton.tsx +23 -0
  189. package/src/SubmitButton/index.ts +2 -0
  190. package/src/Templates/Templates.ts +46 -0
  191. package/src/Templates/index.ts +2 -0
  192. package/src/TextareaWidget/TextareaWidget.tsx +21 -0
  193. package/src/TextareaWidget/index.ts +2 -0
  194. package/src/Theme/Theme.tsx +18 -0
  195. package/src/Theme/index.ts +2 -0
  196. package/src/TitleField/TitleField.tsx +20 -0
  197. package/src/TitleField/index.ts +2 -0
  198. package/src/Widgets/Widgets.ts +25 -0
  199. package/src/Widgets/index.ts +2 -0
  200. package/src/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx +90 -0
  201. package/src/WrapIfAdditionalTemplate/index.ts +2 -0
  202. package/src/index.ts +8 -0
  203. package/dist/index.d.ts +0 -17
  204. package/dist/mui.cjs.development.js +0 -1239
  205. package/dist/mui.cjs.development.js.map +0 -1
  206. package/dist/mui.cjs.production.min.js +0 -2
  207. package/dist/mui.cjs.production.min.js.map +0 -1
  208. package/dist/mui.umd.development.js +0 -1213
  209. package/dist/mui.umd.development.js.map +0 -1
  210. package/dist/mui.umd.production.min.js +0 -2
  211. package/dist/mui.umd.production.min.js.map +0 -1
@@ -1,1239 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var core = require('@rjsf/core');
6
- var jsxRuntime = require('react/jsx-runtime');
7
- var AddIcon = require('@mui/icons-material/Add');
8
- var IconButton = require('@mui/material/IconButton');
9
- var utils = require('@rjsf/utils');
10
- var Box = require('@mui/material/Box');
11
- var Grid = require('@mui/material/Grid');
12
- var Paper = require('@mui/material/Paper');
13
- var TextField = require('@mui/material/TextField');
14
- var Typography = require('@mui/material/Typography');
15
- var ErrorIcon = require('@mui/icons-material/Error');
16
- var List = require('@mui/material/List');
17
- var ListItem = require('@mui/material/ListItem');
18
- var ListItemIcon = require('@mui/material/ListItemIcon');
19
- var ListItemText = require('@mui/material/ListItemText');
20
- var ArrowDownwardIcon = require('@mui/icons-material/ArrowDownward');
21
- var ArrowUpwardIcon = require('@mui/icons-material/ArrowUpward');
22
- var CopyIcon = require('@mui/icons-material/ContentCopy');
23
- var RemoveIcon = require('@mui/icons-material/Remove');
24
- var FormHelperText = require('@mui/material/FormHelperText');
25
- var FormControl = require('@mui/material/FormControl');
26
- var Button = require('@mui/material/Button');
27
- var Divider = require('@mui/material/Divider');
28
- var Checkbox = require('@mui/material/Checkbox');
29
- var FormControlLabel = require('@mui/material/FormControlLabel');
30
- var FormGroup = require('@mui/material/FormGroup');
31
- var FormLabel = require('@mui/material/FormLabel');
32
- var Radio = require('@mui/material/Radio');
33
- var RadioGroup = require('@mui/material/RadioGroup');
34
- var Slider = require('@mui/material/Slider');
35
- var MenuItem = require('@mui/material/MenuItem');
36
-
37
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
38
-
39
- var AddIcon__default = /*#__PURE__*/_interopDefaultLegacy(AddIcon);
40
- var IconButton__default = /*#__PURE__*/_interopDefaultLegacy(IconButton);
41
- var Box__default = /*#__PURE__*/_interopDefaultLegacy(Box);
42
- var Grid__default = /*#__PURE__*/_interopDefaultLegacy(Grid);
43
- var Paper__default = /*#__PURE__*/_interopDefaultLegacy(Paper);
44
- var TextField__default = /*#__PURE__*/_interopDefaultLegacy(TextField);
45
- var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
46
- var ErrorIcon__default = /*#__PURE__*/_interopDefaultLegacy(ErrorIcon);
47
- var List__default = /*#__PURE__*/_interopDefaultLegacy(List);
48
- var ListItem__default = /*#__PURE__*/_interopDefaultLegacy(ListItem);
49
- var ListItemIcon__default = /*#__PURE__*/_interopDefaultLegacy(ListItemIcon);
50
- var ListItemText__default = /*#__PURE__*/_interopDefaultLegacy(ListItemText);
51
- var ArrowDownwardIcon__default = /*#__PURE__*/_interopDefaultLegacy(ArrowDownwardIcon);
52
- var ArrowUpwardIcon__default = /*#__PURE__*/_interopDefaultLegacy(ArrowUpwardIcon);
53
- var CopyIcon__default = /*#__PURE__*/_interopDefaultLegacy(CopyIcon);
54
- var RemoveIcon__default = /*#__PURE__*/_interopDefaultLegacy(RemoveIcon);
55
- var FormHelperText__default = /*#__PURE__*/_interopDefaultLegacy(FormHelperText);
56
- var FormControl__default = /*#__PURE__*/_interopDefaultLegacy(FormControl);
57
- var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
58
- var Divider__default = /*#__PURE__*/_interopDefaultLegacy(Divider);
59
- var Checkbox__default = /*#__PURE__*/_interopDefaultLegacy(Checkbox);
60
- var FormControlLabel__default = /*#__PURE__*/_interopDefaultLegacy(FormControlLabel);
61
- var FormGroup__default = /*#__PURE__*/_interopDefaultLegacy(FormGroup);
62
- var FormLabel__default = /*#__PURE__*/_interopDefaultLegacy(FormLabel);
63
- var Radio__default = /*#__PURE__*/_interopDefaultLegacy(Radio);
64
- var RadioGroup__default = /*#__PURE__*/_interopDefaultLegacy(RadioGroup);
65
- var Slider__default = /*#__PURE__*/_interopDefaultLegacy(Slider);
66
- var MenuItem__default = /*#__PURE__*/_interopDefaultLegacy(MenuItem);
67
-
68
- /** The `AddButton` renders a button that represent the `Add` action on a form
69
- */
70
- function AddButton({
71
- uiSchema,
72
- registry,
73
- ...props
74
- }) {
75
- const {
76
- translateString
77
- } = registry;
78
- return jsxRuntime.jsx(IconButton__default["default"], {
79
- title: translateString(utils.TranslatableString.AddItemButton),
80
- ...props,
81
- color: 'primary',
82
- children: jsxRuntime.jsx(AddIcon__default["default"], {})
83
- });
84
- }
85
-
86
- /** The `ArrayFieldItemTemplate` component is the template used to render an items of an array.
87
- *
88
- * @param props - The `ArrayFieldTemplateItemType` props for the component
89
- */
90
- function ArrayFieldItemTemplate(props) {
91
- const {
92
- children,
93
- disabled,
94
- hasToolbar,
95
- hasCopy,
96
- hasMoveDown,
97
- hasMoveUp,
98
- hasRemove,
99
- index,
100
- onCopyIndexClick,
101
- onDropIndexClick,
102
- onReorderClick,
103
- readonly,
104
- uiSchema,
105
- registry
106
- } = props;
107
- const {
108
- CopyButton,
109
- MoveDownButton,
110
- MoveUpButton,
111
- RemoveButton
112
- } = registry.templates.ButtonTemplates;
113
- const btnStyle = {
114
- flex: 1,
115
- paddingLeft: 6,
116
- paddingRight: 6,
117
- fontWeight: 'bold',
118
- minWidth: 0
119
- };
120
- return jsxRuntime.jsxs(Grid__default["default"], {
121
- container: true,
122
- alignItems: 'center',
123
- children: [jsxRuntime.jsx(Grid__default["default"], {
124
- item: true,
125
- xs: true,
126
- style: {
127
- overflow: 'auto'
128
- },
129
- children: jsxRuntime.jsx(Box__default["default"], {
130
- mb: 2,
131
- children: jsxRuntime.jsx(Paper__default["default"], {
132
- elevation: 2,
133
- children: jsxRuntime.jsx(Box__default["default"], {
134
- p: 2,
135
- children: children
136
- })
137
- })
138
- })
139
- }), hasToolbar && jsxRuntime.jsxs(Grid__default["default"], {
140
- item: true,
141
- children: [(hasMoveUp || hasMoveDown) && jsxRuntime.jsx(MoveUpButton, {
142
- style: btnStyle,
143
- disabled: disabled || readonly || !hasMoveUp,
144
- onClick: onReorderClick(index, index - 1),
145
- uiSchema: uiSchema,
146
- registry: registry
147
- }), (hasMoveUp || hasMoveDown) && jsxRuntime.jsx(MoveDownButton, {
148
- style: btnStyle,
149
- disabled: disabled || readonly || !hasMoveDown,
150
- onClick: onReorderClick(index, index + 1),
151
- uiSchema: uiSchema,
152
- registry: registry
153
- }), hasCopy && jsxRuntime.jsx(CopyButton, {
154
- style: btnStyle,
155
- disabled: disabled || readonly,
156
- onClick: onCopyIndexClick(index),
157
- uiSchema: uiSchema,
158
- registry: registry
159
- }), hasRemove && jsxRuntime.jsx(RemoveButton, {
160
- style: btnStyle,
161
- disabled: disabled || readonly,
162
- onClick: onDropIndexClick(index),
163
- uiSchema: uiSchema,
164
- registry: registry
165
- })]
166
- })]
167
- });
168
- }
169
-
170
- /** The `ArrayFieldTemplate` component is the template used to render all items in an array.
171
- *
172
- * @param props - The `ArrayFieldTemplateItemType` props for the component
173
- */
174
- function ArrayFieldTemplate(props) {
175
- const {
176
- canAdd,
177
- disabled,
178
- idSchema,
179
- uiSchema,
180
- items,
181
- onAddClick,
182
- readonly,
183
- registry,
184
- required,
185
- schema,
186
- title
187
- } = props;
188
- const uiOptions = utils.getUiOptions(uiSchema);
189
- const ArrayFieldDescriptionTemplate = utils.getTemplate('ArrayFieldDescriptionTemplate', registry, uiOptions);
190
- const ArrayFieldItemTemplate = utils.getTemplate('ArrayFieldItemTemplate', registry, uiOptions);
191
- const ArrayFieldTitleTemplate = utils.getTemplate('ArrayFieldTitleTemplate', registry, uiOptions);
192
- // Button templates are not overridden in the uiSchema
193
- const {
194
- ButtonTemplates: {
195
- AddButton
196
- }
197
- } = registry.templates;
198
- return jsxRuntime.jsx(Paper__default["default"], {
199
- elevation: 2,
200
- children: jsxRuntime.jsxs(Box__default["default"], {
201
- p: 2,
202
- children: [jsxRuntime.jsx(ArrayFieldTitleTemplate, {
203
- idSchema: idSchema,
204
- title: uiOptions.title || title,
205
- schema: schema,
206
- uiSchema: uiSchema,
207
- required: required,
208
- registry: registry
209
- }), jsxRuntime.jsx(ArrayFieldDescriptionTemplate, {
210
- idSchema: idSchema,
211
- description: uiOptions.description || schema.description,
212
- schema: schema,
213
- uiSchema: uiSchema,
214
- registry: registry
215
- }), jsxRuntime.jsxs(Grid__default["default"], {
216
- container: true,
217
- children: [items && items.map(({
218
- key,
219
- ...itemProps
220
- }) => jsxRuntime.jsx(ArrayFieldItemTemplate, {
221
- ...itemProps
222
- }, key)), canAdd && jsxRuntime.jsx(Grid__default["default"], {
223
- container: true,
224
- justifyContent: 'flex-end',
225
- children: jsxRuntime.jsx(Grid__default["default"], {
226
- item: true,
227
- children: jsxRuntime.jsx(Box__default["default"], {
228
- mt: 2,
229
- children: jsxRuntime.jsx(AddButton, {
230
- className: 'array-item-add',
231
- onClick: onAddClick,
232
- disabled: disabled || readonly,
233
- uiSchema: uiSchema,
234
- registry: registry
235
- })
236
- })
237
- })
238
- })]
239
- }, `array-item-list-${idSchema.$id}`)]
240
- })
241
- });
242
- }
243
-
244
- const TYPES_THAT_SHRINK_LABEL = ['date', 'datetime-local', 'file', 'time'];
245
- /** The `BaseInputTemplate` is the template to use to render the basic `<input>` component for the `core` theme.
246
- * It is used as the template for rendering many of the <input> based widgets that differ by `type` and callbacks only.
247
- * It can be customized/overridden for other themes or individual implementations as needed.
248
- *
249
- * @param props - The `WidgetProps` for this template
250
- */
251
- function BaseInputTemplate(props) {
252
- const {
253
- id,
254
- name,
255
- // remove this from textFieldProps
256
- placeholder,
257
- required,
258
- readonly,
259
- disabled,
260
- type,
261
- label,
262
- hideLabel,
263
- value,
264
- onChange,
265
- onChangeOverride,
266
- onBlur,
267
- onFocus,
268
- autofocus,
269
- options,
270
- schema,
271
- uiSchema,
272
- rawErrors = [],
273
- formContext,
274
- registry,
275
- InputLabelProps,
276
- ...textFieldProps
277
- } = props;
278
- const inputProps = utils.getInputProps(schema, type, options);
279
- // Now we need to pull out the step, min, max into an inner `inputProps` for material-ui
280
- const {
281
- step,
282
- min,
283
- max,
284
- ...rest
285
- } = inputProps;
286
- const otherProps = {
287
- inputProps: {
288
- step,
289
- min,
290
- max,
291
- ...(schema.examples ? {
292
- list: utils.examplesId(id)
293
- } : undefined)
294
- },
295
- ...rest
296
- };
297
- const _onChange = ({
298
- target: {
299
- value
300
- }
301
- }) => onChange(value === '' ? options.emptyValue : value);
302
- const _onBlur = ({
303
- target: {
304
- value
305
- }
306
- }) => onBlur(id, value);
307
- const _onFocus = ({
308
- target: {
309
- value
310
- }
311
- }) => onFocus(id, value);
312
- const DisplayInputLabelProps = TYPES_THAT_SHRINK_LABEL.includes(type) ? {
313
- ...InputLabelProps,
314
- shrink: true
315
- } : InputLabelProps;
316
- return jsxRuntime.jsxs(jsxRuntime.Fragment, {
317
- children: [jsxRuntime.jsx(TextField__default["default"], {
318
- id: id,
319
- name: id,
320
- placeholder: placeholder,
321
- label: utils.labelValue(label || undefined, hideLabel, false),
322
- autoFocus: autofocus,
323
- required: required,
324
- disabled: disabled || readonly,
325
- ...otherProps,
326
- value: value || value === 0 ? value : '',
327
- error: rawErrors.length > 0,
328
- onChange: onChangeOverride || _onChange,
329
- onBlur: _onBlur,
330
- onFocus: _onFocus,
331
- InputLabelProps: DisplayInputLabelProps,
332
- ...textFieldProps,
333
- "aria-describedby": utils.ariaDescribedByIds(id, !!schema.examples)
334
- }), Array.isArray(schema.examples) && jsxRuntime.jsx("datalist", {
335
- id: utils.examplesId(id),
336
- children: schema.examples.concat(schema.default && !schema.examples.includes(schema.default) ? [schema.default] : []).map(example => {
337
- return jsxRuntime.jsx("option", {
338
- value: example
339
- }, example);
340
- })
341
- })]
342
- });
343
- }
344
-
345
- /** The `DescriptionField` is the template to use to render the description of a field
346
- *
347
- * @param props - The `DescriptionFieldProps` for this component
348
- */
349
- function DescriptionField(props) {
350
- const {
351
- id,
352
- description
353
- } = props;
354
- if (description) {
355
- return jsxRuntime.jsx(Typography__default["default"], {
356
- id: id,
357
- variant: 'subtitle2',
358
- style: {
359
- marginTop: '5px'
360
- },
361
- children: description
362
- });
363
- }
364
- return null;
365
- }
366
-
367
- /** The `ErrorList` component is the template that renders the all the errors associated with the fields in the `Form`
368
- *
369
- * @param props - The `ErrorListProps` for this component
370
- */
371
- function ErrorList({
372
- errors,
373
- registry
374
- }) {
375
- const {
376
- translateString
377
- } = registry;
378
- return jsxRuntime.jsx(Paper__default["default"], {
379
- elevation: 2,
380
- children: jsxRuntime.jsxs(Box__default["default"], {
381
- mb: 2,
382
- p: 2,
383
- children: [jsxRuntime.jsx(Typography__default["default"], {
384
- variant: 'h6',
385
- children: translateString(utils.TranslatableString.ErrorsLabel)
386
- }), jsxRuntime.jsx(List__default["default"], {
387
- dense: true,
388
- children: errors.map((error, i) => {
389
- return jsxRuntime.jsxs(ListItem__default["default"], {
390
- children: [jsxRuntime.jsx(ListItemIcon__default["default"], {
391
- children: jsxRuntime.jsx(ErrorIcon__default["default"], {
392
- color: 'error'
393
- })
394
- }), jsxRuntime.jsx(ListItemText__default["default"], {
395
- primary: error.stack
396
- })]
397
- }, i);
398
- })
399
- })]
400
- })
401
- });
402
- }
403
-
404
- function MuiIconButton(props) {
405
- const {
406
- icon,
407
- color,
408
- uiSchema,
409
- registry,
410
- ...otherProps
411
- } = props;
412
- return jsxRuntime.jsx(IconButton__default["default"], {
413
- ...otherProps,
414
- size: 'small',
415
- color: color,
416
- children: icon
417
- });
418
- }
419
- function CopyButton(props) {
420
- const {
421
- registry: {
422
- translateString
423
- }
424
- } = props;
425
- return jsxRuntime.jsx(MuiIconButton, {
426
- title: translateString(utils.TranslatableString.CopyButton),
427
- ...props,
428
- icon: jsxRuntime.jsx(CopyIcon__default["default"], {
429
- fontSize: 'small'
430
- })
431
- });
432
- }
433
- function MoveDownButton(props) {
434
- const {
435
- registry: {
436
- translateString
437
- }
438
- } = props;
439
- return jsxRuntime.jsx(MuiIconButton, {
440
- title: translateString(utils.TranslatableString.MoveDownButton),
441
- ...props,
442
- icon: jsxRuntime.jsx(ArrowDownwardIcon__default["default"], {
443
- fontSize: 'small'
444
- })
445
- });
446
- }
447
- function MoveUpButton(props) {
448
- const {
449
- registry: {
450
- translateString
451
- }
452
- } = props;
453
- return jsxRuntime.jsx(MuiIconButton, {
454
- title: translateString(utils.TranslatableString.MoveUpButton),
455
- ...props,
456
- icon: jsxRuntime.jsx(ArrowUpwardIcon__default["default"], {
457
- fontSize: 'small'
458
- })
459
- });
460
- }
461
- function RemoveButton(props) {
462
- const {
463
- iconType,
464
- ...otherProps
465
- } = props;
466
- const {
467
- registry: {
468
- translateString
469
- }
470
- } = otherProps;
471
- return jsxRuntime.jsx(MuiIconButton, {
472
- title: translateString(utils.TranslatableString.RemoveButton),
473
- ...otherProps,
474
- color: 'error',
475
- icon: jsxRuntime.jsx(RemoveIcon__default["default"], {
476
- fontSize: iconType === 'default' ? undefined : 'small'
477
- })
478
- });
479
- }
480
-
481
- /** The `FieldErrorTemplate` component renders the errors local to the particular field
482
- *
483
- * @param props - The `FieldErrorProps` for the errors being rendered
484
- */
485
- function FieldErrorTemplate(props) {
486
- const {
487
- errors = [],
488
- idSchema
489
- } = props;
490
- if (errors.length === 0) {
491
- return null;
492
- }
493
- const id = utils.errorId(idSchema);
494
- return jsxRuntime.jsx(List__default["default"], {
495
- dense: true,
496
- disablePadding: true,
497
- children: errors.map((error, i) => {
498
- return jsxRuntime.jsx(ListItem__default["default"], {
499
- disableGutters: true,
500
- children: jsxRuntime.jsx(FormHelperText__default["default"], {
501
- id: id,
502
- children: error
503
- })
504
- }, i);
505
- })
506
- });
507
- }
508
-
509
- /** The `FieldHelpTemplate` component renders any help desired for a field
510
- *
511
- * @param props - The `FieldHelpProps` to be rendered
512
- */
513
- function FieldHelpTemplate(props) {
514
- const {
515
- idSchema,
516
- help
517
- } = props;
518
- if (!help) {
519
- return null;
520
- }
521
- const id = utils.helpId(idSchema);
522
- return jsxRuntime.jsx(FormHelperText__default["default"], {
523
- id: id,
524
- children: help
525
- });
526
- }
527
-
528
- /** The `FieldTemplate` component is the template used by `SchemaField` to render any field. It renders the field
529
- * content, (label, description, children, errors and help) inside of a `WrapIfAdditional` component.
530
- *
531
- * @param props - The `FieldTemplateProps` for this component
532
- */
533
- function FieldTemplate(props) {
534
- const {
535
- id,
536
- children,
537
- classNames,
538
- style,
539
- disabled,
540
- displayLabel,
541
- hidden,
542
- label,
543
- onDropPropertyClick,
544
- onKeyChange,
545
- readonly,
546
- required,
547
- rawErrors = [],
548
- errors,
549
- help,
550
- description,
551
- rawDescription,
552
- schema,
553
- uiSchema,
554
- registry
555
- } = props;
556
- const uiOptions = utils.getUiOptions(uiSchema);
557
- const WrapIfAdditionalTemplate = utils.getTemplate('WrapIfAdditionalTemplate', registry, uiOptions);
558
- if (hidden) {
559
- return jsxRuntime.jsx("div", {
560
- style: {
561
- display: 'none'
562
- },
563
- children: children
564
- });
565
- }
566
- return jsxRuntime.jsx(WrapIfAdditionalTemplate, {
567
- classNames: classNames,
568
- style: style,
569
- disabled: disabled,
570
- id: id,
571
- label: label,
572
- onDropPropertyClick: onDropPropertyClick,
573
- onKeyChange: onKeyChange,
574
- readonly: readonly,
575
- required: required,
576
- schema: schema,
577
- uiSchema: uiSchema,
578
- registry: registry,
579
- children: jsxRuntime.jsxs(FormControl__default["default"], {
580
- fullWidth: true,
581
- error: rawErrors.length ? true : false,
582
- required: required,
583
- children: [children, displayLabel && rawDescription ? jsxRuntime.jsx(Typography__default["default"], {
584
- variant: 'caption',
585
- color: 'textSecondary',
586
- children: description
587
- }) : null, errors, help]
588
- })
589
- });
590
- }
591
-
592
- /** The `ObjectFieldTemplate` is the template to use to render all the inner properties of an object along with the
593
- * title and description if available. If the object is expandable, then an `AddButton` is also rendered after all
594
- * the properties.
595
- *
596
- * @param props - The `ObjectFieldTemplateProps` for this component
597
- */
598
- function ObjectFieldTemplate(props) {
599
- const {
600
- description,
601
- title,
602
- properties,
603
- required,
604
- disabled,
605
- readonly,
606
- uiSchema,
607
- idSchema,
608
- schema,
609
- formData,
610
- onAddClick,
611
- registry
612
- } = props;
613
- const uiOptions = utils.getUiOptions(uiSchema);
614
- const TitleFieldTemplate = utils.getTemplate('TitleFieldTemplate', registry, uiOptions);
615
- const DescriptionFieldTemplate = utils.getTemplate('DescriptionFieldTemplate', registry, uiOptions);
616
- // Button templates are not overridden in the uiSchema
617
- const {
618
- ButtonTemplates: {
619
- AddButton
620
- }
621
- } = registry.templates;
622
- return jsxRuntime.jsxs(jsxRuntime.Fragment, {
623
- children: [title && jsxRuntime.jsx(TitleFieldTemplate, {
624
- id: utils.titleId(idSchema),
625
- title: title,
626
- required: required,
627
- schema: schema,
628
- uiSchema: uiSchema,
629
- registry: registry
630
- }), description && jsxRuntime.jsx(DescriptionFieldTemplate, {
631
- id: utils.descriptionId(idSchema),
632
- description: description,
633
- schema: schema,
634
- uiSchema: uiSchema,
635
- registry: registry
636
- }), jsxRuntime.jsxs(Grid__default["default"], {
637
- container: true,
638
- spacing: 2,
639
- style: {
640
- marginTop: '10px'
641
- },
642
- children: [properties.map((element, index) =>
643
- // Remove the <Grid> if the inner element is hidden as the <Grid>
644
- // itself would otherwise still take up space.
645
- element.hidden ? element.content : jsxRuntime.jsx(Grid__default["default"], {
646
- item: true,
647
- xs: 12,
648
- style: {
649
- marginBottom: '10px'
650
- },
651
- children: element.content
652
- }, index)), utils.canExpand(schema, uiSchema, formData) && jsxRuntime.jsx(Grid__default["default"], {
653
- container: true,
654
- justifyContent: 'flex-end',
655
- children: jsxRuntime.jsx(Grid__default["default"], {
656
- item: true,
657
- children: jsxRuntime.jsx(AddButton, {
658
- className: 'object-property-expand',
659
- onClick: onAddClick(schema),
660
- disabled: disabled || readonly,
661
- uiSchema: uiSchema,
662
- registry: registry
663
- })
664
- })
665
- })]
666
- })]
667
- });
668
- }
669
-
670
- /** The `SubmitButton` renders a button that represent the `Submit` action on a form
671
- */
672
- function SubmitButton({
673
- uiSchema
674
- }) {
675
- const {
676
- submitText,
677
- norender,
678
- props: submitButtonProps = {}
679
- } = utils.getSubmitButtonOptions(uiSchema);
680
- if (norender) {
681
- return null;
682
- }
683
- return jsxRuntime.jsx(Box__default["default"], {
684
- marginTop: 3,
685
- children: jsxRuntime.jsx(Button__default["default"], {
686
- type: 'submit',
687
- variant: 'contained',
688
- color: 'primary',
689
- ...submitButtonProps,
690
- children: submitText
691
- })
692
- });
693
- }
694
-
695
- /** The `TitleField` is the template to use to render the title of a field
696
- *
697
- * @param props - The `TitleFieldProps` for this component
698
- */
699
- function TitleField({
700
- id,
701
- title
702
- }) {
703
- return jsxRuntime.jsxs(Box__default["default"], {
704
- id: id,
705
- mb: 1,
706
- mt: 1,
707
- children: [jsxRuntime.jsx(Typography__default["default"], {
708
- variant: 'h5',
709
- children: title
710
- }), jsxRuntime.jsx(Divider__default["default"], {})]
711
- });
712
- }
713
-
714
- /** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are
715
- * part of an `additionalProperties` part of a schema.
716
- *
717
- * @param props - The `WrapIfAdditionalProps` for this component
718
- */
719
- function WrapIfAdditionalTemplate(props) {
720
- const {
721
- children,
722
- classNames,
723
- style,
724
- disabled,
725
- id,
726
- label,
727
- onDropPropertyClick,
728
- onKeyChange,
729
- readonly,
730
- required,
731
- schema,
732
- uiSchema,
733
- registry
734
- } = props;
735
- const {
736
- templates,
737
- translateString
738
- } = registry;
739
- // Button templates are not overridden in the uiSchema
740
- const {
741
- RemoveButton
742
- } = templates.ButtonTemplates;
743
- const keyLabel = translateString(utils.TranslatableString.KeyLabel, [label]);
744
- const additional = (utils.ADDITIONAL_PROPERTY_FLAG in schema);
745
- const btnStyle = {
746
- flex: 1,
747
- paddingLeft: 6,
748
- paddingRight: 6,
749
- fontWeight: 'bold'
750
- };
751
- if (!additional) {
752
- return jsxRuntime.jsx("div", {
753
- className: classNames,
754
- style: style,
755
- children: children
756
- });
757
- }
758
- const handleBlur = ({
759
- target
760
- }) => onKeyChange(target.value);
761
- return jsxRuntime.jsxs(Grid__default["default"], {
762
- container: true,
763
- alignItems: 'center',
764
- spacing: 2,
765
- className: classNames,
766
- style: style,
767
- children: [jsxRuntime.jsx(Grid__default["default"], {
768
- item: true,
769
- xs: true,
770
- children: jsxRuntime.jsx(TextField__default["default"], {
771
- fullWidth: true,
772
- required: required,
773
- label: keyLabel,
774
- defaultValue: label,
775
- disabled: disabled || readonly,
776
- id: `${id}-key`,
777
- name: `${id}-key`,
778
- onBlur: !readonly ? handleBlur : undefined,
779
- type: 'text'
780
- })
781
- }), jsxRuntime.jsx(Grid__default["default"], {
782
- item: true,
783
- xs: true,
784
- children: children
785
- }), jsxRuntime.jsx(Grid__default["default"], {
786
- item: true,
787
- children: jsxRuntime.jsx(RemoveButton, {
788
- iconType: 'default',
789
- style: btnStyle,
790
- disabled: disabled || readonly,
791
- onClick: onDropPropertyClick(label),
792
- uiSchema: uiSchema,
793
- registry: registry
794
- })
795
- })]
796
- }, `${id}-key`);
797
- }
798
-
799
- function generateTemplates() {
800
- return {
801
- ArrayFieldItemTemplate,
802
- ArrayFieldTemplate,
803
- BaseInputTemplate,
804
- ButtonTemplates: {
805
- AddButton,
806
- CopyButton,
807
- MoveDownButton,
808
- MoveUpButton,
809
- RemoveButton,
810
- SubmitButton
811
- },
812
- DescriptionFieldTemplate: DescriptionField,
813
- ErrorListTemplate: ErrorList,
814
- FieldErrorTemplate,
815
- FieldHelpTemplate,
816
- FieldTemplate,
817
- ObjectFieldTemplate,
818
- TitleFieldTemplate: TitleField,
819
- WrapIfAdditionalTemplate
820
- };
821
- }
822
- var Templates = /*#__PURE__*/generateTemplates();
823
-
824
- /** The `CheckBoxWidget` is a widget for rendering boolean properties.
825
- * It is typically used to represent a boolean.
826
- *
827
- * @param props - The `WidgetProps` for this component
828
- */
829
- function CheckboxWidget(props) {
830
- const {
831
- schema,
832
- id,
833
- value,
834
- disabled,
835
- readonly,
836
- label = '',
837
- hideLabel,
838
- autofocus,
839
- onChange,
840
- onBlur,
841
- onFocus,
842
- registry,
843
- options,
844
- uiSchema
845
- } = props;
846
- const DescriptionFieldTemplate = utils.getTemplate('DescriptionFieldTemplate', registry, options);
847
- // Because an unchecked checkbox will cause html5 validation to fail, only add
848
- // the "required" attribute if the field value must be "true", due to the
849
- // "const" or "enum" keywords
850
- const required = utils.schemaRequiresTrueValue(schema);
851
- const _onChange = (_, checked) => onChange(checked);
852
- const _onBlur = ({
853
- target: {
854
- value
855
- }
856
- }) => onBlur(id, value);
857
- const _onFocus = ({
858
- target: {
859
- value
860
- }
861
- }) => onFocus(id, value);
862
- const description = options.description ?? schema.description;
863
- return jsxRuntime.jsxs(jsxRuntime.Fragment, {
864
- children: [!hideLabel && !!description && jsxRuntime.jsx(DescriptionFieldTemplate, {
865
- id: utils.descriptionId(id),
866
- description: description,
867
- schema: schema,
868
- uiSchema: uiSchema,
869
- registry: registry
870
- }), jsxRuntime.jsx(FormControlLabel__default["default"], {
871
- control: jsxRuntime.jsx(Checkbox__default["default"], {
872
- id: id,
873
- name: id,
874
- checked: typeof value === 'undefined' ? false : Boolean(value),
875
- required: required,
876
- disabled: disabled || readonly,
877
- autoFocus: autofocus,
878
- onChange: _onChange,
879
- onBlur: _onBlur,
880
- onFocus: _onFocus,
881
- "aria-describedby": utils.ariaDescribedByIds(id)
882
- }),
883
- label: utils.labelValue(label, hideLabel, false)
884
- })]
885
- });
886
- }
887
-
888
- /** The `CheckboxesWidget` is a widget for rendering checkbox groups.
889
- * It is typically used to represent an array of enums.
890
- *
891
- * @param props - The `WidgetProps` for this component
892
- */
893
- function CheckboxesWidget({
894
- label,
895
- hideLabel,
896
- id,
897
- disabled,
898
- options,
899
- value,
900
- autofocus,
901
- readonly,
902
- required,
903
- onChange,
904
- onBlur,
905
- onFocus
906
- }) {
907
- const {
908
- enumOptions,
909
- enumDisabled,
910
- inline,
911
- emptyValue
912
- } = options;
913
- const checkboxesValues = Array.isArray(value) ? value : [value];
914
- const _onChange = index => ({
915
- target: {
916
- checked
917
- }
918
- }) => {
919
- if (checked) {
920
- onChange(utils.enumOptionsSelectValue(index, checkboxesValues, enumOptions));
921
- } else {
922
- onChange(utils.enumOptionsDeselectValue(index, checkboxesValues, enumOptions));
923
- }
924
- };
925
- const _onBlur = ({
926
- target: {
927
- value
928
- }
929
- }) => onBlur(id, utils.enumOptionsValueForIndex(value, enumOptions, emptyValue));
930
- const _onFocus = ({
931
- target: {
932
- value
933
- }
934
- }) => onFocus(id, utils.enumOptionsValueForIndex(value, enumOptions, emptyValue));
935
- return jsxRuntime.jsxs(jsxRuntime.Fragment, {
936
- children: [utils.labelValue(jsxRuntime.jsx(FormLabel__default["default"], {
937
- required: required,
938
- htmlFor: id,
939
- children: label || undefined
940
- }), hideLabel), jsxRuntime.jsx(FormGroup__default["default"], {
941
- id: id,
942
- row: !!inline,
943
- children: Array.isArray(enumOptions) && enumOptions.map((option, index) => {
944
- const checked = utils.enumOptionsIsSelected(option.value, checkboxesValues);
945
- const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;
946
- const checkbox = jsxRuntime.jsx(Checkbox__default["default"], {
947
- id: utils.optionId(id, index),
948
- name: id,
949
- checked: checked,
950
- disabled: disabled || itemDisabled || readonly,
951
- autoFocus: autofocus && index === 0,
952
- onChange: _onChange(index),
953
- onBlur: _onBlur,
954
- onFocus: _onFocus,
955
- "aria-describedby": utils.ariaDescribedByIds(id)
956
- });
957
- return jsxRuntime.jsx(FormControlLabel__default["default"], {
958
- control: checkbox,
959
- label: option.label
960
- }, index);
961
- })
962
- })]
963
- });
964
- }
965
-
966
- /** The `RadioWidget` is a widget for rendering a radio group.
967
- * It is typically used with a string property constrained with enum options.
968
- *
969
- * @param props - The `WidgetProps` for this component
970
- */
971
- function RadioWidget({
972
- id,
973
- options,
974
- value,
975
- required,
976
- disabled,
977
- readonly,
978
- label,
979
- hideLabel,
980
- onChange,
981
- onBlur,
982
- onFocus
983
- }) {
984
- const {
985
- enumOptions,
986
- enumDisabled,
987
- emptyValue
988
- } = options;
989
- const _onChange = (_, value) => onChange(utils.enumOptionsValueForIndex(value, enumOptions, emptyValue));
990
- const _onBlur = ({
991
- target: {
992
- value
993
- }
994
- }) => onBlur(id, utils.enumOptionsValueForIndex(value, enumOptions, emptyValue));
995
- const _onFocus = ({
996
- target: {
997
- value
998
- }
999
- }) => onFocus(id, utils.enumOptionsValueForIndex(value, enumOptions, emptyValue));
1000
- const row = options ? options.inline : false;
1001
- const selectedIndex = utils.enumOptionsIndexForValue(value, enumOptions) ?? null;
1002
- return jsxRuntime.jsxs(jsxRuntime.Fragment, {
1003
- children: [utils.labelValue(jsxRuntime.jsx(FormLabel__default["default"], {
1004
- required: required,
1005
- htmlFor: id,
1006
- children: label || undefined
1007
- }), hideLabel), jsxRuntime.jsx(RadioGroup__default["default"], {
1008
- id: id,
1009
- name: id,
1010
- value: selectedIndex,
1011
- row: row,
1012
- onChange: _onChange,
1013
- onBlur: _onBlur,
1014
- onFocus: _onFocus,
1015
- "aria-describedby": utils.ariaDescribedByIds(id),
1016
- children: Array.isArray(enumOptions) && enumOptions.map((option, index) => {
1017
- const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;
1018
- const radio = jsxRuntime.jsx(FormControlLabel__default["default"], {
1019
- control: jsxRuntime.jsx(Radio__default["default"], {
1020
- name: id,
1021
- id: utils.optionId(id, index),
1022
- color: 'primary'
1023
- }),
1024
- label: option.label,
1025
- value: String(index),
1026
- disabled: disabled || itemDisabled || readonly
1027
- }, index);
1028
- return radio;
1029
- })
1030
- })]
1031
- });
1032
- }
1033
-
1034
- /** The `RangeWidget` component uses the `BaseInputTemplate` changing the type to `range` and wrapping the result
1035
- * in a div, with the value along side it.
1036
- *
1037
- * @param props - The `WidgetProps` for this component
1038
- */
1039
- function RangeWidget(props) {
1040
- const {
1041
- value,
1042
- readonly,
1043
- disabled,
1044
- onBlur,
1045
- onFocus,
1046
- options,
1047
- schema,
1048
- onChange,
1049
- required,
1050
- label,
1051
- hideLabel,
1052
- id
1053
- } = props;
1054
- const sliderProps = {
1055
- value,
1056
- label,
1057
- id,
1058
- name: id,
1059
- ...utils.rangeSpec(schema)
1060
- };
1061
- const _onChange = (_, value) => {
1062
- onChange(value ?? options.emptyValue);
1063
- };
1064
- const _onBlur = ({
1065
- target: {
1066
- value
1067
- }
1068
- }) => onBlur(id, value);
1069
- const _onFocus = ({
1070
- target: {
1071
- value
1072
- }
1073
- }) => onFocus(id, value);
1074
- return jsxRuntime.jsxs(jsxRuntime.Fragment, {
1075
- children: [utils.labelValue(jsxRuntime.jsx(FormLabel__default["default"], {
1076
- required: required,
1077
- htmlFor: id,
1078
- children: label || undefined
1079
- }), hideLabel), jsxRuntime.jsx(Slider__default["default"], {
1080
- disabled: disabled || readonly,
1081
- onChange: _onChange,
1082
- onBlur: _onBlur,
1083
- onFocus: _onFocus,
1084
- valueLabelDisplay: 'auto',
1085
- ...sliderProps,
1086
- "aria-describedby": utils.ariaDescribedByIds(id)
1087
- })]
1088
- });
1089
- }
1090
-
1091
- /** The `SelectWidget` is a widget for rendering dropdowns.
1092
- * It is typically used with string properties constrained with enum options.
1093
- *
1094
- * @param props - The `WidgetProps` for this component
1095
- */
1096
- function SelectWidget({
1097
- schema,
1098
- id,
1099
- name,
1100
- // remove this from textFieldProps
1101
- options,
1102
- label,
1103
- hideLabel,
1104
- required,
1105
- disabled,
1106
- placeholder,
1107
- readonly,
1108
- value,
1109
- multiple,
1110
- autofocus,
1111
- onChange,
1112
- onBlur,
1113
- onFocus,
1114
- rawErrors = [],
1115
- registry,
1116
- uiSchema,
1117
- hideError,
1118
- formContext,
1119
- ...textFieldProps
1120
- }) {
1121
- const {
1122
- enumOptions,
1123
- enumDisabled,
1124
- emptyValue: optEmptyVal
1125
- } = options;
1126
- multiple = typeof multiple === 'undefined' ? false : !!multiple;
1127
- const emptyValue = multiple ? [] : '';
1128
- const isEmpty = typeof value === 'undefined' || multiple && value.length < 1 || !multiple && value === emptyValue;
1129
- const _onChange = ({
1130
- target: {
1131
- value
1132
- }
1133
- }) => onChange(utils.enumOptionsValueForIndex(value, enumOptions, optEmptyVal));
1134
- const _onBlur = ({
1135
- target: {
1136
- value
1137
- }
1138
- }) => onBlur(id, utils.enumOptionsValueForIndex(value, enumOptions, optEmptyVal));
1139
- const _onFocus = ({
1140
- target: {
1141
- value
1142
- }
1143
- }) => onFocus(id, utils.enumOptionsValueForIndex(value, enumOptions, optEmptyVal));
1144
- const selectedIndexes = utils.enumOptionsIndexForValue(value, enumOptions, multiple);
1145
- return jsxRuntime.jsx(TextField__default["default"], {
1146
- id: id,
1147
- name: id,
1148
- label: utils.labelValue(label || undefined, hideLabel, false),
1149
- value: isEmpty ? emptyValue : selectedIndexes,
1150
- required: required,
1151
- disabled: disabled || readonly,
1152
- autoFocus: autofocus,
1153
- placeholder: placeholder,
1154
- error: rawErrors.length > 0,
1155
- onChange: _onChange,
1156
- onBlur: _onBlur,
1157
- onFocus: _onFocus,
1158
- ...textFieldProps,
1159
- select // Apply this and the following props after the potential overrides defined in textFieldProps
1160
- : true,
1161
- InputLabelProps: {
1162
- ...textFieldProps.InputLabelProps,
1163
- shrink: !isEmpty
1164
- },
1165
- SelectProps: {
1166
- ...textFieldProps.SelectProps,
1167
- multiple
1168
- },
1169
- "aria-describedby": utils.ariaDescribedByIds(id),
1170
- children: Array.isArray(enumOptions) && enumOptions.map(({
1171
- value,
1172
- label
1173
- }, i) => {
1174
- const disabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(value) !== -1;
1175
- return jsxRuntime.jsx(MenuItem__default["default"], {
1176
- value: String(i),
1177
- disabled: disabled,
1178
- children: label
1179
- }, i);
1180
- })
1181
- });
1182
- }
1183
-
1184
- /** The `TextareaWidget` is a widget for rendering input fields as textarea.
1185
- *
1186
- * @param props - The `WidgetProps` for this component
1187
- */
1188
- function TextareaWidget(props) {
1189
- const {
1190
- options,
1191
- registry
1192
- } = props;
1193
- const BaseInputTemplate = utils.getTemplate('BaseInputTemplate', registry, options);
1194
- let rows = 5;
1195
- if (typeof options.rows === 'string' || typeof options.rows === 'number') {
1196
- rows = options.rows;
1197
- }
1198
- return jsxRuntime.jsx(BaseInputTemplate, {
1199
- ...props,
1200
- multiline: true,
1201
- rows: rows
1202
- });
1203
- }
1204
-
1205
- function generateWidgets() {
1206
- return {
1207
- CheckboxWidget,
1208
- CheckboxesWidget,
1209
- RadioWidget,
1210
- RangeWidget,
1211
- SelectWidget,
1212
- TextareaWidget
1213
- };
1214
- }
1215
- var Widgets = /*#__PURE__*/generateWidgets();
1216
-
1217
- function generateTheme() {
1218
- return {
1219
- templates: generateTemplates(),
1220
- widgets: generateWidgets()
1221
- };
1222
- }
1223
- var Theme = /*#__PURE__*/generateTheme();
1224
-
1225
- function generateForm() {
1226
- return core.withTheme(generateTheme());
1227
- }
1228
- var MuiForm = /*#__PURE__*/generateForm();
1229
-
1230
- exports.Form = MuiForm;
1231
- exports.Templates = Templates;
1232
- exports.Theme = Theme;
1233
- exports.Widgets = Widgets;
1234
- exports["default"] = MuiForm;
1235
- exports.generateForm = generateForm;
1236
- exports.generateTemplates = generateTemplates;
1237
- exports.generateTheme = generateTheme;
1238
- exports.generateWidgets = generateWidgets;
1239
- //# sourceMappingURL=mui.cjs.development.js.map