@formio/js 5.0.0-dev.5720.5431de8 → 5.0.0-dev.5723.99bf27e

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 (42) hide show
  1. package/Changelog.md +3 -0
  2. package/dist/formio.form.js +5 -5
  3. package/dist/formio.form.min.js +1 -1
  4. package/dist/formio.full.js +6 -6
  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 +5 -1
  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/currency/Currency.d.ts +1 -0
  12. package/lib/cjs/components/number/Number.d.ts +7 -1
  13. package/lib/cjs/components/number/Number.js +11 -0
  14. package/lib/cjs/components/number/fixtures/comp10.d.ts +18 -0
  15. package/lib/cjs/components/number/fixtures/comp10.js +21 -0
  16. package/lib/cjs/components/number/fixtures/index.d.ts +2 -1
  17. package/lib/cjs/components/number/fixtures/index.js +3 -1
  18. package/lib/cjs/components/time/Time.d.ts +2 -2
  19. package/lib/cjs/components/time/Time.js +3 -2
  20. package/lib/cjs/components/time/fixtures/comp4.d.ts +166 -0
  21. package/lib/cjs/components/time/fixtures/comp4.js +171 -0
  22. package/lib/cjs/components/time/fixtures/index.d.ts +2 -1
  23. package/lib/cjs/components/time/fixtures/index.js +3 -1
  24. package/lib/mjs/Form.js +0 -2
  25. package/lib/mjs/Webform.js +1 -1
  26. package/lib/mjs/WebformBuilder.js +5 -1
  27. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +2 -1
  28. package/lib/mjs/components/_classes/nested/NestedComponent.js +4 -1
  29. package/lib/mjs/components/currency/Currency.d.ts +1 -0
  30. package/lib/mjs/components/number/Number.d.ts +7 -1
  31. package/lib/mjs/components/number/Number.js +11 -0
  32. package/lib/mjs/components/number/fixtures/comp10.d.ts +18 -0
  33. package/lib/mjs/components/number/fixtures/comp10.js +19 -0
  34. package/lib/mjs/components/number/fixtures/index.d.ts +2 -1
  35. package/lib/mjs/components/number/fixtures/index.js +2 -1
  36. package/lib/mjs/components/time/Time.d.ts +2 -2
  37. package/lib/mjs/components/time/Time.js +3 -2
  38. package/lib/mjs/components/time/fixtures/comp4.d.ts +166 -0
  39. package/lib/mjs/components/time/fixtures/comp4.js +169 -0
  40. package/lib/mjs/components/time/fixtures/index.d.ts +2 -1
  41. package/lib/mjs/components/time/fixtures/index.js +2 -1
  42. package/package.json +1 -1
@@ -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;
@@ -89,6 +89,11 @@ export default class NumberComponent extends Input {
89
89
  }
