@formio/js 5.0.0-dev.5720.5431de8 → 5.0.0-dev.5720.e861c22

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 (70) hide show
  1. package/Changelog.md +6 -0
  2. package/dist/formio.form.js +9 -9
  3. package/dist/formio.form.min.js +1 -1
  4. package/dist/formio.full.js +10 -10
  5. package/dist/formio.full.min.js +1 -1
  6. package/lib/cjs/Form.js +0 -2
  7. package/lib/cjs/Webform.js +1 -1
  8. package/lib/cjs/WebformBuilder.js +11 -2
  9. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +2 -1
  10. package/lib/cjs/components/_classes/nested/NestedComponent.js +4 -1
  11. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +2 -0
  12. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +50 -29
  13. package/lib/cjs/components/currency/Currency.d.ts +1 -0
  14. package/lib/cjs/components/editgrid/fixtures/comp17.d.ts +80 -0
  15. package/lib/cjs/components/editgrid/fixtures/comp17.js +99 -0
  16. package/lib/cjs/components/editgrid/fixtures/index.d.ts +2 -1
  17. package/lib/cjs/components/editgrid/fixtures/index.js +3 -1
  18. package/lib/cjs/components/number/Number.d.ts +7 -1
  19. package/lib/cjs/components/number/Number.js +11 -0
  20. package/lib/cjs/components/number/fixtures/comp10.d.ts +18 -0
  21. package/lib/cjs/components/number/fixtures/comp10.js +21 -0
  22. package/lib/cjs/components/number/fixtures/index.d.ts +2 -1
  23. package/lib/cjs/components/number/fixtures/index.js +3 -1
  24. package/lib/cjs/components/panel/Panel.d.ts +1 -0
  25. package/lib/cjs/components/panel/Panel.js +1 -0
  26. package/lib/cjs/components/radio/Radio.js +17 -6
  27. package/lib/cjs/components/radio/fixtures/comp12.d.ts +29 -0
  28. package/lib/cjs/components/radio/fixtures/comp12.js +36 -0
  29. package/lib/cjs/components/radio/fixtures/index.d.ts +2 -1
  30. package/lib/cjs/components/radio/fixtures/index.js +3 -1
  31. package/lib/cjs/components/select/Select.js +1 -1
  32. package/lib/cjs/components/time/Time.d.ts +2 -2
  33. package/lib/cjs/components/time/Time.js +3 -2
  34. package/lib/cjs/components/time/fixtures/comp4.d.ts +166 -0
  35. package/lib/cjs/components/time/fixtures/comp4.js +171 -0
  36. package/lib/cjs/components/time/fixtures/index.d.ts +2 -1
  37. package/lib/cjs/components/time/fixtures/index.js +3 -1
  38. package/lib/mjs/Form.js +0 -2
  39. package/lib/mjs/Webform.js +1 -1
  40. package/lib/mjs/WebformBuilder.js +10 -2
  41. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +2 -1
  42. package/lib/mjs/components/_classes/nested/NestedComponent.js +4 -1
  43. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +2 -0
  44. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +51 -29
  45. package/lib/mjs/components/currency/Currency.d.ts +1 -0
  46. package/lib/mjs/components/editgrid/fixtures/comp17.d.ts +80 -0
  47. package/lib/mjs/components/editgrid/fixtures/comp17.js +97 -0
  48. package/lib/mjs/components/editgrid/fixtures/index.d.ts +2 -1
  49. package/lib/mjs/components/editgrid/fixtures/index.js +2 -1
  50. package/lib/mjs/components/number/Number.d.ts +7 -1
  51. package/lib/mjs/components/number/Number.js +11 -0
  52. package/lib/mjs/components/number/fixtures/comp10.d.ts +18 -0
  53. package/lib/mjs/components/number/fixtures/comp10.js +19 -0
  54. package/lib/mjs/components/number/fixtures/index.d.ts +2 -1
  55. package/lib/mjs/components/number/fixtures/index.js +2 -1
  56. package/lib/mjs/components/panel/Panel.d.ts +1 -0
  57. package/lib/mjs/components/panel/Panel.js +1 -0
  58. package/lib/mjs/components/radio/Radio.js +17 -6
  59. package/lib/mjs/components/radio/fixtures/comp12.d.ts +29 -0
  60. package/lib/mjs/components/radio/fixtures/comp12.js +34 -0
  61. package/lib/mjs/components/radio/fixtures/index.d.ts +2 -1
  62. package/lib/mjs/components/radio/fixtures/index.js +2 -1
  63. package/lib/mjs/components/select/Select.js +1 -1
  64. package/lib/mjs/components/time/Time.d.ts +2 -2
  65. package/lib/mjs/components/time/Time.js +3 -2
  66. package/lib/mjs/components/time/fixtures/comp4.d.ts +166 -0
  67. package/lib/mjs/components/time/fixtures/comp4.js +169 -0
  68. package/lib/mjs/components/time/fixtures/index.d.ts +2 -1
  69. package/lib/mjs/components/time/fixtures/index.js +2 -1
  70. package/package.json +1 -1
