@formio/js 5.0.0-rc.92 → 5.0.0-rc.93

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.
Files changed (66) hide show
  1. package/dist/formio.embed.js +1 -1
  2. package/dist/formio.embed.min.js +1 -1
  3. package/dist/formio.embed.min.js.LICENSE.txt +1 -1
  4. package/dist/formio.form.js +17 -17
  5. package/dist/formio.form.min.js +1 -1
  6. package/dist/formio.form.min.js.LICENSE.txt +1 -1
  7. package/dist/formio.full.js +17 -17
  8. package/dist/formio.full.min.js +1 -1
  9. package/dist/formio.full.min.js.LICENSE.txt +1 -1
  10. package/dist/formio.js +3 -3
  11. package/dist/formio.min.js +1 -1
  12. package/dist/formio.min.js.LICENSE.txt +1 -1
  13. package/dist/formio.utils.js +6 -6
  14. package/dist/formio.utils.min.js +1 -1
  15. package/dist/formio.utils.min.js.LICENSE.txt +1 -1
  16. package/lib/cjs/Wizard.js +1 -1
  17. package/lib/cjs/components/_classes/component/Component.d.ts +1 -1
  18. package/lib/cjs/components/_classes/component/Component.js +5 -7
  19. package/lib/cjs/components/day/Day.d.ts +1 -1
  20. package/lib/cjs/components/day/Day.js +12 -0
  21. package/lib/cjs/components/day/fixtures/comp5.d.ts +18 -2
  22. package/lib/cjs/components/day/fixtures/comp5.js +6 -0
  23. package/lib/cjs/components/editgrid/EditGrid.d.ts +2 -2
  24. package/lib/cjs/components/editgrid/EditGrid.js +6 -5
  25. package/lib/cjs/components/radio/Radio.d.ts +1 -0
  26. package/lib/cjs/components/radio/Radio.js +13 -4
  27. package/lib/cjs/components/select/Select.js +1 -1
  28. package/lib/cjs/components/select/fixtures/comp25.d.ts +43 -28
  29. package/lib/cjs/components/select/fixtures/comp25.js +56 -49
  30. package/lib/cjs/components/select/fixtures/comp26.d.ts +44 -0
  31. package/lib/cjs/components/select/fixtures/comp26.js +59 -0
  32. package/lib/cjs/components/select/fixtures/index.d.ts +1 -0
  33. package/lib/cjs/components/selectboxes/SelectBoxes.js +9 -2
  34. package/lib/cjs/components/textarea/TextArea.d.ts +4 -4
  35. package/lib/cjs/components/textarea/TextArea.js +4 -4
  36. package/lib/cjs/utils/conditionOperators/IsEqualTo.js +1 -9
  37. package/lib/cjs/utils/formUtils.d.ts +3 -0
  38. package/lib/cjs/utils/formUtils.js +5 -2
  39. package/lib/cjs/utils/utils.d.ts +0 -12
  40. package/lib/cjs/utils/utils.js +1 -33
  41. package/lib/mjs/Wizard.js +1 -1
  42. package/lib/mjs/components/_classes/component/Component.d.ts +1 -1
  43. package/lib/mjs/components/_classes/component/Component.js +5 -7
  44. package/lib/mjs/components/day/Day.d.ts +1 -1
  45. package/lib/mjs/components/day/Day.js +12 -0
  46. package/lib/mjs/components/day/fixtures/comp5.d.ts +18 -2
  47. package/lib/mjs/components/day/fixtures/comp5.js +6 -0
  48. package/lib/mjs/components/editgrid/EditGrid.d.ts +2 -2
  49. package/lib/mjs/components/editgrid/EditGrid.js +6 -5
  50. package/lib/mjs/components/radio/Radio.d.ts +1 -0
  51. package/lib/mjs/components/radio/Radio.js +13 -4
  52. package/lib/mjs/components/select/Select.js +1 -1
  53. package/lib/mjs/components/select/fixtures/comp25.d.ts +43 -28
  54. package/lib/mjs/components/select/fixtures/comp25.js +56 -49
  55. package/lib/mjs/components/select/fixtures/comp26.d.ts +44 -0
  56. package/lib/mjs/components/select/fixtures/comp26.js +57 -0
  57. package/lib/mjs/components/select/fixtures/index.d.ts +1 -0
  58. package/lib/mjs/components/selectboxes/SelectBoxes.js +8 -2
  59. package/lib/mjs/components/textarea/TextArea.d.ts +4 -4
  60. package/lib/mjs/components/textarea/TextArea.js +4 -4
  61. package/lib/mjs/utils/conditionOperators/IsEqualTo.js +2 -10
  62. package/lib/mjs/utils/formUtils.d.ts +3 -0
  63. package/lib/mjs/utils/formUtils.js +2 -2
  64. package/lib/mjs/utils/utils.d.ts +0 -12
  65. package/lib/mjs/utils/utils.js +0 -30
  66. package/package.json +3 -3
