survey-core 1.11.5 → 1.11.7

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 (257) hide show
  1. package/defaultV2.css +13 -5
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +13 -5
  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/i18n/arabic.js +1 -1
  8. package/i18n/arabic.min.js +1 -1
  9. package/i18n/basque.js +1 -1
  10. package/i18n/basque.min.js +1 -1
  11. package/i18n/bulgarian.js +1 -1
  12. package/i18n/bulgarian.min.js +1 -1
  13. package/i18n/catalan.js +1 -1
  14. package/i18n/catalan.min.js +1 -1
  15. package/i18n/croatian.js +1 -1
  16. package/i18n/croatian.min.js +1 -1
  17. package/i18n/czech.js +1 -1
  18. package/i18n/czech.min.js +1 -1
  19. package/i18n/danish.js +1 -1
  20. package/i18n/danish.min.js +1 -1
  21. package/i18n/dutch.js +2 -2
  22. package/i18n/dutch.js.map +1 -1
  23. package/i18n/dutch.min.js +2 -2
  24. package/i18n/english.js +1 -1
  25. package/i18n/english.min.js +1 -1
  26. package/i18n/estonian.js +1 -1
  27. package/i18n/estonian.min.js +1 -1
  28. package/i18n/finnish.js +1 -1
  29. package/i18n/finnish.min.js +1 -1
  30. package/i18n/french.js +1 -1
  31. package/i18n/french.min.js +1 -1
  32. package/i18n/georgian.js +1 -1
  33. package/i18n/georgian.min.js +1 -1
  34. package/i18n/german.js +1 -1
  35. package/i18n/german.min.js +1 -1
  36. package/i18n/greek.js +1 -1
  37. package/i18n/greek.min.js +1 -1
  38. package/i18n/hebrew.js +1 -1
  39. package/i18n/hebrew.min.js +1 -1
  40. package/i18n/hindi.js +1 -1
  41. package/i18n/hindi.min.js +1 -1
  42. package/i18n/hungarian.js +1 -1
  43. package/i18n/hungarian.min.js +1 -1
  44. package/i18n/icelandic.js +1 -1
  45. package/i18n/icelandic.min.js +1 -1
  46. package/i18n/index.js +2 -2
  47. package/i18n/index.js.map +1 -1
  48. package/i18n/index.min.js +2 -2
  49. package/i18n/indonesian.js +1 -1
  50. package/i18n/indonesian.min.js +1 -1
  51. package/i18n/italian.js +1 -1
  52. package/i18n/italian.min.js +1 -1
  53. package/i18n/japanese.js +1 -1
  54. package/i18n/japanese.min.js +1 -1
  55. package/i18n/kazakh.js +1 -1
  56. package/i18n/kazakh.min.js +1 -1
  57. package/i18n/korean.js +1 -1
  58. package/i18n/korean.min.js +1 -1
  59. package/i18n/latvian.js +1 -1
  60. package/i18n/latvian.min.js +1 -1
  61. package/i18n/lithuanian.js +1 -1
  62. package/i18n/lithuanian.min.js +1 -1
  63. package/i18n/macedonian.js +1 -1
  64. package/i18n/macedonian.min.js +1 -1
  65. package/i18n/malay.js +1 -1
  66. package/i18n/malay.min.js +1 -1
  67. package/i18n/nl-BE.js +2 -2
  68. package/i18n/nl-BE.js.map +1 -1
  69. package/i18n/nl-BE.min.js +2 -2
  70. package/i18n/norwegian.js +1 -1
  71. package/i18n/norwegian.min.js +1 -1
  72. package/i18n/persian.js +1 -1
  73. package/i18n/persian.min.js +1 -1
  74. package/i18n/philippines.js +1 -1
  75. package/i18n/philippines.min.js +1 -1
  76. package/i18n/polish.js +1 -1
  77. package/i18n/polish.min.js +1 -1
  78. package/i18n/portuguese-br.js +1 -1
  79. package/i18n/portuguese-br.min.js +1 -1
  80. package/i18n/portuguese.js +1 -1
  81. package/i18n/portuguese.min.js +1 -1
  82. package/i18n/romanian.js +1 -1
  83. package/i18n/romanian.min.js +1 -1
  84. package/i18n/russian.js +1 -1
  85. package/i18n/russian.min.js +1 -1
  86. package/i18n/serbian.js +1 -1
  87. package/i18n/serbian.min.js +1 -1
  88. package/i18n/simplified-chinese.js +1 -1
  89. package/i18n/simplified-chinese.min.js +1 -1
  90. package/i18n/slovak.js +1 -1
  91. package/i18n/slovak.min.js +1 -1
  92. package/i18n/spanish.js +1 -1
  93. package/i18n/spanish.min.js +1 -1
  94. package/i18n/swahili.js +1 -1
  95. package/i18n/swahili.min.js +1 -1
  96. package/i18n/swedish.js +1 -1
  97. package/i18n/swedish.min.js +1 -1
  98. package/i18n/tajik.js +1 -1
  99. package/i18n/tajik.min.js +1 -1
  100. package/i18n/telugu.js +1 -1
  101. package/i18n/telugu.min.js +1 -1
  102. package/i18n/thai.js +1 -1
  103. package/i18n/thai.min.js +1 -1
  104. package/i18n/traditional-chinese.js +1 -1
  105. package/i18n/traditional-chinese.min.js +1 -1
  106. package/i18n/turkish.js +1 -1
  107. package/i18n/turkish.min.js +1 -1
  108. package/i18n/ukrainian.js +1 -1
  109. package/i18n/ukrainian.min.js +1 -1
  110. package/i18n/urdu.js +1 -1
  111. package/i18n/urdu.min.js +1 -1
  112. package/i18n/vietnamese.js +1 -1
  113. package/i18n/vietnamese.min.js +1 -1
  114. package/i18n/welsh.js +1 -1
  115. package/i18n/welsh.min.js +1 -1
  116. package/modern.css +6 -6
  117. package/modern.css.map +1 -1
  118. package/modern.fontless.css +6 -6
  119. package/modern.fontless.css.map +1 -1
  120. package/modern.fontless.min.css +2 -2
  121. package/modern.min.css +2 -2
  122. package/package.json +1 -1
  123. package/plugins/bootstrap-integration.js +1 -1
  124. package/plugins/bootstrap-integration.min.js +1 -1
  125. package/plugins/bootstrap-material-integration.js +1 -1
  126. package/plugins/bootstrap-material-integration.min.js +1 -1
  127. package/survey.core.js +287 -115
  128. package/survey.core.js.map +1 -1
  129. package/survey.core.min.js +3 -3
  130. package/survey.css +6 -6
  131. package/survey.css.map +1 -1
  132. package/survey.i18n.js +2 -2
  133. package/survey.i18n.js.map +1 -1
  134. package/survey.i18n.min.js +2 -2
  135. package/survey.min.css +2 -2
  136. package/themes/borderless-dark-panelless.js +1 -1
  137. package/themes/borderless-dark-panelless.min.js +1 -1
  138. package/themes/borderless-dark.js +1 -1
  139. package/themes/borderless-dark.min.js +1 -1
  140. package/themes/borderless-light-panelless..js +1 -1
  141. package/themes/borderless-light-panelless..min.js +1 -1
  142. package/themes/borderless-light.js +1 -1
  143. package/themes/borderless-light.min.js +1 -1
  144. package/themes/contrast-dark-panelless.js +1 -1
  145. package/themes/contrast-dark-panelless.min.js +1 -1
  146. package/themes/contrast-dark.js +1 -1
  147. package/themes/contrast-dark.min.js +1 -1
  148. package/themes/contrast-light-panelless.js +1 -1
  149. package/themes/contrast-light-panelless.min.js +1 -1
  150. package/themes/contrast-light.js +1 -1
  151. package/themes/contrast-light.min.js +1 -1
  152. package/themes/default-dark-panelless.js +1 -1
  153. package/themes/default-dark-panelless.min.js +1 -1
  154. package/themes/default-dark.js +1 -1
  155. package/themes/default-dark.min.js +1 -1
  156. package/themes/default-light-panelless.js +1 -1
  157. package/themes/default-light-panelless.min.js +1 -1
  158. package/themes/default-light.js +1 -1
  159. package/themes/default-light.min.js +1 -1
  160. package/themes/doubleborder-dark-panelless.js +1 -1
  161. package/themes/doubleborder-dark-panelless.min.js +1 -1
  162. package/themes/doubleborder-dark.js +1 -1
  163. package/themes/doubleborder-dark.min.js +1 -1
  164. package/themes/doubleborder-light-panelles.js +1 -1
  165. package/themes/doubleborder-light-panelles.min.js +1 -1
  166. package/themes/doubleborder-light.js +1 -1
  167. package/themes/doubleborder-light.min.js +1 -1
  168. package/themes/flat-dark-panelless.js +1 -1
  169. package/themes/flat-dark-panelless.min.js +1 -1
  170. package/themes/flat-dark.js +1 -1
  171. package/themes/flat-dark.min.js +1 -1
  172. package/themes/flat-light-panelless.js +1 -1
  173. package/themes/flat-light-panelless.min.js +1 -1
  174. package/themes/flat-light.js +1 -1
  175. package/themes/flat-light.min.js +1 -1
  176. package/themes/index.js +1 -1
  177. package/themes/index.min.js +1 -1
  178. package/themes/layered-dark-panelless.js +1 -1
  179. package/themes/layered-dark-panelless.min.js +1 -1
  180. package/themes/layered-dark.js +1 -1
  181. package/themes/layered-dark.min.js +1 -1
  182. package/themes/layered-light-panelless.js +1 -1
  183. package/themes/layered-light-panelless.min.js +1 -1
  184. package/themes/layered-light.js +1 -1
  185. package/themes/layered-light.min.js +1 -1
  186. package/themes/plain-dark-panelless.js +1 -1
  187. package/themes/plain-dark-panelless.min.js +1 -1
  188. package/themes/plain-dark.js +1 -1
  189. package/themes/plain-dark.min.js +1 -1
  190. package/themes/plain-light-panelless.js +1 -1
  191. package/themes/plain-light-panelless.min.js +1 -1
  192. package/themes/plain-light.js +1 -1
  193. package/themes/plain-light.min.js +1 -1
  194. package/themes/sharp-dark-panelless.js +1 -1
  195. package/themes/sharp-dark-panelless.min.js +1 -1
  196. package/themes/sharp-dark.js +1 -1
  197. package/themes/sharp-dark.min.js +1 -1
  198. package/themes/sharp-light-panelless.js +1 -1
  199. package/themes/sharp-light-panelless.min.js +1 -1
  200. package/themes/sharp-light.js +1 -1
  201. package/themes/sharp-light.min.js +1 -1
  202. package/themes/solid-dark-panelless.js +1 -1
  203. package/themes/solid-dark-panelless.min.js +1 -1
  204. package/themes/solid-dark.js +1 -1
  205. package/themes/solid-dark.min.js +1 -1
  206. package/themes/solid-light-panelless.js +1 -1
  207. package/themes/solid-light-panelless.min.js +1 -1
  208. package/themes/solid-light.js +1 -1
  209. package/themes/solid-light.min.js +1 -1
  210. package/themes/three-dimensional-dark-panelless.js +1 -1
  211. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  212. package/themes/three-dimensional-dark.js +1 -1
  213. package/themes/three-dimensional-dark.min.js +1 -1
  214. package/themes/three-dimensional-light-panelless.js +1 -1
  215. package/themes/three-dimensional-light-panelless.min.js +1 -1
  216. package/themes/three-dimensional-light.js +1 -1
  217. package/themes/three-dimensional-light.min.js +1 -1
  218. package/ts3.4/typings/actions/action.d.ts +6 -0
  219. package/ts3.4/typings/base-interfaces.d.ts +2 -0
  220. package/ts3.4/typings/defaultCss/defaultV2Css.d.ts +1 -0
  221. package/ts3.4/typings/dropdownListModel.d.ts +0 -1
  222. package/ts3.4/typings/mask/input_element_adapter.d.ts +1 -0
  223. package/ts3.4/typings/page.d.ts +1 -0
  224. package/ts3.4/typings/panel.d.ts +1 -0
  225. package/ts3.4/typings/question.d.ts +2 -0
  226. package/ts3.4/typings/question_comment.d.ts +3 -3
  227. package/ts3.4/typings/question_custom.d.ts +1 -0
  228. package/ts3.4/typings/question_matrixdropdownbase.d.ts +1 -0
  229. package/ts3.4/typings/question_multipletext.d.ts +1 -0
  230. package/ts3.4/typings/question_paneldynamic.d.ts +1 -1
  231. package/ts3.4/typings/question_text.d.ts +4 -0
  232. package/ts3.4/typings/settings.d.ts +1 -0
  233. package/ts3.4/typings/survey-element.d.ts +20 -15
  234. package/ts3.4/typings/survey-events-api.d.ts +1 -1
  235. package/ts3.4/typings/survey.d.ts +19 -1
  236. package/ts3.4/typings/surveytimer.d.ts +9 -4
  237. package/typings/actions/action.d.ts +6 -0
  238. package/typings/base-interfaces.d.ts +2 -0
  239. package/typings/defaultCss/defaultV2Css.d.ts +1 -0
  240. package/typings/dropdownListModel.d.ts +0 -1
  241. package/typings/knockout/kobase.d.ts +8 -8
  242. package/typings/knockout/kopage.d.ts +37 -37
  243. package/typings/mask/input_element_adapter.d.ts +1 -0
  244. package/typings/page.d.ts +1 -0
  245. package/typings/panel.d.ts +1 -0
  246. package/typings/question.d.ts +2 -0
  247. package/typings/question_comment.d.ts +5 -5
  248. package/typings/question_custom.d.ts +1 -0
  249. package/typings/question_matrixdropdownbase.d.ts +1 -0
  250. package/typings/question_multipletext.d.ts +1 -0
  251. package/typings/question_paneldynamic.d.ts +1 -1
  252. package/typings/question_text.d.ts +4 -0
  253. package/typings/settings.d.ts +1 -0
  254. package/typings/survey-element.d.ts +20 -15
  255. package/typings/survey-events-api.d.ts +1 -1
  256. package/typings/survey.d.ts +19 -1
  257. package/typings/surveytimer.d.ts +9 -4
