@react-fabric/form 1.0.0-beta.61 → 1.0.0-beta.62
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/builder/FileField.js +8 -5
- package/dist/cjs/builder/components/SchemaArrayForm.js +1 -1
- package/dist/cjs/builder/components/SchemaField.js +2 -2
- package/dist/cjs/form/Form.js +40 -15
- package/dist/cjs/hooks/useFileUploader.js +40 -28
- package/dist/cjs/i18n/index.js +4 -4
- package/dist/cjs/input/AvatarInput.js +14 -9
- package/dist/cjs/input/Hidden.js +1 -10
- package/dist/cjs/input/RadioGroup.js +3 -1
- package/dist/cjs/select/DualList.js +1 -1
- package/dist/cjs/select/List.js +4 -2
- package/dist/cjs/select/Select.js +1 -1
- package/dist/esm/builder/FileField.js +8 -5
- package/dist/esm/builder/components/SchemaArrayForm.js +1 -1
- package/dist/esm/builder/components/SchemaField.js +2 -2
- package/dist/esm/form/Form.js +40 -15
- package/dist/esm/hooks/useFileUploader.js +41 -29
- package/dist/esm/i18n/index.js +2 -2
- package/dist/esm/input/AvatarInput.js +14 -9
- package/dist/esm/input/Hidden.js +2 -11
- package/dist/esm/input/RadioGroup.js +3 -1
- package/dist/esm/select/DualList.js +1 -1
- package/dist/esm/select/List.js +4 -2
- package/dist/esm/select/Select.js +1 -1
- package/dist/types/builder/FileField.d.ts +2 -1
- package/dist/types/form/Form.d.ts +6 -2
- package/dist/types/hooks/useFileUploader.d.ts +4 -2
- package/dist/types/input/AvatarInput.d.ts +1 -1
- package/dist/types/input/Hidden.d.ts +3 -11
- package/dist/types/input/RadioGroup.d.ts +5 -1
- package/package.json +5 -5
- package/src/builder/FileField.tsx +5 -3
- package/src/builder/components/SchemaArrayForm.tsx +1 -1
- package/src/builder/components/SchemaField.tsx +2 -2
- package/src/form/Form.tsx +20 -13
- package/src/hooks/useFileUploader.ts +41 -29
- package/src/i18n/index.ts +2 -2
- package/src/input/AvatarInput.tsx +11 -11
- package/src/input/Hidden.tsx +4 -22
- package/src/input/RadioGroup.tsx +6 -0
- package/src/select/DualList.tsx +1 -1
- package/src/select/List.tsx +2 -2
- package/src/select/Select.tsx +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/dist/esm/form/Form.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
|
-
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
5
4
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
5
|
+
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
6
6
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
7
7
|
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
8
8
|
import { useDebounce } from '@react-fabric/core';
|
|
@@ -11,7 +11,7 @@ import { useRef, useTransition, useEffect, useCallback, useImperativeHandle } fr
|
|
|
11
11
|
import { useForm as useForm$1, FormProvider, useFormContext, useWatch } from 'react-hook-form';
|
|
12
12
|
import { jsx, jsxs } from '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() {
|
|
@@ -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 ? 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 = useForm$1({
|
|
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 _callee$(_context) {
|
|
67
|
+
while (1) switch (_context.prev = _context.next) {
|
|
68
|
+
case 0:
|
|
69
|
+
_context.next = 2;
|
|
70
|
+
return Promise.resolve(_defaultValues);
|
|
71
|
+
case 2:
|
|
72
|
+
return _context.abrupt("return", _context.sent);
|
|
73
|
+
case 3:
|
|
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 = 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
|
+
useEffect(function () {
|
|
107
|
+
if (resetOnChange) {
|
|
108
|
+
handleReset(_defaultValues);
|
|
109
|
+
}
|
|
110
|
+
}, [_defaultValues, resetOnChange]);
|
|
86
111
|
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( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
100
|
-
return _regeneratorRuntime.wrap(function
|
|
101
|
-
while (1) switch (
|
|
124
|
+
var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(fields) {
|
|
125
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
126
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
102
127
|
case 0:
|
|
103
|
-
|
|
128
|
+
_context2.next = 2;
|
|
104
129
|
return form.trigger(fields);
|
|
105
130
|
case 2:
|
|
106
|
-
return
|
|
131
|
+
return _context2.abrupt("return", _context2.sent);
|
|
107
132
|
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 = 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__*/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();
|
|
@@ -6,7 +6,7 @@ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProper
|
|
|
6
6
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
7
7
|
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
8
8
|
import { isString, uuid, isObject, isArray } from '@react-fabric/utilities';
|
|
9
|
-
import { useReducer, useCallback } from 'react';
|
|
9
|
+
import { useReducer, useEffect, useCallback } from 'react';
|
|
10
10
|
|
|
11
11
|
var _excluded = ["progress", "abort"],
|
|
12
12
|
_excluded2 = ["file", "progress", "abort"];
|
|
@@ -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 = 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 (isString(initialList)) {
|
|
82
|
+
if (action.type === "init") {
|
|
83
|
+
state.files = new Map();
|
|
84
|
+
if (isString(action.initialList)) {
|
|
96
85
|
var key = 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 (isObject(initialList)) {
|
|
94
|
+
if (isObject(action.initialList)) {
|
|
106
95
|
var _key = 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 (isArray(initialList)) {
|
|
112
|
-
initialList.forEach(function (file) {
|
|
100
|
+
if (isArray(action.initialList)) {
|
|
101
|
+
action.initialList.forEach(function (file) {
|
|
113
102
|
var key = uuid();
|
|
114
103
|
state.files.set(key, _objectSpread(_objectSpread({}, file), {}, {
|
|
115
104
|
key: key
|
|
@@ -117,14 +106,38 @@ 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];
|
|
133
|
+
useEffect(function () {
|
|
134
|
+
dispatch({
|
|
135
|
+
type: "init",
|
|
136
|
+
initialList: initialList
|
|
137
|
+
});
|
|
138
|
+
}, [initialList]);
|
|
126
139
|
var doUpload = useCallback( /*#__PURE__*/function () {
|
|
127
|
-
var
|
|
140
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(key, file) {
|
|
128
141
|
var data, _abort2;
|
|
129
142
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
130
143
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -185,7 +198,7 @@ var useFileUploader = function useFileUploader(uploader, initialList) {
|
|
|
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 = 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
|
};
|
package/dist/esm/i18n/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import { useFileUploader } from '../hooks/useFileUploader.js';
|
|
|
12
12
|
import { HiddenInput } from './Hidden.js';
|
|
13
13
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
14
14
|
|
|
15
|
-
var _excluded = ["size", "avatarName", "avatarClassName", "value", "rounded", "defaultValue", "fallbackIcon", "variant", "fileUrl", "uploadHandler"];
|
|
15
|
+
var _excluded = ["size", "avatarName", "avatarClassName", "value", "rounded", "defaultValue", "fallbackIcon", "variant", "fileUrl", "uploadHandler", "onChange"];
|
|
16
16
|
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; }
|
|
17
17
|
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; }
|
|
18
18
|
/**
|
|
@@ -24,7 +24,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
24
24
|
* @returns {JSX.Element} - The rendered AvatarInput component.
|
|
25
25
|
*/
|
|
26
26
|
var AvatarInput = function AvatarInput(_ref) {
|
|
27
|
-
var
|
|
27
|
+
var _files$2;
|
|
28
28
|
var _ref$size = _ref.size,
|
|
29
29
|
size = _ref$size === void 0 ? "6rem" : _ref$size,
|
|
30
30
|
avatarName = _ref.avatarName,
|
|
@@ -36,6 +36,7 @@ var AvatarInput = function AvatarInput(_ref) {
|
|
|
36
36
|
variant = _ref.variant,
|
|
37
37
|
fileUrl = _ref.fileUrl,
|
|
38
38
|
uploadHandler = _ref.uploadHandler,
|
|
39
|
+
_onChange = _ref.onChange,
|
|
39
40
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
40
41
|
var _useFileUploader = useFileUploader( /*#__PURE__*/function () {
|
|
41
42
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(data, config) {
|
|
@@ -55,9 +56,14 @@ var AvatarInput = function AvatarInput(_ref) {
|
|
|
55
56
|
return function (_x, _x2) {
|
|
56
57
|
return _ref2.apply(this, arguments);
|
|
57
58
|
};
|
|
58
|
-
}(), value,
|
|
59
|
+
}(), value !== null && value !== void 0 ? value : defaultValue, {
|
|
60
|
+
multiple: false,
|
|
61
|
+
onChange: function onChange(files) {
|
|
62
|
+
var _files$path;
|
|
63
|
+
return _onChange === null || _onChange === void 0 ? void 0 : _onChange((_files$path = files === null || files === void 0 ? void 0 : files.path) !== null && _files$path !== void 0 ? _files$path : null);
|
|
64
|
+
}
|
|
65
|
+
}),
|
|
59
66
|
files = _useFileUploader.files,
|
|
60
|
-
list = _useFileUploader.list,
|
|
61
67
|
upload = _useFileUploader.upload,
|
|
62
68
|
remove = _useFileUploader.remove;
|
|
63
69
|
var _useState = useState(""),
|
|
@@ -65,7 +71,7 @@ var AvatarInput = function AvatarInput(_ref) {
|
|
|
65
71
|
base64 = _useState2[0],
|
|
66
72
|
setBase64 = _useState2[1];
|
|
67
73
|
useEffect(function () {
|
|
68
|
-
if (
|
|
74
|
+
if (files !== null && files !== void 0 && files.length) {
|
|
69
75
|
var _files$;
|
|
70
76
|
var file = files === null || files === void 0 || (_files$ = files[0]) === null || _files$ === void 0 ? void 0 : _files$.file;
|
|
71
77
|
void (file && new Response(file).blob().then(function (blob) {
|
|
@@ -82,14 +88,14 @@ var AvatarInput = function AvatarInput(_ref) {
|
|
|
82
88
|
var _ref3, _fileUrl;
|
|
83
89
|
setBase64((_ref3 = (_fileUrl = fileUrl === null || fileUrl === void 0 ? void 0 : fileUrl(defaultValue !== null && defaultValue !== void 0 ? defaultValue : "")) !== null && _fileUrl !== void 0 ? _fileUrl : defaultValue) !== null && _ref3 !== void 0 ? _ref3 : "");
|
|
84
90
|
}
|
|
85
|
-
}, [files,
|
|
91
|
+
}, [files, defaultValue]);
|
|
86
92
|
useEffect(function () {
|
|
87
93
|
var _fileUrl2, _fileUrl3;
|
|
88
94
|
!value && defaultValue && setBase64((_fileUrl2 = fileUrl === null || fileUrl === void 0 ? void 0 : fileUrl(defaultValue)) !== null && _fileUrl2 !== void 0 ? _fileUrl2 : defaultValue);
|
|
89
95
|
value && setBase64((_fileUrl3 = fileUrl === null || fileUrl === void 0 ? void 0 : fileUrl(value)) !== null && _fileUrl3 !== void 0 ? _fileUrl3 : value);
|
|
90
96
|
}, [value, defaultValue]);
|
|
91
97
|
return /*#__PURE__*/jsxs("div", {
|
|
92
|
-
className: "flex flex-nowrap items-end overflow-hidden",
|
|
98
|
+
className: "flex flex-nowrap items-end overflow-hidden p-px",
|
|
93
99
|
children: [/*#__PURE__*/jsxs("div", {
|
|
94
100
|
className: classNames("inline-block leading-none relative outline overflow-hidden", rounded && "rounded-full", !rounded && "rounded"),
|
|
95
101
|
children: [/*#__PURE__*/jsx(Avatar, {
|
|
@@ -114,8 +120,7 @@ var AvatarInput = function AvatarInput(_ref) {
|
|
|
114
120
|
})]
|
|
115
121
|
})]
|
|
116
122
|
}), /*#__PURE__*/jsx(HiddenInput, _objectSpread({
|
|
117
|
-
|
|
118
|
-
defaultValue: defaultValue
|
|
123
|
+
value: files === null || files === void 0 || (_files$2 = files[0]) === null || _files$2 === void 0 ? void 0 : _files$2.path
|
|
119
124
|
}, rest)), files.map(function (file, idx) {
|
|
120
125
|
return /*#__PURE__*/jsxs("div", {
|
|
121
126
|
className: "px-2 py-1 flex-1 overflow-hidden",
|
package/dist/esm/input/Hidden.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { Fragment } from 'react';
|
|
4
4
|
import { ErrorIcon } from '../internal/ErrorIcon.js';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -36,23 +36,14 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
36
36
|
* @returns {JSX.Element} The rendered hidden input field and error icon.
|
|
37
37
|
*/
|
|
38
38
|
var HiddenInput = function HiddenInput(_ref) {
|
|
39
|
-
var
|
|
40
|
-
defaultValue = _ref.defaultValue,
|
|
41
|
-
onChange = _ref.onChange,
|
|
42
|
-
invalid = _ref.invalid,
|
|
39
|
+
var invalid = _ref.invalid,
|
|
43
40
|
error = _ref.error,
|
|
44
41
|
_ref$value = _ref.value,
|
|
45
42
|
value = _ref$value === void 0 ? "" : _ref$value,
|
|
46
43
|
name = _ref.name;
|
|
47
|
-
useEffect(function () {
|
|
48
|
-
setTimeout(function () {
|
|
49
|
-
onChange === null || onChange === void 0 || onChange(hiddenValue !== null && hiddenValue !== void 0 ? hiddenValue : defaultValue);
|
|
50
|
-
}, 50);
|
|
51
|
-
}, [hiddenValue, defaultValue]);
|
|
52
44
|
return /*#__PURE__*/jsxs(Fragment, {
|
|
53
45
|
children: [/*#__PURE__*/jsx("input", {
|
|
54
46
|
type: "hidden",
|
|
55
|
-
onChange: onChange,
|
|
56
47
|
value: value,
|
|
57
48
|
name: name
|
|
58
49
|
}), /*#__PURE__*/jsx(ErrorIcon, {
|
|
@@ -7,7 +7,7 @@ import { cloneElement } from 'react';
|
|
|
7
7
|
import { FieldWrapper } from '../internal/FieldWrapper.js';
|
|
8
8
|
import { jsx } from 'react/jsx-runtime';
|
|
9
9
|
|
|
10
|
-
var _excluded = ["children", "name", "className", "optionWidth", "onChange"];
|
|
10
|
+
var _excluded = ["children", "name", "className", "optionWidth", "value", "onChange"];
|
|
11
11
|
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; }
|
|
12
12
|
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; }
|
|
13
13
|
/**
|
|
@@ -23,6 +23,7 @@ var RadioGroup = function RadioGroup(_ref) {
|
|
|
23
23
|
name = _ref.name,
|
|
24
24
|
className = _ref.className,
|
|
25
25
|
optionWidth = _ref.optionWidth,
|
|
26
|
+
value = _ref.value,
|
|
26
27
|
onChange = _ref.onChange,
|
|
27
28
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
28
29
|
return /*#__PURE__*/jsx(FieldWrapper, _objectSpread(_objectSpread({}, rest), {}, {
|
|
@@ -31,6 +32,7 @@ var RadioGroup = function RadioGroup(_ref) {
|
|
|
31
32
|
children: cloneChildren(children, function (child) {
|
|
32
33
|
return /*#__PURE__*/cloneElement(child, {
|
|
33
34
|
name: name,
|
|
35
|
+
checked: child.props.value === value,
|
|
34
36
|
onChange: onChange,
|
|
35
37
|
width: optionWidth
|
|
36
38
|
});
|
|
@@ -38,7 +38,7 @@ var DualList = function DualList(_ref) {
|
|
|
38
38
|
_ref$labelProperty = _ref.labelProperty,
|
|
39
39
|
labelProperty = _ref$labelProperty === void 0 ? "label" : _ref$labelProperty,
|
|
40
40
|
_ref$valueProperty = _ref.valueProperty,
|
|
41
|
-
valueProperty = _ref$valueProperty === void 0 ? "
|
|
41
|
+
valueProperty = _ref$valueProperty === void 0 ? "value" : _ref$valueProperty,
|
|
42
42
|
renderer = _ref.renderer,
|
|
43
43
|
onChange = _ref.onChange,
|
|
44
44
|
name = _ref.name,
|
package/dist/esm/select/List.js
CHANGED
|
@@ -29,8 +29,10 @@ var List = function List(_ref) {
|
|
|
29
29
|
options = _ref.options,
|
|
30
30
|
height = _ref.height,
|
|
31
31
|
groupProperty = _ref.groupProperty,
|
|
32
|
-
labelProperty = _ref.labelProperty,
|
|
33
|
-
|
|
32
|
+
_ref$labelProperty = _ref.labelProperty,
|
|
33
|
+
labelProperty = _ref$labelProperty === void 0 ? "label" : _ref$labelProperty,
|
|
34
|
+
_ref$valueProperty = _ref.valueProperty,
|
|
35
|
+
valueProperty = _ref$valueProperty === void 0 ? "value" : _ref$valueProperty,
|
|
34
36
|
infoProperty = _ref.infoProperty,
|
|
35
37
|
sortProperty = _ref.sortProperty,
|
|
36
38
|
multiple = _ref.multiple,
|
|
@@ -34,7 +34,7 @@ var Select = function Select(_ref) {
|
|
|
34
34
|
_ref$labelProperty = _ref.labelProperty,
|
|
35
35
|
labelProperty = _ref$labelProperty === void 0 ? "label" : _ref$labelProperty,
|
|
36
36
|
_ref$valueProperty = _ref.valueProperty,
|
|
37
|
-
valueProperty = _ref$valueProperty === void 0 ? "
|
|
37
|
+
valueProperty = _ref$valueProperty === void 0 ? "value" : _ref$valueProperty,
|
|
38
38
|
sortProperty = _ref.sortProperty,
|
|
39
39
|
infoProperty = _ref.infoProperty,
|
|
40
40
|
multiple = _ref.multiple,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { type UploadHandler } from "../hooks/useFileUploader";
|
|
2
2
|
import { type FileSchema, type ValueType } from "../types/schema";
|
|
3
|
-
export declare const FileField: ({ uploadHandler, inline, label, accept, value, fileUrl, multiple, invalid, error, ...rest }: Partial<FileSchema & ValueType> & {
|
|
3
|
+
export declare const FileField: ({ uploadHandler, inline, label, accept, value, fileUrl, onChange, multiple, invalid, error, ...rest }: Partial<FileSchema & ValueType> & {
|
|
4
4
|
value?: AnyObject;
|
|
5
5
|
inline?: boolean;
|
|
6
6
|
invalid?: boolean;
|
|
7
7
|
error?: AnyObject;
|
|
8
|
+
onChange?: (value: any) => void;
|
|
8
9
|
fileUrl?: (path: string) => string;
|
|
9
10
|
uploadHandler: UploadHandler;
|
|
10
11
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -23,7 +23,11 @@ export interface FormProps<K extends KeyValue = KeyValue> {
|
|
|
23
23
|
/**
|
|
24
24
|
* default data values
|
|
25
25
|
*/
|
|
26
|
-
defaultValues?: K
|
|
26
|
+
defaultValues?: K | Promise<K>;
|
|
27
|
+
/**
|
|
28
|
+
* reset values on defaultValues change (workaround for using fetch result)
|
|
29
|
+
*/
|
|
30
|
+
resetOnChange?: boolean;
|
|
27
31
|
/**
|
|
28
32
|
* change callback
|
|
29
33
|
*/
|
|
@@ -61,7 +65,7 @@ export interface FormProps<K extends KeyValue = KeyValue> {
|
|
|
61
65
|
* @see {@link https://react-hook-form.com/docs/useform} for more details on the properties.
|
|
62
66
|
* @see {@link https://github.com/jquense/yup} for more details on the Yup validation schema.
|
|
63
67
|
*/
|
|
64
|
-
export declare const Form: <K extends KeyValue>({ formRef, resolver, children, defaultValues, onSubmit, onChange, ...rest }: PropsWithChildren<FormProps<K>>) => import("react/jsx-runtime").JSX.Element;
|
|
68
|
+
export declare const Form: <K extends KeyValue>({ formRef, resolver, children, resetOnChange, defaultValues, onSubmit, onChange, ...rest }: PropsWithChildren<FormProps<K>>) => import("react/jsx-runtime").JSX.Element;
|
|
65
69
|
export declare const useForm: <K extends KeyValue = KeyValue>() => {
|
|
66
70
|
values: import("react-hook-form").DeepPartialSkipArrayKey<K> & K;
|
|
67
71
|
formState: FormState<K>;
|
|
@@ -28,12 +28,14 @@ interface FileInfo {
|
|
|
28
28
|
* const { upload, remove, retry, state } = useFileUploader(uploader, initialList, multiple);
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
-
export declare const useFileUploader: (uploader: UploadHandler, initialList?: string | FileInfo | FileInfo[], multiple
|
|
31
|
+
export declare const useFileUploader: (uploader: UploadHandler, initialList?: string | FileInfo | FileInfo[], { multiple, onChange, }?: {
|
|
32
|
+
multiple?: boolean;
|
|
33
|
+
onChange?: (files: FileInfo[] | FileInfo | null) => void;
|
|
34
|
+
}) => {
|
|
32
35
|
upload: (files: FileList | null) => void;
|
|
33
36
|
remove: (key: string) => void;
|
|
34
37
|
retry: (key: string) => void;
|
|
35
38
|
pending: number;
|
|
36
|
-
list: FileInfo[];
|
|
37
39
|
files: FileInfo[];
|
|
38
40
|
};
|
|
39
41
|
export {};
|
|
@@ -48,4 +48,4 @@ export interface Props extends RefProp {
|
|
|
48
48
|
* @param {Props} props - The properties for the AvatarInput component.
|
|
49
49
|
* @returns {JSX.Element} - The rendered AvatarInput component.
|
|
50
50
|
*/
|
|
51
|
-
export declare const AvatarInput: ({ size, avatarName, avatarClassName, value, rounded, defaultValue, fallbackIcon, variant, fileUrl, uploadHandler, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
51
|
+
export declare const AvatarInput: ({ size, avatarName, avatarClassName, value, rounded, defaultValue, fallbackIcon, variant, fileUrl, uploadHandler, onChange, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,17 +4,9 @@ interface Props {
|
|
|
4
4
|
*/
|
|
5
5
|
name?: string;
|
|
6
6
|
/**
|
|
7
|
-
* hidden value
|
|
7
|
+
* hidden input value
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* default avatar image
|
|
12
|
-
*/
|
|
13
|
-
defaultValue?: string;
|
|
14
|
-
/**
|
|
15
|
-
* form onChange handler
|
|
16
|
-
*/
|
|
17
|
-
onChange?: (value: AnyObject) => void;
|
|
9
|
+
value?: AnyObject;
|
|
18
10
|
}
|
|
19
11
|
/**
|
|
20
12
|
* Hidden input component to handle hidden values in forms.
|
|
@@ -24,5 +16,5 @@ interface Props {
|
|
|
24
16
|
* @param {Object} props - Component properties.
|
|
25
17
|
* @returns {JSX.Element} The rendered hidden input field and error icon.
|
|
26
18
|
*/
|
|
27
|
-
export declare const HiddenInput: ({
|
|
19
|
+
export declare const HiddenInput: ({ invalid, error, value, name, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
28
20
|
export {};
|
|
@@ -37,6 +37,10 @@ export interface RadioGroupProps extends ChildrenProp<typeof Radio>, CssProp {
|
|
|
37
37
|
* vertical orientation
|
|
38
38
|
*/
|
|
39
39
|
vertical?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* value
|
|
42
|
+
*/
|
|
43
|
+
value?: string | number;
|
|
40
44
|
/**
|
|
41
45
|
* change handler
|
|
42
46
|
*/
|
|
@@ -50,4 +54,4 @@ export interface RadioGroupProps extends ChildrenProp<typeof Radio>, CssProp {
|
|
|
50
54
|
* @param {RadioGroupProps} props - The properties for the RadioGroup component.
|
|
51
55
|
* @returns {JSX.Element} The rendered RadioGroup component.
|
|
52
56
|
*/
|
|
53
|
-
export declare const RadioGroup: ({ children, name, className, optionWidth, onChange, ...rest }: RadioGroupProps) => import("react/jsx-runtime").JSX.Element;
|
|
57
|
+
export declare const RadioGroup: ({ children, name, className, optionWidth, value, onChange, ...rest }: RadioGroupProps) => import("react/jsx-runtime").JSX.Element;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-fabric/form",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.62",
|
|
4
4
|
"description": "RUF: Form package",
|
|
5
5
|
"author": "Adarsh Pastakia <adarshpastakia@outlook.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"@dnd-kit/utilities": "~3.2.2",
|
|
42
42
|
"@floating-ui/react": "~0.27.16",
|
|
43
43
|
"@hookform/resolvers": "~5.2.2",
|
|
44
|
-
"@react-fabric/core": "^1.0.0-beta.
|
|
45
|
-
"@react-fabric/date": "^1.0.0-beta.
|
|
46
|
-
"@react-fabric/utilities": "^1.0.0-beta.
|
|
44
|
+
"@react-fabric/core": "^1.0.0-beta.62",
|
|
45
|
+
"@react-fabric/date": "^1.0.0-beta.62",
|
|
46
|
+
"@react-fabric/utilities": "^1.0.0-beta.62",
|
|
47
47
|
"classnames": "~2.5.1",
|
|
48
48
|
"color": "~5.0.2",
|
|
49
49
|
"react-color": "~2.19.3",
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"node": ">=18.12.0",
|
|
63
63
|
"npm": ">=8.19.0"
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "9dce2fd9bb753d67e3f8adbf50be257b4bc64242"
|
|
66
66
|
}
|
|
@@ -37,6 +37,7 @@ export const FileField = ({
|
|
|
37
37
|
accept,
|
|
38
38
|
value,
|
|
39
39
|
fileUrl,
|
|
40
|
+
onChange,
|
|
40
41
|
multiple,
|
|
41
42
|
invalid,
|
|
42
43
|
error,
|
|
@@ -46,20 +47,21 @@ export const FileField = ({
|
|
|
46
47
|
inline?: boolean;
|
|
47
48
|
invalid?: boolean;
|
|
48
49
|
error?: AnyObject;
|
|
50
|
+
onChange?: (value: any) => void;
|
|
49
51
|
fileUrl?: (path: string) => string;
|
|
50
52
|
uploadHandler: UploadHandler;
|
|
51
53
|
}) => {
|
|
52
54
|
const { t } = useTranslation();
|
|
53
|
-
const { pending, files,
|
|
55
|
+
const { pending, files, upload, remove } = useFileUploader(
|
|
54
56
|
async (data, config) => await uploadHandler?.(data, config),
|
|
55
57
|
value,
|
|
56
|
-
multiple,
|
|
58
|
+
{ multiple, onChange },
|
|
57
59
|
);
|
|
58
60
|
|
|
59
61
|
return (
|
|
60
62
|
<Fragment>
|
|
61
63
|
<Field plain inline={inline} label={label}>
|
|
62
|
-
<HiddenInput
|
|
64
|
+
<HiddenInput value={multiple ? files : files?.[0]} {...rest} />
|
|
63
65
|
</Field>
|
|
64
66
|
<Tooltip
|
|
65
67
|
color="danger-200"
|
|
@@ -229,7 +229,7 @@ export const SchemaField = ({
|
|
|
229
229
|
</div>
|
|
230
230
|
<div className="flex flex-col gap-1 pb-4">
|
|
231
231
|
<Controller name={`${field}.id`}>
|
|
232
|
-
<HiddenInput
|
|
232
|
+
<HiddenInput value={id} />
|
|
233
233
|
</Controller>
|
|
234
234
|
<Controller name={`${field}.datatype`}>
|
|
235
235
|
<Select
|
|
@@ -284,7 +284,7 @@ export const SchemaField = ({
|
|
|
284
284
|
/>
|
|
285
285
|
)}
|
|
286
286
|
</Field>
|
|
287
|
-
|
|
287
|
+
<OptionModal />
|
|
288
288
|
</Fragment>
|
|
289
289
|
)}
|
|
290
290
|
{type === DATA_TYPES.FILE && (
|