@@ -20,7 +20,7 @@
20
20
 
21
21
  /*! @license DOMPurify 3.1.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.6/LICENSE */
22
22
 
23
- /*! formiojs v5.0.0-rc.92 | https://unpkg.com/formiojs@5.0.0-rc.92/LICENSE.txt */
23
+ /*! formiojs v5.0.0-rc.93 | https://unpkg.com/formiojs@5.0.0-rc.93/LICENSE.txt */
24
24
 
25
25
  /**
26
26
  * @license
package/lib/cjs/Wizard.js CHANGED
@@ -916,7 +916,7 @@ class Wizard extends Webform_1.default {
916
916
  const components = !currentPageOnly || this.isLastPage()
917
917
  ? this.getComponents()
918
918
  : this.currentPage.components;
919
- return components.reduce((check, comp) => comp.checkValidity(data, dirty, row, childErrors) && check, true);
919
+ return components.reduce((check, comp) => comp.checkValidity(data, dirty, row, currentPageOnly, childErrors) && check, true);
920
920
  }
921
921
  get errors() {
922
922
  if (!this.isLastPage()) {
@@ -1067,7 +1067,7 @@ declare class Component extends Element {
1067
1067
  elementInfo(): any;
1068
1068
  autofocus(): void;
1069
1069
  scrollIntoView(element: any, verticalOnly: any): void;
1070
- focus(index?: number): void;
1070
+ focus(index: any): void;
1071
1071
  /**
1072
1072
  * Get `Formio` instance for working with files
1073
1073
  * @returns {import('@formio/core').Formio} - The Formio instance file service.
@@ -2934,14 +2934,12 @@ class Component extends Element_1.default {
2934
2934
  if (flags.silentCheck) {
2935
2935
  return [];
2936
2936
  }
2937
+ let isDirty = this.dirty || flags.dirty;
2937
2938
  if (this.options.alwaysDirty) {
2938
- flags.dirty = true;
2939
+ isDirty = true;
2939
2940
  }
2940
- if (flags.fromSubmission && this.hasValue(data)) {
2941
- flags.dirty = this.pristine && this.component.protected ? false : true;
2942
- }
2943
- this.setDirty(flags.dirty);
2944
- return this.setComponentValidity(errors, flags.dirty, flags.silentCheck, flags.fromSubmission);
2941
+ this.setDirty(isDirty);
2942
+ return this.setComponentValidity(errors, isDirty, flags.silentCheck, flags.fromSubmission);
2945
2943
  }
2946
2944
  /**
2947
2945
  * Perform a component validation.
@@ -3436,7 +3434,7 @@ class Component extends Element_1.default {
3436
3434
  const { left, top } = element.getBoundingClientRect();
3437
3435
  window.scrollTo(verticalOnly ? window.scrollX : left + window.scrollX, top + window.scrollY);
3438
3436
  }
3439
- focus(index = (this.refs.input.length - 1)) {
3437
+ focus(index) {
3440
3438
  var _a, _b, _c, _d;
3441
3439
  if ('beforeFocus' in this.parent) {
3442
3440
  this.parent.beforeFocus(this);
@@ -11,6 +11,7 @@ export default class DayComponent extends Field {
11
11
  operators: string[];
12
12
  };
13
13
  static savedValueTypes(schema: any): string[];
14
+ static oldEmptyValue: string;
14
15
  static get serverConditionSettings(): {
15
16
  operators: string[];
16
17
  };
@@ -135,7 +136,6 @@ export default class DayComponent extends Field {
135
136
  * @returns {string|null} - The string value of the date.
136
137
  */
137
138
  getValueAsString(value: any): string | null;
138
- focus(field: any): void;
139
139
  isPartialDay(value: any): boolean;
