@formio/js 5.0.0-dev.5672.279701a → 5.0.0-dev.5673.ae99c16

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 (279) hide show
  1. package/Changelog.md +63 -1
  2. package/dist/formio.builder.css +0 -1
  3. package/dist/formio.builder.min.css +1 -1
  4. package/dist/formio.embed.js +1 -1
  5. package/dist/formio.embed.min.js +1 -1
  6. package/dist/formio.form.css +0 -1
  7. package/dist/formio.form.js +648 -596
  8. package/dist/formio.form.min.css +1 -1
  9. package/dist/formio.form.min.js +1 -1
  10. package/dist/formio.form.min.js.LICENSE.txt +1 -9
  11. package/dist/formio.full.css +0 -1
  12. package/dist/formio.full.js +635 -603
  13. package/dist/formio.full.min.css +1 -1
  14. package/dist/formio.full.min.js +1 -1
  15. package/dist/formio.full.min.js.LICENSE.txt +1 -9
  16. package/dist/formio.js +4 -4
  17. package/dist/formio.min.js +1 -1
  18. package/dist/formio.utils.js +102 -40
  19. package/dist/formio.utils.min.js +1 -1
  20. package/dist/formio.utils.min.js.LICENSE.txt +5 -3
  21. package/lib/cjs/CDN.d.ts +1 -0
  22. package/lib/cjs/CDN.js +2 -2
  23. package/lib/cjs/Form.d.ts +2 -2
  24. package/lib/cjs/Form.js +11 -5
  25. package/lib/cjs/Formio.js +1 -0
  26. package/lib/cjs/PDF.js +1 -1
  27. package/lib/cjs/PDFBuilder.js +2 -1
  28. package/lib/cjs/Webform.d.ts +1 -1
  29. package/lib/cjs/Webform.js +11 -6
  30. package/lib/cjs/WebformBuilder.js +13 -3
  31. package/lib/cjs/Wizard.js +1 -1
  32. package/lib/cjs/components/_classes/component/Component.d.ts +4 -3
  33. package/lib/cjs/components/_classes/component/Component.js +31 -8
  34. package/lib/cjs/components/_classes/component/editForm/Component.edit.display.js +8 -0
  35. package/lib/cjs/components/_classes/component/fixtures/comp7.d.ts +84 -0
  36. package/lib/cjs/components/_classes/component/fixtures/comp7.js +86 -0
  37. package/lib/cjs/components/_classes/component/fixtures/index.d.ts +2 -1
  38. package/lib/cjs/components/_classes/component/fixtures/index.js +3 -1
  39. package/lib/cjs/components/_classes/input/Input.js +23 -1
  40. package/lib/cjs/components/_classes/multivalue/Multivalue.d.ts +8 -1
  41. package/lib/cjs/components/_classes/multivalue/Multivalue.js +45 -25
  42. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +2 -1
  43. package/lib/cjs/components/_classes/nested/NestedComponent.js +5 -1
  44. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +3 -0
  45. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +56 -29
  46. package/lib/cjs/components/address/Address.d.ts +6 -0
  47. package/lib/cjs/components/address/Address.js +11 -1
  48. package/lib/cjs/components/address/editForm/Address.edit.provider.js +1 -1
  49. package/lib/cjs/components/checkbox/Checkbox.d.ts +1 -1
  50. package/lib/cjs/components/checkbox/Checkbox.js +1 -1
  51. package/lib/cjs/components/checkbox/fixtures/comp6.d.ts +32 -0
  52. package/lib/cjs/components/checkbox/fixtures/comp6.js +30 -0
  53. package/lib/cjs/components/checkbox/fixtures/index.d.ts +2 -1
  54. package/lib/cjs/components/checkbox/fixtures/index.js +3 -1
  55. package/lib/cjs/components/currency/Currency.d.ts +2 -0
  56. package/lib/cjs/components/datagrid/DataGrid.d.ts +11 -1
  57. package/lib/cjs/components/datagrid/DataGrid.js +59 -36
  58. package/lib/cjs/components/datagrid/fixtures/comp-with-reorder.d.ts +100 -0
  59. package/lib/cjs/components/datagrid/fixtures/comp-with-reorder.js +139 -0
  60. package/lib/cjs/components/datagrid/fixtures/comp10.d.ts +81 -0
  61. package/lib/cjs/components/datagrid/fixtures/comp10.js +87 -0
  62. package/lib/cjs/components/datagrid/fixtures/comp11.d.ts +50 -0
  63. package/lib/cjs/components/datagrid/fixtures/comp11.js +55 -0
  64. package/lib/cjs/components/datagrid/fixtures/comp9.d.ts +41 -0
  65. package/lib/cjs/components/datagrid/fixtures/comp9.js +44 -0
  66. package/lib/cjs/components/datagrid/fixtures/index.d.ts +5 -1
  67. package/lib/cjs/components/datagrid/fixtures/index.js +9 -1
  68. package/lib/cjs/components/datamap/DataMap.js +2 -2
  69. package/lib/cjs/components/datetime/fixtures/comp14.d.ts +35 -0
  70. package/lib/cjs/components/datetime/fixtures/comp14.js +38 -0
  71. package/lib/cjs/components/datetime/fixtures/index.d.ts +6 -5
  72. package/lib/cjs/components/datetime/fixtures/index.js +3 -1
  73. package/lib/cjs/components/day/Day.d.ts +3 -4
  74. package/lib/cjs/components/day/Day.js +31 -10
  75. package/lib/cjs/components/day/fixtures/comp8.d.ts +41 -0
  76. package/lib/cjs/components/day/fixtures/comp8.js +40 -0
  77. package/lib/cjs/components/day/fixtures/index.d.ts +2 -1
  78. package/lib/cjs/components/day/fixtures/index.js +3 -1
  79. package/lib/cjs/components/editgrid/EditGrid.js +16 -8
  80. package/lib/cjs/components/editgrid/fixtures/comp-test-events.d.ts +54 -0
  81. package/lib/cjs/components/editgrid/fixtures/comp-test-events.js +54 -0
  82. package/lib/cjs/components/editgrid/fixtures/comp16.d.ts +52 -0
  83. package/lib/cjs/components/editgrid/fixtures/comp16.js +71 -0
  84. package/lib/cjs/components/editgrid/fixtures/comp17.d.ts +80 -0
  85. package/lib/cjs/components/editgrid/fixtures/comp17.js +99 -0
  86. package/lib/cjs/components/editgrid/fixtures/index.d.ts +10 -7
  87. package/lib/cjs/components/editgrid/fixtures/index.js +7 -1
  88. package/lib/cjs/components/file/File.d.ts +2 -2
  89. package/lib/cjs/components/file/File.js +13 -2
  90. package/lib/cjs/components/file/editForm/File.edit.display.js +1 -1
  91. package/lib/cjs/components/form/Form.d.ts +1 -1
  92. package/lib/cjs/components/form/Form.js +1 -1
  93. package/lib/cjs/components/form/editForm/Form.edit.form.js +1 -1
  94. package/lib/cjs/components/form/fixtures/index.d.ts +2 -1
  95. package/lib/cjs/components/form/fixtures/index.js +3 -1
  96. package/lib/cjs/components/form/fixtures/nestedWizardForm.d.ts +771 -0
  97. package/lib/cjs/components/form/fixtures/nestedWizardForm.js +765 -0
  98. package/lib/cjs/components/html/HTML.js +1 -1
  99. package/lib/cjs/components/number/Number.d.ts +17 -2
  100. package/lib/cjs/components/number/Number.js +27 -7
  101. package/lib/cjs/components/number/fixtures/comp10.d.ts +18 -0
  102. package/lib/cjs/components/number/fixtures/comp10.js +21 -0
  103. package/lib/cjs/components/number/fixtures/comp8.d.ts +32 -0
  104. package/lib/cjs/components/number/fixtures/comp8.js +28 -0
  105. package/lib/cjs/components/number/fixtures/comp9.d.ts +18 -0
  106. package/lib/cjs/components/number/fixtures/comp9.js +21 -0
  107. package/lib/cjs/components/number/fixtures/index.d.ts +4 -1
  108. package/lib/cjs/components/number/fixtures/index.js +7 -1
  109. package/lib/cjs/components/panel/Panel.d.ts +1 -0
  110. package/lib/cjs/components/panel/Panel.js +1 -0
  111. package/lib/cjs/components/radio/Radio.d.ts +2 -18
  112. package/lib/cjs/components/radio/Radio.js +29 -27
  113. package/lib/cjs/components/radio/fixtures/comp12.d.ts +29 -0
  114. package/lib/cjs/components/radio/fixtures/comp12.js +36 -0
  115. package/lib/cjs/components/radio/fixtures/index.d.ts +2 -1
  116. package/lib/cjs/components/radio/fixtures/index.js +3 -1
  117. package/lib/cjs/components/recaptcha/ReCaptcha.d.ts +6 -0
  118. package/lib/cjs/components/recaptcha/ReCaptcha.js +6 -0
  119. package/lib/cjs/components/select/Select.d.ts +38 -0
  120. package/lib/cjs/components/select/Select.js +14 -5
  121. package/lib/cjs/components/select/fixtures/comp25.d.ts +59 -0
  122. package/lib/cjs/components/select/fixtures/comp25.js +66 -0
  123. package/lib/cjs/components/select/fixtures/comp26.d.ts +44 -0
  124. package/lib/cjs/components/select/fixtures/comp26.js +59 -0
  125. package/lib/cjs/components/select/fixtures/index.d.ts +3 -1
  126. package/lib/cjs/components/select/fixtures/index.js +5 -1
  127. package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +0 -22
  128. package/lib/cjs/components/selectboxes/SelectBoxes.js +12 -9
  129. package/lib/cjs/components/signature/editForm/Signature.edit.display.d.ts +0 -6
  130. package/lib/cjs/components/signature/editForm/Signature.edit.display.js +0 -1
  131. package/lib/cjs/components/tags/Tags.js +3 -3
  132. package/lib/cjs/components/time/Time.d.ts +2 -2
  133. package/lib/cjs/components/time/Time.form.js +2 -2
  134. package/lib/cjs/components/time/Time.js +3 -7
  135. package/lib/cjs/components/time/fixtures/comp4.d.ts +166 -0
  136. package/lib/cjs/components/time/fixtures/comp4.js +171 -0
  137. package/lib/cjs/components/time/fixtures/index.d.ts +2 -1
  138. package/lib/cjs/components/time/fixtures/index.js +3 -1
  139. package/lib/cjs/providers/address/GoogleAddressProvider.d.ts +5 -0
  140. package/lib/cjs/providers/address/GoogleAddressProvider.js +23 -1
  141. package/lib/cjs/templates/Templates.js +1 -1
  142. package/lib/cjs/translations/en.d.ts +4 -0
  143. package/lib/cjs/translations/en.js +5 -1
  144. package/lib/cjs/utils/conditionOperators/DateGreaterThan.js +2 -1
  145. package/lib/cjs/utils/conditionOperators/IsEmptyValue.js +4 -3
  146. package/lib/cjs/utils/conditionOperators/IsEqualTo.js +3 -3
  147. package/lib/cjs/utils/utils.d.ts +2 -11
  148. package/lib/cjs/utils/utils.js +60 -24
  149. package/lib/cjs/widgets/CalendarWidget.js +24 -10
  150. package/lib/mjs/CDN.d.ts +1 -0
  151. package/lib/mjs/CDN.js +2 -2
  152. package/lib/mjs/Form.d.ts +2 -2
  153. package/lib/mjs/Form.js +11 -5
  154. package/lib/mjs/Formio.js +1 -0
  155. package/lib/mjs/PDF.js +1 -1
  156. package/lib/mjs/PDFBuilder.js +1 -1
  157. package/lib/mjs/Webform.d.ts +1 -1
  158. package/lib/mjs/Webform.js +15 -6
  159. package/lib/mjs/WebformBuilder.js +12 -3
  160. package/lib/mjs/Wizard.js +1 -1
  161. package/lib/mjs/components/_classes/component/Component.d.ts +4 -3
  162. package/lib/mjs/components/_classes/component/Component.js +17 -5
  163. package/lib/mjs/components/_classes/component/editForm/Component.edit.display.js +8 -0
  164. package/lib/mjs/components/_classes/component/fixtures/comp7.d.ts +84 -0
  165. package/lib/mjs/components/_classes/component/fixtures/comp7.js +84 -0
  166. package/lib/mjs/components/_classes/component/fixtures/index.d.ts +2 -1
  167. package/lib/mjs/components/_classes/component/fixtures/index.js +2 -1
  168. package/lib/mjs/components/_classes/input/Input.js +22 -1
  169. package/lib/mjs/components/_classes/multivalue/Multivalue.d.ts +8 -1
  170. package/lib/mjs/components/_classes/multivalue/Multivalue.js +45 -25
  171. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +2 -1
  172. package/lib/mjs/components/_classes/nested/NestedComponent.js +5 -1
  173. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +3 -0
  174. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +57 -29
  175. package/lib/mjs/components/address/Address.d.ts +6 -0
  176. package/lib/mjs/components/address/Address.js +14 -1
  177. package/lib/mjs/components/address/editForm/Address.edit.provider.js +1 -1
  178. package/lib/mjs/components/checkbox/Checkbox.d.ts +1 -1
  179. package/lib/mjs/components/checkbox/Checkbox.js +1 -1
  180. package/lib/mjs/components/checkbox/fixtures/comp6.d.ts +32 -0
  181. package/lib/mjs/components/checkbox/fixtures/comp6.js +28 -0
  182. package/lib/mjs/components/checkbox/fixtures/index.d.ts +2 -1
  183. package/lib/mjs/components/checkbox/fixtures/index.js +2 -1
  184. package/lib/mjs/components/currency/Currency.d.ts +2 -0
  185. package/lib/mjs/components/datagrid/DataGrid.d.ts +11 -1
  186. package/lib/mjs/components/datagrid/DataGrid.js +58 -35
  187. package/lib/mjs/components/datagrid/fixtures/comp-with-reorder.d.ts +100 -0
  188. package/lib/mjs/components/datagrid/fixtures/comp-with-reorder.js +137 -0
  189. package/lib/mjs/components/datagrid/fixtures/comp10.d.ts +81 -0
  190. package/lib/mjs/components/datagrid/fixtures/comp10.js +85 -0
  191. package/lib/mjs/components/datagrid/fixtures/comp11.d.ts +50 -0
  192. package/lib/mjs/components/datagrid/fixtures/comp11.js +53 -0
  193. package/lib/mjs/components/datagrid/fixtures/comp9.d.ts +41 -0
  194. package/lib/mjs/components/datagrid/fixtures/comp9.js +42 -0
  195. package/lib/mjs/components/datagrid/fixtures/index.d.ts +5 -1
  196. package/lib/mjs/components/datagrid/fixtures/index.js +5 -1
  197. package/lib/mjs/components/datamap/DataMap.js +2 -2
  198. package/lib/mjs/components/datetime/fixtures/comp14.d.ts +35 -0
  199. package/lib/mjs/components/datetime/fixtures/comp14.js +36 -0
  200. package/lib/mjs/components/datetime/fixtures/index.d.ts +6 -5
  201. package/lib/mjs/components/datetime/fixtures/index.js +2 -1
  202. package/lib/mjs/components/day/Day.d.ts +3 -4
  203. package/lib/mjs/components/day/Day.js +30 -10
  204. package/lib/mjs/components/day/fixtures/comp8.d.ts +41 -0
  205. package/lib/mjs/components/day/fixtures/comp8.js +38 -0
  206. package/lib/mjs/components/day/fixtures/index.d.ts +2 -1
  207. package/lib/mjs/components/day/fixtures/index.js +2 -1
  208. package/lib/mjs/components/editgrid/EditGrid.js +16 -8
  209. package/lib/mjs/components/editgrid/fixtures/comp-test-events.d.ts +54 -0
  210. package/lib/mjs/components/editgrid/fixtures/comp-test-events.js +52 -0
  211. package/lib/mjs/components/editgrid/fixtures/comp16.d.ts +52 -0
  212. package/lib/mjs/components/editgrid/fixtures/comp16.js +69 -0
  213. package/lib/mjs/components/editgrid/fixtures/comp17.d.ts +80 -0
  214. package/lib/mjs/components/editgrid/fixtures/comp17.js +97 -0
  215. package/lib/mjs/components/editgrid/fixtures/index.d.ts +10 -7
  216. package/lib/mjs/components/editgrid/fixtures/index.js +4 -1
  217. package/lib/mjs/components/file/File.d.ts +2 -2
  218. package/lib/mjs/components/file/File.js +13 -2
  219. package/lib/mjs/components/file/editForm/File.edit.display.js +1 -1
  220. package/lib/mjs/components/form/Form.d.ts +1 -1
  221. package/lib/mjs/components/form/Form.js +1 -1
  222. package/lib/mjs/components/form/editForm/Form.edit.form.js +1 -1
  223. package/lib/mjs/components/form/fixtures/index.d.ts +2 -1
  224. package/lib/mjs/components/form/fixtures/index.js +2 -1
  225. package/lib/mjs/components/form/fixtures/nestedWizardForm.d.ts +771 -0
  226. package/lib/mjs/components/form/fixtures/nestedWizardForm.js +763 -0
  227. package/lib/mjs/components/html/HTML.js +1 -1
  228. package/lib/mjs/components/number/Number.d.ts +17 -2
  229. package/lib/mjs/components/number/Number.js +26 -6
  230. package/lib/mjs/components/number/fixtures/comp10.d.ts +18 -0
  231. package/lib/mjs/components/number/fixtures/comp10.js +19 -0
  232. package/lib/mjs/components/number/fixtures/comp8.d.ts +32 -0
  233. package/lib/mjs/components/number/fixtures/comp8.js +26 -0
  234. package/lib/mjs/components/number/fixtures/comp9.d.ts +18 -0
  235. package/lib/mjs/components/number/fixtures/comp9.js +19 -0
  236. package/lib/mjs/components/number/fixtures/index.d.ts +4 -1
  237. package/lib/mjs/components/number/fixtures/index.js +4 -1
  238. package/lib/mjs/components/panel/Panel.d.ts +1 -0
  239. package/lib/mjs/components/panel/Panel.js +1 -0
  240. package/lib/mjs/components/radio/Radio.d.ts +2 -18
  241. package/lib/mjs/components/radio/Radio.js +32 -30
  242. package/lib/mjs/components/radio/fixtures/comp12.d.ts +29 -0
  243. package/lib/mjs/components/radio/fixtures/comp12.js +34 -0
  244. package/lib/mjs/components/radio/fixtures/index.d.ts +2 -1
  245. package/lib/mjs/components/radio/fixtures/index.js +2 -1
  246. package/lib/mjs/components/recaptcha/ReCaptcha.d.ts +6 -0
  247. package/lib/mjs/components/recaptcha/ReCaptcha.js +9 -0
  248. package/lib/mjs/components/select/Select.d.ts +38 -0
  249. package/lib/mjs/components/select/Select.js +17 -6
  250. package/lib/mjs/components/select/fixtures/comp25.d.ts +59 -0
  251. package/lib/mjs/components/select/fixtures/comp25.js +64 -0
  252. package/lib/mjs/components/select/fixtures/comp26.d.ts +44 -0
  253. package/lib/mjs/components/select/fixtures/comp26.js +57 -0
  254. package/lib/mjs/components/select/fixtures/index.d.ts +3 -1
  255. package/lib/mjs/components/select/fixtures/index.js +3 -1
  256. package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +0 -22
  257. package/lib/mjs/components/selectboxes/SelectBoxes.js +16 -9
  258. package/lib/mjs/components/signature/editForm/Signature.edit.display.d.ts +0 -6
  259. package/lib/mjs/components/signature/editForm/Signature.edit.display.js +0 -1
  260. package/lib/mjs/components/tags/Tags.js +3 -3
  261. package/lib/mjs/components/time/Time.d.ts +2 -2
  262. package/lib/mjs/components/time/Time.form.js +2 -2
  263. package/lib/mjs/components/time/Time.js +3 -13
  264. package/lib/mjs/components/time/fixtures/comp4.d.ts +166 -0
  265. package/lib/mjs/components/time/fixtures/comp4.js +169 -0
  266. package/lib/mjs/components/time/fixtures/index.d.ts +2 -1
  267. package/lib/mjs/components/time/fixtures/index.js +2 -1
  268. package/lib/mjs/providers/address/GoogleAddressProvider.d.ts +5 -0
  269. package/lib/mjs/providers/address/GoogleAddressProvider.js +22 -1
  270. package/lib/mjs/templates/Templates.js +1 -1
  271. package/lib/mjs/translations/en.d.ts +4 -0
  272. package/lib/mjs/translations/en.js +5 -1
  273. package/lib/mjs/utils/conditionOperators/DateGreaterThan.js +1 -1
  274. package/lib/mjs/utils/conditionOperators/IsEmptyValue.js +3 -3
  275. package/lib/mjs/utils/conditionOperators/IsEqualTo.js +1 -1
  276. package/lib/mjs/utils/utils.d.ts +2 -11
  277. package/lib/mjs/utils/utils.js +59 -13
  278. package/lib/mjs/widgets/CalendarWidget.js +24 -10
  279. package/package.json +5 -6
