@formio/js 5.0.0-dev.5614.ea3660d → 5.0.0-dev.5620.dedc19b

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 (87) hide show
  1. package/Changelog.md +4 -2
  2. package/dist/formio.form.js +31 -21
  3. package/dist/formio.form.min.js +1 -1
  4. package/dist/formio.form.min.js.LICENSE.txt +2 -0
  5. package/dist/formio.full.js +34 -24
  6. package/dist/formio.full.min.js +1 -1
  7. package/dist/formio.full.min.js.LICENSE.txt +2 -0
  8. package/dist/formio.utils.js +13 -3
  9. package/dist/formio.utils.min.js +1 -1
  10. package/dist/formio.utils.min.js.LICENSE.txt +2 -0
  11. package/lib/cjs/Element.d.ts +2 -1
  12. package/lib/cjs/Element.js +17 -8
  13. package/lib/cjs/Form.js +15 -1
  14. package/lib/cjs/PDF.js +8 -1
  15. package/lib/cjs/PDFBuilder.js +3 -3
  16. package/lib/cjs/Webform.d.ts +0 -1
  17. package/lib/cjs/Webform.js +17 -12
  18. package/lib/cjs/WebformBuilder.d.ts +0 -1
  19. package/lib/cjs/WebformBuilder.js +4 -4
  20. package/lib/cjs/Wizard.js +1 -1
  21. package/lib/cjs/addons/FormioAddon.d.ts +1 -0
  22. package/lib/cjs/components/_classes/component/Component.d.ts +2 -1
  23. package/lib/cjs/components/_classes/component/Component.js +46 -8
  24. package/lib/cjs/components/_classes/input/Input.js +16 -1
  25. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +2 -2
  26. package/lib/cjs/components/_classes/nested/NestedComponent.js +8 -7
  27. package/lib/cjs/components/columns/Columns.js +2 -2
  28. package/lib/cjs/components/editgrid/EditGrid.d.ts +1 -1
  29. package/lib/cjs/components/editgrid/EditGrid.js +21 -7
  30. package/lib/cjs/components/file/File.d.ts +1 -0
  31. package/lib/cjs/components/file/File.js +2 -2
  32. package/lib/cjs/components/form/Form.js +3 -3
  33. package/lib/cjs/components/radio/Radio.d.ts +1 -1
  34. package/lib/cjs/components/radio/Radio.js +5 -3
  35. package/lib/cjs/components/recaptcha/editForm/ReCaptcha.edit.display.d.ts +5 -0
  36. package/lib/cjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +3 -0
  37. package/lib/cjs/components/select/Select.js +10 -3
  38. package/lib/cjs/components/select/fixtures/comp23.d.ts +47 -0
  39. package/lib/cjs/components/select/fixtures/comp23.js +40 -0
  40. package/lib/cjs/components/select/fixtures/index.d.ts +2 -1
  41. package/lib/cjs/components/select/fixtures/index.js +3 -1
  42. package/lib/cjs/components/selectboxes/SelectBoxes.js +4 -1
  43. package/lib/cjs/components/table/Table.d.ts +0 -1
  44. package/lib/cjs/components/table/Table.js +1 -1
  45. package/lib/cjs/components/tags/Tags.js +4 -2
  46. package/lib/cjs/utils/utils.d.ts +7 -1
  47. package/lib/cjs/utils/utils.js +29 -3
  48. package/lib/cjs/widgets/CalendarWidget.js +2 -2
  49. package/lib/mjs/Element.d.ts +2 -1
  50. package/lib/mjs/Element.js +17 -8
  51. package/lib/mjs/Form.js +15 -1
  52. package/lib/mjs/PDF.js +8 -1
  53. package/lib/mjs/PDFBuilder.js +3 -3
  54. package/lib/mjs/Webform.d.ts +0 -1
  55. package/lib/mjs/Webform.js +17 -12
  56. package/lib/mjs/WebformBuilder.d.ts +0 -1
  57. package/lib/mjs/WebformBuilder.js +4 -4
  58. package/lib/mjs/Wizard.js +1 -1
  59. package/lib/mjs/addons/FormioAddon.d.ts +1 -0
  60. package/lib/mjs/components/_classes/component/Component.d.ts +2 -1
  61. package/lib/mjs/components/_classes/component/Component.js +47 -9
  62. package/lib/mjs/components/_classes/input/Input.js +16 -1
  63. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +2 -2
  64. package/lib/mjs/components/_classes/nested/NestedComponent.js +8 -7
  65. package/lib/mjs/components/columns/Columns.js +2 -2
  66. package/lib/mjs/components/editgrid/EditGrid.d.ts +1 -1
  67. package/lib/mjs/components/editgrid/EditGrid.js +20 -7
  68. package/lib/mjs/components/file/File.d.ts +1 -0
  69. package/lib/mjs/components/file/File.js +2 -2
  70. package/lib/mjs/components/form/Form.js +3 -3
  71. package/lib/mjs/components/radio/Radio.d.ts +1 -1
  72. package/lib/mjs/components/radio/Radio.js +5 -3
  73. package/lib/mjs/components/recaptcha/editForm/ReCaptcha.edit.display.d.ts +5 -0
  74. package/lib/mjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +3 -0
  75. package/lib/mjs/components/select/Select.js +10 -3
  76. package/lib/mjs/components/select/fixtures/comp23.d.ts +47 -0
  77. package/lib/mjs/components/select/fixtures/comp23.js +38 -0
  78. package/lib/mjs/components/select/fixtures/index.d.ts +2 -1
  79. package/lib/mjs/components/select/fixtures/index.js +2 -1
  80. package/lib/mjs/components/selectboxes/SelectBoxes.js +4 -1
  81. package/lib/mjs/components/table/Table.d.ts +0 -1
  82. package/lib/mjs/components/table/Table.js +1 -1
  83. package/lib/mjs/components/tags/Tags.js +4 -2
  84. package/lib/mjs/utils/utils.d.ts +7 -1
  85. package/lib/mjs/utils/utils.js +15 -1
  86. package/lib/mjs/widgets/CalendarWidget.js +2 -2
  87. package/package.json +2 -2
