@react-fabric/form 1.0.0-beta.62 → 1.0.0-beta.63
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/css/_colorPicker.css +35 -5
- package/css/_file.css +2 -2
- package/dist/cjs/builder/FileField.js +6 -6
- package/dist/cjs/builder/SchemaEditor.js +1 -1
- package/dist/cjs/builder/components/SchemaArrayForm.js +1 -3
- package/dist/cjs/builder/components/SchemaField.js +1 -1
- package/dist/cjs/form/Controller.js +1 -1
- package/dist/cjs/form/Form.js +11 -35
- package/dist/cjs/form/useForm.js +32 -0
- package/dist/cjs/hooks/useFileUploader.js +5 -5
- package/dist/cjs/hooks/useFormBuilder.js +3 -3
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/input/ArrayInput.js +66 -19
- package/dist/cjs/input/AvatarInput.js +7 -7
- package/dist/cjs/input/Checkbox.js +1 -1
- package/dist/cjs/input/ColorInput.js +26 -19
- package/dist/cjs/input/ColorPicker.js +16 -9
- package/dist/cjs/input/DateInput.js +3 -3
- package/dist/cjs/input/Field.js +1 -1
- package/dist/cjs/input/File.js +1 -1
- package/dist/cjs/input/Hidden.js +1 -1
- package/dist/cjs/input/Input.js +1 -1
- package/dist/cjs/input/Number.js +1 -1
- package/dist/cjs/input/Password.js +1 -1
- package/dist/cjs/input/Radio.js +1 -1
- package/dist/cjs/input/RadioGroup.js +5 -3
- package/dist/cjs/input/RangeSlider.js +1 -1
- package/dist/cjs/input/Search.js +1 -1
- package/dist/cjs/input/Slider.js +1 -1
- package/dist/cjs/input/Switch.js +4 -4
- package/dist/cjs/input/Textarea.js +1 -1
- package/dist/cjs/internal/InputWrapper.js +2 -2
- package/dist/cjs/ranger/index.js +5 -5
- package/dist/cjs/select/AutoComplete.js +4 -2
- package/dist/cjs/select/DualList.js +2 -2
- package/dist/cjs/select/List.js +3 -2
- package/dist/cjs/select/Options.js +5 -4
- package/dist/cjs/select/Select.js +4 -2
- package/dist/cjs/select/useSelect.js +15 -13
- package/dist/esm/builder/FileField.js +6 -6
- package/dist/esm/builder/SchemaEditor.js +1 -1
- package/dist/esm/builder/components/SchemaArrayForm.js +1 -3
- package/dist/esm/builder/components/SchemaField.js +1 -1
- package/dist/esm/form/Controller.js +1 -1
- package/dist/esm/form/Form.js +14 -37
- package/dist/esm/form/useForm.js +32 -0
- package/dist/esm/hooks/useFileUploader.js +5 -5
- package/dist/esm/hooks/useFormBuilder.js +3 -3
- package/dist/esm/index.js +2 -1
- package/dist/esm/input/ArrayInput.js +66 -19
- package/dist/esm/input/AvatarInput.js +7 -7
- package/dist/esm/input/Checkbox.js +1 -1
- package/dist/esm/input/ColorInput.js +27 -20
- package/dist/esm/input/ColorPicker.js +17 -10
- package/dist/esm/input/DateInput.js +3 -3
- package/dist/esm/input/Field.js +1 -1
- package/dist/esm/input/File.js +1 -1
- package/dist/esm/input/Hidden.js +1 -1
- package/dist/esm/input/Input.js +1 -1
- package/dist/esm/input/Number.js +1 -1
- package/dist/esm/input/Password.js +1 -1
- package/dist/esm/input/Radio.js +1 -1
- package/dist/esm/input/RadioGroup.js +5 -3
- package/dist/esm/input/RangeSlider.js +1 -1
- package/dist/esm/input/Search.js +1 -1
- package/dist/esm/input/Slider.js +1 -1
- package/dist/esm/input/Switch.js +4 -4
- package/dist/esm/input/Textarea.js +1 -1
- package/dist/esm/internal/InputWrapper.js +2 -2
- package/dist/esm/ranger/index.js +5 -5
- package/dist/esm/select/AutoComplete.js +4 -2
- package/dist/esm/select/DualList.js +2 -2
- package/dist/esm/select/List.js +4 -3
- package/dist/esm/select/Options.js +5 -4
- package/dist/esm/select/Select.js +5 -3
- package/dist/esm/select/useSelect.js +15 -13
- package/dist/types/builder/SchemaEditor.d.ts +1 -1
- package/dist/types/form/Controller.d.ts +1 -1
- package/dist/types/form/Form.d.ts +1 -12
- package/dist/types/form/useForm.d.ts +11 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/input/ArrayInput.d.ts +5 -4
- package/dist/types/input/AvatarInput.d.ts +1 -1
- package/dist/types/input/Checkbox.d.ts +2 -2
- package/dist/types/input/ColorInput.d.ts +1 -1
- package/dist/types/input/ColorPicker.d.ts +5 -1
- package/dist/types/input/DateInput.d.ts +1 -1
- package/dist/types/input/Field.d.ts +1 -1
- package/dist/types/input/File.d.ts +1 -1
- package/dist/types/input/Hidden.d.ts +1 -1
- package/dist/types/input/Input.d.ts +1 -1
- package/dist/types/input/Number.d.ts +1 -1
- package/dist/types/input/Password.d.ts +1 -1
- package/dist/types/input/Radio.d.ts +2 -2
- package/dist/types/input/RadioGroup.d.ts +3 -3
- package/dist/types/input/RangeSlider.d.ts +1 -1
- package/dist/types/input/Search.d.ts +1 -1
- package/dist/types/input/Slider.d.ts +1 -1
- package/dist/types/input/Switch.d.ts +2 -2
- package/dist/types/input/Textarea.d.ts +1 -1
- package/dist/types/select/AutoComplete.d.ts +1 -1
- package/dist/types/select/DualList.d.ts +1 -1
- package/dist/types/select/List.d.ts +1 -1
- package/dist/types/select/Select.d.ts +1 -1
- package/dist/types/types/index.d.ts +3 -3
- package/dist/types/types/schema.d.ts +1 -1
- package/package.json +14 -14
- package/src/builder/SchemaEditor.tsx +2 -2
- package/src/builder/components/SchemaArrayForm.tsx +0 -2
- package/src/builder/components/SchemaField.tsx +1 -1
- package/src/form/Controller.tsx +1 -1
- package/src/form/Form.tsx +1 -30
- package/src/form/useForm.ts +44 -0
- package/src/index.ts +3 -7
- package/src/input/ArrayInput.tsx +20 -10
- package/src/input/AvatarInput.tsx +1 -1
- package/src/input/Checkbox.tsx +2 -2
- package/src/input/ColorInput.tsx +29 -45
- package/src/input/ColorPicker.tsx +42 -49
- package/src/input/DateInput.tsx +3 -3
- package/src/input/Field.tsx +2 -2
- package/src/input/File.tsx +1 -1
- package/src/input/Hidden.tsx +1 -3
- package/src/input/Input.tsx +1 -1
- package/src/input/Number.tsx +1 -1
- package/src/input/Password.tsx +1 -1
- package/src/input/Radio.tsx +2 -2
- package/src/input/RadioGroup.tsx +5 -3
- package/src/input/RangeSlider.tsx +1 -1
- package/src/input/Search.tsx +1 -1
- package/src/input/Slider.tsx +1 -1
- package/src/input/Switch.tsx +6 -6
- package/src/input/Textarea.tsx +1 -1
- package/src/internal/InputWrapper.tsx +1 -2
- package/src/select/AutoComplete.tsx +13 -52
- package/src/select/DualList.tsx +2 -2
- package/src/select/List.tsx +29 -67
- package/src/select/Options.tsx +4 -3
- package/src/select/Select.tsx +18 -40
- package/src/select/useSelect.tsx +24 -69
- package/src/types/index.ts +3 -3
- package/src/types/schema.ts +1 -1
package/css/_colorPicker.css
CHANGED
|
@@ -22,18 +22,48 @@
|
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
@layer components {
|
|
25
|
+
.fabric-colorPicker-container ~ svg {
|
|
26
|
+
fill: var(--color-selected);
|
|
27
|
+
}
|
|
28
|
+
|
|
25
29
|
.fabric-colorPicker {
|
|
26
|
-
--color-shadow: var(--border-color-
|
|
30
|
+
--color-shadow: var(--border-color-bright);
|
|
31
|
+
|
|
32
|
+
outline: 2px solid var(--color-selected, var(--border-color-soft)) !important;
|
|
33
|
+
|
|
34
|
+
&.block-picker {
|
|
35
|
+
background-color: var(--bg-color-content) !important;
|
|
36
|
+
box-shadow: 0 0 4px 0 var(--color-shadow) !important;
|
|
37
|
+
|
|
38
|
+
input {
|
|
39
|
+
display: none;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
& > div:first-child {
|
|
43
|
+
display: none;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
& > div:last-child > div:first-child {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-wrap: wrap;
|
|
49
|
+
gap: 5px;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
& span > div {
|
|
53
|
+
margin: 0 !important;
|
|
54
|
+
box-shadow: 0 0 1px 1px var(--border-color-base) inset !important;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
27
57
|
|
|
28
58
|
& input {
|
|
29
59
|
padding: 0 4px !important;
|
|
60
|
+
border: 1px solid var(--border-color-base);
|
|
61
|
+
border-radius: var(--rounded-sm);
|
|
30
62
|
|
|
31
63
|
line-height: 2;
|
|
32
64
|
color: var(--text-color-base);
|
|
33
65
|
|
|
34
|
-
background-color: var(--bg-color-
|
|
35
|
-
border: 1px solid var(--border-color-base);
|
|
36
|
-
border-radius: var(--rounded-sm);
|
|
66
|
+
background-color: var(--bg-color-content);
|
|
37
67
|
box-shadow: none;
|
|
38
68
|
|
|
39
69
|
&:focus {
|
|
@@ -47,7 +77,7 @@
|
|
|
47
77
|
|
|
48
78
|
& .flexbox-fix {
|
|
49
79
|
justify-content: center;
|
|
50
|
-
border-color: var(--border-color-
|
|
80
|
+
border-color: var(--border-color-soft);
|
|
51
81
|
|
|
52
82
|
& > div > div {
|
|
53
83
|
text-align: center;
|
package/css/_file.css
CHANGED
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
|
|
29
29
|
padding-block: 0;
|
|
30
30
|
padding-inline: 4px;
|
|
31
|
+
border: 0;
|
|
32
|
+
border-radius: var(--rounded);
|
|
31
33
|
|
|
32
34
|
color: var(--color-white);
|
|
33
35
|
|
|
34
36
|
opacity: 0.8;
|
|
35
37
|
background-color: var(--color-primary-500);
|
|
36
|
-
border: 0;
|
|
37
|
-
border-radius: var(--rounded);
|
|
38
38
|
|
|
39
39
|
&:hover {
|
|
40
40
|
opacity: 0.9;
|
|
@@ -31,16 +31,16 @@ var FileField = function FileField(_ref) {
|
|
|
31
31
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
32
32
|
var _useTranslation = reactI18next.useTranslation(),
|
|
33
33
|
t = _useTranslation.t;
|
|
34
|
-
var _useFileUploader = useFileUploader.useFileUploader(
|
|
35
|
-
var _ref2 = _asyncToGenerator(
|
|
36
|
-
return _regeneratorRuntime.wrap(function
|
|
34
|
+
var _useFileUploader = useFileUploader.useFileUploader(/*#__PURE__*/function () {
|
|
35
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(data, config) {
|
|
36
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
37
37
|
while (1) switch (_context.prev = _context.next) {
|
|
38
38
|
case 0:
|
|
39
|
-
_context.next =
|
|
39
|
+
_context.next = 1;
|
|
40
40
|
return uploadHandler === null || uploadHandler === void 0 ? void 0 : uploadHandler(data, config);
|
|
41
|
-
case
|
|
41
|
+
case 1:
|
|
42
42
|
return _context.abrupt("return", _context.sent);
|
|
43
|
-
case
|
|
43
|
+
case 2:
|
|
44
44
|
case "end":
|
|
45
45
|
return _context.stop();
|
|
46
46
|
}
|
|
@@ -63,7 +63,7 @@ var SchemaEditor = function SchemaEditor(_ref) {
|
|
|
63
63
|
acceptableTypes: acceptableTypes !== null && acceptableTypes !== void 0 ? acceptableTypes : Object.values(schema.DATA_TYPES)
|
|
64
64
|
}), children && /*#__PURE__*/jsxRuntime.jsx(core.Footer, {
|
|
65
65
|
flex: true,
|
|
66
|
-
className: "border-t bg-
|
|
66
|
+
className: "border-t bg-default px-6 py-2",
|
|
67
67
|
children: children
|
|
68
68
|
})]
|
|
69
69
|
});
|
|
@@ -58,9 +58,7 @@ var SchemaArrayForm = function SchemaArrayForm(_ref) {
|
|
|
58
58
|
}
|
|
59
59
|
});
|
|
60
60
|
}, []);
|
|
61
|
-
var Wrapper = react.useCallback(
|
|
62
|
-
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
|
63
|
-
function (_ref2) {
|
|
61
|
+
var Wrapper = react.useCallback(function (_ref2) {
|
|
64
62
|
var children = _ref2.children;
|
|
65
63
|
if (dynamic) {
|
|
66
64
|
// pass id list to dnd context
|
|
@@ -104,7 +104,7 @@ var SchemaField = function SchemaField(_ref) {
|
|
|
104
104
|
}), /*#__PURE__*/jsxRuntime.jsx(core.Footer, {
|
|
105
105
|
flex: true,
|
|
106
106
|
justify: "end",
|
|
107
|
-
className: "sticky bottom-0 border-t bg-
|
|
107
|
+
className: "sticky bottom-0 border-t bg-default px-6 py-2",
|
|
108
108
|
children: /*#__PURE__*/jsxRuntime.jsx(core.Button, {
|
|
109
109
|
variant: "link",
|
|
110
110
|
onClick: props.onClose,
|
|
@@ -36,7 +36,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
36
36
|
* to the child component, allowing for proper focus management and DOM access.
|
|
37
37
|
*
|
|
38
38
|
* @param {ControllerProps} props - The properties for the Controller component.
|
|
39
|
-
* @returns {
|
|
39
|
+
* @returns {React.ReactElement} The rendered Controller component.
|
|
40
40
|
*
|
|
41
41
|
* @example
|
|
42
42
|
* ```jsx
|
package/dist/cjs/form/Form.js
CHANGED
|
@@ -24,7 +24,7 @@ var DEFAULT_SUBMIT = function DEFAULT_SUBMIT() {
|
|
|
24
24
|
* It supports nested form structures and allows for custom validation schemas using Yup.
|
|
25
25
|
*
|
|
26
26
|
* @param {FormProps<K>} props - The properties for the Form component.
|
|
27
|
-
* @returns {
|
|
27
|
+
* @returns {React.ReactElement} The rendered Form component.
|
|
28
28
|
*
|
|
29
29
|
* @example
|
|
30
30
|
* ```jsx
|
|
@@ -62,15 +62,15 @@ var Form = function Form(_ref) {
|
|
|
62
62
|
shouldFocusError: true,
|
|
63
63
|
resolver: resolver,
|
|
64
64
|
defaultValues: function () {
|
|
65
|
-
var _defaultValues2 = _asyncToGenerator(
|
|
66
|
-
return _regeneratorRuntime.wrap(function
|
|
65
|
+
var _defaultValues2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
66
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
67
67
|
while (1) switch (_context.prev = _context.next) {
|
|
68
68
|
case 0:
|
|
69
|
-
_context.next =
|
|
69
|
+
_context.next = 1;
|
|
70
70
|
return Promise.resolve(_defaultValues);
|
|
71
|
-
case
|
|
71
|
+
case 1:
|
|
72
72
|
return _context.abrupt("return", _context.sent);
|
|
73
|
-
case
|
|
73
|
+
case 2:
|
|
74
74
|
case "end":
|
|
75
75
|
return _context.stop();
|
|
76
76
|
}
|
|
@@ -121,15 +121,15 @@ var Form = function Form(_ref) {
|
|
|
121
121
|
return form.handleSubmit(_onSubmit);
|
|
122
122
|
},
|
|
123
123
|
validate: function () {
|
|
124
|
-
var _validate = _asyncToGenerator(
|
|
125
|
-
return _regeneratorRuntime.wrap(function
|
|
124
|
+
var _validate = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(fields) {
|
|
125
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
126
126
|
while (1) switch (_context2.prev = _context2.next) {
|
|
127
127
|
case 0:
|
|
128
|
-
_context2.next =
|
|
128
|
+
_context2.next = 1;
|
|
129
129
|
return form.trigger(fields);
|
|
130
|
-
case
|
|
130
|
+
case 1:
|
|
131
131
|
return _context2.abrupt("return", _context2.sent);
|
|
132
|
-
case
|
|
132
|
+
case 2:
|
|
133
133
|
case "end":
|
|
134
134
|
return _context2.stop();
|
|
135
135
|
}
|
|
@@ -187,29 +187,5 @@ var Form = function Form(_ref) {
|
|
|
187
187
|
}))
|
|
188
188
|
}));
|
|
189
189
|
};
|
|
190
|
-
var useForm = function useForm() {
|
|
191
|
-
var _useFormContext = reactHookForm.useFormContext(),
|
|
192
|
-
formState = _useFormContext.formState,
|
|
193
|
-
getValues = _useFormContext.getValues,
|
|
194
|
-
setValue = _useFormContext.setValue,
|
|
195
|
-
watch = _useFormContext.watch,
|
|
196
|
-
reset = _useFormContext.reset,
|
|
197
|
-
resetField = _useFormContext.resetField,
|
|
198
|
-
setError = _useFormContext.setError,
|
|
199
|
-
setFocus = _useFormContext.setFocus;
|
|
200
|
-
var values = reactHookForm.useWatch();
|
|
201
|
-
return {
|
|
202
|
-
values: _objectSpread(_objectSpread({}, values), getValues()),
|
|
203
|
-
formState: formState,
|
|
204
|
-
getValues: getValues,
|
|
205
|
-
setValue: setValue,
|
|
206
|
-
watch: watch,
|
|
207
|
-
reset: reset,
|
|
208
|
-
resetField: resetField,
|
|
209
|
-
setError: setError,
|
|
210
|
-
setFocus: setFocus
|
|
211
|
-
};
|
|
212
|
-
};
|
|
213
190
|
|
|
214
191
|
exports.Form = Form;
|
|
215
|
-
exports.useForm = useForm;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
+
var reactHookForm = require('react-hook-form');
|
|
5
|
+
|
|
6
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
|
+
var useForm = function useForm() {
|
|
9
|
+
var _useFormContext = reactHookForm.useFormContext(),
|
|
10
|
+
formState = _useFormContext.formState,
|
|
11
|
+
getValues = _useFormContext.getValues,
|
|
12
|
+
setValue = _useFormContext.setValue,
|
|
13
|
+
watch = _useFormContext.watch,
|
|
14
|
+
reset = _useFormContext.reset,
|
|
15
|
+
resetField = _useFormContext.resetField,
|
|
16
|
+
setError = _useFormContext.setError,
|
|
17
|
+
setFocus = _useFormContext.setFocus;
|
|
18
|
+
var values = reactHookForm.useWatch();
|
|
19
|
+
return {
|
|
20
|
+
values: _objectSpread(_objectSpread({}, values), getValues()),
|
|
21
|
+
formState: formState,
|
|
22
|
+
getValues: getValues,
|
|
23
|
+
setValue: setValue,
|
|
24
|
+
watch: watch,
|
|
25
|
+
reset: reset,
|
|
26
|
+
resetField: resetField,
|
|
27
|
+
setError: setError,
|
|
28
|
+
setFocus: setFocus
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
exports.useForm = useForm;
|
|
@@ -136,10 +136,10 @@ var useFileUploader = function useFileUploader(uploader, initialList) {
|
|
|
136
136
|
initialList: initialList
|
|
137
137
|
});
|
|
138
138
|
}, [initialList]);
|
|
139
|
-
var doUpload = react.useCallback(
|
|
140
|
-
var _ref2 = _asyncToGenerator(
|
|
139
|
+
var doUpload = react.useCallback(/*#__PURE__*/function () {
|
|
140
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(key, file) {
|
|
141
141
|
var data, _abort2;
|
|
142
|
-
return _regeneratorRuntime.wrap(function
|
|
142
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
143
143
|
while (1) switch (_context.prev = _context.next) {
|
|
144
144
|
case 0:
|
|
145
145
|
data = new FormData();
|
|
@@ -160,7 +160,7 @@ var useFileUploader = function useFileUploader(uploader, initialList) {
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
});
|
|
163
|
-
_context.next =
|
|
163
|
+
_context.next = 1;
|
|
164
164
|
return uploader(data, {
|
|
165
165
|
signal: _abort2.signal,
|
|
166
166
|
onUploadProgress: function onUploadProgress(progressEvent) {
|
|
@@ -191,7 +191,7 @@ var useFileUploader = function useFileUploader(uploader, initialList) {
|
|
|
191
191
|
error: (_error$message = error === null || error === void 0 ? void 0 : error.message) !== null && _error$message !== void 0 ? _error$message : "form:fileUploadFailed"
|
|
192
192
|
});
|
|
193
193
|
});
|
|
194
|
-
case
|
|
194
|
+
case 1:
|
|
195
195
|
case "end":
|
|
196
196
|
return _context.stop();
|
|
197
197
|
}
|
|
@@ -11,11 +11,11 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
11
11
|
|
|
12
12
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
13
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
-
var
|
|
14
|
+
var _makeYupField = function makeYupField(field) {
|
|
15
15
|
var yupField = utilities.yup.string().trim();
|
|
16
16
|
if (field.datatype === schema.DATA_TYPES.SCHEMA) {
|
|
17
17
|
var child = Object.fromEntries(field.schema.map(function (field) {
|
|
18
|
-
return [field.id,
|
|
18
|
+
return [field.id, _makeYupField(field)];
|
|
19
19
|
}));
|
|
20
20
|
yupField = utilities.yup.object(child);
|
|
21
21
|
}
|
|
@@ -103,7 +103,7 @@ var useFormBuilder = function useFormBuilder(schema$1) {
|
|
|
103
103
|
}, [schema$1]);
|
|
104
104
|
var schemaDef = react.useMemo(function () {
|
|
105
105
|
return utilities.yup.object(Object.fromEntries(filteredSchema.map(function (field) {
|
|
106
|
-
return [field.id,
|
|
106
|
+
return [field.id, _makeYupField(field)];
|
|
107
107
|
})));
|
|
108
108
|
}, [filteredSchema]);
|
|
109
109
|
var resolver = react.useMemo(function () {
|
package/dist/cjs/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
require('./i18n/index.js');
|
|
4
4
|
var Controller = require('./form/Controller.js');
|
|
5
5
|
var Form = require('./form/Form.js');
|
|
6
|
+
var useForm = require('./form/useForm.js');
|
|
6
7
|
var SchemaEditor = require('./builder/SchemaEditor.js');
|
|
7
8
|
var useFileUploader = require('./hooks/useFileUploader.js');
|
|
8
9
|
var useFormBuilder = require('./hooks/useFormBuilder.js');
|
|
@@ -35,7 +36,7 @@ var Select = require('./select/Select.js');
|
|
|
35
36
|
|
|
36
37
|
exports.Controller = Controller.Controller;
|
|
37
38
|
exports.Form = Form.Form;
|
|
38
|
-
exports.useForm =
|
|
39
|
+
exports.useForm = useForm.useForm;
|
|
39
40
|
exports.SchemaEditor = SchemaEditor.SchemaEditor;
|
|
40
41
|
exports.useFileUploader = useFileUploader.useFileUploader;
|
|
41
42
|
exports.useFormBuilder = useFormBuilder.useFormBuilder;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
+
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
|
|
4
5
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
6
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
7
|
+
var _regeneratorRuntime = require('@babel/runtime/regenerator');
|
|
6
8
|
var core = require('@dnd-kit/core');
|
|
7
9
|
var sortable = require('@dnd-kit/sortable');
|
|
8
10
|
var core$1 = require('@react-fabric/core');
|
|
@@ -31,7 +33,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
31
33
|
* It also supports drag-and-drop sorting using `@dnd-kit/core` and `@dnd-kit/sortable` for a better user experience when reordering items.
|
|
32
34
|
*
|
|
33
35
|
* @param {ArrayInputProps<T>} props - The properties for the ArrayInput component.
|
|
34
|
-
* @returns {
|
|
36
|
+
* @returns {React.ReactElement} The rendered ArrayInput component.
|
|
35
37
|
*
|
|
36
38
|
* @example
|
|
37
39
|
* ```jsx
|
|
@@ -121,13 +123,36 @@ var ArrayInput = function ArrayInput(_ref) {
|
|
|
121
123
|
}
|
|
122
124
|
return true;
|
|
123
125
|
}, [canRemove, initialList, fields]);
|
|
124
|
-
var handleAdd = react.useCallback(function (
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
126
|
+
var handleAdd = react.useCallback(/*#__PURE__*/function () {
|
|
127
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(item) {
|
|
128
|
+
var _t;
|
|
129
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
130
|
+
while (1) switch (_context.prev = _context.next) {
|
|
131
|
+
case 0:
|
|
132
|
+
if (item) {
|
|
133
|
+
_context.next = 1;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
return _context.abrupt("return");
|
|
137
|
+
case 1:
|
|
138
|
+
_t = append;
|
|
139
|
+
_context.next = 2;
|
|
140
|
+
return item;
|
|
141
|
+
case 2:
|
|
142
|
+
_t(_context.sent);
|
|
143
|
+
setTimeout(function () {
|
|
144
|
+
form.setFocus("".concat(name, ".").concat(fields.length).concat(focusName ? "." + focusName : ""));
|
|
145
|
+
}, 100);
|
|
146
|
+
case 3:
|
|
147
|
+
case "end":
|
|
148
|
+
return _context.stop();
|
|
149
|
+
}
|
|
150
|
+
}, _callee);
|
|
151
|
+
}));
|
|
152
|
+
return function (_x) {
|
|
153
|
+
return _ref2.apply(this, arguments);
|
|
154
|
+
};
|
|
155
|
+
}(), [name, fields, focusName]);
|
|
131
156
|
var handleRemove = react.useCallback(function (item, index) {
|
|
132
157
|
var ret = onBeforeRemove === null || onBeforeRemove === void 0 ? void 0 : onBeforeRemove(item, index);
|
|
133
158
|
void Promise.resolve(ret).then(function (b) {
|
|
@@ -139,14 +164,14 @@ var ArrayInput = function ArrayInput(_ref) {
|
|
|
139
164
|
}, [remove, onRemove, onBeforeRemove]);
|
|
140
165
|
react.useImperativeHandle(arrayRef, function () {
|
|
141
166
|
return {
|
|
142
|
-
addItem:
|
|
167
|
+
addItem: function addItem(t) {
|
|
168
|
+
return handleAdd(Promise.resolve(t));
|
|
169
|
+
},
|
|
143
170
|
removeItem: remove
|
|
144
171
|
};
|
|
145
172
|
});
|
|
146
|
-
var Wrapper = react.useCallback(
|
|
147
|
-
|
|
148
|
-
function (_ref2) {
|
|
149
|
-
var children = _ref2.children;
|
|
173
|
+
var Wrapper = react.useCallback(function (_ref3) {
|
|
174
|
+
var children = _ref3.children;
|
|
150
175
|
if (enableSorting) {
|
|
151
176
|
// pass id list to dnd context
|
|
152
177
|
var idMap = fields.map(function (item) {
|
|
@@ -173,10 +198,10 @@ var ArrayInput = function ArrayInput(_ref) {
|
|
|
173
198
|
}, [enableSorting, fields]);
|
|
174
199
|
// @ts-expect-error ignore
|
|
175
200
|
Wrapper.displayName = "SortableWrapper";
|
|
176
|
-
var SortableItem = react.useCallback(function (
|
|
177
|
-
var id =
|
|
178
|
-
children =
|
|
179
|
-
className =
|
|
201
|
+
var SortableItem = react.useCallback(function (_ref4) {
|
|
202
|
+
var id = _ref4.id,
|
|
203
|
+
children = _ref4.children,
|
|
204
|
+
className = _ref4.className;
|
|
180
205
|
if (enableSorting) {
|
|
181
206
|
var _useSortable = sortable.useSortable({
|
|
182
207
|
id: id
|
|
@@ -221,7 +246,7 @@ var ArrayInput = function ArrayInput(_ref) {
|
|
|
221
246
|
"aria-label": "Add item",
|
|
222
247
|
icon: "icon-[mdi--plus-circle-outline]",
|
|
223
248
|
onClick: function onClick() {
|
|
224
|
-
return handleAdd(onAdd === null || onAdd === void 0 ? void 0 : onAdd());
|
|
249
|
+
return handleAdd(Promise.resolve(onAdd === null || onAdd === void 0 ? void 0 : onAdd()));
|
|
225
250
|
},
|
|
226
251
|
"data-invalid": !!error,
|
|
227
252
|
disabled: !!disabled || readOnly || fields.length > maxItems,
|
|
@@ -246,7 +271,29 @@ var ArrayInput = function ArrayInput(_ref) {
|
|
|
246
271
|
children: [typeof children === "function" ? children({
|
|
247
272
|
index: index,
|
|
248
273
|
item: item,
|
|
249
|
-
name: "".concat(name, ".").concat(index)
|
|
274
|
+
name: "".concat(name, ".").concat(index),
|
|
275
|
+
onChange: function () {
|
|
276
|
+
var _onChange = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(val) {
|
|
277
|
+
var result;
|
|
278
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
279
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
280
|
+
case 0:
|
|
281
|
+
_context2.next = 1;
|
|
282
|
+
return Promise.resolve(val);
|
|
283
|
+
case 1:
|
|
284
|
+
result = _context2.sent;
|
|
285
|
+
result && form.setValue("".concat(name, ".").concat(index), result);
|
|
286
|
+
case 2:
|
|
287
|
+
case "end":
|
|
288
|
+
return _context2.stop();
|
|
289
|
+
}
|
|
290
|
+
}, _callee2);
|
|
291
|
+
}));
|
|
292
|
+
function onChange(_x2) {
|
|
293
|
+
return _onChange.apply(this, arguments);
|
|
294
|
+
}
|
|
295
|
+
return onChange;
|
|
296
|
+
}()
|
|
250
297
|
}) : core$1.cloneChildren(children, function (child) {
|
|
251
298
|
return /*#__PURE__*/react.cloneElement(child, Object.assign({
|
|
252
299
|
disabled: disabled,
|
|
@@ -21,7 +21,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
21
21
|
* It also provides a way to remove the uploaded file and shows upload progress.
|
|
22
22
|
*
|
|
23
23
|
* @param {Props} props - The properties for the AvatarInput component.
|
|
24
|
-
* @returns {
|
|
24
|
+
* @returns {React.ReactElement} - The rendered AvatarInput component.
|
|
25
25
|
*/
|
|
26
26
|
var AvatarInput = function AvatarInput(_ref) {
|
|
27
27
|
var _files$2;
|
|
@@ -38,16 +38,16 @@ var AvatarInput = function AvatarInput(_ref) {
|
|
|
38
38
|
uploadHandler = _ref.uploadHandler,
|
|
39
39
|
_onChange = _ref.onChange,
|
|
40
40
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
41
|
-
var _useFileUploader = useFileUploader.useFileUploader(
|
|
42
|
-
var _ref2 = _asyncToGenerator(
|
|
43
|
-
return _regeneratorRuntime.wrap(function
|
|
41
|
+
var _useFileUploader = useFileUploader.useFileUploader(/*#__PURE__*/function () {
|
|
42
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(data, config) {
|
|
43
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
44
44
|
while (1) switch (_context.prev = _context.next) {
|
|
45
45
|
case 0:
|
|
46
|
-
_context.next =
|
|
46
|
+
_context.next = 1;
|
|
47
47
|
return uploadHandler === null || uploadHandler === void 0 ? void 0 : uploadHandler(data, config);
|
|
48
|
-
case
|
|
48
|
+
case 1:
|
|
49
49
|
return _context.abrupt("return", _context.sent);
|
|
50
|
-
case
|
|
50
|
+
case 2:
|
|
51
51
|
case "end":
|
|
52
52
|
return _context.stop();
|
|
53
53
|
}
|
|
@@ -19,7 +19,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
19
19
|
* It also provides an error icon to indicate validation errors.
|
|
20
20
|
*
|
|
21
21
|
* @param {CheckboxProps} props - The properties for the Checkbox component.
|
|
22
|
-
* @returns {
|
|
22
|
+
* @returns {React.ReactElement} The rendered Checkbox component.
|
|
23
23
|
*/
|
|
24
24
|
var Checkbox = function Checkbox(_ref) {
|
|
25
25
|
var ref = _ref.ref,
|
|
@@ -24,7 +24,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
24
24
|
* and handling the color selection state.
|
|
25
25
|
*
|
|
26
26
|
* @param {ColorInputProps} props - The properties for the ColorInput component.
|
|
27
|
-
* @returns {
|
|
27
|
+
* @returns {React.ReactElement} - The rendered ColorInput component.
|
|
28
28
|
*/
|
|
29
29
|
var ColorInput = function ColorInput(_ref) {
|
|
30
30
|
_ref.ref;
|
|
@@ -123,24 +123,31 @@ var ColorInput = function ColorInput(_ref) {
|
|
|
123
123
|
icon: "icon-[mdi--palette]"
|
|
124
124
|
})
|
|
125
125
|
})
|
|
126
|
-
})), isOpen && /*#__PURE__*/jsxRuntime.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
126
|
+
})), isOpen && /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingFocusManager, {
|
|
127
|
+
context: context,
|
|
128
|
+
closeOnFocusOut: true,
|
|
129
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
|
|
130
|
+
ref: refs.setFloating,
|
|
131
|
+
style: _objectSpread({
|
|
132
|
+
zIndex: "var(--z-popover)"
|
|
133
|
+
}, floatingStyles),
|
|
134
|
+
"data-ref": "dropdownBody"
|
|
135
|
+
}, getFloatingProps()), {}, {
|
|
136
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(ColorPicker.ColorPicker, _objectSpread(_objectSpread({}, rest), {}, {
|
|
137
|
+
onChange: handleChange,
|
|
138
|
+
defaultColor: defaultColor,
|
|
139
|
+
value: actualValue
|
|
140
|
+
})), /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingArrow, {
|
|
141
|
+
ref: arrowRef,
|
|
142
|
+
context: context,
|
|
143
|
+
strokeWidth: 0.5,
|
|
144
|
+
className: "stroke-muted",
|
|
145
|
+
style: {
|
|
146
|
+
fill: actualValue || "var(--bg-color-base)"
|
|
147
|
+
}
|
|
148
|
+
})]
|
|
149
|
+
}))
|
|
150
|
+
}), !disabled && showPicker && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
144
151
|
className: "flex-content p-1",
|
|
145
152
|
icon: "icon-[mdi--eyedropper]",
|
|
146
153
|
onClick: function onClick() {
|