@jsonforms/material-renderers 3.0.0-alpha.1 → 3.0.0-beta.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 (373) hide show
  1. package/docs/assets/js/search.json +1 -1
  2. package/docs/classes/combinatorproperties.html +2 -5
  3. package/docs/classes/materialanyofstringorenumcontrol.html +6 -9
  4. package/docs/classes/materialtablecontrol.html +4 -7
  5. package/docs/globals.html +878 -423
  6. package/docs/index.html +68 -59
  7. package/docs/interfaces/ajvprops.html +1 -4
  8. package/docs/interfaces/arraylayouttoolbarprops.html +5 -8
  9. package/docs/interfaces/categorizationstate.html +1 -4
  10. package/docs/interfaces/categorizationstepperstate.html +0 -3
  11. package/docs/interfaces/combinatorpropertiesprops.html +0 -3
  12. package/docs/interfaces/deletedialogprops.html +0 -3
  13. package/docs/interfaces/dispatchpropsofexpandpanel.html +3 -6
  14. package/docs/interfaces/emptytableprops.html +0 -3
  15. package/docs/interfaces/expandpanelprops.html +19 -22
  16. package/docs/interfaces/jsonformstheme.html +39 -49
  17. package/docs/interfaces/materialcategorizationlayoutrendererprops.html +5 -8
  18. package/docs/interfaces/materialcategorizationstepperlayoutrendererprops.html +1 -4
  19. package/docs/interfaces/materiallayoutrendererprops.html +0 -3
  20. package/docs/interfaces/materialtabletoolbarprops.html +9 -12
  21. package/docs/interfaces/muitextinputprops.html +2 -5
  22. package/docs/interfaces/nonemptycellcomponentprops.html +266 -0
  23. package/docs/interfaces/nonemptycellprops.html +0 -3
  24. package/docs/interfaces/nonemptyrowprops.html +80 -27
  25. package/docs/interfaces/ownoneofprops.html +0 -3
  26. package/docs/interfaces/ownpropsofexpandpanel.html +14 -17
  27. package/docs/interfaces/ownpropsofnonemptycell.html +0 -3
  28. package/docs/interfaces/statepropsofexpandpanel.html +16 -19
  29. package/docs/interfaces/tableheadercellprops.html +0 -3
  30. package/docs/interfaces/tablerowsprop.html +9 -12
  31. package/docs/interfaces/validationprops.html +2 -5
  32. package/docs/interfaces/withdeletedialogsupport.html +0 -3
  33. package/docs/interfaces/withinput.html +1 -4
  34. package/docs/interfaces/withoptionlabel.html +7 -7
  35. package/example/index.ts +7 -23
  36. package/lib/additional/ListWithDetailMasterItem.d.ts +3 -3
  37. package/lib/additional/MaterialLabelRenderer.d.ts +13 -13
  38. package/lib/additional/MaterialListWithDetailRenderer.d.ts +6 -6
  39. package/lib/additional/index.d.ts +4 -4
  40. package/lib/cells/CustomizableCells.d.ts +9 -9
  41. package/lib/cells/MaterialBooleanCell.d.ts +6 -6
  42. package/lib/cells/MaterialBooleanToggleCell.d.ts +6 -6
  43. package/lib/cells/MaterialDateCell.d.ts +6 -6
  44. package/lib/cells/MaterialEnumCell.d.ts +10 -10
  45. package/lib/cells/MaterialIntegerCell.d.ts +6 -6
  46. package/lib/cells/MaterialNumberCell.d.ts +10 -10
  47. package/lib/cells/MaterialNumberFormatCell.d.ts +10 -10
  48. package/lib/cells/MaterialOneOfEnumCell.d.ts +10 -10
  49. package/lib/cells/MaterialTextCell.d.ts +10 -10
  50. package/lib/cells/MaterialTimeCell.d.ts +6 -6
  51. package/lib/cells/index.d.ts +13 -13
  52. package/lib/complex/CombinatorProperties.d.ts +12 -12
  53. package/lib/complex/DeleteDialog.d.ts +11 -11
  54. package/lib/complex/MaterialAllOfRenderer.d.ts +6 -5
  55. package/lib/complex/MaterialAnyOfRenderer.d.ts +6 -5
  56. package/lib/complex/MaterialArrayControlRenderer.d.ts +5 -5
  57. package/lib/complex/MaterialEnumArrayRenderer.d.ts +6 -6
  58. package/lib/complex/MaterialObjectRenderer.d.ts +6 -5
  59. package/lib/complex/MaterialOneOfRenderer.d.ts +9 -8
  60. package/lib/complex/MaterialTableControl.d.ts +25 -10
  61. package/lib/complex/NoBorderTableCell.d.ts +3 -3
  62. package/lib/complex/TableToolbar.d.ts +15 -15
  63. package/lib/complex/ValidationIcon.d.ts +7 -11
  64. package/lib/complex/index.d.ts +19 -19
  65. package/lib/controls/MaterialAnyOfStringOrEnumControl.d.ts +9 -9
  66. package/lib/controls/MaterialBooleanControl.d.ts +6 -6
  67. package/lib/controls/MaterialBooleanToggleControl.d.ts +6 -6
  68. package/lib/controls/MaterialDateControl.d.ts +6 -9
  69. package/lib/controls/MaterialDateTimeControl.d.ts +6 -9
  70. package/lib/controls/MaterialEnumControl.d.ts +7 -6
  71. package/lib/controls/MaterialInputControl.d.ts +6 -9
  72. package/lib/controls/MaterialIntegerControl.d.ts +6 -6
  73. package/lib/controls/MaterialNativeControl.d.ts +6 -9
  74. package/lib/controls/MaterialNumberControl.d.ts +6 -6
  75. package/lib/controls/MaterialOneOfEnumControl.d.ts +7 -6
  76. package/lib/controls/MaterialOneOfRadioGroupControl.d.ts +6 -6
  77. package/lib/controls/MaterialRadioGroup.d.ts +3 -6
  78. package/lib/controls/MaterialRadioGroupControl.d.ts +6 -6
  79. package/lib/controls/MaterialSliderControl.d.ts +6 -9
  80. package/lib/controls/MaterialTextControl.d.ts +6 -6
  81. package/lib/controls/MaterialTimeControl.d.ts +6 -9
  82. package/lib/controls/index.d.ts +35 -35
  83. package/lib/index.d.ts +9 -9
  84. package/lib/jsonforms-react-material.cjs.js +1489 -0
  85. package/lib/jsonforms-react-material.cjs.js.map +1 -0
  86. package/lib/jsonforms-react-material.esm.js +1221 -0
  87. package/lib/jsonforms-react-material.esm.js.map +1 -0
  88. package/lib/layouts/ArrayToolbar.d.ts +9 -9
  89. package/lib/layouts/ExpandPanelRenderer.d.ts +51 -51
  90. package/lib/layouts/MaterialArrayLayout.d.ts +3 -13
  91. package/lib/layouts/MaterialArrayLayoutRenderer.d.ts +6 -6
  92. package/lib/layouts/MaterialCategorizationLayout.d.ts +17 -25
  93. package/lib/layouts/MaterialCategorizationStepperLayout.d.ts +13 -20
  94. package/lib/layouts/MaterialGroupLayout.d.ts +7 -7
  95. package/lib/layouts/MaterialHorizontalLayout.d.ts +10 -10
  96. package/lib/layouts/MaterialVerticalLayout.d.ts +10 -10
  97. package/lib/layouts/index.d.ts +6 -6
  98. package/lib/mui-controls/MuiAutocomplete.d.ts +9 -0
  99. package/lib/mui-controls/MuiCheckbox.d.ts +3 -3
  100. package/lib/mui-controls/MuiInputInteger.d.ts +3 -3
  101. package/lib/mui-controls/MuiInputNumber.d.ts +3 -3
  102. package/lib/mui-controls/MuiInputNumberFormat.d.ts +3 -3
  103. package/lib/mui-controls/MuiInputText.d.ts +9 -9
  104. package/lib/mui-controls/MuiInputTime.d.ts +3 -3
  105. package/lib/mui-controls/MuiSelect.d.ts +3 -3
  106. package/lib/mui-controls/MuiToggle.d.ts +3 -3
  107. package/lib/mui-controls/index.d.ts +7 -7
  108. package/lib/util/datejs.d.ts +3 -3
  109. package/lib/util/debounce.d.ts +1 -0
  110. package/lib/util/focus.d.ts +1 -0
  111. package/lib/util/index.d.ts +5 -3
  112. package/lib/util/layout.d.ts +15 -13
  113. package/lib/util/theme.d.ts +10 -10
  114. package/package.json +34 -28
  115. package/rollup.config.js +51 -0
  116. package/src/additional/ListWithDetailMasterItem.tsx +3 -6
  117. package/src/additional/MaterialLabelRenderer.tsx +1 -1
  118. package/src/additional/MaterialListWithDetailRenderer.tsx +1 -1
  119. package/src/cells/MaterialDateCell.tsx +1 -1
  120. package/src/cells/MaterialTimeCell.tsx +1 -0
  121. package/src/complex/CombinatorProperties.tsx +2 -2
  122. package/src/complex/DeleteDialog.tsx +2 -2
  123. package/src/complex/MaterialAllOfRenderer.tsx +3 -2
  124. package/src/complex/MaterialAnyOfRenderer.tsx +3 -2
  125. package/src/complex/MaterialArrayControlRenderer.tsx +1 -1
  126. package/src/complex/MaterialEnumArrayRenderer.tsx +4 -3
  127. package/src/complex/MaterialObjectRenderer.tsx +3 -2
  128. package/src/complex/MaterialOneOfRenderer.tsx +7 -7
  129. package/src/complex/MaterialTableControl.tsx +45 -37
  130. package/src/complex/NoBorderTableCell.tsx +10 -12
  131. package/src/complex/TableToolbar.tsx +9 -7
  132. package/src/complex/ValidationIcon.tsx +12 -19
  133. package/src/controls/MaterialAnyOfStringOrEnumControl.tsx +17 -14
  134. package/src/controls/MaterialBooleanControl.tsx +1 -1
  135. package/src/controls/MaterialBooleanToggleControl.tsx +1 -1
  136. package/src/controls/MaterialDateControl.tsx +87 -93
  137. package/src/controls/MaterialDateTimeControl.tsx +88 -96
  138. package/src/controls/MaterialEnumControl.tsx +12 -3
  139. package/src/controls/MaterialInputControl.tsx +65 -71
  140. package/src/controls/MaterialNativeControl.tsx +55 -59
  141. package/src/controls/MaterialOneOfEnumControl.tsx +13 -4
  142. package/src/controls/MaterialOneOfRadioGroupControl.tsx +4 -4
  143. package/src/controls/MaterialRadioGroup.tsx +73 -73
  144. package/src/controls/MaterialRadioGroupControl.tsx +1 -1
  145. package/src/controls/MaterialSliderControl.tsx +93 -88
  146. package/src/controls/MaterialTimeControl.tsx +87 -85
  147. package/src/layouts/ArrayToolbar.tsx +11 -7
  148. package/src/layouts/ExpandPanelRenderer.tsx +28 -32
  149. package/src/layouts/MaterialArrayLayout.tsx +73 -82
  150. package/src/layouts/MaterialArrayLayoutRenderer.tsx +1 -1
  151. package/src/layouts/MaterialCategorizationLayout.tsx +50 -67
  152. package/src/layouts/MaterialCategorizationStepperLayout.tsx +80 -88
  153. package/src/layouts/MaterialGroupLayout.tsx +1 -1
  154. package/src/{extended → mui-controls}/MuiAutocomplete.tsx +11 -9
  155. package/src/mui-controls/MuiCheckbox.tsx +2 -3
  156. package/src/mui-controls/MuiInputInteger.tsx +13 -10
  157. package/src/mui-controls/MuiInputNumber.tsx +10 -7
  158. package/src/mui-controls/MuiInputNumberFormat.tsx +9 -12
  159. package/src/mui-controls/MuiInputText.tsx +30 -21
  160. package/src/mui-controls/MuiInputTime.tsx +7 -5
  161. package/src/mui-controls/MuiSelect.tsx +4 -5
  162. package/src/mui-controls/MuiToggle.tsx +2 -3
  163. package/{lib/cells/MaterialNumberCell.js → src/util/debounce.ts} +20 -16
  164. package/{lib/util/index.js → src/util/focus.ts} +9 -7
  165. package/src/util/index.ts +2 -0
  166. package/src/util/layout.tsx +7 -8
  167. package/src/util/theme.ts +1 -1
  168. package/stats.html +3279 -0
  169. package/test/renderers/MaterialAllOfRenderer.test.tsx +1 -1
  170. package/test/renderers/MaterialAnyOfRenderer.test.tsx +15 -9
  171. package/test/renderers/MaterialAnyOfStringOrEnumControl.test.tsx +1 -1
  172. package/test/renderers/MaterialArrayControl.test.tsx +1 -1
  173. package/test/renderers/MaterialArrayLayout.test.tsx +39 -32
  174. package/test/renderers/MaterialBooleanCell.test.tsx +1 -1
  175. package/test/renderers/MaterialBooleanToggleCell.test.tsx +3 -2
  176. package/test/renderers/MaterialBooleanToggleControl.test.tsx +3 -2
  177. package/test/renderers/MaterialCategorizationLayout.test.tsx +76 -3
  178. package/test/renderers/MaterialCategorizationStepperLayout.test.tsx +79 -6
  179. package/test/renderers/MaterialDateCell.test.tsx +1 -1
  180. package/test/renderers/MaterialDateControl.test.tsx +5 -3
  181. package/test/renderers/MaterialDateTimeControl.test.tsx +5 -3
  182. package/test/renderers/MaterialEnumArrayRenderer.test.tsx +15 -7
  183. package/test/renderers/MaterialEnumCell.test.tsx +1 -1
  184. package/test/renderers/MaterialGroupLayout.test.tsx +1 -1
  185. package/test/renderers/MaterialInputControl.test.tsx +4 -4
  186. package/test/renderers/MaterialIntegerCell.test.tsx +42 -21
  187. package/test/renderers/MaterialLabelRenderer.test.tsx +1 -1
  188. package/test/renderers/MaterialLayouts.test.tsx +1 -1
  189. package/test/renderers/MaterialListWithDetailRenderer.test.tsx +2 -2
  190. package/test/renderers/MaterialNativeControl.test.tsx +2 -2
  191. package/test/renderers/MaterialNumberCell.test.tsx +46 -25
  192. package/test/renderers/MaterialObjectControl.test.tsx +1 -1
  193. package/test/renderers/MaterialOneOfEnumCell.test.tsx +1 -1
  194. package/test/renderers/MaterialOneOfRadioGroupControl.test.tsx +1 -1
  195. package/test/renderers/MaterialOneOfRenderer.test.tsx +17 -11
  196. package/test/renderers/MaterialRadioGroupControl.test.tsx +1 -1
  197. package/test/renderers/MaterialSliderControl.test.tsx +2 -2
  198. package/test/renderers/MaterialTextCell.test.tsx +47 -33
  199. package/test/renderers/MaterialTextControl.test.tsx +8 -4
  200. package/test/renderers/MaterialTimeCell.test.tsx +42 -21
  201. package/test/renderers/MaterialTimeControl.test.tsx +8 -6
  202. package/tsconfig.json +1 -2
  203. package/tsconfig.test.json +7 -0
  204. package/docs/classes/materialarraylayout.html +0 -777
  205. package/docs/classes/materialcategorizationlayoutrenderer.html +0 -786
  206. package/docs/classes/materialcategorizationstepperlayoutrenderer.html +0 -762
  207. package/docs/classes/materialdatecontrol.html +0 -825
  208. package/docs/classes/materialdatetimecontrol.html +0 -825
  209. package/docs/classes/materialinputcontrol.html +0 -825
  210. package/docs/classes/materialnativecontrol.html +0 -825
  211. package/docs/classes/materialradiogroup.html +0 -825
  212. package/docs/classes/materialslidercontrol.html +0 -825
  213. package/docs/classes/materialtimecontrol.html +0 -825
  214. package/docs/interfaces/materialarraylayoutstate.html +0 -157
  215. package/example/CustomAutocomplete.tsx +0 -54
  216. package/lib/additional/ListWithDetailMasterItem.js +0 -19
  217. package/lib/additional/ListWithDetailMasterItem.js.map +0 -1
  218. package/lib/additional/MaterialLabelRenderer.js +0 -47
  219. package/lib/additional/MaterialLabelRenderer.js.map +0 -1
  220. package/lib/additional/MaterialListWithDetailRenderer.js +0 -64
  221. package/lib/additional/MaterialListWithDetailRenderer.js.map +0 -1
  222. package/lib/additional/index.js +0 -34
  223. package/lib/additional/index.js.map +0 -1
  224. package/lib/cells/CustomizableCells.js +0 -45
  225. package/lib/cells/CustomizableCells.js.map +0 -1
  226. package/lib/cells/MaterialBooleanCell.js +0 -37
  227. package/lib/cells/MaterialBooleanCell.js.map +0 -1
  228. package/lib/cells/MaterialBooleanToggleCell.js +0 -38
  229. package/lib/cells/MaterialBooleanToggleCell.js.map +0 -1
  230. package/lib/cells/MaterialDateCell.js +0 -40
  231. package/lib/cells/MaterialDateCell.js.map +0 -1
  232. package/lib/cells/MaterialEnumCell.js +0 -39
  233. package/lib/cells/MaterialEnumCell.js.map +0 -1
  234. package/lib/cells/MaterialIntegerCell.js +0 -35
  235. package/lib/cells/MaterialIntegerCell.js.map +0 -1
  236. package/lib/cells/MaterialNumberCell.js.map +0 -1
  237. package/lib/cells/MaterialNumberFormatCell.js +0 -39
  238. package/lib/cells/MaterialNumberFormatCell.js.map +0 -1
  239. package/lib/cells/MaterialOneOfEnumCell.js +0 -39
  240. package/lib/cells/MaterialOneOfEnumCell.js.map +0 -1
  241. package/lib/cells/MaterialTextCell.js +0 -39
  242. package/lib/cells/MaterialTextCell.js.map +0 -1
  243. package/lib/cells/MaterialTimeCell.js +0 -35
  244. package/lib/cells/MaterialTimeCell.js.map +0 -1
  245. package/lib/cells/index.js +0 -60
  246. package/lib/cells/index.js.map +0 -1
  247. package/lib/complex/CombinatorProperties.js +0 -57
  248. package/lib/complex/CombinatorProperties.js.map +0 -1
  249. package/lib/complex/DeleteDialog.js +0 -41
  250. package/lib/complex/DeleteDialog.js.map +0 -1
  251. package/lib/complex/MaterialAllOfRenderer.js +0 -45
  252. package/lib/complex/MaterialAllOfRenderer.js.map +0 -1
  253. package/lib/complex/MaterialAnyOfRenderer.js +0 -49
  254. package/lib/complex/MaterialAnyOfRenderer.js.map +0 -1
  255. package/lib/complex/MaterialArrayControlRenderer.js +0 -55
  256. package/lib/complex/MaterialArrayControlRenderer.js.map +0 -1
  257. package/lib/complex/MaterialEnumArrayRenderer.js +0 -45
  258. package/lib/complex/MaterialEnumArrayRenderer.js.map +0 -1
  259. package/lib/complex/MaterialObjectRenderer.js +0 -49
  260. package/lib/complex/MaterialObjectRenderer.js.map +0 -1
  261. package/lib/complex/MaterialOneOfRenderer.js +0 -77
  262. package/lib/complex/MaterialOneOfRenderer.js.map +0 -1
  263. package/lib/complex/MaterialTableControl.js +0 -190
  264. package/lib/complex/MaterialTableControl.js.map +0 -1
  265. package/lib/complex/NoBorderTableCell.js +0 -41
  266. package/lib/complex/NoBorderTableCell.js.map +0 -1
  267. package/lib/complex/TableToolbar.js +0 -58
  268. package/lib/complex/TableToolbar.js.map +0 -1
  269. package/lib/complex/ValidationIcon.js +0 -48
  270. package/lib/complex/ValidationIcon.js.map +0 -1
  271. package/lib/complex/index.js +0 -47
  272. package/lib/complex/index.js.map +0 -1
  273. package/lib/controls/MaterialAnyOfStringOrEnumControl.js +0 -80
  274. package/lib/controls/MaterialAnyOfStringOrEnumControl.js.map +0 -1
  275. package/lib/controls/MaterialBooleanControl.js +0 -41
  276. package/lib/controls/MaterialBooleanControl.js.map +0 -1
  277. package/lib/controls/MaterialBooleanToggleControl.js +0 -41
  278. package/lib/controls/MaterialBooleanToggleControl.js.map +0 -1
  279. package/lib/controls/MaterialDateControl.js +0 -69
  280. package/lib/controls/MaterialDateControl.js.map +0 -1
  281. package/lib/controls/MaterialDateTimeControl.js +0 -71
  282. package/lib/controls/MaterialDateTimeControl.js.map +0 -1
  283. package/lib/controls/MaterialEnumControl.js +0 -36
  284. package/lib/controls/MaterialEnumControl.js.map +0 -1
  285. package/lib/controls/MaterialInputControl.js +0 -61
  286. package/lib/controls/MaterialInputControl.js.map +0 -1
  287. package/lib/controls/MaterialIntegerControl.js +0 -36
  288. package/lib/controls/MaterialIntegerControl.js.map +0 -1
  289. package/lib/controls/MaterialNativeControl.js +0 -55
  290. package/lib/controls/MaterialNativeControl.js.map +0 -1
  291. package/lib/controls/MaterialNumberControl.js +0 -36
  292. package/lib/controls/MaterialNumberControl.js.map +0 -1
  293. package/lib/controls/MaterialOneOfEnumControl.js +0 -36
  294. package/lib/controls/MaterialOneOfEnumControl.js.map +0 -1
  295. package/lib/controls/MaterialOneOfRadioGroupControl.js +0 -37
  296. package/lib/controls/MaterialOneOfRadioGroupControl.js.map +0 -1
  297. package/lib/controls/MaterialRadioGroup.js +0 -55
  298. package/lib/controls/MaterialRadioGroup.js.map +0 -1
  299. package/lib/controls/MaterialRadioGroupControl.js +0 -37
  300. package/lib/controls/MaterialRadioGroupControl.js.map +0 -1
  301. package/lib/controls/MaterialSliderControl.js +0 -74
  302. package/lib/controls/MaterialSliderControl.js.map +0 -1
  303. package/lib/controls/MaterialTextControl.js +0 -36
  304. package/lib/controls/MaterialTextControl.js.map +0 -1
  305. package/lib/controls/MaterialTimeControl.js +0 -66
  306. package/lib/controls/MaterialTimeControl.js.map +0 -1
  307. package/lib/controls/index.js +0 -91
  308. package/lib/controls/index.js.map +0 -1
  309. package/lib/extended/MaterialAutocompleteEnumControl.d.ts +0 -7
  310. package/lib/extended/MaterialAutocompleteEnumControl.js +0 -42
  311. package/lib/extended/MaterialAutocompleteEnumControl.js.map +0 -1
  312. package/lib/extended/MaterialAutocompleteOneOfEnumControl.d.ts +0 -7
  313. package/lib/extended/MaterialAutocompleteOneOfEnumControl.js +0 -42
  314. package/lib/extended/MaterialAutocompleteOneOfEnumControl.js.map +0 -1
  315. package/lib/extended/MuiAutocomplete.d.ts +0 -10
  316. package/lib/extended/MuiAutocomplete.js +0 -45
  317. package/lib/extended/MuiAutocomplete.js.map +0 -1
  318. package/lib/extended/index.d.ts +0 -10
  319. package/lib/extended/index.js +0 -48
  320. package/lib/extended/index.js.map +0 -1
  321. package/lib/index.js +0 -89
  322. package/lib/index.js.map +0 -1
  323. package/lib/jsonforms-material.js +0 -86
  324. package/lib/jsonforms-material.js.map +0 -1
  325. package/lib/layouts/ArrayToolbar.js +0 -27
  326. package/lib/layouts/ArrayToolbar.js.map +0 -1
  327. package/lib/layouts/ExpandPanelRenderer.js +0 -113
  328. package/lib/layouts/ExpandPanelRenderer.js.map +0 -1
  329. package/lib/layouts/MaterialArrayLayout.js +0 -66
  330. package/lib/layouts/MaterialArrayLayout.js.map +0 -1
  331. package/lib/layouts/MaterialArrayLayoutRenderer.js +0 -43
  332. package/lib/layouts/MaterialArrayLayoutRenderer.js.map +0 -1
  333. package/lib/layouts/MaterialCategorizationLayout.js +0 -88
  334. package/lib/layouts/MaterialCategorizationLayout.js.map +0 -1
  335. package/lib/layouts/MaterialCategorizationStepperLayout.js +0 -89
  336. package/lib/layouts/MaterialCategorizationStepperLayout.js.map +0 -1
  337. package/lib/layouts/MaterialGroupLayout.js +0 -52
  338. package/lib/layouts/MaterialGroupLayout.js.map +0 -1
  339. package/lib/layouts/MaterialHorizontalLayout.js +0 -51
  340. package/lib/layouts/MaterialHorizontalLayout.js.map +0 -1
  341. package/lib/layouts/MaterialVerticalLayout.js +0 -51
  342. package/lib/layouts/MaterialVerticalLayout.js.map +0 -1
  343. package/lib/layouts/index.js +0 -43
  344. package/lib/layouts/index.js.map +0 -1
  345. package/lib/mui-controls/MuiCheckbox.js +0 -40
  346. package/lib/mui-controls/MuiCheckbox.js.map +0 -1
  347. package/lib/mui-controls/MuiInputInteger.js +0 -41
  348. package/lib/mui-controls/MuiInputInteger.js.map +0 -1
  349. package/lib/mui-controls/MuiInputNumber.js +0 -41
  350. package/lib/mui-controls/MuiInputNumber.js.map +0 -1
  351. package/lib/mui-controls/MuiInputNumberFormat.js +0 -50
  352. package/lib/mui-controls/MuiInputNumberFormat.js.map +0 -1
  353. package/lib/mui-controls/MuiInputText.js +0 -64
  354. package/lib/mui-controls/MuiInputText.js.map +0 -1
  355. package/lib/mui-controls/MuiInputTime.js +0 -37
  356. package/lib/mui-controls/MuiInputTime.js.map +0 -1
  357. package/lib/mui-controls/MuiSelect.js +0 -38
  358. package/lib/mui-controls/MuiSelect.js.map +0 -1
  359. package/lib/mui-controls/MuiToggle.js +0 -39
  360. package/lib/mui-controls/MuiToggle.js.map +0 -1
  361. package/lib/mui-controls/index.js +0 -35
  362. package/lib/mui-controls/index.js.map +0 -1
  363. package/lib/util/datejs.js +0 -26
  364. package/lib/util/datejs.js.map +0 -1
  365. package/lib/util/index.js.map +0 -1
  366. package/lib/util/layout.js +0 -54
  367. package/lib/util/layout.js.map +0 -1
  368. package/lib/util/theme.js +0 -3
  369. package/lib/util/theme.js.map +0 -1
  370. package/src/extended/MaterialAutocompleteEnumControl.tsx +0 -55
  371. package/src/extended/MaterialAutocompleteOneOfEnumControl.tsx +0 -55
  372. package/src/extended/index.ts +0 -56
  373. package/webpack/webpack.build.js +0 -21