140
140
  getValidationFormat(): string;
141
141
  }
@@ -104,6 +104,12 @@ class DayComponent extends Field_1.default {
104
104
  info.changeEvent = 'input';
105
105
  return info;
106
106
  }
107
+ isEmpty(value = this.dataValue) {
108
+ if (value === DayComponent.oldEmptyValue) {
109
+ return true;
110
+ }
111
+ return super.isEmpty(value);
112
+ }
107
113
  inputDefinition(name) {
108
114
  let min, max;
109
115
  if (name === 'day') {
@@ -337,6 +343,10 @@ class DayComponent extends Field_1.default {
337
343
  }
338
344
  }
339
345
  normalizeValue(value) {
346
+ // Adjust the value from old to new format
347
+ if (value === DayComponent.oldEmptyValue) {
348
+ value = '';
349
+ }
340
350
  if (!value || this.valueMask.test(value)) {
341
351
  return value;
342
352
  }
@@ -643,4 +653,6 @@ class DayComponent extends Field_1.default {
643
653
  return validationFormat;
644
654
  }
645
655
  }
656
+ // Empty value used before 9.3.x
657
+ DayComponent.oldEmptyValue = '00/00/0000';
646
658
  exports.default = DayComponent;
@@ -1,7 +1,7 @@
1
1
  declare namespace _default {
2
2
  let type: string;
3
3
  let display: string;
4
- let components: {
4
+ let components: ({
5
5
  label: string;
6
6
  hideInputLabels: boolean;
7
7
  inputsLabelPosition: string;
@@ -24,6 +24,22 @@ declare namespace _default {
24
24
  type: string;
25
25
  input: boolean;
26
26
  defaultValue: string;
27
- }[];
27
+ action?: undefined;
28
+ theme?: undefined;
29
+ } | {
30
+ type: string;
31
+ action: string;
32
+ label: string;
33
+ theme: string;
34
+ hideInputLabels?: undefined;
35
+ inputsLabelPosition?: undefined;
36
+ useLocaleSettings?: undefined;
37
+ tableView?: undefined;
38
+ fields?: undefined;
39
+ validateOn?: undefined;
40
+ key?: undefined;
41
+ input?: undefined;
42
+ defaultValue?: undefined;
43
+ })[];
28
44
  }
29
45
  export default _default;
@@ -28,5 +28,11 @@ exports.default = {
28
28
  input: true,
29
29
  defaultValue: '00/00/0000'
30
30
  },
31
+ {
32
+ type: 'button',
33
+ action: 'submit',
34
+ label: 'Submit',
35
+ theme: 'primary'
36
+ }
31
37
  ]
32
38
  };
