@akinon/akiform-builder 0.0.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/index.cjs +568 -0
- package/dist/index.js +73717 -0
- package/dist/src/FormBuilderWatch.d.ts +16 -0
- package/dist/src/FormBuilderWatch.d.ts.map +1 -0
- package/dist/src/RenderField.d.ts +5 -0
- package/dist/src/RenderField.d.ts.map +1 -0
- package/dist/src/component.d.ts +4 -0
- package/dist/src/component.d.ts.map +1 -0
- package/dist/src/hook.d.ts +3 -0
- package/dist/src/hook.d.ts.map +1 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/types.d.ts +73 -0
- package/dist/src/types.d.ts.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { FormField } from './types';
|
|
3
|
+
type FormBuilderWatchProps = {
|
|
4
|
+
builderFields: FormField[];
|
|
5
|
+
isDebounced?: boolean;
|
|
6
|
+
handleChange: (data: any) => void;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Reasons why seperate FormBuilderWatch component is created from FormBuilder:
|
|
10
|
+
* 1. FormBuilderWatch is a controlled component, value of form fields is controlled. In any given time, value of any field can be forced from parent. It's directly working with value instead of defaultValues. Also there is no way to change defaultValues after first render.
|
|
11
|
+
* 2. FormBuilderWatch is watching form changes and calls the given callback function. It's not using form methods like handleSubmit, reset, etc.
|
|
12
|
+
* 3. It's meticulously designed to not create loop. Since it's controlled and watching form changes, it's easy to create infinite loop. For example, callback can be called as result of form change, and parent can react to this change by returning same values to form.
|
|
13
|
+
*/
|
|
14
|
+
export declare const FormBuilderWatch: ({ builderFields, handleChange, isDebounced }: FormBuilderWatchProps) => React.JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=FormBuilderWatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormBuilderWatch.d.ts","sourceRoot":"","sources":["../../src/FormBuilderWatch.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,KAAK,qBAAqB,GAAG;IAC3B,aAAa,EAAE,SAAS,EAAE,CAAC;IAE3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,iDAI1B,qBAAqB,sBAuEvB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Control } from '@akinon/akiform';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { FormField } from './types';
|
|
4
|
+
export declare function RenderField(field: FormField, control: Control): React.JSX.Element | "unsupported field type" | undefined;
|
|
5
|
+
//# sourceMappingURL=RenderField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderField.d.ts","sourceRoot":"","sources":["../../src/RenderField.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,iBAAiB,CAAC;AAMpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAGL,SAAS,EAIV,MAAM,SAAS,CAAC;AAGjB,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,4DAuF7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/component.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA4ClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/hook.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmB,kBAAkB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzE,eAAO,MAAM,cAAc,WAAY,SAAS,EAAE,KAAG,kBAkCpD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { transformToFormFields } from '../transformers';
|
|
2
|
+
import { FormBuilder } from './component';
|
|
3
|
+
import { useFormBuilder } from './hook';
|
|
4
|
+
export { FormBuilderWatch } from './FormBuilderWatch';
|
|
5
|
+
export { FormBuilder, transformToFormFields, useFormBuilder };
|
|
6
|
+
export * from './types';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,cAAc,EAAE,CAAC;AAC9D,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Control, FieldArrayWithId, FormProps, UseFormReturn } from '@akinon/akiform';
|
|
3
|
+
import { AnySchema } from '@akinon/akival';
|
|
4
|
+
export type FieldType = 'input' | 'number' | 'select' | 'checkbox' | 'datepicker' | 'field-array' | 'area';
|
|
5
|
+
export interface BaseField<T = any> {
|
|
6
|
+
type: FieldType;
|
|
7
|
+
key: string;
|
|
8
|
+
label: string;
|
|
9
|
+
defaultValue?: T;
|
|
10
|
+
value?: T;
|
|
11
|
+
validation?: AnySchema;
|
|
12
|
+
}
|
|
13
|
+
export interface FieldArrayField extends BaseField {
|
|
14
|
+
type: 'field-array';
|
|
15
|
+
config: FieldArrayConfig;
|
|
16
|
+
}
|
|
17
|
+
interface FieldArrayConfig {
|
|
18
|
+
name: string;
|
|
19
|
+
keyName?: string;
|
|
20
|
+
fields: FormField[];
|
|
21
|
+
}
|
|
22
|
+
export interface InputField extends BaseField<string> {
|
|
23
|
+
type: 'input';
|
|
24
|
+
placeholder?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface NumberField extends BaseField<number> {
|
|
27
|
+
type: 'number';
|
|
28
|
+
placeholder?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface SelectField extends BaseField<string | number> {
|
|
31
|
+
type: 'select';
|
|
32
|
+
options: Array<{
|
|
33
|
+
key: string;
|
|
34
|
+
value: string | number;
|
|
35
|
+
label: string;
|
|
36
|
+
}>;
|
|
37
|
+
placeholder?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface CheckboxField extends BaseField<boolean> {
|
|
40
|
+
type: 'checkbox';
|
|
41
|
+
}
|
|
42
|
+
export interface DatePickerField extends BaseField<Date> {
|
|
43
|
+
type: 'datepicker';
|
|
44
|
+
}
|
|
45
|
+
export type FormField = InputField | NumberField | SelectField | CheckboxField | DatePickerField | FieldArrayField;
|
|
46
|
+
export interface FormBuilderProps extends FormProps {
|
|
47
|
+
builderFields: FormField[];
|
|
48
|
+
children?: React.ReactNode;
|
|
49
|
+
hasDevTool: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface FormBuilderMethods {
|
|
52
|
+
register: UseFormReturn['register'];
|
|
53
|
+
handleSubmit: UseFormReturn['handleSubmit'];
|
|
54
|
+
watch: UseFormReturn['watch'];
|
|
55
|
+
reset: UseFormReturn['reset'];
|
|
56
|
+
control: Control;
|
|
57
|
+
formState: UseFormReturn['formState'];
|
|
58
|
+
getValues: UseFormReturn['getValues'];
|
|
59
|
+
setValue: UseFormReturn['setValue'];
|
|
60
|
+
trigger: UseFormReturn['trigger'];
|
|
61
|
+
fieldArrays: Array<{
|
|
62
|
+
name: string;
|
|
63
|
+
fields: FieldArrayWithId<any>[];
|
|
64
|
+
append: (value: any) => void;
|
|
65
|
+
remove: (index?: number | number[]) => void;
|
|
66
|
+
prepend: (value: any) => void;
|
|
67
|
+
insert: (index: number, value: any) => void;
|
|
68
|
+
swap: (indexA: number, indexB: number) => void;
|
|
69
|
+
move: (from: number, to: number) => void;
|
|
70
|
+
}>;
|
|
71
|
+
}
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@akinon/akiform-builder",
|
|
3
|
+
"description": "Form builder library for form operations.",
|
|
4
|
+
"version": "0.0.1",
|
|
5
|
+
"private": false,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"module": "dist/index.js",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@akinon/ui-button": "0.0.1",
|
|
14
|
+
"@akinon/ui-input": "0.0.1",
|
|
15
|
+
"@akinon/ui-date-picker": "0.0.1",
|
|
16
|
+
"@akinon/ui-input-number": "0.0.1",
|
|
17
|
+
"@akinon/ui-checkbox": "0.0.1",
|
|
18
|
+
"@akinon/ui-select": "0.0.1"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"clean-package": "2.2.0",
|
|
22
|
+
"eslint-config-custom": "0.1.0",
|
|
23
|
+
"@akinon/vite-config": "^0.1.0",
|
|
24
|
+
"tsconfig": "0.0.0"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"react": ">=18",
|
|
28
|
+
"react-dom": ">=18",
|
|
29
|
+
"@akinon/akiform": "0.0.0",
|
|
30
|
+
"@akinon/akival": "0.0.0"
|
|
31
|
+
},
|
|
32
|
+
"clean-package": "../../../clean-package.config.json",
|
|
33
|
+
"types": "dist/index.d.ts",
|
|
34
|
+
"exports": {
|
|
35
|
+
".": {
|
|
36
|
+
"types": "./dist/index.d.ts",
|
|
37
|
+
"import": "./dist/index.js",
|
|
38
|
+
"require": "./dist/index.cjs"
|
|
39
|
+
},
|
|
40
|
+
"./package.json": "./package.json"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"build": "vite build",
|
|
44
|
+
"lint": "eslint *.ts*",
|
|
45
|
+
"test": "vitest run",
|
|
46
|
+
"test:ui": "vitest --ui",
|
|
47
|
+
"test:coverage": "vitest run --coverage",
|
|
48
|
+
"test:watch": "vitest watch",
|
|
49
|
+
"typecheck": "tsc --noEmit"
|
|
50
|
+
}
|
|
51
|
+
}
|