@aemforms/af-core 0.22.136 → 0.22.138

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { Action, BaseModel, ContainerJson, ContainerModel, FieldModel, FieldsetModel, FormCreationMode, FormModel, IFormFieldFactory, RulesJson } from './types/index';
1
+ import { Action, BaseModel, ContainerJson, ContainerModel, FieldJson, FieldModel, FieldsetModel, FormCreationMode, FormModel, IFormFieldFactory, RulesJson } from './types/index';
2
2
  import Scriptable from './Scriptable';
3
3
  import DataGroup from './data/DataGroup';
4
4
  declare abstract class Container<T extends ContainerJson & RulesJson> extends Scriptable<T> implements ContainerModel {
@@ -29,12 +29,126 @@ declare abstract class Container<T extends ContainerJson & RulesJson> extends Sc
29
29
  private _getFormAndSitesState;
30
30
  private getItemsState;
31
31
  getState(isRepeatableChild?: boolean, forRestore?: boolean): T & {
32
- items: any[];
33
32
  enabled: boolean | undefined;
34
33
  readOnly: any;
34
+ _itemTemplate?: {
35
+ description?: string | undefined;
36
+ rules?: import("./types/Json").Items<string> | undefined;
37
+ events?: import("./types/Json").Items<string | string[] | undefined> | undefined;
38
+ enumNames?: string[] | undefined;
39
+ enum?: any[] | undefined;
40
+ accept?: string[] | undefined;
41
+ enforceEnum?: boolean | undefined;
42
+ exclusiveMinimum?: string | number | undefined;
43
+ exclusiveMaximum?: string | number | undefined;
44
+ format?: string | undefined;
45
+ maxFileSize?: string | number | undefined;
46
+ maxLength?: number | undefined;
47
+ maximum?: string | number | undefined;
48
+ maxItems?: number | undefined;
49
+ minOccur?: number | undefined;
50
+ maxOccur?: number | undefined;
51
+ minLength?: number | undefined;
52
+ minimum?: string | number | undefined;
53
+ minItems?: number | undefined;
54
+ pattern?: string | undefined;
55
+ required?: boolean | undefined;
56
+ step?: number | undefined;
57
+ type?: string | undefined;
58
+ validationExpression?: string | undefined;
59
+ uniqueItems?: boolean | undefined;
60
+ dataRef?: string | null | undefined;
61
+ lang?: string | undefined;
62
+ ':type'?: string | undefined;
63
+ appliedCssClassNames?: string | undefined;
64
+ label?: import("./types/Json").Label | undefined;
65
+ enabled?: boolean | undefined;
66
+ visible?: boolean | undefined;
67
+ name?: string | undefined;
68
+ constraintMessages?: import("./types/Json").ConstraintsMessages | undefined;
69
+ fieldType?: string | undefined;
70
+ errorMessage?: string | undefined;
71
+ properties?: {
72
+ [key: string]: any;
73
+ } | undefined;
74
+ repeatable?: boolean | undefined;
75
+ screenReaderText?: string | undefined;
76
+ tooltip?: string | undefined;
77
+ altText?: string | undefined;
78
+ viewType?: string | undefined;
79
+ buttonType?: string | undefined;
80
+ placeholder?: string | undefined;
81
+ readOnly?: boolean | undefined;
82
+ valid?: boolean | undefined;
83
+ validity?: any;
84
+ validationMessage?: string | undefined;
85
+ default?: any;
86
+ value?: any;
87
+ displayFormat?: string | undefined;
88
+ editFormat?: string | undefined;
89
+ editValue?: string | undefined;
90
+ displayValue?: string | undefined;
91
+ displayValueExpression?: string | undefined;
92
+ emptyValue?: "" | "undefined" | "null" | undefined;
93
+ checked?: boolean | undefined;
94
+ } | {
95
+ description?: string | undefined;
96
+ rules?: import("./types/Json").Items<string> | undefined;
97
+ events?: import("./types/Json").Items<string | string[] | undefined> | undefined;
98
+ enumNames?: string[] | undefined;
99
+ enum?: any[] | undefined;
100
+ accept?: string[] | undefined;
101
+ enforceEnum?: boolean | undefined;
102
+ exclusiveMinimum?: string | number | undefined;
103
+ exclusiveMaximum?: string | number | undefined;
104
+ format?: string | undefined;
105
+ maxFileSize?: string | number | undefined;
106
+ maxLength?: number | undefined;
107
+ maximum?: string | number | undefined;
108
+ maxItems?: number | undefined;
109
+ minOccur?: number | undefined;
110
+ maxOccur?: number | undefined;
111
+ minLength?: number | undefined;
112
+ minimum?: string | number | undefined;
113
+ minItems?: number | undefined;
114
+ pattern?: string | undefined;
115
+ required?: boolean | undefined;
116
+ step?: number | undefined;
117
+ type?: "object" | "array" | undefined;
118
+ validationExpression?: string | undefined;
119
+ uniqueItems?: boolean | undefined;
120
+ dataRef?: string | null | undefined;
121
+ lang?: string | undefined;
122
+ ':type'?: string | undefined;
123
+ appliedCssClassNames?: string | undefined;
124
+ label?: import("./types/Json").Label | undefined;
125
+ enabled?: boolean | undefined;
126
+ visible?: boolean | undefined;
127
+ name?: string | undefined;
128
+ constraintMessages?: import("./types/Json").ConstraintsMessages | undefined;
129
+ fieldType?: string | undefined;
130
+ errorMessage?: string | undefined;
131
+ properties?: {
132
+ [key: string]: any;
133
+ } | undefined;
134
+ repeatable?: boolean | undefined;
135
+ screenReaderText?: string | undefined;
136
+ tooltip?: string | undefined;
137
+ altText?: string | undefined;
138
+ viewType?: string | undefined;
139
+ buttonType?: string | undefined;
140
+ items: (FieldJson | ContainerJson)[];
141
+ initialItems?: number | undefined;
142
+ activeChild?: string | undefined;
143
+ readOnly?: boolean | undefined;
144
+ } | undefined;
145
+ items: any[];
35
146
  ':items'?: undefined;
36
147
  ':itemsOrder'?: undefined;
37
- _dependents?: string[] | undefined;
148
+ _dependents?: {
149
+ id: string;
150
+ propertyName: string | undefined;
151
+ }[] | undefined;
38
152
  allowedComponents?: undefined;
39
153
  columnClassNames?: undefined;
40
154
  columnCount?: undefined;
@@ -197,6 +197,8 @@ declare class Field extends Scriptable<FieldJson> implements FieldModel {
197
197
  errorMessage?: string | undefined;
198
198
  properties: {
199
199
  [key: string]: any;
200
+ } & {
201
+ [key: string]: any;
200
202
  };
201
203
  repeatable?: boolean | undefined;
202
204
  screenReaderText?: string | undefined;
@@ -213,7 +215,10 @@ declare class Field extends Scriptable<FieldJson> implements FieldModel {
213
215
  displayValueExpression?: string | undefined;
214
216
  emptyValue?: "" | "undefined" | "null" | undefined;
215
217
  checked?: boolean | undefined;
216
- _dependents?: string[] | undefined;
218
+ _dependents?: {
219
+ id: string;
220
+ propertyName: string | undefined;
221
+ }[] | undefined;
217
222
  allowedComponents?: undefined;
218
223
  columnClassNames?: undefined;
219
224
  columnCount?: undefined;
@@ -4,7 +4,7 @@ import SubmitMetaData from './SubmitMetaData';
4
4
  import EventQueue from './controller/EventQueue';
5
5
  import { LogLevel, Logger } from './controller/Logger';
6
6
  import RuleEngine from './rules/RuleEngine';
7
- import { Action, BaseModel, FieldModel, FieldsetModel, FocusOption, FormCreationMode, FormJson, FormModel, IFormFieldFactory } from './types/index';
7
+ import { Action, BaseModel, FieldModel, FieldsetModel, FocusOption, FormCreationMode, FormJson, FormModel, IFormFieldFactory, Items } from './types/index';
8
8
  import { Version } from './utils/Version';
9
9
  export declare const currentVersion: Version;
10
10
  declare class Form extends Container<FormJson> implements FormModel {
@@ -97,12 +97,126 @@ declare class Form extends Container<FormJson> implements FormModel {
97
97
  adaptiveform?: string | undefined;
98
98
  lang?: string | undefined;
99
99
  } & {
100
- items: any[];
101
100
  enabled: boolean | undefined;
102
101
  readOnly: any;
102
+ _itemTemplate?: {
103
+ description?: string | undefined;
104
+ rules?: Items<string> | undefined;
105
+ events?: Items<string | string[] | undefined> | undefined;
106
+ enumNames?: string[] | undefined;
107
+ enum?: any[] | undefined;
108
+ accept?: string[] | undefined;
109
+ enforceEnum?: boolean | undefined;
110
+ exclusiveMinimum?: string | number | undefined;
111
+ exclusiveMaximum?: string | number | undefined;
112
+ format?: string | undefined;
113
+ maxFileSize?: string | number | undefined;
114
+ maxLength?: number | undefined;
115
+ maximum?: string | number | undefined;
116
+ maxItems?: number | undefined;
117
+ minOccur?: number | undefined;
118
+ maxOccur?: number | undefined;
119
+ minLength?: number | undefined;
120
+ minimum?: string | number | undefined;
121
+ minItems?: number | undefined;
122
+ pattern?: string | undefined;
123
+ required?: boolean | undefined;
124
+ step?: number | undefined;
125
+ type?: string | undefined;
126
+ validationExpression?: string | undefined;
127
+ uniqueItems?: boolean | undefined;
128
+ dataRef?: string | null | undefined;
129
+ lang?: string | undefined;
130
+ ':type'?: string | undefined;
131
+ appliedCssClassNames?: string | undefined;
132
+ label?: import("./types/Json").Label | undefined;
133
+ enabled?: boolean | undefined;
134
+ visible?: boolean | undefined;
135
+ name?: string | undefined;
136
+ constraintMessages?: import("./types/Json").ConstraintsMessages | undefined;
137
+ fieldType?: string | undefined;
138
+ errorMessage?: string | undefined;
139
+ properties?: {
140
+ [key: string]: any;
141
+ } | undefined;
142
+ repeatable?: boolean | undefined;
143
+ screenReaderText?: string | undefined;
144
+ tooltip?: string | undefined;
145
+ altText?: string | undefined;
146
+ viewType?: string | undefined;
147
+ buttonType?: string | undefined;
148
+ placeholder?: string | undefined;
149
+ readOnly?: boolean | undefined;
150
+ valid?: boolean | undefined;
151
+ validity?: any;
152
+ validationMessage?: string | undefined;
153
+ default?: any;
154
+ value?: any;
155
+ displayFormat?: string | undefined;
156
+ editFormat?: string | undefined;
157
+ editValue?: string | undefined;
158
+ displayValue?: string | undefined;
159
+ displayValueExpression?: string | undefined;
160
+ emptyValue?: "" | "undefined" | "null" | undefined;
161
+ checked?: boolean | undefined;
162
+ } | {
163
+ description?: string | undefined;
164
+ rules?: Items<string> | undefined;
165
+ events?: Items<string | string[] | undefined> | undefined;
166
+ enumNames?: string[] | undefined;
167
+ enum?: any[] | undefined;
168
+ accept?: string[] | undefined;
169
+ enforceEnum?: boolean | undefined;
170
+ exclusiveMinimum?: string | number | undefined;
171
+ exclusiveMaximum?: string | number | undefined;
172
+ format?: string | undefined;
173
+ maxFileSize?: string | number | undefined;
174
+ maxLength?: number | undefined;
175
+ maximum?: string | number | undefined;
176
+ maxItems?: number | undefined;
177
+ minOccur?: number | undefined;
178
+ maxOccur?: number | undefined;
179
+ minLength?: number | undefined;
180
+ minimum?: string | number | undefined;
181
+ minItems?: number | undefined;
182
+ pattern?: string | undefined;
183
+ required?: boolean | undefined;
184
+ step?: number | undefined;
185
+ type?: "object" | "array" | undefined;
186
+ validationExpression?: string | undefined;
187
+ uniqueItems?: boolean | undefined;
188
+ dataRef?: string | null | undefined;
189
+ lang?: string | undefined;
190
+ ':type'?: string | undefined;
191
+ appliedCssClassNames?: string | undefined;
192
+ label?: import("./types/Json").Label | undefined;
193
+ enabled?: boolean | undefined;
194
+ visible?: boolean | undefined;
195
+ name?: string | undefined;
196
+ constraintMessages?: import("./types/Json").ConstraintsMessages | undefined;
197
+ fieldType?: string | undefined;
198
+ errorMessage?: string | undefined;
199
+ properties?: {
200
+ [key: string]: any;
201
+ } | undefined;
202
+ repeatable?: boolean | undefined;
203
+ screenReaderText?: string | undefined;
204
+ tooltip?: string | undefined;
205
+ altText?: string | undefined;
206
+ viewType?: string | undefined;
207
+ buttonType?: string | undefined;
208
+ items: (import("./types/Json").FieldJson | import("./types/Json").ContainerJson)[];
209
+ initialItems?: number | undefined;
210
+ activeChild?: string | undefined;
211
+ readOnly?: boolean | undefined;
212
+ } | undefined;
213
+ items: any[];
103
214
  ':items'?: undefined;
104
215
  ':itemsOrder'?: undefined;
105
- _dependents?: string[] | undefined;
216
+ _dependents?: {
217
+ id: string;
218
+ propertyName: string | undefined;
219
+ }[] | undefined;
106
220
  allowedComponents?: undefined;
107
221
  columnClassNames?: undefined;
108
222
  columnCount?: undefined;
@@ -6,6 +6,7 @@ export declare class Logger {
6
6
  warn(msg: string): void;
7
7
  error(msg: string): void;
8
8
  log(msg: string, level: LogFunction): void;
9
+ isLevelEnabled(level: LogFunction): boolean;
9
10
  private logLevel;
10
11
  constructor(logLevel?: LogLevel);
11
12
  }
@@ -33,7 +33,7 @@ declare class FunctionRuntimeImpl {
33
33
  _signature: never[];
34
34
  };
35
35
  importData: {
36
- _func: (args: Array<unknown>, data: unknown, interpreter: any) => {};
36
+ _func: (args: Array<unknown>, data: unknown, interpreter: any) => any;
37
37
  _signature: never[];
38
38
  };
39
39
  submitForm: {
@@ -44,6 +44,14 @@ declare class FunctionRuntimeImpl {
44
44
  _func: (args: Array<unknown>, data: unknown, interpreter: any) => {};
45
45
  _signature: never[];
46
46
  };
47
+ setVariable: {
48
+ _func: (args: Array<unknown>, data: unknown, interpreter: any) => {};
49
+ _signature: never[];
50
+ };
51
+ getVariable: {
52
+ _func: (args: Array<unknown>, data: unknown, interpreter: any) => any;
53
+ _signature: never[];
54
+ };
47
55
  request: {
48
56
  _func: (args: Array<unknown>, data: unknown, interpreter: any) => Promise<any>;
49
57
  _signature: never[];
@@ -99,6 +107,10 @@ declare class FunctionRuntimeImpl {
99
107
  _func: (args: Array<unknown>, data: unknown, interpreter: any) => number;
100
108
  _signature: never[];
101
109
  };
110
+ today: {
111
+ _func: () => number;
112
+ _signature: never[];
113
+ };
102
114
  };
103
115
  }
104
116
  export declare const FunctionRuntime: FunctionRuntimeImpl;
@@ -12,7 +12,7 @@ declare class RuleEngine {
12
12
  ast: any;
13
13
  };
14
14
  execute(node: any, data: any, globals: any, useValueOf: boolean | undefined, eString: string): any;
15
- trackDependency(subscriber: BaseModel): void;
15
+ trackDependency(subscriber: BaseModel, propertyName?: string): void;
16
16
  setDependencyTracking(track: boolean): void;
17
17
  getDependencyTracking(): boolean;
18
18
  }
@@ -79,7 +79,7 @@ export interface BaseModel extends ConstraintsJson, WithController {
79
79
  getRuleNode(): any;
80
80
  ruleNodeReference(): any;
81
81
  _initialize(mode?: FormCreationMode): any;
82
- _addDependent(dependent: BaseModel): any;
82
+ _addDependent(dependent: BaseModel, propertyName?: string): any;
83
83
  _eventSource: EventSource;
84
84
  readonly fragment: string;
85
85
  }
package/lib/BaseNode.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Action, BaseJson, BaseModel, callbackFn, ContainerModel, FormCreationMode, FormModel, Primitives, ValidationError, EventSource } from './types/index';
2
+ import { PropertiesManager } from './PropertiesManager.js';
2
3
  import DataGroup from './data/DataGroup';
3
4
  import DataValue from './data/DataValue';
4
5
  export declare const editableProperties: string[];
@@ -22,6 +23,7 @@ export declare abstract class BaseNode<T extends BaseJson> implements BaseModel
22
23
  _eventSource: EventSource;
23
24
  protected _fragment: string;
24
25
  protected _idSet: Set<string> | undefined;
26
+ private _propertiesManager;
25
27
  protected createIdSet(): Set<string> | undefined;
26
28
  get isContainer(): boolean;
27
29
  constructor(params: T, _options: {
@@ -56,9 +58,15 @@ export declare abstract class BaseNode<T extends BaseJson> implements BaseModel
56
58
  set label(l: import("./types/Json").Label | undefined);
57
59
  get uniqueItems(): boolean | undefined;
58
60
  isTransparent(): boolean;
59
- getDependents(): string[];
61
+ getDependents(): {
62
+ id: string;
63
+ propertyName: string | undefined;
64
+ }[];
60
65
  getState(forRestore?: boolean): T & {
61
- _dependents?: string[] | undefined;
66
+ _dependents?: {
67
+ id: string;
68
+ propertyName: string | undefined;
69
+ }[] | undefined;
62
70
  allowedComponents?: undefined;
63
71
  columnClassNames?: undefined;
64
72
  columnCount?: undefined;
@@ -78,7 +86,7 @@ export declare abstract class BaseNode<T extends BaseJson> implements BaseModel
78
86
  subscribe(callback: callbackFn, eventName?: string): {
79
87
  unsubscribe: () => void;
80
88
  };
81
- _addDependent(dependent: BaseModel): void;
89
+ _addDependent(dependent: BaseModel, propertyName?: string): void;
82
90
  removeDependent(dependent: BaseModel): void;
83
91
  abstract validate(): Array<ValidationError>;
84
92
  abstract executeAction(action: Action): any;
@@ -98,6 +106,7 @@ export declare abstract class BaseNode<T extends BaseJson> implements BaseModel
98
106
  set properties(p: {
99
107
  [key: string]: any;
100
108
  });
109
+ getPropertiesManager(): PropertiesManager;
101
110
  abstract defaultDataModel(name: string | number): DataValue | undefined;
102
111
  abstract syncDataAndFormModel(a?: DataValue | DataGroup): any;
103
112
  getNonTransparentParent(): ContainerModel;
package/lib/BaseNode.js CHANGED
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.BaseNode = exports.exclude = exports.include = exports.dependencyTracked = exports.qualifiedName = exports.target = exports.staticFields = exports.dynamicProps = exports.editableProperties = void 0;
13
13
  const index_1 = require("./types/index");
14
14
  const Events_1 = require("./controller/Events");
15
+ const PropertiesManager_js_1 = require("./PropertiesManager.js");
15
16
  const DataRefParser_1 = require("./utils/DataRefParser");
16
17
  const EmptyDataValue_1 = __importDefault(require("./data/EmptyDataValue"));
17
18
  const ValidationUtils_1 = require("./utils/ValidationUtils");
@@ -86,7 +87,7 @@ function dependencyTracked() {
86
87
  const get = descriptor.get;
87
88
  if (get != undefined) {
88
89
  descriptor.get = function () {
89
- this.ruleEngine.trackDependency(this);
90
+ this.ruleEngine.trackDependency(this, propertyKey);
90
91
  return get.call(this);
91
92
  };
92
93
  }
@@ -133,6 +134,7 @@ class BaseNode {
133
134
  else if ((_b = this.parent) === null || _b === void 0 ? void 0 : _b.fragment) {
134
135
  this._fragment = this.parent.fragment;
135
136
  }
137
+ this._propertiesManager = new PropertiesManager_js_1.PropertiesManager(this);
136
138
  }
137
139
  createIdSet() {
138
140
  return new Set();
@@ -256,7 +258,11 @@ class BaseNode {
256
258
  return this._jsonModel.label;
257
259
  }
258
260
  set label(l) {
259
- if (l !== this._jsonModel.label) {
261
+ const isLabelSame = (l !== null && this._jsonModel.label !== null &&
262
+ typeof l === 'object' && typeof this._jsonModel.label === 'object') ?
263
+ JSON.stringify(l) === JSON.stringify(this._jsonModel.label) :
264
+ l === this._jsonModel.label;
265
+ if (!isLabelSame) {
260
266
  const changeAction = (0, Events_1.propertyChange)('label', l, this._jsonModel.label);
261
267
  this._jsonModel = Object.assign(Object.assign({}, this._jsonModel), { label: l });
262
268
  this.notifyDependents(changeAction);
@@ -271,20 +277,22 @@ class BaseNode {
271
277
  return !this._jsonModel.name && !isNonTransparent;
272
278
  }
273
279
  getDependents() {
274
- return this._dependents.map(x => x.node.id);
280
+ return this._dependents.map(x => ({ id: x.node.id, propertyName: x.propertyName }));
275
281
  }
276
282
  getState(forRestore = false) {
277
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, this._jsonModel), { properties: this.properties, index: this.index, parent: undefined, qualifiedName: this.qualifiedName }), (this.repeatable === true ? {
278
- repeatable: true,
279
- minOccur: this.parent.minItems,
280
- maxOccur: this.parent.maxItems
281
- } : {})), { ':type': this[':type'] }), (forRestore ? {
282
- _dependents: this._dependents.length ? this.getDependents() : undefined,
283
- allowedComponents: undefined,
284
- columnClassNames: undefined,
285
- columnCount: undefined,
286
- gridClassNames: undefined
287
- } : {}));
283
+ return this.withDependencyTrackingControl(true, () => {
284
+ return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, this._jsonModel), { properties: this.properties, index: this.index, parent: undefined, qualifiedName: this.qualifiedName }), (this.repeatable === true ? {
285
+ repeatable: true,
286
+ minOccur: this.parent.minItems,
287
+ maxOccur: this.parent.maxItems
288
+ } : {})), { ':type': this[':type'] }), (forRestore ? {
289
+ _dependents: this._dependents.length ? this.getDependents() : undefined,
290
+ allowedComponents: undefined,
291
+ columnClassNames: undefined,
292
+ columnCount: undefined,
293
+ gridClassNames: undefined
294
+ } : {}));
295
+ });
288
296
  }
289
297
  subscribe(callback, eventName = 'change') {
290
298
  this._callbacks[eventName] = this._callbacks[eventName] || [];
@@ -295,13 +303,14 @@ class BaseNode {
295
303
  }
296
304
  };
297
305
  }
298
- _addDependent(dependent) {
306
+ _addDependent(dependent, propertyName) {
299
307
  if (this._dependents.find(({ node }) => node === dependent) === undefined) {
300
308
  const subscription = this.subscribe((change) => {
301
309
  const changes = change.payload.changes;
302
310
  const propsToLook = [...exports.dynamicProps, 'items'];
303
311
  const isPropChanged = changes.findIndex(x => {
304
- return propsToLook.indexOf(x.propertyName) > -1;
312
+ const changedPropertyName = x.propertyName;
313
+ return propsToLook.includes(changedPropertyName) || (changedPropertyName.startsWith('properties.') && propertyName === changedPropertyName);
305
314
  }) > -1;
306
315
  if (isPropChanged) {
307
316
  if (this.form.changeEventBehaviour === 'deps') {
@@ -312,7 +321,7 @@ class BaseNode {
312
321
  }
313
322
  }
314
323
  });
315
- this._dependents.push({ node: dependent, subscription });
324
+ this._dependents.push({ node: dependent, propertyName, subscription });
316
325
  }
317
326
  }
318
327
  removeDependent(dependent) {
@@ -348,9 +357,9 @@ class BaseNode {
348
357
  const depsToRestore = this._jsonModel._dependents;
349
358
  if (depsToRestore) {
350
359
  depsToRestore.forEach((x) => {
351
- const node = this.form.getElement(x);
360
+ const node = this.form.getElement(x.id);
352
361
  if (node) {
353
- this._addDependent(node);
362
+ this._addDependent(node, x.propertyName);
354
363
  }
355
364
  });
356
365
  this._jsonModel._dependents = undefined;
@@ -476,10 +485,13 @@ class BaseNode {
476
485
  return this._lang;
477
486
  }
478
487
  get properties() {
479
- return this._jsonModel.properties || {};
488
+ return this._propertiesManager.properties;
480
489
  }
481
490
  set properties(p) {
482
- this._setProperty('properties', Object.assign({}, p));
491
+ this._propertiesManager.properties = p;
492
+ }
493
+ getPropertiesManager() {
494
+ return this._propertiesManager;
483
495
  }
484
496
  getNonTransparentParent() {
485
497
  let nonTransparentParent = this.parent;
@@ -570,7 +582,4 @@ __decorate([
570
582
  __decorate([
571
583
  dependencyTracked()
572
584
  ], BaseNode.prototype, "label", null);
573
- __decorate([
574
- dependencyTracked()
575
- ], BaseNode.prototype, "properties", null);
576
585
  exports.BaseNode = BaseNode;
package/lib/Checkbox.d.ts CHANGED
@@ -129,6 +129,8 @@ declare class Checkbox extends Field {
129
129
  errorMessage?: string | undefined;
130
130
  properties: {
131
131
  [key: string]: any;
132
+ } & {
133
+ [key: string]: any;
132
134
  };
133
135
  repeatable?: boolean | undefined;
134
136
  screenReaderText?: string | undefined;
@@ -144,7 +146,10 @@ declare class Checkbox extends Field {
144
146
  value?: any;
145
147
  displayValueExpression?: string | undefined;
146
148
  emptyValue?: "" | "undefined" | "null" | undefined;
147
- _dependents?: string[] | undefined;
149
+ _dependents?: {
150
+ id: string;
151
+ propertyName: string | undefined;
152
+ }[] | undefined;
148
153
  allowedComponents?: undefined;
149
154
  columnClassNames?: undefined;
150
155
  columnCount?: undefined;