@@ -10,7 +10,7 @@ class HTMLComponent extends Component_1.default {
10
10
  return Component_1.default.schema({
11
11
  label: 'HTML',
12
12
  type: 'htmlelement',
13
- tag: 'p',
13
+ tag: 'div',
14
14
  attrs: [],
15
15
  content: '',
16
16
  input: false,
@@ -27,11 +27,26 @@ 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;
34
- parseValue(input: any): number;
40
+ /**
41
+ * Converts a string to a floating point number, formats the number based on the parsed float function
42
+ * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat) and then returns the
43
+ * formatted number back as a string
44
+ * Example Input: "123.456,22"
45
+ * Example Output: "123456,22"
46
+ * @param {string | number} input the numeric string to parse
47
+ * @returns {string | null} a parsed string
48
+ */
49
+ parseValue(input: string | number): string | null;
35
50
  focus(): void;
36
51
  getMaskedValue(value: any): any;
37
52
  getValueAsString(value: any, options: any): any;
@@ -45,19 +45,19 @@ class NumberComponent extends Input_1.default {
45
45
  return (0, utils_1.getComponentSavedTypes)(schema) || [utils_1.componentValueTypes.number];
46
46
  }
47
47
  constructor(...args) {
48
- var _a, _b;
48
+ var _a, _b, _c;
49
49
  super(...args);
50
50
  const separators = (0, utils_1.getNumberSeparators)(this.options.language || navigator.language);
51
- this.decimalSeparator = this.options.decimalSeparator = this.options.decimalSeparator
51
+ this.decimalSeparator = this.options.decimalSeparator = this.component.decimalSymbol || this.options.decimalSeparator
52
52
  || ((_a = this.options.properties) === null || _a === void 0 ? void 0 : _a.decimalSeparator)
53
53
  || separators.decimalSeparator;
54
54
  if (this.component.delimiter) {
55
- if (this.options.hasOwnProperty('thousandsSeparator')) {
56
- console.warn("Property 'thousandsSeparator' is deprecated. Please use i18n to specify delimiter.");
57
- }
58
- this.delimiter = ((_b = this.options.properties) === null || _b === void 0 ? void 0 : _b.thousandsSeparator) || this.options.thousandsSeparator || separators.delimiter;
55
+ this.delimiter = this.component.thousandsSeparator || ((_b = this.options.properties) === null || _b === void 0 ? void 0 : _b.thousandsSeparator) || this.options.thousandsSeparator || separators.delimiter;
59
56
  }
60
57
  else {
58
+ if (this.component.thousandsSeparator || ((_c = this.options.properties) === null || _c === void 0 ? void 0 : _c.thousandsSeparator) || this.options.thousandsSeparator) {
59
+ console.warn('In order for thousands separator to work properly, you must set the delimiter to true in the component json');
60
+ }
61
61
  this.delimiter = '';
62
62
  }
63
63
  const requireDecimal = lodash_1.default.get(this.component, 'requireDecimal', false);
@@ -79,7 +79,7 @@ class NumberComponent extends Input_1.default {
79
79
  prefix: '',
80
80
  suffix: '',
81
81
  requireDecimal: lodash_1.default.get(this.component, 'requireDecimal', false),
82
- thousandsSeparatorSymbol: lodash_1.default.get(this.component, 'thousandsSeparator', this.delimiter),
82
+ thousandsSeparatorSymbol: this.delimiter || '',
83
83
  decimalSymbol: lodash_1.default.get(this.component, 'decimalSymbol', this.decimalSeparator),
84
84
  decimalLimit: lodash_1.default.get(this.component, 'decimalLimit', this.decimalLimit),
85
85
  allowNegative: lodash_1.default.get(this.component, 'allowNegative', true),
@@ -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, '.');
@@ -146,6 +157,15 @@ class NumberComponent extends Input_1.default {
146
157
  setValueAt(index, value, flags = {}) {
147
158
  return super.setValueAt(index, this.formatValue(this.parseValue(value)), flags);
148
159
  }
160
+ /**
161
+ * Converts a string to a floating point number, formats the number based on the parsed float function
162
+ * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat) and then returns the
163
+ * formatted number back as a string
164
+ * Example Input: "123.456,22"
165
+ * Example Output: "123456,22"
166
+ * @param {string | number} input the numeric string to parse
167
+ * @returns {string | null} a parsed string
168
+ */
149
169
  parseValue(input) {
150
170
  if (typeof input === 'string') {
151
171
  input = input.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
+ };
@@ -0,0 +1,32 @@
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
+ key: string;
12
+ type: string;
13
+ input: boolean;
14
+ decimalSymbol: string;
15
+ disableOnInvalid?: undefined;
16
+ } | {
17
+ type: string;
18
+ label: string;
19
+ key: string;
20
+ disableOnInvalid: boolean;
21
+ input: boolean;
22
+ tableView: boolean;
23
+ applyMaskOn?: undefined;
24
+ mask?: undefined;
25
+ delimiter?: undefined;
26
+ requireDecimal?: undefined;
27
+ inputFormat?: undefined;
28
+ truncateMultipleSpaces?: undefined;
29
+ decimalSymbol?: undefined;
30
+ })[];
31
+ }
32
+ export default _default;
@@ -0,0 +1,28 @@
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
+ "key": "number",
15
+ "type": "number",
16
+ "input": true,
17
+ "decimalSymbol": "-"
18
+ },
19
+ {
20
+ "type": "button",
21
+ "label": "Submit",
22
+ "key": "submit",
23
+ "disableOnInvalid": true,
24
+ "input": true,
25
+ "tableView": false
26
+ }
27
+ ]
28
+ };
@@ -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
+ key: string;
12
+ type: string;
13
+ input: boolean;
14
+ decimalSymbol: string;
15
+ thousandsSeparator: 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": true,
11
+ "requireDecimal": false,
12
+ "inputFormat": "plain",
13
+ "truncateMultipleSpaces": false,
14
+ "key": "number",
15
+ "type": "number",
16
+ "input": true,
17
+ "decimalSymbol": ",",
18
+ "thousandsSeparator": "."
19
+ }
20
+ ]
21
+ };
@@ -5,4 +5,7 @@ import comp4 from './comp4';
5
5
  import comp5 from './comp5';
