survey-core 1.9.105 → 1.9.106

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 (163) hide show
  1. package/defaultV2.css +317 -77
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +317 -77
  4. package/defaultV2.fontless.css.map +1 -1
  5. package/defaultV2.fontless.min.css +2 -2
  6. package/defaultV2.min.css +2 -2
  7. package/modern.css +8 -1
  8. package/modern.css.map +1 -1
  9. package/modern.fontless.css +8 -1
  10. package/modern.fontless.css.map +1 -1
  11. package/modern.fontless.min.css +2 -2
  12. package/modern.min.css +2 -2
  13. package/package.json +1 -1
  14. package/plugins/bootstrap-integration.js +1 -1
  15. package/plugins/bootstrap-integration.min.js +1 -1
  16. package/plugins/bootstrap-material-integration.js +1 -1
  17. package/plugins/bootstrap-material-integration.min.js +1 -1
  18. package/survey.core.js +673 -278
  19. package/survey.core.js.map +1 -1
  20. package/survey.core.min.js +3 -3
  21. package/survey.css +1 -1
  22. package/survey.css.map +1 -1
  23. package/survey.i18n.js +3 -3
  24. package/survey.i18n.js.map +1 -1
  25. package/survey.i18n.min.js +2 -2
  26. package/survey.min.css +1 -1
  27. package/themes/borderless-dark-panelless.js +1 -1
  28. package/themes/borderless-dark-panelless.min.js +1 -1
  29. package/themes/borderless-dark.js +1 -1
  30. package/themes/borderless-dark.min.js +1 -1
  31. package/themes/borderless-light-panelless..js +1 -1
  32. package/themes/borderless-light-panelless..min.js +1 -1
  33. package/themes/borderless-light.js +1 -1
  34. package/themes/borderless-light.min.js +1 -1
  35. package/themes/contrast-dark-panelless.js +1 -1
  36. package/themes/contrast-dark-panelless.min.js +1 -1
  37. package/themes/contrast-dark.js +1 -1
  38. package/themes/contrast-dark.min.js +1 -1
  39. package/themes/contrast-light-panelless.js +1 -1
  40. package/themes/contrast-light-panelless.min.js +1 -1
  41. package/themes/contrast-light.js +1 -1
  42. package/themes/contrast-light.min.js +1 -1
  43. package/themes/default-dark-panelless.js +1 -1
  44. package/themes/default-dark-panelless.min.js +1 -1
  45. package/themes/default-dark.js +1 -1
  46. package/themes/default-dark.min.js +1 -1
  47. package/themes/default-light-panelless.js +1 -1
  48. package/themes/default-light-panelless.min.js +1 -1
  49. package/themes/default-light.js +1 -1
  50. package/themes/default-light.min.js +1 -1
  51. package/themes/doubleborder-dark-panelless.js +1 -1
  52. package/themes/doubleborder-dark-panelless.min.js +1 -1
  53. package/themes/doubleborder-dark.js +1 -1
  54. package/themes/doubleborder-dark.min.js +1 -1
  55. package/themes/doubleborder-light-panelles.js +1 -1
  56. package/themes/doubleborder-light-panelles.min.js +1 -1
  57. package/themes/doubleborder-light.js +1 -1
  58. package/themes/doubleborder-light.min.js +1 -1
  59. package/themes/flat-dark-panelless.js +1 -1
  60. package/themes/flat-dark-panelless.min.js +1 -1
  61. package/themes/flat-dark.js +1 -1
  62. package/themes/flat-dark.min.js +1 -1
  63. package/themes/flat-light-panelless.js +1 -1
  64. package/themes/flat-light-panelless.min.js +1 -1
  65. package/themes/flat-light.js +1 -1
  66. package/themes/flat-light.min.js +1 -1
  67. package/themes/index.js +1 -1
  68. package/themes/index.min.js +1 -1
  69. package/themes/layered-dark-panelless.js +1 -1
  70. package/themes/layered-dark-panelless.min.js +1 -1
  71. package/themes/layered-dark.js +1 -1
  72. package/themes/layered-dark.min.js +1 -1
  73. package/themes/layered-light-panelless.js +1 -1
  74. package/themes/layered-light-panelless.min.js +1 -1
  75. package/themes/layered-light.js +1 -1
  76. package/themes/layered-light.min.js +1 -1
  77. package/themes/plain-dark-panelless.js +1 -1
  78. package/themes/plain-dark-panelless.min.js +1 -1
  79. package/themes/plain-dark.js +1 -1
  80. package/themes/plain-dark.min.js +1 -1
  81. package/themes/plain-light-panelless.js +1 -1
  82. package/themes/plain-light-panelless.min.js +1 -1
  83. package/themes/plain-light.js +1 -1
  84. package/themes/plain-light.min.js +1 -1
  85. package/themes/sharp-dark-panelless.js +1 -1
  86. package/themes/sharp-dark-panelless.min.js +1 -1
  87. package/themes/sharp-dark.js +1 -1
  88. package/themes/sharp-dark.min.js +1 -1
  89. package/themes/sharp-light-panelless.js +1 -1
  90. package/themes/sharp-light-panelless.min.js +1 -1
  91. package/themes/sharp-light.js +1 -1
  92. package/themes/sharp-light.min.js +1 -1
  93. package/themes/solid-dark-panelless.js +1 -1
  94. package/themes/solid-dark-panelless.min.js +1 -1
  95. package/themes/solid-dark.js +1 -1
  96. package/themes/solid-dark.min.js +1 -1
  97. package/themes/solid-light-panelless.js +1 -1
  98. package/themes/solid-light-panelless.min.js +1 -1
  99. package/themes/solid-light.js +1 -1
  100. package/themes/solid-light.min.js +1 -1
  101. package/themes/three-dimensional-dark-panelless.js +1 -1
  102. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  103. package/themes/three-dimensional-dark.js +1 -1
  104. package/themes/three-dimensional-dark.min.js +1 -1
  105. package/themes/three-dimensional-light-panelless.js +1 -1
  106. package/themes/three-dimensional-light-panelless.min.js +1 -1
  107. package/themes/three-dimensional-light.js +1 -1
  108. package/themes/three-dimensional-light.min.js +1 -1
  109. package/ts3.4/typings/actions/action.d.ts +1 -0
  110. package/ts3.4/typings/actions/adaptive-container.d.ts +1 -0
  111. package/ts3.4/typings/actions/container.d.ts +1 -0
  112. package/ts3.4/typings/base-interfaces.d.ts +6 -1
  113. package/ts3.4/typings/base.d.ts +3 -0
  114. package/ts3.4/typings/defaultCss/defaultV2Css.d.ts +6 -0
  115. package/ts3.4/typings/dragdrop/dom-adapter.d.ts +1 -0
  116. package/ts3.4/typings/dropdownListModel.d.ts +1 -0
  117. package/ts3.4/typings/dropdownMultiSelectListModel.d.ts +1 -0
  118. package/ts3.4/typings/entries/chunks/model.d.ts +1 -1
  119. package/ts3.4/typings/entries/core-wo-model.d.ts +0 -1
  120. package/ts3.4/typings/localizablestring.d.ts +6 -1
  121. package/ts3.4/typings/popup-dropdown-view-model.d.ts +4 -0
  122. package/ts3.4/typings/popup-survey.d.ts +0 -1
  123. package/ts3.4/typings/popup-view-model.d.ts +3 -0
  124. package/ts3.4/typings/popup.d.ts +3 -1
  125. package/ts3.4/typings/question.d.ts +3 -2
  126. package/ts3.4/typings/question_baseselect.d.ts +1 -2
  127. package/ts3.4/typings/question_checkbox.d.ts +2 -0
  128. package/ts3.4/typings/question_matrixdropdownbase.d.ts +4 -3
  129. package/ts3.4/typings/question_matrixdropdowncolumn.d.ts +4 -2
  130. package/ts3.4/typings/question_multipletext.d.ts +25 -3
  131. package/ts3.4/typings/question_ranking.d.ts +1 -0
  132. package/ts3.4/typings/question_tagbox.d.ts +3 -1
  133. package/ts3.4/typings/survey-element.d.ts +1 -4
  134. package/ts3.4/typings/survey-events-api.d.ts +16 -2
  135. package/ts3.4/typings/survey.d.ts +110 -55
  136. package/typings/actions/action.d.ts +1 -0
  137. package/typings/actions/adaptive-container.d.ts +1 -0
  138. package/typings/actions/container.d.ts +1 -0
  139. package/typings/base-interfaces.d.ts +6 -1
  140. package/typings/base.d.ts +3 -0
  141. package/typings/defaultCss/defaultV2Css.d.ts +6 -0
  142. package/typings/dragdrop/dom-adapter.d.ts +1 -0
  143. package/typings/dropdownListModel.d.ts +1 -0
  144. package/typings/dropdownMultiSelectListModel.d.ts +1 -0
  145. package/typings/entries/chunks/model.d.ts +1 -1
  146. package/typings/entries/core-wo-model.d.ts +0 -1
  147. package/typings/localizablestring.d.ts +8 -2
  148. package/typings/popup-dropdown-view-model.d.ts +4 -0
  149. package/typings/popup-survey.d.ts +0 -1
  150. package/typings/popup-view-model.d.ts +3 -0
  151. package/typings/popup.d.ts +3 -1
  152. package/typings/question.d.ts +3 -2
  153. package/typings/question_baseselect.d.ts +1 -2
  154. package/typings/question_checkbox.d.ts +2 -0
  155. package/typings/question_matrixdropdownbase.d.ts +4 -3
  156. package/typings/question_matrixdropdowncolumn.d.ts +5 -2
  157. package/typings/question_multipletext.d.ts +25 -3
  158. package/typings/question_ranking.d.ts +1 -0
  159. package/typings/question_tagbox.d.ts +3 -1
  160. package/typings/survey-element.d.ts +1 -4
  161. package/typings/survey-events-api.d.ts +16 -2
  162. package/typings/survey.d.ts +110 -55
  163. package/typings/utils/tooltip.d.ts +7 -7
package/survey.core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.9.105
2
+ * surveyjs - Survey JavaScript library v1.9.106
3
3
  * Copyright (c) 2015-2023 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
@@ -734,11 +734,13 @@ function createDropdownActionModel(actionOptions, dropdownOptions, locOwner) {
734
734
  }
