@rjsf/semantic-ui 5.11.2 → 5.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/dist/index.js +1128 -5
  2. package/dist/index.js.map +7 -0
  3. package/dist/semantic-ui.esm.js +641 -809
  4. package/dist/semantic-ui.esm.js.map +7 -1
  5. package/dist/semantic-ui.umd.js +997 -0
  6. package/lib/AddButton/AddButton.d.ts +5 -0
  7. package/lib/AddButton/AddButton.js +12 -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 +40 -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 +28 -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 +33 -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 +42 -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 +13 -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 +12 -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 +30 -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 +22 -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 +8 -0
  73. package/lib/IconButton/IconButton.js +26 -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/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +9 -0
  79. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js +23 -0
  80. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js.map +1 -0
  81. package/lib/ObjectFieldTemplate/index.d.ts +2 -0
  82. package/lib/ObjectFieldTemplate/index.js +3 -0
  83. package/lib/ObjectFieldTemplate/index.js.map +1 -0
  84. package/lib/RadioWidget/RadioWidget.d.ts +8 -0
  85. package/lib/RadioWidget/RadioWidget.js +32 -0
  86. package/lib/RadioWidget/RadioWidget.js.map +1 -0
  87. package/lib/RadioWidget/index.d.ts +2 -0
  88. package/lib/RadioWidget/index.js +3 -0
  89. package/lib/RadioWidget/index.js.map +1 -0
  90. package/lib/RangeWidget/RangeWidget.d.ts +8 -0
  91. package/lib/RangeWidget/RangeWidget.js +26 -0
  92. package/lib/RangeWidget/RangeWidget.js.map +1 -0
  93. package/lib/RangeWidget/index.d.ts +2 -0
  94. package/lib/RangeWidget/index.js +3 -0
  95. package/lib/RangeWidget/index.js.map +1 -0
  96. package/lib/SelectWidget/SelectWidget.d.ts +8 -0
  97. package/lib/SelectWidget/SelectWidget.js +51 -0
  98. package/lib/SelectWidget/SelectWidget.js.map +1 -0
  99. package/lib/SelectWidget/index.d.ts +2 -0
  100. package/lib/SelectWidget/index.js +3 -0
  101. package/lib/SelectWidget/index.js.map +1 -0
  102. package/lib/SemanticUIForm/SemanticUIForm.d.ts +6 -0
  103. package/lib/SemanticUIForm/SemanticUIForm.js +7 -0
  104. package/lib/SemanticUIForm/SemanticUIForm.js.map +1 -0
  105. package/lib/SemanticUIForm/index.d.ts +2 -0
  106. package/lib/SemanticUIForm/index.js +3 -0
  107. package/lib/SemanticUIForm/index.js.map +1 -0
  108. package/lib/SubmitButton/SubmitButton.d.ts +5 -0
  109. package/lib/SubmitButton/SubmitButton.js +13 -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 +22 -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 +12 -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 +22 -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 +23 -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/lib/util.d.ts +60 -0
  154. package/lib/util.js +69 -0
  155. package/lib/util.js.map +1 -0
  156. package/package.json +23 -15
  157. package/src/AddButton/AddButton.tsx +24 -0
  158. package/src/AddButton/index.ts +2 -0
  159. package/src/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx +102 -0
  160. package/src/ArrayFieldItemTemplate/index.ts +2 -0
  161. package/src/ArrayFieldTemplate/ArrayFieldTemplate.tsx +114 -0
  162. package/src/ArrayFieldTemplate/index.ts +2 -0
  163. package/src/BaseInputTemplate/BaseInputTemplate.tsx +90 -0
  164. package/src/BaseInputTemplate/index.ts +2 -0
  165. package/src/CheckboxWidget/CheckboxWidget.tsx +95 -0
  166. package/src/CheckboxWidget/index.ts +2 -0
  167. package/src/CheckboxesWidget/CheckboxesWidget.tsx +102 -0
  168. package/src/CheckboxesWidget/index.ts +2 -0
  169. package/src/DescriptionField/DescriptionField.tsx +21 -0
  170. package/src/DescriptionField/index.ts +2 -0
  171. package/src/ErrorList/ErrorList.tsx +23 -0
  172. package/src/ErrorList/index.ts +2 -0
  173. package/src/FieldErrorTemplate/FieldErrorTemplate.tsx +43 -0
  174. package/src/FieldErrorTemplate/index.ts +2 -0
  175. package/src/FieldHelpTemplate/FieldHelpTemplate.tsx +19 -0
  176. package/src/FieldHelpTemplate/index.ts +2 -0
  177. package/src/FieldTemplate/FieldTemplate.tsx +77 -0
  178. package/src/FieldTemplate/index.ts +2 -0
  179. package/src/IconButton/IconButton.tsx +55 -0
  180. package/src/IconButton/index.ts +2 -0
  181. package/src/ObjectFieldTemplate/ObjectFieldTemplate.tsx +94 -0
  182. package/src/ObjectFieldTemplate/index.ts +2 -0
  183. package/src/RadioWidget/RadioWidget.tsx +78 -0
  184. package/src/RadioWidget/index.ts +2 -0
  185. package/src/RangeWidget/RangeWidget.tsx +65 -0
  186. package/src/RangeWidget/index.ts +2 -0
  187. package/src/SelectWidget/SelectWidget.tsx +111 -0
  188. package/src/SelectWidget/index.ts +2 -0
  189. package/src/SemanticUIForm/SemanticUIForm.ts +15 -0
  190. package/src/SemanticUIForm/index.ts +2 -0
  191. package/src/SubmitButton/SubmitButton.tsx +20 -0
  192. package/src/SubmitButton/index.ts +2 -0
  193. package/src/Templates/Templates.ts +46 -0
  194. package/src/Templates/index.ts +2 -0
  195. package/src/TextareaWidget/TextareaWidget.tsx +69 -0
  196. package/src/TextareaWidget/index.ts +2 -0
  197. package/src/Theme/Theme.ts +20 -0
  198. package/src/Theme/index.ts +2 -0
  199. package/src/TitleField/TitleField.tsx +32 -0
  200. package/src/TitleField/index.ts +2 -0
  201. package/src/Widgets/Widgets.tsx +25 -0
  202. package/src/Widgets/index.ts +2 -0
  203. package/src/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx +95 -0
  204. package/src/WrapIfAdditionalTemplate/index.ts +2 -0
  205. package/src/index.ts +8 -0
  206. package/src/util.tsx +126 -0
  207. package/dist/index.d.ts +0 -17
  208. package/dist/semantic-ui.cjs.development.js +0 -1335
  209. package/dist/semantic-ui.cjs.development.js.map +0 -1
  210. package/dist/semantic-ui.cjs.production.min.js +0 -2
  211. package/dist/semantic-ui.cjs.production.min.js.map +0 -1
  212. package/dist/semantic-ui.umd.development.js +0 -1333
  213. package/dist/semantic-ui.umd.development.js.map +0 -1
  214. package/dist/semantic-ui.umd.production.min.js +0 -2
  215. package/dist/semantic-ui.umd.production.min.js.map +0 -1