6
6
  import comp6 from './comp6';
7
7
  import comp7 from './comp7';
8
- export { comp1, comp2, comp3, comp4, comp5, comp6, comp7 };
8
+ import comp8 from './comp8';
9
+ import comp9 from './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.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"));
@@ -18,3 +18,9 @@ const comp6_1 = __importDefault(require("./comp6"));
18
18
  exports.comp6 = comp6_1.default;
19
19
  const comp7_1 = __importDefault(require("./comp7"));
20
20
  exports.comp7 = comp7_1.default;
21
+ const comp8_1 = __importDefault(require("./comp8"));
22
+ exports.comp8 = comp8_1.default;
23
+ const comp9_1 = __importDefault(require("./comp9"));
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
  };
@@ -8,26 +8,10 @@ export default class RadioComponent extends ListComponent {
8
8
  schema: any;
9
9
  };
10
10
  static get conditionOperatorsSettings(): {
11
- valueComponent(classComp: any): {
12
- type: string;
13
- dataSrc: string;
14
- valueProperty: string;
15
- dataType: any;
16
- data: {
17
- custom(): any;
18
- };
19
- };
11
+ valueComponent(classComp: any): any;
20
12
  };
21
13
  static get serverConditionSettings(): {
22
- valueComponent(classComp: any): {
23
- type: string;
24
- dataSrc: string;
25
- valueProperty: string;
26
- dataType: any;
27
- data: {
28
- custom: string;
29
- };
30
- };
14
+ valueComponent(classComp: any): any;
31
15
  };
