@aemforms/af-core 0.22.135 → 0.22.137

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.
@@ -1535,6 +1535,20 @@ class BaseNode {
1535
1535
  this.queueEvent(action);
1536
1536
  this.form.getEventQueue().runPendingQueue();
1537
1537
  }
1538
+ withDependencyTrackingControl(disableDependencyTracking, callback) {
1539
+ const currentDependencyTracking = this.form.ruleEngine.getDependencyTracking();
1540
+ if (disableDependencyTracking) {
1541
+ this.form.ruleEngine.setDependencyTracking(false);
1542
+ }
1543
+ try {
1544
+ return callback();
1545
+ }
1546
+ finally {
1547
+ if (disableDependencyTracking) {
1548
+ this.form.ruleEngine.setDependencyTracking(currentDependencyTracking);
1549
+ }
1550
+ }
1551
+ }
1538
1552
  notifyDependents(action) {
1539
1553
  const depsToRestore = this._jsonModel._dependents;
1540
1554
  if (depsToRestore) {
@@ -1548,7 +1562,9 @@ class BaseNode {
1548
1562
  }
1549
1563
  const handlers = this._callbacks[action.type] || [];
1550
1564
  handlers.forEach(x => {
1551
- x(new ActionImplWithTarget(action, this));
1565
+ this.withDependencyTrackingControl(true, () => {
1566
+ x(new ActionImplWithTarget(action, this));
1567
+ });
1552
1568
  });
1553
1569
  }
1554
1570
  isEmpty(value = this._jsonModel.value) {
@@ -2059,15 +2075,11 @@ class Container extends Scriptable {
2059
2075
  }) : [];
2060
2076
  }
2061
2077
  getItemsState(isRepeatableChild = false, forRestore = false) {
2062
- if (this._jsonModel.type === 'array' || isRepeatable$1(this._jsonModel) || isRepeatableChild) {
2063
- if (isRepeatableChild) {
2064
- return this._getFormAndSitesState(isRepeatableChild, forRestore);
2065
- }
2066
- else {
2067
- return this._children.map(x => {
2068
- return { ...x.getState(true, forRestore) };
2069
- });
2070
- }
2078
+ const isThisContainerRepeatable = this._jsonModel.type === 'array' || isRepeatable$1(this._jsonModel);
2079
+ if (isThisContainerRepeatable) {
2080
+ return this._children.map(x => {
2081
+ return { ...x.getState(true, forRestore) };
2082
+ });
2071
2083
  }
2072
2084
  else {
2073
2085
  return this._getFormAndSitesState(isRepeatableChild, forRestore);
@@ -2081,6 +2093,9 @@ class Container extends Scriptable {
2081
2093
  ':itemsOrder': undefined
2082
2094
  } : {}),
2083
2095
  items: this.getItemsState(isRepeatableChild, forRestore),
2096
+ ...((this._jsonModel.type === 'array' || isRepeatable$1(this._jsonModel)) && this._itemTemplate ? {
2097
+ _itemTemplate: { ...this._itemTemplate }
2098
+ } : {}),
2084
2099
  enabled: this.enabled,
2085
2100
  readOnly: this.readOnly
2086
2101
  };
@@ -2189,7 +2204,8 @@ class Container extends Scriptable {
2189
2204
  const items = this._jsonModel.items || [];
2190
2205
  this._childrenReference = this._jsonModel.type == 'array' ? [] : {};
2191
2206
  if (this._canHaveRepeatingChildren(mode)) {
2192
- this._itemTemplate = deepClone(items[0]);
2207
+ this._itemTemplate = this._jsonModel._itemTemplate || deepClone(items[0]);
2208
+ this._jsonModel._itemTemplate = undefined;
2193
2209
  if (mode === 'restore') {
2194
2210
  this._itemTemplate.repeatable = undefined;
2195
2211
  }
@@ -3429,6 +3445,15 @@ class FunctionRuntimeImpl {
3429
3445
  return instanceManager.length - 1;
3430
3446
  },
3431
3447
  _signature: []
3448
+ },
3449
+ today: {
3450
+ _func: () => {
3451
+ const MS_IN_DAY = 24 * 60 * 60 * 1000;
3452
+ const now = new Date(Date.now());
3453
+ const _today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
3454
+ return _today / MS_IN_DAY;
3455
+ },
3456
+ _signature: []
3432
3457
  }
3433
3458
  };
3434
3459
  return { ...defaultFunctions, ...FunctionRuntimeImpl.getInstance().customFunctions };
@@ -84,6 +84,7 @@ export declare abstract class BaseNode<T extends BaseJson> implements BaseModel
84
84
  abstract executeAction(action: Action): any;
85
85
  queueEvent(action: Action): void;
86
86
  dispatch(action: Action): void;
87
+ protected withDependencyTrackingControl<T>(disableDependencyTracking: boolean, callback: () => T): T;
87
88
  notifyDependents(action: Action): void;
88
89
  protected isEmpty(value?: any): boolean;
89
90
  _setProperty<T>(prop: string, newValue: T, notify?: boolean, notifyChildren?: (action: Action) => void): any;
@@ -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,9 +29,120 @@ 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
148
  _dependents?: string[] | 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,9 +97,120 @@ 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
216
  _dependents?: string[] | undefined;
@@ -99,6 +99,10 @@ declare class FunctionRuntimeImpl {
99
99
  _func: (args: Array<unknown>, data: unknown, interpreter: any) => number;
100
100
  _signature: never[];
101
101
  };
102
+ today: {
103
+ _func: () => number;
104
+ _signature: never[];
105
+ };
102
106
  };