@@ -7,6 +7,9 @@ declare const _default: ({
7
7
  label: string;
8
8
  value: string;
9
9
  }[];
10
+ validate: {
11
+ required: boolean;
12
+ };
10
13
  weight: number;
11
14
  input?: undefined;
12
15
  dataSrc?: undefined;
@@ -28,6 +31,7 @@ declare const _default: ({
28
31
  custom(context: any): any[];
29
32
  };
30
33
  values?: undefined;
34
+ validate?: undefined;
31
35
  ignore?: undefined;
32
36
  } | {
33
37
  key: string;
@@ -36,6 +40,7 @@ declare const _default: ({
36
40
  tooltip?: undefined;
37
41
  type?: undefined;
38
42
  values?: undefined;
43
+ validate?: undefined;
39
44
  weight?: undefined;
40
45
  input?: undefined;
41
46
  dataSrc?: undefined;
@@ -17,6 +17,9 @@ exports.default = [
17
17
  value: 'buttonClick'
18
18
  }
19
19
  ],
20
+ validate: {
21
+ required: true
22
+ },
20
23
  weight: 650
21
24
  },
22
25
  {
@@ -228,9 +228,10 @@ class SelectComponent extends ListComponent_1.default {
228
228
  }
229
229
  selectValueAndLabel(data) {
230
230
  const value = this.getOptionValue((this.isEntireObjectDisplay() && !this.itemValue(data)) ? data : this.itemValue(data));
231
+ const readOnlyResourceLabelData = this.options.readOnly && (this.component.dataSrc === 'resource' || this.component.dataSrc === 'url') && this.selectData;
231
232
  return {
232
233
  value,
233
- label: this.itemTemplate((this.isEntireObjectDisplay() && !lodash_1.default.isObject(data.data)) ? { data: data } : data, value)
234
+ label: this.itemTemplate((this.isEntireObjectDisplay() && !lodash_1.default.isObject(data.data)) ? { data: data } : readOnlyResourceLabelData || data, value)
234
235
  };
235
236
  }
236
237
  itemTemplate(data, value) {
@@ -811,7 +812,9 @@ class SelectComponent extends ListComponent_1.default {
811
812
  }
812
813
  const tabIndex = input.tabIndex;
813
814
  this.addPlaceholder();
814
- input.setAttribute('dir', this.i18next.dir());
815
+ if (this.i18next) {
816
+ input.setAttribute('dir', this.i18next.dir());
817
+ }
815
818
  if ((_c = (_b = (_a = this.choices) === null || _a === void 0 ? void 0 : _a.containerOuter) === null || _b === void 0 ? void 0 : _b.element) === null || _c === void 0 ? void 0 : _c.parentNode) {
816
819
  this.choices.destroy();
817
820
  }
@@ -1468,6 +1471,10 @@ class SelectComponent extends ListComponent_1.default {
1468
1471
  asString(value, options = {}) {
1469
1472
  var _a;
1470
1473
  value = value !== null && value !== void 0 ? value : this.getValue();
1474
+ if (options.modalPreview && this.selectData) {
1475
+ const { label } = this.selectValueAndLabel(value);
1476
+ return label;
1477
+ }
1471
1478
  //need to convert values to strings to be able to compare values with available options that are strings
1472
1479
  const convertToString = (data, valueProperty) => {
1473
1480
  if (valueProperty) {
@@ -1544,7 +1551,6 @@ class SelectComponent extends ListComponent_1.default {
1544
1551
  }
1545
1552
  detach() {
1546
1553
  var _a, _b;
1547
- super.detach();
1548
1554
  this.off('blur');
1549
1555
  if (this.choices) {
1550
1556
  if ((_b = (_a = this.choices.containerOuter) === null || _a === void 0 ? void 0 : _a.element) === null || _b === void 0 ? void 0 : _b.parentNode) {
@@ -1552,6 +1558,7 @@ class SelectComponent extends ListComponent_1.default {
1552
1558
  }
1553
1559
  this.choices = null;
1554
1560
  }
1561
+ super.detach();
1555
1562
  }
1556
1563
  focus() {
1557
1564
  if (this.focusableElement) {
@@ -0,0 +1,47 @@
1
+ declare namespace _default {
2
+ let title: string;
3
+ let name: string;
4
+ let path: string;
5
+ let type: string;
6
+ let display: string;
7
+ let components: ({
8
+ label: string;
9
+ widget: string;
10
+ tableView: boolean;
11
+ dataSrc: string;
12
+ data: {
13
+ resource: string;
14
+ };
15
+ template: string;
16
+ validate: {
17
+ select: boolean;
18
+ };
19
+ key: string;
20
+ type: string;
21
+ searchField: string;
22
+ input: boolean;
23
+ noRefreshOnScroll: boolean;
24
+ addResource: boolean;
25
+ reference: boolean;
26
+ valueProperty: string;
27
+ disableOnInvalid?: undefined;
28
+ } | {
29
+ type: string;
30
+ label: string;
31
+ key: string;
32
+ disableOnInvalid: boolean;
33
+ input: boolean;
34
+ tableView: boolean;
35
+ widget?: undefined;
36
+ dataSrc?: undefined;
37
+ data?: undefined;
38
+ template?: undefined;
39
+ validate?: undefined;
40
+ searchField?: undefined;
41
+ noRefreshOnScroll?: undefined;
42
+ addResource?: undefined;
43
+ reference?: undefined;
44
+ valueProperty?: undefined;
45
+ })[];
46
+ }
47
+ export default _default;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ title: 'FIO-8234',
5
+ name: 'fio8234',
6
+ path: 'fio8234',
7
+ type: 'form',
8
+ display: 'form',
9
+ components: [
10
+ {
11
+ label: 'Select',
12
+ widget: 'choicesjs',
13
+ tableView: true,
14
+ dataSrc: 'resource',
15
+ data: {
16
+ resource: '665446284c9b0163c3e0c7e6',
17
+ },
18
+ template: '<span>{{ item.data.textField1 }}</span>',
19
+ validate: {
20
+ select: false,
21
+ },
22
+ key: 'select',
23
+ type: 'select',
24
+ searchField: 'data.textField2__regex',
25
+ input: true,
26
+ noRefreshOnScroll: false,
27
+ addResource: false,
28
+ reference: false,
29
+ valueProperty: 'data.textField2',
30
+ },
31
+ {
32
+ type: 'button',
33
+ label: 'Submit',
34
+ key: 'submit',
35
+ disableOnInvalid: true,
36
+ input: true,
37
+ tableView: false,
38
+ },
39
+ ],
40
+ };
@@ -19,5 +19,6 @@ import comp19 from './comp19';
19
19
  import comp20 from './comp20';
20
20
  import comp21 from './comp21';
21
21
  import comp22 from './comp22';
22
- export { comp1, comp2, comp4, comp5, comp6, comp7, comp8, comp9, comp10, comp11, comp12, comp13, comp14, comp15, comp16, comp17, comp18, comp19, comp20, comp21, comp22 };
22
+ import comp23 from './comp23';
23
+ export { comp1, comp2, comp4, comp5, comp6, comp7, comp8, comp9, comp10, comp11, comp12, comp13, comp14, comp15, comp16, comp17, comp18, comp19, comp20, comp21, comp22, comp23 };
23
24
  export { multiSelect, multiSelectOptions } from "./comp3";
@@ -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.comp22 = exports.comp21 = exports.comp20 = exports.comp19 = exports.comp18 = exports.comp17 = exports.comp16 = exports.comp15 = exports.comp14 = exports.comp13 = exports.comp12 = exports.comp11 = exports.comp10 = exports.comp9 = exports.comp8 = exports.comp7 = exports.comp6 = exports.comp5 = exports.comp4 = exports.comp2 = exports.comp1 = exports.multiSelectOptions = exports.multiSelect = void 0;
6
+ exports.comp23 = exports.comp22 = exports.comp21 = exports.comp20 = exports.comp19 = exports.comp18 = exports.comp17 = exports.comp16 = exports.comp15 = exports.comp14 = exports.comp13 = exports.comp12 = exports.comp11 = exports.comp10 = exports.comp9 = exports.comp8 = exports.comp7 = exports.comp6 = exports.comp5 = exports.comp4 = exports.comp2 = exports.comp1 = exports.multiSelectOptions = exports.multiSelect = 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"));
@@ -49,3 +49,5 @@ const comp21_1 = __importDefault(require("./comp21"));
49
49
  exports.comp21 = comp21_1.default;
50
50
  const comp22_1 = __importDefault(require("./comp22"));
51
51
  exports.comp22 = comp22_1.default;
52
+ const comp23_1 = __importDefault(require("./comp23"));
53
+ exports.comp23 = comp23_1.default;
@@ -164,11 +164,14 @@ class SelectBoxesComponent extends Radio_1.default {
164
164
  }
165
165
  return changed;
166
166
  }
167
- getValueAsString(value) {
167
+ getValueAsString(value, options = {}) {
168
168
  if (!value) {
169
169
  return '';
170
170
  }
171
171
  if (this.isSelectURL) {
172
+ if (options.modalPreview && this.loadedOptions) {
173
+ return this.loadedOptions.filter((option) => value[option.value]).map((option) => option.label).join(', ');
174
+ }
172
175
  return (0, lodash_1.default)(value).pickBy((val) => val).keys().join(', ');
173
176
  }
174
177
  return (0, lodash_1.default)(this.component.values || [])
@@ -19,6 +19,5 @@ export default class TableComponent extends NestedComponent {
19
19
  noField: boolean;
20
20
  table: any[] | undefined;
21
21
  render(): any;
22
- destroy(all: any): void;
23
22
  }
24
23
  import NestedComponent from '../_classes/nested/NestedComponent';
@@ -167,7 +167,7 @@ class TableComponent extends NestedComponent_1.default {
167
167
  });
168
168
  return superAttach;
169
169
  }
170
- destroy(all) {
170
+ destroy(all = false) {
171
171
  super.destroy(all);
172
172
  delete this.table;
173
173
  }
@@ -61,7 +61,9 @@ class TagsComponent extends Input_1.default {
61
61
  if (!element) {
62
62
  return;
63
63
  }
64
- element.setAttribute('dir', this.i18next.dir());
64
+ if (this.i18next) {
65
+ element.setAttribute('dir', this.i18next.dir());
66
+ }
65
67
  if (this.choices) {
66
68
  this.choices.destroy();
67
69
  }
@@ -108,11 +110,11 @@ class TagsComponent extends Input_1.default {
108
110
  });
109
111
  }
110
112
  detach() {
111
- super.detach();
112
113
  if (this.choices) {
113
114
  this.choices.destroy();
114
115
  this.choices = null;
115
116
  }
117
+ super.detach();
116
118
  }
117
119
  normalizeValue(value) {
118
120
  if (this.component.storeas === 'string' && Array.isArray(value)) {
@@ -27,6 +27,12 @@ export function getElementRect(element: any): {
27
27
  width: string;
28
28
  height: string;
29
29
  };
30
+ /**
31
+ * Get non HTMLElement property in the window object
32
+ * @param {String} property
33
+ * @return {any || undefined}
34
+ */
35
+ export function getScriptPlugin(property: string): any;
30
36
  /**
31
37
  * Determines the boolean value of a setting.
32
38
  *
@@ -374,4 +380,4 @@ import jsonLogic from 'json-logic-js';
374
380
  import ConditionOperators from './conditionOperators';
375
381
  import Evaluator from './Evaluator';
376
382
  export const interpolate: (rawTemplate: any, data: any, _options: any) => any;
377
- export { jsonLogic, moment, ConditionOperators, Evaluator, _ };
383
+ export { jsonLogic, ConditionOperators, Evaluator, _ };
@@ -11,22 +11,33 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
11
11
  if (k2 === undefined) k2 = k;
12
12
  o[k2] = m[k];
13
13
  }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
14
19
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
20
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
21
  };
22
+ var __importStar = (this && this.__importStar) || function (mod) {
23
+ if (mod && mod.__esModule) return mod;
24
+ var result = {};
25
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
+ __setModuleDefault(result, mod);
27
+ return result;
28
+ };
17
29
  var __importDefault = (this && this.__importDefault) || function (mod) {
18
30
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
31
  };
20
32
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.observeOverload = exports.withSwitch = exports.firstNonNil = exports.unfold = exports.bootstrapVersion = exports.uniqueKey = exports.iterateKey = exports.delay = exports.fieldData = exports.getCurrencyAffixes = exports.getNumberDecimalLimit = exports.getNumberSeparators = exports.matchInputMask = exports.unmaskValue = exports.getInputMask = exports.convertFormatToMask = exports.convertFormatToMoment = exports.convertFormatToFlatpickr = exports.getLocaleDateFormatInfo = exports.formatOffset = exports.formatDate = exports.momentDate = exports.loadZones = exports.shouldLoadZones = exports.zonesLoaded = exports.offsetDate = exports.currentTimezone = exports.isValidDate = exports.getDateSetting = exports.guid = exports.uniqueName = exports.convertStringToHTMLElement = exports.unescapeHTML = exports.setActionProperty = exports.checkTrigger = exports.checkCondition = exports.checkJsonConditional = exports.checkCustomConditional = exports.getComponentActualValue = exports.checkSimpleConditional = exports.checkCalculated = exports.isMongoId = exports.boolValue = exports.getElementRect = exports.getPropertyValue = exports.getRandomComponentId = exports.evaluate = exports.ConditionOperators = exports.moment = exports.jsonLogic = void 0;
22
- exports.isSelectResourceWithObjectValue = exports.getItemTemplateKeys = exports.interpolateErrors = exports.getComponentSavedTypes = exports.componentValueTypes = exports._ = exports.getFocusableElements = exports.isInsideScopingComponent = exports.isPromise = exports.getDataParentComponent = exports.getComponentPath = exports.getComponentPathWithoutIndicies = exports.getBrowserInfo = exports.getIEBrowserVersion = exports.round = exports.getStringFromComponentPath = exports.isChildOf = exports.getArrayFromComponentPath = exports.isInputComponent = exports.interpolate = exports.Evaluator = exports.fastCloneDeep = exports.sanitize = exports.translateHTMLTemplate = exports.getContextButtons = exports.getContextComponents = void 0;
33
+ exports.withSwitch = exports.firstNonNil = exports.unfold = exports.bootstrapVersion = exports.uniqueKey = exports.iterateKey = exports.delay = exports.fieldData = exports.getCurrencyAffixes = exports.getNumberDecimalLimit = exports.getNumberSeparators = exports.matchInputMask = exports.unmaskValue = exports.getInputMask = exports.convertFormatToMask = exports.convertFormatToMoment = exports.convertFormatToFlatpickr = exports.getLocaleDateFormatInfo = exports.formatOffset = exports.formatDate = exports.momentDate = exports.loadZones = exports.shouldLoadZones = exports.zonesLoaded = exports.offsetDate = exports.currentTimezone = exports.isValidDate = exports.getDateSetting = exports.guid = exports.uniqueName = exports.convertStringToHTMLElement = exports.unescapeHTML = exports.setActionProperty = exports.checkTrigger = exports.checkCondition = exports.checkJsonConditional = exports.checkCustomConditional = exports.getComponentActualValue = exports.checkSimpleConditional = exports.checkCalculated = exports.isMongoId = exports.boolValue = exports.getScriptPlugin = exports.getElementRect = exports.getPropertyValue = exports.getRandomComponentId = exports.evaluate = exports.moment = exports.ConditionOperators = exports.jsonLogic = void 0;
34
+ exports.isSelectResourceWithObjectValue = exports.getItemTemplateKeys = exports.interpolateErrors = exports.getComponentSavedTypes = exports.componentValueTypes = exports._ = exports.getFocusableElements = exports.isInsideScopingComponent = exports.isPromise = exports.getDataParentComponent = exports.getComponentPath = exports.getComponentPathWithoutIndicies = exports.getBrowserInfo = exports.getIEBrowserVersion = exports.round = exports.getStringFromComponentPath = exports.isChildOf = exports.getArrayFromComponentPath = exports.isInputComponent = exports.interpolate = exports.Evaluator = exports.fastCloneDeep = exports.sanitize = exports.translateHTMLTemplate = exports.getContextButtons = exports.getContextComponents = exports.observeOverload = void 0;
23
35
  const lodash_1 = __importDefault(require("lodash"));
24
36
  exports._ = lodash_1.default;
25
37
  const fetch_ponyfill_1 = __importDefault(require("fetch-ponyfill"));
26
38
  const json_logic_js_1 = __importDefault(require("json-logic-js"));
27
39
  exports.jsonLogic = json_logic_js_1.default;
28
40
  const moment_timezone_1 = __importDefault(require("moment-timezone/moment-timezone"));
29
- exports.moment = moment_timezone_1.default;
30
41
  const jstimezonedetect_1 = __importDefault(require("jstimezonedetect"));
31
42
  const operators_1 = require("./jsonlogic/operators");
32
43
  const dompurify_1 = __importDefault(require("dompurify"));
@@ -55,6 +66,7 @@ json_logic_js_1.default.add_operation('relativeMinDate', (relativeMinDate) => {
55
66
  json_logic_js_1.default.add_operation('relativeMaxDate', (relativeMaxDate) => {
56
67
  return (0, moment_timezone_1.default)().add(relativeMaxDate, 'days').toISOString();
57
68
  });
69
+ exports.moment = __importStar(require("moment-timezone/moment-timezone"));
58
70
  function setPathToComponentAndPerentSchema(component) {
59
71
  component.path = getComponentPath(component);
60
72
  const dataParent = getDataParentComponent(component);
@@ -160,6 +172,20 @@ function getElementRect(element) {
160
172
  };
161
173
  }
162
174
  exports.getElementRect = getElementRect;
175
+ /**
176
+ * Get non HTMLElement property in the window object
177
+ * @param {String} property
178
+ * @return {any || undefined}
179
+ */
180
+ function getScriptPlugin(property) {
181
+ const obj = window[property];
182
+ if (typeof HTMLElement === 'object' ? obj instanceof HTMLElement : //DOM2
183
+ obj && typeof obj === 'object' && true && obj.nodeType === 1 && typeof obj.nodeName === 'string') {
184
+ return undefined;
185
+ }
186
+ return obj;
187
+ }
188
+ exports.getScriptPlugin = getScriptPlugin;
163
189
  /**
164
190
  * Determines the boolean value of a setting.
165
191
  *
@@ -467,11 +467,11 @@ class CalendarWidget extends InputWidget_1.default {
467
467
  return Flatpickr.formatDate(date, format);
468
468
  };
469
469
  }
470
- destroy() {
471
- super.destroy();
470
+ destroy(all = false) {
472
471
  if (this.calendar) {
473
472
  this.calendar.destroy();
474
473
  }
474
+ super.destroy(all);
475
475
  }
476
476
  }
477
477
  exports.default = CalendarWidget;
@@ -117,10 +117,11 @@ export default class Element {
117
117
  removeEventListener(obj: any, type: any, func?: null): this | undefined;
118
118
  removeEventListeners(): void;
119
119
  removeAllEvents(includeExternal: any): void;
120
+ teardown(): void;
120
121
  /**
121
122
  * Removes all event listeners attached to this component.
122
123
  */
123
- destroy(): void;
124
+ destroy(all?: boolean): void;
124
125
  /**
125
126
  * Append an HTML DOM element to a container.
126
127
  *
@@ -230,20 +230,29 @@ export default class Element {
230
230
  this.eventHandlers = [];
231
231
  }
232
232
  removeAllEvents(includeExternal) {
233
- _.each(this.events._events, (events, type) => {
234
- _.each(events, (listener) => {
235
- if (listener && (this.id === listener.id) && (includeExternal || listener.internal)) {
236
- this.events.off(type, listener);
237
- }
233
+ if (this.events) {
234
+ _.each(this.events._events, (events, type) => {
235
+ _.each(events, (listener) => {
236
+ if (listener && (this.id === listener.id) && (includeExternal || listener.internal)) {
237
+ this.events.off(type, listener);
238
+ }
239
+ });
238
240
  });
239
- });
241
+ }
242
+ }
243
+ teardown() {
244
+ delete this.i18next;
245
+ delete this.events;
240
246
  }
241
247
  /**
242
248
  * Removes all event listeners attached to this component.
243
249
  */
244
- destroy() {
250
+ destroy(all = false) {
245
251
  this.removeEventListeners();
246
252
  this.removeAllEvents();
253
+ if (all) {
254
+ this.teardown();
255
+ }
247
256
  }
248
257
  /**
249
258
  * Append an HTML DOM element to a container.
@@ -387,7 +396,7 @@ export default class Element {
387
396
  * @param {Object} params - The i18n parameters to use for translation.
388
397
  */
389
398
  t(text, ...args) {
390
- return this.i18next.t(text, ...args);
399
+ return this.i18next ? this.i18next.t(text, ...args) : text;
391
400
  }
392
401
  /**
393
402
  * Alias to create a text node.
package/lib/mjs/Form.js CHANGED
@@ -35,6 +35,9 @@ export default class Form extends Element {
35
35
  });
36
36
  this.instance = null;
37
37
  if (args[0] instanceof HTMLElement) {
38
+ if (this.element) {
39
+ delete this.element.component;
40
+ }
38
41
  this.element = args[0];
39
42
  this.options = args[2] || {};
40
43
  this.options.events = this.events;
@@ -126,7 +129,7 @@ export default class Form extends Element {
126
129
  * @return {*}
127
130
  */
128
131
  set form(formParam) {
129
- return this.setForm(formParam);
132
+ this.setForm(formParam);
130
133
  }
131
134
  errorForm(err) {
132
135
  return {
@@ -224,6 +227,9 @@ export default class Form extends Element {
224
227
  }
225
228
  // A redraw has occurred so save off the new element in case of a setDisplay causing a rebuild.
226
229
  return result.then(() => {
230
+ if (this.element) {
231
+ delete this.element.component;
232
+ }
227
233
  this.element = this.instance.element;
228
234
  return this.instance;
229
235
  });
@@ -344,6 +350,9 @@ export default class Form extends Element {
344
350
  if (!this.instance) {
345
351
  return Promise.reject('Form not ready. Use form.ready promise');
346
352
  }
353
+ if (this.element) {
354
+ delete this.element.component;
355
+ }
347
356
  this.element = element;
348
357
  return this.instance.attach(this.element)
349
358
  .then((param) => {
@@ -351,6 +360,11 @@ export default class Form extends Element {
351
360
  return param;
352
361
  });
353
362
  }
363
+ teardown() {
364
+ super.teardown();
365
+ delete this.instance;
366
+ delete this.ready;
367
+ }
354
368
  }
355
369
  // Allow simple embedding.
356
370
  Formio.embedForm = (embed) => Form.embed(embed);
package/lib/mjs/PDF.js CHANGED
@@ -57,8 +57,15 @@ export default class PDF extends Webform {
57
57
  this.postMessage({ name: 'redraw' });
58
58
  return this.builderMode ? Promise.resolve() : super.redraw();
59
59
  }
60
+ destroy(all = false) {
61
+ if (this.iframeElement) {
62
+ delete this.iframeElement.formioComponent;
63
+ this.iframeElement.formioComponent = null;
64
+ }
65
+ super.destroy(all);
66
+ }
60
67
  rebuild() {
61
- if (this.builderMode && this.component.components) {
68
+ if (this.attached && this.builderMode && this.component.components) {
62
69
  this.destroyComponents();
63
70
  this.addComponents();
64
71
  return Promise.resolve();
@@ -251,9 +251,9 @@ export default class PDFBuilder extends WebformBuilder {
251
251
  });
252
252
  return this.webform;
253
253
  }
254
- destroy(deleteFromGlobal) {
255
- super.destroy(deleteFromGlobal);
256
- this.webform.destroy(deleteFromGlobal);
254
+ destroy(all = false) {
255
+ super.destroy(all);
256
+ this.webform.destroy(all);
257
257
  }
258
258
  // d8b 8888888888 888
259
259
  // Y8P 888 888
@@ -382,7 +382,6 @@ declare class Webform extends NestedDataComponent {
382
382
  */
383
383
  init(): Promise<any>;
384
384
  executeFormController(): false | undefined;
385
- destroy(deleteFromGlobal?: boolean): void;
386
385
  build(element: any): Promise<any>;
387
386
  getClassName(): string;
388
387
  render(): any;
@@ -142,7 +142,7 @@ export default class Webform extends NestedDataComponent {
142
142
  formOptions = elementOrOptions;
143
143
  }
144
144
  super(null, getOptions(formOptions));
145
- this.element = element;
145
+ this.setElement(element);
146
146
  // Keep track of all available forms globally.
147
147
  Formio.forms[this.id] = this;
148
148
  // Set the base url.
@@ -331,10 +331,12 @@ export default class Webform extends NestedDataComponent {
331
331
  * @return {*}
332
332
  */
333
333
  addLanguage(code, lang, active = false) {
334
- var translations = _.assign(fastCloneDeep(i18nDefaults.resources.en.translation), lang);
335
- this.i18next.addResourceBundle(code, 'translation', translations, true, true);
336
- if (active) {
337
- this.language = code;
334
+ if (this.i18next) {
335
+ var translations = _.assign(fastCloneDeep(i18nDefaults.resources.en.translation), lang);
336
+ this.i18next.addResourceBundle(code, 'translation', translations, true, true);
337
+ if (active) {
338
+ this.language = code;
339
+ }
338
340
  }
339
341
  }
340
342
  keyboardCatchableElement(element) {
@@ -913,18 +915,21 @@ export default class Webform extends NestedDataComponent {
913
915
  });
914
916
  });
915
917
  }
916
- destroy(deleteFromGlobal = false) {
918
+ teardown() {
919
+ this.emit('formDelete', this.id);
920
+ delete Formio.forms[this.id];
921
+ delete this.executeShortcuts;
922
+ delete this.triggerSaveDraft;
923
+ super.teardown();
924
+ }
925
+ destroy(all = false) {
917
926
  this.off('submitButton');
918
927
  this.off('checkValidity');
919
928
  this.off('requestUrl');
920
929
  this.off('resetForm');
921
930
  this.off('deleteSubmission');
922
931
  this.off('refreshData');
923
- if (deleteFromGlobal) {
924
- this.emit('formDelete', this.id);
925
- delete Formio.forms[this.id];
926
- }
927
- return super.destroy();
932
+ return super.destroy(all);
928
933
  }
929
934
  build(element) {
930
935
  if (element || this.element) {
@@ -958,7 +963,7 @@ export default class Webform extends NestedDataComponent {
958
963
  return this.attach(this.element);
959
964
  }
960
965
  attach(element) {
961
- this.element = element;
966
+ this.setElement(element);
962
967
  this.loadRefs(element, { webform: 'single' });
963
968
  const childPromise = this.attachComponents(this.refs.webform);
964
969
  this.addEventListener(document, 'keydown', this.executeShortcuts);
@@ -118,7 +118,6 @@ export default class WebformBuilder extends Component {
118
118
  isParentSaveChildMethod(parentComp: any): boolean;
119
119
  getParentElement(element: any): any;
120
120
  addBuilderComponentInfo(component: any): any;
121
- destroy(deleteFromGlobal: any): void;
122
121
  addBuilderGroup(name: any, group: any): void;
123
122
  updateBuilderGroup(name: any, group: any): void;
124
123
  generateKey(info: any): any;
@@ -30,7 +30,7 @@ export default class WebformBuilder extends Component {
30
30
  options.skipInit = false;
31
31
  options.display = options.display || 'form';
32
32
  super(null, options);
33
- this.element = element;
33
+ this.setElement(element);
34
34
  this.dragulaLib = dragula;
35
35
  this.builderHeight = 0;
36
36
  this.schemas = {};
@@ -1584,11 +1584,11 @@ export default class WebformBuilder extends Component {
1584
1584
  this.webform.clear();
1585
1585
  }
1586
1586
  }
1587
- destroy(deleteFromGlobal) {
1587
+ destroy(all = false) {
1588
1588
  if (this.webform.initialized) {
1589
- this.webform.destroy(deleteFromGlobal);
1589
+ this.webform.destroy(all);
1590
1590
  }
1591
- super.destroy(deleteFromGlobal);
1591
+ super.destroy(all);
1592
1592
  }
1593
1593
  addBuilderGroup(name, group) {
1594
1594
  if (!this.groups[name]) {
package/lib/mjs/Wizard.js CHANGED
@@ -240,7 +240,7 @@ export default class Wizard extends Webform {
240
240
  }
241
241
  }
242
242
  attach(element) {
243
- this.element = element;
243
+ this.setElement(element);
244
244
  this.loadRefs(element, {
245
245
  [this.wizardKey]: 'single',
246
246
  [`${this.wizardKey}-header`]: 'single',
@@ -14,5 +14,6 @@ export default class FormioAddon extends Element {
14
14
  settings: any;
15
15
  attach(element: any): Promise<void>;
16
16
  _element: any;
17
+ destroy(): void;
17
18
  }
18
19
  import Element from '../Element';
@@ -335,7 +335,6 @@ declare class Component extends Element {
335
335
  createComponentModal(element: any, modalShouldBeOpened: any, currentValue: any): ComponentModal;
336
336
  attach(element: any): Promise<void>;
337
337
  componentModal: any;
338
- element: any;
339
338
  restoreFocus(): void;
340
339
  addShortcut(element: any, shortcut: any): void;
341
340
  removeShortcut(element: any, shortcut: any): void;
@@ -364,6 +363,8 @@ declare class Component extends Element {
364
363
  */
365
364
  inContext(component: any): boolean;
366
365
  get viewOnly(): any;
366
+ setElement(element: any): void;
367
+ element: any;
367
368
  createViewOnlyElement(): any;
368
369
  get defaultViewOnlyValue(): string;
369
370
  /**