package/survey.core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.5
2
+ * surveyjs - Survey JavaScript library v1.11.7
3
3
  * Copyright (c) 2015-2024 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
@@ -1147,6 +1147,23 @@ var Action = /** @class */ (function (_super) {
1147
1147
  this.locTooltipChanged();
1148
1148
  this.locStrChangedInPopupModel();
1149
1149
  };
1150
+ Action.prototype.doAction = function (args) {
1151
+ var evt = !!args.originalEvent ? args.originalEvent : args;
1152
+ this.action(this, evt.isTrusted);
1153
+ evt.preventDefault();
1154
+ evt.stopPropagation();
1155
+ return true;
1156
+ };
1157
+ Action.prototype.doMouseDown = function () {
1158
+ this.isMouseDown = true;
1159
+ };
1160
+ Action.prototype.doFocus = function (args) {
1161
+ if (!!this.onFocus) {
1162
+ var evt = !!args.originalEvent ? args.originalEvent : args;
1163
+ this.onFocus(this.isMouseDown, evt);
1164
+ }
1165
+ this.isMouseDown = false;
1166
+ };
1150
1167
  Action.prototype.locStrChangedInPopupModel = function () {
1151
1168
  if (!this.popupModel || !this.popupModel.contentComponentData || !this.popupModel.contentComponentData.model)
1152
1169
  return;
@@ -1227,6 +1244,9 @@ var Action = /** @class */ (function (_super) {
1227
1244
  __decorate([
1228
1245
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_2__["property"])()
1229
1246
  ], Action.prototype, "action", void 0);
1247
+ __decorate([
1248
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_2__["property"])()
1249
+ ], Action.prototype, "onFocus", void 0);
1230
1250
  __decorate([
1231
1251
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_2__["property"])()
1232
1252
  ], Action.prototype, "_component", void 0);
@@ -2278,6 +2298,8 @@ var Base = /** @class */ (function () {
2278
2298
  if (!prop || prop.isCustom && this.isCreating)
2279
2299
  return undefined;
2280
2300
  var dValue = prop.defaultValue;
2301
+ if (!!prop.defaultValueFunc)
2302
+ return dValue;
2281
2303
  if (!this.isPropertyEmpty(dValue) && !Array.isArray(dValue))
2282
2304
  return dValue;
2283
2305
  var locStr = this.localizableStrings ? this.localizableStrings[name] : undefined;
@@ -5616,6 +5638,7 @@ var defaultV2Css = {
5616
5638
  titleExpanded: "sd-element__title--expanded",
5617
5639
  titleCollapsed: "sd-element__title--collapsed",
5618
5640
  titleDisabled: "sd-element__title--disabled",
5641
+ titleHidden: "sd-element__title--hidden",
5619
5642
  titleOnExpand: "sd-panel__title--expanded",
5620
5643
  titleOnError: "sd-panel__title--error",
5621
5644
  titleBar: "sd-action-title-bar",
@@ -8184,7 +8207,6 @@ var DropdownListModel = /** @class */ (function (_super) {
8184
8207
  _this.selectedItemSelector = ".sv-list__item--selected";
8185
8208
  _this.itemSelector = ".sv-list__item";
8186
8209
  _this.itemsSettings = { skip: 0, take: 0, totalCount: 0, items: [] };
8187
- _this.isRunningLoadQuestionChoices = false;
8188
8210
  _this.popupCssClasses = "sv-single-select-list";
8189
8211
  _this.listModelFilterStringChanged = function (newValue) {
8190
8212
  if (_this.filterString !== newValue) {
@@ -8235,14 +8257,12 @@ var DropdownListModel = /** @class */ (function (_super) {
8235
8257
  };
8236
8258
  DropdownListModel.prototype.loadQuestionChoices = function (callbackAfterItemsLoaded) {
8237
8259
  var _this = this;
8238
- this.isRunningLoadQuestionChoices = true;
8239
8260
  this.question.survey.loadQuestionChoices({
8240
8261
  question: this.question,
8241
8262
  filter: this.filterString,
8242
8263
  skip: this.itemsSettings.skip,
8243
8264
  take: this.itemsSettings.take,
8244
8265
  setItems: function (items, totalCount) {
8245
- _this.isRunningLoadQuestionChoices = false;
8246
8266
  _this.setItems(items || [], totalCount || 0);
8247
8267
  _this.popupRecalculatePosition(_this.itemsSettings.skip === _this.itemsSettings.take);
8248
8268
  if (!!callbackAfterItemsLoaded) {
@@ -8254,8 +8274,6 @@ var DropdownListModel = /** @class */ (function (_super) {
8254
8274
  };
8255
8275
  DropdownListModel.prototype.updateQuestionChoices = function (callbackAfterItemsLoaded) {
8256
8276
  var _this = this;
8257
- if (this.isRunningLoadQuestionChoices)
8258
- return;
8259
8277
  var isUpdate = (this.itemsSettings.skip + 1) < this.itemsSettings.totalCount;
8260
8278
  if (!this.itemsSettings.skip || isUpdate) {
8261
8279
  if (!!this.filterString && _settings__WEBPACK_IMPORTED_MODULE_7__["settings"].dropdownSearchDelay > 0) {
@@ -9824,8 +9842,8 @@ __webpack_require__.r(__webpack_exports__);
9824
9842
 
9825
9843
  var Version;
9826
9844
  var ReleaseDate;
9827
- Version = "" + "1.11.5";
9828
- ReleaseDate = "" + "2024-07-03";
9845
+ Version = "" + "1.11.7";
9846
+ ReleaseDate = "" + "2024-07-16";
9829
9847
  function checkLibraryVersion(ver, libraryName) {
9830
9848
  if (Version != ver) {
9831
9849
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -18530,7 +18548,7 @@ var JsonObjectProperty = /** @class */ (function () {
18530
18548
  }
18531
18549
  if (this.isLocalizable)
18532
18550
  return value === null || value === undefined;
18533
- return ((value === false && (this.type == "boolean" || this.type == "switch")) ||
18551
+ return ((value === false && (this.type == "boolean" || this.type == "switch") && !this.defaultValueFunc) ||
18534
18552
  value === "" || _helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(value));
18535
18553
  };
18536
18554
  JsonObjectProperty.prototype.getSerializableValue = function (obj) {
@@ -19994,7 +20012,7 @@ var JsonObject = /** @class */ (function () {
19994
20012
  JsonObject.prototype.toJsonObjectCore = function (obj, property, options) {
19995
20013
  if (!obj || !obj.getType)
19996
20014
  return obj;
19997
- if (typeof obj.getData === "function")
20015
+ if (!obj.isSurvey && typeof obj.getData === "function")
19998
20016
  return obj.getData();
19999
20017
  var result = {};
20000
20018
  if (property != null && !property.className) {
@@ -21967,6 +21985,10 @@ var InputElementAdapter = /** @class */ (function () {
21967
21985
  event.preventDefault();
21968
21986
  }
21969
21987
  };
21988
+ this.changeHandler = function (event) {
21989
+ var result = _this.inputMaskInstance.processInput({ prevValue: "", insertedChars: event.target.value, selectionStart: 0, selectionEnd: 0 });
21990
+ _this.inputElement.value = result.value;
21991
+ };
21970
21992
  var _value = value;
21971
21993
  if (_value === null || _value === undefined) {
21972
21994
  _value = "";
@@ -22000,6 +22022,7 @@ var InputElementAdapter = /** @class */ (function () {
22000
22022
  this.inputElement.addEventListener("beforeinput", this.beforeInputHandler);
22001
22023
  this.inputElement.addEventListener("click", this.clickHandler);
22002
22024
  this.inputElement.addEventListener("focus", this.clickHandler);
22025
+ this.inputElement.addEventListener("change", this.changeHandler);
22003
22026
  }
22004
22027
  };
22005
22028
  InputElementAdapter.prototype.removeInputEventListener = function () {
@@ -22007,6 +22030,7 @@ var InputElementAdapter = /** @class */ (function () {
22007
22030
  this.inputElement.removeEventListener("beforeinput", this.beforeInputHandler);
22008
22031
  this.inputElement.removeEventListener("click", this.clickHandler);
22009
22032
  this.inputElement.removeEventListener("focus", this.clickHandler);
22033
+ this.inputElement.removeEventListener("change", this.changeHandler);
22010
22034
  }
22011
22035
  };
22012
22036
  InputElementAdapter.prototype.dispose = function () {
@@ -23126,6 +23150,8 @@ var InputMaskNumeric = /** @class */ (function (_super) {
23126
23150
  InputMaskNumeric.prototype.validateNumber = function (number, matchWholeMask) {
23127
23151
  var min = this.min || Number.MIN_SAFE_INTEGER;
23128
23152
  var max = this.max || Number.MAX_SAFE_INTEGER;
23153
+ if (this.numericalCompositionIsEmpty(number))
23154
+ return true;
23129
23155
  if (this.min !== undefined || this.max !== undefined) {
23130
23156
  var value = this.convertNumber(number);
23131
23157
  if (Number.isNaN(value)) {
@@ -24098,6 +24124,12 @@ var PageModel = /** @class */ (function (_super) {
24098
24124
  enumerable: false,
24099
24125
  configurable: true
24100
24126
  });
24127
+ PageModel.prototype.getMaxTimeToFinish = function () {
24128
+ if (this.maxTimeToFinish !== 0)
24129
+ return this.maxTimeToFinish;
24130
+ var res = !!this.survey ? this.survey.maxTimeToFinishPage : 0;
24131
+ return res > 0 ? res : 0;
24132
+ };
24101
24133
  PageModel.prototype.onNumChanged = function (value) { };
24102
24134
  PageModel.prototype.onVisibleChanged = function () {
24103
24135
  if (this.isRandomizing)
@@ -25183,6 +25215,23 @@ var PanelModelBase = /** @class */ (function (_super) {
25183
25215
  this.parent.validateContainerOnly();
25184
25216
  }
25185
25217
  };
25218
+ PanelModelBase.prototype.onQuestionValueChanged = function (el) {
25219
+ var index = this.questions.indexOf(el);
25220
+ if (index < 0)
25221
+ return;
25222
+ var dif = 5;
25223
+ var max = this.questions.length - 1;
25224
+ var start = index - dif > 0 ? index - dif : 0;
25225
+ var end = index + dif < max ? index + dif : max;
25226
+ for (var i = start; i <= end; i++) {
25227
+ if (i === index)
25228
+ continue;
25229
+ var q = this.questions[i];
25230
+ if (q.errors.length > 0 && q.validate(false)) {
25231
+ q.validate(true);
25232
+ }
25233
+ }
25234
+ };
25186
25235
  PanelModelBase.prototype.hasErrorsInPanels = function (rec) {
25187
25236
  var errors = [];
25188
25237
  this.hasRequiredError(rec, errors);
@@ -26370,7 +26419,7 @@ var PanelModel = /** @class */ (function (_super) {
26370
26419
  var _this = this;
26371
26420
  var locTitleValue = _super.prototype.createLocTitleProperty.call(this);
26372
26421
  locTitleValue.onGetTextCallback = function (text) {
26373
- if (!text && (_this.state !== "default")) {
26422
+ if (!text && (_this.state !== "default" || (_this.isDesignMode && _this.isDefaultV2Theme))) {
26374
26423
  text = _this.name;
26375
26424
  }
26376
26425
  return text;
@@ -26533,7 +26582,10 @@ var PanelModel = /** @class */ (function (_super) {
26533
26582
  };
26534
26583
  Object.defineProperty(PanelModel.prototype, "cssTitle", {
26535
26584
  get: function () {
26536
- return this.getCssTitle(this.cssClasses.panel);
26585
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_9__["CssClassBuilder"]()
26586
+ .append(this.getCssTitle(this.cssClasses.panel))
26587
+ .append(this.cssClasses.panel.titleHidden, !this.title && this.isDesignMode)
26588
+ .toString();
26537
26589
  },
26538
26590
  enumerable: false,
26539
26591
  configurable: true
@@ -29231,8 +29283,12 @@ var Question = /** @class */ (function (_super) {
29231
29283
  Object.defineProperty(Question.prototype, "titleWidth", {
29232
29284
  get: function () {
29233
29285
  if (this.getTitleLocation() === "left") {
29234
- if (!!this.parent)
29235
- return this.parent.getQuestionTitleWidth();
29286
+ if (!!this.parent) {
29287
+ var width = this.parent.getQuestionTitleWidth();
29288
+ if (width && !isNaN(width))
29289
+ width = width + "px";
29290
+ return width;
29291
+ }
29236
29292
  }
29237
29293
  return undefined;
29238
29294
  },
@@ -30374,14 +30430,23 @@ var Question = /** @class */ (function (_super) {
30374
30430
  Question.prototype.getFilteredName = function () { return this.getValueName(); };
30375
30431
  Object.defineProperty(Question.prototype, "valueForSurvey", {
30376
30432
  get: function () {
30377
- if (!!this.valueToDataCallback) {
30378
- return this.valueToDataCallback(this.value);
30379
- }
30380
- return this.value;
30433
+ return this.valueForSurveyCore(this.value);
30381
30434
  },
30382
30435
  enumerable: false,
30383
30436
  configurable: true
30384
30437
  });
30438
+ Question.prototype.valueForSurveyCore = function (val) {
30439
+ if (!!this.valueToDataCallback) {
30440
+ return this.valueToDataCallback(val);
30441
+ }
30442
+ return val;
30443
+ };
30444
+ Question.prototype.valueFromDataCore = function (val) {
30445
+ if (!!this.valueFromDataCallback) {
30446
+ return this.valueFromDataCallback(val);
30447
+ }
30448
+ return val;
30449
+ };
30385
30450
  /**
30386
30451
  * Sets the question's `value` and `comment` properties to `undefined`.
30387
30452
  * @see value
@@ -31203,6 +31268,9 @@ var Question = /** @class */ (function (_super) {
31203
31268
  this.updateQuestionCss();
31204
31269
  }
31205
31270
  this.isOldAnswered = undefined;
31271
+ if (this.parent) {
31272
+ this.parent.onQuestionValueChanged(this);
31273
+ }
31206
31274
  };
31207
31275
  Question.prototype.checkIsValueCorrect = function (val) {
31208
31276
  var res = this.isValueEmpty(val, !this.allowSpaceAsAnswer) || this.isNewValueCorrect(val);
@@ -31288,9 +31356,7 @@ var Question = /** @class */ (function (_super) {
31288
31356
  var _this = this;
31289
31357
  if (clearData === void 0) { clearData = false; }
31290
31358
  newValue = this.getUnbindValue(newValue);
31291
- if (!!this.valueFromDataCallback) {
31292
- newValue = this.valueFromDataCallback(newValue);
31293
- }
31359
+ newValue = this.valueFromDataCore(newValue);
31294
31360
  if (!this.checkIsValueCorrect(newValue))
31295
31361
  return;
31296
31362
  var isEmpty = this.isValueEmpty(newValue);
@@ -34477,6 +34543,8 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("selectbase", [
34477
34543
  return !obj.choicesFromQuestion;
34478
34544
  },
34479
34545
  },
34546
+ { name: "defaultValue:value", visibleIf: function (obj) { return !obj.choicesFromQuestion; }, dependsOn: "choicesFromQuestion" },
34547
+ { name: "correctAnswer:value", visibleIf: function (obj) { return !obj.choicesFromQuestion; }, dependsOn: "choicesFromQuestion" },
34480
34548
  { name: "separateSpecialChoices:boolean", visible: false },
34481
34549
  { name: "showOtherItem:boolean", alternativeName: "hasOther" },
34482
34550
  { name: "showNoneItem:boolean", alternativeName: "hasNone" },
@@ -34536,8 +34604,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("selectbase", [
34536
34604
  default: "default",
34537
34605
  choices: ["default", true, false],
34538
34606
  visible: false,
34539
- },
34540
- // { name: "itemComponent", visible: false }
34607
+ }
34541
34608
  ], null, "question");
34542
34609
  _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("checkboxbase", [
34543
34610
  {
@@ -36194,7 +36261,7 @@ var QuestionCommentModel = /** @class */ (function (_super) {
36194
36261
  * @see allowResize
36195
36262
  */
36196
36263
  get: function () {
36197
- return this.getPropertyValue("autoGrow") || (this.survey && this.survey.autoGrowComment);
36264
+ return this.getPropertyValue("autoGrow");
36198
36265
  },
36199
36266
  set: function (val) {
36200
36267
  this.setPropertyValue("autoGrow", val);
@@ -36202,9 +36269,16 @@ var QuestionCommentModel = /** @class */ (function (_super) {
36202
36269
  enumerable: false,
36203
36270
  configurable: true
36204
36271
  });
36272
+ Object.defineProperty(QuestionCommentModel.prototype, "renderedAutoGrow", {
36273
+ get: function () {
36274
+ var autoGrow = this.autoGrow;
36275
+ return autoGrow === undefined && this.survey ? this.survey.autoGrowComment : !!autoGrow;
36276
+ },
36277
+ enumerable: false,
36278
+ configurable: true
36279
+ });
36205
36280
  Object.defineProperty(QuestionCommentModel.prototype, "allowResize", {
36206
36281
  /**
36207
- * Specifies whether to display a resize handle for the comment area.
36208
36282
  *
36209
36283
  * Default value: `true` (inherited from `SurveyModel`'s [`allowResizeComment`](https://surveyjs.io/form-library/documentation/surveymodel#allowResizeComment) property)
36210
36284
  * @see autoGrow
@@ -36220,7 +36294,9 @@ var QuestionCommentModel = /** @class */ (function (_super) {
36220
36294
  });
36221
36295
  Object.defineProperty(QuestionCommentModel.prototype, "renderedAllowResize", {
36222
36296
  get: function () {
36223
- return this.allowResize && (this.survey && this.survey.allowResizeComment) && !this.isPreviewStyle && !this.isReadOnlyStyle;
36297
+ var res = this.allowResize;
36298
+ var allowResize = res === undefined && this.survey ? this.survey.allowResizeComment : !!res;
36299
+ return allowResize && !this.isPreviewStyle && !this.isReadOnlyStyle;
36224
36300
  },
36225
36301
  enumerable: false,
36226
36302
  configurable: true
@@ -36243,7 +36319,7 @@ var QuestionCommentModel = /** @class */ (function (_super) {
36243
36319
  };
36244
36320
  QuestionCommentModel.prototype.updateElement = function () {
36245
36321
  var _this = this;
36246
- if (this.element && this.autoGrow) {
36322
+ if (this.element && this.renderedAutoGrow) {
36247
36323
  setTimeout(function () { return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_3__["increaseHeightByContent"])(_this.element); }, 1);
36248
36324
  }
36249
36325
  };
@@ -36304,8 +36380,8 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("comment", [
36304
36380
  default: "default",
36305
36381
  choices: ["default", "onBlur", "onTyping"],
36306
36382
  },
36307
- { name: "autoGrow:boolean" },
36308
- { name: "allowResize:boolean", default: true },
36383
+ { name: "autoGrow:boolean", defaultFunc: function () { return undefined; } },
36384
+ { name: "allowResize:boolean", defaultFunc: function () { return undefined; } },
36309
36385
  { name: "acceptCarriageReturn:boolean", default: true, visible: false }
36310
36386
  ], function () {
36311
36387
  return new QuestionCommentModel("");
@@ -36833,6 +36909,9 @@ var QuestionCustomModelBase = /** @class */ (function (_super) {
36833
36909
  QuestionCustomModelBase.prototype.validateContainerOnly = function () {
36834
36910
  // do nothing
36835
36911
  };
36912
+ QuestionCustomModelBase.prototype.onQuestionValueChanged = function (el) {
36913
+ // do nothing
36914
+ };
36836
36915
  QuestionCustomModelBase.prototype.getQuestionErrorLocation = function () {
36837
36916
  return this.getErrorLocation();
36838
36917
  };
@@ -43453,6 +43532,9 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
43453
43532
  enumerable: false,
43454
43533
  configurable: true
43455
43534
  });
43535
+ QuestionMatrixDropdownModelBase.prototype.isSelectCellType = function () {
43536
+ return _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].isDescendantOf(this.cellType, "selectbase");
43537
+ };
43456
43538
  QuestionMatrixDropdownModelBase.prototype.updateColumnsCellType = function () {
43457
43539
  for (var i = 0; i < this.columns.length; i++) {
43458
43540
  this.columns[i].defaultCellTypeChanged();
@@ -43607,13 +43689,17 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
43607
43689
  break;
43608
43690
  columnName = path[i] + columnName;
43609
43691
  }
43692
+ var question = undefined;
43610
43693
  var column = this.getColumnByName(columnName);
43611
- if (!column)
43612
- return null;
43613
- var question = column.createCellQuestion(null);
43614
- if (!question)
43615
- return null;
43616
- return question.getConditionJson(operator);
43694
+ if (!!column) {
43695
+ question = column.createCellQuestion(null);
43696
+ }
43697
+ else {
43698
+ if (this.detailPanelMode !== "none") {
43699
+ question = this.detailPanel.getQuestionByName(columnName);
43700
+ }
43701
+ }
43702
+ return !!question ? question.getConditionJson(operator) : null;
43617
43703
  };
43618
43704
  QuestionMatrixDropdownModelBase.prototype.clearIncorrectValues = function () {
43619
43705
  var rows = this.visibleRows;
@@ -44092,7 +44178,11 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
44092
44178
  return questionPlainData;
44093
44179
  };
44094
44180
  QuestionMatrixDropdownModelBase.prototype.addConditionObjectsByContext = function (objects, context) {
44095
- var hasColumnContext = !!context && this.columns.indexOf(context) > -1;
44181
+ var rowElements = [].concat(this.columns);
44182
+ if (this.detailPanelMode !== "none") {
44183
+ rowElements = rowElements.concat(this.detailPanel.questions);
44184
+ }
44185
+ var hasColumnContext = !!context && rowElements.indexOf(context) > -1;
44096
44186
  var hasContext = context === true || hasColumnContext;
44097
44187
  var rowsIndeces = this.getConditionObjectsRowIndeces();
44098
44188
  if (hasContext) {
@@ -44108,13 +44198,13 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
44108
44198
  var dot = hasQuestionPrefix && index === -1 ? "." : "";
44109
44199
  var prefixName = (hasQuestionPrefix ? this.getValueName() : "") + dot + rowName + ".";
44110
44200
  var prefixTitle = (hasQuestionPrefix ? this.processedTitle : "") + dot + rowText + ".";
44111
- for (var j = 0; j < this.columns.length; j++) {
44112
- var column = this.columns[j];
44113
- if (index === -1 && context === column)
44201
+ for (var j = 0; j < rowElements.length; j++) {
44202
+ var rowElement = rowElements[j];
44203
+ if (index === -1 && context === rowElement)
44114
44204
  continue;
44115
44205
  var obj = {
44116
- name: prefixName + column.name,
44117
- text: prefixTitle + column.fullTitle,
44206
+ name: prefixName + rowElement.name,
44207
+ text: prefixTitle + rowElement.fullTitle,
44118
44208
  question: this
44119
44209
  };
44120
44210
  if (index === -1 && context === true) {
@@ -44181,9 +44271,11 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
44181
44271
  var col = this.columns[i];
44182
44272
  if (!col.templateQuestion.hasInput)
44183
44273
  continue;
44274
+ var hasValue = !_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(rowValue[col.name]);
44275
+ if (!hasValue && !!col.templateQuestion.visibleIf)
44276
+ continue;
44184
44277
  res.questionCount += 1;
44185
44278
  res.requiredQuestionCount += col.isRequired;
44186
- var hasValue = !_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(rowValue[col.name]);
44187
44279
  res.answeredQuestionCount += hasValue ? 1 : 0;
44188
44280
  res.requiredAnsweredQuestionCount += hasValue && col.isRequired ? 1 : 0;
44189
44281
  }
@@ -44390,14 +44482,17 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
44390
44482
  var _this = this;
44391
44483
  duplicatedRows.forEach(function (row) {
44392
44484
  var question = row.getQuestionByName(columnName);
44393
- if (!question && _this.detailPanel.getQuestionByName(columnName)) {
44485
+ var inDetailPanel = _this.detailPanel.getQuestionByName(columnName);
44486
+ if (!question && inDetailPanel) {
44394
44487
  row.showDetailPanel();
44395
44488
  if (row.detailPanel) {
44396
44489
  question = row.detailPanel.getQuestionByName(columnName);
44397
44490
  }
44398
44491
  }
44399
44492
  if (question) {
44400
- row.showDetailPanel();
44493
+ if (inDetailPanel) {
44494
+ row.showDetailPanel();
44495
+ }
44401
44496
  _this.addDuplicationError(question);
44402
44497
  }
44403
44498
  });
@@ -44818,6 +44913,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("matrixdropdownb
44818
44913
  { name: "horizontalScroll:boolean", visible: false, },
44819
44914
  {
44820
44915
  name: "choices:itemvalue[]", uniqueProperty: "value",
44916
+ visibleIf: function (obj) { return obj.isSelectCellType(); }
44821
44917
  },
44822
44918
  { name: "placeholder", alternativeName: "optionsCaption", serializationProperty: "locPlaceholder" },
44823
44919
  {
@@ -49442,6 +49538,9 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
49442
49538
  QuestionMultipleTextModel.prototype.validateContainerOnly = function () {
49443
49539
  // do nothing
49444
49540
  };
49541
+ QuestionMultipleTextModel.prototype.onQuestionValueChanged = function (el) {
49542
+ // do nothing
49543
+ };
49445
49544
  QuestionMultipleTextModel.prototype.getItemLabelCss = function (item) {
49446
49545
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_7__["CssClassBuilder"]()
49447
49546
  .append(this.cssClasses.itemLabel)
@@ -51499,9 +51598,10 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
51499
51598
  }
51500
51599
  return -1;
51501
51600
  };
51502
- QuestionPanelDynamicModel.prototype.getPanelIndexById = function (id) {
51503
- for (var i = 0; i < this.panelsCore.length; i++) {
51504
- if (this.panelsCore[i].id === id)
51601
+ QuestionPanelDynamicModel.prototype.getPanelVisibleIndexById = function (id) {
51602
+ var visPanels = this.visiblePanelsCore;
51603
+ for (var i = 0; i < visPanels.length; i++) {
51604
+ if (visPanels[i].id === id)
51505
51605
  return i;
51506
51606
  }
51507
51607
  return -1;
@@ -52416,14 +52516,14 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
52416
52516
  return options.title;
52417
52517
  };
52418
52518
  locTitle.sharedData = this.locTemplateTabTitle;
52419
- var isActive = this.getPanelIndexById(panel.id) === this.currentIndex;
52519
+ var isActive = this.getPanelVisibleIndexById(panel.id) === this.currentIndex;
52420
52520
  var newItem = new _actions_action__WEBPACK_IMPORTED_MODULE_11__["Action"]({
52421
52521
  id: panel.id,
52422
52522
  pressed: isActive,
52423
52523
  locTitle: locTitle,
52424
52524
  disableHide: isActive,
52425
52525
  action: function () {
52426
- _this.currentIndex = _this.getPanelIndexById(newItem.id);
52526
+ _this.currentIndex = _this.getPanelVisibleIndexById(newItem.id);
52427
52527
  }
52428
52528
  });
52429
52529
  return newItem;
@@ -52875,7 +52975,7 @@ var QuestionRankingModel = /** @class */ (function (_super) {
52875
52975
  _this.domNode = null;
52876
52976
  _this.onVisibleChoicesChanged = function () {
52877
52977
  _super.prototype.onVisibleChoicesChanged.call(_this);
52878
- if (_this.carryForwardStartUnranked && !_this.isValueSetByUser && !_this.selectToRankEnabled) {
52978
+ if (_this.carryForwardStartUnranked && !_this.isValueSetByUser && !_this.selectToRankEnabled && !_this.defaultValue) {
52879
52979
  _this.value = [];
52880
52980
  }
52881
52981
  // ranking question with only one choice doesn't make sense
@@ -53100,6 +53200,7 @@ var QuestionRankingModel = /** @class */ (function (_super) {
53100
53200
  QuestionRankingModel.prototype.onSurveyLoad = function () {
53101
53201
  this.blockAnimations();
53102
53202
  _super.prototype.onSurveyLoad.call(this);
53203
+ this.updateRankingChoices();
53103
53204
  this.releaseAnimations();
53104
53205
  };
53105
53206
  QuestionRankingModel.prototype.addToValueByVisibleChoices = function () {
@@ -56179,6 +56280,24 @@ var QuestionTextModel = /** @class */ (function (_super) {
56179
56280
  this._inputValue = this.maskInstance.getMaskedValue(this.value);
56180
56281
  }
56181
56282
  };
56283
+ QuestionTextModel.prototype.hasToConvertToUTC = function (val) {
56284
+ return _settings__WEBPACK_IMPORTED_MODULE_6__["settings"].storeUtcDates && this.isDateTimeLocaleType() && !!val;
56285
+ };
56286
+ QuestionTextModel.prototype.valueForSurveyCore = function (val) {
56287
+ if (this.hasToConvertToUTC(val)) {
56288
+ val = new Date(val).toISOString();
56289
+ }
56290
+ return _super.prototype.valueForSurveyCore.call(this, val);
56291
+ };
56292
+ QuestionTextModel.prototype.valueFromDataCore = function (val) {
56293
+ if (this.hasToConvertToUTC(val)) {
56294
+ var d = new Date(val);
56295
+ var locale_d = new Date(d.getTime() - d.getTimezoneOffset() * 60 * 1000);
56296
+ var res = locale_d.toISOString();
56297
+ val = res.substring(0, res.length - 2);
56298
+ }
56299
+ return _super.prototype.valueFromDataCore.call(this, val);
56300
+ };
56182
56301
  QuestionTextModel.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
56183
56302
  var _this = this;
56184
56303
  _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
@@ -56250,11 +56369,14 @@ var QuestionTextModel = /** @class */ (function (_super) {
56250
56369
  });
56251
56370
  Object.defineProperty(QuestionTextModel.prototype, "isDateInputType", {
56252
56371
  get: function () {
56253
- return this.inputType === "date" || this.inputType === "datetime-local";
56372
+ return this.inputType === "date" || this.isDateTimeLocaleType();
56254
56373
  },
56255
56374
  enumerable: false,
56256
56375
  configurable: true
56257
56376
  });
56377
+ QuestionTextModel.prototype.isDateTimeLocaleType = function () {
56378
+ return this.inputType === "datetime-local";
56379
+ };
56258
56380
  QuestionTextModel.prototype.getCalculatedMinMax = function (minMax) {
56259
56381
  if (this.isValueEmpty(minMax))
56260
56382
  return minMax;
@@ -56306,11 +56428,10 @@ var QuestionTextModel = /** @class */ (function (_super) {
56306
56428
  return this.maskTypeIsEmpty ? _super.prototype.getIsInputTextUpdate.call(this) : false;
56307
56429
  };
56308
56430
  QuestionTextModel.prototype.supportGoNextPageAutomatic = function () {
56309
- return !this.getIsInputTextUpdate() &&
56310
- ["date", "datetime-local"].indexOf(this.inputType) < 0;
56431
+ return !this.getIsInputTextUpdate() && !this.isDateInputType;
56311
56432
  };
56312
56433
  QuestionTextModel.prototype.supportGoNextPageError = function () {
56313
- return ["date", "datetime-local"].indexOf(this.inputType) < 0;
56434
+ return !this.isDateInputType;
56314
56435
  };
56315
56436
  Object.defineProperty(QuestionTextModel.prototype, "dataList", {
56316
56437
  /**
@@ -56351,9 +56472,13 @@ var QuestionTextModel = /** @class */ (function (_super) {
56351
56472
  QuestionTextModel.prototype.correctValueType = function (newValue) {
56352
56473
  if (!newValue)
56353
56474
  return newValue;
56354
- if (this.inputType == "number" || this.inputType == "range") {
56475
+ if (this.inputType === "number" || this.inputType === "range") {
56355
56476
  return _helpers__WEBPACK_IMPORTED_MODULE_3__["Helpers"].isNumber(newValue) ? _helpers__WEBPACK_IMPORTED_MODULE_3__["Helpers"].getNumber(newValue) : "";
56356
56477
  }
56478
+ if (this.inputType === "month") {
56479
+ var d = new Date(newValue);
56480
+ return d.getFullYear() + "-" + (d.getMonth() + 1);
56481
+ }
56357
56482
  return newValue;
56358
56483
  };
56359
56484
  QuestionTextModel.prototype.hasPlaceholder = function () {
@@ -57924,7 +58049,8 @@ var settings = {
57924
58049
  "a": /[a-zA-Z]/,
57925
58050
  "#": /[a-zA-Z0-9]/
57926
58051
  }
57927
- }
58052
+ },
58053
+ storeUtcDates: false
57928
58054
  };
57929
58055
 
57930
58056
 
@@ -58391,6 +58517,42 @@ var SurveyElementCore = /** @class */ (function (_super) {
58391
58517
  SurveyElementCore.prototype.createLocTitleProperty = function () {
58392
58518
  return this.createLocalizableString("title", this, true);
58393
58519
  };
58520
+ Object.defineProperty(SurveyElementCore.prototype, "isPage", {
58521
+ /**
58522
+ * Returns `true` if the survey element is a page.
58523
+ * @see Base.getType
58524
+ */
58525
+ get: function () { return false; },
58526
+ enumerable: false,
58527
+ configurable: true
58528
+ });
58529
+ Object.defineProperty(SurveyElementCore.prototype, "isPanel", {
58530
+ /**
58531
+ * Returns `true` if the survey element is a panel.
58532
+ * @see Base.getType
58533
+ */
58534
+ get: function () { return false; },
58535
+ enumerable: false,
58536
+ configurable: true
58537
+ });
58538
+ Object.defineProperty(SurveyElementCore.prototype, "isQuestion", {
58539
+ /**
58540
+ * Returns `true` if the survey element is a question.
58541
+ * @see Base.getType
58542
+ */
58543
+ get: function () { return false; },
58544
+ enumerable: false,
58545
+ configurable: true
58546
+ });
58547
+ Object.defineProperty(SurveyElementCore.prototype, "isSurvey", {
58548
+ /**
58549
+ * Returns `true` if the element is a survey.
58550
+ * @see Base.getType
58551
+ */
58552
+ get: function () { return false; },
58553
+ enumerable: false,
58554
+ configurable: true
58555
+ });
58394
58556
  Object.defineProperty(SurveyElementCore.prototype, "title", {
58395
58557
  /**
58396
58558
  * A title for the survey element. If `title` is undefined, the `name` property value is displayed instead.
@@ -59222,39 +59384,6 @@ var SurveyElement = /** @class */ (function (_super) {
59222
59384
  SurveyElement.prototype.setVisibleIndex = function (index) {
59223
59385
  return 0;
59224
59386
  };
59225
- Object.defineProperty(SurveyElement.prototype, "isPage", {
59226
- /**
59227
- * Returns `true` if the survey element is a page.
59228
- * @see Base.getType
59229
- */
59230
- get: function () {
59231
- return false;
59232
- },
59233
- enumerable: false,
59234
- configurable: true
59235
- });
59236
- Object.defineProperty(SurveyElement.prototype, "isPanel", {
59237
- /**
59238
- * Returns `true` if the survey element is a panel.
59239
- * @see Base.getType
59240
- */
59241
- get: function () {
59242
- return false;
59243
- },
59244
- enumerable: false,
59245
- configurable: true
59246
- });
59247
- Object.defineProperty(SurveyElement.prototype, "isQuestion", {
59248
- /**
59249
- * Returns `true` if the survey element is a question.
59250
- * @see Base.getType
59251
- */
59252
- get: function () {
59253
- return false;
59254
- },
59255
- enumerable: false,
59256
- configurable: true
59257
- });
59258
59387
  SurveyElement.prototype.delete = function (doDispose) { };
59259
59388
  /**
59260
59389
  * Returns the survey's [locale](https://surveyjs.io/form-library/documentation/surveymodel#locale).
@@ -63140,6 +63269,30 @@ var SurveyModel = /** @class */ (function (_super) {
63140
63269
  this.runConditions();
63141
63270
  this.updateAllQuestionsValue(clearData);
63142
63271
  };
63272
+ Object.defineProperty(SurveyModel.prototype, "isSurvey", {
63273
+ get: function () { return true; },
63274
+ enumerable: false,
63275
+ configurable: true
63276
+ });
63277
+ /**
63278
+ * Returns an object with survey results.
63279
+ *
63280
+ * If you want to get a survey results object that mirrors the survey structure, call the `getData()` method with an object that has the `includePages` and `includePanels` properties enabled. Without this object, the `getData()` method returns the [`data`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#data) property value.
63281
+ *
63282
+ * ```js
63283
+ * import { Model } from "survey-core";
63284
+ *
63285
+ * const surveyJson = { ... };
63286
+ * const survey = new Model(surveyJson);
63287
+ * survey.getData({ includePages: true, includePanels: true });
63288
+ * ```
63289
+ */
63290
+ SurveyModel.prototype.getData = function (options) {
63291
+ var opt = options || { includePages: false, includePanels: false };
63292
+ if (!opt.includePages && !opt.includePanels)
63293
+ return this.data;
63294
+ return this.getStructuredData(!!opt.includePages, !opt.includePanels ? (opt.includePages ? 1 : 0) : -1);
63295
+ };
63143
63296
  SurveyModel.prototype.getStructuredData = function (includePages, level) {
63144
63297
  if (includePages === void 0) { includePages = true; }
63145
63298
  if (level === void 0) { level = -1; }
@@ -63619,7 +63772,9 @@ var SurveyModel = /** @class */ (function (_super) {
63619
63772
  });
63620
63773
  SurveyModel.prototype.updateActivePage = function () {
63621
63774
  var newPage = this.isShowStartingPage ? this.startedPage : this.currentPage;
63622
- this.setPropertyValue("activePage", newPage);
63775
+ if (newPage !== this.activePage) {
63776
+ this.setPropertyValue("activePage", newPage);
63777
+ }
63623
63778
  };
63624
63779
  SurveyModel.prototype.onStateAndCurrentPageChanged = function () {
63625
63780
  this.updateActivePage();
@@ -64838,7 +64993,7 @@ var SurveyModel = /** @class */ (function (_super) {
64838
64993
  if (this.isFirstPage || !this.showPrevButton || this.state !== "running")
64839
64994
  return false;
64840
64995
  var page = this.visiblePages[this.currentPageNo - 1];
64841
- return this.getPageMaxTimeToFinish(page) <= 0;
64996
+ return page && page.getMaxTimeToFinish() <= 0;
64842
64997
  };
64843
64998
  SurveyModel.prototype.calcIsShowNextButton = function () {
64844
64999
  return this.state === "running" && !this.isLastPage && !this.canBeCompletedByTrigger;
@@ -66492,19 +66647,19 @@ var SurveyModel = /** @class */ (function (_super) {
66492
66647
  this.onLoadingSurveyFromService();
66493
66648
  if (clientId) {
66494
66649
  this.createSurveyService().getSurveyJsonAndIsCompleted(this.surveyId, this.clientId, function (success, json, isCompleted, response) {
66495
- self.isLoading = false;
66496
66650
  if (success) {
66497
66651
  self.isCompletedBefore = isCompleted == "completed";
66498
66652
  self.loadSurveyFromServiceJson(json);
66499
66653
  }
66654
+ self.isLoading = false;
66500
66655
  });
66501
66656
  }
66502
66657
  else {
66503
66658
  this.createSurveyService().loadSurvey(this.surveyId, function (success, result, response) {
66504
- self.isLoading = false;
66505
66659
  if (success) {
66506
66660
  self.loadSurveyFromServiceJson(result);
66507
66661
  }
66662
+ self.isLoading = false;
66508
66663
  });
66509
66664
  }
66510
66665
  };
@@ -67608,7 +67763,7 @@ var SurveyModel = /** @class */ (function (_super) {
67608
67763
  return { spent: 0, limit: 0 };
67609
67764
  var pageSpent = page.timeSpent;
67610
67765
  var surveySpent = this.timeSpent;
67611
- var pageLimitSec = this.getPageMaxTimeToFinish(page);
67766
+ var pageLimitSec = page.getMaxTimeToFinish();
67612
67767
  var surveyLimit = this.maxTimeToFinish;
67613
67768
  if (this.showTimerPanelMode == "page") {
67614
67769
  return { spent: pageSpent, limit: pageLimitSec };
@@ -67637,7 +67792,7 @@ var SurveyModel = /** @class */ (function (_super) {
67637
67792
  return "";
67638
67793
  var pageSpent = this.getDisplayTime(page.timeSpent);
67639
67794
  var surveySpent = this.getDisplayTime(this.timeSpent);
67640
- var pageLimitSec = this.getPageMaxTimeToFinish(page);
67795
+ var pageLimitSec = page.getMaxTimeToFinish();
67641
67796
  var pageLimit = this.getDisplayTime(pageLimitSec);
67642
67797
  var surveyLimit = this.getDisplayTime(this.maxTimeToFinish);
67643
67798
  if (this.showTimerPanelMode == "page")
@@ -67658,7 +67813,7 @@ var SurveyModel = /** @class */ (function (_super) {
67658
67813
  return "";
67659
67814
  };
67660
67815
  SurveyModel.prototype.getTimerInfoPageText = function (page, pageSpent, pageLimit) {
67661
- return this.getPageMaxTimeToFinish(page) > 0
67816
+ return !!page && page.getMaxTimeToFinish() > 0
67662
67817
  ? this.getLocalizationFormatString("timerLimitPage", pageSpent, pageLimit)
67663
67818
  : this.getLocalizationFormatString("timerSpentPage", pageSpent, pageLimit);
67664
67819
  };
@@ -67783,20 +67938,14 @@ var SurveyModel = /** @class */ (function (_super) {
67783
67938
  enumerable: false,
67784
67939
  configurable: true
67785
67940
  });
67786
- SurveyModel.prototype.getPageMaxTimeToFinish = function (page) {
67787
- if (!page || page.maxTimeToFinish < 0)
67788
- return 0;
67789
- return page.maxTimeToFinish > 0
67790
- ? page.maxTimeToFinish
67791
- : this.maxTimeToFinishPage;
67792
- };
67793
67941
  SurveyModel.prototype.doTimer = function (page) {
67794
67942
  this.onTimer.fire(this, {});
67795
- if (this.maxTimeToFinish > 0 && this.maxTimeToFinish == this.timeSpent) {
67943
+ if (this.maxTimeToFinish > 0 && this.maxTimeToFinish <= this.timeSpent) {
67944
+ this.timeSpent = this.maxTimeToFinish;
67796
67945
  this.completeLastPage();
67797
67946
  }
67798
67947
  if (page) {
67799
- var pageLimit = this.getPageMaxTimeToFinish(page);
67948
+ var pageLimit = page.getMaxTimeToFinish();
67800
67949
  if (pageLimit > 0 && pageLimit == page.timeSpent) {
67801
67950
  if (this.isLastPage) {
67802
67951
  this.completeLastPage();
@@ -68179,10 +68328,21 @@ var SurveyModel = /** @class */ (function (_super) {
68179
68328
  this.disposeCallback();
68180
68329
  }
68181
68330
  };
68331
+ // private _lastScrollTop = 0;
68332
+ SurveyModel.prototype._isElementShouldBeSticky = function (selector) {
68333
+ if (!selector)
68334
+ return false;
68335
+ var topStickyContainer = this.rootElement.querySelector(selector);
68336
+ if (!!topStickyContainer) {
68337
+ // const scrollDirection = this.rootElement.scrollTop > this._lastScrollTop ? "down" : "up";
68338
+ // this._lastScrollTop = this.rootElement.scrollTop;
68339
+ return this.rootElement.scrollTop > 0 && topStickyContainer.getBoundingClientRect().y <= this.rootElement.getBoundingClientRect().y;
68340
+ }
68341
+ return false;
68342
+ };
68182
68343
  SurveyModel.prototype.onScroll = function () {
68183
68344
  if (!!this.rootElement) {
68184
- var topStickyContainer = this.rootElement.querySelector(".sv-components-container-center");
68185
- if (!!topStickyContainer && topStickyContainer.getBoundingClientRect().y <= this.rootElement.getBoundingClientRect().y) {
68345
+ if (this._isElementShouldBeSticky(".sv-components-container-center")) {
68186
68346
  this.rootElement.classList && this.rootElement.classList.add("sv-root--sticky-top");
68187
68347
  }
68188
68348
  else {
@@ -68925,7 +69085,7 @@ var SurveyTimerModel = /** @class */ (function (_super) {
68925
69085
  this.survey.onCurrentPageChanged.add(function () {
68926
69086
  _this.update();
68927
69087
  });
68928
- this.timerFunc = function () { _this.doTimer(); };
69088
+ this.timerFunc = function (sender, options) { _this.doTimer(options.seconds); };
68929
69089
  this.setIsRunning(true);
68930
69090
  this.update();
68931
69091
  _surveytimer__WEBPACK_IMPORTED_MODULE_1__["SurveyTimer"].instance.start(this.timerFunc);
@@ -68950,12 +69110,16 @@ var SurveyTimerModel = /** @class */ (function (_super) {
68950
69110
  this.updateText();
68951
69111
  this.updateProgress();
68952
69112
  };
68953
- SurveyTimerModel.prototype.doTimer = function () {
69113
+ SurveyTimerModel.prototype.doTimer = function (seconds) {
68954
69114
  var page = this.survey.currentPage;
68955
69115
  if (page) {
68956
- page.timeSpent = page.timeSpent + 1;
69116
+ var pageMaxTime = page.getMaxTimeToFinish();
69117
+ if (pageMaxTime > 0 && pageMaxTime < page.timeSpent + seconds) {
69118
+ seconds = pageMaxTime - page.timeSpent;
69119
+ }
69120
+ page.timeSpent = page.timeSpent + seconds;
68957
69121
  }
68958
- this.spent = this.spent + 1;
69122
+ this.spent = this.spent + seconds;
68959
69123
  this.update();
68960
69124
  if (this.onTimer) {
68961
69125
  this.onTimer(page);
@@ -69241,13 +69405,14 @@ var surveyTimerFunctions = {
69241
69405
  else {
69242
69406
  return setTimeout(func, delay);
69243
69407
  }
69244
- }
69408
+ },
69409
+ now: function () { return Date.now(); }
69245
69410
  };
69246
69411
  var SurveyTimer = /** @class */ (function () {
69247
69412
  function SurveyTimer() {
69248
69413
  this.listenerCounter = 0;
69249
69414
  this.timerId = -1;
69250
- this.onTimer = new _base__WEBPACK_IMPORTED_MODULE_0__["Event"]();
69415
+ this.onTimer = new _base__WEBPACK_IMPORTED_MODULE_0__["EventBase"]();
69251
69416
  }
69252
69417
  Object.defineProperty(SurveyTimer, "instance", {
69253
69418
  get: function () {
@@ -69265,6 +69430,7 @@ var SurveyTimer = /** @class */ (function () {
69265
69430
  if (func) {
69266
69431
  this.onTimer.add(func);
69267
69432
  }
69433
+ this.prevTimeInMs = surveyTimerFunctions.now();
69268
69434
  if (this.timerId < 0) {
69269
69435
  this.timerId = surveyTimerFunctions.setTimeout(function () {
69270
69436
  _this.doTimer();
@@ -69290,8 +69456,14 @@ var SurveyTimer = /** @class */ (function () {
69290
69456
  }
69291
69457
  if (this.timerId < 0)
69292
69458
  return;
69459
+ var newTimer = surveyTimerFunctions.now();
69460
+ var seconds = Math.floor((newTimer - this.prevTimeInMs) / 1000);
69461
+ this.prevTimeInMs = newTimer;
69462
+ if (seconds < 0) {
69463
+ seconds = 1;
69464
+ }
69293
69465
  var prevItem = this.timerId;
69294
- this.onTimer.fire(this, {});
69466
+ this.onTimer.fire(this, { seconds: seconds });
69295
69467
  //We have to check that we have the same timerId
69296
69468
  //It could be changed during events execution and it will lead to double timer events
69297
69469
  if (prevItem !== this.timerId)
@@ -71831,7 +72003,7 @@ function navigateToUrl(url) {
71831
72003
  var location = _global_variables_utils__WEBPACK_IMPORTED_MODULE_3__["DomWindowHelper"].getLocation();
71832
72004
  if (!url || !location)
71833
72005
  return;
71834
- location.href = url;
72006
+ location.href = encodeURIComponent(url);
71835
72007
  }
71836
72008
  function wrapUrlForBackgroundImage(url) {
71837
72009
  return !!url ? ["url(", url, ")"].join("") : "";