@aemforms/af-core 0.22.16 → 0.22.18

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/lib/FileUpload.js CHANGED
@@ -22,8 +22,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
22
22
  const Controller_1 = require("./controller/Controller");
23
23
  const Field_1 = __importDefault(require("./Field"));
24
24
  const FormUtils_1 = require("./utils/FormUtils");
25
- const ValidationUtils_1 = require("./utils/ValidationUtils");
26
25
  const FileObject_1 = require("./FileObject");
26
+ const ValidationUtils_1 = require("./utils/ValidationUtils");
27
27
  function addNameToDataURL(dataURL, name) {
28
28
  return dataURL.replace(';base64', `;name=${encodeURIComponent(name)};base64`);
29
29
  }
@@ -32,7 +32,7 @@ function processFiles(files) {
32
32
  }
33
33
  function processFile(file) {
34
34
  return __awaiter(this, void 0, void 0, function* () {
35
- const { name, size, mediaType } = file;
35
+ const { name, size, type } = file;
36
36
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
37
37
  const fileObj = yield new Promise((resolve, reject) => {
38
38
  const reader = new FileReader();
@@ -40,7 +40,7 @@ function processFile(file) {
40
40
  resolve(new FileObject_1.FileObject({
41
41
  // @ts-ignore
42
42
  data: addNameToDataURL(event.target.result, name),
43
- mediaType: mediaType,
43
+ type,
44
44
  name,
45
45
  size
46
46
  }));
@@ -56,7 +56,10 @@ function processFile(file) {
56
56
  class FileUpload extends Field_1.default {
57
57
  //private _files: FileObject[];
58
58
  _getDefaults() {
59
- return Object.assign(Object.assign({}, super._getDefaults()), { accept: ['audio/*', 'video/*', 'image/*', 'text/*', 'application/pdf'], maxFileSize: '2MB', type: 'file' });
59
+ return Object.assign(Object.assign({}, super._getDefaults()), { accept: ['audio/*', 'video/*', 'image/*', 'text/*', 'application/pdf'], maxFileSize: '2MB' });
60
+ }
61
+ _getFallbackType() {
62
+ return 'file';
60
63
  }
61
64
  /**
62
65
  * Returns the max file size in bytes as per IEC specification
@@ -99,124 +102,23 @@ class FileUpload extends Field_1.default {
99
102
  return acc;
100
103
  }, {});
101
104
  }
102
- typeCheck(value) {
103
- const type = this._jsonModel.type || 'file';
104
- switch (type) {
105
- case 'string':
106
- return { valid: true, value: value };
107
- default:
108
- return ValidationUtils_1.Constraints.type(type, value);
109
- }
105
+ getInternalType() {
106
+ var _a;
107
+ return ((_a = this.type) === null || _a === void 0 ? void 0 : _a.endsWith('[]')) ? 'file[]' : 'file';
110
108
  }
111
- checkFileType(type) {
112
- let accepts = this.accept || '';
113
- let validFileType = false;
114
- if (!accepts || !type) {
115
- return true;
116
- }
117
- accepts = Array.isArray(accepts) ? accepts : accepts.split(',');
118
- accepts.forEach((accept) => {
119
- const trimmedAccept = accept.trim();
120
- const prefixAccept = trimmedAccept.split('/')[0];
121
- const suffixAccept = trimmedAccept.split('.')[1];
122
- if ((trimmedAccept.includes('*') && type.startsWith(prefixAccept)) ||
123
- (trimmedAccept.includes('.') && type.endsWith(suffixAccept)) ||
124
- (trimmedAccept === type)) {
125
- validFileType = true;
109
+ getDataNodeValue(typedValue) {
110
+ var _a;
111
+ let dataNodeValue = typedValue;
112
+ if (dataNodeValue != null) {
113
+ if (this.type === 'string') {
114
+ dataNodeValue = (_a = dataNodeValue.data) === null || _a === void 0 ? void 0 : _a.toString();
126
115
  }
127
- });
128
- return validFileType;
129
- }
130
- acceptCheck(value) {
131
- const tempValue = value instanceof Array ? value : [value];
132
- const invalidFile = tempValue.some((file) => !this.checkFileType(file.type || file.mediaType));
133
- return {
134
- valid: !invalidFile,
135
- value
136
- };
137
- }
138
- get value() {
139
- // @ts-ignore
140
- this.ruleEngine.trackDependency(this);
141
- if (this._jsonModel.value === undefined) {
142
- return null;
143
- }
144
- let val = this._jsonModel.value;
145
- // always return file object irrespective of data schema
146
- if (val != null) {
147
- // @ts-ignore
148
- val = this.coerce((val instanceof Array ? val : [val])
149
- .map(file => {
150
- let retVal = file;
151
- if (!(retVal instanceof FileObject_1.FileObject)) {
152
- retVal = new FileObject_1.FileObject({
153
- 'name': file.name,
154
- 'mediaType': file.mediaType,
155
- 'size': file.size,
156
- 'data': file.data
157
- });
158
- }
159
- // define serialization here
160
- /*
161
- Object.defineProperty(retVal, 'data', {
162
- get: async function() {
163
- if (file.data instanceof File) {
164
- return processFile(file);
165
- } else {
166
- return file.data;
167
- }
168
- }
169
- });
170
- */
171
- return retVal;
172
- }));
173
- }
174
- return val;
175
- }
176
- set value(value) {
177
- if (value !== undefined) {
178
- // store file list here
179
- const typeRes = this.typeCheck(value);
180
- const acceptRes = this.acceptCheck(value);
181
- let fileInfoPayload = (0, FormUtils_1.extractFileInfo)(value);
182
- fileInfoPayload = this.coerce(fileInfoPayload);
183
- const changes = this._setProperty('value', fileInfoPayload, false);
184
- if (changes.length > 0) {
185
- const dataNode = this.getDataNode();
186
- if (typeof dataNode !== 'undefined') {
187
- let val = this._jsonModel.value;
188
- const retVal = (val instanceof Array ? val : [val]).map(file => {
189
- if (this.type === 'file' || this.type === 'file[]') {
190
- return file;
191
- }
192
- else if (this.type === 'string' || this.type === 'string[]') {
193
- // @ts-ignore
194
- return file.data.toString();
195
- }
196
- });
197
- val = this.coerce(retVal);
198
- if (dataNode !== undefined) {
199
- dataNode.setValue(val, this._jsonModel.value);
200
- }
201
- }
202
- let updates;
203
- if (typeRes.valid && acceptRes.valid) {
204
- updates = this.evaluateConstraints();
205
- }
206
- else {
207
- const changes = {
208
- 'valid': typeRes.valid && acceptRes.valid,
209
- 'errorMessage': typeRes.valid && acceptRes.valid ? '' : this.getErrorMessage('type')
210
- };
211
- updates = this._applyUpdates(['valid', 'errorMessage'], changes);
212
- }
213
- if (updates.valid) {
214
- this.triggerValidationEvent(updates);
215
- }
216
- const changeAction = new Controller_1.Change({ changes: changes.concat(Object.values(updates)) });
217
- this.dispatch(changeAction);
116
+ else if (this.type === 'string[]') {
117
+ dataNodeValue = dataNodeValue instanceof Array ? dataNodeValue : [dataNodeValue];
118
+ dataNodeValue = dataNodeValue.map((_) => { var _a; return (_a = _ === null || _ === void 0 ? void 0 : _.data) === null || _a === void 0 ? void 0 : _a.toString(); });
218
119
  }
219
120
  }
121
+ return dataNodeValue;
220
122
  }
221
123
  _serialize() {
222
124
  return __awaiter(this, void 0, void 0, function* () {
@@ -229,28 +131,24 @@ class FileUpload extends Field_1.default {
229
131
  return filesInfo;
230
132
  });
231
133
  }
232
- coerce(val) {
233
- let retVal = val;
234
- if ((this.type === 'string' || this.type === 'file') && retVal instanceof Array) {
235
- // @ts-ignore
236
- retVal = val[0];
237
- }
238
- return retVal;
239
- }
240
134
  importData(dataModel) {
241
135
  this._bindToDataModel(dataModel);
242
136
  const dataNode = this.getDataNode();
243
137
  if (dataNode !== undefined) {
244
138
  const value = dataNode === null || dataNode === void 0 ? void 0 : dataNode.$value;
245
- let newValue = value;
246
139
  // only if not undefined, proceed further
247
140
  if (value != null) {
248
- const fileObj = (0, FormUtils_1.extractFileInfo)(value);
249
- newValue = this.coerce(fileObj);
141
+ const res = ValidationUtils_1.Constraints.type(this.getInternalType(), value);
142
+ if (!res.valid) {
143
+ this.form.logger.error(`unable to bind ${this.name} to data`);
144
+ }
250
145
  // is this needed ?
251
- this.form.getEventQueue().queue(this, (0, Controller_1.propertyChange)('value', newValue, this._jsonModel.value));
146
+ this.form.getEventQueue().queue(this, (0, Controller_1.propertyChange)('value', res.value, this._jsonModel.value));
147
+ this._jsonModel.value = res.value;
148
+ }
149
+ else {
150
+ this._jsonModel.value = null;
252
151
  }
253
- this._jsonModel.value = newValue;
254
152
  }
255
153
  }
256
154
  }
package/lib/Form.d.ts CHANGED
@@ -1,25 +1,9 @@
1
1
  import Container from './Container';
2
- import { Action, FieldJson, FieldModel, FieldsetJson, FieldsetModel, FormJson, FormModel, Items } from './types';
2
+ import { Action, BaseModel, FieldJson, FieldModel, FieldsetJson, FieldsetModel, FormJson, FormModel, Items } from './types';
3
3
  import FormMetaData from './FormMetaData';
4
4
  import EventQueue from './controller/EventQueue';
5
+ import { Logger, LogLevel } from './controller/Logger';
5
6
  import RuleEngine from './rules/RuleEngine';
6
- declare type LogFunction = 'info' | 'warn' | 'error' | 'debug';
7
- /**
8
- * Logging levels.
9
- */
10
- export declare type LogLevel = 'off' | LogFunction;
11
- /**
12
- * @private
13
- */
14
- export declare class Logger {
15
- debug(msg: string): void;
16
- info(msg: string): void;
17
- warn(msg: string): void;
18
- error(msg: string): void;
19
- log(msg: string, level: LogFunction): void;
20
- private logLevel;
21
- constructor(logLevel?: LogLevel);
22
- }
23
7
  /**
24
8
  * Defines `form model` which implements {@link FormModel | form model}
25
9
  */
@@ -54,6 +38,7 @@ declare class Form extends Container<FormJson> implements FormModel {
54
38
  protected _createChild(child: FieldsetJson | FieldJson): FieldModel | FieldsetModel;
55
39
  importData(dataModel: any): void;
56
40
  exportData(): any;
41
+ setFocus(field: BaseModel): void;
57
42
  /**
58
43
  * Returns the current state of the form
59
44
  *
@@ -101,9 +86,13 @@ declare class Form extends Container<FormJson> implements FormModel {
101
86
  properties?: {
102
87
  [key: string]: any;
103
88
  } | undefined;
89
+ screenReaderText?: string | undefined;
90
+ tooltip?: string | undefined;
91
+ altText?: string | undefined;
104
92
  } & {
105
93
  items: (FieldJson | import("./types").ContainerJson)[];
106
94
  initialItems?: number | undefined;
95
+ activeChild?: string | undefined;
107
96
  } & {
108
97
  metadata?: import("./types").MetaDataJson | undefined;
109
98
  data?: any;
@@ -111,8 +100,10 @@ declare class Form extends Container<FormJson> implements FormModel {
111
100
  action?: string | undefined;
112
101
  adaptiveForm?: string | undefined;
113
102
  } & {
114
- ':type': string;
115
103
  items: ({
104
+ id: string;
105
+ index: number;
106
+ ':type': string;
116
107
  description?: string | undefined;
117
108
  rules?: Items<string> | undefined;
118
109
  events?: Items<string | string[] | undefined> | undefined;
@@ -137,7 +128,6 @@ declare class Form extends Container<FormJson> implements FormModel {
137
128
  validationExpression?: string | undefined;
138
129
  uniqueItems?: boolean | undefined;
139
130
  dataRef?: string | null | undefined;
140
- ':type': string;
141
131
  label?: import("./types").Label | undefined;
142
132
  enabled?: boolean | undefined;
143
133
  visible?: boolean | undefined;
@@ -148,7 +138,19 @@ declare class Form extends Container<FormJson> implements FormModel {
148
138
  properties?: {
149
139
  [key: string]: any;
150
140
  } | undefined;
151
- placeholder?: string | undefined;
141
+ screenReaderText?: string | undefined;
142
+ tooltip?: string | undefined;
143
+ altText?: string | undefined;
144
+ placeholder?: string | undefined; /**
145
+ * Returns the current state of the form
146
+ *
147
+ * To access the form data and attachments, one needs to use the `data` and `attachments` property.
148
+ * For example,
149
+ * ```
150
+ * const data = form.getState().data
151
+ * const attachments = form.getState().attachments
152
+ * ```
153
+ */
152
154
  readOnly?: boolean | undefined;
153
155
  valid?: boolean | undefined;
154
156
  default?: any;
@@ -158,8 +160,10 @@ declare class Form extends Container<FormJson> implements FormModel {
158
160
  editValue?: string | undefined;
159
161
  displayValue?: string | undefined;
160
162
  emptyValue?: "" | "undefined" | "null" | undefined;
161
- id: string;
162
163
  } | {
164
+ id: string;
165
+ index: number;
166
+ ':type': string;
163
167
  description?: string | undefined;
164
168
  rules?: Items<string> | undefined;
165
169
  events?: Items<string | string[] | undefined> | undefined;
@@ -184,7 +188,6 @@ declare class Form extends Container<FormJson> implements FormModel {
184
188
  validationExpression?: string | undefined;
185
189
  uniqueItems?: boolean | undefined;
186
190
  dataRef?: string | null | undefined;
187
- ':type'?: string | undefined;
188
191
  label?: import("./types").Label | undefined;
189
192
  enabled?: boolean | undefined;
190
193
  visible?: boolean | undefined;
@@ -195,197 +198,22 @@ declare class Form extends Container<FormJson> implements FormModel {
195
198
  properties?: {
196
199
  [key: string]: any;
197
200
  } | undefined;
198
- items: (FieldJson | import("./types").ContainerJson)[] & (({
199
- description?: string | undefined;
200
- } & import("./types").RulesJson & {
201
- enumNames?: string[] | undefined;
202
- enum?: any[] | undefined;
203
- } & {
204
- accept?: string[] | undefined;
205
- enforceEnum?: boolean | undefined;
206
- exclusiveMinimum?: number | undefined;
207
- exclusiveMaximum?: number | undefined;
208
- format?: string | undefined;
209
- maxFileSize?: string | number | undefined;
210
- maxLength?: number | undefined;
211
- maximum?: number | undefined;
212
- maxItems?: number | undefined;
213
- minLength?: number | undefined;
214
- minimum?: number | undefined;
215
- minItems?: number | undefined;
216
- pattern?: string | undefined;
217
- required?: boolean | undefined;
218
- step?: number | undefined;
219
- type?: string | undefined;
220
- validationExpression?: string | undefined;
221
- uniqueItems?: boolean | undefined;
222
- } & {
223
- dataRef?: string | null | undefined;
224
- ':type'?: string | undefined;
225
- label?: import("./types").Label | undefined;
226
- enabled?: boolean | undefined;
227
- visible?: boolean | undefined;
228
- name?: string | undefined;
229
- constraintMessages?: import("./types").ConstraintsMessages | undefined;
230
- fieldType?: string | undefined;
231
- errorMessage?: string | undefined;
232
- properties?: {
233
- [key: string]: any;
234
- } | undefined;
235
- } & {
236
- placeholder?: string | undefined;
237
- } & {
238
- readOnly?: boolean | undefined;
239
- valid?: boolean | undefined;
240
- default?: any;
241
- value?: any;
242
- displayFormat?: string | undefined;
243
- editFormat?: string | undefined;
244
- editValue?: string | undefined;
245
- displayValue?: string | undefined;
246
- emptyValue?: "" | "undefined" | "null" | undefined;
247
- } & {
248
- id: string;
249
- ':type': string;
250
- }) | ({
251
- description?: string | undefined;
252
- } & import("./types").RulesJson & {
253
- enumNames?: string[] | undefined;
254
- enum?: any[] | undefined;
255
- } & {
256
- accept?: string[] | undefined;
257
- enforceEnum?: boolean | undefined;
258
- exclusiveMinimum?: number | undefined;
259
- exclusiveMaximum?: number | undefined;
260
- format?: string | undefined;
261
- maxFileSize?: string | number | undefined;
262
- maxLength?: number | undefined;
263
- maximum?: number | undefined;
264
- maxItems?: number | undefined;
265
- minLength?: number | undefined;
266
- minimum?: number | undefined;
267
- minItems?: number | undefined;
268
- pattern?: string | undefined;
269
- required?: boolean | undefined;
270
- step?: number | undefined;
271
- type?: string | undefined;
272
- validationExpression?: string | undefined;
273
- uniqueItems?: boolean | undefined;
274
- } & {
275
- dataRef?: string | null | undefined;
276
- ':type'?: string | undefined;
277
- label?: import("./types").Label | undefined;
278
- enabled?: boolean | undefined;
279
- visible?: boolean | undefined;
280
- name?: string | undefined;
281
- constraintMessages?: import("./types").ConstraintsMessages | undefined;
282
- fieldType?: string | undefined;
283
- errorMessage?: string | undefined;
284
- properties?: {
285
- [key: string]: any;
286
- } | undefined;
287
- } & {
288
- items: (FieldJson | import("./types").ContainerJson)[];
289
- initialItems?: number | undefined;
290
- } & {
291
- id: string;
292
- items: (({
293
- description?: string | undefined;
294
- } & import("./types").RulesJson & {
295
- enumNames?: string[] | undefined;
296
- enum?: any[] | undefined;
297
- } & {
298
- accept?: string[] | undefined;
299
- enforceEnum?: boolean | undefined;
300
- exclusiveMinimum?: number | undefined;
301
- exclusiveMaximum?: number | undefined;
302
- format?: string | undefined;
303
- maxFileSize?: string | number | undefined;
304
- maxLength?: number | undefined;
305
- maximum?: number | undefined;
306
- maxItems?: number | undefined;
307
- minLength?: number | undefined;
308
- minimum?: number | undefined;
309
- minItems?: number | undefined;
310
- pattern?: string | undefined;
311
- required?: boolean | undefined;
312
- step?: number | undefined;
313
- type?: string | undefined;
314
- validationExpression?: string | undefined;
315
- uniqueItems?: boolean | undefined;
316
- } & {
317
- dataRef?: string | null | undefined;
318
- ':type'?: string | undefined;
319
- label?: import("./types").Label | undefined;
320
- enabled?: boolean | undefined;
321
- visible?: boolean | undefined;
322
- name?: string | undefined;
323
- constraintMessages?: import("./types").ConstraintsMessages | undefined;
324
- fieldType?: string | undefined;
325
- errorMessage?: string | undefined;
326
- properties?: {
327
- [key: string]: any;
328
- } | undefined;
329
- } & {
330
- placeholder?: string | undefined;
331
- } & {
332
- readOnly?: boolean | undefined;
333
- valid?: boolean | undefined;
334
- default?: any;
335
- value?: any;
336
- displayFormat?: string | undefined;
337
- editFormat?: string | undefined;
338
- editValue?: string | undefined;
339
- displayValue?: string | undefined;
340
- emptyValue?: "" | "undefined" | "null" | undefined;
341
- } & {
342
- id: string;
343
- ':type': string;
344
- }) | ({
345
- description?: string | undefined;
346
- } & import("./types").RulesJson & {
347
- enumNames?: string[] | undefined;
348
- enum?: any[] | undefined;
349
- } & {
350
- accept?: string[] | undefined;
351
- enforceEnum?: boolean | undefined;
352
- exclusiveMinimum?: number | undefined;
353
- exclusiveMaximum?: number | undefined;
354
- format?: string | undefined;
355
- maxFileSize?: string | number | undefined;
356
- maxLength?: number | undefined;
357
- maximum?: number | undefined;
358
- maxItems?: number | undefined;
359
- minLength?: number | undefined;
360
- minimum?: number | undefined;
361
- minItems?: number | undefined;
362
- pattern?: string | undefined;
363
- required?: boolean | undefined;
364
- step?: number | undefined;
365
- type?: string | undefined;
366
- validationExpression?: string | undefined;
367
- uniqueItems?: boolean | undefined;
368
- } & {
369
- dataRef?: string | null | undefined;
370
- ':type'?: string | undefined;
371
- label?: import("./types").Label | undefined;
372
- enabled?: boolean | undefined;
373
- visible?: boolean | undefined;
374
- name?: string | undefined;
375
- constraintMessages?: import("./types").ConstraintsMessages | undefined;
376
- fieldType?: string | undefined;
377
- errorMessage?: string | undefined;
378
- properties?: {
379
- [key: string]: any;
380
- } | undefined;
381
- } & {
382
- items: (FieldJson | import("./types").ContainerJson)[];
383
- initialItems?: number | undefined;
384
- } & any))[];
385
- }))[];
201
+ screenReaderText?: string | undefined;
202
+ tooltip?: string | undefined;
203
+ altText?: string | undefined;
204
+ items: (FieldJson | import("./types").ContainerJson)[] & import("./types").State<FieldJson | import("./types").ContainerJson>[];
386
205
  initialItems?: number | undefined;
387
- id: string;
206
+ activeChild?: string | undefined;
388
207
  })[];
208
+ properties: {
209
+ [key: string]: any;
210
+ };
211
+ index: number;
212
+ parent: undefined;
213
+ qualifiedName: any;
214
+ events: {};
215
+ rules: {};
216
+ ':type': string;
389
217
  id: string;
390
218
  };
391
219
  get type(): string;
@@ -421,6 +249,7 @@ declare class Form extends Container<FormJson> implements FormModel {
421
249
  */
422
250
  submit(action: Action, context: any): void;
423
251
  getElement(id: string): FieldModel | FieldsetModel | this;
252
+ get qualifiedName(): string;
424
253
  /**
425
254
  * @private
426
255
  */
package/lib/Form.js CHANGED
@@ -10,48 +10,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
10
10
  return (mod && mod.__esModule) ? mod : { "default": mod };
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.Logger = void 0;
14
13
  const Container_1 = __importDefault(require("./Container"));
15
14
  const FormMetaData_1 = __importDefault(require("./FormMetaData"));
16
15
  const Fieldset_1 = require("./Fieldset");
17
16
  const EventQueue_1 = __importDefault(require("./controller/EventQueue"));
17
+ const Logger_1 = require("./controller/Logger");
18
18
  const FormUtils_1 = require("./utils/FormUtils");
19
19
  const DataGroup_1 = __importDefault(require("./data/DataGroup"));
20
20
  const FunctionRuntime_1 = require("./rules/FunctionRuntime");
21
21
  const controller_1 = require("./controller");
22
- const levels = {
23
- off: 0,
24
- debug: 1,
25
- info: 2,
26
- warn: 3,
27
- error: 4
28
- };
29
- /**
30
- * @private
31
- */
32
- class Logger {
33
- constructor(logLevel = 'off') {
34
- this.logLevel = levels[logLevel];
35
- }
36
- debug(msg) {
37
- this.log(msg, 'debug');
38
- }
39
- info(msg) {
40
- this.log(msg, 'info');
41
- }
42
- warn(msg) {
43
- this.log(msg, 'warn');
44
- }
45
- error(msg) {
46
- this.log(msg, 'error');
47
- }
48
- log(msg, level) {
49
- if (this.logLevel !== 0 && this.logLevel <= levels[level]) {
50
- console[level](msg);
51
- }
52
- }
53
- }
54
- exports.Logger = Logger;
55
22
  /**
56
23
  * Defines `form model` which implements {@link FormModel | form model}
57
24
  */
@@ -77,7 +44,7 @@ class Form extends Container_1.default {
77
44
  */
78
45
  this._invalidFields = [];
79
46
  this.dataRefRegex = /("[^"]+?"|[^.]+?)(?:\.|$)/g;
80
- this._logger = new Logger(logLevel);
47
+ this._logger = new Logger_1.Logger(logLevel);
81
48
  this.queueEvent(new controller_1.Initialize());
82
49
  this.queueEvent(new controller_1.ExecuteRule());
83
50
  this._ids = (0, FormUtils_1.IdGenerator)();
@@ -107,6 +74,13 @@ class Form extends Container_1.default {
107
74
  var _a;
108
75
  return (_a = this.getDataNode()) === null || _a === void 0 ? void 0 : _a.$value;
109
76
  }
77
+ setFocus(field) {
78
+ const parent = field.parent;
79
+ const currentField = field;
80
+ while (parent != null && parent.activeChild != currentField) {
81
+ parent.activeChild = currentField;
82
+ }
83
+ }
110
84
  /**
111
85
  * Returns the current state of the form
112
86
  *
@@ -231,6 +205,9 @@ class Form extends Container_1.default {
231
205
  }
232
206
  return this._fields[id];
233
207
  }
208
+ get qualifiedName() {
209
+ return '$form';
210
+ }
234
211
  /**
235
212
  * @private
236
213
  */
@@ -1,5 +1,5 @@
1
- import { LogLevel } from './Form';
2
1
  import { FormModel } from './types';
2
+ import { LogLevel } from './controller/Logger';
3
3
  /**
4
4
  * Creates form instance using form model definition as per `adaptive form specification`
5
5
  * @param formModel form model definition
@@ -6,39 +6,17 @@
6
6
  *
7
7
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ADOBE NOR ITS THIRD PARTY PROVIDERS AND PARTNERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8
8
  */
9
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- var desc = Object.getOwnPropertyDescriptor(m, k);
12
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
- desc = { enumerable: true, get: function() { return m[k]; } };
14
- }
15
- Object.defineProperty(o, k2, desc);
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
- Object.defineProperty(o, "default", { enumerable: true, value: v });
22
- }) : function(o, v) {
23
- o["default"] = v;
24
- });
25
- var __importStar = (this && this.__importStar) || function (mod) {
26
- if (mod && mod.__esModule) return mod;
27
- var result = {};
28
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
- __setModuleDefault(result, mod);
30
- return result;
31
- };
32
9
  var __importDefault = (this && this.__importDefault) || function (mod) {
33
10
  return (mod && mod.__esModule) ? mod : { "default": mod };
34
11
  };
35
12
  Object.defineProperty(exports, "__esModule", { value: true });
36
13
  exports.fetchForm = exports.validateFormData = exports.validateFormInstance = exports.createFormInstance = void 0;
37
- const Form_1 = __importStar(require("./Form"));
14
+ const Form_1 = __importDefault(require("./Form"));
38
15
  const JsonUtils_1 = require("./utils/JsonUtils");
39
16
  const Fetch_1 = require("./utils/Fetch");
40
17
  const RuleEngine_1 = __importDefault(require("./rules/RuleEngine"));
41
18
  const EventQueue_1 = __importDefault(require("./controller/EventQueue"));
19
+ const Logger_1 = require("./controller/Logger");
42
20
  /**
43
21
  * Creates form instance using form model definition as per `adaptive form specification`
44
22
  * @param formModel form model definition
@@ -52,7 +30,7 @@ const createFormInstance = (formModel, callback, logLevel = 'error', fModel = un
52
30
  try {
53
31
  let f = fModel;
54
32
  if (f == null) {
55
- f = new Form_1.default(Object.assign({}, formModel), new RuleEngine_1.default(), new EventQueue_1.default(new Form_1.Logger(logLevel)), logLevel);
33
+ f = new Form_1.default(Object.assign({}, formModel), new RuleEngine_1.default(), new EventQueue_1.default(new Logger_1.Logger(logLevel)), logLevel);
56
34
  }
57
35
  const formData = formModel === null || formModel === void 0 ? void 0 : formModel.data;
58
36
  if (formData) {