@formio/js 5.0.0-dev.5759.a3476ed → 5.0.0-dev.5760.9e85e8c

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.
@@ -132,6 +132,6 @@ export default class DayComponent extends Field {
132
132
  getValueAsString(value: any): string | null;
133
133
  focus(field: any): void;
134
134
  isPartialDay(value: any): boolean;
135
- getValidationFormat(): "DD-MM-YYYY" | "MM-DD-YYYY";
135
+ getValidationFormat(): string;
136
136
  }
137
137
  import Field from '../_classes/field/Field';
@@ -30,7 +30,8 @@ class DayComponent extends Field_1.default {
30
30
  required: false
31
31
  }
32
32
  },
33
- dayFirst: false
33
+ dayFirst: false,
34
+ defaultValue: ''
34
35
  }, ...extend);
35
36
  }
36
37
  static get builderInfo() {
@@ -343,15 +344,21 @@ class DayComponent extends Field_1.default {
343
344
  const valueParts = value.split('/');
344
345
  const [DAY, MONTH, YEAR] = this.component.dayFirst ? [0, 1, 2] : [1, 0, 2];
345
346
  const defaultValue = this.component.defaultValue ? this.component.defaultValue.split('/') : '';
346
- const getNextPart = (shouldTake, defaultValue) => dateParts.push(shouldTake ? valueParts.shift() : defaultValue);
347
+ const getNextPart = (shouldTake, defaultValue) => {
348
+ // Only push the part if it's not an empty string
349
+ const part = shouldTake ? valueParts.shift() : defaultValue;
350
+ if (part !== '') {
351
+ dateParts.push(part);
352
+ }
353
+ };
347
354
  if (this.dayFirst) {
348
- getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '00');
355
+ getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '');
349
356
  }
350
- getNextPart(this.showMonth, defaultValue ? defaultValue[MONTH] : '00');
357
+ getNextPart(this.showMonth, defaultValue ? defaultValue[MONTH] : '');
351
358
  if (!this.dayFirst) {
352
- getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '00');
359
+ getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '');
353
360
  }
354
- getNextPart(this.showYear, defaultValue ? defaultValue[YEAR] : '0000');
361
+ getNextPart(this.showYear, defaultValue ? defaultValue[YEAR] : '');
355
362
  return dateParts.join('/');
356
363
  }