103
107
  }
104
108
  export declare const FunctionRuntime: FunctionRuntimeImpl;
package/lib/BaseNode.d.ts CHANGED
@@ -84,6 +84,7 @@ export declare abstract class BaseNode<T extends BaseJson> implements BaseModel
84
84
  abstract executeAction(action: Action): any;
85
85
  queueEvent(action: Action): void;
86
86
  dispatch(action: Action): void;
87
+ protected withDependencyTrackingControl<T>(disableDependencyTracking: boolean, callback: () => T): T;
87
88
  notifyDependents(action: Action): void;
88
89
  protected isEmpty(value?: any): boolean;
89
90
  _setProperty<T>(prop: string, newValue: T, notify?: boolean, notifyChildren?: (action: Action) => void): any;
package/lib/BaseNode.js CHANGED
@@ -330,6 +330,20 @@ class BaseNode {
330
330
  this.queueEvent(action);
331
331
  this.form.getEventQueue().runPendingQueue();
332
332
  }
333
+ withDependencyTrackingControl(disableDependencyTracking, callback) {
334
+ const currentDependencyTracking = this.form.ruleEngine.getDependencyTracking();
335
+ if (disableDependencyTracking) {
336
+ this.form.ruleEngine.setDependencyTracking(false);
337
+ }
338
+ try {
339
+ return callback();
340
+ }
341
+ finally {
342
+ if (disableDependencyTracking) {
343
+ this.form.ruleEngine.setDependencyTracking(currentDependencyTracking);
344
+ }
345
+ }
346
+ }
333
347
  notifyDependents(action) {
334
348
  const depsToRestore = this._jsonModel._dependents;
335
349
  if (depsToRestore) {
@@ -343,7 +357,9 @@ class BaseNode {
343
357
  }
344
358
  const handlers = this._callbacks[action.type] || [];
345
359
  handlers.forEach(x => {
346
- x(new ActionImplWithTarget(action, this));
360
+ this.withDependencyTrackingControl(true, () => {
361
+ x(new ActionImplWithTarget(action, this));
362
+ });
347
363
  });
348
364
  }
349
365
  isEmpty(value = this._jsonModel.value) {
@@ -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,9 +29,120 @@ 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
148
  _dependents?: string[] | undefined;
package/lib/Container.js CHANGED
@@ -98,25 +98,23 @@ class Container extends Scriptable_1.default {
98
98
  }) : [];
99
99
  }
