@dmitryvim/form-builder 0.2.19 → 0.2.21
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/browser/formbuilder.min.js +251 -97
- package/dist/browser/formbuilder.v0.2.21.min.js +602 -0
- package/dist/cjs/index.cjs +1644 -62
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/index.js +1590 -52
- package/dist/esm/index.js.map +1 -1
- package/dist/form-builder.js +251 -97
- package/dist/types/components/index.d.ts +2 -1
- package/dist/types/components/richinput.d.ts +4 -0
- package/dist/types/components/table.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/types/config.d.ts +12 -0
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/types/schema.d.ts +31 -9
- package/dist/types/utils/helpers.d.ts +5 -0
- package/package.json +1 -1
- package/dist/browser/formbuilder.v0.2.19.min.js +0 -448
|
@@ -10,6 +10,7 @@ import { renderSliderElement, renderMultipleSliderElement } from "./slider.js";
|
|
|
10
10
|
import { renderSingleContainerElement, renderMultipleContainerElement, setValidateElement as setContainerValidateElement } from "./container.js";
|
|
11
11
|
import { renderGroupElement } from "./group.js";
|
|
12
12
|
import { renderTableElement } from "./table.js";
|
|
13
|
+
import { renderRichInputElement } from "./richinput.js";
|
|
13
14
|
export declare function renderElement(element: Element, ctx: RenderContext): HTMLElement;
|
|
14
15
|
export { setContainerValidateElement };
|
|
15
|
-
export { renderTextElement, renderMultipleTextElement, renderTextareaElement, renderMultipleTextareaElement, renderNumberElement, renderMultipleNumberElement, renderSelectElement, renderMultipleSelectElement, renderSwitcherElement, renderMultipleSwitcherElement, renderFileElement, renderFilesElement, renderMultipleFileElement, renderColourElement, renderMultipleColourElement, renderSliderElement, renderMultipleSliderElement, renderSingleContainerElement, renderMultipleContainerElement, renderGroupElement, renderTableElement, };
|
|
16
|
+
export { renderTextElement, renderMultipleTextElement, renderTextareaElement, renderMultipleTextareaElement, renderNumberElement, renderMultipleNumberElement, renderSelectElement, renderMultipleSelectElement, renderSwitcherElement, renderMultipleSwitcherElement, renderFileElement, renderFilesElement, renderMultipleFileElement, renderColourElement, renderMultipleColourElement, renderSliderElement, renderMultipleSliderElement, renderSingleContainerElement, renderMultipleContainerElement, renderGroupElement, renderTableElement, renderRichInputElement, };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RichInputElement, RenderContext, ComponentContext, ValidationResult } from "../types/index.js";
|
|
2
|
+
export declare function renderRichInputElement(element: RichInputElement, ctx: RenderContext, wrapper: HTMLElement, pathKey: string): void;
|
|
3
|
+
export declare function validateRichInputElement(element: RichInputElement, key: string, context: ComponentContext): ValidationResult;
|
|
4
|
+
export declare function updateRichInputField(element: RichInputElement, fieldPath: string, value: unknown, context: ComponentContext): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { TableElement, RenderContext, ComponentContext, ValidationResult } from "../types/index.js";
|
|
2
2
|
export declare function renderTableElement(element: TableElement, ctx: RenderContext, wrapper: HTMLElement, pathKey: string): void;
|
|
3
3
|
export declare function validateTableElement(element: TableElement, key: string, context: ComponentContext): ValidationResult;
|
|
4
|
-
export declare function updateTableField(
|
|
4
|
+
export declare function updateTableField(element: TableElement, fieldPath: string, value: unknown, context: ComponentContext): void;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { FormBuilderInstance } from "./instance/FormBuilderInstance.js";
|
|
7
7
|
import { validateSchema } from "./utils/validation.js";
|
|
8
|
-
export type { SelectOption, ElementAction, BaseElement, TextElement, TextareaElement, NumberElement, SelectElement, FileElement, FilesElement, ContainerElement, GroupElement, Element, Schema, ExternalAction, FormData, RenderContext, Translations, Locale, Config, ResourceMetadata, State, } from "./types/index.js";
|
|
8
|
+
export type { SelectOption, ElementAction, BaseElement, TextElement, TextareaElement, NumberElement, SelectElement, FileElement, FilesElement, ContainerElement, GroupElement, RichInputElement, Element, Schema, ExternalAction, FormData, RenderContext, Translations, Locale, Config, ResourceMetadata, State, } from "./types/index.js";
|
|
9
9
|
export type { Theme } from "./styles/theme.js";
|
|
10
10
|
export { defaultTheme, exampleThemes } from "./styles/theme.js";
|
|
11
11
|
/**
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Theme } from "../styles/theme.js";
|
|
2
|
+
import type { TableMerge } from "./schema.js";
|
|
2
3
|
export interface Translations {
|
|
3
4
|
removeElement: string;
|
|
4
5
|
clickDragText: string;
|
|
@@ -47,6 +48,13 @@ export interface Translations {
|
|
|
47
48
|
tableRemoveColumn: string;
|
|
48
49
|
tableMergeCells: string;
|
|
49
50
|
tableSplitCell: string;
|
|
51
|
+
tableImportFile: string;
|
|
52
|
+
tableImporting: string;
|
|
53
|
+
tableImportError: string;
|
|
54
|
+
richinputPlaceholder: string;
|
|
55
|
+
richinputAttachFile: string;
|
|
56
|
+
richinputMention: string;
|
|
57
|
+
richinputRemoveFile: string;
|
|
50
58
|
}
|
|
51
59
|
export type Locale = "en" | "ru" | (string & {});
|
|
52
60
|
export interface Config {
|
|
@@ -75,6 +83,10 @@ export interface Config {
|
|
|
75
83
|
readonly: boolean;
|
|
76
84
|
locale: Locale;
|
|
77
85
|
translations: Record<string, Partial<Translations>>;
|
|
86
|
+
parseTableFile: ((file: File) => Promise<{
|
|
87
|
+
cells: string[][];
|
|
88
|
+
merges?: TableMerge[];
|
|
89
|
+
}>) | null;
|
|
78
90
|
theme: Partial<Theme>;
|
|
79
91
|
}
|
|
80
92
|
export interface ResourceMetadata {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { SelectOption, ElementAction, EnableCondition, BaseElement, TextElement, TextareaElement, NumberElement, SelectElement, SwitcherElement, FileElement, FilesElement, ColourElement, SliderElement, ContainerElement, GroupElement, TableElement, TableMerge, TableData, Element, Schema, ExternalAction, FormData, RenderContext, } from "./schema.js";
|
|
1
|
+
export type { SelectOption, ElementAction, EnableCondition, BaseElement, TextElement, TextareaElement, NumberElement, SelectElement, SwitcherElement, FileElement, FilesElement, ColourElement, SliderElement, ContainerElement, GroupElement, TableElement, TableMerge, TableData, RichInputElement, Element, Schema, ExternalAction, FormData, RenderContext, } from "./schema.js";
|
|
2
2
|
export type { Translations, Locale, Config, ResourceMetadata, } from "./config.js";
|
|
3
3
|
export type { State } from "./state.js";
|
|
4
4
|
export type { ComponentContext, ValidationResult, ComponentValidator, ComponentUpdater, ComponentOperations, } from "./component-operations.js";
|
|
@@ -139,14 +139,14 @@ export interface GroupElement extends BaseElement {
|
|
|
139
139
|
* A single cell merge region in the table
|
|
140
140
|
*/
|
|
141
141
|
export interface TableMerge {
|
|
142
|
-
/** Row index of the top-left cell (0-based) */
|
|
143
|
-
|
|
144
|
-
/** Column index of the top-left cell (0-based) */
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
|
|
142
|
+
/** Row index of the top-left cell, inclusive (0-based) */
|
|
143
|
+
top: number;
|
|
144
|
+
/** Column index of the top-left cell, inclusive (0-based) */
|
|
145
|
+
left: number;
|
|
146
|
+
/** Row index of the bottom-right cell, inclusive (0-based) */
|
|
147
|
+
bottom: number;
|
|
148
|
+
/** Column index of the bottom-right cell, inclusive (0-based) */
|
|
149
|
+
right: number;
|
|
150
150
|
}
|
|
151
151
|
/**
|
|
152
152
|
* Table data structure stored as form data
|
|
@@ -161,8 +161,30 @@ export interface TableElement extends BaseElement {
|
|
|
161
161
|
columns?: number;
|
|
162
162
|
/** Initial row count (default: 3) */
|
|
163
163
|
rows?: number;
|
|
164
|
+
/** Whether merge/split operations are allowed (default: true) */
|
|
165
|
+
mergeAllowed?: boolean;
|
|
166
|
+
/** Custom output field names for cells and merges */
|
|
167
|
+
fieldNames?: {
|
|
168
|
+
cells?: string;
|
|
169
|
+
merges?: string;
|
|
170
|
+
};
|
|
171
|
+
/** File extensions accepted for import (e.g. ["csv", "xlsx"]) */
|
|
172
|
+
importAccept?: string[];
|
|
173
|
+
}
|
|
174
|
+
export interface RichInputElement extends BaseElement {
|
|
175
|
+
type: "richinput";
|
|
176
|
+
placeholder?: string;
|
|
177
|
+
minLength?: number;
|
|
178
|
+
maxLength?: number;
|
|
179
|
+
accept?: string | {
|
|
180
|
+
extensions: string[];
|
|
181
|
+
};
|
|
182
|
+
maxSize?: number;
|
|
183
|
+
maxFiles?: number;
|
|
184
|
+
textKey?: string;
|
|
185
|
+
filesKey?: string;
|
|
164
186
|
}
|
|
165
|
-
export type Element = TextElement | TextareaElement | NumberElement | SelectElement | SwitcherElement | FileElement | FilesElement | ColourElement | SliderElement | ContainerElement | GroupElement | TableElement;
|
|
187
|
+
export type Element = TextElement | TextareaElement | NumberElement | SelectElement | SwitcherElement | FileElement | FilesElement | ColourElement | SliderElement | ContainerElement | GroupElement | TableElement | RichInputElement;
|
|
166
188
|
export interface Schema {
|
|
167
189
|
version?: string;
|
|
168
190
|
elements: Element[];
|
|
@@ -7,3 +7,8 @@ export declare function escapeHtml(text: string): string;
|
|
|
7
7
|
export declare function pathJoin(base: string, key: string): string;
|
|
8
8
|
export declare function pretty(obj: any): string;
|
|
9
9
|
export declare function clear(node: HTMLElement): void;
|
|
10
|
+
/**
|
|
11
|
+
* Format a file size in bytes to a human-readable string
|
|
12
|
+
* e.g. 2400000 -> "2.3 MB", 512 -> "512 B"
|
|
13
|
+
*/
|
|
14
|
+
export declare function formatFileSize(bytes: number): string;
|