@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.
- package/dist/index.js +1128 -5
- package/dist/index.js.map +7 -0
- package/dist/semantic-ui.esm.js +641 -809
- package/dist/semantic-ui.esm.js.map +7 -1
- package/dist/semantic-ui.umd.js +997 -0
- package/lib/AddButton/AddButton.d.ts +5 -0
- package/lib/AddButton/AddButton.js +12 -0
- package/lib/AddButton/AddButton.js.map +1 -0
- package/lib/AddButton/index.d.ts +2 -0
- package/lib/AddButton/index.js +3 -0
- package/lib/AddButton/index.js.map +1 -0
- package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.d.ts +7 -0
- package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js +21 -0
- package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js.map +1 -0
- package/lib/ArrayFieldItemTemplate/index.d.ts +2 -0
- package/lib/ArrayFieldItemTemplate/index.js +3 -0
- package/lib/ArrayFieldItemTemplate/index.js.map +1 -0
- package/lib/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +7 -0
- package/lib/ArrayFieldTemplate/ArrayFieldTemplate.js +40 -0
- package/lib/ArrayFieldTemplate/ArrayFieldTemplate.js.map +1 -0
- package/lib/ArrayFieldTemplate/index.d.ts +2 -0
- package/lib/ArrayFieldTemplate/index.js +3 -0
- package/lib/ArrayFieldTemplate/index.js.map +1 -0
- package/lib/BaseInputTemplate/BaseInputTemplate.d.ts +9 -0
- package/lib/BaseInputTemplate/BaseInputTemplate.js +28 -0
- package/lib/BaseInputTemplate/BaseInputTemplate.js.map +1 -0
- package/lib/BaseInputTemplate/index.d.ts +2 -0
- package/lib/BaseInputTemplate/index.js +3 -0
- package/lib/BaseInputTemplate/index.js.map +1 -0
- package/lib/CheckboxWidget/CheckboxWidget.d.ts +8 -0
- package/lib/CheckboxWidget/CheckboxWidget.js +33 -0
- package/lib/CheckboxWidget/CheckboxWidget.js.map +1 -0
- package/lib/CheckboxWidget/index.d.ts +2 -0
- package/lib/CheckboxWidget/index.js +3 -0
- package/lib/CheckboxWidget/index.js.map +1 -0
- package/lib/CheckboxesWidget/CheckboxesWidget.d.ts +8 -0
- package/lib/CheckboxesWidget/CheckboxesWidget.js +42 -0
- package/lib/CheckboxesWidget/CheckboxesWidget.js.map +1 -0
- package/lib/CheckboxesWidget/index.d.ts +2 -0
- package/lib/CheckboxesWidget/index.js +3 -0
- package/lib/CheckboxesWidget/index.js.map +1 -0
- package/lib/DescriptionField/DescriptionField.d.ts +7 -0
- package/lib/DescriptionField/DescriptionField.js +13 -0
- package/lib/DescriptionField/DescriptionField.js.map +1 -0
- package/lib/DescriptionField/index.d.ts +2 -0
- package/lib/DescriptionField/index.js +3 -0
- package/lib/DescriptionField/index.js.map +1 -0
- package/lib/ErrorList/ErrorList.d.ts +7 -0
- package/lib/ErrorList/ErrorList.js +12 -0
- package/lib/ErrorList/ErrorList.js.map +1 -0
- package/lib/ErrorList/index.d.ts +2 -0
- package/lib/ErrorList/index.js +3 -0
- package/lib/ErrorList/index.js.map +1 -0
- package/lib/FieldErrorTemplate/FieldErrorTemplate.d.ts +7 -0
- package/lib/FieldErrorTemplate/FieldErrorTemplate.js +30 -0
- package/lib/FieldErrorTemplate/FieldErrorTemplate.js.map +1 -0
- package/lib/FieldErrorTemplate/index.d.ts +2 -0
- package/lib/FieldErrorTemplate/index.js +3 -0
- package/lib/FieldErrorTemplate/index.js.map +1 -0
- package/lib/FieldHelpTemplate/FieldHelpTemplate.d.ts +7 -0
- package/lib/FieldHelpTemplate/FieldHelpTemplate.js +16 -0
- package/lib/FieldHelpTemplate/FieldHelpTemplate.js.map +1 -0
- package/lib/FieldHelpTemplate/index.d.ts +2 -0
- package/lib/FieldHelpTemplate/index.js +3 -0
- package/lib/FieldHelpTemplate/index.js.map +1 -0
- package/lib/FieldTemplate/FieldTemplate.d.ts +8 -0
- package/lib/FieldTemplate/FieldTemplate.js +22 -0
- package/lib/FieldTemplate/FieldTemplate.js.map +1 -0
- package/lib/FieldTemplate/index.d.ts +2 -0
- package/lib/FieldTemplate/index.js +3 -0
- package/lib/FieldTemplate/index.js.map +1 -0
- package/lib/IconButton/IconButton.d.ts +8 -0
- package/lib/IconButton/IconButton.js +26 -0
- package/lib/IconButton/IconButton.js.map +1 -0
- package/lib/IconButton/index.d.ts +2 -0
- package/lib/IconButton/index.js +3 -0
- package/lib/IconButton/index.js.map +1 -0
- package/lib/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +9 -0
- package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js +23 -0
- package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js.map +1 -0
- package/lib/ObjectFieldTemplate/index.d.ts +2 -0
- package/lib/ObjectFieldTemplate/index.js +3 -0
- package/lib/ObjectFieldTemplate/index.js.map +1 -0
- package/lib/RadioWidget/RadioWidget.d.ts +8 -0
- package/lib/RadioWidget/RadioWidget.js +32 -0
- package/lib/RadioWidget/RadioWidget.js.map +1 -0
- package/lib/RadioWidget/index.d.ts +2 -0
- package/lib/RadioWidget/index.js +3 -0
- package/lib/RadioWidget/index.js.map +1 -0
- package/lib/RangeWidget/RangeWidget.d.ts +8 -0
- package/lib/RangeWidget/RangeWidget.js +26 -0
- package/lib/RangeWidget/RangeWidget.js.map +1 -0
- package/lib/RangeWidget/index.d.ts +2 -0
- package/lib/RangeWidget/index.js +3 -0
- package/lib/RangeWidget/index.js.map +1 -0
- package/lib/SelectWidget/SelectWidget.d.ts +8 -0
- package/lib/SelectWidget/SelectWidget.js +51 -0
- package/lib/SelectWidget/SelectWidget.js.map +1 -0
- package/lib/SelectWidget/index.d.ts +2 -0
- package/lib/SelectWidget/index.js +3 -0
- package/lib/SelectWidget/index.js.map +1 -0
- package/lib/SemanticUIForm/SemanticUIForm.d.ts +6 -0
- package/lib/SemanticUIForm/SemanticUIForm.js +7 -0
- package/lib/SemanticUIForm/SemanticUIForm.js.map +1 -0
- package/lib/SemanticUIForm/index.d.ts +2 -0
- package/lib/SemanticUIForm/index.js +3 -0
- package/lib/SemanticUIForm/index.js.map +1 -0
- package/lib/SubmitButton/SubmitButton.d.ts +5 -0
- package/lib/SubmitButton/SubmitButton.js +13 -0
- package/lib/SubmitButton/SubmitButton.js.map +1 -0
- package/lib/SubmitButton/index.d.ts +2 -0
- package/lib/SubmitButton/index.js +3 -0
- package/lib/SubmitButton/index.js.map +1 -0
- package/lib/Templates/Templates.d.ts +4 -0
- package/lib/Templates/Templates.js +39 -0
- package/lib/Templates/Templates.js.map +1 -0
- package/lib/Templates/index.d.ts +2 -0
- package/lib/Templates/index.js +3 -0
- package/lib/Templates/index.js.map +1 -0
- package/lib/TextareaWidget/TextareaWidget.d.ts +7 -0
- package/lib/TextareaWidget/TextareaWidget.js +22 -0
- package/lib/TextareaWidget/TextareaWidget.js.map +1 -0
- package/lib/TextareaWidget/index.d.ts +2 -0
- package/lib/TextareaWidget/index.js +3 -0
- package/lib/TextareaWidget/index.js.map +1 -0
- package/lib/Theme/Theme.d.ts +5 -0
- package/lib/Theme/Theme.js +12 -0
- package/lib/Theme/Theme.js.map +1 -0
- package/lib/Theme/index.d.ts +2 -0
- package/lib/Theme/index.js +3 -0
- package/lib/Theme/index.js.map +1 -0
- package/lib/TitleField/TitleField.d.ts +7 -0
- package/lib/TitleField/TitleField.js +22 -0
- package/lib/TitleField/TitleField.js.map +1 -0
- package/lib/TitleField/index.d.ts +2 -0
- package/lib/TitleField/index.js +3 -0
- package/lib/TitleField/index.js.map +1 -0
- package/lib/Widgets/Widgets.d.ts +4 -0
- package/lib/Widgets/Widgets.js +18 -0
- package/lib/Widgets/Widgets.js.map +1 -0
- package/lib/Widgets/index.d.ts +2 -0
- package/lib/Widgets/index.js +3 -0
- package/lib/Widgets/index.js.map +1 -0
- package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.d.ts +8 -0
- package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js +23 -0
- package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js.map +1 -0
- package/lib/WrapIfAdditionalTemplate/index.d.ts +2 -0
- package/lib/WrapIfAdditionalTemplate/index.js +3 -0
- package/lib/WrapIfAdditionalTemplate/index.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -0
- package/lib/util.d.ts +60 -0
- package/lib/util.js +69 -0
- package/lib/util.js.map +1 -0
- package/package.json +23 -15
- package/src/AddButton/AddButton.tsx +24 -0
- package/src/AddButton/index.ts +2 -0
- package/src/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx +102 -0
- package/src/ArrayFieldItemTemplate/index.ts +2 -0
- package/src/ArrayFieldTemplate/ArrayFieldTemplate.tsx +114 -0
- package/src/ArrayFieldTemplate/index.ts +2 -0
- package/src/BaseInputTemplate/BaseInputTemplate.tsx +90 -0
- package/src/BaseInputTemplate/index.ts +2 -0
- package/src/CheckboxWidget/CheckboxWidget.tsx +95 -0
- package/src/CheckboxWidget/index.ts +2 -0
- package/src/CheckboxesWidget/CheckboxesWidget.tsx +102 -0
- package/src/CheckboxesWidget/index.ts +2 -0
- package/src/DescriptionField/DescriptionField.tsx +21 -0
- package/src/DescriptionField/index.ts +2 -0
- package/src/ErrorList/ErrorList.tsx +23 -0
- package/src/ErrorList/index.ts +2 -0
- package/src/FieldErrorTemplate/FieldErrorTemplate.tsx +43 -0
- package/src/FieldErrorTemplate/index.ts +2 -0
- package/src/FieldHelpTemplate/FieldHelpTemplate.tsx +19 -0
- package/src/FieldHelpTemplate/index.ts +2 -0
- package/src/FieldTemplate/FieldTemplate.tsx +77 -0
- package/src/FieldTemplate/index.ts +2 -0
- package/src/IconButton/IconButton.tsx +55 -0
- package/src/IconButton/index.ts +2 -0
- package/src/ObjectFieldTemplate/ObjectFieldTemplate.tsx +94 -0
- package/src/ObjectFieldTemplate/index.ts +2 -0
- package/src/RadioWidget/RadioWidget.tsx +78 -0
- package/src/RadioWidget/index.ts +2 -0
- package/src/RangeWidget/RangeWidget.tsx +65 -0
- package/src/RangeWidget/index.ts +2 -0
- package/src/SelectWidget/SelectWidget.tsx +111 -0
- package/src/SelectWidget/index.ts +2 -0
- package/src/SemanticUIForm/SemanticUIForm.ts +15 -0
- package/src/SemanticUIForm/index.ts +2 -0
- package/src/SubmitButton/SubmitButton.tsx +20 -0
- package/src/SubmitButton/index.ts +2 -0
- package/src/Templates/Templates.ts +46 -0
- package/src/Templates/index.ts +2 -0
- package/src/TextareaWidget/TextareaWidget.tsx +69 -0
- package/src/TextareaWidget/index.ts +2 -0
- package/src/Theme/Theme.ts +20 -0
- package/src/Theme/index.ts +2 -0
- package/src/TitleField/TitleField.tsx +32 -0
- package/src/TitleField/index.ts +2 -0
- package/src/Widgets/Widgets.tsx +25 -0
- package/src/Widgets/index.ts +2 -0
- package/src/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx +95 -0
- package/src/WrapIfAdditionalTemplate/index.ts +2 -0
- package/src/index.ts +8 -0
- package/src/util.tsx +126 -0
- package/dist/index.d.ts +0 -17
- package/dist/semantic-ui.cjs.development.js +0 -1335
- package/dist/semantic-ui.cjs.development.js.map +0 -1
- package/dist/semantic-ui.cjs.production.min.js +0 -2
- package/dist/semantic-ui.cjs.production.min.js.map +0 -1
- package/dist/semantic-ui.umd.development.js +0 -1333
- package/dist/semantic-ui.umd.development.js.map +0 -1
- package/dist/semantic-ui.umd.production.min.js +0 -2
- 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 @@
|
|
|
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 @@
|
|
|
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
|
package/lib/index.js.map
ADDED
|
@@ -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
|
package/lib/util.js.map
ADDED
|
@@ -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.
|
|
3
|
+
"version": "5.12.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
|
-
"module": "
|
|
6
|
-
"typings": "
|
|
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
|
|
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.
|
|
44
|
-
"@rjsf/utils": "^5.
|
|
45
|
-
"@rjsf/validator-ajv8": "^5.
|
|
46
|
-
"@types/lodash": "^4.14.
|
|
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.
|
|
52
|
-
"
|
|
53
|
-
"eslint": "^8.
|
|
54
|
-
"jest": "^29.6.
|
|
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": "
|
|
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,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,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
|
+
}
|