@@ -33,7 +33,7 @@ import {
33
33
  and
34
34
  } from '@jsonforms/core';
35
35
  import { withJsonFormsControlProps } from '@jsonforms/react';
36
- import { FormControlLabel, Hidden } from '@material-ui/core';
36
+ import { FormControlLabel, Hidden } from '@mui/material';
37
37
  import { MuiToggle } from '../mui-controls/MuiToggle';
38
38
 
39
39
  export const MaterialBooleanToggleControl = ({
@@ -23,110 +23,104 @@
23
23
  THE SOFTWARE.
24
24
  */
25
25
  import merge from 'lodash/merge';
26
- import React from 'react';
26
+ import React, { useMemo } from 'react';
27
27
  import {
28
- ControlState,
29
- DispatchPropsOfControl,
28
+ ControlProps,
30
29
  isDateControl,
31
30
  isDescriptionHidden,
32
31
  RankedTester,
33
32
  rankWith,
34
- StatePropsOfControl
35
33
  } from '@jsonforms/core';
36
- import { Control, withJsonFormsControlProps } from '@jsonforms/react';
37
- import { FormHelperText, Hidden } from '@material-ui/core';
38
- import KeyboardArrowLeftIcon from '@material-ui/icons/KeyboardArrowLeft';
39
- import KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';
40
- import EventIcon from '@material-ui/icons/Event';
34
+ import { withJsonFormsControlProps } from '@jsonforms/react';
35
+ import { FormHelperText, Hidden, TextField } from '@mui/material';
41
36
  import {
42
- KeyboardDatePicker,
43
- MuiPickersUtilsProvider
44
- } from '@material-ui/pickers';
45
- import DayJsUtils from '@date-io/dayjs';
46
- import { createOnChangeHandler, getData } from '../util';
37
+ DatePicker,
38
+ LocalizationProvider
39
+ } from '@mui/lab';
40
+ import AdapterDayjs from '@mui/lab/AdapterDayjs';
41
+ import { createOnChangeHandler, getData, useFocus } from '../util';
47
42
 
48
- export class MaterialDateControl extends Control<
49
- StatePropsOfControl & DispatchPropsOfControl,
50
- ControlState
51
- > {
52
- render() {
53
- const {
54
- description,
55
- id,
56
- errors,
57
- label,
58
- uischema,
59
- visible,
60
- enabled,
61
- required,
62
- path,
63
- handleChange,
64
- data,
65
- config
66
- } = this.props;
67
- const isValid = errors.length === 0;
68
- const appliedUiSchemaOptions = merge({}, config, uischema.options);
69
- const showDescription = !isDescriptionHidden(
70
- visible,
71
- description,
72
- this.state.isFocused,
73
- appliedUiSchemaOptions.showUnfocusedDescription
74
- );
43
+ export const MaterialDateControl = (props: ControlProps)=> {
44
+ const [focused, onFocus, onBlur] = useFocus();
45
+ const {
46
+ description,
47
+ id,
48
+ errors,
49
+ label,
50
+ uischema,
51
+ visible,
52
+ enabled,
53
+ required,
54
+ path,
55
+ handleChange,
56
+ data,
57
+ config
58
+ } = props;
59
+ const isValid = errors.length === 0;
60
+ const appliedUiSchemaOptions = merge({}, config, uischema.options);
61
+ const showDescription = !isDescriptionHidden(
62
+ visible,
63
+ description,
64
+ focused,
65
+ appliedUiSchemaOptions.showUnfocusedDescription
66
+ );
75
67
 
76
- const format = appliedUiSchemaOptions.dateFormat ?? 'YYYY-MM-DD';
77
- const saveFormat = appliedUiSchemaOptions.dateSaveFormat ?? 'YYYY-MM-DD';
68
+ const format = appliedUiSchemaOptions.dateFormat ?? 'YYYY-MM-DD';
69
+ const saveFormat = appliedUiSchemaOptions.dateSaveFormat ?? 'YYYY-MM-DD';
78
70
 
79
- const firstFormHelperText = showDescription
80
- ? description
81
- : !isValid
82
- ? errors
83
- : null;
84
- const secondFormHelperText = showDescription && !isValid ? errors : null;
71
+ const firstFormHelperText = showDescription
72
+ ? description
73
+ : !isValid
74
+ ? errors
75
+ : null;
76
+ const secondFormHelperText = showDescription && !isValid ? errors : null;
77
+ const onChange = useMemo(() => createOnChangeHandler(
78
+ path,
79
+ handleChange,
80
+ saveFormat
81
+ ),[path, handleChange, saveFormat]);
85
82
 
86
- return (
87
- <Hidden xsUp={!visible}>
88
- <MuiPickersUtilsProvider utils={DayJsUtils}>
89
- <KeyboardDatePicker
90
- id={id + '-input'}
91
- required={required && !appliedUiSchemaOptions.hideRequiredAsterisk}
92
- label={label}
93
- error={!isValid}
94
- fullWidth={!appliedUiSchemaOptions.trim}
95
- InputLabelProps={data ? { shrink: true } : undefined}
96
- value={getData(data, saveFormat)}
97
- clearable
98
- onChange={createOnChangeHandler(
99
- path,
100
- handleChange,
101
- saveFormat
102
- )}
103
- format={format}
104
- views={appliedUiSchemaOptions.views}
105
- disabled={!enabled}
106
- autoFocus={appliedUiSchemaOptions.focus}
107
- onFocus={this.onFocus}
108
- onBlur={this.onBlur}
109
- cancelLabel={appliedUiSchemaOptions.cancelLabel}
110
- clearLabel={appliedUiSchemaOptions.clearLabel}
111
- okLabel={appliedUiSchemaOptions.okLabel}
112
- leftArrowIcon={<KeyboardArrowLeftIcon />}
113
- rightArrowIcon={<KeyboardArrowRightIcon />}
114
- keyboardIcon={<EventIcon />}
115
- invalidDateMessage={null}
116
- maxDateMessage={null}
117
- minDateMessage={null}
118
- />
119
- <FormHelperText error={!isValid && !showDescription}>
120
- {firstFormHelperText}
121
- </FormHelperText>
122
- <FormHelperText error={!isValid}>
123
- {secondFormHelperText}
124
- </FormHelperText>
125
- </MuiPickersUtilsProvider>
126
- </Hidden>
127
- );
128
- }
129
- }
83
+ return (
84
+ <Hidden xsUp={!visible}>
85
+ <LocalizationProvider dateAdapter={AdapterDayjs}>
86
+ <DatePicker
87
+ label={label}
88
+ value={getData(data, saveFormat)}
89
+ clearable
90
+ onChange={onChange}
91
+ inputFormat={format}
92
+ disableMaskedInput
93
+ views={appliedUiSchemaOptions.views}
94
+ disabled={!enabled}
95
+ cancelText={appliedUiSchemaOptions.cancelLabel}
96
+ clearText={appliedUiSchemaOptions.clearLabel}
97
+ okText={appliedUiSchemaOptions.okLabel}
98
+ renderInput={params => (
99
+ <TextField
100
+ {...params}
101
+ id={id + '-input'}
102
+ required={required && !appliedUiSchemaOptions.hideRequiredAsterisk}
103
+ autoFocus={appliedUiSchemaOptions.focus}
104
+ error={!isValid}
105
+ fullWidth={!appliedUiSchemaOptions.trim}
106
+ inputProps={{ ...params.inputProps, type: 'text' }}
107
+ InputLabelProps={data ? { shrink: true } : undefined}
108
+ onFocus={onFocus}
109
+ onBlur={onBlur}
110
+ variant={'standard'}
111
+ />
112
+ )}
113
+ />
114
+ <FormHelperText error={!isValid && !showDescription}>
115
+ {firstFormHelperText}
116
+ </FormHelperText>
117
+ <FormHelperText error={!isValid}>
118
+ {secondFormHelperText}
119
+ </FormHelperText>
120
+ </LocalizationProvider>
121
+ </Hidden>
122
+ );
123
+ };
130
124
 
131
125
  export const materialDateControlTester: RankedTester = rankWith(
132
126
  4,
@@ -22,116 +22,108 @@
22
22
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
23
  THE SOFTWARE.
24
24
  */
25
- import React from 'react';
25
+ import React, { useMemo } from 'react';
26
26
  import merge from 'lodash/merge';
27
27
  import {
28
28
  ControlProps,
29
- ControlState,
30
29
  isDateTimeControl,
31
30
  isDescriptionHidden,
32
31
  RankedTester,
33
32
  rankWith
34
33
  } from '@jsonforms/core';
35
- import { Control, withJsonFormsControlProps } from '@jsonforms/react';
36
- import { FormHelperText, Hidden } from '@material-ui/core';
37
- import KeyboardArrowLeftIcon from '@material-ui/icons/KeyboardArrowLeft';
38
- import KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';
39
- import DateRangeIcon from '@material-ui/icons/DateRange';
40
- import EventIcon from '@material-ui/icons/Event';
41
- import AccessTimeIcon from '@material-ui/icons/AccessTime';
34
+ import { withJsonFormsControlProps } from '@jsonforms/react';
35
+ import { FormHelperText, Hidden, TextField } from '@mui/material';
42
36
  import {
43
- KeyboardDateTimePicker,
44
- MuiPickersUtilsProvider
45
- } from '@material-ui/pickers';
46
- import DayjsUtils from '@date-io/dayjs';
47
- import { createOnChangeHandler, getData } from '../util';
37
+ DateTimePicker,
38
+ LocalizationProvider
39
+ } from '@mui/lab';
40
+ import AdapterDayjs from '@mui/lab/AdapterDayjs';
41
+ import { createOnChangeHandler, getData, useFocus } from '../util';
48
42
 
49
- export class MaterialDateTimeControl extends Control<
50
- ControlProps,
51
- ControlState
52
- > {
53
- render() {
54
- const {
55
- id,
56
- description,
57
- errors,
58
- label,
59
- uischema,
60
- visible,
61
- enabled,
62
- required,
63
- path,
64
- handleChange,
65
- data,
66
- config
67
- } = this.props;
68
- const appliedUiSchemaOptions = merge({}, config, uischema.options);
69
- const isValid = errors.length === 0;
43
+ export const MaterialDateTimeControl = (props: ControlProps) => {
44
+ const [focused, onFocus, onBlur] = useFocus();
45
+ const {
46
+ id,
47
+ description,
48
+ errors,
49
+ label,
50
+ uischema,
51
+ visible,
52
+ enabled,
53
+ required,
54
+ path,
55
+ handleChange,
56
+ data,
57
+ config
58
+ } = props;
59
+ const appliedUiSchemaOptions = merge({}, config, uischema.options);
60
+ const isValid = errors.length === 0;
61
+
62
+ const showDescription = !isDescriptionHidden(
63
+ visible,
64
+ description,
65
+ focused,
66
+ appliedUiSchemaOptions.showUnfocusedDescription
67
+ );
70
68
 
71
- const showDescription = !isDescriptionHidden(
72
- visible,
73
- description,
74
- this.state.isFocused,
75
- appliedUiSchemaOptions.showUnfocusedDescription
76
- );
69
+ const format = appliedUiSchemaOptions.dateTimeFormat ?? 'YYYY-MM-DD HH:mm';
70
+ const saveFormat = appliedUiSchemaOptions.dateTimeSaveFormat ?? undefined;
77
71
 
78
- const format = appliedUiSchemaOptions.dateTimeFormat ?? 'YYYY-MM-DD HH:mm';
79
- const saveFormat = appliedUiSchemaOptions.dateTimeSaveFormat ?? undefined;
72
+ const firstFormHelperText = showDescription
73
+ ? description
74
+ : !isValid
75
+ ? errors
76
+ : null;
77
+ const secondFormHelperText = showDescription && !isValid ? errors : null;
80
78
 
81
- const firstFormHelperText = showDescription
82
- ? description
83
- : !isValid
84
- ? errors
85
- : null;
86
- const secondFormHelperText = showDescription && !isValid ? errors : null;
79
+ const onChange = useMemo(() => createOnChangeHandler(
80
+ path,
81
+ handleChange,
82
+ saveFormat
83
+ ),[path, handleChange, saveFormat]);
87
84
 
88
- return (
89
- <Hidden xsUp={!visible}>
90
- <MuiPickersUtilsProvider utils={DayjsUtils}>
91
- <KeyboardDateTimePicker
92
- id={id + '-input'}
93
- required={required && !appliedUiSchemaOptions.hideRequiredAsterisk}
94
- label={label}
95
- error={!isValid}
96
- fullWidth={!appliedUiSchemaOptions.trim}
97
- onFocus={this.onFocus}
98
- onBlur={this.onBlur}
99
- InputLabelProps={data ? { shrink: true } : undefined}
100
- value={getData(data, saveFormat)}
101
- clearable
102
- onChange={createOnChangeHandler(
103
- path,
104
- handleChange,
105
- saveFormat
106
- )}
107
- format={format}
108
- ampm={!!appliedUiSchemaOptions.ampm}
109
- views={appliedUiSchemaOptions.views}
110
- disabled={!enabled}
111
- autoFocus={appliedUiSchemaOptions.focus}
112
- cancelLabel={appliedUiSchemaOptions.cancelLabel}
113
- clearLabel={appliedUiSchemaOptions.clearLabel}
114
- okLabel={appliedUiSchemaOptions.okLabel}
115
- leftArrowIcon={<KeyboardArrowLeftIcon />}
116
- rightArrowIcon={<KeyboardArrowRightIcon />}
117
- dateRangeIcon={<DateRangeIcon />}
118
- keyboardIcon={<EventIcon />}
119
- timeIcon={<AccessTimeIcon />}
120
- invalidDateMessage={null}
121
- maxDateMessage={null}
122
- minDateMessage={null}
123
- />
124
- <FormHelperText error={!isValid && !showDescription}>
125
- {firstFormHelperText}
126
- </FormHelperText>
127
- <FormHelperText error={!isValid}>
128
- {secondFormHelperText}
129
- </FormHelperText>
130
- </MuiPickersUtilsProvider>
131
- </Hidden>
132
- );
133
- }
134
- }
85
+ return (
86
+ <Hidden xsUp={!visible}>
87
+ <LocalizationProvider dateAdapter={AdapterDayjs}>
88
+ <DateTimePicker
89
+ label={label}
90
+ value={getData(data, saveFormat)}
91
+ clearable
92
+ onChange={onChange}
93
+ inputFormat={format}
94
+ disableMaskedInput
95
+ ampm={!!appliedUiSchemaOptions.ampm}
96
+ views={appliedUiSchemaOptions.views}
97
+ disabled={!enabled}
98
+ cancelText={appliedUiSchemaOptions.cancelLabel}
99
+ clearText={appliedUiSchemaOptions.clearLabel}
100
+ okText={appliedUiSchemaOptions.okLabel}
101
+ renderInput={params => (
102
+ <TextField
103
+ {...params}
104
+ id={id + '-input'}
105
+ required={required && !appliedUiSchemaOptions.hideRequiredAsterisk}
106
+ autoFocus={appliedUiSchemaOptions.focus}
107
+ error={!isValid}
108
+ fullWidth={!appliedUiSchemaOptions.trim}
109
+ inputProps={{ ...params.inputProps, type: 'text' }}
110
+ InputLabelProps={data ? { shrink: true } : undefined}
111
+ onFocus={onFocus}
112
+ onBlur={onBlur}
113
+ variant={'standard'}
114
+ />
115
+ )}
116
+ />
117
+ <FormHelperText error={!isValid && !showDescription}>
118
+ {firstFormHelperText}
119
+ </FormHelperText>
120
+ <FormHelperText error={!isValid}>
121
+ {secondFormHelperText}
122
+ </FormHelperText>
123
+ </LocalizationProvider>
124
+ </Hidden>
125
+ );
126
+ };
135
127
 
136
128
  export const materialDateTimeControlTester: RankedTester = rankWith(
137
129
  2,
@@ -32,11 +32,20 @@ import {
32
32
  } from '@jsonforms/core';
33
33
  import { withJsonFormsEnumProps } from '@jsonforms/react';
34
34
  import { MuiSelect } from '../mui-controls/MuiSelect';
35
+ import merge from 'lodash/merge';
35
36
  import { MaterialInputControl } from './MaterialInputControl';
37
+ import { MuiAutocomplete, WithOptionLabel } from '../mui-controls/MuiAutocomplete';
36
38
 
37
- export const MaterialEnumControl = (props: ControlProps & OwnPropsOfEnum) => (
38
- <MaterialInputControl {...props} input={MuiSelect} />
39
- );
39
+ export const MaterialEnumControl = (props: ControlProps & OwnPropsOfEnum & WithOptionLabel) => {
40
+ const {config, uischema} = props;
41
+ const appliedUiSchemaOptions = merge({}, config, uischema.options);
42
+ return (
43
+ <MaterialInputControl
44
+ {...props}
45
+ input={appliedUiSchemaOptions.autocomplete === false ? MuiSelect : MuiAutocomplete}
46
+ />
47
+ );
48
+ };
40
49
 
41
50
  export const materialEnumControlTester: RankedTester = rankWith(
42
51
  2,
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  The MIT License
3
3
 
4
- Copyright (c) 2017-2019 EclipseSource Munich
4
+ Copyright (c) 2017-2021 EclipseSource Munich
5
5
  https://github.com/eclipsesource/jsonforms
6
6
 
7
7
  Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -24,87 +24,81 @@
24
24
  */
25
25
  import React from 'react';
26
26
  import {
27
- computeLabel,
27
+ showAsRequired,
28
28
  ControlProps,
29
- ControlState,
30
29
  isDescriptionHidden,
31
30
  } from '@jsonforms/core';
32
- import { Control } from '@jsonforms/react';
33
31
 
34
- import { Hidden, InputLabel } from '@material-ui/core';
35
- import { FormControl, FormHelperText } from '@material-ui/core';
32
+ import { Hidden, InputLabel } from '@mui/material';
33
+ import { FormControl, FormHelperText } from '@mui/material';
36
34
  import merge from 'lodash/merge';
35
+ import { useFocus } from '../util';
37
36
 
38
37
  export interface WithInput {
39
38
  input: any;
40
39
  }
41
40
 
42
- export abstract class MaterialInputControl extends Control<
43
- ControlProps & WithInput,
44
- ControlState
45
- > {
46
- render() {
47
- const {
48
- id,
49
- description,
50
- errors,
51
- label,
52
- uischema,
53
- visible,
54
- required,
55
- config,
56
- input
57
- } = this.props;
58
- const isValid = errors.length === 0;
59
- const appliedUiSchemaOptions = merge({}, config, uischema.options);
41
+ export const MaterialInputControl = (props: ControlProps & WithInput) => {
42
+ const [focused, onFocus, onBlur] = useFocus();
43
+ const {
44
+ id,
45
+ description,
46
+ errors,
47
+ label,
48
+ uischema,
49
+ visible,
50
+ required,
51
+ config,
52
+ input
53
+ } = props;
54
+ const isValid = errors.length === 0;
55
+ const appliedUiSchemaOptions = merge({}, config, uischema.options);
60
56
 
61
- const showDescription = !isDescriptionHidden(
62
- visible,
63
- description,
64
- this.state.isFocused,
65
- appliedUiSchemaOptions.showUnfocusedDescription
66
- );
57
+ const showDescription = !isDescriptionHidden(
58
+ visible,
59
+ description,
60
+ focused,
61
+ appliedUiSchemaOptions.showUnfocusedDescription
62
+ );
67
63
 
68
- const firstFormHelperText = showDescription
69
- ? description
70
- : !isValid
71
- ? errors
72
- : null;
73
- const secondFormHelperText = showDescription && !isValid ? errors : null;
74
- const InnerComponent = input;
64
+ const firstFormHelperText = showDescription
65
+ ? description
66
+ : !isValid
67
+ ? errors
68
+ : null;
69
+ const secondFormHelperText = showDescription && !isValid ? errors : null;
70
+ const InnerComponent = input;
75
71
 
76
- return (
77
- <Hidden xsUp={!visible}>
78
- <FormControl
79
- fullWidth={!appliedUiSchemaOptions.trim}
80
- onFocus={this.onFocus}
81
- onBlur={this.onBlur}
82
- id={id}
72
+ return (
73
+ <Hidden xsUp={!visible}>
74
+ <FormControl
75
+ fullWidth={!appliedUiSchemaOptions.trim}
76
+ onFocus={onFocus}
77
+ onBlur={onBlur}
78
+ id={id}
79
+ variant={'standard'}
80
+ >
81
+ <InputLabel
82
+ htmlFor={id + '-input'}
83
+ error={!isValid}
84
+ required={showAsRequired(required,
85
+ appliedUiSchemaOptions.hideRequiredAsterisk)}
83
86
  >
84
- <InputLabel
85
- htmlFor={id + '-input'}
86
- error={!isValid}
87
- >
88
- {computeLabel(
89
- label,
90
- required,
91
- appliedUiSchemaOptions.hideRequiredAsterisk
92
- )}
93
- </InputLabel>
94
- <InnerComponent
95
- {...this.props}
96
- id={id + '-input'}
97
- isValid={isValid}
98
- visible={visible}
99
- />
100
- <FormHelperText error={!isValid && !showDescription}>
101
- {firstFormHelperText}
102
- </FormHelperText>
103
- <FormHelperText error={!isValid}>
104
- {secondFormHelperText}
105
- </FormHelperText>
106
- </FormControl>
107
- </Hidden>
108
- );
109
- }
110
- }
87
+ {label}
88
+ </InputLabel>
89
+ <InnerComponent
90
+ {...props}
91
+ id={id + '-input'}
92
+ isValid={isValid}
93
+ visible={visible}
94
+ />
95
+ <FormHelperText error={!isValid && !showDescription}>
96
+ {firstFormHelperText}
97
+ </FormHelperText>
98
+ <FormHelperText error={!isValid}>
99
+ {secondFormHelperText}
100
+ </FormHelperText>
101
+ </FormControl>
102
+ </Hidden>
103
+ );
104
+ };