@nccirtu/tablefy 0.8.4 → 0.9.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/README.md +224 -200
- package/dist/columns/forms/builders/actions-builder.d.ts +14 -0
- package/dist/columns/forms/builders/form-schema.d.ts +35 -0
- package/dist/columns/forms/builders/index.d.ts +5 -0
- package/dist/columns/forms/builders/section-builder.d.ts +16 -0
- package/dist/columns/forms/builders/tab-builder.d.ts +16 -0
- package/dist/columns/forms/builders/wizard-builder.d.ts +17 -0
- package/dist/columns/forms/components/field-renderer.d.ts +12 -0
- package/dist/columns/forms/components/form-actions.d.ts +9 -0
- package/dist/columns/forms/components/form-renderer.d.ts +14 -0
- package/dist/columns/forms/components/grid-layout.d.ts +7 -0
- package/dist/columns/forms/components/index.d.ts +9 -0
- package/dist/columns/forms/components/section-renderer.d.ts +14 -0
- package/dist/columns/forms/components/tab-renderer.d.ts +15 -0
- package/dist/columns/forms/components/wizard-renderer.d.ts +17 -0
- package/dist/columns/forms/fields/base-field.d.ts +24 -0
- package/dist/columns/forms/fields/checkbox-group.d.ts +12 -0
- package/dist/columns/forms/fields/checkbox.d.ts +9 -0
- package/dist/columns/forms/fields/date-picker.d.ts +15 -0
- package/dist/columns/forms/fields/file-upload.d.ts +17 -0
- package/dist/columns/forms/fields/hidden.d.ts +9 -0
- package/dist/columns/forms/fields/index.d.ts +12 -0
- package/dist/columns/forms/fields/radio-group.d.ts +14 -0
- package/dist/columns/forms/fields/repeater.d.ts +21 -0
- package/dist/columns/forms/fields/select.d.ts +16 -0
- package/dist/columns/forms/fields/text-input.d.ts +20 -0
- package/dist/columns/forms/fields/textarea.d.ts +14 -0
- package/dist/columns/forms/fields/toggle.d.ts +11 -0
- package/dist/columns/forms/index.d.ts +26 -0
- package/dist/columns/forms/types/actions.d.ts +11 -0
- package/dist/columns/forms/types/field.d.ts +98 -0
- package/dist/columns/forms/types/form.d.ts +37 -0
- package/dist/columns/forms/types/index.d.ts +4 -0
- package/dist/columns/forms/types/layout.d.ts +31 -0
- package/dist/columns/index.d.ts +2 -0
- package/dist/columns/inertia/index.d.ts +4 -0
- package/dist/columns/inertia/precognition.d.ts +6 -0
- package/dist/columns/inertia/types.d.ts +63 -0
- package/dist/columns/inertia/use-inertia-form.d.ts +2 -0
- package/dist/columns/inertia/use-server-table.d.ts +2 -0
- package/dist/forms/builders/actions-builder.d.ts +14 -0
- package/dist/forms/builders/empty-state.d.ts +46 -0
- package/dist/forms/builders/form-schema.d.ts +35 -0
- package/dist/forms/builders/index.d.ts +2 -0
- package/dist/forms/builders/section-builder.d.ts +16 -0
- package/dist/forms/builders/tab-builder.d.ts +16 -0
- package/dist/forms/builders/table-schema.d.ts +45 -0
- package/dist/forms/builders/wizard-builder.d.ts +17 -0
- package/dist/forms/columns/actions-column.d.ts +26 -0
- package/dist/forms/columns/avatar-group-column.d.ts +38 -0
- package/dist/forms/columns/badge-column.d.ts +29 -0
- package/dist/forms/columns/base-column.d.ts +21 -0
- package/dist/forms/columns/button-column.d.ts +14 -0
- package/dist/forms/columns/checkbox-column.d.ts +5 -0
- package/dist/forms/columns/date-column.d.ts +24 -0
- package/dist/forms/columns/dropdown-column.d.ts +17 -0
- package/dist/forms/columns/enum-column.d.ts +52 -0
- package/dist/forms/columns/icon-column.d.ts +58 -0
- package/dist/forms/columns/image-column.d.ts +21 -0
- package/dist/forms/columns/index.d.ts +18 -0
- package/dist/forms/columns/input-column.d.ts +27 -0
- package/dist/forms/columns/link-column.d.ts +27 -0
- package/dist/forms/columns/number-column.d.ts +23 -0
- package/dist/forms/columns/progress-column.d.ts +30 -0
- package/dist/forms/columns/select-column.d.ts +24 -0
- package/dist/forms/columns/text-column.d.ts +14 -0
- package/dist/forms/columns/types.d.ts +46 -0
- package/dist/forms/components/field-renderer.d.ts +12 -0
- package/dist/forms/components/form-actions.d.ts +9 -0
- package/dist/forms/components/form-renderer.d.ts +14 -0
- package/dist/forms/components/grid-layout.d.ts +7 -0
- package/dist/forms/components/index.d.ts +9 -0
- package/dist/forms/components/section-renderer.d.ts +14 -0
- package/dist/forms/components/tab-renderer.d.ts +15 -0
- package/dist/forms/components/wizard-renderer.d.ts +17 -0
- package/dist/forms/confirm/ConfirmProvider.d.ts +6 -0
- package/dist/forms/confirm/confirm.d.ts +3 -0
- package/dist/forms/confirm/index.d.ts +3 -0
- package/dist/forms/confirm/types.d.ts +10 -0
- package/dist/forms/fields/base-field.d.ts +24 -0
- package/dist/forms/fields/checkbox-group.d.ts +12 -0
- package/dist/forms/fields/checkbox.d.ts +9 -0
- package/dist/forms/fields/date-picker.d.ts +15 -0
- package/dist/forms/fields/file-upload.d.ts +17 -0
- package/dist/forms/fields/hidden.d.ts +9 -0
- package/dist/forms/fields/index.d.ts +12 -0
- package/dist/forms/fields/radio-group.d.ts +14 -0
- package/dist/forms/fields/repeater.d.ts +21 -0
- package/dist/forms/fields/select.d.ts +16 -0
- package/dist/forms/fields/text-input.d.ts +20 -0
- package/dist/forms/fields/textarea.d.ts +14 -0
- package/dist/forms/fields/toggle.d.ts +11 -0
- package/dist/forms/forms/builders/actions-builder.d.ts +14 -0
- package/dist/forms/forms/builders/form-schema.d.ts +35 -0
- package/dist/forms/forms/builders/index.d.ts +5 -0
- package/dist/forms/forms/builders/section-builder.d.ts +16 -0
- package/dist/forms/forms/builders/tab-builder.d.ts +16 -0
- package/dist/forms/forms/builders/wizard-builder.d.ts +17 -0
- package/dist/forms/forms/components/field-renderer.d.ts +12 -0
- package/dist/forms/forms/components/form-actions.d.ts +9 -0
- package/dist/forms/forms/components/form-renderer.d.ts +14 -0
- package/dist/forms/forms/components/grid-layout.d.ts +7 -0
- package/dist/forms/forms/components/index.d.ts +9 -0
- package/dist/forms/forms/components/section-renderer.d.ts +14 -0
- package/dist/forms/forms/components/tab-renderer.d.ts +15 -0
- package/dist/forms/forms/components/wizard-renderer.d.ts +17 -0
- package/dist/forms/forms/fields/base-field.d.ts +24 -0
- package/dist/forms/forms/fields/checkbox-group.d.ts +12 -0
- package/dist/forms/forms/fields/checkbox.d.ts +9 -0
- package/dist/forms/forms/fields/date-picker.d.ts +15 -0
- package/dist/forms/forms/fields/file-upload.d.ts +17 -0
- package/dist/forms/forms/fields/hidden.d.ts +9 -0
- package/dist/forms/forms/fields/index.d.ts +12 -0
- package/dist/forms/forms/fields/radio-group.d.ts +14 -0
- package/dist/forms/forms/fields/repeater.d.ts +21 -0
- package/dist/forms/forms/fields/select.d.ts +16 -0
- package/dist/forms/forms/fields/text-input.d.ts +20 -0
- package/dist/forms/forms/fields/textarea.d.ts +14 -0
- package/dist/forms/forms/fields/toggle.d.ts +11 -0
- package/dist/forms/forms/index.d.ts +26 -0
- package/dist/forms/forms/types/actions.d.ts +11 -0
- package/dist/forms/forms/types/field.d.ts +98 -0
- package/dist/forms/forms/types/form.d.ts +37 -0
- package/dist/forms/forms/types/index.d.ts +4 -0
- package/dist/forms/forms/types/layout.d.ts +31 -0
- package/dist/forms/index.d.ts +25 -0
- package/dist/forms/index.esm.js +1052 -0
- package/dist/forms/index.esm.js.map +1 -0
- package/dist/forms/index.js +1077 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/inertia/index.d.ts +4 -0
- package/dist/forms/inertia/precognition.d.ts +6 -0
- package/dist/forms/inertia/types.d.ts +63 -0
- package/dist/forms/inertia/use-inertia-form.d.ts +2 -0
- package/dist/forms/inertia/use-server-table.d.ts +2 -0
- package/dist/forms/tablefy/avatar-list.d.ts +15 -0
- package/dist/forms/tablefy/data-table-empty.d.ts +8 -0
- package/dist/forms/tablefy/data-table-header.d.ts +17 -0
- package/dist/forms/tablefy/data-table-pagination.d.ts +9 -0
- package/dist/forms/tablefy/data-table-schema.d.ts +1 -0
- package/dist/forms/tablefy/data-table.d.ts +13 -0
- package/dist/forms/tablefy/index.d.ts +6 -0
- package/dist/forms/types/actions.d.ts +21 -0
- package/dist/forms/types/empty-state.d.ts +18 -0
- package/dist/forms/types/field.d.ts +98 -0
- package/dist/forms/types/filters.d.ts +25 -0
- package/dist/forms/types/form.d.ts +37 -0
- package/dist/forms/types/index.d.ts +4 -0
- package/dist/forms/types/layout.d.ts +31 -0
- package/dist/forms/types/table.d.ts +42 -0
- package/dist/forms/utils.d.ts +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +1050 -9
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1058 -0
- package/dist/index.js.map +1 -1
- package/dist/inertia/builders/empty-state.d.ts +46 -0
- package/dist/inertia/builders/index.d.ts +2 -0
- package/dist/inertia/builders/table-schema.d.ts +45 -0
- package/dist/inertia/columns/actions-column.d.ts +26 -0
- package/dist/inertia/columns/avatar-group-column.d.ts +38 -0
- package/dist/inertia/columns/badge-column.d.ts +29 -0
- package/dist/inertia/columns/base-column.d.ts +21 -0
- package/dist/inertia/columns/button-column.d.ts +14 -0
- package/dist/inertia/columns/checkbox-column.d.ts +5 -0
- package/dist/inertia/columns/date-column.d.ts +24 -0
- package/dist/inertia/columns/dropdown-column.d.ts +17 -0
- package/dist/inertia/columns/enum-column.d.ts +52 -0
- package/dist/inertia/columns/icon-column.d.ts +58 -0
- package/dist/inertia/columns/image-column.d.ts +21 -0
- package/dist/inertia/columns/index.d.ts +18 -0
- package/dist/inertia/columns/input-column.d.ts +27 -0
- package/dist/inertia/columns/link-column.d.ts +27 -0
- package/dist/inertia/columns/number-column.d.ts +23 -0
- package/dist/inertia/columns/progress-column.d.ts +30 -0
- package/dist/inertia/columns/select-column.d.ts +24 -0
- package/dist/inertia/columns/text-column.d.ts +14 -0
- package/dist/inertia/columns/types.d.ts +46 -0
- package/dist/inertia/confirm/ConfirmProvider.d.ts +6 -0
- package/dist/inertia/confirm/confirm.d.ts +3 -0
- package/dist/inertia/confirm/index.d.ts +3 -0
- package/dist/inertia/confirm/types.d.ts +10 -0
- package/dist/inertia/forms/builders/actions-builder.d.ts +14 -0
- package/dist/inertia/forms/builders/form-schema.d.ts +35 -0
- package/dist/inertia/forms/builders/index.d.ts +5 -0
- package/dist/inertia/forms/builders/section-builder.d.ts +16 -0
- package/dist/inertia/forms/builders/tab-builder.d.ts +16 -0
- package/dist/inertia/forms/builders/wizard-builder.d.ts +17 -0
- package/dist/inertia/forms/components/field-renderer.d.ts +12 -0
- package/dist/inertia/forms/components/form-actions.d.ts +9 -0
- package/dist/inertia/forms/components/form-renderer.d.ts +14 -0
- package/dist/inertia/forms/components/grid-layout.d.ts +7 -0
- package/dist/inertia/forms/components/index.d.ts +9 -0
- package/dist/inertia/forms/components/section-renderer.d.ts +14 -0
- package/dist/inertia/forms/components/tab-renderer.d.ts +15 -0
- package/dist/inertia/forms/components/wizard-renderer.d.ts +17 -0
- package/dist/inertia/forms/fields/base-field.d.ts +24 -0
- package/dist/inertia/forms/fields/checkbox-group.d.ts +12 -0
- package/dist/inertia/forms/fields/checkbox.d.ts +9 -0
- package/dist/inertia/forms/fields/date-picker.d.ts +15 -0
- package/dist/inertia/forms/fields/file-upload.d.ts +17 -0
- package/dist/inertia/forms/fields/hidden.d.ts +9 -0
- package/dist/inertia/forms/fields/index.d.ts +12 -0
- package/dist/inertia/forms/fields/radio-group.d.ts +14 -0
- package/dist/inertia/forms/fields/repeater.d.ts +21 -0
- package/dist/inertia/forms/fields/select.d.ts +16 -0
- package/dist/inertia/forms/fields/text-input.d.ts +20 -0
- package/dist/inertia/forms/fields/textarea.d.ts +14 -0
- package/dist/inertia/forms/fields/toggle.d.ts +11 -0
- package/dist/inertia/forms/index.d.ts +26 -0
- package/dist/inertia/forms/types/actions.d.ts +11 -0
- package/dist/inertia/forms/types/field.d.ts +98 -0
- package/dist/inertia/forms/types/form.d.ts +37 -0
- package/dist/inertia/forms/types/index.d.ts +4 -0
- package/dist/inertia/forms/types/layout.d.ts +31 -0
- package/dist/inertia/index.d.ts +4 -0
- package/dist/inertia/index.esm.js +149 -0
- package/dist/inertia/index.esm.js.map +1 -0
- package/dist/inertia/index.js +153 -0
- package/dist/inertia/index.js.map +1 -0
- package/dist/inertia/inertia/index.d.ts +4 -0
- package/dist/inertia/inertia/precognition.d.ts +6 -0
- package/dist/inertia/inertia/types.d.ts +63 -0
- package/dist/inertia/inertia/use-inertia-form.d.ts +2 -0
- package/dist/inertia/inertia/use-server-table.d.ts +2 -0
- package/dist/inertia/precognition.d.ts +6 -0
- package/dist/inertia/tablefy/avatar-list.d.ts +15 -0
- package/dist/inertia/tablefy/data-table-empty.d.ts +8 -0
- package/dist/inertia/tablefy/data-table-header.d.ts +17 -0
- package/dist/inertia/tablefy/data-table-pagination.d.ts +9 -0
- package/dist/inertia/tablefy/data-table-schema.d.ts +1 -0
- package/dist/inertia/tablefy/data-table.d.ts +13 -0
- package/dist/inertia/tablefy/index.d.ts +6 -0
- package/dist/inertia/types/actions.d.ts +21 -0
- package/dist/inertia/types/empty-state.d.ts +18 -0
- package/dist/inertia/types/filters.d.ts +25 -0
- package/dist/inertia/types/index.d.ts +4 -0
- package/dist/inertia/types/table.d.ts +42 -0
- package/dist/inertia/types.d.ts +63 -0
- package/dist/inertia/use-inertia-form.d.ts +2 -0
- package/dist/inertia/use-server-table.d.ts +2 -0
- package/dist/inertia/utils.d.ts +1 -0
- package/package.json +41 -14
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FormActionConfig } from "../types/actions";
|
|
2
|
+
export declare class ActionsBuilder<TData extends Record<string, any>> {
|
|
3
|
+
private actionsList;
|
|
4
|
+
submit(opts?: Partial<Omit<FormActionConfig<TData>, "type">> & {
|
|
5
|
+
label?: string;
|
|
6
|
+
}): this;
|
|
7
|
+
cancel(opts?: Partial<Omit<FormActionConfig<TData>, "type">> & {
|
|
8
|
+
label?: string;
|
|
9
|
+
}): this;
|
|
10
|
+
custom(opts: Omit<FormActionConfig<TData>, "type"> & {
|
|
11
|
+
label: string;
|
|
12
|
+
}): this;
|
|
13
|
+
build(): FormActionConfig<TData>[];
|
|
14
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { FormBuildResult, BuiltField } from "../types/form";
|
|
2
|
+
import { SectionConfig, TabConfig, WizardStepConfig } from "../types/layout";
|
|
3
|
+
import { ActionsBuilder } from "./actions-builder";
|
|
4
|
+
type FieldBuilder<TData extends Record<string, any>> = {
|
|
5
|
+
build(): BuiltField<TData>;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Form Schema Builder
|
|
9
|
+
* Fluent API for building complete form configurations
|
|
10
|
+
*/
|
|
11
|
+
export declare class FormSchema<TData extends Record<string, any>> {
|
|
12
|
+
private fieldBuilders;
|
|
13
|
+
private schemaConfig;
|
|
14
|
+
static make<TData extends Record<string, any>>(): FormSchema<TData>;
|
|
15
|
+
title(title: string | ((data: TData) => string)): this;
|
|
16
|
+
description(description: string | ((data: TData) => string)): this;
|
|
17
|
+
columns(columns: number): this;
|
|
18
|
+
bordered(bordered?: boolean): this;
|
|
19
|
+
spacing(spacing: "compact" | "normal" | "relaxed"): this;
|
|
20
|
+
disabled(disabled: boolean | ((data: TData) => boolean)): this;
|
|
21
|
+
fields(...builders: FieldBuilder<TData>[]): this;
|
|
22
|
+
sections(...sections: {
|
|
23
|
+
build(): SectionConfig<TData>;
|
|
24
|
+
}[]): this;
|
|
25
|
+
tabs(...tabs: {
|
|
26
|
+
build(): TabConfig<TData>;
|
|
27
|
+
}[]): this;
|
|
28
|
+
wizard(...steps: {
|
|
29
|
+
build(): WizardStepConfig<TData>;
|
|
30
|
+
}[]): this;
|
|
31
|
+
actions(fn: (builder: ActionsBuilder<TData>) => ActionsBuilder<TData>): this;
|
|
32
|
+
actionsPosition(position: "start" | "end" | "between" | "center"): this;
|
|
33
|
+
build(): FormBuildResult<TData>;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { SectionConfig } from "../types/layout";
|
|
3
|
+
export declare class SectionBuilder<TData extends Record<string, any>> {
|
|
4
|
+
private sectionConfig;
|
|
5
|
+
constructor(title: string);
|
|
6
|
+
static make<TData extends Record<string, any>>(title: string): SectionBuilder<TData>;
|
|
7
|
+
id(id: string): this;
|
|
8
|
+
description(description: string): this;
|
|
9
|
+
fields(fields: string[]): this;
|
|
10
|
+
columns(columns: number): this;
|
|
11
|
+
collapsible(collapsible?: boolean): this;
|
|
12
|
+
collapsed(collapsed?: boolean): this;
|
|
13
|
+
icon(icon: ReactNode): this;
|
|
14
|
+
hidden(fn: (data: TData) => boolean): this;
|
|
15
|
+
build(): SectionConfig<TData>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { TabConfig, SectionConfig } from "../types/layout";
|
|
3
|
+
export declare class TabBuilder<TData extends Record<string, any>> {
|
|
4
|
+
private tabConfig;
|
|
5
|
+
constructor(label: string);
|
|
6
|
+
static make<TData extends Record<string, any>>(label: string): TabBuilder<TData>;
|
|
7
|
+
id(id: string): this;
|
|
8
|
+
icon(icon: ReactNode): this;
|
|
9
|
+
fields(fields: string[]): this;
|
|
10
|
+
sections(...sections: {
|
|
11
|
+
build(): SectionConfig<TData>;
|
|
12
|
+
}[]): this;
|
|
13
|
+
badge(badge: string | number | ((data: TData) => string | number)): this;
|
|
14
|
+
disabled(fn: (data: TData) => boolean): this;
|
|
15
|
+
build(): TabConfig<TData>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { WizardStepConfig, SectionConfig } from "../types/layout";
|
|
3
|
+
export declare class WizardStep<TData extends Record<string, any>> {
|
|
4
|
+
private stepConfig;
|
|
5
|
+
constructor(label: string);
|
|
6
|
+
static make<TData extends Record<string, any>>(label: string): WizardStep<TData>;
|
|
7
|
+
id(id: string): this;
|
|
8
|
+
description(description: string): this;
|
|
9
|
+
icon(icon: ReactNode): this;
|
|
10
|
+
fields(fields: string[]): this;
|
|
11
|
+
sections(...sections: {
|
|
12
|
+
build(): SectionConfig<TData>;
|
|
13
|
+
}[]): this;
|
|
14
|
+
canProceed(fn: (data: TData) => boolean): this;
|
|
15
|
+
beforeNext(fn: (data: TData) => Promise<boolean> | boolean): this;
|
|
16
|
+
build(): WizardStepConfig<TData>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BuiltField } from "../types/form";
|
|
3
|
+
export interface FieldRendererProps<TData extends Record<string, any>> {
|
|
4
|
+
field: BuiltField<TData>;
|
|
5
|
+
value: any;
|
|
6
|
+
error?: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
data: TData;
|
|
9
|
+
onChange: (value: any) => void;
|
|
10
|
+
onBlur?: () => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function FieldRenderer<TData extends Record<string, any>>({ field, value, error, disabled, data, onChange, onBlur, }: FieldRendererProps<TData>): ReactNode;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { FormActionConfig } from "../types/actions";
|
|
3
|
+
export interface FormActionsProps<TData extends Record<string, any>> {
|
|
4
|
+
actions: FormActionConfig<TData>[];
|
|
5
|
+
position?: "start" | "end" | "between" | "center";
|
|
6
|
+
data: TData;
|
|
7
|
+
processing?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function FormActions<TData extends Record<string, any>>({ actions, position, data, processing, }: FormActionsProps<TData>): ReactNode;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { FormBuildResult } from "../types/form";
|
|
3
|
+
export interface FormRendererProps<TData extends Record<string, any>> {
|
|
4
|
+
schema: FormBuildResult<TData>;
|
|
5
|
+
data: TData;
|
|
6
|
+
errors: Partial<Record<keyof TData, string>>;
|
|
7
|
+
onChange: (field: keyof TData, value: any) => void;
|
|
8
|
+
onSubmit: () => void;
|
|
9
|
+
processing?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
onBlur?: (field: string) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function FormRenderer<TData extends Record<string, any>>({ schema, data, errors, onChange, onSubmit, processing, className, disabled, onBlur, }: FormRendererProps<TData>): ReactNode;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { FormRenderer } from "./form-renderer";
|
|
2
|
+
export type { FormRendererProps } from "./form-renderer";
|
|
3
|
+
export { FieldRenderer } from "./field-renderer";
|
|
4
|
+
export type { FieldRendererProps } from "./field-renderer";
|
|
5
|
+
export { GridLayout } from "./grid-layout";
|
|
6
|
+
export { FormActions } from "./form-actions";
|
|
7
|
+
export { SectionRenderer } from "./section-renderer";
|
|
8
|
+
export { TabRenderer } from "./tab-renderer";
|
|
9
|
+
export { WizardRenderer } from "./wizard-renderer";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { SectionConfig } from "../types/layout";
|
|
3
|
+
import { BuiltField } from "../types/form";
|
|
4
|
+
export interface SectionRendererProps<TData extends Record<string, any>> {
|
|
5
|
+
section: SectionConfig<TData>;
|
|
6
|
+
fields: BuiltField<TData>[];
|
|
7
|
+
data: TData;
|
|
8
|
+
errors: Partial<Record<keyof TData, string>>;
|
|
9
|
+
onChange: (field: keyof TData, value: any) => void;
|
|
10
|
+
onBlur?: (field: string) => void;
|
|
11
|
+
isFieldVisible: (field: BuiltField<TData>) => boolean;
|
|
12
|
+
isFieldDisabled: (field: BuiltField<TData>) => boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function SectionRenderer<TData extends Record<string, any>>({ section, fields, data, errors, onChange, onBlur, isFieldVisible, isFieldDisabled, }: SectionRendererProps<TData>): ReactNode;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { TabConfig } from "../types/layout";
|
|
3
|
+
import { BuiltField } from "../types/form";
|
|
4
|
+
export interface TabRendererProps<TData extends Record<string, any>> {
|
|
5
|
+
tabs: TabConfig<TData>[];
|
|
6
|
+
fields: BuiltField<TData>[];
|
|
7
|
+
data: TData;
|
|
8
|
+
errors: Partial<Record<keyof TData, string>>;
|
|
9
|
+
onChange: (field: keyof TData, value: any) => void;
|
|
10
|
+
onBlur?: (field: string) => void;
|
|
11
|
+
isFieldVisible: (field: BuiltField<TData>) => boolean;
|
|
12
|
+
isFieldDisabled: (field: BuiltField<TData>) => boolean;
|
|
13
|
+
columns?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function TabRenderer<TData extends Record<string, any>>({ tabs, fields, data, errors, onChange, onBlur, isFieldVisible, isFieldDisabled, columns, }: TabRendererProps<TData>): ReactNode;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { WizardStepConfig } from "../types/layout";
|
|
3
|
+
import { BuiltField } from "../types/form";
|
|
4
|
+
export interface WizardRendererProps<TData extends Record<string, any>> {
|
|
5
|
+
steps: WizardStepConfig<TData>[];
|
|
6
|
+
fields: BuiltField<TData>[];
|
|
7
|
+
data: TData;
|
|
8
|
+
errors: Partial<Record<keyof TData, string>>;
|
|
9
|
+
onChange: (field: keyof TData, value: any) => void;
|
|
10
|
+
onBlur?: (field: string) => void;
|
|
11
|
+
isFieldVisible: (field: BuiltField<TData>) => boolean;
|
|
12
|
+
isFieldDisabled: (field: BuiltField<TData>) => boolean;
|
|
13
|
+
columns?: number;
|
|
14
|
+
onSubmit: () => void;
|
|
15
|
+
processing?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function WizardRenderer<TData extends Record<string, any>>({ steps, fields, data, errors, onChange, onBlur, isFieldVisible, isFieldDisabled, columns, onSubmit, processing, }: WizardRendererProps<TData>): ReactNode;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseFieldConfig, ValidationRule } from "../types/field";
|
|
3
|
+
import { FieldType, FieldRenderProps, BuiltField } from "../types/form";
|
|
4
|
+
export declare abstract class BaseField<TData extends Record<string, any>, TConfig extends BaseFieldConfig<TData>> {
|
|
5
|
+
protected config: TConfig;
|
|
6
|
+
constructor(name: string);
|
|
7
|
+
label(label: string): this;
|
|
8
|
+
placeholder(placeholder: string): this;
|
|
9
|
+
helperText(text: string): this;
|
|
10
|
+
required(required?: boolean): this;
|
|
11
|
+
disabled(disabled?: boolean | ((data: TData) => boolean)): this;
|
|
12
|
+
readOnly(readOnly?: boolean): this;
|
|
13
|
+
hidden(hidden?: boolean | ((data: TData) => boolean)): this;
|
|
14
|
+
default(value: any): this;
|
|
15
|
+
columnSpan(span: number): this;
|
|
16
|
+
className(className: string): this;
|
|
17
|
+
rules(rules: ValidationRule[]): this;
|
|
18
|
+
zodSchema(schema: any): this;
|
|
19
|
+
dependsOn<K extends string & keyof TData>(field: K, condition: (value: TData[K], data: TData) => boolean, effect?: "show" | "hide" | "enable" | "disable" | "setValue", effectValue?: any): this;
|
|
20
|
+
reactive(reactive?: boolean): this;
|
|
21
|
+
abstract readonly fieldType: FieldType;
|
|
22
|
+
abstract renderField(props: FieldRenderProps<TData>): ReactNode;
|
|
23
|
+
build(): BuiltField<TData>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseField } from "./base-field";
|
|
3
|
+
import { CheckboxGroupConfig, SelectOption } from "../types/field";
|
|
4
|
+
import { FieldType, FieldRenderProps } from "../types/form";
|
|
5
|
+
export declare class CheckboxGroup<TData extends Record<string, any>> extends BaseField<TData, CheckboxGroupConfig<TData>> {
|
|
6
|
+
readonly fieldType: FieldType;
|
|
7
|
+
constructor(name: string);
|
|
8
|
+
static make<TData extends Record<string, any>>(name: string & keyof TData | string): CheckboxGroup<TData>;
|
|
9
|
+
options(options: SelectOption[]): this;
|
|
10
|
+
columns(columns: number): this;
|
|
11
|
+
renderField({ value, onChange, error, disabled, }: FieldRenderProps<TData>): ReactNode;
|
|
12
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseField } from "./base-field";
|
|
3
|
+
import { CheckboxConfig } from "../types/field";
|
|
4
|
+
import { FieldType, FieldRenderProps } from "../types/form";
|
|
5
|
+
export declare class Checkbox<TData extends Record<string, any>> extends BaseField<TData, CheckboxConfig<TData>> {
|
|
6
|
+
readonly fieldType: FieldType;
|
|
7
|
+
static make<TData extends Record<string, any>>(name: string & keyof TData | string): Checkbox<TData>;
|
|
8
|
+
renderField({ value, onChange, error, disabled, }: FieldRenderProps<TData>): ReactNode;
|
|
9
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseField } from "./base-field";
|
|
3
|
+
import { DatePickerConfig } from "../types/field";
|
|
4
|
+
import { FieldType, FieldRenderProps } from "../types/form";
|
|
5
|
+
export declare class DatePicker<TData extends Record<string, any>> extends BaseField<TData, DatePickerConfig<TData>> {
|
|
6
|
+
readonly fieldType: FieldType;
|
|
7
|
+
constructor(name: string);
|
|
8
|
+
static make<TData extends Record<string, any>>(name: string & keyof TData | string): DatePicker<TData>;
|
|
9
|
+
minDate(date: Date | ((data: TData) => Date)): this;
|
|
10
|
+
maxDate(date: Date | ((data: TData) => Date)): this;
|
|
11
|
+
format(format: string): this;
|
|
12
|
+
includeTime(includeTime?: boolean): this;
|
|
13
|
+
locale(locale: string): this;
|
|
14
|
+
renderField({ value, onChange, error, disabled, data, }: FieldRenderProps<TData>): ReactNode;
|
|
15
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseField } from "./base-field";
|
|
3
|
+
import { FileUploadConfig } from "../types/field";
|
|
4
|
+
import { FieldType, FieldRenderProps } from "../types/form";
|
|
5
|
+
export declare class FileUpload<TData extends Record<string, any>> extends BaseField<TData, FileUploadConfig<TData>> {
|
|
6
|
+
readonly fieldType: FieldType;
|
|
7
|
+
constructor(name: string);
|
|
8
|
+
static make<TData extends Record<string, any>>(name: string & keyof TData | string): FileUpload<TData>;
|
|
9
|
+
accept(accept: string): this;
|
|
10
|
+
maxSize(bytes: number): this;
|
|
11
|
+
multiple(multiple?: boolean): this;
|
|
12
|
+
maxFiles(max: number): this;
|
|
13
|
+
preview(preview?: boolean): this;
|
|
14
|
+
image(): this;
|
|
15
|
+
pdf(): this;
|
|
16
|
+
renderField({ value, onChange, error, disabled, }: FieldRenderProps<TData>): ReactNode;
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseField } from "./base-field";
|
|
3
|
+
import { HiddenConfig } from "../types/field";
|
|
4
|
+
import { FieldType, FieldRenderProps } from "../types/form";
|
|
5
|
+
export declare class Hidden<TData extends Record<string, any>> extends BaseField<TData, HiddenConfig<TData>> {
|
|
6
|
+
readonly fieldType: FieldType;
|
|
7
|
+
static make<TData extends Record<string, any>>(name: string & keyof TData | string): Hidden<TData>;
|
|
8
|
+
renderField({ value }: FieldRenderProps<TData>): ReactNode;
|
|
9
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { BaseField } from "./base-field";
|
|
2
|
+
export { TextInput } from "./text-input";
|
|
3
|
+
export { Textarea } from "./textarea";
|
|
4
|
+
export { Select } from "./select";
|
|
5
|
+
export { Checkbox } from "./checkbox";
|
|
6
|
+
export { Toggle } from "./toggle";
|
|
7
|
+
export { RadioGroup } from "./radio-group";
|
|
8
|
+
export { DatePicker } from "./date-picker";
|
|
9
|
+
export { Hidden } from "./hidden";
|
|
10
|
+
export { FileUpload } from "./file-upload";
|
|
11
|
+
export { CheckboxGroup } from "./checkbox-group";
|
|
12
|
+
export { Repeater } from "./repeater";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseField } from "./base-field";
|
|
3
|
+
import { RadioGroupConfig, SelectOption } from "../types/field";
|
|
4
|
+
import { FieldType, FieldRenderProps } from "../types/form";
|
|
5
|
+
export declare class RadioGroup<TData extends Record<string, any>> extends BaseField<TData, RadioGroupConfig<TData>> {
|
|
6
|
+
readonly fieldType: FieldType;
|
|
7
|
+
constructor(name: string);
|
|
8
|
+
static make<TData extends Record<string, any>>(name: string & keyof TData | string): RadioGroup<TData>;
|
|
9
|
+
options(options: SelectOption[]): this;
|
|
10
|
+
orientation(orientation: "horizontal" | "vertical"): this;
|
|
11
|
+
horizontal(): this;
|
|
12
|
+
vertical(): this;
|
|
13
|
+
renderField({ value, onChange, error, disabled, }: FieldRenderProps<TData>): ReactNode;
|
|
14
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseField } from "./base-field";
|
|
3
|
+
import { RepeaterConfig } from "../types/field";
|
|
4
|
+
import { FieldType, FieldRenderProps, BuiltField } from "../types/form";
|
|
5
|
+
type FieldBuilder<TData extends Record<string, any>> = {
|
|
6
|
+
build(): BuiltField<TData>;
|
|
7
|
+
};
|
|
8
|
+
export declare class Repeater<TData extends Record<string, any>> extends BaseField<TData, RepeaterConfig<TData>> {
|
|
9
|
+
readonly fieldType: FieldType;
|
|
10
|
+
private fieldBuilders;
|
|
11
|
+
constructor(name: string);
|
|
12
|
+
static make<TData extends Record<string, any>>(name: string & keyof TData | string): Repeater<TData>;
|
|
13
|
+
fields(...builders: FieldBuilder<any>[]): this;
|
|
14
|
+
minItems(min: number): this;
|
|
15
|
+
maxItems(max: number): this;
|
|
16
|
+
addLabel(label: string): this;
|
|
17
|
+
collapsible(collapsible?: boolean): this;
|
|
18
|
+
orderable(orderable?: boolean): this;
|
|
19
|
+
renderField({ value, onChange, error, disabled, data, }: FieldRenderProps<TData>): ReactNode;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseField } from "./base-field";
|
|
3
|
+
import { SelectConfig, SelectOption } from "../types/field";
|
|
4
|
+
import { FieldType, FieldRenderProps } from "../types/form";
|
|
5
|
+
export declare class Select<TData extends Record<string, any>> extends BaseField<TData, SelectConfig<TData>> {
|
|
6
|
+
readonly fieldType: FieldType;
|
|
7
|
+
constructor(name: string);
|
|
8
|
+
static make<TData extends Record<string, any>>(name: string & keyof TData | string): Select<TData>;
|
|
9
|
+
options(options: SelectOption[] | ((data: TData) => SelectOption[])): this;
|
|
10
|
+
multiple(multiple?: boolean): this;
|
|
11
|
+
searchable(searchable?: boolean): this;
|
|
12
|
+
clearable(clearable?: boolean): this;
|
|
13
|
+
maxItems(max: number): this;
|
|
14
|
+
loadOptions(fn: (query: string) => Promise<SelectOption[]>): this;
|
|
15
|
+
renderField({ value, onChange, error, disabled, data, }: FieldRenderProps<TData>): ReactNode;
|
|
16
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseField } from "./base-field";
|
|
3
|
+
import { TextInputConfig } from "../types/field";
|
|
4
|
+
import { FieldType, FieldRenderProps } from "../types/form";
|
|
5
|
+
export declare class TextInput<TData extends Record<string, any>> extends BaseField<TData, TextInputConfig<TData>> {
|
|
6
|
+
readonly fieldType: FieldType;
|
|
7
|
+
static make<TData extends Record<string, any>>(name: string & keyof TData | string): TextInput<TData>;
|
|
8
|
+
type(type: "text" | "email" | "password" | "number" | "url" | "tel"): this;
|
|
9
|
+
email(): this;
|
|
10
|
+
password(): this;
|
|
11
|
+
number(): this;
|
|
12
|
+
url(): this;
|
|
13
|
+
tel(): this;
|
|
14
|
+
minLength(min: number): this;
|
|
15
|
+
maxLength(max: number): this;
|
|
16
|
+
prefix(prefix: string | ReactNode): this;
|
|
17
|
+
suffix(suffix: string | ReactNode): this;
|
|
18
|
+
autocomplete(value: string): this;
|
|
19
|
+
renderField({ value, onChange, onBlur, error, disabled, }: FieldRenderProps<TData>): ReactNode;
|
|
20
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseField } from "./base-field";
|
|
3
|
+
import { TextareaConfig } from "../types/field";
|
|
4
|
+
import { FieldType, FieldRenderProps } from "../types/form";
|
|
5
|
+
export declare class Textarea<TData extends Record<string, any>> extends BaseField<TData, TextareaConfig<TData>> {
|
|
6
|
+
readonly fieldType: FieldType;
|
|
7
|
+
constructor(name: string);
|
|
8
|
+
static make<TData extends Record<string, any>>(name: string & keyof TData | string): Textarea<TData>;
|
|
9
|
+
rows(rows: number): this;
|
|
10
|
+
minLength(min: number): this;
|
|
11
|
+
maxLength(max: number): this;
|
|
12
|
+
autoResize(autoResize?: boolean): this;
|
|
13
|
+
renderField({ value, onChange, onBlur, error, disabled, }: FieldRenderProps<TData>): ReactNode;
|
|
14
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseField } from "./base-field";
|
|
3
|
+
import { ToggleConfig } from "../types/field";
|
|
4
|
+
import { FieldType, FieldRenderProps } from "../types/form";
|
|
5
|
+
export declare class Toggle<TData extends Record<string, any>> extends BaseField<TData, ToggleConfig<TData>> {
|
|
6
|
+
readonly fieldType: FieldType;
|
|
7
|
+
static make<TData extends Record<string, any>>(name: string & keyof TData | string): Toggle<TData>;
|
|
8
|
+
onLabel(label: string): this;
|
|
9
|
+
offLabel(label: string): this;
|
|
10
|
+
renderField({ value, onChange, error, disabled, }: FieldRenderProps<TData>): ReactNode;
|
|
11
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export { FormSchema } from "./builders/form-schema";
|
|
2
|
+
export { ActionsBuilder } from "./builders/actions-builder";
|
|
3
|
+
export { SectionBuilder } from "./builders/section-builder";
|
|
4
|
+
export { TabBuilder } from "./builders/tab-builder";
|
|
5
|
+
export { WizardStep } from "./builders/wizard-builder";
|
|
6
|
+
export { BaseField } from "./fields/base-field";
|
|
7
|
+
export { TextInput } from "./fields/text-input";
|
|
8
|
+
export { Textarea } from "./fields/textarea";
|
|
9
|
+
export { Select } from "./fields/select";
|
|
10
|
+
export { Checkbox } from "./fields/checkbox";
|
|
11
|
+
export { Toggle } from "./fields/toggle";
|
|
12
|
+
export { RadioGroup } from "./fields/radio-group";
|
|
13
|
+
export { DatePicker } from "./fields/date-picker";
|
|
14
|
+
export { Hidden } from "./fields/hidden";
|
|
15
|
+
export { FileUpload } from "./fields/file-upload";
|
|
16
|
+
export { CheckboxGroup } from "./fields/checkbox-group";
|
|
17
|
+
export { Repeater } from "./fields/repeater";
|
|
18
|
+
export { FormRenderer } from "./components/form-renderer";
|
|
19
|
+
export type { FormRendererProps } from "./components/form-renderer";
|
|
20
|
+
export { FieldRenderer } from "./components/field-renderer";
|
|
21
|
+
export { GridLayout } from "./components/grid-layout";
|
|
22
|
+
export { FormActions } from "./components/form-actions";
|
|
23
|
+
export { SectionRenderer } from "./components/section-renderer";
|
|
24
|
+
export { TabRenderer } from "./components/tab-renderer";
|
|
25
|
+
export { WizardRenderer } from "./components/wizard-renderer";
|
|
26
|
+
export type { BaseFieldConfig, ValidationRule, DependencyConfig, TextInputConfig, TextareaConfig, SelectOption, SelectConfig, CheckboxConfig, CheckboxGroupConfig, ToggleConfig, RadioGroupConfig, DatePickerConfig, FileUploadConfig, RepeaterConfig, HiddenConfig, FieldType, FieldRenderProps, BuiltField, FormSchemaConfig, FormBuildResult, SectionConfig, TabConfig, WizardStepConfig, FormActionConfig, } from "./types";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
export interface FormActionConfig<TData extends Record<string, any> = Record<string, any>> {
|
|
3
|
+
type: "submit" | "cancel" | "custom";
|
|
4
|
+
label: string;
|
|
5
|
+
variant?: "default" | "secondary" | "outline" | "ghost" | "destructive";
|
|
6
|
+
disabled?: boolean | ((data: TData, processing: boolean) => boolean);
|
|
7
|
+
loading?: boolean;
|
|
8
|
+
icon?: ReactNode;
|
|
9
|
+
onClick?: () => void;
|
|
10
|
+
href?: string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
export interface BaseFieldConfig<TData extends Record<string, any>> {
|
|
3
|
+
name: string;
|
|
4
|
+
label?: string;
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
helperText?: string;
|
|
7
|
+
required?: boolean;
|
|
8
|
+
disabled?: boolean | ((data: TData) => boolean);
|
|
9
|
+
readOnly?: boolean;
|
|
10
|
+
hidden?: boolean | ((data: TData) => boolean);
|
|
11
|
+
defaultValue?: any;
|
|
12
|
+
columnSpan?: number;
|
|
13
|
+
className?: string;
|
|
14
|
+
rules?: ValidationRule[];
|
|
15
|
+
zodSchema?: any;
|
|
16
|
+
dependsOn?: DependencyConfig<TData>[];
|
|
17
|
+
reactive?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface ValidationRule {
|
|
20
|
+
type: string;
|
|
21
|
+
value?: any;
|
|
22
|
+
message?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface DependencyConfig<TData> {
|
|
25
|
+
field: string & keyof TData;
|
|
26
|
+
condition: (value: any, data: TData) => boolean;
|
|
27
|
+
effect: "show" | "hide" | "enable" | "disable" | "setValue";
|
|
28
|
+
effectValue?: any;
|
|
29
|
+
}
|
|
30
|
+
export interface TextInputConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
|
|
31
|
+
type?: "text" | "email" | "password" | "number" | "url" | "tel";
|
|
32
|
+
minLength?: number;
|
|
33
|
+
maxLength?: number;
|
|
34
|
+
prefix?: string | ReactNode;
|
|
35
|
+
suffix?: string | ReactNode;
|
|
36
|
+
mask?: string;
|
|
37
|
+
autocomplete?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface TextareaConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
|
|
40
|
+
rows?: number;
|
|
41
|
+
minLength?: number;
|
|
42
|
+
maxLength?: number;
|
|
43
|
+
autoResize?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface SelectOption {
|
|
46
|
+
label: string;
|
|
47
|
+
value: string;
|
|
48
|
+
disabled?: boolean;
|
|
49
|
+
group?: string;
|
|
50
|
+
description?: string;
|
|
51
|
+
icon?: ReactNode;
|
|
52
|
+
}
|
|
53
|
+
export interface SelectConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
|
|
54
|
+
options: SelectOption[] | ((data: TData) => SelectOption[]);
|
|
55
|
+
multiple?: boolean;
|
|
56
|
+
searchable?: boolean;
|
|
57
|
+
clearable?: boolean;
|
|
58
|
+
maxItems?: number;
|
|
59
|
+
loadOptions?: (query: string) => Promise<SelectOption[]>;
|
|
60
|
+
}
|
|
61
|
+
export interface CheckboxConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
|
|
62
|
+
}
|
|
63
|
+
export interface CheckboxGroupConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
|
|
64
|
+
options: SelectOption[];
|
|
65
|
+
columns?: number;
|
|
66
|
+
}
|
|
67
|
+
export interface ToggleConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
|
|
68
|
+
onLabel?: string;
|
|
69
|
+
offLabel?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface RadioGroupConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
|
|
72
|
+
options: SelectOption[];
|
|
73
|
+
orientation?: "horizontal" | "vertical";
|
|
74
|
+
}
|
|
75
|
+
export interface DatePickerConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
|
|
76
|
+
minDate?: Date | ((data: TData) => Date);
|
|
77
|
+
maxDate?: Date | ((data: TData) => Date);
|
|
78
|
+
format?: string;
|
|
79
|
+
includeTime?: boolean;
|
|
80
|
+
locale?: string;
|
|
81
|
+
}
|
|
82
|
+
export interface FileUploadConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
|
|
83
|
+
accept?: string;
|
|
84
|
+
maxSize?: number;
|
|
85
|
+
multiple?: boolean;
|
|
86
|
+
maxFiles?: number;
|
|
87
|
+
preview?: boolean;
|
|
88
|
+
}
|
|
89
|
+
export interface RepeaterConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
|
|
90
|
+
fields: any[];
|
|
91
|
+
minItems?: number;
|
|
92
|
+
maxItems?: number;
|
|
93
|
+
addLabel?: string;
|
|
94
|
+
collapsible?: boolean;
|
|
95
|
+
orderable?: boolean;
|
|
96
|
+
}
|
|
97
|
+
export interface HiddenConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
|
|
98
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { BaseFieldConfig } from "./field";
|
|
3
|
+
import { SectionConfig, TabConfig, WizardStepConfig } from "./layout";
|
|
4
|
+
import { FormActionConfig } from "./actions";
|
|
5
|
+
export type FieldType = "text" | "textarea" | "select" | "multi-select" | "checkbox" | "checkbox-group" | "toggle" | "radio-group" | "date-picker" | "date-time-picker" | "file-upload" | "repeater" | "hidden";
|
|
6
|
+
export interface FieldRenderProps<TData extends Record<string, any> = Record<string, any>> {
|
|
7
|
+
value: any;
|
|
8
|
+
onChange: (value: any) => void;
|
|
9
|
+
onBlur?: () => void;
|
|
10
|
+
error?: string;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
data: TData;
|
|
13
|
+
}
|
|
14
|
+
export interface BuiltField<TData extends Record<string, any> = Record<string, any>> {
|
|
15
|
+
name: string;
|
|
16
|
+
type: FieldType;
|
|
17
|
+
config: BaseFieldConfig<TData> & Record<string, any>;
|
|
18
|
+
render: (props: FieldRenderProps<TData>) => ReactNode;
|
|
19
|
+
}
|
|
20
|
+
export interface FormSchemaConfig<TData extends Record<string, any>> {
|
|
21
|
+
title?: string | ((data: TData) => string);
|
|
22
|
+
description?: string | ((data: TData) => string);
|
|
23
|
+
columns?: number;
|
|
24
|
+
bordered?: boolean;
|
|
25
|
+
spacing?: "compact" | "normal" | "relaxed";
|
|
26
|
+
fields: BuiltField<TData>[];
|
|
27
|
+
sections?: SectionConfig<TData>[];
|
|
28
|
+
tabs?: TabConfig<TData>[];
|
|
29
|
+
wizardSteps?: WizardStepConfig<TData>[];
|
|
30
|
+
actions?: FormActionConfig<TData>[];
|
|
31
|
+
actionsPosition?: "start" | "end" | "between" | "center";
|
|
32
|
+
disabled?: boolean | ((data: TData) => boolean);
|
|
33
|
+
}
|
|
34
|
+
export interface FormBuildResult<TData extends Record<string, any>> {
|
|
35
|
+
fields: BuiltField<TData>[];
|
|
36
|
+
config: FormSchemaConfig<TData>;
|
|
37
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { BaseFieldConfig, ValidationRule, DependencyConfig, TextInputConfig, TextareaConfig, SelectOption, SelectConfig, CheckboxConfig, CheckboxGroupConfig, ToggleConfig, RadioGroupConfig, DatePickerConfig, FileUploadConfig, RepeaterConfig, HiddenConfig, } from "./field";
|
|
2
|
+
export type { FieldType, FieldRenderProps, BuiltField, FormSchemaConfig, FormBuildResult, } from "./form";
|
|
3
|
+
export type { SectionConfig, TabConfig, WizardStepConfig, } from "./layout";
|
|
4
|
+
export type { FormActionConfig } from "./actions";
|