@becklyn/forms 1.0.0
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/LICENSE +21 -0
- package/README.md +281 -0
- package/dist/cjs/components/FormBuilder.d.ts +3 -0
- package/dist/cjs/components/FormBuilder.d.ts.map +1 -0
- package/dist/cjs/components/FormBuilder.js +22 -0
- package/dist/cjs/components/FormCustom.d.ts +10 -0
- package/dist/cjs/components/FormCustom.d.ts.map +1 -0
- package/dist/cjs/components/FormCustom.js +13 -0
- package/dist/cjs/components/FormEntry.d.ts +10 -0
- package/dist/cjs/components/FormEntry.d.ts.map +1 -0
- package/dist/cjs/components/FormEntry.js +46 -0
- package/dist/cjs/components/FormField.d.ts +10 -0
- package/dist/cjs/components/FormField.d.ts.map +1 -0
- package/dist/cjs/components/FormField.js +79 -0
- package/dist/cjs/components/FormRow.d.ts +10 -0
- package/dist/cjs/components/FormRow.d.ts.map +1 -0
- package/dist/cjs/components/FormRow.js +13 -0
- package/dist/cjs/components/FormSection.d.ts +10 -0
- package/dist/cjs/components/FormSection.d.ts.map +1 -0
- package/dist/cjs/components/FormSection.js +13 -0
- package/dist/cjs/components/FormWatch.d.ts +8 -0
- package/dist/cjs/components/FormWatch.d.ts.map +1 -0
- package/dist/cjs/components/FormWatch.js +14 -0
- package/dist/cjs/condition/index.d.ts +3 -0
- package/dist/cjs/condition/index.d.ts.map +1 -0
- package/dist/cjs/condition/index.js +29 -0
- package/dist/cjs/context/FormProvider.d.ts +7 -0
- package/dist/cjs/context/FormProvider.d.ts.map +1 -0
- package/dist/cjs/context/FormProvider.js +24 -0
- package/dist/cjs/context/context.d.ts +15 -0
- package/dist/cjs/context/context.d.ts.map +1 -0
- package/dist/cjs/context/context.js +7 -0
- package/dist/cjs/context/data/FormDataProvider.d.ts +19 -0
- package/dist/cjs/context/data/FormDataProvider.d.ts.map +1 -0
- package/dist/cjs/context/data/FormDataProvider.js +39 -0
- package/dist/cjs/context/data/context.d.ts +13 -0
- package/dist/cjs/context/data/context.d.ts.map +1 -0
- package/dist/cjs/context/data/context.js +6 -0
- package/dist/cjs/context/data/index.d.ts +2 -0
- package/dist/cjs/context/data/index.d.ts.map +1 -0
- package/dist/cjs/context/data/index.js +2 -0
- package/dist/cjs/context/index.d.ts +4 -0
- package/dist/cjs/context/index.d.ts.map +1 -0
- package/dist/cjs/context/index.js +22 -0
- package/dist/cjs/guard/index.d.ts +6 -0
- package/dist/cjs/guard/index.d.ts.map +1 -0
- package/dist/cjs/guard/index.js +21 -0
- package/dist/cjs/hoc/withForm.d.ts +7 -0
- package/dist/cjs/hoc/withForm.d.ts.map +1 -0
- package/dist/cjs/hoc/withForm.js +14 -0
- package/dist/cjs/hoc/withFormData.d.ts +7 -0
- package/dist/cjs/hoc/withFormData.d.ts.map +1 -0
- package/dist/cjs/hoc/withFormData.js +14 -0
- package/dist/cjs/hook/useFormData.d.ts +5 -0
- package/dist/cjs/hook/useFormData.d.ts.map +1 -0
- package/dist/cjs/hook/useFormData.js +18 -0
- package/dist/cjs/hook/useFormErrors.d.ts +3 -0
- package/dist/cjs/hook/useFormErrors.d.ts.map +1 -0
- package/dist/cjs/hook/useFormErrors.js +14 -0
- package/dist/cjs/hook/useFormStore.d.ts +8 -0
- package/dist/cjs/hook/useFormStore.d.ts.map +1 -0
- package/dist/cjs/hook/useFormStore.js +26 -0
- package/dist/cjs/hook/useFormValidations.d.ts +9 -0
- package/dist/cjs/hook/useFormValidations.d.ts.map +1 -0
- package/dist/cjs/hook/useFormValidations.js +48 -0
- package/dist/cjs/hook/useRefEffect.d.ts +2 -0
- package/dist/cjs/hook/useRefEffect.d.ts.map +1 -0
- package/dist/cjs/hook/useRefEffect.js +10 -0
- package/dist/cjs/style/index.d.ts +7 -0
- package/dist/cjs/style/index.d.ts.map +1 -0
- package/dist/cjs/style/index.js +59 -0
- package/dist/cjs/type/common.d.ts +7 -0
- package/dist/cjs/type/common.d.ts.map +1 -0
- package/dist/cjs/type/common.js +2 -0
- package/dist/cjs/type/condition.d.ts +3 -0
- package/dist/cjs/type/condition.d.ts.map +1 -0
- package/dist/cjs/type/condition.js +2 -0
- package/dist/cjs/type/config.d.ts +18 -0
- package/dist/cjs/type/config.d.ts.map +1 -0
- package/dist/cjs/type/config.js +2 -0
- package/dist/cjs/type/extract.d.ts +25 -0
- package/dist/cjs/type/extract.d.ts.map +1 -0
- package/dist/cjs/type/extract.js +2 -0
- package/dist/cjs/type/field.d.ts +30 -0
- package/dist/cjs/type/field.d.ts.map +1 -0
- package/dist/cjs/type/field.js +2 -0
- package/dist/cjs/type/form.d.ts +30 -0
- package/dist/cjs/type/form.d.ts.map +1 -0
- package/dist/cjs/type/form.js +2 -0
- package/dist/cjs/type/index.d.ts +8 -0
- package/dist/cjs/type/index.d.ts.map +1 -0
- package/dist/cjs/type/index.js +23 -0
- package/dist/cjs/type/validation.d.ts +14 -0
- package/dist/cjs/type/validation.d.ts.map +1 -0
- package/dist/cjs/type/validation.js +2 -0
- package/dist/cjs/util/index.d.ts +11 -0
- package/dist/cjs/util/index.d.ts.map +1 -0
- package/dist/cjs/util/index.js +97 -0
- package/dist/cjs/validation/index.d.ts +4 -0
- package/dist/cjs/validation/index.d.ts.map +1 -0
- package/dist/cjs/validation/index.js +57 -0
- package/dist/es/components/FormBuilder.d.ts +3 -0
- package/dist/es/components/FormBuilder.d.ts.map +1 -0
- package/dist/es/components/FormBuilder.js +22 -0
- package/dist/es/components/FormCustom.d.ts +10 -0
- package/dist/es/components/FormCustom.d.ts.map +1 -0
- package/dist/es/components/FormCustom.js +13 -0
- package/dist/es/components/FormEntry.d.ts +10 -0
- package/dist/es/components/FormEntry.d.ts.map +1 -0
- package/dist/es/components/FormEntry.js +46 -0
- package/dist/es/components/FormField.d.ts +10 -0
- package/dist/es/components/FormField.d.ts.map +1 -0
- package/dist/es/components/FormField.js +78 -0
- package/dist/es/components/FormRow.d.ts +10 -0
- package/dist/es/components/FormRow.d.ts.map +1 -0
- package/dist/es/components/FormRow.js +13 -0
- package/dist/es/components/FormSection.d.ts +10 -0
- package/dist/es/components/FormSection.d.ts.map +1 -0
- package/dist/es/components/FormSection.js +13 -0
- package/dist/es/components/FormWatch.d.ts +8 -0
- package/dist/es/components/FormWatch.d.ts.map +1 -0
- package/dist/es/components/FormWatch.js +14 -0
- package/dist/es/condition/index.d.ts +3 -0
- package/dist/es/condition/index.d.ts.map +1 -0
- package/dist/es/condition/index.js +28 -0
- package/dist/es/context/FormProvider.d.ts +7 -0
- package/dist/es/context/FormProvider.d.ts.map +1 -0
- package/dist/es/context/FormProvider.js +27 -0
- package/dist/es/context/context.d.ts +15 -0
- package/dist/es/context/context.d.ts.map +1 -0
- package/dist/es/context/context.js +7 -0
- package/dist/es/context/data/FormDataProvider.d.ts +19 -0
- package/dist/es/context/data/FormDataProvider.d.ts.map +1 -0
- package/dist/es/context/data/FormDataProvider.js +30 -0
- package/dist/es/context/data/context.d.ts +13 -0
- package/dist/es/context/data/context.d.ts.map +1 -0
- package/dist/es/context/data/context.js +6 -0
- package/dist/es/context/data/index.d.ts +2 -0
- package/dist/es/context/data/index.d.ts.map +1 -0
- package/dist/es/context/data/index.js +2 -0
- package/dist/es/context/index.d.ts +4 -0
- package/dist/es/context/index.d.ts.map +1 -0
- package/dist/es/context/index.js +22 -0
- package/dist/es/guard/index.d.ts +6 -0
- package/dist/es/guard/index.d.ts.map +1 -0
- package/dist/es/guard/index.js +21 -0
- package/dist/es/hoc/withForm.d.ts +7 -0
- package/dist/es/hoc/withForm.d.ts.map +1 -0
- package/dist/es/hoc/withForm.js +14 -0
- package/dist/es/hoc/withFormData.d.ts +7 -0
- package/dist/es/hoc/withFormData.d.ts.map +1 -0
- package/dist/es/hoc/withFormData.js +14 -0
- package/dist/es/hook/useFormData.d.ts +5 -0
- package/dist/es/hook/useFormData.d.ts.map +1 -0
- package/dist/es/hook/useFormData.js +18 -0
- package/dist/es/hook/useFormErrors.d.ts +3 -0
- package/dist/es/hook/useFormErrors.d.ts.map +1 -0
- package/dist/es/hook/useFormErrors.js +14 -0
- package/dist/es/hook/useFormStore.d.ts +8 -0
- package/dist/es/hook/useFormStore.d.ts.map +1 -0
- package/dist/es/hook/useFormStore.js +26 -0
- package/dist/es/hook/useFormValidations.d.ts +9 -0
- package/dist/es/hook/useFormValidations.d.ts.map +1 -0
- package/dist/es/hook/useFormValidations.js +48 -0
- package/dist/es/hook/useRefEffect.d.ts +2 -0
- package/dist/es/hook/useRefEffect.d.ts.map +1 -0
- package/dist/es/hook/useRefEffect.js +10 -0
- package/dist/es/style/index.d.ts +7 -0
- package/dist/es/style/index.d.ts.map +1 -0
- package/dist/es/style/index.js +59 -0
- package/dist/es/type/common.d.ts +7 -0
- package/dist/es/type/common.d.ts.map +1 -0
- package/dist/es/type/common.js +2 -0
- package/dist/es/type/condition.d.ts +3 -0
- package/dist/es/type/condition.d.ts.map +1 -0
- package/dist/es/type/condition.js +2 -0
- package/dist/es/type/config.d.ts +18 -0
- package/dist/es/type/config.d.ts.map +1 -0
- package/dist/es/type/config.js +2 -0
- package/dist/es/type/extract.d.ts +25 -0
- package/dist/es/type/extract.d.ts.map +1 -0
- package/dist/es/type/extract.js +2 -0
- package/dist/es/type/field.d.ts +30 -0
- package/dist/es/type/field.d.ts.map +1 -0
- package/dist/es/type/field.js +2 -0
- package/dist/es/type/form.d.ts +30 -0
- package/dist/es/type/form.d.ts.map +1 -0
- package/dist/es/type/form.js +2 -0
- package/dist/es/type/index.d.ts +8 -0
- package/dist/es/type/index.d.ts.map +1 -0
- package/dist/es/type/index.js +23 -0
- package/dist/es/type/validation.d.ts +14 -0
- package/dist/es/type/validation.d.ts.map +1 -0
- package/dist/es/type/validation.js +2 -0
- package/dist/es/util/index.d.ts +11 -0
- package/dist/es/util/index.d.ts.map +1 -0
- package/dist/es/util/index.js +100 -0
- package/dist/es/validation/index.d.ts +4 -0
- package/dist/es/validation/index.d.ts.map +1 -0
- package/dist/es/validation/index.js +57 -0
- package/package.json +100 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FormProvider = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const withFormData_1 = require("../hoc/withFormData");
|
|
7
|
+
const useFormValidations_1 = require("../hook/useFormValidations");
|
|
8
|
+
const util_1 = require("../util");
|
|
9
|
+
const context_1 = require("./context");
|
|
10
|
+
const context_2 = require("./data/context");
|
|
11
|
+
exports.FormProvider = (0, withFormData_1.withFormData)(({ config, validationStrategy = "blur", onInput: internalOnInput, inheritData, children }) => {
|
|
12
|
+
const externalForm = (0, context_1.useForm)();
|
|
13
|
+
const { data, editData } = (0, react_1.useContext)(context_2.FormDataContext);
|
|
14
|
+
const onInput = inheritData && externalForm ? externalForm.onInput : internalOnInput;
|
|
15
|
+
const fieldConfigs = (0, react_1.useMemo)(() => {
|
|
16
|
+
return (0, util_1.fieldsFromConfig)(config);
|
|
17
|
+
}, [config]);
|
|
18
|
+
const formValidations = (0, useFormValidations_1.useFormValidations)(config, fieldConfigs);
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)(context_1.FormContext.Provider, { value: Object.assign(Object.assign({}, formValidations), { data,
|
|
20
|
+
editData,
|
|
21
|
+
fieldConfigs,
|
|
22
|
+
validationStrategy,
|
|
23
|
+
onInput }), children: children }));
|
|
24
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Context } from "react";
|
|
2
|
+
import { FormStore } from "../hook/useFormStore";
|
|
3
|
+
import { FormValidations } from "../hook/useFormValidations";
|
|
4
|
+
import { DeepPartial, FormData, FormFieldConfig, FormInputFunc, FormValidationStrategy } from "../type";
|
|
5
|
+
interface FormContext<TData = FormData> extends FormValidations {
|
|
6
|
+
data: FormStore<TData>;
|
|
7
|
+
editData: FormStore<DeepPartial<TData>>;
|
|
8
|
+
fieldConfigs: Record<string, FormFieldConfig>;
|
|
9
|
+
validationStrategy: FormValidationStrategy;
|
|
10
|
+
onInput?: FormInputFunc;
|
|
11
|
+
}
|
|
12
|
+
export declare const FormContext: Context<FormContext<FormData>>;
|
|
13
|
+
export declare const useForm: <T = FormData>() => FormContext<T>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../context/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA6B,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EACH,WAAW,EACX,QAAQ,EACR,eAAe,EACf,aAAa,EACb,sBAAsB,EACzB,MAAM,SAAS,CAAC;AAEjB,UAAU,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAE,SAAQ,eAAe;IAC3D,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,OAAO,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,eAAO,MAAM,WAAW,gCAAkE,CAAC;AAE3F,eAAO,MAAM,OAAO,GAAI,CAAC,gCAAoE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useForm = exports.FormContext = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
exports.FormContext = (0, react_1.createContext)(undefined);
|
|
6
|
+
const useForm = () => (0, react_1.useContext)(exports.FormContext);
|
|
7
|
+
exports.useForm = useForm;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from "react";
|
|
2
|
+
import { FormStore } from "../../hook/useFormStore";
|
|
3
|
+
import { FormConfig, FormData, FormInputFunc, FormValidationStrategy } from "../../type";
|
|
4
|
+
export interface FormProviderProps {
|
|
5
|
+
config: FormConfig;
|
|
6
|
+
data?: FormStore<FormData>;
|
|
7
|
+
errors?: FormStore<FormData>;
|
|
8
|
+
editData?: FormStore<FormData>;
|
|
9
|
+
initialData?: FormData;
|
|
10
|
+
inheritData?: boolean;
|
|
11
|
+
inheritErrors?: boolean;
|
|
12
|
+
validationStrategy?: FormValidationStrategy;
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Use the field config's 'onInput' callback instead
|
|
15
|
+
*/
|
|
16
|
+
onInput?: FormInputFunc;
|
|
17
|
+
}
|
|
18
|
+
export declare const FormDataProvider: React.FC<PropsWithChildren<FormProviderProps>>;
|
|
19
|
+
//# sourceMappingURL=FormDataProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormDataProvider.d.ts","sourceRoot":"","sources":["../../../../context/data/FormDataProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAsB,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,SAAS,EAAgB,MAAM,yBAAyB,CAAC;AAClE,OAAO,EACH,UAAU,EACV,QAAQ,EAER,aAAa,EACb,sBAAsB,EACzB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAC5C;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAsB3E,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.FormDataProvider = void 0;
|
|
15
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
const react_1 = require("react");
|
|
17
|
+
const useFormStore_1 = require("../../hook/useFormStore");
|
|
18
|
+
const util_1 = require("../../util");
|
|
19
|
+
const context_1 = require("./context");
|
|
20
|
+
const FormDataProvider = (_a) => {
|
|
21
|
+
var { config, initialData, children } = _a, props = __rest(_a, ["config", "initialData", "children"]);
|
|
22
|
+
if (!config) {
|
|
23
|
+
throw new Error("Config is undefined");
|
|
24
|
+
}
|
|
25
|
+
const initialDataRef = (0, react_1.useRef)(Object.assign(Object.assign({}, (0, util_1.initialValuesFromConfig)(config)), (initialData !== null && initialData !== void 0 ? initialData : {})));
|
|
26
|
+
return ((0, jsx_runtime_1.jsx)(context_1.FormConfigContext.Provider, { value: { config }, children: (0, jsx_runtime_1.jsx)(FormDataReadyProvider, Object.assign({}, props, { initialData: initialDataRef.current, children: children })) }));
|
|
27
|
+
};
|
|
28
|
+
exports.FormDataProvider = FormDataProvider;
|
|
29
|
+
const FormDataReadyProvider = ({ initialData, inheritData, inheritErrors, children, data: inputData, editData: inputEditData, errors: inputErrors, }) => {
|
|
30
|
+
const externalContext = (0, react_1.useContext)(context_1.FormDataContext);
|
|
31
|
+
const internalData = (0, useFormStore_1.useFormStore)(initialData !== null && initialData !== void 0 ? initialData : {});
|
|
32
|
+
const internalEditData = (0, useFormStore_1.useFormStore)({});
|
|
33
|
+
const internalErrors = (0, useFormStore_1.useFormStore)({});
|
|
34
|
+
const data = inputData || (inheritData && externalContext ? externalContext.data : internalData);
|
|
35
|
+
const editData = inputEditData ||
|
|
36
|
+
(inheritData && externalContext ? externalContext.editData : internalEditData);
|
|
37
|
+
const errors = inputErrors || (inheritErrors && externalContext ? externalContext.errors : internalErrors);
|
|
38
|
+
return ((0, jsx_runtime_1.jsx)(context_1.FormDataContext.Provider, { value: { data, editData, errors }, children: children }));
|
|
39
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FormStore } from "../../hook/useFormStore";
|
|
2
|
+
import { FormConfig, FormData, FormErrors } from "../../type";
|
|
3
|
+
export type FormConfigContext = {
|
|
4
|
+
config: FormConfig;
|
|
5
|
+
};
|
|
6
|
+
export declare const FormConfigContext: import("react").Context<FormConfigContext>;
|
|
7
|
+
export interface FormDataContext {
|
|
8
|
+
data: FormStore<FormData>;
|
|
9
|
+
editData: FormStore<FormData>;
|
|
10
|
+
errors: FormStore<FormErrors>;
|
|
11
|
+
}
|
|
12
|
+
export declare const FormDataContext: import("react").Context<FormDataContext>;
|
|
13
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../context/data/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,4CAE7B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;CACjC;AAED,eAAO,MAAM,eAAe,0CAE3B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FormDataContext = exports.FormConfigContext = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
exports.FormConfigContext = (0, react_1.createContext)(undefined);
|
|
6
|
+
exports.FormDataContext = (0, react_1.createContext)(undefined);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../context/data/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../context/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.FormProvider = exports.useForm = void 0;
|
|
18
|
+
__exportStar(require("./data"), exports);
|
|
19
|
+
var context_1 = require("./context");
|
|
20
|
+
Object.defineProperty(exports, "useForm", { enumerable: true, get: function () { return context_1.useForm; } });
|
|
21
|
+
var FormProvider_1 = require("./FormProvider");
|
|
22
|
+
Object.defineProperty(exports, "FormProvider", { enumerable: true, get: function () { return FormProvider_1.FormProvider; } });
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FormCustomConfig, FormEntryConfig, FormFieldBasicConfig, FormRowConfig, FormSectionConfig } from "../type";
|
|
2
|
+
export declare const entryIsSection: (entry: Pick<FormEntryConfig, "type">) => entry is FormSectionConfig;
|
|
3
|
+
export declare const entryIsRow: (entry: Pick<FormEntryConfig, "type">) => entry is FormRowConfig;
|
|
4
|
+
export declare const entryIsCustom: (entry: Pick<FormEntryConfig, "type">) => entry is FormCustomConfig;
|
|
5
|
+
export declare const entryIsField: (entry: Pick<FormEntryConfig, "type">) => entry is FormFieldBasicConfig<any>;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../guard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACpB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,cAAc,UAChB,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,KACrC,KAAK,IAAI,iBAEX,CAAC;AAEF,eAAO,MAAM,UAAU,UAAW,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,KAAG,KAAK,IAAI,aAE1E,CAAC;AAEF,eAAO,MAAM,aAAa,UAAW,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,KAAG,KAAK,IAAI,gBAE7E,CAAC;AAEF,eAAO,MAAM,YAAY,UACd,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,KAErC,KAAK,IAAI,oBAAoB,CAAC,GAAG,CAEnC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.entryIsField = exports.entryIsCustom = exports.entryIsRow = exports.entryIsSection = void 0;
|
|
4
|
+
const entryIsSection = (entry) => {
|
|
5
|
+
return entry.type === "section";
|
|
6
|
+
};
|
|
7
|
+
exports.entryIsSection = entryIsSection;
|
|
8
|
+
const entryIsRow = (entry) => {
|
|
9
|
+
return entry.type === "row";
|
|
10
|
+
};
|
|
11
|
+
exports.entryIsRow = entryIsRow;
|
|
12
|
+
const entryIsCustom = (entry) => {
|
|
13
|
+
return entry.type === "custom";
|
|
14
|
+
};
|
|
15
|
+
exports.entryIsCustom = entryIsCustom;
|
|
16
|
+
const entryIsField = (entry
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
|
+
) => {
|
|
19
|
+
return !(0, exports.entryIsSection)(entry) && !(0, exports.entryIsRow)(entry) && !(0, exports.entryIsCustom)(entry);
|
|
20
|
+
};
|
|
21
|
+
exports.entryIsField = entryIsField;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { FormProviderProps } from "../context/data/FormDataProvider";
|
|
3
|
+
export declare const withForm: <T>(WrappedComponent: React.ComponentType<FormProviderProps & T>) => {
|
|
4
|
+
(props: FormProviderProps & T): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
displayName: string;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=withForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withForm.d.ts","sourceRoot":"","sources":["../../../hoc/withForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,eAAO,MAAM,QAAQ,GAAI,CAAC,oBAAqB,KAAK,CAAC,aAAa,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAG/C,iBAAiB,GAAG,CAAC;;CAW9D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withForm = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const context_1 = require("../context");
|
|
6
|
+
const withForm = (WrappedComponent) => {
|
|
7
|
+
const displayName = WrappedComponent.displayName || WrappedComponent.name || "Component";
|
|
8
|
+
const ComponentWithProvider = (props) => {
|
|
9
|
+
return ((0, jsx_runtime_1.jsx)(context_1.FormProvider, Object.assign({}, props, { children: (0, jsx_runtime_1.jsx)(WrappedComponent, Object.assign({}, props)) })));
|
|
10
|
+
};
|
|
11
|
+
ComponentWithProvider.displayName = `withForm(${displayName})`;
|
|
12
|
+
return ComponentWithProvider;
|
|
13
|
+
};
|
|
14
|
+
exports.withForm = withForm;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { FormProviderProps } from "../context/data/FormDataProvider";
|
|
3
|
+
export declare const withFormData: <T>(WrappedComponent: React.ComponentType<FormProviderProps & T>) => {
|
|
4
|
+
(props: FormProviderProps & T): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
displayName: string;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=withFormData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withFormData.d.ts","sourceRoot":"","sources":["../../../hoc/withFormData.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAoB,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAEvF,eAAO,MAAM,YAAY,GAAI,CAAC,oBAAqB,KAAK,CAAC,aAAa,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAGnD,iBAAiB,GAAG,CAAC;;CAW9D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withFormData = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const FormDataProvider_1 = require("../context/data/FormDataProvider");
|
|
6
|
+
const withFormData = (WrappedComponent) => {
|
|
7
|
+
const displayName = WrappedComponent.displayName || WrappedComponent.name || "Component";
|
|
8
|
+
const ComponentWithProvider = (props) => {
|
|
9
|
+
return ((0, jsx_runtime_1.jsx)(FormDataProvider_1.FormDataProvider, Object.assign({}, props, { children: (0, jsx_runtime_1.jsx)(WrappedComponent, Object.assign({}, props)) })));
|
|
10
|
+
};
|
|
11
|
+
ComponentWithProvider.displayName = `withFormData(${displayName})`;
|
|
12
|
+
return ComponentWithProvider;
|
|
13
|
+
};
|
|
14
|
+
exports.withFormData = withFormData;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { FormData } from "../type";
|
|
2
|
+
import { FormStore } from "./useFormStore";
|
|
3
|
+
export declare const useFormData: <SelectorOutput>(selector: (store: FormData) => SelectorOutput) => [SelectorOutput, (value: Partial<FormData>) => void, () => FormData];
|
|
4
|
+
export declare const useData: <Store, SelectorOutput>(data: FormStore<Store>, selector: (store: Store) => SelectorOutput) => [SelectorOutput, (value: Partial<Store>) => void, () => Store];
|
|
5
|
+
//# sourceMappingURL=useFormData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormData.d.ts","sourceRoot":"","sources":["../../../hook/useFormData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,eAAO,MAAM,WAAW,GAAI,cAAc,YAC5B,CAAC,KAAK,EAAE,QAAQ,KAAK,cAAc,KAC9C,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,MAAM,QAAQ,CAQrE,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,EAAE,cAAc,QACnC,SAAS,CAAC,KAAK,CAAC,YACZ,CAAC,KAAK,EAAE,KAAK,KAAK,cAAc,KAC3C,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,MAAM,KAAK,CAQ/D,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useData = exports.useFormData = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const context_1 = require("../context/data/context");
|
|
6
|
+
const useFormData = (selector) => {
|
|
7
|
+
const { data } = (0, react_1.useContext)(context_1.FormDataContext);
|
|
8
|
+
if (!data) {
|
|
9
|
+
throw new Error("Store not found");
|
|
10
|
+
}
|
|
11
|
+
return (0, exports.useData)(data, selector);
|
|
12
|
+
};
|
|
13
|
+
exports.useFormData = useFormData;
|
|
14
|
+
const useData = (data, selector) => {
|
|
15
|
+
const state = (0, react_1.useSyncExternalStore)(data.subscribe, () => selector(data.get()), () => selector(data.initialValue));
|
|
16
|
+
return [state, data.set, data.get];
|
|
17
|
+
};
|
|
18
|
+
exports.useData = useData;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormErrors.d.ts","sourceRoot":"","sources":["../../../hook/useFormErrors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,eAAO,MAAM,aAAa,GAAI,cAAc,YAC9B,CAAC,KAAK,EAAE,UAAU,KAAK,cAAc,KAChD,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,MAAM,UAAU,CAczE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useFormErrors = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const context_1 = require("../context/data/context");
|
|
6
|
+
const useFormErrors = (selector) => {
|
|
7
|
+
const { errors } = (0, react_1.useContext)(context_1.FormDataContext);
|
|
8
|
+
if (!errors) {
|
|
9
|
+
throw new Error("Store not found");
|
|
10
|
+
}
|
|
11
|
+
const state = (0, react_1.useSyncExternalStore)(errors.subscribe, () => selector(errors.get()), () => selector(errors.initialValue));
|
|
12
|
+
return [state, errors.set, errors.get];
|
|
13
|
+
};
|
|
14
|
+
exports.useFormErrors = useFormErrors;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface FormStore<Store> {
|
|
2
|
+
get: () => Store;
|
|
3
|
+
set: (value: Partial<Store>) => void;
|
|
4
|
+
subscribe: (callback: () => void) => () => void;
|
|
5
|
+
initialValue: Store;
|
|
6
|
+
}
|
|
7
|
+
export declare const useFormStore: <Store>(initialValue: Store) => FormStore<Store>;
|
|
8
|
+
//# sourceMappingURL=useFormStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormStore.d.ts","sourceRoot":"","sources":["../../../hook/useFormStore.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS,CAAC,KAAK;IAC5B,GAAG,EAAE,MAAM,KAAK,CAAC;IACjB,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IACrC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,YAAY,EAAE,KAAK,CAAC;CACvB;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,gBAAgB,KAAK,KAAG,SAAS,CAAC,KAAK,CAyBxE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useFormStore = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const useFormStore = (initialValue) => {
|
|
6
|
+
const store = (0, react_1.useRef)(initialValue);
|
|
7
|
+
const get = (0, react_1.useCallback)(() => store.current, []);
|
|
8
|
+
const subscribers = (0, react_1.useRef)(new Set());
|
|
9
|
+
const set = (0, react_1.useCallback)((value) => {
|
|
10
|
+
store.current = Object.assign(Object.assign({}, store.current), value);
|
|
11
|
+
subscribers.current.forEach(callback => callback());
|
|
12
|
+
}, []);
|
|
13
|
+
const subscribe = (0, react_1.useCallback)((callback) => {
|
|
14
|
+
subscribers.current.add(callback);
|
|
15
|
+
return () => subscribers.current.delete(callback);
|
|
16
|
+
}, []);
|
|
17
|
+
return (0, react_1.useMemo)(() => {
|
|
18
|
+
return {
|
|
19
|
+
get,
|
|
20
|
+
set,
|
|
21
|
+
subscribe,
|
|
22
|
+
initialValue,
|
|
23
|
+
};
|
|
24
|
+
}, [get, set, subscribe, initialValue]);
|
|
25
|
+
};
|
|
26
|
+
exports.useFormStore = useFormStore;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FormConfig, FormError, FormErrors, FormFieldBasicConfig, FormFieldConfig } from "../type";
|
|
2
|
+
export type FormValidations = ReturnType<typeof useFormValidations>;
|
|
3
|
+
export declare const useFormValidations: (config: FormConfig, fieldConfigs: Record<string, FormFieldConfig>) => {
|
|
4
|
+
errors: import("./useFormStore").FormStore<FormErrors>;
|
|
5
|
+
validateField: (field: FormFieldBasicConfig<any>, skipUpdate?: boolean) => FormError | null;
|
|
6
|
+
validateCategory: (category: string) => FormErrors;
|
|
7
|
+
validateForm: (input?: FormConfig, skipUpdate?: boolean) => FormErrors | null;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=useFormValidations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormValidations.d.ts","sourceRoot":"","sources":["../../../hook/useFormValidations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAInG,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,kBAAkB,WACnB,UAAU,gBACJ,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;;2BAsDjC,oBAAoB,CAAC,GAAG,CAAC,eAAe,OAAO,KAAG,SAAS,GAAG,IAAI;iCAxB/D,MAAM;2BAvBT,UAAU,eAAmC,OAAO,KAAG,UAAU,GAAG,IAAI;CA4DvF,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useFormValidations = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const context_1 = require("../context/data/context");
|
|
6
|
+
const validation_1 = require("../validation");
|
|
7
|
+
const useRefEffect_1 = require("./useRefEffect");
|
|
8
|
+
const useFormValidations = (config, fieldConfigs) => {
|
|
9
|
+
const configRef = (0, useRefEffect_1.useRefEffect)(config);
|
|
10
|
+
const fieldConfigsRef = (0, useRefEffect_1.useRefEffect)(fieldConfigs);
|
|
11
|
+
const { data, errors } = (0, react_1.useContext)(context_1.FormDataContext);
|
|
12
|
+
const validateForm = (0, react_1.useCallback)((input = configRef.current, skipUpdate) => {
|
|
13
|
+
const formErrors = (0, validation_1.handleValidateConfig)(input, fieldConfigsRef.current, data.get());
|
|
14
|
+
if (!skipUpdate) {
|
|
15
|
+
errors.set(formErrors);
|
|
16
|
+
}
|
|
17
|
+
const filteredErrors = Object.keys(formErrors).reduce((acc, key) => {
|
|
18
|
+
const error = formErrors[key];
|
|
19
|
+
if (error !== false && error !== undefined) {
|
|
20
|
+
acc[key] = error;
|
|
21
|
+
}
|
|
22
|
+
return acc;
|
|
23
|
+
}, {});
|
|
24
|
+
return Object.keys(filteredErrors).length ? filteredErrors : null;
|
|
25
|
+
}, [configRef, fieldConfigsRef, data, errors]);
|
|
26
|
+
const validateCategory = (0, react_1.useCallback)((category) => {
|
|
27
|
+
const fieldConfigs = fieldConfigsRef.current;
|
|
28
|
+
const formErrors = (0, validation_1.handleValidateConfig)(Object.keys(fieldConfigs).flatMap(key => {
|
|
29
|
+
const fieldConfig = fieldConfigs[key];
|
|
30
|
+
return fieldConfig.categories && fieldConfig.categories.includes(category)
|
|
31
|
+
? fieldConfig
|
|
32
|
+
: [];
|
|
33
|
+
}), fieldConfigs, data.get());
|
|
34
|
+
errors.set(formErrors);
|
|
35
|
+
return formErrors;
|
|
36
|
+
}, [fieldConfigsRef, data, errors]);
|
|
37
|
+
const validateField = (0, react_1.useCallback)(
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
|
+
(field, skipUpdate) => {
|
|
40
|
+
const formErrors = (0, validation_1.handleValidateField)(field, fieldConfigsRef.current, data.get());
|
|
41
|
+
if (!skipUpdate) {
|
|
42
|
+
errors.set(formErrors);
|
|
43
|
+
}
|
|
44
|
+
return formErrors[field.name] || null;
|
|
45
|
+
}, [fieldConfigsRef, data, errors]);
|
|
46
|
+
return { errors, validateField, validateCategory, validateForm };
|
|
47
|
+
};
|
|
48
|
+
exports.useFormValidations = useFormValidations;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRefEffect.d.ts","sourceRoot":"","sources":["../../../hook/useRefEffect.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,CAAC,wCAKvC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useRefEffect = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const useRefEffect = (state) => {
|
|
6
|
+
const value = (0, react_1.useRef)(state);
|
|
7
|
+
value.current = state;
|
|
8
|
+
return value;
|
|
9
|
+
};
|
|
10
|
+
exports.useRefEffect = useRefEffect;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const DefaultBuilderWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
|
+
export declare const DefaultSectionWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
export declare const DefaultRowWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
4
|
+
export declare const DefaultFieldWrapper: import("styled-components").StyledComponent<"div", any, {
|
|
5
|
+
columns?: number;
|
|
6
|
+
}, never>;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../style/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,oEASjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,oEAiBjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,oEAa7B,CAAC;AAEF,eAAO,MAAM,mBAAmB;cAA0B,MAAM;SAS/D,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DefaultFieldWrapper = exports.DefaultRowWrapper = exports.DefaultSectionWrapper = exports.DefaultBuilderWrapper = void 0;
|
|
7
|
+
const styled_components_1 = __importDefault(require("styled-components"));
|
|
8
|
+
exports.DefaultBuilderWrapper = styled_components_1.default.div `
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
justify-content: flex-start;
|
|
12
|
+
gap: 1rem;
|
|
13
|
+
|
|
14
|
+
${p => p.theme.breakpoints.min("l")} {
|
|
15
|
+
gap: 2rem;
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
exports.DefaultSectionWrapper = styled_components_1.default.div `
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
gap: 1rem;
|
|
22
|
+
margin-bottom: 2rem;
|
|
23
|
+
|
|
24
|
+
&:last-child {
|
|
25
|
+
margin-bottom: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
${p => p.theme.breakpoints.min("m")} {
|
|
29
|
+
margin-bottom: 3rem;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
${p => p.theme.breakpoints.min("l")} {
|
|
33
|
+
gap: 2rem;
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
exports.DefaultRowWrapper = styled_components_1.default.div `
|
|
37
|
+
display: flex;
|
|
38
|
+
flex-direction: column;
|
|
39
|
+
align-items: flex-start;
|
|
40
|
+
gap: 1rem;
|
|
41
|
+
|
|
42
|
+
${p => p.theme.breakpoints.min("m")} {
|
|
43
|
+
flex-direction: row;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
${p => p.theme.breakpoints.min("l")} {
|
|
47
|
+
gap: 2rem;
|
|
48
|
+
}
|
|
49
|
+
`;
|
|
50
|
+
exports.DefaultFieldWrapper = styled_components_1.default.div `
|
|
51
|
+
${p => p.theme.breakpoints.max("m")} {
|
|
52
|
+
width: 100%;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
${p => p.theme.breakpoints.min("m")} {
|
|
56
|
+
flex: 1 1 0;
|
|
57
|
+
max-width: ${p => p.columns && `calc(${100 * (p.columns / 12)}% - 1rem)`};
|
|
58
|
+
}
|
|
59
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../type/common.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACvC;KACK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC,GACD,CAAC,CAAC;AAER,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,GAC7D,CAAC,GAAG;KAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACrC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../type/condition.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC;AAE1F,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,CAAC,EAAE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { FormFieldConfig } from "./field";
|
|
3
|
+
export interface FormRowConfig {
|
|
4
|
+
type: "row";
|
|
5
|
+
content: readonly FormEntryConfig[];
|
|
6
|
+
}
|
|
7
|
+
export interface FormSectionConfig {
|
|
8
|
+
type: "section";
|
|
9
|
+
content: readonly FormEntryConfig[];
|
|
10
|
+
}
|
|
11
|
+
export interface FormCustomConfig {
|
|
12
|
+
type: "custom";
|
|
13
|
+
wrapper: (children: ReactNode) => ReactNode;
|
|
14
|
+
content: readonly FormEntryConfig[];
|
|
15
|
+
}
|
|
16
|
+
export type FormEntryConfig = FormCustomConfig | FormSectionConfig | FormRowConfig | FormFieldConfig;
|
|
17
|
+
export type FormConfig = readonly FormEntryConfig[];
|
|
18
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../type/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC;IAC5C,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CACvC;AAED,MAAM,MAAM,eAAe,GACrB,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,GACb,eAAe,CAAC;AAEtB,MAAM,MAAM,UAAU,GAAG,SAAS,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FormConfig } from "./config";
|
|
2
|
+
import { FormFieldConfig } from "./field";
|
|
3
|
+
export type Prettify<T> = {
|
|
4
|
+
[K in keyof T]: T[K];
|
|
5
|
+
} & unknown;
|
|
6
|
+
export type FormFieldInfer<Type, Config = FormFieldConfig> = Config extends {
|
|
7
|
+
type: Type;
|
|
8
|
+
initialValue?: infer InitialValue;
|
|
9
|
+
} ? InitialValue : never;
|
|
10
|
+
export type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
|
|
11
|
+
export type FormInfer<Config extends FormConfig, Acc = object> = Config extends readonly [
|
|
12
|
+
infer Entry,
|
|
13
|
+
...infer Rest
|
|
14
|
+
] ? Entry extends {
|
|
15
|
+
content: infer Content;
|
|
16
|
+
} ? Prettify<UnionToIntersection<FormInfer<Extract<Content, FormConfig>, Acc> & FormInfer<Extract<Rest, FormConfig>, Acc>>> : Entry extends {
|
|
17
|
+
type: infer Type;
|
|
18
|
+
name: infer Name;
|
|
19
|
+
onInput?: infer InputFn;
|
|
20
|
+
} ? InputFn extends (...args: any) => infer Input ? FormInfer<Extract<Rest, FormConfig>, Prettify<UnionToIntersection<{
|
|
21
|
+
[key in keyof Input]?: FormFieldInfer<Type>;
|
|
22
|
+
} & Acc>>> : FormInfer<Extract<Rest, FormConfig>, Prettify<UnionToIntersection<{
|
|
23
|
+
[key in Extract<Name, string>]?: FormFieldInfer<Type>;
|
|
24
|
+
} & Acc>>> : Acc : Acc;
|
|
25
|
+
//# sourceMappingURL=extract.d.ts.map
|