@formio/js 5.0.0-rc.23 → 5.0.0-rc.24

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 (49) hide show
  1. package/README.md +24 -30
  2. package/dist/formio.embed.js +1 -1
  3. package/dist/formio.embed.min.js +1 -1
  4. package/dist/formio.embed.min.js.LICENSE.txt +1 -1
  5. package/dist/formio.form.js +7 -18
  6. package/dist/formio.form.min.js +1 -1
  7. package/dist/formio.form.min.js.LICENSE.txt +1 -1
  8. package/dist/formio.full.js +8 -19
  9. package/dist/formio.full.min.js +1 -1
  10. package/dist/formio.full.min.js.LICENSE.txt +1 -1
  11. package/dist/formio.js +1 -1
  12. package/dist/formio.min.js +1 -1
  13. package/dist/formio.min.js.LICENSE.txt +1 -1
  14. package/dist/formio.utils.min.js.LICENSE.txt +1 -1
  15. package/lib/cjs/Embed.d.ts +4 -2
  16. package/lib/cjs/Embed.js +55 -42
  17. package/lib/cjs/WebformBuilder.js +1 -1
  18. package/lib/cjs/components/_classes/list/ListComponent.d.ts +2 -2
  19. package/lib/cjs/components/_classes/list/ListComponent.js +6 -3
  20. package/lib/cjs/components/radio/Radio.js +22 -12
  21. package/lib/cjs/components/select/Select.d.ts +2 -0
  22. package/lib/cjs/components/select/Select.js +6 -1
  23. package/lib/cjs/components/selectboxes/SelectBoxes.js +9 -0
  24. package/lib/cjs/components/selectboxes/fixtures/comp7.d.ts +18 -0
  25. package/lib/cjs/components/selectboxes/fixtures/comp7.js +31 -0
  26. package/lib/cjs/components/selectboxes/fixtures/index.d.ts +2 -1
  27. package/lib/cjs/components/selectboxes/fixtures/index.js +3 -1
  28. package/lib/cjs/components/signature/Signature.d.ts +1 -2
  29. package/lib/cjs/components/signature/Signature.js +1 -2
  30. package/lib/cjs/utils/ChoicesWrapper.d.ts +1 -0
  31. package/lib/cjs/utils/ChoicesWrapper.js +19 -0
  32. package/lib/mjs/Embed.d.ts +4 -2
  33. package/lib/mjs/Embed.js +54 -43
  34. package/lib/mjs/WebformBuilder.js +1 -1
  35. package/lib/mjs/components/_classes/list/ListComponent.d.ts +2 -2
  36. package/lib/mjs/components/_classes/list/ListComponent.js +6 -3
  37. package/lib/mjs/components/radio/Radio.js +22 -12
  38. package/lib/mjs/components/select/Select.d.ts +2 -0
  39. package/lib/mjs/components/select/Select.js +6 -1
  40. package/lib/mjs/components/selectboxes/SelectBoxes.js +10 -1
  41. package/lib/mjs/components/selectboxes/fixtures/comp7.d.ts +18 -0
  42. package/lib/mjs/components/selectboxes/fixtures/comp7.js +29 -0
  43. package/lib/mjs/components/selectboxes/fixtures/index.d.ts +2 -1
  44. package/lib/mjs/components/selectboxes/fixtures/index.js +2 -1
  45. package/lib/mjs/components/signature/Signature.d.ts +1 -2
  46. package/lib/mjs/components/signature/Signature.js +1 -2
  47. package/lib/mjs/utils/ChoicesWrapper.d.ts +1 -0
  48. package/lib/mjs/utils/ChoicesWrapper.js +19 -0
  49. package/package.json +2 -3
@@ -1,6 +1,6 @@
1
1
  /*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */
2
2
 
3
- /*! formiojs v5.0.0-rc.23 | https://unpkg.com/formiojs@5.0.0-rc.23/LICENSE.txt */
3
+ /*! formiojs v5.0.0-rc.24 | https://unpkg.com/formiojs@5.0.0-rc.24/LICENSE.txt */
4
4
 
