survey-core 1.9.105 → 1.9.107

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 (167) hide show
  1. package/defaultV2.css +363 -94
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +363 -94
  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 +762 -325
  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 +4 -2
  126. package/ts3.4/typings/question_baseselect.d.ts +1 -2
  127. package/ts3.4/typings/question_checkbox.d.ts +3 -0
  128. package/ts3.4/typings/question_file.d.ts +7 -3
  129. package/ts3.4/typings/question_matrixdropdownbase.d.ts +4 -3
  130. package/ts3.4/typings/question_matrixdropdowncolumn.d.ts +4 -2
  131. package/ts3.4/typings/question_multipletext.d.ts +25 -3
  132. package/ts3.4/typings/question_ranking.d.ts +1 -0
  133. package/ts3.4/typings/question_tagbox.d.ts +3 -1
  134. package/ts3.4/typings/survey-element.d.ts +1 -4
  135. package/ts3.4/typings/survey-events-api.d.ts +16 -2
  136. package/ts3.4/typings/survey.d.ts +110 -55
  137. package/ts3.4/typings/utils/popup.d.ts +4 -1
  138. package/typings/actions/action.d.ts +1 -0
  139. package/typings/actions/adaptive-container.d.ts +1 -0
  140. package/typings/actions/container.d.ts +1 -0
  141. package/typings/base-interfaces.d.ts +6 -1
  142. package/typings/base.d.ts +3 -0
  143. package/typings/defaultCss/defaultV2Css.d.ts +6 -0
  144. package/typings/dragdrop/dom-adapter.d.ts +1 -0
  145. package/typings/dropdownListModel.d.ts +1 -0
  146. package/typings/dropdownMultiSelectListModel.d.ts +1 -0
  147. package/typings/entries/chunks/model.d.ts +1 -1
  148. package/typings/entries/core-wo-model.d.ts +0 -1
  149. package/typings/localizablestring.d.ts +8 -2
  150. package/typings/popup-dropdown-view-model.d.ts +4 -0
  151. package/typings/popup-survey.d.ts +0 -1
  152. package/typings/popup-view-model.d.ts +3 -0
  153. package/typings/popup.d.ts +3 -1
  154. package/typings/question.d.ts +4 -2
  155. package/typings/question_baseselect.d.ts +1 -2
  156. package/typings/question_checkbox.d.ts +3 -0
  157. package/typings/question_file.d.ts +7 -3
  158. package/typings/question_matrixdropdownbase.d.ts +4 -3
  159. package/typings/question_matrixdropdowncolumn.d.ts +5 -2
  160. package/typings/question_multipletext.d.ts +25 -3
  161. package/typings/question_ranking.d.ts +1 -0
  162. package/typings/question_tagbox.d.ts +3 -1
  163. package/typings/survey-element.d.ts +1 -4
  164. package/typings/survey-events-api.d.ts +16 -2
  165. package/typings/survey.d.ts +110 -55
  166. package/typings/utils/popup.d.ts +4 -1
  167. 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.107
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;
@@ -1871,11 +1901,13 @@ var Base = /** @class */ (function () {
1871
1901
  return {};
1872
1902
  };
1873
1903
  Base.prototype.dispose = function () {
1904
+ var _this = this;
1874
1905
  for (var i = 0; i < this.eventList.length; i++) {
1875
1906
  this.eventList[i].clear();
1876
1907
  }
1877
1908
  this.onPropertyValueChangedCallback = undefined;
1878
1909
  this.isDisposedValue = true;
1910
+ Object.keys(this.dependencies).forEach(function (key) { return _this.dependencies[key].dispose(); });
1879
1911
  };
1880
1912
  Object.defineProperty(Base.prototype, "isDisposed", {
1881
1913
  get: function () {
@@ -2079,6 +2111,9 @@ var Base = /** @class */ (function () {
2079
2111
  var dValue = prop.defaultValue;
2080
2112
  if (!this.isPropertyEmpty(dValue) && !Array.isArray(dValue))
2081
2113
  return dValue;
2114
+ var locStr = this.localizableStrings ? this.localizableStrings[name] : undefined;
2115
+ if (locStr && locStr.localizationName)
2116
+ return this.getLocalizationString(locStr.localizationName);
2082
2117
  if (prop.type == "boolean" || prop.type == "switch")
2083
2118
  return false;
2084
2119
  if (prop.isCustom && !!prop.onGetValue)
@@ -2089,7 +2124,13 @@ var Base = /** @class */ (function () {
2089
2124
  return this.getDefaultPropertyValue(name) !== undefined;
2090
2125
  };
2091
2126
  Base.prototype.resetPropertyValue = function (name) {
2092
- this.setPropertyValue(name, undefined);
2127
+ var locStr = this.localizableStrings ? this.localizableStrings[name] : undefined;
2128
+ if (locStr) {
2129
+ locStr.clearLocale();
2130
+ }
2131
+ else {
2132
+ this.setPropertyValue(name, undefined);
2133
+ }
2093
2134
  };
2094
2135
  Base.prototype.getPropertyValueWithoutDefault = function (name) {
2095
2136
  return this.getPropertyValueCore(this.propertyHash, name);
@@ -5158,6 +5199,7 @@ var defaultV2Css = {
5158
5199
  rootMobile: "sd-root-modern--mobile",
5159
5200
  rootReadOnly: "sd-root--readonly",
5160
5201
  rootCompact: "sd-root--compact",
5202
+ rootFitToContainer: "sd-root-modern--full-container",
5161
5203
  rootBackgroundImage: "sd-root_background-image",
5162
5204
  container: "sd-container-modern",
5163
5205
  header: "sd-title sd-container-modern__title",
@@ -5173,6 +5215,7 @@ var defaultV2Css = {
5173
5215
  clockTimerMinorText: "sd-timer__text--minor",
5174
5216
  clockTimerMajorText: "sd-timer__text--major",
5175
5217
  bodyEmpty: "sd-body sd-body--empty",
5218
+ bodyLoading: "sd-body--loading",
5176
5219
  footer: "sd-footer sd-body__navigation sd-clearfix",
5177
5220
  title: "sd-title",
5178
5221
  description: "sd-description",
@@ -5183,6 +5226,7 @@ var defaultV2Css = {
5183
5226
  navigationButton: "",
5184
5227
  bodyNavigationButton: "sd-btn",
5185
5228
  completedPage: "sd-completedpage",
5229
+ completedBeforePage: "sd-completed-before-page",
5186
5230
  timerRoot: "sd-body__timer",
5187
5231
  navigation: {
5188
5232
  complete: "sd-btn--action sd-navigation__complete-btn",
@@ -5458,7 +5502,10 @@ var defaultV2Css = {
5458
5502
  itemTitle: "sd-multipletext__item-title",
5459
5503
  content: "sd-multipletext__content sd-question__content",
5460
5504
  row: "sd-multipletext__row",
5461
- cell: "sd-multipletext__cell"
5505
+ cell: "sd-multipletext__cell",
5506
+ cellError: "sd-multipletext__cell--error",
5507
+ cellErrorTop: "sd-multipletext__cell--error-top",
5508
+ cellErrorBottom: "sd-multipletext__cell--error-bottom"
5462
5509
  },
5463
5510
  dropdown: {
5464
5511
  root: "sd-selectbase",
@@ -6776,9 +6823,13 @@ var DragDropDOMAdapter = /** @class */ (function () {
6776
6823
  _this.draggedElementShortcut = null;
6777
6824
  _this.scrollIntervalId = null;
6778
6825
  if (_utils_devices__WEBPACK_IMPORTED_MODULE_1__["IsTouch"]) {
6826
+ _this.savedTargetNode.style.cssText = null;
6779
6827
  _this.savedTargetNode && _this.savedTargetNode.parentElement.removeChild(_this.savedTargetNode);
6828
+ _this.savedTargetNodeParent.appendChild(_this.savedTargetNode);
6780
6829
  DragDropDOMAdapter.PreventScrolling = false;
6781
6830
  }
6831
+ _this.savedTargetNode = null;
6832
+ _this.savedTargetNodeParent = null;
6782
6833
  document.body.style.setProperty("touch-action", "");
6783
6834
  document.body.style.setProperty("user-select", "");
6784
6835
  document.body.style.setProperty("-webkit-user-select", "");
@@ -6826,6 +6877,7 @@ var DragDropDOMAdapter = /** @class */ (function () {
6826
6877
  _this.savedTargetNode = event.target;
6827
6878
  _this.savedTargetNode.style.cssText =
6828
6879
  "\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 ";
6880
+ _this.savedTargetNodeParent = _this.savedTargetNode.parentElement;
6829
6881
  _this.rootElement.appendChild(_this.savedTargetNode);
6830
6882
  }
6831
6883
  _this.stopLongTap();
@@ -6907,9 +6959,12 @@ var DragDropDOMAdapter = /** @class */ (function () {
6907
6959
  var _this = this;
6908
6960
  cancelAnimationFrame(this.scrollIntervalId);
6909
6961
  var startScrollBoundary = 100;
6910
- this.draggedElementShortcut.hidden = true;
6962
+ var displayProp = this.draggedElementShortcut.style.display;
6963
+ //this.draggedElementShortcut.hidden = true;
6964
+ this.draggedElementShortcut.style.display = "none";
6911
6965
  var dragOverNode = document.elementFromPoint(clientX, clientY);
6912
- this.draggedElementShortcut.hidden = false;
6966
+ //this.draggedElementShortcut.hidden = false;
6967
+ this.draggedElementShortcut.style.display = displayProp || "block";
6913
6968
  var scrollableParentNode = Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__["findScrollableParent"])(dragOverNode);
6914
6969
  var top;
6915
6970
  var bottom;
@@ -7554,9 +7609,10 @@ var DropdownListModel = /** @class */ (function (_super) {
7554
7609
  _this.filterString = newValue;
7555
7610
  }
7556
7611
  };
7557
- question.onPropertyChanged.add(function (sender, options) {
7612
+ _this.qustionPropertyChangedHandler = function (sender, options) {
7558
7613
  _this.onPropertyChangedHandler(sender, options);
7559
- });
7614
+ };
7615
+ question.onPropertyChanged.add(_this.qustionPropertyChangedHandler);
7560
7616
  _this.showInputFieldComponent = _this.question.showInputFieldComponent;
7561
7617
  _this.listModel = _this.createListModel();
7562
7618
  _this.updateAfterListModelCreated(_this.listModel);
@@ -8081,6 +8137,8 @@ var DropdownListModel = /** @class */ (function (_super) {
8081
8137
  };
8082
8138
  DropdownListModel.prototype.dispose = function () {
8083
8139
  _super.prototype.dispose.call(this);
8140
+ this.question && this.question.onPropertyChanged.remove(this.qustionPropertyChangedHandler);
8141
+ this.qustionPropertyChangedHandler = undefined;
8084
8142
  if (!!this.listModel) {
8085
8143
  this.listModel.dispose();
8086
8144
  }
@@ -8192,6 +8250,10 @@ var DropdownMultiSelectListModel = /** @class */ (function (_super) {
8192
8250
  _this.closeOnSelect = question.closeOnSelect;
8193
8251
  return _this;
8194
8252
  }
8253
+ DropdownMultiSelectListModel.prototype.locStrsChanged = function () {
8254
+ _super.prototype.locStrsChanged.call(this);
8255
+ this.syncFilterStringPlaceholder();
8256
+ };
8195
8257
  DropdownMultiSelectListModel.prototype.updateListState = function () {
8196
8258
  this.listModel.updateState();
8197
8259
  this.syncFilterStringPlaceholder();
@@ -8570,7 +8632,7 @@ var ElementHelper = /** @class */ (function () {
8570
8632
  /*!*************************************!*\
8571
8633
  !*** ./src/entries/chunks/model.ts ***!
8572
8634
  \*************************************/
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 */
8635
+ /*! 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
8636
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
8575
8637
 
8576
8638
  "use strict";
@@ -8760,6 +8822,14 @@ __webpack_require__.r(__webpack_exports__);
8760
8822
  /* harmony import */ var _question_multipletext__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../../question_multipletext */ "./src/question_multipletext.ts");
8761
8823
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextItemModel", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MultipleTextItemModel"]; });
8762
8824
 
8825
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextCell", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MultipleTextCell"]; });
8826
+
8827
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextErrorCell", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MultipleTextErrorCell"]; });
8828
+
8829
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextErrorRow", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MutlipleTextErrorRow"]; });
8830
+
8831
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextRow", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MutlipleTextRow"]; });
8832
+
8763
8833
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["QuestionMultipleTextModel"]; });
8764
8834
 
8765
8835
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return _question_multipletext__WEBPACK_IMPORTED_MODULE_25__["MultipleTextEditorModel"]; });
@@ -9033,8 +9103,8 @@ __webpack_require__.r(__webpack_exports__);
9033
9103
  //import "../../modern.scss";
9034
9104
  var Version;
9035
9105
  var ReleaseDate;
9036
- Version = "" + "1.9.105";
9037
- ReleaseDate = "" + "2023-08-30";
9106
+ Version = "" + "1.9.107";
9107
+ ReleaseDate = "" + "2023-09-11";
9038
9108
  function checkLibraryVersion(ver, libraryName) {
9039
9109
  if (Version != ver) {
9040
9110
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -9182,7 +9252,7 @@ function slk(k, lh, rd) {
9182
9252
  /*!**************************************!*\
9183
9253
  !*** ./src/entries/core-wo-model.ts ***!
9184
9254
  \**************************************/
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 */
9255
+ /*! 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
9256
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9187
9257
 
9188
9258
  "use strict";
@@ -9352,6 +9422,14 @@ __webpack_require__.r(__webpack_exports__);
9352
9422
 
9353
9423
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextItemModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextItemModel"]; });
9354
9424
 
9425
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextCell", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextCell"]; });
9426
+
9427
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextErrorCell", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextErrorCell"]; });
9428
+
9429
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextErrorRow", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MutlipleTextErrorRow"]; });
9430
+
9431
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextRow", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MutlipleTextRow"]; });
9432
+
9355
9433
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["QuestionMultipleTextModel"]; });
9356
9434
 
9357
9435
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextEditorModel"]; });
@@ -9607,11 +9685,8 @@ __webpack_require__.r(__webpack_exports__);
9607
9685
 
9608
9686
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ActionContainer", function() { return _actions_container__WEBPACK_IMPORTED_MODULE_9__["ActionContainer"]; });
9609
9687
 
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"]; });
9688
+ /* harmony import */ var _utils_dragOrClickHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/dragOrClickHelper */ "./src/utils/dragOrClickHelper.ts");
9689
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragOrClickHelper", function() { return _utils_dragOrClickHelper__WEBPACK_IMPORTED_MODULE_10__["DragOrClickHelper"]; });
9615
9690
 
9616
9691
  // model
9617
9692
 
@@ -9630,14 +9705,13 @@ __webpack_require__.r(__webpack_exports__);
9630
9705
 
9631
9706
 
9632
9707
 
9633
-
9634
9708
  /***/ }),
9635
9709
 
9636
9710
  /***/ "./src/entries/core.ts":
9637
9711
  /*!*****************************!*\
9638
9712
  !*** ./src/entries/core.ts ***!
9639
9713
  \*****************************/
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 */
9714
+ /*! 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
9715
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9642
9716
 
9643
9717
  "use strict";
@@ -9807,6 +9881,14 @@ __webpack_require__.r(__webpack_exports__);
9807
9881
 
9808
9882
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextItemModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextItemModel"]; });
9809
9883
 
9884
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextCell", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextCell"]; });
9885
+
9886
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextErrorCell", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextErrorCell"]; });
9887
+
9888
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextErrorRow", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MutlipleTextErrorRow"]; });
9889
+
9890
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextRow", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MutlipleTextRow"]; });
9891
+
9810
9892
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["QuestionMultipleTextModel"]; });
9811
9893
 
9812
9894
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["MultipleTextEditorModel"]; });
@@ -10053,8 +10135,6 @@ __webpack_require__.r(__webpack_exports__);
10053
10135
 
10054
10136
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ActionContainer", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["ActionContainer"]; });
10055
10137
 
10056
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TooltipManager", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["TooltipManager"]; });
10057
-
10058
10138
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragOrClickHelper", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["DragOrClickHelper"]; });
10059
10139
 
10060
10140
  /* harmony import */ var _survey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../survey */ "./src/survey.ts");
@@ -13876,7 +13956,7 @@ var Const = /** @class */ (function (_super) {
13876
13956
  if (OperandMaker.isNumeric(value)) {
13877
13957
  if (value.indexOf("0x") == 0)
13878
13958
  return parseInt(value);
13879
- if (value.length > 1 && value[0] == "0")
13959
+ if (value.length > 1 && value[0] == "0" && (value.length < 2 || (value[1] !== "." && value[1] !== ",")))
13880
13960
  return value;
13881
13961
  return parseFloat(value);
13882
13962
  }
@@ -15217,6 +15297,8 @@ var Helpers = /** @class */ (function () {
15217
15297
  }
15218
15298
  return a + b;
15219
15299
  }
15300
+ if (typeof a === "string" || typeof b === "string")
15301
+ return a + b;
15220
15302
  return Helpers.correctAfterPlusMinis(a, b, a + b);
15221
15303
  };
15222
15304
  Helpers.correctAfterMultiple = function (a, b, res) {
@@ -15339,6 +15421,7 @@ var map = {
15339
15421
  "./clear_16x16.svg": "./src/images/clear_16x16.svg",
15340
15422
  "./collapseDetail.svg": "./src/images/collapseDetail.svg",
15341
15423
  "./expandDetail.svg": "./src/images/expandDetail.svg",
15424
+ "./loading.svg": "./src/images/loading.svg",
15342
15425
  "./no-image.svg": "./src/images/no-image.svg",
15343
15426
  "./rating-star-2.svg": "./src/images/rating-star-2.svg",
15344
15427
  "./rating-star-small-2.svg": "./src/images/rating-star-small-2.svg",
@@ -15699,6 +15782,17 @@ module.exports = "<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\
15699
15782
 
15700
15783
  /***/ }),
15701
15784
 
15785
+ /***/ "./src/images/loading.svg":
15786
+ /*!********************************!*\
15787
+ !*** ./src/images/loading.svg ***!
15788
+ \********************************/
15789
+ /*! no static exports found */
15790
+ /***/ (function(module, exports) {
15791
+
15792
+ module.exports = "<svg viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_885_24957)\"><path opacity=\"0.1\" d=\"M24 40C15.18 40 8 32.82 8 24C8 15.18 15.18 8 24 8C32.82 8 40 15.18 40 24C40 32.82 32.82 40 24 40ZM24 12C17.38 12 12 17.38 12 24C12 30.62 17.38 36 24 36C30.62 36 36 30.62 36 24C36 17.38 30.62 12 24 12Z\" fill=\"black\" fill-opacity=\"0.91\"></path><path d=\"M10 26C8.9 26 8 25.1 8 24C8 15.18 15.18 8 24 8C25.1 8 26 8.9 26 10C26 11.1 25.1 12 24 12C17.38 12 12 17.38 12 24C12 25.1 11.1 26 10 26Z\" fill=\"#19B394\"></path></g><defs><clipPath id=\"clip0_885_24957\"><rect width=\"32\" height=\"32\" fill=\"white\" transform=\"translate(8 8)\"></rect></clipPath></defs></svg>"
15793
+
15794
+ /***/ }),
15795
+
15702
15796
  /***/ "./src/images/no-image.svg":
15703
15797
  /*!*********************************!*\
15704
15798
  !*** ./src/images/no-image.svg ***!
@@ -16541,6 +16635,8 @@ function getLocStringValue(target, options, key) {
16541
16635
  return "";
16542
16636
  }
16543
16637
  function property(options) {
16638
+ if (options === void 0) { options = {}; }
16639
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
16544
16640
  return function (target, key) {
16545
16641
  var processComputedUpdater = function (obj, val) {
16546
16642
  if (!!val && typeof val === "object" && val.type === _base__WEBPACK_IMPORTED_MODULE_1__["ComputedUpdater"].ComputedUpdaterType) {
@@ -16548,6 +16644,10 @@ function property(options) {
16548
16644
  var result = val.updater();
16549
16645
  var dependencies = _base__WEBPACK_IMPORTED_MODULE_1__["Base"].finishCollectDependencies();
16550
16646
  val.setDependencies(dependencies);
16647
+ if (obj.dependencies[key]) {
16648
+ obj.dependencies[key].dispose();
16649
+ }
16650
+ obj.dependencies[key] = val;
16551
16651
  return result;
16552
16652
  }
16553
16653
  return val;
@@ -16749,9 +16849,10 @@ var JsonObjectProperty = /** @class */ (function () {
16749
16849
  if (!_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(this.defaultValue)) {
16750
16850
  return _helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isTwoValueEquals(value, this.defaultValue, false, true, false);
16751
16851
  }
16852
+ if (this.isLocalizable)
16853
+ return value === null || value === undefined;
16752
16854
  return ((value === false && (this.type == "boolean" || this.type == "switch")) ||
16753
- value === "" ||
16754
- _helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(value));
16855
+ value === "" || _helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(value));
16755
16856
  };
16756
16857
  JsonObjectProperty.prototype.getValue = function (obj) {
16757
16858
  if (this.onGetValue)
@@ -18133,7 +18234,7 @@ var JsonObject = /** @class */ (function () {
18133
18234
  }
18134
18235
  };
18135
18236
  JsonObject.prototype.valueToObj = function (value, obj, property) {
18136
- if (value == null)
18237
+ if (value === null || value === undefined)
18137
18238
  return;
18138
18239
  this.removePos(property, value);
18139
18240
  if (property != null && property.hasToUseSetValue) {
@@ -18658,6 +18759,7 @@ var ListModel = /** @class */ (function (_super) {
18658
18759
  if (!!this.loadingIndicatorValue) {
18659
18760
  this.loadingIndicatorValue.dispose();
18660
18761
  }
18762
+ this.listContainerHtmlElement = undefined;
18661
18763
  };
18662
18764
  ListModel.INDENT = 16;
18663
18765
  ListModel.MINELEMENTCOUNT = 10;
@@ -18754,6 +18856,19 @@ var LocalizableString = /** @class */ (function () {
18754
18856
  enumerable: false,
18755
18857
  configurable: true
18756
18858
  });
18859
+ Object.defineProperty(LocalizableString.prototype, "localizationName", {
18860
+ get: function () {
18861
+ return this._localizationName;
18862
+ },
18863
+ set: function (val) {
18864
+ if (this._localizationName != val) {
18865
+ this._localizationName = val;
18866
+ this.strChanged();
18867
+ }
18868
+ },
18869
+ enumerable: false,
18870
+ configurable: true
18871
+ });
18757
18872
  LocalizableString.prototype.getIsMultiple = function () { return false; };
18758
18873
  Object.defineProperty(LocalizableString.prototype, "locale", {
18759
18874
  get: function () {
@@ -18822,19 +18937,19 @@ var LocalizableString = /** @class */ (function () {
18822
18937
  if (!loc)
18823
18938
  loc = this.defaultLoc;
18824
18939
  var res = this.getValue(loc);
18825
- if (!res && loc === this.defaultLoc) {
18940
+ if (this.isValueEmpty(res) && loc === this.defaultLoc) {
18826
18941
  res = this.getValue(_surveyStrings__WEBPACK_IMPORTED_MODULE_1__["surveyLocalization"].defaultLocale);
18827
18942
  }
18828
- if (!res) {
18943
+ if (this.isValueEmpty(res)) {
18829
18944
  var dialect = this.getRootDialect(loc);
18830
18945
  if (!!dialect) {
18831
18946
  res = this.getValue(dialect);
18832
18947
  }
18833
18948
  }
18834
- if (!res && loc !== this.defaultLoc) {
18949
+ if (this.isValueEmpty(res) && loc !== this.defaultLoc) {
18835
18950
  res = this.getValue(this.defaultLoc);
18836
18951
  }
18837
- if (!res && !!this.getLocalizationName()) {
18952
+ if (this.isValueEmpty(res) && !!this.getLocalizationName()) {
18838
18953
  res = this.getLocalizationStr();
18839
18954
  if (!!this.onGetLocalizationTextCallback) {
18840
18955
  res = this.onGetLocalizationTextCallback(res);
@@ -18898,35 +19013,44 @@ var LocalizableString = /** @class */ (function () {
18898
19013
  configurable: true
18899
19014
  });
18900
19015
  LocalizableString.prototype.getLocaleText = function (loc) {
19016
+ var res = this.getLocaleTextCore(loc);
19017
+ return res ? res : "";
19018
+ };
19019
+ LocalizableString.prototype.getLocaleTextCore = function (loc) {
18901
19020
  if (!loc)
18902
19021
  loc = this.defaultLoc;
18903
- var res = this.getValue(loc);
18904
- return res ? res : "";
19022
+ return this.getValue(loc);
18905
19023
  };
18906
- LocalizableString.prototype.getLocaleTextWithDefault = function (loc) {
18907
- var res = this.getLocaleText(loc);
19024
+ LocalizableString.prototype.isLocaleTextEqualsWithDefault = function (loc, val) {
19025
+ var res = this.getLocaleTextCore(loc);
18908
19026
  if (!res && this.onGetDefaultTextCallback) {
18909
- return this.onGetDefaultTextCallback();
19027
+ res = this.onGetDefaultTextCallback();
18910
19028
  }
18911
- return res;
19029
+ if (res === val)
19030
+ return true;
19031
+ return this.isValueEmpty(res) && this.isValueEmpty(val);
19032
+ };
19033
+ LocalizableString.prototype.clear = function () {
19034
+ this.setJson(undefined);
19035
+ };
19036
+ LocalizableString.prototype.clearLocale = function (loc) {
19037
+ this.setLocaleText(loc, undefined);
18912
19038
  };
18913
19039
  LocalizableString.prototype.setLocaleText = function (loc, value) {
18914
19040
  loc = this.getValueLoc(loc);
18915
- if (!this.storeDefaultText && value == this.getLocaleTextWithDefault(loc)) {
18916
- if (!!value || !!loc && loc !== this.defaultLoc)
19041
+ if (!this.storeDefaultText && this.isLocaleTextEqualsWithDefault(loc, value)) {
19042
+ if (!this.isValueEmpty(value) || !!loc && loc !== this.defaultLoc)
18917
19043
  return;
18918
19044
  var dl = _surveyStrings__WEBPACK_IMPORTED_MODULE_1__["surveyLocalization"].defaultLocale;
18919
19045
  var oldValue_1 = this.getValue(dl);
18920
- if (!!dl && !!oldValue_1) {
19046
+ if (!!dl && !this.isValueEmpty(oldValue_1)) {
18921
19047
  this.setValue(dl, value);
18922
19048
  this.fireStrChanged(dl, oldValue_1);
18923
19049
  }
18924
19050
  return;
18925
19051
  }
18926
19052
  if (!_settings__WEBPACK_IMPORTED_MODULE_2__["settings"].localization.storeDuplicatedTranslations &&
18927
- value &&
18928
- loc &&
18929
- loc != this.defaultLoc &&
19053
+ !this.isValueEmpty(value) && loc && loc != this.defaultLoc &&
18930
19054
  !this.getValue(loc) &&
18931
19055
  value == this.getLocaleText(this.defaultLoc))
18932
19056
  return;
@@ -18935,9 +19059,8 @@ var LocalizableString = /** @class */ (function () {
18935
19059
  loc = this.defaultLoc;
18936
19060
  var oldValue = this.onStrChanged && loc === curLoc ? this.pureText : undefined;
18937
19061
  delete this.htmlValues[loc];
18938
- if (!value) {
18939
- if (this.getValue(loc))
18940
- this.deleteValue(loc);
19062
+ if (this.isValueEmpty(value)) {
19063
+ this.deleteValue(loc);
18941
19064
  }
18942
19065
  else {
18943
19066
  if (typeof value === "string") {
@@ -18954,6 +19077,13 @@ var LocalizableString = /** @class */ (function () {
18954
19077
  }
18955
19078
  this.fireStrChanged(loc, oldValue);
18956
19079
  };
19080
+ LocalizableString.prototype.isValueEmpty = function (val) {
19081
+ if (val === undefined || val === null)
19082
+ return true;
19083
+ if (this.localizationName)
19084
+ return false;
19085
+ return val === "";
19086
+ };
18957
19087
  Object.defineProperty(LocalizableString.prototype, "curLocale", {
18958
19088
  get: function () {
18959
19089
  return !!this.locale ? this.locale : this.defaultLoc;
@@ -19017,7 +19147,7 @@ var LocalizableString = /** @class */ (function () {
19017
19147
  }
19018
19148
  this.values = {};
19019
19149
  this.htmlValues = {};
19020
- if (!value)
19150
+ if (value === null || value === undefined)
19021
19151
  return;
19022
19152
  if (typeof value === "string") {
19023
19153
  this.setLocaleText(null, value);
@@ -20751,9 +20881,10 @@ var PanelModelBase = /** @class */ (function (_super) {
20751
20881
  PanelModelBase.prototype.canShowTitle = function () { return true; };
20752
20882
  Object.defineProperty(PanelModelBase.prototype, "_showDescription", {
20753
20883
  get: function () {
20884
+ if (!this.hasTitle && this.isDesignMode)
20885
+ return false;
20754
20886
  return this.survey && this.survey.showPageTitles && this.hasDescription ||
20755
20887
  (this.showDescription && this.isDesignMode &&
20756
- _settings__WEBPACK_IMPORTED_MODULE_7__["settings"].designMode.showEmptyTitles &&
20757
20888
  _settings__WEBPACK_IMPORTED_MODULE_7__["settings"].designMode.showEmptyDescriptions);
20758
20889
  },
20759
20890
  enumerable: false,
@@ -22603,6 +22734,7 @@ __webpack_require__.r(__webpack_exports__);
22603
22734
  /* harmony import */ var _popup_view_model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./popup-view-model */ "./src/popup-view-model.ts");
22604
22735
  /* harmony import */ var _utils_devices__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/devices */ "./src/utils/devices.ts");
22605
22736
  /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./settings */ "./src/settings.ts");
22737
+ /* harmony import */ var _survey__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./survey */ "./src/survey.ts");
22606
22738
  var __extends = (undefined && undefined.__extends) || (function () {
22607
22739
  var extendStatics = function (d, b) {
22608
22740
  extendStatics = Object.setPrototypeOf ||
@@ -22629,6 +22761,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
22629
22761
 
22630
22762
 
22631
22763
 
22764
+
22632
22765
  var PopupDropdownViewModel = /** @class */ (function (_super) {
22633
22766
  __extends(PopupDropdownViewModel, _super);
22634
22767
  function PopupDropdownViewModel(model, targetElement) {
@@ -22648,7 +22781,7 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
22648
22781
  };
22649
22782
  _this.resizeWindowCallback = function () {
22650
22783
  if (!_this.isOverlay) {
22651
- _this.updatePosition(true, false);
22784
+ _this.updatePosition(true, _survey__WEBPACK_IMPORTED_MODULE_5__["SurveyModel"].platform === "vue" || _survey__WEBPACK_IMPORTED_MODULE_5__["SurveyModel"].platform === "vue3");
22652
22785
  }
22653
22786
  };
22654
22787
  _this.clientY = 0;
@@ -22659,11 +22792,7 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
22659
22792
  _this.touchMoveEventCallback = function (event) {
22660
22793
  _this.preventScrollOuside(event, _this.clientY - event.changedTouches[0].clientY);
22661
22794
  };
22662
- _this.model.onRecalculatePosition.add(function (_, options) {
22663
- if (!_this.isOverlay) {
22664
- _this.updatePosition(options.isResetHeight);
22665
- }
22666
- });
22795
+ _this.model.onRecalculatePosition.add(_this.recalculatePositionHandler);
22667
22796
  return _this;
22668
22797
  }
22669
22798
  PopupDropdownViewModel.prototype.calculateIsTablet = function (windowWidth, windowHeight) {
@@ -22696,8 +22825,8 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
22696
22825
  this.popupDirection = _utils_popup__WEBPACK_IMPORTED_MODULE_1__["PopupUtils"].calculatePopupDirection(verticalPosition, actualHorizontalPosition);
22697
22826
  var pos = _utils_popup__WEBPACK_IMPORTED_MODULE_1__["PopupUtils"].calculatePosition(targetElementRect, height, width + marginLeft + marginRight, verticalPosition, actualHorizontalPosition, this.showHeader, this.model.positionMode);
22698
22827
  if (!!window) {
22699
- var newVerticalDimensions = _utils_popup__WEBPACK_IMPORTED_MODULE_1__["PopupUtils"].updateVerticalDimensions(pos.top, height, window.innerHeight);
22700
- if (!!newVerticalDimensions) {
22828
+ var newVerticalDimensions = _utils_popup__WEBPACK_IMPORTED_MODULE_1__["PopupUtils"].getCorrectedVerticalDimensions(pos.top, height, window.innerHeight);
22829
+ if (!!newVerticalDimensions.height) {
22701
22830
  this.height = newVerticalDimensions.height + "px";
22702
22831
  pos.top = newVerticalDimensions.top;
22703
22832
  }
@@ -22758,6 +22887,10 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
22758
22887
  this.targetElement = targetElement || componentRoot.parentElement;
22759
22888
  }
22760
22889
  };
22890
+ PopupDropdownViewModel.prototype.resetComponentElement = function () {
22891
+ _super.prototype.resetComponentElement.call(this);
22892
+ this.targetElement = undefined;
22893
+ };
22761
22894
  PopupDropdownViewModel.prototype.updateOnShowing = function () {
22762
22895
  var root = _settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.root;
22763
22896
  this.prevActiveElement = root.activeElement;
@@ -22821,6 +22954,30 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
22821
22954
  this.minWidth = undefined;
22822
22955
  }
22823
22956
  };
22957
+ PopupDropdownViewModel.prototype.onModelChanging = function (newModel) {
22958
+ var _this = this;
22959
+ if (!!this.model) {
22960
+ this.model.onRecalculatePosition.remove(this.recalculatePositionHandler);
22961
+ }
22962
+ if (!this.recalculatePositionHandler) {
22963
+ this.recalculatePositionHandler = function (_, options) {
22964
+ if (!_this.isOverlay) {
22965
+ _this.updatePosition(options.isResetHeight);
22966
+ }
22967
+ };
22968
+ }
22969
+ _super.prototype.onModelChanging.call(this, newModel);
22970
+ newModel.onRecalculatePosition.add(this.recalculatePositionHandler);
22971
+ };
22972
+ PopupDropdownViewModel.prototype.dispose = function () {
22973
+ _super.prototype.dispose.call(this);
22974
+ this.updateOnHiding();
22975
+ if (!!this.model) {
22976
+ this.model.onRecalculatePosition.remove(this.recalculatePositionHandler);
22977
+ this.recalculatePositionHandler = undefined;
22978
+ }
22979
+ this.resetComponentElement();
22980
+ };
22824
22981
  PopupDropdownViewModel.tabletSizeBreakpoint = 600;
22825
22982
  __decorate([
22826
22983
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])()
@@ -23008,16 +23165,6 @@ var PopupSurveyModel = /** @class */ (function (_super) {
23008
23165
  _this.width = _this.survey.width;
23009
23166
  _this.updateCss();
23010
23167
  _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
23168
  return _this;
23022
23169
  }
23023
23170
  PopupSurveyModel.prototype.onCreating = function () { };
@@ -23251,9 +23398,7 @@ var PopupSurveyModel = /** @class */ (function (_super) {
23251
23398
  }
23252
23399
  };
23253
23400
  PopupSurveyModel.prototype.onScroll = function () {
23254
- if (this.onScrollCallback) {
23255
- this.onScrollCallback();
23256
- }
23401
+ this.survey.onScroll();
23257
23402
  };
23258
23403
  __decorate([
23259
23404
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_2__["property"])()
@@ -23373,6 +23518,7 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23373
23518
  __extends(PopupBaseViewModel, _super);
23374
23519
  function PopupBaseViewModel(model) {
23375
23520
  var _this = _super.call(this) || this;
23521
+ _this.subscriptionId = PopupBaseViewModel.SubscriptionId++;
23376
23522
  _this.popupSelector = ".sv-popup";
23377
23523
  _this.fixedPopupContainer = ".sv-popup";
23378
23524
  _this.containerSelector = ".sv-popup__container";
@@ -23435,11 +23581,14 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23435
23581
  this.width = nullableValue;
23436
23582
  this.minWidth = nullableValue;
23437
23583
  };
23584
+ PopupBaseViewModel.prototype.onModelChanging = function (newModel) {
23585
+ };
23438
23586
  PopupBaseViewModel.prototype.setupModel = function (model) {
23439
23587
  var _this = this;
23440
23588
  if (!!this.model) {
23441
- this.model.unregisterPropertyChangedHandlers(["isVisible"], "PopupBaseViewModel");
23589
+ this.model.unregisterPropertyChangedHandlers(["isVisible"], "PopupBaseViewModel" + this.subscriptionId);
23442
23590
  }
23591
+ this.onModelChanging(model);
23443
23592
  this._model = model;
23444
23593
  var onIsVisibleChangedHandler = function () {
23445
23594
  if (!model.isVisible) {
@@ -23447,7 +23596,7 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23447
23596
  }
23448
23597
  _this.isVisible = model.isVisible;
23449
23598
  };
23450
- model.registerPropertyChangedHandlers(["isVisible"], onIsVisibleChangedHandler, "PopupBaseViewModel");
23599
+ model.registerPropertyChangedHandlers(["isVisible"], onIsVisibleChangedHandler, "PopupBaseViewModel" + this.subscriptionId);
23451
23600
  onIsVisibleChangedHandler();
23452
23601
  };
23453
23602
  Object.defineProperty(PopupBaseViewModel.prototype, "model", {
@@ -23627,6 +23776,9 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23627
23776
  };
23628
23777
  PopupBaseViewModel.prototype.dispose = function () {
23629
23778
  _super.prototype.dispose.call(this);
23779
+ if (this.model) {
23780
+ this.model.unregisterPropertyChangedHandlers(["isVisible"], "PopupBaseViewModel" + this.subscriptionId);
23781
+ }
23630
23782
  if (!!this.createdContainer) {
23631
23783
  this.createdContainer.remove();
23632
23784
  this.createdContainer = undefined;
@@ -23634,6 +23786,7 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23634
23786
  if (!!this.footerToolbarValue) {
23635
23787
  this.footerToolbarValue.dispose();
23636
23788
  }
23789
+ this.resetComponentElement();
23637
23790
  };
23638
23791
  PopupBaseViewModel.prototype.initializePopupContainer = function () {
23639
23792
  if (!this.container) {
@@ -23649,6 +23802,7 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23649
23802
  };
23650
23803
  PopupBaseViewModel.prototype.resetComponentElement = function () {
23651
23804
  this.containerElement = undefined;
23805
+ this.prevActiveElement = undefined;
23652
23806
  };
23653
23807
  PopupBaseViewModel.prototype.preventScrollOuside = function (event, deltaY) {
23654
23808
  var currentElement = event.target;
@@ -23663,6 +23817,7 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
23663
23817
  }
23664
23818
  event.preventDefault();
23665
23819
  };
23820
+ PopupBaseViewModel.SubscriptionId = 0;
23666
23821
  __decorate([
23667
23822
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ defaultValue: "0px" })
23668
23823
  ], PopupBaseViewModel.prototype, "top", void 0);
@@ -23729,7 +23884,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
23729
23884
 
23730
23885
  var PopupModel = /** @class */ (function (_super) {
23731
23886
  __extends(PopupModel, _super);
23732
- function PopupModel(contentComponentName, contentComponentData, verticalPosition, horizontalPosition, showPointer, isModal, onCancel, onApply, onHide, onShow, cssClass, title) {
23887
+ function PopupModel(contentComponentName, contentComponentData, verticalPosition, horizontalPosition, showPointer, isModal, onCancel, onApply, onHide, onShow, cssClass, title, onDispose) {
23733
23888
  if (verticalPosition === void 0) { verticalPosition = "bottom"; }
23734
23889
  if (horizontalPosition === void 0) { horizontalPosition = "left"; }
23735
23890
  if (showPointer === void 0) { showPointer = true; }
@@ -23740,7 +23895,9 @@ var PopupModel = /** @class */ (function (_super) {
23740
23895
  if (onShow === void 0) { onShow = function () { }; }
23741
23896
  if (cssClass === void 0) { cssClass = ""; }
23742
23897
  if (title === void 0) { title = ""; }
23898
+ if (onDispose === void 0) { onDispose = function () { }; }
23743
23899
  var _this = _super.call(this) || this;
23900
+ _this.onDispose = onDispose;
23744
23901
  _this.focusFirstInputSelector = "";
23745
23902
  _this.onVisibilityChanged = _this.addEvent();
23746
23903
  _this.onFooterActionsCreated = _this.addEvent();
@@ -23795,6 +23952,10 @@ var PopupModel = /** @class */ (function (_super) {
23795
23952
  this.onFooterActionsCreated.fire(this, options);
23796
23953
  return options.actions;
23797
23954
  };
23955
+ PopupModel.prototype.dispose = function () {
23956
+ _super.prototype.dispose.call(this);
23957
+ this.onDispose();
23958
+ };
23798
23959
  __decorate([
23799
23960
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
23800
23961
  ], PopupModel.prototype, "contentComponentName", void 0);
@@ -24202,11 +24363,14 @@ var Question = /** @class */ (function (_super) {
24202
24363
  configurable: true
24203
24364
  });
24204
24365
  Question.prototype.onVisibleChanged = function () {
24205
- this.setPropertyValue("isVisible", this.isVisible);
24366
+ this.updateIsVisibleProp();
24206
24367
  if (!this.isVisible && this.errors && this.errors.length > 0) {
24207
24368
  this.errors = [];
24208
24369
  }
24209
24370
  };
24371
+ Question.prototype.updateIsVisibleProp = function () {
24372
+ this.setPropertyValue("isVisible", this.isVisible);
24373
+ };
24210
24374
  Object.defineProperty(Question.prototype, "useDisplayValuesInDynamicTexts", {
24211
24375
  /**
24212
24376
  * Specifies whether to use display names for question values in placeholders.
@@ -24382,6 +24546,9 @@ var Question = /** @class */ (function (_super) {
24382
24546
  this.runConditions();
24383
24547
  }
24384
24548
  this.calcRenderedCommentPlaceholder();
24549
+ if (!this.visible) {
24550
+ this.updateIsVisibleProp();
24551
+ }
24385
24552
  };
24386
24553
  Object.defineProperty(Question.prototype, "parent", {
24387
24554
  /**
@@ -24966,11 +25133,8 @@ var Question = /** @class */ (function (_super) {
24966
25133
  .append(cssClasses.descriptionUnderInput, this.hasDescriptionUnderInput)
24967
25134
  .toString();
24968
25135
  };
24969
- Question.prototype.getIsErrorsModeTooltip = function () {
24970
- return _super.prototype.getIsErrorsModeTooltip.call(this) && !this.customWidget;
24971
- };
24972
25136
  Question.prototype.showErrorOnCore = function (location) {
24973
- return !this.isErrorsModeTooltip && !this.showErrorsAboveQuestion && !this.showErrorsBelowQuestion && this.getErrorLocation() === location;
25137
+ return !this.showErrorsAboveQuestion && !this.showErrorsBelowQuestion && this.getErrorLocation() === location;
24974
25138
  };
24975
25139
  Object.defineProperty(Question.prototype, "showErrorOnTop", {
24976
25140
  get: function () {
@@ -24986,17 +25150,9 @@ var Question = /** @class */ (function (_super) {
24986
25150
  enumerable: false,
24987
25151
  configurable: true
24988
25152
  });
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
25153
  Object.defineProperty(Question.prototype, "showErrorsOutsideQuestion", {
24998
25154
  get: function () {
24999
- return this.isDefaultV2Theme && !(this.hasParent && this.getIsTooltipErrorSupportedByParent());
25155
+ return this.isDefaultV2Theme;
25000
25156
  },
25001
25157
  enumerable: false,
25002
25158
  configurable: true
@@ -25032,7 +25188,6 @@ var Question = /** @class */ (function (_super) {
25032
25188
  .append(cssClasses.error.outsideQuestion, this.showErrorsBelowQuestion || this.showErrorsAboveQuestion)
25033
25189
  .append(cssClasses.error.belowQuestion, this.showErrorsBelowQuestion)
25034
25190
  .append(cssClasses.error.aboveQuestion, this.showErrorsAboveQuestion)
25035
- .append(cssClasses.error.tooltip, this.isErrorsModeTooltip)
25036
25191
  .append(cssClasses.error.locationTop, this.showErrorOnTop)
25037
25192
  .append(cssClasses.error.locationBottom, this.showErrorOnBottom)
25038
25193
  .toString();
@@ -25550,6 +25705,12 @@ var Question = /** @class */ (function (_super) {
25550
25705
  enumerable: false,
25551
25706
  configurable: true
25552
25707
  });
25708
+ Object.defineProperty(Question.prototype, "hasFilteredValue", {
25709
+ get: function () { return false; },
25710
+ enumerable: false,
25711
+ configurable: true
25712
+ });
25713
+ Question.prototype.getFilteredValue = function () { return this.value; };
25553
25714
  Object.defineProperty(Question.prototype, "valueForSurvey", {
25554
25715
  get: function () {
25555
25716
  if (!!this.valueToDataCallback) {
@@ -25868,13 +26029,15 @@ var Question = /** @class */ (function (_super) {
25868
26029
  return this.checkIfAnswerCorrect() ? 1 : 0;
25869
26030
  };
25870
26031
  Question.prototype.checkIfAnswerCorrect = function () {
25871
- var isEqual = this.isTwoValueEquals(this.value, this.correctAnswer, !_settings__WEBPACK_IMPORTED_MODULE_8__["settings"].comparator.caseSensitive, true);
25872
- var options = { result: isEqual, correctAnswer: isEqual ? 1 : 0 };
26032
+ var isEqual = _helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isTwoValueEquals(this.value, this.correctAnswer, this.getAnswerCorrectIgnoreOrder(), _settings__WEBPACK_IMPORTED_MODULE_8__["settings"].comparator.caseSensitive, true);
26033
+ var correct = isEqual ? 1 : 0;
26034
+ var options = { result: isEqual, correctAnswer: correct, correctAnswers: correct, incorrectAnswers: this.quizQuestionCount - correct };
25873
26035
  if (!!this.survey) {
25874
26036
  this.survey.onCorrectQuestionAnswer(this, options);
25875
26037
  }
25876
26038
  return options.result;
25877
26039
  };
26040
+ Question.prototype.getAnswerCorrectIgnoreOrder = function () { return false; };
25878
26041
  /**
25879
26042
  * Returns `true` if a question answer matches the `correctAnswer` property value.
25880
26043
  *
@@ -26385,7 +26548,9 @@ var Question = /** @class */ (function (_super) {
26385
26548
  }
26386
26549
  if (!this.checkIsValueCorrect(newValue))
26387
26550
  return;
26551
+ this.isChangingViaDefaultValue = true;
26388
26552
  this.setQuestionValue(this.valueFromData(newValue));
26553
+ this.isChangingViaDefaultValue = false;
26389
26554
  this.updateDependedQuestions();
26390
26555
  this.updateIsAnswered();
26391
26556
  };
@@ -27648,53 +27813,51 @@ var QuestionSelectBase = /** @class */ (function (_super) {
27648
27813
  return this.hasUnknownValue(val, true, false);
27649
27814
  };
27650
27815
  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
27816
  var _this = this;
27663
- if (!!this.survey && !this.isEmpty() && !_itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"].getItemByValue(this.choices, this.value)) {
27817
+ if (this.waitingGetChoiceDisplayValueResponse || !this.survey || this.isEmpty())
27818
+ return;
27819
+ var value = this.value;
27820
+ var valueArray = Array.isArray(value) ? value : [value];
27821
+ var hasItemWithoutValues = valueArray.some(function (val) { return !_itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"].getItemByValue(_this.choices, val); });
27822
+ if (hasItemWithoutValues) {
27664
27823
  this.waitingGetChoiceDisplayValueResponse = true;
27665
27824
  this.isReady = !this.waitingAcyncOperations;
27666
27825
  this.survey.getChoiceDisplayValue({
27667
27826
  question: this,
27668
- values: [this.value],
27827
+ values: valueArray,
27669
27828
  setItems: function (displayValues) {
27829
+ var customValues = [];
27830
+ for (var _i = 1; _i < arguments.length; _i++) {
27831
+ customValues[_i - 1] = arguments[_i];
27832
+ }
27670
27833
  _this.waitingGetChoiceDisplayValueResponse = false;
27671
27834
  if (!displayValues || !displayValues.length)
27672
27835
  return;
27673
- _this.selectedItemValues = _this.createItemValue(_this.value, displayValues[0]);
27836
+ var items = displayValues.map(function (displayValue, index) { return _this.createItemValue(valueArray[index], displayValue); });
27837
+ _this.setCustomValuesIntoItems(items, customValues);
27838
+ if (Array.isArray(value)) {
27839
+ _this.selectedItemValues = items;
27840
+ }
27841
+ else {
27842
+ _this.selectedItemValues = items[0];
27843
+ }
27674
27844
  _this.isReady = !_this.waitingAcyncOperations;
27675
27845
  }
27676
27846
  });
27677
27847
  }
27678
27848
  };
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;
27849
+ QuestionSelectBase.prototype.setCustomValuesIntoItems = function (items, customValues) {
27850
+ if (!Array.isArray(customValues) || customValues.length === 0)
27851
+ return;
27852
+ customValues.forEach(function (customValue) {
27853
+ var vals = customValue.values;
27854
+ var propName = customValue.propertyName;
27855
+ if (Array.isArray(vals)) {
27856
+ for (var i = 0; i < items.length && i < vals.length; i++) {
27857
+ items[i][propName] = vals[i];
27695
27858
  }
27696
- });
27697
- }
27859
+ }
27860
+ });
27698
27861
  };
27699
27862
  QuestionSelectBase.prototype.hasUnknownValue = function (val, includeOther, isFilteredChoices, checkEmptyValue) {
27700
27863
  if (includeOther === void 0) { includeOther = false; }
@@ -30065,10 +30228,21 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
30065
30228
  enumerable: false,
30066
30229
  configurable: true
30067
30230
  });
30231
+ Object.defineProperty(QuestionCheckboxModel.prototype, "hasFilteredValue", {
30232
+ get: function () { return !!this.valuePropertyName; },
30233
+ enumerable: false,
30234
+ configurable: true
30235
+ });
30236
+ QuestionCheckboxModel.prototype.getFilteredValue = function () {
30237
+ if (this.hasFilteredValue)
30238
+ return this.renderedValue;
30239
+ return _super.prototype.getFilteredValue.call(this);
30240
+ };
30068
30241
  QuestionCheckboxModel.prototype.getMultipleSelectedItems = function () {
30069
30242
  return this.selectedChoices;
30070
30243
  };
30071
30244
  QuestionCheckboxModel.prototype.validateItemValues = function (itemValues) {
30245
+ var _this = this;
30072
30246
  if (!!itemValues.length)
30073
30247
  return itemValues;
30074
30248
  var selectedItemValues = this.selectedItemValues;
@@ -30077,8 +30251,9 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
30077
30251
  return selectedItemValues;
30078
30252
  }
30079
30253
  var val = this.renderedValue;
30080
- return val.map(function (item) { return new _itemvalue__WEBPACK_IMPORTED_MODULE_4__["ItemValue"](item); });
30254
+ return val.map(function (item) { return _this.createItemValue(item); });
30081
30255
  };
30256
+ QuestionCheckboxModel.prototype.getAnswerCorrectIgnoreOrder = function () { return true; };
30082
30257
  QuestionCheckboxModel.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
30083
30258
  _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
30084
30259
  if (isOnValueChanged)
@@ -31576,10 +31751,9 @@ __webpack_require__.r(__webpack_exports__);
31576
31751
  /* harmony import */ var _jsonobject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsonobject */ "./src/jsonobject.ts");
31577
31752
  /* harmony import */ var _questionfactory__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./questionfactory */ "./src/questionfactory.ts");
31578
31753
  /* harmony import */ var _question_baseselect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./question_baseselect */ "./src/question_baseselect.ts");
31579
- /* harmony import */ var _itemvalue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./itemvalue */ "./src/itemvalue.ts");
31580
- /* harmony import */ var _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/cssClassBuilder */ "./src/utils/cssClassBuilder.ts");
31581
- /* harmony import */ var _dropdownListModel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dropdownListModel */ "./src/dropdownListModel.ts");
31582
- /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./settings */ "./src/settings.ts");
31754
+ /* harmony import */ var _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/cssClassBuilder */ "./src/utils/cssClassBuilder.ts");
31755
+ /* harmony import */ var _dropdownListModel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dropdownListModel */ "./src/dropdownListModel.ts");
31756
+ /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settings */ "./src/settings.ts");
31583
31757
  var __extends = (undefined && undefined.__extends) || (function () {
31584
31758
  var extendStatics = function (d, b) {
31585
31759
  extendStatics = Object.setPrototypeOf ||
@@ -31607,7 +31781,6 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
31607
31781
 
31608
31782
 
31609
31783
 
31610
-
31611
31784
  /**
31612
31785
  * A class that describes the Dropdown question type.
31613
31786
  *
@@ -31743,7 +31916,7 @@ var QuestionDropdownModel = /** @class */ (function (_super) {
31743
31916
  (this.choicesMax - this.choicesMin) / this.choicesStep + 1) {
31744
31917
  this.minMaxChoices = [];
31745
31918
  for (var i = this.choicesMin; i <= this.choicesMax; i += this.choicesStep) {
31746
- this.minMaxChoices.push(new _itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"](i));
31919
+ this.minMaxChoices.push(this.createItemValue(i));
31747
31920
  }
31748
31921
  }
31749
31922
  res = res.concat(this.minMaxChoices);
@@ -31827,7 +32000,7 @@ var QuestionDropdownModel = /** @class */ (function (_super) {
31827
32000
  configurable: true
31828
32001
  });
31829
32002
  QuestionDropdownModel.prototype.getControlClass = function () {
31830
- return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_4__["CssClassBuilder"]()
32003
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_3__["CssClassBuilder"]()
31831
32004
  .append(this.cssClasses.control)
31832
32005
  .append(this.cssClasses.controlEmpty, this.isEmpty())
31833
32006
  .append(this.cssClasses.onError, this.errors.length > 0)
@@ -31875,7 +32048,7 @@ var QuestionDropdownModel = /** @class */ (function (_super) {
31875
32048
  Object.defineProperty(QuestionDropdownModel.prototype, "dropdownListModel", {
31876
32049
  get: function () {
31877
32050
  if (this.renderAs !== "select" && !this.dropdownListModelValue) {
31878
- this.dropdownListModelValue = new _dropdownListModel__WEBPACK_IMPORTED_MODULE_5__["DropdownListModel"](this);
32051
+ this.dropdownListModelValue = new _dropdownListModel__WEBPACK_IMPORTED_MODULE_4__["DropdownListModel"](this);
31879
32052
  }
31880
32053
  return this.dropdownListModelValue;
31881
32054
  },
@@ -32001,7 +32174,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("dropdown", [
32001
32174
  { name: "choicesMin:number", default: 0 },
32002
32175
  { name: "choicesMax:number", default: 0 },
32003
32176
  { name: "choicesStep:number", default: 1, minValue: 1 },
32004
- { name: "autocomplete", alternativeName: "autoComplete", choices: _settings__WEBPACK_IMPORTED_MODULE_6__["settings"].questions.dataList, },
32177
+ { name: "autocomplete", alternativeName: "autoComplete", choices: _settings__WEBPACK_IMPORTED_MODULE_5__["settings"].questions.dataList, },
32005
32178
  { name: "renderAs", default: "default", visible: false },
32006
32179
  { name: "searchEnabled:boolean", default: true, visible: false },
32007
32180
  { name: "choicesLazyLoadEnabled:boolean", default: false, visible: false },
@@ -33006,16 +33179,47 @@ var QuestionFileModel = /** @class */ (function (_super) {
33006
33179
  enumerable: false,
33007
33180
  configurable: true
33008
33181
  });
33182
+ Object.defineProperty(QuestionFileModel.prototype, "showChooseButton", {
33183
+ get: function () {
33184
+ return !this.showLoadingIndicator;
33185
+ },
33186
+ enumerable: false,
33187
+ configurable: true
33188
+ });
33189
+ Object.defineProperty(QuestionFileModel.prototype, "showLoadingIndicator", {
33190
+ get: function () {
33191
+ return this.isUploading && this.isDefaultV2Theme;
33192
+ },
33193
+ enumerable: false,
33194
+ configurable: true
33195
+ });
33196
+ Object.defineProperty(QuestionFileModel.prototype, "allowShowPreview", {
33197
+ get: function () {
33198
+ return this.previewValue && this.previewValue.length > 0 && !this.showLoadingIndicator;
33199
+ },
33200
+ enumerable: false,
33201
+ configurable: true
33202
+ });
33203
+ Object.defineProperty(QuestionFileModel.prototype, "showRemoveButtonCore", {
33204
+ get: function () {
33205
+ var showLoadingIndicator = this.showLoadingIndicator;
33206
+ var isReadOnly = this.isReadOnly;
33207
+ var isEmpty = this.isEmpty();
33208
+ return !isReadOnly && !isEmpty && !showLoadingIndicator;
33209
+ },
33210
+ enumerable: false,
33211
+ configurable: true
33212
+ });
33009
33213
  Object.defineProperty(QuestionFileModel.prototype, "showRemoveButton", {
33010
33214
  get: function () {
33011
- return !this.isReadOnly && !this.isEmpty() && this.cssClasses.removeButton;
33215
+ return this.showRemoveButtonCore && this.cssClasses.removeButton;
33012
33216
  },
33013
33217
  enumerable: false,
33014
33218
  configurable: true
33015
33219
  });
33016
33220
  Object.defineProperty(QuestionFileModel.prototype, "showRemoveButtonBottom", {
33017
33221
  get: function () {
33018
- return !this.isReadOnly && !this.isEmpty() && this.cssClasses.removeButtonBottom;
33222
+ return this.showRemoveButtonCore && this.cssClasses.removeButtonBottom;
33019
33223
  },
33020
33224
  enumerable: false,
33021
33225
  configurable: true
@@ -33291,6 +33495,9 @@ var QuestionFileModel = /** @class */ (function (_super) {
33291
33495
  var previewIndex = this.previewValue.indexOf(data);
33292
33496
  this.removeFileByContent(previewIndex === -1 ? data : this.value[previewIndex]);
33293
33497
  };
33498
+ __decorate([
33499
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
33500
+ ], QuestionFileModel.prototype, "isUploading", void 0);
33294
33501
  __decorate([
33295
33502
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
33296
33503
  ], QuestionFileModel.prototype, "isDragging", void 0);
@@ -36151,8 +36358,6 @@ var MatrixDropdownRowModelBase = /** @class */ (function () {
36151
36358
  var columns = this.data.columns;
36152
36359
  for (var i = 0; i < columns.length; i++) {
36153
36360
  var column = columns[i];
36154
- if (!column.isVisible)
36155
- continue;
36156
36361
  var cell = this.createCell(column);
36157
36362
  this.cells.push(cell);
36158
36363
  var cellValue = this.getCellValue(value, column.name);
@@ -36791,10 +36996,15 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
36791
36996
  }
36792
36997
  };
36793
36998
  QuestionMatrixDropdownModelBase.prototype.onShowInMultipleColumnsChanged = function (column) {
36794
- this.clearGeneratedRows();
36795
- this.resetRenderedTable();
36999
+ this.resetTableAndRows();
37000
+ };
37001
+ QuestionMatrixDropdownModelBase.prototype.onColumnVisibilityChanged = function (column) {
37002
+ this.resetTableAndRows();
36796
37003
  };
36797
37004
  QuestionMatrixDropdownModelBase.prototype.onColumnCellTypeChanged = function (column) {
37005
+ this.resetTableAndRows();
37006
+ };
37007
+ QuestionMatrixDropdownModelBase.prototype.resetTableAndRows = function () {
36798
37008
  this.clearGeneratedRows();
36799
37009
  this.resetRenderedTable();
36800
37010
  };
@@ -36921,6 +37131,8 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
36921
37131
  this.checkColumnsRenderedRequired();
36922
37132
  };
36923
37133
  QuestionMatrixDropdownModelBase.prototype.checkColumnsVisibility = function () {
37134
+ if (this.isDesignMode)
37135
+ return;
36924
37136
  var hasChanged = false;
36925
37137
  for (var i = 0; i < this.visibleColumns.length; i++) {
36926
37138
  var column = this.visibleColumns[i];
@@ -36949,7 +37161,7 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
36949
37161
  }
36950
37162
  };
36951
37163
  QuestionMatrixDropdownModelBase.prototype.isColumnVisibilityChanged = function (column) {
36952
- var curVis = column.hasVisibleCell;
37164
+ var curVis = column.isColumnVisible;
36953
37165
  var isMultipleColumnsVisibility = column.isFilteredMultipleColumns;
36954
37166
  var curVisibleChoices = isMultipleColumnsVisibility ? column.getVisibleChoicesInCell : [];
36955
37167
  var newVisibleChoices = new Array();
@@ -36967,15 +37179,13 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
36967
37179
  break;
36968
37180
  }
36969
37181
  }
36970
- if (curVis != hasVisCell) {
36971
- column.hasVisibleCell = hasVisCell;
36972
- }
37182
+ column.hasVisibleCell = hasVisCell;
36973
37183
  if (isMultipleColumnsVisibility) {
36974
37184
  column.setVisibleChoicesInCell(newVisibleChoices);
36975
37185
  if (!_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isArraysEqual(curVisibleChoices, newVisibleChoices, true, false, false))
36976
37186
  return true;
36977
37187
  }
36978
- return curVis != hasVisCell;
37188
+ return curVis != column.isVisible;
36979
37189
  };
36980
37190
  QuestionMatrixDropdownModelBase.prototype.updateNewVisibleChoices = function (q, dest) {
36981
37191
  var choices = q.visibleChoices;
@@ -37951,9 +38161,6 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
37951
38161
  QuestionMatrixDropdownModelBase.prototype.getRootCss = function () {
37952
38162
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_11__["CssClassBuilder"]().append(_super.prototype.getRootCss.call(this)).append(this.cssClasses.rootScroll, this.horizontalScroll).toString();
37953
38163
  };
37954
- QuestionMatrixDropdownModelBase.prototype.getIsTooltipErrorInsideSupported = function () {
37955
- return false;
37956
- };
37957
38164
  return QuestionMatrixDropdownModelBase;
37958
38165
  }(_martixBase__WEBPACK_IMPORTED_MODULE_1__["QuestionMatrixBaseModel"]));
37959
38166
 
@@ -38096,12 +38303,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
38096
38303
  var _this = _super.call(this) || this;
38097
38304
  _this.colOwnerValue = null;
38098
38305
  _this.indexValue = -1;
38099
- _this._isVisible = true;
38100
38306
  _this._hasVisibleCell = true;
38101
38307
  _this.previousChoicesId = undefined;
38102
38308
  _this.createLocalizableString("totalFormat", _this);
38103
38309
  _this.createLocalizableString("cellHint", _this);
38104
38310
  _this.registerPropertyChangedHandlers(["showInMultipleColumns"], function () { _this.doShowInMultipleColumnsChanged(); });
38311
+ _this.registerPropertyChangedHandlers(["visible"], function () { _this.doColumnVisibilityChanged(); });
38105
38312
  _this.updateTemplateQuestion();
38106
38313
  _this.name = name;
38107
38314
  if (title) {
@@ -38211,15 +38418,30 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
38211
38418
  configurable: true
38212
38419
  });
38213
38420
  Object.defineProperty(MatrixDropdownColumn.prototype, "isVisible", {
38421
+ //For filtering columns
38214
38422
  get: function () {
38215
- return this._isVisible;
38423
+ return true;
38424
+ },
38425
+ enumerable: false,
38426
+ configurable: true
38427
+ });
38428
+ Object.defineProperty(MatrixDropdownColumn.prototype, "isColumnVisible", {
38429
+ get: function () {
38430
+ if (this.isDesignMode)
38431
+ return true;
38432
+ return this.visible && this.hasVisibleCell;
38433
+ },
38434
+ enumerable: false,
38435
+ configurable: true
38436
+ });
38437
+ Object.defineProperty(MatrixDropdownColumn.prototype, "visible", {
38438
+ get: function () { return this.getPropertyValue("visible"); },
38439
+ set: function (val) {
38440
+ this.setPropertyValue("visible", val);
38216
38441
  },
38217
38442
  enumerable: false,
38218
38443
  configurable: true
38219
38444
  });
38220
- MatrixDropdownColumn.prototype.setIsVisible = function (newVal) {
38221
- this._isVisible = newVal;
38222
- };
38223
38445
  Object.defineProperty(MatrixDropdownColumn.prototype, "hasVisibleCell", {
38224
38446
  get: function () {
38225
38447
  return this._hasVisibleCell;
@@ -38757,13 +38979,18 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
38757
38979
  }
38758
38980
  };
38759
38981
  MatrixDropdownColumn.prototype.doShowInMultipleColumnsChanged = function () {
38760
- if (this.colOwner != null && !this.isLoadingFromJson) {
38982
+ if (this.colOwner != null) {
38761
38983
  this.colOwner.onShowInMultipleColumnsChanged(this);
38762
38984
  }
38763
38985
  if (this.templateQuestion) {
38764
38986
  this.templateQuestion.autoOtherMode = this.isShowInMultipleColumns;
38765
38987
  }
38766
38988
  };
38989
+ MatrixDropdownColumn.prototype.doColumnVisibilityChanged = function () {
38990
+ if (this.colOwner != null && !this.isDesignMode) {
38991
+ this.colOwner.onColumnVisibilityChanged(this);
38992
+ }
38993
+ };
38767
38994
  MatrixDropdownColumn.prototype.getProperties = function (curCellType) {
38768
38995
  return _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].getDynamicPropertiesByObj(this, curCellType);
38769
38996
  };
@@ -38845,6 +39072,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("matrixdropdownc
38845
39072
  }
38846
39073
  },
38847
39074
  "width",
39075
+ { name: "visible:switch", default: true, overridingProperty: "visibleIf" },
38848
39076
  "visibleIf:condition",
38849
39077
  "enableIf:condition",
38850
39078
  "requiredIf:condition",
@@ -39448,7 +39676,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39448
39676
  if (this.matrix.isColumnLayoutHorizontal) {
39449
39677
  for (var i = 0; i < this.matrix.visibleColumns.length; i++) {
39450
39678
  var column = this.matrix.visibleColumns[i];
39451
- if (!column.hasVisibleCell)
39679
+ if (!column.isColumnVisible)
39452
39680
  continue;
39453
39681
  if (this.matrix.IsMultiplyColumn(column)) {
39454
39682
  this.createMutlipleColumnsHeader(column);
@@ -39473,7 +39701,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39473
39701
  }
39474
39702
  }
39475
39703
  if (this.hasActionCellInRows("end")) {
39476
- this.headerRow.cells.push(this.createHeaderCell(null));
39704
+ this.headerRow.cells.push(this.createHeaderCell(null, "action"));
39477
39705
  }
39478
39706
  };
39479
39707
  QuestionMatrixDropdownRenderedTable.prototype.buildFooter = function () {
@@ -39492,7 +39720,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39492
39720
  var cells = this.matrix.visibleTotalRow.cells;
39493
39721
  for (var i = 0; i < cells.length; i++) {
39494
39722
  var cell = cells[i];
39495
- if (!cell.column.hasVisibleCell)
39723
+ if (!cell.column.isColumnVisible)
39496
39724
  continue;
39497
39725
  if (this.matrix.IsMultiplyColumn(cell.column)) {
39498
39726
  this.createMutlipleColumnsFooter(this.footerRow, cell);
@@ -39670,14 +39898,14 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39670
39898
  for (var i = 0; i < row.cells.length; i++) {
39671
39899
  var cell = row.cells[i];
39672
39900
  if (!cell.hasQuestion) {
39673
- res.cells.push(this.createEmptyCell());
39901
+ res.cells.push(this.createEmptyCell(true));
39674
39902
  }
39675
39903
  else if (this.matrix.IsMultiplyColumn(cell.cell.column)) {
39676
39904
  if (cell.isFirstChoice) {
39677
39905
  res.cells.push(this.createErrorCell(cell.cell));
39678
39906
  }
39679
39907
  else {
39680
- res.cells.push(this.createEmptyCell());
39908
+ res.cells.push(this.createEmptyCell(true));
39681
39909
  }
39682
39910
  }
39683
39911
  else {
@@ -39710,7 +39938,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39710
39938
  }
39711
39939
  for (var i = 0; i < row.cells.length; i++) {
39712
39940
  var cell = row.cells[i];
39713
- if (!cell.column.hasVisibleCell)
39941
+ if (!cell.column.isColumnVisible)
39714
39942
  continue;
39715
39943
  if (this.matrix.IsMultiplyColumn(cell.column)) {
39716
39944
  this.createMutlipleEditCells(res, cell);
@@ -39780,7 +40008,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39780
40008
  var renderedRows = [];
39781
40009
  for (var i = 0; i < columns.length; i++) {
39782
40010
  var col = columns[i];
39783
- if (col.isVisible && col.hasVisibleCell) {
40011
+ if (col.isColumnVisible) {
39784
40012
  if (this.matrix.IsMultiplyColumn(col)) {
39785
40013
  this.createMutlipleVerticalRows(renderedRows, col, i);
39786
40014
  }
@@ -39995,12 +40223,14 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
39995
40223
  }
39996
40224
  return cell;
39997
40225
  };
39998
- QuestionMatrixDropdownRenderedTable.prototype.createEmptyCell = function () {
40226
+ QuestionMatrixDropdownRenderedTable.prototype.createEmptyCell = function (isError) {
40227
+ if (isError === void 0) { isError = false; }
39999
40228
  var res = this.createTextCell(null);
40000
40229
  res.isEmpty = true;
40001
40230
  res.className = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]()
40002
40231
  .append(this.cssClasses.cell)
40003
40232
  .append(this.cssClasses.emptyCell)
40233
+ .append(this.cssClasses.errorsCell, isError)
40004
40234
  .toString();
40005
40235
  return res;
40006
40236
  };
@@ -41133,7 +41363,7 @@ _questionfactory__WEBPACK_IMPORTED_MODULE_1__["QuestionFactory"].Instance.regist
41133
41363
  /*!**************************************!*\
41134
41364
  !*** ./src/question_multipletext.ts ***!
41135
41365
  \**************************************/
41136
- /*! exports provided: MultipleTextEditorModel, MultipleTextItemModel, QuestionMultipleTextModel */
41366
+ /*! exports provided: MultipleTextEditorModel, MultipleTextItemModel, QuestionMultipleTextModel, MutlipleTextRow, MutlipleTextErrorRow, MultipleTextCell, MultipleTextErrorCell */
41137
41367
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
41138
41368
 
41139
41369
  "use strict";
@@ -41141,6 +41371,10 @@ __webpack_require__.r(__webpack_exports__);
41141
41371
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultipleTextEditorModel", function() { return MultipleTextEditorModel; });
41142
41372
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultipleTextItemModel", function() { return MultipleTextItemModel; });
41143
41373
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QuestionMultipleTextModel", function() { return QuestionMultipleTextModel; });
41374
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextRow", function() { return MutlipleTextRow; });
41375
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MutlipleTextErrorRow", function() { return MutlipleTextErrorRow; });
41376
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultipleTextCell", function() { return MultipleTextCell; });
41377
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultipleTextErrorCell", function() { return MultipleTextErrorCell; });
41144
41378
  /* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ "./src/base.ts");
41145
41379
  /* harmony import */ var _survey_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./survey-element */ "./src/survey-element.ts");
41146
41380
  /* harmony import */ var _question__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./question */ "./src/question.ts");
@@ -41165,6 +41399,12 @@ var __extends = (undefined && undefined.__extends) || (function () {
41165
41399
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
41166
41400
  };
41167
41401
  })();
41402
+ var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
41403
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
41404
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
41405
+ 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;
41406
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
41407
+ };
41168
41408
 
41169
41409
 
41170
41410
 
@@ -41207,6 +41447,9 @@ var MultipleTextItemModel = /** @class */ (function (_super) {
41207
41447
  if (name === void 0) { name = null; }
41208
41448
  if (title === void 0) { title = null; }
41209
41449
  var _this = _super.call(this) || this;
41450
+ _this.focusIn = function () {
41451
+ _this.editor.focusIn();
41452
+ };
41210
41453
  _this.editorValue = _this.createEditor(name);
41211
41454
  _this.editor.questionTitleTemplateCallback = function () {
41212
41455
  return "";
@@ -41281,9 +41524,6 @@ var MultipleTextItemModel = /** @class */ (function (_super) {
41281
41524
  this.editor.setParentQuestion(data);
41282
41525
  }
41283
41526
  };
41284
- MultipleTextItemModel.prototype.focusIn = function () {
41285
- this.editor.focusIn();
41286
- };
41287
41527
  Object.defineProperty(MultipleTextItemModel.prototype, "isRequired", {
41288
41528
  /**
41289
41529
  * 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 +41788,8 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
41548
41788
  _this.survey.multipleTextItemAdded(_this, item);
41549
41789
  }
41550
41790
  });
41551
- _this.registerPropertyChangedHandlers(["items", "colCount"], function () {
41552
- _this.fireCallback(_this.colCountChangedCallback);
41791
+ _this.registerPropertyChangedHandlers(["items", "colCount", "itemErrorLocation"], function () {
41792
+ _this.calcVisibleRows();
41553
41793
  });
41554
41794
  _this.registerPropertyChangedHandlers(["itemSize"], function () { _this.updateItemsSize(); });
41555
41795
  return _this;
@@ -41600,7 +41840,6 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
41600
41840
  QuestionMultipleTextModel.prototype.onSurveyLoad = function () {
41601
41841
  this.editorsOnSurveyLoad();
41602
41842
  _super.prototype.onSurveyLoad.call(this);
41603
- this.fireCallback(this.colCountChangedCallback);
41604
41843
  };
41605
41844
  QuestionMultipleTextModel.prototype.setQuestionValue = function (newValue, updateIsAnswered) {
41606
41845
  if (updateIsAnswered === void 0) { updateIsAnswered = true; }
@@ -41739,6 +41978,20 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
41739
41978
  return this.itemErrorLocation;
41740
41979
  return this.getErrorLocation();
41741
41980
  };
41981
+ Object.defineProperty(QuestionMultipleTextModel.prototype, "showItemErrorOnTop", {
41982
+ get: function () {
41983
+ return this.getQuestionErrorLocation() == "top";
41984
+ },
41985
+ enumerable: false,
41986
+ configurable: true
41987
+ });
41988
+ Object.defineProperty(QuestionMultipleTextModel.prototype, "showItemErrorOnBottom", {
41989
+ get: function () {
41990
+ return this.getQuestionErrorLocation() == "bottom";
41991
+ },
41992
+ enumerable: false,
41993
+ configurable: true
41994
+ });
41742
41995
  QuestionMultipleTextModel.prototype.getChildErrorLocation = function (child) {
41743
41996
  return this.getQuestionErrorLocation();
41744
41997
  };
@@ -41782,22 +42035,44 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
41782
42035
  enumerable: false,
41783
42036
  configurable: true
41784
42037
  });
41785
- QuestionMultipleTextModel.prototype.getRows = function () {
42038
+ QuestionMultipleTextModel.prototype.onRowCreated = function (row) {
42039
+ return row;
42040
+ };
42041
+ QuestionMultipleTextModel.prototype.calcVisibleRows = function () {
41786
42042
  var colCount = this.colCount;
41787
42043
  var items = this.items;
41788
- var rows = [];
41789
42044
  var index = 0;
42045
+ var row;
42046
+ var errorRow;
42047
+ var rows = [];
41790
42048
  for (var i = 0; i < items.length; i++) {
41791
42049
  if (index == 0) {
41792
- rows.push([]);
42050
+ row = this.onRowCreated(new MutlipleTextRow());
42051
+ errorRow = this.onRowCreated(new MutlipleTextErrorRow());
42052
+ if (this.showItemErrorOnTop) {
42053
+ rows.push(errorRow);
42054
+ rows.push(row);
42055
+ }
42056
+ else {
42057
+ rows.push(row);
42058
+ rows.push(errorRow);
42059
+ }
41793
42060
  }
41794
- rows[rows.length - 1].push(items[i]);
42061
+ row.cells.push(new MultipleTextCell(items[i], this));
42062
+ errorRow.cells.push(new MultipleTextErrorCell(items[i], this));
41795
42063
  index++;
41796
- if (index >= colCount) {
42064
+ if (index >= colCount || i == items.length - 1) {
41797
42065
  index = 0;
42066
+ errorRow.onAfterCreated();
41798
42067
  }
41799
42068
  }
41800
- return rows;
42069
+ this.rows = rows;
42070
+ };
42071
+ QuestionMultipleTextModel.prototype.getRows = function () {
42072
+ if (_helpers__WEBPACK_IMPORTED_MODULE_6__["Helpers"].isValueEmpty(this.rows)) {
42073
+ this.calcVisibleRows();
42074
+ }
42075
+ return this.rows;
41801
42076
  };
41802
42077
  QuestionMultipleTextModel.prototype.onValueChanged = function () {
41803
42078
  _super.prototype.onValueChanged.call(this);
@@ -41975,12 +42250,87 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
41975
42250
  QuestionMultipleTextModel.prototype.getItemTitleCss = function () {
41976
42251
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_7__["CssClassBuilder"]().append(this.cssClasses.itemTitle).toString();
41977
42252
  };
41978
- QuestionMultipleTextModel.prototype.getIsTooltipErrorInsideSupported = function () {
41979
- return true;
41980
- };
42253
+ __decorate([
42254
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_4__["propertyArray"])()
42255
+ ], QuestionMultipleTextModel.prototype, "rows", void 0);
41981
42256
  return QuestionMultipleTextModel;
41982
42257
  }(_question__WEBPACK_IMPORTED_MODULE_2__["Question"]));
41983
42258
 
42259
+ var MutlipleTextRow = /** @class */ (function (_super) {
42260
+ __extends(MutlipleTextRow, _super);
42261
+ function MutlipleTextRow() {
42262
+ var _this = _super !== null && _super.apply(this, arguments) || this;
42263
+ _this.isVisible = true;
42264
+ _this.cells = [];
42265
+ return _this;
42266
+ }
42267
+ __decorate([
42268
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_4__["property"])()
42269
+ ], MutlipleTextRow.prototype, "isVisible", void 0);
42270
+ __decorate([
42271
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_4__["propertyArray"])()
42272
+ ], MutlipleTextRow.prototype, "cells", void 0);
42273
+ return MutlipleTextRow;
42274
+ }(_base__WEBPACK_IMPORTED_MODULE_0__["Base"]));
42275
+
42276
+ var MutlipleTextErrorRow = /** @class */ (function (_super) {
42277
+ __extends(MutlipleTextErrorRow, _super);
42278
+ function MutlipleTextErrorRow() {
42279
+ return _super !== null && _super.apply(this, arguments) || this;
42280
+ }
42281
+ MutlipleTextErrorRow.prototype.onAfterCreated = function () {
42282
+ var _this = this;
42283
+ var callback = function () {
42284
+ _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); });
42285
+ };
42286
+ this.cells.forEach(function (cell) {
42287
+ var _a, _b;
42288
+ if ((_a = cell.item) === null || _a === void 0 ? void 0 : _a.editor) {
42289
+ (_b = cell.item) === null || _b === void 0 ? void 0 : _b.editor.registerFunctionOnPropertyValueChanged("hasVisibleErrors", callback);
42290
+ }
42291
+ });
42292
+ callback();
42293
+ };
42294
+ return MutlipleTextErrorRow;
42295
+ }(MutlipleTextRow));
42296
+
42297
+ var MultipleTextCell = /** @class */ (function () {
42298
+ function MultipleTextCell(item, question) {
42299
+ this.item = item;
42300
+ this.question = question;
42301
+ this.isErrorsCell = false;
42302
+ }
42303
+ MultipleTextCell.prototype.getClassName = function () {
42304
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_7__["CssClassBuilder"]().append(this.question.cssClasses.cell).toString();
42305
+ };
42306
+ Object.defineProperty(MultipleTextCell.prototype, "className", {
42307
+ get: function () {
42308
+ return this.getClassName();
42309
+ },
42310
+ enumerable: false,
42311
+ configurable: true
42312
+ });
42313
+ return MultipleTextCell;
42314
+ }());
42315
+
42316
+ var MultipleTextErrorCell = /** @class */ (function (_super) {
42317
+ __extends(MultipleTextErrorCell, _super);
42318
+ function MultipleTextErrorCell() {
42319
+ var _this = _super !== null && _super.apply(this, arguments) || this;
42320
+ _this.isErrorsCell = true;
42321
+ return _this;
42322
+ }
42323
+ MultipleTextErrorCell.prototype.getClassName = function () {
42324
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_7__["CssClassBuilder"]()
42325
+ .append(_super.prototype.getClassName.call(this))
42326
+ .append(this.question.cssClasses.cellError)
42327
+ .append(this.question.cssClasses.cellErrorTop, this.question.showItemErrorOnTop)
42328
+ .append(this.question.cssClasses.cellErrorBottom, this.question.showItemErrorOnBottom)
42329
+ .toString();
42330
+ };
42331
+ return MultipleTextErrorCell;
42332
+ }(MultipleTextCell));
42333
+
41984
42334
  _jsonobject__WEBPACK_IMPORTED_MODULE_4__["Serializer"].addClass("multipletextitem", [
41985
42335
  { name: "!name", isUnique: true },
41986
42336
  "isRequired:boolean",
@@ -43832,6 +44182,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
43832
44182
  if (!!this.parentQuestion && !!this.parent) {
43833
44183
  cachedValues[QuestionPanelDynamicItem.ParentItemVariableName] = this.parent.getValue();
43834
44184
  }
44185
+ this.isValueChangingInternally = true;
43835
44186
  for (var i = 0; i < this.panels.length; i++) {
43836
44187
  var panel = this.panels[i];
43837
44188
  var panelValues = this.getPanelItemData(panel.data);
@@ -43844,6 +44195,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
43844
44195
  newProps[panelName] = panel;
43845
44196
  panel.runCondition(newValues, newProps);
43846
44197
  }
44198
+ this.isValueChangingInternally = false;
43847
44199
  };
43848
44200
  QuestionPanelDynamicModel.prototype.onAnyValueChanged = function (name) {
43849
44201
  _super.prototype.onAnyValueChanged.call(this, name);
@@ -44488,11 +44840,22 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
44488
44840
  this.updateFooterActionsCallback();
44489
44841
  this.footerToolbarValue.setItems(items);
44490
44842
  };
44491
- QuestionPanelDynamicModel.prototype.createTabByPanel = function (panel) {
44843
+ QuestionPanelDynamicModel.prototype.createTabByPanel = function (panel, visPanelIndex) {
44492
44844
  var _this = this;
44493
44845
  if (!this.isRenderModeTab)
44494
44846
  return;
44495
44847
  var locTitle = new _localizablestring__WEBPACK_IMPORTED_MODULE_2__["LocalizableString"](panel, true);
44848
+ locTitle.onGetTextCallback = function (str) {
44849
+ if (!_this.survey)
44850
+ return str;
44851
+ var options = {
44852
+ title: str,
44853
+ panel: panel,
44854
+ visiblePanelIndex: visPanelIndex
44855
+ };
44856
+ _this.survey.dynamicPanelGetTabTitle(_this, options);
44857
+ return options.title;
44858
+ };
44496
44859
  locTitle.sharedData = this.locTemplateTabTitle;
44497
44860
  var isActive = this.getPanelIndexById(panel.id) === this.currentIndex;
44498
44861
  var newItem = new _actions_action__WEBPACK_IMPORTED_MODULE_11__["Action"]({
@@ -44536,13 +44899,20 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
44536
44899
  if (!this.isRenderModeTab)
44537
44900
  return;
44538
44901
  var items = [];
44539
- this.visiblePanels.forEach(function (panel) { return items.push(_this.createTabByPanel(panel)); });
44902
+ var visPanels = this.visiblePanels;
44903
+ var _loop_1 = function (i) {
44904
+ this_1.visiblePanels.forEach(function (panel) { return items.push(_this.createTabByPanel(visPanels[i], i)); });
44905
+ };
44906
+ var this_1 = this;
44907
+ for (var i = 0; i < visPanels.length; i++) {
44908
+ _loop_1(i);
44909
+ }
44540
44910
  this.additionalTitleToolbar.setItems(items);
44541
44911
  };
44542
44912
  QuestionPanelDynamicModel.prototype.addTabFromToolbar = function (panel, index) {
44543
44913
  if (!this.isRenderModeTab)
44544
44914
  return;
44545
- var newItem = this.createTabByPanel(panel);
44915
+ var newItem = this.createTabByPanel(panel, index);
44546
44916
  this.additionalTitleToolbar.actions.splice(index, 0, newItem);
44547
44917
  this.updateTabToolbarItemsPressedState();
44548
44918
  };
@@ -44929,7 +45299,9 @@ var QuestionRankingModel = /** @class */ (function (_super) {
44929
45299
  var target = event.target;
44930
45300
  if (!_this.isDragStartNodeValid(target))
44931
45301
  return;
44932
- if (_this.allowStartDrag && _this.canStartDragDueMaxSelectedChoices(target)) {
45302
+ if (_this.allowStartDrag &&
45303
+ _this.canStartDragDueMaxSelectedChoices(target) &&
45304
+ _this.canStartDragDueItemEnabled(choice)) {
44933
45305
  _this.dragDropRankingChoices.startDrag(event, choice, _this, node);
44934
45306
  }
44935
45307
  };
@@ -45002,7 +45374,9 @@ var QuestionRankingModel = /** @class */ (function (_super) {
45002
45374
  return "ranking";
45003
45375
  };
45004
45376
  QuestionRankingModel.prototype.getItemTabIndex = function (item) {
45005
- return this.isDesignMode ? undefined : 0;
45377
+ if (this.isDesignMode || item.disabled)
45378
+ return undefined;
45379
+ return 0;
45006
45380
  };
45007
45381
  Object.defineProperty(QuestionRankingModel.prototype, "rootClass", {
45008
45382
  get: function () {
@@ -45217,6 +45591,9 @@ var QuestionRankingModel = /** @class */ (function (_super) {
45217
45591
  }
45218
45592
  return true;
45219
45593
  };
45594
+ QuestionRankingModel.prototype.canStartDragDueItemEnabled = function (item) {
45595
+ return item.enabled;
45596
+ };
45220
45597
  QuestionRankingModel.prototype.checkMaxSelectedChoicesUnreached = function () {
45221
45598
  if (this.maxSelectedChoices < 1)
45222
45599
  return true;
@@ -46994,18 +47371,24 @@ var QuestionTagboxModel = /** @class */ (function (_super) {
46994
47371
  _this.onOpened = _this.addEvent();
46995
47372
  _this.createLocalizableString("placeholder", _this, false, true);
46996
47373
  _this.createLocalizableString("clearCaption", _this, false, true);
47374
+ _this.registerPropertyChangedHandlers(["value", "renderAs", "showOtherItem", "otherText", "placeholder", "choices", "visibleChoices"], function () {
47375
+ _this.updateReadOnlyText();
47376
+ });
47377
+ _this.updateReadOnlyText();
46997
47378
  return _this;
46998
47379
  }
47380
+ QuestionTagboxModel.prototype.locStrsChanged = function () {
47381
+ var _a;
47382
+ _super.prototype.locStrsChanged.call(this);
47383
+ this.updateReadOnlyText();
47384
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.locStrsChanged();
47385
+ };
47386
+ QuestionTagboxModel.prototype.updateReadOnlyText = function () {
47387
+ this.readOnlyText = this.displayValue || this.placeholder;
47388
+ };
46999
47389
  QuestionTagboxModel.prototype.getDefaultItemComponent = function () {
47000
47390
  return "";
47001
47391
  };
47002
- Object.defineProperty(QuestionTagboxModel.prototype, "readOnlyText", {
47003
- get: function () {
47004
- return this.displayValue || this.placeholder;
47005
- },
47006
- enumerable: false,
47007
- configurable: true
47008
- });
47009
47392
  QuestionTagboxModel.prototype.onSurveyLoad = function () {
47010
47393
  _super.prototype.onSurveyLoad.call(this);
47011
47394
  if (!this.dropdownListModel) {
@@ -47158,6 +47541,9 @@ var QuestionTagboxModel = /** @class */ (function (_super) {
47158
47541
  _super.prototype.clearValue.call(this);
47159
47542
  this.dropdownListModel.clear();
47160
47543
  };
47544
+ __decorate([
47545
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: "" })
47546
+ ], QuestionTagboxModel.prototype, "readOnlyText", void 0);
47161
47547
  __decorate([
47162
47548
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])()
47163
47549
  ], QuestionTagboxModel.prototype, "allowClear", void 0);
@@ -49736,7 +50122,7 @@ var SurveyElementCore = /** @class */ (function (_super) {
49736
50122
  var property_1 = _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].findProperty(this.getType(), "description");
49737
50123
  showPlaceholder = !!(property_1 === null || property_1 === void 0 ? void 0 : property_1.placeholder);
49738
50124
  }
49739
- this.hasDescription = !!newDescription || showPlaceholder;
50125
+ this.hasDescription = !!newDescription || (showPlaceholder && this.isDesignMode);
49740
50126
  };
49741
50127
  Object.defineProperty(SurveyElementCore.prototype, "locDescription", {
49742
50128
  get: function () {
@@ -50205,6 +50591,7 @@ var SurveyElement = /** @class */ (function (_super) {
50205
50591
  this.onSetData();
50206
50592
  }
50207
50593
  if (!!this.survey) {
50594
+ this.updateDescriptionVisibility(this.description);
50208
50595
  this.clearCssClasses();
50209
50596
  }
50210
50597
  };
@@ -50649,23 +51036,6 @@ var SurveyElement = /** @class */ (function (_super) {
50649
51036
  enumerable: false,
50650
51037
  configurable: true
50651
51038
  });
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
51039
  Object.defineProperty(SurveyElement.prototype, "hasParent", {
50670
51040
  get: function () {
50671
51041
  return (this.parent && !this.parent.isPage && (!this.parent.originalPage || this.survey.isShowingPreview)) || (this.parent === undefined);
@@ -50684,10 +51054,10 @@ var SurveyElement = /** @class */ (function (_super) {
50684
51054
  configurable: true
50685
51055
  });
50686
51056
  SurveyElement.prototype.getHasFrameV2 = function () {
50687
- return this.shouldAddRunnerStyles() && (!this.hasParent && this.isSingleInRow);
51057
+ return this.shouldAddRunnerStyles() && (!this.hasParent);
50688
51058
  };
50689
51059
  SurveyElement.prototype.getIsNested = function () {
50690
- return this.shouldAddRunnerStyles() && (this.hasParent || !this.isSingleInRow);
51060
+ return this.shouldAddRunnerStyles() && (this.hasParent);
50691
51061
  };
50692
51062
  SurveyElement.prototype.getCssRoot = function (cssClasses) {
50693
51063
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_6__["CssClassBuilder"]()
@@ -50893,6 +51263,12 @@ var SurveyElement = /** @class */ (function (_super) {
50893
51263
  });
50894
51264
  }
50895
51265
  };
51266
+ SurveyElement.prototype.dispose = function () {
51267
+ _super.prototype.dispose.call(this);
51268
+ if (this.titleToolbarValue) {
51269
+ this.titleToolbarValue.dispose();
51270
+ }
51271
+ };
50896
51272
  SurveyElement.CreateDisabledDesignElements = false;
50897
51273
  __decorate([
50898
51274
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: null })
@@ -51150,7 +51526,7 @@ var SurveyModel = /** @class */ (function (_super) {
51150
51526
  *
51151
51527
  * For information on event handler parameters, refer to descriptions within the interface.
51152
51528
  *
51153
- * [Continue an Incomplete Survey](https://surveyjs.io/form-library/documentation/handle-survey-results-continue-incomplete (linkStyle))
51529
+ * 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
51530
  */
51155
51531
  _this.onPartialSend = _this.addEvent();
51156
51532
  /**
@@ -51175,7 +51551,7 @@ var SurveyModel = /** @class */ (function (_super) {
51175
51551
  */
51176
51552
  _this.onValueChanging = _this.addEvent();
51177
51553
  /**
51178
- * An event that is raised after a question value is changed
51554
+ * An event that is raised after a question value is changed.
51179
51555
  *
51180
51556
  * For information on event handler parameters, refer to descriptions within the interface.
51181
51557
  *
@@ -51663,6 +52039,10 @@ var SurveyModel = /** @class */ (function (_super) {
51663
52039
  * 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
52040
  */
51665
52041
  _this.onDynamicPanelItemValueChanged = _this.addEvent();
52042
+ /**
52043
+ * 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.
52044
+ */
52045
+ _this.onGetDynamicPanelTabTitle = _this.addEvent();
51666
52046
  /**
51667
52047
  * Use this event to define, whether an answer to a question is correct or not.
51668
52048
  * @see Question.value
@@ -51880,6 +52260,16 @@ var SurveyModel = /** @class */ (function (_super) {
51880
52260
  _this.setCalculatedWidthModeUpdater();
51881
52261
  _this.notifier = new _notifier__WEBPACK_IMPORTED_MODULE_19__["Notifier"](_this.css.saveData);
51882
52262
  _this.notifier.addAction(_this.createTryAgainAction(), "error");
52263
+ _this.onPopupVisibleChanged.add(function (_, opt) {
52264
+ if (opt.visible) {
52265
+ _this.onScrollCallback = function () {
52266
+ opt.popup.toggleVisibility();
52267
+ };
52268
+ }
52269
+ else {
52270
+ _this.onScrollCallback = undefined;
52271
+ }
52272
+ });
51883
52273
  _this.layoutElements.push({
51884
52274
  id: "timerpanel",
51885
52275
  template: "survey-timerpanel",
@@ -52055,6 +52445,14 @@ var SurveyModel = /** @class */ (function (_super) {
52055
52445
  this.containerCss = this.css.container;
52056
52446
  this.completedCss = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_18__["CssClassBuilder"]().append(this.css.body)
52057
52447
  .append(this.css.completedPage).toString(); // for completed page
52448
+ this.completedBeforeCss = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_18__["CssClassBuilder"]()
52449
+ .append(this.css.body)
52450
+ .append(this.css.completedBeforePage)
52451
+ .toString();
52452
+ this.loadingBodyCss = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_18__["CssClassBuilder"]()
52453
+ .append(this.css.body)
52454
+ .append(this.css.bodyLoading)
52455
+ .toString();
52058
52456
  };
52059
52457
  SurveyModel.prototype.updateCss = function () {
52060
52458
  this.rootCss = this.getRootCss();
@@ -52305,7 +52703,7 @@ var SurveyModel = /** @class */ (function (_super) {
52305
52703
  /**
52306
52704
  * 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
52705
  *
52308
- * [Continue an Incomplete Survey](https://surveyjs.io/form-library/documentation/handle-survey-results-continue-incomplete (linkStyle))
52706
+ * 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
52707
  */
52310
52708
  get: function () {
52311
52709
  return this.getPropertyValue("sendResultOnPageNext");
@@ -53861,11 +54259,12 @@ var SurveyModel = /** @class */ (function (_super) {
53861
54259
  SurveyModel.prototype.getProgressTypeComponent = function () {
53862
54260
  return "sv-progress-" + this.progressBarType.toLowerCase();
53863
54261
  };
53864
- SurveyModel.prototype.getProgressCssClasses = function () {
54262
+ SurveyModel.prototype.getProgressCssClasses = function (container) {
54263
+ if (container === void 0) { container = ""; }
53865
54264
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_18__["CssClassBuilder"]()
53866
54265
  .append(this.css.progress)
53867
- .append(this.css.progressTop, this.isShowProgressBarOnTop)
53868
- .append(this.css.progressBottom, this.isShowProgressBarOnBottom)
54266
+ .append(this.css.progressTop, this.isShowProgressBarOnTop && (!container || container == "header"))
54267
+ .append(this.css.progressBottom, this.isShowProgressBarOnBottom && (!container || container == "footer"))
53869
54268
  .toString();
53870
54269
  };
53871
54270
  SurveyModel.prototype.canShowProresBar = function () {
@@ -54213,6 +54612,11 @@ var SurveyModel = /** @class */ (function (_super) {
54213
54612
  var key = keys[i];
54214
54613
  values[key] = this.getDataValueCore(this.valuesHash, key);
54215
54614
  }
54615
+ this.getAllQuestions().forEach(function (q) {
54616
+ if (q.hasFilteredValue) {
54617
+ values[q.getValueName()] = q.getFilteredValue();
54618
+ }
54619
+ });
54216
54620
  return values;
54217
54621
  };
54218
54622
  SurveyModel.prototype.addCalculatedValuesIntoFilteredValues = function (values) {
@@ -56139,6 +56543,7 @@ var SurveyModel = /** @class */ (function (_super) {
56139
56543
  .append(this.css.rootMobile, this.isMobile)
56140
56544
  .append(this.css.rootReadOnly, this.mode === "display")
56141
56545
  .append(this.css.rootCompact, this.isCompact)
56546
+ .append(this.css.rootFitToContainer, this.fitToContainer)
56142
56547
  .toString();
56143
56548
  };
56144
56549
  SurveyModel.prototype.afterRenderSurvey = function (htmlElement) {
@@ -56169,6 +56574,7 @@ var SurveyModel = /** @class */ (function (_super) {
56169
56574
  htmlElement: htmlElement,
56170
56575
  });
56171
56576
  this.rootElement = htmlElement;
56577
+ this.addScrollEventListener();
56172
56578
  };
56173
56579
  SurveyModel.prototype.processResponsiveness = function (width, mobileWidth) {
56174
56580
  var isMobile = width < mobileWidth;
@@ -56431,6 +56837,10 @@ var SurveyModel = /** @class */ (function (_super) {
56431
56837
  options.panelData = options.itemValue;
56432
56838
  this.onDynamicPanelItemValueChanged.fire(this, options);
56433
56839
  };
56840
+ SurveyModel.prototype.dynamicPanelGetTabTitle = function (question, options) {
56841
+ options.question = question;
56842
+ this.onGetDynamicPanelTabTitle.fire(this, options);
56843
+ };
56434
56844
  SurveyModel.prototype.dragAndDropAllow = function (options) {
56435
56845
  this.onDragDropAllow.fire(this, options);
56436
56846
  return options.allow;
@@ -56693,9 +57103,11 @@ var SurveyModel = /** @class */ (function (_super) {
56693
57103
  }
56694
57104
  };
56695
57105
  /**
56696
- * Returns a question by its name.
56697
- * @param name a question name
56698
- * @param caseInsensitive
57106
+ * Returns a question with a specified [`name`](https://surveyjs.io/form-library/documentation/api-reference/question#name).
57107
+ * @param name A question name
57108
+ * @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).
57109
+ * @returns A question with a specified name.
57110
+ * @see getAllQuestions
56699
57111
  * @see getQuestionByValueName
56700
57112
  */
56701
57113
  SurveyModel.prototype.getQuestionByName = function (name, caseInsensitive) {
@@ -56717,12 +57129,14 @@ var SurveyModel = /** @class */ (function (_super) {
56717
57129
  return this.getQuestionByName(name);
56718
57130
  };
56719
57131
  /**
56720
- * Returns a question by its value name
56721
- * @param valueName a question name
56722
- * @param caseInsensitive
57132
+ * Returns a question with a specified [`valueName`](https://surveyjs.io/form-library/documentation/api-reference/question#valueName).
57133
+ *
57134
+ * > 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.
57135
+ * @param valueName A question's `valueName` property value.
57136
+ * @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).
57137
+ * @returns A question with a specified `valueName`.
57138
+ * @see getAllQuestions
56723
57139
  * @see getQuestionByName
56724
- * @see getQuestionsByValueName
56725
- * @see Question.valueName
56726
57140
  */
56727
57141
  SurveyModel.prototype.getQuestionByValueName = function (valueName, caseInsensitive) {
56728
57142
  if (caseInsensitive === void 0) { caseInsensitive = false; }
@@ -56730,12 +57144,12 @@ var SurveyModel = /** @class */ (function (_super) {
56730
57144
  return !!res ? res[0] : null;
56731
57145
  };
56732
57146
  /**
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
57147
+ * 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.
57148
+ * @param valueName A question's `valueName` property value.
57149
+ * @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).
57150
+ * @returns An array of questions with a specified `valueName`.
57151
+ * @see getAllQuestions
56736
57152
  * @see getQuestionByName
56737
- * @see getQuestionByValueName
56738
- * @see Question.valueName
56739
57153
  */
56740
57154
  SurveyModel.prototype.getQuestionsByValueName = function (valueName, caseInsensitive) {
56741
57155
  if (caseInsensitive === void 0) { caseInsensitive = false; }
@@ -56755,9 +57169,11 @@ var SurveyModel = /** @class */ (function (_super) {
56755
57169
  return null;
56756
57170
  };
56757
57171
  /**
56758
- * Gets a list of questions by their names.
56759
- * @param names an array of question names
56760
- * @param caseInsensitive
57172
+ * Returns an array of questions with specified [names](https://surveyjs.io/form-library/documentation/api-reference/question#name).
57173
+ * @param names An array of question names.
57174
+ * @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).
57175
+ * @returns An array of questions with specified names
57176
+ * @see getAllQuestions
56761
57177
  */
56762
57178
  SurveyModel.prototype.getQuestionsByNames = function (names, caseInsensitive) {
56763
57179
  if (caseInsensitive === void 0) { caseInsensitive = false; }
@@ -56821,10 +57237,12 @@ var SurveyModel = /** @class */ (function (_super) {
56821
57237
  return result;
56822
57238
  };
56823
57239
  /**
56824
- * Returns a list of all questions in the survey.
57240
+ * Returns a list of all [questions](https://surveyjs.io/form-library/documentation/api-reference/question) in the survey.
56825
57241
  * @param visibleOnly A Boolean value that specifies whether to include only visible questions.
56826
57242
  * @param includeDesignTime For internal use.
56827
57243
  * @param includeNested A Boolean value that specifies whether to include nested questions, such as questions within matrix cells.
57244
+ * @returns An array of questions.
57245
+ * @see getQuestionByName
56828
57246
  */
56829
57247
  SurveyModel.prototype.getAllQuestions = function (visibleOnly, includeDesignTime, includeNested) {
56830
57248
  if (visibleOnly === void 0) { visibleOnly = false; }
@@ -56846,7 +57264,10 @@ var SurveyModel = /** @class */ (function (_super) {
56846
57264
  return res2;
56847
57265
  };
56848
57266
  /**
56849
- * Returns quiz questions. All visible questions that has input(s) widgets.
57267
+ * 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).
57268
+ *
57269
+ * For more information about quizzes, refer to the following tutorial: [Create a Quiz](https://surveyjs.io/form-library/documentation/design-survey/create-a-quiz).
57270
+ * @returns An array of quiz questions.
56850
57271
  * @see getQuizQuestionCount
56851
57272
  */
56852
57273
  SurveyModel.prototype.getQuizQuestions = function () {
@@ -56866,10 +57287,11 @@ var SurveyModel = /** @class */ (function (_super) {
56866
57287
  return result;
56867
57288
  };
56868
57289
  /**
56869
- * Returns a panel by its name.
56870
- * @param name a panel name
56871
- * @param caseInsensitive
56872
- * @see getQuestionByName
57290
+ * 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).
57291
+ * @param name A panel name.
57292
+ * @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).
57293
+ * @returns A panel with a specified name.
57294
+ * @see getAllPanels
56873
57295
  */
56874
57296
  SurveyModel.prototype.getPanelByName = function (name, caseInsensitive) {
56875
57297
  if (caseInsensitive === void 0) { caseInsensitive = false; }
@@ -56886,7 +57308,11 @@ var SurveyModel = /** @class */ (function (_super) {
56886
57308
  return null;
56887
57309
  };
56888
57310
  /**
56889
- * Returns a list of all survey's panels.
57311
+ * Returns a list of all [panels](https://surveyjs.io/form-library/documentation/api-reference/panel-model) in the survey.
57312
+ * @param visibleOnly A Boolean value that specifies whether to include only visible panels.
57313
+ * @param includeDesignTime For internal use.
57314
+ * @returns An array of panels.
57315
+ * @see getPanelByName
56890
57316
  */
56891
57317
  SurveyModel.prototype.getAllPanels = function (visibleOnly, includeDesignTime) {
56892
57318
  if (visibleOnly === void 0) { visibleOnly = false; }
@@ -57601,9 +58027,13 @@ var SurveyModel = /** @class */ (function (_super) {
57601
58027
  }
57602
58028
  };
57603
58029
  /**
57604
- * Returns a variable value. Variable, unlike values, are not stored in the survey results.
57605
- * @param name A variable name
57606
- * @see SetVariable
58030
+ * Returns a variable value.
58031
+ *
58032
+ * [Variables help topic](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#variables (linkStyle))
58033
+ * @param name A variable name.
58034
+ * @return A variable value.
58035
+ * @see setVariable
58036
+ * @see getVariableNames
57607
58037
  */
57608
58038
  SurveyModel.prototype.getVariable = function (name) {
57609
58039
  if (!name)
@@ -57619,10 +58049,13 @@ var SurveyModel = /** @class */ (function (_super) {
57619
58049
  return res;
57620
58050
  };
57621
58051
  /**
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
58052
+ * Sets a variable value.
58053
+ *
58054
+ * [Variables help topic](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#variables (linkStyle))
58055
+ * @param name A variable name.
58056
+ * @param newValue A new variable value.
58057
+ * @see getVariable
58058
+ * @see getVariableNames
57626
58059
  */
57627
58060
  SurveyModel.prototype.setVariable = function (name, newValue) {
57628
58061
  if (!name)
@@ -57637,7 +58070,10 @@ var SurveyModel = /** @class */ (function (_super) {
57637
58070
  this.onVariableChanged.fire(this, { name: name, value: newValue });
57638
58071
  };
57639
58072
  /**
57640
- * Returns all variables in the survey. Use setVariable function to create a new variable.
58073
+ * Returns the names of all variables in the survey.
58074
+ *
58075
+ * [Variables help topic](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#variables (linkStyle))
58076
+ * @returns An array of variable names.
57641
58077
  * @see getVariable
57642
58078
  * @see setVariable
57643
58079
  */
@@ -57655,8 +58091,9 @@ var SurveyModel = /** @class */ (function (_super) {
57655
58091
  return _helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].getUnbindValue(value);
57656
58092
  };
57657
58093
  /**
57658
- * Returns a question value (answer) by a question's name.
57659
- * @param name A question name
58094
+ * Returns a value (answer) for a question with a specified `name`.
58095
+ * @param name A question name.
58096
+ * @returns A question value (answer).
57660
58097
  * @see data
57661
58098
  * @see setValue
57662
58099
  */
@@ -57667,16 +58104,15 @@ var SurveyModel = /** @class */ (function (_super) {
57667
58104
  return this.getUnbindValue(value);
57668
58105
  };
57669
58106
  /**
57670
- * Sets a question value (answer). It runs all triggers and conditions (`visibleIf` properties).
58107
+ * Sets a question value (answer).
57671
58108
  *
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
58109
+ * > 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.
58110
+ * @param name A question name.
58111
+ * @param newValue A new question value.
58112
+ * @param locNotification For internal use.
58113
+ * @param allowNotifyValueChanged For internal use.
57675
58114
  * @see data
57676
58115
  * @see getValue
57677
- * @see PageModel.visibleIf
57678
- * @see Question.visibleIf
57679
- * @see goNextPageAutomatic
57680
58116
  */
57681
58117
  SurveyModel.prototype.setValue = function (name, newQuestionValue, locNotification, allowNotifyValueChanged) {
57682
58118
  if (locNotification === void 0) { locNotification = false; }
@@ -57693,7 +58129,7 @@ var SurveyModel = /** @class */ (function (_super) {
57693
58129
  this.isTwoValueEquals(newValue, newQuestionValue))
57694
58130
  return;
57695
58131
  var oldValue = this.getValue(name);
57696
- if (this.isValueEmpty(newValue, false)) {
58132
+ if (this.isValueEmpyOnSetValue(name, newValue)) {
57697
58133
  this.deleteDataValueCore(this.valuesHash, name);
57698
58134
  }
57699
58135
  else {
@@ -57702,6 +58138,13 @@ var SurveyModel = /** @class */ (function (_super) {
57702
58138
  }
57703
58139
  this.updateOnSetValue(name, newValue, oldValue, locNotification, allowNotifyValueChanged);
57704
58140
  };
58141
+ SurveyModel.prototype.isValueEmpyOnSetValue = function (name, val) {
58142
+ if (!this.isValueEmpty(val, false))
58143
+ return false;
58144
+ if (!this.editingObj || val === null || val === undefined)
58145
+ return true;
58146
+ return this.editingObj.getDefaultPropertyValue(name) === val;
58147
+ };
57705
58148
  SurveyModel.prototype.updateOnSetValue = function (name, newValue, oldValue, locNotification, allowNotifyValueChanged) {
57706
58149
  if (locNotification === void 0) { locNotification = false; }
57707
58150
  if (allowNotifyValueChanged === void 0) { allowNotifyValueChanged = true; }
@@ -57800,8 +58243,9 @@ var SurveyModel = /** @class */ (function (_super) {
57800
58243
  }
57801
58244
  };
57802
58245
  /**
57803
- * Returns the comment value.
57804
- * @param name A comment's name.
58246
+ * Returns a comment value from a question with a specified `name`.
58247
+ * @param name A question name.
58248
+ * @returns A comment.
57805
58249
  * @see setComment
57806
58250
  */
57807
58251
  SurveyModel.prototype.getComment = function (name) {
@@ -57809,9 +58253,10 @@ var SurveyModel = /** @class */ (function (_super) {
57809
58253
  return res || "";
57810
58254
  };
57811
58255
  /**
57812
- * Sets a comment value.
57813
- * @param name A comment name.
58256
+ * Sets a comment value to a question with a specified `name`.
58257
+ * @param name A question name.
57814
58258
  * @param newValue A new comment value.
58259
+ * @param locNotification For internal use.
57815
58260
  * @see getComment
57816
58261
  */
57817
58262
  SurveyModel.prototype.setComment = function (name, newValue, locNotification) {
@@ -58081,16 +58526,26 @@ var SurveyModel = /** @class */ (function (_super) {
58081
58526
  return options.html;
58082
58527
  };
58083
58528
  SurveyModel.prototype.getCorrectedAnswerCount = function () {
58084
- return this.getCorrectedAnswerCountCore(true);
58529
+ return this.getCorrectAnswerCount();
58085
58530
  };
58086
58531
  /**
58087
- * Returns an amount of corrected quiz answers.
58532
+ * Returns the number of correct answers in a quiz.
58533
+ *
58534
+ * For more information about quizzes, refer to the following tutorial: [Create a Quiz](https://surveyjs.io/form-library/documentation/design-survey/create-a-quiz).
58535
+ * @returns The number of correct answers in a quiz.
58536
+ * @see getQuizQuestionCount
58537
+ * @see getInCorrectAnswerCount
58088
58538
  */
58089
58539
  SurveyModel.prototype.getCorrectAnswerCount = function () {
58090
58540
  return this.getCorrectedAnswerCountCore(true);
58091
58541
  };
58092
58542
  /**
58093
- * Returns quiz question number. It may be different from `getQuizQuestions.length` because some widgets like matrix may have several questions.
58543
+ * 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).
58544
+ *
58545
+ * This number may be different from `getQuizQuestions().length` because certain question types (for instance, matrix-like types) include more than one question.
58546
+ *
58547
+ * For more information about quizzes, refer to the following tutorial: [Create a Quiz](https://surveyjs.io/form-library/documentation/design-survey/create-a-quiz).
58548
+ * @returns The number of quiz questions.
58094
58549
  * @see getQuizQuestions
58095
58550
  */
58096
58551
  SurveyModel.prototype.getQuizQuestionCount = function () {
@@ -58102,10 +58557,14 @@ var SurveyModel = /** @class */ (function (_super) {
58102
58557
  return res;
58103
58558
  };
58104
58559
  SurveyModel.prototype.getInCorrectedAnswerCount = function () {
58105
- return this.getCorrectedAnswerCountCore(false);
58560
+ return this.getInCorrectAnswerCount();
58106
58561
  };
58107
58562
  /**
58108
- * Returns an amount of incorrect quiz answers.
58563
+ * Returns the number of incorrect answers in a quiz.
58564
+ *
58565
+ * For more information about quizzes, refer to the following tutorial: [Create a Quiz](https://surveyjs.io/form-library/documentation/design-survey/create-a-quiz).
58566
+ * @returns The number of incorrect answers in a quiz.
58567
+ * @see getCorrectAnswerCount
58109
58568
  */
58110
58569
  SurveyModel.prototype.getInCorrectAnswerCount = function () {
58111
58570
  return this.getCorrectedAnswerCountCore(false);
@@ -58119,32 +58578,14 @@ var SurveyModel = /** @class */ (function (_super) {
58119
58578
  SurveyModel.prototype.getCorrectedAnswerCountCore = function (isCorrect) {
58120
58579
  var questions = this.getQuizQuestions();
58121
58580
  var counter = 0;
58122
- var options = {
58123
- question: null,
58124
- result: false,
58125
- correctAnswers: 0,
58126
- incorrectAnswers: 0,
58127
- };
58128
58581
  for (var i = 0; i < questions.length; i++) {
58129
58582
  var q = questions[i];
58130
- var quizQuestionCount = q.quizQuestionCount;
58131
- options.question = q;
58132
- options.correctAnswers = q.correctAnswerCount;
58133
- options.incorrectAnswers = quizQuestionCount - options.correctAnswers;
58134
- options.result = options.question.isAnswerCorrect();
58135
- this.onIsAnswerCorrect.fire(this, options);
58583
+ var correctCount = q.correctAnswerCount;
58136
58584
  if (isCorrect) {
58137
- if (options.result || options.correctAnswers < quizQuestionCount) {
58138
- var addCount = options.correctAnswers;
58139
- if (addCount == 0 && options.result)
58140
- addCount = 1;
58141
- counter += addCount;
58142
- }
58585
+ counter += correctCount;
58143
58586
  }
58144
58587
  else {
58145
- if (!options.result || options.incorrectAnswers < quizQuestionCount) {
58146
- counter += options.incorrectAnswers;
58147
- }
58588
+ counter += q.quizQuestionCount - correctCount;
58148
58589
  }
58149
58590
  }
58150
58591
  return counter;
@@ -58745,7 +59186,7 @@ var SurveyModel = /** @class */ (function (_super) {
58745
59186
  containerLayoutElements.push(layoutElement);
58746
59187
  }
58747
59188
  }
58748
- if (container === "contentBottom") {
59189
+ if (container === "footer") {
58749
59190
  if (this.isShowProgressBarOnBottom && !this.isShowStartingPage) {
58750
59191
  containerLayoutElements.push(layoutElement);
58751
59192
  }
@@ -58804,12 +59245,14 @@ var SurveyModel = /** @class */ (function (_super) {
58804
59245
  * Use this method to dispose survey model properly.
58805
59246
  */
58806
59247
  SurveyModel.prototype.dispose = function () {
58807
- this.currentPage = null;
59248
+ this.removeScrollEventListener();
58808
59249
  this.destroyResizeObserver();
59250
+ this.rootElement = undefined;
58809
59251
  _super.prototype.dispose.call(this);
58810
59252
  this.editingObj = null;
58811
59253
  if (!this.pages)
58812
59254
  return;
59255
+ this.currentPage = null;
58813
59256
  for (var i = 0; i < this.pages.length; i++) {
58814
59257
  this.pages[i].setSurveyImpl(undefined);
58815
59258
  this.pages[i].dispose();
@@ -58819,15 +59262,39 @@ var SurveyModel = /** @class */ (function (_super) {
58819
59262
  this.disposeCallback();
58820
59263
  }
58821
59264
  };
59265
+ SurveyModel.prototype.onScroll = function () {
59266
+ if (this.onScrollCallback) {
59267
+ this.onScrollCallback();
59268
+ }
59269
+ };
59270
+ SurveyModel.prototype.addScrollEventListener = function () {
59271
+ var _this = this;
59272
+ this.scrollHandler = function () { _this.onScroll(); };
59273
+ this.rootElement.addEventListener("scroll", this.scrollHandler);
59274
+ };
59275
+ SurveyModel.prototype.removeScrollEventListener = function () {
59276
+ if (!!this.rootElement && !!this.scrollHandler) {
59277
+ this.rootElement.removeEventListener("scroll", this.scrollHandler);
59278
+ }
59279
+ };
58822
59280
  SurveyModel.TemplateRendererComponentName = "sv-template-renderer";
58823
59281
  SurveyModel.stylesManager = null;
58824
59282
  SurveyModel.platform = "unknown";
58825
59283
  __decorate([
58826
59284
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
58827
59285
  ], SurveyModel.prototype, "completedCss", void 0);
59286
+ __decorate([
59287
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
59288
+ ], SurveyModel.prototype, "completedBeforeCss", void 0);
59289
+ __decorate([
59290
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
59291
+ ], SurveyModel.prototype, "loadingBodyCss", void 0);
58828
59292
  __decorate([
58829
59293
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
58830
59294
  ], SurveyModel.prototype, "containerCss", void 0);
59295
+ __decorate([
59296
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ onSet: function (newValue, target) { target.updateCss(); } })
59297
+ ], SurveyModel.prototype, "fitToContainer", void 0);
58831
59298
  __decorate([
58832
59299
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
58833
59300
  ], SurveyModel.prototype, "showBrandInfo", void 0);
@@ -59103,6 +59570,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("survey", [
59103
59570
  choices: ["auto", "static", "responsive"],
59104
59571
  },
59105
59572
  { name: "width", visibleIf: function (obj) { return obj.widthMode === "static"; } },
59573
+ { name: "fitToContainer:boolean", default: false },
59106
59574
  { name: "backgroundImage", visible: false },
59107
59575
  { name: "backgroundImageFit", default: "cover", choices: ["auto", "contain", "cover"], visible: false },
59108
59576
  { name: "backgroundImageAttachment", default: "scroll", choices: ["scroll", "fixed"], visible: false },
@@ -60907,8 +61375,8 @@ var PopupUtils = /** @class */ (function () {
60907
61375
  }
60908
61376
  return { left: Math.round(currentLeft), top: Math.round(currentTop) };
60909
61377
  };
60910
- PopupUtils.updateVerticalDimensions = function (top, height, windowHeight) {
60911
- var result;
61378
+ PopupUtils.getCorrectedVerticalDimensions = function (top, height, windowHeight) {
61379
+ var result = { height: height, top: top };
60912
61380
  if (top < 0) {
60913
61381
  result = { height: height + top, top: 0 };
60914
61382
  }
@@ -61177,37 +61645,6 @@ var VerticalResponsivityManager = /** @class */ (function (_super) {
61177
61645
 
61178
61646
 
61179
61647
 
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
61648
  /***/ }),
61212
61649
 
61213
61650
  /***/ "./src/utils/utils.ts":