32
16
  static savedValueTypes(schema: any): any[];
33
17
  constructor(component: any, options: any, data: any);
@@ -33,31 +33,22 @@ class RadioComponent extends ListComponent_1.default {
33
33
  }
34
34
  static get conditionOperatorsSettings() {
35
35
  return Object.assign(Object.assign({}, super.conditionOperatorsSettings), { valueComponent(classComp) {
36
- return {
37
- type: 'select',
38
- dataSrc: 'custom',
39
- valueProperty: 'value',
40
- dataType: classComp.dataType || '',
41
- data: {
42
- custom() {
43
- return classComp.values;
36
+ const isValuesSrc = !classComp.dataSrc || classComp.dataSrc === 'values';
37
+ return isValuesSrc
38
+ ? {
39
+ type: 'select',
40
+ dataSrc: 'custom',
41
+ valueProperty: 'value',
42
+ dataType: classComp.dataType || '',
43
+ data: {
44
+ custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`,
44
45
  }
45
- },
46
- };
46
+ }
47
+ : Object.assign(Object.assign({}, classComp), { type: 'select' });
47
48
  } });
48
49
  }
49
50
  static get serverConditionSettings() {
50
- return Object.assign(Object.assign({}, super.serverConditionSettings), { valueComponent(classComp) {
51
- return {
52
- type: 'select',
53
- dataSrc: 'custom',
54
- valueProperty: 'value',
55
- dataType: classComp.dataType || '',
56
- data: {
57
- custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`,
58
- },
59
- };
60
- } });
51
+ return RadioComponent.conditionOperatorsSettings;
61
52
  }
62
53
  static savedValueTypes(schema) {
63
54
  const { boolean, string, number, object, array } = utils_1.componentValueTypes;
@@ -264,6 +255,16 @@ class RadioComponent extends ListComponent_1.default {
264
255
  if (method.toUpperCase() === 'GET') {
265
256
  body = null;
266
257
  }
258
+ const limit = this.component.limit || 100;
259
+ const skip = this.isScrollLoading ? this.selectOptions.length : 0;
260
+ // Allow for url interpolation.
261
+ url = this.sanitize(this.interpolate(url, {
262
+ formioBase: Formio_1.Formio.getBaseUrl(),
263
+ search,
264
+ limit,
265
+ skip,
266
+ page: Math.abs(Math.floor(skip / limit))
267
+ }), this.shouldSanitizeValue);
267
268
  // Set ignoreCache if it is
268
269
  options.ignoreCache = this.component.ignoreCache;
269
270
  // Make the request.
@@ -295,14 +296,15 @@ class RadioComponent extends ListComponent_1.default {
295
296
  setItems(items) {
296
297
  const listData = [];
297
298
  items === null || items === void 0 ? void 0 : items.forEach((item, i) => {
299
+ const valueAtProperty = lodash_1.default.get(item, this.component.valueProperty);
298
300
  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)
301
+ value: this.component.valueProperty ? valueAtProperty : item,
302
+ label: this.component.valueProperty ? this.itemTemplate(item, valueAtProperty) : this.itemTemplate(item, item, i)
301
303
  };
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])))) {
304
+ listData.push(this.templateData[this.component.valueProperty ? valueAtProperty : i]);
305
+ if ((this.component.valueProperty || !this.isRadio) && (lodash_1.default.isUndefined(valueAtProperty) ||
306
+ (!this.isRadio && lodash_1.default.isObject(valueAtProperty)) ||
307
+ (!this.isRadio && lodash_1.default.isBoolean(valueAtProperty)))) {
306
308
  this.loadedOptions[i].invalid = true;
307
309
  }
308
310
  });
@@ -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 };
@@ -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.comp11 = exports.comp10 = exports.comp9 = exports.comp8 = exports.comp7 = exports.comp6 = exports.comp5 = exports.comp4 = exports.comp3 = exports.comp2 = exports.comp1 = void 0;
6
+ exports.comp12 = exports.comp11 = 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"));
@@ -26,3 +26,5 @@ const comp10_1 = __importDefault(require("./comp10"));
26
26
  exports.comp10 = comp10_1.default;