357
364
  /**
@@ -558,10 +565,27 @@ class DayComponent extends Field_1.default {
558
565
  }
559
566
  const [DAY, MONTH, YEAR] = this.component.dayFirst ? [0, 1, 2] : [1, 0, 2];
560
567
  const values = value.split('/');
561
- return (values[DAY] === '00' || values[MONTH] === '00' || values[YEAR] === '0000');
568
+ // return (values[DAY] === '00' || values[MONTH] === '00' || values[YEAR] === '0000');
569
+ return (values[DAY] === '00' ||
570
+ values[MONTH] === '00' ||
571
+ values[YEAR] === '0000' ||
572
+ values[DAY] === '' ||
573
+ values[MONTH] === '' ||
574
+ values[YEAR] === '');
562
575
  }
563
576
  getValidationFormat() {
564
- return this.dayFirst ? 'DD-MM-YYYY' : 'MM-DD-YYYY';
577
+ var _a, _b, _c, _d, _e, _f;
578
+ let validationFormat = this.dayFirst ? 'DD-MM-YYYY' : 'MM-DD-YYYY';
579
+ if ((_b = (_a = this.fields) === null || _a === void 0 ? void 0 : _a.day) === null || _b === void 0 ? void 0 : _b.hide) {
580
+ validationFormat = validationFormat.replace('DD-', '');
581
+ }
582
+ if ((_d = (_c = this.fields) === null || _c === void 0 ? void 0 : _c.month) === null || _d === void 0 ? void 0 : _d.hide) {
583
+ validationFormat = validationFormat.replace('MM-', '');
584
+ }
585
+ if ((_f = (_e = this.fields) === null || _e === void 0 ? void 0 : _e.year) === null || _f === void 0 ? void 0 : _f.hide) {
586
+ validationFormat = validationFormat.replace('-YYYY', '');
587
+ }
588
+ return validationFormat;
565
589
  }
566
590
  }
567
591
  exports.default = DayComponent;
@@ -38,7 +38,7 @@ export default class FileComponent extends Field {
38
38
  get hasTypes(): any;
39
39
  _fileBrowseHidden: any;
40
40
  get shouldSyncFiles(): boolean;
41
- get autoSync(): any;
41
+ get autoSync(): boolean;
42
42
  get columnsSize(): {
43
43
  name: number;
44
44
  size: number;
@@ -151,7 +151,9 @@ class FileComponent extends Field_1.default {
151
151
  return Boolean(this.filesToSync.filesToDelete.length || this.filesToSync.filesToUpload.length);
152
152
  }
153
153
  get autoSync() {
154
- return lodash_1.default.get(this, 'component.autoSync', false);
154
+ // Disable autoSync for now
155
+ return false;
156
+ // return _.get(this, 'component.autoSync', false);
155
157
  }
156
158
  get columnsSize() {
157
159
  const actionsColumn = this.disabled ? 0 : this.autoSync ? 2 : 1;
@@ -6,7 +6,7 @@ exports.default = [
6
6
  ignore: true
7
7
  },
8
8
  {
9
- type: 'checkbox',
9
+ type: 'hidden',
10
10
  label: 'Files Synchronization feature',
11
11
  tooltip: 'Enable ability to control files synchronization. Files will be auto synced before submit.',
12
12
  key: 'autoSync',
@@ -8,26 +8,10 @@ export default class RadioComponent extends ListComponent {
8
8
  schema: any;
9
9
  };
10
10
  static get conditionOperatorsSettings(): {
11
- valueComponent(classComp: any): {
12
- type: string;
13
- dataSrc: string;
14
- valueProperty: string;
15
- dataType: any;
16
- data: {
17
- custom(): any;
18
- };
19
- };
11
+ valueComponent(classComp: any): any;
20
12
  };
21
13
  static get serverConditionSettings(): {
22
- valueComponent(classComp: any): {
23
- type: string;
24
- dataSrc: string;
25
- valueProperty: string;
26
- dataType: any;
27
- data: {
28
- custom: string;
29
- };
30
- };
14
+ valueComponent(classComp: any): any;
31
15
  };
32
16
  static savedValueTypes(schema: any): any[];
33
17
  constructor(component: any, options: any, data: any);
@@ -33,31 +33,22 @@ class RadioComponent extends ListComponent_1.default {
33
33
  }
34
34
  static get conditionOperatorsSettings() {
35
35
  return Object.assign(Object.assign({}, super.conditionOperatorsSettings), { valueComponent(classComp) {
36
- return {
37
- type: 'select',
38
- dataSrc: 'custom',
39
- valueProperty: 'value',
40
- dataType: classComp.dataType || '',
41
- data: {
42
- custom() {
43
- return classComp.values;
36
+ const isValuesSrc = !classComp.dataSrc || classComp.dataSrc === 'values';
37
+ return isValuesSrc
38
+ ? {
39
+ type: 'select',
40
+ dataSrc: 'custom',
41
+ valueProperty: 'value',
42
+ dataType: classComp.dataType || '',
43
+ data: {
44
+ custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`,
44
45
  }
45
- },
46
- };
46
+ }
47
+ : Object.assign(Object.assign({}, classComp), { type: 'select' });
47
48
  } });
48
49
  }
49
50
  static get serverConditionSettings() {
50
- return Object.assign(Object.assign({}, super.serverConditionSettings), { valueComponent(classComp) {
51
- return {
52
- type: 'select',
53
- dataSrc: 'custom',
54
- valueProperty: 'value',
55
- dataType: classComp.dataType || '',
56
- data: {
57
- custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`,
58
- },
59
- };
60
- } });
51
+ return RadioComponent.conditionOperatorsSettings;
61
52
  }
62
53
  static savedValueTypes(schema) {
63
54
  const { boolean, string, number, object, array } = utils_1.componentValueTypes;
@@ -264,6 +255,16 @@ class RadioComponent extends ListComponent_1.default {
264
255
  if (method.toUpperCase() === 'GET') {
265
256
  body = null;
266
257
  }
258
+ const limit = this.component.limit || 100;
259
+ const skip = this.isScrollLoading ? this.selectOptions.length : 0;
260
+ // Allow for url interpolation.
261
+ url = this.sanitize(this.interpolate(url, {
262
+ formioBase: Formio_1.Formio.getBaseUrl(),
263
+ search,
264
+ limit,
265
+ skip,
266
+ page: Math.abs(Math.floor(skip / limit))
267
+ }), this.shouldSanitizeValue);
267
268
  // Set ignoreCache if it is
268
269
  options.ignoreCache = this.component.ignoreCache;
269
270
  // Make the request.
@@ -536,13 +536,13 @@ class SelectComponent extends ListComponent_1.default {
536
536
  skip,
537
537
  };
538
538
  // Allow for url interpolation.
539
- url = this.interpolate(url, {
539
+ url = this.sanitize(this.interpolate(url, {
540
540
  formioBase: Formio_1.Formio.getBaseUrl(),
541
541
  search,
542
542
  limit,
543
543
  skip,
544
544
  page: Math.abs(Math.floor(skip / limit))
545
- });
545
+ }), this.shouldSanitizeValue);
546
546
  // Add search capability.
547
547
  if (this.component.searchField && search) {
548
548
  const searchValue = Array.isArray(search)
@@ -1,26 +1,4 @@
1
1
  export default class SelectBoxesComponent extends RadioComponent {
2
- static get serverConditionSettings(): {
3
- valueComponent(classComp: any): {
4
- type: string;
5
- dataSrc: string;
6
- valueProperty: string;
7
- dataType: string;
8
- data: {
9
- custom: string;
10
- };
11
- };
12
- };
13
- static get conditionOperatorsSettings(): {
14
- valueComponent(classComp: any): {
15
- type: string;
16
- dataSrc: string;
17
- valueProperty: string;
18
- dataType: string;
19
- data: {
20
- custom: string;
21
- };
22
- };
23
- };
24
2
  static savedValueTypes(schema: any): string[];
25
3
  constructor(...args: any[]);
26
4
  get emptyValue(): any;
@@ -30,15 +30,18 @@ class SelectBoxesComponent extends Radio_1.default {
30
30
  }
31
31
  static get conditionOperatorsSettings() {
32
32
  return Object.assign(Object.assign({}, super.conditionOperatorsSettings), { valueComponent(classComp) {
33
- return {
34
- type: 'select',
35
- dataSrc: 'custom',
36
- valueProperty: 'value',
37
- dataType: 'string',
38
- data: {
39
- custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`
40
- },
41
- };
33
+ const isValuesSrc = !classComp.dataSrc || classComp.dataSrc === 'values';
34
+ return isValuesSrc
35
+ ? {
36
+ type: 'select',
37
+ dataSrc: 'custom',
38
+ valueProperty: 'value',
39
+ dataType: 'string',
40
+ data: {
41
+ custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`
42
+ },
43
+ }
44
+ : Object.assign(Object.assign({}, classComp), { dataType: 'string', type: 'select' });
42
45
  } });
43
46
  }
44
47
  static savedValueTypes(schema) {
@@ -18,11 +18,6 @@ class TimeComponent extends TextField_1.default {
18
18
  dataFormat: defaultDataFormat,
19
19
  }, ...extend);
20
20
  }
21
- static get serverConditionSettings() {
22
- return Object.assign(Object.assign({}, super.serverConditionSettings), { valueComponent(classComp) {
23
- return Object.assign(Object.assign({}, classComp), { type: 'time' });
24
- } });
25
- }
26
21
  constructor(component, options, data) {
27
22
  super(component, options, data);
28
23
  const { edge: isEdgeBrowser, version: edgeVersion } = (0, utils_1.getBrowserInfo)();
@@ -132,6 +132,6 @@ export default class DayComponent extends Field {
132
132
  getValueAsString(value: any): string | null;
133
133
  focus(field: any): void;
134
134
  isPartialDay(value: any): boolean;
135
- getValidationFormat(): "DD-MM-YYYY" | "MM-DD-YYYY";
135
+ getValidationFormat(): string;
136
136
  }
137
137
  import Field from '../_classes/field/Field';
@@ -25,7 +25,8 @@ export default class DayComponent extends Field {
25
25
  required: false
26
26
  }
27
27
  },
28
- dayFirst: false
28
+ dayFirst: false,
29
+ defaultValue: ''
29
30
  }, ...extend);
30
31
  }
31
32
  static get builderInfo() {
@@ -341,15 +342,21 @@ export default class DayComponent extends Field {
341
342
  const valueParts = value.split('/');
342
343
  const [DAY, MONTH, YEAR] = this.component.dayFirst ? [0, 1, 2] : [1, 0, 2];
343
344
  const defaultValue = this.component.defaultValue ? this.component.defaultValue.split('/') : '';
344
- const getNextPart = (shouldTake, defaultValue) => dateParts.push(shouldTake ? valueParts.shift() : defaultValue);
345
+ const getNextPart = (shouldTake, defaultValue) => {
346
+ // Only push the part if it's not an empty string
347
+ const part = shouldTake ? valueParts.shift() : defaultValue;
348
+ if (part !== '') {
349
+ dateParts.push(part);
350
+ }
351
+ };
345
352
  if (this.dayFirst) {
346
- getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '00');
353
+ getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '');
347
354
  }
348
- getNextPart(this.showMonth, defaultValue ? defaultValue[MONTH] : '00');
355
+ getNextPart(this.showMonth, defaultValue ? defaultValue[MONTH] : '');
349
356
  if (!this.dayFirst) {
350
- getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '00');
357
+ getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '');
351
358
  }
352
- getNextPart(this.showYear, defaultValue ? defaultValue[YEAR] : '0000');
359
+ getNextPart(this.showYear, defaultValue ? defaultValue[YEAR] : '');
353
360
  return dateParts.join('/');
354
361
  }
355
362
  /**
@@ -554,9 +561,25 @@ export default class DayComponent extends Field {
554
561
  }
555
562
  const [DAY, MONTH, YEAR] = this.component.dayFirst ? [0, 1, 2] : [1, 0, 2];
556
563
  const values = value.split('/');
557
- return (values[DAY] === '00' || values[MONTH] === '00' || values[YEAR] === '0000');
564
+ // return (values[DAY] === '00' || values[MONTH] === '00' || values[YEAR] === '0000');
565
+ return (values[DAY] === '00' ||
566
+ values[MONTH] === '00' ||
567
+ values[YEAR] === '0000' ||
568
+ values[DAY] === '' ||
569
+ values[MONTH] === '' ||
570
+ values[YEAR] === '');
558
571
  }
559
572
  getValidationFormat() {
560
- return this.dayFirst ? 'DD-MM-YYYY' : 'MM-DD-YYYY';
573
+ let validationFormat = this.dayFirst ? 'DD-MM-YYYY' : 'MM-DD-YYYY';
574
+ if (this.fields?.day?.hide) {
575
+ validationFormat = validationFormat.replace('DD-', '');
576
+ }
577
+ if (this.fields?.month?.hide) {
578
+ validationFormat = validationFormat.replace('MM-', '');
579
+ }
580
+ if (this.fields?.year?.hide) {
581
+ validationFormat = validationFormat.replace('-YYYY', '');
582
+ }
583
+ return validationFormat;
561
584
  }
562
585
  }
@@ -38,7 +38,7 @@ export default class FileComponent extends Field {
38
38
  get hasTypes(): any;
39
39
  _fileBrowseHidden: any;
40
40
  get shouldSyncFiles(): boolean;
41
- get autoSync(): any;
41
+ get autoSync(): boolean;
42
42
  get columnsSize(): {
43
43
  name: number;
44
44
  size: number;
@@ -140,7 +140,9 @@ export default class FileComponent extends Field {
140
140
  return Boolean(this.filesToSync.filesToDelete.length || this.filesToSync.filesToUpload.length);
141
141
  }
142
142
  get autoSync() {
143
- return _.get(this, 'component.autoSync', false);
143
+ // Disable autoSync for now
144
+ return false;
145
+ // return _.get(this, 'component.autoSync', false);
144
146
  }
145
147
  get columnsSize() {
146
148
  const actionsColumn = this.disabled ? 0 : this.autoSync ? 2 : 1;
@@ -4,7 +4,7 @@ export default [
4
4
  ignore: true
5
5
  },
6
6
  {
7
- type: 'checkbox',
7
+ type: 'hidden',
8
8
  label: 'Files Synchronization feature',
9
9
  tooltip: 'Enable ability to control files synchronization. Files will be auto synced before submit.',
10
10
  key: 'autoSync',
@@ -8,26 +8,10 @@ export default class RadioComponent extends ListComponent {
8
8
  schema: any;
9
9
  };
10
10
  static get conditionOperatorsSettings(): {
11
- valueComponent(classComp: any): {
12
- type: string;
13
- dataSrc: string;
14
- valueProperty: string;
15
- dataType: any;
16
- data: {
17
- custom(): any;
18
- };
19
- };
11
+ valueComponent(classComp: any): any;
20
12
  };
21
13
  static get serverConditionSettings(): {
22
- valueComponent(classComp: any): {
23
- type: string;
24
- dataSrc: string;
25
- valueProperty: string;
26
- dataType: any;
27
- data: {
28
- custom: string;
29
- };
30
- };
14
+ valueComponent(classComp: any): any;
31
15
  };
32
16
  static savedValueTypes(schema: any): any[];
33
17
  constructor(component: any, options: any, data: any);
@@ -30,35 +30,26 @@ export default class RadioComponent extends ListComponent {
30
30
  return {
31
31
  ...super.conditionOperatorsSettings,
32
32
  valueComponent(classComp) {
33
- return {
34
- type: 'select',
35
- dataSrc: 'custom',
36
- valueProperty: 'value',
37
- dataType: classComp.dataType || '',
38
- data: {
39
- custom() {
40
- return classComp.values;
33
+ const isValuesSrc = !classComp.dataSrc || classComp.dataSrc === 'values';
34
+ return isValuesSrc
35
+ ? {
36
+ type: 'select',
37
+ dataSrc: 'custom',
38
+ valueProperty: 'value',
39
+ dataType: classComp.dataType || '',
40
+ data: {
41
+ custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`,
41
42
  }
42
- },
43
- };
43
+ }
44
+ : {
45
+ ...classComp,
46
+ type: 'select',
47
+ };
44
48
  }
45
49
  };
46
50
  }
47
51
  static get serverConditionSettings() {
48
- return {
49
- ...super.serverConditionSettings,
50
- valueComponent(classComp) {
51
- return {
52
- type: 'select',
53
- dataSrc: 'custom',
54
- valueProperty: 'value',
55
- dataType: classComp.dataType || '',
56
- data: {
57
- custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`,
58
- },
59
- };
60
- },
61
- };
52
+ return RadioComponent.conditionOperatorsSettings;
62
53
  }
63
54
  static savedValueTypes(schema) {
64
55
  const { boolean, string, number, object, array } = componentValueTypes;
@@ -264,6 +255,16 @@ export default class RadioComponent extends ListComponent {
264
255
  if (method.toUpperCase() === 'GET') {
265
256
  body = null;
266
257
  }
258
+ const limit = this.component.limit || 100;
259
+ const skip = this.isScrollLoading ? this.selectOptions.length : 0;
260
+ // Allow for url interpolation.
261
+ url = this.sanitize(this.interpolate(url, {
262
+ formioBase: Formio.getBaseUrl(),
263
+ search,
264
+ limit,
265
+ skip,
266
+ page: Math.abs(Math.floor(skip / limit))
267
+ }), this.shouldSanitizeValue);
267
268
  // Set ignoreCache if it is
268
269
  options.ignoreCache = this.component.ignoreCache;
269
270
  // Make the request.
@@ -538,13 +538,13 @@ export default class SelectComponent extends ListComponent {
538
538
  skip,
539
539
  };
540
540
  // Allow for url interpolation.
541
- url = this.interpolate(url, {
541
+ url = this.sanitize(this.interpolate(url, {
542
542
  formioBase: Formio.getBaseUrl(),
543
543
  search,
544
544
  limit,
545
545
  skip,
546
546
  page: Math.abs(Math.floor(skip / limit))
547
- });
547
+ }), this.shouldSanitizeValue);
548
548
  // Add search capability.
549
549
  if (this.component.searchField && search) {
550
550
  const searchValue = Array.isArray(search)
@@ -1,26 +1,4 @@
1
1
  export default class SelectBoxesComponent extends RadioComponent {
2
- static get serverConditionSettings(): {
3
- valueComponent(classComp: any): {
4
- type: string;
5
- dataSrc: string;
6
- valueProperty: string;
7
- dataType: string;
8
- data: {
9
- custom: string;
10
- };
11
- };
12
- };
13
- static get conditionOperatorsSettings(): {
14
- valueComponent(classComp: any): {
15
- type: string;
16
- dataSrc: string;
17
- valueProperty: string;
18
- dataType: string;
19
- data: {
20
- custom: string;
21
- };
22
- };
23
- };
24
2
  static savedValueTypes(schema: any): string[];
25
3
  constructor(...args: any[]);
26
4
  get emptyValue(): any;
@@ -27,15 +27,22 @@ export default class SelectBoxesComponent extends RadioComponent {
27
27
  return {
28
28
  ...super.conditionOperatorsSettings,
29
29
  valueComponent(classComp) {
30
- return {
31
- type: 'select',
32
- dataSrc: 'custom',
33
- valueProperty: 'value',
34
- dataType: 'string',
35
- data: {
36
- custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`
37
- },
38
- };
30
+ const isValuesSrc = !classComp.dataSrc || classComp.dataSrc === 'values';
31
+ return isValuesSrc
32
+ ? {
33
+ type: 'select',
34
+ dataSrc: 'custom',
35
+ valueProperty: 'value',
36
+ dataType: 'string',
37
+ data: {
38
+ custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`
39
+ },
40
+ }
41
+ : {
42
+ ...classComp,
43
+ dataType: 'string',
44
+ type: 'select',
45
+ };
39
46
  }
40
47
  };
41
48
  }
@@ -13,17 +13,6 @@ export default class TimeComponent extends TextFieldComponent {
13
13
  dataFormat: defaultDataFormat,
14
14
  }, ...extend);
15
15
  }
16
- static get serverConditionSettings() {
17
- return {
18
- ...super.serverConditionSettings,
19
- valueComponent(classComp) {
20
- return {
21
- ...classComp,
22
- type: 'time',
23
- };
24
- },
25
- };
26
- }
27
16
  constructor(component, options, data) {
28
17
  super(component, options, data);
29
18
  const { edge: isEdgeBrowser, version: edgeVersion } = getBrowserInfo();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formio/js",
3
- "version": "5.0.0-dev.5759.a3476ed",
3
+ "version": "5.0.0-dev.5760.9e85e8c",
4
4
  "description": "JavaScript powered Forms with JSON Form Builder",
5
5
  "main": "lib/cjs/index.js",
6
6
  "exports": {