@akinon/akiform-builder 1.2.1 → 1.3.1
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/__tests__/akiform-builder.test.js +345 -354
- package/dist/cjs/akiform-builder.d.ts +2 -1
- package/dist/cjs/akiform-builder.d.ts.map +1 -1
- package/dist/cjs/akiform-builder.js +243 -68
- package/dist/cjs/field-builder.d.ts +25 -6
- package/dist/cjs/field-builder.d.ts.map +1 -1
- package/dist/cjs/field-builder.js +83 -17
- package/dist/cjs/i18n/index.d.ts +1 -4
- package/dist/cjs/i18n/index.d.ts.map +1 -1
- package/dist/cjs/i18n/translations/en.d.ts +9 -2
- package/dist/cjs/i18n/translations/en.d.ts.map +1 -1
- package/dist/cjs/i18n/translations/en.js +10 -3
- package/dist/cjs/i18n/translations/tr.d.ts +9 -2
- package/dist/cjs/i18n/translations/tr.d.ts.map +1 -1
- package/dist/cjs/i18n/translations/tr.js +10 -3
- package/dist/cjs/src/akiform-builder.d.ts +1 -1
- package/dist/cjs/src/akiform-builder.d.ts.map +1 -1
- package/dist/cjs/src/akiform-builder.js +1 -1
- package/dist/cjs/src/field-builder.d.ts +3 -3
- package/dist/cjs/src/field-builder.d.ts.map +1 -1
- package/dist/cjs/src/i18n/index.d.ts +1 -4
- package/dist/cjs/src/i18n/index.d.ts.map +1 -1
- package/dist/cjs/src/types.d.ts +4 -4
- package/dist/cjs/src/types.d.ts.map +1 -1
- package/dist/cjs/types.d.ts +30 -6
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/__tests__/akiform-builder.test.js +345 -354
- package/dist/esm/akiform-builder.d.ts +2 -1
- package/dist/esm/akiform-builder.d.ts.map +1 -1
- package/dist/esm/akiform-builder.js +243 -68
- package/dist/esm/field-builder.d.ts +25 -6
- package/dist/esm/field-builder.d.ts.map +1 -1
- package/dist/esm/field-builder.js +83 -17
- package/dist/esm/i18n/index.d.ts +1 -4
- package/dist/esm/i18n/index.d.ts.map +1 -1
- package/dist/esm/i18n/translations/en.d.ts +9 -2
- package/dist/esm/i18n/translations/en.d.ts.map +1 -1
- package/dist/esm/i18n/translations/en.js +10 -3
- package/dist/esm/i18n/translations/tr.d.ts +9 -2
- package/dist/esm/i18n/translations/tr.d.ts.map +1 -1
- package/dist/esm/i18n/translations/tr.js +10 -3
- package/dist/esm/src/akiform-builder.d.ts +1 -1
- package/dist/esm/src/akiform-builder.d.ts.map +1 -1
- package/dist/esm/src/akiform-builder.js +1 -1
- package/dist/esm/src/field-builder.d.ts +3 -3
- package/dist/esm/src/field-builder.d.ts.map +1 -1
- package/dist/esm/src/i18n/index.d.ts +1 -4
- package/dist/esm/src/i18n/index.d.ts.map +1 -1
- package/dist/esm/src/types.d.ts +4 -4
- package/dist/esm/src/types.d.ts.map +1 -1
- package/dist/esm/types.d.ts +30 -6
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +28 -23
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import './index.css';
|
|
1
2
|
import { FieldValues } from '@akinon/akiform';
|
|
2
3
|
import React from 'react';
|
|
3
|
-
import { AkiformBuilderProps, AkiformBuilderRef } from './types';
|
|
4
|
+
import type { AkiformBuilderProps, AkiformBuilderRef } from './types';
|
|
4
5
|
export declare const THROTTLE_DELAY = 300;
|
|
5
6
|
export declare const AkiformBuilder: React.ForwardRefExoticComponent<AkiformBuilderProps<FieldValues> & React.RefAttributes<AkiformBuilderRef<FieldValues>>>;
|
|
6
7
|
//# sourceMappingURL=akiform-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"akiform-builder.d.ts","sourceRoot":"","sources":["../../src/akiform-builder.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"akiform-builder.d.ts","sourceRoot":"","sources":["../../src/akiform-builder.tsx"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,OAAO,EAML,WAAW,EAMZ,MAAM,iBAAiB,CAAC;AAczB,OAAO,KAWN,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAQlB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,cAAc,MAAM,CAAC;AAgXlC,eAAO,MAAM,cAAc,yHA+V1B,CAAC"}
|
|
@@ -12,36 +12,123 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.AkiformBuilder = exports.THROTTLE_DELAY = void 0;
|
|
15
|
+
require("./index.css");
|
|
15
16
|
const akiform_1 = require("@akinon/akiform");
|
|
16
17
|
const akival_1 = require("@akinon/akival");
|
|
18
|
+
const icons_1 = require("@akinon/icons");
|
|
17
19
|
const ui_button_1 = require("@akinon/ui-button");
|
|
18
20
|
const ui_checkbox_1 = require("@akinon/ui-checkbox");
|
|
19
21
|
const ui_collapse_1 = require("@akinon/ui-collapse");
|
|
20
22
|
const ui_date_picker_1 = require("@akinon/ui-date-picker");
|
|
23
|
+
const ui_divider_1 = require("@akinon/ui-divider");
|
|
21
24
|
const ui_input_1 = require("@akinon/ui-input");
|
|
22
25
|
const ui_input_number_1 = require("@akinon/ui-input-number");
|
|
26
|
+
const ui_layout_1 = require("@akinon/ui-layout");
|
|
23
27
|
const ui_select_1 = require("@akinon/ui-select");
|
|
24
|
-
const
|
|
28
|
+
const ui_typography_1 = require("@akinon/ui-typography");
|
|
29
|
+
const clsx_1 = require("clsx");
|
|
25
30
|
const react_1 = require("react");
|
|
26
31
|
const i18n_1 = require("./i18n");
|
|
27
32
|
exports.THROTTLE_DELAY = 300; // ms
|
|
33
|
+
const checkIsDisabled = ({ field, formValues }) => {
|
|
34
|
+
var _a;
|
|
35
|
+
const configDisabledProperty = (_a = field.config) === null || _a === void 0 ? void 0 : _a.disabled;
|
|
36
|
+
return typeof configDisabledProperty === 'function'
|
|
37
|
+
? configDisabledProperty(formValues)
|
|
38
|
+
: !!configDisabledProperty;
|
|
39
|
+
};
|
|
40
|
+
const checkIsVisible = ({ field, formValues }) => {
|
|
41
|
+
var _a;
|
|
42
|
+
const configVisibleProperty = (_a = field.config) === null || _a === void 0 ? void 0 : _a.visible;
|
|
43
|
+
return typeof configVisibleProperty === 'function'
|
|
44
|
+
? configVisibleProperty(formValues)
|
|
45
|
+
: configVisibleProperty !== false;
|
|
46
|
+
};
|
|
28
47
|
const SectionComponent = ({ field, control, formValues, formState, layout, layoutOptions }) => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
49
|
+
const { errors } = formState;
|
|
50
|
+
if (field.collapsible) {
|
|
51
|
+
return (react_1.default.createElement(ui_collapse_1.Collapse, { defaultActiveKey: field.defaultExpanded ? [field.key] : [], expandIcon: panelProps => ({
|
|
52
|
+
name: 'circle-down',
|
|
53
|
+
style: {
|
|
54
|
+
color: 'var(--color-azure-500)',
|
|
55
|
+
transform: panelProps.isActive ? 'rotate(-180deg)' : 'rotate(0deg)',
|
|
56
|
+
transition: 'transform 0.3s'
|
|
57
|
+
},
|
|
58
|
+
size: 20
|
|
59
|
+
}), items: [
|
|
60
|
+
{
|
|
61
|
+
label: (react_1.default.createElement("div", { className: "akiform-builder-form-actions" },
|
|
62
|
+
react_1.default.createElement(ui_typography_1.Text, { strong: true }, field.label),
|
|
63
|
+
Object.keys(errors).length > 0 ? (react_1.default.createElement(ui_typography_1.Text, { strong: true, type: "danger" }, i18n_1.i18n.t('an_error_occurred'))) : null)),
|
|
64
|
+
key: field.key,
|
|
65
|
+
children: field.fields.map(nestedField => {
|
|
66
|
+
return renderFormItem({
|
|
67
|
+
field: nestedField,
|
|
68
|
+
control,
|
|
69
|
+
formValues,
|
|
70
|
+
formState,
|
|
71
|
+
layout,
|
|
72
|
+
layoutOptions
|
|
73
|
+
});
|
|
74
|
+
})
|
|
75
|
+
}
|
|
76
|
+
] }));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
80
|
+
react_1.default.createElement(ui_divider_1.Divider, { orientation: "left", plain: true, plainOffset: 40 }, field.label),
|
|
81
|
+
field.fields.map(nestedField => {
|
|
82
|
+
return renderFormItem({
|
|
83
|
+
field: nestedField,
|
|
84
|
+
control,
|
|
85
|
+
formValues,
|
|
86
|
+
formState,
|
|
87
|
+
layout,
|
|
88
|
+
layoutOptions
|
|
89
|
+
});
|
|
90
|
+
})));
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const RowComponent = ({ field, control, formValues, formState, layout, layoutOptions }) => {
|
|
94
|
+
const { columnFields, rowProps } = field;
|
|
95
|
+
if (!(columnFields === null || columnFields === void 0 ? void 0 : columnFields.length))
|
|
96
|
+
return;
|
|
97
|
+
return (react_1.default.createElement(ui_layout_1.Row, Object.assign({}, rowProps), columnFields.map(columnField => {
|
|
98
|
+
const { columnProps } = columnField;
|
|
99
|
+
const isVisible = checkIsVisible({
|
|
100
|
+
field: columnField,
|
|
101
|
+
formValues
|
|
102
|
+
});
|
|
103
|
+
if (!isVisible)
|
|
104
|
+
return null;
|
|
105
|
+
return (react_1.default.createElement(ui_layout_1.Col, Object.assign({ key: columnField.key, flex: "1" }, columnProps),
|
|
106
|
+
react_1.default.createElement(ColumnComponent, { field: columnField, control: control, formValues: formValues, formState: formState, layout: layout, layoutOptions: layoutOptions })));
|
|
107
|
+
})));
|
|
108
|
+
};
|
|
109
|
+
const ColumnComponent = ({ field, control, formValues, formState, layout, layoutOptions }) => {
|
|
110
|
+
const { fields } = field;
|
|
111
|
+
if (!(fields === null || fields === void 0 ? void 0 : fields.length))
|
|
112
|
+
return;
|
|
113
|
+
return fields.map(rowField => {
|
|
114
|
+
const isVisible = checkIsVisible({
|
|
115
|
+
field: rowField,
|
|
116
|
+
formValues
|
|
117
|
+
});
|
|
118
|
+
if (!isVisible)
|
|
119
|
+
return null;
|
|
120
|
+
const isRowField = rowField.type === 'row';
|
|
121
|
+
return isRowField
|
|
122
|
+
? renderField(rowField, control, formValues, formState, layout, layoutOptions)
|
|
123
|
+
: renderFormItem({
|
|
124
|
+
field: rowField,
|
|
125
|
+
control,
|
|
126
|
+
formValues,
|
|
127
|
+
formState,
|
|
128
|
+
layout,
|
|
129
|
+
layoutOptions
|
|
130
|
+
});
|
|
131
|
+
});
|
|
45
132
|
};
|
|
46
133
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
134
|
const renderField = (field, control, formValues,
|
|
@@ -53,15 +140,15 @@ formState, layout, layoutOptions) => {
|
|
|
53
140
|
};
|
|
54
141
|
switch (field.type) {
|
|
55
142
|
case 'text':
|
|
56
|
-
return react_1.default.createElement(ui_input_1.Input, Object.assign({ placeholder: field.placeholder }, commonProps));
|
|
143
|
+
return (react_1.default.createElement(ui_input_1.Input, Object.assign({ placeholder: field.placeholder, size: "large" }, commonProps)));
|
|
57
144
|
case 'number':
|
|
58
|
-
return react_1.default.createElement(ui_input_number_1.InputNumber, Object.assign({ placeholder: field.placeholder }, commonProps));
|
|
145
|
+
return (react_1.default.createElement(ui_input_number_1.InputNumber, Object.assign({ placeholder: field.placeholder, size: "large" }, commonProps)));
|
|
59
146
|
case 'select':
|
|
60
147
|
return (react_1.default.createElement(ui_select_1.Select, Object.assign({ placeholder: field.placeholder, options: field.options }, commonProps)));
|
|
61
148
|
case 'checkbox':
|
|
62
149
|
return (react_1.default.createElement(ui_checkbox_1.Checkbox, Object.assign({ checked: formValues[field.key] }, commonProps), field.label));
|
|
63
150
|
case 'date':
|
|
64
|
-
return react_1.default.createElement(ui_date_picker_1.DatePicker, Object.assign({ placeholder: field.placeholder }, commonProps));
|
|
151
|
+
return (react_1.default.createElement(ui_date_picker_1.DatePicker, Object.assign({ placeholder: field.placeholder, showTime: field.showTime, suffixIcon: "calendar", suffixIconColor: "var(--color-azure-500)", suffixIconSize: "16" }, commonProps)));
|
|
65
152
|
case 'textarea':
|
|
66
153
|
return react_1.default.createElement(ui_input_1.InputTextArea, Object.assign({ placeholder: field.placeholder }, commonProps));
|
|
67
154
|
case 'fieldArray':
|
|
@@ -74,13 +161,32 @@ formState, layout, layoutOptions) => {
|
|
|
74
161
|
return react_1.default.createElement(react_1.Fragment, null);
|
|
75
162
|
case 'section':
|
|
76
163
|
return (react_1.default.createElement(SectionComponent, { field: field, control: control, formValues: formValues, formState: formState, layout: layout, layoutOptions: layoutOptions }));
|
|
164
|
+
case 'row':
|
|
165
|
+
return (react_1.default.createElement(RowComponent, { field: field, control: control, formValues: formValues, formState: formState, layout: layout, layoutOptions: layoutOptions }));
|
|
166
|
+
case 'column':
|
|
167
|
+
return (react_1.default.createElement(ColumnComponent, { field: field, control: control, formValues: formValues, formState: formState, layout: layout, layoutOptions: layoutOptions }));
|
|
77
168
|
default:
|
|
78
169
|
return react_1.default.createElement(react_1.Fragment, null);
|
|
79
170
|
}
|
|
80
171
|
};
|
|
172
|
+
const renderFormItem = ({ field, control, formValues, formState, layout, layoutOptions, customVisibleCheck }) => {
|
|
173
|
+
const isVisible = customVisibleCheck
|
|
174
|
+
? customVisibleCheck()
|
|
175
|
+
: checkIsVisible({
|
|
176
|
+
field,
|
|
177
|
+
formValues
|
|
178
|
+
});
|
|
179
|
+
if (!isVisible)
|
|
180
|
+
return null;
|
|
181
|
+
const isDisabled = checkIsDisabled({
|
|
182
|
+
field,
|
|
183
|
+
formValues
|
|
184
|
+
});
|
|
185
|
+
return (react_1.default.createElement(akiform_1.FormItem, { key: field.key, control: control, name: field.key, label: field.label, required: field.validation ? true : false, tooltip: field.tooltip, disabled: isDisabled, help: field.help, labelDescription: field.labelDescription }, renderField(field, control, formValues, formState, layout, layoutOptions)));
|
|
186
|
+
};
|
|
81
187
|
exports.AkiformBuilder = (0, react_1.forwardRef)((_a, ref) => {
|
|
82
188
|
var _b, _c;
|
|
83
|
-
var { fields, onSubmit, layout = 'vertical', layoutOptions, showResetButton = false, onReset, controlled = false, values, onValueChange } = _a, rest = __rest(_a, ["fields", "onSubmit", "layout", "layoutOptions", "showResetButton", "onReset", "controlled", "values", "onValueChange"]);
|
|
189
|
+
var { fields, onSubmit, layout = 'vertical', layoutOptions, showResetButton = false, onReset, controlled = false, values, onValueChange, submitButtonProps, resetButtonProps } = _a, rest = __rest(_a, ["fields", "onSubmit", "layout", "layoutOptions", "showResetButton", "onReset", "controlled", "values", "onValueChange", "submitButtonProps", "resetButtonProps"]);
|
|
84
190
|
const validationSchema = (0, react_1.useMemo)(() => {
|
|
85
191
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
86
192
|
const schema = {};
|
|
@@ -110,6 +216,8 @@ exports.AkiformBuilder = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
110
216
|
const prevFormValuesRef = (0, react_1.useRef)(null);
|
|
111
217
|
const isInitialRenderRef = (0, react_1.useRef)(true);
|
|
112
218
|
const throttleTimeoutRef = (0, react_1.useRef)(null);
|
|
219
|
+
const hasSubmitButton = !!onSubmit;
|
|
220
|
+
const hasFormActions = hasSubmitButton || showResetButton;
|
|
113
221
|
const handleValueChange = (0, react_1.useCallback)((values) => {
|
|
114
222
|
if (!controlled) {
|
|
115
223
|
if (throttleTimeoutRef.current) {
|
|
@@ -215,39 +323,78 @@ exports.AkiformBuilder = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
215
323
|
}
|
|
216
324
|
}
|
|
217
325
|
}));
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
326
|
+
const renderSubmitButton = () => {
|
|
327
|
+
const _a = submitButtonProps || {}, { children, block = false, className } = _a, otherSubmitButtonProps = __rest(_a, ["children", "block", "className"]);
|
|
328
|
+
const submitButtonClassName = (0, clsx_1.default)(className, {
|
|
329
|
+
'w-full': block
|
|
330
|
+
});
|
|
331
|
+
return (react_1.default.createElement(ui_button_1.Button, Object.assign({ className: submitButtonClassName, type: "primary" }, otherSubmitButtonProps, { htmlType: "submit" }), children || i18n_1.i18n.t('submit')));
|
|
332
|
+
};
|
|
333
|
+
const renderShowResetButton = () => {
|
|
334
|
+
const _a = resetButtonProps || {}, { children, block = false, className, onClick } = _a, otherResetButtonProps = __rest(_a, ["children", "block", "className", "onClick"]);
|
|
335
|
+
const resetButtonClassName = (0, clsx_1.default)(className, {
|
|
336
|
+
'w-full': block
|
|
337
|
+
});
|
|
338
|
+
const handleOnClickReset = event => {
|
|
339
|
+
handleReset(event);
|
|
340
|
+
if (onClick) {
|
|
341
|
+
onClick(event);
|
|
232
342
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
343
|
+
};
|
|
344
|
+
return (react_1.default.createElement(ui_button_1.Button
|
|
345
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
346
|
+
, Object.assign({
|
|
347
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
348
|
+
onClick: handleOnClickReset, className: resetButtonClassName, type: "default" }, otherResetButtonProps, { htmlType: "reset" }), children || i18n_1.i18n.t('reset')));
|
|
349
|
+
};
|
|
350
|
+
const renderFormActions = () => {
|
|
351
|
+
return (react_1.default.createElement("div", { className: "akiform-builder-form-actions" },
|
|
352
|
+
hasSubmitButton && renderSubmitButton(),
|
|
353
|
+
showResetButton && renderShowResetButton()));
|
|
354
|
+
};
|
|
355
|
+
return (react_1.default.createElement("div", { className: "akiform-builder" },
|
|
356
|
+
react_1.default.createElement(akiform_1.Akiform, Object.assign({}, (hasSubmitButton && { onFinish: handleSubmit(onSubmit) }), { onReset: handleReset, layout: layout }, formItemLayout, rest, { "data-testid": "akiform-builder", role: "form", "aria-label": i18n_1.i18n.t('formLabel'), requiredMark: true }),
|
|
357
|
+
fields.map(field => {
|
|
358
|
+
const isVisible = checkIsVisible({
|
|
359
|
+
field,
|
|
360
|
+
formValues
|
|
361
|
+
});
|
|
362
|
+
if (!isVisible) {
|
|
363
|
+
return null;
|
|
239
364
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
365
|
+
switch (field.type) {
|
|
366
|
+
case 'section':
|
|
367
|
+
return (react_1.default.createElement(SectionComponent, { key: field.key, field: field, control: control, formValues: formValues, formState: formState, layout: layout, layoutOptions: layoutOptions }));
|
|
368
|
+
case 'fieldArray':
|
|
369
|
+
return (react_1.default.createElement("div", { className: "akiform-builder-field-array", key: field.key },
|
|
370
|
+
react_1.default.createElement(ui_divider_1.Divider, { orientation: "left", plain: true, plainOffset: 40 },
|
|
371
|
+
react_1.default.createElement("span", { id: `${field.key}-label` }, field.label)),
|
|
372
|
+
renderField(field, control, formValues, formState, layout, layoutOptions)));
|
|
373
|
+
case 'row':
|
|
374
|
+
return renderField(field, control, formValues, formState, layout, layoutOptions);
|
|
375
|
+
default:
|
|
376
|
+
return renderFormItem({
|
|
377
|
+
field,
|
|
378
|
+
control,
|
|
379
|
+
formValues,
|
|
380
|
+
formState,
|
|
381
|
+
layout,
|
|
382
|
+
layoutOptions
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
}),
|
|
386
|
+
hasFormActions && (react_1.default.createElement(akiform_1.FormItem, { control: control, name: 'form_actions', wrapperCol: layout === 'horizontal'
|
|
387
|
+
? {
|
|
388
|
+
offset: (_b = formItemLayout.labelCol) === null || _b === void 0 ? void 0 : _b.span,
|
|
389
|
+
span: (_c = formItemLayout.wrapperCol) === null || _c === void 0 ? void 0 : _c.span
|
|
390
|
+
}
|
|
391
|
+
: undefined }, renderFormActions())))));
|
|
246
392
|
});
|
|
247
393
|
exports.AkiformBuilder.displayName = 'AkiformBuilder';
|
|
248
394
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
249
395
|
const FieldArrayComponent = ({ field, control, formValues, formState, layout, layoutOptions }) => {
|
|
250
|
-
const {
|
|
396
|
+
const { errors } = formState;
|
|
397
|
+
const { fields, append, remove, insert } = (0, akiform_1.useFieldArray)({
|
|
251
398
|
control,
|
|
252
399
|
name: field.key
|
|
253
400
|
});
|
|
@@ -260,24 +407,52 @@ const FieldArrayComponent = ({ field, control, formValues, formState, layout, la
|
|
|
260
407
|
{});
|
|
261
408
|
};
|
|
262
409
|
return (react_1.default.createElement("div", { role: "group", "aria-labelledby": `${field.key}-label` },
|
|
263
|
-
react_1.default.createElement("div", {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
410
|
+
!fields.length && (react_1.default.createElement("div", { className: "akiform-builder-form-actions akiform-builder-action-icon", "data-testid": `${field.key}-add-button`, onClick: () => append(createInitialValue()) },
|
|
411
|
+
react_1.default.createElement(icons_1.Icon, { icon: "plus", size: 20, color: "var(--color-green-500)", "aria-label": i18n_1.i18n.t('add', { label: field.label }) }),
|
|
412
|
+
react_1.default.createElement(ui_typography_1.Text, { strong: true }, i18n_1.i18n.t('add', { label: field.label })))),
|
|
413
|
+
fields.map((item, index) => {
|
|
414
|
+
var _a;
|
|
415
|
+
return (react_1.default.createElement(react_1.Fragment, { key: item.id },
|
|
416
|
+
react_1.default.createElement(ui_collapse_1.Collapse, { collapsible: "icon", defaultActiveKey: field.defaultExpanded ? [item.id] : [], expandIcon: panelProps => ({
|
|
417
|
+
name: 'circle-down',
|
|
418
|
+
style: {
|
|
419
|
+
color: 'var(--color-azure-500)',
|
|
420
|
+
transform: panelProps.isActive
|
|
421
|
+
? 'rotate(-180deg)'
|
|
422
|
+
: 'rotate(0deg)',
|
|
423
|
+
transition: 'transform 0.3s'
|
|
424
|
+
},
|
|
425
|
+
size: 20
|
|
426
|
+
}), items: [
|
|
427
|
+
{
|
|
428
|
+
label: (react_1.default.createElement("div", { className: "akiform-builder-form-actions" },
|
|
429
|
+
react_1.default.createElement(ui_typography_1.Text, { strong: true }, i18n_1.i18n.t('itemof', {
|
|
430
|
+
label: field.label,
|
|
431
|
+
count: index + 1,
|
|
432
|
+
ordinal: true
|
|
433
|
+
})),
|
|
434
|
+
react_1.default.createElement(icons_1.Icon, { className: "akiform-builder-action-icon", onClick: () => remove(index), icon: "minus", size: 20, color: "var(--color-red-500)", "aria-label": i18n_1.i18n.t('remove', { label: field.label }) }),
|
|
435
|
+
react_1.default.createElement(icons_1.Icon, { className: "akiform-builder-action-icon", onClick: () => insert(index + 1, createInitialValue()), icon: "plus", size: 20, color: "var(--color-green-500)", "aria-label": i18n_1.i18n.t('add', { label: field.label }) }),
|
|
436
|
+
((_a = errors[field.key]) === null || _a === void 0 ? void 0 : _a[index]) ? (react_1.default.createElement(ui_typography_1.Text, { strong: true, type: "danger" }, i18n_1.i18n.t('an_error_occurred'))) : null)),
|
|
437
|
+
key: field.key,
|
|
438
|
+
children: field.fields.map(nestedField => {
|
|
439
|
+
return renderFormItem({
|
|
440
|
+
field: Object.assign(Object.assign({}, nestedField), { key: `${field.key}.${index}.${nestedField.key}` }),
|
|
441
|
+
control,
|
|
442
|
+
formValues,
|
|
443
|
+
formState,
|
|
444
|
+
layout,
|
|
445
|
+
layoutOptions,
|
|
446
|
+
customVisibleCheck: () => {
|
|
447
|
+
var _a, _b;
|
|
448
|
+
return typeof ((_a = nestedField.config) === null || _a === void 0 ? void 0 : _a.visible) === 'function'
|
|
449
|
+
? nestedField.config.visible(((_b = formValues[field.key]) === null || _b === void 0 ? void 0 : _b[index]) || {})
|
|
450
|
+
: true;
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
})
|
|
454
|
+
}
|
|
455
|
+
] }),
|
|
456
|
+
react_1.default.createElement(ui_divider_1.Divider, { plain: true })));
|
|
457
|
+
})));
|
|
283
458
|
};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { FieldPath, FieldValues } from '@akinon/akiform';
|
|
2
2
|
import { AnySchema } from '@akinon/akival';
|
|
3
|
-
import {
|
|
4
|
-
type
|
|
3
|
+
import type { ColProps, RowProps } from '@akinon/ui-layout';
|
|
4
|
+
import type { TooltipProps } from '@akinon/ui-tooltip';
|
|
5
|
+
import type { FieldConfig, FieldType, FormField } from './types';
|
|
6
|
+
type FieldTypeToBuilder<T extends FieldType, TFieldValues extends FieldValues = FieldValues> = T extends 'select' ? SelectFieldBuilder<TFieldValues> : T extends 'date' ? DateFieldBuilder<TFieldValues> : T extends 'custom' ? CustomFieldBuilder<TFieldValues> : T extends 'section' ? SectionFieldBuilder<TFieldValues> : T extends 'fieldArray' ? FieldArrayOrSectionFieldBuilder<TFieldValues> : T extends 'row' ? RowFieldBuilder<TFieldValues> : T extends 'column' ? ColumnFieldBuilder<TFieldValues> : BaseFieldBuilder<TFieldValues>;
|
|
5
7
|
declare class BaseFieldBuilder<TFieldValues extends FieldValues = FieldValues> {
|
|
6
|
-
|
|
8
|
+
field: Partial<FormField<TFieldValues>>;
|
|
7
9
|
key(key: FieldPath<TFieldValues>): this;
|
|
8
10
|
label(label: string): this;
|
|
9
11
|
type<T extends FieldType>(type: T): FieldTypeToBuilder<T, TFieldValues>;
|
|
@@ -11,6 +13,9 @@ declare class BaseFieldBuilder<TFieldValues extends FieldValues = FieldValues> {
|
|
|
11
13
|
defaultValue(value: any): this;
|
|
12
14
|
validation(schema: AnySchema): this;
|
|
13
15
|
config(config: FieldConfig<TFieldValues>): this;
|
|
16
|
+
tooltip(tooltipProps: TooltipProps | string): this;
|
|
17
|
+
help(help: string): this;
|
|
18
|
+
labelDescription(labelDescription: string): this;
|
|
14
19
|
build(): FormField<TFieldValues>;
|
|
15
20
|
}
|
|
16
21
|
declare class SelectFieldBuilder<TFieldValues extends FieldValues = FieldValues> extends BaseFieldBuilder<TFieldValues> {
|
|
@@ -19,6 +24,9 @@ declare class SelectFieldBuilder<TFieldValues extends FieldValues = FieldValues>
|
|
|
19
24
|
label: string;
|
|
20
25
|
}>): this;
|
|
21
26
|
}
|
|
27
|
+
declare class DateFieldBuilder<TFieldValues extends FieldValues = FieldValues> extends BaseFieldBuilder<TFieldValues> {
|
|
28
|
+
showTime(showTime: boolean): this;
|
|
29
|
+
}
|
|
22
30
|
declare class CustomFieldBuilder<TFieldValues extends FieldValues = FieldValues> extends BaseFieldBuilder<TFieldValues> {
|
|
23
31
|
render(renderFn: (props: {
|
|
24
32
|
field: FormField<TFieldValues>;
|
|
@@ -26,10 +34,21 @@ declare class CustomFieldBuilder<TFieldValues extends FieldValues = FieldValues>
|
|
|
26
34
|
control: any;
|
|
27
35
|
}) => React.ReactElement): this;
|
|
28
36
|
}
|
|
29
|
-
declare class
|
|
30
|
-
fields(fields: FormField<TFieldValues>[]): this;
|
|
37
|
+
declare class FieldArrayOrSectionFieldBuilder<TFieldValues extends FieldValues = FieldValues> extends BaseFieldBuilder<TFieldValues> {
|
|
31
38
|
defaultExpanded(expanded: boolean): this;
|
|
39
|
+
fields(fields: FormField<TFieldValues>[]): this;
|
|
40
|
+
}
|
|
41
|
+
declare class SectionFieldBuilder<TFieldValues extends FieldValues = FieldValues> extends FieldArrayOrSectionFieldBuilder<TFieldValues> {
|
|
42
|
+
collapsible(collapsible: boolean): this;
|
|
43
|
+
}
|
|
44
|
+
declare class RowFieldBuilder<TFieldValues extends FieldValues = FieldValues> extends BaseFieldBuilder<TFieldValues> {
|
|
45
|
+
columnFields(columnFields: FormField<TFieldValues>[]): this;
|
|
46
|
+
rowProps(rowProps: RowProps): this;
|
|
47
|
+
}
|
|
48
|
+
declare class ColumnFieldBuilder<TFieldValues extends FieldValues = FieldValues> extends BaseFieldBuilder<TFieldValues> {
|
|
49
|
+
fields(fields: FormField<TFieldValues>[]): this;
|
|
50
|
+
columnProps(columnProps: ColProps): this;
|
|
32
51
|
}
|
|
33
|
-
export declare function field<TFieldValues extends FieldValues = FieldValues>(): BaseFieldBuilder<TFieldValues> & SelectFieldBuilder<TFieldValues> & CustomFieldBuilder<TFieldValues> & SectionFieldBuilder<TFieldValues>;
|
|
52
|
+
export declare function field<TFieldValues extends FieldValues = FieldValues>(): BaseFieldBuilder<TFieldValues> & SelectFieldBuilder<TFieldValues> & DateFieldBuilder<TFieldValues> & CustomFieldBuilder<TFieldValues> & SectionFieldBuilder<TFieldValues> & FieldArrayOrSectionFieldBuilder<TFieldValues>;
|
|
34
53
|
export {};
|
|
35
54
|
//# sourceMappingURL=field-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-builder.d.ts","sourceRoot":"","sources":["../../src/field-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"field-builder.d.ts","sourceRoot":"","sources":["../../src/field-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,9 +35,21 @@ class BaseFieldBuilder {
|
|
|
35
35
|
this.field.config = config;
|
|
36
36
|
return this;
|
|
37
37
|
}
|
|
38
|
+
tooltip(tooltipProps) {
|
|
39
|
+
this.field.tooltip = tooltipProps;
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
help(help) {
|
|
43
|
+
this.field.help = help;
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
labelDescription(labelDescription) {
|
|
47
|
+
this.field.labelDescription = labelDescription;
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
38
50
|
build() {
|
|
39
|
-
if (!this.field.key || !this.field.
|
|
40
|
-
throw new Error('Field must have at least a key
|
|
51
|
+
if (!this.field.key || !this.field.type) {
|
|
52
|
+
throw new Error('Field must have at least a key and type');
|
|
41
53
|
}
|
|
42
54
|
return this.field;
|
|
43
55
|
}
|
|
@@ -49,6 +61,13 @@ class SelectFieldBuilder extends BaseFieldBuilder {
|
|
|
49
61
|
return this;
|
|
50
62
|
}
|
|
51
63
|
}
|
|
64
|
+
class DateFieldBuilder extends BaseFieldBuilder {
|
|
65
|
+
showTime(showTime) {
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
67
|
+
this.field.showTime = showTime;
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
52
71
|
class CustomFieldBuilder extends BaseFieldBuilder {
|
|
53
72
|
render(renderFn) {
|
|
54
73
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -56,32 +75,79 @@ class CustomFieldBuilder extends BaseFieldBuilder {
|
|
|
56
75
|
return this;
|
|
57
76
|
}
|
|
58
77
|
}
|
|
59
|
-
class
|
|
78
|
+
class FieldArrayOrSectionFieldBuilder extends BaseFieldBuilder {
|
|
79
|
+
defaultExpanded(expanded) {
|
|
80
|
+
this.field.defaultExpanded = expanded;
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
fields(fields) {
|
|
84
|
+
if (this.field.type === 'fieldArray' || this.field.type === 'section') {
|
|
85
|
+
this.field.fields = fields;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
console.warn(`Fields can only be set for 'fieldArray' or 'section' types. Current type: ${this.field.type}`);
|
|
89
|
+
}
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
class SectionFieldBuilder extends FieldArrayOrSectionFieldBuilder {
|
|
94
|
+
collapsible(collapsible) {
|
|
95
|
+
this.field.collapsible = collapsible;
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
class RowFieldBuilder extends BaseFieldBuilder {
|
|
100
|
+
columnFields(columnFields) {
|
|
101
|
+
this.field.columnFields =
|
|
102
|
+
columnFields;
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
rowProps(rowProps) {
|
|
106
|
+
this.field.rowProps = rowProps;
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
class ColumnFieldBuilder extends BaseFieldBuilder {
|
|
60
111
|
fields(fields) {
|
|
61
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
62
112
|
this.field.fields = fields;
|
|
63
113
|
return this;
|
|
64
114
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
this.field.defaultExpanded = expanded;
|
|
115
|
+
columnProps(columnProps) {
|
|
116
|
+
this.field.columnProps = columnProps;
|
|
68
117
|
return this;
|
|
69
118
|
}
|
|
70
119
|
}
|
|
71
120
|
function field() {
|
|
72
121
|
return new Proxy(new BaseFieldBuilder(), {
|
|
73
122
|
get(target, prop) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
123
|
+
switch (prop) {
|
|
124
|
+
case 'options':
|
|
125
|
+
return SelectFieldBuilder.prototype.options;
|
|
126
|
+
case 'showTime':
|
|
127
|
+
return DateFieldBuilder.prototype.showTime;
|
|
128
|
+
case 'render':
|
|
129
|
+
return CustomFieldBuilder.prototype.render;
|
|
130
|
+
case 'defaultExpanded':
|
|
131
|
+
return FieldArrayOrSectionFieldBuilder.prototype.defaultExpanded;
|
|
132
|
+
case 'fields': {
|
|
133
|
+
const fieldType = target.field.type;
|
|
134
|
+
if (fieldType === 'column') {
|
|
135
|
+
return ColumnFieldBuilder.prototype.fields;
|
|
136
|
+
}
|
|
137
|
+
return FieldArrayOrSectionFieldBuilder.prototype.fields;
|
|
138
|
+
}
|
|
139
|
+
case 'collapsible':
|
|
140
|
+
return SectionFieldBuilder.prototype.collapsible;
|
|
141
|
+
case 'columnFields':
|
|
142
|
+
return RowFieldBuilder.prototype.columnFields;
|
|
143
|
+
case 'rowProps':
|
|
144
|
+
return RowFieldBuilder.prototype.rowProps;
|
|
145
|
+
case 'columnProps':
|
|
146
|
+
return ColumnFieldBuilder.prototype.columnProps;
|
|
147
|
+
default:
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
149
|
+
return target[prop];
|
|
82
150
|
}
|
|
83
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
84
|
-
return target[prop];
|
|
85
151
|
}
|
|
86
152
|
});
|
|
87
153
|
}
|
package/dist/cjs/i18n/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/i18n/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/i18n/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI,+CAOf,CAAC"}
|