27
27
  const comp11_1 = __importDefault(require("./comp11"));
28
28
  exports.comp11 = comp11_1.default;
29
+ const comp12_1 = __importDefault(require("./comp12"));
30
+ exports.comp12 = comp12_1.default;
@@ -1,6 +1,12 @@
1
1
  export default class ReCaptchaComponent extends Component {
2
2
  static get builderInfo(): {};
3
3
  static savedValueTypes(): never[];
4
+ static get conditionOperatorsSettings(): {
5
+ operators: string[];
6
+ };
7
+ static get serverConditionSettings(): {
8
+ operators: string[];
9
+ };
4
10
  render(): string;
5
11
  recaptchaResult: any;
6
12
  createInput(): void;
@@ -31,6 +31,12 @@ class ReCaptchaComponent extends Component_1.default {
31
31
  static savedValueTypes() {
32
32
  return [];
33
33
  }
34
+ static get conditionOperatorsSettings() {
35
+ return Object.assign(Object.assign({}, super.conditionOperatorsSettings), { operators: ['isEmpty', 'isNotEmpty'] });
36
+ }
37
+ static get serverConditionSettings() {
38
+ return ReCaptchaComponent.conditionOperatorsSettings;
39
+ }
34
40
  render() {
35
41
  this.recaptchaResult = null;
36
42
  if (this.builderMode) {
@@ -9,9 +9,47 @@ export default class SelectComponent extends ListComponent {
9
9
  };
10
10
  static get serverConditionSettings(): {
11
11
  valueComponent(classComp: any): any;
12
+ dataTypeOperators: {
13
+ number: string[];
14
+ };
15
+ dataTypeValueComponents: {
16
+ number: {
17
+ lessThan: () => {
18
+ type: string;
19
+ };
20
+ greaterThan: () => {
21
+ type: string;
22
+ };
23
+ lessThanOrEqual: () => {
24
+ type: string;
25
+ };
26
+ greaterThanOrEqual: () => {
27
+ type: string;
28
+ };
29
+ };
30
+ };
12
31
  };
13
32
  static get conditionOperatorsSettings(): {
14
33
  valueComponent(classComp: any): any;
34
+ dataTypeOperators: {
35
+ number: string[];
36
+ };
37
+ dataTypeValueComponents: {
38
+ number: {
39
+ lessThan: () => {
40
+ type: string;
41
+ };
42
+ greaterThan: () => {
43
+ type: string;
44
+ };
45
+ lessThanOrEqual: () => {
46
+ type: string;
47
+ };
48
+ greaterThanOrEqual: () => {
49
+ type: string;
50
+ };
51
+ };
52
+ };
15
53
  };
16
54
  static savedValueTypes(schema: any): any[];
17
55
  templateData: {} | undefined;
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const lodash_1 = __importDefault(require("lodash"));
7
7
  const Formio_1 = require("../../Formio");
8
8
  const ListComponent_1 = __importDefault(require("../_classes/list/ListComponent"));
9
- const Input_1 = __importDefault(require("../_classes/input/Input"));
10
9
  const Form_1 = __importDefault(require("../../Form"));
11
10
  const utils_1 = require("../../utils/utils");
12
11
  const ChoicesWrapper_1 = __importDefault(require("../../utils/ChoicesWrapper"));
@@ -63,6 +62,7 @@ class SelectComponent extends ListComponent_1.default {
63
62
  return SelectComponent.conditionOperatorsSettings;
64
63
  }
65
64
  static get conditionOperatorsSettings() {
65
+ const numberType = () => ({ type: 'number' });
66
66
  return Object.assign(Object.assign({}, super.conditionOperatorsSettings), { valueComponent(classComp) {
67
67
  const valueComp = Object.assign(Object.assign({}, classComp), { type: 'select' });
68
68
  if ((0, utils_1.isSelectResourceWithObjectValue)(classComp)) {
@@ -77,6 +77,15 @@ class SelectComponent extends ListComponent_1.default {
77
77
  `;
78
78
  }
79
79
  return valueComp;
80
+ }, dataTypeOperators: {
81
+ number: ['lessThan', 'greaterThan', 'lessThanOrEqual', 'greaterThanOrEqual'],
82
+ }, dataTypeValueComponents: {
83
+ number: {
84
+ lessThan: numberType,
85
+ greaterThan: numberType,
86
+ lessThanOrEqual: numberType,
87
+ greaterThanOrEqual: numberType,
88
+ },
80
89
  } });
81
90
  }
82
91
  static savedValueTypes(schema) {
@@ -527,13 +536,13 @@ class SelectComponent extends ListComponent_1.default {
527
536
  skip,
528
537
  };
529
538
  // Allow for url interpolation.
530
- url = this.interpolate(url, {
539
+ url = this.sanitize(this.interpolate(url, {
531
540
  formioBase: Formio_1.Formio.getBaseUrl(),
532
541
  search,
533
542
  limit,
534
543
  skip,
535
544
  page: Math.abs(Math.floor(skip / limit))
536
- });
545
+ }), this.shouldSanitizeValue);
537
546
  // Add search capability.
538
547
  if (this.component.searchField && search) {
539
548
  const searchValue = Array.isArray(search)
@@ -834,7 +843,7 @@ class SelectComponent extends ListComponent_1.default {
834
843
  this.choices.containerOuter.element.setAttribute('tabIndex', '-1');
835
844
  this.addEventListener(this.choices.containerOuter.element, 'focus', () => this.focusableElement.focus());
836
845
  }
837
- Input_1.default.prototype.addFocusBlurEvents.call(this, this.focusableElement);
846
+ this.addFocusBlurEvents(this.choices.input.element);
838
847
  if (this.itemsFromUrl && !this.component.noRefreshOnScroll) {
839
848
  this.scrollList = this.choices.choiceList.element;
840
849
  this.addEventListener(this.scrollList, 'scroll', () => this.onScroll());
@@ -1558,8 +1567,8 @@ class SelectComponent extends ListComponent_1.default {
1558
1567
  super.detach();
1559
1568
  }
1560
1569
  focus() {
1570
+ super.focus.call(this);
1561
1571
  if (this.focusableElement) {
1562
- super.focus.call(this);
1563
1572
  this.focusableElement.focus();
1564
1573
  }
1565
1574
  }