package/lib/cjs/Form.js CHANGED
@@ -31,7 +31,6 @@ const Formio_1 = require("./Formio");
31
31
  const displays_1 = __importDefault(require("./displays"));
32
32
  const templates_1 = __importDefault(require("./templates"));
33
33
  const FormioUtils = __importStar(require("./utils/utils"));
34
- const lodash_1 = __importDefault(require("lodash"));
35
34
  class Form extends Element_1.default {
36
35
  constructor(elementOrForm, formOrOptions, options = {}) {
37
36
  let element, form, formOptions;
@@ -225,7 +224,6 @@ class Form extends Element_1.default {
225
224
  this.instance = this.instance || this.create(form.display);
226
225
  const options = this.getFormInitOptions(formParam, form);
227
226
  this.instance.setUrl(formParam, options);
228
- lodash_1.default.set(form, 'config.myApiUrl', options.project);
229
227
  this.instance.nosubmit = false;
230
228
  this._form = this.instance.form = form;
231
229
  if (submission) {
@@ -1130,7 +1130,7 @@ class Webform extends NestedDataComponent_1.default {
1130
1130
  });
1131
1131
  const displayedErrors = [];
1132
1132
  if (errors.length) {
1133
- errors = lodash_1.default.uniqBy(errors, (error) => error.message);
1133
+ errors = lodash_1.default.uniqBy(errors, (error) => { var _a, _b; return [error.message, (_a = error.component) === null || _a === void 0 ? void 0 : _a.id, (_b = error.context) === null || _b === void 0 ? void 0 : _b.path].join(); });
1134
1134
  const createListItem = (message, index) => {
1135
1135
  var _a, _b, _c;
1136
1136
  const err = errors[index];
@@ -908,7 +908,11 @@ class WebformBuilder extends Component_1.default {
908
908
  if (form && form.properties) {
909
909
  this.options.properties = form.properties;
910
910
  }
911
- this.keyboardActionsEnabled = lodash_1.default.get(this.options, 'keyboardBuilder', false) || ((_a = this.options.properties) === null || _a === void 0 ? void 0 : _a.keyboardBuilder);
911
+ let keyboardActionsEnabled = lodash_1.default.get(this.options, 'keyboardBuilder', false) || ((_a = this.options.properties) === null || _a === void 0 ? void 0 : _a.keyboardBuilder);
912
+ if (typeof keyboardActionsEnabled === 'string') {
913
+ keyboardActionsEnabled = keyboardActionsEnabled === 'true';
914
+ }
915
+ this.keyboardActionsEnabled = keyboardActionsEnabled;
912
916
  const isShowSubmitButton = !this.options.noDefaultSubmitButton
913
917
  && (!form.components.length || !form.components.find(comp => comp.key === 'submit'));
914
918
  // Ensure there is at least a submit button.
@@ -1060,7 +1064,10 @@ class WebformBuilder extends Component_1.default {
1060
1064
  'calculateValue',
1061
1065
  'conditional',
1062
1066
  'customConditional',
1063
- 'id'
1067
+ 'id',
1068
+ 'fields.day.required',
1069
+ 'fields.month.required',
1070
+ 'fields.year.required',
1064
1071
  ]));
1065
1072
  const parentComponent = defaultValueComponent.parent;
1066
1073
  let tabIndex = -1;
@@ -1236,6 +1243,7 @@ class WebformBuilder extends Component_1.default {
1236
1243
  const previewButtons = this.componentEdit.querySelectorAll(`[${this._referenceAttributeName}="previewButton"]`);
1237
1244
  previewButtons.forEach((previewButton) => {
1238
1245
  this.editForm.addEventListener(previewButton, 'click', (event) => {
1246
+ var _a;
1239
1247
  event.preventDefault();
1240
1248
  this.showPreview = !this.showPreview;
1241
1249
  this.editForm.detach();
@@ -1247,6 +1255,7 @@ class WebformBuilder extends Component_1.default {
1247
1255
  helplinks: this.helplinks,
1248
1256
  }));
1249
1257
  this.editForm.attach(this.componentEdit.querySelector(`[${this._referenceAttributeName}="editForm"]`));
1258
+ this.updateComponent((_a = this.editForm.submission.data) !== null && _a !== void 0 ? _a : component);
1250
1259
  this.attachEditComponentControls(component, parent, isNew, original, ComponentClass);
1251
1260
  });
1252
1261
  });
@@ -211,11 +211,12 @@ export default class NestedComponent extends Field {
211
211
  calculateValue(data: any, flags: any, row: any): any;
212
212
  isLastPage(): boolean;
213
213
  isValid(data: any, dirty: any): any;
214
- validationProcessor({ scope, data, row, instance }: {
214
+ validationProcessor({ scope, data, row, instance, component }: {
215
215
  scope: any;
216
216
  data: any;
217
217
  row: any;
218
218
  instance: any;
219
+ component: any;
219
220
  }, flags: any): void;
220
221
  /**
221
222
  * Perform a validation on all child components of this nested component.
@@ -681,8 +681,11 @@ class NestedComponent extends Field_1.default {
681
681
  isValid(data, dirty) {
682
682
  return this.getComponents().reduce((valid, comp) => comp.isValid(data, dirty) && valid, super.isValid(data, dirty));
683
683
  }
684
- validationProcessor({ scope, data, row, instance }, flags) {
684
+ validationProcessor({ scope, data, row, instance, component }, flags) {
685
685
  const { dirty } = flags;
686
+ if (this.root.hasExtraPages && this.page !== this.root.page) {
687
+ instance = this.getComponentById(component.id);
688
+ }
686
689
  if (!instance) {
687
690
  return;
688
691
  }
@@ -12,6 +12,8 @@ export default class NestedArrayComponent extends NestedDataComponent {
12
12
  hasAddButton(): any;
13
13
  getComponent(path: any, fn: any, originalPath: any): any;
14
14
  everyComponent(fn: any, rowIndex: any, options?: {}): void;
15
+ _getEmailTableHeader(options: any): string;
16
+ _getEmailTableBody(options: any): string;
15
17
  getComponents(rowIndex: any): any;
16
18
  }
17
19
  import NestedDataComponent from '../nesteddata/NestedDataComponent';
@@ -149,39 +149,60 @@ class NestedArrayComponent extends NestedDataComponent_1.default {
149
149
  }
150
150
  });
151
151
  }
152
+ _getEmailTableHeader(options) {
153
+ let row = '';
154
+ const getHeaderCell = (component) => {
155
+ if (!component.isInputComponent || !component.visible || component.skipInEmail) {
156
+ return '';
157
+ }
158
+ const label = component.label || component.key;
159
+ return `<th style="padding: 5px 10px;">${label}</th>`;
160
+ };
161
+ const components = this.getComponents(0);
162
+ for (const component of components) {
163
+ if (component.isInputComponent) {
164
+ row += getHeaderCell(component);
165
+ }
166
+ else if ((0, utils_1.isLayoutComponent)(component) && typeof component.everyComponent === 'function') {
167
+ component.everyComponent((comp) => {
168
+ row += getHeaderCell(comp);
169
+ }, options);
170
+ }
171
+ }
172
+ return `<thead><tr>${row}</tr></thead>`;
173
+ }
174
+ _getEmailTableBody(options) {
175
+ const getBodyCell = (component) => {
176
+ if (!component.isInputComponent || !component.visible || component.skipInEmail) {
177
+ return '';
178
+ }
179
+ return `<td style="padding: 5px 10px;">${component.getView(component.dataValue, options)}</td>`;
180
+ };
181
+ const rows = [];
182
+ for (const { components } of this.iteratableRows) {
183
+ let row = '';
184
+ for (const component of components) {
185
+ if (component.isInputComponent) {
186
+ row += getBodyCell(component);
187
+ }
188
+ else if ((0, utils_1.isLayoutComponent)(component) && typeof component.everyComponent === 'function') {
189
+ component.everyComponent((comp) => {
190
+ row += getBodyCell(comp);
191
+ }, options);
192
+ }
193
+ }
194
+ rows.push(`<tr>${row}</tr>`);
195
+ }
196
+ return `<tbody>${rows.join('')}</tbody>`;
197
+ }
152
198
  getValueAsString(value, options) {
153
- var _a;
154
199
  if (options === null || options === void 0 ? void 0 : options.email) {
155
- let result = (`
200
+ return `
156
201
  <table border="1" style="width:100%">
157
- <thead>
158
- <tr>
159
- `);
160
- (_a = this.component.components) === null || _a === void 0 ? void 0 : _a.forEach((component) => {
161
- const label = component.label || component.key;
162
- result += `<th style="padding: 5px 10px;">${label}</th>`;
163
- });
164
- result += (`
165
- </tr>
166
- </thead>
167
- <tbody>
168
- `);
169
- this.iteratableRows.forEach(({ components }) => {
170
- result += '<tr>';
171
- lodash_1.default.each(components, (component) => {
172
- result += '<td style="padding:5px 10px;">';
173
- if (component.isInputComponent && component.visible && !component.skipInEmail) {
174
- result += component.getView(component.dataValue, options);
175
- }
176
- result += '</td>';
177
- });
178
- result += '</tr>';
179
- });
180
- result += (`
181
- </tbody>
202
+ ${this._getEmailTableHeader(options)}
203
+ ${this._getEmailTableBody(options)}
182
204
  </table>
183
- `);
184
- return result;
205
+ `;
185
206
  }
186
207
  if (!value || !value.length) {
187
208
  return '';
@@ -2,6 +2,7 @@ export default class CurrencyComponent extends NumberComponent {
2
2
  constructor(component: any, options: any, data: any);
3
3
  currencyPrefix: any;
4
4
  currencySuffix: any;
5
+ parseNumber(value: any): number;
5
6
  parseValue(value: any): string | null;
6
7
  addZerosAndFormatValue(value: any): any;
7
8
  stripPrefixSuffix(value: any): any;
@@ -0,0 +1,80 @@
1
+ declare namespace _default {
2
+ let type: string;
3
+ let display: string;
4
+ let components: ({
5
+ label: string;
6
+ tableView: boolean;
7
+ rowDrafts: boolean;
8
+ key: string;
9
+ type: string;
10
+ input: boolean;
11
+ components: {
12
+ collapsible: boolean;
13
+ key: string;
14
+ type: string;
15
+ label: string;
16
+ input: boolean;
17
+ tableView: boolean;
18
+ components: {
19
+ label: string;
20
+ columns: ({
21
+ components: {
22
+ label: string;
23
+ optionsLabelPosition: string;
24
+ inline: boolean;
25
+ tableView: boolean;
26
+ values: {
27
+ label: string;
28
+ value: string;
29
+ shortcut: string;
30
+ }[];
31
+ key: string;
32
+ type: string;
33
+ input: boolean;
34
+ }[];
35
+ width: number;
36
+ offset: number;
37
+ push: number;
38
+ pull: number;
39
+ size: string;
40
+ currentWidth: number;
41
+ } | {
42
+ components: {
43
+ label: string;
44
+ applyMaskOn: string;
45
+ autoExpand: boolean;
46
+ tableView: boolean;
47
+ key: string;
48
+ conditional: {
49
+ show: boolean;
50
+ conjunction: string;
51
+ };
52
+ type: string;
53
+ input: boolean;
54
+ }[];
55
+ width: number;
56
+ offset: number;
57
+ push: number;
58
+ pull: number;
59
+ size: string;
60
+ currentWidth: number;
61
+ })[];
62
+ key: string;
63
+ type: string;
64
+ input: boolean;
65
+ tableView: boolean;
66
+ }[];
67
+ }[];
68
+ disableOnInvalid?: undefined;
69
+ } | {
70
+ type: string;
71
+ label: string;
72
+ key: string;
73
+ disableOnInvalid: boolean;
74
+ input: boolean;
75
+ tableView: boolean;
76
+ rowDrafts?: undefined;
77
+ components?: undefined;
78
+ })[];
79
+ }
80
+ export default _default;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ type: 'form',
5
+ display: 'form',
6
+ components: [
7
+ {
8
+ label: 'Edit Grid',
9
+ tableView: false,
10
+ rowDrafts: false,
11
+ key: 'editGrid',
12
+ type: 'editgrid',
13
+ input: true,
14
+ components: [
15
+ {
16
+ collapsible: false,
17
+ key: 'panel',
18
+ type: 'panel',
19
+ label: 'Panel',
20
+ input: false,
21
+ tableView: false,
22
+ components: [
23
+ {
24
+ label: 'Columns',
25
+ columns: [
26
+ {
27
+ components: [
28
+ {
29
+ label: 'Radio',
30
+ optionsLabelPosition: 'right',
31
+ inline: false,
32
+ tableView: true,
33
+ values: [
34
+ {
35
+ label: 'yes',
36
+ value: 'yes',
37
+ shortcut: ''
38
+ },
39
+ {
40
+ label: 'no',
41
+ value: 'no',
42
+ shortcut: ''
43
+ }
44
+ ],
45
+ key: 'radio',
46
+ type: 'radio',
47
+ input: true
48
+ }
49
+ ],
50
+ width: 6,
51
+ offset: 0,
52
+ push: 0,
53
+ pull: 0,
54
+ size: 'md',
55
+ currentWidth: 6
56
+ },
57
+ {
58
+ components: [
59
+ {
60
+ label: 'Text Area',
61
+ applyMaskOn: 'change',
62
+ autoExpand: false,
63
+ tableView: true,
64
+ key: 'textArea',
65
+ conditional: {
66
+ show: true,
67
+ conjunction: 'all'
68
+ },
69
+ type: 'textarea',
70
+ input: true
71
+ }
72
+ ],
73
+ width: 6,
74
+ offset: 0,
75
+ push: 0,
76
+ pull: 0,
77
+ size: 'md',
78
+ currentWidth: 6
79
+ }
80
+ ],
81
+ key: 'columns',
82
+ type: 'columns',
83
+ input: false,
84
+ tableView: false
85
+ }
86
+ ]
87
+ }
88
+ ]
89
+ },
90
+ {
91
+ type: 'button',
92
+ label: 'Submit',
93
+ key: 'submit',
94
+ disableOnInvalid: true,
95
+ input: true,
96
+ tableView: false
97
+ }
98
+ ]
99
+ };
@@ -14,8 +14,9 @@ import comp7 from './comp7';
14
14
  import comp8 from './comp8';
15
15
  import comp9 from './comp9';
16
16
  import comp16 from './comp16';
17
+ import comp17 from './comp17';
17
18
  import compOpenWhenEmpty from './comp-openWhenEmpty';
18
19
  import withOpenWhenEmptyAndConditions from './comp-with-conditions-and-openWhenEmpty';
19
20
  import compWithCustomDefaultValue from './comp-with-custom-default-value';
20
21
  import compTestEvents from './comp-test-events';
21
- export { comp1, comp2, comp3, comp10, comp11, comp12, comp13, comp14, comp15, comp4, comp5, comp6, comp7, comp8, comp9, comp16, compOpenWhenEmpty, withOpenWhenEmptyAndConditions, compWithCustomDefaultValue, compTestEvents };
22
+ export { comp1, comp2, comp3, comp10, comp11, comp12, comp13, comp14, comp15, comp4, comp5, comp6, comp7, comp8, comp9, comp16, comp17, compOpenWhenEmpty, withOpenWhenEmptyAndConditions, compWithCustomDefaultValue, compTestEvents };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.compTestEvents = exports.compWithCustomDefaultValue = exports.withOpenWhenEmptyAndConditions = exports.compOpenWhenEmpty = exports.comp16 = exports.comp9 = exports.comp8 = exports.comp7 = exports.comp6 = exports.comp5 = exports.comp4 = exports.comp15 = exports.comp14 = exports.comp13 = exports.comp12 = exports.comp11 = exports.comp10 = exports.comp3 = exports.comp2 = exports.comp1 = void 0;
6
+ exports.compTestEvents = exports.compWithCustomDefaultValue = exports.withOpenWhenEmptyAndConditions = exports.compOpenWhenEmpty = exports.comp17 = exports.comp16 = exports.comp9 = exports.comp8 = exports.comp7 = exports.comp6 = exports.comp5 = exports.comp4 = exports.comp15 = exports.comp14 = exports.comp13 = exports.comp12 = exports.comp11 = exports.comp10 = exports.comp3 = exports.comp2 = exports.comp1 = void 0;
7
7
  const comp1_1 = __importDefault(require("./comp1"));
8
8
  exports.comp1 = comp1_1.default;
9
9
  const comp2_1 = __importDefault(require("./comp2"));
@@ -36,6 +36,8 @@ const comp15_1 = __importDefault(require("./comp15"));
36
36
  exports.comp15 = comp15_1.default;
37
37
  const comp16_1 = __importDefault(require("./comp16"));
38
38
  exports.comp16 = comp16_1.default;
39
+ const comp17_1 = __importDefault(require("./comp17"));
40
+ exports.comp17 = comp17_1.default;
39
41
  const comp_with_conditions_and_openWhenEmpty_1 = __importDefault(require("./comp-with-conditions-and-openWhenEmpty"));
40
42
  exports.withOpenWhenEmptyAndConditions = comp_with_conditions_and_openWhenEmpty_1.default;
41
43
  const comp_openWhenEmpty_1 = __importDefault(require("./comp-openWhenEmpty"));
@@ -27,7 +27,13 @@ export default class NumberComponent extends Input {
27
27
  */
28
28
  createNumberMask(): any;
29
29
  isDecimalAllowed(): any;
30
- parseNumber(value: any): number;
30
+ /**
31
+ * parses a numeric string by removing the delimiters and replacing the decimal separator back to '.' so that it can
32
+ * be processed by either parseInt or parseFloat
33
+ * @param {string} value the value to be parsed
34
+ * @returns {number} a parsed number
35
+ */
36
+ parseNumber(value: string): number;
31
37
  setInputMask(input: any): void;
32
38
  getValueAt(index: any): number | null;
33
39
  setValueAt(index: any, value: any, flags?: {}): void;
@@ -91,6 +91,11 @@ class NumberComponent extends Input_1.default {
91
91
  }
92
92
  get defaultValue() {
93
93
  let defaultValue = super.defaultValue;
94
+ if (typeof defaultValue === 'string') {
95
+ // Default value may be a string or have custom thousands separators or decimal symbols, so we need to call
96
+ // parseNumber on it
97
+ defaultValue = this.parseNumber(defaultValue);
98
+ }
94
99
  if (!defaultValue && this.component.defaultValue === 0) {
95
100
  defaultValue = this.component.defaultValue;
96
101
  }
@@ -102,6 +107,12 @@ class NumberComponent extends Input_1.default {
102
107
  isDecimalAllowed() {
103
108
  return lodash_1.default.get(this.component, 'allowDecimal', !(this.component.validate && this.component.validate.integer));
104
109
  }
110
+ /**
111
+ * parses a numeric string by removing the delimiters and replacing the decimal separator back to '.' so that it can
112
+ * be processed by either parseInt or parseFloat
113
+ * @param {string} value the value to be parsed
114
+ * @returns {number} a parsed number
115
+ */
105
116
  parseNumber(value) {
106
117
  // Remove delimiters and convert decimal separator to dot.
107
118
  value = value.split(this.delimiter).join('').replace(this.decimalSeparator, '.');
@@ -0,0 +1,18 @@
1
+ declare namespace _default {
2
+ let components: {
3
+ label: string;
4
+ applyMaskOn: string;
5
+ mask: boolean;
6
+ tableView: boolean;
7
+ delimiter: boolean;
8
+ requireDecimal: boolean;
9
+ inputFormat: string;
10
+ truncateMultipleSpaces: boolean;
11
+ validateWhenHidden: boolean;
12
+ key: string;
13
+ type: string;
14
+ input: boolean;
15
+ defaultValue: string;
16
+ }[];
17
+ }
18
+ export default _default;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ components: [
5
+ {
6
+ "label": "Number",
7
+ "applyMaskOn": "change",
8
+ "mask": false,
9
+ "tableView": false,
10
+ "delimiter": false,
11
+ "requireDecimal": false,
12
+ "inputFormat": "plain",
13
+ "truncateMultipleSpaces": false,
14
+ "validateWhenHidden": false,
15
+ "key": "number",
16
+ "type": "number",
17
+ "input": true,
18
+ "defaultValue": "123.23"
19
+ }
20
+ ]
21
+ };
@@ -7,4 +7,5 @@ import comp6 from './comp6';
7
7
  import comp7 from './comp7';
8
8
  import comp8 from './comp8';
9
9
  import comp9 from './comp9';
10
- export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8, comp9 };
10
+ import comp10 from './comp10';
11
+ export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8, comp9, comp10 };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.comp9 = exports.comp8 = exports.comp7 = exports.comp6 = exports.comp5 = exports.comp4 = exports.comp3 = exports.comp2 = exports.comp1 = void 0;
6
+ exports.comp10 = exports.comp9 = exports.comp8 = exports.comp7 = exports.comp6 = exports.comp5 = exports.comp4 = exports.comp3 = exports.comp2 = exports.comp1 = void 0;
7
7
  const comp1_1 = __importDefault(require("./comp1"));
8
8
  exports.comp1 = comp1_1.default;
9
9
  const comp2_1 = __importDefault(require("./comp2"));
@@ -22,3 +22,5 @@ const comp8_1 = __importDefault(require("./comp8"));
22
22
  exports.comp8 = comp8_1.default;
23
23
  const comp9_1 = __importDefault(require("./comp9"));
24
24
  exports.comp9 = comp9_1.default;
25
+ const comp10_1 = __importDefault(require("./comp10"));
26
+ exports.comp10 = comp10_1.default;
@@ -4,6 +4,7 @@ export default class PanelComponent extends NestedComponent {
4
4
  icon: string;
5
5
  group: string;
6
6
  documentation: string;
7
+ showPreview: boolean;
7
8
  weight: number;
8
9
  schema: any;
9
10
  };
@@ -27,6 +27,7 @@ class PanelComponent extends NestedComponent_1.default {
27
27
  icon: 'list-alt',
28
28
  group: 'layout',
29
29
  documentation: '/userguide/form-building/layout-components#panel',
30
+ showPreview: false,
30
31
  weight: 30,
31
32
  schema: PanelComponent.schema()
32
33
  };
@@ -264,6 +264,16 @@ class RadioComponent extends ListComponent_1.default {
264
264
  if (method.toUpperCase() === 'GET') {
265
265
  body = null;
266
266
  }
267
+ const limit = this.component.limit || 100;
268
+ const skip = this.isScrollLoading ? this.selectOptions.length : 0;
269
+ // Allow for url interpolation.
270
+ url = this.interpolate(this.sanitize(url, this.shouldSanitizeValue), {
271
+ formioBase: Formio_1.Formio.getBaseUrl(),
272
+ search,
273
+ limit,
274
+ skip,
275
+ page: Math.abs(Math.floor(skip / limit))
276
+ });
267
277
  // Set ignoreCache if it is
268
278
  options.ignoreCache = this.component.ignoreCache;
269
279
  // Make the request.
@@ -295,14 +305,15 @@ class RadioComponent extends ListComponent_1.default {
295
305
  setItems(items) {
296
306
  const listData = [];
297
307
  items === null || items === void 0 ? void 0 : items.forEach((item, i) => {
308
+ const valueAtProperty = lodash_1.default.get(item, this.component.valueProperty);
298
309
  this.loadedOptions[i] = {
299
- value: this.component.valueProperty ? item[this.component.valueProperty] : item,
300
- label: this.component.valueProperty ? this.itemTemplate(item, item[this.component.valueProperty]) : this.itemTemplate(item, item, i)
310
+ value: this.component.valueProperty ? valueAtProperty : item,
311
+ label: this.component.valueProperty ? this.itemTemplate(item, valueAtProperty) : this.itemTemplate(item, item, i)
301
312
  };
302
- listData.push(this.templateData[this.component.valueProperty ? item[this.component.valueProperty] : i]);
303
- if ((this.component.valueProperty || !this.isRadio) && (lodash_1.default.isUndefined(item[this.component.valueProperty]) ||
304
- (!this.isRadio && lodash_1.default.isObject(item[this.component.valueProperty])) ||
305
- (!this.isRadio && lodash_1.default.isBoolean(item[this.component.valueProperty])))) {
313
+ listData.push(this.templateData[this.component.valueProperty ? valueAtProperty : i]);
314
+ if ((this.component.valueProperty || !this.isRadio) && (lodash_1.default.isUndefined(valueAtProperty) ||
315
+ (!this.isRadio && lodash_1.default.isObject(valueAtProperty)) ||
316
+ (!this.isRadio && lodash_1.default.isBoolean(valueAtProperty)))) {
306
317
  this.loadedOptions[i].invalid = true;
307
318
  }
308
319
  });
@@ -0,0 +1,29 @@
1
+ declare namespace _default {
2
+ let components: {
3
+ label: string;
4
+ optionsLabelPosition: string;
5
+ tableView: boolean;
6
+ dataSrc: string;
7
+ values: {
8
+ label: string;
9
+ value: string;
10
+ shortcut: string;
11
+ }[];
12
+ valueProperty: string;
13
+ validateWhenHidden: boolean;
14
+ key: string;
15
+ type: string;
16
+ data: {
17
+ url: string;
18
+ headers: {
19
+ key: string;
20
+ value: string;
21
+ }[];
22
+ };
23
+ template: string;
24
+ authenticate: boolean;
25
+ input: boolean;
26
+ inputType: string;
27
+ }[];
28
+ }
29
+ export default _default;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ components: [
5
+ {
6
+ "label": "Select Boxes",
7
+ "optionsLabelPosition": "right",
8
+ "tableView": false,
9
+ "dataSrc": "url",
10
+ "values": [
11
+ {
12
+ "label": "",
13
+ "value": "",
14
+ "shortcut": ""
15
+ }
16
+ ],
17
+ "valueProperty": "data.name",
18
+ "validateWhenHidden": false,
19
+ "key": "selectBoxes",
20
+ "type": "selectboxes",
21
+ "data": {
22
+ "url": "https://remote-dev.form.io/projectId/name/submission",
23
+ "headers": [
24
+ {
25
+ "key": "",
26
+ "value": ""
27
+ }
28
+ ]
29
+ },
30
+ "template": "<span>{{ item.data.name }}</span>",
31
+ "authenticate": true,
32
+ "input": true,
33
+ "inputType": "checkbox"
34
+ }
35
+ ]
36
+ };
@@ -9,4 +9,5 @@ import comp8 from './comp8';
9
9
  import comp9 from './comp9';
10
10
  import comp10 from './comp10';
11
11
  import comp11 from './comp11';
12
- export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8, comp9, comp10, comp11 };
12
+ import comp12 from './comp12';
13
+ export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8, comp9, comp10, comp11, comp12 };