100
100
  getItemsState(isRepeatableChild = false, forRestore = false) {
101
- if (this._jsonModel.type === 'array' || (0, JsonUtils_1.isRepeatable)(this._jsonModel) || isRepeatableChild) {
102
- if (isRepeatableChild) {
103
- return this._getFormAndSitesState(isRepeatableChild, forRestore);
104
- }
105
- else {
106
- return this._children.map(x => {
107
- return Object.assign({}, x.getState(true, forRestore));
108
- });
109
- }
101
+ const isThisContainerRepeatable = this._jsonModel.type === 'array' || (0, JsonUtils_1.isRepeatable)(this._jsonModel);
102
+ if (isThisContainerRepeatable) {
103
+ return this._children.map(x => {
104
+ return Object.assign({}, x.getState(true, forRestore));
105
+ });
110
106
  }
111
107
  else {
112
108
  return this._getFormAndSitesState(isRepeatableChild, forRestore);
113
109
  }
114
110
  }
115
111
  getState(isRepeatableChild = false, forRestore = false) {
116
- return Object.assign(Object.assign(Object.assign({}, super.getState(forRestore)), (forRestore ? {
112
+ return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, super.getState(forRestore)), (forRestore ? {
117
113
  ':items': undefined,
118
114
  ':itemsOrder': undefined
119
- } : {})), { items: this.getItemsState(isRepeatableChild, forRestore), enabled: this.enabled, readOnly: this.readOnly });
115
+ } : {})), { items: this.getItemsState(isRepeatableChild, forRestore) }), ((this._jsonModel.type === 'array' || (0, JsonUtils_1.isRepeatable)(this._jsonModel)) && this._itemTemplate ? {
116
+ _itemTemplate: Object.assign({}, this._itemTemplate)
117
+ } : {})), { enabled: this.enabled, readOnly: this.readOnly });
120
118
  }
121
119
  _createChild(child, options) {
122
120
  return this.fieldFactory.createField(child, options);
@@ -214,7 +212,8 @@ class Container extends Scriptable_1.default {
214
212
  const items = this._jsonModel.items || [];
215
213
  this._childrenReference = this._jsonModel.type == 'array' ? [] : {};
216
214
  if (this._canHaveRepeatingChildren(mode)) {
217
- this._itemTemplate = (0, JsonUtils_1.deepClone)(items[0]);
215
+ this._itemTemplate = this._jsonModel._itemTemplate || (0, JsonUtils_1.deepClone)(items[0]);
216
+ this._jsonModel._itemTemplate = undefined;
218
217
  if (mode === 'restore') {
219
218
  this._itemTemplate.repeatable = undefined;
220
219
  }
package/lib/Form.d.ts CHANGED
@@ -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,9 +97,120 @@ 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
216
  _dependents?: string[] | undefined;
@@ -99,6 +99,10 @@ declare class FunctionRuntimeImpl {
99
99
  _func: (args: Array<unknown>, data: unknown, interpreter: any) => number;
100
100
  _signature: never[];
101
101
  };
102
+ today: {
103
+ _func: () => number;
104
+ _signature: never[];
105
+ };
102
106
  };
103
107
  }
104
108
  export declare const FunctionRuntime: FunctionRuntimeImpl;
@@ -766,6 +766,15 @@ class FunctionRuntimeImpl {
766
766
  return instanceManager.length - 1;
767
767
  },
768
768
  _signature: []
769
+ },
770
+ today: {
771
+ _func: () => {
772
+ const MS_IN_DAY = 24 * 60 * 60 * 1000;
773
+ const now = new Date(Date.now());
774
+ const _today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
775
+ return _today / MS_IN_DAY;
776
+ },
777
+ _signature: []
769
778
  }
770
779
  };
771
780
  return Object.assign(Object.assign({}, defaultFunctions), FunctionRuntimeImpl.getInstance().customFunctions);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aemforms/af-core",
3
- "version": "0.22.135",
3
+ "version": "0.22.137",
4
4
  "description": "Core Module for Forms Runtime",
5
5
  "author": "Adobe Systems",
6
6
  "license": "Adobe Proprietary",
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@adobe/json-formula": "0.1.50",
40
- "@aemforms/af-formatters": "^0.22.135"
40
+ "@aemforms/af-formatters": "^0.22.137"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@babel/preset-env": "^7.20.2",