5
5
  /**
6
6
  * @license
@@ -12,7 +12,7 @@
12
12
 
13
13
  /*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */
14
14
 
15
- /*! formiojs v5.0.0-rc.23 | https://unpkg.com/formiojs@5.0.0-rc.23/LICENSE.txt */
15
+ /*! formiojs v5.0.0-rc.24 | https://unpkg.com/formiojs@5.0.0-rc.24/LICENSE.txt */
16
16
 
17
17
  /**
18
18
  * @license
@@ -14,8 +14,10 @@ export class Formio {
14
14
  static global(prop: any): any;
15
15
  static createElement(type: any, attrs: any, children: any): any;
16
16
  static addScript(src: any, name: any): Promise<any>;
17
- static addStyles(href: any, addGlobally?: boolean): Promise<void>;
17
+ static addStyles(href: any): Promise<void>;
18
18
  static submitDone(instance: any, submission: any): Promise<void>;
19
- static renderForm(form: any, options: any): Promise<any>;
19
+ static formioScript(script: any, builder: any): any;
20
+ static init(element: any, builder?: boolean): Promise<void>;
20
21
  static createForm(element: any, form: any, options: any): Promise<any>;
22
+ static builder(element: any, form: any, options: any): Promise<any>;
21
23
  }
package/lib/cjs/Embed.js CHANGED
@@ -79,7 +79,7 @@ class Formio {
79
79
  });
80
80
  });
81
81
  }
82
- static addStyles(href, addGlobally = false) {
82
+ static addStyles(href) {
83
83
  return __awaiter(this, void 0, void 0, function* () {
84
84
  if (!href) {
85
85
  return;
@@ -89,14 +89,6 @@ class Formio {
89
89
  return;
90
90
  }
91
91
  Formio.debug('Adding Styles', href);
92
- const link = Formio.createElement('link', {
93
- rel: 'stylesheet',
94
- href
95
- });
96
- if (addGlobally) {
97
- // Add globally as well.
98
- document.head.appendChild(link);
99
- }
100
92
  Formio.wrapper.appendChild(Formio.createElement('link', {
101
93
  rel: 'stylesheet',
102
94
  href
@@ -133,36 +125,12 @@ class Formio {
133
125
  }
134
126
  });
135
127
  }
136
- static renderForm(form, options) {
137
- return __awaiter(this, void 0, void 0, function* () {
138
- if (Formio.config.before) {
139
- yield Formio.config.before(Formio.FormioClass, Formio.element, Formio.config);
140
- }
141
- Formio.FormioClass.license = true;
142
- return Formio.FormioClass.createForm(Formio.element, form, Object.assign(Object.assign({}, options), { noLoader: true })).then((instance) => {
143
- Formio.debug('Form created', instance);
144
- // Remove the loader.
145
- Formio.debug('Removing loader');
146
- Formio.wrapper.removeChild(Formio.loader);
147
- // Set the default submission data.
148
- if (Formio.config.submission) {
149
- Formio.debug('Setting submission', Formio.config.submission);
150
- instance.submission = Formio.config.submission;
151
- }
152
- // Allow them to provide additional configs.
153
- Formio.debug('Triggering embed event');
154
- Formio.FormioClass.events.emit('formEmbedded', instance);
155
- // Trigger the after handler.
156
- if (Formio.config.after) {
157
- Formio.debug('Calling ready callback');
158
- Formio.config.after(instance, Formio.config);
159
- }
160
- return instance;
161
- });
162
- });
128
+ // Return the full script if the builder is being used.
129
+ static formioScript(script, builder) {
130
+ return builder ? script.replace('formio.form', 'formio.full') : script;
163
131
  }
164
132
  // eslint-disable-next-line max-statements
165
- static createForm(element, form, options) {
133
+ static init(element, builder = false) {
166
134
  return __awaiter(this, void 0, void 0, function* () {
167
135
  Formio.element = element;
168
136
  Formio.cdn = new CDN_js_1.default(Formio.config.cdn);
@@ -204,7 +172,7 @@ class Formio {
204
172
  }]
205
173
  }]);
206
174
  Formio.wrapper.appendChild(Formio.loader);
207
- Formio.FormioClass = yield Formio.addScript(Formio.config.script || `${Formio.cdn.js}/formio.form.min.js`, 'Formio');
175
+ Formio.FormioClass = yield Formio.addScript(Formio.formioScript(Formio.config.script || `${Formio.cdn.js}/formio.form.min.js`, builder), 'Formio');
208
176
  Formio.FormioClass.setBaseUrl(Formio.baseUrl || Formio.config.base);
209
177
  Formio.FormioClass.setProjectUrl(Formio.projectUrl || Formio.config.project);
210
178
  Formio.FormioClass.language = Formio.language;
@@ -222,7 +190,7 @@ class Formio {
222
190
  yield Formio.addStyles(Formio.config.libs[Formio.config.template].css);
223
191
  yield Formio.addScript(Formio.config.libs[Formio.config.template].js);
224
192
  if (Formio.config.libs[Formio.config.template].fa) {
225
- yield Formio.addStyles(Formio.config.libs.fontawesome.css, true);
193
+ yield Formio.addStyles(Formio.config.libs.fontawesome.css);
226
194
  }
227
195
  }
228
196
  if (Formio.cdn[Formio.config.template]) {
@@ -238,7 +206,7 @@ class Formio {
238
206
  }
239
207
  // Default bootstrap + fontawesome.
240
208
  else if (Formio.config.includeLibs) {
241
- yield Formio.addStyles(Formio.config.libs.fontawesome.css, true);
209
+ yield Formio.addStyles(Formio.config.libs.fontawesome.css);
242
210
  yield Formio.addStyles(Formio.config.libs.bootstrap.css);
243
211
  }
244
212
  if (Formio.config.premium) {
@@ -246,8 +214,53 @@ class Formio {
246
214
  Formio.debug('Using premium');
247
215
  Formio.FormioClass.use(yield Formio.addScript(Formio.config.premium.js, 'premium'));
248
216
  }
249
- yield Formio.addStyles(Formio.config.style || `${Formio.cdn.js}/formio.form.min.css`);
250
- return yield Formio.renderForm(form, options);
217
+ yield Formio.addStyles(Formio.formioScript(Formio.config.style || `${Formio.cdn.js}/formio.form.min.css`, builder));
218
+ if (Formio.config.before) {
219
+ yield Formio.config.before(Formio.FormioClass, Formio.element, Formio.config);
220
+ }
221
+ Formio.FormioClass.license = true;
222
+ });
223
+ }
224
+ static createForm(element, form, options) {
225
+ return __awaiter(this, void 0, void 0, function* () {
226
+ yield Formio.init(element);
227
+ return Formio.FormioClass.createForm(Formio.element, form, Object.assign(Object.assign({}, options), { noLoader: true })).then((instance) => {
228
+ Formio.debug('Form created', instance);
229
+ // Remove the loader.
230
+ Formio.debug('Removing loader');
231
+ Formio.wrapper.removeChild(Formio.loader);
232
+ // Set the default submission data.
233
+ if (Formio.config.submission) {
234
+ Formio.debug('Setting submission', Formio.config.submission);
235
+ instance.submission = Formio.config.submission;
236
+ }
237
+ // Allow them to provide additional configs.
238
+ Formio.debug('Triggering embed event');
239
+ Formio.FormioClass.events.emit('formEmbedded', instance);
240
+ // Trigger the after handler.
241
+ if (Formio.config.after) {
242
+ Formio.debug('Calling ready callback');
243
+ Formio.config.after(instance, Formio.config);
244
+ }
245
+ return instance;
246
+ });
247
+ });
248
+ }
249
+ static builder(element, form, options) {
250
+ return __awaiter(this, void 0, void 0, function* () {
251
+ yield Formio.init(element, true);
252
+ return Formio.FormioClass.builder(Formio.element, form, options).then((instance) => {
253
+ Formio.debug('Builder created', instance);
254
+ Formio.debug('Removing loader');
255
+ Formio.wrapper.removeChild(Formio.loader);
256
+ Formio.debug('Triggering embed event');
257
+ Formio.FormioClass.events.emit('builderEmbedded', instance);
258
+ if (Formio.config.after) {
259
+ Formio.debug('Calling ready callback');
260
+ Formio.config.after(instance, Formio.config);
261
+ }
262
+ return instance;
263
+ });
251
264
  });
252
265
  }
253
266
  }
@@ -1044,7 +1044,7 @@ class WebformBuilder extends Component_1.default {
1044
1044
  return false;
1045
1045
  });
1046
1046
  });
1047
- if (tabIndex !== -1 && index !== -1 && changed && changed.value) {
1047
+ if (tabIndex !== -1 && index !== -1 && changed && !lodash_1.default.isNil(changed.value)) {
1048
1048
  const sibling = parentComponent.tabs[tabIndex][index + 1];
1049
1049
  parentComponent.removeComponent(defaultValueComponent);
1050
1050
  const newComp = parentComponent.addComponent(defaultValueComponent.component, defaultValueComponent.data, sibling);
@@ -8,8 +8,8 @@ export default class ListComponent extends Field {
8
8
  setItems(): void;
9
9
  updateCustomItems(): void;
10
10
  loadItems(): void;
11
- getOptionTemplate(data: any, value: any): any;
12
- itemTemplate(data: any, value: any): any;
11
+ getOptionTemplate(data: any, value: any, index: any): any;
12
+ itemTemplate(data: any, value: any, index: any): any;
13
13
  handleLoadingError(err: any): void;
14
14
  loading: boolean | undefined;
15
15
  networkError: boolean | undefined;
@@ -83,7 +83,7 @@ class ListComponent extends Field_1.default {
83
83
  setItems() { }
84
84
  updateCustomItems() { }
85
85
  loadItems() { }
86
- getOptionTemplate(data, value) {
86
+ getOptionTemplate(data, value, index) {
87
87
  if (!this.component.template) {
88
88
  return data.label;
89
89
  }
@@ -99,13 +99,16 @@ class ListComponent extends Field_1.default {
99
99
  // If the value is not an object, then we need to save the template data off for when it is selected.
100
100
  this.templateData[templateValue] = options.data.item;
101
101
  }
102
+ if (lodash_1.default.isNumber(index)) {
103
+ this.templateData[index] = options.data.item;
104
+ }
102
105
  return template;
103
106
  }
104
- itemTemplate(data, value) {
107
+ itemTemplate(data, value, index) {
105
108
  if (lodash_1.default.isEmpty(data)) {
106
109
  return '';
107
110
  }
108
- const template = this.sanitize(this.getOptionTemplate(data, value), this.shouldSanitizeValue);
111
+ const template = this.sanitize(this.getOptionTemplate(data, value, index), this.shouldSanitizeValue);
109
112
  if (template) {
110
113
  const label = template.replace(/<\/?[^>]+(>|$)/g, '');
111
114
  if (!label)
@@ -153,7 +153,12 @@ class RadioComponent extends ListComponent_1.default {
153
153
  if (!lodash_1.default.isString(this.dataValue)) {
154
154
  dataValue = lodash_1.default.toString(this.dataValue);
155
155
  }
156
- input.checked = (dataValue === input.value && (input.value || this.component.dataSrc !== 'url'));
156
+ if (this.isSelectURL && lodash_1.default.isObject(this.loadedOptions[index].value)) {
157
+ input.checked = lodash_1.default.isEqual(this.loadedOptions[index].value, this.dataValue);
158
+ }
159
+ else {
160
+ input.checked = (dataValue === input.value && (input.value || this.component.dataSrc !== 'url'));
161
+ }
157
162
  this.addEventListener(input, 'keyup', (event) => {
158
163
  if (event.key === ' ' && dataValue === input.value) {
159
164
  event.preventDefault();
@@ -183,9 +188,11 @@ class RadioComponent extends ListComponent_1.default {
183
188
  return this.dataValue;
184
189
  }
185
190
  let value = this.dataValue;
186
- this.refs.input.forEach((input) => {
191
+ this.refs.input.forEach((input, index) => {
187
192
  if (input.checked) {
188
- value = input.value;
193
+ value = (this.isSelectURL && lodash_1.default.isObject(this.loadedOptions[index].value)) ?
194
+ this.loadedOptions[index].value :
195
+ input.value;
189
196
  }
190
197
  });
191
198
  return value;
@@ -207,7 +214,10 @@ class RadioComponent extends ListComponent_1.default {
207
214
  return false;
208
215
  }
209
216
  getValueAsString(value) {
210
- if (!lodash_1.default.isString(value)) {
217
+ if (lodash_1.default.isObject(value)) {
218
+ value = JSON.stringify(value);
219
+ }
220
+ else if (!lodash_1.default.isString(value)) {
211
221
  value = lodash_1.default.toString(value);
212
222
  }
213
223
  if (this.component.dataSrc !== 'values') {
@@ -229,7 +239,7 @@ class RadioComponent extends ListComponent_1.default {
229
239
  if (this.optionsLoaded) {
230
240
  return;
231
241
  }
232
- if (!this.shouldLoad) {
242
+ if (!this.shouldLoad && this.listData) {
233
243
  this.loadItemsFromMetadata();
234
244
  return;
235
245
  }
@@ -260,7 +270,7 @@ class RadioComponent extends ListComponent_1.default {
260
270
  this.loadedOptions[i] = {
261
271
  label: this.itemTemplate(item)
262
272
  };
263
- if (lodash_1.default.isEqual(item, this.selectData)) {
273
+ if (lodash_1.default.isEqual(item, this.selectData || lodash_1.default.pick(this.dataValue, lodash_1.default.keys(item)))) {
264
274
  this.loadedOptions[i].value = this.dataValue;
265
275
  }
266
276
  });
@@ -271,13 +281,13 @@ class RadioComponent extends ListComponent_1.default {
271
281
  const listData = [];
272
282
  items === null || items === void 0 ? void 0 : items.forEach((item, i) => {
273
283
  this.loadedOptions[i] = {
274
- value: item[this.component.valueProperty],
275
- label: this.itemTemplate(item, item[this.component.valueProperty])
284
+ value: this.component.valueProperty ? item[this.component.valueProperty] : item,
285
+ label: this.component.valueProperty ? this.itemTemplate(item, item[this.component.valueProperty]) : this.itemTemplate(item, item, i)
276
286
  };
277
- listData.push(this.templateData[item[this.component.valueProperty]]);
278
- if (lodash_1.default.isUndefined(item[this.component.valueProperty]) ||
279
- lodash_1.default.isObject(item[this.component.valueProperty]) ||
280
- (!this.isRadio && lodash_1.default.isBoolean(item[this.component.valueProperty]))) {
287
+ listData.push(this.templateData[this.component.valueProperty ? item[this.component.valueProperty] : i]);
288
+ if ((this.component.valueProperty || !this.isRadio) && (lodash_1.default.isUndefined(item[this.component.valueProperty]) ||
289
+ (!this.isRadio && lodash_1.default.isObject(item[this.component.valueProperty])) ||
290
+ (!this.isRadio && lodash_1.default.isBoolean(item[this.component.valueProperty])))) {
281
291
  this.loadedOptions[i].invalid = true;
282
292
  }
283
293
  });
@@ -63,6 +63,7 @@ export default class SelectComponent extends ListComponent {
63
63
  value: any;
64
64
  label: any;
65
65
  };
66
+ itemTemplate(data: any, value: any): any;
66
67
  /**
67
68
  * Adds an option to the select dropdown.
68
69
  *
@@ -102,6 +103,7 @@ export default class SelectComponent extends ListComponent {
102
103
  focusableElement: any;
103
104
  choices: Choices | null | undefined;
104
105
  scrollList: any;
106
+ isRemoveButtonPressed: boolean | undefined;
105
107
  get isLoadingAvailable(): any;
106
108
  onScroll(): void;
107
109
  attachRefreshOnBlur(): void;
@@ -428,7 +428,7 @@ class SelectComponent extends ListComponent_1.default {
428
428
  const searching = fromSearch && ((_b = (_a = this.choices) === null || _a === void 0 ? void 0 : _a.input) === null || _b === void 0 ? void 0 : _b.isFocussed);
429
429
  if (!searching) {
430
430
  // If a value is provided, then select it.
431
- if (!this.isEmpty()) {
431
+ if (!this.isEmpty() || this.isRemoveButtonPressed) {
432
432
  this.setValue(this.dataValue, {
433
433
  noUpdateEvent: true
434
434
  });
@@ -814,6 +814,11 @@ class SelectComponent extends ListComponent_1.default {
814
814
  this.scrollList = this.choices.choiceList.element;
815
815
  this.addEventListener(this.scrollList, 'scroll', () => this.onScroll());
816
816
  }
817
+ if (choicesOptions.removeItemButton) {
818
+ this.addEventListener(input, 'removeItem', () => {
819
+ this.isRemoveButtonPressed = true;
820
+ });
821
+ }
817
822
  }
818
823
  this.focusableElement.setAttribute('tabIndex', tabIndex);
819
824
  // If a search field is provided, then add an event listener to update items on search.
@@ -245,5 +245,14 @@ class SelectBoxesComponent extends Radio_1.default {
245
245
  }
246
246
  return super.checkComponentValidity(data, dirty, rowData, options);
247
247
  }
248
+ validateValueAvailability(setting, value) {
249
+ if (!(0, utils_1.boolValue)(setting) || !value) {
250
+ return true;
251
+ }
252
+ const values = this.component.values;
253
+ const availableValueKeys = (values || []).map(({ value: optionValue }) => optionValue);
254
+ const valueKeys = Object.keys(value);
255
+ return valueKeys.every((key) => availableValueKeys.includes(key));
256
+ }
248
257
  }
249
258
  exports.default = SelectBoxesComponent;
@@ -0,0 +1,18 @@
1
+ declare namespace _default {
2
+ const label: string;
3
+ const optionsLabelPosition: string;
4
+ const tableView: boolean;
5
+ const values: {
6
+ label: string;
7
+ value: string;
8
+ shortcut: string;
9
+ }[];
10
+ namespace validate {
11
+ const onlyAvailableItems: boolean;
12
+ }
13
+ const key: string;
14
+ const type: string;
15
+ const input: boolean;
16
+ const inputType: string;
17
+ }
18
+ export default _default;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ label: 'Select Boxes',
5
+ optionsLabelPosition: 'right',
6
+ tableView: false,
7
+ values: [
8
+ {
9
+ label: 'a',
10
+ value: 'a',
11
+ shortcut: '',
12
+ },
13
+ {
14
+ label: 'b',
15
+ value: 'b',
16
+ shortcut: '',
17
+ },
18
+ {
19
+ label: 'c',
20
+ value: 'c',
21
+ shortcut: '',
22
+ },
23
+ ],
24
+ validate: {
25
+ onlyAvailableItems: true,
26
+ },
27
+ key: 'selectBoxes',
28
+ type: 'selectboxes',
29
+ input: true,
30
+ inputType: 'checkbox',
31
+ };
@@ -4,4 +4,5 @@ import comp3 from './comp3';
4
4
  import comp4 from './comp4';
5
5
  import comp5 from './comp5';
6
6
  import comp6 from './comp6';
7
- export { comp1, comp2, comp3, comp4, comp5, comp6 };
7
+ import comp7 from './comp7';
8
+ export { comp1, comp2, comp3, comp4, comp5, comp6, comp7 };
@@ -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.comp6 = exports.comp5 = exports.comp4 = exports.comp3 = exports.comp2 = exports.comp1 = void 0;
6
+ 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"));
@@ -16,3 +16,5 @@ const comp5_1 = __importDefault(require("./comp5"));
16
16
  exports.comp5 = comp5_1.default;
17
17
  const comp6_1 = __importDefault(require("./comp6"));
18
18
  exports.comp6 = comp6_1.default;
19
+ const comp7_1 = __importDefault(require("./comp7"));
20
+ exports.comp7 = comp7_1.default;
@@ -37,11 +37,10 @@ export default class SignatureComponent extends Input {
37
37
  onDisabled(): void;
38
38
  checkSize(force: any, scale: any): void;
39
39
  signaturePad: SignaturePad | null | undefined;
40
- observer: _ResizeObserver | null | undefined;
40
+ observer: any;
41
41
  getValueAsString(value: any): "" | "Yes" | "No";
42
42
  focus(): void;
43
43
  setDataToSigaturePad(): void;
44
44
  }
45
45
  import Input from '../_classes/input/Input';
46
46
  import SignaturePad from 'signature_pad';
47
- import _ResizeObserver from 'resize-observer-polyfill';
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const signature_pad_1 = __importDefault(require("signature_pad"));
7
- const resize_observer_polyfill_1 = __importDefault(require("resize-observer-polyfill"));
8
7
  const Input_1 = __importDefault(require("../_classes/input/Input"));
9
8
  const lodash_1 = __importDefault(require("lodash"));
10
9
  const utils_1 = require("../../utils/utils");
@@ -202,7 +201,7 @@ class SignatureComponent extends Input_1.default {
202
201
  this.refs.padBody.style.maxWidth = '100%';
203
202
  }
204
203
  if (!this.builderMode && !this.options.preview) {
205
- this.observer = new resize_observer_polyfill_1.default(() => {
204
+ this.observer = new ResizeObserver(() => {
206
205
  this.checkSize();
207
206
  });
208
207
  this.observer.observe(this.refs.padBody);
@@ -19,6 +19,7 @@ declare class ChoicesWrapper extends Choices {
19
19
  }): void;
20
20
  isDirectionUsing: boolean;
21
21
  shouldOpenDropDown: boolean;
22
+ _onTouchEnd(event: any): void;
22
23
  _handleButtonAction(activeItems: any, element: any): void;
23
24
  _onEnterKey(args: any): void;
24
25
  _onDirectionKey(...args: any[]): void;
@@ -50,6 +50,25 @@ class ChoicesWrapper extends choices_js_1.default {
50
50
  this.isDirectionUsing = false;
51
51
  this.shouldOpenDropDown = true;
52
52
  }
53
+ _onTouchEnd(event) {
54
+ var target = (event || event.touches[0]).target;
55
+ var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target);
56
+ if (touchWasWithinContainer) {
57
+ var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element;
58
+ if (containerWasExactTarget) {
59
+ if (this._isTextElement) {
60
+ this.input.focus();
61
+ }
62
+ else if (this._isSelectMultipleElement) {
63
+ this.input.focus();
64
+ this.showDropdown();
65
+ }
66
+ }
67
+ // Prevents focus event firing
68
+ event.stopPropagation();
69
+ }
70
+ this._wasTap = true;
71
+ }
53
72
  _handleButtonAction(activeItems, element) {
54
73
  if (!this._isSelectOneElement) {
55
74
  return super._handleButtonAction(activeItems, element);
@@ -14,8 +14,10 @@ export class Formio {
14
14
  static global(prop: any): any;
15
15
  static createElement(type: any, attrs: any, children: any): any;
16
16
  static addScript(src: any, name: any): Promise<any>;
17
- static addStyles(href: any, addGlobally?: boolean): Promise<void>;
17
+ static addStyles(href: any): Promise<void>;
18
18
  static submitDone(instance: any, submission: any): Promise<void>;
19
- static renderForm(form: any, options: any): Promise<any>;
19
+ static formioScript(script: any, builder: any): any;
20
+ static init(element: any, builder?: boolean): Promise<void>;
20
21
  static createForm(element: any, form: any, options: any): Promise<any>;
22
+ static builder(element: any, form: any, options: any): Promise<any>;
21
23
  }