@@ -0,0 +1,4 @@
1
+ import { FormContextType, RegistryWidgetsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
2
+ export declare function generateWidgets<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(): RegistryWidgetsType<T, S, F>;
3
+ declare const _default: RegistryWidgetsType<any, RJSFSchema, any>;
4
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import CheckboxWidget from '../CheckboxWidget/CheckboxWidget';
2
+ import CheckboxesWidget from '../CheckboxesWidget/CheckboxesWidget';
3
+ import RadioWidget from '../RadioWidget/RadioWidget';
4
+ import RangeWidget from '../RangeWidget/RangeWidget';
5
+ import SelectWidget from '../SelectWidget/SelectWidget';
6
+ import TextareaWidget from '../TextareaWidget/TextareaWidget';
7
+ export function generateWidgets() {
8
+ return {
9
+ CheckboxWidget,
10
+ CheckboxesWidget,
11
+ RadioWidget,
12
+ RangeWidget,
13
+ SelectWidget,
14
+ TextareaWidget,
15
+ };
16
+ }
17
+ export default generateWidgets();
18
+ //# sourceMappingURL=Widgets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Widgets.js","sourceRoot":"","sources":["../../src/Widgets/Widgets.tsx"],"names":[],"mappings":"AAEA,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,YAAY,MAAM,8BAA8B,CAAC;AACxD,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAE9D,MAAM,UAAU,eAAe;IAK7B,OAAO;QACL,cAAc;QACd,gBAAgB;QAChB,WAAW;QACX,WAAW;QACX,YAAY;QACZ,cAAc;KACf,CAAC;AACJ,CAAC;AAED,eAAe,eAAe,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default } from './Widgets';
2
+ export * from './Widgets';
@@ -0,0 +1,3 @@
1
+ export { default } from './Widgets';
2
+ export * from './Widgets';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Widgets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,cAAc,WAAW,CAAC"}
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { FormContextType, RJSFSchema, StrictRJSFSchema, WrapIfAdditionalTemplateProps } from '@rjsf/utils';
3
+ /** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are
4
+ * part of an `additionalProperties` part of a schema.
5
+ *
6
+ * @param props - The `WrapIfAdditionalProps` for this component
7
+ */
8
+ export default function WrapIfAdditionalTemplate<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(props: WrapIfAdditionalTemplateProps<T, S, F>): JSX.Element;
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ADDITIONAL_PROPERTY_FLAG, TranslatableString, } from '@rjsf/utils';
3
+ import { Form, Grid } from 'semantic-ui-react';
4
+ /** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are
5
+ * part of an `additionalProperties` part of a schema.
6
+ *
7
+ * @param props - The `WrapIfAdditionalProps` for this component
8
+ */
9
+ export default function WrapIfAdditionalTemplate(props) {
10
+ const { children, classNames, style, disabled, id, label, onDropPropertyClick, onKeyChange, readonly, required, schema, uiSchema, registry, } = props;
11
+ const { templates, translateString } = registry;
12
+ // Button templates are not overridden in the uiSchema
13
+ const { RemoveButton } = templates.ButtonTemplates;
14
+ const keyLabel = translateString(TranslatableString.KeyLabel, [label]);
15
+ const { readonlyAsDisabled = true, wrapperStyle } = registry.formContext;
16
+ const additional = ADDITIONAL_PROPERTY_FLAG in schema;
17
+ if (!additional) {
18
+ return (_jsx("div", Object.assign({ className: classNames, style: style }, { children: children })));
19
+ }
20
+ const handleBlur = ({ target }) => onKeyChange(target.value);
21
+ return (_jsx("div", Object.assign({ className: classNames, style: style }, { children: _jsx(Grid, Object.assign({ columns: 'equal' }, { children: _jsxs(Grid.Row, { children: [_jsx(Grid.Column, Object.assign({ className: 'form-additional' }, { children: _jsx(Form.Group, Object.assign({ widths: 'equal', grouped: true }, { children: _jsx(Form.Input, { className: 'form-group', hasFeedback: true, fluid: true, htmlFor: `${id}`, label: keyLabel, required: required, defaultValue: label, disabled: disabled || (readonlyAsDisabled && readonly), id: `${id}`, name: `${id}`, onBlur: !readonly ? handleBlur : undefined, style: wrapperStyle, type: 'text' }) })) })), _jsx(Grid.Column, Object.assign({ className: 'form-additional', verticalAlign: 'middle' }, { children: children })), _jsx(Grid.Column, { children: _jsx(RemoveButton, { iconType: 'mini', className: 'array-item-remove', disabled: disabled || readonly, onClick: onDropPropertyClick(label), uiSchema: uiSchema, registry: registry }) })] }) })) }), `${id}-key`));
22
+ }
23
+ //# sourceMappingURL=WrapIfAdditionalTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WrapIfAdditionalTemplate.js","sourceRoot":"","sources":["../../src/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,wBAAwB,EAIxB,kBAAkB,GAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAI9C,KAA6C;IAC7C,MAAM,EACJ,QAAQ,EACR,UAAU,EACV,KAAK,EACL,QAAQ,EACR,EAAE,EACF,KAAK,EACL,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,GACT,GAAG,KAAK,CAAC;IACV,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;IAChD,sDAAsD;IACtD,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC,eAAe,CAAC;IACnD,MAAM,QAAQ,GAAG,eAAe,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,EAAE,kBAAkB,GAAG,IAAI,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;IAEzE,MAAM,UAAU,GAAG,wBAAwB,IAAI,MAAM,CAAC;IAEtD,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,CACL,4BAAK,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,gBACrC,QAAQ,IACL,CACP,CAAC;KACH;IAED,MAAM,UAAU,GAAG,CAAC,EAAE,MAAM,EAAgC,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE3F,OAAO,CACL,4BAAK,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,gBACtC,KAAC,IAAI,kBAAC,OAAO,EAAC,OAAO,gBACnB,MAAC,IAAI,CAAC,GAAG,eACP,KAAC,IAAI,CAAC,MAAM,kBAAC,SAAS,EAAC,iBAAiB,gBACtC,KAAC,IAAI,CAAC,KAAK,kBAAC,MAAM,EAAC,OAAO,EAAC,OAAO,sBAChC,KAAC,IAAI,CAAC,KAAK,IACT,SAAS,EAAC,YAAY,EACtB,WAAW,QACX,KAAK,QACL,OAAO,EAAE,GAAG,EAAE,EAAE,EAChB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,KAAK,EACnB,QAAQ,EAAE,QAAQ,IAAI,CAAC,kBAAkB,IAAI,QAAQ,CAAC,EACtD,EAAE,EAAE,GAAG,EAAE,EAAE,EACX,IAAI,EAAE,GAAG,EAAE,EAAE,EACb,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAC1C,KAAK,EAAE,YAAY,EACnB,IAAI,EAAC,MAAM,GACC,IACH,IACD,EACd,KAAC,IAAI,CAAC,MAAM,kBAAC,SAAS,EAAC,iBAAiB,EAAC,aAAa,EAAC,QAAQ,gBAC5D,QAAQ,IACG,EACd,KAAC,IAAI,CAAC,MAAM,cACV,KAAC,YAAY,IACX,QAAQ,EAAC,MAAM,EACf,SAAS,EAAC,mBAAmB,EAC7B,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAC9B,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,EACnC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GAClB,GACU,IACL,IACN,KApCsC,GAAG,EAAE,MAAM,CAqCpD,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default } from './WrapIfAdditionalTemplate';
2
+ export * from './WrapIfAdditionalTemplate';
@@ -0,0 +1,3 @@
1
+ export { default } from './WrapIfAdditionalTemplate';
2
+ export * from './WrapIfAdditionalTemplate';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/WrapIfAdditionalTemplate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,cAAc,4BAA4B,CAAC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import SemanticUIForm from './SemanticUIForm/SemanticUIForm';
2
+ export { default as Templates, generateTemplates } from './Templates';
3
+ export { default as Form, generateForm } from './SemanticUIForm';
4
+ export { default as Theme, generateTheme } from './Theme';
5
+ export { default as Widgets, generateWidgets } from './Widgets';
6
+ export default SemanticUIForm;
package/lib/index.js ADDED
@@ -0,0 +1,7 @@
1
+ import SemanticUIForm from './SemanticUIForm/SemanticUIForm';
2
+ export { default as Templates, generateTemplates } from './Templates';
3
+ export { default as Form, generateForm } from './SemanticUIForm';
4
+ export { default as Theme, generateTheme } from './Theme';
5
+ export { default as Widgets, generateWidgets } from './Widgets';
6
+ export default SemanticUIForm;
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEhE,eAAe,cAAc,CAAC"}
package/lib/util.d.ts ADDED
@@ -0,0 +1,60 @@
1
+ import { ElementType } from 'react';
2
+ import { UiSchema, GenericObjectType, FormContextType, RJSFSchema, StrictRJSFSchema, UIOptionsType } from '@rjsf/utils';
3
+ export type SemanticPropsTypes<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> = {
4
+ formContext?: F;
5
+ uiSchema?: UiSchema<T, S, F>;
6
+ options?: UIOptionsType<T, S, F>;
7
+ defaultSchemaProps?: GenericObjectType;
8
+ defaultContextProps?: GenericObjectType;
9
+ };
10
+ export type SemanticErrorPropsType<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> = {
11
+ formContext?: F;
12
+ uiSchema?: UiSchema<T, S, F>;
13
+ options?: UIOptionsType<T, S, F>;
14
+ defaultProps?: GenericObjectType;
15
+ };
16
+ export type WrapProps = GenericObjectType & {
17
+ wrap: boolean;
18
+ component?: ElementType;
19
+ };
20
+ /**
21
+ * Extract props meant for semantic UI components from props that are
22
+ * passed to Widgets, Templates and Fields.
23
+ * @param {Object} params
24
+ * @param {Object?} params.formContext
25
+ * @param {Object?} params.uiSchema
26
+ * @param {Object?} params.options
27
+ * @param {Object?} params.defaultSchemaProps
28
+ * @param {Object?} params.defaultContextProps
29
+ * @returns {any}
30
+ */
31
+ export declare function getSemanticProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({ formContext, uiSchema, options, defaultSchemaProps, defaultContextProps, }: SemanticPropsTypes<T, S, F>): any;
32
+ /**
33
+ * Extract error props meant for semantic UI components from props that are
34
+ * passed to Widgets, Templates and Fields.
35
+ * @param {Object} params
36
+ * @param {Object?} params.formContext
37
+ * @param {Object?} params.uiSchema
38
+ * @param {Object?} params.defaultProps
39
+ * @returns {any}
40
+ */
41
+ export declare function getSemanticErrorProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({ formContext, uiSchema, options, defaultProps, }: SemanticErrorPropsType<T, S, F>): any;
42
+ /**
43
+ * Combine multiple strings containing class names into a single string,
44
+ * removing duplicates. E.g.
45
+ * cleanClassNames('bar', 'baz bar', 'x y ', undefined)
46
+ * // 'bar baz x y'
47
+ * @param {Array} classNameArr
48
+ * @param {Array} omit
49
+ * @returns {string}
50
+ */
51
+ export declare function cleanClassNames(classNameArr: Array<string | undefined>, omit?: string[]): string;
52
+ /**
53
+ *
54
+ * @param {boolean} wrap
55
+ * @param Component
56
+ * @param {Object} props
57
+ * @returns {*}
58
+ * @constructor
59
+ */
60
+ export declare function MaybeWrap({ wrap, component: Component, ...props }: WrapProps): any;
package/lib/util.js ADDED
@@ -0,0 +1,69 @@
1
+ import { __rest } from "tslib";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { getUiOptions, } from '@rjsf/utils';
4
+ /**
5
+ * Extract props meant for semantic UI components from props that are
6
+ * passed to Widgets, Templates and Fields.
7
+ * @param {Object} params
8
+ * @param {Object?} params.formContext
9
+ * @param {Object?} params.uiSchema
10
+ * @param {Object?} params.options
11
+ * @param {Object?} params.defaultSchemaProps
12
+ * @param {Object?} params.defaultContextProps
13
+ * @returns {any}
14
+ */
15
+ export function getSemanticProps({ formContext = {}, uiSchema = {}, options = {}, defaultSchemaProps = { fluid: true, inverted: false }, defaultContextProps = {}, }) {
16
+ const formContextProps = formContext.semantic;
17
+ const schemaProps = getUiOptions(uiSchema).semantic;
18
+ const optionProps = options.semantic;
19
+ // formContext props should overide other props
20
+ return Object.assign({}, Object.assign({}, defaultSchemaProps), Object.assign({}, defaultContextProps), schemaProps, optionProps, formContextProps);
21
+ }
22
+ /**
23
+ * Extract error props meant for semantic UI components from props that are
24
+ * passed to Widgets, Templates and Fields.
25
+ * @param {Object} params
26
+ * @param {Object?} params.formContext
27
+ * @param {Object?} params.uiSchema
28
+ * @param {Object?} params.defaultProps
29
+ * @returns {any}
30
+ */
31
+ export function getSemanticErrorProps({ formContext = {}, uiSchema = {}, options = {}, defaultProps = { size: 'small', pointing: 'above' }, }) {
32
+ const formContextProps = formContext.semantic && formContext.semantic.errorOptions;
33
+ const semanticOptions = getUiOptions(uiSchema).semantic;
34
+ const schemaProps = semanticOptions && semanticOptions.errorOptions;
35
+ const optionProps = options.semantic && options.semantic.errorOptions;
36
+ return Object.assign({}, Object.assign({}, defaultProps), schemaProps, optionProps, formContextProps);
37
+ }
38
+ /**
39
+ * Combine multiple strings containing class names into a single string,
40
+ * removing duplicates. E.g.
41
+ * cleanClassNames('bar', 'baz bar', 'x y ', undefined)
42
+ * // 'bar baz x y'
43
+ * @param {Array} classNameArr
44
+ * @param {Array} omit
45
+ * @returns {string}
46
+ */
47
+ export function cleanClassNames(classNameArr, omit = []) {
48
+ // Split each arg on whitespace, and add it to an array. Skip false-y args
49
+ // like "" and undefined.
50
+ const classList = classNameArr
51
+ .filter(Boolean)
52
+ .reduce((previous, current) => previous.concat(current.trim().split(/\s+/)), []);
53
+ // Remove any class names from omit, and make the rest unique before
54
+ // returning them as a string
55
+ return [...new Set(classList.filter((cn) => !omit.includes(cn)))].join(' ');
56
+ }
57
+ /**
58
+ *
59
+ * @param {boolean} wrap
60
+ * @param Component
61
+ * @param {Object} props
62
+ * @returns {*}
63
+ * @constructor
64
+ */
65
+ export function MaybeWrap(_a) {
66
+ var { wrap, component: Component = 'div' } = _a, props = __rest(_a, ["wrap", "component"]);
67
+ return wrap ? _jsx(Component, Object.assign({}, props)) : props.children;
68
+ }
69
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.tsx"],"names":[],"mappings":";;AACA,OAAO,EAGL,YAAY,GAKb,MAAM,aAAa,CAAC;AA0BrB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAoF,EAClH,WAAW,GAAG,EAAO,EACrB,QAAQ,GAAG,EAAE,EACb,OAAO,GAAG,EAAE,EACZ,kBAAkB,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EACrD,mBAAmB,GAAG,EAAE,GACI;IAC5B,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC;IAC9C,MAAM,WAAW,GAAG,YAAY,CAAU,QAAQ,CAAC,CAAC,QAAQ,CAAC;IAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IACrC,+CAA+C;IAC/C,OAAO,MAAM,CAAC,MAAM,CAClB,EAAE,oBACG,kBAAkB,qBAClB,mBAAmB,GACxB,WAAW,EACX,WAAW,EACX,gBAAgB,CACjB,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAInC,EACA,WAAW,GAAG,EAAO,EACrB,QAAQ,GAAG,EAAE,EACb,OAAO,GAAG,EAAE,EACZ,YAAY,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GACnB;IAChC,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC;IACnF,MAAM,eAAe,GAAsB,YAAY,CAAU,QAAQ,CAAC,CAAC,QAA6B,CAAC;IACzG,MAAM,WAAW,GAAG,eAAe,IAAI,eAAe,CAAC,YAAY,CAAC;IACpE,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,IAAK,OAAO,CAAC,QAA8B,CAAC,YAAY,CAAC;IAE7F,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,oBAAO,YAAY,GAAI,WAAW,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;AAC5F,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,YAAuC,EAAE,OAAiB,EAAE;IAC1F,0EAA0E;IAC1E,yBAAyB;IACzB,MAAM,SAAS,GAAG,YAAY;SAC3B,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9F,oEAAoE;IACpE,6BAA6B;IAC7B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,EAA2D;QAA3D,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,OAAuB,EAAlB,KAAK,cAA9C,qBAAgD,CAAF;IACtE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAC,SAAS,oBAAK,KAAK,EAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC1D,CAAC"}
package/package.json CHANGED
@@ -1,19 +1,25 @@
1
1
  {
2
2
  "name": "@rjsf/semantic-ui",
3
- "version": "5.11.2",
3
+ "version": "5.12.0",
4
4
  "main": "dist/index.js",
5
- "module": "dist/semantic-ui.esm.js",
6
- "typings": "dist/index.d.ts",
5
+ "module": "lib/index.js",
6
+ "typings": "lib/index.d.ts",
7
7
  "description": "Semantic UI theme, fields and widgets for react-jsonschema-form",
8
8
  "files": [
9
- "dist"
9
+ "dist",
10
+ "lib",
11
+ "src"
10
12
  ],
11
13
  "engineStrict": false,
12
14
  "engines": {
13
15
  "node": ">=14"
14
16
  },
15
17
  "scripts": {
16
- "build": "rimraf dist && dts build --rollupTypes --format cjs,es,umd",
18
+ "build:ts": "rimraf lib && tsc",
19
+ "build:cjs": "esbuild ./src/index.ts --bundle --outfile=dist/index.js --sourcemap --packages=external --format=cjs",
20
+ "build:esm": "esbuild ./src/index.ts --bundle --outfile=dist/semantic-ui.esm.js --sourcemap --packages=external --format=esm",
21
+ "build:umd": "rollup dist/semantic-ui.esm.js --format=umd --file=dist/semantic-ui.umd.js --name=@rjsf/semantic-ui",
22
+ "build": "rimraf dist && npm run build:ts && npm run build:cjs && npm run build:esm && npm run build:umd",
17
23
  "cs-check": "prettier -l \"{src,test}/**/*.ts?(x)\"",
18
24
  "cs-format": "prettier \"{src,test}/**/*.ts?(x)\" --write",
19
25
  "lint": "eslint src test",
@@ -40,24 +46,26 @@
40
46
  "@babel/preset-env": "^7.22.9",
41
47
  "@babel/preset-react": "^7.22.5",
42
48
  "@babel/preset-typescript": "^7.22.5",
43
- "@rjsf/core": "^5.11.2",
44
- "@rjsf/utils": "^5.11.2",
45
- "@rjsf/validator-ajv8": "^5.11.2",
46
- "@types/lodash": "^4.14.195",
49
+ "@rjsf/core": "^5.12.0",
50
+ "@rjsf/utils": "^5.12.0",
51
+ "@rjsf/validator-ajv8": "^5.12.0",
52
+ "@types/lodash": "^4.14.196",
47
53
  "@types/react": "^17.0.62",
48
54
  "@types/react-dom": "^17.0.20",
49
55
  "@types/react-test-renderer": "^17.0.2",
50
56
  "atob": "^2.1.2",
51
- "babel-jest": "^29.6.1",
52
- "dts-cli": "^1.6.3",
53
- "eslint": "^8.44.0",
54
- "jest": "^29.6.1",
57
+ "babel-jest": "^29.6.2",
58
+ "esbuild": "^0.18.19",
59
+ "eslint": "^8.46.0",
60
+ "jest": "^29.6.2",
55
61
  "jest-environment-jsdom": "^29.6.1",
56
62
  "nanoid": "^3.3.6",
57
63
  "react": "^17.0.2",
58
64
  "react-dom": "^17.0.2",
59
65
  "react-test-renderer": "^17.0.2",
60
- "rimraf": "^5.0.1"
66
+ "rimraf": "^5.0.1",
67
+ "rollup": "^3.27.2",
68
+ "typescript": "^4.9.5"
61
69
  },
62
70
  "publishConfig": {
63
71
  "access": "public"
@@ -87,5 +95,5 @@
87
95
  "semantic-ui-css": "^2.5.0",
88
96
  "semantic-ui-react": "^1.3.1"
89
97
  },
90
- "gitHead": "2fafced84e18aa2cd487715d11d2730cd23333f3"
98
+ "gitHead": "bab797c43a34e5ec68a84b2bdabb3c377e46b092"
91
99
  }
