@dynamicforms/vue-forms 0.3.0 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"dynamicforms-vue-forms.umd.cjs","sources":["../src/display-mode.ts","../src/actions/field-action-base.ts","../src/field.interface.ts","../src/actions/value-changed-action.ts","../src/validators/validation-error.ts","../src/validators/validator.ts","../src/actions/actions-map.ts","../src/actions/conditional/conditional-statement-action.ts","../src/actions/conditional/operator.ts","../src/actions/enabled-actions.ts","../src/actions/valid-changed-action.ts","../src/actions/visibility-actions.ts","../src/field-base.ts","../src/actions/conditional/statement.ts","../src/actions/execute-action.ts","../src/actions/list-item-added-action.ts","../src/actions/list-item-removed-action.ts","../src/action.ts","../src/field.ts","../src/group.ts","../src/list.ts","../src/config.ts","../src/validators/error-message-builder.ts","../src/validators/validator-compare-to.ts","../src/validators/validator-in-allowed-values.ts","../src/validators/validator-required.ts","../src/validators/validator-min-max-range.ts","../src/validators/validator-min-max-range-length.ts","../src/validators/validator-pattern.ts"],"sourcesContent":["/**\n * DisplayMode enum provides an enumeration for supported ways of rendering a particular object in the DOM\n */\nenum DisplayMode {\n // This enum is actually declared in dynamicforms.mixins.field_render.py\n SUPPRESS = 1, // Field will be entirely suppressed. it will not render (not even to JSON) and will not parse for PUT\n HIDDEN = 5, // Field will render as <input type=\"hidden\"> or <tr data-field_name>\n INVISIBLE = 8, // Field will render completely, but with display: none. Equal to setting its style = {display: none}\n FULL = 10, // Field will render completely\n}\n\nexport const defaultDisplayMode = DisplayMode.FULL;\n\nnamespace DisplayMode {\n export function fromString(mode: string): DisplayMode {\n if (mode.toUpperCase() === 'SUPPRESS') return DisplayMode.SUPPRESS;\n if (mode.toUpperCase() === 'HIDDEN') return DisplayMode.HIDDEN;\n if (mode.toUpperCase() === 'INVISIBLE') return DisplayMode.INVISIBLE;\n return defaultDisplayMode;\n }\n\n export function fromAny(mode: any): DisplayMode {\n const input = (typeof mode === 'number') ? mode : DisplayMode.fromString(mode as string);\n if (Object.values(DisplayMode).includes(input)) return input;\n return defaultDisplayMode;\n }\n\n export function isDefined(mode: number | string): boolean {\n const check = (typeof mode === 'number') ? mode : DisplayMode.fromString(mode as string);\n return Object.values(DisplayMode).includes(check);\n }\n}\n\nObject.freeze(DisplayMode);\n\nexport default DisplayMode;\n","// eslint-disable-next-line max-classes-per-file\nimport {\n FieldActionExecute,\n type IField,\n type IFieldAction,\n} from '@/field.interface';\n\ntype ActionExecutor = (field: IField, supr: FieldActionExecute, ...params: any[]) => any;\n\nexport default abstract class FieldActionBase implements IFieldAction {\n public static get classIdentifier(): symbol { throw new Error('classIdentifier must be declared'); }\n\n public get classIdentifier(): symbol { return (<any> this.constructor).classIdentifier; }\n\n private readonly executorFn: ActionExecutor;\n\n constructor(executorFn: ActionExecutor) {\n this.executorFn = executorFn;\n }\n\n execute(field: IField, supr: IFieldAction['execute'], ...params: any[]): any {\n return this.executorFn(field, supr, ...params);\n }\n\n // eslint-disable-next-line class-methods-use-this\n get eager() { return false; }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, class-methods-use-this\n boundToField(field: IField) { }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, class-methods-use-this\n unregister() {}\n}\n","import { ComputedRef } from 'vue';\n\nimport type DisplayMode from './display-mode';\nimport { type ValidationError } from './validators/validation-error';\n\nexport interface IField<T = any> {\n value: T;\n reactiveValue: ComputedRef<T>;\n fullValue: T;\n originalValue: T;\n valid: boolean;\n validating: boolean;\n errors: ValidationError[];\n enabled: boolean;\n visibility: DisplayMode;\n\n parent?: any; // Group when member of a Group, parent will specify that group\n fieldName?: string; // when member of a Group, fieldName specifies the name of this field\n\n clone(overrides?: Partial<IField<T>>): IField<T>;\n\n // events\n registerAction(action: IFieldAction<T>): this;\n triggerAction<T2 extends IFieldAction<T>>(actionClass: abstract new (...args: any[]) => T2, ...params: any[]): any;\n\n // API\n validate(): void;\n clearValidators(): void;\n isChanged: boolean;\n}\n\nexport interface IFieldConstructorActionsList<T = any> {\n actions?: IFieldAction<T>[],\n validators?: IFieldAction<T>[],\n}\n\nexport type IFieldConstructorParams<T = any> = IField<T> & IFieldConstructorActionsList<T>;\n\nexport class AbortEventHandlingException extends Error {}\n\nexport type FieldActionExecute<T = any> = (field: IField<T>, ...params: any[]) => any;\nexport interface IFieldAction<T = any> {\n execute(field: IField<T>, supr: FieldActionExecute<T>, ...params: any[]): any;\n}\n","import FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nexport const ValueChangedActionClassIdentifier = Symbol('ValueChangedAction');\n\n// eslint-disable-next-line import/prefer-default-export\nexport class ValueChangedAction<T = any> extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField<T>, supr: FieldActionExecute<T>, newValue: T, oldValue: T,\n ) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ValueChangedActionClassIdentifier; }\n\n execute(\n field: IField<T>,\n supr: FieldActionExecute<T>,\n newValue: T,\n oldValue: T,\n ): void {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { computed, ComputedRef, Ref, unref } from 'vue';\n\n/**\n * Marks content for markdown rendering\n */\nexport class MdString extends String {}\n\n/**\n * Interface for custom component content definition\n */\nexport interface CustomModalContentComponentDef {\n componentName: string;\n componentProps: Record<any, any>;\n}\n\n/**\n * Type for different renderable content formats: plain string, markdown, or custom component\n */\nexport type RenderContent = string | MdString | CustomModalContentComponentDef;\n/**\n * Type for different renderable content formats (supporting references): plain string, markdown, or custom component\n */\nexport type RenderContentRef = RenderContent | Ref<RenderContent>;\n\n/**\n * Type guard to check if content is a custom component definition\n * @param msg - Content to check\n * @returns True if content is a custom component definition\n */\nexport function isCustomModalContentComponentDef(msg?: RenderContentRef): msg is CustomModalContentComponentDef {\n const uMsg = unref(msg);\n return typeof uMsg === 'object' && 'componentName' in uMsg;\n}\n\n/**\n * Base validation error class with component rendering capabilities\n */\nexport class ValidationError {\n get componentName() { return 'Comment'; } // eslint-disable-line class-methods-use-this\n\n get componentBindings() { return {}; } // eslint-disable-line class-methods-use-this\n\n get componentBody() { return ''; } // eslint-disable-line class-methods-use-this\n}\n\n/**\n * Simple text-only ValidationError\n */\nexport class ValidationErrorText extends ValidationError {\n text: string;\n\n constructor(text: string) {\n super();\n this.text = text;\n }\n\n get componentName() { return 'template'; } // eslint-disable-line class-methods-use-this\n\n get componentBody() { return this.text; }\n}\n\n/**\n * Validation error that supports multiple content types (plain text, markdown, component)\n */\nexport class ValidationErrorRenderContent extends ValidationError {\n private text: RenderContent | Ref<RenderContent>;\n\n private textType: ComputedRef<'string' | 'md' | 'component'>;\n\n constructor(text: RenderContentRef) {\n super();\n this.text = text;\n this.textType = computed(() => this.getTextType);\n }\n\n get getTextType() {\n const msg = unref(this.text);\n if (!msg) return 'string';\n if (msg instanceof MdString) return 'md';\n if (isCustomModalContentComponentDef(msg)) return 'component';\n return 'string';\n }\n\n get componentName() {\n switch (unref(this.textType)) {\n case 'string': return 'template';\n case 'md': return 'vue-markdown';\n case 'component': return (unref(this.text) as CustomModalContentComponentDef).componentName;\n default: return 'template';\n }\n }\n\n get componentBindings() {\n switch (unref(this.textType)) {\n case 'string': return { };\n case 'md': return { source: this.text.toString() };\n case 'component': return (unref(this.text) as CustomModalContentComponentDef).componentProps;\n default: return { };\n }\n }\n\n get componentBody() {\n switch (unref(this.textType)) {\n case 'string': return unref(this.text) as string;\n default: return '';\n }\n }\n}\n\n/** ********************************************************************************************************************\n *\n at some point there will be classes here that will support links or action buttons or something even more complex\n *\n ******************************************************************************************************************** */\n","import { isEqual } from 'lodash-es';\n\nimport { ValueChangedAction } from '../actions/value-changed-action';\nimport { type FieldBase } from '../field-base';\nimport { FieldActionExecute, type IField } from '../field.interface';\n\nimport { isCustomModalContentComponentDef, MdString, RenderContentRef, ValidationError } from './validation-error';\n\nexport type ValidationFunctionResult = ValidationError[] | null;\nexport type ValidationFunction<T = any> = (newValue: T, oldValue: T, field: IField<T>) =>\n ValidationFunctionResult | Promise<ValidationFunctionResult>;\n\ninterface SourceProp { source: symbol }\n\nconst ValidatorClassIdentifier = Symbol('Validator');\n\n/**\n * Validator is a specialized action that performs validation when a field's value changes.\n * It automatically adds/removes validation errors from the field's errors array.\n */\nexport class Validator<T = any> extends ValueChangedAction {\n private readonly source: symbol;\n\n /**\n * Creates a new validator\n * @param validationFn Function that validates the field value and returns errors or null\n */\n constructor(validationFn: ValidationFunction<T>) {\n const executor = (field: IField<T>, supr: FieldActionExecute<T>, newValue: T, oldValue: T) => {\n const errors = validationFn(newValue, oldValue, field) || [];\n\n const processErrors = (err: ValidationFunctionResult) => {\n err?.forEach(\n (e) => Object.defineProperty(e, 'source', { value: this.source, enumerable: false, configurable: false }),\n );\n for (let i = field.errors.length - 1; i >= 0; i--) {\n const error = field.errors[i] as ValidationError & SourceProp;\n if (error.source === this.source) {\n const idx = err?.findIndex((e) => isEqual(e, error)) ?? -1;\n if (idx >= 0) err?.splice(idx, 1);\n else field.errors.splice(i, 1);\n }\n }\n\n if (err && err.length > 0) field.errors.push(...err);\n field.validate(); // Update the field's valid state\n };\n\n if (errors instanceof Promise) {\n // @ts-ignore\n field.validating = (++(<FieldBase> field).validatingCount) > 0;\n errors\n .then((err) => processErrors(err))\n .finally(() => {\n // @ts-ignore\n (<FieldBase> field).validatingCount = Math.max(0, (<FieldBase> field).validatingCount - 1);\n // @ts-ignore\n field.validating = (<FieldBase>field).validatingCount > 0;\n });\n } else processErrors(errors);\n return supr(field, newValue, oldValue); // Continue the action chain\n };\n\n super(executor);\n\n // Create a unique symbol for this validator instance\n this.source = Symbol(this.constructor.name);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ValidatorClassIdentifier; }\n\n // eslint-disable-next-line class-methods-use-this\n get eager() { return true; }\n\n // eslint-disable-next-line class-methods-use-this\n protected replacePlaceholders(text: RenderContentRef, replace: Record<string, any>) {\n if (isCustomModalContentComponentDef(text)) return text;\n let ret = (text as string | MdString);\n Object.keys(replace).forEach((key) => { ret = ret.replaceAll(`{${key}}`, replace[key]); });\n return (text instanceof MdString) ? new MdString(ret) : ret;\n }\n}\n","import { type FieldActionExecute, type IField, AbortEventHandlingException } from '../field.interface';\nimport { Validator } from '../validators/validator';\n\nimport FieldActionBase from './field-action-base';\nimport { ValueChangedActionClassIdentifier } from './value-changed-action';\n\nexport default class ActionsMap extends Map<symbol, FieldActionExecute> {\n private readonly eagerActions = new Set<symbol>();\n\n private readonly registeredActions: FieldActionBase[] = [];\n\n register(action: FieldActionBase) {\n if (!(action instanceof FieldActionBase)) throw new Error('Invalid action type');\n this.registeredActions.push(action);\n\n const actionType = action.classIdentifier;\n const existingExecute = this.get(actionType) || (() => null);\n\n function ex(field: IField, ...params: any[]) {\n return action.execute(field, existingExecute, ...params);\n }\n this.set(actionType, ex);\n if (action.eager) this.eagerActions.add(action.classIdentifier);\n }\n\n trigger<T extends FieldActionBase>(\n ActionClass: { new (...args: any[]): T, classIdentifier: symbol },\n field: IField,\n ...params: any[]\n ): any {\n const identifier = ActionClass.classIdentifier;\n if (identifier === ValueChangedActionClassIdentifier) this.triggerEager(field, ...params);\n const execute = this.get(identifier);\n try {\n if (execute) return execute(field, ...params);\n } catch (error) {\n if (!(error instanceof AbortEventHandlingException)) throw error;\n }\n return null;\n }\n\n triggerEager(field: IField, ...params: any[]): any {\n for (const identifier of this.eagerActions) {\n const execute = this.get(identifier);\n try {\n if (execute) execute(field, ...params);\n } catch (error) {\n if (!(error instanceof AbortEventHandlingException)) throw error;\n }\n }\n }\n\n clone() : ActionsMap {\n const newActions = new ActionsMap();\n this.registeredActions.forEach((action) => newActions.register(action));\n return newActions;\n }\n\n cloneWithoutValidators(): ActionsMap {\n const newActions = new ActionsMap();\n this.registeredActions.forEach((action) => {\n if (action instanceof Validator) action.unregister();\n else newActions.register(action);\n });\n return newActions;\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport DisplayMode from '../../display-mode';\nimport { FieldActionExecute, IField } from '../../field.interface';\nimport { ValueChangedAction } from '../value-changed-action';\n\nimport { Statement } from './statement';\n\nconst ConditionalStatementActionClassIdentifier = Symbol('ConditionalStatementAction');\n\ntype ConditionalExecutorFn = (\n field: IField,\n currentResult: boolean,\n previousResult: boolean | undefined,\n) => void;\n\nexport class ConditionalStatementAction extends ValueChangedAction {\n private lastResult: boolean | undefined = undefined;\n\n // boundField tracks the fields this action is bound to. so that it may perform the executorFn on them and not on the\n // ValueChangedAction fields that will call the actionExecutor\n private readonly boundFields: Set<IField> = new Set<IField>();\n\n constructor(statement: Statement, executorFn: ConditionalExecutorFn) {\n // Create ValueChangedAction executor that will evaluate statement and track changes\n const actionExecutor = (field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean) => {\n const currentResult = statement.evaluate();\n\n if (currentResult !== this.lastResult) {\n for (const fld of this.boundFields) {\n executorFn(fld, currentResult, this.lastResult);\n }\n this.lastResult = currentResult;\n }\n\n // Continue action chain\n return supr(field, newValue, oldValue);\n };\n\n super(actionExecutor);\n statement.collectFields().forEach((field) => field.registerAction(new ValueChangedAction(actionExecutor)));\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ConditionalStatementActionClassIdentifier; }\n\n // eslint-disable-next-line class-methods-use-this\n get eager() { return true; }\n\n boundToField(field: IField) { this.boundFields.add(field); }\n}\n\n// Derived classes for visibility, enabled, and value changes\n\nexport class ConditionalVisibilityAction extends ConditionalStatementAction {\n constructor(statement: Statement) {\n super(statement, (field: IField, currentResult) => {\n field.visibility = currentResult ? DisplayMode.FULL : DisplayMode.SUPPRESS;\n });\n }\n}\n\nexport class ConditionalEnabledAction extends ConditionalStatementAction {\n constructor(statement: Statement) {\n super(statement, (field, currentResult) => {\n field.enabled = currentResult;\n });\n }\n}\n\nexport class ConditionalValueAction<T> extends ConditionalStatementAction {\n constructor(statement: Statement, trueValue: T) {\n super(statement, (field, currentResult) => {\n if (currentResult) field.value = trueValue;\n });\n }\n}\n","/**\n * Operators provides us a functionality for backend to send us complex condition upon which we send\n * dynamic visibility prop for form input fields\n */\nenum Operator {\n // Logic Operators\n NOT = 0,\n OR = 1,\n AND = 2,\n XOR = 3,\n NAND = 4,\n NOR = 5,\n\n // Comparators (comparison operators)\n EQUALS = -1,\n NOT_EQUALS = -2,\n GT = -3,\n LT = -4,\n GE = -5,\n LE = -6,\n IN = -7,\n NOT_IN = -8,\n INCLUDES = -9,\n NOT_INCLUDES = -10,\n}\n\nnamespace Operator {\n export function fromString(operator: string): Operator {\n const op = operator.toLowerCase();\n if (op === 'not') return Operator.NOT;\n if (op === 'or') return Operator.OR;\n if (op === 'and') return Operator.AND;\n if (op === 'xor') return Operator.XOR;\n if (op === 'nand') return Operator.NAND;\n if (op === 'nor') return Operator.NOR;\n\n if (op === 'equals') return Operator.EQUALS;\n if (['not_equals', 'not-equals', 'not equals'].includes(op)) return Operator.NOT_EQUALS;\n if (op === 'gt') return Operator.GT;\n if (op === 'lt') return Operator.LT;\n if (op === 'ge') return Operator.GE;\n if (op === 'le') return Operator.LE;\n if (op === 'in') return Operator.IN;\n if (['not_in', 'not-in', 'not in'].includes(op)) return Operator.NOT_IN;\n if (op === 'includes') return Operator.INCLUDES;\n if (['not_includes', 'not-includes', 'not includes'].includes(op)) return Operator.NOT_INCLUDES;\n throw new Error(`Unrecognised operator ${op}`);\n }\n\n export function fromAny(mode: any): Operator {\n const input = (typeof mode === 'number') ? mode : Operator.fromString(mode as string);\n if (Object.values(Operator).includes(input)) return input;\n throw new Error(`Unrecognised operator ${mode}`);\n }\n\n export function isDefined(operator: number | string): boolean {\n const check = (typeof operator === 'number') ? operator : Operator.fromString(operator as string);\n return Object.values(Operator).includes(check);\n }\n\n // c8 bug: it doesn't matter what there is in the next line (e.g. console.log()).\n // it will always be a branch with one branch not covered\n export function isLogicOperator(operator: Operator): boolean {\n return operator >= 0;\n }\n}\n\nObject.freeze(Operator);\n\nexport default Operator;\n","// eslint-disable-next-line max-classes-per-file\nimport FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst EnabledChangingActionClassIdentifier = Symbol('EnabledChangingAction');\n\nexport class EnabledChangingAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean\n ) => boolean,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return EnabledChangingActionClassIdentifier; }\n\n execute(field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean): boolean {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n\nconst EnabledChangedActionClassIdentifier = Symbol('EnabledChangedAction');\n\nexport class EnabledChangedAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean\n ) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return EnabledChangedActionClassIdentifier; }\n\n execute(field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean): void {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n","import FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst ValidChangedActionClassIdentifier = Symbol('ValidChangedAction');\n\n// eslint-disable-next-line import/prefer-default-export\nexport class ValidChangedAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean,\n ) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ValidChangedActionClassIdentifier; }\n\n execute(\n field: IField,\n supr: FieldActionExecute,\n newValue: boolean,\n oldValue: boolean,\n ): void {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport FieldActionBase from './field-action-base';\n\nimport DisplayMode from '@/display-mode';\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst VisibilityChangingActionClassIdentifier = Symbol('VisibilityChangingAction');\n\nexport class VisibilityChangingAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField, supr: FieldActionExecute, newValue: DisplayMode, oldValue: DisplayMode\n ) => DisplayMode,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return VisibilityChangingActionClassIdentifier; }\n\n execute(\n field: IField,\n supr: FieldActionExecute,\n newValue: DisplayMode,\n oldValue: DisplayMode,\n ): DisplayMode {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n\nconst VisibilityChangedActionClassIdentifier = Symbol('VisibilityChangedAction');\n\nexport class VisibilityChangedAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField, supr: FieldActionExecute, newValue: DisplayMode, oldValue: DisplayMode,\n ) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return VisibilityChangedActionClassIdentifier; }\n\n execute(\n field: IField,\n supr: FieldActionExecute,\n newValue: DisplayMode,\n oldValue: DisplayMode,\n ): void {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n","import { isBoolean, isEqual } from 'lodash-es';\nimport { computed } from 'vue';\n\nimport ActionsMap from './actions/actions-map';\nimport { EnabledChangedAction, EnabledChangingAction } from './actions/enabled-actions';\nimport FieldActionBase from './actions/field-action-base';\nimport { ValidChangedAction } from './actions/valid-changed-action';\nimport { VisibilityChangedAction, VisibilityChangingAction } from './actions/visibility-actions';\nimport DisplayMode from './display-mode';\nimport { IField, IFieldAction } from './field.interface';\nimport { type Group } from './group';\nimport { ValidationError } from './validators/validation-error';\n\n// eslint-disable-next-line import/prefer-default-export\nexport abstract class FieldBase<T = any> implements IField<T> {\n abstract get value(): T;\n abstract set value(newValue: T);\n\n public readonly reactiveValue = computed(() => this.value);\n\n abstract clone(overrides?: Partial<IField<T>>): IField<T>;\n\n declare originalValue: T; // contains original field value as was provided at creation\n\n protected validatingCount = 0;\n\n public readonly validating = false;\n\n protected _valid: boolean = true; // is current value valid as per FE and BE validators?\n\n errors: ValidationError[] = []; // list of errors\n\n declare parent?: Group; // when member of a Group, parent will specify that group\n\n declare fieldName?: string; // when member of a Group, fieldName specifies the name of this field\n\n protected actions: ActionsMap = new ActionsMap();\n\n // default property handlers\n private _visibility: DisplayMode = DisplayMode.FULL;\n\n get visibility(): DisplayMode { return this._visibility; }\n\n set visibility(newValue: DisplayMode) {\n const oldValue = this._visibility;\n const alteredValue = this.actions.trigger(VisibilityChangingAction, this, newValue, oldValue);\n if (!DisplayMode.isDefined(alteredValue ?? newValue)) throw new Error('visibility must be a DisplayMode constant');\n this._visibility = DisplayMode.fromAny(alteredValue ?? newValue);\n this.actions.trigger(VisibilityChangedAction, this, this._visibility, oldValue);\n }\n\n private _enabled: boolean = true;\n\n get enabled(): boolean { return this._enabled; }\n\n set enabled(newValue: boolean) {\n const oldValue = this._enabled;\n const alteredValue = this.actions.trigger(EnabledChangingAction, this, newValue, oldValue);\n if (!isBoolean(alteredValue ?? newValue)) throw new Error('Enabled value must be boolean');\n this._enabled = alteredValue ?? newValue;\n this.actions.trigger(EnabledChangedAction, this, this._enabled, oldValue);\n }\n\n validate() {\n const oldValid = this._valid;\n this._valid = this.valid;\n if (this._valid !== oldValid) this.actions.trigger(ValidChangedAction, this, this.valid, oldValid);\n }\n\n get valid() {\n return this.errors.length === 0;\n }\n\n get fullValue(): any {\n return this.value;\n }\n\n get isChanged() : boolean {\n return !isEqual(this.value, this.originalValue);\n }\n\n registerAction(action: IFieldAction<T>): this {\n const act = action as FieldActionBase;\n this.actions.register(act);\n act.boundToField(this);\n if (act.eager) {\n // When adding eager actions, execute them immediately\n this.actions.trigger(Object.getPrototypeOf(action).constructor, this, this.value, this.originalValue);\n }\n return this;\n }\n\n triggerAction<T2 extends IFieldAction<T>>(\n actionClass: new (...args: any[]) => T2,\n ...params: any[]\n ): any {\n return this.actions.trigger(actionClass as any, this, ...params);\n }\n\n clearValidators(): void {\n this.actions = this.actions.cloneWithoutValidators();\n this.errors = [];\n this._valid = true;\n }\n}\n","import { isString } from 'lodash-es';\nimport { unref } from 'vue';\n\nimport { FieldBase } from '../../field-base';\nimport { IField } from '../../field.interface';\n\nimport Operator from './operator';\n\nexport type OperandType = any | Statement | IField;\n\nfunction XOR(value1: boolean, value2: boolean): boolean {\n return value1 ? !value2 : value2;\n}\n\nexport class Statement {\n private readonly operand1: OperandType;\n\n private readonly operator: Operator;\n\n private readonly operand2: OperandType;\n\n constructor(operand1: OperandType, operator: Operator, operand2: OperandType) {\n this.operand1 = operand1;\n this.operator = operator;\n this.operand2 = operand2;\n }\n\n get operand1Value() {\n if (this.operand1 instanceof Statement) return this.operand1.evaluate();\n if (this.operand1 instanceof FieldBase) return unref(this.operand1.value);\n return this.operand1; // any\n }\n\n get operand2Value() {\n if (this.operand2 instanceof Statement) return this.operand2.evaluate();\n if (this.operand2 instanceof FieldBase) return unref(this.operand2.value);\n return this.operand2; // any\n }\n\n evaluate(): boolean {\n const operand1 = this.operand1Value;\n const operand2 = this.operand2Value;\n\n switch (this.operator) {\n // logical operators\n case Operator.AND:\n return operand1 && operand2;\n case Operator.OR:\n return operand1 || operand2;\n case Operator.NAND:\n return !(operand1 && operand2);\n case Operator.NOR:\n return !(operand1 || operand2);\n case Operator.XOR:\n return XOR(operand1, operand2);\n case Operator.NOT:\n return !operand1;\n\n // comparison operators\n case Operator.EQUALS:\n return operand1 == operand2; // eslint-disable-line eqeqeq\n case Operator.NOT_EQUALS:\n return operand1 != operand2; // eslint-disable-line eqeqeq\n case Operator.LT:\n return operand1 < operand2;\n case Operator.LE:\n return operand1 <= operand2;\n case Operator.GE:\n return operand1 >= operand2;\n case Operator.GT:\n return operand1 > operand2;\n case Operator.IN:\n return operand2?.includes?.(operand1) ?? false;\n case Operator.NOT_IN:\n return !(operand2?.includes?.(operand1) ?? true);\n case Operator.INCLUDES:\n return isString(operand1) && isString(operand2) && operand1.indexOf(operand2) >= 0;\n case Operator.NOT_INCLUDES:\n return !(isString(operand1) && isString(operand2) && operand1.indexOf(operand2) >= 0);\n\n default:\n throw new Error(`Operator not implemented ${this.operator}`);\n }\n }\n\n /**\n * Recursively collects all fields used in this statement and its nested statements\n * @returns A set of all fields used in this statement\n */\n collectFields(): Set<IField> {\n const fields = new Set<IField>();\n\n function processOperand(op: OperandType) {\n if (op instanceof FieldBase) {\n fields.add(op);\n } else if (op instanceof Statement) {\n // For nested statements, merge their fields with our collection\n const nestedFields = op.collectFields();\n nestedFields.forEach((field) => fields.add(field));\n }\n }\n processOperand(this.operand1);\n processOperand(this.operand2);\n\n return fields;\n }\n}\n","import FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst ExecuteActionClassIdentifier = Symbol('ExecuteAction');\n\n// eslint-disable-next-line import/prefer-default-export\nexport class ExecuteAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (field: IField, supr: FieldActionExecute, params: any) => any,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ExecuteActionClassIdentifier; }\n\n execute(field: IField, supr: FieldActionExecute, params: any): any {\n return super.execute(field, supr, params);\n }\n}\n","import FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst ListItemAddedActionClassIdentifier = Symbol('ListItemAddedAction');\n\n// eslint-disable-next-line import/prefer-default-export\nexport class ListItemAddedAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (field: IField, supr: FieldActionExecute, item: any, index: number) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ListItemAddedActionClassIdentifier; }\n\n execute(field: IField, supr: FieldActionExecute, item: any, index: number): void {\n return super.execute(field, supr, item, index);\n }\n}\n","import FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst ListItemRemovedActionClassIdentifier = Symbol('ListItemRemovedAction');\n\n// eslint-disable-next-line import/prefer-default-export\nexport class ListItemRemovedAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (field: IField, supr: FieldActionExecute, item: any, index: number) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ListItemRemovedActionClassIdentifier; }\n\n execute(field: IField, supr: FieldActionExecute, item: any, index: number): void {\n return super.execute(field, supr, item, index);\n }\n}\n","import { reactive } from 'vue';\n\nimport { ExecuteAction, ValueChangedAction } from './actions';\nimport { FieldBase } from './field-base';\nimport { IField, IFieldConstructorParams } from './field.interface';\n\nexport interface ActionValue {\n label?: string;\n icon?: string;\n}\n\nfunction isValEmpty(val: ActionValue | undefined, defaultIfTrue: ActionValue): ActionValue {\n if (val?.label == null && val?.icon == null) return defaultIfTrue;\n return val;\n}\n\nexport class Action extends FieldBase {\n private _value: ActionValue = { label: undefined, icon: undefined };\n\n protected constructor() {\n super();\n }\n\n private init(params?: Partial<IFieldConstructorParams<ActionValue>>) {\n if (params) {\n const { value: paramValue, originalValue, validators, actions, ...otherParams } = params;\n [...(validators || []), ...(actions || [])].forEach((a) => this.registerAction(a));\n Object.assign(this, otherParams);\n const val = isValEmpty(paramValue, this._value);\n const orgVal = Object.freeze({ label: originalValue?.label, icon: originalValue?.icon } as ActionValue);\n this._value = isValEmpty(val, orgVal);\n this.originalValue = isValEmpty(orgVal, val);\n }\n this.actions.triggerEager(this, this.value, this.originalValue);\n this.validate();\n }\n\n static create(params?: Partial<IField<ActionValue>>): Action {\n const res = reactive(new Action()) as Action;\n res.init(params);\n return res;\n }\n\n get value(): ActionValue { return this._value; }\n\n set value(newValue: ActionValue) {\n if (!this.enabled) return; // a disabled field does not allow changing value\n const oldValue = this._value;\n this._value.icon = newValue?.icon;\n this._value.label = newValue?.label;\n this.actions.trigger(ValueChangedAction, this, newValue, oldValue);\n if (this.parent) this.parent.notifyValueChanged();\n this.validate();\n }\n\n get icon(): string | undefined {\n return this.value.icon;\n }\n\n set icon(newValue: string | undefined) {\n this.value.icon = newValue;\n }\n\n get label(): string | undefined {\n return this.value.label;\n }\n\n set label(newValue: string | undefined) {\n this.value.label = newValue;\n }\n\n clone(overrides?: Partial<IField>): Action {\n const res = Action.create({\n value: overrides?.value ?? this.value,\n ...(overrides && 'originalValue' in overrides ? { originalValue: overrides.originalValue } : { }),\n enabled: overrides?.enabled ?? this.enabled,\n visibility: overrides?.visibility ?? this.visibility,\n });\n res.actions = this.actions.clone();\n res.actions.triggerEager(res, res.value, res.originalValue);\n return res;\n }\n\n execute(params: any) {\n this.actions.trigger(ExecuteAction, this, params);\n }\n}\n\nexport type NullableAction = Action | null;\n","import { reactive, unref } from 'vue';\n\nimport { ValueChangedAction } from './actions';\nimport { FieldBase } from './field-base';\nimport { IField, IFieldConstructorParams } from './field.interface';\n\nexport class Field<T = any> extends FieldBase {\n private _value: T = undefined!;\n\n protected constructor() {\n super();\n }\n\n private init(params?: Partial<IFieldConstructorParams<T>>) {\n if (params) {\n const { value: paramValue, validators, actions, ...otherParams } = params;\n [...(validators || []), ...(actions || [])].forEach((a) => this.registerAction(a));\n Object.assign(this, otherParams);\n this._value = paramValue ?? this.originalValue;\n if (this.originalValue === undefined) this.originalValue = this._value;\n }\n this.actions.triggerEager(this, this.value, this.originalValue);\n this.validate();\n }\n\n /**\n * Creates a new reactive Field instance.\n * @param params Initial field parameters\n * @returns Reactive Field instance\n */\n static create<T = any>(params?: Partial<IFieldConstructorParams<T>>): Field<T> {\n const res = reactive(new Field()) as Field<T>;\n res.init(params);\n return res;\n }\n\n get value() { return unref(this._value); }\n\n set value(newValue: T) {\n const oldValue = this._value;\n if (!this.enabled || oldValue === newValue) return; // a disabled field does not allow changing value\n this._value = newValue;\n this.actions.trigger(ValueChangedAction, this, newValue, oldValue);\n if (this.parent) this.parent.notifyValueChanged();\n this.validate();\n }\n\n clone(overrides?: Partial<IField<T>>): Field<T> {\n const res = Field.create<T>({\n value: overrides?.value ?? this.value,\n ...(overrides && 'originalValue' in overrides ? { originalValue: overrides.originalValue } : { }),\n enabled: overrides?.enabled ?? this.enabled,\n visibility: overrides?.visibility ?? this.visibility,\n });\n res.actions = this.actions.clone();\n res.actions.triggerEager(res, res.value, res.originalValue);\n return res;\n }\n}\n\nexport type NullableField<T = any> = Field<T> | null;\n\nexport const EmptyField = Field.create({ value: 'EmptyField' })\n .registerAction(new ValueChangedAction(\n () => {\n console.warn('Working with EmptyField! This should not happen');\n },\n ));\n","import { isEmpty, isEqual } from 'lodash-es';\n\nimport { ValueChangedAction } from './actions';\nimport { Field } from './field';\nimport { FieldBase } from './field-base';\nimport { IField, IFieldConstructorParams } from './field.interface';\n\nexport type GenericFieldsInterface = Record<string, IField>;\n\nexport class Group<T extends GenericFieldsInterface = GenericFieldsInterface> extends FieldBase {\n private readonly _fields: T;\n\n private _value: Record<string, any> | null = null;\n\n private suppressNotifyValueChanged: boolean = false;\n\n constructor(fields: T, params?: Partial<IFieldConstructorParams>) {\n super();\n\n if (!Group.isValidFields(fields)) throw new Error('Invalid fields object provided');\n this._fields = {} as T;\n Object.entries(fields).forEach(([name, field]) => this.addField(name, field));\n\n if (params) {\n const { value: paramValue, validators, actions, ...otherParams } = params;\n [...(validators || []), ...(actions || [])].forEach((a) => this.registerAction(a));\n Object.assign(this, otherParams);\n this.value = paramValue ?? this.originalValue;\n }\n\n if (this.originalValue === undefined) this.originalValue = this.value;\n\n // if (Object.keys(this._fields).length) console.log('group created', this, Error().stack);\n this.actions.triggerEager(this, this.value, this.originalValue);\n this.validate();\n }\n\n private addField(fieldName: string, field: IField) {\n // note: not sure if I should expose this (make it public).\n // breaks types, neglects events (originalValue, valueChanged), etc.\n if (this.fields[fieldName] !== undefined) {\n throw new Error(`Field ${fieldName} is already in this form`);\n }\n Object.defineProperty(field, 'parent', { get: () => this, configurable: false, enumerable: false });\n Object.defineProperty(field, 'fieldName', { get: () => fieldName, configurable: false, enumerable: false });\n Object.defineProperty(\n this._fields,\n fieldName,\n { get() { return field; }, configurable: false, enumerable: true },\n );\n }\n\n private static isValidFields(flds: unknown): flds is Record<string, FieldBase> {\n function isFieldAll(field: unknown): field is FieldBase {\n return field instanceof FieldBase;\n }\n\n return typeof flds === 'object' &&\n flds !== null &&\n Object.entries(flds).every(([, field]) => isFieldAll(field));\n }\n\n static createFromFormData(data: Record<string, any> | null): Group {\n if (data instanceof FieldBase) {\n throw new Error('data is already a Form structure, should be a simple object');\n }\n return new Group(\n data == null ?\n { } :\n Object.fromEntries(\n Object.entries(data).map(([key, value]) => [key, Field.create({ value })]),\n ),\n );\n }\n\n field<K extends keyof T>(fieldName: K): T[K] | null {\n return this._fields[fieldName] ?? null;\n }\n\n get fields(): T {\n return this._fields;\n }\n\n get value(): Record<string, any> | null {\n const value: Record<string, any> = {};\n Object.entries(this._fields).forEach(([name, field]) => {\n const fieldValue = field.value;\n if (field.enabled) {\n // readOnly fields do not serialize\n value[name] = fieldValue;\n } else if (field instanceof Group && !isEmpty(fieldValue)) {\n // readOnly group only serializes if it is non-empty (some of its fields are not readOnly)\n value[name] = fieldValue;\n }\n });\n return isEmpty(value) ? null : value;\n }\n\n set value(newValue: Record<string, any> | null) {\n this.suppressNotifyValueChanged = true;\n try {\n Object.entries(this._fields).forEach(([name, field]) => {\n if (newValue == null || name in newValue) {\n field.value = newValue == null ? null : newValue[name];\n }\n });\n } finally {\n this.suppressNotifyValueChanged = false;\n }\n this.notifyValueChanged();\n this.validate();\n }\n\n get fullValue(): Record<string, any> {\n const value: Record<string, any> = {};\n Object.entries(this._fields).forEach(([name, field]) => { value[name] = field.fullValue; });\n return value;\n }\n\n notifyValueChanged() {\n if (this.suppressNotifyValueChanged) return;\n const newValue = this.value;\n if (!isEqual(newValue, this._value)) {\n const oldValue = this._value;\n this._value = newValue;\n this.actions.trigger(ValueChangedAction, this, newValue, oldValue);\n if (this.parent) this.parent.notifyValueChanged();\n this.validate();\n }\n }\n\n get valid() {\n return super.valid && Object.values(this._fields).every((field) => field.valid);\n }\n\n clone(overrides?: Partial<IField>): Group<T> {\n const newFields = {} as T;\n Object.entries(this._fields).forEach(([name, field]) => {\n newFields[name as keyof T] = field.clone() as any;\n });\n const res = new Group(newFields, {\n value: overrides?.value ?? this.value,\n ...(overrides && 'originalValue' in overrides ? { originalValue: overrides.originalValue } : { }),\n enabled: overrides?.enabled ?? this.enabled,\n visibility: overrides?.visibility ?? this.visibility,\n });\n res.actions = this.actions.clone();\n res.actions.triggerEager(res, res.value, res.originalValue);\n return res;\n }\n}\n\nexport type NullableGroup = Group | null;\n","import { isEmpty, isEqual } from 'lodash-es';\n\nimport { ListItemAddedAction, ListItemRemovedAction, ValueChangedAction } from './actions';\nimport { FieldBase } from './field-base';\nimport { IField, IFieldConstructorParams } from './field.interface';\nimport { GenericFieldsInterface, Group } from './group';\n\nexport class List<T extends GenericFieldsInterface = GenericFieldsInterface> extends FieldBase {\n private _value: Group<T>[] | null = null;\n\n private _itemTemplate?: Group<T>;\n\n private _previousValue: Record<string, any>[] | null;\n\n constructor(itemTemplate?: Group<T>, params?: Partial<IFieldConstructorParams>) {\n super();\n\n this._itemTemplate = itemTemplate;\n\n if (params) {\n const { value: paramValue, validators, actions, ...otherParams } = params;\n [...(validators || []), ...(actions || [])].forEach((a) => this.registerAction(a));\n Object.assign(this, otherParams);\n\n if (paramValue) this.setValueInternal(paramValue);\n }\n\n if (this.originalValue === undefined) this.originalValue = this.value;\n this._previousValue = this.value;\n // if (Object.keys(this._fields).length) console.log('formGroup created', this, Error().stack);\n this.actions.triggerEager(this, this.value, this.originalValue);\n this.validate();\n }\n\n private processSetValueItem(item: any) : Group<T> {\n let res: Group<T>;\n // If item is already a Group, use it\n if (item instanceof Group) res = item;\n // Otherwise create a Group from item\n // eslint-disable-next-line no-underscore-dangle\n else if (this._itemTemplate) res = this._itemTemplate.clone({ value: item });\n else res = Group.createFromFormData(item) as Group<T>;\n\n Object.defineProperty(res, 'parent', { get: () => this, configurable: false, enumerable: false });\n\n return res;\n }\n\n private setValueInternal(newValue: any[]) {\n if (Array.isArray(newValue)) {\n this._value = newValue.map((item: any) => this.processSetValueItem(item));\n }\n }\n\n get value(): Record<string, any>[] | null {\n const value = this._value?.map((item) => item.value);\n return isEmpty(value) ? null : <Record<string, any>[]> value;\n }\n\n set value(newValue: Record<string, any>[]) {\n const oldValue = this.value;\n this.setValueInternal(newValue);\n this.actions.trigger(ValueChangedAction, this, this.value, oldValue);\n if (this.parent) this.parent.notifyValueChanged();\n this.validate();\n }\n\n clone(overrides?: Partial<IField>): List<T> {\n const res = new List(this._itemTemplate?.clone(), {\n value: [...(overrides?.value ?? this.value)],\n ...(overrides && 'originalValue' in overrides ? { originalValue: overrides.originalValue } : { }),\n enabled: overrides?.enabled ?? this.enabled,\n visibility: overrides?.visibility ?? this.visibility,\n });\n res.actions = this.actions.clone();\n res.actions.triggerEager(res, res.value, res.originalValue);\n return res;\n }\n\n notifyValueChanged() {\n const newValue = this.value;\n if (!isEqual(newValue, this._previousValue)) {\n const oldValue = this._previousValue;\n this._previousValue = newValue;\n this.actions.trigger(ValueChangedAction, this, newValue, oldValue);\n if (this.parent) this.parent.notifyValueChanged();\n this.validate();\n }\n }\n\n get valid() {\n return super.valid && (this._value?.every((item) => item.valid) ?? true);\n }\n\n get(index: number): Group<T> | undefined {\n return this._value != null ? this._value[index] : undefined;\n }\n\n push(item: any): number {\n return this.insert(item, this._value?.length ?? 0) + 1;\n }\n\n pop(): Group<T> | undefined {\n return this.remove((this._value?.length ?? 0) - 1);\n }\n\n remove(index: number): Group<T> | undefined {\n if (this._value == null || index < 0 || this._value.length <= index) return undefined;\n\n let removedItem = this._value.splice(index, 1)?.[0];\n\n if (removedItem) {\n // Remove parent reference\n removedItem = removedItem.clone();\n\n // Trigger events\n this.actions.trigger(ListItemRemovedAction, this, removedItem, index);\n this.notifyValueChanged();\n }\n\n return removedItem;\n }\n\n insert(item: any, index: number): number {\n if (this._value == null) this._value = [];\n while (this._value.length < index) {\n // if the index is too large for current array size, we add as many as necessary\n const itm = this.processSetValueItem(null);\n const idx = this._value.push(itm);\n this.actions.trigger(ListItemAddedAction, this, itm, idx);\n }\n const itm = this.processSetValueItem(item);\n this._value.splice(index, 0, itm);\n\n this.actions.trigger(ListItemAddedAction, this, itm, index);\n this.notifyValueChanged();\n\n return index;\n }\n\n clear() {\n this._value = null;\n this.notifyValueChanged();\n }\n}\n\nexport type NullableList = List | null;\n","// Global configuration for @dynamicforms/vue-forms\nexport interface FormsConfig {\n useMarkdownInValidators: boolean;\n}\n\n// Default configuration\nconst config: FormsConfig = { useMarkdownInValidators: true };\n\n// Function to access config\nexport function getConfig(): FormsConfig { return config; }\n\n// Function to update config\nexport function setConfig(newConfig: Partial<FormsConfig>): void { Object.assign(config, newConfig); }\n\n// Vue plugin installation\nexport default {\n install(app: any, options?: Partial<FormsConfig>) {\n if (options) {\n setConfig(options);\n }\n },\n};\n","import { getConfig } from '../config';\n\nimport { MdString } from './validation-error';\n\n// eslint-disable-next-line import/prefer-default-export\nexport function buildErrorMessage(mdErrorString: string): string | MdString {\n const useMarkdownInValidators = getConfig().useMarkdownInValidators;\n if (useMarkdownInValidators) return new MdString(mdErrorString);\n\n return mdErrorString\n .replace(/[*_~`]/g, '') // remove basic markdown (italic, bold, strike, code)\n .replace(/\\[.*?\\]\\((.*?)\\)/g, '$1') // remove links, keep url only\n .replace(/!\\[.*?\\]\\((.*?)\\)/g, '') // remove images\n .replace(/#+\\s?/g, '') // Remove heading markers (#, ##, ###)\n .replace(/>\\s?/g, '') // remove quotes\n .replace(/(\\*|-|\\d+\\.)\\s+/g, '') // remove lists (bullet points and numbered lists)\n .replace(/`{3}[\\s\\S]*?`{3}/g, '') // remove code blocks\n .replace(/`([^`]+)`/g, '$1') // remove inline code markers\n .replace(/\\n{2,}/g, '\\n'); // removes excessive empty lines\n}\n","import { unref } from 'vue';\n\nimport { ValueChangedAction } from '../actions';\nimport { IField } from '../field.interface';\n\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nexport default class CompareTo<T = any> extends Validator {\n private unregistered = false;\n\n constructor(\n private otherField: IField,\n private isValidComparison: (myValue: T, otherValue: T) => boolean,\n message: RenderContentRef,\n ) {\n let listenerSet = false;\n let nVal: T;\n let oVal: T;\n\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n nVal = newValue;\n oVal = oldValue;\n if (!listenerSet) {\n listenerSet = true;\n this.otherField.registerAction(new ValueChangedAction((oField, supr, oNewValue, oOldValue) => {\n supr(oField, oNewValue, oOldValue);\n // somewhat hackish: we just need to execute this one validator, not anything before, not anything after...\n if (!this.unregistered) this.execute(field, () => null, nVal, oVal);\n }));\n }\n if (!this.isValidComparison(unref(newValue), unref(this.otherField.value))) {\n return [\n new ValidationErrorRenderContent(\n this.replacePlaceholders(message, { newValue, oldValue, field, otherField: this.otherField }),\n ),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n\n unregister() {\n this.unregistered = true;\n }\n}\n","import { truncate } from 'lodash-es';\nimport { unref } from 'vue';\n\nimport { IField } from '../field.interface';\n\nimport { buildErrorMessage } from './error-message-builder';\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nexport default class InAllowedValues<T = any> extends Validator {\n constructor(allowedValues: T[], message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Must be one of [**{allowedAsText}**]');\n let allowedAsText = allowedValues.join(', ');\n if (allowedAsText.length > 60) {\n allowedAsText = truncate(allowedAsText, {\n length: 40,\n separator: ', ',\n omission: `... (${allowedValues.length} items total)`,\n });\n }\n\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (!allowedValues.includes(unref(newValue))) {\n return [\n new ValidationErrorRenderContent(\n this.replacePlaceholders(msg, { newValue, oldValue, field, allowedValues, allowedAsText }),\n ),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n","import { isArray, isObject, isString } from 'lodash-es';\nimport { unref } from 'vue';\n\nimport { IField } from '../field.interface';\n\nimport { buildErrorMessage } from './error-message-builder';\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nfunction toLength(a: any): number {\n if (a == null) return 0;\n if (isArray(a)) return a.length;\n if (isString(a)) return a.length;\n if (isObject(a) && Object.getPrototypeOf(a) === Object.prototype) return Object.keys(a).length;\n return String(a).length;\n}\n\nexport default class Required<T = any> extends Validator {\n constructor(message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Please enter a value');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (toLength(unref(newValue)) === 0) {\n return [new ValidationErrorRenderContent(\n this.replacePlaceholders(msg, { newValue, oldValue, field }),\n )];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport { IField } from '../field.interface';\n\nimport { buildErrorMessage } from './error-message-builder';\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nexport class MinValue<T = any> extends Validator {\n constructor(minValue: T, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Value must be larger or equal to **{minValue}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (newValue < minValue || newValue === undefined) {\n return [\n new ValidationErrorRenderContent(this.replacePlaceholders(msg, { newValue, oldValue, field, minValue })),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n\nexport class MaxValue<T = any> extends Validator {\n constructor(maxValue: T, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Value must be less than or equal to **{maxValue}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (newValue > maxValue || newValue === undefined) {\n return [\n new ValidationErrorRenderContent(this.replacePlaceholders(msg, { newValue, oldValue, field, maxValue })),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n\nexport class ValueInRange<T = any> extends Validator {\n constructor(minValue: T, maxValue: T, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Value must be between **{minValue}** and **{maxValue}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (newValue < minValue || newValue > maxValue || newValue === undefined) {\n return [\n new ValidationErrorRenderContent(\n this.replacePlaceholders(msg, { newValue, oldValue, field, minValue, maxValue }),\n ),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport { isArray, isObject, isString } from 'lodash-es';\n\nimport { IField } from '../field.interface';\n\nimport { buildErrorMessage } from './error-message-builder';\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nfunction toLength(a: any): number {\n if (a == null) return 0;\n if (isArray(a)) return a.length;\n if (isString(a)) return a.length;\n if (isObject(a) && Object.getPrototypeOf(a) === Object.prototype) return Object.keys(a).length;\n return String(a).length;\n}\n\nexport class MinLength<T = any> extends Validator {\n constructor(minLength: number, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Length must be larger or equal to **{minLength}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (toLength(newValue) < minLength) {\n return [\n new ValidationErrorRenderContent(this.replacePlaceholders(msg, { newValue, oldValue, field, minLength })),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n\nexport class MaxLength<T = any> extends Validator {\n constructor(maxLength: number, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Length must be less than or equal to **{maxLength}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (toLength(newValue) > maxLength) {\n return [\n new ValidationErrorRenderContent(this.replacePlaceholders(msg, { newValue, oldValue, field, maxLength })),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n\nexport class LengthInRange<T = any> extends Validator {\n constructor(minLength: number, maxLength: number, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Length must be between **{minLength}** and **{maxLength}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n const len = toLength(newValue);\n if (len < minLength || len > maxLength) {\n return [\n new ValidationErrorRenderContent(\n this.replacePlaceholders(msg, { newValue, oldValue, field, minLength, maxLength }),\n ),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n","import { unref } from 'vue';\n\nimport { IField } from '../field.interface';\n\nimport { buildErrorMessage } from './error-message-builder';\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nexport default class Pattern<T = any> extends Validator {\n constructor(pattern: RegExp, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Value must match pattern \"**{pattern}**\"');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (!pattern.test(String(unref(newValue)))) {\n return [\n new ValidationErrorRenderContent(this.replacePlaceholders(msg, { newValue, oldValue, field, pattern })),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n"],"names":["DisplayMode","defaultDisplayMode","fromString","mode","fromAny","input","isDefined","check","DisplayMode$1","FieldActionBase","executorFn","__publicField","field","supr","params","AbortEventHandlingException","ValueChangedActionClassIdentifier","ValueChangedAction","newValue","oldValue","MdString","isCustomModalContentComponentDef","msg","uMsg","unref","ValidationError","ValidationErrorText","text","ValidationErrorRenderContent","computed","ValidatorClassIdentifier","Validator","validationFn","errors","processErrors","err","e","i","error","idx","_a","isEqual","replace","ret","key","ActionsMap","action","actionType","existingExecute","ex","ActionClass","identifier","execute","newActions","ConditionalStatementActionClassIdentifier","ConditionalStatementAction","statement","actionExecutor","currentResult","fld","ConditionalVisibilityAction","ConditionalEnabledAction","ConditionalValueAction","trueValue","Operator","operator","op","isLogicOperator","Operator$1","EnabledChangingActionClassIdentifier","EnabledChangingAction","EnabledChangedActionClassIdentifier","EnabledChangedAction","ValidChangedActionClassIdentifier","ValidChangedAction","VisibilityChangingActionClassIdentifier","VisibilityChangingAction","VisibilityChangedActionClassIdentifier","VisibilityChangedAction","FieldBase","alteredValue","isBoolean","oldValid","act","actionClass","XOR","value1","value2","Statement","operand1","operand2","_b","_d","_c","isString","fields","processOperand","ExecuteActionClassIdentifier","ExecuteAction","ListItemAddedActionClassIdentifier","ListItemAddedAction","item","index","ListItemRemovedActionClassIdentifier","ListItemRemovedAction","isValEmpty","val","defaultIfTrue","Action","paramValue","originalValue","validators","actions","otherParams","__objRest","a","orgVal","res","reactive","overrides","__spreadProps","__spreadValues","Field","EmptyField","Group","name","fieldName","flds","isFieldAll","data","value","fieldValue","isEmpty","newFields","List","itemTemplate","removedItem","itm","config","getConfig","setConfig","newConfig","config$1","app","options","buildErrorMessage","mdErrorString","CompareTo","otherField","isValidComparison","message","listenerSet","nVal","oVal","oField","oNewValue","oOldValue","InAllowedValues","allowedValues","allowedAsText","truncate","toLength","isArray","isObject","Required","MinValue","minValue","MaxValue","maxValue","ValueInRange","MinLength","minLength","MaxLength","maxLength","LengthInRange","len","Pattern","pattern"],"mappings":"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"}
1
+ {"version":3,"file":"dynamicforms-vue-forms.umd.cjs","sources":["../src/display-mode.ts","../src/actions/field-action-base.ts","../src/field.interface.ts","../src/actions/value-changed-action.ts","../src/validators/validation-error.ts","../src/validators/validator.ts","../src/actions/actions-map.ts","../src/actions/conditional/conditional-statement-action.ts","../src/actions/conditional/operator.ts","../src/actions/enabled-actions.ts","../src/actions/valid-changed-action.ts","../src/actions/visibility-actions.ts","../src/field-base.ts","../src/actions/conditional/statement.ts","../src/actions/execute-action.ts","../src/actions/list-item-added-action.ts","../src/actions/list-item-removed-action.ts","../src/action.ts","../src/field.ts","../src/group.ts","../src/list.ts","../src/config.ts","../src/validators/error-message-builder.ts","../src/validators/validator-compare-to.ts","../src/validators/validator-in-allowed-values.ts","../src/validators/validator-required.ts","../src/validators/validator-min-max-range.ts","../src/validators/validator-min-max-range-length.ts","../src/validators/validator-pattern.ts"],"sourcesContent":["/**\n * DisplayMode enum provides an enumeration for supported ways of rendering a particular object in the DOM\n */\nenum DisplayMode {\n // This enum is actually declared in dynamicforms.mixins.field_render.py\n SUPPRESS = 1, // Field will be entirely suppressed. it will not render (not even to JSON) and will not parse for PUT\n HIDDEN = 5, // Field will render as <input type=\"hidden\"> or <tr data-field_name>\n INVISIBLE = 8, // Field will render completely, but with display: none. Equal to setting its style = {display: none}\n FULL = 10, // Field will render completely\n}\n\nexport const defaultDisplayMode = DisplayMode.FULL;\n\nnamespace DisplayMode {\n export function fromString(mode: string): DisplayMode {\n if (mode.toUpperCase() === 'SUPPRESS') return DisplayMode.SUPPRESS;\n if (mode.toUpperCase() === 'HIDDEN') return DisplayMode.HIDDEN;\n if (mode.toUpperCase() === 'INVISIBLE') return DisplayMode.INVISIBLE;\n return defaultDisplayMode;\n }\n\n export function fromAny(mode: any): DisplayMode {\n const input = (typeof mode === 'number') ? mode : DisplayMode.fromString(mode as string);\n if (Object.values(DisplayMode).includes(input)) return input;\n return defaultDisplayMode;\n }\n\n export function isDefined(mode: number | string): boolean {\n const check = (typeof mode === 'number') ? mode : DisplayMode.fromString(mode as string);\n return Object.values(DisplayMode).includes(check);\n }\n}\n\nObject.freeze(DisplayMode);\n\nexport default DisplayMode;\n","// eslint-disable-next-line max-classes-per-file\nimport {\n FieldActionExecute,\n type IField,\n type IFieldAction,\n} from '@/field.interface';\n\ntype ActionExecutor = (field: IField, supr: FieldActionExecute, ...params: any[]) => any;\n\nexport default abstract class FieldActionBase implements IFieldAction {\n public static get classIdentifier(): symbol { throw new Error('classIdentifier must be declared'); }\n\n public get classIdentifier(): symbol { return (<any> this.constructor).classIdentifier; }\n\n private readonly executorFn: ActionExecutor;\n\n constructor(executorFn: ActionExecutor) {\n this.executorFn = executorFn;\n }\n\n execute(field: IField, supr: IFieldAction['execute'], ...params: any[]): any {\n return this.executorFn(field, supr, ...params);\n }\n\n // eslint-disable-next-line class-methods-use-this\n get eager() { return false; }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, class-methods-use-this\n boundToField(field: IField) { }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, class-methods-use-this\n unregister() {}\n}\n","import { ComputedRef } from 'vue';\n\nimport type DisplayMode from './display-mode';\nimport { type ValidationError } from './validators/validation-error';\n\nexport interface IField<T = any> {\n value: T;\n reactiveValue: ComputedRef<T>;\n fullValue: T;\n originalValue: T;\n valid: boolean;\n validating: boolean;\n errors: ValidationError[];\n enabled: boolean;\n visibility: DisplayMode;\n\n parent?: any; // Group when member of a Group, parent will specify that group\n fieldName?: string; // when member of a Group, fieldName specifies the name of this field\n\n clone(overrides?: Partial<IField<T>>): IField<T>;\n\n // events\n registerAction(action: IFieldAction<T>): this;\n triggerAction<T2 extends IFieldAction<T>>(actionClass: abstract new (...args: any[]) => T2, ...params: any[]): any;\n\n // API\n validate(): void;\n clearValidators(): void;\n isChanged: boolean;\n}\n\nexport interface IFieldConstructorActionsList<T = any> {\n actions?: IFieldAction<T>[],\n validators?: IFieldAction<T>[],\n}\n\nexport type IFieldConstructorParams<T = any> = IField<T> & IFieldConstructorActionsList<T>;\n\nexport class AbortEventHandlingException extends Error {}\n\nexport type FieldActionExecute<T = any> = (field: IField<T>, ...params: any[]) => any;\nexport interface IFieldAction<T = any> {\n execute(field: IField<T>, supr: FieldActionExecute<T>, ...params: any[]): any;\n}\n","import FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nexport const ValueChangedActionClassIdentifier = Symbol('ValueChangedAction');\n\n// eslint-disable-next-line import/prefer-default-export\nexport class ValueChangedAction<T = any> extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField<T>, supr: FieldActionExecute<T>, newValue: T, oldValue: T,\n ) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ValueChangedActionClassIdentifier; }\n\n execute(\n field: IField<T>,\n supr: FieldActionExecute<T>,\n newValue: T,\n oldValue: T,\n ): void {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { computed, ComputedRef, Ref, unref } from 'vue';\n\n/**\n * Marks content for markdown rendering\n */\nexport class MdString extends String {}\n\n/**\n * Interface for custom component content definition\n */\nexport interface CustomModalContentComponentDef {\n componentName: string;\n componentProps: Record<any, any>;\n}\n\n/**\n * Type for different renderable content formats: plain string, markdown, or custom component\n */\nexport type RenderContent = string | MdString | CustomModalContentComponentDef;\n/**\n * Type for different renderable content formats (supporting references): plain string, markdown, or custom component\n */\nexport type RenderContentRef = RenderContent | Ref<RenderContent>;\n\n/**\n * Type guard to check if content is a custom component definition\n * @param msg - Content to check\n * @returns True if content is a custom component definition\n */\nexport function isCustomModalContentComponentDef(msg?: RenderContentRef): msg is CustomModalContentComponentDef {\n const uMsg = unref(msg);\n return typeof uMsg === 'object' && 'componentName' in uMsg;\n}\n\n/**\n * Base validation error class with component rendering capabilities\n */\nexport class ValidationError {\n get componentName() { return 'Comment'; } // eslint-disable-line class-methods-use-this\n\n get componentBindings() { return {}; } // eslint-disable-line class-methods-use-this\n\n get componentBody() { return ''; } // eslint-disable-line class-methods-use-this\n}\n\n/**\n * Simple text-only ValidationError\n */\nexport class ValidationErrorText extends ValidationError {\n text: string;\n\n constructor(text: string) {\n super();\n this.text = text;\n }\n\n get componentName() { return 'template'; } // eslint-disable-line class-methods-use-this\n\n get componentBody() { return this.text; }\n}\n\n/**\n * Validation error that supports multiple content types (plain text, markdown, component)\n */\nexport class ValidationErrorRenderContent extends ValidationError {\n private text: RenderContent | Ref<RenderContent>;\n\n private textType: ComputedRef<'string' | 'md' | 'component'>;\n\n constructor(text: RenderContentRef) {\n super();\n this.text = text;\n this.textType = computed(() => this.getTextType);\n }\n\n get getTextType() {\n const msg = unref(this.text);\n if (!msg) return 'string';\n if (msg instanceof MdString) return 'md';\n if (isCustomModalContentComponentDef(msg)) return 'component';\n return 'string';\n }\n\n get componentName() {\n switch (unref(this.textType)) {\n case 'string': return 'template';\n case 'md': return 'vue-markdown';\n case 'component': return (unref(this.text) as CustomModalContentComponentDef).componentName;\n default: return 'template';\n }\n }\n\n get componentBindings() {\n switch (unref(this.textType)) {\n case 'string': return { };\n case 'md': return { source: this.text.toString() };\n case 'component': return (unref(this.text) as CustomModalContentComponentDef).componentProps;\n default: return { };\n }\n }\n\n get componentBody() {\n switch (unref(this.textType)) {\n case 'string': return unref(this.text) as string;\n default: return '';\n }\n }\n}\n\n/** ********************************************************************************************************************\n *\n at some point there will be classes here that will support links or action buttons or something even more complex\n *\n ******************************************************************************************************************** */\n","import { isEqual } from 'lodash-es';\n\nimport { ValueChangedAction } from '../actions/value-changed-action';\nimport { type FieldBase } from '../field-base';\nimport { FieldActionExecute, type IField } from '../field.interface';\n\nimport { isCustomModalContentComponentDef, MdString, RenderContentRef, ValidationError } from './validation-error';\n\nexport type ValidationFunctionResult = ValidationError[] | null;\nexport type ValidationFunction<T = any> = (newValue: T, oldValue: T, field: IField<T>) =>\n ValidationFunctionResult | Promise<ValidationFunctionResult>;\n\ninterface SourceProp { source: symbol }\n\nconst ValidatorClassIdentifier = Symbol('Validator');\n\n/**\n * Validator is a specialized action that performs validation when a field's value changes.\n * It automatically adds/removes validation errors from the field's errors array.\n */\nexport class Validator<T = any> extends ValueChangedAction {\n private readonly source: symbol;\n\n /**\n * Creates a new validator\n * @param validationFn Function that validates the field value and returns errors or null\n */\n constructor(validationFn: ValidationFunction<T>) {\n const executor = (field: IField<T>, supr: FieldActionExecute<T>, newValue: T, oldValue: T) => {\n const errors = validationFn(newValue, oldValue, field) || [];\n\n const processErrors = (err: ValidationFunctionResult) => {\n err?.forEach(\n (e) => Object.defineProperty(e, 'source', { value: this.source, enumerable: false, configurable: false }),\n );\n for (let i = field.errors.length - 1; i >= 0; i--) {\n const error = field.errors[i] as ValidationError & SourceProp;\n if (error.source === this.source) {\n const idx = err?.findIndex((e) => isEqual(e, error)) ?? -1;\n if (idx >= 0) err?.splice(idx, 1);\n else field.errors.splice(i, 1);\n }\n }\n\n if (err && err.length > 0) field.errors.push(...err);\n field.validate(); // Update the field's valid state\n };\n\n if (errors instanceof Promise) {\n // @ts-ignore\n field.validating = (++(<FieldBase> field).validatingCount) > 0;\n errors\n .then((err) => processErrors(err))\n .finally(() => {\n // @ts-ignore\n (<FieldBase> field).validatingCount = Math.max(0, (<FieldBase> field).validatingCount - 1);\n // @ts-ignore\n field.validating = (<FieldBase>field).validatingCount > 0;\n });\n } else processErrors(errors);\n return supr(field, newValue, oldValue); // Continue the action chain\n };\n\n super(executor);\n\n // Create a unique symbol for this validator instance\n this.source = Symbol(this.constructor.name);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ValidatorClassIdentifier; }\n\n // eslint-disable-next-line class-methods-use-this\n get eager() { return true; }\n\n // eslint-disable-next-line class-methods-use-this\n protected replacePlaceholders(text: RenderContentRef, replace: Record<string, any>) {\n if (isCustomModalContentComponentDef(text)) return text;\n let ret = (text as string | MdString);\n Object.keys(replace).forEach((key) => { ret = ret.replaceAll(`{${key}}`, replace[key]); });\n return (text instanceof MdString) ? new MdString(ret) : ret;\n }\n}\n","import { type FieldActionExecute, type IField, AbortEventHandlingException } from '../field.interface';\nimport { Validator } from '../validators/validator';\n\nimport FieldActionBase from './field-action-base';\nimport { ValueChangedActionClassIdentifier } from './value-changed-action';\n\nexport default class ActionsMap extends Map<symbol, FieldActionExecute> {\n private readonly eagerActions = new Set<symbol>();\n\n private readonly registeredActions: FieldActionBase[] = [];\n\n register(action: FieldActionBase) {\n if (!(action instanceof FieldActionBase)) throw new Error('Invalid action type');\n this.registeredActions.push(action);\n\n const actionType = action.classIdentifier;\n const existingExecute = this.get(actionType) || (() => null);\n\n function ex(field: IField, ...params: any[]) {\n return action.execute(field, existingExecute, ...params);\n }\n this.set(actionType, ex);\n if (action.eager) this.eagerActions.add(action.classIdentifier);\n }\n\n trigger<T extends FieldActionBase>(\n ActionClass: { new (...args: any[]): T, classIdentifier: symbol },\n field: IField,\n ...params: any[]\n ): any {\n const identifier = ActionClass.classIdentifier;\n if (identifier === ValueChangedActionClassIdentifier) this.triggerEager(field, ...params);\n const execute = this.get(identifier);\n try {\n if (execute) return execute(field, ...params);\n } catch (error) {\n if (!(error instanceof AbortEventHandlingException)) throw error;\n }\n return null;\n }\n\n triggerEager(field: IField, ...params: any[]): any {\n for (const identifier of this.eagerActions) {\n const execute = this.get(identifier);\n try {\n if (execute) execute(field, ...params);\n } catch (error) {\n if (!(error instanceof AbortEventHandlingException)) throw error;\n }\n }\n }\n\n clone() : ActionsMap {\n const newActions = new ActionsMap();\n this.registeredActions.forEach((action) => newActions.register(action));\n return newActions;\n }\n\n cloneWithoutValidators(): ActionsMap {\n const newActions = new ActionsMap();\n this.registeredActions.forEach((action) => {\n if (action instanceof Validator) action.unregister();\n else newActions.register(action);\n });\n return newActions;\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport DisplayMode from '../../display-mode';\nimport { FieldActionExecute, IField } from '../../field.interface';\nimport { ValueChangedAction } from '../value-changed-action';\n\nimport { Statement } from './statement';\n\nconst ConditionalStatementActionClassIdentifier = Symbol('ConditionalStatementAction');\n\ntype ConditionalExecutorFn = (\n field: IField,\n currentResult: boolean,\n previousResult: boolean | undefined,\n) => void;\n\nexport class ConditionalStatementAction extends ValueChangedAction {\n private lastResult: boolean | undefined = undefined;\n\n // boundField tracks the fields this action is bound to. so that it may perform the executorFn on them and not on the\n // ValueChangedAction fields that will call the actionExecutor\n private readonly boundFields: Set<IField> = new Set<IField>();\n\n constructor(statement: Statement, executorFn: ConditionalExecutorFn) {\n // Create ValueChangedAction executor that will evaluate statement and track changes\n const actionExecutor = (field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean) => {\n const currentResult = statement.evaluate();\n\n if (currentResult !== this.lastResult) {\n for (const fld of this.boundFields) {\n executorFn(fld, currentResult, this.lastResult);\n }\n this.lastResult = currentResult;\n }\n\n // Continue action chain\n return supr(field, newValue, oldValue);\n };\n\n super(actionExecutor);\n statement.collectFields().forEach((field) => field.registerAction(new ValueChangedAction(actionExecutor)));\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ConditionalStatementActionClassIdentifier; }\n\n // eslint-disable-next-line class-methods-use-this\n get eager() { return true; }\n\n boundToField(field: IField) { this.boundFields.add(field); }\n}\n\n// Derived classes for visibility, enabled, and value changes\n\nexport class ConditionalVisibilityAction extends ConditionalStatementAction {\n constructor(statement: Statement) {\n super(statement, (field: IField, currentResult) => {\n field.visibility = currentResult ? DisplayMode.FULL : DisplayMode.SUPPRESS;\n });\n }\n}\n\nexport class ConditionalEnabledAction extends ConditionalStatementAction {\n constructor(statement: Statement) {\n super(statement, (field, currentResult) => {\n field.enabled = currentResult;\n });\n }\n}\n\nexport class ConditionalValueAction<T> extends ConditionalStatementAction {\n constructor(statement: Statement, trueValue: T) {\n super(statement, (field, currentResult) => {\n if (currentResult) field.value = trueValue;\n });\n }\n}\n","/**\n * Operators provides us a functionality for backend to send us complex condition upon which we send\n * dynamic visibility prop for form input fields\n */\nenum Operator {\n // Logic Operators\n NOT = 0,\n OR = 1,\n AND = 2,\n XOR = 3,\n NAND = 4,\n NOR = 5,\n\n // Comparators (comparison operators)\n EQUALS = -1,\n NOT_EQUALS = -2,\n GT = -3,\n LT = -4,\n GE = -5,\n LE = -6,\n IN = -7,\n NOT_IN = -8,\n INCLUDES = -9,\n NOT_INCLUDES = -10,\n}\n\nnamespace Operator {\n export function fromString(operator: string): Operator {\n const op = operator.toLowerCase();\n if (op === 'not') return Operator.NOT;\n if (op === 'or') return Operator.OR;\n if (op === 'and') return Operator.AND;\n if (op === 'xor') return Operator.XOR;\n if (op === 'nand') return Operator.NAND;\n if (op === 'nor') return Operator.NOR;\n\n if (op === 'equals') return Operator.EQUALS;\n if (['not_equals', 'not-equals', 'not equals'].includes(op)) return Operator.NOT_EQUALS;\n if (op === 'gt') return Operator.GT;\n if (op === 'lt') return Operator.LT;\n if (op === 'ge') return Operator.GE;\n if (op === 'le') return Operator.LE;\n if (op === 'in') return Operator.IN;\n if (['not_in', 'not-in', 'not in'].includes(op)) return Operator.NOT_IN;\n if (op === 'includes') return Operator.INCLUDES;\n if (['not_includes', 'not-includes', 'not includes'].includes(op)) return Operator.NOT_INCLUDES;\n throw new Error(`Unrecognised operator ${op}`);\n }\n\n export function fromAny(mode: any): Operator {\n const input = (typeof mode === 'number') ? mode : Operator.fromString(mode as string);\n if (Object.values(Operator).includes(input)) return input;\n throw new Error(`Unrecognised operator ${mode}`);\n }\n\n export function isDefined(operator: number | string): boolean {\n const check = (typeof operator === 'number') ? operator : Operator.fromString(operator as string);\n return Object.values(Operator).includes(check);\n }\n\n // c8 bug: it doesn't matter what there is in the next line (e.g. console.log()).\n // it will always be a branch with one branch not covered\n export function isLogicOperator(operator: Operator): boolean {\n return operator >= 0;\n }\n}\n\nObject.freeze(Operator);\n\nexport default Operator;\n","// eslint-disable-next-line max-classes-per-file\nimport FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst EnabledChangingActionClassIdentifier = Symbol('EnabledChangingAction');\n\nexport class EnabledChangingAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean\n ) => boolean,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return EnabledChangingActionClassIdentifier; }\n\n execute(field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean): boolean {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n\nconst EnabledChangedActionClassIdentifier = Symbol('EnabledChangedAction');\n\nexport class EnabledChangedAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean\n ) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return EnabledChangedActionClassIdentifier; }\n\n execute(field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean): void {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n","import FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst ValidChangedActionClassIdentifier = Symbol('ValidChangedAction');\n\n// eslint-disable-next-line import/prefer-default-export\nexport class ValidChangedAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField, supr: FieldActionExecute, newValue: boolean, oldValue: boolean,\n ) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ValidChangedActionClassIdentifier; }\n\n execute(\n field: IField,\n supr: FieldActionExecute,\n newValue: boolean,\n oldValue: boolean,\n ): void {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport FieldActionBase from './field-action-base';\n\nimport DisplayMode from '@/display-mode';\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst VisibilityChangingActionClassIdentifier = Symbol('VisibilityChangingAction');\n\nexport class VisibilityChangingAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField, supr: FieldActionExecute, newValue: DisplayMode, oldValue: DisplayMode\n ) => DisplayMode,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return VisibilityChangingActionClassIdentifier; }\n\n execute(\n field: IField,\n supr: FieldActionExecute,\n newValue: DisplayMode,\n oldValue: DisplayMode,\n ): DisplayMode {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n\nconst VisibilityChangedActionClassIdentifier = Symbol('VisibilityChangedAction');\n\nexport class VisibilityChangedAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (\n field: IField, supr: FieldActionExecute, newValue: DisplayMode, oldValue: DisplayMode,\n ) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return VisibilityChangedActionClassIdentifier; }\n\n execute(\n field: IField,\n supr: FieldActionExecute,\n newValue: DisplayMode,\n oldValue: DisplayMode,\n ): void {\n return super.execute(field, supr, newValue, oldValue);\n }\n}\n","import { isBoolean, isEqual } from 'lodash-es';\nimport { computed } from 'vue';\n\nimport ActionsMap from './actions/actions-map';\nimport { EnabledChangedAction, EnabledChangingAction } from './actions/enabled-actions';\nimport FieldActionBase from './actions/field-action-base';\nimport { ValidChangedAction } from './actions/valid-changed-action';\nimport { VisibilityChangedAction, VisibilityChangingAction } from './actions/visibility-actions';\nimport DisplayMode from './display-mode';\nimport { IField, IFieldAction } from './field.interface';\nimport { type Group } from './group';\nimport { ValidationError } from './validators/validation-error';\n\n// eslint-disable-next-line import/prefer-default-export\nexport abstract class FieldBase<T = any> implements IField<T> {\n abstract get value(): T;\n abstract set value(newValue: T);\n\n public readonly reactiveValue = computed(() => this.value);\n\n abstract clone(overrides?: Partial<IField<T>>): IField<T>;\n\n declare originalValue: T; // contains original field value as was provided at creation\n\n protected validatingCount = 0;\n\n public readonly validating = false;\n\n protected _valid: boolean = true; // is current value valid as per FE and BE validators?\n\n errors: ValidationError[] = []; // list of errors\n\n declare parent?: Group; // when member of a Group, parent will specify that group\n\n declare fieldName?: string; // when member of a Group, fieldName specifies the name of this field\n\n protected actions: ActionsMap = new ActionsMap();\n\n // default property handlers\n private _visibility: DisplayMode = DisplayMode.FULL;\n\n get visibility(): DisplayMode { return this._visibility; }\n\n set visibility(newValue: DisplayMode) {\n const oldValue = this._visibility;\n const alteredValue = this.actions.trigger(VisibilityChangingAction, this, newValue, oldValue);\n if (!DisplayMode.isDefined(alteredValue ?? newValue)) throw new Error('visibility must be a DisplayMode constant');\n this._visibility = DisplayMode.fromAny(alteredValue ?? newValue);\n this.actions.trigger(VisibilityChangedAction, this, this._visibility, oldValue);\n }\n\n private _enabled: boolean = true;\n\n get enabled(): boolean { return this._enabled; }\n\n set enabled(newValue: boolean) {\n const oldValue = this._enabled;\n const alteredValue = this.actions.trigger(EnabledChangingAction, this, newValue, oldValue);\n if (!isBoolean(alteredValue ?? newValue)) throw new Error('Enabled value must be boolean');\n this._enabled = alteredValue ?? newValue;\n this.actions.trigger(EnabledChangedAction, this, this._enabled, oldValue);\n }\n\n validate() {\n const oldValid = this._valid;\n this._valid = this.valid;\n if (this._valid !== oldValid) this.actions.trigger(ValidChangedAction, this, this.valid, oldValid);\n }\n\n get valid() {\n return this.errors.length === 0;\n }\n\n get fullValue(): any {\n return this.value;\n }\n\n get isChanged() : boolean {\n return !isEqual(this.value, this.originalValue);\n }\n\n registerAction(action: IFieldAction<T>): this {\n const act = action as FieldActionBase;\n this.actions.register(act);\n act.boundToField(this);\n if (act.eager) {\n // When adding eager actions, execute them immediately\n this.actions.trigger(Object.getPrototypeOf(action).constructor, this, this.value, this.originalValue);\n }\n return this;\n }\n\n triggerAction<T2 extends IFieldAction<T>>(\n actionClass: new (...args: any[]) => T2,\n ...params: any[]\n ): any {\n return this.actions.trigger(actionClass as any, this, ...params);\n }\n\n clearValidators(): void {\n this.actions = this.actions.cloneWithoutValidators();\n this.errors = [];\n this._valid = true;\n }\n}\n","import { isString } from 'lodash-es';\nimport { unref } from 'vue';\n\nimport { FieldBase } from '../../field-base';\nimport { IField } from '../../field.interface';\n\nimport Operator from './operator';\n\nexport type OperandType = any | Statement | IField;\n\nfunction XOR(value1: boolean, value2: boolean): boolean {\n return value1 ? !value2 : value2;\n}\n\nexport class Statement {\n private readonly operand1: OperandType;\n\n private readonly operator: Operator;\n\n private readonly operand2: OperandType;\n\n constructor(operand1: OperandType, operator: Operator, operand2: OperandType) {\n this.operand1 = operand1;\n this.operator = operator;\n this.operand2 = operand2;\n }\n\n get operand1Value() {\n if (this.operand1 instanceof Statement) return this.operand1.evaluate();\n if (this.operand1 instanceof FieldBase) return unref(this.operand1.value);\n return this.operand1; // any\n }\n\n get operand2Value() {\n if (this.operand2 instanceof Statement) return this.operand2.evaluate();\n if (this.operand2 instanceof FieldBase) return unref(this.operand2.value);\n return this.operand2; // any\n }\n\n evaluate(): boolean {\n const operand1 = this.operand1Value;\n const operand2 = this.operand2Value;\n\n switch (this.operator) {\n // logical operators\n case Operator.AND:\n return operand1 && operand2;\n case Operator.OR:\n return operand1 || operand2;\n case Operator.NAND:\n return !(operand1 && operand2);\n case Operator.NOR:\n return !(operand1 || operand2);\n case Operator.XOR:\n return XOR(operand1, operand2);\n case Operator.NOT:\n return !operand1;\n\n // comparison operators\n case Operator.EQUALS:\n return operand1 == operand2; // eslint-disable-line eqeqeq\n case Operator.NOT_EQUALS:\n return operand1 != operand2; // eslint-disable-line eqeqeq\n case Operator.LT:\n return operand1 < operand2;\n case Operator.LE:\n return operand1 <= operand2;\n case Operator.GE:\n return operand1 >= operand2;\n case Operator.GT:\n return operand1 > operand2;\n case Operator.IN:\n return operand2?.includes?.(operand1) ?? false;\n case Operator.NOT_IN:\n return !(operand2?.includes?.(operand1) ?? true);\n case Operator.INCLUDES:\n return isString(operand1) && isString(operand2) && operand1.indexOf(operand2) >= 0;\n case Operator.NOT_INCLUDES:\n return !(isString(operand1) && isString(operand2) && operand1.indexOf(operand2) >= 0);\n\n default:\n throw new Error(`Operator not implemented ${this.operator}`);\n }\n }\n\n /**\n * Recursively collects all fields used in this statement and its nested statements\n * @returns A set of all fields used in this statement\n */\n collectFields(): Set<IField> {\n const fields = new Set<IField>();\n\n function processOperand(op: OperandType) {\n if (op instanceof FieldBase) {\n fields.add(op);\n } else if (op instanceof Statement) {\n // For nested statements, merge their fields with our collection\n const nestedFields = op.collectFields();\n nestedFields.forEach((field) => fields.add(field));\n }\n }\n processOperand(this.operand1);\n processOperand(this.operand2);\n\n return fields;\n }\n}\n","import FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst ExecuteActionClassIdentifier = Symbol('ExecuteAction');\n\n// eslint-disable-next-line import/prefer-default-export\nexport class ExecuteAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (field: IField, supr: FieldActionExecute, params: any) => any,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ExecuteActionClassIdentifier; }\n\n execute(field: IField, supr: FieldActionExecute, params: any): any {\n return super.execute(field, supr, params);\n }\n}\n","import FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst ListItemAddedActionClassIdentifier = Symbol('ListItemAddedAction');\n\n// eslint-disable-next-line import/prefer-default-export\nexport class ListItemAddedAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (field: IField, supr: FieldActionExecute, item: any, index: number) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ListItemAddedActionClassIdentifier; }\n\n execute(field: IField, supr: FieldActionExecute, item: any, index: number): void {\n return super.execute(field, supr, item, index);\n }\n}\n","import FieldActionBase from './field-action-base';\n\nimport { FieldActionExecute, type IField } from '@/field.interface';\n\nconst ListItemRemovedActionClassIdentifier = Symbol('ListItemRemovedAction');\n\n// eslint-disable-next-line import/prefer-default-export\nexport class ListItemRemovedAction extends FieldActionBase {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n executorFn: (field: IField, supr: FieldActionExecute, item: any, index: number) => void,\n ) {\n super(executorFn);\n }\n\n // eslint-disable-next-line class-methods-use-this\n static get classIdentifier() { return ListItemRemovedActionClassIdentifier; }\n\n execute(field: IField, supr: FieldActionExecute, item: any, index: number): void {\n return super.execute(field, supr, item, index);\n }\n}\n","import { reactive } from 'vue';\n\nimport { ExecuteAction, ValueChangedAction } from './actions';\nimport { FieldBase } from './field-base';\nimport { IField, IFieldConstructorParams } from './field.interface';\n\nexport interface ActionValue {\n label?: string;\n icon?: string;\n}\n\nfunction isValEmpty(val: ActionValue | undefined, defaultIfTrue: ActionValue): ActionValue {\n if (val?.label == null && val?.icon == null) return defaultIfTrue;\n return val;\n}\n\nexport class Action<T extends ActionValue = ActionValue> extends FieldBase<T> {\n private _value: T = { label: undefined, icon: undefined } as T;\n\n protected constructor() {\n super();\n }\n\n protected init(params?: Partial<IFieldConstructorParams<T>>) {\n if (params) {\n const { value: paramValue, originalValue, validators, actions, ...otherParams } = params;\n [...(validators || []), ...(actions || [])].forEach((a) => this.registerAction(a));\n Object.assign(this, otherParams);\n const val = isValEmpty(paramValue, this._value);\n const orgVal = Object.freeze({ label: originalValue?.label, icon: originalValue?.icon } as ActionValue);\n this._value = isValEmpty(val, orgVal) as T;\n this.originalValue = isValEmpty(orgVal, val) as T;\n }\n this.actions.triggerEager(this, this.value, this.originalValue);\n this.validate();\n }\n\n static create<T extends ActionValue = ActionValue>(params?: Partial<IField<T>>): Action<T> {\n const res = <Action<T>> <any> reactive(new Action<T>());\n res.init(params);\n return res;\n }\n\n get value(): T { return this._value; }\n\n set value(newValue: T) {\n if (!this.enabled) return; // a disabled field does not allow changing value\n const oldValue = this._value;\n this._value = newValue;\n this.actions.trigger(ValueChangedAction, this, newValue, oldValue);\n if (this.parent) this.parent.notifyValueChanged();\n this.validate();\n }\n\n get icon(): string | undefined {\n return this.value.icon;\n }\n\n set icon(newValue: string | undefined) {\n this.value.icon = newValue;\n }\n\n get label(): string | undefined {\n return this.value.label;\n }\n\n set label(newValue: string | undefined) {\n this.value.label = newValue;\n }\n\n clone(overrides?: Partial<IField<T>>): Action<T> {\n const res = Action.create<T>({\n value: overrides?.value ?? this.value,\n ...(overrides && 'originalValue' in overrides ? { originalValue: overrides.originalValue } : { }),\n enabled: overrides?.enabled ?? this.enabled,\n visibility: overrides?.visibility ?? this.visibility,\n });\n res.actions = this.actions.clone();\n res.actions.triggerEager(res, res.value, res.originalValue);\n return res;\n }\n\n execute(params: any) {\n this.actions.trigger(ExecuteAction, this, params);\n }\n}\n\nexport type NullableAction = Action | null;\n","import { reactive, unref } from 'vue';\n\nimport { ValueChangedAction } from './actions';\nimport { FieldBase } from './field-base';\nimport { IField, IFieldConstructorParams } from './field.interface';\n\nexport class Field<T = any> extends FieldBase {\n private _value: T = undefined!;\n\n protected constructor() {\n super();\n }\n\n protected init(params?: Partial<IFieldConstructorParams<T>>) {\n if (params) {\n const { value: paramValue, validators, actions, ...otherParams } = params;\n [...(validators || []), ...(actions || [])].forEach((a) => this.registerAction(a));\n Object.assign(this, otherParams);\n this._value = paramValue ?? this.originalValue;\n if (this.originalValue === undefined) this.originalValue = this._value;\n }\n this.actions.triggerEager(this, this.value, this.originalValue);\n this.validate();\n }\n\n /**\n * Creates a new reactive Field instance.\n * @param params Initial field parameters\n * @returns Reactive Field instance\n */\n static create<T = any>(params?: Partial<IFieldConstructorParams<T>>): Field<T> {\n const res = reactive(new Field()) as Field<T>;\n res.init(params);\n return res;\n }\n\n get value() { return unref(this._value); }\n\n set value(newValue: T) {\n const oldValue = this._value;\n if (!this.enabled || oldValue === newValue) return; // a disabled field does not allow changing value\n this._value = newValue;\n this.actions.trigger(ValueChangedAction, this, this._value, oldValue);\n if (this.parent) this.parent.notifyValueChanged();\n this.validate();\n }\n\n clone(overrides?: Partial<IField<T>>): Field<T> {\n const res = Field.create<T>({\n value: overrides?.value ?? this.value,\n ...(overrides && 'originalValue' in overrides ? { originalValue: overrides.originalValue } : { }),\n enabled: overrides?.enabled ?? this.enabled,\n visibility: overrides?.visibility ?? this.visibility,\n });\n res.actions = this.actions.clone();\n res.actions.triggerEager(res, res.value, res.originalValue);\n return res;\n }\n}\n\nexport type NullableField<T = any> = Field<T> | null;\n\nexport const EmptyField = Field.create({ value: 'EmptyField' })\n .registerAction(new ValueChangedAction(\n () => {\n console.warn('Working with EmptyField! This should not happen');\n },\n ));\n","import { isEmpty, isEqual } from 'lodash-es';\n\nimport { ValueChangedAction } from './actions';\nimport { Field } from './field';\nimport { FieldBase } from './field-base';\nimport { IField, IFieldConstructorParams } from './field.interface';\n\nexport type GenericFieldsInterface = Record<string, IField>;\n\nexport class Group<T extends GenericFieldsInterface = GenericFieldsInterface> extends FieldBase {\n private readonly _fields: T;\n\n private _value: Record<string, any> | null = null;\n\n private suppressNotifyValueChanged: boolean = false;\n\n constructor(fields: T, params?: Partial<IFieldConstructorParams>) {\n super();\n\n if (!Group.isValidFields(fields)) throw new Error('Invalid fields object provided');\n this._fields = {} as T;\n Object.entries(fields).forEach(([name, field]) => this.addField(name, field));\n\n if (params) {\n const { value: paramValue, validators, actions, ...otherParams } = params;\n [...(validators || []), ...(actions || [])].forEach((a) => this.registerAction(a));\n Object.assign(this, otherParams);\n this.value = paramValue ?? this.originalValue;\n }\n\n if (this.originalValue === undefined) this.originalValue = this.value;\n\n // if (Object.keys(this._fields).length) console.log('group created', this, Error().stack);\n this.actions.triggerEager(this, this.value, this.originalValue);\n this.validate();\n }\n\n private addField(fieldName: string, field: IField) {\n // note: not sure if I should expose this (make it public).\n // breaks types, neglects events (originalValue, valueChanged), etc.\n if (this.fields[fieldName] !== undefined) {\n throw new Error(`Field ${fieldName} is already in this form`);\n }\n Object.defineProperty(field, 'parent', { get: () => this, configurable: false, enumerable: false });\n Object.defineProperty(field, 'fieldName', { get: () => fieldName, configurable: false, enumerable: false });\n Object.defineProperty(\n this._fields,\n fieldName,\n { get() { return field; }, configurable: false, enumerable: true },\n );\n }\n\n private static isValidFields(flds: unknown): flds is Record<string, FieldBase> {\n function isFieldAll(field: unknown): field is FieldBase {\n return field instanceof FieldBase;\n }\n\n return typeof flds === 'object' &&\n flds !== null &&\n Object.entries(flds).every(([, field]) => isFieldAll(field));\n }\n\n static createFromFormData(data: Record<string, any> | null): Group {\n if (data instanceof FieldBase) {\n throw new Error('data is already a Form structure, should be a simple object');\n }\n return new Group(\n data == null ?\n { } :\n Object.fromEntries(\n Object.entries(data).map(([key, value]) => [key, Field.create({ value })]),\n ),\n );\n }\n\n field<K extends keyof T>(fieldName: K): T[K] | null {\n return this._fields[fieldName] ?? null;\n }\n\n get fields(): T {\n return this._fields;\n }\n\n get value(): Record<string, any> | null {\n const value: Record<string, any> = {};\n Object.entries(this._fields).forEach(([name, field]) => {\n const fieldValue = field.value;\n if (field.enabled) {\n // readOnly fields do not serialize\n value[name] = fieldValue;\n } else if (field instanceof Group && !isEmpty(fieldValue)) {\n // readOnly group only serializes if it is non-empty (some of its fields are not readOnly)\n value[name] = fieldValue;\n }\n });\n return isEmpty(value) ? null : value;\n }\n\n set value(newValue: Record<string, any> | null) {\n this.suppressNotifyValueChanged = true;\n try {\n Object.entries(this._fields).forEach(([name, field]) => {\n if (newValue == null || name in newValue) {\n field.value = newValue == null ? null : newValue[name];\n }\n });\n } finally {\n this.suppressNotifyValueChanged = false;\n }\n this.notifyValueChanged();\n this.validate();\n }\n\n get fullValue(): Record<string, any> {\n const value: Record<string, any> = {};\n Object.entries(this._fields).forEach(([name, field]) => { value[name] = field.fullValue; });\n return value;\n }\n\n notifyValueChanged() {\n if (this.suppressNotifyValueChanged) return;\n const newValue = this.value;\n if (!isEqual(newValue, this._value)) {\n const oldValue = this._value;\n this._value = newValue;\n this.actions.trigger(ValueChangedAction, this, newValue, oldValue);\n if (this.parent) this.parent.notifyValueChanged();\n this.validate();\n }\n }\n\n get valid() {\n return super.valid && Object.values(this._fields).every((field) => field.valid);\n }\n\n clone(overrides?: Partial<IField>): Group<T> {\n const newFields = {} as T;\n Object.entries(this._fields).forEach(([name, field]) => {\n newFields[name as keyof T] = field.clone() as any;\n });\n const res = new Group(newFields, {\n value: overrides?.value ?? this.value,\n ...(overrides && 'originalValue' in overrides ? { originalValue: overrides.originalValue } : { }),\n enabled: overrides?.enabled ?? this.enabled,\n visibility: overrides?.visibility ?? this.visibility,\n });\n res.actions = this.actions.clone();\n res.actions.triggerEager(res, res.value, res.originalValue);\n return res;\n }\n}\n\nexport type NullableGroup = Group | null;\n","import { isEmpty, isEqual } from 'lodash-es';\n\nimport { ListItemAddedAction, ListItemRemovedAction, ValueChangedAction } from './actions';\nimport { FieldBase } from './field-base';\nimport { IField, IFieldConstructorParams } from './field.interface';\nimport { GenericFieldsInterface, Group } from './group';\n\nexport class List<T extends GenericFieldsInterface = GenericFieldsInterface> extends FieldBase {\n private _value: Group<T>[] | null = null;\n\n private _itemTemplate?: Group<T>;\n\n private _previousValue: Record<string, any>[] | null;\n\n constructor(itemTemplate?: Group<T>, params?: Partial<IFieldConstructorParams>) {\n super();\n\n this._itemTemplate = itemTemplate;\n\n if (params) {\n const { value: paramValue, validators, actions, ...otherParams } = params;\n [...(validators || []), ...(actions || [])].forEach((a) => this.registerAction(a));\n Object.assign(this, otherParams);\n\n if (paramValue) this.setValueInternal(paramValue);\n }\n\n if (this.originalValue === undefined) this.originalValue = this.value;\n this._previousValue = this.value;\n // if (Object.keys(this._fields).length) console.log('formGroup created', this, Error().stack);\n this.actions.triggerEager(this, this.value, this.originalValue);\n this.validate();\n }\n\n private processSetValueItem(item: any) : Group<T> {\n let res: Group<T>;\n // If item is already a Group, use it\n if (item instanceof Group) res = item;\n // Otherwise create a Group from item\n // eslint-disable-next-line no-underscore-dangle\n else if (this._itemTemplate) res = this._itemTemplate.clone({ value: item });\n else res = Group.createFromFormData(item) as Group<T>;\n\n Object.defineProperty(res, 'parent', { get: () => this, configurable: false, enumerable: false });\n\n return res;\n }\n\n private setValueInternal(newValue: any[]) {\n if (Array.isArray(newValue)) {\n this._value = newValue.map((item: any) => this.processSetValueItem(item));\n }\n }\n\n get value(): Record<string, any>[] | null {\n const value = this._value?.map((item) => item.value);\n return isEmpty(value) ? null : <Record<string, any>[]> value;\n }\n\n set value(newValue: Record<string, any>[]) {\n const oldValue = this.value;\n this.setValueInternal(newValue);\n this.actions.trigger(ValueChangedAction, this, this.value, oldValue);\n if (this.parent) this.parent.notifyValueChanged();\n this.validate();\n }\n\n clone(overrides?: Partial<IField>): List<T> {\n const res = new List(this._itemTemplate?.clone(), {\n value: [...(overrides?.value ?? this.value)],\n ...(overrides && 'originalValue' in overrides ? { originalValue: overrides.originalValue } : { }),\n enabled: overrides?.enabled ?? this.enabled,\n visibility: overrides?.visibility ?? this.visibility,\n });\n res.actions = this.actions.clone();\n res.actions.triggerEager(res, res.value, res.originalValue);\n return res;\n }\n\n notifyValueChanged() {\n const newValue = this.value;\n if (!isEqual(newValue, this._previousValue)) {\n const oldValue = this._previousValue;\n this._previousValue = newValue;\n this.actions.trigger(ValueChangedAction, this, newValue, oldValue);\n if (this.parent) this.parent.notifyValueChanged();\n this.validate();\n }\n }\n\n get valid() {\n return super.valid && (this._value?.every((item) => item.valid) ?? true);\n }\n\n get(index: number): Group<T> | undefined {\n return this._value != null ? this._value[index] : undefined;\n }\n\n push(item: any): number {\n return this.insert(item, this._value?.length ?? 0) + 1;\n }\n\n pop(): Group<T> | undefined {\n return this.remove((this._value?.length ?? 0) - 1);\n }\n\n remove(index: number): Group<T> | undefined {\n if (this._value == null || index < 0 || this._value.length <= index) return undefined;\n\n let removedItem = this._value.splice(index, 1)?.[0];\n\n if (removedItem) {\n // Remove parent reference\n removedItem = removedItem.clone();\n\n // Trigger events\n this.actions.trigger(ListItemRemovedAction, this, removedItem, index);\n this.notifyValueChanged();\n }\n\n return removedItem;\n }\n\n insert(item: any, index: number): number {\n if (this._value == null) this._value = [];\n while (this._value.length < index) {\n // if the index is too large for current array size, we add as many as necessary\n const itm = this.processSetValueItem(null);\n const idx = this._value.push(itm);\n this.actions.trigger(ListItemAddedAction, this, itm, idx);\n }\n const itm = this.processSetValueItem(item);\n this._value.splice(index, 0, itm);\n\n this.actions.trigger(ListItemAddedAction, this, itm, index);\n this.notifyValueChanged();\n\n return index;\n }\n\n clear() {\n this._value = null;\n this.notifyValueChanged();\n }\n}\n\nexport type NullableList = List | null;\n","// Global configuration for @dynamicforms/vue-forms\nexport interface FormsConfig {\n useMarkdownInValidators: boolean;\n}\n\n// Default configuration\nconst config: FormsConfig = { useMarkdownInValidators: true };\n\n// Function to access config\nexport function getConfig(): FormsConfig { return config; }\n\n// Function to update config\nexport function setConfig(newConfig: Partial<FormsConfig>): void { Object.assign(config, newConfig); }\n\n// Vue plugin installation\nexport default {\n install(app: any, options?: Partial<FormsConfig>) {\n if (options) {\n setConfig(options);\n }\n },\n};\n","import { getConfig } from '../config';\n\nimport { MdString } from './validation-error';\n\n// eslint-disable-next-line import/prefer-default-export\nexport function buildErrorMessage(mdErrorString: string): string | MdString {\n const useMarkdownInValidators = getConfig().useMarkdownInValidators;\n if (useMarkdownInValidators) return new MdString(mdErrorString);\n\n return mdErrorString\n .replace(/[*_~`]/g, '') // remove basic markdown (italic, bold, strike, code)\n .replace(/\\[.*?\\]\\((.*?)\\)/g, '$1') // remove links, keep url only\n .replace(/!\\[.*?\\]\\((.*?)\\)/g, '') // remove images\n .replace(/#+\\s?/g, '') // Remove heading markers (#, ##, ###)\n .replace(/>\\s?/g, '') // remove quotes\n .replace(/(\\*|-|\\d+\\.)\\s+/g, '') // remove lists (bullet points and numbered lists)\n .replace(/`{3}[\\s\\S]*?`{3}/g, '') // remove code blocks\n .replace(/`([^`]+)`/g, '$1') // remove inline code markers\n .replace(/\\n{2,}/g, '\\n'); // removes excessive empty lines\n}\n","import { unref } from 'vue';\n\nimport { ValueChangedAction } from '../actions';\nimport { IField } from '../field.interface';\n\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nexport default class CompareTo<T = any> extends Validator {\n private unregistered = false;\n\n constructor(\n private otherField: IField,\n private isValidComparison: (myValue: T, otherValue: T) => boolean,\n message: RenderContentRef,\n ) {\n let listenerSet = false;\n let nVal: T;\n let oVal: T;\n\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n nVal = newValue;\n oVal = oldValue;\n if (!listenerSet) {\n listenerSet = true;\n this.otherField.registerAction(new ValueChangedAction((oField, supr, oNewValue, oOldValue) => {\n supr(oField, oNewValue, oOldValue);\n // somewhat hackish: we just need to execute this one validator, not anything before, not anything after...\n if (!this.unregistered) this.execute(field, () => null, nVal, oVal);\n }));\n }\n if (!this.isValidComparison(unref(newValue), unref(this.otherField.value))) {\n return [\n new ValidationErrorRenderContent(\n this.replacePlaceholders(message, { newValue, oldValue, field, otherField: this.otherField }),\n ),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n\n unregister() {\n this.unregistered = true;\n }\n}\n","import { truncate } from 'lodash-es';\nimport { unref } from 'vue';\n\nimport { IField } from '../field.interface';\n\nimport { buildErrorMessage } from './error-message-builder';\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nexport default class InAllowedValues<T = any> extends Validator {\n constructor(allowedValues: T[], message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Must be one of [**{allowedAsText}**]');\n let allowedAsText = allowedValues.join(', ');\n if (allowedAsText.length > 60) {\n allowedAsText = truncate(allowedAsText, {\n length: 40,\n separator: ', ',\n omission: `... (${allowedValues.length} items total)`,\n });\n }\n\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (!allowedValues.includes(unref(newValue))) {\n return [\n new ValidationErrorRenderContent(\n this.replacePlaceholders(msg, { newValue, oldValue, field, allowedValues, allowedAsText }),\n ),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n","import { isArray, isObject, isString } from 'lodash-es';\nimport { unref } from 'vue';\n\nimport { IField } from '../field.interface';\n\nimport { buildErrorMessage } from './error-message-builder';\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nfunction toLength(a: any): number {\n if (a == null) return 0;\n if (isArray(a)) return a.length;\n if (isString(a)) return a.length;\n if (isObject(a) && Object.getPrototypeOf(a) === Object.prototype) return Object.keys(a).length;\n return String(a).length;\n}\n\nexport default class Required<T = any> extends Validator {\n constructor(message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Please enter a value');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (toLength(unref(newValue)) === 0) {\n return [new ValidationErrorRenderContent(\n this.replacePlaceholders(msg, { newValue, oldValue, field }),\n )];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport { IField } from '../field.interface';\n\nimport { buildErrorMessage } from './error-message-builder';\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nexport class MinValue<T = any> extends Validator {\n constructor(minValue: T, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Value must be larger or equal to **{minValue}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (newValue < minValue || newValue === undefined) {\n return [\n new ValidationErrorRenderContent(this.replacePlaceholders(msg, { newValue, oldValue, field, minValue })),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n\nexport class MaxValue<T = any> extends Validator {\n constructor(maxValue: T, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Value must be less than or equal to **{maxValue}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (newValue > maxValue || newValue === undefined) {\n return [\n new ValidationErrorRenderContent(this.replacePlaceholders(msg, { newValue, oldValue, field, maxValue })),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n\nexport class ValueInRange<T = any> extends Validator {\n constructor(minValue: T, maxValue: T, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Value must be between **{minValue}** and **{maxValue}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (newValue < minValue || newValue > maxValue || newValue === undefined) {\n return [\n new ValidationErrorRenderContent(\n this.replacePlaceholders(msg, { newValue, oldValue, field, minValue, maxValue }),\n ),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport { isArray, isObject, isString } from 'lodash-es';\n\nimport { IField } from '../field.interface';\n\nimport { buildErrorMessage } from './error-message-builder';\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nfunction toLength(a: any): number {\n if (a == null) return 0;\n if (isArray(a)) return a.length;\n if (isString(a)) return a.length;\n if (isObject(a) && Object.getPrototypeOf(a) === Object.prototype) return Object.keys(a).length;\n return String(a).length;\n}\n\nexport class MinLength<T = any> extends Validator {\n constructor(minLength: number, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Length must be larger or equal to **{minLength}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (toLength(newValue) < minLength) {\n return [\n new ValidationErrorRenderContent(this.replacePlaceholders(msg, { newValue, oldValue, field, minLength })),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n\nexport class MaxLength<T = any> extends Validator {\n constructor(maxLength: number, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Length must be less than or equal to **{maxLength}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (toLength(newValue) > maxLength) {\n return [\n new ValidationErrorRenderContent(this.replacePlaceholders(msg, { newValue, oldValue, field, maxLength })),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n\nexport class LengthInRange<T = any> extends Validator {\n constructor(minLength: number, maxLength: number, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Length must be between **{minLength}** and **{maxLength}**');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n const len = toLength(newValue);\n if (len < minLength || len > maxLength) {\n return [\n new ValidationErrorRenderContent(\n this.replacePlaceholders(msg, { newValue, oldValue, field, minLength, maxLength }),\n ),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n","import { unref } from 'vue';\n\nimport { IField } from '../field.interface';\n\nimport { buildErrorMessage } from './error-message-builder';\nimport { RenderContentRef, ValidationErrorRenderContent } from './validation-error';\nimport { ValidationFunction, Validator } from './validator';\n\nexport default class Pattern<T = any> extends Validator {\n constructor(pattern: RegExp, message?: RenderContentRef) {\n const msg = message || buildErrorMessage('Value must match pattern \"**{pattern}**\"');\n const validationFn: ValidationFunction = (newValue: T, oldValue: T, field: IField) => {\n if (!pattern.test(String(unref(newValue)))) {\n return [\n new ValidationErrorRenderContent(this.replacePlaceholders(msg, { newValue, oldValue, field, pattern })),\n ];\n }\n return null;\n };\n\n super(validationFn);\n }\n}\n"],"names":["DisplayMode","defaultDisplayMode","fromString","mode","fromAny","input","isDefined","check","DisplayMode$1","FieldActionBase","executorFn","__publicField","field","supr","params","AbortEventHandlingException","ValueChangedActionClassIdentifier","ValueChangedAction","newValue","oldValue","MdString","isCustomModalContentComponentDef","msg","uMsg","unref","ValidationError","ValidationErrorText","text","ValidationErrorRenderContent","computed","ValidatorClassIdentifier","Validator","validationFn","errors","processErrors","err","e","i","error","idx","_a","isEqual","replace","ret","key","ActionsMap","action","actionType","existingExecute","ex","ActionClass","identifier","execute","newActions","ConditionalStatementActionClassIdentifier","ConditionalStatementAction","statement","actionExecutor","currentResult","fld","ConditionalVisibilityAction","ConditionalEnabledAction","ConditionalValueAction","trueValue","Operator","operator","op","isLogicOperator","Operator$1","EnabledChangingActionClassIdentifier","EnabledChangingAction","EnabledChangedActionClassIdentifier","EnabledChangedAction","ValidChangedActionClassIdentifier","ValidChangedAction","VisibilityChangingActionClassIdentifier","VisibilityChangingAction","VisibilityChangedActionClassIdentifier","VisibilityChangedAction","FieldBase","alteredValue","isBoolean","oldValid","act","actionClass","XOR","value1","value2","Statement","operand1","operand2","_b","_d","_c","isString","fields","processOperand","ExecuteActionClassIdentifier","ExecuteAction","ListItemAddedActionClassIdentifier","ListItemAddedAction","item","index","ListItemRemovedActionClassIdentifier","ListItemRemovedAction","isValEmpty","val","defaultIfTrue","Action","paramValue","originalValue","validators","actions","otherParams","__objRest","a","orgVal","res","reactive","overrides","__spreadProps","__spreadValues","Field","EmptyField","Group","name","fieldName","flds","isFieldAll","data","value","fieldValue","isEmpty","newFields","List","itemTemplate","removedItem","itm","config","getConfig","setConfig","newConfig","config$1","app","options","buildErrorMessage","mdErrorString","CompareTo","otherField","isValidComparison","message","listenerSet","nVal","oVal","oField","oNewValue","oOldValue","InAllowedValues","allowedValues","allowedAsText","truncate","toLength","isArray","isObject","Required","MinValue","minValue","MaxValue","maxValue","ValueInRange","MinLength","minLength","MaxLength","maxLength","LengthInRange","len","Pattern","pattern"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,18 +4,18 @@ import { Ref } from 'vue';
4
4
  export declare class AbortEventHandlingException extends Error {
5
5
  }
6
6
 
7
- export declare class Action extends FieldBase {
7
+ export declare class Action<T extends ActionValue = ActionValue> extends FieldBase<T> {
8
8
  private _value;
9
9
  protected constructor();
10
- private init;
11
- static create(params?: Partial<IField<ActionValue>>): Action;
12
- get value(): ActionValue;
13
- set value(newValue: ActionValue);
10
+ protected init(params?: Partial<IFieldConstructorParams<T>>): void;
11
+ static create<T extends ActionValue = ActionValue>(params?: Partial<IField<T>>): Action<T>;
12
+ get value(): T;
13
+ set value(newValue: T);
14
14
  get icon(): string | undefined;
15
15
  set icon(newValue: string | undefined);
16
16
  get label(): string | undefined;
17
17
  set label(newValue: string | undefined);
18
- clone(overrides?: Partial<IField>): Action;
18
+ clone(overrides?: Partial<IField<T>>): Action<T>;
19
19
  execute(params: any): void;
20
20
  }
21
21
 
@@ -119,7 +119,7 @@ export declare class ExecuteAction extends FieldActionBase {
119
119
  export declare class Field<T = any> extends FieldBase {
120
120
  private _value;
121
121
  protected constructor();
122
- private init;
122
+ protected init(params?: Partial<IFieldConstructorParams<T>>): void;
123
123
  /**
124
124
  * Creates a new reactive Field instance.
125
125
  * @param params Initial field parameters
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dynamicforms/vue-forms",
3
3
  "private": false,
4
- "version": "0.3.0",
4
+ "version": "0.3.1",
5
5
  "type": "module",
6
6
  "description": "Data entry forms for vue - logic (no controls here)",
7
7
  "author": "Jure Erznožnik",