@aemforms/af-core 0.22.144 → 0.22.145
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/esm/afb-runtime.js +27 -12
- package/esm/types/src/Field.d.ts +3 -1
- package/lib/BaseNode.js +13 -5
- package/lib/Field.d.ts +3 -1
- package/lib/Field.js +11 -4
- package/lib/utils/FormUtils.js +2 -2
- package/package.json +2 -2
package/esm/afb-runtime.js
CHANGED
|
@@ -793,7 +793,7 @@ const processItem = (item, excludeUnbound, isAsync) => {
|
|
|
793
793
|
? item.dataRef
|
|
794
794
|
: (name.length > 0 ? item.name : undefined);
|
|
795
795
|
if (item.value instanceof Array) {
|
|
796
|
-
if (item.type === 'string[]') {
|
|
796
|
+
if (item.type === 'string[]' && item?.format === 'data-url') {
|
|
797
797
|
if (isAsync) {
|
|
798
798
|
return item.serialize().then(serializedFiles => {
|
|
799
799
|
ret[item.id] = serializedFiles.map((x) => {
|
|
@@ -815,7 +815,7 @@ const processItem = (item, excludeUnbound, isAsync) => {
|
|
|
815
815
|
}
|
|
816
816
|
}
|
|
817
817
|
else if (item.value != null) {
|
|
818
|
-
if (item.type === 'string') {
|
|
818
|
+
if (item.type === 'string' && item?.format === 'data-url') {
|
|
819
819
|
if (isAsync) {
|
|
820
820
|
return item.serialize().then(serializedFile => {
|
|
821
821
|
ret[item.id] = { ...serializedFile[0], 'dataRef': dataRef };
|
|
@@ -1694,7 +1694,9 @@ class BaseNode {
|
|
|
1694
1694
|
}
|
|
1695
1695
|
notifyChildren.call(this, changeAction);
|
|
1696
1696
|
if (validationConstraintsList.includes(prop)) {
|
|
1697
|
-
this.
|
|
1697
|
+
if (this.hasValueBeenSet === undefined || this.hasValueBeenSet) {
|
|
1698
|
+
this.validate();
|
|
1699
|
+
}
|
|
1698
1700
|
}
|
|
1699
1701
|
return changeAction.payload.changes;
|
|
1700
1702
|
}
|
|
@@ -1747,10 +1749,16 @@ class BaseNode {
|
|
|
1747
1749
|
if (key !== '') {
|
|
1748
1750
|
const create = this.defaultDataModel(key);
|
|
1749
1751
|
if (create !== undefined) {
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
_data
|
|
1753
|
-
|
|
1752
|
+
if (typeof contextualDataModel.$getDataNode === 'function') {
|
|
1753
|
+
_data = contextualDataModel.$getDataNode(key);
|
|
1754
|
+
if (_data === undefined) {
|
|
1755
|
+
_data = create;
|
|
1756
|
+
contextualDataModel.$addDataNode(key, _data);
|
|
1757
|
+
}
|
|
1758
|
+
}
|
|
1759
|
+
else {
|
|
1760
|
+
console.error(`$getDataNode method is undefined for "${name}" with dataModel type "${contextualDataModel.$type}"`);
|
|
1761
|
+
_data = undefined;
|
|
1754
1762
|
}
|
|
1755
1763
|
}
|
|
1756
1764
|
}
|
|
@@ -4248,6 +4256,11 @@ __decorate([
|
|
|
4248
4256
|
|
|
4249
4257
|
const validTypes = ['string', 'number', 'integer', 'boolean', 'file', 'string[]', 'number[]', 'integer[]', 'boolean[]', 'file[]', 'array', 'object'];
|
|
4250
4258
|
class Field extends Scriptable {
|
|
4259
|
+
_ruleNodeReference = [];
|
|
4260
|
+
_hasValueBeenSet = false;
|
|
4261
|
+
get hasValueBeenSet() {
|
|
4262
|
+
return this._hasValueBeenSet;
|
|
4263
|
+
}
|
|
4251
4264
|
constructor(params, _options) {
|
|
4252
4265
|
super(params, _options);
|
|
4253
4266
|
if (_options.mode !== 'restore') {
|
|
@@ -4261,7 +4274,6 @@ class Field extends Scriptable {
|
|
|
4261
4274
|
}
|
|
4262
4275
|
}
|
|
4263
4276
|
}
|
|
4264
|
-
_ruleNodeReference = [];
|
|
4265
4277
|
_initialize() {
|
|
4266
4278
|
super._initialize();
|
|
4267
4279
|
this.setupRuleNode();
|
|
@@ -4376,7 +4388,12 @@ class Field extends Scriptable {
|
|
|
4376
4388
|
}
|
|
4377
4389
|
const props = ['minimum', 'maximum', 'exclusiveMinimum', 'exclusiveMaximum'];
|
|
4378
4390
|
if (this._jsonModel.type !== 'string') {
|
|
4379
|
-
this.
|
|
4391
|
+
if (this._jsonModel.fieldType === 'file-input') {
|
|
4392
|
+
this.unset('pattern', 'minLength', 'maxLength');
|
|
4393
|
+
}
|
|
4394
|
+
else {
|
|
4395
|
+
this.unset('format', 'pattern', 'minLength', 'maxLength');
|
|
4396
|
+
}
|
|
4380
4397
|
}
|
|
4381
4398
|
else if (this._jsonModel.fieldType === 'date-input') {
|
|
4382
4399
|
this._jsonModel.format = 'date';
|
|
@@ -4565,6 +4582,7 @@ class Field extends Scriptable {
|
|
|
4565
4582
|
const typeRes = Constraints.type(this.getInternalType() || 'string', val);
|
|
4566
4583
|
const changes = this._setProperty('value', typeRes.value, false);
|
|
4567
4584
|
if (changes.length > 0) {
|
|
4585
|
+
this._hasValueBeenSet = true;
|
|
4568
4586
|
this._updateRuleNodeReference(typeRes.value);
|
|
4569
4587
|
if (typeof dataNode !== 'undefined') {
|
|
4570
4588
|
dataNode.setValue(this.getDataNodeValue(this._jsonModel.value), this._jsonModel.value, this);
|
|
@@ -4777,9 +4795,6 @@ class Field extends Scriptable {
|
|
|
4777
4795
|
case 'date-input':
|
|
4778
4796
|
this._jsonModel.format = 'date';
|
|
4779
4797
|
break;
|
|
4780
|
-
case 'file-input':
|
|
4781
|
-
this._jsonModel.format = 'data-url';
|
|
4782
|
-
break;
|
|
4783
4798
|
case 'date-time':
|
|
4784
4799
|
this._jsonModel.format = 'date-time';
|
|
4785
4800
|
break;
|
package/esm/types/src/Field.d.ts
CHANGED
|
@@ -3,12 +3,14 @@ import Scriptable from './Scriptable';
|
|
|
3
3
|
import DataValue from './data/DataValue';
|
|
4
4
|
declare class Field extends Scriptable<FieldJson> implements FieldModel {
|
|
5
5
|
#private;
|
|
6
|
+
private _ruleNodeReference;
|
|
7
|
+
protected _hasValueBeenSet: boolean;
|
|
8
|
+
protected get hasValueBeenSet(): boolean;
|
|
6
9
|
constructor(params: FieldJson, _options: {
|
|
7
10
|
form: FormModel;
|
|
8
11
|
parent: ContainerModel;
|
|
9
12
|
mode?: 'create' | 'restore';
|
|
10
13
|
});
|
|
11
|
-
private _ruleNodeReference;
|
|
12
14
|
_initialize(): any;
|
|
13
15
|
ruleNodeReference(): any;
|
|
14
16
|
protected _getDefaults(): {
|
package/lib/BaseNode.js
CHANGED
|
@@ -392,7 +392,9 @@ class BaseNode {
|
|
|
392
392
|
}
|
|
393
393
|
notifyChildren.call(this, changeAction);
|
|
394
394
|
if (ValidationUtils_1.validationConstraintsList.includes(prop)) {
|
|
395
|
-
this.
|
|
395
|
+
if (this.hasValueBeenSet === undefined || this.hasValueBeenSet) {
|
|
396
|
+
this.validate();
|
|
397
|
+
}
|
|
396
398
|
}
|
|
397
399
|
return changeAction.payload.changes;
|
|
398
400
|
}
|
|
@@ -445,10 +447,16 @@ class BaseNode {
|
|
|
445
447
|
if (key !== '') {
|
|
446
448
|
const create = this.defaultDataModel(key);
|
|
447
449
|
if (create !== undefined) {
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
_data
|
|
451
|
-
|
|
450
|
+
if (typeof contextualDataModel.$getDataNode === 'function') {
|
|
451
|
+
_data = contextualDataModel.$getDataNode(key);
|
|
452
|
+
if (_data === undefined) {
|
|
453
|
+
_data = create;
|
|
454
|
+
contextualDataModel.$addDataNode(key, _data);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
else {
|
|
458
|
+
console.error(`$getDataNode method is undefined for "${name}" with dataModel type "${contextualDataModel.$type}"`);
|
|
459
|
+
_data = undefined;
|
|
452
460
|
}
|
|
453
461
|
}
|
|
454
462
|
}
|
package/lib/Field.d.ts
CHANGED
|
@@ -3,12 +3,14 @@ import Scriptable from './Scriptable';
|
|
|
3
3
|
import DataValue from './data/DataValue';
|
|
4
4
|
declare class Field extends Scriptable<FieldJson> implements FieldModel {
|
|
5
5
|
#private;
|
|
6
|
+
private _ruleNodeReference;
|
|
7
|
+
protected _hasValueBeenSet: boolean;
|
|
8
|
+
protected get hasValueBeenSet(): boolean;
|
|
6
9
|
constructor(params: FieldJson, _options: {
|
|
7
10
|
form: FormModel;
|
|
8
11
|
parent: ContainerModel;
|
|
9
12
|
mode?: 'create' | 'restore';
|
|
10
13
|
});
|
|
11
|
-
private _ruleNodeReference;
|
|
12
14
|
_initialize(): any;
|
|
13
15
|
ruleNodeReference(): any;
|
|
14
16
|
protected _getDefaults(): {
|
package/lib/Field.js
CHANGED
|
@@ -31,6 +31,7 @@ class Field extends Scriptable_1.default {
|
|
|
31
31
|
super(params, _options);
|
|
32
32
|
_Field_instances.add(this);
|
|
33
33
|
this._ruleNodeReference = [];
|
|
34
|
+
this._hasValueBeenSet = false;
|
|
34
35
|
if (_options.mode !== 'restore') {
|
|
35
36
|
this._applyDefaults();
|
|
36
37
|
this.queueEvent(new Events_1.Initialize());
|
|
@@ -42,6 +43,9 @@ class Field extends Scriptable_1.default {
|
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
}
|
|
46
|
+
get hasValueBeenSet() {
|
|
47
|
+
return this._hasValueBeenSet;
|
|
48
|
+
}
|
|
45
49
|
_initialize() {
|
|
46
50
|
super._initialize();
|
|
47
51
|
this.setupRuleNode();
|
|
@@ -158,7 +162,12 @@ class Field extends Scriptable_1.default {
|
|
|
158
162
|
}
|
|
159
163
|
const props = ['minimum', 'maximum', 'exclusiveMinimum', 'exclusiveMaximum'];
|
|
160
164
|
if (this._jsonModel.type !== 'string') {
|
|
161
|
-
this.
|
|
165
|
+
if (this._jsonModel.fieldType === 'file-input') {
|
|
166
|
+
this.unset('pattern', 'minLength', 'maxLength');
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
this.unset('format', 'pattern', 'minLength', 'maxLength');
|
|
170
|
+
}
|
|
162
171
|
}
|
|
163
172
|
else if (this._jsonModel.fieldType === 'date-input') {
|
|
164
173
|
this._jsonModel.format = 'date';
|
|
@@ -347,6 +356,7 @@ class Field extends Scriptable_1.default {
|
|
|
347
356
|
const typeRes = Constraints.type(this.getInternalType() || 'string', val);
|
|
348
357
|
const changes = this._setProperty('value', typeRes.value, false);
|
|
349
358
|
if (changes.length > 0) {
|
|
359
|
+
this._hasValueBeenSet = true;
|
|
350
360
|
this._updateRuleNodeReference(typeRes.value);
|
|
351
361
|
if (typeof dataNode !== 'undefined') {
|
|
352
362
|
dataNode.setValue(this.getDataNodeValue(this._jsonModel.value), this._jsonModel.value, this);
|
|
@@ -559,9 +569,6 @@ class Field extends Scriptable_1.default {
|
|
|
559
569
|
case 'date-input':
|
|
560
570
|
this._jsonModel.format = 'date';
|
|
561
571
|
break;
|
|
562
|
-
case 'file-input':
|
|
563
|
-
this._jsonModel.format = 'data-url';
|
|
564
|
-
break;
|
|
565
572
|
case 'date-time':
|
|
566
573
|
this._jsonModel.format = 'date-time';
|
|
567
574
|
break;
|
package/lib/utils/FormUtils.js
CHANGED
|
@@ -51,7 +51,7 @@ const processItem = (item, excludeUnbound, isAsync) => {
|
|
|
51
51
|
? item.dataRef
|
|
52
52
|
: (name.length > 0 ? item.name : undefined);
|
|
53
53
|
if (item.value instanceof Array) {
|
|
54
|
-
if (item.type === 'string[]') {
|
|
54
|
+
if (item.type === 'string[]' && (item === null || item === void 0 ? void 0 : item.format) === 'data-url') {
|
|
55
55
|
if (isAsync) {
|
|
56
56
|
return item.serialize().then(serializedFiles => {
|
|
57
57
|
ret[item.id] = serializedFiles.map((x) => {
|
|
@@ -73,7 +73,7 @@ const processItem = (item, excludeUnbound, isAsync) => {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
else if (item.value != null) {
|
|
76
|
-
if (item.type === 'string') {
|
|
76
|
+
if (item.type === 'string' && (item === null || item === void 0 ? void 0 : item.format) === 'data-url') {
|
|
77
77
|
if (isAsync) {
|
|
78
78
|
return item.serialize().then(serializedFile => {
|
|
79
79
|
ret[item.id] = Object.assign(Object.assign({}, serializedFile[0]), { 'dataRef': dataRef });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aemforms/af-core",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.145",
|
|
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.
|
|
40
|
+
"@aemforms/af-formatters": "^0.22.145"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@babel/preset-env": "^7.20.2",
|