@websolutespa/bom-mixer-forms 2.0.1-next.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,138 +1,126 @@
1
- # @websolutespa/bom-mixer-forms
2
-
3
- ## 2.0.1-next.2
4
-
5
- ### Patch Changes
6
-
7
- - Updating: dependencies and build step
8
-
9
- ## 2.0.1-next.0
10
-
11
- ### Major Changes
12
-
13
- - e74b305: Release: Payload 3.7.0
14
-
15
- ### Patch Changes
16
-
17
- - Updated dependencies [e74b305]
18
- - @websolutespa/bom-mixer-hooks@2.0.1-next.0
19
- - @websolutespa/bom-core@2.0.1-next.0
20
-
21
- ## 1.9.4
22
-
23
- ### Patch Changes
24
-
25
- - Added: propagation to updateStateAndChange\_
26
-
27
- ## 1.9.3
28
-
29
- ### Patch Changes
30
-
31
- - Modified: FormEmitter, FormAbstract, FormAbstractCollection
32
-
33
- ## 1.9.2
34
-
35
- ### Patch Changes
36
-
37
- - Added: emptyErrors
38
-
39
- ## 1.9.1
40
-
41
- ### Patch Changes
42
-
43
- - Added: FormState, FormEmitter
44
- - Modified: FormAbstract, FormAbstractCollection, useControl, useForm
45
-
46
- ## 1.9.0
47
-
48
- ### Minor Changes
49
-
50
- - Added: useFormSchema
51
-
52
- ## 1.8.1
53
-
54
- ### Patch Changes
55
-
56
- - 15ad595: Added: Validators parametric error key
57
-
58
- ## 1.8.0
59
-
60
- ### Patch Changes
61
-
62
- - Updated dependencies [f8a1d97]
63
- - @websolutespa/bom-core@1.8.0
64
- - @websolutespa/bom-mixer-hooks@1.8.0
65
-
66
- ## 0.3.5
67
-
68
- ### Patch Changes
69
-
70
- - Added: customData option
71
-
72
- ## 0.3.4
73
-
74
- ### Patch Changes
75
-
76
- - Removed: log
77
-
78
- ## 0.3.3
79
-
80
- ### Patch Changes
81
-
82
- - Modified: validators, useFormBuilder
83
- - Updated dependencies
84
- - @websolutespa/bom-core@1.7.9
85
-
86
- ## 0.3.2
87
-
88
- ### Patch Changes
89
-
90
- - Fixing: downgrading eslint to v8.56.0
91
- - Updated dependencies
92
- - @websolutespa/bom-mixer-hooks@1.7.4
93
- - @websolutespa/bom-core@1.7.8
94
-
95
- ## 0.3.1
96
-
97
- ### Patch Changes
98
-
99
- - Updating: dependencies
100
- - Updated dependencies
101
- - @websolutespa/bom-mixer-hooks@1.7.2
102
- - @websolutespa/bom-core@1.7.3
103
-
104
- ## 0.3.0
105
-
106
- ### Minor Changes
107
-
108
- - Updating: next 13.
109
-
110
- ## 0.2.2
111
-
112
- ### Patch Changes
113
-
114
- - Removed: unnecessary method deepCopy.
115
-
116
- ## 0.2.1
117
-
118
- ### Patch Changes
119
-
120
- - Added: source files.
121
-
122
- ## 0.2.0
123
-
124
- ### Minor Changes
125
-
126
- - Added: splat routes.
127
-
128
- ## 0.1.0
129
-
130
- ### Minor Changes
131
-
132
- - Added: @websolutespa/bom-core.
133
-
134
- ## 0.0.2
135
-
136
- ### Patch Changes
137
-
138
- - Added: first release.
1
+ # @websolutespa/bom-mixer-forms
2
+
3
+ ## 3.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - Release: Bom 3.0
8
+
9
+ ## 1.9.4
10
+
11
+ ### Patch Changes
12
+
13
+ - Added: propagation to updateStateAndChange\_
14
+
15
+ ## 1.9.3
16
+
17
+ ### Patch Changes
18
+
19
+ - Modified: FormEmitter, FormAbstract, FormAbstractCollection
20
+
21
+ ## 1.9.2
22
+
23
+ ### Patch Changes
24
+
25
+ - Added: emptyErrors
26
+
27
+ ## 1.9.1
28
+
29
+ ### Patch Changes
30
+
31
+ - Added: FormState, FormEmitter
32
+ - Modified: FormAbstract, FormAbstractCollection, useControl, useForm
33
+
34
+ ## 1.9.0
35
+
36
+ ### Minor Changes
37
+
38
+ - Added: useFormSchema
39
+
40
+ ## 1.8.1
41
+
42
+ ### Patch Changes
43
+
44
+ - 15ad595: Added: Validators parametric error key
45
+
46
+ ## 1.8.0
47
+
48
+ ### Patch Changes
49
+
50
+ - Updated dependencies [f8a1d97]
51
+ - @websolutespa/bom-core@1.8.0
52
+ - @websolutespa/bom-mixer-hooks@1.8.0
53
+
54
+ ## 0.3.5
55
+
56
+ ### Patch Changes
57
+
58
+ - Added: customData option
59
+
60
+ ## 0.3.4
61
+
62
+ ### Patch Changes
63
+
64
+ - Removed: log
65
+
66
+ ## 0.3.3
67
+
68
+ ### Patch Changes
69
+
70
+ - Modified: validators, useFormBuilder
71
+ - Updated dependencies
72
+ - @websolutespa/bom-core@1.7.9
73
+
74
+ ## 0.3.2
75
+
76
+ ### Patch Changes
77
+
78
+ - Fixing: downgrading eslint to v8.56.0
79
+ - Updated dependencies
80
+ - @websolutespa/bom-mixer-hooks@1.7.4
81
+ - @websolutespa/bom-core@1.7.8
82
+
83
+ ## 0.3.1
84
+
85
+ ### Patch Changes
86
+
87
+ - Updating: dependencies
88
+ - Updated dependencies
89
+ - @websolutespa/bom-mixer-hooks@1.7.2
90
+ - @websolutespa/bom-core@1.7.3
91
+
92
+ ## 0.3.0
93
+
94
+ ### Minor Changes
95
+
96
+ - Updating: next 13.
97
+
98
+ ## 0.2.2
99
+
100
+ ### Patch Changes
101
+
102
+ - Removed: unnecessary method deepCopy.
103
+
104
+ ## 0.2.1
105
+
106
+ ### Patch Changes
107
+
108
+ - Added: source files.
109
+
110
+ ## 0.2.0
111
+
112
+ ### Minor Changes
113
+
114
+ - Added: splat routes.
115
+
116
+ ## 0.1.0
117
+
118
+ ### Minor Changes
119
+
120
+ - Added: @websolutespa/bom-core.
121
+
122
+ ## 0.0.2
123
+
124
+ ### Patch Changes
125
+
126
+ - Added: first release.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/forms/event-emitter.ts","../src/forms/form-state.ts","../src/forms/form-abstract-collection.ts","../src/forms/form-array.ts","../src/forms/form-control.ts","../src/forms/form-group.ts","../src/forms/types.ts","../src/forms/form-emitter.ts","../src/forms/form-abstract.ts","../src/forms/utils.ts","../src/forms/validators/email.validator.ts","../src/forms/validators/match.validator.ts","../src/forms/validators/max-length.validator.ts","../src/forms/validators/max.validator.ts","../src/forms/validators/min-length.validator.ts","../src/forms/validators/min.validator.ts","../src/forms/validators/null.validator.ts","../src/forms/validators/pattern.validator.ts","../src/forms/validators/required-if.validator.ts","../src/forms/validators/required-true.validator.ts","../src/forms/validators/required.validator.ts","../src/hooks/useControl/useControl.ts","../src/hooks/useForm/useForm.ts","../src/hooks/useFormBuilder/useFormBuilder.ts","../src/hooks/useFormSchema/useFormSchema.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/forms/event-emitter.ts","../src/forms/form-state.ts","../src/forms/form-abstract-collection.ts","../src/forms/form-array.ts","../src/forms/form-control.ts","../src/forms/form-group.ts","../src/forms/types.ts","../src/forms/form-emitter.ts","../src/forms/form-abstract.ts","../src/forms/utils.ts","../src/forms/validators/email.validator.ts","../src/forms/validators/match.validator.ts","../src/forms/validators/max-length.validator.ts","../src/forms/validators/max.validator.ts","../src/forms/validators/min-length.validator.ts","../src/forms/validators/min.validator.ts","../src/forms/validators/null.validator.ts","../src/forms/validators/pattern.validator.ts","../src/forms/validators/required-if.validator.ts","../src/forms/validators/required-true.validator.ts","../src/forms/validators/required.validator.ts","../src/hooks/useControl/useControl.ts","../src/hooks/useForm/useForm.ts","../src/hooks/useFormBuilder/useFormBuilder.ts","../src/hooks/useFormSchema/useFormSchema.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["event: string","listener: (...args: any[]) => any","value: FormValue","errors: FormErrors","state: FormState","value: IOption | IOption[] | IEquatable | IEquatable[] | null","value: IOption | IEquatable | null","value","values: IOption[] | IEquatable[]","value: string | string[] | undefined","options?: IOption[]","optionsExtra?: { asEquatable: boolean }","value: string","value: string | undefined","values: string[]","value: T | null","validators?: (FormValidator | FormValidator[])","label: string | undefined","placeholder: string | undefined","options: IOption[] | undefined","optionsExtra: { asEquatable: boolean } | undefined","customData: FormCustomData | undefined","invalid: boolean","disabled: boolean","hidden: boolean","readonly: boolean","dirty: boolean","touched: boolean","submitted: boolean","errors: ValidationError","emptyErrors: ValidationError","value: T | null","validators?: (FormValidator | FormValidator[])","options?: FormOptions","root?: FormCollection","key: keyof FormFlags","activator?: FormActivator","errors: ValidationError","emptyErrors: ValidationError","p: { results: (ValidationError | null)[], promises: Promise<ValidationError | null>[] }","c: (ValidationError | null) | Promise<ValidationError | null>","error: ValidationError | null","p: { emptyResults: (ValidationError | null)[], emptyPromises: Promise<ValidationError | null>[] }","emptyError: ValidationError | null","propagate: boolean","value: FormValue","parent: FormCollection | FormAbstract","value: FormValue","validators?: FormValidator | FormValidator[]","initialOptions?: FormOptions","controls: T","validators?: (FormValidator | FormValidator[])","control: FormAbstract","key: keyof T","controlOrValue: FormAbstract | FormValue","key: any","options?: FormOptions","key: keyof FormFlags","activator?: FormActivator","root?: FormCollection","result: boolean","value: any","key: string","c: FormAbstract","k: keyof T","callback: Function","result: any","key: (keyof FormAbstract)","disabled: boolean","readonly: boolean","hidden: boolean","submitted: boolean","touched: boolean","result: U","value: U","result: ValidationError","controls: FormArrayControls","validators?: FormValidator | FormValidator[]","initialOptions?: FormOptions","callback: (control: FormAbstract, key: number) => any","control: FormAbstract","key: number","value: T","controls: FormGroupControls","validators?: FormValidator | FormValidator[]","initialOptions?: FormOptions","key: string","getOtherValue: (value: FormValue, rootValue: FormValue, control?: FormAbstract, root?: FormAbstract) => any","key: string","maxlength: number","key: string","max: number","key: string","minlength: number","key: string","min: number","key: string","pattern: string | RegExp","key: string","condition: (value: FormValue, rootValue: FormValue, control?: FormAbstract, root?: FormAbstract) => boolean","key: string","key: string","key: string","control: FormAbstract","value: T | null","value: T","factory: () => U","deps: DependencyList","collection: U","value: any","value: T","schema: IFormBuilderSchema","deps: DependencyList","collection: U","mapArray_","mapGroup_","value: Partial<T>","value: T","children: IFormBuilderGroupSchema","schema?: IFormBuilderControlSchema","controls: IFormBuilderGroupValues","mapSchema_","children: IFormBuilderControlSchema[]","mapControl_","schema: IFormBuilderControlSchema","schema: IFormBuilderSchema","deps: DependencyList","form: U","value: Partial<T>","children: IFormBuilderGroupSchema","schema?: IFormBuilderControlSchema","controls: IFormBuilderGroupValues","children: IFormBuilderControlSchema[]","schema: IFormBuilderControlSchema"],"sources":["../src/forms/event-emitter.ts","../src/forms/form-state.ts","../src/forms/utils.ts","../src/forms/form-emitter.ts","../src/forms/form-abstract.ts","../src/forms/form-control.ts","../src/forms/form-abstract-collection.ts","../src/forms/form-array.ts","../src/forms/form-group.ts","../src/forms/validators/email.validator.ts","../src/forms/validators/match.validator.ts","../src/forms/validators/max-length.validator.ts","../src/forms/validators/max.validator.ts","../src/forms/validators/min-length.validator.ts","../src/forms/validators/min.validator.ts","../src/forms/validators/null.validator.ts","../src/forms/validators/pattern.validator.ts","../src/forms/validators/required-if.validator.ts","../src/forms/validators/required-true.validator.ts","../src/forms/validators/required.validator.ts","../src/hooks/useControl/useControl.ts","../src/hooks/useForm/useForm.ts","../src/hooks/useFormBuilder/useFormBuilder.ts","../src/hooks/useFormSchema/useFormSchema.ts"],"sourcesContent":["\r\nexport class EventEmitter {\r\n protected events_: { [key: string]: ((...args: any[]) => any)[] } = {};\r\n\r\n on(event: string, listener: (...args: any[]) => any) {\r\n if (typeof this.events_[event] !== 'object') {\r\n this.events_[event] = [];\r\n }\r\n this.events_[event].push(listener);\r\n }\r\n\r\n off(event: string, listener: (...args: any[]) => any) {\r\n if (typeof this.events_[event] === 'object') {\r\n const index = this.events_[event].indexOf(listener);\r\n if (index > -1) {\r\n this.events_[event].splice(index, 1);\r\n }\r\n } else {\r\n throw new Error(`Can't remove a listener. Event \"${event}\" doesn't exits.`);\r\n }\r\n }\r\n\r\n emit(event: string, ...args: any[]) {\r\n if (typeof this.events_[event] === 'object') {\r\n this.events_[event].forEach((listener) => listener.apply(this, args));\r\n }\r\n }\r\n\r\n once(event: string, listener: (...args: any[]) => any) {\r\n const onceListener = (...args: any[]) => {\r\n this.off(event, onceListener);\r\n listener.apply(this, args);\r\n };\r\n this.on(event, onceListener);\r\n }\r\n}\r\n","\r\nexport class FormState {\r\n public invalid: boolean = false;\r\n public disabled: boolean = false;\r\n public hidden: boolean = false;\r\n public readonly: boolean = false;\r\n public dirty: boolean = false;\r\n public touched: boolean = false;\r\n public submitted: boolean = false;\r\n\r\n get valid() { return !this.invalid; }\r\n get enabled() { return !this.disabled; }\r\n get visible() { return !this.hidden; }\r\n get writeable() { return !this.readonly; }\r\n get pristine() { return !this.dirty; }\r\n get untouched() { return !this.touched; }\r\n get unsubmitted() { return !this.submitted; }\r\n}\r\n","import { IEquatable, IOption } from '@websolutespa/bom-core';\r\nimport { FormState } from './form-state';\r\nimport { FormDerivedFlags, FormErrors, FormFlags, FormValidationError, FormValue } from './types';\r\n\r\nexport function validValue(value: FormValue) {\r\n return value !== undefined && value !== '' ? value : null;\r\n}\r\n\r\nexport function mapErrors_(errors: FormErrors): FormValidationError[] {\r\n return Object.keys(errors).map(key => ({ key, value: errors[key] }));\r\n}\r\n\r\nexport function mapState_(state: FormState): FormFlags & FormDerivedFlags {\r\n return {\r\n ...state,\r\n valid: !state.invalid,\r\n enabled: !state.disabled,\r\n visible: !state.hidden,\r\n writeable: !state.readonly,\r\n pristine: !state.dirty,\r\n untouched: !state.touched,\r\n unsubmitted: !state.submitted,\r\n };\r\n}\r\n\r\nexport function valueToString(value: IOption | IOption[] | IEquatable | IEquatable[] | null): string | string[] | undefined {\r\n function mapValue(value: IOption | IEquatable | null): string | undefined {\r\n const stringValue = value != null ? (\r\n typeof value === 'object' ? value.id.toString() : value.toString()\r\n ) : undefined;\r\n return stringValue;\r\n }\r\n function mapValues(values: IOption[] | IEquatable[]): string[] | undefined {\r\n const strings = values.map(x => mapValue(x)).filter(x => x !== undefined) as string[];\r\n return strings.length ? strings : undefined;\r\n }\r\n return Array.isArray(value) ? mapValues(value) : mapValue(value);\r\n}\r\n\r\nexport function stringToValue(value: string | string[] | undefined, options?: IOption[], optionsExtra?: { asEquatable: boolean }): IOption | IOption[] | IEquatable | IEquatable[] | null {\r\n function findValue(value: string): IOption | IEquatable | null {\r\n const option = options?.find(x => x.id.toString() === value);\r\n return option ? (\r\n optionsExtra?.asEquatable ? option.id : option\r\n ) : null;\r\n }\r\n function mapValue(value: string | undefined): IOption | IEquatable | null {\r\n return value !== undefined ? findValue(value) : null;\r\n }\r\n function mapValues(values: string[]): IOption[] | IEquatable[] | null {\r\n const mappedValues = values.map(x => mapValue(x)).filter(x => x !== null) as (IOption[] | IEquatable[]);\r\n return mappedValues.length ? mappedValues : null;\r\n }\r\n return Array.isArray(value) ? mapValues(value) : mapValue(value);\r\n}\r\n","import { IOption } from '@websolutespa/bom-core';\r\nimport { EventEmitter } from './event-emitter';\r\nimport { FormState } from './form-state';\r\nimport { FormCustomData, FormValidator, FormValue, ValidationError } from './types';\r\nimport { validValue } from './utils';\r\n\r\nexport class FormEmitter<T = FormValue> extends EventEmitter {\r\n\r\n protected markAsDirty_: boolean = false;\r\n get isDirty() {\r\n return this.markAsDirty_;\r\n }\r\n\r\n // props\r\n name?: string | number;\r\n protected label_: string | undefined;\r\n get label(): string {\r\n return this.label_ || this.name?.toString() || '';\r\n }\r\n protected placeholder_: string | undefined;\r\n get placeholder(): string {\r\n return this.placeholder_ || this.label || '';\r\n }\r\n protected options_: IOption[] | undefined;\r\n get options() {\r\n return this.options_;\r\n }\r\n protected optionsExtra_: { asEquatable: boolean } | undefined;\r\n get optionsExtra() {\r\n return this.optionsExtra_;\r\n }\r\n protected customData_: FormCustomData | undefined;\r\n get customData() {\r\n return this.customData_;\r\n }\r\n\r\n // value\r\n protected value_: T | null;\r\n get value() {\r\n return this.value_;\r\n }\r\n\r\n // state\r\n protected state_: FormState;\r\n get state() { return this.state_; }\r\n // flags\r\n get invalid() { return this.state_.invalid; }\r\n get disabled() { return this.state_.disabled; }\r\n get hidden() { return this.state_.hidden; }\r\n get readonly() { return this.state_.readonly; }\r\n get dirty() { return this.state_.dirty; }\r\n get touched() { return this.state_.touched; }\r\n get submitted() { return this.state_.submitted; }\r\n // derived flags\r\n get valid() { return this.state_.valid; }\r\n get enabled() { return this.state_.enabled; }\r\n get visible() { return this.state_.visible; }\r\n get writeable() { return this.state_.writeable; }\r\n get pristine() { return this.state_.pristine; }\r\n get untouched() { return this.state_.untouched; }\r\n get unsubmitted() { return this.state_.unsubmitted; }\r\n get required() { return Boolean(this.emptyErrors_.required); }\r\n\r\n // errors\r\n protected errors_: ValidationError;\r\n get errors() {\r\n return this.errors_;\r\n }\r\n\r\n // emptyErrors\r\n protected emptyErrors_: ValidationError;\r\n get emptyErrors() {\r\n return this.emptyErrors_;\r\n }\r\n\r\n // validators\r\n protected validators_: FormValidator[];\r\n get validators() {\r\n return this.validators_;\r\n }\r\n\r\n constructor(value: T | null, validators?: (FormValidator | FormValidator[])) {\r\n super();\r\n // value\r\n this.value_ = validValue(value);\r\n this.state_ = new FormState();\r\n this.errors_ = {};\r\n this.emptyErrors_ = {};\r\n this.validators_ = validators ? (Array.isArray(validators) ? validators : [validators]) : [];\r\n }\r\n\r\n /**\r\n * SETTERS\r\n */\r\n\r\n // props\r\n set label(label: string | undefined) {\r\n if (this.label_ !== label) {\r\n this.label_ = label;\r\n this.markAsDirty_ = true;\r\n }\r\n }\r\n set placeholder(placeholder: string | undefined) {\r\n if (this.placeholder_ !== placeholder) {\r\n this.placeholder_ = placeholder;\r\n this.markAsDirty_ = true;\r\n }\r\n }\r\n set options(options: IOption[] | undefined) {\r\n if (this.options_ !== options) {\r\n this.options_ = options;\r\n const value = this.optionsExtra?.asEquatable ?\r\n this.value :\r\n String((this.value as IOption)?.id);\r\n if (!options?.some(x => String(x.id) === value)) {\r\n this.value_ = null;\r\n this.state_.dirty = false;\r\n this.state_.touched = false;\r\n this.state_.submitted = false;\r\n }\r\n this.markAsDirty_ = true;\r\n }\r\n }\r\n set optionsExtra(optionsExtra: { asEquatable: boolean } | undefined) {\r\n if (this.optionsExtra_ !== optionsExtra) {\r\n this.optionsExtra_ = optionsExtra;\r\n this.markAsDirty_ = true;\r\n }\r\n }\r\n set customData(customData: FormCustomData | undefined) {\r\n if (this.customData_ !== customData) {\r\n this.customData_ = customData;\r\n this.markAsDirty_ = true;\r\n }\r\n }\r\n\r\n // value\r\n set value(value) {\r\n value = validValue(value);\r\n // console.log('FormEmitter.setValue', this.value_, value);\r\n if (this.value_ !== value) {\r\n this.value_ = value;\r\n this.state_.dirty = value != null;\r\n this.state_.submitted = false;\r\n this.markAsDirty_ = true;\r\n this.revalidate_();\r\n }\r\n }\r\n\r\n // state\r\n set invalid(invalid: boolean) {\r\n if (this.state_.invalid !== invalid) {\r\n this.state_.invalid = invalid;\r\n this.markAsDirty_ = true;\r\n // this.revalidate_(); ???\r\n }\r\n }\r\n set disabled(disabled: boolean) {\r\n if (this.state_.disabled !== disabled) {\r\n this.state_.disabled = disabled;\r\n this.markAsDirty_ = true;\r\n // this.revalidate_();\r\n }\r\n }\r\n set hidden(hidden: boolean) {\r\n if (this.state_.hidden !== hidden) {\r\n this.state_.hidden = hidden;\r\n this.markAsDirty_ = true;\r\n // this.revalidate_();\r\n }\r\n }\r\n set readonly(readonly: boolean) {\r\n if (this.state_.readonly !== readonly) {\r\n this.state_.readonly = readonly;\r\n this.markAsDirty_ = true;\r\n // this.revalidate_();\r\n }\r\n }\r\n set dirty(dirty: boolean) {\r\n if (this.state_.dirty !== dirty) {\r\n this.state_.dirty = dirty;\r\n this.markAsDirty_ = true;\r\n this.updateStateAndChange_();\r\n }\r\n }\r\n set touched(touched: boolean) {\r\n // console.log('FormEmitter.setTouched', touched, this.state_.touched);\r\n if (this.state_.touched !== touched) {\r\n this.state_.touched = touched;\r\n this.markAsDirty_ = true;\r\n this.updateStateAndChange_();\r\n }\r\n }\r\n set submitted(submitted: boolean) {\r\n if (this.state_.submitted !== submitted) {\r\n this.state_.submitted = submitted;\r\n this.markAsDirty_ = true;\r\n this.updateStateAndChange_();\r\n }\r\n }\r\n\r\n // errors\r\n set errors(errors: ValidationError) {\r\n if (!this.markAsDirty_) {\r\n const previous = Object.entries(this.errors_);\r\n const current = Object.entries(errors);\r\n const differs = previous.length !== current.length ||\r\n previous.reduce((p, [k, v], i) => {\r\n const c = current[i]!;\r\n return p || (c[0] !== k || c[1] !== v);\r\n }, false);\r\n this.markAsDirty_ = differs;\r\n }\r\n this.errors_ = errors;\r\n }\r\n\r\n // emptyErrors\r\n set emptyErrors(emptyErrors: ValidationError) {\r\n if (!this.markAsDirty_) {\r\n const previous = Object.entries(this.emptyErrors_);\r\n const current = Object.entries(emptyErrors);\r\n const differs = previous.length !== current.length ||\r\n previous.reduce((p, [k, v], i) => {\r\n const c = current[i]!;\r\n return p || (c[0] !== k || c[1] !== v);\r\n }, false);\r\n this.markAsDirty_ = differs;\r\n }\r\n this.emptyErrors_ = emptyErrors;\r\n }\r\n\r\n // validators\r\n set validators(validators) {\r\n if (this.validators_ !== validators) {\r\n this.validators_ = validators;\r\n this.revalidate_();\r\n }\r\n }\r\n\r\n protected revalidate_(): void {\r\n // console.log('FormEmitter.revalidate_', this.name);\r\n }\r\n\r\n protected async updateStateAndChange_(): Promise<boolean> {\r\n // console.log('FormEmitter.updateStateAndChange_', this.name);\r\n return false;\r\n }\r\n\r\n protected emitChange_(): boolean {\r\n // console.log('FormEmitter.emitChange_', this.name, this.markAsDirty_);\r\n if (this.markAsDirty_) {\r\n this.markAsDirty_ = false;\r\n this.emit('change', this.value);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","import { isPromise } from '@websolutespa/bom-core';\r\nimport { FormEmitter } from './form-emitter';\r\nimport { ControlType, FormActivator, FormCollection, FormFlags, FormOptions, FormValidator, FormValue, ValidationError } from './types';\r\n\r\nexport class FormAbstract<T = FormValue> extends FormEmitter {\r\n\r\n schema: ControlType = 'text';\r\n parent?: FormCollection;\r\n\r\n protected initialOptions_?: FormOptions;\r\n\r\n constructor(value: T | null, validators?: (FormValidator | FormValidator[])) {\r\n super(value, validators);\r\n }\r\n\r\n protected setInitialOptions(options?: FormOptions) {\r\n this.initialOptions_ = options;\r\n if (options) {\r\n if (options.schema) {\r\n this.schema = options.schema;\r\n }\r\n if (options.name) {\r\n this.name = options.name;\r\n }\r\n if (options.label) {\r\n this.label_ = options.label;\r\n }\r\n if (options.placeholder) {\r\n this.placeholder_ = options.placeholder;\r\n }\r\n if (options.options) {\r\n this.options_ = options.options;\r\n }\r\n if (options.optionsExtra) {\r\n this.optionsExtra_ = options.optionsExtra;\r\n }\r\n if (options.customData) {\r\n this.customData_ = options.customData;\r\n }\r\n /*\r\n // !!! todo\r\n if (options.required === true) {\r\n this.state_.required = true;\r\n }\r\n */\r\n if (options.disabled === true || typeof options.disabled === 'function') {\r\n this.state_.disabled = true;\r\n }\r\n if (options.readonly === true || typeof options.readonly === 'function') {\r\n this.state_.readonly = true;\r\n }\r\n if (options.hidden === true || typeof options.hidden === 'function') {\r\n this.state_.hidden = true;\r\n }\r\n }\r\n // this.validate_();\r\n // this.updateState_();\r\n }\r\n\r\n protected async checkAsyncState_(root?: FormCollection): Promise<void> {\r\n // console.log('FormAbstract.checkAsyncState_', this.name);\r\n const options = this.initialOptions_;\r\n if (options) {\r\n await this.checkAsyncPropState_('disabled', options.disabled, root);\r\n await this.checkAsyncPropState_('hidden', options.hidden, root);\r\n await this.checkAsyncPropState_('readonly', options.readonly, root);\r\n this.updateStateAndChange_();\r\n }\r\n }\r\n\r\n protected async checkAsyncPropState_(key: keyof FormFlags, activator?: FormActivator, root?: FormCollection): Promise<void> {\r\n if (typeof activator === 'function') {\r\n const valueOrPromise = activator(this.value_, root?.value, this, root);\r\n const value = isPromise(valueOrPromise) ? await valueOrPromise : valueOrPromise;\r\n this[key] = value;\r\n }\r\n }\r\n\r\n protected async revalidate_() {\r\n if (this.parent) {\r\n return await this.parent.revalidate_();\r\n }\r\n // console.log('FormAbstract.revalidate_', this.name);\r\n return await this.validateAndChange_();\r\n }\r\n\r\n async validateAndChange_(root?: FormCollection): Promise<boolean> {\r\n await this.validate_(root);\r\n return this.change_();\r\n // console.log('validateAndChange_', this);\r\n }\r\n\r\n async validate_(root?: FormCollection) {\r\n // console.log('FormAbstract.validate_', this.name);\r\n await this.checkAsyncState_(root);\r\n const errors: ValidationError = {};\r\n const emptyErrors: ValidationError = {};\r\n if (this.validators.length === 0 || this.disabled || this.submitted) {\r\n this.invalid = false;\r\n } else {\r\n const validations = this.validators_.map((x) => x(this.value_, root?.value, this, root)).filter((x) => x);\r\n const { results, promises } = validations.reduce((p: { results: (ValidationError | null)[], promises: Promise<ValidationError | null>[] }, c: (ValidationError | null) | Promise<ValidationError | null>) => {\r\n isPromise(c) ? p.promises.push(c as Promise<ValidationError | null>) : p.results.push(c);\r\n return p;\r\n }, { results: [], promises: [] });\r\n promises.forEach(x => x.then((error: ValidationError | null) => {\r\n // console.log('Validation.async.error', error);\r\n if (error) {\r\n this.invalid = true;\r\n this.errors = Object.assign({}, this.errors_, error);\r\n this.updateState_();\r\n this.change_(true);\r\n }\r\n }).catch(error => {\r\n console.warn('Validation.async.error', error);\r\n }));\r\n this.invalid = results.length > 0;\r\n Object.assign(errors, ...results);\r\n // console.log(`${this.name}.value`, '=', this.value_, '{', ...Object.keys(errors), '}');\r\n // emptyErrors\r\n const emptyValidations = this.validators_.map((x) => x('', root?.value, this, root)).filter((x) => x);\r\n const { emptyResults, emptyPromises } = emptyValidations.reduce((p: { emptyResults: (ValidationError | null)[], emptyPromises: Promise<ValidationError | null>[] }, c: (ValidationError | null) | Promise<ValidationError | null>) => {\r\n isPromise(c) ? p.emptyPromises.push(c as Promise<ValidationError | null>) : p.emptyResults.push(c);\r\n return p;\r\n }, { emptyResults: [], emptyPromises: [] });\r\n emptyPromises.forEach(x => x.then((emptyError: ValidationError | null) => {\r\n // console.log('Validation.async.error', emptyError);\r\n if (emptyError) {\r\n this.emptyErrors = Object.assign({}, this.emptyErrors_, emptyError);\r\n }\r\n }).catch(emptyError => {\r\n console.warn('Validation.async.emptyError', emptyError);\r\n }));\r\n Object.assign(emptyErrors, ...emptyResults);\r\n }\r\n this.errors = errors;\r\n this.emptyErrors = emptyErrors;\r\n this.updateState_();\r\n }\r\n\r\n protected async updateStateAndChange_(): Promise<boolean> {\r\n // console.log('FormAbstract.updateStateAndChange_', this.name);\r\n this.updateState_();\r\n return this.change_(true);\r\n }\r\n\r\n protected updateState_() {\r\n }\r\n\r\n change_(propagate: boolean = false): boolean {\r\n // console.log('FormAbstract.change_', this.name, 'parent', this.parent, 'propagate', propagate);\r\n if (this.emitChange_() && this.parent && propagate) {\r\n this.parent.markAsDirty_ = true;\r\n this.parent.change_.call(this.parent);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n reset() {\r\n this.value_ = null;\r\n this.dirty = false;\r\n this.touched = false;\r\n this.submitted = false;\r\n this.revalidate_();\r\n }\r\n\r\n patch(value: FormValue) {\r\n this.value = value;\r\n }\r\n\r\n addValidators(...validators: FormValidator[]): void {\r\n this.validators.push(...validators);\r\n // console.log('addValidators', this.name, this.validators);\r\n this.revalidate_();\r\n }\r\n\r\n replaceValidators(...validators: FormValidator[]): void {\r\n this.validators = validators;\r\n }\r\n\r\n clearValidators() {\r\n this.validators = [];\r\n }\r\n\r\n protected get path(): (string | number)[] {\r\n if (this.name != null) {\r\n return this.parent ? [...this.parent.path, this.name] : [this.name];\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n protected get root(): FormCollection | FormAbstract {\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n let parent: FormCollection | FormAbstract = this;\r\n while (parent.parent) {\r\n parent = parent.parent;\r\n }\r\n return parent;\r\n }\r\n}\r\n","import { FormAbstract } from './form-abstract';\r\nimport { FormOptions, FormValidator, FormValue } from './types';\r\n\r\nexport class FormControl extends FormAbstract {\r\n constructor(value: FormValue = null, validators?: FormValidator | FormValidator[], initialOptions?: FormOptions) {\r\n super(value, validators);\r\n this.setInitialOptions(initialOptions);\r\n }\r\n}\r\n\r\nexport function formControl(value: FormValue = null, validators?: FormValidator | FormValidator[]) {\r\n return new FormControl(value, validators);\r\n}\r\n","import { isPromise } from '@websolutespa/bom-core';\r\nimport { FormAbstract } from './form-abstract';\r\nimport { FormControl } from './form-control';\r\nimport { FormActivator, FormCollection, FormControls, FormFlags, FormOptions, FormValidator, FormValue, ValidationError } from './types';\r\n\r\nexport class FormAbstractCollection<\r\n U extends Record<string, FormValue> | FormValue[],\r\n T extends FormControls\r\n> extends FormAbstract<U> {\r\n\r\n controls_: T;\r\n\r\n constructor(controls: T, validators?: (FormValidator | FormValidator[])) {\r\n super(null, validators);\r\n this.controls_ = controls;\r\n // console.log(validators, this.validators);\r\n this.forEach_((control: FormAbstract, key: keyof T) => {\r\n this.controls_[key] = this.initControl_(control, key) as unknown as T[keyof T];\r\n });\r\n }\r\n\r\n initControl_(controlOrValue: FormAbstract | FormValue, key: any): FormAbstract {\r\n const control = controlOrValue instanceof FormAbstract ? controlOrValue : new FormControl(controlOrValue);\r\n control.name = key;\r\n control.parent = this;\r\n control.validators.push(...this.validators);\r\n return control;\r\n }\r\n\r\n protected setInitialOptions(options?: FormOptions) {\r\n this.initialOptions_ = options;\r\n if (options) {\r\n if (options.schema) {\r\n this.schema = options.schema;\r\n }\r\n if (options.name) {\r\n this.name = options.name;\r\n }\r\n if (options.label) {\r\n this.label_ = options.label;\r\n }\r\n if (options.placeholder) {\r\n this.placeholder_ = options.placeholder;\r\n }\r\n if (options.options) {\r\n this.options_ = options.options;\r\n }\r\n if (options.optionsExtra) {\r\n this.optionsExtra_ = options.optionsExtra;\r\n }\r\n if (options.customData) {\r\n this.customData_ = options.customData;\r\n }\r\n /*\r\n // todo\r\n if (options.required === true) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.state.required = true;\r\n });\r\n }\r\n */\r\n if (options.disabled === true || typeof options.disabled === 'function') {\r\n this.forEach_((control: FormAbstract) => {\r\n control.state.disabled = true;\r\n });\r\n }\r\n if (options.readonly === true || typeof options.readonly === 'function') {\r\n this.forEach_((control: FormAbstract) => {\r\n control.state.readonly = true;\r\n });\r\n }\r\n if (options.hidden === true || typeof options.hidden === 'function') {\r\n this.forEach_((control: FormAbstract) => {\r\n control.state.hidden = true;\r\n });\r\n }\r\n }\r\n // this.validate_();\r\n this.updateState_();\r\n }\r\n\r\n protected async checkAsyncPropState_(key: keyof FormFlags, activator?: FormActivator, root?: FormCollection): Promise<void> {\r\n if (typeof activator === 'function') {\r\n const valueOrPromise = activator(this.value_, root?.value, this, root);\r\n // console.log('checkAsyncPropState_', result);\r\n const value = isPromise(valueOrPromise) ? await valueOrPromise : valueOrPromise;\r\n this.forEach_((control: FormAbstract) => {\r\n control[key] = value;\r\n this.markAsDirty_ = this.markAsDirty_ || control.isDirty;\r\n });\r\n }\r\n }\r\n\r\n async revalidate_(): Promise<boolean> {\r\n if (this.parent) {\r\n return await this.parent.revalidate_();\r\n }\r\n // console.log('FormAbstractCollection.revalidate_', this.name);\r\n return await this.validateAndChange_(this);\r\n }\r\n\r\n async validate_(root?: FormCollection) {\r\n // console.log('FormAbstractCollection.validate_', this.name);\r\n await this.checkAsyncState_(root);\r\n const validations = this.map_().map(x => x.validate_(root));\r\n const results = await Promise.all(validations);\r\n const markAsDirty_ = this.markAsDirty_ || this.reduce_((result: boolean, control: FormAbstract) => {\r\n return result || control.isDirty;\r\n }, false);\r\n const changes = this.map_().map(x => x.change_());\r\n // console.log('FormAbstractCollection.validate_', markAsDirty_);\r\n this.markAsDirty_ = markAsDirty_;\r\n // this.markAsDirty_ = this.markAsDirty_ || results.reduce((p, c) => p || c, false);\r\n /*\r\n this.forEach_(async (control) => {\r\n await control.validateAndChange_(root);\r\n });\r\n */\r\n this.updateState_();\r\n }\r\n\r\n updateState_() {\r\n let invalid = false;\r\n let disabled = true;\r\n let hidden = true;\r\n let readonly = true;\r\n let dirty = false;\r\n let touched = true;\r\n let submitted = true;\r\n this.forEach_((control: FormAbstract) => {\r\n invalid = invalid || control.invalid;\r\n disabled = disabled && control.disabled;\r\n hidden = hidden && control.hidden;\r\n readonly = readonly && control.readonly;\r\n dirty = dirty || control.dirty;\r\n touched = touched && control.touched;\r\n submitted = submitted && control.submitted;\r\n });\r\n this.state.invalid = invalid;\r\n this.state.disabled = disabled;\r\n this.state.hidden = hidden;\r\n this.state.readonly = readonly;\r\n this.state.dirty = dirty;\r\n this.state.touched = touched;\r\n this.state.submitted = submitted;\r\n // console.log('FormAbstractCollection.updateState_', this.name, this.markAsDirty_);\r\n }\r\n\r\n reset() {\r\n this.forEach_((control: FormAbstract) => control.reset());\r\n }\r\n\r\n patch(value: any) {\r\n if (value) {\r\n this.forEach_((control: FormAbstract, key: string) => {\r\n if (value[key] != null) {\r\n // !!! keep != loose inequality\r\n control.patch(value[key]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n get(key: keyof T): FormAbstract {\r\n const controls = this.controls as { [key: string]: FormAbstract };\r\n return controls[key as string]!;\r\n }\r\n\r\n set(control: FormAbstract, key: keyof T): void {\r\n const controls = this.controls as { [key: string]: FormAbstract };\r\n delete controls[key as string];\r\n controls[key as string] = this.initControl_(control, key);\r\n }\r\n\r\n // !!! needed?\r\n add(control: FormAbstract, key: keyof T): void {\r\n const controls = this.controls as { [key: string]: FormAbstract };\r\n controls[key as string] = this.initControl_(control, key);\r\n }\r\n\r\n remove(control: FormAbstract): void {\r\n this.forEach_((c: FormAbstract, k: keyof T) => {\r\n if (c === control) {\r\n this.removeKey(k);\r\n }\r\n });\r\n }\r\n\r\n /*\r\n remove(control: FormAbstract): void {\r\n const key = Object.keys(this.controls_).find((key: keyof T) => (this.controls_[key] === control ? key : null));\r\n if (key) {\r\n this.removeKey(key);\r\n }\r\n }\r\n */\r\n\r\n removeKey(key: keyof T): void {\r\n const exhist: boolean = this.controls[key] !== undefined;\r\n delete this.controls_[key];\r\n }\r\n\r\n addValidators(...validators: FormValidator[]) {\r\n this.forEach_((control: FormAbstract) => control.addValidators(...validators));\r\n }\r\n\r\n replaceValidators(...validators: FormValidator[]) {\r\n this.forEach_((control: FormAbstract) => control.replaceValidators(...validators));\r\n }\r\n\r\n clearValidators() {\r\n this.forEach_((control: FormAbstract) => control.clearValidators());\r\n }\r\n\r\n protected forEach_(callback: Function): void {\r\n const controls = this.controls as { [key: string]: FormAbstract };\r\n Object.keys(controls).forEach(key => callback(controls[key], key));\r\n }\r\n\r\n protected reduce_(callback: Function, result: any): any {\r\n this.forEach_((control: FormAbstract, key: any) => {\r\n result = callback(result, control, key);\r\n });\r\n return result;\r\n }\r\n\r\n protected all_(key: (keyof FormAbstract), value: any): boolean {\r\n return this.reduce_((result: boolean, control: FormAbstract) => {\r\n return result && control[key] === value;\r\n }, true);\r\n }\r\n\r\n protected any_(key: (keyof FormAbstract), value: any): boolean {\r\n return this.reduce_((result: boolean, control: FormAbstract) => {\r\n return result || control[key] === value;\r\n }, false);\r\n }\r\n\r\n protected map_() {\r\n const controls = this.controls as { [key: string]: FormAbstract };\r\n return Object.keys(controls).map(key => controls[key]!);\r\n }\r\n\r\n // getter & setter\r\n get controls() {\r\n return this.controls_;\r\n }\r\n\r\n set controls(controls) {\r\n if (this.controls_ !== controls) {\r\n this.controls_ = controls;\r\n this.revalidate_();\r\n }\r\n }\r\n\r\n set disabled(disabled: boolean) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.disabled = disabled;\r\n });\r\n }\r\n\r\n set readonly(readonly: boolean) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.readonly = readonly;\r\n });\r\n }\r\n\r\n set hidden(hidden: boolean) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.hidden = hidden;\r\n });\r\n }\r\n\r\n set submitted(submitted: boolean) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.submitted = submitted;\r\n });\r\n }\r\n\r\n set touched(touched: boolean) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.touched = touched;\r\n });\r\n }\r\n\r\n get value(): U {\r\n return this.reduce_((result: U, control: FormAbstract, key: string) => {\r\n if (control.enabled) {\r\n result[key as keyof U] = control.value;\r\n }\r\n return result;\r\n }, {});\r\n }\r\n\r\n set value(value: U) {\r\n this.forEach_((control: FormAbstract, key: string) => {\r\n control.value = value[key as keyof U];\r\n });\r\n }\r\n\r\n get errors(): ValidationError {\r\n return this.reduce_((result: ValidationError, control: FormAbstract) => {\r\n return Object.assign(result, control.errors);\r\n }, {});\r\n }\r\n\r\n set errors(errors) { }\r\n\r\n get emptyErrors(): ValidationError {\r\n return this.reduce_((result: ValidationError, control: FormAbstract) => {\r\n return Object.assign(result, control.emptyErrors);\r\n }, {});\r\n }\r\n\r\n set emptyErrors(emptyErrors) { }\r\n}\r\n","import { FormAbstract } from './form-abstract';\r\nimport { FormAbstractCollection } from './form-abstract-collection';\r\nimport { FormArrayControls, FormOptions, FormValidator, FormValue } from './types';\r\n\r\nexport class FormArray<T extends FormValue[] = FormValue[]> extends FormAbstractCollection<T, FormArrayControls> {\r\n\r\n constructor(controls: FormArrayControls = [], validators?: FormValidator | FormValidator[], initialOptions?: FormOptions) {\r\n super(controls, validators);\r\n this.setInitialOptions(initialOptions);\r\n }\r\n\r\n forEach_(callback: (control: FormAbstract, key: number) => any) {\r\n this.controls.forEach((control: FormAbstract, key: number) => callback(control, key));\r\n }\r\n\r\n map_() {\r\n return this.controls;\r\n }\r\n\r\n get value(): T {\r\n return this.reduce_((value: T, control: FormAbstract, key: number) => {\r\n value[key] = control.value;\r\n return value;\r\n }, []); // init as array\r\n }\r\n\r\n get length(): number {\r\n return this.controls.length;\r\n }\r\n\r\n protected init(control: FormAbstract, key: number): void {\r\n this.controls.length = Math.max(this.controls.length, key);\r\n this.controls[key] = this.initControl_(control, key);\r\n }\r\n\r\n set(control: FormAbstract, key: number): void {\r\n // this.controls.length = Math.max(this.controls.length, key);\r\n // this.controls[key] = this.initControl_(control);\r\n this.controls.splice(key, 1, this.initControl_(control, key));\r\n }\r\n\r\n add(control: FormAbstract, key: number): void {\r\n this.controls.length = Math.max(this.controls.length, key);\r\n this.controls[key] = this.initControl_(control, key);\r\n }\r\n\r\n push(control: FormAbstract): void {\r\n // this.controls.length = Math.max(this.controls.length, key);\r\n // this.controls[key] = this.initControl_(control);\r\n this.controls.push(this.initControl_(control, this.controls.length));\r\n }\r\n\r\n insert(control: FormAbstract, key: number): void {\r\n this.controls.splice(key, 0, this.initControl_(control, key));\r\n }\r\n\r\n remove(control: FormAbstract): void {\r\n const key: number = this.controls.indexOf(control);\r\n if (key !== -1) {\r\n this.removeKey(key);\r\n }\r\n }\r\n\r\n removeKey(key: number): void {\r\n if (this.controls.length > key) {\r\n this.controls.splice(key, 1);\r\n }\r\n }\r\n\r\n at(key: number) {\r\n return this.controls[key];\r\n }\r\n}\r\n\r\nexport function formArray(controls: FormArrayControls = [], validators?: FormValidator | FormValidator[]) {\r\n return new FormArray(controls, validators);\r\n}\r\n","import { FormAbstractCollection } from './form-abstract-collection';\r\nimport { FormGroupControls, FormOptions, FormValidator, FormValue } from './types';\r\n\r\nexport class FormGroup<T extends Record<string, FormValue> = FormValue> extends FormAbstractCollection<T, FormGroupControls> {\r\n constructor(controls: FormGroupControls = {}, validators?: FormValidator | FormValidator[], initialOptions?: FormOptions) {\r\n super(controls, validators);\r\n this.setInitialOptions(initialOptions);\r\n }\r\n}\r\n\r\nexport function formGroup(controls: FormGroupControls = {}, validators?: FormValidator | FormValidator[]) {\r\n return new FormGroup(controls, validators);\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * an email pattern validator\r\n */\r\nexport function EmailValidator(key: string = 'email'): FormValidator {\r\n const regex = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\r\n return function (value) {\r\n if (typeof value === 'string') {\r\n return regex.test(value) ? null : { [key]: true };\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { FormAbstract } from '../form-abstract';\r\nimport { FormValidator, FormValue } from '../types';\r\nimport { validValue } from '../utils';\r\n\r\n/**\r\n * an equality match validation on another field\r\n */\r\nexport function MatchValidator(\r\n getOtherValue: (value: FormValue, rootValue: FormValue, control?: FormAbstract, root?: FormAbstract) => any,\r\n key: string = 'match'\r\n): FormValidator {\r\n return function (value, rootValue, control, root) {\r\n let otherValue = getOtherValue(value, rootValue, control, root);\r\n otherValue = validValue(otherValue);\r\n return value !== otherValue ? { [key]: { value: value, match: otherValue } } : null;\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a max string length validator\r\n */\r\nexport function MaxLengthValidator(maxlength: number, key: string = 'maxlength'): FormValidator {\r\n return function (value) {\r\n if (maxlength == null) {\r\n return null;\r\n }\r\n if (typeof value === 'string') {\r\n const length = value ? value.length : 0;\r\n return length > maxlength ? { [key]: { requiredLength: maxlength, actualLength: length } } : null;\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a max number value validator\r\n */\r\nexport function MaxValidator(max: number, key: string = 'max'): FormValidator {\r\n return function (value) {\r\n value = typeof value === 'string' ? parseFloat(value) : typeof value === 'number' ? value : null;\r\n if (value == null || max == null) { // loose\r\n return null;\r\n }\r\n return !isNaN(value) && value > max ? { [key]: { max: max, actual: value } } : null;\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a min string length validator\r\n */\r\nexport function MinLengthValidator(minlength: number, key: string = 'minlength'): FormValidator {\r\n return function (value) {\r\n if (minlength == null) {\r\n return null;\r\n }\r\n if (typeof value === 'string') {\r\n const length = value ? value.length : 0;\r\n return length < minlength ? { [key]: { requiredLength: minlength, actualLength: length } } : null;\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a min number value validator\r\n */\r\nexport function MinValidator(min: number, key: string = 'min'): FormValidator {\r\n return function (value) {\r\n value = typeof value === 'string' ? parseFloat(value) : typeof value === 'number' ? value : null;\r\n if (value == null || min == null) { // loose\r\n return null;\r\n }\r\n return !isNaN(value) && value < min ? { [key]: { min: min, actual: value } } : null;\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a null validator\r\n */\r\nexport function NullValidator(): FormValidator {\r\n return function (value) {\r\n return null;\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a regex pattern validator\r\n */\r\nexport function PatternValidator(pattern: string | RegExp, key: string = 'pattern'): FormValidator {\r\n return function (value) {\r\n if (pattern == null) { // loose\r\n return null;\r\n }\r\n if (typeof value === 'string') {\r\n const regex = patternToRegEx(pattern);\r\n return regex.test(value) ? null : { [key]: { requiredPattern: regex.toString(), actualValue: value } };\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n\r\nfunction patternToRegEx(pattern: string | RegExp) {\r\n let regex;\r\n if (pattern instanceof RegExp) {\r\n regex = pattern;\r\n } else if (typeof pattern === 'string') {\r\n pattern = pattern.charAt(0) === '^' ? pattern : `^${pattern}`;\r\n pattern = pattern.charAt(pattern.length - 1) === '$' ? pattern : `${pattern}$`;\r\n regex = new RegExp(pattern);\r\n }\r\n return regex || new RegExp('');\r\n}\r\n","import { isArray } from '@websolutespa/bom-core';\r\nimport { FormAbstract } from '../form-abstract';\r\nimport { FormValidator, FormValue } from '../types';\r\n\r\n/**\r\n * a required dependant on another field\r\n */\r\nexport function RequiredIfValidator(condition: (value: FormValue, rootValue: FormValue, control?: FormAbstract, root?: FormAbstract) => boolean, key: string = 'required'): FormValidator {\r\n return function (value, rootValue, control, root) {\r\n // console.log('RequiredIfValidator', value, Boolean(condition(value, rootValue, control, root)));\r\n if (Boolean(condition(value, rootValue, control, root)) === true) {\r\n if (isArray(value) || typeof value === 'string') {\r\n return (value.length === 0) ? { [key]: true } : null;\r\n } else {\r\n return value == null ? { [key]: true } : null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a required and true validator\r\n */\r\nexport function RequiredTrueValidator(key: string = 'required'): FormValidator {\r\n return function (value) {\r\n // console.log('RequiredTrueValidator', value, value === true ? null : { required: true });\r\n return value === true ? null : { [key]: true };\r\n };\r\n}\r\n","import { isArray } from '@websolutespa/bom-core';\r\nimport { FormValidator } from '../types';\r\n\r\n/**\r\n * a required validator\r\n */\r\nexport function RequiredValidator(key: string = 'required'): FormValidator {\r\n return function (value) {\r\n // console.log('RequiredValidator', value, (value == null || value.length === 0) ? { required: true } : null);\r\n if (isArray(value) || typeof value === 'string') {\r\n return (value.length === 0) ? { [key]: true } : null;\r\n } else {\r\n return value == null ? { [key]: true } : null;\r\n }\r\n };\r\n // return (value == null || value.length === 0) ? 'required' : null;\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { FormAbstract, FormState, mapErrors_, mapState_ } from '../../forms';\r\n\r\nexport function useControl<T>(\r\n control: FormAbstract\r\n): [FormState<T>, (value: T | null) => void, () => void, () => void, FormAbstract] {\r\n\r\n const [state, setState] = useState<FormState<T>>({\r\n value: control.value as T,\r\n flags: mapState_(control.state),\r\n errors: mapErrors_(control.errors),\r\n });\r\n\r\n const setValue = useCallback((value: T | null) => {\r\n control.patch(value);\r\n }, [control]);\r\n\r\n const setTouched = useCallback(() => {\r\n control.touched = true;\r\n }, [control]);\r\n\r\n const reset = useCallback(() => {\r\n control.reset();\r\n }, [control]);\r\n\r\n useEffect(() => {\r\n const onChange = (value: T) => {\r\n const newState = {\r\n value,\r\n flags: mapState_(control.state),\r\n errors: mapErrors_(control.errors),\r\n };\r\n // console.log('useControl.onChange', control.schema, control.name, value);\r\n setState(newState);\r\n };\r\n control.on('change', onChange);\r\n // control.validateAndChange_();\r\n return () => control.off('change', onChange);\r\n }, [control]);\r\n\r\n return [state, setValue, setTouched, reset, control];\r\n}\r\n","import { DependencyList, useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { FormArray, FormGroup, FormState, mapErrors_, mapState_ } from '../../forms';\r\n\r\nexport function useForm<T, U extends (FormGroup | FormArray)>(factory: () => U, deps: DependencyList = []): [FormState<T>, (value: any) => void, () => void, () => void, U] {\r\n const collection: U = useMemo<U>(factory, deps);\r\n\r\n const setValue = useCallback((value: any) => {\r\n collection.patch(value);\r\n }, deps);\r\n\r\n const setTouched = useCallback(() => {\r\n collection.touched = true;\r\n }, deps);\r\n\r\n const reset = useCallback(() => {\r\n collection.reset();\r\n }, deps);\r\n\r\n const [state, setState] = useState<FormState<T>>({\r\n value: collection.value as T,\r\n flags: mapState_(collection.state),\r\n errors: mapErrors_(collection.errors),\r\n });\r\n\r\n useEffect(() => {\r\n const onChange = (value: T) => {\r\n const newState = {\r\n value,\r\n flags: mapState_(collection.state),\r\n errors: mapErrors_(collection.errors),\r\n };\r\n // console.log('useForm.onChange', newState);\r\n setState(newState);\r\n };\r\n collection.on('change', onChange);\r\n collection.validateAndChange_();\r\n return () => collection.off('change', onChange);\r\n }, deps);\r\n\r\n return [state, setValue, setTouched, reset, collection];\r\n}\r\n","import { DependencyList, useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { FormArray, FormControl, FormGroup, FormState, mapErrors_, mapState_ } from '../../forms';\r\nimport { FormValue, IFormBuilderArraySchema, IFormBuilderControlSchema, IFormBuilderGroupSchema, IFormBuilderGroupValues, IFormBuilderSchema } from '../../forms/types';\r\n\r\n/**\r\n * @deprecated Since version 1.9.0. Will be deleted in version 1.10.0. Use useFormSchema instead.\r\n */\r\nexport function useFormBuilder<\r\n T extends (Record<string, FormValue> | FormValue[]) = Record<string, FormValue>,\r\n U extends (T extends FormValue[] ? FormArray<T> : FormGroup<T>) = T extends FormValue[] ? FormArray<T> : FormGroup<T>\r\n>(\r\n schema: IFormBuilderSchema,\r\n deps: DependencyList = []\r\n): [FormState<T>, (value: Partial<T>) => void, () => void, () => void, U] {\r\n\r\n const collection: U = useMemo<U>(() => {\r\n // console.log('useFormBuilder.rebuild', schema);\r\n if (Array.isArray(schema)) {\r\n return mapArray_(schema) as U;\r\n } else {\r\n return mapGroup_(schema) as U;\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const setValue = useCallback((value: Partial<T>) => {\r\n collection.patch(value);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const setTouched = useCallback(() => {\r\n collection.touched = true;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const reset = useCallback(() => {\r\n collection.reset();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const [state, setState] = useState<FormState<T>>({\r\n value: collection.value as T,\r\n flags: mapState_(collection.state),\r\n errors: mapErrors_(collection.errors),\r\n });\r\n\r\n useEffect(() => {\r\n const onChange = (value: T) => {\r\n // console.log('useFormBuilder.onChange', value);\r\n const newState = {\r\n value,\r\n flags: mapState_(collection.state),\r\n errors: mapErrors_(collection.errors),\r\n };\r\n setState(newState);\r\n };\r\n collection.on('change', onChange);\r\n // collection.validateAndChange_();\r\n collection.revalidate_();\r\n // const value = collection.value;\r\n // collection.reset();\r\n // collection.patch(value);\r\n // console.log('subscribe');\r\n return () => collection.off('change', onChange);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n // console.log('useFormBuilder', collection.value);\r\n\r\n return [state, setValue, setTouched, reset, collection];\r\n}\r\n\r\nfunction mapGroup_(children: IFormBuilderGroupSchema, schema?: IFormBuilderControlSchema): FormGroup {\r\n const controls: IFormBuilderGroupValues = {};\r\n Object.keys(children).forEach(key => {\r\n controls[key] = mapSchema_({ name: key, ...children[key]! });\r\n });\r\n const group = new FormGroup(controls, schema?.validators, schema);\r\n return group;\r\n}\r\n\r\nfunction mapArray_(children: IFormBuilderControlSchema[], schema?: IFormBuilderControlSchema): FormArray {\r\n const controls = children.map(x => mapSchema_(x));\r\n const array = new FormArray(controls, schema?.validators, schema);\r\n return array;\r\n}\r\n\r\nfunction mapControl_(schema: IFormBuilderControlSchema): FormControl {\r\n return new FormControl(schema.value, schema.validators, schema);\r\n}\r\n\r\nfunction mapSchema_(schema: IFormBuilderControlSchema): FormGroup | FormArray | FormControl {\r\n switch (schema.schema) {\r\n case 'group':\r\n return mapGroup_(schema.children as IFormBuilderGroupSchema || {}, schema);\r\n case 'array':\r\n return mapArray_(schema.children as IFormBuilderArraySchema || [], schema);\r\n default:\r\n return mapControl_(schema);\r\n }\r\n}\r\n","import { DependencyList, useCallback, useEffect, useMemo } from 'react';\r\nimport { FormArray, FormControl, FormGroup } from '../../forms';\r\nimport { FormValue, IFormBuilderArraySchema, IFormBuilderControlSchema, IFormBuilderGroupSchema, IFormBuilderGroupValues, IFormBuilderSchema } from '../../forms/types';\r\n\r\nexport function useFormSchema<\r\n T extends (Record<string, FormValue> | FormValue[]) = Record<string, FormValue>,\r\n U extends (T extends FormValue[] ? FormArray<T> : FormGroup<T>) = T extends FormValue[] ? FormArray<T> : FormGroup<T>\r\n>(\r\n schema: IFormBuilderSchema,\r\n deps: DependencyList = []\r\n): {\r\n setValue: (value: Partial<T>) => void,\r\n setTouched: () => void,\r\n reset: () => void,\r\n form: U,\r\n} {\r\n const form: U = useMemo<U>(() => {\r\n // console.log(' useFormSchema.rebuild', schema);\r\n if (Array.isArray(schema)) {\r\n return mapArray_(schema) as U;\r\n } else {\r\n return mapGroup_(schema) as U;\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const setValue = useCallback((value: Partial<T>) => {\r\n form.patch(value);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const setTouched = useCallback(() => {\r\n form.touched = true;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const reset = useCallback(() => {\r\n form.reset();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n useEffect(() => {\r\n /*\r\n const onChange = (value: T) => {\r\n console.log('useFormSchema.onChange', value);\r\n };\r\n form.on('change', onChange);\r\n // form.validateAndChange_();\r\n */\r\n form.revalidate_();\r\n /*\r\n // const value = form.value;\r\n // form.reset();\r\n // form.patch(value);\r\n // console.log('subscribe');\r\n return () => form.off('change', onChange);\r\n */\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n // console.log(' useFormSchema', form.value);\r\n\r\n return {\r\n form,\r\n setTouched,\r\n setValue,\r\n reset,\r\n };\r\n}\r\n\r\nfunction mapGroup_(children: IFormBuilderGroupSchema, schema?: IFormBuilderControlSchema): FormGroup {\r\n const controls: IFormBuilderGroupValues = {};\r\n Object.keys(children).forEach(key => {\r\n controls[key] = mapSchema_({ name: key, ...children[key]! });\r\n });\r\n const group = new FormGroup(controls, schema?.validators, schema);\r\n return group;\r\n}\r\n\r\nfunction mapArray_(children: IFormBuilderControlSchema[], schema?: IFormBuilderControlSchema): FormArray {\r\n const controls = children.map(x => mapSchema_(x));\r\n const array = new FormArray(controls, schema?.validators, schema);\r\n return array;\r\n}\r\n\r\nfunction mapControl_(schema: IFormBuilderControlSchema): FormControl {\r\n return new FormControl(schema.value, schema.validators, schema);\r\n}\r\n\r\nfunction mapSchema_(schema: IFormBuilderControlSchema): FormGroup | FormArray | FormControl {\r\n switch (schema.schema) {\r\n case 'group':\r\n return mapGroup_(schema.children as IFormBuilderGroupSchema || {}, schema);\r\n case 'array':\r\n return mapArray_(schema.children as IFormBuilderArraySchema || [], schema);\r\n default:\r\n return mapControl_(schema);\r\n }\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["event: string","listener: (...args: any[]) => any","value: FormValue","errors: FormErrors","state: FormState","value: IOption | IOption[] | IEquatable | IEquatable[] | null","value: IOption | IEquatable | null","value","values: IOption[] | IEquatable[]","value: string | string[] | undefined","options?: IOption[]","optionsExtra?: { asEquatable: boolean }","value: string","value: string | undefined","values: string[]","value: T | null","validators?: (FormValidator | FormValidator[])","label: string | undefined","placeholder: string | undefined","options: IOption[] | undefined","optionsExtra: { asEquatable: boolean } | undefined","customData: FormCustomData | undefined","invalid: boolean","disabled: boolean","hidden: boolean","readonly: boolean","dirty: boolean","touched: boolean","submitted: boolean","errors: ValidationError","emptyErrors: ValidationError","value: T | null","validators?: (FormValidator | FormValidator[])","options?: FormOptions","root?: FormCollection","key: keyof FormFlags","activator?: FormActivator","errors: ValidationError","emptyErrors: ValidationError","p: { results: (ValidationError | null)[], promises: Promise<ValidationError | null>[] }","c: (ValidationError | null) | Promise<ValidationError | null>","error: ValidationError | null","p: { emptyResults: (ValidationError | null)[], emptyPromises: Promise<ValidationError | null>[] }","emptyError: ValidationError | null","propagate: boolean","value: FormValue","parent: FormCollection | FormAbstract","value: FormValue","validators?: FormValidator | FormValidator[]","initialOptions?: FormOptions","controls: T","validators?: (FormValidator | FormValidator[])","control: FormAbstract","key: keyof T","controlOrValue: FormAbstract | FormValue","key: any","options?: FormOptions","key: keyof FormFlags","activator?: FormActivator","root?: FormCollection","result: boolean","value: any","key: string","c: FormAbstract","k: keyof T","callback: Function","result: any","key: (keyof FormAbstract)","disabled: boolean","readonly: boolean","hidden: boolean","submitted: boolean","touched: boolean","result: U","value: U","result: ValidationError","controls: FormArrayControls","validators?: FormValidator | FormValidator[]","initialOptions?: FormOptions","callback: (control: FormAbstract, key: number) => any","control: FormAbstract","key: number","value: T","controls: FormGroupControls","validators?: FormValidator | FormValidator[]","initialOptions?: FormOptions","key: string","getOtherValue: (value: FormValue, rootValue: FormValue, control?: FormAbstract, root?: FormAbstract) => any","key: string","maxlength: number","key: string","max: number","key: string","minlength: number","key: string","min: number","key: string","pattern: string | RegExp","key: string","condition: (value: FormValue, rootValue: FormValue, control?: FormAbstract, root?: FormAbstract) => boolean","key: string","key: string","key: string","control: FormAbstract","value: T | null","value: T","factory: () => U","deps: DependencyList","collection: U","value: any","value: T","schema: IFormBuilderSchema","deps: DependencyList","collection: U","mapArray_","mapGroup_","value: Partial<T>","value: T","children: IFormBuilderGroupSchema","schema?: IFormBuilderControlSchema","controls: IFormBuilderGroupValues","mapSchema_","children: IFormBuilderControlSchema[]","mapControl_","schema: IFormBuilderControlSchema","schema: IFormBuilderSchema","deps: DependencyList","form: U","value: Partial<T>","children: IFormBuilderGroupSchema","schema?: IFormBuilderControlSchema","controls: IFormBuilderGroupValues","children: IFormBuilderControlSchema[]","schema: IFormBuilderControlSchema"],"sources":["../src/forms/event-emitter.ts","../src/forms/form-state.ts","../src/forms/utils.ts","../src/forms/form-emitter.ts","../src/forms/form-abstract.ts","../src/forms/form-control.ts","../src/forms/form-abstract-collection.ts","../src/forms/form-array.ts","../src/forms/form-group.ts","../src/forms/validators/email.validator.ts","../src/forms/validators/match.validator.ts","../src/forms/validators/max-length.validator.ts","../src/forms/validators/max.validator.ts","../src/forms/validators/min-length.validator.ts","../src/forms/validators/min.validator.ts","../src/forms/validators/null.validator.ts","../src/forms/validators/pattern.validator.ts","../src/forms/validators/required-if.validator.ts","../src/forms/validators/required-true.validator.ts","../src/forms/validators/required.validator.ts","../src/hooks/useControl/useControl.ts","../src/hooks/useForm/useForm.ts","../src/hooks/useFormBuilder/useFormBuilder.ts","../src/hooks/useFormSchema/useFormSchema.ts"],"sourcesContent":["\r\nexport class EventEmitter {\r\n protected events_: { [key: string]: ((...args: any[]) => any)[] } = {};\r\n\r\n on(event: string, listener: (...args: any[]) => any) {\r\n if (typeof this.events_[event] !== 'object') {\r\n this.events_[event] = [];\r\n }\r\n this.events_[event].push(listener);\r\n }\r\n\r\n off(event: string, listener: (...args: any[]) => any) {\r\n if (typeof this.events_[event] === 'object') {\r\n const index = this.events_[event].indexOf(listener);\r\n if (index > -1) {\r\n this.events_[event].splice(index, 1);\r\n }\r\n } else {\r\n throw new Error(`Can't remove a listener. Event \"${event}\" doesn't exits.`);\r\n }\r\n }\r\n\r\n emit(event: string, ...args: any[]) {\r\n if (typeof this.events_[event] === 'object') {\r\n this.events_[event].forEach((listener) => listener.apply(this, args));\r\n }\r\n }\r\n\r\n once(event: string, listener: (...args: any[]) => any) {\r\n const onceListener = (...args: any[]) => {\r\n this.off(event, onceListener);\r\n listener.apply(this, args);\r\n };\r\n this.on(event, onceListener);\r\n }\r\n}\r\n","\r\nexport class FormState {\r\n public invalid: boolean = false;\r\n public disabled: boolean = false;\r\n public hidden: boolean = false;\r\n public readonly: boolean = false;\r\n public dirty: boolean = false;\r\n public touched: boolean = false;\r\n public submitted: boolean = false;\r\n\r\n get valid() { return !this.invalid; }\r\n get enabled() { return !this.disabled; }\r\n get visible() { return !this.hidden; }\r\n get writeable() { return !this.readonly; }\r\n get pristine() { return !this.dirty; }\r\n get untouched() { return !this.touched; }\r\n get unsubmitted() { return !this.submitted; }\r\n}\r\n","import { IEquatable, IOption } from '@websolutespa/bom-core';\r\nimport { FormState } from './form-state';\r\nimport { FormDerivedFlags, FormErrors, FormFlags, FormValidationError, FormValue } from './types';\r\n\r\nexport function validValue(value: FormValue) {\r\n return value !== undefined && value !== '' ? value : null;\r\n}\r\n\r\nexport function mapErrors_(errors: FormErrors): FormValidationError[] {\r\n return Object.keys(errors).map(key => ({ key, value: errors[key] }));\r\n}\r\n\r\nexport function mapState_(state: FormState): FormFlags & FormDerivedFlags {\r\n return {\r\n ...state,\r\n valid: !state.invalid,\r\n enabled: !state.disabled,\r\n visible: !state.hidden,\r\n writeable: !state.readonly,\r\n pristine: !state.dirty,\r\n untouched: !state.touched,\r\n unsubmitted: !state.submitted,\r\n };\r\n}\r\n\r\nexport function valueToString(value: IOption | IOption[] | IEquatable | IEquatable[] | null): string | string[] | undefined {\r\n function mapValue(value: IOption | IEquatable | null): string | undefined {\r\n const stringValue = value != null ? (\r\n typeof value === 'object' ? value.id.toString() : value.toString()\r\n ) : undefined;\r\n return stringValue;\r\n }\r\n function mapValues(values: IOption[] | IEquatable[]): string[] | undefined {\r\n const strings = values.map(x => mapValue(x)).filter(x => x !== undefined) as string[];\r\n return strings.length ? strings : undefined;\r\n }\r\n return Array.isArray(value) ? mapValues(value) : mapValue(value);\r\n}\r\n\r\nexport function stringToValue(value: string | string[] | undefined, options?: IOption[], optionsExtra?: { asEquatable: boolean }): IOption | IOption[] | IEquatable | IEquatable[] | null {\r\n function findValue(value: string): IOption | IEquatable | null {\r\n const option = options?.find(x => x.id.toString() === value);\r\n return option ? (\r\n optionsExtra?.asEquatable ? option.id : option\r\n ) : null;\r\n }\r\n function mapValue(value: string | undefined): IOption | IEquatable | null {\r\n return value !== undefined ? findValue(value) : null;\r\n }\r\n function mapValues(values: string[]): IOption[] | IEquatable[] | null {\r\n const mappedValues = values.map(x => mapValue(x)).filter(x => x !== null) as (IOption[] | IEquatable[]);\r\n return mappedValues.length ? mappedValues : null;\r\n }\r\n return Array.isArray(value) ? mapValues(value) : mapValue(value);\r\n}\r\n","import { IOption } from '@websolutespa/bom-core';\r\nimport { EventEmitter } from './event-emitter';\r\nimport { FormState } from './form-state';\r\nimport { FormCustomData, FormValidator, FormValue, ValidationError } from './types';\r\nimport { validValue } from './utils';\r\n\r\nexport class FormEmitter<T = FormValue> extends EventEmitter {\r\n\r\n protected markAsDirty_: boolean = false;\r\n get isDirty() {\r\n return this.markAsDirty_;\r\n }\r\n\r\n // props\r\n name?: string | number;\r\n protected label_: string | undefined;\r\n get label(): string {\r\n return this.label_ || this.name?.toString() || '';\r\n }\r\n protected placeholder_: string | undefined;\r\n get placeholder(): string {\r\n return this.placeholder_ || this.label || '';\r\n }\r\n protected options_: IOption[] | undefined;\r\n get options() {\r\n return this.options_;\r\n }\r\n protected optionsExtra_: { asEquatable: boolean } | undefined;\r\n get optionsExtra() {\r\n return this.optionsExtra_;\r\n }\r\n protected customData_: FormCustomData | undefined;\r\n get customData() {\r\n return this.customData_;\r\n }\r\n\r\n // value\r\n protected value_: T | null;\r\n get value() {\r\n return this.value_;\r\n }\r\n\r\n // state\r\n protected state_: FormState;\r\n get state() { return this.state_; }\r\n // flags\r\n get invalid() { return this.state_.invalid; }\r\n get disabled() { return this.state_.disabled; }\r\n get hidden() { return this.state_.hidden; }\r\n get readonly() { return this.state_.readonly; }\r\n get dirty() { return this.state_.dirty; }\r\n get touched() { return this.state_.touched; }\r\n get submitted() { return this.state_.submitted; }\r\n // derived flags\r\n get valid() { return this.state_.valid; }\r\n get enabled() { return this.state_.enabled; }\r\n get visible() { return this.state_.visible; }\r\n get writeable() { return this.state_.writeable; }\r\n get pristine() { return this.state_.pristine; }\r\n get untouched() { return this.state_.untouched; }\r\n get unsubmitted() { return this.state_.unsubmitted; }\r\n get required() { return Boolean(this.emptyErrors_.required); }\r\n\r\n // errors\r\n protected errors_: ValidationError;\r\n get errors() {\r\n return this.errors_;\r\n }\r\n\r\n // emptyErrors\r\n protected emptyErrors_: ValidationError;\r\n get emptyErrors() {\r\n return this.emptyErrors_;\r\n }\r\n\r\n // validators\r\n protected validators_: FormValidator[];\r\n get validators() {\r\n return this.validators_;\r\n }\r\n\r\n constructor(value: T | null, validators?: (FormValidator | FormValidator[])) {\r\n super();\r\n // value\r\n this.value_ = validValue(value);\r\n this.state_ = new FormState();\r\n this.errors_ = {};\r\n this.emptyErrors_ = {};\r\n this.validators_ = validators ? (Array.isArray(validators) ? validators : [validators]) : [];\r\n }\r\n\r\n /**\r\n * SETTERS\r\n */\r\n\r\n // props\r\n set label(label: string | undefined) {\r\n if (this.label_ !== label) {\r\n this.label_ = label;\r\n this.markAsDirty_ = true;\r\n }\r\n }\r\n set placeholder(placeholder: string | undefined) {\r\n if (this.placeholder_ !== placeholder) {\r\n this.placeholder_ = placeholder;\r\n this.markAsDirty_ = true;\r\n }\r\n }\r\n set options(options: IOption[] | undefined) {\r\n if (this.options_ !== options) {\r\n this.options_ = options;\r\n const value = this.optionsExtra?.asEquatable ?\r\n this.value :\r\n String((this.value as IOption)?.id);\r\n if (!options?.some(x => String(x.id) === value)) {\r\n this.value_ = null;\r\n this.state_.dirty = false;\r\n this.state_.touched = false;\r\n this.state_.submitted = false;\r\n }\r\n this.markAsDirty_ = true;\r\n }\r\n }\r\n set optionsExtra(optionsExtra: { asEquatable: boolean } | undefined) {\r\n if (this.optionsExtra_ !== optionsExtra) {\r\n this.optionsExtra_ = optionsExtra;\r\n this.markAsDirty_ = true;\r\n }\r\n }\r\n set customData(customData: FormCustomData | undefined) {\r\n if (this.customData_ !== customData) {\r\n this.customData_ = customData;\r\n this.markAsDirty_ = true;\r\n }\r\n }\r\n\r\n // value\r\n set value(value) {\r\n value = validValue(value);\r\n // console.log('FormEmitter.setValue', this.value_, value);\r\n if (this.value_ !== value) {\r\n this.value_ = value;\r\n this.state_.dirty = value != null;\r\n this.state_.submitted = false;\r\n this.markAsDirty_ = true;\r\n this.revalidate_();\r\n }\r\n }\r\n\r\n // state\r\n set invalid(invalid: boolean) {\r\n if (this.state_.invalid !== invalid) {\r\n this.state_.invalid = invalid;\r\n this.markAsDirty_ = true;\r\n // this.revalidate_(); ???\r\n }\r\n }\r\n set disabled(disabled: boolean) {\r\n if (this.state_.disabled !== disabled) {\r\n this.state_.disabled = disabled;\r\n this.markAsDirty_ = true;\r\n // this.revalidate_();\r\n }\r\n }\r\n set hidden(hidden: boolean) {\r\n if (this.state_.hidden !== hidden) {\r\n this.state_.hidden = hidden;\r\n this.markAsDirty_ = true;\r\n // this.revalidate_();\r\n }\r\n }\r\n set readonly(readonly: boolean) {\r\n if (this.state_.readonly !== readonly) {\r\n this.state_.readonly = readonly;\r\n this.markAsDirty_ = true;\r\n // this.revalidate_();\r\n }\r\n }\r\n set dirty(dirty: boolean) {\r\n if (this.state_.dirty !== dirty) {\r\n this.state_.dirty = dirty;\r\n this.markAsDirty_ = true;\r\n this.updateStateAndChange_();\r\n }\r\n }\r\n set touched(touched: boolean) {\r\n // console.log('FormEmitter.setTouched', touched, this.state_.touched);\r\n if (this.state_.touched !== touched) {\r\n this.state_.touched = touched;\r\n this.markAsDirty_ = true;\r\n this.updateStateAndChange_();\r\n }\r\n }\r\n set submitted(submitted: boolean) {\r\n if (this.state_.submitted !== submitted) {\r\n this.state_.submitted = submitted;\r\n this.markAsDirty_ = true;\r\n this.updateStateAndChange_();\r\n }\r\n }\r\n\r\n // errors\r\n set errors(errors: ValidationError) {\r\n if (!this.markAsDirty_) {\r\n const previous = Object.entries(this.errors_);\r\n const current = Object.entries(errors);\r\n const differs = previous.length !== current.length ||\r\n previous.reduce((p, [k, v], i) => {\r\n const c = current[i]!;\r\n return p || (c[0] !== k || c[1] !== v);\r\n }, false);\r\n this.markAsDirty_ = differs;\r\n }\r\n this.errors_ = errors;\r\n }\r\n\r\n // emptyErrors\r\n set emptyErrors(emptyErrors: ValidationError) {\r\n if (!this.markAsDirty_) {\r\n const previous = Object.entries(this.emptyErrors_);\r\n const current = Object.entries(emptyErrors);\r\n const differs = previous.length !== current.length ||\r\n previous.reduce((p, [k, v], i) => {\r\n const c = current[i]!;\r\n return p || (c[0] !== k || c[1] !== v);\r\n }, false);\r\n this.markAsDirty_ = differs;\r\n }\r\n this.emptyErrors_ = emptyErrors;\r\n }\r\n\r\n // validators\r\n set validators(validators) {\r\n if (this.validators_ !== validators) {\r\n this.validators_ = validators;\r\n this.revalidate_();\r\n }\r\n }\r\n\r\n protected revalidate_(): void {\r\n // console.log('FormEmitter.revalidate_', this.name);\r\n }\r\n\r\n protected async updateStateAndChange_(): Promise<boolean> {\r\n // console.log('FormEmitter.updateStateAndChange_', this.name);\r\n return false;\r\n }\r\n\r\n protected emitChange_(): boolean {\r\n // console.log('FormEmitter.emitChange_', this.name, this.markAsDirty_);\r\n if (this.markAsDirty_) {\r\n this.markAsDirty_ = false;\r\n this.emit('change', this.value);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","import { isPromise } from '@websolutespa/bom-core';\r\nimport { FormEmitter } from './form-emitter';\r\nimport { ControlType, FormActivator, FormCollection, FormFlags, FormOptions, FormValidator, FormValue, ValidationError } from './types';\r\n\r\nexport class FormAbstract<T = FormValue> extends FormEmitter {\r\n\r\n schema: ControlType = 'text';\r\n parent?: FormCollection;\r\n\r\n protected initialOptions_?: FormOptions;\r\n\r\n constructor(value: T | null, validators?: (FormValidator | FormValidator[])) {\r\n super(value, validators);\r\n }\r\n\r\n protected setInitialOptions(options?: FormOptions) {\r\n this.initialOptions_ = options;\r\n if (options) {\r\n if (options.schema) {\r\n this.schema = options.schema;\r\n }\r\n if (options.name) {\r\n this.name = options.name;\r\n }\r\n if (options.label) {\r\n this.label_ = options.label;\r\n }\r\n if (options.placeholder) {\r\n this.placeholder_ = options.placeholder;\r\n }\r\n if (options.options) {\r\n this.options_ = options.options;\r\n }\r\n if (options.optionsExtra) {\r\n this.optionsExtra_ = options.optionsExtra;\r\n }\r\n if (options.customData) {\r\n this.customData_ = options.customData;\r\n }\r\n /*\r\n // !!! todo\r\n if (options.required === true) {\r\n this.state_.required = true;\r\n }\r\n */\r\n if (options.disabled === true || typeof options.disabled === 'function') {\r\n this.state_.disabled = true;\r\n }\r\n if (options.readonly === true || typeof options.readonly === 'function') {\r\n this.state_.readonly = true;\r\n }\r\n if (options.hidden === true || typeof options.hidden === 'function') {\r\n this.state_.hidden = true;\r\n }\r\n }\r\n // this.validate_();\r\n // this.updateState_();\r\n }\r\n\r\n protected async checkAsyncState_(root?: FormCollection): Promise<void> {\r\n // console.log('FormAbstract.checkAsyncState_', this.name);\r\n const options = this.initialOptions_;\r\n if (options) {\r\n await this.checkAsyncPropState_('disabled', options.disabled, root);\r\n await this.checkAsyncPropState_('hidden', options.hidden, root);\r\n await this.checkAsyncPropState_('readonly', options.readonly, root);\r\n this.updateStateAndChange_();\r\n }\r\n }\r\n\r\n protected async checkAsyncPropState_(key: keyof FormFlags, activator?: FormActivator, root?: FormCollection): Promise<void> {\r\n if (typeof activator === 'function') {\r\n const valueOrPromise = activator(this.value_, root?.value, this, root);\r\n const value = isPromise(valueOrPromise) ? await valueOrPromise : valueOrPromise;\r\n this[key] = value;\r\n }\r\n }\r\n\r\n protected async revalidate_() {\r\n if (this.parent) {\r\n return await this.parent.revalidate_();\r\n }\r\n // console.log('FormAbstract.revalidate_', this.name);\r\n return await this.validateAndChange_();\r\n }\r\n\r\n async validateAndChange_(root?: FormCollection): Promise<boolean> {\r\n await this.validate_(root);\r\n return this.change_();\r\n // console.log('validateAndChange_', this);\r\n }\r\n\r\n async validate_(root?: FormCollection) {\r\n // console.log('FormAbstract.validate_', this.name);\r\n await this.checkAsyncState_(root);\r\n const errors: ValidationError = {};\r\n const emptyErrors: ValidationError = {};\r\n if (this.validators.length === 0 || this.disabled || this.submitted) {\r\n this.invalid = false;\r\n } else {\r\n const validations = this.validators_.map((x) => x(this.value_, root?.value, this, root)).filter((x) => x);\r\n const { results, promises } = validations.reduce((p: { results: (ValidationError | null)[], promises: Promise<ValidationError | null>[] }, c: (ValidationError | null) | Promise<ValidationError | null>) => {\r\n isPromise(c) ? p.promises.push(c as Promise<ValidationError | null>) : p.results.push(c);\r\n return p;\r\n }, { results: [], promises: [] });\r\n promises.forEach(x => x.then((error: ValidationError | null) => {\r\n // console.log('Validation.async.error', error);\r\n if (error) {\r\n this.invalid = true;\r\n this.errors = Object.assign({}, this.errors_, error);\r\n this.updateState_();\r\n this.change_(true);\r\n }\r\n }).catch(error => {\r\n console.warn('Validation.async.error', error);\r\n }));\r\n this.invalid = results.length > 0;\r\n Object.assign(errors, ...results);\r\n // console.log(`${this.name}.value`, '=', this.value_, '{', ...Object.keys(errors), '}');\r\n // emptyErrors\r\n const emptyValidations = this.validators_.map((x) => x('', root?.value, this, root)).filter((x) => x);\r\n const { emptyResults, emptyPromises } = emptyValidations.reduce((p: { emptyResults: (ValidationError | null)[], emptyPromises: Promise<ValidationError | null>[] }, c: (ValidationError | null) | Promise<ValidationError | null>) => {\r\n isPromise(c) ? p.emptyPromises.push(c as Promise<ValidationError | null>) : p.emptyResults.push(c);\r\n return p;\r\n }, { emptyResults: [], emptyPromises: [] });\r\n emptyPromises.forEach(x => x.then((emptyError: ValidationError | null) => {\r\n // console.log('Validation.async.error', emptyError);\r\n if (emptyError) {\r\n this.emptyErrors = Object.assign({}, this.emptyErrors_, emptyError);\r\n }\r\n }).catch(emptyError => {\r\n console.warn('Validation.async.emptyError', emptyError);\r\n }));\r\n Object.assign(emptyErrors, ...emptyResults);\r\n }\r\n this.errors = errors;\r\n this.emptyErrors = emptyErrors;\r\n this.updateState_();\r\n }\r\n\r\n protected async updateStateAndChange_(): Promise<boolean> {\r\n // console.log('FormAbstract.updateStateAndChange_', this.name);\r\n this.updateState_();\r\n return this.change_(true);\r\n }\r\n\r\n protected updateState_() {\r\n }\r\n\r\n change_(propagate: boolean = false): boolean {\r\n // console.log('FormAbstract.change_', this.name, 'parent', this.parent, 'propagate', propagate);\r\n if (this.emitChange_() && this.parent && propagate) {\r\n this.parent.markAsDirty_ = true;\r\n this.parent.change_.call(this.parent);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n reset() {\r\n this.value_ = null;\r\n this.dirty = false;\r\n this.touched = false;\r\n this.submitted = false;\r\n this.revalidate_();\r\n }\r\n\r\n patch(value: FormValue) {\r\n this.value = value;\r\n }\r\n\r\n addValidators(...validators: FormValidator[]): void {\r\n this.validators.push(...validators);\r\n // console.log('addValidators', this.name, this.validators);\r\n this.revalidate_();\r\n }\r\n\r\n replaceValidators(...validators: FormValidator[]): void {\r\n this.validators = validators;\r\n }\r\n\r\n clearValidators() {\r\n this.validators = [];\r\n }\r\n\r\n protected get path(): (string | number)[] {\r\n if (this.name != null) {\r\n return this.parent ? [...this.parent.path, this.name] : [this.name];\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n protected get root(): FormCollection | FormAbstract {\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n let parent: FormCollection | FormAbstract = this;\r\n while (parent.parent) {\r\n parent = parent.parent;\r\n }\r\n return parent;\r\n }\r\n}\r\n","import { FormAbstract } from './form-abstract';\r\nimport { FormOptions, FormValidator, FormValue } from './types';\r\n\r\nexport class FormControl extends FormAbstract {\r\n constructor(value: FormValue = null, validators?: FormValidator | FormValidator[], initialOptions?: FormOptions) {\r\n super(value, validators);\r\n this.setInitialOptions(initialOptions);\r\n }\r\n}\r\n\r\nexport function formControl(value: FormValue = null, validators?: FormValidator | FormValidator[]) {\r\n return new FormControl(value, validators);\r\n}\r\n","import { isPromise } from '@websolutespa/bom-core';\r\nimport { FormAbstract } from './form-abstract';\r\nimport { FormControl } from './form-control';\r\nimport { FormActivator, FormCollection, FormControls, FormFlags, FormOptions, FormValidator, FormValue, ValidationError } from './types';\r\n\r\nexport class FormAbstractCollection<\r\n U extends Record<string, FormValue> | FormValue[],\r\n T extends FormControls\r\n> extends FormAbstract<U> {\r\n\r\n controls_: T;\r\n\r\n constructor(controls: T, validators?: (FormValidator | FormValidator[])) {\r\n super(null, validators);\r\n this.controls_ = controls;\r\n // console.log(validators, this.validators);\r\n this.forEach_((control: FormAbstract, key: keyof T) => {\r\n this.controls_[key] = this.initControl_(control, key) as unknown as T[keyof T];\r\n });\r\n }\r\n\r\n initControl_(controlOrValue: FormAbstract | FormValue, key: any): FormAbstract {\r\n const control = controlOrValue instanceof FormAbstract ? controlOrValue : new FormControl(controlOrValue);\r\n control.name = key;\r\n control.parent = this;\r\n control.validators.push(...this.validators);\r\n return control;\r\n }\r\n\r\n protected setInitialOptions(options?: FormOptions) {\r\n this.initialOptions_ = options;\r\n if (options) {\r\n if (options.schema) {\r\n this.schema = options.schema;\r\n }\r\n if (options.name) {\r\n this.name = options.name;\r\n }\r\n if (options.label) {\r\n this.label_ = options.label;\r\n }\r\n if (options.placeholder) {\r\n this.placeholder_ = options.placeholder;\r\n }\r\n if (options.options) {\r\n this.options_ = options.options;\r\n }\r\n if (options.optionsExtra) {\r\n this.optionsExtra_ = options.optionsExtra;\r\n }\r\n if (options.customData) {\r\n this.customData_ = options.customData;\r\n }\r\n /*\r\n // todo\r\n if (options.required === true) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.state.required = true;\r\n });\r\n }\r\n */\r\n if (options.disabled === true || typeof options.disabled === 'function') {\r\n this.forEach_((control: FormAbstract) => {\r\n control.state.disabled = true;\r\n });\r\n }\r\n if (options.readonly === true || typeof options.readonly === 'function') {\r\n this.forEach_((control: FormAbstract) => {\r\n control.state.readonly = true;\r\n });\r\n }\r\n if (options.hidden === true || typeof options.hidden === 'function') {\r\n this.forEach_((control: FormAbstract) => {\r\n control.state.hidden = true;\r\n });\r\n }\r\n }\r\n // this.validate_();\r\n this.updateState_();\r\n }\r\n\r\n protected async checkAsyncPropState_(key: keyof FormFlags, activator?: FormActivator, root?: FormCollection): Promise<void> {\r\n if (typeof activator === 'function') {\r\n const valueOrPromise = activator(this.value_, root?.value, this, root);\r\n // console.log('checkAsyncPropState_', result);\r\n const value = isPromise(valueOrPromise) ? await valueOrPromise : valueOrPromise;\r\n this.forEach_((control: FormAbstract) => {\r\n control[key] = value;\r\n this.markAsDirty_ = this.markAsDirty_ || control.isDirty;\r\n });\r\n }\r\n }\r\n\r\n async revalidate_(): Promise<boolean> {\r\n if (this.parent) {\r\n return await this.parent.revalidate_();\r\n }\r\n // console.log('FormAbstractCollection.revalidate_', this.name);\r\n return await this.validateAndChange_(this);\r\n }\r\n\r\n async validate_(root?: FormCollection) {\r\n // console.log('FormAbstractCollection.validate_', this.name);\r\n await this.checkAsyncState_(root);\r\n const validations = this.map_().map(x => x.validate_(root));\r\n const results = await Promise.all(validations);\r\n const markAsDirty_ = this.markAsDirty_ || this.reduce_((result: boolean, control: FormAbstract) => {\r\n return result || control.isDirty;\r\n }, false);\r\n const changes = this.map_().map(x => x.change_());\r\n // console.log('FormAbstractCollection.validate_', markAsDirty_);\r\n this.markAsDirty_ = markAsDirty_;\r\n // this.markAsDirty_ = this.markAsDirty_ || results.reduce((p, c) => p || c, false);\r\n /*\r\n this.forEach_(async (control) => {\r\n await control.validateAndChange_(root);\r\n });\r\n */\r\n this.updateState_();\r\n }\r\n\r\n updateState_() {\r\n let invalid = false;\r\n let disabled = true;\r\n let hidden = true;\r\n let readonly = true;\r\n let dirty = false;\r\n let touched = true;\r\n let submitted = true;\r\n this.forEach_((control: FormAbstract) => {\r\n invalid = invalid || control.invalid;\r\n disabled = disabled && control.disabled;\r\n hidden = hidden && control.hidden;\r\n readonly = readonly && control.readonly;\r\n dirty = dirty || control.dirty;\r\n touched = touched && control.touched;\r\n submitted = submitted && control.submitted;\r\n });\r\n this.state.invalid = invalid;\r\n this.state.disabled = disabled;\r\n this.state.hidden = hidden;\r\n this.state.readonly = readonly;\r\n this.state.dirty = dirty;\r\n this.state.touched = touched;\r\n this.state.submitted = submitted;\r\n // console.log('FormAbstractCollection.updateState_', this.name, this.markAsDirty_);\r\n }\r\n\r\n reset() {\r\n this.forEach_((control: FormAbstract) => control.reset());\r\n }\r\n\r\n patch(value: any) {\r\n if (value) {\r\n this.forEach_((control: FormAbstract, key: string) => {\r\n if (value[key] != null) {\r\n // !!! keep != loose inequality\r\n control.patch(value[key]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n get(key: keyof T): FormAbstract {\r\n const controls = this.controls as { [key: string]: FormAbstract };\r\n return controls[key as string]!;\r\n }\r\n\r\n set(control: FormAbstract, key: keyof T): void {\r\n const controls = this.controls as { [key: string]: FormAbstract };\r\n delete controls[key as string];\r\n controls[key as string] = this.initControl_(control, key);\r\n }\r\n\r\n // !!! needed?\r\n add(control: FormAbstract, key: keyof T): void {\r\n const controls = this.controls as { [key: string]: FormAbstract };\r\n controls[key as string] = this.initControl_(control, key);\r\n }\r\n\r\n remove(control: FormAbstract): void {\r\n this.forEach_((c: FormAbstract, k: keyof T) => {\r\n if (c === control) {\r\n this.removeKey(k);\r\n }\r\n });\r\n }\r\n\r\n /*\r\n remove(control: FormAbstract): void {\r\n const key = Object.keys(this.controls_).find((key: keyof T) => (this.controls_[key] === control ? key : null));\r\n if (key) {\r\n this.removeKey(key);\r\n }\r\n }\r\n */\r\n\r\n removeKey(key: keyof T): void {\r\n const exhist: boolean = this.controls[key] !== undefined;\r\n delete this.controls_[key];\r\n }\r\n\r\n addValidators(...validators: FormValidator[]) {\r\n this.forEach_((control: FormAbstract) => control.addValidators(...validators));\r\n }\r\n\r\n replaceValidators(...validators: FormValidator[]) {\r\n this.forEach_((control: FormAbstract) => control.replaceValidators(...validators));\r\n }\r\n\r\n clearValidators() {\r\n this.forEach_((control: FormAbstract) => control.clearValidators());\r\n }\r\n\r\n protected forEach_(callback: Function): void {\r\n const controls = this.controls as { [key: string]: FormAbstract };\r\n Object.keys(controls).forEach(key => callback(controls[key], key));\r\n }\r\n\r\n protected reduce_(callback: Function, result: any): any {\r\n this.forEach_((control: FormAbstract, key: any) => {\r\n result = callback(result, control, key);\r\n });\r\n return result;\r\n }\r\n\r\n protected all_(key: (keyof FormAbstract), value: any): boolean {\r\n return this.reduce_((result: boolean, control: FormAbstract) => {\r\n return result && control[key] === value;\r\n }, true);\r\n }\r\n\r\n protected any_(key: (keyof FormAbstract), value: any): boolean {\r\n return this.reduce_((result: boolean, control: FormAbstract) => {\r\n return result || control[key] === value;\r\n }, false);\r\n }\r\n\r\n protected map_() {\r\n const controls = this.controls as { [key: string]: FormAbstract };\r\n return Object.keys(controls).map(key => controls[key]!);\r\n }\r\n\r\n // getter & setter\r\n get controls() {\r\n return this.controls_;\r\n }\r\n\r\n set controls(controls) {\r\n if (this.controls_ !== controls) {\r\n this.controls_ = controls;\r\n this.revalidate_();\r\n }\r\n }\r\n\r\n set disabled(disabled: boolean) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.disabled = disabled;\r\n });\r\n }\r\n\r\n set readonly(readonly: boolean) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.readonly = readonly;\r\n });\r\n }\r\n\r\n set hidden(hidden: boolean) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.hidden = hidden;\r\n });\r\n }\r\n\r\n set submitted(submitted: boolean) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.submitted = submitted;\r\n });\r\n }\r\n\r\n set touched(touched: boolean) {\r\n this.forEach_((control: FormAbstract) => {\r\n control.touched = touched;\r\n });\r\n }\r\n\r\n get value(): U {\r\n return this.reduce_((result: U, control: FormAbstract, key: string) => {\r\n if (control.enabled) {\r\n result[key as keyof U] = control.value;\r\n }\r\n return result;\r\n }, {});\r\n }\r\n\r\n set value(value: U) {\r\n this.forEach_((control: FormAbstract, key: string) => {\r\n control.value = value[key as keyof U];\r\n });\r\n }\r\n\r\n get errors(): ValidationError {\r\n return this.reduce_((result: ValidationError, control: FormAbstract) => {\r\n return Object.assign(result, control.errors);\r\n }, {});\r\n }\r\n\r\n set errors(errors) { }\r\n\r\n get emptyErrors(): ValidationError {\r\n return this.reduce_((result: ValidationError, control: FormAbstract) => {\r\n return Object.assign(result, control.emptyErrors);\r\n }, {});\r\n }\r\n\r\n set emptyErrors(emptyErrors) { }\r\n}\r\n","import { FormAbstract } from './form-abstract';\r\nimport { FormAbstractCollection } from './form-abstract-collection';\r\nimport { FormArrayControls, FormOptions, FormValidator, FormValue } from './types';\r\n\r\nexport class FormArray<T extends FormValue[] = FormValue[]> extends FormAbstractCollection<T, FormArrayControls> {\r\n\r\n constructor(controls: FormArrayControls = [], validators?: FormValidator | FormValidator[], initialOptions?: FormOptions) {\r\n super(controls, validators);\r\n this.setInitialOptions(initialOptions);\r\n }\r\n\r\n forEach_(callback: (control: FormAbstract, key: number) => any) {\r\n this.controls.forEach((control: FormAbstract, key: number) => callback(control, key));\r\n }\r\n\r\n map_() {\r\n return this.controls;\r\n }\r\n\r\n get value(): T {\r\n return this.reduce_((value: T, control: FormAbstract, key: number) => {\r\n value[key] = control.value;\r\n return value;\r\n }, []); // init as array\r\n }\r\n\r\n get length(): number {\r\n return this.controls.length;\r\n }\r\n\r\n protected init(control: FormAbstract, key: number): void {\r\n this.controls.length = Math.max(this.controls.length, key);\r\n this.controls[key] = this.initControl_(control, key);\r\n }\r\n\r\n set(control: FormAbstract, key: number): void {\r\n // this.controls.length = Math.max(this.controls.length, key);\r\n // this.controls[key] = this.initControl_(control);\r\n this.controls.splice(key, 1, this.initControl_(control, key));\r\n }\r\n\r\n add(control: FormAbstract, key: number): void {\r\n this.controls.length = Math.max(this.controls.length, key);\r\n this.controls[key] = this.initControl_(control, key);\r\n }\r\n\r\n push(control: FormAbstract): void {\r\n // this.controls.length = Math.max(this.controls.length, key);\r\n // this.controls[key] = this.initControl_(control);\r\n this.controls.push(this.initControl_(control, this.controls.length));\r\n }\r\n\r\n insert(control: FormAbstract, key: number): void {\r\n this.controls.splice(key, 0, this.initControl_(control, key));\r\n }\r\n\r\n remove(control: FormAbstract): void {\r\n const key: number = this.controls.indexOf(control);\r\n if (key !== -1) {\r\n this.removeKey(key);\r\n }\r\n }\r\n\r\n removeKey(key: number): void {\r\n if (this.controls.length > key) {\r\n this.controls.splice(key, 1);\r\n }\r\n }\r\n\r\n at(key: number) {\r\n return this.controls[key];\r\n }\r\n}\r\n\r\nexport function formArray(controls: FormArrayControls = [], validators?: FormValidator | FormValidator[]) {\r\n return new FormArray(controls, validators);\r\n}\r\n","import { FormAbstractCollection } from './form-abstract-collection';\r\nimport { FormGroupControls, FormOptions, FormValidator, FormValue } from './types';\r\n\r\nexport class FormGroup<T extends Record<string, FormValue> = FormValue> extends FormAbstractCollection<T, FormGroupControls> {\r\n constructor(controls: FormGroupControls = {}, validators?: FormValidator | FormValidator[], initialOptions?: FormOptions) {\r\n super(controls, validators);\r\n this.setInitialOptions(initialOptions);\r\n }\r\n}\r\n\r\nexport function formGroup(controls: FormGroupControls = {}, validators?: FormValidator | FormValidator[]) {\r\n return new FormGroup(controls, validators);\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * an email pattern validator\r\n */\r\nexport function EmailValidator(key: string = 'email'): FormValidator {\r\n const regex = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\r\n return function (value) {\r\n if (typeof value === 'string') {\r\n return regex.test(value) ? null : { [key]: true };\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { FormAbstract } from '../form-abstract';\r\nimport { FormValidator, FormValue } from '../types';\r\nimport { validValue } from '../utils';\r\n\r\n/**\r\n * an equality match validation on another field\r\n */\r\nexport function MatchValidator(\r\n getOtherValue: (value: FormValue, rootValue: FormValue, control?: FormAbstract, root?: FormAbstract) => any,\r\n key: string = 'match'\r\n): FormValidator {\r\n return function (value, rootValue, control, root) {\r\n let otherValue = getOtherValue(value, rootValue, control, root);\r\n otherValue = validValue(otherValue);\r\n return value !== otherValue ? { [key]: { value: value, match: otherValue } } : null;\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a max string length validator\r\n */\r\nexport function MaxLengthValidator(maxlength: number, key: string = 'maxlength'): FormValidator {\r\n return function (value) {\r\n if (maxlength == null) {\r\n return null;\r\n }\r\n if (typeof value === 'string') {\r\n const length = value ? value.length : 0;\r\n return length > maxlength ? { [key]: { requiredLength: maxlength, actualLength: length } } : null;\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a max number value validator\r\n */\r\nexport function MaxValidator(max: number, key: string = 'max'): FormValidator {\r\n return function (value) {\r\n value = typeof value === 'string' ? parseFloat(value) : typeof value === 'number' ? value : null;\r\n if (value == null || max == null) { // loose\r\n return null;\r\n }\r\n return !isNaN(value) && value > max ? { [key]: { max: max, actual: value } } : null;\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a min string length validator\r\n */\r\nexport function MinLengthValidator(minlength: number, key: string = 'minlength'): FormValidator {\r\n return function (value) {\r\n if (minlength == null) {\r\n return null;\r\n }\r\n if (typeof value === 'string') {\r\n const length = value ? value.length : 0;\r\n return length < minlength ? { [key]: { requiredLength: minlength, actualLength: length } } : null;\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a min number value validator\r\n */\r\nexport function MinValidator(min: number, key: string = 'min'): FormValidator {\r\n return function (value) {\r\n value = typeof value === 'string' ? parseFloat(value) : typeof value === 'number' ? value : null;\r\n if (value == null || min == null) { // loose\r\n return null;\r\n }\r\n return !isNaN(value) && value < min ? { [key]: { min: min, actual: value } } : null;\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a null validator\r\n */\r\nexport function NullValidator(): FormValidator {\r\n return function (value) {\r\n return null;\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a regex pattern validator\r\n */\r\nexport function PatternValidator(pattern: string | RegExp, key: string = 'pattern'): FormValidator {\r\n return function (value) {\r\n if (pattern == null) { // loose\r\n return null;\r\n }\r\n if (typeof value === 'string') {\r\n const regex = patternToRegEx(pattern);\r\n return regex.test(value) ? null : { [key]: { requiredPattern: regex.toString(), actualValue: value } };\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n\r\nfunction patternToRegEx(pattern: string | RegExp) {\r\n let regex;\r\n if (pattern instanceof RegExp) {\r\n regex = pattern;\r\n } else if (typeof pattern === 'string') {\r\n pattern = pattern.charAt(0) === '^' ? pattern : `^${pattern}`;\r\n pattern = pattern.charAt(pattern.length - 1) === '$' ? pattern : `${pattern}$`;\r\n regex = new RegExp(pattern);\r\n }\r\n return regex || new RegExp('');\r\n}\r\n","import { isArray } from '@websolutespa/bom-core';\r\nimport { FormAbstract } from '../form-abstract';\r\nimport { FormValidator, FormValue } from '../types';\r\n\r\n/**\r\n * a required dependant on another field\r\n */\r\nexport function RequiredIfValidator(condition: (value: FormValue, rootValue: FormValue, control?: FormAbstract, root?: FormAbstract) => boolean, key: string = 'required'): FormValidator {\r\n return function (value, rootValue, control, root) {\r\n // console.log('RequiredIfValidator', value, Boolean(condition(value, rootValue, control, root)));\r\n if (Boolean(condition(value, rootValue, control, root)) === true) {\r\n if (isArray(value) || typeof value === 'string') {\r\n return (value.length === 0) ? { [key]: true } : null;\r\n } else {\r\n return value == null ? { [key]: true } : null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { FormValidator } from '../types';\r\n\r\n/**\r\n * a required and true validator\r\n */\r\nexport function RequiredTrueValidator(key: string = 'required'): FormValidator {\r\n return function (value) {\r\n // console.log('RequiredTrueValidator', value, value === true ? null : { required: true });\r\n return value === true ? null : { [key]: true };\r\n };\r\n}\r\n","import { isArray } from '@websolutespa/bom-core';\r\nimport { FormValidator } from '../types';\r\n\r\n/**\r\n * a required validator\r\n */\r\nexport function RequiredValidator(key: string = 'required'): FormValidator {\r\n return function (value) {\r\n // console.log('RequiredValidator', value, (value == null || value.length === 0) ? { required: true } : null);\r\n if (isArray(value) || typeof value === 'string') {\r\n return (value.length === 0) ? { [key]: true } : null;\r\n } else {\r\n return value == null ? { [key]: true } : null;\r\n }\r\n };\r\n // return (value == null || value.length === 0) ? 'required' : null;\r\n}\r\n","'use client';\r\n\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { FormAbstract, FormState, mapErrors_, mapState_ } from '../../forms';\r\n\r\nexport function useControl<T>(\r\n control: FormAbstract\r\n): [FormState<T>, (value: T | null) => void, () => void, () => void, FormAbstract] {\r\n\r\n const [state, setState] = useState<FormState<T>>({\r\n value: control.value as T,\r\n flags: mapState_(control.state),\r\n errors: mapErrors_(control.errors),\r\n });\r\n\r\n const setValue = useCallback((value: T | null) => {\r\n control.patch(value);\r\n }, [control]);\r\n\r\n const setTouched = useCallback(() => {\r\n control.touched = true;\r\n }, [control]);\r\n\r\n const reset = useCallback(() => {\r\n control.reset();\r\n }, [control]);\r\n\r\n useEffect(() => {\r\n const onChange = (value: T) => {\r\n const newState = {\r\n value,\r\n flags: mapState_(control.state),\r\n errors: mapErrors_(control.errors),\r\n };\r\n // console.log('useControl.onChange', control.schema, control.name, value);\r\n setState(newState);\r\n };\r\n control.on('change', onChange);\r\n // control.validateAndChange_();\r\n return () => control.off('change', onChange);\r\n }, [control]);\r\n\r\n return [state, setValue, setTouched, reset, control];\r\n}\r\n","import { DependencyList, useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { FormArray, FormGroup, FormState, mapErrors_, mapState_ } from '../../forms';\r\n\r\nexport function useForm<T, U extends (FormGroup | FormArray)>(factory: () => U, deps: DependencyList = []): [FormState<T>, (value: any) => void, () => void, () => void, U] {\r\n const collection: U = useMemo<U>(factory, deps);\r\n\r\n const setValue = useCallback((value: any) => {\r\n collection.patch(value);\r\n }, deps);\r\n\r\n const setTouched = useCallback(() => {\r\n collection.touched = true;\r\n }, deps);\r\n\r\n const reset = useCallback(() => {\r\n collection.reset();\r\n }, deps);\r\n\r\n const [state, setState] = useState<FormState<T>>({\r\n value: collection.value as T,\r\n flags: mapState_(collection.state),\r\n errors: mapErrors_(collection.errors),\r\n });\r\n\r\n useEffect(() => {\r\n const onChange = (value: T) => {\r\n const newState = {\r\n value,\r\n flags: mapState_(collection.state),\r\n errors: mapErrors_(collection.errors),\r\n };\r\n // console.log('useForm.onChange', newState);\r\n setState(newState);\r\n };\r\n collection.on('change', onChange);\r\n collection.validateAndChange_();\r\n return () => collection.off('change', onChange);\r\n }, deps);\r\n\r\n return [state, setValue, setTouched, reset, collection];\r\n}\r\n","import { DependencyList, useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { FormArray, FormControl, FormGroup, FormState, mapErrors_, mapState_ } from '../../forms';\r\nimport { FormValue, IFormBuilderArraySchema, IFormBuilderControlSchema, IFormBuilderGroupSchema, IFormBuilderGroupValues, IFormBuilderSchema } from '../../forms/types';\r\n\r\n/**\r\n * @deprecated Since version 1.9.0. Will be deleted in version 1.10.0. Use useFormSchema instead.\r\n */\r\nexport function useFormBuilder<\r\n T extends (Record<string, FormValue> | FormValue[]) = Record<string, FormValue>,\r\n U extends (T extends FormValue[] ? FormArray<T> : FormGroup<T>) = T extends FormValue[] ? FormArray<T> : FormGroup<T>\r\n>(\r\n schema: IFormBuilderSchema,\r\n deps: DependencyList = []\r\n): [FormState<T>, (value: Partial<T>) => void, () => void, () => void, U] {\r\n\r\n const collection: U = useMemo<U>(() => {\r\n // console.log('useFormBuilder.rebuild', schema);\r\n if (Array.isArray(schema)) {\r\n return mapArray_(schema) as U;\r\n } else {\r\n return mapGroup_(schema) as U;\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const setValue = useCallback((value: Partial<T>) => {\r\n collection.patch(value);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const setTouched = useCallback(() => {\r\n collection.touched = true;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const reset = useCallback(() => {\r\n collection.reset();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const [state, setState] = useState<FormState<T>>({\r\n value: collection.value as T,\r\n flags: mapState_(collection.state),\r\n errors: mapErrors_(collection.errors),\r\n });\r\n\r\n useEffect(() => {\r\n const onChange = (value: T) => {\r\n // console.log('useFormBuilder.onChange', value);\r\n const newState = {\r\n value,\r\n flags: mapState_(collection.state),\r\n errors: mapErrors_(collection.errors),\r\n };\r\n setState(newState);\r\n };\r\n collection.on('change', onChange);\r\n // collection.validateAndChange_();\r\n collection.revalidate_();\r\n // const value = collection.value;\r\n // collection.reset();\r\n // collection.patch(value);\r\n // console.log('subscribe');\r\n return () => collection.off('change', onChange);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n // console.log('useFormBuilder', collection.value);\r\n\r\n return [state, setValue, setTouched, reset, collection];\r\n}\r\n\r\nfunction mapGroup_(children: IFormBuilderGroupSchema, schema?: IFormBuilderControlSchema): FormGroup {\r\n const controls: IFormBuilderGroupValues = {};\r\n Object.keys(children).forEach(key => {\r\n controls[key] = mapSchema_({ name: key, ...children[key]! });\r\n });\r\n const group = new FormGroup(controls, schema?.validators, schema);\r\n return group;\r\n}\r\n\r\nfunction mapArray_(children: IFormBuilderControlSchema[], schema?: IFormBuilderControlSchema): FormArray {\r\n const controls = children.map(x => mapSchema_(x));\r\n const array = new FormArray(controls, schema?.validators, schema);\r\n return array;\r\n}\r\n\r\nfunction mapControl_(schema: IFormBuilderControlSchema): FormControl {\r\n return new FormControl(schema.value, schema.validators, schema);\r\n}\r\n\r\nfunction mapSchema_(schema: IFormBuilderControlSchema): FormGroup | FormArray | FormControl {\r\n switch (schema.schema) {\r\n case 'group':\r\n return mapGroup_(schema.children as IFormBuilderGroupSchema || {}, schema);\r\n case 'array':\r\n return mapArray_(schema.children as IFormBuilderArraySchema || [], schema);\r\n default:\r\n return mapControl_(schema);\r\n }\r\n}\r\n","import { DependencyList, useCallback, useEffect, useMemo } from 'react';\r\nimport { FormArray, FormControl, FormGroup } from '../../forms';\r\nimport { FormValue, IFormBuilderArraySchema, IFormBuilderControlSchema, IFormBuilderGroupSchema, IFormBuilderGroupValues, IFormBuilderSchema } from '../../forms/types';\r\n\r\nexport function useFormSchema<\r\n T extends (Record<string, FormValue> | FormValue[]) = Record<string, FormValue>,\r\n U extends (T extends FormValue[] ? FormArray<T> : FormGroup<T>) = T extends FormValue[] ? FormArray<T> : FormGroup<T>\r\n>(\r\n schema: IFormBuilderSchema,\r\n deps: DependencyList = []\r\n): {\r\n setValue: (value: Partial<T>) => void,\r\n setTouched: () => void,\r\n reset: () => void,\r\n form: U,\r\n} {\r\n const form: U = useMemo<U>(() => {\r\n // console.log(' useFormSchema.rebuild', schema);\r\n if (Array.isArray(schema)) {\r\n return mapArray_(schema) as U;\r\n } else {\r\n return mapGroup_(schema) as U;\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const setValue = useCallback((value: Partial<T>) => {\r\n form.patch(value);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const setTouched = useCallback(() => {\r\n form.touched = true;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n const reset = useCallback(() => {\r\n form.reset();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n useEffect(() => {\r\n /*\r\n const onChange = (value: T) => {\r\n console.log('useFormSchema.onChange', value);\r\n };\r\n form.on('change', onChange);\r\n // form.validateAndChange_();\r\n */\r\n form.revalidate_();\r\n /*\r\n // const value = form.value;\r\n // form.reset();\r\n // form.patch(value);\r\n // console.log('subscribe');\r\n return () => form.off('change', onChange);\r\n */\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n\r\n // console.log(' useFormSchema', form.value);\r\n\r\n return {\r\n form,\r\n setTouched,\r\n setValue,\r\n reset,\r\n };\r\n}\r\n\r\nfunction mapGroup_(children: IFormBuilderGroupSchema, schema?: IFormBuilderControlSchema): FormGroup {\r\n const controls: IFormBuilderGroupValues = {};\r\n Object.keys(children).forEach(key => {\r\n controls[key] = mapSchema_({ name: key, ...children[key]! });\r\n });\r\n const group = new FormGroup(controls, schema?.validators, schema);\r\n return group;\r\n}\r\n\r\nfunction mapArray_(children: IFormBuilderControlSchema[], schema?: IFormBuilderControlSchema): FormArray {\r\n const controls = children.map(x => mapSchema_(x));\r\n const array = new FormArray(controls, schema?.validators, schema);\r\n return array;\r\n}\r\n\r\nfunction mapControl_(schema: IFormBuilderControlSchema): FormControl {\r\n return new FormControl(schema.value, schema.validators, schema);\r\n}\r\n\r\nfunction mapSchema_(schema: IFormBuilderControlSchema): FormGroup | FormArray | FormControl {\r\n switch (schema.schema) {\r\n case 'group':\r\n return mapGroup_(schema.children as IFormBuilderGroupSchema || {}, schema);\r\n case 'array':\r\n return mapArray_(schema.children as IFormBuilderArraySchema || [], schema);\r\n default:\r\n return mapControl_(schema);\r\n }\r\n}\r\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@websolutespa/bom-mixer-forms",
3
- "version": "2.0.1-next.2",
3
+ "version": "3.0.0",
4
4
  "description": "Mixer Forms module of the BOM Repository",
5
5
  "keywords": [
6
6
  "bom",
@@ -25,18 +25,18 @@
25
25
  },
26
26
  "dependencies": {},
27
27
  "peerDependencies": {
28
- "@websolutespa/bom-core": "2.0.1-next.2",
29
- "@websolutespa/bom-mixer-hooks": "2.0.1-next.2",
30
- "react": "19.2.1"
28
+ "@websolutespa/bom-core": "*",
29
+ "@websolutespa/bom-mixer-hooks": "*",
30
+ "react": "19.2.3"
31
31
  },
32
32
  "devDependencies": {
33
- "@types/react": "19.2.1",
34
- "@types/react-dom": "19.2.1",
35
- "@websolutespa/bom-cli": "2.0.1-next.2",
36
- "@websolutespa/test": "2.0.1-next.2",
37
- "@websolutespa/tsconfig": "2.0.1-next.2",
33
+ "@types/react": "19.2.10",
34
+ "@types/react-dom": "19.2.3",
35
+ "@websolutespa/bom-cli": "*",
36
+ "@websolutespa/test": "*",
37
+ "@websolutespa/tsconfig": "*",
38
38
  "eslint": "9.31.0",
39
- "@websolutespa/eslint-config": "2.0.1-next.2",
39
+ "@websolutespa/eslint-config": "*",
40
40
  "raw-loader": "4.0.2",
41
41
  "typescript": "5.8.3"
42
42
  },
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import { useCallback, useEffect, useState } from 'react';
2
4
  import { FormAbstract, FormState, mapErrors_, mapState_ } from '../../forms';
3
5