@@ -89,8 +89,8 @@ export default class EditGridComponent extends NestedArrayComponent {
89
89
  hasOpenRows(): any;
90
90
  getAttachedData(data?: null): any;
91
91
  shouldValidateDraft(editRow: any): any;
92
- shouldValidateRow(editRow: any, dirty: any): any;
93
- validateRow(editRow: any, dirty: any, forceSilentCheck: any): any;
92
+ shouldValidateRow(editRow: any, dirty: any, fromSubmission: any): any;
93
+ validateRow(editRow: any, dirty: any, forceSilentCheck: any, fromSubmission: any): any;
94
94
  showRowErrorAlerts(editRow: any, errors: any): void;
95
95
  /**
96
96
  * @returns {boolean} - Return that this component processes its own validation.
@@ -973,17 +973,18 @@ class EditGridComponent extends NestedArrayComponent_1.default {
973
973
  !this.hasOpenRows()) ||
974
974
  ((_b = this.root) === null || _b === void 0 ? void 0 : _b.submitted);
975
975
  }
976
- shouldValidateRow(editRow, dirty) {
976
+ shouldValidateRow(editRow, dirty, fromSubmission) {
977
977
  return this.shouldValidateDraft(editRow) ||
978
978
  editRow.state === EditRowState.Saving ||
979
979
  editRow.state === EditRowState.Editing ||
980
980
  editRow.alerts ||
981
+ fromSubmission ||
981
982
  dirty;
982
983
  }
983
- validateRow(editRow, dirty, forceSilentCheck) {
984
+ validateRow(editRow, dirty, forceSilentCheck, fromSubmission) {
984
985
  var _a;
985
986
  editRow.errors = [];
986
- if (this.shouldValidateRow(editRow, dirty)) {
987
+ if (this.shouldValidateRow(editRow, dirty, fromSubmission)) {
987
988
  const silentCheck = (this.component.rowDrafts && !this.shouldValidateDraft(editRow)) || forceSilentCheck;
988
989
  const rootValue = (0, utils_1.fastCloneDeep)(this.rootValue);
989
990
  const editGridValue = lodash_1.default.get(rootValue, this.path, []);
@@ -1055,7 +1056,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1055
1056
  }
1056
1057
  checkComponentValidity(data, dirty, row, options = {}, errors = []) {
1057
1058
  var _a, _b;
1058
- const { silentCheck } = options;
1059
+ const { silentCheck, fromSubmission } = options;
1059
1060
  const superValid = super.checkComponentValidity(data, dirty, row, options, errors);
1060
1061
  // If super tells us that component invalid and there is no need to update alerts, just return false
1061
1062
  if (!superValid && (!this.alert && !this.hasOpenRows())) {
@@ -1065,7 +1066,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1065
1066
  const allRowErrors = [];
1066
1067
  this.editRows.forEach((editRow, index) => {
1067
1068
  // Trigger all errors on the row.
1068
- const rowErrors = this.validateRow(editRow, dirty, silentCheck);
1069
+ const rowErrors = this.validateRow(editRow, dirty, silentCheck, fromSubmission);
1069
1070
  errors.push(...rowErrors);
1070
1071
  allRowErrors.push(...rowErrors);
1071
1072
  if (this.rowRefs) {
@@ -21,6 +21,7 @@ export default class RadioComponent extends ListComponent {
21
21
  get isRadio(): boolean;
22
22
  get optionSelectedClass(): string;
23
23
  get listData(): any;
24
+ get selectMetadata(): any;
24
25
  templateData: {} | undefined;
25
26
  triggerUpdate: ((...args: any[]) => any) | undefined;
26
27
  itemsLoadedResolve: ((value: any) => void) | undefined;
@@ -109,6 +109,12 @@ class RadioComponent extends ListComponent_1.default {
109
109
  const listData = lodash_1.default.get(this.root, 'submission.metadata.listData', {});
110
110
  return lodash_1.default.get(listData, this.path);
111
111
  }
112
+ get selectMetadata() {
113
+ return super.selectData;
114
+ }
115
+ get selectData() {
116
+ return this.selectMetadata || this.component.selectData;
117
+ }
112
118
  init() {
113
119
  super.init();
114
120
  this.templateData = {};
@@ -244,12 +250,15 @@ class RadioComponent extends ListComponent_1.default {
244
250
  else if (!lodash_1.default.isString(value)) {
245
251
  value = lodash_1.default.toString(value);
246
252
  }
247
- const isModalPreviewWithUrlDataSource = options.modalPreview && this.component.dataSrc === 'url';
248
- if (this.component.dataSrc !== 'values' && !isModalPreviewWithUrlDataSource) {
253
+ const shouldUseSelectData = (options.modalPreview || this.inDataTable)
254
+ && this.component.dataSrc === 'url' && (this.loadedOptions.length || this.selectData);
255
+ if (this.component.dataSrc !== 'values' && !shouldUseSelectData) {
249
256
  return value;
250
257
  }
251
- const values = isModalPreviewWithUrlDataSource ? this.loadedOptions : this.component.values;
252
- const option = lodash_1.default.find(values, (v) => v.value === value);
258
+ const values = shouldUseSelectData ? this.loadedOptions : this.component.values;
259
+ const option = !(values === null || values === void 0 ? void 0 : values.length) && shouldUseSelectData ? {
260
+ label: this.itemTemplate(this.selectData),
261
+ } : lodash_1.default.find(values, (v) => v.value === value);
253
262
  if (!value) {
254
263
  return lodash_1.default.get(option, 'label', '');
255
264
  }
@@ -1563,8 +1563,8 @@ class SelectComponent extends ListComponent_1.default {
1563
1563
  super.detach();
1564
1564
  }
1565
1565
  focus() {
1566
+ super.focus.call(this);
1566
1567
  if (this.focusableElement) {
1567
- super.focus.call(this);
1568
1568
  this.focusableElement.focus();
1569
1569
  }
1570
1570
  }
@@ -1,44 +1,59 @@
1
1
  declare namespace _default {
2
- let title: string;
3
- let name: string;
4
- let path: string;
5
- let type: string;
6
- let display: string;
7
2
  let components: ({
8
3
  label: string;
9
- widget: string;
10
4
  tableView: boolean;
11
- data: {
12
- values: {
13
- label: string;
14
- value: string;
15
- }[];
16
- };
17
- dataType: string;
5
+ modal: boolean;
6
+ rowDrafts: boolean;
18
7
  key: string;
19
8
  type: string;
9
+ displayAsTable: boolean;
20
10
  input: boolean;
21
- applyMaskOn?: undefined;
22
- conditional?: undefined;
11
+ components: ({
12
+ label: string;
13
+ widget: string;
14
+ tableView: boolean;
15
+ data: {
16
+ values: {
17
+ label: string;
18
+ value: string;
19
+ }[];
20
+ };
21
+ validate: {
22
+ required: boolean;
23
+ };
24
+ key: string;
25
+ type: string;
26
+ input: boolean;
27
+ applyMaskOn?: undefined;
28
+ validateWhenHidden?: undefined;
29
+ } | {
30
+ label: string;
31
+ applyMaskOn: string;
32
+ tableView: boolean;
33
+ validate: {
34
+ required: boolean;
35
+ };
36
+ validateWhenHidden: boolean;
37
+ key: string;
38
+ type: string;
39
+ input: boolean;
40
+ widget?: undefined;
41
+ data?: undefined;
42
+ })[];
43
+ showValidations?: undefined;
44
+ saveOnEnter?: undefined;
23
45
  } | {
24
46
  label: string;
25
- applyMaskOn: string;
47
+ showValidations: boolean;
26
48
  tableView: boolean;
27
49
  key: string;
28
50
  type: string;
29
51
  input: boolean;
30
- conditional: {
31
- show: boolean;
32
- conjunction: string;
33
- conditions: {
34
- component: string;
35
- operator: string;
36
- value: number;
37
- }[];
38
- };
39
- widget?: undefined;
40
- data?: undefined;
41
- dataType?: undefined;
52
+ saveOnEnter: boolean;
53
+ modal?: undefined;
54
+ rowDrafts?: undefined;
55
+ displayAsTable?: undefined;
56
+ components?: undefined;
42
57
  })[];
43
58
  }
44
59
  export default _default;
@@ -1,59 +1,66 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
- title: 'FIO-8072',
5
- name: 'fio8072',
6
- path: 'fio8072',
7
- type: 'form',
8
- display: 'form',
9
- components: [
4
+ "components": [
10
5
  {
11
- label: 'Select',
12
- widget: 'choicesjs',
13
- tableView: true,
14
- data: {
15
- values: [
16
- {
17
- label: 'A',
18
- value: '1',
6
+ "label": "Edit Grid",
7
+ "tableView": false,
8
+ "modal": true,
9
+ "rowDrafts": true,
10
+ "key": "editGrid",
11
+ "type": "editgrid",
12
+ "displayAsTable": false,
13
+ "input": true,
14
+ "components": [
15
+ {
16
+ "label": "Select",
17
+ "widget": "choicesjs",
18
+ "tableView": true,
19
+ "data": {
20
+ "values": [
21
+ {
22
+ "label": "a",
23
+ "value": "a"
24
+ },
25
+ {
26
+ "label": "b",
27
+ "value": "b"
28
+ },
29
+ {
30
+ "label": "c",
31
+ "value": "c"
32
+ }
33
+ ]
19
34
  },
20
- {
21
- label: 'B',
22
- value: '2',
35
+ "validate": {
36
+ "required": true
23
37
  },
24
- {
25
- label: 'C',
26
- value: '10',
38
+ "key": "select",
39
+ "type": "select",
40
+ "input": true
41
+ },
42
+ {
43
+ "label": "Text Field",
44
+ "applyMaskOn": "change",
45
+ "tableView": true,
46
+ "validate": {
47
+ "required": true
27
48
  },
28
- {
29
- label: 'D',
30
- value: '1d',
31
- },
32
- ],
33
- },
34
- dataType: 'number',
35
- key: 'select',
36
- type: 'select',
37
- input: true,
49
+ "validateWhenHidden": false,
50
+ "key": "textField",
51
+ "type": "textfield",
52
+ "input": true
53
+ }
54
+ ]
38
55
  },
39
56
  {
40
- label: 'Text Field',
41
- applyMaskOn: 'change',
42
- tableView: true,
43
- key: 'textField',
44
- type: 'textfield',
45
- input: true,
46
- conditional: {
47
- show: true,
48
- conjunction: 'all',
49
- conditions: [
50
- {
51
- component: 'select',
52
- operator: 'lessThan',
53
- value: 5,
54
- },
55
- ],
56
- },
57
- },
58
- ],
57
+ "label": "Submit",
58
+ "showValidations": false,
59
+ "tableView": false,
60
+ "key": "submit",
61
+ "type": "button",
62
+ "input": true,
63
+ "saveOnEnter": false
64
+ }
65
+ ]
59
66
  };
@@ -0,0 +1,44 @@
1
+ declare namespace _default {
2
+ let title: string;
3
+ let name: string;
4
+ let path: string;
5
+ let type: string;
6
+ let display: string;
7
+ let components: ({
8
+ label: string;
9
+ widget: string;
10
+ tableView: boolean;
11
+ data: {
12
+ values: {
13
+ label: string;
14
+ value: string;
15
+ }[];
16
+ };
17
+ dataType: string;
18
+ key: string;
19
+ type: string;
20
+ input: boolean;
21
+ applyMaskOn?: undefined;
22
+ conditional?: undefined;
23
+ } | {
24
+ label: string;
25
+ applyMaskOn: string;
26
+ tableView: boolean;
27
+ key: string;
28
+ type: string;
29
+ input: boolean;
30
+ conditional: {
31
+ show: boolean;
32
+ conjunction: string;
33
+ conditions: {
34
+ component: string;
35
+ operator: string;
36
+ value: number;
37
+ }[];
38
+ };
39
+ widget?: undefined;
40
+ data?: undefined;
41
+ dataType?: undefined;
42
+ })[];
43
+ }
44
+ export default _default;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ title: 'FIO-8072',
5
+ name: 'fio8072',
6
+ path: 'fio8072',
7
+ type: 'form',
8
+ display: 'form',
9
+ components: [
10
+ {
11
+ label: 'Select',
12
+ widget: 'choicesjs',
13
+ tableView: true,
14
+ data: {
15
+ values: [
16
+ {
17
+ label: 'A',
18
+ value: '1',
19
+ },
20
+ {
21
+ label: 'B',
22
+ value: '2',
23
+ },
24
+ {
25
+ label: 'C',
26
+ value: '10',
27
+ },
28
+ {
29
+ label: 'D',
30
+ value: '1d',
31
+ },
32
+ ],
33
+ },
34
+ dataType: 'number',
35
+ key: 'select',
36
+ type: 'select',
37
+ input: true,
38
+ },
39
+ {
40
+ label: 'Text Field',
41
+ applyMaskOn: 'change',
42
+ tableView: true,
43
+ key: 'textField',
44
+ type: 'textfield',
45
+ input: true,
46
+ conditional: {
47
+ show: true,
48
+ conjunction: 'all',
49
+ conditions: [
50
+ {
51
+ component: 'select',
52
+ operator: 'lessThan',
53
+ value: 5,
54
+ },
55
+ ],
56
+ },
57
+ },
58
+ ],
59
+ };
@@ -22,6 +22,7 @@ import comp22 from './comp22';
22
22
  import comp23 from './comp23';
23
23
  import comp24 from './comp24';
24
24
  import comp25 from './comp25';
25
+ import comp26 from './comp26';
25
26
  import comp27 from './comp27';
26
27
  export { comp1, comp2, comp4, comp5, comp6, comp7, comp8, comp9, comp10, comp11, comp12, comp13, comp14, comp15, comp16, comp17, comp18, comp19, comp20, comp21, comp22, comp23, comp24, comp25, comp26, comp27 };
27
28
  export { multiSelect, multiSelectOptions } from "./comp3";
@@ -166,12 +166,19 @@ class SelectBoxesComponent extends Radio_1.default {
166
166
  return changed;
167
167
  }
168
168
  getValueAsString(value, options = {}) {
169
+ var _a, _b;
169
170
  if (!value) {
170
171
  return '';
171
172
  }
172
173
  if (this.isSelectURL) {
173
- if (options.modalPreview && this.loadedOptions) {
174
- return this.loadedOptions.filter((option) => value[option.value]).map((option) => option.label).join(', ');
174
+ if (options.modalPreview || this.options.readOnly || this.inDataTable) {
175
+ const checkedItems = lodash_1.default.keys(lodash_1.default.pickBy(value, (val) => val));
176
+ if (((_a = this.selectData) === null || _a === void 0 ? void 0 : _a.length) === checkedItems.length) {
177
+ return this.selectData.map(item => this.itemTemplate(item)).join(', ');
178
+ }
179
+ else if ((_b = this.loadedOptions) === null || _b === void 0 ? void 0 : _b.length) {
180
+ return this.loadedOptions.filter((option) => value[option.value]).map((option) => option.label).join(', ');
181
+ }
175
182
  }
176
183
  return (0, lodash_1.default)(value).pickBy((val) => val).keys().join(', ');
177
184
  }
@@ -20,10 +20,10 @@ export default class TextAreaComponent extends TextFieldComponent {
20
20
  setReadOnlyValue(value: any, index: any): void;
21
21
  get isJsonValue(): any;
22
22
  /**
23
- * Normalize values coming into updateValue. For example, depending on the configuration, string value `"true"` will be normalized to boolean `true`.
24
- * @param {*} value - The value to normalize
25
- * @returns {*} - Returns the normalized value
26
- */
23
+ * Normalize values coming into updateValue. For example, depending on the configuration, string value `"true"` will be normalized to boolean `true`.
24
+ * @param {*} value - The value to normalize
25
+ * @returns {*} - Returns the normalized value
26
+ */
27
27
  normalizeValue(value: any): any;
28
28
  normalizeSingleValue(value: any): any;
29
29
  setConvertedValue(value: any, index: any): any;
@@ -310,10 +310,10 @@ class TextAreaComponent extends TextField_1.default {
310
310
  return this.component.as && this.component.as === 'json';
311
311
  }
312
312
  /**
313
- * Normalize values coming into updateValue. For example, depending on the configuration, string value `"true"` will be normalized to boolean `true`.
314
- * @param {*} value - The value to normalize
315
- * @returns {*} - Returns the normalized value
316
- */
313
+ * Normalize values coming into updateValue. For example, depending on the configuration, string value `"true"` will be normalized to boolean `true`.
314
+ * @param {*} value - The value to normalize
315
+ * @returns {*} - Returns the normalized value
316
+ */
317
317
  normalizeValue(value) {
318
318
  if (this.component.multiple && Array.isArray(value)) {
319
319
  return value.map((singleValue) => this.normalizeSingleValue(singleValue));
@@ -27,15 +27,7 @@ class IsEqualTo extends ConditionOperator_1.default {
27
27
  if (conditionTriggerComponent
28
28
  && (0, utils_1.isSelectResourceWithObjectValue)(conditionTriggerComponent.component)
29
29
  && ((_b = conditionTriggerComponent.component) === null || _b === void 0 ? void 0 : _b.template)) {
30
- if (!value || !lodash_1.default.isPlainObject(value)) {
31
- return false;
32
- }
33
- const { template, valueProperty } = conditionTriggerComponent.component;
34
- if (valueProperty === 'data') {
35
- value = { data: value };
36
- comparedValue = { data: comparedValue };
37
- }
38
- return lodash_1.default.every((0, utils_1.getItemTemplateKeys)(template) || [], k => lodash_1.default.isEqual(lodash_1.default.get(value, k), lodash_1.default.get(comparedValue, k)));
30
+ return (0, utils_1.compareSelectResourceWithObjectTypeValues)(value, comparedValue, conditionTriggerComponent.component);
39
31
  }
40
32
  }
41
33
  //special check for select boxes
@@ -41,4 +41,7 @@ export const applyFormChanges: typeof Utils.applyFormChanges;
41
41
  export const findComponent: typeof Utils.findComponent;
42
42
  export const getEmptyValue: typeof Utils.getEmptyValue;
43
43
  export const isComponentDataEmpty: typeof Utils.isComponentDataEmpty;
44
+ export const isSelectResourceWithObjectValue: typeof Utils.isSelectResourceWithObjectValue;
45
+ export const compareSelectResourceWithObjectTypeValues: typeof Utils.compareSelectResourceWithObjectTypeValues;
46
+ export const getItemTemplateKeys: typeof Utils.getItemTemplateKeys;
44
47
  import { Utils } from '@formio/core';