@react-fabric/form 1.0.0-beta.61 → 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 +14 -11
- package/dist/cjs/builder/SchemaEditor.js +1 -1
- package/dist/cjs/builder/components/SchemaArrayForm.js +2 -4
- package/dist/cjs/builder/components/SchemaField.js +3 -3
- package/dist/cjs/form/Controller.js +1 -1
- package/dist/cjs/form/Form.js +42 -41
- package/dist/cjs/form/useForm.js +32 -0
- package/dist/cjs/hooks/useFileUploader.js +44 -32
- package/dist/cjs/hooks/useFormBuilder.js +3 -3
- package/dist/cjs/i18n/index.js +4 -4
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/input/ArrayInput.js +66 -19
- package/dist/cjs/input/AvatarInput.js +21 -16
- 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 +2 -11
- 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 +7 -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 +3 -3
- package/dist/cjs/select/List.js +7 -4
- package/dist/cjs/select/Options.js +5 -4
- package/dist/cjs/select/Select.js +5 -3
- package/dist/cjs/select/useSelect.js +15 -13
- package/dist/esm/builder/FileField.js +14 -11
- package/dist/esm/builder/SchemaEditor.js +1 -1
- package/dist/esm/builder/components/SchemaArrayForm.js +2 -4
- package/dist/esm/builder/components/SchemaField.js +3 -3
- package/dist/esm/form/Controller.js +1 -1
- package/dist/esm/form/Form.js +45 -43
- package/dist/esm/form/useForm.js +32 -0
- package/dist/esm/hooks/useFileUploader.js +45 -33
- package/dist/esm/hooks/useFormBuilder.js +3 -3
- package/dist/esm/i18n/index.js +2 -2
- package/dist/esm/index.js +2 -1
- package/dist/esm/input/ArrayInput.js +66 -19
- package/dist/esm/input/AvatarInput.js +21 -16
- 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 +3 -12
- 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 +7 -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 +3 -3
- package/dist/esm/select/List.js +8 -5
- package/dist/esm/select/Options.js +5 -4
- package/dist/esm/select/Select.js +6 -4
- package/dist/esm/select/useSelect.js +15 -13
- package/dist/types/builder/FileField.d.ts +2 -1
- 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 +7 -14
- package/dist/types/form/useForm.d.ts +11 -0
- package/dist/types/hooks/useFileUploader.d.ts +4 -2
- package/dist/types/index.d.ts +3 -2
- package/dist/types/input/ArrayInput.d.ts +5 -4
- package/dist/types/input/AvatarInput.d.ts +2 -2
- 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 +4 -12
- 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 +7 -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/FileField.tsx +5 -3
- package/src/builder/SchemaEditor.tsx +2 -2
- package/src/builder/components/SchemaArrayForm.tsx +1 -3
- package/src/builder/components/SchemaField.tsx +3 -3
- package/src/form/Controller.tsx +1 -1
- package/src/form/Form.tsx +21 -43
- package/src/form/useForm.ts +44 -0
- package/src/hooks/useFileUploader.ts +41 -29
- package/src/i18n/index.ts +2 -2
- package/src/index.ts +3 -7
- package/src/input/ArrayInput.tsx +20 -10
- package/src/input/AvatarInput.tsx +12 -12
- 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 +5 -25
- 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 +11 -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 +3 -3
- package/src/select/List.tsx +31 -69
- package/src/select/Options.tsx +4 -3
- package/src/select/Select.tsx +19 -41
- package/src/select/useSelect.tsx +24 -69
- package/src/types/index.ts +3 -3
- package/src/types/schema.ts +1 -1
- /package/dist/cjs/i18n/{ar.json.js → ar/form.json.js} +0 -0
- /package/dist/cjs/i18n/{en.json.js → en/form.json.js} +0 -0
- /package/dist/esm/i18n/{ar.json.js → ar/form.json.js} +0 -0
- /package/dist/esm/i18n/{en.json.js → en/form.json.js} +0 -0
- /package/src/i18n/{ar.json → ar/form.json} +0 -0
- /package/src/i18n/{en.json → en/form.json} +0 -0
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;
|
|
@@ -13,7 +13,7 @@ var Field = require('../input/Field.js');
|
|
|
13
13
|
var Hidden = require('../input/Hidden.js');
|
|
14
14
|
var jsxRuntime = require('react/jsx-runtime');
|
|
15
15
|
|
|
16
|
-
var _excluded = ["uploadHandler", "inline", "label", "accept", "value", "fileUrl", "multiple", "invalid", "error"];
|
|
16
|
+
var _excluded = ["uploadHandler", "inline", "label", "accept", "value", "fileUrl", "onChange", "multiple", "invalid", "error"];
|
|
17
17
|
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; }
|
|
18
18
|
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; }
|
|
19
19
|
var FileField = function FileField(_ref) {
|
|
@@ -24,22 +24,23 @@ var FileField = function FileField(_ref) {
|
|
|
24
24
|
accept = _ref.accept,
|
|
25
25
|
value = _ref.value;
|
|
26
26
|
_ref.fileUrl;
|
|
27
|
-
var
|
|
27
|
+
var onChange = _ref.onChange,
|
|
28
|
+
multiple = _ref.multiple;
|
|
28
29
|
_ref.invalid;
|
|
29
30
|
var error = _ref.error,
|
|
30
31
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
31
32
|
var _useTranslation = reactI18next.useTranslation(),
|
|
32
33
|
t = _useTranslation.t;
|
|
33
|
-
var _useFileUploader = useFileUploader.useFileUploader(
|
|
34
|
-
var _ref2 = _asyncToGenerator(
|
|
35
|
-
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) {
|
|
36
37
|
while (1) switch (_context.prev = _context.next) {
|
|
37
38
|
case 0:
|
|
38
|
-
_context.next =
|
|
39
|
+
_context.next = 1;
|
|
39
40
|
return uploadHandler === null || uploadHandler === void 0 ? void 0 : uploadHandler(data, config);
|
|
40
|
-
case
|
|
41
|
+
case 1:
|
|
41
42
|
return _context.abrupt("return", _context.sent);
|
|
42
|
-
case
|
|
43
|
+
case 2:
|
|
43
44
|
case "end":
|
|
44
45
|
return _context.stop();
|
|
45
46
|
}
|
|
@@ -48,10 +49,12 @@ var FileField = function FileField(_ref) {
|
|
|
48
49
|
return function (_x, _x2) {
|
|
49
50
|
return _ref2.apply(this, arguments);
|
|
50
51
|
};
|
|
51
|
-
}(), value,
|
|
52
|
+
}(), value, {
|
|
53
|
+
multiple: multiple,
|
|
54
|
+
onChange: onChange
|
|
55
|
+
}),
|
|
52
56
|
pending = _useFileUploader.pending,
|
|
53
57
|
files = _useFileUploader.files,
|
|
54
|
-
list = _useFileUploader.list,
|
|
55
58
|
upload = _useFileUploader.upload,
|
|
56
59
|
remove = _useFileUploader.remove;
|
|
57
60
|
return /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
|
|
@@ -60,7 +63,7 @@ var FileField = function FileField(_ref) {
|
|
|
60
63
|
inline: inline,
|
|
61
64
|
label: label,
|
|
62
65
|
children: /*#__PURE__*/jsxRuntime.jsx(Hidden.HiddenInput, _objectSpread({
|
|
63
|
-
|
|
66
|
+
value: multiple ? files : files === null || files === void 0 ? void 0 : files[0]
|
|
64
67
|
}, rest))
|
|
65
68
|
}), /*#__PURE__*/jsxRuntime.jsx(core.Tooltip, {
|
|
66
69
|
color: "danger-200",
|
|
@@ -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
|
|
@@ -138,7 +136,7 @@ var SchemaArrayForm = function SchemaArrayForm(_ref) {
|
|
|
138
136
|
acceptableTypes: acceptableTypes !== null && acceptableTypes !== void 0 ? acceptableTypes : Object.values(schema.DATA_TYPES)
|
|
139
137
|
}, index);
|
|
140
138
|
})
|
|
141
|
-
}), AddModal]
|
|
139
|
+
}), /*#__PURE__*/jsxRuntime.jsx(AddModal, {})]
|
|
142
140
|
});
|
|
143
141
|
};
|
|
144
142
|
|
|
@@ -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,
|
|
@@ -189,7 +189,7 @@ var SchemaField = function SchemaField(_ref) {
|
|
|
189
189
|
children: [/*#__PURE__*/jsxRuntime.jsx(Controller.Controller, {
|
|
190
190
|
name: "".concat(field, ".id"),
|
|
191
191
|
children: /*#__PURE__*/jsxRuntime.jsx(Hidden.HiddenInput, {
|
|
192
|
-
|
|
192
|
+
value: id
|
|
193
193
|
})
|
|
194
194
|
}), /*#__PURE__*/jsxRuntime.jsx(Controller.Controller, {
|
|
195
195
|
name: "".concat(field, ".datatype"),
|
|
@@ -250,7 +250,7 @@ var SchemaField = function SchemaField(_ref) {
|
|
|
250
250
|
});
|
|
251
251
|
}
|
|
252
252
|
})]
|
|
253
|
-
}), OptionModal]
|
|
253
|
+
}), /*#__PURE__*/jsxRuntime.jsx(OptionModal, {})]
|
|
254
254
|
}), type === schema.DATA_TYPES.FILE && /*#__PURE__*/jsxRuntime.jsx(react.Fragment, {
|
|
255
255
|
children: /*#__PURE__*/jsxRuntime.jsx(Controller.Controller, {
|
|
256
256
|
name: "".concat(field, ".accept"),
|
|
@@ -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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
-
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
|
|
5
4
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
|
+
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
|
|
6
6
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
7
7
|
var _regeneratorRuntime = require('@babel/runtime/regenerator');
|
|
8
8
|
var core = require('@react-fabric/core');
|
|
@@ -11,7 +11,7 @@ var react = require('react');
|
|
|
11
11
|
var reactHookForm = require('react-hook-form');
|
|
12
12
|
var jsxRuntime = require('react/jsx-runtime');
|
|
13
13
|
|
|
14
|
-
var _excluded = ["formRef", "resolver", "children", "defaultValues", "onSubmit", "onChange"];
|
|
14
|
+
var _excluded = ["formRef", "resolver", "children", "resetOnChange", "defaultValues", "onSubmit", "onChange"];
|
|
15
15
|
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; }
|
|
16
16
|
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; }
|
|
17
17
|
var DEFAULT_SUBMIT = function DEFAULT_SUBMIT() {
|
|
@@ -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
|
|
@@ -50,8 +50,9 @@ var Form = function Form(_ref) {
|
|
|
50
50
|
var formRef = _ref.formRef,
|
|
51
51
|
resolver = _ref.resolver,
|
|
52
52
|
children = _ref.children,
|
|
53
|
+
resetOnChange = _ref.resetOnChange,
|
|
53
54
|
_ref$defaultValues = _ref.defaultValues,
|
|
54
|
-
|
|
55
|
+
_defaultValues = _ref$defaultValues === void 0 ? utilities.EMPTY_OBJECT : _ref$defaultValues,
|
|
55
56
|
_ref$onSubmit = _ref.onSubmit,
|
|
56
57
|
_onSubmit = _ref$onSubmit === void 0 ? DEFAULT_SUBMIT : _ref$onSubmit,
|
|
57
58
|
onChange = _ref.onChange,
|
|
@@ -60,7 +61,26 @@ var Form = function Form(_ref) {
|
|
|
60
61
|
var form = reactHookForm.useForm({
|
|
61
62
|
shouldFocusError: true,
|
|
62
63
|
resolver: resolver,
|
|
63
|
-
defaultValues:
|
|
64
|
+
defaultValues: function () {
|
|
65
|
+
var _defaultValues2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
66
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
67
|
+
while (1) switch (_context.prev = _context.next) {
|
|
68
|
+
case 0:
|
|
69
|
+
_context.next = 1;
|
|
70
|
+
return Promise.resolve(_defaultValues);
|
|
71
|
+
case 1:
|
|
72
|
+
return _context.abrupt("return", _context.sent);
|
|
73
|
+
case 2:
|
|
74
|
+
case "end":
|
|
75
|
+
return _context.stop();
|
|
76
|
+
}
|
|
77
|
+
}, _callee);
|
|
78
|
+
}));
|
|
79
|
+
function defaultValues() {
|
|
80
|
+
return _defaultValues2.apply(this, arguments);
|
|
81
|
+
}
|
|
82
|
+
return defaultValues;
|
|
83
|
+
}()
|
|
64
84
|
});
|
|
65
85
|
var _useTransition = react.useTransition(),
|
|
66
86
|
_useTransition2 = _slicedToArray(_useTransition, 2),
|
|
@@ -82,12 +102,17 @@ var Form = function Form(_ref) {
|
|
|
82
102
|
form.reset(reset);
|
|
83
103
|
form.clearErrors();
|
|
84
104
|
(_ref$current = ref.current) === null || _ref$current === void 0 || (_ref$current = _ref$current.querySelector("[auto-focus], input, textarea")) === null || _ref$current === void 0 || _ref$current.focus();
|
|
85
|
-
}, [
|
|
105
|
+
}, []);
|
|
106
|
+
react.useEffect(function () {
|
|
107
|
+
if (resetOnChange) {
|
|
108
|
+
handleReset(_defaultValues);
|
|
109
|
+
}
|
|
110
|
+
}, [_defaultValues, resetOnChange]);
|
|
86
111
|
react.useImperativeHandle(formRef, function () {
|
|
87
112
|
return {
|
|
88
113
|
state: form.formState,
|
|
89
114
|
reset: function reset() {
|
|
90
|
-
return handleReset(
|
|
115
|
+
return handleReset(_defaultValues);
|
|
91
116
|
},
|
|
92
117
|
clear: function clear() {
|
|
93
118
|
return handleReset();
|
|
@@ -96,19 +121,19 @@ var Form = function Form(_ref) {
|
|
|
96
121
|
return form.handleSubmit(_onSubmit);
|
|
97
122
|
},
|
|
98
123
|
validate: function () {
|
|
99
|
-
var _validate = _asyncToGenerator(
|
|
100
|
-
return _regeneratorRuntime.wrap(function
|
|
101
|
-
while (1) switch (
|
|
124
|
+
var _validate = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(fields) {
|
|
125
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
126
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
102
127
|
case 0:
|
|
103
|
-
|
|
128
|
+
_context2.next = 1;
|
|
104
129
|
return form.trigger(fields);
|
|
130
|
+
case 1:
|
|
131
|
+
return _context2.abrupt("return", _context2.sent);
|
|
105
132
|
case 2:
|
|
106
|
-
return _context.abrupt("return", _context.sent);
|
|
107
|
-
case 3:
|
|
108
133
|
case "end":
|
|
109
|
-
return
|
|
134
|
+
return _context2.stop();
|
|
110
135
|
}
|
|
111
|
-
},
|
|
136
|
+
}, _callee2);
|
|
112
137
|
}));
|
|
113
138
|
function validate(_x) {
|
|
114
139
|
return _validate.apply(this, arguments);
|
|
@@ -132,7 +157,7 @@ var Form = function Form(_ref) {
|
|
|
132
157
|
}, 50);
|
|
133
158
|
}
|
|
134
159
|
};
|
|
135
|
-
}, [_onSubmit, form, form.formState,
|
|
160
|
+
}, [_onSubmit, form, form.formState, _defaultValues]);
|
|
136
161
|
var onInvalid = react.useCallback(function (_, e) {
|
|
137
162
|
var el = e.target;
|
|
138
163
|
console.log("Invalid:", _, e);
|
|
@@ -145,7 +170,7 @@ var Form = function Form(_ref) {
|
|
|
145
170
|
children: /*#__PURE__*/jsxRuntime.jsxs("form", _objectSpread(_objectSpread({
|
|
146
171
|
ref: ref,
|
|
147
172
|
onReset: function onReset() {
|
|
148
|
-
return handleReset(
|
|
173
|
+
return handleReset(_defaultValues);
|
|
149
174
|
},
|
|
150
175
|
onSubmit: function onSubmit(e) {
|
|
151
176
|
e.stopPropagation();
|
|
@@ -162,29 +187,5 @@ var Form = function Form(_ref) {
|
|
|
162
187
|
}))
|
|
163
188
|
}));
|
|
164
189
|
};
|
|
165
|
-
var useForm = function useForm() {
|
|
166
|
-
var _useFormContext = reactHookForm.useFormContext(),
|
|
167
|
-
formState = _useFormContext.formState,
|
|
168
|
-
getValues = _useFormContext.getValues,
|
|
169
|
-
setValue = _useFormContext.setValue,
|
|
170
|
-
watch = _useFormContext.watch,
|
|
171
|
-
reset = _useFormContext.reset,
|
|
172
|
-
resetField = _useFormContext.resetField,
|
|
173
|
-
setError = _useFormContext.setError,
|
|
174
|
-
setFocus = _useFormContext.setFocus;
|
|
175
|
-
var values = reactHookForm.useWatch();
|
|
176
|
-
return {
|
|
177
|
-
values: _objectSpread(_objectSpread({}, values), getValues()),
|
|
178
|
-
formState: formState,
|
|
179
|
-
getValues: getValues,
|
|
180
|
-
setValue: setValue,
|
|
181
|
-
watch: watch,
|
|
182
|
-
reset: reset,
|
|
183
|
-
resetField: resetField,
|
|
184
|
-
setError: setError,
|
|
185
|
-
setFocus: setFocus
|
|
186
|
-
};
|
|
187
|
-
};
|
|
188
190
|
|
|
189
191
|
exports.Form = Form;
|
|
190
|
-
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;
|
|
@@ -29,7 +29,10 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
31
|
var useFileUploader = function useFileUploader(uploader, initialList) {
|
|
32
|
-
var
|
|
32
|
+
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
33
|
+
_ref$multiple = _ref.multiple,
|
|
34
|
+
multiple = _ref$multiple === void 0 ? true : _ref$multiple,
|
|
35
|
+
onChange = _ref.onChange;
|
|
33
36
|
var _useReducer = react.useReducer(function (state, action) {
|
|
34
37
|
if (action.type === "start") {
|
|
35
38
|
if (!multiple) state.files.clear();
|
|
@@ -76,40 +79,26 @@ var useFileUploader = function useFileUploader(uploader, initialList) {
|
|
|
76
79
|
if (action.type === "remove") {
|
|
77
80
|
state.files["delete"](action.key);
|
|
78
81
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
path: file.path,
|
|
83
|
-
mime: file.mime,
|
|
84
|
-
size: file.size,
|
|
85
|
-
uploaded: file.uploaded,
|
|
86
|
-
filename: file.filename
|
|
87
|
-
};
|
|
88
|
-
}).filter(Boolean);
|
|
89
|
-
return _objectSpread({}, state);
|
|
90
|
-
}, {
|
|
91
|
-
files: new Map(),
|
|
92
|
-
count: 0
|
|
93
|
-
}, function (state) {
|
|
94
|
-
if (initialList) {
|
|
95
|
-
if (utilities.isString(initialList)) {
|
|
82
|
+
if (action.type === "init") {
|
|
83
|
+
state.files = new Map();
|
|
84
|
+
if (utilities.isString(action.initialList)) {
|
|
96
85
|
var key = utilities.uuid();
|
|
97
86
|
state.files.set(key, {
|
|
98
87
|
key: key,
|
|
99
|
-
path: initialList,
|
|
88
|
+
path: action.initialList,
|
|
100
89
|
filename: "",
|
|
101
90
|
size: 0,
|
|
102
91
|
mime: ""
|
|
103
92
|
});
|
|
104
93
|
}
|
|
105
|
-
if (utilities.isObject(initialList)) {
|
|
94
|
+
if (utilities.isObject(action.initialList)) {
|
|
106
95
|
var _key = utilities.uuid();
|
|
107
|
-
state.files.set(_key, _objectSpread(_objectSpread({}, initialList), {}, {
|
|
96
|
+
state.files.set(_key, _objectSpread(_objectSpread({}, action.initialList), {}, {
|
|
108
97
|
key: _key
|
|
109
98
|
}));
|
|
110
99
|
}
|
|
111
|
-
if (utilities.isArray(initialList)) {
|
|
112
|
-
initialList.forEach(function (file) {
|
|
100
|
+
if (utilities.isArray(action.initialList)) {
|
|
101
|
+
action.initialList.forEach(function (file) {
|
|
113
102
|
var key = utilities.uuid();
|
|
114
103
|
state.files.set(key, _objectSpread(_objectSpread({}, file), {}, {
|
|
115
104
|
key: key
|
|
@@ -117,16 +106,40 @@ var useFileUploader = function useFileUploader(uploader, initialList) {
|
|
|
117
106
|
});
|
|
118
107
|
}
|
|
119
108
|
}
|
|
120
|
-
state.list = Array.from(state.files.values())
|
|
121
|
-
|
|
109
|
+
state.list = Array.from(state.files.values()).map(function (file) {
|
|
110
|
+
return !file.progress && !file.error && {
|
|
111
|
+
key: file.key,
|
|
112
|
+
path: file.path,
|
|
113
|
+
mime: file.mime,
|
|
114
|
+
size: file.size,
|
|
115
|
+
uploaded: file.uploaded,
|
|
116
|
+
filename: file.filename
|
|
117
|
+
};
|
|
118
|
+
}).filter(Boolean);
|
|
119
|
+
if (action.type === "remove" || action.type === "stop") {
|
|
120
|
+
setTimeout(function () {
|
|
121
|
+
var _state$list$;
|
|
122
|
+
onChange === null || onChange === void 0 || onChange(multiple ? state.list : (_state$list$ = state.list[0]) !== null && _state$list$ !== void 0 ? _state$list$ : null);
|
|
123
|
+
}, 100);
|
|
124
|
+
}
|
|
125
|
+
return _objectSpread({}, state);
|
|
126
|
+
}, {
|
|
127
|
+
files: new Map(),
|
|
128
|
+
count: 0
|
|
122
129
|
}),
|
|
123
130
|
_useReducer2 = _slicedToArray(_useReducer, 2),
|
|
124
131
|
state = _useReducer2[0],
|
|
125
132
|
dispatch = _useReducer2[1];
|
|
126
|
-
|
|
127
|
-
|
|
133
|
+
react.useEffect(function () {
|
|
134
|
+
dispatch({
|
|
135
|
+
type: "init",
|
|
136
|
+
initialList: initialList
|
|
137
|
+
});
|
|
138
|
+
}, [initialList]);
|
|
139
|
+
var doUpload = react.useCallback(/*#__PURE__*/function () {
|
|
140
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(key, file) {
|
|
128
141
|
var data, _abort2;
|
|
129
|
-
return _regeneratorRuntime.wrap(function
|
|
142
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
130
143
|
while (1) switch (_context.prev = _context.next) {
|
|
131
144
|
case 0:
|
|
132
145
|
data = new FormData();
|
|
@@ -147,7 +160,7 @@ var useFileUploader = function useFileUploader(uploader, initialList) {
|
|
|
147
160
|
}
|
|
148
161
|
}
|
|
149
162
|
});
|
|
150
|
-
_context.next =
|
|
163
|
+
_context.next = 1;
|
|
151
164
|
return uploader(data, {
|
|
152
165
|
signal: _abort2.signal,
|
|
153
166
|
onUploadProgress: function onUploadProgress(progressEvent) {
|
|
@@ -178,14 +191,14 @@ var useFileUploader = function useFileUploader(uploader, initialList) {
|
|
|
178
191
|
error: (_error$message = error === null || error === void 0 ? void 0 : error.message) !== null && _error$message !== void 0 ? _error$message : "form:fileUploadFailed"
|
|
179
192
|
});
|
|
180
193
|
});
|
|
181
|
-
case
|
|
194
|
+
case 1:
|
|
182
195
|
case "end":
|
|
183
196
|
return _context.stop();
|
|
184
197
|
}
|
|
185
198
|
}, _callee);
|
|
186
199
|
}));
|
|
187
200
|
return function (_x, _x2) {
|
|
188
|
-
return
|
|
201
|
+
return _ref2.apply(this, arguments);
|
|
189
202
|
};
|
|
190
203
|
}(), []);
|
|
191
204
|
var upload = react.useCallback(function (files) {
|
|
@@ -212,7 +225,6 @@ var useFileUploader = function useFileUploader(uploader, initialList) {
|
|
|
212
225
|
remove: remove,
|
|
213
226
|
retry: retry,
|
|
214
227
|
pending: state.count,
|
|
215
|
-
list: state.list,
|
|
216
228
|
files: Array.from(state.files.values())
|
|
217
229
|
};
|
|
218
230
|
};
|
|
@@ -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/i18n/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var core = require('@react-fabric/core');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var form$1 = require('./ar/form.json.js');
|
|
5
|
+
var form = require('./en/form.json.js');
|
|
6
6
|
|
|
7
7
|
/*
|
|
8
8
|
* React Fabric
|
|
@@ -28,6 +28,6 @@ var en = require('./en.json.js');
|
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
30
|
core.addTranslationBundle("form", {
|
|
31
|
-
en:
|
|
32
|
-
ar:
|
|
31
|
+
en: form.default,
|
|
32
|
+
ar: form$1.default
|
|
33
33
|
});
|
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;
|