735
735
  function createDropdownActionModelAdvanced(actionOptions, listOptions, popupOptions, locOwner) {
736
736
  var listModel = new _list__WEBPACK_IMPORTED_MODULE_3__["ListModel"](listOptions.items, function (item) {
737
- listOptions.onSelectionChanged(item),
738
- innerPopupModel.toggleVisibility();
737
+ listOptions.onSelectionChanged(item);
738
+ innerPopupModel.toggleVisibility();
739
739
  }, listOptions.allowSelection, listOptions.selectedItem, listOptions.onFilterStringChangedCallback);
740
740
  listModel.locOwner = locOwner;
741
- var innerPopupModel = new _popup__WEBPACK_IMPORTED_MODULE_4__["PopupModel"]("sv-list", { model: listModel }, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.verticalPosition, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.horizontalPosition, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.showPointer, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.isModal, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.onCancel, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.onApply, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.onHide, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.onShow, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.cssClass, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.title);
741
+ var innerPopupModel = new _popup__WEBPACK_IMPORTED_MODULE_4__["PopupModel"]("sv-list", { model: listModel }, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.verticalPosition, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.horizontalPosition, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.showPointer, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.isModal, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.onCancel, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.onApply, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.onHide, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.onShow, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.cssClass, popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.title, function () {
742
+ listModel.dispose();
743
+ });
742
744
  innerPopupModel.displayMode = popupOptions === null || popupOptions === void 0 ? void 0 : popupOptions.displayMode;
743
745
  var newActionOptions = Object.assign({}, actionOptions, {
744
746
  component: "sv-action-bar-item-dropdown",
@@ -1062,6 +1064,17 @@ var Action = /** @class */ (function (_super) {
1062
1064
  Action.prototype.getComponent = function () {
1063
1065
  return this._component;
1064
1066
  };
1067
+ Action.prototype.dispose = function () {
1068
+ this.action = undefined;
1069
+ _super.prototype.dispose.call(this);
1070
+ if (this.popupModel) {
1071
+ this.popupModel.dispose();
1072
+ }
1073
+ if (!!this.locTitleValue) {
1074
+ this.locTitleValue.onStringChanged.remove(this.locTitleChanged);
1075
+ this.locTitleChanged = undefined;
1076
+ }
1077
+ };
1065
1078
  __decorate([
1066
1079
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_2__["property"])()
1067
1080
  ], Action.prototype, "id", void 0);
@@ -1195,21 +1208,29 @@ var AdaptiveActionContainer = /** @class */ (function (_super) {
1195
1208
  return _this;
1196
1209
  }
1197
1210
  AdaptiveActionContainer.prototype.hideItemsGreaterN = function (visibleItemsCount) {
1198
- var actionsToHide = this.visibleActions.filter(function (action) { return !action.disableHide; });
1211
+ var actionsToHide = this.getActionsToHide();
1199
1212
  visibleItemsCount = Math.max(visibleItemsCount, this.minVisibleItemsCount - (this.visibleActions.length - actionsToHide.length));
1200
1213
  var hiddenItems = [];
1201
1214
  actionsToHide.forEach(function (item) {
1202
1215
  if (visibleItemsCount <= 0) {
1203
- item.mode = "popup";
1204
- hiddenItems.push(item.innerItem);
1216
+ if (item.removePriority) {
1217
+ item.mode = "removed";
1218
+ }
1219
+ else {
1220
+ item.mode = "popup";
1221
+ hiddenItems.push(item.innerItem);
1222
+ }
1205
1223
  }
1206
1224
  visibleItemsCount--;
1207
1225
  });
1208
1226
  this.hiddenItemsListModel.setItems(hiddenItems);
1209
1227
  };
1228
+ AdaptiveActionContainer.prototype.getActionsToHide = function () {
1229
+ return this.visibleActions.filter(function (action) { return !action.disableHide; }).sort(function (a, b) { return a.removePriority || 0 - b.removePriority || 0; });
1230
+ };
1210
1231
  AdaptiveActionContainer.prototype.getVisibleItemsCount = function (availableSize) {
1211
1232
  this.visibleActions.filter(function (action) { return action.disableHide; }).forEach(function (action) { return availableSize -= action.minDimension; });
1212
- var itemsSizes = this.visibleActions.filter(function (action) { return !action.disableHide; }).map(function (item) { return item.minDimension; });
1233
+ var itemsSizes = this.getActionsToHide().map(function (item) { return item.minDimension; });
1213
1234
  var currSize = 0;
1214
1235
  for (var i = 0; i < itemsSizes.length; i++) {
1215
1236
  currSize += itemsSizes[i];
@@ -1289,7 +1310,7 @@ var AdaptiveActionContainer = /** @class */ (function (_super) {
1289
1310
  else if (dimension < minSize) {
1290
1311
  this.setActionsMode("small");
1291
1312
  this.hideItemsGreaterN(this.getVisibleItemsCount(dimension - dotsItemSize));
1292
- this.dotsItem.visible = true;
1313
+ this.dotsItem.visible = !!this.hiddenItemsListModel.actions.length;
1293
1314
  }
1294
1315
  else {
1295
1316
  this.updateItemMode(dimension, maxSize);
@@ -1305,10 +1326,16 @@ var AdaptiveActionContainer = /** @class */ (function (_super) {
1305
1326
  }
1306
1327
  };
1307
1328
  AdaptiveActionContainer.prototype.setActionsMode = function (mode) {
1308
- this.actions.forEach(function (action) { return (action.mode = mode); });
1329
+ this.actions.forEach(function (action) {
1330
+ if (mode == "small" && action.disableShrink)
1331
+ return;
1332
+ action.mode = mode;
1333
+ });
1309
1334
  };
1310
1335
  AdaptiveActionContainer.prototype.dispose = function () {
1311
1336
  _super.prototype.dispose.call(this);
1337
+ this.dotsItem.data.dispose();
1338
+ this.dotsItem.dispose();
1312
1339
  this.resetResponsivityManager();
1313
1340
  };
1314
1341
  AdaptiveActionContainer.ContainerID = 1;
@@ -1366,6 +1393,7 @@ var defaultActionBarCss = {
1366
1393
  defaultSizeMode: "sv-action-bar--default-size-mode",
1367
1394
  smallSizeMode: "sv-action-bar--small-size-mode",
1368
1395
  item: "sv-action-bar-item",
1396
+ itemAsIcon: "sv-action-bar-item--icon",
1369
1397
  itemActive: "sv-action-bar-item--active",
1370
1398
  itemPressed: "sv-action-bar-item--pressed",
1371
1399
  itemIcon: "sv-action-bar-item__icon",
@@ -1725,6 +1753,7 @@ var Dependencies = /** @class */ (function () {
1725
1753
  this.dependencies.forEach(function (dependency) {
1726
1754
  dependency.obj.unregisterPropertyChangedHandlers([dependency.prop], dependency.id);
1727
1755
  });
1756
+ // this.currentDependency = undefined;
1728
1757
  };
1729
1758
  Dependencies.DependenciesCount = 0;
1730
1759
  return Dependencies;
@@ -1768,6 +1797,7 @@ var ComputedUpdater = /** @class */ (function () {
1768
1797
  */
1769
1798
  var Base = /** @class */ (function () {
1770
1799
  function Base() {
1800
+ this.dependencies = {};
1771
1801
  this.propertyHash = Base.createPropertiesHash();
1772
1802
  this.eventList = [];
1773
1803
  this.isLoadingFromJsonValue = false;
@@ -1876,6 +1906,7 @@ var Base = /** @class */ (function () {
1876
1906
  }
1877
1907
  this.onPropertyValueChangedCallback = undefined;
1878
1908
  this.isDisposedValue = true;
1909
+ Object.values(this.dependencies).forEach(function (dependencies) { return dependencies.dispose(); });
1879
1910
  };
1880
1911
  Object.defineProperty(Base.prototype, "isDisposed", {
1881
1912
  get: function () {
@@ -2079,6 +2110,9 @@ var Base = /** @class */ (function () {
2079
2110
  var dValue = prop.defaultValue;
2080
2111
  if (!this.isPropertyEmpty(dValue) && !Array.isArray(dValue))
2081
2112
  return dValue;
2113
+ var locStr = this.localizableStrings ? this.localizableStrings[name] : undefined;
2114
+ if (locStr && locStr.localizationName)
2115
+ return this.getLocalizationString(locStr.localizationName);
2082
2116
  if (prop.type == "boolean" || prop.type == "switch")
2083
2117
  return false;
2084
2118
  if (prop.isCustom && !!prop.onGetValue)
@@ -2089,7 +2123,13 @@ var Base = /** @class */ (function () {
2089
2123
  return this.getDefaultPropertyValue(name) !== undefined;
2090
2124
  };
2091
2125
  Base.prototype.resetPropertyValue = function (name) {
2092
- this.setPropertyValue(name, undefined);
2126
+ var locStr = this.localizableStrings ? this.localizableStrings[name] : undefined;
2127
+ if (locStr) {
2128
+ locStr.clearLocale();
2129
+ }
2130
+ else {
2131
+ this.setPropertyValue(name, undefined);
2132
+ }
2093
2133
  };
2094
2134
  Base.prototype.getPropertyValueWithoutDefault = function (name) {
2095
2135
  return this.getPropertyValueCore(this.propertyHash, name);
@@ -5158,6 +5198,7 @@ var defaultV2Css = {
5158
5198
  rootMobile: "sd-root-modern--mobile",
5159
5199
  rootReadOnly: "sd-root--readonly",
5160
5200
  rootCompact: "sd-root--compact",
5201
+ rootFitToContainer: "sd-root-modern--full-container",
5161
5202
  rootBackgroundImage: "sd-root_background-image",
5162
5203
  container: "sd-container-modern",
5163
5204
  header: "sd-title sd-container-modern__title",
@@ -5173,6 +5214,7 @@ var defaultV2Css = {
5173
5214
  clockTimerMinorText: "sd-timer__text--minor",
5174
5215
  clockTimerMajorText: "sd-timer__text--major",
5175
5216
  bodyEmpty: "sd-body sd-body--empty",
5217
+ bodyLoading: "sd-body--loading",
5176
5218
  footer: "sd-footer sd-body__navigation sd-clearfix",
5177
5219
  title: "sd-title",
5178
5220
  description: "sd-description",
@@ -5183,6 +5225,7 @@ var defaultV2Css = {
5183
5225
  navigationButton: "",
5184
5226
  bodyNavigationButton: "sd-btn",
5185
5227
  completedPage: "sd-completedpage",
5228
+ completedBeforePage: "sd-completed-before-page",
5186
5229
  timerRoot: "sd-body__timer",
5187
5230
  navigation: {
5188
5231
  complete: "sd-btn--action sd-navigation__complete-btn",
@@ -5458,7 +5501,10 @@ var defaultV2Css = {
5458
5501
  itemTitle: "sd-multipletext__item-title",
5459
5502
  content: "sd-multipletext__content sd-question__content",
5460
5503
  row: "sd-multipletext__row",
5461
- cell: "sd-multipletext__cell"
5504
+ cell: "sd-multipletext__cell",
5505
+ cellError: "sd-multipletext__cell--error",
5506
+ cellErrorTop: "sd-multipletext__cell--error-top",
5507
+ cellErrorBottom: "sd-multipletext__cell--error-bottom"
5462
5508
  },
5463
5509
  dropdown: {
5464
5510
  root: "sd-selectbase",
@@ -6776,9 +6822,13 @@ var DragDropDOMAdapter = /** @class */ (function () {
6776
6822
  _this.draggedElementShortcut = null;
6777
6823
  _this.scrollIntervalId = null;
6778
6824
  if (_utils_devices__WEBPACK_IMPORTED_MODULE_1__["IsTouch"]) {
6825
+ _this.savedTargetNode.style.cssText = null;
6779
6826
  _this.savedTargetNode && _this.savedTargetNode.parentElement.removeChild(_this.savedTargetNode);
6827
+ _this.savedTargetNodeParent.appendChild(_this.savedTargetNode);
6780
6828
  DragDropDOMAdapter.PreventScrolling = false;
6781
6829
  }
6830
+ _this.savedTargetNode = null;
6831
+ _this.savedTargetNodeParent = null;
6782
6832
  document.body.style.setProperty("touch-action", "");
6783
6833
  document.body.style.setProperty("user-select", "");
6784
6834
  document.body.style.setProperty("-webkit-user-select", "");
@@ -6826,6 +6876,7 @@ var DragDropDOMAdapter = /** @class */ (function () {
6826
6876
  _this.savedTargetNode = event.target;
6827
6877
  _this.savedTargetNode.style.cssText =
6828
6878
  "\n position: absolute;\n height: 1px!important;\n width: 1px!important;\n overflow: hidden;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n ";
6879
+ _this.savedTargetNodeParent = _this.savedTargetNode.parentElement;
6829
6880
  _this.rootElement.appendChild(_this.savedTargetNode);
6830
6881
  }
6831
6882
  _this.stopLongTap();
@@ -7554,9 +7605,10 @@ var DropdownListModel = /** @class */ (function (_super) {
7554
7605
  _this.filterString = newValue;
7555
7606
  }
7556
7607
  };
7557
- question.onPropertyChanged.add(function (sender, options) {
7608
+ _this.qustionPropertyChangedHandler = function (sender, options) {
7558
7609
  _this.onPropertyChangedHandler(sender, options);
7559
- });
7610
+ };
7611
+ question.onPropertyChanged.add(_this.qustionPropertyChangedHandler);
7560
7612
  _this.showInputFieldComponent = _this.question.showInputFieldComponent;
7561
7613
  _this.listModel = _this.createListModel();
7562
7614
  _this.updateAfterListModelCreated(_this.listModel);
@@ -8081,6 +8133,8 @@ var DropdownListModel = /** @class */ (function (_super) {
8081
8133
  };
8082
8134
  DropdownListModel.prototype.dispose = function () {
8083
8135
  _super.prototype.dispose.call(this);
8136
+ this.question && this.question.onPropertyChanged.remove(this.qustionPropertyChangedHandler);
8137
+ this.qustionPropertyChangedHandler = undefined;
8084
8138
  if (!!this.listModel) {
8085
8139
  this.listModel.dispose();
8086
8140
  }
@@ -8192,6 +8246,10 @@ var DropdownMultiSelectListModel = /** @class */ (function (_super) {
8192
8246
  _this.closeOnSelect = question.closeOnSelect;
8193
8247
  return _this;
8194
8248
  }
8249
+ DropdownMultiSelectListModel.prototype.locStrsChanged = function () {
8250
+ _super.prototype.locStrsChanged.call(this);
8251
+ this.syncFilterStringPlaceholder();
8252
+ };
8195
8253
  DropdownMultiSelectListModel.prototype.updateListState = function () {
8196
8254
  this.listModel.updateState();
8197
8255
  this.syncFilterStringPlaceholder();
@@ -8570,7 +8628,7 @@ var ElementHelper = /** @class */ (function () {
8570
8628
  /*!*************************************!*\
8571
8629
  !*** ./src/entries/chunks/model.ts ***!
8572
8630
  \*************************************/
8573
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank */
8631
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank */
8574
8632
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
8575
8633
 
8576
8634
  "use strict";
@@ -8760,6 +8818,14 @@ __webpack_require__.r(__webpack_exports__);
8760
8818
  /* harmony import */ var _question_multipletext__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../../question_multipletext */ "./src/question_multipletext.ts");
8761
8819
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextItemModel", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MultipleTextItemModel"]; });
8762
8820
 
8821
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextCell", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MultipleTextCell"]; });
8822
+
8823
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextErrorCell", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MultipleTextErrorCell"]; });
8824
+
8825
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextErrorRow", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MutlipleTextErrorRow"]; });
8826
+
8827
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextRow", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MutlipleTextRow"]; });
8828
+
8763
8829
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["QuestionMultipleTextModel"]; });
8764
8830
 
8765
8831
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MultipleTextEditorModel"]; });
@@ -9033,8 +9099,8 @@ __webpack_require__.r(__webpack_exports__);
9033
9099
  //import "../../modern.scss";
9034
9100
  var Version;
9035
9101
  var ReleaseDate;
9036
- Version = "" + "1.9.105";
9037
- ReleaseDate = "" + "2023-08-30";
9102
+ Version = "" + "1.9.106";
9103
+ ReleaseDate = "" + "2023-09-06";
9038
9104
  function checkLibraryVersion(ver, libraryName) {
9039
9105
  if (Version != ver) {
9040
9106
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -9182,7 +9248,7 @@ function slk(k, lh, rd) {
9182
9248
  /*!**************************************!*\
9183
9249
  !*** ./src/entries/core-wo-model.ts ***!
9184
9250
  \**************************************/
9185
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper */
9251
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper */
9186
9252
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9187
9253
 
9188
9254
  "use strict";
@@ -9352,6 +9418,14 @@ __webpack_require__.r(__webpack_exports__);
9352
9418
 
9353
9419
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextItemModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextItemModel"]; });
9354
9420
 
9421
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextCell", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextCell"]; });
9422
+
9423
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextErrorCell", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextErrorCell"]; });
9424
+
9425
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextErrorRow", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MutlipleTextErrorRow"]; });
9426
+
9427
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextRow", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MutlipleTextRow"]; });
9428
+
9355
9429
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["QuestionMultipleTextModel"]; });
9356
9430
 
9357
9431
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextEditorModel"]; });
@@ -9607,11 +9681,8 @@ __webpack_require__.r(__webpack_exports__);
9607
9681
 
9608
9682
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ActionContainer", function() { return _actions_container__WEBPACK_IMPORTED_MODULE_9__["ActionContainer"]; });
9609
9683
 
9610
- /* harmony import */ var _utils_tooltip__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/tooltip */ "./src/utils/tooltip.ts");
9611
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TooltipManager", function() { return _utils_tooltip__WEBPACK_IMPORTED_MODULE_10__["TooltipManager"]; });
9612
-
9613
- /* harmony import */ var _utils_dragOrClickHelper__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/dragOrClickHelper */ "./src/utils/dragOrClickHelper.ts");
9614
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragOrClickHelper", function() { return _utils_dragOrClickHelper__WEBPACK_IMPORTED_MODULE_11__["DragOrClickHelper"]; });
9684
+ /* harmony import */ var _utils_dragOrClickHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/dragOrClickHelper */ "./src/utils/dragOrClickHelper.ts");
9685
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragOrClickHelper", function() { return _utils_dragOrClickHelper__WEBPACK_IMPORTED_MODULE_10__["DragOrClickHelper"]; });
9615
9686
 
9616
9687
  // model
9617
9688
 
@@ -9630,14 +9701,13 @@ __webpack_require__.r(__webpack_exports__);
9630
9701
 
9631
9702
 
9632
9703
 
9633
-
9634
9704
  /***/ }),
9635
9705
 
9636
9706
  /***/ "./src/entries/core.ts":
9637
9707
  /*!*****************************!*\
9638
9708
  !*** ./src/entries/core.ts ***!
9639
9709
  \*****************************/
9640
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper, Model */
9710
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper, Model */
9641
9711
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9642
9712
 
9643
9713
  "use strict";
@@ -9807,6 +9877,14 @@ __webpack_require__.r(__webpack_exports__);
9807
9877
 
9808
9878
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextItemModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextItemModel"]; });
9809
9879
 
9880
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextCell", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextCell"]; });
9881
+
9882
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextErrorCell", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextErrorCell"]; });
9883
+
9884
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextErrorRow", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MutlipleTextErrorRow"]; });
9885
+
9886
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextRow", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MutlipleTextRow"]; });
9887
+
9810
9888
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["QuestionMultipleTextModel"]; });
9811
9889
 
9812
9890
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextEditorModel"]; });
@@ -10053,8 +10131,6 @@ __webpack_require__.r(__webpack_exports__);
10053
10131
 
10054
10132
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ActionContainer", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["ActionContainer"]; });
10055
10133
 
10056
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TooltipManager", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["TooltipManager"]; });
10057
-
10058
10134
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragOrClickHelper", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["DragOrClickHelper"]; });
10059
10135
 
10060
10136
  /* harmony import */ var _survey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../survey */ "./src/survey.ts");
@@ -16541,6 +16617,8 @@ function getLocStringValue(target, options, key) {
16541
16617
  return "";
16542
16618
  }