@@ -0,0 +1,24 @@
1
+ import { Button, Icon, ButtonProps } from 'semantic-ui-react';
2
+ import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';
3
+
4
+ /** The `AddButton` renders a button that represent the `Add` action on a form
5
+ */
6
+ export default function AddButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({
7
+ uiSchema,
8
+ registry,
9
+ color,
10
+ ...props
11
+ }: IconButtonProps<T, S, F>) {
12
+ const { translateString } = registry;
13
+ return (
14
+ <Button
15
+ title={translateString(TranslatableString.AddItemButton)}
16
+ color={color as ButtonProps['color']}
17
+ {...props}
18
+ icon
19
+ size='tiny'
20
+ >
21
+ <Icon name='plus' />
22
+ </Button>
23
+ );
24
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './AddButton';
2
+ export * from './AddButton';
@@ -0,0 +1,102 @@
1
+ import {
2
+ ArrayFieldTemplateItemType,
3
+ FormContextType,
4
+ GenericObjectType,
5
+ RJSFSchema,
6
+ StrictRJSFSchema,
7
+ getUiOptions,
8
+ } from '@rjsf/utils';
9
+ import { Button, Grid, Segment } from 'semantic-ui-react';
10
+
11
+ import { MaybeWrap } from '../util';
12
+
13
+ const gridStyle = (vertical: boolean) => ({
14
+ display: 'grid',
15
+ gridTemplateColumns: `1fr ${vertical ? 65 : 150}px`,
16
+ });
17
+
18
+ /** The `ArrayFieldItemTemplate` component is the template used to render an items of an array.
19
+ *
20
+ * @param props - The `ArrayFieldTemplateItemType` props for the component
21
+ */
22
+ export default function ArrayFieldItemTemplate<
23
+ T = any,
24
+ S extends StrictRJSFSchema = RJSFSchema,
25
+ F extends FormContextType = any
26
+ >(props: ArrayFieldTemplateItemType<T, S, F>) {
27
+ const {
28
+ children,
29
+ disabled,
30
+ hasToolbar,
31
+ hasCopy,
32
+ hasMoveDown,
33
+ hasMoveUp,
34
+ hasRemove,
35
+ index,
36
+ onCopyIndexClick,
37
+ onDropIndexClick,
38
+ onReorderClick,
39
+ readonly,
40
+ uiSchema,
41
+ registry,
42
+ } = props;
43
+ const { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } = registry.templates.ButtonTemplates;
44
+ const uiOptions = getUiOptions<T, S, F>(uiSchema);
45
+ // Pull the semantic props out of the uiOptions that were put in via the ArrayFieldTemplate
46
+ const { horizontalButtons = true, wrapItem = false } = uiOptions.semantic as GenericObjectType;
47
+ return (
48
+ <div className='array-item'>
49
+ <MaybeWrap wrap={wrapItem} component={Segment}>
50
+ <Grid style={{ ...gridStyle(!horizontalButtons), alignItems: 'center' }}>
51
+ <Grid.Column width={16} verticalAlign='middle'>
52
+ {children}
53
+ </Grid.Column>
54
+ {hasToolbar && (
55
+ <Grid.Column>
56
+ {(hasMoveUp || hasMoveDown || hasRemove) && (
57
+ <Button.Group size='mini' vertical={!horizontalButtons}>
58
+ {(hasMoveUp || hasMoveDown) && (
59
+ <MoveUpButton
60
+ className='array-item-move-up'
61
+ disabled={disabled || readonly || !hasMoveUp}
62
+ onClick={onReorderClick(index, index - 1)}
63
+ uiSchema={uiSchema}
64
+ registry={registry}
65
+ />
66
+ )}
67
+ {(hasMoveUp || hasMoveDown) && (
68
+ <MoveDownButton
69
+ className='array-item-move-down'
70
+ disabled={disabled || readonly || !hasMoveDown}
71
+ onClick={onReorderClick(index, index + 1)}
72
+ uiSchema={uiSchema}
73
+ registry={registry}
74
+ />
75
+ )}
76
+ {hasCopy && (
77
+ <CopyButton
78
+ className='array-item-copy'
79
+ disabled={disabled || readonly}
80
+ onClick={onCopyIndexClick(index)}
81
+ uiSchema={uiSchema}
82
+ registry={registry}
83
+ />
84
+ )}
85
+ {hasRemove && (
86
+ <RemoveButton
87
+ className='array-item-remove'
88
+ disabled={disabled || readonly}
89
+ onClick={onDropIndexClick(index)}
90
+ uiSchema={uiSchema}
91
+ registry={registry}
92
+ />
93
+ )}
94
+ </Button.Group>
95
+ )}
96
+ </Grid.Column>
97
+ )}
98
+ </Grid>
99
+ </MaybeWrap>
100
+ </div>
101
+ );
102
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './ArrayFieldItemTemplate';
2
+ export * from './ArrayFieldItemTemplate';
@@ -0,0 +1,114 @@
1
+ import {
2
+ getTemplate,
3
+ getUiOptions,
4
+ isFixedItems,
5
+ ArrayFieldTemplateProps,
6
+ ArrayFieldTemplateItemType,
7
+ FormContextType,
8
+ RJSFSchema,
9
+ StrictRJSFSchema,
10
+ UI_OPTIONS_KEY,
11
+ } from '@rjsf/utils';
12
+
13
+ import { cleanClassNames, getSemanticProps } from '../util';
14
+
15
+ /** The `ArrayFieldTemplate` component is the template used to render all items in an array.
16
+ *
17
+ * @param props - The `ArrayFieldTemplateItemType` props for the component
18
+ */
19
+ export default function ArrayFieldTemplate<
20
+ T = any,
21
+ S extends StrictRJSFSchema = RJSFSchema,
22
+ F extends FormContextType = any
23
+ >(props: ArrayFieldTemplateProps<T, S, F>) {
24
+ const {
25
+ uiSchema,
26
+ idSchema,
27
+ canAdd,
28
+ className,
29
+ // classNames, This is not part of the type, so it is likely never passed in
30
+ disabled,
31
+ formContext,
32
+ items,
33
+ onAddClick,
34
+ // options, This is not part of the type, so it is likely never passed in
35
+ readonly,
36
+ required,
37
+ schema,
38
+ title,
39
+ registry,
40
+ } = props;
41
+ const semanticProps = getSemanticProps<T, S, F>({
42
+ uiSchema,
43
+ formContext,
44
+ defaultSchemaProps: { horizontalButtons: true, wrapItem: false },
45
+ });
46
+ const { horizontalButtons, wrapItem } = semanticProps;
47
+ const semantic = { horizontalButtons, wrapItem };
48
+ const uiOptions = getUiOptions<T, S, F>(uiSchema);
49
+ const ArrayFieldDescriptionTemplate = getTemplate<'ArrayFieldDescriptionTemplate', T, S, F>(
50
+ 'ArrayFieldDescriptionTemplate',
51
+ registry,
52
+ uiOptions
53
+ );
54
+ const ArrayFieldItemTemplate = getTemplate<'ArrayFieldItemTemplate', T, S, F>(
55
+ 'ArrayFieldItemTemplate',
56
+ registry,
57
+ uiOptions
58
+ );
59
+ const ArrayFieldTitleTemplate = getTemplate<'ArrayFieldTitleTemplate', T, S, F>(
60
+ 'ArrayFieldTitleTemplate',
61
+ registry,
62
+ uiOptions
63
+ );
64
+ // Button templates are not overridden in the uiSchema
65
+ const {
66
+ ButtonTemplates: { AddButton },
67
+ } = registry.templates;
68
+ return (
69
+ <div className={cleanClassNames([className, isFixedItems<S>(schema) ? '' : 'sortable-form-fields'])}>
70
+ <ArrayFieldTitleTemplate
71
+ idSchema={idSchema}
72
+ title={uiOptions.title || title}
73
+ schema={schema}
74
+ uiSchema={uiSchema}
75
+ required={required}
76
+ registry={registry}
77
+ />
78
+ <ArrayFieldDescriptionTemplate
79
+ idSchema={idSchema}
80
+ description={uiOptions.description || schema.description}
81
+ schema={schema}
82
+ uiSchema={uiSchema}
83
+ registry={registry}
84
+ />
85
+ <div key={`array-item-list-${idSchema.$id}`}>
86
+ <div className='row array-item-list'>
87
+ {items &&
88
+ items.map(({ key, uiSchema: itemUiSchema = {}, ...props }: ArrayFieldTemplateItemType<T, S, F>) => {
89
+ // Merge in the semantic props from the ArrayFieldTemplate into each of the items
90
+ const mergedUiSchema = {
91
+ ...itemUiSchema,
92
+ [UI_OPTIONS_KEY]: {
93
+ ...itemUiSchema[UI_OPTIONS_KEY],
94
+ semantic,
95
+ },
96
+ };
97
+ return <ArrayFieldItemTemplate key={key} {...props} uiSchema={mergedUiSchema} />;
98
+ })}
99
+ </div>
100
+ {canAdd && (
101
+ <div
102
+ style={{
103
+ marginTop: '1rem',
104
+ position: 'relative',
105
+ textAlign: 'right',
106
+ }}
107
+ >
108
+ <AddButton onClick={onAddClick} disabled={disabled || readonly} uiSchema={uiSchema} registry={registry} />
109
+ </div>
110
+ )}
111
+ </div>
112
+ </div>
113
+ );
114
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './ArrayFieldTemplate';
2
+ export * from './ArrayFieldTemplate';