@nolwenture/formik-jsonschema-form 1.0.4 → 1.0.6
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/cjs/Form/components/FieldInfo.js +45 -17
- package/dist/cjs/Form/components/FieldInput.js +8 -1
- package/dist/cjs/Form/fields/BooleanField/styledComponents.js +2 -1
- package/dist/cjs/Form/fields/RadioField/styledComponents.js +5 -0
- package/dist/cjs/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.js +2 -2
- package/dist/cjs/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectFieldInput.js +3 -3
- package/dist/cjs/Form/fields/SearchableMultiTagSelectField/styledComponents.js +9 -4
- package/dist/cjs/Form/fields/SearchableSelectField/SearchableSelectField.js +7 -1
- package/dist/cjs/Form/fields/SearchableSelectField/styledComponents.js +1 -1
- package/dist/cjs/Form/fields/TextAreaField/TextAreaField.js +4 -2
- package/dist/cjs/Form/fields/ToggleField/styledComponents.js +1 -0
- package/dist/cjs/Form/styles/common.js +74 -4
- package/dist/cjs/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +2 -2
- package/dist/cjs/Form/templates/ArrayFieldTemplate/styledComponents.js +4 -1
- package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.js +4 -4
- package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.js +4 -1
- package/dist/cjs/Form/templates/FieldTemplate/FieldTemplate.js +4 -3
- package/dist/cjs/Form/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +2 -2
- package/dist/cjs/Form/templates/ObjectFieldTemplate/styledComponents.js +22 -1
- package/dist/cjs/FormView/fields/MultipleChoiceField.js +1 -1
- package/dist/esm/Form/components/FieldInfo.js +45 -17
- package/dist/esm/Form/components/FieldInput.js +7 -0
- package/dist/esm/Form/fields/BooleanField/styledComponents.js +2 -1
- package/dist/esm/Form/fields/RadioField/styledComponents.js +5 -0
- package/dist/esm/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.js +2 -2
- package/dist/esm/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectFieldInput.js +3 -3
- package/dist/esm/Form/fields/SearchableMultiTagSelectField/styledComponents.js +9 -4
- package/dist/esm/Form/fields/SearchableSelectField/SearchableSelectField.js +7 -1
- package/dist/esm/Form/fields/SearchableSelectField/styledComponents.js +1 -1
- package/dist/esm/Form/fields/TextAreaField/TextAreaField.js +4 -2
- package/dist/esm/Form/fields/ToggleField/styledComponents.js +1 -0
- package/dist/esm/Form/styles/common.js +74 -4
- package/dist/esm/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +2 -2
- package/dist/esm/Form/templates/ArrayFieldTemplate/styledComponents.js +3 -0
- package/dist/esm/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.js +4 -4
- package/dist/esm/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.js +3 -0
- package/dist/esm/Form/templates/FieldTemplate/FieldTemplate.js +4 -3
- package/dist/esm/Form/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +2 -2
- package/dist/esm/Form/templates/ObjectFieldTemplate/styledComponents.js +21 -0
- package/dist/esm/FormView/fields/MultipleChoiceField.js +1 -1
- package/dist/types/Form/components/FieldInfo.d.ts +2 -0
- package/dist/types/Form/components/FieldInput.d.ts +4 -1
- package/dist/types/Form/components/index.d.ts +14 -5
- package/dist/types/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectFieldInput.d.ts +3 -1
- package/dist/types/Form/fields/SearchableMultiTagSelectField/index.d.ts +3 -3
- package/dist/types/Form/fields/SearchableMultiTagSelectField/styledComponents.d.ts +2 -2
- package/dist/types/Form/fields/SearchableSelectField/styledComponents.d.ts +1 -1
- package/dist/types/Form/fields/index.d.ts +4 -4
- package/dist/types/Form/templates/ArrayFieldTemplate/styledComponents.d.ts +3 -1
- package/dist/types/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.d.ts +3 -1
- package/dist/types/Form/templates/ObjectFieldTemplate/styledComponents.d.ts +2 -0
- package/dist/types/Form/templates/index.d.ts +4 -0
- package/dist/types/common/types/FieldInfo.d.ts +1 -0
- package/package.json +2 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FieldInfo = exports.FieldInfoLabel = exports.FieldInfoContainer = exports.FieldInfoBoxInnerElement = exports.FieldInfoBoxArrowElement = exports.FieldInfoBoxElement = void 0;
|
|
3
|
+
exports.FieldInfo = exports.InlineFieldInfoWrapper = exports.FieldInfoLabel = exports.FieldInfoContainer = exports.InlineFieldInfoBoxInnerElement = exports.FieldInfoBoxInnerElement = exports.FieldInfoBoxArrowElement = exports.FieldInfoBoxElement = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
5
6
|
const styled_components_1 = require("styled-components");
|
|
6
7
|
const polished_1 = require("polished");
|
|
7
8
|
exports.FieldInfoBoxElement = styled_components_1.styled.div `
|
|
@@ -55,17 +56,17 @@ exports.FieldInfoBoxArrowElement = styled_components_1.styled.div `
|
|
|
55
56
|
width: 0;
|
|
56
57
|
position: absolute;
|
|
57
58
|
pointer-events: none;
|
|
58
|
-
border-top-color: ${({ position, theme }) => position === "top" ? theme.color.intent.default.
|
|
59
|
-
border-bottom-color: ${({ position, theme }) => position === "bottom" ? theme.color.intent.default.
|
|
60
|
-
border-right-color: ${({ position, theme }) => position === "right" ? theme.color.intent.default.
|
|
61
|
-
border-left-color: ${({ position, theme }) => position === "left" ? theme.color.intent.default.
|
|
59
|
+
border-top-color: ${({ position, theme }) => position === "top" ? theme.color.intent.default.warning : "transparent"};
|
|
60
|
+
border-bottom-color: ${({ position, theme }) => position === "bottom" ? theme.color.intent.default.warning : "transparent"};
|
|
61
|
+
border-right-color: ${({ position, theme }) => position === "right" ? theme.color.intent.default.warning : "transparent"};
|
|
62
|
+
border-left-color: ${({ position, theme }) => position === "left" ? theme.color.intent.default.warning : "transparent"};
|
|
62
63
|
border-width: 5px;
|
|
63
64
|
margin-left: -5px;
|
|
64
65
|
`;
|
|
65
66
|
exports.FieldInfoBoxInnerElement = styled_components_1.styled.div `
|
|
66
|
-
background: ${(props) => props.theme.color.
|
|
67
|
+
background: ${(props) => props.theme.color.intent.default.warning};
|
|
67
68
|
border-radius: ${(props) => props.theme.borderRadius.none};
|
|
68
|
-
border:
|
|
69
|
+
border: none;
|
|
69
70
|
color: ${(props) => props.theme.color.text.default};
|
|
70
71
|
cursor: default;
|
|
71
72
|
font-size: ${(props) => props.theme.typography.size.small};
|
|
@@ -75,21 +76,31 @@ exports.FieldInfoBoxInnerElement = styled_components_1.styled.div `
|
|
|
75
76
|
text-align: left;
|
|
76
77
|
white-space: pre-wrap;
|
|
77
78
|
`;
|
|
79
|
+
exports.InlineFieldInfoBoxInnerElement = styled_components_1.styled.div `
|
|
80
|
+
background: ${(props) => props.theme.color.intent.default.warning};
|
|
81
|
+
border-radius: ${(props) => props.theme.borderRadius.none};
|
|
82
|
+
border: none;
|
|
83
|
+
color: ${(props) => props.theme.color.text.default};
|
|
84
|
+
cursor: default;
|
|
85
|
+
font-size: ${(props) => props.theme.typography.size.small};
|
|
86
|
+
line-height: ${(props) => props.theme.typography.lineHeight.small};
|
|
87
|
+
padding: ${(props) => `${props.theme.spacing.s} ${props.theme.spacing.m}`};
|
|
88
|
+
text-align: left;
|
|
89
|
+
white-space: pre-wrap;
|
|
90
|
+
`;
|
|
78
91
|
exports.FieldInfoContainer = styled_components_1.styled.a `
|
|
79
|
-
position: relative;
|
|
80
|
-
color: ${(props) => props.theme.color.text.default};
|
|
81
92
|
background: none;
|
|
82
|
-
outline: none;
|
|
83
|
-
cursor: pointer;
|
|
84
|
-
border: ${(props) => `${props.theme.strokeWidth.thin} solid
|
|
85
|
-
${props.theme.color.border.default}`};
|
|
86
93
|
border-radius: ${(props) => props.theme.borderRadius.circle};
|
|
87
|
-
|
|
94
|
+
border: ${(props) => `${props.theme.strokeWidth.thin} solid ${props.theme.color.border.default}`};
|
|
95
|
+
color: ${(props) => props.theme.color.text.default};
|
|
96
|
+
cursor: pointer;
|
|
88
97
|
font-family: ${(props) => props.theme.typography.fontFamily.base};
|
|
89
98
|
font-size: ${(props) => props.theme.typography.size.small};
|
|
99
|
+
margin: ${(props) => `0 ${props.theme.spacing.s} 0 -${props.theme.spacing.xs}`};
|
|
100
|
+
outline: none;
|
|
90
101
|
padding: ${(props) => `0 ${props.theme.spacing.s}`};
|
|
102
|
+
position: relative;
|
|
91
103
|
text-decoration: unset;
|
|
92
|
-
margin: ${(props) => `0 ${props.theme.spacing.s} 0 -${props.theme.spacing.xs}`};
|
|
93
104
|
width: fit-content;
|
|
94
105
|
|
|
95
106
|
&:active,
|
|
@@ -103,7 +114,24 @@ exports.FieldInfoContainer = styled_components_1.styled.a `
|
|
|
103
114
|
}
|
|
104
115
|
`;
|
|
105
116
|
exports.FieldInfoLabel = styled_components_1.styled.span ``;
|
|
106
|
-
|
|
107
|
-
|
|
117
|
+
exports.InlineFieldInfoWrapper = styled_components_1.styled.div `
|
|
118
|
+
display: flex;
|
|
119
|
+
margin: ${(props) => `${props.theme.spacing.m} 0`};
|
|
120
|
+
width: 100%;
|
|
121
|
+
`;
|
|
122
|
+
const FieldInfo = ({ label, content, position, display = "tooltip", className, }) => {
|
|
123
|
+
const [isInlineVisible, setIsInlineVisible] = (0, react_1.useState)(false);
|
|
124
|
+
const handleToggle = (e) => {
|
|
125
|
+
e.preventDefault();
|
|
126
|
+
if (display === "inline") {
|
|
127
|
+
setIsInlineVisible((prev) => !prev);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
if (display === "inline") {
|
|
131
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(exports.FieldInfoContainer, { href: "#", onClick: handleToggle, className: className, children: (0, jsx_runtime_1.jsx)(exports.FieldInfoLabel, { children: label ?? "i" }) }), isInlineVisible && ((0, jsx_runtime_1.jsx)(exports.InlineFieldInfoWrapper, { children: (0, jsx_runtime_1.jsx)(exports.InlineFieldInfoBoxInnerElement, { children: content }) }))] }));
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
return ((0, jsx_runtime_1.jsxs)(exports.FieldInfoContainer, { href: "#", onClick: (e) => e.preventDefault(), className: className, children: [(0, jsx_runtime_1.jsx)(exports.FieldInfoLabel, { children: label ?? "i" }), (0, jsx_runtime_1.jsxs)(exports.FieldInfoBoxElement, { position: position ?? "top", role: "tooltip", children: [(0, jsx_runtime_1.jsx)(exports.FieldInfoBoxArrowElement, { position: position ?? "top" }), (0, jsx_runtime_1.jsx)(exports.FieldInfoBoxInnerElement, { children: content })] })] }));
|
|
135
|
+
}
|
|
108
136
|
};
|
|
109
137
|
exports.FieldInfo = FieldInfo;
|
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.SelectFieldInput = exports.FieldInput = exports.FieldHelp = exports.FieldDescription = exports.FieldTitle = exports.FieldWrapper = void 0;
|
|
36
|
+
exports.SelectFieldInput = exports.FieldInput = exports.FieldHelp = exports.FieldDescription = exports.FieldTitle = exports.FieldTitleInfoWrapper = exports.FieldWrapper = void 0;
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const styled_components_1 = require("styled-components");
|
|
39
39
|
const formik = __importStar(require("formik"));
|
|
@@ -42,6 +42,13 @@ exports.FieldWrapper = styled_components_1.styled.div `
|
|
|
42
42
|
flex-direction: column;
|
|
43
43
|
margin: ${(props) => `${props.theme.spacing.s} 0`};
|
|
44
44
|
color: ${(props) => props.theme.color.text.default};
|
|
45
|
+
opacity: ${(props) => (props.$isDisabled ? 0.6 : 1)};
|
|
46
|
+
pointer-events: ${(props) => (props.$isDisabled ? 'none' : 'auto')};
|
|
47
|
+
`;
|
|
48
|
+
exports.FieldTitleInfoWrapper = styled_components_1.styled.div `
|
|
49
|
+
display: flex;
|
|
50
|
+
flex-direction: row;
|
|
51
|
+
flex-wrap: wrap;
|
|
45
52
|
`;
|
|
46
53
|
exports.FieldTitle = styled_components_1.styled.label `
|
|
47
54
|
font-size: ${(props) => props.theme.typography.size.base};
|
|
@@ -11,7 +11,8 @@ exports.BooleanFieldWrapper = (0, styled_components_1.styled)(common_1.CommonChe
|
|
|
11
11
|
font-family: ${(props) => props.theme.typography.fontFamily.base};
|
|
12
12
|
gap: ${(props) => props.theme.spacing.s};
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
&:has(input[readonly]) {
|
|
15
15
|
pointer-events: none;
|
|
16
|
+
cursor: pointer;
|
|
16
17
|
}
|
|
17
18
|
`;
|
|
@@ -49,6 +49,11 @@ exports.RadioFieldContainer = (0, styled_components_1.styled)(common_1.CommonChe
|
|
|
49
49
|
transform: scale(1);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
+
|
|
53
|
+
&[readonly] {
|
|
54
|
+
background-color: transparent;
|
|
55
|
+
border: none;
|
|
56
|
+
}
|
|
52
57
|
}
|
|
53
58
|
`;
|
|
54
59
|
exports.RadioFieldElement = styled_components_1.styled.label `
|
|
@@ -9,12 +9,12 @@ const FormRegistry_1 = require("../../FormRegistry");
|
|
|
9
9
|
const SearchableMultiTagSelectField = (props) => {
|
|
10
10
|
const { templates, components: { SearchableMultiTagSelectFieldInput }, } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
|
|
11
11
|
(0, hooks_1.useSetDefault)(props);
|
|
12
|
-
const { name, uiSchema } = props;
|
|
12
|
+
const { name, uiSchema, schema } = props;
|
|
13
13
|
const { placeholder, emptySearchMessage, props: inputProps, } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
|
|
14
14
|
const enums = (0, react_1.useMemo)(() => (0, utils_1.getEnums)(props), [props]);
|
|
15
15
|
const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
|
|
16
16
|
templates[props.uiSchema?.["ui:template"]]) ??
|
|
17
17
|
templates.FieldTemplate;
|
|
18
|
-
return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-array": name, children: (0, jsx_runtime_1.jsx)(SearchableMultiTagSelectFieldInput, { ...inputProps, name: name, placeholder: placeholder, emptySearchMessage: emptySearchMessage, enums: enums }) }));
|
|
18
|
+
return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-array": name, children: (0, jsx_runtime_1.jsx)(SearchableMultiTagSelectFieldInput, { ...inputProps, name: name, placeholder: placeholder, emptySearchMessage: emptySearchMessage, enums: enums, readOnly: schema.readOnly }) }));
|
|
19
19
|
};
|
|
20
20
|
exports.SearchableMultiTagSelectField = SearchableMultiTagSelectField;
|
package/dist/cjs/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectFieldInput.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.SearchableMultiTagSelectFieldInput = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const FormRegistry_1 = require("../../FormRegistry");
|
|
7
|
-
const SearchableMultiTagSelectFieldInput = ({ name, placeholder, enums, emptySearchMessage, closeElement, className, }) => {
|
|
7
|
+
const SearchableMultiTagSelectFieldInput = ({ name, placeholder, enums, emptySearchMessage, closeElement, className, disabled, readOnly, }) => {
|
|
8
8
|
const { components: { FieldInput, SearchableMultiTagSelectFieldBadge, SearchableMultiTagSelectFieldBadgeCloseElement, SearchableMultiTagSelectFieldBadgeContainer, SearchableMultiTagSelectFieldContainer, SearchableMultiTagSelectFieldInputElement, SearchableMultiTagSelectFieldOptionList, SearchableMultiTagSelectFieldOptionListItem, SearchableMultiTagSelectFieldOptionListWithoutItem, SearchableMultiTagSelectFieldSearchContainer, }, } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
|
|
9
9
|
const [search, setSearch] = (0, react_1.useState)("");
|
|
10
10
|
const searchIncludedInEnum = () => {
|
|
@@ -13,7 +13,7 @@ const SearchableMultiTagSelectFieldInput = ({ name, placeholder, enums, emptySea
|
|
|
13
13
|
};
|
|
14
14
|
return ((0, jsx_runtime_1.jsx)(FieldInput, { className: className, name: name, multiple: true, children: ({ field, form: { setFieldValue }, meta, }) => ((0, jsx_runtime_1.jsxs)(SearchableMultiTagSelectFieldContainer, { className: className, children: [(0, jsx_runtime_1.jsx)(FieldInput, { id: className, type: "hidden", ...field }), (0, jsx_runtime_1.jsxs)(SearchableMultiTagSelectFieldSearchContainer, { children: [(0, jsx_runtime_1.jsx)(SearchableMultiTagSelectFieldInputElement, { id: className + "_id", className: className, type: "text", onChange: (e) => {
|
|
15
15
|
setSearch(e.currentTarget.value);
|
|
16
|
-
}, placeholder: placeholder, value: search }), search.length > 0 && ((0, jsx_runtime_1.jsx)(SearchableMultiTagSelectFieldOptionList, { children: searchIncludedInEnum() ? (enums?.values
|
|
16
|
+
}, placeholder: placeholder, value: search, readOnly: readOnly, disabled: disabled }), search.length > 0 && !disabled && !readOnly && ((0, jsx_runtime_1.jsx)(SearchableMultiTagSelectFieldOptionList, { children: searchIncludedInEnum() ? (enums?.values
|
|
17
17
|
.filter((item) => !(field.value ?? []).includes(item.const))
|
|
18
18
|
.filter((value) => value.title.toLowerCase().includes(search.toLowerCase()))
|
|
19
19
|
.map((option, index) => ((0, jsx_runtime_1.jsx)(SearchableMultiTagSelectFieldOptionListItem, { value: option.const, onClick: () => {
|
|
@@ -22,6 +22,6 @@ const SearchableMultiTagSelectFieldInput = ({ name, placeholder, enums, emptySea
|
|
|
22
22
|
]);
|
|
23
23
|
setSearch("");
|
|
24
24
|
}, children: option.title }, index)))) : ((0, jsx_runtime_1.jsx)(SearchableMultiTagSelectFieldOptionListWithoutItem, { children: emptySearchMessage ?? "No match found" })) }))] }), (0, jsx_runtime_1.jsx)(SearchableMultiTagSelectFieldBadgeContainer, { children: (field.value ?? []).map((value) => ((0, jsx_runtime_1.jsxs)(SearchableMultiTagSelectFieldBadge, { children: [enums?.values.find((option) => option.const === value)
|
|
25
|
-
?.title, (0, jsx_runtime_1.jsx)(SearchableMultiTagSelectFieldBadgeCloseElement, { onClick: () => setFieldValue(name, field.value.filter((v) => v !== value)), children: closeElement ?? "✕" })] }, value))) }), meta.touched && meta.error && ((0, jsx_runtime_1.jsx)("div", { className: "error", children: meta.error }))] })) }));
|
|
25
|
+
?.title, (0, jsx_runtime_1.jsx)(SearchableMultiTagSelectFieldBadgeCloseElement, { onClick: () => setFieldValue(name, field.value.filter((v) => v !== value)), disabled: disabled || readOnly, children: closeElement ?? "✕" })] }, value))) }), meta.touched && meta.error && ((0, jsx_runtime_1.jsx)("div", { className: "error", children: meta.error }))] })) }));
|
|
26
26
|
};
|
|
27
27
|
exports.SearchableMultiTagSelectFieldInput = SearchableMultiTagSelectFieldInput;
|
|
@@ -22,17 +22,22 @@ exports.SearchableMultiTagSelectFieldBadgeContainer = styled_components_1.styled
|
|
|
22
22
|
display: inline-flex;
|
|
23
23
|
gap: ${(props) => props.theme.strokeWidth.thin};
|
|
24
24
|
`;
|
|
25
|
-
exports.SearchableMultiTagSelectFieldBadge = styled_components_1.styled.
|
|
25
|
+
exports.SearchableMultiTagSelectFieldBadge = styled_components_1.styled.div `
|
|
26
26
|
color: ${(props) => props.theme.color.background.input};
|
|
27
27
|
background: ${(props) => props.theme.color.text.default};
|
|
28
|
-
padding: ${(props) => `0 ${props.theme.spacing.
|
|
28
|
+
padding: ${(props) => `0 ${props.theme.spacing.s}`};
|
|
29
29
|
border-radius: ${(props) => props.theme.borderRadius.none};
|
|
30
30
|
display: flex;
|
|
31
31
|
margin-right: ${(props) => props.theme.spacing.xs};
|
|
32
|
+
gap: ${(props) => props.theme.spacing.s};
|
|
32
33
|
`;
|
|
33
|
-
exports.SearchableMultiTagSelectFieldBadgeCloseElement = styled_components_1.styled.
|
|
34
|
+
exports.SearchableMultiTagSelectFieldBadgeCloseElement = styled_components_1.styled.button `
|
|
35
|
+
background: transparent;
|
|
36
|
+
color: ${(props) => props.theme.color.background.input};
|
|
37
|
+
border: none;
|
|
34
38
|
cursor: pointer;
|
|
35
|
-
margin
|
|
39
|
+
margin: 0;
|
|
40
|
+
padding: 0;
|
|
36
41
|
font-size: ${(props) => props.theme.typography.size.small};
|
|
37
42
|
align-self: center;
|
|
38
43
|
font-family: ${(props) => props.theme.typography.fontFamily.base};
|
|
@@ -88,6 +88,8 @@ const SearchableSelectField = (props) => {
|
|
|
88
88
|
};
|
|
89
89
|
}, [handleKeyPress]);
|
|
90
90
|
const handleSearchChange = (event) => {
|
|
91
|
+
if (schema.readOnly)
|
|
92
|
+
return;
|
|
91
93
|
setSearchTerm(event.target.value);
|
|
92
94
|
setItemsToShow(dropdownOptions.perPage);
|
|
93
95
|
setShowOptions(true);
|
|
@@ -101,6 +103,8 @@ const SearchableSelectField = (props) => {
|
|
|
101
103
|
onSelect?.(item.const);
|
|
102
104
|
};
|
|
103
105
|
const handleFocus = () => {
|
|
106
|
+
if (schema.readOnly)
|
|
107
|
+
return;
|
|
104
108
|
setShowOptions(true);
|
|
105
109
|
};
|
|
106
110
|
const handleBlur = (event) => {
|
|
@@ -110,6 +114,8 @@ const SearchableSelectField = (props) => {
|
|
|
110
114
|
}
|
|
111
115
|
};
|
|
112
116
|
const handleClear = () => {
|
|
117
|
+
if (schema.readOnly)
|
|
118
|
+
return;
|
|
113
119
|
setSearchTerm("");
|
|
114
120
|
setValue(undefined);
|
|
115
121
|
};
|
|
@@ -122,7 +128,7 @@ const SearchableSelectField = (props) => {
|
|
|
122
128
|
const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
|
|
123
129
|
templates[props.uiSchema?.["ui:template"]]) ??
|
|
124
130
|
templates.FieldTemplate;
|
|
125
|
-
return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, ...fieldDataAttribute, children: (0, jsx_runtime_1.jsxs)(SearchableSelectFieldContainer, { ref: containerRef, onBlur: handleBlur, children: [(0, jsx_runtime_1.jsxs)(SearchableSelectFieldInputContainer, { children: [(0, jsx_runtime_1.jsx)(SearchableSelectFieldInputElement, { ...inputProps, name: name, type: "text", placeholder: placeholder, value: searchTerm, onChange: handleSearchChange, onFocus: handleFocus }), searchTerm && !hideClearButton && ((0, jsx_runtime_1.jsx)(SearchableSelectFieldClearButton, { onClick: handleClear, children: clearButtonText ?? "✕" }))] }), showOptions && ((0, jsx_runtime_1.jsxs)(SearchableSelectFieldDropdownContainer, { role: "dropdown-list",
|
|
131
|
+
return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, ...fieldDataAttribute, children: (0, jsx_runtime_1.jsxs)(SearchableSelectFieldContainer, { ref: containerRef, onBlur: handleBlur, children: [(0, jsx_runtime_1.jsxs)(SearchableSelectFieldInputContainer, { children: [(0, jsx_runtime_1.jsx)(SearchableSelectFieldInputElement, { ...inputProps, name: name, type: "text", placeholder: placeholder, value: searchTerm, onChange: handleSearchChange, onFocus: handleFocus, readOnly: schema.readOnly }), searchTerm && !hideClearButton && ((0, jsx_runtime_1.jsx)(SearchableSelectFieldClearButton, { onClick: handleClear, disabled: schema.readOnly, children: clearButtonText ?? "✕" }))] }), showOptions && !schema.readOnly && ((0, jsx_runtime_1.jsxs)(SearchableSelectFieldDropdownContainer, { role: "dropdown-list",
|
|
126
132
|
//ref={moreRef} //TODO
|
|
127
133
|
style: {
|
|
128
134
|
maxHeight: dropdownOptions.height,
|
|
@@ -32,7 +32,7 @@ exports.SearchableSelectFieldInputElement = (0, styled_components_1.styled)(Fiel
|
|
|
32
32
|
padding-right: ${(props) => props.theme.spacing.xxl};
|
|
33
33
|
text-overflow: ellipsis;
|
|
34
34
|
`;
|
|
35
|
-
exports.SearchableSelectFieldClearButton = styled_components_1.styled.
|
|
35
|
+
exports.SearchableSelectFieldClearButton = styled_components_1.styled.button `
|
|
36
36
|
background-color: ${(props) => props.theme.color.palette.neutral[500]};
|
|
37
37
|
border-radius: ${(props) => props.theme.borderRadius.circle};
|
|
38
38
|
bottom: 0;
|
|
@@ -10,10 +10,12 @@ const TextAreaField = (props) => {
|
|
|
10
10
|
const { templates, components: { TextAreaFieldInput }, } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
|
|
11
11
|
(0, hooks_1.useSetDefault)(props);
|
|
12
12
|
const { name, uiSchema } = props;
|
|
13
|
-
const { props: inputProps } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
|
|
13
|
+
const { placeholder, props: inputProps } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
|
|
14
14
|
const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
|
|
15
15
|
templates[props.uiSchema?.["ui:template"]]) ??
|
|
16
16
|
templates.FieldTemplate;
|
|
17
|
-
return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-string": name, children: (0, jsx_runtime_1.jsx)(TextAreaFieldInput, {
|
|
17
|
+
return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-string": name, children: (0, jsx_runtime_1.jsx)(TextAreaFieldInput, { placeholder,
|
|
18
|
+
readOnly: props.schema.readOnly,
|
|
19
|
+
...inputProps, name: name, formikAs: "textarea" }) }));
|
|
18
20
|
};
|
|
19
21
|
exports.TextAreaField = TextAreaField;
|
|
@@ -10,6 +10,7 @@ exports.ToggleFieldToggle = styled_components_1.styled.span `
|
|
|
10
10
|
left: 0;
|
|
11
11
|
right: 0;
|
|
12
12
|
bottom: 0;
|
|
13
|
+
height: 1rem;
|
|
13
14
|
background: ${(props) => props.theme.color.intent.default.none};
|
|
14
15
|
border: ${(props) => `${props.theme.strokeWidth.thin} solid ${props.theme.color.border.default}`};
|
|
15
16
|
-webkit-transition: 0.4s;
|
|
@@ -23,6 +23,24 @@ exports.CommonFieldWrapper = styled_components_1.styled.div `
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
&:read-only {
|
|
26
|
+
border: none;
|
|
27
|
+
background-color: transparent;
|
|
28
|
+
padding: 0;
|
|
29
|
+
|
|
30
|
+
&::placeholder {
|
|
31
|
+
color: ${(props) => props.theme.color.text.default};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
&:disabled {
|
|
36
|
+
background-color: ${(props) => props.theme.color.background.input};
|
|
37
|
+
border: ${(props) => `${props.theme.strokeWidth.thin} solid
|
|
38
|
+
${props.theme.color.border.default}`};
|
|
39
|
+
padding: ${(props) => props.theme.spacing.s};
|
|
40
|
+
|
|
41
|
+
&::placeholder {
|
|
42
|
+
color: ${(props) => props.theme.color.text.muted};
|
|
43
|
+
}
|
|
26
44
|
}
|
|
27
45
|
|
|
28
46
|
&:focus {
|
|
@@ -59,13 +77,24 @@ exports.CommonFieldWrapper = styled_components_1.styled.div `
|
|
|
59
77
|
background-repeat: no-repeat;
|
|
60
78
|
background-size: ${(props) => props.theme.spacing.l}; auto;
|
|
61
79
|
|
|
62
|
-
|
|
63
|
-
|
|
80
|
+
&[readonly] {
|
|
81
|
+
background-image: none;
|
|
82
|
+
border: none;
|
|
83
|
+
background-color: transparent;
|
|
84
|
+
padding: 0;
|
|
64
85
|
}
|
|
65
86
|
|
|
66
87
|
&:focus {
|
|
67
88
|
${(props) => props.theme.focus.default};
|
|
68
89
|
}
|
|
90
|
+
|
|
91
|
+
&:disabled {
|
|
92
|
+
background-color: ${(props) => props.theme.color.background.input};
|
|
93
|
+
background-image: ${(props) => `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 320 512'%3E%3Cpath fill='${encodeURIComponent(props.theme.color.text.default)}' d='M31 192h258c17 0 26 21 14 33l-129 129c-8 8-21 8-29 0L17 225c-12-12-3-33 14-33z'/%3E%3C/svg%3E")`};
|
|
94
|
+
border: ${(props) => `${props.theme.strokeWidth.thin} solid
|
|
95
|
+
${props.theme.color.border.default}`};
|
|
96
|
+
padding: ${(props) => `${props.theme.spacing.s} ${props.theme.spacing.xxxxl} ${props.theme.spacing.s} ${props.theme.spacing.m}`};
|
|
97
|
+
}
|
|
69
98
|
}
|
|
70
99
|
|
|
71
100
|
select[multiple] {
|
|
@@ -73,6 +102,40 @@ exports.CommonFieldWrapper = styled_components_1.styled.div `
|
|
|
73
102
|
background-image: none;
|
|
74
103
|
overflow: auto;
|
|
75
104
|
}
|
|
105
|
+
|
|
106
|
+
textarea {
|
|
107
|
+
|
|
108
|
+
background-color: ${(props) => props.theme.color.background.input};
|
|
109
|
+
border: ${(props) => `${props.theme.strokeWidth.thin} solid
|
|
110
|
+
${props.theme.color.border.default}`};
|
|
111
|
+
padding: ${(props) => props.theme.spacing.s};
|
|
112
|
+
|
|
113
|
+
&:read-only {
|
|
114
|
+
border: none;
|
|
115
|
+
background-color: transparent;
|
|
116
|
+
padding: 0;
|
|
117
|
+
min-height: unset;
|
|
118
|
+
resize: none;
|
|
119
|
+
field-sizing: content;
|
|
120
|
+
|
|
121
|
+
&::placeholder {
|
|
122
|
+
color: ${(props) => props.theme.color.text.default};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
&:disabled {
|
|
127
|
+
background-color: ${(props) => props.theme.color.background.input};
|
|
128
|
+
border: ${(props) => `${props.theme.strokeWidth.thin} solid
|
|
129
|
+
${props.theme.color.border.default}`};
|
|
130
|
+
min-height: 5rem;
|
|
131
|
+
padding: ${(props) => props.theme.spacing.s};
|
|
132
|
+
|
|
133
|
+
&::placeholder {
|
|
134
|
+
color: ${(props) => props.theme.color.text.muted};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
}
|
|
76
139
|
`;
|
|
77
140
|
exports.CommonCheckboxStyles = styled_components_1.styled.div `
|
|
78
141
|
input[type="checkbox"] {
|
|
@@ -178,8 +241,15 @@ exports.CommonCheckboxStyles = styled_components_1.styled.div `
|
|
|
178
241
|
}
|
|
179
242
|
}
|
|
180
243
|
|
|
181
|
-
|
|
182
|
-
|
|
244
|
+
&[readonly] {
|
|
245
|
+
background: transparent;
|
|
246
|
+
border: none;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
&:disabled {
|
|
250
|
+
background-color: ${(props) => props.theme.color.background.input};
|
|
251
|
+
border: ${(props) => props.theme.strokeWidth.thin} solid
|
|
252
|
+
${(props) => props.theme.color.border.default};
|
|
183
253
|
}
|
|
184
254
|
}
|
|
185
255
|
`;
|
|
@@ -9,7 +9,7 @@ const FormRegistry_1 = require("../../FormRegistry");
|
|
|
9
9
|
const styledComponents_1 = require("./styledComponents");
|
|
10
10
|
const ArrayFieldTemplate = (props) => {
|
|
11
11
|
const { components } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
|
|
12
|
-
const { Wrapper, Title, Description, Help, Info, RequiredIndicator, ErrorMessage, } = (0, styledComponents_1.getComponents)(components);
|
|
12
|
+
const { Wrapper, Title, TitleInfoWrapper, Description, Help, Info, RequiredIndicator, ErrorMessage, } = (0, styledComponents_1.getComponents)(components);
|
|
13
13
|
const { name, uiSchema, items, renderItem, ...otherProps } = props;
|
|
14
14
|
const title = (0, utils_1.getTitle)(props);
|
|
15
15
|
const description = (0, utils_1.getDescription)(props);
|
|
@@ -31,6 +31,6 @@ const ArrayFieldTemplate = (props) => {
|
|
|
31
31
|
// In case of array of objects, it will give error message as an object value,
|
|
32
32
|
// which is incorrect value for React, causing UI to crash.
|
|
33
33
|
const errorIsString = typeof error === "string";
|
|
34
|
-
return ((0, jsx_runtime_1.jsxs)(Wrapper, { ...mergedWrapperProps, children: [title && ((0, jsx_runtime_1.jsxs)(Title, { ...titleProps, htmlFor: name, children: [title, props?.required && (0, jsx_runtime_1.jsx)(RequiredIndicator, {})] })), info && (0, jsx_runtime_1.jsx)(Info, { ...info }), description && ((0, jsx_runtime_1.jsx)(Description, { ...descriptionProps, children: description })), items && items.map((item, index) => renderItem(item, index)), help && (0, jsx_runtime_1.jsx)(Help, { ...helpProps, children: help }), errorIsString && (0, jsx_runtime_1.jsx)(ErrorMessage, { ...errorProps, name: name })] }));
|
|
34
|
+
return ((0, jsx_runtime_1.jsxs)(Wrapper, { ...mergedWrapperProps, children: [(0, jsx_runtime_1.jsxs)(TitleInfoWrapper, { children: [title && ((0, jsx_runtime_1.jsxs)(Title, { ...titleProps, htmlFor: name, children: [title, props?.required && (0, jsx_runtime_1.jsx)(RequiredIndicator, {})] })), info && (0, jsx_runtime_1.jsx)(Info, { ...info })] }), description && ((0, jsx_runtime_1.jsx)(Description, { ...descriptionProps, children: description })), items && items.map((item, index) => renderItem(item, index)), help && (0, jsx_runtime_1.jsx)(Help, { ...helpProps, children: help }), errorIsString && (0, jsx_runtime_1.jsx)(ErrorMessage, { ...errorProps, name: name })] }));
|
|
35
35
|
};
|
|
36
36
|
exports.ArrayFieldTemplate = ArrayFieldTemplate;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ArrayFieldTemplateErrorMessage = exports.ArrayFieldTemplateRequiredIndicator = exports.ArrayFieldTemplateInfo = exports.ArrayFieldTemplateHelp = exports.ArrayFieldTemplateDescription = exports.ArrayFieldTemplateTitle = exports.ArrayFieldTemplateIcon = exports.ArrayFieldTemplateWrapper = void 0;
|
|
3
|
+
exports.ArrayFieldTemplateErrorMessage = exports.ArrayFieldTemplateRequiredIndicator = exports.ArrayFieldTemplateInfo = exports.ArrayFieldTemplateHelp = exports.ArrayFieldTemplateDescription = exports.ArrayFieldTemplateTitle = exports.ArrayFieldTemplateIcon = exports.ArrayFieldTemplateWrapper = exports.ArrayFieldTitleInfoWrapper = void 0;
|
|
4
4
|
exports.getComponents = getComponents;
|
|
5
|
+
exports.ArrayFieldTitleInfoWrapper = undefined;
|
|
5
6
|
exports.ArrayFieldTemplateWrapper = undefined;
|
|
6
7
|
exports.ArrayFieldTemplateIcon = undefined;
|
|
7
8
|
exports.ArrayFieldTemplateTitle = undefined;
|
|
@@ -14,6 +15,8 @@ function getComponents(components) {
|
|
|
14
15
|
return {
|
|
15
16
|
Wrapper: components.ArrayFieldTemplateWrapper ??
|
|
16
17
|
components.ObjectFieldTemplateWrapper,
|
|
18
|
+
TitleInfoWrapper: components.ArrayFieldTitleInfoWrapper ??
|
|
19
|
+
components.ObjectFieldTitleInfoWrapper,
|
|
17
20
|
Title: components.ArrayFieldTemplateTitle ?? components.ObjectFieldTemplateTitle,
|
|
18
21
|
Description: components.ArrayFieldTemplateDescription ?? components.FieldDescription,
|
|
19
22
|
Help: components.ArrayFieldTemplateHelp ?? components.FieldHelp,
|
package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.js
CHANGED
|
@@ -9,7 +9,7 @@ const FormRegistry_1 = require("../../FormRegistry");
|
|
|
9
9
|
const styledComponents_1 = require("./styledComponents");
|
|
10
10
|
const CollapsibleObjectFieldTemplate = (props) => {
|
|
11
11
|
const { components } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
|
|
12
|
-
const { Toggle, ChildrenWrapper, RequiredIndicator, Icon, Description, Title, Wrapper, Help, Info, } = (0, styledComponents_1.getComponents)(components);
|
|
12
|
+
const { Toggle, ChildrenWrapper, RequiredIndicator, Icon, Description, Title, TitleInfoWrapper, Wrapper, Help, Info, } = (0, styledComponents_1.getComponents)(components);
|
|
13
13
|
const { children, name, uiSchema, ...otherProps } = props;
|
|
14
14
|
const formikCtx = (0, formik_1.useFormikContext)();
|
|
15
15
|
const values = formikCtx.values
|
|
@@ -34,8 +34,8 @@ const CollapsibleObjectFieldTemplate = (props) => {
|
|
|
34
34
|
};
|
|
35
35
|
const [collapsed, setCollapsed] = (0, react_1.useState)(isCollapsedOnLoad);
|
|
36
36
|
const hide = collapsed;
|
|
37
|
-
return ((0, jsx_runtime_1.jsxs)(Wrapper, { ...mergedWrapperProps, children: [title && ((0, jsx_runtime_1.jsx)(Toggle, { onClick: () => setCollapsed(!collapsed),
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
return ((0, jsx_runtime_1.jsxs)(Wrapper, { ...mergedWrapperProps, children: [(0, jsx_runtime_1.jsxs)(TitleInfoWrapper, { children: [title && ((0, jsx_runtime_1.jsx)(Toggle, { onClick: () => setCollapsed(!collapsed),
|
|
38
|
+
//ariaExpanded={!hide}
|
|
39
|
+
ariaLabel: ariaLabel ?? name, children: (0, jsx_runtime_1.jsxs)(Title, { ...titleProps, htmlFor: name, children: [title, props?.required && (0, jsx_runtime_1.jsx)(RequiredIndicator, {}), (0, jsx_runtime_1.jsx)(Icon, { children: hide ? collapsedIcon ?? "▸" : openIcon ?? "▾" })] }) })), info && (0, jsx_runtime_1.jsx)(Info, { ...info })] }), description && ((0, jsx_runtime_1.jsx)(Description, { ...descriptionProps, children: description })), !hide && (0, jsx_runtime_1.jsx)(ChildrenWrapper, { children: children }), help && (0, jsx_runtime_1.jsx)(Help, { ...helpProps, children: help })] }));
|
|
40
40
|
};
|
|
41
41
|
exports.CollapsibleObjectFieldTemplate = CollapsibleObjectFieldTemplate;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CollapsibleObjectFieldTemplateChildWrapper = exports.CollapsibleObjectFieldTemplateToggle = exports.CollapsibleObjectFieldTemplateErrorMessage = exports.CollapsibleObjectFieldTemplateRequiredIndicator = exports.CollapsibleObjectFieldTemplateInfo = exports.CollapsibleObjectFieldTemplateHelp = exports.CollapsibleObjectFieldTemplateDescription = exports.CollapsibleObjectFieldTemplateTitle = exports.CollapsibleObjectFieldTemplateIcon = exports.CollapsibleObjectFieldTemplateWrapper = void 0;
|
|
3
|
+
exports.CollapsibleObjectFieldTemplateChildWrapper = exports.CollapsibleObjectFieldTemplateToggle = exports.CollapsibleObjectFieldTemplateErrorMessage = exports.CollapsibleObjectFieldTemplateRequiredIndicator = exports.CollapsibleObjectFieldTemplateInfo = exports.CollapsibleObjectFieldTemplateHelp = exports.CollapsibleObjectFieldTemplateDescription = exports.CollapsibleObjectFieldTemplateTitle = exports.CollapsibleObjectFieldTemplateIcon = exports.CollapsibleObjectTitleInfoWrapper = exports.CollapsibleObjectFieldTemplateWrapper = void 0;
|
|
4
4
|
exports.getComponents = getComponents;
|
|
5
5
|
const styled_components_1 = require("styled-components");
|
|
6
6
|
const styledComponents_1 = require("../ObjectFieldTemplate/styledComponents");
|
|
7
7
|
const component_library_1 = require("@nolwenture/component-library");
|
|
8
8
|
exports.CollapsibleObjectFieldTemplateWrapper = undefined;
|
|
9
|
+
exports.CollapsibleObjectTitleInfoWrapper = undefined;
|
|
9
10
|
exports.CollapsibleObjectFieldTemplateIcon = undefined;
|
|
10
11
|
exports.CollapsibleObjectFieldTemplateTitle = (0, styled_components_1.styled)(styledComponents_1.ObjectFieldTemplateTitle) `
|
|
11
12
|
display: flex;
|
|
@@ -27,6 +28,8 @@ function getComponents(components) {
|
|
|
27
28
|
return {
|
|
28
29
|
Wrapper: components.CollapsibleObjectFieldTemplateWrapper ??
|
|
29
30
|
components.ObjectFieldTemplateWrapper,
|
|
31
|
+
TitleInfoWrapper: components.CollapsibleObjectTitleInfoWrapper ??
|
|
32
|
+
components.ObjectFieldTitleInfoWrapper,
|
|
30
33
|
Icon: components.CollapsibleObjectFieldTemplateIcon ?? components.Icon,
|
|
31
34
|
Title: components.CollapsibleObjectFieldTemplateTitle ??
|
|
32
35
|
components.ObjectFieldTemplateTitle,
|
|
@@ -6,11 +6,12 @@ const react_1 = require("react");
|
|
|
6
6
|
const utils_1 = require("../../../utils");
|
|
7
7
|
const FormRegistry_1 = require("../../FormRegistry");
|
|
8
8
|
const FieldTemplate = (props) => {
|
|
9
|
-
const { components: { FieldWrapper, FieldTitle, FieldDescription, ErrorMessage, FieldHelp, RequiredIndicator, FieldInfo, }, } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
|
|
9
|
+
const { components: { FieldWrapper, FieldTitleInfoWrapper, FieldTitle, FieldDescription, ErrorMessage, FieldHelp, RequiredIndicator, FieldInfo, }, } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
|
|
10
10
|
const { name, uiSchema, children, ...otherProps } = props;
|
|
11
11
|
const title = (0, utils_1.getTitle)(props);
|
|
12
12
|
const description = (0, utils_1.getDescription)(props);
|
|
13
|
-
const { help, info, props: { wrapper: wrapperProps = {}, title: titleProps, description: descriptionProps, help: helpProps, error: errorProps, } = {}, } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
|
|
13
|
+
const { help, info, disabled, props: { wrapper: wrapperProps = {}, title: titleProps, description: descriptionProps, help: helpProps, error: errorProps, disabled: isDisabled, } = {}, } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
|
|
14
|
+
const isReadOnly = props.schema?.readOnly;
|
|
14
15
|
const dataAttributes = Object.keys(otherProps)
|
|
15
16
|
.filter((key) => key.startsWith("data-"))
|
|
16
17
|
.reduce((acc, key) => {
|
|
@@ -22,6 +23,6 @@ const FieldTemplate = (props) => {
|
|
|
22
23
|
...wrapperProps,
|
|
23
24
|
...dataAttributes, // This will only include data-* attributes
|
|
24
25
|
};
|
|
25
|
-
return ((0, jsx_runtime_1.jsxs)(FieldWrapper, { ...mergedWrapperProps, children: [title && ((0, jsx_runtime_1.jsxs)(FieldTitle, { ...titleProps, htmlFor: name, children: [title, props.required && (0, jsx_runtime_1.jsx)(RequiredIndicator, {})] })), info && (0, jsx_runtime_1.jsx)(FieldInfo, { ...info }), description && ((0, jsx_runtime_1.jsx)(FieldDescription, { ...descriptionProps, children: description })), children, help && (0, jsx_runtime_1.jsx)(FieldHelp, { ...helpProps, children: help }), (0, jsx_runtime_1.jsx)(ErrorMessage, { ...errorProps, name: name })] }));
|
|
26
|
+
return ((0, jsx_runtime_1.jsxs)(FieldWrapper, { ...mergedWrapperProps, "$isDisabled": isDisabled, children: [(0, jsx_runtime_1.jsxs)(FieldTitleInfoWrapper, { children: [title && ((0, jsx_runtime_1.jsxs)(FieldTitle, { ...titleProps, htmlFor: name, children: [title, props.required && (0, jsx_runtime_1.jsx)(RequiredIndicator, {})] })), info && (0, jsx_runtime_1.jsx)(FieldInfo, { ...info })] }), description && ((0, jsx_runtime_1.jsx)(FieldDescription, { ...descriptionProps, children: description })), children, help && (0, jsx_runtime_1.jsx)(FieldHelp, { ...helpProps, children: help }), (0, jsx_runtime_1.jsx)(ErrorMessage, { ...errorProps, name: name })] }));
|
|
26
27
|
};
|
|
27
28
|
exports.FieldTemplate = FieldTemplate;
|
|
@@ -8,7 +8,7 @@ const FormRegistry_1 = require("../../FormRegistry");
|
|
|
8
8
|
const styledComponents_1 = require("./styledComponents");
|
|
9
9
|
const ObjectFieldTemplate = (props) => {
|
|
10
10
|
const { components } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
|
|
11
|
-
const { Wrapper, Title, Description, Help, Info, RequiredIndicator, ErrorMessage, } = (0, styledComponents_1.getComponents)(components);
|
|
11
|
+
const { Wrapper, Title, TitleInfoWrapper, Description, Help, Info, RequiredIndicator, ErrorMessage, } = (0, styledComponents_1.getComponents)(components);
|
|
12
12
|
const { children, uiSchema, ...otherProps } = props;
|
|
13
13
|
const title = (0, utils_1.getTitle)(props);
|
|
14
14
|
const description = (0, utils_1.getDescription)(props);
|
|
@@ -27,6 +27,6 @@ const ObjectFieldTemplate = (props) => {
|
|
|
27
27
|
...wrapperProps,
|
|
28
28
|
...dataAttributes,
|
|
29
29
|
};
|
|
30
|
-
return ((0, jsx_runtime_1.jsxs)(Wrapper, { ...mergedWrapperProps, children: [title && ((0, jsx_runtime_1.jsxs)(Title, { ...titleProps, children: [title, props?.required && (0, jsx_runtime_1.jsx)(RequiredIndicator, {})] })), info && (0, jsx_runtime_1.jsx)(Info, { ...info }), description && ((0, jsx_runtime_1.jsx)(Description, { ...descriptionProps, children: description })), children, help && (0, jsx_runtime_1.jsx)(Help, { ...helpProps, children: help })] }));
|
|
30
|
+
return ((0, jsx_runtime_1.jsxs)(Wrapper, { ...mergedWrapperProps, children: [(0, jsx_runtime_1.jsxs)(TitleInfoWrapper, { children: [title && ((0, jsx_runtime_1.jsxs)(Title, { ...titleProps, children: [title, props?.required && (0, jsx_runtime_1.jsx)(RequiredIndicator, {})] })), info && (0, jsx_runtime_1.jsx)(Info, { ...info })] }), description && ((0, jsx_runtime_1.jsx)(Description, { ...descriptionProps, children: description })), children, help && (0, jsx_runtime_1.jsx)(Help, { ...helpProps, children: help })] }));
|
|
31
31
|
};
|
|
32
32
|
exports.ObjectFieldTemplate = ObjectFieldTemplate;
|
|
@@ -1,19 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ObjectFieldTemplateErrorMessage = exports.ObjectFieldTemplateRequiredIndicator = exports.ObjectFieldTemplateInfo = exports.ObjectFieldTemplateHelp = exports.ObjectFieldTemplateDescription = exports.ObjectFieldTemplateTitle = exports.ObjectFieldTemplateWrapper = void 0;
|
|
3
|
+
exports.ObjectFieldTemplateErrorMessage = exports.ObjectFieldTemplateRequiredIndicator = exports.ObjectFieldTemplateInfo = exports.ObjectFieldTemplateHelp = exports.ObjectFieldTemplateDescription = exports.ObjectFieldTitleInfoWrapper = exports.ObjectFieldTemplateTitle = exports.ObjectFieldTemplateWrapper = void 0;
|
|
4
4
|
exports.getComponents = getComponents;
|
|
5
|
+
const polished_1 = require("polished");
|
|
5
6
|
const styled_components_1 = require("styled-components");
|
|
6
7
|
exports.ObjectFieldTemplateWrapper = styled_components_1.styled.fieldset `
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
7
10
|
color: ${(props) => props.theme.color.text.default};
|
|
8
11
|
font-family: ${(props) => props.theme.typography.fontFamily.base};
|
|
9
12
|
margin-inline: 0;
|
|
10
13
|
margin-bottom: ${(props) => props.theme.spacing.xs};
|
|
11
14
|
|
|
15
|
+
&:has(input[disabled]), &:has(option[disabled]), &:has(select[disabled]), &:has(textarea[disabled]) {
|
|
16
|
+
border-color: ${(props) => (0, polished_1.lighten)(0.4, props.theme.color.border.default)};
|
|
17
|
+
|
|
18
|
+
legend {
|
|
19
|
+
color: ${(props) => (0, polished_1.lighten)(0.4, props.theme.color.text.default)};
|
|
20
|
+
|
|
21
|
+
& + p {
|
|
22
|
+
color: ${(props) => (0, polished_1.lighten)(0.4, props.theme.color.text.default)};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
12
27
|
`;
|
|
13
28
|
exports.ObjectFieldTemplateTitle = styled_components_1.styled.legend `
|
|
14
29
|
color: ${(props) => props.theme.color.text.default};
|
|
15
30
|
font-family: ${(props) => props.theme.typography.fontFamily.base};
|
|
16
31
|
`;
|
|
32
|
+
exports.ObjectFieldTitleInfoWrapper = styled_components_1.styled.div `
|
|
33
|
+
display: flex;
|
|
34
|
+
flex-direction: row;
|
|
35
|
+
flex-wrap: wrap;
|
|
36
|
+
`;
|
|
17
37
|
exports.ObjectFieldTemplateDescription = undefined;
|
|
18
38
|
exports.ObjectFieldTemplateHelp = undefined;
|
|
19
39
|
exports.ObjectFieldTemplateInfo = undefined;
|
|
@@ -23,6 +43,7 @@ function getComponents(components) {
|
|
|
23
43
|
return {
|
|
24
44
|
Wrapper: components.ObjectFieldTemplateWrapper,
|
|
25
45
|
Title: components.ObjectFieldTemplateTitle,
|
|
46
|
+
TitleInfoWrapper: components.ObjectFieldTitleInfoWrapper,
|
|
26
47
|
Description: components.ObjectFieldTemplateDescription ?? components.FieldDescription,
|
|
27
48
|
Help: components.ObjectFieldTemplateHelp ?? components.FieldHelp,
|
|
28
49
|
Info: components.ObjectFieldTemplateInfo ?? components.FieldInfo,
|
|
@@ -14,7 +14,7 @@ const MultipleChoiceField = (props) => {
|
|
|
14
14
|
const { values } = (0, formik_1.useFormikContext)();
|
|
15
15
|
const value = (0, formik_1.getIn)(values, name);
|
|
16
16
|
const selected = (0, utils_1.getSelectedEnum)(value, enums);
|
|
17
|
-
const notSelected = enums?.values?.filter((v) => Array.isArray(value) && !value.includes(v));
|
|
17
|
+
const notSelected = enums?.values?.filter((v) => Array.isArray(value) && !value.includes(v.const));
|
|
18
18
|
const hideNotSelected = onlyShowSelected === true || selected === undefined;
|
|
19
19
|
const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
|
|
20
20
|
templates[props.uiSchema?.["ui:template"]]) ??
|