intelicoreact 0.1.20 → 0.1.23
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/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +6 -4
- package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.stories.js +12 -1
- package/dist/Atomic/FormElements/CheckboxesLine/partial/AnyOuterClass.scss +5 -0
- package/dist/Atomic/FormElements/Dropdown/Dropdown.js +7 -1
- package/dist/Atomic/FormElements/RangeList/RangeList.js +158 -250
- package/dist/Atomic/FormElements/RangeList/RangeList.scss +25 -0
- package/dist/Atomic/FormElements/RangeList/RangeList.stories.js +35 -40
- package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +54 -0
- package/dist/Atomic/FormElements/RangeList/partial/temp.js +150 -0
- package/dist/Atomic/FormElements/Switcher/Switcher.stories.js +11 -3
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.stories.js +8 -1
- package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.stories.js +11 -3
- package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +69 -0
- package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +166 -0
- package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +89 -0
- package/dist/Functions/useFormTools/functions/General.js +158 -0
- package/dist/Functions/useFormTools/functions/RenderFields.js +113 -0
- package/dist/Functions/useFormTools/functions/usePrevious.js +19 -0
- package/dist/Functions/useFormTools/index.js +759 -0
- package/dist/Molecular/SwitcherHide/SwitcherHide.stories.js +11 -3
- package/dist/Molecular/SwitcherRadio/SwitcherRadio.stories.js +11 -3
- package/dist/Molecular/SwitcherTagsDropdown/SwitcherTagsDropdown.js +7 -3
- package/dist/Molecular/SwitcherTagsDropdown/SwitcherTagsDropdown.stories.js +57 -34
- package/dist/Molecular/SwitcherTagsDropdown/partial/States.js +158 -0
- package/dist/Molecular/SwitcherTextarea/SwitcherTextarea.stories.js +12 -4
- package/package.json +2 -2
- package/dist/Functions/useFormTools.js +0 -429
|
@@ -0,0 +1,759 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = useFormTools;
|
|
9
|
+
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
12
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
+
|
|
18
|
+
var _react = require("react");
|
|
19
|
+
|
|
20
|
+
var _General2 = _interopRequireDefault(require("./functions/General"));
|
|
21
|
+
|
|
22
|
+
var _ArrayWithObjects = _interopRequireDefault(require("./form-drivers/ArrayWithObjects"));
|
|
23
|
+
|
|
24
|
+
var _ObjectWithIterableObjects = _interopRequireDefault(require("./form-drivers/ObjectWithIterableObjects"));
|
|
25
|
+
|
|
26
|
+
var _ObjectWithNamedKeyObjects = _interopRequireDefault(require("./form-drivers/ObjectWithNamedKeyObjects"));
|
|
27
|
+
|
|
28
|
+
var _RenderFields = _interopRequireDefault(require("./functions/RenderFields"));
|
|
29
|
+
|
|
30
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
31
|
+
|
|
32
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
33
|
+
|
|
34
|
+
var DefaultFocusControllerProps = {
|
|
35
|
+
setAutoFocus: true,
|
|
36
|
+
onlyEmptyFieldAutoFocus: false
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
function useFormTools() {
|
|
40
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
41
|
+
form = _ref.form,
|
|
42
|
+
setForm = _ref.setForm,
|
|
43
|
+
FormType = _ref.FormType,
|
|
44
|
+
FormFields = _ref.FormFields,
|
|
45
|
+
_ref$FormDataDriverNa = _ref.FormDataDriverName,
|
|
46
|
+
FormDataDriverName = _ref$FormDataDriverNa === void 0 ? 'ArrayWithObjects' : _ref$FormDataDriverNa,
|
|
47
|
+
_ref$FormDataDriver = _ref.FormDataDriver,
|
|
48
|
+
FormDataDriver = _ref$FormDataDriver === void 0 ? null : _ref$FormDataDriver,
|
|
49
|
+
_ref$FocusControllerP = _ref.FocusControllerProps,
|
|
50
|
+
FocusControllerProps = _ref$FocusControllerP === void 0 ? DefaultFocusControllerProps : _ref$FocusControllerP;
|
|
51
|
+
|
|
52
|
+
FocusControllerProps = _objectSpread(_objectSpread({}, DefaultFocusControllerProps), FocusControllerProps);
|
|
53
|
+
var FormDataDrivers = {
|
|
54
|
+
ArrayWithObjects: {
|
|
55
|
+
handlers: _ArrayWithObjects.default,
|
|
56
|
+
default: true
|
|
57
|
+
},
|
|
58
|
+
ObjectWithIterableObjects: {
|
|
59
|
+
handlers: _ObjectWithIterableObjects.default
|
|
60
|
+
},
|
|
61
|
+
ObjectWithNamedKeyObjects: {
|
|
62
|
+
handlers: _ObjectWithNamedKeyObjects.default
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
var getFormDataDriver = function getFormDataDriver(name) {
|
|
67
|
+
var _FormDataDrivers$name, _Object$values$find;
|
|
68
|
+
|
|
69
|
+
return FormDataDriver || ((_FormDataDrivers$name = FormDataDrivers[name]) === null || _FormDataDrivers$name === void 0 ? void 0 : _FormDataDrivers$name.handlers) || ((_Object$values$find = Object.values(FormDataDrivers).find(function (df) {
|
|
70
|
+
return df.default === true;
|
|
71
|
+
})) === null || _Object$values$find === void 0 ? void 0 : _Object$values$find.handlers) || function () {
|
|
72
|
+
return {};
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
var getFormDataDriverInstance = function getFormDataDriverInstance(name) {
|
|
77
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
78
|
+
args[_key - 1] = arguments[_key];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return getFormDataDriver(name).apply(void 0, args);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
var _General = (0, _General2.default)(),
|
|
85
|
+
getFieldClassName = _General.getFieldClassName,
|
|
86
|
+
updateFormField = _General.updateFormField;
|
|
87
|
+
|
|
88
|
+
var _getFormDataDriverIns = getFormDataDriverInstance(FormDataDriverName, {
|
|
89
|
+
form: form,
|
|
90
|
+
setForm: setForm,
|
|
91
|
+
FormFields: FormFields
|
|
92
|
+
}),
|
|
93
|
+
getFieldData = _getFormDataDriverIns.getFieldData,
|
|
94
|
+
getFormField = _getFormDataDriverIns.getFormField,
|
|
95
|
+
setFormFields = _getFormDataDriverIns.setFormFields,
|
|
96
|
+
setFormField = _getFormDataDriverIns.setFormField,
|
|
97
|
+
getFormFieldsAsArray = _getFormDataDriverIns.getFormFieldsAsArray,
|
|
98
|
+
getFormFieldsKeys = _getFormDataDriverIns.getFormFieldsKeys,
|
|
99
|
+
removeAllFormFields = _getFormDataDriverIns.removeAllFormFields; ///////////////////////////////////////////////////////////////
|
|
100
|
+
//--- OnChange Observer ---//--- START ---//
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
var _useState = (0, _react.useState)({}),
|
|
104
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
105
|
+
onChangeObservers = _useState2[0],
|
|
106
|
+
setOnChangeObservers = _useState2[1];
|
|
107
|
+
|
|
108
|
+
var addOnChangeObserver = function addOnChangeObserver(key, cb) {
|
|
109
|
+
var observerId = null;
|
|
110
|
+
setOnChangeObservers(function (state) {
|
|
111
|
+
//Set Default Value
|
|
112
|
+
if (!state[key]) state[key] = {};
|
|
113
|
+
observerId = state[key].length;
|
|
114
|
+
state[key][observerId] = cb;
|
|
115
|
+
return state;
|
|
116
|
+
});
|
|
117
|
+
return observerId;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
var removeOnChangeObserver = function removeOnChangeObserver(key, id) {
|
|
121
|
+
setOnChangeObservers(function (state) {
|
|
122
|
+
//Set Default Value
|
|
123
|
+
if (!state[key]) return state;
|
|
124
|
+
state[key] = Object.keys(state).filter(function (cbId) {
|
|
125
|
+
return cbId !== id;
|
|
126
|
+
}).map(function (cbId) {
|
|
127
|
+
return state[key][cbId];
|
|
128
|
+
});
|
|
129
|
+
return state;
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
var onChangeObserver = function onChangeObserver(key, value) {
|
|
134
|
+
if (!onChangeObservers[key] || (0, _typeof2.default)(onChangeObservers[key]) !== 'object') return;
|
|
135
|
+
var Observers = onChangeObservers[key];
|
|
136
|
+
Object.values(Observers).map(function (cb) {
|
|
137
|
+
cb({
|
|
138
|
+
value: value,
|
|
139
|
+
form: form
|
|
140
|
+
});
|
|
141
|
+
return null;
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
var onFieldChange = function onFieldChange(key, value) {
|
|
146
|
+
// if (value === getFormField(key)?.value) return false;
|
|
147
|
+
onChangeObserver(key, value);
|
|
148
|
+
setFormField(function (field) {
|
|
149
|
+
return _objectSpread(_objectSpread({}, field), {}, {
|
|
150
|
+
error: '',
|
|
151
|
+
value: value
|
|
152
|
+
});
|
|
153
|
+
}, key); // eslint-disable-next-line no-use-before-define
|
|
154
|
+
// if (autoFocusedField === key) {
|
|
155
|
+
// setTimeout(() => {
|
|
156
|
+
// // eslint-disable-next-line no-use-before-define
|
|
157
|
+
// setFieldFocus({key, form});
|
|
158
|
+
// // eslint-disable-next-line no-use-before-define
|
|
159
|
+
// setAutoFocusedField(null);
|
|
160
|
+
// }, 1);
|
|
161
|
+
// }
|
|
162
|
+
}; //--- OnChange Observer ---//--- END ---//
|
|
163
|
+
///////////////////////////////////////////////////////////////
|
|
164
|
+
///////////////////////////////////////////////////////////////
|
|
165
|
+
//--- Form Submit Blocker ---//--- START ---//
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
var _useState3 = (0, _react.useState)([]),
|
|
169
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
170
|
+
formSubmitBlockers = _useState4[0],
|
|
171
|
+
setFormSubmitBlockers = _useState4[1];
|
|
172
|
+
|
|
173
|
+
var toggleFormSubmitBlock = function toggleFormSubmitBlock(key, value) {
|
|
174
|
+
setFormSubmitBlockers(function (state) {
|
|
175
|
+
return state.includes(key) || !value ? (0, _toConsumableArray2.default)(state.filter(function (k) {
|
|
176
|
+
return k !== key;
|
|
177
|
+
})) : [].concat((0, _toConsumableArray2.default)(state), [key]);
|
|
178
|
+
});
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
var clearFormSubmitBlockers = function clearFormSubmitBlockers() {
|
|
182
|
+
return setFormSubmitBlockers([]);
|
|
183
|
+
}; //--- Form Submit Blocker ---//--- END ---//
|
|
184
|
+
///////////////////////////////////////////////////////////////
|
|
185
|
+
///////////////////////////////////////////////////////////////
|
|
186
|
+
//--- Property Observer Blocker ---//--- START ---//
|
|
187
|
+
// const [propertyObservers, setPropertyObservers] = useState({});
|
|
188
|
+
// function addPropertyObserver () {
|
|
189
|
+
// };
|
|
190
|
+
//--- Property Observer Blocker ---//--- END ---//
|
|
191
|
+
///////////////////////////////////////////////////////////////
|
|
192
|
+
///////////////////////////////////////////////////////////////
|
|
193
|
+
//--- Render Fields Controller ---//--- START ---//
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
var _useState5 = (0, _react.useState)(false),
|
|
197
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
198
|
+
isFormFieldsAdded = _useState6[0],
|
|
199
|
+
setIsFormFieldsAdded = _useState6[1];
|
|
200
|
+
|
|
201
|
+
var _useState7 = (0, _react.useState)([]),
|
|
202
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
203
|
+
renderFormFields = _useState8[0],
|
|
204
|
+
setRenderFormFieldsState = _useState8[1];
|
|
205
|
+
|
|
206
|
+
var setRenderFormFields = function setRenderFormFields(data) {
|
|
207
|
+
setIsFormFieldsAdded(true); // eslint-disable-next-line no-use-before-define
|
|
208
|
+
|
|
209
|
+
removeRenderFields(renderFormFields); // eslint-disable-next-line no-use-before-define
|
|
210
|
+
|
|
211
|
+
resetIsInitFocused();
|
|
212
|
+
setRenderFormFieldsState(data);
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
var addRenderFields = function addRenderFields(fields) {
|
|
216
|
+
setRenderFormFieldsState(function (state) {
|
|
217
|
+
return [].concat((0, _toConsumableArray2.default)(state), (0, _toConsumableArray2.default)(fields));
|
|
218
|
+
});
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
var removeRenderFields = function removeRenderFields(fields) {
|
|
222
|
+
setRenderFormFieldsState(function (state) {
|
|
223
|
+
return state.filter(function (field) {
|
|
224
|
+
return !fields.includes(field);
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
var _useState9 = (0, _react.useState)(false),
|
|
230
|
+
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
231
|
+
isFormRendered = _useState10[0],
|
|
232
|
+
setIsFormRendered = _useState10[1]; //On Render Fields Change
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
(0, _react.useEffect)(function () {
|
|
236
|
+
if (isFormFieldsAdded) setIsFormRendered(false); //Add Form Fields
|
|
237
|
+
|
|
238
|
+
if (renderFormFields.length === 0) return null;
|
|
239
|
+
setFormFields(function (fields) {
|
|
240
|
+
return renderFormFields.reduce(function (result, key) {
|
|
241
|
+
var _field$className;
|
|
242
|
+
|
|
243
|
+
var fieldData = getFieldData(key);
|
|
244
|
+
var field = !getFormField(key) ? fieldData : getFormField(key); // eslint-disable-next-line no-use-before-define
|
|
245
|
+
|
|
246
|
+
if (!(field !== null && field !== void 0 && field.className) || (field === null || field === void 0 ? void 0 : (_field$className = field.className) === null || _field$className === void 0 ? void 0 : _field$className.indexOf(getFieldClassName(key, FormType))) === -1) {
|
|
247
|
+
// eslint-disable-next-line no-use-before-define
|
|
248
|
+
field.className = "".concat(field === null || field === void 0 ? void 0 : field.className, " ").concat(getFieldClassName(key, FormType));
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
if ((0, _typeof2.default)(fieldData === null || fieldData === void 0 ? void 0 : fieldData.label) === 'object') {
|
|
252
|
+
field.label = fieldData.label[FormType] || fieldData.label.default;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
field.ref = /*#__PURE__*/(0, _react.createRef)();
|
|
256
|
+
field.isValueChangedByUser = false; //Is Field Value Changed By USER
|
|
257
|
+
// eslint-disable-next-line no-use-before-define
|
|
258
|
+
|
|
259
|
+
addOnFieldRenderedObserver(key, function () {
|
|
260
|
+
var _getFormField, _getFormField$ref, _getFormField$ref$cur;
|
|
261
|
+
|
|
262
|
+
var element = (_getFormField = getFormField(key)) === null || _getFormField === void 0 ? void 0 : (_getFormField$ref = _getFormField.ref) === null || _getFormField$ref === void 0 ? void 0 : (_getFormField$ref$cur = _getFormField$ref.current) === null || _getFormField$ref$cur === void 0 ? void 0 : _getFormField$ref$cur.querySelector((field === null || field === void 0 ? void 0 : field.focusSelector) || 'input');
|
|
263
|
+
|
|
264
|
+
var handler = function handler() {
|
|
265
|
+
return setFormField({
|
|
266
|
+
isValueChangedByUser: true
|
|
267
|
+
}, key);
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
element === null || element === void 0 ? void 0 : element.addEventListener('paste', handler, {
|
|
271
|
+
once: true
|
|
272
|
+
});
|
|
273
|
+
element === null || element === void 0 ? void 0 : element.addEventListener('keypress', handler, {
|
|
274
|
+
once: true
|
|
275
|
+
});
|
|
276
|
+
}, true);
|
|
277
|
+
return updateFormField(result, field, key);
|
|
278
|
+
}, fields);
|
|
279
|
+
});
|
|
280
|
+
}, [renderFormFields]);
|
|
281
|
+
|
|
282
|
+
var _useState11 = (0, _react.useState)([]),
|
|
283
|
+
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
284
|
+
onFormRenderObservers = _useState12[0],
|
|
285
|
+
setOnFormRenderObservers = _useState12[1];
|
|
286
|
+
|
|
287
|
+
var addOnFormRenderObserver = function addOnFormRenderObserver(cb) {
|
|
288
|
+
var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
289
|
+
_ref2$once = _ref2.once,
|
|
290
|
+
once = _ref2$once === void 0 ? false : _ref2$once;
|
|
291
|
+
|
|
292
|
+
setOnFormRenderObservers(function (state) {
|
|
293
|
+
return [].concat((0, _toConsumableArray2.default)(state), [{
|
|
294
|
+
cb: cb,
|
|
295
|
+
once: once,
|
|
296
|
+
isWorkedOut: false
|
|
297
|
+
}]);
|
|
298
|
+
});
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
var updateOnFormRenderObserver = function updateOnFormRenderObserver(key, data) {
|
|
302
|
+
setOnFormRenderObservers(function (state) {
|
|
303
|
+
var copy = (0, _toConsumableArray2.default)(state);
|
|
304
|
+
copy[key] = _objectSpread(_objectSpread({}, state[key]), data);
|
|
305
|
+
return copy;
|
|
306
|
+
});
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
var onFormRenderWorker = function onFormRenderWorker() {
|
|
310
|
+
onFormRenderObservers.map(function (_ref3, key) {
|
|
311
|
+
var cb = _ref3.cb,
|
|
312
|
+
once = _ref3.once,
|
|
313
|
+
isWorkedOut = _ref3.isWorkedOut;
|
|
314
|
+
if (once && isWorkedOut) return null;
|
|
315
|
+
cb(form);
|
|
316
|
+
updateOnFormRenderObserver(key, {
|
|
317
|
+
isWorkedOut: true
|
|
318
|
+
});
|
|
319
|
+
return null;
|
|
320
|
+
});
|
|
321
|
+
}; //On Form Rendered
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
(0, _react.useEffect)(function () {
|
|
325
|
+
if (isFormRendered || !onFormRenderObservers.length) return null;
|
|
326
|
+
|
|
327
|
+
if (getFormFieldsKeys(form).length === renderFormFields.length) {
|
|
328
|
+
setIsFormRendered(true);
|
|
329
|
+
onFormRenderWorker();
|
|
330
|
+
}
|
|
331
|
+
}, [form, renderFormFields]); //--- Render Fields Controller ---//--- END ---//
|
|
332
|
+
///////////////////////////////////////////////////////////////
|
|
333
|
+
///////////////////////////////////////////////////////////////
|
|
334
|
+
//--- HIGHTLIGHT LABELS IF FIELD WITH ERROR ---//--- START ---//
|
|
335
|
+
|
|
336
|
+
var hightliteErrorLabels = function hightliteErrorLabels() {
|
|
337
|
+
var fields = getFormFieldsAsArray();
|
|
338
|
+
var filtered = fields === null || fields === void 0 ? void 0 : fields.reduce(function (result, field) {
|
|
339
|
+
if (field !== null && field !== void 0 && field.errorLabelHightlite) {
|
|
340
|
+
// eslint-disable-next-line no-use-before-define
|
|
341
|
+
result.push(_objectSpread(_objectSpread({}, field), {}, {
|
|
342
|
+
className: getFieldClassName(field === null || field === void 0 ? void 0 : field.key, FormType)
|
|
343
|
+
}));
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
return result;
|
|
347
|
+
}, []);
|
|
348
|
+
filtered === null || filtered === void 0 ? void 0 : filtered.map(function (field) {
|
|
349
|
+
var formField = document.querySelector(".".concat(field === null || field === void 0 ? void 0 : field.className));
|
|
350
|
+
if (!formField) return null;
|
|
351
|
+
formField.classList.remove('errorLabelHightlite');
|
|
352
|
+
|
|
353
|
+
if (field !== null && field !== void 0 && field.error) {
|
|
354
|
+
formField.classList.add('errorLabelHightlite');
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
return null;
|
|
358
|
+
});
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
(0, _react.useEffect)(function () {
|
|
362
|
+
hightliteErrorLabels();
|
|
363
|
+
}, [form]); //--- HIGHTLIGHT LABELS IF FIELD WITH ERROR ---//--- END ---//
|
|
364
|
+
///////////////////////////////////////////////////////////////
|
|
365
|
+
///////////////////////////////////////////////////////////////
|
|
366
|
+
//--- Fields Focus Controller ---//--- START ---//
|
|
367
|
+
|
|
368
|
+
var _useState13 = (0, _react.useState)(false),
|
|
369
|
+
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
370
|
+
isInitFocused = _useState14[0],
|
|
371
|
+
setIsInitFocused = _useState14[1];
|
|
372
|
+
|
|
373
|
+
var _useState15 = (0, _react.useState)(null),
|
|
374
|
+
_useState16 = (0, _slicedToArray2.default)(_useState15, 2),
|
|
375
|
+
autoFocusedField = _useState16[0],
|
|
376
|
+
setAutoFocusedField = _useState16[1];
|
|
377
|
+
|
|
378
|
+
var setFirstFieldInitFocused = function setFirstFieldInitFocused() {
|
|
379
|
+
return setIsInitFocused(true);
|
|
380
|
+
};
|
|
381
|
+
|
|
382
|
+
var resetIsInitFocused = function resetIsInitFocused() {
|
|
383
|
+
return setIsInitFocused(false);
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
var toggleFieldFocus = function toggleFieldFocus(_ref4) {
|
|
387
|
+
var key = _ref4.key,
|
|
388
|
+
_ref4$cb = _ref4.cb,
|
|
389
|
+
cb = _ref4$cb === void 0 ? function () {} : _ref4$cb,
|
|
390
|
+
argForm = _ref4.form,
|
|
391
|
+
field = _ref4.field;
|
|
392
|
+
var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'focus';
|
|
393
|
+
if (!key) return null;
|
|
394
|
+
if (!argForm) argForm = form;
|
|
395
|
+
var formField = field || getFormField(key, argForm);
|
|
396
|
+
|
|
397
|
+
if (!formField || !formField.ref) {
|
|
398
|
+
return false;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
if (action === 'focus' && FocusControllerProps.onlyEmptyFieldAutoFocus && Boolean(formField === null || formField === void 0 ? void 0 : formField.value)) return null;
|
|
402
|
+
setTimeout(function () {
|
|
403
|
+
var _formField$ref$curren, _formField$ref$curren2;
|
|
404
|
+
|
|
405
|
+
(_formField$ref$curren = formField.ref.current) === null || _formField$ref$curren === void 0 ? void 0 : (_formField$ref$curren2 = _formField$ref$curren.querySelector((formField === null || formField === void 0 ? void 0 : formField.focusSelector) || 'input')) === null || _formField$ref$curren2 === void 0 ? void 0 : _formField$ref$curren2[action]();
|
|
406
|
+
cb();
|
|
407
|
+
}, 50);
|
|
408
|
+
};
|
|
409
|
+
|
|
410
|
+
var setFieldFocus = function setFieldFocus(_ref5) {
|
|
411
|
+
var key = _ref5.key,
|
|
412
|
+
_ref5$cb = _ref5.cb,
|
|
413
|
+
cb = _ref5$cb === void 0 ? function () {} : _ref5$cb,
|
|
414
|
+
argForm = _ref5.form,
|
|
415
|
+
field = _ref5.field;
|
|
416
|
+
return toggleFieldFocus({
|
|
417
|
+
key: key,
|
|
418
|
+
cb: cb,
|
|
419
|
+
form: argForm,
|
|
420
|
+
field: field
|
|
421
|
+
}, 'focus');
|
|
422
|
+
};
|
|
423
|
+
|
|
424
|
+
var setFieldBlur = function setFieldBlur(_ref6) {
|
|
425
|
+
var key = _ref6.key,
|
|
426
|
+
_ref6$cb = _ref6.cb,
|
|
427
|
+
cb = _ref6$cb === void 0 ? function () {} : _ref6$cb,
|
|
428
|
+
argForm = _ref6.form,
|
|
429
|
+
field = _ref6.field;
|
|
430
|
+
return toggleFieldFocus({
|
|
431
|
+
key: key,
|
|
432
|
+
cb: cb,
|
|
433
|
+
form: argForm,
|
|
434
|
+
field: field
|
|
435
|
+
}, 'blur');
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
var setFirstFieldFocus = function setFirstFieldFocus() {
|
|
439
|
+
var _field;
|
|
440
|
+
|
|
441
|
+
var field = null;
|
|
442
|
+
|
|
443
|
+
for (var i = 0; i < renderFormFields.length && !field; ++i) {
|
|
444
|
+
var key = renderFormFields[i];
|
|
445
|
+
var tmpField = getFormField(key);
|
|
446
|
+
if (tmpField && !(tmpField !== null && tmpField !== void 0 && tmpField.disabled)) field = tmpField;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
if (!field) return false;
|
|
450
|
+
|
|
451
|
+
if (FocusControllerProps.onlyEmptyFieldAutoFocus && Boolean((_field = field) === null || _field === void 0 ? void 0 : _field.value)) {
|
|
452
|
+
setFirstFieldInitFocused();
|
|
453
|
+
return false;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
setAutoFocusedField(field.key);
|
|
457
|
+
|
|
458
|
+
var callback = function callback() {
|
|
459
|
+
setFormField({
|
|
460
|
+
value: field.value
|
|
461
|
+
}, field.key);
|
|
462
|
+
setFirstFieldInitFocused();
|
|
463
|
+
};
|
|
464
|
+
|
|
465
|
+
setTimeout(function () {
|
|
466
|
+
return setFieldFocus({
|
|
467
|
+
key: field.key,
|
|
468
|
+
cb: callback,
|
|
469
|
+
form: form
|
|
470
|
+
});
|
|
471
|
+
}, 50);
|
|
472
|
+
};
|
|
473
|
+
|
|
474
|
+
var _useState17 = (0, _react.useState)({}),
|
|
475
|
+
_useState18 = (0, _slicedToArray2.default)(_useState17, 2),
|
|
476
|
+
onFieldFocusCallbacks = _useState18[0],
|
|
477
|
+
setOnFieldFocusCallbacks = _useState18[1];
|
|
478
|
+
|
|
479
|
+
var addOnFieldFocusCallback = function addOnFieldFocusCallback(key, cb) {
|
|
480
|
+
setOnFieldFocusCallbacks(function (state) {
|
|
481
|
+
var stateCopy = _objectSpread({}, state);
|
|
482
|
+
|
|
483
|
+
if (!state[key]) stateCopy[key] = [];
|
|
484
|
+
stateCopy[key].push(cb);
|
|
485
|
+
return stateCopy;
|
|
486
|
+
});
|
|
487
|
+
};
|
|
488
|
+
|
|
489
|
+
var callOnFieldFocusCallbacks = function callOnFieldFocusCallbacks(key) {
|
|
490
|
+
var _onFieldFocusCallback;
|
|
491
|
+
|
|
492
|
+
if (!Array.isArray(onFieldFocusCallbacks[key])) return null;
|
|
493
|
+
(_onFieldFocusCallback = onFieldFocusCallbacks[key]) === null || _onFieldFocusCallback === void 0 ? void 0 : _onFieldFocusCallback.map(function (cb) {
|
|
494
|
+
return cb();
|
|
495
|
+
});
|
|
496
|
+
};
|
|
497
|
+
|
|
498
|
+
var _useState19 = (0, _react.useState)([]),
|
|
499
|
+
_useState20 = (0, _slicedToArray2.default)(_useState19, 2),
|
|
500
|
+
focusOnRenderFields = _useState20[0],
|
|
501
|
+
setFocusOnRenderFields = _useState20[1];
|
|
502
|
+
|
|
503
|
+
var addFocusFieldOnRender = function addFocusFieldOnRender(key, cb) {
|
|
504
|
+
setFocusOnRenderFields(function (state) {
|
|
505
|
+
return [].concat((0, _toConsumableArray2.default)(state), [key]);
|
|
506
|
+
});
|
|
507
|
+
if (cb) addOnFieldFocusCallback(key, cb);
|
|
508
|
+
};
|
|
509
|
+
|
|
510
|
+
var removeFocusFieldOnRender = function removeFocusFieldOnRender(key) {
|
|
511
|
+
setFocusOnRenderFields(function (state) {
|
|
512
|
+
return state.filter(function (field) {
|
|
513
|
+
return field !== key;
|
|
514
|
+
});
|
|
515
|
+
});
|
|
516
|
+
};
|
|
517
|
+
|
|
518
|
+
(0, _react.useEffect)(function () {
|
|
519
|
+
if (FocusControllerProps.setAutoFocus && !isInitFocused && !autoFocusedField) setFirstFieldFocus();
|
|
520
|
+
|
|
521
|
+
if (focusOnRenderFields.length) {
|
|
522
|
+
var _getFormFieldsKeys;
|
|
523
|
+
|
|
524
|
+
(_getFormFieldsKeys = getFormFieldsKeys(form)) === null || _getFormFieldsKeys === void 0 ? void 0 : _getFormFieldsKeys.map(function (key) {
|
|
525
|
+
var _getFormField2, _getFormField2$value;
|
|
526
|
+
|
|
527
|
+
if (focusOnRenderFields.includes(key) && ((_getFormField2 = getFormField(key)) === null || _getFormField2 === void 0 ? void 0 : (_getFormField2$value = _getFormField2.value) === null || _getFormField2$value === void 0 ? void 0 : _getFormField2$value.length) === 0) {
|
|
528
|
+
var cb = function cb() {
|
|
529
|
+
removeFocusFieldOnRender(key);
|
|
530
|
+
callOnFieldFocusCallbacks(key);
|
|
531
|
+
};
|
|
532
|
+
|
|
533
|
+
setFieldFocus({
|
|
534
|
+
key: key,
|
|
535
|
+
form: form,
|
|
536
|
+
cb: cb
|
|
537
|
+
});
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
return null;
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
}, [form, focusOnRenderFields, isInitFocused]);
|
|
544
|
+
(0, _react.useEffect)(function () {
|
|
545
|
+
setAutoFocusedField(null);
|
|
546
|
+
}, [isInitFocused]);
|
|
547
|
+
(0, _react.useEffect)(function () {
|
|
548
|
+
resetIsInitFocused();
|
|
549
|
+
}, [FormType]); //Remove Focus From Autocomplete field !!! TODO
|
|
550
|
+
// useEffect(() => {
|
|
551
|
+
// if (!autoFocusedField) return null;
|
|
552
|
+
// const field = getFormField(autoFocusedField);
|
|
553
|
+
// if (field?.value !== '' && !field?.isValueChangedByUser) {
|
|
554
|
+
// setFieldBlur({key: autoFocusedField, form});
|
|
555
|
+
// }
|
|
556
|
+
// }, [autoFocusedField, form]);
|
|
557
|
+
//--- Fields Focus Controller ---//--- END ---//
|
|
558
|
+
///////////////////////////////////////////////////////////////
|
|
559
|
+
///////////////////////////////////////////////////////////////
|
|
560
|
+
//--- OnFieldRendered Observer ---//--- START ---//
|
|
561
|
+
|
|
562
|
+
var _useState21 = (0, _react.useState)({}),
|
|
563
|
+
_useState22 = (0, _slicedToArray2.default)(_useState21, 2),
|
|
564
|
+
onFieldRenderedObservers = _useState22[0],
|
|
565
|
+
setOnFieldRenderedObservers = _useState22[1];
|
|
566
|
+
|
|
567
|
+
var _useState23 = (0, _react.useState)(false),
|
|
568
|
+
_useState24 = (0, _slicedToArray2.default)(_useState23, 2),
|
|
569
|
+
isFieldObserversReset = _useState24[0],
|
|
570
|
+
setIsFieldObserversReset = _useState24[1];
|
|
571
|
+
|
|
572
|
+
var resetOnFieldRenderObserversWorkedOut = function resetOnFieldRenderObserversWorkedOut() {
|
|
573
|
+
if (!isFieldObserversReset && renderFormFields.length) {
|
|
574
|
+
renderFormFields.map(function (key) {
|
|
575
|
+
setFormField({
|
|
576
|
+
isOnRenderObserversWorkedOut: false
|
|
577
|
+
}, key);
|
|
578
|
+
return key;
|
|
579
|
+
});
|
|
580
|
+
setIsFieldObserversReset(true);
|
|
581
|
+
}
|
|
582
|
+
};
|
|
583
|
+
|
|
584
|
+
var addOnFieldRenderedObserver = function addOnFieldRenderedObserver(key, cb) {
|
|
585
|
+
var isOnceCallable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
586
|
+
var observerId = null;
|
|
587
|
+
setOnFieldRenderedObservers(function (state) {
|
|
588
|
+
//Set Default Value
|
|
589
|
+
if (!state[key]) state[key] = {};
|
|
590
|
+
observerId = Object.keys(state[key]).length || 0;
|
|
591
|
+
state[key][observerId] = {
|
|
592
|
+
f: cb,
|
|
593
|
+
isOnceCallable: isOnceCallable
|
|
594
|
+
};
|
|
595
|
+
return state;
|
|
596
|
+
});
|
|
597
|
+
return observerId;
|
|
598
|
+
};
|
|
599
|
+
|
|
600
|
+
var updateOnFieldRenderedObserver = function updateOnFieldRenderedObserver(key, id, data) {
|
|
601
|
+
setOnFieldRenderedObservers(function (state) {
|
|
602
|
+
//Set Default Value
|
|
603
|
+
if (!state[key]) return state;
|
|
604
|
+
state[key][id] = _objectSpread(_objectSpread({}, state[key][id]), data);
|
|
605
|
+
return state;
|
|
606
|
+
});
|
|
607
|
+
};
|
|
608
|
+
|
|
609
|
+
var removeOnFieldRenderedObserver = function removeOnFieldRenderedObserver(key, id) {
|
|
610
|
+
setOnFieldRenderedObservers(function (state) {
|
|
611
|
+
//Set Default Value
|
|
612
|
+
if (!state[key]) return state;
|
|
613
|
+
state[key] = Object.keys(state).filter(function (cbId) {
|
|
614
|
+
return cbId !== id;
|
|
615
|
+
}).map(function (cbId) {
|
|
616
|
+
return state[key][cbId];
|
|
617
|
+
});
|
|
618
|
+
return state;
|
|
619
|
+
});
|
|
620
|
+
};
|
|
621
|
+
|
|
622
|
+
var onFieldRenderedObserver = function onFieldRenderedObserver(key, data) {
|
|
623
|
+
if (!onFieldRenderedObservers[key] || (0, _typeof2.default)(onFieldRenderedObservers[key]) !== 'object') return;
|
|
624
|
+
var Observers = onFieldRenderedObservers[key];
|
|
625
|
+
var FilteredObservers = Object.values(Observers).filter(function (observer) {
|
|
626
|
+
return !(observer !== null && observer !== void 0 && observer.isObserverWorkedOut);
|
|
627
|
+
});
|
|
628
|
+
if (FilteredObservers.length === 0) return null;
|
|
629
|
+
setFormField({
|
|
630
|
+
isOnRenderObserversWorkedOut: true
|
|
631
|
+
}, key);
|
|
632
|
+
FilteredObservers.map(function (_ref7, id) {
|
|
633
|
+
var f = _ref7.f,
|
|
634
|
+
isOnceCallable = _ref7.isOnceCallable;
|
|
635
|
+
f(data);
|
|
636
|
+
if (isOnceCallable) updateOnFieldRenderedObserver(key, id, {
|
|
637
|
+
isObserverWorkedOut: true
|
|
638
|
+
});
|
|
639
|
+
return null;
|
|
640
|
+
});
|
|
641
|
+
};
|
|
642
|
+
|
|
643
|
+
var onRenderObserverWorker = function onRenderObserverWorker() {
|
|
644
|
+
var _getFormFieldsKeys2;
|
|
645
|
+
|
|
646
|
+
return (_getFormFieldsKeys2 = getFormFieldsKeys(form)) === null || _getFormFieldsKeys2 === void 0 ? void 0 : _getFormFieldsKeys2.map(function (key) {
|
|
647
|
+
//OnFieldRendered
|
|
648
|
+
var fieldData = getFormField(key);
|
|
649
|
+
|
|
650
|
+
if (!(fieldData !== null && fieldData !== void 0 && fieldData.isOnRenderObserversWorkedOut)) {
|
|
651
|
+
onFieldRenderedObserver(key, fieldData);
|
|
652
|
+
return {
|
|
653
|
+
key: key,
|
|
654
|
+
isWorkedOut: true
|
|
655
|
+
};
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
return {
|
|
659
|
+
key: key,
|
|
660
|
+
isWorkedOut: false
|
|
661
|
+
};
|
|
662
|
+
});
|
|
663
|
+
};
|
|
664
|
+
|
|
665
|
+
(0, _react.useEffect)(function () {
|
|
666
|
+
resetOnFieldRenderObserversWorkedOut();
|
|
667
|
+
onRenderObserverWorker();
|
|
668
|
+
}, [form]);
|
|
669
|
+
(0, _react.useEffect)(function () {
|
|
670
|
+
setIsFieldObserversReset(false);
|
|
671
|
+
}, [FormType]); //--- OnFieldRendered Observer ---//--- END ---//
|
|
672
|
+
///////////////////////////////////////////////////////////////
|
|
673
|
+
///////////////////////////////////////////////////////////////
|
|
674
|
+
//Detect What Changed || TRY TO DO
|
|
675
|
+
// const compare = async (prev, current) => {
|
|
676
|
+
// if (!prev) return current;
|
|
677
|
+
// return new Promise((resolve) => {
|
|
678
|
+
// Object.keys(current).reduce((result, key, i, arr) => {
|
|
679
|
+
// //If PROPERTY is NOT EXISTS BEFORE
|
|
680
|
+
// if ([null, undefined].includes(prev[key])) {
|
|
681
|
+
// result[key] = current[key];
|
|
682
|
+
// }
|
|
683
|
+
// //If PROPERTY is AN OBJECT
|
|
684
|
+
// else if (typeof current[key] === 'object') {
|
|
685
|
+
// //If PROPERTY is EXISTS BEFORE
|
|
686
|
+
// const innerCompare = compare(prev[key], current[key]);
|
|
687
|
+
// // //If SOMETHING CHANGED
|
|
688
|
+
// if (innerCompare?.length) result[key] = innerCompare;
|
|
689
|
+
// }
|
|
690
|
+
// //If PROPERTY is AN SIMPLE VALUE and PROPERTY CHANGED
|
|
691
|
+
// else if (prev[key] !== current[key]) {
|
|
692
|
+
// result[key] = current[key];
|
|
693
|
+
// }
|
|
694
|
+
// if (i === arr.length-1) {
|
|
695
|
+
// resolve(result);
|
|
696
|
+
// }
|
|
697
|
+
// return result;
|
|
698
|
+
// }, {});
|
|
699
|
+
// });
|
|
700
|
+
// };
|
|
701
|
+
|
|
702
|
+
return {
|
|
703
|
+
FormDataDrivers: FormDataDrivers,
|
|
704
|
+
//OnChangeObserver
|
|
705
|
+
addOnChangeObserver: addOnChangeObserver,
|
|
706
|
+
removeOnChangeObserver: removeOnChangeObserver,
|
|
707
|
+
onChangeObservers: onChangeObservers,
|
|
708
|
+
//OnChangeHandler
|
|
709
|
+
onFieldChange: onFieldChange,
|
|
710
|
+
//Form Submit Blocker
|
|
711
|
+
toggleFormSubmitBlock: toggleFormSubmitBlock,
|
|
712
|
+
clearFormSubmitBlockers: clearFormSubmitBlockers,
|
|
713
|
+
isFormSubmitBlocked: Boolean(formSubmitBlockers.length),
|
|
714
|
+
//Property Observers
|
|
715
|
+
// addPropertyObserver,
|
|
716
|
+
//Render Fields
|
|
717
|
+
renderFormFields: renderFormFields,
|
|
718
|
+
setRenderFormFields: setRenderFormFields,
|
|
719
|
+
addRenderFields: addRenderFields,
|
|
720
|
+
removeRenderFields: removeRenderFields,
|
|
721
|
+
getFieldClassName: getFieldClassName,
|
|
722
|
+
//Field Focus Controller
|
|
723
|
+
isInitFocused: isInitFocused,
|
|
724
|
+
setFirstFieldInitFocused: setFirstFieldInitFocused,
|
|
725
|
+
resetIsInitFocused: resetIsInitFocused,
|
|
726
|
+
setFieldFocus: setFieldFocus,
|
|
727
|
+
setFieldBlur: setFieldBlur,
|
|
728
|
+
setFirstFieldFocus: setFirstFieldFocus,
|
|
729
|
+
autoFocusedField: autoFocusedField,
|
|
730
|
+
addFocusFieldOnRender: addFocusFieldOnRender,
|
|
731
|
+
removeFocusFieldOnRender: removeFocusFieldOnRender,
|
|
732
|
+
//Field Render Controller
|
|
733
|
+
addOnFieldRenderedObserver: addOnFieldRenderedObserver,
|
|
734
|
+
removeOnFieldRenderedObserver: removeOnFieldRenderedObserver,
|
|
735
|
+
onFieldRenderedObservers: onFieldRenderedObservers,
|
|
736
|
+
setFormField: setFormField,
|
|
737
|
+
setFormFields: setFormFields,
|
|
738
|
+
removeAllFormFields: removeAllFormFields,
|
|
739
|
+
updateFormField: updateFormField,
|
|
740
|
+
addOnFormRenderObserver: addOnFormRenderObserver,
|
|
741
|
+
renderFields: function renderFields(_ref8) {
|
|
742
|
+
var _ref8$form = _ref8.form,
|
|
743
|
+
argForm = _ref8$form === void 0 ? form : _ref8$form,
|
|
744
|
+
_ref8$fields = _ref8.fields,
|
|
745
|
+
argFields = _ref8$fields === void 0 ? renderFormFields : _ref8$fields,
|
|
746
|
+
_ref8$cols = _ref8.cols,
|
|
747
|
+
argCols = _ref8$cols === void 0 ? 1 : _ref8$cols,
|
|
748
|
+
RenderFieldComponent = _ref8.RenderFieldComponent;
|
|
749
|
+
return (0, _RenderFields.default)({
|
|
750
|
+
form: argForm,
|
|
751
|
+
fields: argFields,
|
|
752
|
+
cols: argCols,
|
|
753
|
+
RenderFieldComponent: RenderFieldComponent,
|
|
754
|
+
onFieldChange: onFieldChange,
|
|
755
|
+
FormDataDriver: getFormDataDriver(FormDataDriverName)
|
|
756
|
+
});
|
|
757
|
+
}
|
|
758
|
+
};
|
|
759
|
+
}
|