@dmitryvim/form-builder 0.2.18 → 0.2.20
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 +57 -0
- package/dist/browser/formbuilder.min.js +273 -76
- package/dist/browser/formbuilder.v0.2.20.min.js +583 -0
- package/dist/cjs/index.cjs +2548 -184
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/index.js +2500 -191
- package/dist/esm/index.js.map +1 -1
- package/dist/form-builder.js +273 -76
- package/dist/types/components/index.d.ts +3 -1
- package/dist/types/components/richinput.d.ts +4 -0
- package/dist/types/components/table.d.ts +4 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/types/config.d.ts +10 -0
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/types/schema.d.ts +41 -1
- package/dist/types/utils/helpers.d.ts +5 -0
- package/package.json +1 -1
- package/dist/browser/formbuilder.v0.2.18.min.js +0 -386
|
@@ -9,6 +9,8 @@ import { renderColourElement, renderMultipleColourElement } from "./colour.js";
|
|
|
9
9
|
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
|
+
import { renderTableElement } from "./table.js";
|
|
13
|
+
import { renderRichInputElement } from "./richinput.js";
|
|
12
14
|
export declare function renderElement(element: Element, ctx: RenderContext): HTMLElement;
|
|
13
15
|
export { setContainerValidateElement };
|
|
14
|
-
export { renderTextElement, renderMultipleTextElement, renderTextareaElement, renderMultipleTextareaElement, renderNumberElement, renderMultipleNumberElement, renderSelectElement, renderMultipleSelectElement, renderSwitcherElement, renderMultipleSwitcherElement, renderFileElement, renderFilesElement, renderMultipleFileElement, renderColourElement, renderMultipleColourElement, renderSliderElement, renderMultipleSliderElement, renderSingleContainerElement, renderMultipleContainerElement, renderGroupElement, };
|
|
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;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TableElement, RenderContext, ComponentContext, ValidationResult } from "../types/index.js";
|
|
2
|
+
export declare function renderTableElement(element: TableElement, ctx: RenderContext, wrapper: HTMLElement, pathKey: string): void;
|
|
3
|
+
export declare function validateTableElement(element: TableElement, key: string, context: ComponentContext): ValidationResult;
|
|
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
|
/**
|
|
@@ -41,6 +41,16 @@ export interface Translations {
|
|
|
41
41
|
maxFiles: string;
|
|
42
42
|
unsupportedFieldType: string;
|
|
43
43
|
invalidOption: string;
|
|
44
|
+
tableAddRow: string;
|
|
45
|
+
tableAddColumn: string;
|
|
46
|
+
tableRemoveRow: string;
|
|
47
|
+
tableRemoveColumn: string;
|
|
48
|
+
tableMergeCells: string;
|
|
49
|
+
tableSplitCell: string;
|
|
50
|
+
richinputPlaceholder: string;
|
|
51
|
+
richinputAttachFile: string;
|
|
52
|
+
richinputMention: string;
|
|
53
|
+
richinputRemoveFile: string;
|
|
44
54
|
}
|
|
45
55
|
export type Locale = "en" | "ru" | (string & {});
|
|
46
56
|
export interface Config {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { SelectOption, ElementAction, EnableCondition, BaseElement, TextElement, TextareaElement, NumberElement, SelectElement, SwitcherElement, FileElement, FilesElement, ColourElement, SliderElement, ContainerElement, GroupElement, 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";
|
|
@@ -135,7 +135,47 @@ export interface GroupElement extends BaseElement {
|
|
|
135
135
|
max?: number;
|
|
136
136
|
};
|
|
137
137
|
}
|
|
138
|
-
|
|
138
|
+
/**
|
|
139
|
+
* A single cell merge region in the table
|
|
140
|
+
*/
|
|
141
|
+
export interface TableMerge {
|
|
142
|
+
/** Row index of the top-left cell (0-based) */
|
|
143
|
+
row: number;
|
|
144
|
+
/** Column index of the top-left cell (0-based) */
|
|
145
|
+
col: number;
|
|
146
|
+
/** Number of rows spanned (>= 1) */
|
|
147
|
+
rowspan: number;
|
|
148
|
+
/** Number of columns spanned (>= 1) */
|
|
149
|
+
colspan: number;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Table data structure stored as form data
|
|
153
|
+
*/
|
|
154
|
+
export interface TableData {
|
|
155
|
+
cells: string[][];
|
|
156
|
+
merges?: TableMerge[];
|
|
157
|
+
}
|
|
158
|
+
export interface TableElement extends BaseElement {
|
|
159
|
+
type: "table";
|
|
160
|
+
/** Initial column count (default: 3) */
|
|
161
|
+
columns?: number;
|
|
162
|
+
/** Initial row count (default: 3) */
|
|
163
|
+
rows?: number;
|
|
164
|
+
}
|
|
165
|
+
export interface RichInputElement extends BaseElement {
|
|
166
|
+
type: "richinput";
|
|
167
|
+
placeholder?: string;
|
|
168
|
+
minLength?: number;
|
|
169
|
+
maxLength?: number;
|
|
170
|
+
accept?: string | {
|
|
171
|
+
extensions: string[];
|
|
172
|
+
};
|
|
173
|
+
maxSize?: number;
|
|
174
|
+
maxFiles?: number;
|
|
175
|
+
textKey?: string;
|
|
176
|
+
filesKey?: string;
|
|
177
|
+
}
|
|
178
|
+
export type Element = TextElement | TextareaElement | NumberElement | SelectElement | SwitcherElement | FileElement | FilesElement | ColourElement | SliderElement | ContainerElement | GroupElement | TableElement | RichInputElement;
|
|
139
179
|
export interface Schema {
|
|
140
180
|
version?: string;
|
|
141
181
|
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;
|