@nolwenture/formik-jsonschema-form 0.4.1 → 0.5.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/README.md +113 -0
- package/dist/Form.js +13 -24
- package/dist/Form.stories.js +98 -85
- package/dist/Form.test.js +2 -2
- package/dist/FormEditor.js +11 -56
- package/dist/FormEditor.stories.js +2 -13
- package/dist/_sampleData.d.ts +1 -0
- package/dist/_sampleData.js +67 -12
- package/dist/fields/AnyField.js +8 -19
- package/dist/fields/ArrayField.js +32 -54
- package/dist/fields/BooleanField.js +4 -15
- package/dist/fields/DateField.js +4 -15
- package/dist/fields/NullField.js +3 -14
- package/dist/fields/NumberField.js +1 -12
- package/dist/fields/ObjectField.js +18 -41
- package/dist/fields/RadioField.d.ts +3 -0
- package/dist/fields/RadioField.js +11 -0
- package/dist/fields/SchemaField.js +7 -18
- package/dist/fields/SearchMultiTagSelectField.d.ts +3 -0
- package/dist/fields/SearchMultiTagSelectField.js +13 -0
- package/dist/fields/StringField.js +9 -49
- package/dist/fields/ToggleField.d.ts +3 -0
- package/dist/fields/ToggleField.js +11 -0
- package/dist/fields/index.d.ts +3 -0
- package/dist/fields/index.js +3 -0
- package/dist/fields/types.js +1 -1
- package/dist/formEditorSchemas.js +3 -3
- package/dist/styledComponents.d.ts +50 -1
- package/dist/styledComponents.js +340 -135
- package/dist/templates/ArrayFieldTemplate.js +8 -20
- package/dist/templates/FieldTemplate.js +7 -20
- package/dist/templates/ObjectFieldTemplate.js +10 -20
- package/dist/types.d.ts +32 -1
- package/dist/utils.d.ts +7 -0
- package/dist/utils.js +50 -34
- package/package.json +1 -1
|
@@ -1,60 +1,20 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
2
|
import { useContext, useMemo } from "react";
|
|
14
3
|
import { FormRegistry } from "../Form";
|
|
15
|
-
import { useExtractUiSchema, useSetDefault } from "../utils";
|
|
16
|
-
function getEnums(_a) {
|
|
17
|
-
var schema = _a.schema;
|
|
18
|
-
var numberOfDefined = [schema.enum, schema.oneOf, schema.anyOf].filter(function (x) { return x; }).length;
|
|
19
|
-
if (numberOfDefined === 0) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
if (numberOfDefined > 1) {
|
|
23
|
-
throw new Error('Only one of "enum", "oneOf" or "anyOf" can be defined!');
|
|
24
|
-
}
|
|
25
|
-
if (schema.enum) {
|
|
26
|
-
return {
|
|
27
|
-
type: "select",
|
|
28
|
-
values: schema.enum.map(function (option) { return ({
|
|
29
|
-
const: option,
|
|
30
|
-
title: "".concat(option),
|
|
31
|
-
}); }),
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
if (schema.oneOf) {
|
|
35
|
-
return {
|
|
36
|
-
type: "select",
|
|
37
|
-
values: schema.oneOf,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
if (schema.anyOf) {
|
|
41
|
-
return {
|
|
42
|
-
type: "multiSelect",
|
|
43
|
-
values: schema.anyOf,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
}
|
|
4
|
+
import { getEnums, useExtractUiSchema, useSetDefault } from "../utils";
|
|
47
5
|
export function StringField(props) {
|
|
48
|
-
var _a
|
|
6
|
+
var _a;
|
|
7
|
+
const { templates: { FieldTemplate }, components: { FieldInput }, } = useContext(FormRegistry);
|
|
49
8
|
useSetDefault(props);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
9
|
+
const { name, uiSchema } = props;
|
|
10
|
+
const { type, placeholder, props: inputProps } = useExtractUiSchema(uiSchema);
|
|
11
|
+
const enums = useMemo(() => getEnums(props), [props]);
|
|
53
12
|
switch (enums === null || enums === void 0 ? void 0 : enums.type) {
|
|
54
13
|
case "select":
|
|
55
14
|
case "multiSelect":
|
|
56
|
-
return (_jsx(FieldTemplate,
|
|
15
|
+
return (_jsx(FieldTemplate, Object.assign({}, props, { children: _jsxs(FieldInput, Object.assign({}, Object.assign({ type }, inputProps), { name: name, formikAs: "select", multiple: enums.type === "multiSelect" }, (enums.type !== "multiSelect" ? { defaultValue: "" } : {}), { children: [enums.type !== "multiSelect" && (_jsx("option", Object.assign({ value: "" }, Object.assign({ disabled: true, hidden: true }, (_a = uiSchema["ui:placeholderOptionOptions"]) === null || _a === void 0 ? void 0 : _a.props), { children: placeholder }))), enums === null || enums === void 0 ? void 0 : enums.values.map((option, index) => (_jsx("option", Object.assign({ value: option.const }, { children: option.title }), index)))] })) })));
|
|
57
16
|
default:
|
|
58
|
-
return (_jsx(FieldTemplate,
|
|
17
|
+
return (_jsx(FieldTemplate, Object.assign({}, props, { children: _jsx(FieldInput, Object.assign({}, Object.assign({ type,
|
|
18
|
+
placeholder }, inputProps), { name: name })) })));
|
|
59
19
|
}
|
|
60
20
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useContext } from "react";
|
|
3
|
+
import { FormRegistry } from "../Form";
|
|
4
|
+
import { useExtractUiSchema, useSetDefault } from "../utils";
|
|
5
|
+
export function ToggleField(props) {
|
|
6
|
+
const { templates: { FieldTemplate }, components: { ToggleSwitchField }, } = useContext(FormRegistry);
|
|
7
|
+
useSetDefault(props);
|
|
8
|
+
const { name, uiSchema } = props;
|
|
9
|
+
const { props: inputProps } = useExtractUiSchema(uiSchema);
|
|
10
|
+
return (_jsx(FieldTemplate, Object.assign({}, props, { children: _jsx(ToggleSwitchField, Object.assign({}, inputProps, { name: name })) })));
|
|
11
|
+
}
|
package/dist/fields/index.d.ts
CHANGED
package/dist/fields/index.js
CHANGED
package/dist/fields/types.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
const field = {
|
|
2
2
|
type: "object",
|
|
3
3
|
properties: {
|
|
4
4
|
type: {
|
|
@@ -17,7 +17,7 @@ var field = {
|
|
|
17
17
|
},
|
|
18
18
|
},
|
|
19
19
|
};
|
|
20
|
-
export
|
|
20
|
+
export const schema = {
|
|
21
21
|
type: "object",
|
|
22
22
|
properties: {
|
|
23
23
|
"schema.type": {
|
|
@@ -31,6 +31,6 @@ export var schema = {
|
|
|
31
31
|
},
|
|
32
32
|
additionalProperties: field,
|
|
33
33
|
};
|
|
34
|
-
export
|
|
34
|
+
export const uiSchema = {
|
|
35
35
|
"schema.type": { props: { type: "hidden" } },
|
|
36
36
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import * as formik from "formik";
|
|
3
|
-
import { ArrayFieldButtonProps, InfoFieldButtonProps, ObjectFieldButtonProps } from "./types";
|
|
3
|
+
import { ArrayFieldButtonProps, InfoFieldButtonProps, ObjectFieldButtonProps, RadioButtonFieldProps, ToggleSwitchFieldProps, SelectFieldProps } from "./types";
|
|
4
4
|
export declare const Form: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<Pick<import("react").DetailedHTMLProps<import("react").FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>, "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "style" | "tabIndex" | "title" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "name" | "acceptCharset" | "action" | "autoComplete" | "encType" | "method" | "noValidate" | "target" | "key"> & import("react").RefAttributes<HTMLFormElement>>, any, {}, never>;
|
|
5
5
|
export declare const FormButtonWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
6
6
|
export declare const FormButton: import("styled-components").StyledComponent<"button", any, {}, never>;
|
|
@@ -53,4 +53,53 @@ export declare const InfoFieldButton: {
|
|
|
53
53
|
export declare const ErrorMessage: import("styled-components").StyledComponent<import("react").ComponentType<formik.ErrorMessageProps>, any, {}, never>;
|
|
54
54
|
export declare const FieldInput: import("styled-components").StyledComponent<({ formikAs, ...props }: any) => JSX.Element, any, {}, never>;
|
|
55
55
|
export declare const RequiredIndicator: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
56
|
+
export declare const Toggle: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
57
|
+
export declare const ToggleLabel: import("styled-components").StyledComponent<"label", any, {}, never>;
|
|
58
|
+
export declare const ToggleFieldInput: import("styled-components").StyledComponent<({ formikAs, ...props }: any) => JSX.Element, any, {}, never>;
|
|
59
|
+
export declare const ToggleSwitchField: {
|
|
60
|
+
({ inputProps, name, className, }: ToggleSwitchFieldProps): JSX.Element;
|
|
61
|
+
styles: {
|
|
62
|
+
ToggleLabelStyle: import("styled-components").StyledComponent<"label", any, {}, never>;
|
|
63
|
+
ToggleFieldInputStyle: import("styled-components").StyledComponent<({ formikAs, ...props }: any) => JSX.Element, any, {}, never>;
|
|
64
|
+
ToggleStyle: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
export declare const RadioButtonFieldContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
68
|
+
export declare const RadioButtonFieldElement: import("styled-components").StyledComponent<"label", any, {}, never>;
|
|
69
|
+
export declare const RadioButtonFieldInput: import("styled-components").StyledComponent<({ formikAs, ...props }: any) => JSX.Element, any, {}, never>;
|
|
70
|
+
export declare const ButtonLabel: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
71
|
+
export declare const ButtonLabelTrue: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
72
|
+
export declare const ButtonLabelFalse: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
73
|
+
export declare const RadioButtonField: {
|
|
74
|
+
({ label, inputProps, name, className, }: RadioButtonFieldProps): JSX.Element;
|
|
75
|
+
styles: {
|
|
76
|
+
RadioButtonFieldContainerStyle: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
77
|
+
RadioButtonFieldElementStyle: import("styled-components").StyledComponent<"label", any, {}, never>;
|
|
78
|
+
RadioButtonFieldInputStyle: import("styled-components").StyledComponent<({ formikAs, ...props }: any) => JSX.Element, any, {}, never>;
|
|
79
|
+
ButtonLabelStyle: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
80
|
+
ButtonLabelTrueStyle: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
81
|
+
ButtonLabelFalseStyle: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
export declare const MultiSelectContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
85
|
+
export declare const MultiSelectInput: import("styled-components").StyledComponent<({ formikAs, ...props }: any) => JSX.Element, any, {}, never>;
|
|
86
|
+
export declare const MultiSelectBadgeContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
87
|
+
export declare const MultiSelectBadge: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
88
|
+
export declare const MultiSelectBadgeCloseElement: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
89
|
+
export declare const MultiSelectOptionList: import("styled-components").StyledComponent<"ul", any, {}, never>;
|
|
90
|
+
export declare const MultiSelectOptionListItem: import("styled-components").StyledComponent<"li", any, {}, never>;
|
|
91
|
+
export declare const MultiSelectOptionListWithoutItem: import("styled-components").StyledComponent<"li", any, {}, never>;
|
|
92
|
+
export declare const SearchableMultiTagSelectField: {
|
|
93
|
+
({ name, placeholder, enums, emptySearchMessage, closeElement, className, }: SelectFieldProps): JSX.Element;
|
|
94
|
+
styles: {
|
|
95
|
+
MultiSelectContainerStyle: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
96
|
+
MultiSelectInputStyle: import("styled-components").StyledComponent<({ formikAs, ...props }: any) => JSX.Element, any, {}, never>;
|
|
97
|
+
MultiSelectBadgeContainerStyle: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
98
|
+
MultiSelectBadgeStyle: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
99
|
+
MultiSelectBadgeCloseElementStyle: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
100
|
+
MultiSelectOptionListStyle: import("styled-components").StyledComponent<"ul", any, {}, never>;
|
|
101
|
+
MultiSelectOptionListItemStyle: import("styled-components").StyledComponent<"li", any, {}, never>;
|
|
102
|
+
MultiSelectOptionListWithoutItemStyle: import("styled-components").StyledComponent<"li", any, {}, never>;
|
|
103
|
+
};
|
|
104
|
+
};
|
|
56
105
|
export {};
|