90
90
  get defaultValue() {
91
91
  let defaultValue = super.defaultValue;
92
+ if (typeof defaultValue === 'string') {
93
+ // Default value may be a string or have custom thousands separators or decimal symbols, so we need to call
94
+ // parseNumber on it
95
+ defaultValue = this.parseNumber(defaultValue);
96
+ }
92
97
  if (!defaultValue && this.component.defaultValue === 0) {
93
98
  defaultValue = this.component.defaultValue;
94
99
  }
@@ -100,6 +105,12 @@ export default class NumberComponent extends Input {
100
105
  isDecimalAllowed() {
101
106
  return _.get(this.component, 'allowDecimal', !(this.component.validate && this.component.validate.integer));
102
107
  }
108
+ /**
109
+ * parses a numeric string by removing the delimiters and replacing the decimal separator back to '.' so that it can
110
+ * be processed by either parseInt or parseFloat
111
+ * @param {string} value the value to be parsed
112
+ * @returns {number} a parsed number
113
+ */
103
114
  parseNumber(value) {
104
115
  // Remove delimiters and convert decimal separator to dot.
105
116
  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,19 @@
1
+ export default {
2
+ components: [
3
+ {
4
+ "label": "Number",
5
+ "applyMaskOn": "change",
6
+ "mask": false,
7
+ "tableView": false,
8
+ "delimiter": false,
9
+ "requireDecimal": false,
10
+ "inputFormat": "plain",
11
+ "truncateMultipleSpaces": false,
12
+ "validateWhenHidden": false,
13
+ "key": "number",
14
+ "type": "number",
15
+ "input": true,
16
+ "defaultValue": "123.23"
17
+ }
18
+ ]
19
+ };
@@ -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 };
@@ -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 };
@@ -1,12 +1,12 @@
1
1
  export default class TimeComponent extends TextFieldComponent {
2
- rawData: string | never[];
2
+ rawData: any;
3
3
  get dataFormat(): any;
4
4
  get skipMaskValidation(): boolean;
5
5
  isNotCompleteInput(value: any): any;
6
6
  removeValue(index: any): void;
7
7
  resetRawData(index: any): void;
8
8
  setRawValue(value: any, index: any): void;
9
- getRawValue(index: any): string | never[];
9
+ getRawValue(index: any): any;
10
10
  getValueAt(index: any): any;
11
11
  setValueAt(index: any, value: any): void;
12
12
  getStringAsValue(view: any): any;
@@ -31,7 +31,8 @@ export default class TimeComponent extends TextFieldComponent {
31
31
  this.component.inputType = isEdgeBrowser && edgeVersion <= 18
32
32
  ? 'text'
33
33
  : (this.component.inputType || 'time');
34
- this.rawData = this.component.multiple ? [] : this.emptyValue;
34
+ // If default value is given then the raw data needs to be set
35
+ this.rawData = this.component.multiple ? [] : this.getValueAsString(this.defaultValue) || this.emptyValue;
35
36
  }
36
37
  static get builderInfo() {
37
38
  return {
@@ -62,7 +63,7 @@ export default class TimeComponent extends TextFieldComponent {
62
63
  return value;
63
64
  }
64
65
  get validationValue() {
65
- if (Array.isArray(this.rawData) && !this.rawData.length || !this.rawData) {
66
+ if ((Array.isArray(this.rawData) && !this.rawData.length) || !this.rawData) {
66
67
  return this.dataValue;
67
68
  }
68
69
  return this.rawData;
@@ -0,0 +1,166 @@
1
+ declare namespace _default {
2
+ let type: string;
3
+ let display: string;
4
+ let components: {
5
+ title: string;
6
+ breadcrumbClickable: boolean;
7
+ buttonSettings: {
8
+ previous: boolean;
9
+ cancel: boolean;
10
+ next: boolean;
11
+ };
12
+ navigateOnEnter: boolean;
13
+ saveOnEnter: boolean;
14
+ scrollToTop: boolean;
15
+ collapsible: boolean;
16
+ key: string;
17
+ type: string;
18
+ label: string;
19
+ components: {
20
+ label: string;
21
+ disabled: boolean;
22
+ alwaysEnabled: boolean;
23
+ tableView: boolean;
24
+ defaultValue: string;
25
+ key: string;
26
+ type: string;
27
+ input: boolean;
28
+ inputMask: string;
29
+ hideOnChildrenHidden: boolean;
30
+ id: string;
31
+ placeholder: string;
32
+ prefix: string;
33
+ customClass: string;
34
+ suffix: string;
35
+ multiple: boolean;
36
+ protected: boolean;
37
+ unique: boolean;
38
+ persistent: boolean;
39
+ hidden: boolean;
40
+ clearOnHide: boolean;
41
+ refreshOn: string;
42
+ redrawOn: string;
43
+ modalEdit: boolean;
44
+ dataGridLabel: boolean;
45
+ labelPosition: string;
46
+ description: string;
47
+ errorLabel: string;
48
+ tooltip: string;
49
+ hideLabel: boolean;
50
+ tabindex: string;
51
+ autofocus: boolean;
52
+ dbIndex: boolean;
53
+ customDefaultValue: string;
54
+ calculateValue: string;
55
+ calculateServer: boolean;
56
+ widget: {
57
+ type: string;
58
+ };
59
+ attributes: {};
60
+ validateOn: string;
61
+ validate: {
62
+ required: boolean;
63
+ custom: string;
64
+ customPrivate: boolean;
65
+ strictDateValidation: boolean;
66
+ multiple: boolean;
67
+ unique: boolean;
68
+ minLength: string;
69
+ maxLength: string;
70
+ pattern: string;
71
+ };
72
+ conditional: {
73
+ show: null;
74
+ when: null;
75
+ eq: string;
76
+ };
77
+ overlay: {
78
+ style: string;
79
+ left: string;
80
+ top: string;
81
+ width: string;
82
+ height: string;
83
+ };
84
+ allowCalculateOverride: boolean;
85
+ encrypted: boolean;
86
+ showCharCount: boolean;
87
+ showWordCount: boolean;
88
+ properties: {};
89
+ allowMultipleMasks: boolean;
90
+ addons: never[];
91
+ mask: boolean;
92
+ inputType: string;
93
+ inputFormat: string;
94
+ displayMask: string;
95
+ spellcheck: boolean;
96
+ truncateMultipleSpaces: boolean;
97
+ format: string;
98
+ dataFormat: string;
99
+ }[];
100
+ input: boolean;
101
+ tableView: boolean;
102
+ id: string;
103
+ placeholder: string;
104
+ prefix: string;
105
+ customClass: string;
106
+ suffix: string;
107
+ multiple: boolean;
108
+ defaultValue: null;
109
+ protected: boolean;
110
+ unique: boolean;
111
+ persistent: boolean;
112
+ hidden: boolean;
113
+ clearOnHide: boolean;
114
+ refreshOn: string;
115
+ redrawOn: string;
116
+ modalEdit: boolean;
117
+ dataGridLabel: boolean;
118
+ labelPosition: string;
119
+ description: string;
120
+ errorLabel: string;
121
+ tooltip: string;
122
+ hideLabel: boolean;
123
+ tabindex: string;
124
+ disabled: boolean;
125
+ autofocus: boolean;
126
+ dbIndex: boolean;
127
+ customDefaultValue: string;
128
+ calculateValue: string;
129
+ calculateServer: boolean;
130
+ widget: null;
131
+ attributes: {};
132
+ validateOn: string;
133
+ validate: {
134
+ required: boolean;
135
+ custom: string;
136
+ customPrivate: boolean;
137
+ strictDateValidation: boolean;
138
+ multiple: boolean;
139
+ unique: boolean;
140
+ };
141
+ conditional: {
142
+ show: null;
143
+ when: null;
144
+ eq: string;
145
+ };
146
+ overlay: {
147
+ style: string;
148
+ left: string;
149
+ top: string;
150
+ width: string;
151
+ height: string;
152
+ };
153
+ allowCalculateOverride: boolean;
154
+ encrypted: boolean;
155
+ showCharCount: boolean;
156
+ showWordCount: boolean;
157
+ properties: {};
158
+ allowMultipleMasks: boolean;
159
+ addons: never[];
160
+ tree: boolean;
161
+ lazyLoad: boolean;
162
+ theme: string;
163
+ breadcrumb: string;
164
+ }[];
165
+ }
166
+ export default _default;
@@ -0,0 +1,169 @@
1
+ export default {
2
+ "type": "form",
3
+ "display": "wizard",
4
+ "components": [
5
+ {
6
+ "title": "Page 1",
7
+ "breadcrumbClickable": true,
8
+ "buttonSettings": {
9
+ "previous": true,
10
+ "cancel": true,
11
+ "next": true
12
+ },
13
+ "navigateOnEnter": false,
14
+ "saveOnEnter": false,
15
+ "scrollToTop": false,
16
+ "collapsible": false,
17
+ "key": "page1",
18
+ "type": "panel",
19
+ "label": "Page 1",
20
+ "components": [
21
+ {
22
+ "label": "Time",
23
+ "disabled": true,
24
+ "alwaysEnabled": false,
25
+ "tableView": true,
26
+ "defaultValue": "03:03 PM",
27
+ "key": "time1",
28
+ "type": "time",
29
+ "input": true,
30
+ "inputMask": "99:99",
31
+ "hideOnChildrenHidden": false,
32
+ "id": "efw9yyq",
33
+ "placeholder": "",
34
+ "prefix": "",
35
+ "customClass": "",
36
+ "suffix": "",
37
+ "multiple": false,
38
+ "protected": false,
39
+ "unique": false,
40
+ "persistent": true,
41
+ "hidden": false,
42
+ "clearOnHide": true,
43
+ "refreshOn": "",
44
+ "redrawOn": "",
45
+ "modalEdit": false,
46
+ "dataGridLabel": false,
47
+ "labelPosition": "top",
48
+ "description": "",
49
+ "errorLabel": "",
50
+ "tooltip": "",
51
+ "hideLabel": false,
52
+ "tabindex": "",
53
+ "autofocus": false,
54
+ "dbIndex": false,
55
+ "customDefaultValue": "",
56
+ "calculateValue": "",
57
+ "calculateServer": false,
58
+ "widget": {
59
+ "type": "input"
60
+ },
61
+ "attributes": {},
62
+ "validateOn": "change",
63
+ "validate": {
64
+ "required": false,
65
+ "custom": "",
66
+ "customPrivate": false,
67
+ "strictDateValidation": false,
68
+ "multiple": false,
69
+ "unique": false,
70
+ "minLength": "",
71
+ "maxLength": "",
72
+ "pattern": ""
73
+ },
74
+ "conditional": {
75
+ "show": null,
76
+ "when": null,
77
+ "eq": ""
78
+ },
79
+ "overlay": {
80
+ "style": "",
81
+ "left": "",
82
+ "top": "",
83
+ "width": "",
84
+ "height": ""
85
+ },
86
+ "allowCalculateOverride": false,
87
+ "encrypted": false,
88
+ "showCharCount": false,
89
+ "showWordCount": false,
90
+ "properties": {},
91
+ "allowMultipleMasks": false,
92
+ "addons": [],
93
+ "mask": false,
94
+ "inputType": "time",
95
+ "inputFormat": "plain",
96
+ "displayMask": "",
97
+ "spellcheck": true,
98
+ "truncateMultipleSpaces": false,
99
+ "format": "HH:mm",
100
+ "dataFormat": "HH:mm:ss"
101
+ }
102
+ ],
103
+ "input": false,
104
+ "tableView": false,
105
+ "id": "e7vej1d",
106
+ "placeholder": "",
107
+ "prefix": "",
108
+ "customClass": "",
109
+ "suffix": "",
110
+ "multiple": false,
111
+ "defaultValue": null,
112
+ "protected": false,
113
+ "unique": false,
114
+ "persistent": false,
115
+ "hidden": false,
116
+ "clearOnHide": false,
117
+ "refreshOn": "",
118
+ "redrawOn": "",
119
+ "modalEdit": false,
120
+ "dataGridLabel": false,
121
+ "labelPosition": "top",
122
+ "description": "",
123
+ "errorLabel": "",
124
+ "tooltip": "",
125
+ "hideLabel": false,
126
+ "tabindex": "",
127
+ "disabled": false,
128
+ "autofocus": false,
129
+ "dbIndex": false,
130
+ "customDefaultValue": "",
131
+ "calculateValue": "",
132
+ "calculateServer": false,
133
+ "widget": null,
134
+ "attributes": {},
135
+ "validateOn": "change",
136
+ "validate": {
137
+ "required": false,
138
+ "custom": "",
139
+ "customPrivate": false,
140
+ "strictDateValidation": false,
141
+ "multiple": false,
142
+ "unique": false
143
+ },
144
+ "conditional": {
145
+ "show": null,
146
+ "when": null,
147
+ "eq": ""
148
+ },
149
+ "overlay": {
150
+ "style": "",
151
+ "left": "",
152
+ "top": "",
153
+ "width": "",
154
+ "height": ""
155
+ },
156
+ "allowCalculateOverride": false,
157
+ "encrypted": false,
158
+ "showCharCount": false,
159
+ "showWordCount": false,
160
+ "properties": {},
161
+ "allowMultipleMasks": false,
162
+ "addons": [],
163
+ "tree": false,
164
+ "lazyLoad": false,
165
+ "theme": "default",
166
+ "breadcrumb": "default"
167
+ }
168
+ ],
169
+ };
@@ -1,6 +1,7 @@
1
1
  import comp1 from './comp1';
2
2
  import comp2 from './comp2';
3
3
  import comp3 from './comp3';
4
+ import comp4 from './comp4';
4
5
  import timeForm from './timeForm';
5
6
  import timeForm2 from './timeForm2';
6
- export { comp1, comp2, comp3, timeForm, timeForm2 };
7
+ export { comp1, comp2, comp3, comp4, timeForm, timeForm2 };
@@ -1,6 +1,7 @@
1
1
  import comp1 from './comp1';
2
2
  import comp2 from './comp2';
3
3
  import comp3 from './comp3';
4
+ import comp4 from './comp4';
4
5
  import timeForm from './timeForm';
5
6
  import timeForm2 from './timeForm2';
6
- export { comp1, comp2, comp3, timeForm, timeForm2 };
7
+ export { comp1, comp2, comp3, comp4, timeForm, timeForm2 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formio/js",
3
- "version": "5.0.0-dev.5720.5431de8",
3
+ "version": "5.0.0-dev.5723.99bf27e",
4
4
  "description": "JavaScript powered Forms with JSON Form Builder",
5
5
  "main": "lib/cjs/index.js",
6
6
  "exports": {