@dmitryvim/form-builder 0.2.19 → 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.
@@ -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;
@@ -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
  /**
@@ -47,6 +47,10 @@ export interface Translations {
47
47
  tableRemoveColumn: string;
48
48
  tableMergeCells: string;
49
49
  tableSplitCell: string;
50
+ richinputPlaceholder: string;
51
+ richinputAttachFile: string;
52
+ richinputMention: string;
53
+ richinputRemoveFile: string;
50
54
  }
51
55
  export type Locale = "en" | "ru" | (string & {});
52
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, 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";
@@ -162,7 +162,20 @@ export interface TableElement extends BaseElement {
162
162
  /** Initial row count (default: 3) */
163
163
  rows?: number;
164
164
  }
165
- export type Element = TextElement | TextareaElement | NumberElement | SelectElement | SwitcherElement | FileElement | FilesElement | ColourElement | SliderElement | ContainerElement | GroupElement | TableElement;
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;
166
179
  export interface Schema {
167
180
  version?: string;
168
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;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.2.19",
6
+ "version": "0.2.20",
7
7
  "description": "A reusable JSON schema form builder library",
8
8
  "main": "./dist/cjs/index.cjs",
9
9
  "module": "./dist/esm/index.js",