16543
16619
  function property(options) {
16620
+ if (options === void 0) { options = {}; }
16621
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
16544
16622
  return function (target, key) {
16545
16623
  var processComputedUpdater = function (obj, val) {
16546
16624
  if (!!val && typeof val === "object" && val.type === _base__WEBPACK_IMPORTED_MODULE_1__["ComputedUpdater"].ComputedUpdaterType) {
@@ -16548,6 +16626,10 @@ function property(options) {
16548
16626
  var result = val.updater();
16549
16627
  var dependencies = _base__WEBPACK_IMPORTED_MODULE_1__["Base"].finishCollectDependencies();
16550
16628
  val.setDependencies(dependencies);
16629
+ if (obj.dependencies[key]) {
16630
+ obj.dependencies[key].dispose();
16631
+ }
16632
+ obj.dependencies[key] = val;
16551
16633
  return result;
16552
16634
  }
16553
16635
  return val;
@@ -16749,9 +16831,10 @@ var JsonObjectProperty = /** @class */ (function () {
16749
16831
  if (!_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(this.defaultValue)) {
16750
16832
  return _helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isTwoValueEquals(value, this.defaultValue, false, true, false);
16751
16833
  }
16834
+ if (this.isLocalizable)
16835
+ return value === null || value === undefined;
16752
16836
  return ((value === false && (this.type == "boolean" || this.type == "switch")) ||
16753
- value === "" ||
16754
- _helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(value));
16837
+ value === "" || _helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(value));
16755
16838
  };
16756
16839
  JsonObjectProperty.prototype.getValue = function (obj) {
16757
16840
  if (this.onGetValue)
@@ -18133,7 +18216,7 @@ var JsonObject = /** @class */ (function () {
18133
18216
  }
18134
18217
  };
18135
18218
  JsonObject.prototype.valueToObj = function (value, obj, property) {
18136
- if (value == null)
18219
+ if (value === null || value === undefined)
18137
18220
  return;
18138
18221
  this.removePos(property, value);
18139
18222
  if (property != null && property.hasToUseSetValue) {
@@ -18658,6 +18741,7 @@ var ListModel = /** @class */ (function (_super) {
18658
18741
  if (!!this.loadingIndicatorValue) {
18659
18742
  this.loadingIndicatorValue.dispose();
18660
18743
  }
18744
+ this.listContainerHtmlElement = undefined;
18661
18745
  };
18662
18746
  ListModel.INDENT = 16;
18663
18747
  ListModel.MINELEMENTCOUNT = 10;
@@ -18754,6 +18838,19 @@ var LocalizableString = /** @class */ (function () {
18754
18838
  enumerable: false,
18755
18839
  configurable: true
18756
18840
  });
18841
+ Object.defineProperty(LocalizableString.prototype, "localizationName", {
18842
+ get: function () {
18843
+ return this._localizationName;
18844
+ },
18845
+ set: function (val) {
18846
+ if (this._localizationName != val) {
18847
+ this._localizationName = val;
18848
+ this.strChanged();
18849
+ }
18850
+ },
18851
+ enumerable: false,
18852
+ configurable: true
18853
+ });
18757
18854
  LocalizableString.prototype.getIsMultiple = function () { return false; };
18758
18855
  Object.defineProperty(LocalizableString.prototype, "locale", {
18759
18856
  get: function () {
@@ -18822,19 +18919,19 @@ var LocalizableString = /** @class */ (function () {
18822
18919
  if (!loc)
18823
18920
  loc = this.defaultLoc;
18824
18921
  var res = this.getValue(loc);
18825
- if (!res && loc === this.defaultLoc) {
18922
+ if (this.isValueEmpty(res) && loc === this.defaultLoc) {
18826
18923
  res = this.getValue(_surveyStrings__WEBPACK_IMPORTED_MODULE_1__["surveyLocalization"].defaultLocale);
18827
18924
  }
18828
- if (!res) {
18925
+ if (this.isValueEmpty(res)) {
18829
18926
  var dialect = this.getRootDialect(loc);
18830
18927
  if (!!dialect) {
18831
18928
  res = this.getValue(dialect);
18832
18929
  }
18833
18930
  }
18834
- if (!res && loc !== this.defaultLoc) {
18931
+ if (this.isValueEmpty(res) && loc !== this.defaultLoc) {
18835
18932
  res = this.getValue(this.defaultLoc);
18836
18933
  }
18837
- if (!res && !!this.getLocalizationName()) {
18934
+ if (this.isValueEmpty(res) && !!this.getLocalizationName()) {
18838
18935
  res = this.getLocalizationStr();
18839
18936
  if (!!this.onGetLocalizationTextCallback) {
18840
18937
  res = this.onGetLocalizationTextCallback(res);
@@ -18898,35 +18995,44 @@ var LocalizableString = /** @class */ (function () {
18898
18995
  configurable: true
18899
18996
  });
18900
18997
  LocalizableString.prototype.getLocaleText = function (loc) {
18998
+ var res = this.getLocaleTextCore(loc);
18999
+ return res ? res : "";
19000
+ };
19001
+ LocalizableString.prototype.getLocaleTextCore = function (loc) {
18901
19002
  if (!loc)
18902
19003
  loc = this.defaultLoc;
18903
- var res = this.getValue(loc);
18904
- return res ? res : "";
19004
+ return this.getValue(loc);
18905
19005
  };
18906
- LocalizableString.prototype.getLocaleTextWithDefault = function (loc) {
18907
- var res = this.getLocaleText(loc);
19006
+ LocalizableString.prototype.isLocaleTextEqualsWithDefault = function (loc, val) {
19007
+ var res = this.getLocaleTextCore(loc);
18908
19008
  if (!res && this.onGetDefaultTextCallback) {
18909
- return this.onGetDefaultTextCallback();
19009
+ res = this.onGetDefaultTextCallback();
18910
19010
  }
18911
- return res;
19011
+ if (res === val)
19012
+ return true;
19013
+ return this.isValueEmpty(res) && this.isValueEmpty(val);
19014
+ };
19015
+ LocalizableString.prototype.clear = function () {
19016
+ this.setJson(undefined);
19017
+ };
19018
+ LocalizableString.prototype.clearLocale = function (loc) {
19019
+ this.setLocaleText(loc, undefined);
18912
19020
  };
18913
19021
  LocalizableString.prototype.setLocaleText = function (loc, value) {
18914
19022
  loc = this.getValueLoc(loc);
18915
- if (!this.storeDefaultText && value == this.getLocaleTextWithDefault(loc)) {
18916
- if (!!value || !!loc && loc !== this.defaultLoc)
19023
+ if (!this.storeDefaultText && this.isLocaleTextEqualsWithDefault(loc, value)) {
19024
+ if (!this.isValueEmpty(value) || !!loc && loc !== this.defaultLoc)
18917
19025
  return;
18918
19026
  var dl = _surveyStrings__WEBPACK_IMPORTED_MODULE_1__["surveyLocalization"].defaultLocale;
18919
19027
  var oldValue_1 = this.getValue(dl);
18920
- if (!!dl && !!oldValue_1) {
19028
+ if (!!dl && !this.isValueEmpty(oldValue_1)) {
18921
19029
  this.setValue(dl, value);
18922
19030
  this.fireStrChanged(dl, oldValue_1);
18923
19031
  }
18924
19032
  return;
18925
19033
  }
18926
19034
  if (!_settings__WEBPACK_IMPORTED_MODULE_2__["settings"].localization.storeDuplicatedTranslations &&
18927
- value &&
18928
- loc &&
18929
- loc != this.defaultLoc &&
19035
+ !this.isValueEmpty(value) && loc && loc != this.defaultLoc &&
18930
19036
  !this.getValue(loc) &&
18931
19037
  value == this.getLocaleText(this.defaultLoc))
18932
19038
  return;
@@ -18935,9 +19041,8 @@ var LocalizableString = /** @class */ (function () {
18935
19041
  loc = this.defaultLoc;
18936
19042
  var oldValue = this.onStrChanged && loc === curLoc ? this.pureText : undefined;
18937
19043
  delete this.htmlValues[loc];
18938
- if (!value) {
18939
- if (this.getValue(loc))
18940
- this.deleteValue(loc);
19044
+ if (this.isValueEmpty(value)) {
19045
+ this.deleteValue(loc);
18941
19046
  }
18942
19047
  else {
18943
19048
  if (typeof value === "string") {
@@ -18954,6 +19059,13 @@ var LocalizableString = /** @class */ (function () {
18954
19059
  }
18955
19060
  this.fireStrChanged(loc, oldValue);
18956
19061
  };
19062
+ LocalizableString.prototype.isValueEmpty = function (val) {
19063
+ if (val === undefined || val === null)
19064
+ return true;
19065
+ if (this.localizationName)
19066
+ return false;
19067
+ return val === "";
19068
+ };
18957
19069
  Object.defineProperty(LocalizableString.prototype, "curLocale", {
18958
19070
  get: function () {
18959
19071
  return !!this.locale ? this.locale : this.defaultLoc;
@@ -19017,7 +19129,7 @@ var LocalizableString = /** @class */ (function () {
19017
19129
  }
19018
19130
  this.values = {};
19019
19131
  this.htmlValues = {};
19020
- if (!value)
19132
+ if (value === null || value === undefined)
19021
19133
  return;
19022
19134
  if (typeof value === "string") {
19023
19135
  this.setLocaleText(null, value);
@@ -22659,11 +22771,7 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
22659
22771
  _this.touchMoveEventCallback = function (event) {
22660
22772
  _this.preventScrollOuside(event, _this.clientY - event.changedTouches[0].clientY);
22661
22773
  };
22662
- _this.model.onRecalculatePosition.add(function (_, options) {
22663
- if (!_this.isOverlay) {
22664
- _this.updatePosition(options.isResetHeight);
22665
- }
22666
- });
22774
+ _this.model.onRecalculatePosition.add(_this.recalculatePositionHandler);
22667
22775
  return _this;
22668
22776
  }
22669
22777
  PopupDropdownViewModel.prototype.calculateIsTablet = function (windowWidth, windowHeight) {
@@ -22758,6 +22866,10 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
22758
22866
  this.targetElement = targetElement || componentRoot.parentElement;
22759
22867
  }
22760
22868
  };
22869
+ PopupDropdownViewModel.prototype.resetComponentElement = function () {
22870
+ _super.prototype.resetComponentElement.call(this);
22871
+ this.targetElement = undefined;
22872
+ };
22761
22873
  PopupDropdownViewModel.prototype.updateOnShowing = function () {
22762
22874
  var root = _settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.root;
22763
22875
  this.prevActiveElement = root.activeElement;
@@ -22821,6 +22933,30 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
22821
22933
  this.minWidth = undefined;
22822
22934
  }
22823
22935
  };
22936
+ PopupDropdownViewModel.prototype.onModelChanging = function (newModel) {
22937
+ var _this = this;
22938
+ if (!!this.model) {
22939
+ this.model.onRecalculatePosition.remove(this.recalculatePositionHandler);
22940
+ }
22941
+ if (!this.recalculatePositionHandler) {
22942
+ this.recalculatePositionHandler = function (_, options) {
22943
+ if (!_this.isOverlay) {
22944
+ _this.updatePosition(options.isResetHeight);
22945
+ }
22946
+ };
22947
+ }
22948
+ _super.prototype.onModelChanging.call(this, newModel);
22949
+ newModel.onRecalculatePosition.add(this.recalculatePositionHandler);
22950
+ };
22951
+ PopupDropdownViewModel.prototype.dispose = function () {
22952
+ _super.prototype.dispose.call(this);
22953
+ this.updateOnHiding();
22954
+ if (!!this.model) {
22955
+ this.model.onRecalculatePosition.remove(this.recalculatePositionHandler);
22956
+ this.recalculatePositionHandler = undefined;
22957
+ }
22958
+ this.resetComponentElement();
22959
+ };
22824
22960
  PopupDropdownViewModel.tabletSizeBreakpoint = 600;
22825
22961
  __decorate([
22826
22962
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])()
@@ -23008,16 +23144,6 @@ var PopupSurveyModel = /** @class */ (function (_super) {
23008
23144
  _this.width = _this.survey.width;
23009
23145
  _this.updateCss();
23010
23146
  _this.onCreating();
23011
- _this.survey.onPopupVisibleChanged.add(function (_, opt) {
23012
- if (opt.visible) {
23013
- _this.onScrollCallback = function () {
23014
- opt.popup.toggleVisibility();
23015
- };
23016
- }
23017
- else {
23018
- _this.onScrollCallback = undefined;
23019
- }
23020
- });
23021
23147
  return _this;
23022
23148
  }
23023
23149
  PopupSurveyModel.prototype.onCreating = function () { };
@@ -23251,9 +23377,7 @@ var PopupSurveyModel = /** @class */ (function (_super) {
23251
23377
  }
23252
23378
  };
23253
23379
  PopupSurveyModel.prototype.onScroll = function () {
23254
- if (this.onScrollCallback) {
23255
- this.onScrollCallback();
23256
- }
23380
+ this.survey.onScroll();
23257
23381
  };
23258
23382
  __decorate([
23259
23383
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_2__["property"])()
@@ -23373,6 +23497,7 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23373
23497
  __extends(PopupBaseViewModel, _super);
23374
23498
  function PopupBaseViewModel(model) {
23375
23499
  var _this = _super.call(this) || this;
23500
+ _this.subscriptionId = PopupBaseViewModel.SubscriptionId++;
23376
23501
  _this.popupSelector = ".sv-popup";
23377
23502
  _this.fixedPopupContainer = ".sv-popup";
23378
23503
  _this.containerSelector = ".sv-popup__container";
@@ -23435,11 +23560,14 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23435
23560
  this.width = nullableValue;
23436
23561
  this.minWidth = nullableValue;
23437
23562
  };
23563
+ PopupBaseViewModel.prototype.onModelChanging = function (newModel) {
23564
+ };
23438
23565
  PopupBaseViewModel.prototype.setupModel = function (model) {
23439
23566
  var _this = this;
23440
23567
  if (!!this.model) {
23441
- this.model.unregisterPropertyChangedHandlers(["isVisible"], "PopupBaseViewModel");
23568
+ this.model.unregisterPropertyChangedHandlers(["isVisible"], "PopupBaseViewModel" + this.subscriptionId);
23442
23569
  }
23570
+ this.onModelChanging(model);
23443
23571
  this._model = model;
23444
23572
  var onIsVisibleChangedHandler = function () {
23445
23573
  if (!model.isVisible) {
@@ -23447,7 +23575,7 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23447
23575
  }
23448
23576
  _this.isVisible = model.isVisible;
23449
23577
  };
23450
- model.registerPropertyChangedHandlers(["isVisible"], onIsVisibleChangedHandler, "PopupBaseViewModel");
23578
+ model.registerPropertyChangedHandlers(["isVisible"], onIsVisibleChangedHandler, "PopupBaseViewModel" + this.subscriptionId);
23451
23579
  onIsVisibleChangedHandler();
23452
23580
  };
23453
23581
  Object.defineProperty(PopupBaseViewModel.prototype, "model", {
@@ -23627,6 +23755,9 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23627
23755
  };
23628
23756
  PopupBaseViewModel.prototype.dispose = function () {
23629
23757
  _super.prototype.dispose.call(this);
23758
+ if (this.model) {
23759
+ this.model.unregisterPropertyChangedHandlers(["isVisible"], "PopupBaseViewModel" + this.subscriptionId);
23760
+ }
23630
23761
  if (!!this.createdContainer) {
23631
23762
  this.createdContainer.remove();
23632
23763
  this.createdContainer = undefined;
@@ -23634,6 +23765,7 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23634
23765
  if (!!this.footerToolbarValue) {
23635
23766
  this.footerToolbarValue.dispose();
23636
23767
  }
23768
+ this.resetComponentElement();
23637
23769
  };
23638
23770
  PopupBaseViewModel.prototype.initializePopupContainer = function () {
23639
23771
  if (!this.container) {
@@ -23649,6 +23781,7 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23649
23781
  };
23650
23782
  PopupBaseViewModel.prototype.resetComponentElement = function () {
23651
23783
  this.containerElement = undefined;
23784
+ this.prevActiveElement = undefined;
23652
23785
  };
23653
23786
  PopupBaseViewModel.prototype.preventScrollOuside = function (event, deltaY) {
23654
23787
  var currentElement = event.target;
@@ -23663,6 +23796,7 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23663
23796
  }
23664
23797
  event.preventDefault();
23665
23798
  };
23799
+ PopupBaseViewModel.SubscriptionId = 0;
23666
23800
  __decorate([
23667
23801
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ defaultValue: "0px" })
23668
23802
  ], PopupBaseViewModel.prototype, "top", void 0);
@@ -23729,7 +23863,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
23729
23863
 
23730
23864
  var PopupModel = /** @class */ (function (_super) {
23731
23865
  __extends(PopupModel, _super);
23732
- function PopupModel(contentComponentName, contentComponentData, verticalPosition, horizontalPosition, showPointer, isModal, onCancel, onApply, onHide, onShow, cssClass, title) {
23866
+ function PopupModel(contentComponentName, contentComponentData, verticalPosition, horizontalPosition, showPointer, isModal, onCancel, onApply, onHide, onShow, cssClass, title, onDispose) {
23733
23867
  if (verticalPosition === void 0) { verticalPosition = "bottom"; }
23734
23868
  if (horizontalPosition === void 0) { horizontalPosition = "left"; }
23735
23869
  if (showPointer === void 0) { showPointer = true; }
@@ -23740,7 +23874,9 @@ var PopupModel = /** @class */ (function (_super) {
23740
23874
  if (onShow === void 0) { onShow = function () { }; }
23741
23875
  if (cssClass === void 0) { cssClass = ""; }
23742
23876
  if (title === void 0) { title = ""; }
23877
+ if (onDispose === void 0) { onDispose = function () { }; }
23743
23878
  var _this = _super.call(this) || this;
23879
+ _this.onDispose = onDispose;
23744
23880
  _this.focusFirstInputSelector = "";
23745
23881
  _this.onVisibilityChanged = _this.addEvent();
23746
23882
  _this.onFooterActionsCreated = _this.addEvent();
@@ -23795,6 +23931,10 @@ var PopupModel = /** @class */ (function (_super) {
23795
23931
  this.onFooterActionsCreated.fire(this, options);
23796
23932
  return options.actions;
23797
23933
  };
23934
+ PopupModel.prototype.dispose = function () {
23935
+ _super.prototype.dispose.call(this);
23936
+ this.onDispose();
23937
+ };
23798
23938
  __decorate([
23799
23939
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
23800
23940
  ], PopupModel.prototype, "contentComponentName", void 0);
@@ -24202,11 +24342,14 @@ var Question = /** @class */ (function (_super) {
24202
24342
  configurable: true
24203
24343
  });
24204
24344
  Question.prototype.onVisibleChanged = function () {
24205
- this.setPropertyValue("isVisible", this.isVisible);
24345
+ this.updateIsVisibleProp();
24206
24346
  if (!this.isVisible && this.errors && this.errors.length > 0) {
24207
24347
  this.errors = [];
24208
24348
  }
24209
24349
  };
24350
+ Question.prototype.updateIsVisibleProp = function () {
24351
+ this.setPropertyValue("isVisible", this.isVisible);
24352
+ };
24210
24353
  Object.defineProperty(Question.prototype, "useDisplayValuesInDynamicTexts", {
24211
24354
  /**
24212
24355
  * Specifies whether to use display names for question values in placeholders.
@@ -24382,6 +24525,9 @@ var Question = /** @class */ (function (_super) {
24382
24525
  this.runConditions();
24383
24526
  }
24384
24527
  this.calcRenderedCommentPlaceholder();
24528
+ if (!this.visible) {
24529
+ this.updateIsVisibleProp();
24530
+ }
24385
24531
  };
24386
24532
  Object.defineProperty(Question.prototype, "parent", {
24387
24533
  /**
@@ -24966,11 +25112,8 @@ var Question = /** @class */ (function (_super) {
24966
25112
  .append(cssClasses.descriptionUnderInput, this.hasDescriptionUnderInput)
24967
25113
  .toString();
24968
25114
  };
24969
- Question.prototype.getIsErrorsModeTooltip = function () {
24970
- return _super.prototype.getIsErrorsModeTooltip.call(this) && !this.customWidget;
24971
- };
24972
25115
  Question.prototype.showErrorOnCore = function (location) {
24973
- return !this.isErrorsModeTooltip && !this.showErrorsAboveQuestion && !this.showErrorsBelowQuestion && this.getErrorLocation() === location;
25116
+ return !this.showErrorsAboveQuestion && !this.showErrorsBelowQuestion && this.getErrorLocation() === location;
24974
25117
  };
24975
25118
  Object.defineProperty(Question.prototype, "showErrorOnTop", {
24976
25119
  get: function () {
@@ -24986,17 +25129,9 @@ var Question = /** @class */ (function (_super) {
24986
25129
  enumerable: false,
24987
25130
  configurable: true
24988
25131
  });
24989
- Question.prototype.getIsTooltipErrorSupportedByParent = function () {
24990
- if (this.parentQuestion) {
24991
- return this.parentQuestion.getIsTooltipErrorInsideSupported();
24992
- }
24993
- else {
24994
- return _super.prototype.getIsTooltipErrorSupportedByParent.call(this);
24995
- }
24996
- };
24997
25132
  Object.defineProperty(Question.prototype, "showErrorsOutsideQuestion", {
24998
25133
  get: function () {
24999
- return this.isDefaultV2Theme && !(this.hasParent && this.getIsTooltipErrorSupportedByParent());
25134
+ return this.isDefaultV2Theme;
25000
25135
  },
25001
25136
  enumerable: false,
25002
25137
  configurable: true
@@ -25032,7 +25167,6 @@ var Question = /** @class */ (function (_super) {
25032
25167
  .append(cssClasses.error.outsideQuestion, this.showErrorsBelowQuestion || this.showErrorsAboveQuestion)
25033
25168
  .append(cssClasses.error.belowQuestion, this.showErrorsBelowQuestion)
25034
25169
  .append(cssClasses.error.aboveQuestion, this.showErrorsAboveQuestion)
25035
- .append(cssClasses.error.tooltip, this.isErrorsModeTooltip)
25036
25170
  .append(cssClasses.error.locationTop, this.showErrorOnTop)
25037
25171
  .append(cssClasses.error.locationBottom, this.showErrorOnBottom)
25038
25172
  .toString();
@@ -25550,6 +25684,12 @@ var Question = /** @class */ (function (_super) {
25550
25684
  enumerable: false,
25551
25685
  configurable: true
25552
25686
  });
25687
+ Object.defineProperty(Question.prototype, "hasFilteredValue", {
25688
+ get: function () { return false; },
25689
+ enumerable: false,
25690
+ configurable: true
25691
+ });
25692
+ Question.prototype.getFilteredValue = function () { return this.value; };
25553
25693
  Object.defineProperty(Question.prototype, "valueForSurvey", {
25554
25694
  get: function () {
25555
25695
  if (!!this.valueToDataCallback) {
@@ -27648,53 +27788,51 @@ var QuestionSelectBase = /** @class */ (function (_super) {
27648
27788
  return this.hasUnknownValue(val, true, false);
27649
27789
  };
27650
27790
  QuestionSelectBase.prototype.updateSelectedItemValues = function () {
27651
- if (this.waitingGetChoiceDisplayValueResponse)
27652
- return;
27653
- var IsMultipleValue = this.getIsMultipleValue();
27654
- if (IsMultipleValue) {
27655
- this.updateMultipleSelectedItemValues();
27656
- }
27657
- else {
27658
- this.updateSingleSelectedItemValues();
27659
- }
27660
- };
27661
- QuestionSelectBase.prototype.updateSingleSelectedItemValues = function () {
27662
27791
  var _this = this;
27663
- if (!!this.survey && !this.isEmpty() && !_itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"].getItemByValue(this.choices, this.value)) {
27792
+ if (this.waitingGetChoiceDisplayValueResponse || !this.survey || this.isEmpty())
27793
+ return;
27794
+ var value = this.value;
27795
+ var valueArray = Array.isArray(value) ? value : [value];
27796
+ var hasItemWithoutValues = valueArray.some(function (val) { return !_itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"].getItemByValue(_this.choices, val); });
27797
+ if (hasItemWithoutValues) {
27664
27798
  this.waitingGetChoiceDisplayValueResponse = true;
27665
27799
  this.isReady = !this.waitingAcyncOperations;
27666
27800
  this.survey.getChoiceDisplayValue({
27667
27801
  question: this,
27668
- values: [this.value],
27802
+ values: valueArray,
27669
27803
  setItems: function (displayValues) {
27804
+ var customValues = [];
27805
+ for (var _i = 1; _i < arguments.length; _i++) {
27806
+ customValues[_i - 1] = arguments[_i];
27807
+ }
27670
27808
  _this.waitingGetChoiceDisplayValueResponse = false;
27671
27809
  if (!displayValues || !displayValues.length)
27672
27810
  return;
27673
- _this.selectedItemValues = _this.createItemValue(_this.value, displayValues[0]);
27811
+ var items = displayValues.map(function (displayValue, index) { return _this.createItemValue(valueArray[index], displayValue); });
27812
+ _this.setCustomValuesIntoItems(items, customValues);
27813
+ if (Array.isArray(value)) {
27814
+ _this.selectedItemValues = items;
27815
+ }
27816
+ else {
27817
+ _this.selectedItemValues = items[0];
27818
+ }
27674
27819
  _this.isReady = !_this.waitingAcyncOperations;
27675
27820
  }
27676
27821
  });
27677
27822
  }
27678
27823
  };
27679
- QuestionSelectBase.prototype.updateMultipleSelectedItemValues = function () {
27680
- var _this = this;
27681
- var valueArray = this.value;
27682
- var hasItemWithValues = valueArray.some(function (val) { return !_itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"].getItemByValue(_this.choices, val); });
27683
- if (!!this.survey && !this.isEmpty() && hasItemWithValues) {
27684
- this.waitingGetChoiceDisplayValueResponse = true;
27685
- this.isReady = this.waitingAcyncOperations;
27686
- this.survey.getChoiceDisplayValue({
27687
- question: this,
27688
- values: valueArray,
27689
- setItems: function (displayValues) {
27690
- _this.waitingGetChoiceDisplayValueResponse = false;
27691
- if (!displayValues || !displayValues.length)
27692
- return;
27693
- _this.selectedItemValues = displayValues.map(function (displayValue, index) { return _this.createItemValue(_this.value[index], displayValue); });
27694
- _this.isReady = !_this.waitingAcyncOperations;
27824
+ QuestionSelectBase.prototype.setCustomValuesIntoItems = function (items, customValues) {
27825
+ if (!Array.isArray(customValues) || customValues.length === 0)
27826
+ return;
27827
+ customValues.forEach(function (customValue) {
27828
+ var vals = customValue.values;
27829
+ var propName = customValue.propertyName;
27830
+ if (Array.isArray(vals)) {
27831
+ for (var i = 0; i < items.length && i < vals.length; i++) {
27832
+ items[i][propName] = vals[i];
27695
27833
  }
27696
- });
27697
- }
27834
+ }
27835
+ });
27698
27836
  };
27699
27837
  QuestionSelectBase.prototype.hasUnknownValue = function (val, includeOther, isFilteredChoices, checkEmptyValue) {
27700
27838
  if (includeOther === void 0) { includeOther = false; }
@@ -30065,6 +30203,16 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
30065
30203
  enumerable: false,
30066
30204
  configurable: true
30067
30205
  });
30206
+ Object.defineProperty(QuestionCheckboxModel.prototype, "hasFilteredValue", {
30207
+ get: function () { return !!this.valuePropertyName; },
30208
+ enumerable: false,
30209
+ configurable: true
30210
+ });
30211
+ QuestionCheckboxModel.prototype.getFilteredValue = function () {
30212
+ if (this.hasFilteredValue)
30213
+ return this.renderedValue;
30214
+ return _super.prototype.getFilteredValue.call(this);
30215
+ };
30068
30216
  QuestionCheckboxModel.prototype.getMultipleSelectedItems = function () {
30069
30217
  return this.selectedChoices;
30070
30218
  };
@@ -36151,8 +36299,6 @@ var MatrixDropdownRowModelBase = /** @class */ (function () {
36151
36299
  var columns = this.data.columns;
36152
36300
  for (var i = 0; i < columns.length; i++) {
36153
36301
  var column = columns[i];
36154
- if (!column.isVisible)
36155
- continue;
36156
36302
  var cell = this.createCell(column);
36157
36303
  this.cells.push(cell);
36158
36304
  var cellValue = this.getCellValue(value, column.name);
@@ -36791,10 +36937,15 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
36791
36937
  }
36792
36938
  };
36793
36939
  QuestionMatrixDropdownModelBase.prototype.onShowInMultipleColumnsChanged = function (column) {
36794
- this.clearGeneratedRows();
36795
- this.resetRenderedTable();
36940
+ this.resetTableAndRows();
36941
+ };
36942
+ QuestionMatrixDropdownModelBase.prototype.onColumnVisibilityChanged = function (column) {
36943
+ this.resetTableAndRows();
36796
36944
  };
36797
36945
  QuestionMatrixDropdownModelBase.prototype.onColumnCellTypeChanged = function (column) {
36946
+ this.resetTableAndRows();
36947
+ };
36948
+ QuestionMatrixDropdownModelBase.prototype.resetTableAndRows = function () {
36798
36949
  this.clearGeneratedRows();
36799
36950
  this.resetRenderedTable();
36800
36951
  };
@@ -36921,6 +37072,8 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
36921
37072
  this.checkColumnsRenderedRequired();
36922
37073
  };
36923
37074
  QuestionMatrixDropdownModelBase.prototype.checkColumnsVisibility = function () {
37075
+ if (this.isDesignMode)
37076
+ return;
36924
37077
  var hasChanged = false;
36925
37078
  for (var i = 0; i < this.visibleColumns.length; i++) {
36926
37079
  var column = this.visibleColumns[i];
@@ -36949,7 +37102,7 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
36949
37102
  }
36950
37103
  };
36951
37104
  QuestionMatrixDropdownModelBase.prototype.isColumnVisibilityChanged = function (column) {
36952
- var curVis = column.hasVisibleCell;
37105
+ var curVis = column.isColumnVisible;
36953
37106
  var isMultipleColumnsVisibility = column.isFilteredMultipleColumns;
36954
37107
  var curVisibleChoices = isMultipleColumnsVisibility ? column.getVisibleChoicesInCell : [];
36955
37108
  var newVisibleChoices = new Array();
@@ -36967,15 +37120,13 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
36967
37120
  break;
36968
37121
  }
36969
37122
  }
36970
- if (curVis != hasVisCell) {
36971
- column.hasVisibleCell = hasVisCell;
36972
- }
37123
+ column.hasVisibleCell = hasVisCell;
36973
37124
  if (isMultipleColumnsVisibility) {
36974
37125
  column.setVisibleChoicesInCell(newVisibleChoices);
36975
37126
  if (!_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isArraysEqual(curVisibleChoices, newVisibleChoices, true, false, false))
36976
37127
  return true;
36977
37128
  }
36978
- return curVis != hasVisCell;
37129
+ return curVis != column.isVisible;
36979
37130
  };
36980
37131
  QuestionMatrixDropdownModelBase.prototype.updateNewVisibleChoices = function (q, dest) {
36981
37132
  var choices = q.visibleChoices;
@@ -37951,9 +38102,6 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
37951
38102
  QuestionMatrixDropdownModelBase.prototype.getRootCss = function () {
37952
38103
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_11__["CssClassBuilder"]().append(_super.prototype.getRootCss.call(this)).append(this.cssClasses.rootScroll, this.horizontalScroll).toString();
37953
38104
  };
37954
- QuestionMatrixDropdownModelBase.prototype.getIsTooltipErrorInsideSupported = function () {
37955
- return false;
37956
- };
37957
38105
  return QuestionMatrixDropdownModelBase;
37958
38106
  }(_martixBase__WEBPACK_IMPORTED_MODULE_1__["QuestionMatrixBaseModel"]));
37959
38107
 
@@ -38096,12 +38244,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
38096
38244
  var _this = _super.call(this) || this;
38097
38245
  _this.colOwnerValue = null;
38098
38246
  _this.indexValue = -1;
38099
- _this._isVisible = true;
38100
38247
  _this._hasVisibleCell = true;
38101
38248
  _this.previousChoicesId = undefined;
38102
38249
  _this.createLocalizableString("totalFormat", _this);
38103
38250
  _this.createLocalizableString("cellHint", _this);
38104
38251
  _this.registerPropertyChangedHandlers(["showInMultipleColumns"], function () { _this.doShowInMultipleColumnsChanged(); });
38252
+ _this.registerPropertyChangedHandlers(["visible"], function () { _this.doColumnVisibilityChanged(); });
38105
38253
  _this.updateTemplateQuestion();
38106
38254
  _this.name = name;
38107
38255
  if (title) {
@@ -38211,15 +38359,30 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
38211
38359
  configurable: true
38212
38360
  });
38213
38361
  Object.defineProperty(MatrixDropdownColumn.prototype, "isVisible", {
38362
+ //For filtering columns
38214
38363
  get: function () {
38215
- return this._isVisible;
38364
+ return true;
38365
+ },
38366
+ enumerable: false,
38367
+ configurable: true
38368
+ });
38369
+ Object.defineProperty(MatrixDropdownColumn.prototype, "isColumnVisible", {
38370
+ get: function () {
38371
+ if (this.isDesignMode)
38372
+ return true;
38373
+ return this.visible && this.hasVisibleCell;
38374
+ },
38375
+ enumerable: false,
38376
+ configurable: true
38377
+ });
38378
+ Object.defineProperty(MatrixDropdownColumn.prototype, "visible", {
38379
+ get: function () { return this.getPropertyValue("visible"); },
38380
+ set: function (val) {
38381
+ this.setPropertyValue("visible", val);
38216
38382
  },
38217
38383
  enumerable: false,
38218
38384
  configurable: true
38219
38385
  });
38220
- MatrixDropdownColumn.prototype.setIsVisible = function (newVal) {
38221
- this._isVisible = newVal;
38222
- };
38223
38386
  Object.defineProperty(MatrixDropdownColumn.prototype, "hasVisibleCell", {
38224
38387
  get: function () {
38225
38388
  return this._hasVisibleCell;
@@ -38757,13 +38920,18 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
38757
38920
  }
38758
38921
  };
38759
38922
  MatrixDropdownColumn.prototype.doShowInMultipleColumnsChanged = function () {
38760
- if (this.colOwner != null && !this.isLoadingFromJson) {
38923
+ if (this.colOwner != null) {
38761
38924
  this.colOwner.onShowInMultipleColumnsChanged(this);
38762
38925
  }
38763
38926
  if (this.templateQuestion) {
38764
38927
  this.templateQuestion.autoOtherMode = this.isShowInMultipleColumns;
38765
38928
  }
38766
38929
  };
38930
+ MatrixDropdownColumn.prototype.doColumnVisibilityChanged = function () {
38931
+ if (this.colOwner != null && !this.isDesignMode) {
38932
+ this.colOwner.onColumnVisibilityChanged(this);
38933
+ }
38934
+ };
38767
38935
  MatrixDropdownColumn.prototype.getProperties = function (curCellType) {
38768
38936
  return _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].getDynamicPropertiesByObj(this, curCellType);
38769
38937
  };
@@ -38845,6 +39013,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("matrixdropdownc
38845
39013
  }
38846
39014
  },
38847
39015
  "width",
39016
+ { name: "visible:switch", default: true, overridingProperty: "visibleIf" },
38848
39017
  "visibleIf:condition",
38849
39018
  "enableIf:condition",
38850
39019
  "requiredIf:condition",
@@ -39448,7 +39617,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39448
39617
  if (this.matrix.isColumnLayoutHorizontal) {
39449
39618
  for (var i = 0; i < this.matrix.visibleColumns.length; i++) {
39450
39619
  var column = this.matrix.visibleColumns[i];
39451
- if (!column.hasVisibleCell)
39620
+ if (!column.isColumnVisible)
39452
39621
  continue;
39453
39622
  if (this.matrix.IsMultiplyColumn(column)) {
39454
39623
  this.createMutlipleColumnsHeader(column);
@@ -39473,7 +39642,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39473
39642
  }
39474
39643
  }
39475
39644
  if (this.hasActionCellInRows("end")) {
39476
- this.headerRow.cells.push(this.createHeaderCell(null));
39645
+ this.headerRow.cells.push(this.createHeaderCell(null, "action"));
39477
39646
  }
39478
39647
  };
39479
39648
  QuestionMatrixDropdownRenderedTable.prototype.buildFooter = function () {
@@ -39492,7 +39661,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39492
39661
  var cells = this.matrix.visibleTotalRow.cells;
39493
39662
  for (var i = 0; i < cells.length; i++) {
39494
39663
  var cell = cells[i];
39495
- if (!cell.column.hasVisibleCell)
39664
+ if (!cell.column.isColumnVisible)
39496
39665
  continue;
39497
39666
  if (this.matrix.IsMultiplyColumn(cell.column)) {
39498
39667
  this.createMutlipleColumnsFooter(this.footerRow, cell);
@@ -39670,14 +39839,14 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39670
39839
  for (var i = 0; i < row.cells.length; i++) {
39671
39840
  var cell = row.cells[i];
39672
39841
  if (!cell.hasQuestion) {
39673
- res.cells.push(this.createEmptyCell());
39842
+ res.cells.push(this.createEmptyCell(true));
39674
39843
  }
39675
39844
  else if (this.matrix.IsMultiplyColumn(cell.cell.column)) {
39676
39845
  if (cell.isFirstChoice) {
39677
39846
  res.cells.push(this.createErrorCell(cell.cell));
39678
39847
  }
39679
39848
  else {
39680
- res.cells.push(this.createEmptyCell());
39849
+ res.cells.push(this.createEmptyCell(true));
39681
39850
  }
39682
39851
  }
39683
39852
  else {
@@ -39710,7 +39879,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39710
39879
  }
39711
39880
  for (var i = 0; i < row.cells.length; i++) {
39712
39881
  var cell = row.cells[i];
39713
- if (!cell.column.hasVisibleCell)
39882
+ if (!cell.column.isColumnVisible)
39714
39883
  continue;
39715
39884
  if (this.matrix.IsMultiplyColumn(cell.column)) {
39716
39885
  this.createMutlipleEditCells(res, cell);
@@ -39780,7 +39949,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39780
39949
  var renderedRows = [];
39781
39950
  for (var i = 0; i < columns.length; i++) {
39782
39951
  var col = columns[i];
39783
- if (col.isVisible && col.hasVisibleCell) {
39952
+ if (col.isColumnVisible) {
39784
39953
  if (this.matrix.IsMultiplyColumn(col)) {
39785
39954
  this.createMutlipleVerticalRows(renderedRows, col, i);
39786
39955
  }
@@ -39995,12 +40164,14 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39995
40164
  }
39996
40165
  return cell;
39997
40166
  };
39998
- QuestionMatrixDropdownRenderedTable.prototype.createEmptyCell = function () {
40167
+ QuestionMatrixDropdownRenderedTable.prototype.createEmptyCell = function (isError) {
40168
+ if (isError === void 0) { isError = false; }
39999
40169
  var res = this.createTextCell(null);
40000
40170
  res.isEmpty = true;
40001
40171
  res.className = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]()
40002
40172
  .append(this.cssClasses.cell)
40003
40173
  .append(this.cssClasses.emptyCell)
40174
+ .append(this.cssClasses.errorsCell, isError)
40004
40175
  .toString();
40005
40176
  return res;
40006
40177
  };
@@ -41133,7 +41304,7 @@ _questionfactory__WEBPACK_IMPORTED_MODULE_1__["QuestionFactory"].Instance.regist
41133
41304
  /*!**************************************!*\
41134
41305
  !*** ./src/question_multipletext.ts ***!
41135
41306
  \**************************************/
41136
- /*! exports provided: MultipleTextEditorModel, MultipleTextItemModel, QuestionMultipleTextModel */
41307
+ /*! exports provided: MultipleTextEditorModel, MultipleTextItemModel, QuestionMultipleTextModel, MutlipleTextRow, MutlipleTextErrorRow, MultipleTextCell, MultipleTextErrorCell */
41137
41308
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
41138
41309
 
41139
41310
  "use strict";
@@ -41141,6 +41312,10 @@ __webpack_require__.r(__webpack_exports__);
41141
41312
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return MultipleTextEditorModel; });
41142
41313
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultipleTextItemModel", function() { return MultipleTextItemModel; });
41143
41314
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return QuestionMultipleTextModel; });
41315
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextRow", function() { return MutlipleTextRow; });
41316
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextErrorRow", function() { return MutlipleTextErrorRow; });
41317
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultipleTextCell", function() { return MultipleTextCell; });
41318
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultipleTextErrorCell", function() { return MultipleTextErrorCell; });
41144
41319
  /* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ "./src/base.ts");
41145
41320
  /* harmony import */ var _survey_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./survey-element */ "./src/survey-element.ts");
41146
41321
  /* harmony import */ var _question__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./question */ "./src/question.ts");
@@ -41165,6 +41340,12 @@ var __extends = (undefined && undefined.__extends) || (function () {
41165
41340
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
41166
41341
  };
41167
41342
  })();
41343
+ var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
41344
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
41345
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
41346
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
41347
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
41348
+ };
41168
41349
 
41169
41350
 
41170
41351
 
@@ -41207,6 +41388,9 @@ var MultipleTextItemModel = /** @class */ (function (_super) {
41207
41388
  if (name === void 0) { name = null; }
41208
41389
  if (title === void 0) { title = null; }
41209
41390
  var _this = _super.call(this) || this;
41391
+ _this.focusIn = function () {
41392
+ _this.editor.focusIn();
41393
+ };
41210
41394
  _this.editorValue = _this.createEditor(name);
41211
41395
  _this.editor.questionTitleTemplateCallback = function () {
41212
41396
  return "";
@@ -41281,9 +41465,6 @@ var MultipleTextItemModel = /** @class */ (function (_super) {
41281
41465
  this.editor.setParentQuestion(data);
41282
41466
  }
41283
41467
  };
41284
- MultipleTextItemModel.prototype.focusIn = function () {
41285
- this.editor.focusIn();
41286
- };
41287
41468
  Object.defineProperty(MultipleTextItemModel.prototype, "isRequired", {
41288
41469
  /**
41289
41470
  * Set this property to true, to make the item a required. If a user doesn't fill the item then a validation error will be generated.
@@ -41548,8 +41729,8 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
41548
41729
  _this.survey.multipleTextItemAdded(_this, item);
41549
41730
  }
41550
41731
  });
41551
- _this.registerPropertyChangedHandlers(["items", "colCount"], function () {
41552
- _this.fireCallback(_this.colCountChangedCallback);
41732
+ _this.registerPropertyChangedHandlers(["items", "colCount", "itemErrorLocation"], function () {
41733
+ _this.calcVisibleRows();
41553
41734
  });
41554
41735
  _this.registerPropertyChangedHandlers(["itemSize"], function () { _this.updateItemsSize(); });
41555
41736
  return _this;
@@ -41600,7 +41781,6 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
41600
41781
  QuestionMultipleTextModel.prototype.onSurveyLoad = function () {
41601
41782
  this.editorsOnSurveyLoad();
41602
41783
  _super.prototype.onSurveyLoad.call(this);
41603
- this.fireCallback(this.colCountChangedCallback);
41604
41784
  };
41605
41785
  QuestionMultipleTextModel.prototype.setQuestionValue = function (newValue, updateIsAnswered) {
41606
41786
  if (updateIsAnswered === void 0) { updateIsAnswered = true; }
@@ -41739,6 +41919,20 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
41739
41919
  return this.itemErrorLocation;
41740
41920
  return this.getErrorLocation();
41741
41921
  };
41922
+ Object.defineProperty(QuestionMultipleTextModel.prototype, "showItemErrorOnTop", {
41923
+ get: function () {
41924
+ return this.getQuestionErrorLocation() == "top";
41925
+ },
41926
+ enumerable: false,
41927
+ configurable: true
41928
+ });
41929
+ Object.defineProperty(QuestionMultipleTextModel.prototype, "showItemErrorOnBottom", {
41930
+ get: function () {
41931
+ return this.getQuestionErrorLocation() == "bottom";
41932
+ },
41933
+ enumerable: false,
41934
+ configurable: true
41935
+ });
41742
41936
  QuestionMultipleTextModel.prototype.getChildErrorLocation = function (child) {
41743
41937
  return this.getQuestionErrorLocation();
41744
41938
  };
@@ -41782,22 +41976,44 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
41782
41976
  enumerable: false,
41783
41977
  configurable: true
41784
41978
  });
41785
- QuestionMultipleTextModel.prototype.getRows = function () {
41979
+ QuestionMultipleTextModel.prototype.onRowCreated = function (row) {
41980
+ return row;
41981
+ };
41982
+ QuestionMultipleTextModel.prototype.calcVisibleRows = function () {
41786
41983
  var colCount = this.colCount;
41787
41984
  var items = this.items;
41788
- var rows = [];
41789
41985
  var index = 0;
41986
+ var row;
41987
+ var errorRow;
41988
+ var rows = [];
41790
41989
  for (var i = 0; i < items.length; i++) {
41791
41990
  if (index == 0) {
41792
- rows.push([]);
41991
+ row = this.onRowCreated(new MutlipleTextRow());
41992
+ errorRow = this.onRowCreated(new MutlipleTextErrorRow());
41993
+ if (this.showItemErrorOnTop) {
41994
+ rows.push(errorRow);
41995
+ rows.push(row);
41996
+ }
41997
+ else {
41998
+ rows.push(row);
41999
+ rows.push(errorRow);
42000
+ }
41793
42001
  }
41794
- rows[rows.length - 1].push(items[i]);
42002
+ row.cells.push(new MultipleTextCell(items[i], this));
42003
+ errorRow.cells.push(new MultipleTextErrorCell(items[i], this));
41795
42004
  index++;
41796
- if (index >= colCount) {
42005
+ if (index >= colCount || i == items.length - 1) {
41797
42006
  index = 0;
42007
+ errorRow.onAfterCreated();
41798
42008
  }
41799
42009
  }
41800
- return rows;
42010
+ this.rows = rows;
42011
+ };
42012
+ QuestionMultipleTextModel.prototype.getRows = function () {
42013
+ if (_helpers__WEBPACK_IMPORTED_MODULE_6__["Helpers"].isValueEmpty(this.rows)) {
42014
+ this.calcVisibleRows();
42015
+ }
42016
+ return this.rows;
41801
42017
  };
41802
42018
  QuestionMultipleTextModel.prototype.onValueChanged = function () {
41803
42019
  _super.prototype.onValueChanged.call(this);
@@ -41975,12 +42191,87 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
41975
42191
  QuestionMultipleTextModel.prototype.getItemTitleCss = function () {
41976
42192
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_7__["CssClassBuilder"]().append(this.cssClasses.itemTitle).toString();
41977
42193
  };
41978
- QuestionMultipleTextModel.prototype.getIsTooltipErrorInsideSupported = function () {
41979
- return true;
41980
- };
42194
+ __decorate([
42195
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_4__["propertyArray"])()
42196
+ ], QuestionMultipleTextModel.prototype, "rows", void 0);
41981
42197
  return QuestionMultipleTextModel;
41982
42198
  }(_question__WEBPACK_IMPORTED_MODULE_2__["Question"]));
41983
42199
 
42200
+ var MutlipleTextRow = /** @class */ (function (_super) {
42201
+ __extends(MutlipleTextRow, _super);
42202
+ function MutlipleTextRow() {
42203
+ var _this = _super !== null && _super.apply(this, arguments) || this;
42204
+ _this.isVisible = true;
42205
+ _this.cells = [];
42206
+ return _this;
42207
+ }
42208
+ __decorate([
42209
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_4__["property"])()
42210
+ ], MutlipleTextRow.prototype, "isVisible", void 0);
42211
+ __decorate([
42212
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_4__["propertyArray"])()
42213
+ ], MutlipleTextRow.prototype, "cells", void 0);
42214
+ return MutlipleTextRow;
42215
+ }(_base__WEBPACK_IMPORTED_MODULE_0__["Base"]));
42216
+
42217
+ var MutlipleTextErrorRow = /** @class */ (function (_super) {
42218
+ __extends(MutlipleTextErrorRow, _super);
42219
+ function MutlipleTextErrorRow() {
42220
+ return _super !== null && _super.apply(this, arguments) || this;
42221
+ }
42222
+ MutlipleTextErrorRow.prototype.onAfterCreated = function () {
42223
+ var _this = this;
42224
+ var callback = function () {
42225
+ _this.isVisible = _this.cells.some(function (cell) { var _a, _b; return ((_a = cell.item) === null || _a === void 0 ? void 0 : _a.editor) && ((_b = cell.item) === null || _b === void 0 ? void 0 : _b.editor.hasVisibleErrors); });
42226
+ };
42227
+ this.cells.forEach(function (cell) {
42228
+ var _a, _b;
42229
+ if ((_a = cell.item) === null || _a === void 0 ? void 0 : _a.editor) {
42230
+ (_b = cell.item) === null || _b === void 0 ? void 0 : _b.editor.registerFunctionOnPropertyValueChanged("hasVisibleErrors", callback);
42231
+ }
42232
+ });
42233
+ callback();
42234
+ };
42235
+ return MutlipleTextErrorRow;
42236
+ }(MutlipleTextRow));
42237
+
42238
+ var MultipleTextCell = /** @class */ (function () {
42239
+ function MultipleTextCell(item, question) {
42240
+ this.item = item;
42241
+ this.question = question;
42242
+ this.isErrorsCell = false;
42243
+ }
42244
+ MultipleTextCell.prototype.getClassName = function () {
42245
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_7__["CssClassBuilder"]().append(this.question.cssClasses.cell).toString();
42246
+ };
42247
+ Object.defineProperty(MultipleTextCell.prototype, "className", {
42248
+ get: function () {
42249
+ return this.getClassName();
42250
+ },
42251
+ enumerable: false,
42252
+ configurable: true
42253
+ });
42254
+ return MultipleTextCell;
42255
+ }());
42256
+
42257
+ var MultipleTextErrorCell = /** @class */ (function (_super) {
42258
+ __extends(MultipleTextErrorCell, _super);
42259
+ function MultipleTextErrorCell() {
42260
+ var _this = _super !== null && _super.apply(this, arguments) || this;
42261
+ _this.isErrorsCell = true;
42262
+ return _this;
42263
+ }
42264
+ MultipleTextErrorCell.prototype.getClassName = function () {
42265
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_7__["CssClassBuilder"]()
42266
+ .append(_super.prototype.getClassName.call(this))
42267
+ .append(this.question.cssClasses.cellError)
42268
+ .append(this.question.cssClasses.cellErrorTop, this.question.showItemErrorOnTop)
42269
+ .append(this.question.cssClasses.cellErrorBottom, this.question.showItemErrorOnBottom)
42270
+ .toString();
42271
+ };
42272
+ return MultipleTextErrorCell;
42273
+ }(MultipleTextCell));
42274
+
41984
42275
  _jsonobject__WEBPACK_IMPORTED_MODULE_4__["Serializer"].addClass("multipletextitem", [
41985
42276
  { name: "!name", isUnique: true },
41986
42277
  "isRequired:boolean",
@@ -43832,6 +44123,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
43832
44123
  if (!!this.parentQuestion && !!this.parent) {
43833
44124
  cachedValues[QuestionPanelDynamicItem.ParentItemVariableName] = this.parent.getValue();
43834
44125
  }
44126
+ this.isValueChangingInternally = true;
43835
44127
  for (var i = 0; i < this.panels.length; i++) {
43836
44128
  var panel = this.panels[i];
43837
44129
  var panelValues = this.getPanelItemData(panel.data);
@@ -43844,6 +44136,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
43844
44136
  newProps[panelName] = panel;
43845
44137
  panel.runCondition(newValues, newProps);
43846
44138
  }
44139
+ this.isValueChangingInternally = false;
43847
44140
  };
43848
44141
  QuestionPanelDynamicModel.prototype.onAnyValueChanged = function (name) {
43849
44142
  _super.prototype.onAnyValueChanged.call(this, name);
@@ -44488,11 +44781,22 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
44488
44781
  this.updateFooterActionsCallback();
44489
44782
  this.footerToolbarValue.setItems(items);
44490
44783
  };
44491
- QuestionPanelDynamicModel.prototype.createTabByPanel = function (panel) {
44784
+ QuestionPanelDynamicModel.prototype.createTabByPanel = function (panel, visPanelIndex) {
44492
44785
  var _this = this;
44493
44786
  if (!this.isRenderModeTab)
44494
44787
  return;
44495
44788
  var locTitle = new _localizablestring__WEBPACK_IMPORTED_MODULE_2__["LocalizableString"](panel, true);
44789
+ locTitle.onGetTextCallback = function (str) {
44790
+ if (!_this.survey)
44791
+ return str;
44792
+ var options = {
44793
+ title: str,
44794
+ panel: panel,
44795
+ visiblePanelIndex: visPanelIndex
44796
+ };
44797
+ _this.survey.dynamicPanelGetTabTitle(_this, options);
44798
+ return options.title;
44799
+ };
44496
44800
  locTitle.sharedData = this.locTemplateTabTitle;
44497
44801
  var isActive = this.getPanelIndexById(panel.id) === this.currentIndex;
44498
44802
  var newItem = new _actions_action__WEBPACK_IMPORTED_MODULE_11__["Action"]({
@@ -44536,13 +44840,20 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
44536
44840
  if (!this.isRenderModeTab)
44537
44841
  return;
44538
44842
  var items = [];
44539
- this.visiblePanels.forEach(function (panel) { return items.push(_this.createTabByPanel(panel)); });
44843
+ var visPanels = this.visiblePanels;
44844
+ var _loop_1 = function (i) {
44845
+ this_1.visiblePanels.forEach(function (panel) { return items.push(_this.createTabByPanel(visPanels[i], i)); });
44846
+ };
44847
+ var this_1 = this;
44848
+ for (var i = 0; i < visPanels.length; i++) {
44849
+ _loop_1(i);
44850
+ }
44540
44851
  this.additionalTitleToolbar.setItems(items);
44541
44852
  };
44542
44853
  QuestionPanelDynamicModel.prototype.addTabFromToolbar = function (panel, index) {
44543
44854
  if (!this.isRenderModeTab)
44544
44855
  return;
44545
- var newItem = this.createTabByPanel(panel);
44856
+ var newItem = this.createTabByPanel(panel, index);
44546
44857
  this.additionalTitleToolbar.actions.splice(index, 0, newItem);
44547
44858
  this.updateTabToolbarItemsPressedState();
44548
44859
  };
@@ -44929,7 +45240,9 @@ var QuestionRankingModel = /** @class */ (function (_super) {
44929
45240
  var target = event.target;
44930
45241
  if (!_this.isDragStartNodeValid(target))
44931
45242
  return;
44932
- if (_this.allowStartDrag && _this.canStartDragDueMaxSelectedChoices(target)) {
45243
+ if (_this.allowStartDrag &&
45244
+ _this.canStartDragDueMaxSelectedChoices(target) &&
45245
+ _this.canStartDragDueItemEnabled(choice)) {
44933
45246
  _this.dragDropRankingChoices.startDrag(event, choice, _this, node);
44934
45247
  }
44935
45248
  };
@@ -45002,7 +45315,9 @@ var QuestionRankingModel = /** @class */ (function (_super) {
45002
45315
  return "ranking";
45003
45316
  };
45004
45317
  QuestionRankingModel.prototype.getItemTabIndex = function (item) {
45005
- return this.isDesignMode ? undefined : 0;
45318
+ if (this.isDesignMode || item.disabled)
45319
+ return undefined;
45320
+ return 0;
45006
45321
  };
45007
45322
  Object.defineProperty(QuestionRankingModel.prototype, "rootClass", {
45008
45323
  get: function () {
@@ -45217,6 +45532,9 @@ var QuestionRankingModel = /** @class */ (function (_super) {
45217
45532
  }
45218
45533
  return true;
45219
45534
  };
45535
+ QuestionRankingModel.prototype.canStartDragDueItemEnabled = function (item) {
45536
+ return item.enabled;
45537
+ };
45220
45538
  QuestionRankingModel.prototype.checkMaxSelectedChoicesUnreached = function () {
45221
45539
  if (this.maxSelectedChoices < 1)
45222
45540
  return true;
@@ -46994,18 +47312,24 @@ var QuestionTagboxModel = /** @class */ (function (_super) {
46994
47312
  _this.onOpened = _this.addEvent();
46995
47313
  _this.createLocalizableString("placeholder", _this, false, true);
46996
47314
  _this.createLocalizableString("clearCaption", _this, false, true);
47315
+ _this.registerPropertyChangedHandlers(["value", "renderAs", "showOtherItem", "otherText", "placeholder", "choices", "visibleChoices"], function () {
47316
+ _this.updateReadOnlyText();
47317
+ });
47318
+ _this.updateReadOnlyText();
46997
47319
  return _this;
46998
47320
  }
47321
+ QuestionTagboxModel.prototype.locStrsChanged = function () {
47322
+ var _a;
47323
+ _super.prototype.locStrsChanged.call(this);
47324
+ this.updateReadOnlyText();
47325
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.locStrsChanged();
47326
+ };
47327
+ QuestionTagboxModel.prototype.updateReadOnlyText = function () {
47328
+ this.readOnlyText = this.displayValue || this.placeholder;
47329
+ };
46999
47330
  QuestionTagboxModel.prototype.getDefaultItemComponent = function () {
47000
47331
  return "";
47001
47332
  };
47002
- Object.defineProperty(QuestionTagboxModel.prototype, "readOnlyText", {
47003
- get: function () {
47004
- return this.displayValue || this.placeholder;
47005
- },
47006
- enumerable: false,
47007
- configurable: true
47008
- });
47009
47333
  QuestionTagboxModel.prototype.onSurveyLoad = function () {
47010
47334
  _super.prototype.onSurveyLoad.call(this);
47011
47335
  if (!this.dropdownListModel) {
@@ -47158,6 +47482,9 @@ var QuestionTagboxModel = /** @class */ (function (_super) {
47158
47482
  _super.prototype.clearValue.call(this);
47159
47483
  this.dropdownListModel.clear();
47160
47484
  };
47485
+ __decorate([
47486
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: "" })
47487
+ ], QuestionTagboxModel.prototype, "readOnlyText", void 0);
47161
47488
  __decorate([
47162
47489
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])()
47163
47490
  ], QuestionTagboxModel.prototype, "allowClear", void 0);
@@ -50649,23 +50976,6 @@ var SurveyElement = /** @class */ (function (_super) {
50649
50976
  enumerable: false,
50650
50977
  configurable: true
50651
50978
  });
50652
- Object.defineProperty(SurveyElement.prototype, "isErrorsModeTooltip", {
50653
- get: function () {
50654
- return this.getIsErrorsModeTooltip();
50655
- },
50656
- enumerable: false,
50657
- configurable: true
50658
- });
50659
- SurveyElement.prototype.getIsErrorsModeTooltip = function () {
50660
- return this.isDefaultV2Theme && this.hasParent && this.getIsTooltipErrorSupportedByParent();
50661
- };
50662
- SurveyElement.prototype.getIsTooltipErrorSupportedByParent = function () {
50663
- var _a;
50664
- return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getIsTooltipErrorInsideSupported();
50665
- };
50666
- SurveyElement.prototype.getIsTooltipErrorInsideSupported = function () {
50667
- return false;
50668
- };
50669
50979
  Object.defineProperty(SurveyElement.prototype, "hasParent", {
50670
50980
  get: function () {
50671
50981
  return (this.parent && !this.parent.isPage && (!this.parent.originalPage || this.survey.isShowingPreview)) || (this.parent === undefined);
@@ -50684,10 +50994,10 @@ var SurveyElement = /** @class */ (function (_super) {
50684
50994
  configurable: true
50685
50995
  });
50686
50996
  SurveyElement.prototype.getHasFrameV2 = function () {
50687
- return this.shouldAddRunnerStyles() && (!this.hasParent && this.isSingleInRow);
50997
+ return this.shouldAddRunnerStyles() && (!this.hasParent);
50688
50998
  };
50689
50999
  SurveyElement.prototype.getIsNested = function () {
50690
- return this.shouldAddRunnerStyles() && (this.hasParent || !this.isSingleInRow);
51000
+ return this.shouldAddRunnerStyles() && (this.hasParent);
50691
51001
  };
50692
51002
  SurveyElement.prototype.getCssRoot = function (cssClasses) {
50693
51003
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_6__["CssClassBuilder"]()
@@ -50893,6 +51203,12 @@ var SurveyElement = /** @class */ (function (_super) {
50893
51203
  });
50894
51204
  }
50895
51205
  };
51206
+ SurveyElement.prototype.dispose = function () {
51207
+ _super.prototype.dispose.call(this);
51208
+ if (this.titleToolbarValue) {
51209
+ this.titleToolbarValue.dispose();
51210
+ }
51211
+ };
50896
51212
  SurveyElement.CreateDisabledDesignElements = false;
50897
51213
  __decorate([
50898
51214
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: null })
@@ -51150,7 +51466,7 @@ var SurveyModel = /** @class */ (function (_super) {
51150
51466
  *
51151
51467
  * For information on event handler parameters, refer to descriptions within the interface.
51152
51468
  *
51153
- * [Continue an Incomplete Survey](https://surveyjs.io/form-library/documentation/handle-survey-results-continue-incomplete (linkStyle))
51469
+ * Alternatively, you can handle the [`onCurrentPageChanged`](#onCurrentPageChanged) and [`onValueChanged`](#onValueChanged) events, as shown in the following demo: [Continue an Incomplete Survey](https://surveyjs.io/form-library/examples/survey-editprevious/).
51154
51470
  */
51155
51471
  _this.onPartialSend = _this.addEvent();
51156
51472
  /**
@@ -51175,7 +51491,7 @@ var SurveyModel = /** @class */ (function (_super) {
51175
51491
  */
51176
51492
  _this.onValueChanging = _this.addEvent();
51177
51493
  /**
51178
- * An event that is raised after a question value is changed
51494
+ * An event that is raised after a question value is changed.
51179
51495
  *
51180
51496
  * For information on event handler parameters, refer to descriptions within the interface.
51181
51497
  *
@@ -51663,6 +51979,10 @@ var SurveyModel = /** @class */ (function (_super) {
51663
51979
  * An event that is raised after an item value is changed in a panel within a [Dynamic Panel](https://surveyjs.io/form-library/examples/questiontype-paneldynamic/) question.
51664
51980
  */
51665
51981
  _this.onDynamicPanelItemValueChanged = _this.addEvent();
51982
+ /**
51983
+ * An event that is raised before a [Dynamic Panel](https://surveyjs.io/form-library/examples/questiontype-paneldynamic/) renders [tab titles](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#templateTabTitle). Use this event to change individual tab titles.
51984
+ */
51985
+ _this.onGetDynamicPanelTabTitle = _this.addEvent();
51666
51986
  /**
51667
51987
  * Use this event to define, whether an answer to a question is correct or not.
51668
51988
  * @see Question.value
@@ -51880,6 +52200,16 @@ var SurveyModel = /** @class */ (function (_super) {
51880
52200
  _this.setCalculatedWidthModeUpdater();
51881
52201
  _this.notifier = new _notifier__WEBPACK_IMPORTED_MODULE_19__["Notifier"](_this.css.saveData);
51882
52202
  _this.notifier.addAction(_this.createTryAgainAction(), "error");
52203
+ _this.onPopupVisibleChanged.add(function (_, opt) {
52204
+ if (opt.visible) {
52205
+ _this.onScrollCallback = function () {
52206
+ opt.popup.toggleVisibility();
52207
+ };
52208
+ }
52209
+ else {
52210
+ _this.onScrollCallback = undefined;
52211
+ }
52212
+ });
51883
52213
  _this.layoutElements.push({
51884
52214
  id: "timerpanel",
51885
52215
  template: "survey-timerpanel",
@@ -52055,6 +52385,14 @@ var SurveyModel = /** @class */ (function (_super) {
52055
52385
  this.containerCss = this.css.container;
52056
52386
  this.completedCss = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_18__["CssClassBuilder"]().append(this.css.body)
52057
52387
  .append(this.css.completedPage).toString(); // for completed page
52388
+ this.completedBeforeCss = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_18__["CssClassBuilder"]()
52389
+ .append(this.css.body)
52390
+ .append(this.css.completedBeforePage)
52391
+ .toString();
52392
+ this.loadingBodyCss = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_18__["CssClassBuilder"]()
52393
+ .append(this.css.body)
52394
+ .append(this.css.bodyLoading)
52395
+ .toString();
52058
52396
  };
52059
52397
  SurveyModel.prototype.updateCss = function () {
52060
52398
  this.rootCss = this.getRootCss();
@@ -52305,7 +52643,7 @@ var SurveyModel = /** @class */ (function (_super) {
52305
52643
  /**
52306
52644
  * Specifies whether to save survey results when respondents switch between pages. Handle the [`onPartialSend`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onPartialSend) event to implement the save operation.
52307
52645
  *
52308
- * [Continue an Incomplete Survey](https://surveyjs.io/form-library/documentation/handle-survey-results-continue-incomplete (linkStyle))
52646
+ * Alternatively, you can handle the [`onCurrentPageChanged`](#onCurrentPageChanged) and [`onValueChanged`](#onValueChanged) events, as shown in the following demo: [Continue an Incomplete Survey](https://surveyjs.io/form-library/examples/survey-editprevious/).
52309
52647
  */
52310
52648
  get: function () {
52311
52649
  return this.getPropertyValue("sendResultOnPageNext");
@@ -53861,11 +54199,12 @@ var SurveyModel = /** @class */ (function (_super) {
53861
54199
  SurveyModel.prototype.getProgressTypeComponent = function () {
53862
54200
  return "sv-progress-" + this.progressBarType.toLowerCase();
53863
54201
  };
53864
- SurveyModel.prototype.getProgressCssClasses = function () {
54202
+ SurveyModel.prototype.getProgressCssClasses = function (container) {
54203
+ if (container === void 0) { container = ""; }
53865
54204
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_18__["CssClassBuilder"]()
53866
54205
  .append(this.css.progress)
53867
- .append(this.css.progressTop, this.isShowProgressBarOnTop)
53868
- .append(this.css.progressBottom, this.isShowProgressBarOnBottom)
54206
+ .append(this.css.progressTop, this.isShowProgressBarOnTop && (!container || container == "header"))
54207
+ .append(this.css.progressBottom, this.isShowProgressBarOnBottom && (!container || container == "footer"))
53869
54208
  .toString();
53870
54209
  };
53871
54210
  SurveyModel.prototype.canShowProresBar = function () {
@@ -54213,6 +54552,11 @@ var SurveyModel = /** @class */ (function (_super) {
54213
54552
  var key = keys[i];
54214
54553
  values[key] = this.getDataValueCore(this.valuesHash, key);
54215
54554
  }
54555
+ this.getAllQuestions().forEach(function (q) {
54556
+ if (q.hasFilteredValue) {
54557
+ values[q.getValueName()] = q.getFilteredValue();
54558
+ }
54559
+ });
54216
54560
  return values;
54217
54561
  };
54218
54562
  SurveyModel.prototype.addCalculatedValuesIntoFilteredValues = function (values) {
@@ -56139,6 +56483,7 @@ var SurveyModel = /** @class */ (function (_super) {
56139
56483
  .append(this.css.rootMobile, this.isMobile)
56140
56484
  .append(this.css.rootReadOnly, this.mode === "display")
56141
56485
  .append(this.css.rootCompact, this.isCompact)
56486
+ .append(this.css.rootFitToContainer, this.fitToContainer)
56142
56487
  .toString();
56143
56488
  };
56144
56489
  SurveyModel.prototype.afterRenderSurvey = function (htmlElement) {
@@ -56169,6 +56514,7 @@ var SurveyModel = /** @class */ (function (_super) {
56169
56514
  htmlElement: htmlElement,
56170
56515
  });
56171
56516
  this.rootElement = htmlElement;
56517
+ this.addScrollEventListener();
56172
56518
  };
56173
56519
  SurveyModel.prototype.processResponsiveness = function (width, mobileWidth) {
56174
56520
  var isMobile = width < mobileWidth;
@@ -56431,6 +56777,10 @@ var SurveyModel = /** @class */ (function (_super) {
56431
56777
  options.panelData = options.itemValue;
56432
56778
  this.onDynamicPanelItemValueChanged.fire(this, options);
56433
56779
  };
56780
+ SurveyModel.prototype.dynamicPanelGetTabTitle = function (question, options) {
56781
+ options.question = question;
56782
+ this.onGetDynamicPanelTabTitle.fire(this, options);
56783
+ };
56434
56784
  SurveyModel.prototype.dragAndDropAllow = function (options) {
56435
56785
  this.onDragDropAllow.fire(this, options);
56436
56786
  return options.allow;
@@ -56693,9 +57043,11 @@ var SurveyModel = /** @class */ (function (_super) {
56693
57043
  }
56694
57044
  };
56695
57045
  /**
56696
- * Returns a question by its name.
56697
- * @param name a question name
56698
- * @param caseInsensitive
57046
+ * Returns a question with a specified [`name`](https://surveyjs.io/form-library/documentation/api-reference/question#name).
57047
+ * @param name A question name
57048
+ * @param caseInsensitive (Optional) A Boolean value that specifies case sensitivity when searching for the question. Default value: `false` (uppercase and lowercase letters are treated as distinct).
57049
+ * @returns A question with a specified name.
57050
+ * @see getAllQuestions
56699
57051
  * @see getQuestionByValueName
56700
57052
  */
56701
57053
  SurveyModel.prototype.getQuestionByName = function (name, caseInsensitive) {
@@ -56717,12 +57069,14 @@ var SurveyModel = /** @class */ (function (_super) {
56717
57069
  return this.getQuestionByName(name);
56718
57070
  };
56719
57071
  /**
56720
- * Returns a question by its value name
56721
- * @param valueName a question name
56722
- * @param caseInsensitive
57072
+ * Returns a question with a specified [`valueName`](https://surveyjs.io/form-library/documentation/api-reference/question#valueName).
57073
+ *
57074
+ * > Since `valueName` does not have to be unique, multiple questions can have the same `valueName` value. In this case, the `getQuestionByValueName()` method returns the first such question. If you need to get all questions with the same `valueName`, call the `getQuestionsByValueName()` method.
57075
+ * @param valueName A question's `valueName` property value.
57076
+ * @param caseInsensitive (Optional) A Boolean value that specifies case sensitivity when searching for the question. Default value: `false` (uppercase and lowercase letters are treated as distinct).
57077
+ * @returns A question with a specified `valueName`.
57078
+ * @see getAllQuestions
56723
57079
  * @see getQuestionByName
56724
- * @see getQuestionsByValueName
56725
- * @see Question.valueName
56726
57080
  */
56727
57081
  SurveyModel.prototype.getQuestionByValueName = function (valueName, caseInsensitive) {
56728
57082
  if (caseInsensitive === void 0) { caseInsensitive = false; }
@@ -56730,12 +57084,12 @@ var SurveyModel = /** @class */ (function (_super) {
56730
57084
  return !!res ? res[0] : null;
56731
57085
  };
56732
57086
  /**
56733
- * Returns all questions by their valueName. name property is used if valueName property is empty.
56734
- * @param valueName a question name
56735
- * @param caseInsensitive
57087
+ * Returns all questions with a specified [`valueName`](https://surveyjs.io/form-library/documentation/api-reference/question#valueName). If a question's `valueName` is undefined, its [`name`](https://surveyjs.io/form-library/documentation/api-reference/question#name) property is used.
57088
+ * @param valueName A question's `valueName` property value.
57089
+ * @param caseInsensitive (Optional) A Boolean value that specifies case sensitivity when searching for the questions. Default value: `false` (uppercase and lowercase letters are treated as distinct).
57090
+ * @returns An array of questions with a specified `valueName`.
57091
+ * @see getAllQuestions
56736
57092
  * @see getQuestionByName
56737
- * @see getQuestionByValueName
56738
- * @see Question.valueName
56739
57093
  */
56740
57094
  SurveyModel.prototype.getQuestionsByValueName = function (valueName, caseInsensitive) {
56741
57095
  if (caseInsensitive === void 0) { caseInsensitive = false; }
@@ -56755,9 +57109,11 @@ var SurveyModel = /** @class */ (function (_super) {
56755
57109
  return null;
56756
57110
  };
56757
57111
  /**
56758
- * Gets a list of questions by their names.
56759
- * @param names an array of question names
56760
- * @param caseInsensitive
57112
+ * Returns an array of questions with specified [names](https://surveyjs.io/form-library/documentation/api-reference/question#name).
57113
+ * @param names An array of question names.
57114
+ * @param caseInsensitive (Optional) A Boolean value that specifies case sensitivity when searching for the questions. Default value: `false` (uppercase and lowercase letters are treated as distinct).
57115
+ * @returns An array of questions with specified names
57116
+ * @see getAllQuestions
56761
57117
  */
56762
57118
  SurveyModel.prototype.getQuestionsByNames = function (names, caseInsensitive) {
56763
57119
  if (caseInsensitive === void 0) { caseInsensitive = false; }
@@ -56821,10 +57177,12 @@ var SurveyModel = /** @class */ (function (_super) {
56821
57177
  return result;
56822
57178
  };
56823
57179
  /**
56824
- * Returns a list of all questions in the survey.
57180
+ * Returns a list of all [questions](https://surveyjs.io/form-library/documentation/api-reference/question) in the survey.
56825
57181
  * @param visibleOnly A Boolean value that specifies whether to include only visible questions.
56826
57182
  * @param includeDesignTime For internal use.
56827
57183
  * @param includeNested A Boolean value that specifies whether to include nested questions, such as questions within matrix cells.
57184
+ * @returns An array of questions.
57185
+ * @see getQuestionByName
56828
57186
  */
56829
57187
  SurveyModel.prototype.getAllQuestions = function (visibleOnly, includeDesignTime, includeNested) {
56830
57188
  if (visibleOnly === void 0) { visibleOnly = false; }
@@ -56846,7 +57204,10 @@ var SurveyModel = /** @class */ (function (_super) {
56846
57204
  return res2;
56847
57205
  };
56848
57206
  /**
56849
- * Returns quiz questions. All visible questions that has input(s) widgets.
57207
+ * Returns an array of quiz questions. A question counts if it is visible, has an input field, and specifies [`correctAnswer`](https://surveyjs.io/form-library/documentation/api-reference/checkbox-question-model#correctAnswer).
57208
+ *
57209
+ * For more information about quizzes, refer to the following tutorial: [Create a Quiz](https://surveyjs.io/form-library/documentation/design-survey/create-a-quiz).
57210
+ * @returns An array of quiz questions.
56850
57211
  * @see getQuizQuestionCount
56851
57212
  */
56852
57213
  SurveyModel.prototype.getQuizQuestions = function () {
@@ -56866,10 +57227,11 @@ var SurveyModel = /** @class */ (function (_super) {
56866
57227
  return result;
56867
57228
  };
56868
57229
  /**
56869
- * Returns a panel by its name.
56870
- * @param name a panel name
56871
- * @param caseInsensitive
56872
- * @see getQuestionByName
57230
+ * Returns a [panel](https://surveyjs.io/form-library/documentation/api-reference/panel-model) with a specified [`name`](https://surveyjs.io/form-library/documentation/api-reference/panel-model#name).
57231
+ * @param name A panel name.
57232
+ * @param caseInsensitive (Optional) A Boolean value that specifies case sensitivity when searching for the panel. Default value: `false` (uppercase and lowercase letters are treated as distinct).
57233
+ * @returns A panel with a specified name.
57234
+ * @see getAllPanels
56873
57235
  */
56874
57236
  SurveyModel.prototype.getPanelByName = function (name, caseInsensitive) {
56875
57237
  if (caseInsensitive === void 0) { caseInsensitive = false; }
@@ -56886,7 +57248,11 @@ var SurveyModel = /** @class */ (function (_super) {
56886
57248
  return null;
56887
57249
  };
56888
57250
  /**
56889
- * Returns a list of all survey's panels.
57251
+ * Returns a list of all [panels](https://surveyjs.io/form-library/documentation/api-reference/panel-model) in the survey.
57252
+ * @param visibleOnly A Boolean value that specifies whether to include only visible panels.
57253
+ * @param includeDesignTime For internal use.
57254
+ * @returns An array of panels.
57255
+ * @see getPanelByName
56890
57256
  */
56891
57257
  SurveyModel.prototype.getAllPanels = function (visibleOnly, includeDesignTime) {
56892
57258
  if (visibleOnly === void 0) { visibleOnly = false; }
@@ -57601,9 +57967,13 @@ var SurveyModel = /** @class */ (function (_super) {
57601
57967
  }
57602
57968
  };
57603
57969
  /**
57604
- * Returns a variable value. Variable, unlike values, are not stored in the survey results.
57605
- * @param name A variable name
57606
- * @see SetVariable
57970
+ * Returns a variable value.
57971
+ *
57972
+ * [Variables help topic](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#variables (linkStyle))
57973
+ * @param name A variable name.
57974
+ * @return A variable value.
57975
+ * @see setVariable
57976
+ * @see getVariableNames
57607
57977
  */
57608
57978
  SurveyModel.prototype.getVariable = function (name) {
57609
57979
  if (!name)
@@ -57619,10 +57989,13 @@ var SurveyModel = /** @class */ (function (_super) {
57619
57989
  return res;
57620
57990
  };
57621
57991
  /**
57622
- * Sets a variable value. Variable, unlike values, are not stored in the survey results.
57623
- * @param name A variable name
57624
- * @param newValue A variable new value
57625
- * @see GetVariable
57992
+ * Sets a variable value.
57993
+ *
57994
+ * [Variables help topic](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#variables (linkStyle))
57995
+ * @param name A variable name.
57996
+ * @param newValue A new variable value.
57997
+ * @see getVariable
57998
+ * @see getVariableNames
57626
57999
  */
57627
58000
  SurveyModel.prototype.setVariable = function (name, newValue) {
57628
58001
  if (!name)
@@ -57637,7 +58010,10 @@ var SurveyModel = /** @class */ (function (_super) {
57637
58010
  this.onVariableChanged.fire(this, { name: name, value: newValue });
57638
58011
  };
57639
58012
  /**
57640
- * Returns all variables in the survey. Use setVariable function to create a new variable.
58013
+ * Returns the names of all variables in the survey.
58014
+ *
58015
+ * [Variables help topic](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#variables (linkStyle))
58016
+ * @returns An array of variable names.
57641
58017
  * @see getVariable
57642
58018
  * @see setVariable
57643
58019
  */
@@ -57655,8 +58031,9 @@ var SurveyModel = /** @class */ (function (_super) {
57655
58031
  return _helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].getUnbindValue(value);
57656
58032
  };
57657
58033
  /**
57658
- * Returns a question value (answer) by a question's name.
57659
- * @param name A question name
58034
+ * Returns a value (answer) for a question with a specified `name`.
58035
+ * @param name A question name.
58036
+ * @returns A question value (answer).
57660
58037
  * @see data
57661
58038
  * @see setValue
57662
58039
  */
@@ -57667,16 +58044,15 @@ var SurveyModel = /** @class */ (function (_super) {
57667
58044
  return this.getUnbindValue(value);
57668
58045
  };
57669
58046
  /**
57670
- * Sets a question value (answer). It runs all triggers and conditions (`visibleIf` properties).
58047
+ * Sets a question value (answer).
57671
58048
  *
57672
- * Goes to the next page if `goNextPageAutomatic` is `true` and all questions on the current page are answered correctly.
57673
- * @param name A question name
57674
- * @param newValue A new question value
58049
+ * > This method executes all triggers and reevaluates conditions (`visibleIf`, `requiredId`, and others). It also switches the survey to the next page if the [`goNextPageAutomatic`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#goNextPageAutomatic) property is enabled and all questions on the current page have correct answers.
58050
+ * @param name A question name.
58051
+ * @param newValue A new question value.
58052
+ * @param locNotification For internal use.
58053
+ * @param allowNotifyValueChanged For internal use.
57675
58054
  * @see data
57676
58055
  * @see getValue
57677
- * @see PageModel.visibleIf
57678
- * @see Question.visibleIf
57679
- * @see goNextPageAutomatic
57680
58056
  */
57681
58057
  SurveyModel.prototype.setValue = function (name, newQuestionValue, locNotification, allowNotifyValueChanged) {
57682
58058
  if (locNotification === void 0) { locNotification = false; }
@@ -57693,7 +58069,7 @@ var SurveyModel = /** @class */ (function (_super) {
57693
58069
  this.isTwoValueEquals(newValue, newQuestionValue))
57694
58070
  return;
57695
58071
  var oldValue = this.getValue(name);
57696
- if (this.isValueEmpty(newValue, false)) {
58072
+ if (this.isValueEmpyOnSetValue(name, newValue)) {
57697
58073
  this.deleteDataValueCore(this.valuesHash, name);
57698
58074
  }
57699
58075
  else {
@@ -57702,6 +58078,13 @@ var SurveyModel = /** @class */ (function (_super) {
57702
58078
  }
57703
58079
  this.updateOnSetValue(name, newValue, oldValue, locNotification, allowNotifyValueChanged);
57704
58080
  };
58081
+ SurveyModel.prototype.isValueEmpyOnSetValue = function (name, val) {
58082
+ if (!this.isValueEmpty(val, false))
58083
+ return false;
58084
+ if (!this.editingObj || val === null || val === undefined)
58085
+ return true;
58086
+ return this.editingObj.getDefaultPropertyValue(name) === val;
58087
+ };
57705
58088
  SurveyModel.prototype.updateOnSetValue = function (name, newValue, oldValue, locNotification, allowNotifyValueChanged) {
57706
58089
  if (locNotification === void 0) { locNotification = false; }
57707
58090
  if (allowNotifyValueChanged === void 0) { allowNotifyValueChanged = true; }
@@ -57800,8 +58183,9 @@ var SurveyModel = /** @class */ (function (_super) {
57800
58183
  }
57801
58184
  };
57802
58185
  /**
57803
- * Returns the comment value.
57804
- * @param name A comment's name.
58186
+ * Returns a comment value from a question with a specified `name`.
58187
+ * @param name A question name.
58188
+ * @returns A comment.
57805
58189
  * @see setComment
57806
58190
  */
57807
58191
  SurveyModel.prototype.getComment = function (name) {
@@ -57809,9 +58193,10 @@ var SurveyModel = /** @class */ (function (_super) {
57809
58193
  return res || "";
57810
58194
  };
57811
58195
  /**
57812
- * Sets a comment value.
57813
- * @param name A comment name.
58196
+ * Sets a comment value to a question with a specified `name`.
58197
+ * @param name A question name.
57814
58198
  * @param newValue A new comment value.
58199
+ * @param locNotification For internal use.
57815
58200
  * @see getComment
57816
58201
  */
57817
58202
  SurveyModel.prototype.setComment = function (name, newValue, locNotification) {
@@ -58084,13 +58469,23 @@ var SurveyModel = /** @class */ (function (_super) {
58084
58469
  return this.getCorrectedAnswerCountCore(true);
58085
58470
  };
58086
58471
  /**
58087
- * Returns an amount of corrected quiz answers.
58472
+ * Returns the number of correct answers in a quiz.
58473
+ *
58474
+ * For more information about quizzes, refer to the following tutorial: [Create a Quiz](https://surveyjs.io/form-library/documentation/design-survey/create-a-quiz).
58475
+ * @returns The number of correct answers in a quiz.
58476
+ * @see getQuizQuestionCount
58477
+ * @see getInCorrectAnswerCount
58088
58478
  */
58089
58479
  SurveyModel.prototype.getCorrectAnswerCount = function () {
58090
58480
  return this.getCorrectedAnswerCountCore(true);
58091
58481
  };
58092
58482
  /**
58093
- * Returns quiz question number. It may be different from `getQuizQuestions.length` because some widgets like matrix may have several questions.
58483
+ * Returns the number of quiz questions. A question counts if it is visible, has an input field, and specifies [`correctAnswer`](https://surveyjs.io/form-library/documentation/api-reference/checkbox-question-model#correctAnswer).
58484
+ *
58485
+ * This number may be different from `getQuizQuestions().length` because certain question types (for instance, matrix-like types) include more than one question.
58486
+ *
58487
+ * For more information about quizzes, refer to the following tutorial: [Create a Quiz](https://surveyjs.io/form-library/documentation/design-survey/create-a-quiz).
58488
+ * @returns The number of quiz questions.
58094
58489
  * @see getQuizQuestions
58095
58490
  */
58096
58491
  SurveyModel.prototype.getQuizQuestionCount = function () {
@@ -58105,7 +58500,11 @@ var SurveyModel = /** @class */ (function (_super) {
58105
58500
  return this.getCorrectedAnswerCountCore(false);
58106
58501
  };
58107
58502
  /**
58108
- * Returns an amount of incorrect quiz answers.
58503
+ * Returns the number of incorrect answers in a quiz.
58504
+ *
58505
+ * For more information about quizzes, refer to the following tutorial: [Create a Quiz](https://surveyjs.io/form-library/documentation/design-survey/create-a-quiz).
58506
+ * @returns The number of incorrect answers in a quiz.
58507
+ * @see getCorrectAnswerCount
58109
58508
  */
58110
58509
  SurveyModel.prototype.getInCorrectAnswerCount = function () {
58111
58510
  return this.getCorrectedAnswerCountCore(false);
@@ -58745,7 +59144,7 @@ var SurveyModel = /** @class */ (function (_super) {
58745
59144
  containerLayoutElements.push(layoutElement);
58746
59145
  }
58747
59146
  }
58748
- if (container === "contentBottom") {
59147
+ if (container === "footer") {
58749
59148
  if (this.isShowProgressBarOnBottom && !this.isShowStartingPage) {
58750
59149
  containerLayoutElements.push(layoutElement);
58751
59150
  }
@@ -58804,12 +59203,14 @@ var SurveyModel = /** @class */ (function (_super) {
58804
59203
  * Use this method to dispose survey model properly.
58805
59204
  */
58806
59205
  SurveyModel.prototype.dispose = function () {
58807
- this.currentPage = null;
59206
+ this.removeScrollEventListener();
58808
59207
  this.destroyResizeObserver();
59208
+ this.rootElement = undefined;
58809
59209
  _super.prototype.dispose.call(this);
58810
59210
  this.editingObj = null;
58811
59211
  if (!this.pages)
58812
59212
  return;
59213
+ this.currentPage = null;
58813
59214
  for (var i = 0; i < this.pages.length; i++) {
58814
59215
  this.pages[i].setSurveyImpl(undefined);
58815
59216
  this.pages[i].dispose();
@@ -58819,15 +59220,39 @@ var SurveyModel = /** @class */ (function (_super) {
58819
59220
  this.disposeCallback();
58820
59221
  }
58821
59222
  };
59223
+ SurveyModel.prototype.onScroll = function () {
59224
+ if (this.onScrollCallback) {
59225
+ this.onScrollCallback();
59226
+ }
59227
+ };
59228
+ SurveyModel.prototype.addScrollEventListener = function () {
59229
+ var _this = this;
59230
+ this.scrollHandler = function () { _this.onScroll(); };
59231
+ this.rootElement.addEventListener("scroll", this.scrollHandler);
59232
+ };
59233
+ SurveyModel.prototype.removeScrollEventListener = function () {
59234
+ if (!!this.rootElement && !!this.scrollHandler) {
59235
+ this.rootElement.removeEventListener("scroll", this.scrollHandler);
59236
+ }
59237
+ };
58822
59238
  SurveyModel.TemplateRendererComponentName = "sv-template-renderer";
58823
59239
  SurveyModel.stylesManager = null;
58824
59240
  SurveyModel.platform = "unknown";
58825
59241
  __decorate([
58826
59242
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
58827
59243
  ], SurveyModel.prototype, "completedCss", void 0);
59244
+ __decorate([
59245
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
59246
+ ], SurveyModel.prototype, "completedBeforeCss", void 0);
59247
+ __decorate([
59248
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
59249
+ ], SurveyModel.prototype, "loadingBodyCss", void 0);
58828
59250
  __decorate([
58829
59251
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
58830
59252
  ], SurveyModel.prototype, "containerCss", void 0);
59253
+ __decorate([
59254
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ onSet: function (newValue, target) { target.updateCss(); } })
59255
+ ], SurveyModel.prototype, "fitToContainer", void 0);
58831
59256
  __decorate([
58832
59257
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
58833
59258
  ], SurveyModel.prototype, "showBrandInfo", void 0);
@@ -59103,6 +59528,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("survey", [
59103
59528
  choices: ["auto", "static", "responsive"],
59104
59529
  },
59105
59530
  { name: "width", visibleIf: function (obj) { return obj.widthMode === "static"; } },
59531
+ { name: "fitToContainer:boolean", default: false },
59106
59532
  { name: "backgroundImage", visible: false },
59107
59533
  { name: "backgroundImageFit", default: "cover", choices: ["auto", "contain", "cover"], visible: false },
59108
59534
  { name: "backgroundImageAttachment", default: "scroll", choices: ["scroll", "fixed"], visible: false },
@@ -61177,37 +61603,6 @@ var VerticalResponsivityManager = /** @class */ (function (_super) {
61177
61603
 
61178
61604
 
61179
61605
 
61180
- /***/ }),
61181
-
61182
- /***/ "./src/utils/tooltip.ts":
61183
- /*!******************************!*\
61184
- !*** ./src/utils/tooltip.ts ***!
61185
- \******************************/
61186
- /*! exports provided: TooltipManager */
61187
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
61188
-
61189
- "use strict";
61190
- __webpack_require__.r(__webpack_exports__);
61191
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TooltipManager", function() { return TooltipManager; });
61192
- var TooltipManager = /** @class */ (function () {
61193
- function TooltipManager(tooltipElement) {
61194
- var _this = this;
61195
- this.tooltipElement = tooltipElement;
61196
- this.onMouseMoveCallback = function (e) {
61197
- _this.tooltipElement.style.left = e.clientX + 12 + "px";
61198
- _this.tooltipElement.style.top = e.clientY + 12 + "px";
61199
- };
61200
- this.targetElement = tooltipElement.parentElement;
61201
- this.targetElement.addEventListener("mousemove", this.onMouseMoveCallback);
61202
- }
61203
- TooltipManager.prototype.dispose = function () {
61204
- this.targetElement.removeEventListener("mousemove", this.onMouseMoveCallback);
61205
- };
61206
- return TooltipManager;
61207
- }());
61208
-
61209
-
61210
-
61211
61606
  /***/ }),
61212
61607
 
61213
61608
  /***/ "./src/utils/utils.ts":