survey-core 1.9.124 → 1.9.126

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 (321) hide show
  1. package/defaultV2.css +138 -56
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +138 -56
  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 +14 -3
  8. package/i18n/arabic.js.map +1 -1
  9. package/i18n/arabic.min.js +2 -2
  10. package/i18n/basque.js +14 -3
  11. package/i18n/basque.js.map +1 -1
  12. package/i18n/basque.min.js +2 -2
  13. package/i18n/bulgarian.js +14 -3
  14. package/i18n/bulgarian.js.map +1 -1
  15. package/i18n/bulgarian.min.js +2 -2
  16. package/i18n/catalan.js +14 -3
  17. package/i18n/catalan.js.map +1 -1
  18. package/i18n/catalan.min.js +2 -2
  19. package/i18n/croatian.js +14 -3
  20. package/i18n/croatian.js.map +1 -1
  21. package/i18n/croatian.min.js +2 -2
  22. package/i18n/czech.js +14 -3
  23. package/i18n/czech.js.map +1 -1
  24. package/i18n/czech.min.js +2 -2
  25. package/i18n/danish.js +14 -3
  26. package/i18n/danish.js.map +1 -1
  27. package/i18n/danish.min.js +2 -2
  28. package/i18n/dutch.js +14 -3
  29. package/i18n/dutch.js.map +1 -1
  30. package/i18n/dutch.min.js +2 -2
  31. package/i18n/english.js +2 -1
  32. package/i18n/english.js.map +1 -1
  33. package/i18n/english.min.js +2 -2
  34. package/i18n/estonian.js +14 -3
  35. package/i18n/estonian.js.map +1 -1
  36. package/i18n/estonian.min.js +2 -2
  37. package/i18n/finnish.js +14 -3
  38. package/i18n/finnish.js.map +1 -1
  39. package/i18n/finnish.min.js +2 -2
  40. package/i18n/french.js +14 -3
  41. package/i18n/french.js.map +1 -1
  42. package/i18n/french.min.js +2 -2
  43. package/i18n/georgian.js +14 -3
  44. package/i18n/georgian.js.map +1 -1
  45. package/i18n/georgian.min.js +2 -2
  46. package/i18n/german.js +14 -3
  47. package/i18n/german.js.map +1 -1
  48. package/i18n/german.min.js +2 -2
  49. package/i18n/greek.js +14 -3
  50. package/i18n/greek.js.map +1 -1
  51. package/i18n/greek.min.js +2 -2
  52. package/i18n/hebrew.js +14 -3
  53. package/i18n/hebrew.js.map +1 -1
  54. package/i18n/hebrew.min.js +2 -2
  55. package/i18n/hindi.js +14 -3
  56. package/i18n/hindi.js.map +1 -1
  57. package/i18n/hindi.min.js +2 -2
  58. package/i18n/hungarian.js +14 -3
  59. package/i18n/hungarian.js.map +1 -1
  60. package/i18n/hungarian.min.js +2 -2
  61. package/i18n/icelandic.js +14 -3
  62. package/i18n/icelandic.js.map +1 -1
  63. package/i18n/icelandic.min.js +2 -2
  64. package/i18n/index.js +612 -95
  65. package/i18n/index.js.map +1 -1
  66. package/i18n/index.min.js +2 -2
  67. package/i18n/indonesian.js +14 -3
  68. package/i18n/indonesian.js.map +1 -1
  69. package/i18n/indonesian.min.js +2 -2
  70. package/i18n/italian.js +14 -3
  71. package/i18n/italian.js.map +1 -1
  72. package/i18n/italian.min.js +2 -2
  73. package/i18n/japanese.js +14 -3
  74. package/i18n/japanese.js.map +1 -1
  75. package/i18n/japanese.min.js +2 -2
  76. package/i18n/kazakh.js +14 -3
  77. package/i18n/kazakh.js.map +1 -1
  78. package/i18n/kazakh.min.js +2 -2
  79. package/i18n/korean.js +14 -3
  80. package/i18n/korean.js.map +1 -1
  81. package/i18n/korean.min.js +2 -2
  82. package/i18n/latvian.js +14 -3
  83. package/i18n/latvian.js.map +1 -1
  84. package/i18n/latvian.min.js +2 -2
  85. package/i18n/lithuanian.js +14 -3
  86. package/i18n/lithuanian.js.map +1 -1
  87. package/i18n/lithuanian.min.js +2 -2
  88. package/i18n/macedonian.js +14 -3
  89. package/i18n/macedonian.js.map +1 -1
  90. package/i18n/macedonian.min.js +2 -2
  91. package/i18n/malay.js +14 -3
  92. package/i18n/malay.js.map +1 -1
  93. package/i18n/malay.min.js +2 -2
  94. package/i18n/nl-BE.js +14 -3
  95. package/i18n/nl-BE.js.map +1 -1
  96. package/i18n/nl-BE.min.js +2 -2
  97. package/i18n/norwegian.js +14 -3
  98. package/i18n/norwegian.js.map +1 -1
  99. package/i18n/norwegian.min.js +2 -2
  100. package/i18n/persian.js +14 -3
  101. package/i18n/persian.js.map +1 -1
  102. package/i18n/persian.min.js +2 -2
  103. package/i18n/polish.js +14 -3
  104. package/i18n/polish.js.map +1 -1
  105. package/i18n/polish.min.js +2 -2
  106. package/i18n/portuguese-br.js +14 -3
  107. package/i18n/portuguese-br.js.map +1 -1
  108. package/i18n/portuguese-br.min.js +2 -2
  109. package/i18n/portuguese.js +14 -3
  110. package/i18n/portuguese.js.map +1 -1
  111. package/i18n/portuguese.min.js +2 -2
  112. package/i18n/romanian.js +14 -3
  113. package/i18n/romanian.js.map +1 -1
  114. package/i18n/romanian.min.js +2 -2
  115. package/i18n/russian.js +14 -3
  116. package/i18n/russian.js.map +1 -1
  117. package/i18n/russian.min.js +2 -2
  118. package/i18n/serbian.js +14 -3
  119. package/i18n/serbian.js.map +1 -1
  120. package/i18n/serbian.min.js +2 -2
  121. package/i18n/simplified-chinese.js +14 -3
  122. package/i18n/simplified-chinese.js.map +1 -1
  123. package/i18n/simplified-chinese.min.js +2 -2
  124. package/i18n/slovak.js +14 -3
  125. package/i18n/slovak.js.map +1 -1
  126. package/i18n/slovak.min.js +2 -2
  127. package/i18n/spanish.js +14 -3
  128. package/i18n/spanish.js.map +1 -1
  129. package/i18n/spanish.min.js +2 -2
  130. package/i18n/swahili.js +14 -3
  131. package/i18n/swahili.js.map +1 -1
  132. package/i18n/swahili.min.js +2 -2
  133. package/i18n/swedish.js +14 -3
  134. package/i18n/swedish.js.map +1 -1
  135. package/i18n/swedish.min.js +2 -2
  136. package/i18n/tajik.js +1 -1
  137. package/i18n/tajik.min.js +1 -1
  138. package/i18n/telugu.js +14 -3
  139. package/i18n/telugu.js.map +1 -1
  140. package/i18n/telugu.min.js +2 -2
  141. package/i18n/thai.js +14 -3
  142. package/i18n/thai.js.map +1 -1
  143. package/i18n/thai.min.js +2 -2
  144. package/i18n/traditional-chinese.js +14 -3
  145. package/i18n/traditional-chinese.js.map +1 -1
  146. package/i18n/traditional-chinese.min.js +2 -2
  147. package/i18n/turkish.js +14 -3
  148. package/i18n/turkish.js.map +1 -1
  149. package/i18n/turkish.min.js +2 -2
  150. package/i18n/ukrainian.js +14 -3
  151. package/i18n/ukrainian.js.map +1 -1
  152. package/i18n/ukrainian.min.js +2 -2
  153. package/i18n/urdu.js +14 -3
  154. package/i18n/urdu.js.map +1 -1
  155. package/i18n/urdu.min.js +2 -2
  156. package/i18n/vietnamese.js +14 -3
  157. package/i18n/vietnamese.js.map +1 -1
  158. package/i18n/vietnamese.min.js +2 -2
  159. package/i18n/welsh.js +14 -3
  160. package/i18n/welsh.js.map +1 -1
  161. package/i18n/welsh.min.js +2 -2
  162. package/modern.css +70 -48
  163. package/modern.css.map +1 -1
  164. package/modern.fontless.css +70 -48
  165. package/modern.fontless.css.map +1 -1
  166. package/modern.fontless.min.css +2 -2
  167. package/modern.min.css +2 -2
  168. package/package.json +1 -1
  169. package/plugins/bootstrap-integration.js +1 -1
  170. package/plugins/bootstrap-integration.min.js +1 -1
  171. package/plugins/bootstrap-material-integration.js +1 -1
  172. package/plugins/bootstrap-material-integration.min.js +1 -1
  173. package/survey.core.js +777 -243
  174. package/survey.core.js.map +1 -1
  175. package/survey.core.min.js +3 -3
  176. package/survey.css +70 -48
  177. package/survey.css.map +1 -1
  178. package/survey.i18n.js +612 -95
  179. package/survey.i18n.js.map +1 -1
  180. package/survey.i18n.min.js +2 -2
  181. package/survey.min.css +2 -2
  182. package/themes/borderless-dark-panelless.js +1 -1
  183. package/themes/borderless-dark-panelless.min.js +1 -1
  184. package/themes/borderless-dark.js +1 -1
  185. package/themes/borderless-dark.min.js +1 -1
  186. package/themes/borderless-light-panelless..js +1 -1
  187. package/themes/borderless-light-panelless..min.js +1 -1
  188. package/themes/borderless-light.js +1 -1
  189. package/themes/borderless-light.min.js +1 -1
  190. package/themes/contrast-dark-panelless.js +1 -1
  191. package/themes/contrast-dark-panelless.min.js +1 -1
  192. package/themes/contrast-dark.js +1 -1
  193. package/themes/contrast-dark.min.js +1 -1
  194. package/themes/contrast-light-panelless.js +1 -1
  195. package/themes/contrast-light-panelless.min.js +1 -1
  196. package/themes/contrast-light.js +1 -1
  197. package/themes/contrast-light.min.js +1 -1
  198. package/themes/default-dark-panelless.js +1 -1
  199. package/themes/default-dark-panelless.min.js +1 -1
  200. package/themes/default-dark.js +1 -1
  201. package/themes/default-dark.min.js +1 -1
  202. package/themes/default-light-panelless.js +1 -1
  203. package/themes/default-light-panelless.min.js +1 -1
  204. package/themes/default-light.js +1 -1
  205. package/themes/default-light.min.js +1 -1
  206. package/themes/doubleborder-dark-panelless.js +1 -1
  207. package/themes/doubleborder-dark-panelless.min.js +1 -1
  208. package/themes/doubleborder-dark.js +1 -1
  209. package/themes/doubleborder-dark.min.js +1 -1
  210. package/themes/doubleborder-light-panelles.js +1 -1
  211. package/themes/doubleborder-light-panelles.min.js +1 -1
  212. package/themes/doubleborder-light.js +1 -1
  213. package/themes/doubleborder-light.min.js +1 -1
  214. package/themes/flat-dark-panelless.js +1 -1
  215. package/themes/flat-dark-panelless.min.js +1 -1
  216. package/themes/flat-dark.js +1 -1
  217. package/themes/flat-dark.min.js +1 -1
  218. package/themes/flat-light-panelless.js +1 -1
  219. package/themes/flat-light-panelless.min.js +1 -1
  220. package/themes/flat-light.js +1 -1
  221. package/themes/flat-light.min.js +1 -1
  222. package/themes/index.js +1 -1
  223. package/themes/index.min.js +1 -1
  224. package/themes/layered-dark-panelless.js +1 -1
  225. package/themes/layered-dark-panelless.min.js +1 -1
  226. package/themes/layered-dark.js +1 -1
  227. package/themes/layered-dark.min.js +1 -1
  228. package/themes/layered-light-panelless.js +1 -1
  229. package/themes/layered-light-panelless.min.js +1 -1
  230. package/themes/layered-light.js +1 -1
  231. package/themes/layered-light.min.js +1 -1
  232. package/themes/plain-dark-panelless.js +1 -1
  233. package/themes/plain-dark-panelless.min.js +1 -1
  234. package/themes/plain-dark.js +1 -1
  235. package/themes/plain-dark.min.js +1 -1
  236. package/themes/plain-light-panelless.js +1 -1
  237. package/themes/plain-light-panelless.min.js +1 -1
  238. package/themes/plain-light.js +1 -1
  239. package/themes/plain-light.min.js +1 -1
  240. package/themes/sharp-dark-panelless.js +1 -1
  241. package/themes/sharp-dark-panelless.min.js +1 -1
  242. package/themes/sharp-dark.js +1 -1
  243. package/themes/sharp-dark.min.js +1 -1
  244. package/themes/sharp-light-panelless.js +1 -1
  245. package/themes/sharp-light-panelless.min.js +1 -1
  246. package/themes/sharp-light.js +1 -1
  247. package/themes/sharp-light.min.js +1 -1
  248. package/themes/solid-dark-panelless.js +1 -1
  249. package/themes/solid-dark-panelless.min.js +1 -1
  250. package/themes/solid-dark.js +1 -1
  251. package/themes/solid-dark.min.js +1 -1
  252. package/themes/solid-light-panelless.js +1 -1
  253. package/themes/solid-light-panelless.min.js +1 -1
  254. package/themes/solid-light.js +1 -1
  255. package/themes/solid-light.min.js +1 -1
  256. package/themes/three-dimensional-dark-panelless.js +1 -1
  257. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  258. package/themes/three-dimensional-dark.js +1 -1
  259. package/themes/three-dimensional-dark.min.js +1 -1
  260. package/themes/three-dimensional-light-panelless.js +1 -1
  261. package/themes/three-dimensional-light-panelless.min.js +1 -1
  262. package/themes/three-dimensional-light.js +1 -1
  263. package/themes/three-dimensional-light.min.js +1 -1
  264. package/ts3.4/typings/actions/action.d.ts +3 -3
  265. package/ts3.4/typings/base-interfaces.d.ts +1 -0
  266. package/ts3.4/typings/base.d.ts +3 -1
  267. package/ts3.4/typings/defaultCss/cssmodern.d.ts +6 -1
  268. package/ts3.4/typings/defaultCss/cssstandard.d.ts +6 -1
  269. package/ts3.4/typings/defaultCss/defaultV2Css.d.ts +8 -1
  270. package/ts3.4/typings/error.d.ts +6 -0
  271. package/ts3.4/typings/jsonobject.d.ts +4 -0
  272. package/ts3.4/typings/localizablestring.d.ts +1 -0
  273. package/ts3.4/typings/localization/english.d.ts +1 -0
  274. package/ts3.4/typings/martixBase.d.ts +6 -2
  275. package/ts3.4/typings/panel.d.ts +3 -3
  276. package/ts3.4/typings/popup-survey.d.ts +8 -2
  277. package/ts3.4/typings/question.d.ts +4 -3
  278. package/ts3.4/typings/question_baseselect.d.ts +4 -2
  279. package/ts3.4/typings/question_custom.d.ts +28 -1
  280. package/ts3.4/typings/question_matrix.d.ts +23 -2
  281. package/ts3.4/typings/question_matrixdropdownbase.d.ts +9 -8
  282. package/ts3.4/typings/question_matrixdropdowncolumn.d.ts +179 -0
  283. package/ts3.4/typings/question_paneldynamic.d.ts +7 -0
  284. package/ts3.4/typings/question_ranking.d.ts +1 -0
  285. package/ts3.4/typings/settings.d.ts +2 -2
  286. package/ts3.4/typings/survey-element.d.ts +2 -0
  287. package/ts3.4/typings/survey-error.d.ts +1 -1
  288. package/ts3.4/typings/survey-events-api.d.ts +3 -3
  289. package/ts3.4/typings/survey.d.ts +5 -0
  290. package/ts3.4/typings/surveyStrings.d.ts +1 -0
  291. package/ts3.4/typings/surveyToc.d.ts +0 -2
  292. package/ts3.4/typings/themes.d.ts +14 -0
  293. package/typings/actions/action.d.ts +3 -3
  294. package/typings/base-interfaces.d.ts +1 -0
  295. package/typings/base.d.ts +3 -1
  296. package/typings/defaultCss/cssmodern.d.ts +6 -1
  297. package/typings/defaultCss/cssstandard.d.ts +6 -1
  298. package/typings/defaultCss/defaultV2Css.d.ts +8 -1
  299. package/typings/error.d.ts +6 -0
  300. package/typings/jsonobject.d.ts +4 -0
  301. package/typings/localizablestring.d.ts +1 -0
  302. package/typings/localization/english.d.ts +1 -0
  303. package/typings/martixBase.d.ts +6 -2
  304. package/typings/panel.d.ts +3 -3
  305. package/typings/popup-survey.d.ts +8 -2
  306. package/typings/question.d.ts +4 -3
  307. package/typings/question_baseselect.d.ts +4 -2
  308. package/typings/question_custom.d.ts +28 -1
  309. package/typings/question_matrix.d.ts +25 -3
  310. package/typings/question_matrixdropdownbase.d.ts +9 -8
  311. package/typings/question_matrixdropdowncolumn.d.ts +179 -0
  312. package/typings/question_paneldynamic.d.ts +7 -0
  313. package/typings/question_ranking.d.ts +1 -0
  314. package/typings/settings.d.ts +2 -2
  315. package/typings/survey-element.d.ts +2 -0
  316. package/typings/survey-error.d.ts +1 -1
  317. package/typings/survey-events-api.d.ts +3 -3
  318. package/typings/survey.d.ts +6 -0
  319. package/typings/surveyStrings.d.ts +1 -0
  320. package/typings/surveyToc.d.ts +0 -2
  321. package/typings/themes.d.ts +14 -0
package/survey.core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.9.124
2
+ * surveyjs - Survey JavaScript library v1.9.126
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
  */
@@ -1900,6 +1900,20 @@ var Base = /** @class */ (function () {
1900
1900
  }
1901
1901
  return _helpers__WEBPACK_IMPORTED_MODULE_1__["Helpers"].isValueEmpty(value);
1902
1902
  };
1903
+ Base.prototype.equals = function (obj) {
1904
+ if (!obj)
1905
+ return false;
1906
+ if (this.isDisposed || obj.isDisposed)
1907
+ return false;
1908
+ if (this.getType() != obj.getType())
1909
+ return false;
1910
+ return this.equalsCore(obj);
1911
+ };
1912
+ Base.prototype.equalsCore = function (obj) {
1913
+ if (this.name !== obj.name)
1914
+ return false;
1915
+ return _helpers__WEBPACK_IMPORTED_MODULE_1__["Helpers"].isTwoValueEquals(this.toJSON(), obj.toJSON(), false, true, false);
1916
+ };
1903
1917
  Base.prototype.trimValue = function (value) {
1904
1918
  if (!!value && (typeof value === "string" || value instanceof String))
1905
1919
  return value.trim();
@@ -2439,8 +2453,8 @@ var Base = /** @class */ (function () {
2439
2453
  Base.prototype.createCustomLocalizableObj = function (name) {
2440
2454
  var locStr = this.getLocalizableString(name);
2441
2455
  if (locStr)
2442
- return;
2443
- this.createLocalizableString(name, this, false, true);
2456
+ return locStr;
2457
+ return this.createLocalizableString(name, this, false, true);
2444
2458
  };
2445
2459
  Base.prototype.getLocale = function () {
2446
2460
  var locOwner = this.getSurvey();
@@ -4875,14 +4889,19 @@ var modernCss = {
4875
4889
  },
4876
4890
  window: {
4877
4891
  root: "sv_window",
4892
+ rootCollapsedMod: "sv_window--collapsed",
4893
+ rootContent: "sv_window_root-content",
4878
4894
  body: "sv_window_content",
4879
4895
  header: {
4880
- root: "sv_window_title",
4881
- title: "",
4882
- button: "",
4896
+ root: "sv_window_header",
4897
+ titleCollapsed: "sv_window_header_title_collapsed",
4898
+ buttonsContainer: "sv_window_buttons_container",
4899
+ button: "sv_window_button",
4883
4900
  buttonExpanded: "",
4884
4901
  buttonCollapsed: "",
4885
- },
4902
+ collapseButton: "sv_window_button sv_window_button_collapse",
4903
+ closeButton: "sv_window_button sv_window_button_close"
4904
+ }
4886
4905
  },
4887
4906
  variables: {
4888
4907
  mobileWidth: "--sv-mobile-width",
@@ -5268,14 +5287,19 @@ var defaultStandardCss = {
5268
5287
  },
5269
5288
  window: {
5270
5289
  root: "sv_window",
5290
+ rootCollapsedMod: "sv_window--collapsed",
5291
+ rootContent: "sv_window_root-content",
5271
5292
  body: "sv_window_content",
5272
5293
  header: {
5273
- root: "sv_window_title",
5274
- title: "",
5275
- button: "",
5294
+ root: "sv_window_header",
5295
+ titleCollapsed: "sv_window_header_title_collapsed",
5296
+ buttonsContainer: "sv_window_buttons_container",
5297
+ button: "sv_window_button",
5276
5298
  buttonExpanded: "",
5277
5299
  buttonCollapsed: "",
5278
- },
5300
+ collapseButton: "sv_window_button sv_window_button_collapse",
5301
+ closeButton: "sv_window_button sv_window_button_close"
5302
+ }
5279
5303
  },
5280
5304
  variables: {
5281
5305
  mobileWidth: "--sv-mobile-width",
@@ -5496,6 +5520,7 @@ var defaultV2Css = {
5496
5520
  headerTop: "sd-question__header--location-top sd-element__header--location-top",
5497
5521
  headerBottom: "sd-question__header--location--bottom",
5498
5522
  content: "sd-question__content",
5523
+ contentSupportContainerQueries: "sd-question__content--support-container-queries",
5499
5524
  contentLeft: "sd-question__content--left",
5500
5525
  titleNumInline: "sd-element__title--num-inline",
5501
5526
  titleLeftRoot: "sd-question--left",
@@ -5737,6 +5762,7 @@ var defaultV2Css = {
5737
5762
  rowError: "sd-matrix__row--error",
5738
5763
  cell: "sd-table__cell sd-matrix__cell",
5739
5764
  row: "sd-table__row",
5765
+ rowDisabled: "sd-table__row-disabled",
5740
5766
  headerCell: "sd-table__cell sd-table__cell--header",
5741
5767
  rowTextCell: "sd-table__cell sd-matrix__cell sd-table__cell--row-text",
5742
5768
  label: "sd-item sd-radio sd-matrix__label",
@@ -5975,13 +6001,18 @@ var defaultV2Css = {
5975
6001
  },
5976
6002
  window: {
5977
6003
  root: "sv_window",
6004
+ rootCollapsedMod: "sv_window--collapsed",
6005
+ rootContent: "sv_window_root-content",
5978
6006
  body: "sv_window_content",
5979
6007
  header: {
5980
- root: "sv_window_title",
5981
- title: "",
6008
+ root: "sv_window_header",
6009
+ titleCollapsed: "sv_window_header_title_collapsed",
6010
+ buttonsContainer: "sv_window_buttons_container",
5982
6011
  button: "sv_window_button",
5983
6012
  buttonExpanded: "",
5984
- buttonCollapsed: ""
6013
+ buttonCollapsed: "",
6014
+ collapseButton: "sv_window_button sv_window_button_collapse",
6015
+ closeButton: "sv_window_button sv_window_button_close"
5985
6016
  }
5986
6017
  },
5987
6018
  ranking: {
@@ -8862,7 +8893,7 @@ var ElementHelper = /** @class */ (function () {
8862
8893
  /*!*************************************!*\
8863
8894
  !*** ./src/entries/chunks/model.ts ***!
8864
8895
  \*************************************/
8865
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, 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, Cover, CoverCell, 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 */
8896
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, 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, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, 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 */
8866
8897
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
8867
8898
 
8868
8899
  "use strict";
@@ -9167,8 +9198,6 @@ __webpack_require__.r(__webpack_exports__);
9167
9198
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTimerModel", function() { return _surveyTimerModel__WEBPACK_IMPORTED_MODULE_54__["SurveyTimerModel"]; });
9168
9199
 
9169
9200
  /* harmony import */ var _surveyToc__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../../surveyToc */ "./src/surveyToc.ts");
9170
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["tryNavigateToPage"]; });
9171
-
9172
9201
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["tryFocusPage"]; });
9173
9202
 
9174
9203
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["createTOCListModel"]; });
@@ -9339,8 +9368,8 @@ __webpack_require__.r(__webpack_exports__);
9339
9368
  //import "../../modern.scss";
9340
9369
  var Version;
9341
9370
  var ReleaseDate;
9342
- Version = "" + "1.9.124";
9343
- ReleaseDate = "" + "2024-01-04";
9371
+ Version = "" + "1.9.126";
9372
+ ReleaseDate = "" + "2024-01-16";
9344
9373
  function checkLibraryVersion(ver, libraryName) {
9345
9374
  if (Version != ver) {
9346
9375
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -9515,7 +9544,7 @@ function checkPrefix(prefix) {
9515
9544
  /*!**************************************!*\
9516
9545
  !*** ./src/entries/core-wo-model.ts ***!
9517
9546
  \**************************************/
9518
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, 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, Cover, CoverCell, 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 */
9547
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, 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, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, 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 */
9519
9548
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9520
9549
 
9521
9550
  "use strict";
@@ -9771,8 +9800,6 @@ __webpack_require__.r(__webpack_exports__);
9771
9800
 
9772
9801
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTimerModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["SurveyTimerModel"]; });
9773
9802
 
9774
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["tryNavigateToPage"]; });
9775
-
9776
9803
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["tryFocusPage"]; });
9777
9804
 
9778
9805
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["createTOCListModel"]; });
@@ -9980,7 +10007,7 @@ __webpack_require__.r(__webpack_exports__);
9980
10007
  /*!*****************************!*\
9981
10008
  !*** ./src/entries/core.ts ***!
9982
10009
  \*****************************/
9983
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, 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, Cover, CoverCell, 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 */
10010
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, 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, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, 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 */
9984
10011
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9985
10012
 
9986
10013
  "use strict";
@@ -10236,8 +10263,6 @@ __webpack_require__.r(__webpack_exports__);
10236
10263
 
10237
10264
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTimerModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["SurveyTimerModel"]; });
10238
10265
 
10239
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["tryNavigateToPage"]; });
10240
-
10241
10266
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["tryFocusPage"]; });
10242
10267
 
10243
10268
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["createTOCListModel"]; });
@@ -10426,7 +10451,7 @@ __webpack_require__.r(__webpack_exports__);
10426
10451
  /*!**********************!*\
10427
10452
  !*** ./src/error.ts ***!
10428
10453
  \**********************/
10429
- /*! exports provided: AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, WebRequestError, WebRequestEmptyError, OtherEmptyError, UploadingFileError, RequiredInAllRowsError, MinRowCountError, KeyDuplicationError, CustomError */
10454
+ /*! exports provided: AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, WebRequestError, WebRequestEmptyError, OtherEmptyError, UploadingFileError, RequiredInAllRowsError, EachRowUniqueError, MinRowCountError, KeyDuplicationError, CustomError */
10430
10455
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10431
10456
 
10432
10457
  "use strict";
@@ -10440,6 +10465,7 @@ __webpack_require__.r(__webpack_exports__);
10440
10465
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OtherEmptyError", function() { return OtherEmptyError; });
10441
10466
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UploadingFileError", function() { return UploadingFileError; });
10442
10467
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RequiredInAllRowsError", function() { return RequiredInAllRowsError; });
10468
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EachRowUniqueError", function() { return EachRowUniqueError; });
10443
10469
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MinRowCountError", function() { return MinRowCountError; });
10444
10470
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyDuplicationError", function() { return KeyDuplicationError; });
10445
10471
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CustomError", function() { return CustomError; });
@@ -10632,6 +10658,23 @@ var RequiredInAllRowsError = /** @class */ (function (_super) {
10632
10658
  return RequiredInAllRowsError;
10633
10659
  }(_survey_error__WEBPACK_IMPORTED_MODULE_1__["SurveyError"]));
10634
10660
 
10661
+ var EachRowUniqueError = /** @class */ (function (_super) {
10662
+ __extends(EachRowUniqueError, _super);
10663
+ function EachRowUniqueError(text, errorOwner) {
10664
+ if (errorOwner === void 0) { errorOwner = null; }
10665
+ var _this = _super.call(this, text, errorOwner) || this;
10666
+ _this.text = text;
10667
+ return _this;
10668
+ }
10669
+ EachRowUniqueError.prototype.getErrorType = function () {
10670
+ return "eachrowuniqueeerror";
10671
+ };
10672
+ EachRowUniqueError.prototype.getDefaultText = function () {
10673
+ return this.getLocalizationString("eachRowUniqueError");
10674
+ };
10675
+ return EachRowUniqueError;
10676
+ }(_survey_error__WEBPACK_IMPORTED_MODULE_1__["SurveyError"]));
10677
+
10635
10678
  var MinRowCountError = /** @class */ (function (_super) {
10636
10679
  __extends(MinRowCountError, _super);
10637
10680
  function MinRowCountError(minRowCount, errorOwner) {
@@ -15777,21 +15820,11 @@ var Helpers = /** @class */ (function () {
15777
15820
  return x == y;
15778
15821
  if (!Helpers.isValueObject(x) || !Helpers.isValueObject(y))
15779
15822
  return false;
15780
- if (x["equals"])
15823
+ if (x["equals"] && y["equals"])
15781
15824
  return x.equals(y);
15782
- if (!!x.toJSON && !!y.toJSON && !!x.getType && !!y.getType) {
15783
- if (x.isDisposed || y.isDisposed)
15784
- return false;
15785
- if (x.getType() !== y.getType())
15786
- return false;
15787
- if (!!x.name && x.name !== y.name)
15788
- return false;
15789
- return this.isTwoValueEquals(x.toJSON(), y.toJSON(), ignoreOrder, caseSensitive, trimStrings);
15790
- }
15791
- if (Array.isArray(x) && Array.isArray(y))
15825
+ if (Array.isArray(x) && Array.isArray(y)) {
15792
15826
  return Helpers.isArraysEqual(x, y, ignoreOrder, caseSensitive, trimStrings);
15793
- if (!!x.equalsTo && y.equalsTo)
15794
- return x.equalsTo(y);
15827
+ }
15795
15828
  for (var p in x) {
15796
15829
  if (!x.hasOwnProperty(p))
15797
15830
  continue;
@@ -16123,10 +16156,12 @@ var map = {
16123
16156
  "./V2DragElement_16x16.svg": "./src/images/V2DragElement_16x16.svg",
16124
16157
  "./chevron.svg": "./src/images/chevron.svg",
16125
16158
  "./clear_16x16.svg": "./src/images/clear_16x16.svg",
16159
+ "./close_16x16.svg": "./src/images/close_16x16.svg",
16126
16160
  "./collapseDetail.svg": "./src/images/collapseDetail.svg",
16127
16161
  "./drag-n-drop.svg": "./src/images/drag-n-drop.svg",
16128
16162
  "./expandDetail.svg": "./src/images/expandDetail.svg",
16129
16163
  "./loading.svg": "./src/images/loading.svg",
16164
+ "./minimize_16x16.svg": "./src/images/minimize_16x16.svg",
16130
16165
  "./no-image.svg": "./src/images/no-image.svg",
16131
16166
  "./ranking-arrows.svg": "./src/images/ranking-arrows.svg",
16132
16167
  "./ranking-dash.svg": "./src/images/ranking-dash.svg",
@@ -16134,6 +16169,7 @@ var map = {
16134
16169
  "./rating-star-small-2.svg": "./src/images/rating-star-small-2.svg",
16135
16170
  "./rating-star-small.svg": "./src/images/rating-star-small.svg",
16136
16171
  "./rating-star.svg": "./src/images/rating-star.svg",
16172
+ "./restore_16x16.svg": "./src/images/restore_16x16.svg",
16137
16173
  "./search.svg": "./src/images/search.svg"
16138
16174
  };
16139
16175
 
@@ -16522,6 +16558,17 @@ module.exports = "<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\
16522
16558
 
16523
16559
  /***/ }),
16524
16560
 
16561
+ /***/ "./src/images/close_16x16.svg":
16562
+ /*!************************************!*\
16563
+ !*** ./src/images/close_16x16.svg ***!
16564
+ \************************************/
16565
+ /*! no static exports found */
16566
+ /***/ (function(module, exports) {
16567
+
16568
+ module.exports = "<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.43 8.0025L13.7 3.7225C14.09 3.3325 14.09 2.6925 13.7 2.2925C13.31 1.9025 12.67 1.9025 12.27 2.2925L7.99 6.5725L3.72 2.3025C3.33 1.9025 2.69 1.9025 2.3 2.3025C1.9 2.6925 1.9 3.3325 2.3 3.7225L6.58 8.0025L2.3 12.2825C1.91 12.6725 1.91 13.3125 2.3 13.7125C2.69 14.1025 3.33 14.1025 3.73 13.7125L8.01 9.4325L12.29 13.7125C12.68 14.1025 13.32 14.1025 13.72 13.7125C14.11 13.3225 14.11 12.6825 13.72 12.2825L9.44 8.0025H9.43Z\"></path></svg>"
16569
+
16570
+ /***/ }),
16571
+
16525
16572
  /***/ "./src/images/collapseDetail.svg":
16526
16573
  /*!***************************************!*\
16527
16574
  !*** ./src/images/collapseDetail.svg ***!
@@ -16566,6 +16613,17 @@ module.exports = "<svg viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3
16566
16613
 
16567
16614
  /***/ }),
16568
16615
 
16616
+ /***/ "./src/images/minimize_16x16.svg":
16617
+ /*!***************************************!*\
16618
+ !*** ./src/images/minimize_16x16.svg ***!
16619
+ \***************************************/
16620
+ /*! no static exports found */
16621
+ /***/ (function(module, exports) {
16622
+
16623
+ module.exports = "<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13 9H3C2.45 9 2 8.55 2 8C2 7.45 2.45 7 3 7H13C13.55 7 14 7.45 14 8C14 8.55 13.55 9 13 9Z\"></path></svg>"
16624
+
16625
+ /***/ }),
16626
+
16569
16627
  /***/ "./src/images/no-image.svg":
16570
16628
  /*!*********************************!*\
16571
16629
  !*** ./src/images/no-image.svg ***!
@@ -16643,6 +16701,17 @@ module.exports = "<svg viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\
16643
16701
 
16644
16702
  /***/ }),
16645
16703
 
16704
+ /***/ "./src/images/restore_16x16.svg":
16705
+ /*!**************************************!*\
16706
+ !*** ./src/images/restore_16x16.svg ***!
16707
+ \**************************************/
16708
+ /*! no static exports found */
16709
+ /***/ (function(module, exports) {
16710
+
16711
+ module.exports = "<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 13H4C2.9 13 2 12.1 2 11V5C2 3.9 2.9 3 4 3H12C13.1 3 14 3.9 14 5V11C14 12.1 13.1 13 12 13ZM4 5V11H12V5H4Z\"></path></svg>"
16712
+
16713
+ /***/ }),
16714
+
16646
16715
  /***/ "./src/images/search.svg":
16647
16716
  /*!*******************************!*\
16648
16717
  !*** ./src/images/search.svg ***!
@@ -17605,7 +17674,12 @@ var JsonObjectProperty = /** @class */ (function () {
17605
17674
  return this.isRequiredValue;
17606
17675
  },
17607
17676
  set: function (val) {
17608
- this.isRequiredValue = val;
17677
+ if (val !== this.isRequired) {
17678
+ this.isRequiredValue = val;
17679
+ if (!!this.classInfo) {
17680
+ this.classInfo.resetAllProperties();
17681
+ }
17682
+ }
17609
17683
  },
17610
17684
  enumerable: false,
17611
17685
  configurable: true
@@ -17640,7 +17714,7 @@ var JsonObjectProperty = /** @class */ (function () {
17640
17714
  JsonObjectProperty.prototype.getDefaultValue = function (obj) {
17641
17715
  var result = !!this.defaultValueFunc ? this.defaultValueFunc(obj) : this.defaultValueValue;
17642
17716
  if (!!JsonObjectProperty.getItemValuesDefaultValue &&
17643
- JsonObject.metaData.isDescendantOf(this.className, "itemvalue")) {
17717
+ Serializer.isDescendantOf(this.className, "itemvalue")) {
17644
17718
  result = JsonObjectProperty.getItemValuesDefaultValue(this.defaultValueValue || [], this.className);
17645
17719
  }
17646
17720
  return result;
@@ -17985,7 +18059,8 @@ var CustomPropertiesCollection = /** @class */ (function () {
17985
18059
  if (prop.isLocalizable &&
17986
18060
  prop.serializationProperty &&
17987
18061
  obj.createCustomLocalizableObj) {
17988
- obj.createCustomLocalizableObj(prop.name);
18062
+ var locStr = obj.createCustomLocalizableObj(prop.name);
18063
+ locStr.defaultValue = prop.defaultValue;
17989
18064
  var locDesc = {
17990
18065
  get: function () {
17991
18066
  return obj.getLocalizableString(prop.name);
@@ -17994,7 +18069,7 @@ var CustomPropertiesCollection = /** @class */ (function () {
17994
18069
  Object.defineProperty(obj, prop.serializationProperty, locDesc);
17995
18070
  var desc = {
17996
18071
  get: function () {
17997
- return obj.getLocalizableStringText(prop.name, prop.defaultValue);
18072
+ return obj.getLocalizableStringText(prop.name);
17998
18073
  },
17999
18074
  set: function (v) {
18000
18075
  obj.setLocalizableStringText(prop.name, v);
@@ -18006,7 +18081,7 @@ var CustomPropertiesCollection = /** @class */ (function () {
18006
18081
  var defaultValue = prop.defaultValue;
18007
18082
  var isArrayProp = prop.isArray || prop.type === "multiplevalues";
18008
18083
  if (typeof obj.createNewArray === "function") {
18009
- if (JsonObject.metaData.isDescendantOf(prop.className, "itemvalue")) {
18084
+ if (Serializer.isDescendantOf(prop.className, "itemvalue")) {
18010
18085
  obj.createNewArray(prop.name, function (item) {
18011
18086
  item.locOwner = obj;
18012
18087
  item.ownerPropertyName = prop.name;
@@ -18097,8 +18172,20 @@ var JsonMetadataClass = /** @class */ (function () {
18097
18172
  this.fillAllProperties();
18098
18173
  return this.allProperties;
18099
18174
  };
18175
+ JsonMetadataClass.prototype.getRequiredProperties = function () {
18176
+ if (!!this.requiredProperties)
18177
+ return this.requiredProperties;
18178
+ this.requiredProperties = [];
18179
+ var props = this.getAllProperties();
18180
+ for (var i = 0; i < props.length; i++) {
18181
+ if (props[i].isRequired)
18182
+ this.requiredProperties.push(props[i]);
18183
+ }
18184
+ return this.requiredProperties;
18185
+ };
18100
18186
  JsonMetadataClass.prototype.resetAllProperties = function () {
18101
18187
  this.allProperties = undefined;
18188
+ this.requiredProperties = undefined;
18102
18189
  this.hashProperties = undefined;
18103
18190
  var childClasses = Serializer.getChildrenClasses(this.name);
18104
18191
  for (var i = 0; i < childClasses.length; i++) {
@@ -18368,6 +18455,7 @@ var JsonMetadata = /** @class */ (function () {
18368
18455
  this.classes = {};
18369
18456
  this.alternativeNames = {};
18370
18457
  this.childrenClasses = {};
18458
+ this.dynamicPropsCache = {};
18371
18459
  }
18372
18460
  JsonMetadata.prototype.getObjPropertyValue = function (obj, name) {
18373
18461
  if (this.isObjWrapper(obj)) {
@@ -18480,14 +18568,18 @@ var JsonMetadata = /** @class */ (function () {
18480
18568
  if (dynamicType === void 0) { dynamicType = null; }
18481
18569
  if (!obj || !obj.getType || (!obj.getDynamicType && !dynamicType))
18482
18570
  return [];
18571
+ var objType = obj.getType();
18483
18572
  var dType = !!dynamicType ? dynamicType : obj.getDynamicType();
18484
18573
  if (!dType)
18485
18574
  return [];
18575
+ var cacheType = dType + "-" + objType;
18576
+ if (this.dynamicPropsCache[cacheType])
18577
+ return this.dynamicPropsCache[cacheType];
18486
18578
  var dynamicProps = this.getProperties(dType);
18487
18579
  if (!dynamicProps || dynamicProps.length == 0)
18488
18580
  return [];
18489
18581
  var hash = {};
18490
- var props = this.getProperties(obj.getType());
18582
+ var props = this.getProperties(objType);
18491
18583
  for (var i = 0; i < props.length; i++) {
18492
18584
  hash[props[i].name] = props[i];
18493
18585
  }
@@ -18498,6 +18590,7 @@ var JsonMetadata = /** @class */ (function () {
18498
18590
  res.push(dProp);
18499
18591
  }
18500
18592
  }
18593
+ this.dynamicPropsCache[cacheType] = res;
18501
18594
  return res;
18502
18595
  };
18503
18596
  JsonMetadata.prototype.hasOriginalProperty = function (obj, propName) {
@@ -18607,12 +18700,13 @@ var JsonMetadata = /** @class */ (function () {
18607
18700
  return result;
18608
18701
  };
18609
18702
  JsonMetadata.prototype.getRequiredProperties = function (name) {
18610
- var properties = this.getProperties(name);
18703
+ var metaClass = this.findClass(name);
18704
+ if (!metaClass)
18705
+ return [];
18706
+ var props = metaClass.getRequiredProperties();
18611
18707
  var res = [];
18612
- for (var i = 0; i < properties.length; i++) {
18613
- if (properties[i].isRequired) {
18614
- res.push(properties[i].name);
18615
- }
18708
+ for (var i = 0; i < props.length; i++) {
18709
+ res.push(props[i].name);
18616
18710
  }
18617
18711
  return res;
18618
18712
  };
@@ -18631,6 +18725,7 @@ var JsonMetadata = /** @class */ (function () {
18631
18725
  return null;
18632
18726
  var property = metaDataClass.createProperty(propertyInfo, true);
18633
18727
  if (property) {
18728
+ this.clearDynamicPropsCache(metaDataClass);
18634
18729
  metaDataClass.resetAllProperties();
18635
18730
  }
18636
18731
  return property;
@@ -18641,11 +18736,15 @@ var JsonMetadata = /** @class */ (function () {
18641
18736
  return false;
18642
18737
  var property = metaDataClass.find(propertyName);
18643
18738
  if (property) {
18739
+ this.clearDynamicPropsCache(metaDataClass);
18644
18740
  this.removePropertyFromClass(metaDataClass, property);
18645
18741
  metaDataClass.resetAllProperties();
18646
18742
  CustomPropertiesCollection.removeProperty(metaDataClass.name, propertyName);
18647
18743
  }
18648
18744
  };
18745
+ JsonMetadata.prototype.clearDynamicPropsCache = function (metaDataClass) {
18746
+ this.dynamicPropsCache = {};
18747
+ };
18649
18748
  JsonMetadata.prototype.removePropertyFromClass = function (metaDataClass, property) {
18650
18749
  var index = metaDataClass.properties.indexOf(property);
18651
18750
  if (index < 0)
@@ -18872,7 +18971,7 @@ var JsonUnknownPropertyError = /** @class */ (function (_super) {
18872
18971
  "' is unknown.") || this;
18873
18972
  _this.propertyName = propertyName;
18874
18973
  _this.className = className;
18875
- var properties = JsonObject.metaData.getProperties(className);
18974
+ var properties = Serializer.getProperties(className);
18876
18975
  if (properties) {
18877
18976
  _this.description = "The list of available properties are: ";
18878
18977
  for (var i = 0; i < properties.length; i++) {
@@ -18895,7 +18994,7 @@ var JsonMissingTypeErrorBase = /** @class */ (function (_super) {
18895
18994
  _this.type = type;
18896
18995
  _this.message = message;
18897
18996
  _this.description = "The following types are available: ";
18898
- var types = JsonObject.metaData.getChildrenClasses(baseClassName, true);
18997
+ var types = Serializer.getChildrenClasses(baseClassName, true);
18899
18998
  for (var i = 0; i < types.length; i++) {
18900
18999
  if (i > 0)
18901
19000
  _this.description += ", ";
@@ -19001,9 +19100,9 @@ var JsonObject = /** @class */ (function () {
19001
19100
  var needAddErrors = true;
19002
19101
  if (obj.getType) {
19003
19102
  objType = obj.getType();
19004
- properties = JsonObject.metaData.getProperties(objType);
19103
+ properties = Serializer.getProperties(objType);
19005
19104
  needAddErrors =
19006
- !!objType && !JsonObject.metaData.isDescendantOf(objType, "itemvalue");
19105
+ !!objType && !Serializer.isDescendantOf(objType, "itemvalue");
19007
19106
  }
19008
19107
  if (!properties)
19009
19108
  return;
@@ -19043,7 +19142,7 @@ var JsonObject = /** @class */ (function () {
19043
19142
  if (property != null && !property.className) {
19044
19143
  result[JsonObject.typePropertyName] = property.getObjType(obj.getType());
19045
19144
  }
19046
- this.propertiesToJson(obj, JsonObject.metaData.getProperties(obj.getType()), result, storeDefaults);
19145
+ this.propertiesToJson(obj, Serializer.getProperties(obj.getType()), result, storeDefaults);
19047
19146
  this.propertiesToJson(obj, this.getDynamicProperties(obj), result, storeDefaults);
19048
19147
  return result;
19049
19148
  };
@@ -19161,7 +19260,7 @@ var JsonObject = /** @class */ (function () {
19161
19260
  var result = { newObj: null, error: null };
19162
19261
  var className = this.getClassNameForNewObj(value, property);
19163
19262
  result.newObj = className
19164
- ? JsonObject.metaData.createClass(className, value)
19263
+ ? Serializer.createClass(className, value)
19165
19264
  : null;
19166
19265
  result.error = this.checkNewObjectOnErrors(result.newObj, value, property, className);
19167
19266
  return result;
@@ -19203,16 +19302,18 @@ var JsonObject = /** @class */ (function () {
19203
19302
  JsonObject.prototype.getRequiredError = function (obj, jsonValue) {
19204
19303
  if (!obj.getType || typeof obj.getData === "function")
19205
19304
  return null;
19206
- var className = obj.getType();
19207
- var requiredProperties = JsonObject.metaData.getRequiredProperties(className);
19208
- if (!Array.isArray(requiredProperties))
19305
+ var metaClass = Serializer.findClass(obj.getType());
19306
+ if (!metaClass)
19307
+ return null;
19308
+ var props = metaClass.getRequiredProperties();
19309
+ if (!Array.isArray(props))
19209
19310
  return null;
19210
- for (var i = 0; i < requiredProperties.length; i++) {
19211
- var prop = Serializer.findProperty(className, requiredProperties[i]);
19212
- if (!prop || !_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(prop.defaultValue))
19311
+ for (var i = 0; i < props.length; i++) {
19312
+ var prop = props[i];
19313
+ if (!_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(prop.defaultValue))
19213
19314
  continue;
19214
19315
  if (!jsonValue[prop.name]) {
19215
- return new JsonRequiredPropertyError(prop.name, className);
19316
+ return new JsonRequiredPropertyError(prop.name, obj.getType());
19216
19317
  }
19217
19318
  }
19218
19319
  return null;
@@ -19834,7 +19935,7 @@ var LocalizableString = /** @class */ (function () {
19834
19935
  }
19835
19936
  }
19836
19937
  if (!res)
19837
- res = "";
19938
+ res = this.defaultValue || "";
19838
19939
  return res;
19839
19940
  },
19840
19941
  enumerable: false,
@@ -20332,6 +20433,7 @@ var englishStrings = {
20332
20433
  requiredError: "Response required.",
20333
20434
  requiredErrorInPanel: "Response required: answer at least one question.",
20334
20435
  requiredInAllRowsError: "Response required: answer questions in all rows.",
20436
+ eachRowUniqueError: "Each row must have a unique value.",
20335
20437
  numericError: "The value should be numeric.",
20336
20438
  minError: "The value should not be less than {0}",
20337
20439
  maxError: "The value should not be greater than {0}",
@@ -20511,9 +20613,13 @@ var QuestionMatrixBaseModel = /** @class */ (function (_super) {
20511
20613
  /**
20512
20614
  * An array of matrix columns.
20513
20615
  *
20514
- * This array can contain primitive values or objects with the `text` (display value) and `value` (value to be saved in survey results) properties.
20616
+ * For a Single-Select Matrix, the `columns` array can contain configuration objects with the `text` (display value) and `value` (value to be saved in survey results) properties. Alternatively, the array can contain primitive values that will be used as both the display values and values to be saved in survey results.
20515
20617
  *
20516
- * [View Demo](https://surveyjs.io/form-library/examples/single-selection-matrix-table-question/ (linkStyle))
20618
+ * [View "Single-Select Matrix" Demo](https://surveyjs.io/form-library/examples/single-selection-matrix-table-question/ (linkStyle))
20619
+ *
20620
+ * For a Multi-Select Matrix or Dynamic Matrix, the `columns` array should contain configuration objects with properties described in the [`MatrixDropdownColumn`](https://surveyjs.io/form-library/documentation/api-reference/multi-select-matrix-column-values) API Reference section.
20621
+ *
20622
+ * [View "Multi-Select Matrix" Demo](https://surveyjs.io/form-library/examples/questiontype-matrixdropdown/ (linkStyle))
20517
20623
  */
20518
20624
  get: function () {
20519
20625
  return this.getPropertyValue("columns");
@@ -21979,7 +22085,7 @@ var PanelModelBase = /** @class */ (function (_super) {
21979
22085
  *
21980
22086
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
21981
22087
  *
21982
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
22088
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
21983
22089
  * @see visible
21984
22090
  * @see isVisible
21985
22091
  */
@@ -22285,7 +22391,7 @@ var PanelModelBase = /** @class */ (function (_super) {
22285
22391
  *
22286
22392
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
22287
22393
  *
22288
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
22394
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
22289
22395
  * @see isRequired
22290
22396
  */
22291
22397
  get: function () {
@@ -22721,7 +22827,7 @@ var PanelModelBase = /** @class */ (function (_super) {
22721
22827
  PanelModelBase.prototype.isLazyRenderInRow = function (rowIndex) {
22722
22828
  if (!this.survey || !this.survey.isLazyRendering)
22723
22829
  return false;
22724
- return (rowIndex >= _settings__WEBPACK_IMPORTED_MODULE_7__["settings"].lazyRender.firstBatchSize ||
22830
+ return (rowIndex >= this.survey.lazyRenderingFirstBatchSize ||
22725
22831
  !this.canRenderFirstRows());
22726
22832
  };
22727
22833
  PanelModelBase.prototype.canRenderFirstRows = function () {
@@ -22935,7 +23041,7 @@ var PanelModelBase = /** @class */ (function (_super) {
22935
23041
  *
22936
23042
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
22937
23043
  *
22938
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
23044
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
22939
23045
  * @see readOnly
22940
23046
  * @see isReadOnly
22941
23047
  */
@@ -22965,6 +23071,9 @@ var PanelModelBase = /** @class */ (function (_super) {
22965
23071
  else {
22966
23072
  this.elements.splice(index, 0, element);
22967
23073
  }
23074
+ if (this.wasRendered) {
23075
+ element.onFirstRendering();
23076
+ }
22968
23077
  return true;
22969
23078
  };
22970
23079
  PanelModelBase.prototype.insertElementAfter = function (element, after) {
@@ -24109,7 +24218,7 @@ var PopupSurveyModel = /** @class */ (function (_super) {
24109
24218
  else {
24110
24219
  _this.surveyValue = _this.createSurvey(jsonObj);
24111
24220
  }
24112
- _this.surveyValue.showTitle = false;
24221
+ //this.surveyValue.showTitle = false;
24113
24222
  if ("undefined" !== typeof document) {
24114
24223
  _this.windowElement = document.createElement("div");
24115
24224
  }
@@ -24193,6 +24302,13 @@ var PopupSurveyModel = /** @class */ (function (_super) {
24193
24302
  enumerable: false,
24194
24303
  configurable: true
24195
24304
  });
24305
+ Object.defineProperty(PopupSurveyModel.prototype, "isCollapsed", {
24306
+ get: function () {
24307
+ return !this.isExpanded;
24308
+ },
24309
+ enumerable: false,
24310
+ configurable: true
24311
+ });
24196
24312
  PopupSurveyModel.prototype.onExpandedChanged = function () {
24197
24313
  if (!!this.expandedChangedCallback) {
24198
24314
  this.expandedChangedCallback();
@@ -24214,11 +24330,22 @@ var PopupSurveyModel = /** @class */ (function (_super) {
24214
24330
  });
24215
24331
  Object.defineProperty(PopupSurveyModel.prototype, "locTitle", {
24216
24332
  get: function () {
24333
+ if (this.survey.locTitle.isEmpty)
24334
+ return null;
24217
24335
  return this.survey.locTitle;
24218
24336
  },
24219
24337
  enumerable: false,
24220
24338
  configurable: true
24221
24339
  });
24340
+ Object.defineProperty(PopupSurveyModel.prototype, "locDescription", {
24341
+ get: function () {
24342
+ if (this.survey.locTitle.isEmpty)
24343
+ return null;
24344
+ return this.survey.locDescription;
24345
+ },
24346
+ enumerable: false,
24347
+ configurable: true
24348
+ });
24222
24349
  /**
24223
24350
  * Expands the pop-up window.
24224
24351
  *
@@ -24276,7 +24403,24 @@ var PopupSurveyModel = /** @class */ (function (_super) {
24276
24403
  });
24277
24404
  Object.defineProperty(PopupSurveyModel.prototype, "cssRoot", {
24278
24405
  get: function () {
24279
- return this.getPropertyValue("cssRoot", "");
24406
+ var result = this.getPropertyValue("cssRoot", "");
24407
+ if (this.isCollapsed)
24408
+ result += " " + this.getPropertyValue("cssRootCollapsedMod", "");
24409
+ return result;
24410
+ },
24411
+ enumerable: false,
24412
+ configurable: true
24413
+ });
24414
+ Object.defineProperty(PopupSurveyModel.prototype, "cssRootCollapsedMod", {
24415
+ get: function () {
24416
+ return this.getPropertyValue("cssRootCollapsedMod");
24417
+ },
24418
+ enumerable: false,
24419
+ configurable: true
24420
+ });
24421
+ Object.defineProperty(PopupSurveyModel.prototype, "cssRootContent", {
24422
+ get: function () {
24423
+ return this.getPropertyValue("cssRootContent");
24280
24424
  },
24281
24425
  enumerable: false,
24282
24426
  configurable: true
@@ -24295,16 +24439,30 @@ var PopupSurveyModel = /** @class */ (function (_super) {
24295
24439
  enumerable: false,
24296
24440
  configurable: true
24297
24441
  });
24298
- Object.defineProperty(PopupSurveyModel.prototype, "cssHeaderTitle", {
24442
+ Object.defineProperty(PopupSurveyModel.prototype, "cssHeaderTitleCollapsed", {
24443
+ get: function () {
24444
+ return this.getPropertyValue("cssHeaderTitleCollapsed", "");
24445
+ },
24446
+ enumerable: false,
24447
+ configurable: true
24448
+ });
24449
+ Object.defineProperty(PopupSurveyModel.prototype, "cssHeaderButtonsContainer", {
24450
+ get: function () {
24451
+ return this.getPropertyValue("cssHeaderButtonsContainer", "");
24452
+ },
24453
+ enumerable: false,
24454
+ configurable: true
24455
+ });
24456
+ Object.defineProperty(PopupSurveyModel.prototype, "cssHeaderCollapseButton", {
24299
24457
  get: function () {
24300
- return this.getPropertyValue("cssHeaderTitle", "");
24458
+ return this.getPropertyValue("cssHeaderCollapseButton", "");
24301
24459
  },
24302
24460
  enumerable: false,
24303
24461
  configurable: true
24304
24462
  });
24305
- Object.defineProperty(PopupSurveyModel.prototype, "cssHeaderButton", {
24463
+ Object.defineProperty(PopupSurveyModel.prototype, "cssHeaderCloseButton", {
24306
24464
  get: function () {
24307
- return this.getPropertyValue("cssHeaderButton", "");
24465
+ return this.getPropertyValue("cssHeaderCloseButton", "");
24308
24466
  },
24309
24467
  enumerable: false,
24310
24468
  configurable: true
@@ -24324,13 +24482,17 @@ var PopupSurveyModel = /** @class */ (function (_super) {
24324
24482
  return;
24325
24483
  var cssWindow = this.css.window;
24326
24484
  this.setPropertyValue("cssRoot", cssWindow.root);
24485
+ this.setPropertyValue("cssRootCollapsedMod", cssWindow.rootCollapsedMod);
24486
+ this.setPropertyValue("cssRootContent", cssWindow.rootContent);
24327
24487
  this.setPropertyValue("cssBody", cssWindow.body);
24328
24488
  var cssHeader = cssWindow.header;
24329
24489
  if (!cssHeader)
24330
24490
  return;
24331
24491
  this.setPropertyValue("cssHeaderRoot", cssHeader.root);
24332
- this.setPropertyValue("cssHeaderTitle", cssHeader.title);
24333
- this.setPropertyValue("cssHeaderButton", cssHeader.button);
24492
+ this.setPropertyValue("cssHeaderTitleCollapsed", cssHeader.titleCollapsed);
24493
+ this.setPropertyValue("cssHeaderButtonsContainer", cssHeader.buttonsContainer);
24494
+ this.setPropertyValue("cssHeaderCollapseButton", cssHeader.collapseButton);
24495
+ this.setPropertyValue("cssHeaderCloseButton", cssHeader.closeButton);
24334
24496
  this.updateCssButton();
24335
24497
  };
24336
24498
  PopupSurveyModel.prototype.updateCssButton = function () {
@@ -25436,7 +25598,7 @@ var Question = /** @class */ (function (_super) {
25436
25598
  *
25437
25599
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
25438
25600
  *
25439
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
25601
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
25440
25602
  * @see visible
25441
25603
  * @see isVisible
25442
25604
  */
@@ -26204,6 +26366,9 @@ var Question = /** @class */ (function (_super) {
26204
26366
  .append(cssClasses.headerBottom, this.hasTitleOnBottom)
26205
26367
  .toString();
26206
26368
  };
26369
+ Question.prototype.supportContainerQueries = function () {
26370
+ return false;
26371
+ };
26207
26372
  Object.defineProperty(Question.prototype, "cssContent", {
26208
26373
  get: function () {
26209
26374
  this.ensureElementCss();
@@ -26218,6 +26383,7 @@ var Question = /** @class */ (function (_super) {
26218
26383
  Question.prototype.getCssContent = function (cssClasses) {
26219
26384
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_10__["CssClassBuilder"]()
26220
26385
  .append(cssClasses.content)
26386
+ .append(cssClasses.contentSupportContainerQueries, this.supportContainerQueries())
26221
26387
  .append(cssClasses.contentLeft, this.hasTitleOnLeft)
26222
26388
  .toString();
26223
26389
  };
@@ -26497,7 +26663,7 @@ var Question = /** @class */ (function (_super) {
26497
26663
  *
26498
26664
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
26499
26665
  *
26500
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
26666
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
26501
26667
  * @see isRequired
26502
26668
  */
26503
26669
  get: function () {
@@ -26653,7 +26819,7 @@ var Question = /** @class */ (function (_super) {
26653
26819
  *
26654
26820
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
26655
26821
  *
26656
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
26822
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
26657
26823
  * @see readOnly
26658
26824
  * @see isReadOnly
26659
26825
  */
@@ -29479,7 +29645,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29479
29645
  });
29480
29646
  Object.defineProperty(QuestionSelectBase.prototype, "otherErrorText", {
29481
29647
  /**
29482
- * Get or sets an error message displayed when users select the "Other" choice item but leave the comment area empty.
29648
+ * Gets or sets an error message displayed when users select the "Other" choice item but leave the comment area empty.
29483
29649
  * @see showOtherItem
29484
29650
  */
29485
29651
  get: function () {
@@ -30008,7 +30174,6 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30008
30174
  if (this.isValueEmpty(this.cachedValueForUrlRequests)) {
30009
30175
  this.cachedValueForUrlRequests = this.value;
30010
30176
  }
30011
- this.isFirstLoadChoicesFromUrl = false;
30012
30177
  var cachedValues = this.createCachedValueForUrlRequests(this.cachedValueForUrlRequests, checkCachedValuesOnExisting);
30013
30178
  if (array && (array.length > 0 || this.choicesByUrl.allowEmptyResponse)) {
30014
30179
  newChoices = new Array();
@@ -30019,6 +30184,20 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30019
30184
  newChoices[i].locOwner = this;
30020
30185
  }
30021
30186
  }
30187
+ this.setChoicesFromUrl(newChoices, errors, cachedValues);
30188
+ };
30189
+ QuestionSelectBase.prototype.canAvoidSettChoicesFromUrl = function (newChoices) {
30190
+ if (this.isFirstLoadChoicesFromUrl)
30191
+ return false;
30192
+ var chocesAreEmpty = !newChoices || Array.isArray(newChoices) && newChoices.length === 0;
30193
+ if (chocesAreEmpty && !this.isEmpty())
30194
+ return false;
30195
+ return _helpers__WEBPACK_IMPORTED_MODULE_8__["Helpers"].isTwoValueEquals(this.choicesFromUrl, newChoices);
30196
+ };
30197
+ QuestionSelectBase.prototype.setChoicesFromUrl = function (newChoices, errors, cachedValues) {
30198
+ if (this.canAvoidSettChoicesFromUrl(newChoices))
30199
+ return;
30200
+ this.isFirstLoadChoicesFromUrl = false;
30022
30201
  this.choicesFromUrl = newChoices;
30023
30202
  this.filterItems();
30024
30203
  this.onVisibleChoicesChanged();
@@ -30532,7 +30711,7 @@ var QuestionCheckboxBase = /** @class */ (function (_super) {
30532
30711
  }
30533
30712
  Object.defineProperty(QuestionCheckboxBase.prototype, "colCount", {
30534
30713
  /**
30535
- * Get or sets the number of columns used to arrange choice items.
30714
+ * Gets or sets the number of columns used to arrange choice items.
30536
30715
  *
30537
30716
  * Set this property to 0 if you want to display all items in one line. The default value depends on the available width.
30538
30717
  * @see separateSpecialChoices
@@ -31940,9 +32119,12 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
31940
32119
  var res = [];
31941
32120
  var visItems = this.visibleChoices;
31942
32121
  for (var i = 0; i < visItems.length; i++) {
32122
+ var item = visItems[i];
32123
+ if (item === this.selectAllItem)
32124
+ continue;
31943
32125
  var val = visItems[i].value;
31944
32126
  if (_helpers__WEBPACK_IMPORTED_MODULE_3__["Helpers"].isTwoValueEquals(val, this.invisibleOldValues[val])) {
31945
- if (!this.isItemSelected(visItems[i])) {
32127
+ if (!this.isItemSelected(item)) {
31946
32128
  res.push(val);
31947
32129
  }
31948
32130
  delete this.invisibleOldValues[val];
@@ -32451,6 +32633,13 @@ var ComponentQuestionJSON = /** @class */ (function () {
32451
32633
  return question.getDisplayValue(keyAsText, value);
32452
32634
  return this.json.getDisplayValue(question);
32453
32635
  };
32636
+ Object.defineProperty(ComponentQuestionJSON.prototype, "defaultQuestionTitle", {
32637
+ get: function () {
32638
+ return this.json.defaultQuestionTitle;
32639
+ },
32640
+ enumerable: false,
32641
+ configurable: true
32642
+ });
32454
32643
  ComponentQuestionJSON.prototype.setValueToQuestion = function (val) {
32455
32644
  var converter = this.json.valueToQuestion || this.json.setValue;
32456
32645
  return !!converter ? converter(val) : val;
@@ -32558,6 +32747,8 @@ var QuestionCustomModelBase = /** @class */ (function (_super) {
32558
32747
  _this.customQuestion = customQuestion;
32559
32748
  _jsonobject__WEBPACK_IMPORTED_MODULE_1__["CustomPropertiesCollection"].createProperties(_this);
32560
32749
  _survey_element__WEBPACK_IMPORTED_MODULE_2__["SurveyElement"].CreateDisabledDesignElements = true;
32750
+ _this.locQuestionTitle = _this.createLocalizableString("questionTitle", _this);
32751
+ _this.locQuestionTitle.setJson(_this.customQuestion.defaultQuestionTitle);
32561
32752
  _this.createWrapper();
32562
32753
  _survey_element__WEBPACK_IMPORTED_MODULE_2__["SurveyElement"].CreateDisabledDesignElements = false;
32563
32754
  if (!!_this.customQuestion) {
@@ -32580,6 +32771,12 @@ var QuestionCustomModelBase = /** @class */ (function (_super) {
32580
32771
  this.getElement().localeChanged();
32581
32772
  }
32582
32773
  };
32774
+ QuestionCustomModelBase.prototype.getDefaultTitle = function () {
32775
+ if (!this.locQuestionTitle.isEmpty) {
32776
+ return this.getProcessedText(this.locQuestionTitle.textOrHtml);
32777
+ }
32778
+ return _super.prototype.getDefaultTitle.call(this);
32779
+ };
32583
32780
  QuestionCustomModelBase.prototype.addUsedLocales = function (locales) {
32584
32781
  _super.prototype.addUsedLocales.call(this, locales);
32585
32782
  if (!!this.getElement()) {
@@ -32815,8 +33012,9 @@ var QuestionCustomModel = /** @class */ (function (_super) {
32815
33012
  return this.contentQuestion;
32816
33013
  };
32817
33014
  QuestionCustomModel.prototype.getDefaultTitle = function () {
32818
- if (this.hasJSONTitle && this.contentQuestion)
32819
- return this.contentQuestion.title;
33015
+ if (this.hasJSONTitle && this.contentQuestion) {
33016
+ return this.getProcessedText(this.contentQuestion.title);
33017
+ }
32820
33018
  return _super.prototype.getDefaultTitle.call(this);
32821
33019
  };
32822
33020
  QuestionCustomModel.prototype.setValue = function (name, newValue, locNotification, allowNotifyValueChanged) {
@@ -36789,8 +36987,8 @@ var MatrixRowModel = /** @class */ (function (_super) {
36789
36987
  __extends(MatrixRowModel, _super);
36790
36988
  function MatrixRowModel(item, fullName, data, value) {
36791
36989
  var _this = _super.call(this) || this;
36792
- _this.fullName = fullName;
36793
36990
  _this.item = item;
36991
+ _this.fullName = fullName;
36794
36992
  _this.data = data;
36795
36993
  _this.value = value;
36796
36994
  _this.cellClick = function (column) {
@@ -36827,9 +37025,25 @@ var MatrixRowModel = /** @class */ (function (_super) {
36827
37025
  get: function () {
36828
37026
  return this.getPropertyValue("value");
36829
37027
  },
36830
- set: function (newValue) {
36831
- newValue = this.data.getCorrectedRowValue(newValue);
36832
- this.setPropertyValue("value", newValue);
37028
+ set: function (val) {
37029
+ if (!this.isReadOnly) {
37030
+ this.setValueDirectly(this.data.getCorrectedRowValue(val));
37031
+ }
37032
+ },
37033
+ enumerable: false,
37034
+ configurable: true
37035
+ });
37036
+ MatrixRowModel.prototype.setValueDirectly = function (val) {
37037
+ this.setPropertyValue("value", val);
37038
+ };
37039
+ Object.defineProperty(MatrixRowModel.prototype, "isReadOnly", {
37040
+ get: function () { return !this.item.enabled || this.data.isInputReadOnly; },
37041
+ enumerable: false,
37042
+ configurable: true
37043
+ });
37044
+ Object.defineProperty(MatrixRowModel.prototype, "rowTextClasses", {
37045
+ get: function () {
37046
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_11__["CssClassBuilder"]().append(this.data.cssClasses.rowTextCell).toString();
36833
37047
  },
36834
37048
  enumerable: false,
36835
37049
  configurable: true
@@ -36837,9 +37051,9 @@ var MatrixRowModel = /** @class */ (function (_super) {
36837
37051
  Object.defineProperty(MatrixRowModel.prototype, "rowClasses", {
36838
37052
  get: function () {
36839
37053
  var cssClasses = this.data.cssClasses;
36840
- var hasError = !!this.data.getErrorByType("requiredinallrowserror");
36841
37054
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_11__["CssClassBuilder"]().append(cssClasses.row)
36842
- .append(cssClasses.rowError, hasError && this.isValueEmpty(this.value))
37055
+ .append(cssClasses.rowError, this.data.hasErrorInRow(this))
37056
+ .append(cssClasses.rowDisabled, this.isReadOnly)
36843
37057
  .toString();
36844
37058
  },
36845
37059
  enumerable: false,
@@ -37072,6 +37286,8 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37072
37286
  /**
37073
37287
  * Specifies whether each row requires an answer. If a respondent skips a row, the question displays a validation error.
37074
37288
  * @see isRequired
37289
+ * @see eachRowUnique
37290
+ * @see validators
37075
37291
  */
37076
37292
  get: function () {
37077
37293
  return this.getPropertyValue("isAllRowRequired");
@@ -37082,6 +37298,21 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37082
37298
  enumerable: false,
37083
37299
  configurable: true
37084
37300
  });
37301
+ Object.defineProperty(QuestionMatrixModel.prototype, "eachRowUnique", {
37302
+ /**
37303
+ * Specifies whether answers in all rows should be unique. If any answers duplicate, the question displays a validation error.
37304
+ * @see isAllRowRequired
37305
+ * @see validators
37306
+ */
37307
+ get: function () {
37308
+ return this.getPropertyValue("eachRowUnique");
37309
+ },
37310
+ set: function (val) {
37311
+ this.setPropertyValue("eachRowUnique", val);
37312
+ },
37313
+ enumerable: false,
37314
+ configurable: true
37315
+ });
37085
37316
  Object.defineProperty(QuestionMatrixModel.prototype, "hasRows", {
37086
37317
  get: function () {
37087
37318
  return this.rows.length > 0;
@@ -37182,6 +37413,10 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37182
37413
  }
37183
37414
  return res;
37184
37415
  };
37416
+ QuestionMatrixModel.prototype.runItemsCondition = function (values, properties) {
37417
+ _itemvalue__WEBPACK_IMPORTED_MODULE_1__["ItemValue"].runEnabledConditionsForItems(this.rows, undefined, values, properties);
37418
+ return _super.prototype.runItemsCondition.call(this, values, properties);
37419
+ };
37185
37420
  QuestionMatrixModel.prototype.getVisibleRows = function () {
37186
37421
  var result = new Array();
37187
37422
  var val = this.value;
@@ -37266,15 +37501,21 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37266
37501
  };
37267
37502
  QuestionMatrixModel.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
37268
37503
  _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
37269
- if ((!isOnValueChanged || this.hasCssError()) &&
37270
- this.hasErrorInRows()) {
37271
- errors.push(new _error__WEBPACK_IMPORTED_MODULE_6__["RequiredInAllRowsError"](null, this));
37504
+ this.errorsInRow = undefined;
37505
+ if (!isOnValueChanged || this.hasCssError()) {
37506
+ if (this.hasErrorAllRowsRequired()) {
37507
+ errors.push(new _error__WEBPACK_IMPORTED_MODULE_6__["RequiredInAllRowsError"](null, this));
37508
+ }
37509
+ if (this.hasErrorEachRowUnique()) {
37510
+ errors.push(new _error__WEBPACK_IMPORTED_MODULE_6__["EachRowUniqueError"](null, this));
37511
+ }
37272
37512
  }
37273
37513
  };
37274
- QuestionMatrixModel.prototype.hasErrorInRows = function () {
37275
- if (!this.isAllRowRequired)
37276
- return false;
37277
- return !this.hasValuesInAllRows();
37514
+ QuestionMatrixModel.prototype.hasErrorAllRowsRequired = function () {
37515
+ return this.isAllRowRequired && !this.hasValuesInAllRows();
37516
+ };
37517
+ QuestionMatrixModel.prototype.hasErrorEachRowUnique = function () {
37518
+ return this.eachRowUnique && this.hasNonUniqueValueInRow();
37278
37519
  };
37279
37520
  QuestionMatrixModel.prototype.hasValuesInAllRows = function () {
37280
37521
  var rows = this.generatedVisibleRows;
@@ -37282,11 +37523,43 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37282
37523
  rows = this.visibleRows;
37283
37524
  if (!rows)
37284
37525
  return true;
37526
+ var res = true;
37285
37527
  for (var i = 0; i < rows.length; i++) {
37286
- if (this.isValueEmpty(rows[i].value))
37287
- return false;
37528
+ var row = rows[i];
37529
+ var hasValue = !this.isValueEmpty(row.value);
37530
+ if (!hasValue) {
37531
+ this.addErrorIntoRow(row);
37532
+ }
37533
+ res = res && hasValue;
37288
37534
  }
37289
- return true;
37535
+ return res;
37536
+ };
37537
+ QuestionMatrixModel.prototype.hasNonUniqueValueInRow = function () {
37538
+ var rows = this.generatedVisibleRows;
37539
+ if (!rows)
37540
+ rows = this.visibleRows;
37541
+ if (!rows)
37542
+ return false;
37543
+ var hash = {};
37544
+ var res = true;
37545
+ for (var i = 0; i < rows.length; i++) {
37546
+ var val = rows[i].value;
37547
+ var isEmpty = this.isValueEmpty(val);
37548
+ var isUnique = isEmpty || hash[val] !== true;
37549
+ if (!isUnique) {
37550
+ this.addErrorIntoRow(rows[i]);
37551
+ }
37552
+ res = res && isUnique;
37553
+ if (!isEmpty) {
37554
+ hash[val] = true;
37555
+ }
37556
+ }
37557
+ return !res;
37558
+ };
37559
+ QuestionMatrixModel.prototype.addErrorIntoRow = function (row) {
37560
+ if (!this.errorsInRow)
37561
+ this.errorsInRow = {};
37562
+ this.errorsInRow[row.name] = true;
37290
37563
  };
37291
37564
  QuestionMatrixModel.prototype.getIsAnswered = function () {
37292
37565
  return _super.prototype.getIsAnswered.call(this) && this.hasValuesInAllRows();
@@ -37307,7 +37580,7 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37307
37580
  if (!val)
37308
37581
  val = {};
37309
37582
  if (this.rows.length == 0) {
37310
- this.generatedVisibleRows[0].value = val;
37583
+ this.generatedVisibleRows[0].setValueDirectly(val);
37311
37584
  }
37312
37585
  else {
37313
37586
  for (var i = 0; i < this.generatedVisibleRows.length; i++) {
@@ -37315,7 +37588,7 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37315
37588
  var rowVal = val[row.name];
37316
37589
  if (this.isValueEmpty(rowVal))
37317
37590
  rowVal = null;
37318
- this.generatedVisibleRows[i].value = rowVal;
37591
+ this.generatedVisibleRows[i].setValueDirectly(rowVal);
37319
37592
  }
37320
37593
  }
37321
37594
  this.updateIsAnswered();
@@ -37436,6 +37709,9 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37436
37709
  }
37437
37710
  return value;
37438
37711
  };
37712
+ QuestionMatrixModel.prototype.hasErrorInRow = function (row) {
37713
+ return !!this.errorsInRow && !!this.errorsInRow[row.name];
37714
+ };
37439
37715
  QuestionMatrixModel.prototype.getSearchableItemValueKeys = function (keys) {
37440
37716
  keys.push("columns");
37441
37717
  keys.push("rows");
@@ -37483,6 +37759,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_3__["Serializer"].addClass("matrix", [
37483
37759
  choices: ["initial", "random"],
37484
37760
  },
37485
37761
  "isAllRowRequired:boolean",
37762
+ { name: "eachRowUnique:boolean", category: "validation" },
37486
37763
  "hideIfRowsEmpty:boolean",
37487
37764
  { name: "cellComponent", visible: false, default: "survey-matrix-cell" }
37488
37765
  ], function () {
@@ -39020,14 +39297,15 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
39020
39297
  *
39021
39298
  * Possible values:
39022
39299
  *
39023
- * - `"dropdown"`
39024
- * - `"checkbox"`
39025
- * - `"radiogroup"`
39026
- * - `"text"`
39027
- * - `"comment"`
39028
- * - `"boolean"`
39029
- * - `"expression"`
39030
- * - `"rating"`
39300
+ * - [`"dropdown"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model)
39301
+ * - [`"checkbox"`](https://surveyjs.io/form-library/documentation/api-reference/checkbox-question-model)
39302
+ * - [`"radiogroup"`](https://surveyjs.io/form-library/documentation/api-reference/radio-button-question-model)
39303
+ * - [`"tagbox"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model)
39304
+ * - [`"text"`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model)
39305
+ * - [`"comment"`](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model)
39306
+ * - [`"boolean"`](https://surveyjs.io/form-library/documentation/api-reference/boolean-question-model)
39307
+ * - [`"expression"`](https://surveyjs.io/form-library/documentation/api-reference/expression-model)
39308
+ * - [`"rating"`](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model)
39031
39309
  *
39032
39310
  * Default value: `"dropdown"` (inherited from [`settings.matrix.defaultCellType`](https://surveyjs.io/form-library/documentation/settings#matrixDefaultCellType))
39033
39311
  */
@@ -40460,6 +40738,11 @@ var matrixDropdownColumnTypes = {
40460
40738
  expression: {},
40461
40739
  rating: {},
40462
40740
  };
40741
+ /**
40742
+ * An auxiliary class that describes a column in a [Multi-Select Matrix](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list) or [Dynamic Matrix](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model).
40743
+ *
40744
+ * You can get an object of this class from the [`columns`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#columns) array or by calling the [`getColumnByName()`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#getColumnByName) method on a matrix instance.
40745
+ */
40463
40746
  var MatrixDropdownColumn = /** @class */ (function (_super) {
40464
40747
  __extends(MatrixDropdownColumn, _super);
40465
40748
  function MatrixDropdownColumn(name, title) {
@@ -40553,6 +40836,26 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40553
40836
  return "matrixdropdowncolumn";
40554
40837
  };
40555
40838
  Object.defineProperty(MatrixDropdownColumn.prototype, "cellType", {
40839
+ /**
40840
+ * Specifies the type of column cells.
40841
+ *
40842
+ * Possible values:
40843
+ *
40844
+ * - [`"dropdown"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model)
40845
+ * - [`"checkbox"`](https://surveyjs.io/form-library/documentation/api-reference/checkbox-question-model)
40846
+ * - [`"radiogroup"`](https://surveyjs.io/form-library/documentation/api-reference/radio-button-question-model)
40847
+ * - [`"tagbox"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model)
40848
+ * - [`"text"`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model)
40849
+ * - [`"comment"`](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model)
40850
+ * - [`"boolean"`](https://surveyjs.io/form-library/documentation/api-reference/boolean-question-model)
40851
+ * - [`"expression"`](https://surveyjs.io/form-library/documentation/api-reference/expression-model)
40852
+ * - [`"rating"`](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model)
40853
+ * - `"default"` (default) - Inherits the input type from the [`cellType`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#cellType) property specified for the parent matrix.
40854
+ *
40855
+ * The input types are based upon standalone question types. Depending on the selected input type, the matrix column can have additional configuration properties inherited from the corresponding question type. For instance, Dropdown, Checkboxes, Radio Button Group, and Tag Box columns can specify the [`choices`](https://surveyjs.io/form-library/documentation/api-reference/radio-button-question-model#choices) array, similar to the question types upon which they are based. Refer to the API Reference of these question types for a full list of available properties.
40856
+ *
40857
+ * [View Demo](https://surveyjs.io/form-library/examples/aggregate-data-within-form/ (linkStyle))
40858
+ */
40556
40859
  get: function () {
40557
40860
  return this.getPropertyValue("cellType");
40558
40861
  },
@@ -40599,6 +40902,13 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40599
40902
  configurable: true
40600
40903
  });
40601
40904
  Object.defineProperty(MatrixDropdownColumn.prototype, "visible", {
40905
+ /**
40906
+ * Gets or sets column visibility.
40907
+ *
40908
+ * If you want to display or hide a column based on a condition, specify the [`visibleIf`](#visibleIf) property.
40909
+ * @see isRequired
40910
+ * @see readOnly
40911
+ */
40602
40912
  get: function () { return this.getPropertyValue("visible"); },
40603
40913
  set: function (val) {
40604
40914
  this.setPropertyValue("visible", val);
@@ -40660,6 +40970,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40660
40970
  configurable: true
40661
40971
  });
40662
40972
  Object.defineProperty(MatrixDropdownColumn.prototype, "name", {
40973
+ /**
40974
+ * A column ID that is not visible to respondents.
40975
+ *
40976
+ * > Column IDs must be unique.
40977
+ * @see title
40978
+ */
40663
40979
  get: function () {
40664
40980
  return this.templateQuestion.name;
40665
40981
  },
@@ -40670,6 +40986,9 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40670
40986
  configurable: true
40671
40987
  });
40672
40988
  Object.defineProperty(MatrixDropdownColumn.prototype, "title", {
40989
+ /**
40990
+ * A user-friendly column caption to display. If `title` is undefined, [`name`](#name) is displayed instead.
40991
+ */
40673
40992
  get: function () {
40674
40993
  return this.templateQuestion.title;
40675
40994
  },
@@ -40694,6 +41013,14 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40694
41013
  configurable: true
40695
41014
  });
40696
41015
  Object.defineProperty(MatrixDropdownColumn.prototype, "isRequired", {
41016
+ /**
41017
+ * Marks the column as required. If a respondent skips any cell in a required column, the matrix displays a validation error.
41018
+ *
41019
+ * If you want to mark the column as required based on a condition, specify the [`requiredIf`](#requiredIf) property.
41020
+ * @see requiredErrorText
41021
+ * @see visible
41022
+ * @see readOnly
41023
+ */
40697
41024
  get: function () {
40698
41025
  return this.templateQuestion.isRequired;
40699
41026
  },
@@ -40724,6 +41051,10 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40724
41051
  configurable: true
40725
41052
  });
40726
41053
  Object.defineProperty(MatrixDropdownColumn.prototype, "requiredErrorText", {
41054
+ /**
41055
+ * Specifies a custom error message for a required column.
41056
+ * @see isRequired
41057
+ */
40727
41058
  get: function () {
40728
41059
  return this.templateQuestion.requiredErrorText;
40729
41060
  },
@@ -40741,6 +41072,13 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40741
41072
  configurable: true
40742
41073
  });
40743
41074
  Object.defineProperty(MatrixDropdownColumn.prototype, "readOnly", {
41075
+ /**
41076
+ * Makes the column read-only.
41077
+ *
41078
+ * If you want to switch the column to the read-only state based on a condition, specify the [`enableIf`](#enableIf) property.
41079
+ * @see visible
41080
+ * @see isRequired
41081
+ */
40744
41082
  get: function () {
40745
41083
  return this.templateQuestion.readOnly;
40746
41084
  },
@@ -40761,6 +41099,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40761
41099
  configurable: true
40762
41100
  });
40763
41101
  Object.defineProperty(MatrixDropdownColumn.prototype, "visibleIf", {
41102
+ /**
41103
+ * A Boolean expression. If it evaluates to `false`, this column becomes hidden.
41104
+ *
41105
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
41106
+ * @see visible
41107
+ */
40764
41108
  get: function () {
40765
41109
  return this.templateQuestion.visibleIf;
40766
41110
  },
@@ -40771,6 +41115,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40771
41115
  configurable: true
40772
41116
  });
40773
41117
  Object.defineProperty(MatrixDropdownColumn.prototype, "enableIf", {
41118
+ /**
41119
+ * A Boolean expression. If it evaluates to `false`, this column becomes read-only.
41120
+ *
41121
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
41122
+ * @see readOnly
41123
+ */
40774
41124
  get: function () {
40775
41125
  return this.templateQuestion.enableIf;
40776
41126
  },
@@ -40781,6 +41131,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40781
41131
  configurable: true
40782
41132
  });
40783
41133
  Object.defineProperty(MatrixDropdownColumn.prototype, "requiredIf", {
41134
+ /**
41135
+ * A Boolean expression. If it evaluates to `true`, this column becomes required.
41136
+ *
41137
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
41138
+ * @see isRequired
41139
+ */
40784
41140
  get: function () {
40785
41141
  return this.templateQuestion.requiredIf;
40786
41142
  },
@@ -40791,6 +41147,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40791
41147
  configurable: true
40792
41148
  });
40793
41149
  Object.defineProperty(MatrixDropdownColumn.prototype, "resetValueIf", {
41150
+ /**
41151
+ * A Boolean expression. If it evaluates to `true`, all cells in this column are set to a value calculated using the [`defaultValueExpression`](#defaultValueExpression).
41152
+ *
41153
+ * [Expressions](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions (linkStyle))
41154
+ * @see setValueIf
41155
+ */
40794
41156
  get: function () {
40795
41157
  return this.templateQuestion.resetValueIf;
40796
41158
  },
@@ -40801,6 +41163,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40801
41163
  configurable: true
40802
41164
  });
40803
41165
  Object.defineProperty(MatrixDropdownColumn.prototype, "defaultValueExpression", {
41166
+ /**
41167
+ * An expression used to calculate the column's default value. This expression applies to all cells of this column until the cell value is specified by an end user or programmatically.
41168
+ *
41169
+ * [Expressions](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions (linkStyle))
41170
+ * @see setValueExpression
41171
+ */
40804
41172
  get: function () {
40805
41173
  return this.templateQuestion.defaultValueExpression;
40806
41174
  },
@@ -40811,6 +41179,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40811
41179
  configurable: true
40812
41180
  });
40813
41181
  Object.defineProperty(MatrixDropdownColumn.prototype, "setValueIf", {
41182
+ /**
41183
+ * A Boolean expression. If it evaluates to `true`, all cells in this column are set to a value calculated using the [`setValueExpression`](#setValueExpression).
41184
+ *
41185
+ * [Expressions](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions (linkStyle))
41186
+ * @see resetValueIf
41187
+ */
40814
41188
  get: function () {
40815
41189
  return this.templateQuestion.setValueIf;
40816
41190
  },
@@ -40821,6 +41195,15 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40821
41195
  configurable: true
40822
41196
  });
40823
41197
  Object.defineProperty(MatrixDropdownColumn.prototype, "setValueExpession", {
41198
+ /**
41199
+ * An expression used to calculate a value for all column cells.
41200
+ *
41201
+ * You can use `setValueExpression` as a standalone property or in conjunction with the [`setValueIf`](#setValueIf) expression, in which case the calculated cell value applies only when `setValueIf` evaluates to `true`.
41202
+ *
41203
+ * [Expressions](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions (linkStyle))
41204
+ * @see defaultValueExpression
41205
+ * @see resetValueIf
41206
+ */
40824
41207
  get: function () {
40825
41208
  return this.templateQuestion.setValueExpession;
40826
41209
  },
@@ -40831,6 +41214,11 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40831
41214
  configurable: true
40832
41215
  });
40833
41216
  Object.defineProperty(MatrixDropdownColumn.prototype, "isUnique", {
41217
+ /**
41218
+ * Specifies whether a respondent is required to provide a unique response for each question within this column.
41219
+ *
41220
+ * Default value: `false`
41221
+ */
40834
41222
  get: function () {
40835
41223
  return this.getPropertyValue("isUnique");
40836
41224
  },
@@ -40841,6 +41229,9 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40841
41229
  configurable: true
40842
41230
  });
40843
41231
  Object.defineProperty(MatrixDropdownColumn.prototype, "showInMultipleColumns", {
41232
+ /**
41233
+ * Specifies whether to create an individual column for each choice option. Applies only to columns of `"checkbox"` or `"radiogroup"` [`cellType`](#cellType).
41234
+ */
40844
41235
  get: function () {
40845
41236
  return this.getPropertyValue("showInMultipleColumns");
40846
41237
  },
@@ -40865,6 +41256,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40865
41256
  configurable: true
40866
41257
  });
40867
41258
  Object.defineProperty(MatrixDropdownColumn.prototype, "validators", {
41259
+ /**
41260
+ * Column validators.
41261
+ *
41262
+ * [Data Validation](https://surveyjs.io/form-library/documentation/data-validation (linkStyle))
41263
+ * @see isRequired
41264
+ */
40868
41265
  get: function () {
40869
41266
  return this.templateQuestion.validators;
40870
41267
  },
@@ -40875,6 +41272,22 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40875
41272
  configurable: true
40876
41273
  });
40877
41274
  Object.defineProperty(MatrixDropdownColumn.prototype, "totalType", {
41275
+ /**
41276
+ * An aggregation method used to calculate the column total.
41277
+ *
41278
+ * Possible values:
41279
+ *
41280
+ * - `"none"` (default) - Disables total calculations.
41281
+ * - `"sum"`
41282
+ * - `"count"`
41283
+ * - `"min"`
41284
+ * - `"max"`
41285
+ * - `"avg"`
41286
+ *
41287
+ * [View Demo](https://surveyjs.io/form-library/examples/aggregate-data-within-form/ (linkStyle))
41288
+ * @see totalFormat
41289
+ * @see totalDisplayStyle
41290
+ */
40878
41291
  get: function () {
40879
41292
  return this.getPropertyValue("totalType");
40880
41293
  },
@@ -40885,6 +41298,11 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40885
41298
  configurable: true
40886
41299
  });
40887
41300
  Object.defineProperty(MatrixDropdownColumn.prototype, "totalExpression", {
41301
+ /**
41302
+ * An expression used to calculate total values. Overrides the [`totalType`](#totalType) property.
41303
+ *
41304
+ * [Expressions](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions (linkStyle))
41305
+ */
40888
41306
  get: function () {
40889
41307
  return this.getPropertyValue("totalExpression");
40890
41308
  },
@@ -40902,6 +41320,13 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40902
41320
  configurable: true
40903
41321
  });
40904
41322
  Object.defineProperty(MatrixDropdownColumn.prototype, "totalFormat", {
41323
+ /**
41324
+ * A string pattern used to display column totals. To reference a total value within this pattern, use the `{0}` placeholder.
41325
+ *
41326
+ * [View Demo](https://surveyjs.io/form-library/examples/aggregate-data-within-form/ (linkStyle))
41327
+ * @see totalType
41328
+ * @see totalDisplayStyle
41329
+ */
40905
41330
  get: function () {
40906
41331
  return this.getLocalizableStringText("totalFormat", "");
40907
41332
  },
@@ -40973,6 +41398,21 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40973
41398
  configurable: true
40974
41399
  });
40975
41400
  Object.defineProperty(MatrixDropdownColumn.prototype, "totalDisplayStyle", {
41401
+ /**
41402
+ * A format for calculated total values.
41403
+ *
41404
+ * Possible values:
41405
+ *
41406
+ * - `"none"` (default)
41407
+ * - `"decimal"`
41408
+ * - `"currency"`
41409
+ * - `"percent"`
41410
+ *
41411
+ * [View Demo](https://surveyjs.io/form-library/examples/aggregate-data-within-form/ (linkStyle))
41412
+ * @see totalType
41413
+ * @see totalFormat
41414
+ * @see totalCurrency
41415
+ */
40976
41416
  get: function () {
40977
41417
  return this.getPropertyValue("totalDisplayStyle");
40978
41418
  },
@@ -40983,6 +41423,10 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40983
41423
  configurable: true
40984
41424
  });
40985
41425
  Object.defineProperty(MatrixDropdownColumn.prototype, "totalCurrency", {
41426
+ /**
41427
+ * Specifies a currency used to display calculated total values. Applies only if [`totalDisplayStyle`](#totalDisplayStyle) is set to `"currency"`.
41428
+ * @see totalType
41429
+ */
40986
41430
  get: function () {
40987
41431
  return this.getPropertyValue("totalCurrency");
40988
41432
  },
@@ -40995,6 +41439,10 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40995
41439
  configurable: true
40996
41440
  });
40997
41441
  Object.defineProperty(MatrixDropdownColumn.prototype, "minWidth", {
41442
+ /**
41443
+ * Gets or sets minimum column width in CSS values. By default, the matrix calculates column widths to optimally fit the content of all columns.
41444
+ * @see width
41445
+ */
40998
41446
  get: function () {
40999
41447
  return this.getPropertyValue("minWidth", "");
41000
41448
  },
@@ -41005,6 +41453,10 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
41005
41453
  configurable: true
41006
41454
  });
41007
41455
  Object.defineProperty(MatrixDropdownColumn.prototype, "width", {
41456
+ /**
41457
+ * Gets or sets column width in CSS values. By default, the matrix calculates column widths to optimally fit the content of all columns.
41458
+ * @see minWidth
41459
+ */
41008
41460
  get: function () {
41009
41461
  return this.templateQuestion.width;
41010
41462
  },
@@ -41015,6 +41467,11 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
41015
41467
  configurable: true
41016
41468
  });
41017
41469
  Object.defineProperty(MatrixDropdownColumn.prototype, "colCount", {
41470
+ /**
41471
+ * Gets or sets the number of columns used to arrange choice options. Applies only to columns of `"checkbox"` or `"radiogroup"` [`cellType`](#cellType).
41472
+ *
41473
+ * Default value: -1 (inherits the actual value from the parent matrix's [`columnColCount`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#columnColCount) property)
41474
+ */
41018
41475
  get: function () {
41019
41476
  return this.getPropertyValue("colCount");
41020
41477
  },
@@ -45070,8 +45527,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45070
45527
  configurable: true
45071
45528
  });
45072
45529
  QuestionPanelDynamicModel.prototype.getFirstQuestionToFocus = function (withError) {
45073
- for (var i = 0; i < this.visiblePanels.length; i++) {
45074
- var res = this.visiblePanels[i].getFirstQuestionToFocus(withError);
45530
+ for (var i = 0; i < this.visiblePanelsCore.length; i++) {
45531
+ var res = this.visiblePanelsCore[i].getFirstQuestionToFocus(withError);
45075
45532
  if (!!res)
45076
45533
  return res;
45077
45534
  }
@@ -45103,12 +45560,12 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45103
45560
  }
45104
45561
  };
45105
45562
  QuestionPanelDynamicModel.prototype.onTemplateElementPropertyChanged = function (element, options) {
45106
- if (this.isLoadingFromJson || this.useTemplatePanel || this.panels.length == 0)
45563
+ if (this.isLoadingFromJson || this.useTemplatePanel || this.panelsCore.length == 0)
45107
45564
  return;
45108
45565
  var property = _jsonobject__WEBPACK_IMPORTED_MODULE_5__["Serializer"].findProperty(element.getType(), options.name);
45109
45566
  if (!property)
45110
45567
  return;
45111
- var panels = this.panels;
45568
+ var panels = this.panelsCore;
45112
45569
  for (var i = 0; i < panels.length; i++) {
45113
45570
  var question = panels[i].getQuestionByName(element.name);
45114
45571
  if (!!question && question[options.name] !== options.newValue) {
@@ -45127,7 +45584,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45127
45584
  return "paneldynamic";
45128
45585
  };
45129
45586
  QuestionPanelDynamicModel.prototype.clearOnDeletingContainer = function () {
45130
- this.panels.forEach(function (panel) {
45587
+ this.panelsCore.forEach(function (panel) {
45131
45588
  panel.clearOnDeletingContainer();
45132
45589
  });
45133
45590
  };
@@ -45283,8 +45740,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45283
45740
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "items", {
45284
45741
  get: function () {
45285
45742
  var res = [];
45286
- for (var i = 0; i < this.panels.length; i++) {
45287
- res.push(this.panels[i].data);
45743
+ for (var i = 0; i < this.panelsCore.length; i++) {
45744
+ res.push(this.panelsCore[i].data);
45288
45745
  }
45289
45746
  return res;
45290
45747
  },
@@ -45299,7 +45756,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45299
45756
  * @see panelCount
45300
45757
  */
45301
45758
  get: function () {
45302
- return this.getPropertyValue("panels");
45759
+ this.buildPanelsFirstTime(this.canBuildPanels);
45760
+ return this.panelsCore;
45303
45761
  },
45304
45762
  enumerable: false,
45305
45763
  configurable: true
@@ -45309,6 +45767,21 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45309
45767
  * An array of currently visible panels ([`PanelModel`](https://surveyjs.io/form-library/documentation/api-reference/panel-model) objects).
45310
45768
  * @see templateVisibleIf
45311
45769
  */
45770
+ get: function () {
45771
+ this.buildPanelsFirstTime(this.canBuildPanels);
45772
+ return this.visiblePanelsCore;
45773
+ },
45774
+ enumerable: false,
45775
+ configurable: true
45776
+ });
45777
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "panelsCore", {
45778
+ get: function () {
45779
+ return this.getPropertyValue("panels");
45780
+ },
45781
+ enumerable: false,
45782
+ configurable: true
45783
+ });
45784
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "visiblePanelsCore", {
45312
45785
  get: function () {
45313
45786
  return this.getPropertyValue("visiblePanels");
45314
45787
  },
@@ -45320,14 +45793,14 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45320
45793
  if (!panel.visible)
45321
45794
  return;
45322
45795
  var index = 0;
45323
- var panels = this.panels;
45796
+ var panels = this.panelsCore;
45324
45797
  for (var i = 0; i < panels.length; i++) {
45325
45798
  if (panels[i] === panel)
45326
45799
  break;
45327
45800
  if (panels[i].visible)
45328
45801
  index++;
45329
45802
  }
45330
- this.visiblePanels.splice(index, 0, panel);
45803
+ this.visiblePanelsCore.splice(index, 0, panel);
45331
45804
  this.addTabFromToolbar(panel, index);
45332
45805
  if (!this.currentPanel) {
45333
45806
  this.currentPanel = panel;
@@ -45336,14 +45809,14 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45336
45809
  QuestionPanelDynamicModel.prototype.onPanelRemoved = function (panel) {
45337
45810
  var index = this.onPanelRemovedCore(panel);
45338
45811
  if (this.currentPanel === panel) {
45339
- var visPanels = this.visiblePanels;
45812
+ var visPanels = this.visiblePanelsCore;
45340
45813
  if (index >= visPanels.length)
45341
45814
  index = visPanels.length - 1;
45342
45815
  this.currentPanel = index >= 0 ? visPanels[index] : null;
45343
45816
  }
45344
45817
  };
45345
45818
  QuestionPanelDynamicModel.prototype.onPanelRemovedCore = function (panel) {
45346
- var visPanels = this.visiblePanels;
45819
+ var visPanels = this.visiblePanelsCore;
45347
45820
  var index = visPanels.indexOf(panel);
45348
45821
  if (index > -1) {
45349
45822
  visPanels.splice(index, 1);
@@ -45366,14 +45839,14 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45366
45839
  return -1;
45367
45840
  if (this.useTemplatePanel)
45368
45841
  return 0;
45369
- return this.visiblePanels.indexOf(this.currentPanel);
45842
+ return this.visiblePanelsCore.indexOf(this.currentPanel);
45370
45843
  },
45371
45844
  set: function (val) {
45372
45845
  if (val < 0 || this.visiblePanelCount < 1)
45373
45846
  return;
45374
45847
  if (val >= this.visiblePanelCount)
45375
45848
  val = this.visiblePanelCount - 1;
45376
- this.currentPanel = this.visiblePanels[val];
45849
+ this.currentPanel = this.visiblePanelsCore[val];
45377
45850
  },
45378
45851
  enumerable: false,
45379
45852
  configurable: true
@@ -45395,7 +45868,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45395
45868
  return null;
45396
45869
  var res = this.getPropertyValue("currentPanel", null);
45397
45870
  if (!res && this.visiblePanelCount > 0) {
45398
- res = this.visiblePanels[0];
45871
+ res = this.visiblePanelsCore[0];
45399
45872
  this.currentPanel = res;
45400
45873
  }
45401
45874
  return res;
@@ -45404,7 +45877,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45404
45877
  if (this.isRenderModeList || this.useTemplatePanel)
45405
45878
  return;
45406
45879
  var curPanel = this.getPropertyValue("currentPanel");
45407
- var index = !!val ? this.visiblePanels.indexOf(val) : -1;
45880
+ var index = !!val ? this.visiblePanelsCore.indexOf(val) : -1;
45408
45881
  if (!!val && index < 0 || val === curPanel)
45409
45882
  return;
45410
45883
  if (curPanel) {
@@ -45431,7 +45904,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45431
45904
  this.currentPanel.onHidingContent();
45432
45905
  }
45433
45906
  else {
45434
- this.visiblePanels.forEach(function (panel) { return panel.onHidingContent(); });
45907
+ this.visiblePanelsCore.forEach(function (panel) { return panel.onHidingContent(); });
45435
45908
  }
45436
45909
  };
45437
45910
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "confirmDelete", {
@@ -45688,13 +46161,13 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45688
46161
  };
45689
46162
  QuestionPanelDynamicModel.prototype.setIsMobile = function (val) {
45690
46163
  _super.prototype.setIsMobile.call(this, val);
45691
- (this.panels || []).forEach(function (panel) { return panel.getQuestions(true).forEach(function (question) {
46164
+ (this.panelsCore || []).forEach(function (panel) { return panel.getQuestions(true).forEach(function (question) {
45692
46165
  question.setIsMobile(val);
45693
46166
  }); });
45694
46167
  };
45695
46168
  QuestionPanelDynamicModel.prototype.themeChanged = function (theme) {
45696
46169
  _super.prototype.themeChanged.call(this, theme);
45697
- (this.panels || []).forEach(function (panel) {
46170
+ (this.panelsCore || []).forEach(function (panel) {
45698
46171
  return panel.getQuestions(true).forEach(function (question) {
45699
46172
  question.themeChanged(theme);
45700
46173
  });
@@ -45707,24 +46180,24 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45707
46180
  * @see maxPanelCount
45708
46181
  */
45709
46182
  get: function () {
45710
- return this.isLoadingFromJson || this.useTemplatePanel
46183
+ return !this.canBuildPanels || this.wasNotRenderedInSurvey
45711
46184
  ? this.getPropertyValue("panelCount")
45712
- : this.panels.length;
46185
+ : this.panelsCore.length;
45713
46186
  },
45714
46187
  set: function (val) {
45715
46188
  if (val < 0)
45716
46189
  return;
45717
- if (this.isLoadingFromJson || this.useTemplatePanel) {
46190
+ if (!this.canBuildPanels || this.wasNotRenderedInSurvey) {
45718
46191
  this.setPropertyValue("panelCount", val);
45719
46192
  return;
45720
46193
  }
45721
- if (val == this.panels.length || this.useTemplatePanel)
46194
+ if (val == this.panelsCore.length || this.useTemplatePanel)
45722
46195
  return;
45723
46196
  this.updateBindings("panelCount", val);
45724
46197
  this.prepareValueForPanelCreating();
45725
46198
  for (var i = this.panelCount; i < val; i++) {
45726
46199
  var panel = this.createNewPanel();
45727
- this.panels.push(panel);
46200
+ this.panelsCore.push(panel);
45728
46201
  if (this.renderMode == "list" && this.panelsState != "default") {
45729
46202
  if (this.panelsState === "expand") {
45730
46203
  panel.expand();
@@ -45738,7 +46211,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45738
46211
  }
45739
46212
  var removedPanels = [];
45740
46213
  if (val < this.panelCount) {
45741
- removedPanels = this.panels.splice(val, this.panelCount - val);
46214
+ removedPanels = this.panelsCore.splice(val, this.panelCount - val);
45742
46215
  }
45743
46216
  this.setValueAfterPanelsCreating();
45744
46217
  this.setValueBasedOnPanelCount();
@@ -45786,8 +46259,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45786
46259
  : new QuestionPanelDynamicTemplateSurveyImpl(this));
45787
46260
  };
45788
46261
  QuestionPanelDynamicModel.prototype.setPanelsSurveyImpl = function () {
45789
- for (var i = 0; i < this.panels.length; i++) {
45790
- var panel = this.panels[i];
46262
+ for (var i = 0; i < this.panelsCore.length; i++) {
46263
+ var panel = this.panelsCore[i];
45791
46264
  if (panel == this.template)
45792
46265
  continue;
45793
46266
  panel.setSurveyImpl(panel.data);
@@ -45796,12 +46269,12 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45796
46269
  QuestionPanelDynamicModel.prototype.setPanelsState = function () {
45797
46270
  if (this.useTemplatePanel || this.renderMode != "list" || !this.templateTitle)
45798
46271
  return;
45799
- for (var i = 0; i < this.panels.length; i++) {
46272
+ for (var i = 0; i < this.panelsCore.length; i++) {
45800
46273
  var state = this.panelsState;
45801
46274
  if (state === "firstExpanded") {
45802
46275
  state = i === 0 ? "expanded" : "collapsed";
45803
46276
  }
45804
- this.panels[i].state = state;
46277
+ this.panelsCore[i].state = state;
45805
46278
  }
45806
46279
  };
45807
46280
  QuestionPanelDynamicModel.prototype.setValueBasedOnPanelCount = function () {
@@ -46085,8 +46558,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46085
46558
  if (!this.isVisible)
46086
46559
  return 0;
46087
46560
  var startIndex = this.showQuestionNumbers == "onSurvey" ? value : 0;
46088
- for (var i = 0; i < this.visiblePanels.length; i++) {
46089
- var counter = this.setPanelVisibleIndex(this.visiblePanels[i], startIndex, this.showQuestionNumbers != "off");
46561
+ for (var i = 0; i < this.visiblePanelsCore.length; i++) {
46562
+ var counter = this.setPanelVisibleIndex(this.visiblePanelsCore[i], startIndex, this.showQuestionNumbers != "off");
46090
46563
  if (this.showQuestionNumbers == "onSurvey") {
46091
46564
  startIndex += counter;
46092
46565
  }
@@ -46172,7 +46645,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46172
46645
  panels.push(this.createNewPanel());
46173
46646
  }
46174
46647
  }
46175
- (_a = this.panels).splice.apply(_a, __spreadArray([0, this.panels.length], panels));
46648
+ (_a = this.panelsCore).splice.apply(_a, __spreadArray([0, this.panelsCore.length], panels));
46176
46649
  this.setValueAfterPanelsCreating();
46177
46650
  this.setPanelsState();
46178
46651
  this.reRunCondition();
@@ -46244,7 +46717,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46244
46717
  return true;
46245
46718
  };
46246
46719
  QuestionPanelDynamicModel.prototype.getProgressInfo = function () {
46247
- return _survey_element__WEBPACK_IMPORTED_MODULE_1__["SurveyElement"].getProgressInfoByElements(this.visiblePanels, this.isRequired);
46720
+ return _survey_element__WEBPACK_IMPORTED_MODULE_1__["SurveyElement"].getProgressInfoByElements(this.visiblePanelsCore, this.isRequired);
46248
46721
  };
46249
46722
  QuestionPanelDynamicModel.prototype.isRowEmpty = function (val) {
46250
46723
  for (var prop in val) {
@@ -46294,7 +46767,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46294
46767
  }
46295
46768
  if (this.survey)
46296
46769
  this.survey.dynamicPanelAdded(this);
46297
- return this.panels[index];
46770
+ return this.panelsCore[index];
46298
46771
  };
46299
46772
  QuestionPanelDynamicModel.prototype.updateValueOnAddingPanel = function (prevIndex, index) {
46300
46773
  this.panelCount++;
@@ -46356,7 +46829,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46356
46829
  var index = this.getVisualPanelIndex(val);
46357
46830
  if (index < 0 || index >= this.visiblePanelCount)
46358
46831
  return false;
46359
- var panelValue = this.visiblePanels[index].getValue();
46832
+ var panelValue = this.visiblePanelsCore[index].getValue();
46360
46833
  return !this.isValueEmpty(panelValue) &&
46361
46834
  (this.isValueEmpty(this.defaultPanelValue) || !this.isTwoValueEquals(panelValue, this.defaultPanelValue));
46362
46835
  };
@@ -46390,13 +46863,13 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46390
46863
  var visIndex = this.getVisualPanelIndex(value);
46391
46864
  if (visIndex < 0 || visIndex >= this.visiblePanelCount)
46392
46865
  return;
46393
- var panel = this.visiblePanels[visIndex];
46394
- var index = this.panels.indexOf(panel);
46866
+ var panel = this.visiblePanelsCore[visIndex];
46867
+ var index = this.panelsCore.indexOf(panel);
46395
46868
  if (index < 0)
46396
46869
  return;
46397
46870
  if (this.survey && !this.survey.dynamicPanelRemoving(this, index, panel))
46398
46871
  return;
46399
- this.panels.splice(index, 1);
46872
+ this.panelsCore.splice(index, 1);
46400
46873
  this.updateBindings("panelCount", this.panelCount);
46401
46874
  var value = this.value;
46402
46875
  if (!value || !Array.isArray(value) || index >= value.length)
@@ -46413,7 +46886,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46413
46886
  QuestionPanelDynamicModel.prototype.getVisualPanelIndex = function (val) {
46414
46887
  if (_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isNumber(val))
46415
46888
  return val;
46416
- var visPanels = this.visiblePanels;
46889
+ var visPanels = this.visiblePanelsCore;
46417
46890
  for (var i = 0; i < visPanels.length; i++) {
46418
46891
  if (visPanels[i] === val || visPanels[i].data === val)
46419
46892
  return i;
@@ -46421,15 +46894,15 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46421
46894
  return -1;
46422
46895
  };
46423
46896
  QuestionPanelDynamicModel.prototype.getPanelIndexById = function (id) {
46424
- for (var i = 0; i < this.panels.length; i++) {
46425
- if (this.panels[i].id === id)
46897
+ for (var i = 0; i < this.panelsCore.length; i++) {
46898
+ if (this.panelsCore[i].id === id)
46426
46899
  return i;
46427
46900
  }
46428
46901
  return -1;
46429
46902
  };
46430
46903
  QuestionPanelDynamicModel.prototype.locStrsChanged = function () {
46431
46904
  _super.prototype.locStrsChanged.call(this);
46432
- var panels = this.panels;
46905
+ var panels = this.panelsCore;
46433
46906
  for (var i = 0; i < panels.length; i++) {
46434
46907
  panels[i].locStrsChanged();
46435
46908
  }
@@ -46438,23 +46911,23 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46438
46911
  }
46439
46912
  };
46440
46913
  QuestionPanelDynamicModel.prototype.clearIncorrectValues = function () {
46441
- for (var i = 0; i < this.panels.length; i++) {
46914
+ for (var i = 0; i < this.panelsCore.length; i++) {
46442
46915
  this.clearIncorrectValuesInPanel(i);
46443
46916
  }
46444
46917
  };
46445
46918
  QuestionPanelDynamicModel.prototype.clearErrors = function () {
46446
46919
  _super.prototype.clearErrors.call(this);
46447
- for (var i = 0; i < this.panels.length; i++) {
46448
- this.panels[i].clearErrors();
46920
+ for (var i = 0; i < this.panelsCore.length; i++) {
46921
+ this.panelsCore[i].clearErrors();
46449
46922
  }
46450
46923
  };
46451
46924
  QuestionPanelDynamicModel.prototype.getQuestionFromArray = function (name, index) {
46452
46925
  if (index >= this.panelCount)
46453
46926
  return null;
46454
- return this.panels[index].getQuestionByName(name);
46927
+ return this.panelsCore[index].getQuestionByName(name);
46455
46928
  };
46456
46929
  QuestionPanelDynamicModel.prototype.clearIncorrectValuesInPanel = function (index) {
46457
- var panel = this.panels[index];
46930
+ var panel = this.panelsCore[index];
46458
46931
  panel.clearIncorrectValues();
46459
46932
  var val = this.value;
46460
46933
  var values = !!val && index < val.length ? val[index] : null;
@@ -46528,7 +47001,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46528
47001
  }
46529
47002
  };
46530
47003
  QuestionPanelDynamicModel.prototype.collectNestedQuestionsCore = function (questions, visibleOnly) {
46531
- var panels = visibleOnly ? this.visiblePanels : this.panels;
47004
+ var panels = visibleOnly ? this.visiblePanelsCore : this.panelsCore;
46532
47005
  if (!Array.isArray(panels))
46533
47006
  return;
46534
47007
  panels.forEach(function (panel) {
@@ -46554,8 +47027,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46554
47027
  QuestionPanelDynamicModel.prototype.onReadOnlyChanged = function () {
46555
47028
  var readOnly = this.isReadOnly;
46556
47029
  this.template.readOnly = readOnly;
46557
- for (var i = 0; i < this.panels.length; i++) {
46558
- this.panels[i].readOnly = readOnly;
47030
+ for (var i = 0; i < this.panelsCore.length; i++) {
47031
+ this.panelsCore[i].readOnly = readOnly;
46559
47032
  }
46560
47033
  this.updateNoEntriesTextDefaultLoc();
46561
47034
  this.updateFooterActions();
@@ -46571,6 +47044,17 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46571
47044
  QuestionPanelDynamicModel.prototype.onSurveyLoad = function () {
46572
47045
  this.template.readOnly = this.isReadOnly;
46573
47046
  this.template.onSurveyLoad();
47047
+ this.buildPanelsFirstTime();
47048
+ _super.prototype.onSurveyLoad.call(this);
47049
+ };
47050
+ QuestionPanelDynamicModel.prototype.buildPanelsFirstTime = function (force) {
47051
+ if (force === void 0) { force = false; }
47052
+ if (this.hasPanelBuildFirstTime)
47053
+ return;
47054
+ if (!force && this.wasNotRenderedInSurvey)
47055
+ return;
47056
+ this.hasPanelBuildFirstTime = true;
47057
+ this.isBuildingPanelsFirstTime = true;
46574
47058
  if (this.getPropertyValue("panelCount") > 0) {
46575
47059
  this.panelCount = this.getPropertyValue("panelCount");
46576
47060
  }
@@ -46590,28 +47074,43 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46590
47074
  this.updateNoEntriesTextDefaultLoc();
46591
47075
  }
46592
47076
  this.updateFooterActions();
46593
- _super.prototype.onSurveyLoad.call(this);
47077
+ this.isBuildingPanelsFirstTime = false;
46594
47078
  };
47079
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "wasNotRenderedInSurvey", {
47080
+ get: function () {
47081
+ return !this.hasPanelBuildFirstTime && !this.wasRendered && !!this.survey;
47082
+ },
47083
+ enumerable: false,
47084
+ configurable: true
47085
+ });
47086
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "canBuildPanels", {
47087
+ get: function () {
47088
+ return !this.isLoadingFromJson && !this.useTemplatePanel;
47089
+ },
47090
+ enumerable: false,
47091
+ configurable: true
47092
+ });
46595
47093
  QuestionPanelDynamicModel.prototype.onFirstRendering = function () {
47094
+ _super.prototype.onFirstRendering.call(this);
47095
+ this.buildPanelsFirstTime();
46596
47096
  this.template.onFirstRendering();
46597
- for (var i = 0; i < this.panels.length; i++) {
46598
- this.panels[i].onFirstRendering();
47097
+ for (var i = 0; i < this.panelsCore.length; i++) {
47098
+ this.panelsCore[i].onFirstRendering();
46599
47099
  }
46600
- _super.prototype.onFirstRendering.call(this);
46601
47100
  };
46602
47101
  QuestionPanelDynamicModel.prototype.localeChanged = function () {
46603
47102
  _super.prototype.localeChanged.call(this);
46604
- for (var i = 0; i < this.panels.length; i++) {
46605
- this.panels[i].localeChanged();
47103
+ for (var i = 0; i < this.panelsCore.length; i++) {
47104
+ this.panelsCore[i].localeChanged();
46606
47105
  }
46607
47106
  };
46608
47107
  QuestionPanelDynamicModel.prototype.runCondition = function (values, properties) {
46609
47108
  _super.prototype.runCondition.call(this, values, properties);
46610
- this.runPanelsCondition(this.panels, values, properties);
47109
+ this.runPanelsCondition(this.panelsCore, values, properties);
46611
47110
  };
46612
47111
  QuestionPanelDynamicModel.prototype.runTriggers = function (name, value) {
46613
47112
  _super.prototype.runTriggers.call(this, name, value);
46614
- this.visiblePanels.forEach(function (p) {
47113
+ this.visiblePanelsCore.forEach(function (p) {
46615
47114
  p.questions.forEach(function (q) { return q.runTriggers(name, value); });
46616
47115
  });
46617
47116
  };
@@ -46645,18 +47144,18 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46645
47144
  };
46646
47145
  QuestionPanelDynamicModel.prototype.onAnyValueChanged = function (name, questionName) {
46647
47146
  _super.prototype.onAnyValueChanged.call(this, name, questionName);
46648
- for (var i = 0; i < this.panels.length; i++) {
46649
- this.panels[i].onAnyValueChanged(name, questionName);
46650
- this.panels[i].onAnyValueChanged(QuestionPanelDynamicItem.ItemVariableName, "");
47147
+ for (var i = 0; i < this.panelsCore.length; i++) {
47148
+ this.panelsCore[i].onAnyValueChanged(name, questionName);
47149
+ this.panelsCore[i].onAnyValueChanged(QuestionPanelDynamicItem.ItemVariableName, "");
46651
47150
  }
46652
47151
  };
46653
47152
  QuestionPanelDynamicModel.prototype.hasKeysDuplicated = function (fireCallback, rec) {
46654
47153
  if (rec === void 0) { rec = null; }
46655
47154
  var keyValues = [];
46656
47155
  var res;
46657
- for (var i = 0; i < this.panels.length; i++) {
47156
+ for (var i = 0; i < this.panelsCore.length; i++) {
46658
47157
  res =
46659
- this.isValueDuplicated(this.panels[i], keyValues, rec, fireCallback) ||
47158
+ this.isValueDuplicated(this.panelsCore[i], keyValues, rec, fireCallback) ||
46660
47159
  res;
46661
47160
  }
46662
47161
  return res;
@@ -46673,7 +47172,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46673
47172
  QuestionPanelDynamicModel.prototype.hasErrors = function (fireCallback, rec) {
46674
47173
  if (fireCallback === void 0) { fireCallback = true; }
46675
47174
  if (rec === void 0) { rec = null; }
46676
- if (this.isValueChangingInternally)
47175
+ if (this.isValueChangingInternally || this.isBuildingPanelsFirstTime)
46677
47176
  return false;
46678
47177
  var res = false;
46679
47178
  if (!!this.changingValueQuestion) {
@@ -46690,7 +47189,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46690
47189
  var res = _super.prototype.getContainsErrors.call(this);
46691
47190
  if (res)
46692
47191
  return res;
46693
- var panels = this.panels;
47192
+ var panels = this.panelsCore;
46694
47193
  for (var i = 0; i < panels.length; i++) {
46695
47194
  if (panels[i].containsErrors)
46696
47195
  return true;
@@ -46700,7 +47199,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46700
47199
  QuestionPanelDynamicModel.prototype.getIsAnswered = function () {
46701
47200
  if (!_super.prototype.getIsAnswered.call(this))
46702
47201
  return false;
46703
- var panels = this.visiblePanels;
47202
+ var panels = this.visiblePanelsCore;
46704
47203
  for (var i = 0; i < panels.length; i++) {
46705
47204
  var visibleQuestions = [];
46706
47205
  panels[i].addQuestionsToList(visibleQuestions, true);
@@ -46726,8 +47225,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46726
47225
  _super.prototype.clearValueIfInvisible.call(this, reason);
46727
47226
  };
46728
47227
  QuestionPanelDynamicModel.prototype.clearValueInPanelsIfInvisible = function (reason) {
46729
- for (var i = 0; i < this.panels.length; i++) {
46730
- var questions = this.panels[i].questions;
47228
+ for (var i = 0; i < this.panelsCore.length; i++) {
47229
+ var questions = this.panelsCore[i].questions;
46731
47230
  this.isSetPanelItemData = {};
46732
47231
  for (var j = 0; j < questions.length; j++) {
46733
47232
  var q = questions[j];
@@ -46740,8 +47239,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46740
47239
  QuestionPanelDynamicModel.prototype.getIsRunningValidators = function () {
46741
47240
  if (_super.prototype.getIsRunningValidators.call(this))
46742
47241
  return true;
46743
- for (var i = 0; i < this.panels.length; i++) {
46744
- var questions = this.panels[i].questions;
47242
+ for (var i = 0; i < this.panelsCore.length; i++) {
47243
+ var questions = this.panelsCore[i].questions;
46745
47244
  for (var j = 0; j < questions.length; j++) {
46746
47245
  if (questions[j].isRunningValidators)
46747
47246
  return true;
@@ -46751,7 +47250,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46751
47250
  };
46752
47251
  QuestionPanelDynamicModel.prototype.getAllErrors = function () {
46753
47252
  var result = _super.prototype.getAllErrors.call(this);
46754
- var panels = this.visiblePanels;
47253
+ var panels = this.visiblePanelsCore;
46755
47254
  for (var i = 0; i < panels.length; i++) {
46756
47255
  var questions = panels[i].questions;
46757
47256
  for (var j = 0; j < questions.length; j++) {
@@ -46767,7 +47266,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46767
47266
  var values = this.getUnbindValue(value);
46768
47267
  if (!values || !Array.isArray(values))
46769
47268
  return values;
46770
- for (var i = 0; i < this.panels.length && i < values.length; i++) {
47269
+ for (var i = 0; i < this.panelsCore.length && i < values.length; i++) {
46771
47270
  var val = values[i];
46772
47271
  if (!val)
46773
47272
  continue;
@@ -46778,7 +47277,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46778
47277
  QuestionPanelDynamicModel.prototype.getPanelDisplayValue = function (panelIndex, val, keysAsText) {
46779
47278
  if (!val)
46780
47279
  return val;
46781
- var panel = this.panels[panelIndex];
47280
+ var panel = this.panelsCore[panelIndex];
46782
47281
  var keys = Object.keys(val);
46783
47282
  for (var i = 0; i < keys.length; i++) {
46784
47283
  var key = keys[i];
@@ -46799,7 +47298,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46799
47298
  };
46800
47299
  QuestionPanelDynamicModel.prototype.hasErrorInPanels = function (fireCallback, rec) {
46801
47300
  var res = false;
46802
- var panels = this.visiblePanels;
47301
+ var panels = this.visiblePanelsCore;
46803
47302
  var keyValues = [];
46804
47303
  for (var i = 0; i < panels.length; i++) {
46805
47304
  this.setOnCompleteAsyncInPanel(panels[i]);
@@ -46932,8 +47431,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46932
47431
  return;
46933
47432
  _super.prototype.setQuestionValue.call(this, newValue, false);
46934
47433
  this.setPanelCountBasedOnValue();
46935
- for (var i = 0; i < this.panels.length; i++) {
46936
- this.panelUpdateValueFromSurvey(this.panels[i]);
47434
+ for (var i = 0; i < this.panelsCore.length; i++) {
47435
+ this.panelUpdateValueFromSurvey(this.panelsCore[i]);
46937
47436
  }
46938
47437
  this.updateIsAnswered();
46939
47438
  };
@@ -46941,8 +47440,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46941
47440
  if (newValue === undefined && this.isAllPanelsEmpty())
46942
47441
  return;
46943
47442
  _super.prototype.onSurveyValueChanged.call(this, newValue);
46944
- for (var i = 0; i < this.panels.length; i++) {
46945
- this.panelSurveyValueChanged(this.panels[i]);
47443
+ for (var i = 0; i < this.panelsCore.length; i++) {
47444
+ this.panelSurveyValueChanged(this.panelsCore[i]);
46946
47445
  }
46947
47446
  if (newValue === undefined) {
46948
47447
  this.setValueBasedOnPanelCount();
@@ -46950,8 +47449,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46950
47449
  this.updateIsReady();
46951
47450
  };
46952
47451
  QuestionPanelDynamicModel.prototype.isAllPanelsEmpty = function () {
46953
- for (var i = 0; i < this.panels.length; i++) {
46954
- if (!_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isValueEmpty(this.panels[i].getValue()))
47452
+ for (var i = 0; i < this.panelsCore.length; i++) {
47453
+ if (!_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isValueEmpty(this.panelsCore[i].getValue()))
46955
47454
  return false;
46956
47455
  }
46957
47456
  return true;
@@ -46990,7 +47489,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
46990
47489
  return res > -1 ? res : this.items.length;
46991
47490
  };
46992
47491
  QuestionPanelDynamicModel.prototype.getVisibleItemIndex = function (item) {
46993
- var visPanels = this.visiblePanels;
47492
+ var visPanels = this.visiblePanelsCore;
46994
47493
  for (var i = 0; i < visPanels.length; i++) {
46995
47494
  if (visPanels[i].data === item)
46996
47495
  return i;
@@ -47038,8 +47537,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
47038
47537
  else {
47039
47538
  delete qValue[index][name];
47040
47539
  }
47041
- if (index >= 0 && index < this.panels.length) {
47042
- this.changingValueQuestion = this.panels[index].getQuestionByValueName(name);
47540
+ if (index >= 0 && index < this.panelsCore.length) {
47541
+ this.changingValueQuestion = this.panelsCore[index].getQuestionByValueName(name);
47043
47542
  }
47044
47543
  this.value = qValue;
47045
47544
  this.changingValueQuestion = null;
@@ -47093,8 +47592,8 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
47093
47592
  };
47094
47593
  QuestionPanelDynamicModel.prototype.updateElementCss = function (reNew) {
47095
47594
  _super.prototype.updateElementCss.call(this, reNew);
47096
- for (var i = 0; i < this.panels.length; i++) {
47097
- var el = this.panels[i];
47595
+ for (var i = 0; i < this.panelsCore.length; i++) {
47596
+ var el = this.panelsCore[i];
47098
47597
  el.updateElementCss(reNew);
47099
47598
  }
47100
47599
  };
@@ -47318,7 +47817,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
47318
47817
  return;
47319
47818
  if (this.currentIndex < 0 || this.currentIndex >= this.visiblePanelCount)
47320
47819
  return;
47321
- var panel = this.visiblePanels[this.currentIndex];
47820
+ var panel = this.visiblePanelsCore[this.currentIndex];
47322
47821
  this.additionalTitleToolbar.renderedActions.forEach(function (action) {
47323
47822
  var isActive = action.id === panel.id;
47324
47823
  action.pressed = isActive;
@@ -47334,9 +47833,9 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
47334
47833
  if (!this.isRenderModeTab)
47335
47834
  return;
47336
47835
  var items = [];
47337
- var visPanels = this.visiblePanels;
47836
+ var visPanels = this.visiblePanelsCore;
47338
47837
  var _loop_1 = function (i) {
47339
- this_1.visiblePanels.forEach(function (panel) { return items.push(_this.createTabByPanel(visPanels[i], i)); });
47838
+ this_1.visiblePanelsCore.forEach(function (panel) { return items.push(_this.createTabByPanel(visPanels[i], i)); });
47340
47839
  };
47341
47840
  var this_1 = this;
47342
47841
  for (var i = 0; i < visPanels.length; i++) {
@@ -47807,6 +48306,9 @@ var QuestionRankingModel = /** @class */ (function (_super) {
47807
48306
  return undefined;
47808
48307
  return 0;
47809
48308
  };
48309
+ QuestionRankingModel.prototype.supportContainerQueries = function () {
48310
+ return this.selectToRankEnabled;
48311
+ };
47810
48312
  Object.defineProperty(QuestionRankingModel.prototype, "rootClass", {
47811
48313
  get: function () {
47812
48314
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_6__["CssClassBuilder"]()
@@ -51596,7 +52098,7 @@ __webpack_require__.r(__webpack_exports__);
51596
52098
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settings", function() { return settings; });
51597
52099
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/utils */ "./src/utils/utils.ts");
51598
52100
 
51599
- var document = globalThis.document;
52101
+ var document = typeof globalThis !== "undefined" ? globalThis.document : undefined.document;
51600
52102
  var defaultEnvironment = (!!document ? {
51601
52103
  root: document,
51602
52104
  _rootElement: document.body,
@@ -51774,12 +52276,12 @@ var settings = {
51774
52276
  * import { ItemValue, settings } from "survey-core";
51775
52277
  *
51776
52278
  * // `itemValueSerializeAsObject` example
51777
- * settings.localization.itemValueSerializeAsObject = true;
52279
+ * settings.serialization.itemValueSerializeAsObject = true;
51778
52280
  * const item = new ItemValue(5);
51779
52281
  * const itemString = item.toJSON(); // Produces { value: 5 } instead of 5
51780
52282
  *
51781
52283
  * // `itemValueSerializeDisplayText` example
51782
- * settings.localization.itemValueSerializeDisplayText = true;
52284
+ * settings.serialization.itemValueSerializeDisplayText = true;
51783
52285
  * const item = new ItemValue("item1");
51784
52286
  * const itemString = item.toJSON(); // Produces { value: "item1", text: "item1" } instead of "item1"
51785
52287
  * ```
@@ -53481,7 +53983,13 @@ var SurveyElement = /** @class */ (function (_super) {
53481
53983
  });
53482
53984
  SurveyElement.prototype.updateCustomWidgets = function () { };
53483
53985
  SurveyElement.prototype.onSurveyLoad = function () { };
53986
+ Object.defineProperty(SurveyElement.prototype, "wasRendered", {
53987
+ get: function () { return !!this.wasRenderedValue; },
53988
+ enumerable: false,
53989
+ configurable: true
53990
+ });
53484
53991
  SurveyElement.prototype.onFirstRendering = function () {
53992
+ this.wasRenderedValue = true;
53485
53993
  this.ensureCssClassesValue();
53486
53994
  };
53487
53995
  SurveyElement.prototype.endLoadingFromJson = function () {
@@ -53961,7 +54469,7 @@ var SurveyError = /** @class */ (function () {
53961
54469
  this.visible = true;
53962
54470
  this.onUpdateErrorTextCallback = undefined;
53963
54471
  }
53964
- SurveyError.prototype.equalsTo = function (error) {
54472
+ SurveyError.prototype.equals = function (error) {
53965
54473
  if (!error || !error.getErrorType)
53966
54474
  return false;
53967
54475
  if (this.getErrorType() !== error.getErrorType())
@@ -54061,6 +54569,7 @@ __webpack_require__.r(__webpack_exports__);
54061
54569
  /* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./header */ "./src/header.ts");
54062
54570
  /* harmony import */ var _surveytimer__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./surveytimer */ "./src/surveytimer.ts");
54063
54571
  /* harmony import */ var _surveyTaskManager__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./surveyTaskManager */ "./src/surveyTaskManager.ts");
54572
+ /* harmony import */ var _surveyToc__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./surveyToc */ "./src/surveyToc.ts");
54064
54573
  var __extends = (undefined && undefined.__extends) || (function () {
54065
54574
  var extendStatics = function (d, b) {
54066
54575
  extendStatics = Object.setPrototypeOf ||
@@ -54103,6 +54612,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
54103
54612
 
54104
54613
 
54105
54614
 
54615
+
54106
54616
 
54107
54617
 
54108
54618
  /**
@@ -54976,8 +55486,8 @@ var SurveyModel = /** @class */ (function (_super) {
54976
55486
  });
54977
55487
  _this.addLayoutElement({
54978
55488
  id: "toc-navigation",
54979
- component: "sv-progress-toc",
54980
- data: _this
55489
+ component: "sv-navigation-toc",
55490
+ data: new _surveyToc__WEBPACK_IMPORTED_MODULE_23__["TOCModel"](_this)
54981
55491
  });
54982
55492
  _this.layoutElements.push({
54983
55493
  id: "navigationbuttons",
@@ -55284,6 +55794,16 @@ var SurveyModel = /** @class */ (function (_super) {
55284
55794
  enumerable: false,
55285
55795
  configurable: true
55286
55796
  });
55797
+ Object.defineProperty(SurveyModel.prototype, "lazyRenderingFirstBatchSize", {
55798
+ get: function () {
55799
+ return this.lazyRenderingFirstBatchSizeValue || _settings__WEBPACK_IMPORTED_MODULE_14__["settings"].lazyRender.firstBatchSize;
55800
+ },
55801
+ set: function (val) {
55802
+ this.lazyRenderingFirstBatchSizeValue = val;
55803
+ },
55804
+ enumerable: false,
55805
+ configurable: true
55806
+ });
55287
55807
  SurveyModel.prototype.updateLazyRenderingRowsOnRemovingElements = function () {
55288
55808
  if (!this.isLazyRendering)
55289
55809
  return;
@@ -56012,6 +56532,8 @@ var SurveyModel = /** @class */ (function (_super) {
56012
56532
  return this.locale;
56013
56533
  };
56014
56534
  SurveyModel.prototype.locStrsChanged = function () {
56535
+ if (this.isClearingUnsedValues)
56536
+ return;
56015
56537
  _super.prototype.locStrsChanged.call(this);
56016
56538
  if (!this.currentPage)
56017
56539
  return;
@@ -57562,6 +58084,27 @@ var SurveyModel = /** @class */ (function (_super) {
57562
58084
  enumerable: false,
57563
58085
  configurable: true
57564
58086
  });
58087
+ SurveyModel.prototype.tryNavigateToPage = function (page) {
58088
+ if (this.isDesignMode)
58089
+ return false;
58090
+ var index = this.visiblePages.indexOf(page);
58091
+ if (index < 0 || index >= this.visiblePageCount)
58092
+ return false;
58093
+ if (index === this.currentPageNo)
58094
+ return false;
58095
+ if (index < this.currentPageNo || this.isValidateOnComplete) {
58096
+ this.currentPageNo = index;
58097
+ return true;
58098
+ }
58099
+ for (var i = this.currentPageNo; i < index; i++) {
58100
+ var page_1 = this.visiblePages[i];
58101
+ if (!page_1.validate(true, true))
58102
+ return false;
58103
+ page_1.passed = true;
58104
+ }
58105
+ this.currentPage = page;
58106
+ return true;
58107
+ };
57565
58108
  SurveyModel.prototype.updateCurrentPage = function () {
57566
58109
  if (this.isCurrentPageAvailable)
57567
58110
  return;
@@ -60763,11 +61306,13 @@ var SurveyModel = /** @class */ (function (_super) {
60763
61306
  return name.substring(0, pos);
60764
61307
  };
60765
61308
  SurveyModel.prototype.clearUnusedValues = function () {
61309
+ this.isClearingUnsedValues = true;
60766
61310
  var questions = this.getAllQuestions();
60767
61311
  for (var i = 0; i < questions.length; i++) {
60768
61312
  questions[i].clearUnusedValues();
60769
61313
  }
60770
61314
  this.clearInvisibleQuestionValues();
61315
+ this.isClearingUnsedValues = false;
60771
61316
  };
60772
61317
  SurveyModel.prototype.hasVisibleQuestionByValueName = function (valueName) {
60773
61318
  var questions = this.getQuestionsByValueName(valueName);
@@ -61954,8 +62499,12 @@ var SurveyModel = /** @class */ (function (_super) {
61954
62499
  this.layoutElements.push(layoutElement);
61955
62500
  return existingLayoutElement;
61956
62501
  };
61957
- SurveyModel.prototype.removeLayoutElement = function (layoutElementId) {
62502
+ SurveyModel.prototype.findLayoutElement = function (layoutElementId) {
61958
62503
  var layoutElement = this.layoutElements.filter(function (a) { return a.id === layoutElementId; })[0];
62504
+ return layoutElement;
62505
+ };
62506
+ SurveyModel.prototype.removeLayoutElement = function (layoutElementId) {
62507
+ var layoutElement = this.findLayoutElement(layoutElementId);
61959
62508
  if (!!layoutElement) {
61960
62509
  var layoutElementIndex = this.layoutElements.indexOf(layoutElement);
61961
62510
  this.layoutElements.splice(layoutElementIndex, 1);
@@ -61979,7 +62528,7 @@ var SurveyModel = /** @class */ (function (_super) {
61979
62528
  }
61980
62529
  }
61981
62530
  else if (this.state === "running" && isStrCiEqual(layoutElement.id, "progress-" + this.progressBarType)) {
61982
- var headerLayoutElement = this.layoutElements.filter(function (a) { return a.id === "advanced-header"; })[0];
62531
+ var headerLayoutElement = this.findLayoutElement("advanced-header");
61983
62532
  var advHeader = headerLayoutElement && headerLayoutElement.data;
61984
62533
  var isBelowHeader = !advHeader || advHeader.hasBackground;
61985
62534
  if (container === "header" && !isBelowHeader) {
@@ -62081,6 +62630,14 @@ var SurveyModel = /** @class */ (function (_super) {
62081
62630
  this.removeScrollEventListener();
62082
62631
  this.destroyResizeObserver();
62083
62632
  this.rootElement = undefined;
62633
+ if (this.layoutElements) {
62634
+ for (var i = 0; i < this.layoutElements.length; i++) {
62635
+ if (!!this.layoutElements[i].data && this.layoutElements[i].data !== this && this.layoutElements[i].data.dispose) {
62636
+ this.layoutElements[i].data.dispose();
62637
+ }
62638
+ }
62639
+ this.layoutElements.splice(0, this.layoutElements.length);
62640
+ }
62084
62641
  _super.prototype.dispose.call(this);
62085
62642
  this.editingObj = null;
62086
62643
  if (!this.pages)
@@ -62146,7 +62703,7 @@ var SurveyModel = /** @class */ (function (_super) {
62146
62703
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({
62147
62704
  onSet: function (newValue, target) {
62148
62705
  if (newValue === "advanced") {
62149
- var layoutElement = target.layoutElements.filter(function (a) { return a.id === "advanced-header"; })[0];
62706
+ var layoutElement = target.findLayoutElement("advanced-header");
62150
62707
  if (!layoutElement) {
62151
62708
  var advHeader = new _header__WEBPACK_IMPORTED_MODULE_20__["Cover"]();
62152
62709
  advHeader.logoPositionX = target.logoPosition === "right" ? "right" : "left";
@@ -62170,6 +62727,9 @@ var SurveyModel = /** @class */ (function (_super) {
62170
62727
  __decorate([
62171
62728
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
62172
62729
  ], SurveyModel.prototype, "enterKeyAction", void 0);
62730
+ __decorate([
62731
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
62732
+ ], SurveyModel.prototype, "lazyRenderingFirstBatchSizeValue", void 0);
62173
62733
  __decorate([
62174
62734
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ defaultValue: {} })
62175
62735
  ], SurveyModel.prototype, "cssVariables", void 0);
@@ -62379,7 +62939,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("survey", [
62379
62939
  {
62380
62940
  name: "checkErrorsMode",
62381
62941
  default: "onNextPage",
62382
- choices: ["onNextPage", "onValueChanged", "onValueChanging", "onComplete"],
62942
+ choices: ["onNextPage", "onValueChanged", "onComplete"],
62383
62943
  },
62384
62944
  {
62385
62945
  name: "textUpdateMode",
@@ -62538,17 +63098,7 @@ var SurveyProgressButtonsModel = /** @class */ (function () {
62538
63098
  .toString();
62539
63099
  };
62540
63100
  SurveyProgressButtonsModel.prototype.clickListElement = function (index) {
62541
- if (this.survey.isDesignMode)
62542
- return;
62543
- if (index < this.survey.currentPageNo) {
62544
- this.survey.currentPageNo = index;
62545
- }
62546
- else if (index > this.survey.currentPageNo) {
62547
- for (var i = this.survey.currentPageNo; i < index; i++) {
62548
- if (!this.survey.nextPage())
62549
- break;
62550
- }
62551
- }
63101
+ this.survey.tryNavigateToPage(this.survey.visiblePages[index]);
62552
63102
  };
62553
63103
  return SurveyProgressButtonsModel;
62554
63104
  }());
@@ -62958,12 +63508,11 @@ var SurveyTimerModel = /** @class */ (function (_super) {
62958
63508
  /*!**************************!*\
62959
63509
  !*** ./src/surveyToc.ts ***!
62960
63510
  \**************************/
62961
- /*! exports provided: tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel */
63511
+ /*! exports provided: tryFocusPage, createTOCListModel, getTocRootCss, TOCModel */
62962
63512
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
62963
63513
 
62964
63514
  "use strict";
62965
63515
  __webpack_require__.r(__webpack_exports__);
62966
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return tryNavigateToPage; });
62967
63516
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return tryFocusPage; });
62968
63517
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return createTOCListModel; });
62969
63518
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return getTocRootCss; });
@@ -62978,21 +63527,6 @@ __webpack_require__.r(__webpack_exports__);
62978
63527
 
62979
63528
 
62980
63529
 
62981
- function tryNavigateToPage(survey, page) {
62982
- if (survey.isDesignMode)
62983
- return;
62984
- var index = survey.visiblePages.indexOf(page);
62985
- if (index < survey.currentPageNo) {
62986
- survey.currentPageNo = index;
62987
- }
62988
- else if (index > survey.currentPageNo) {
62989
- for (var i = survey.currentPageNo; i < index; i++) {
62990
- if (!survey.nextPageUIClick())
62991
- return false;
62992
- }
62993
- }
62994
- return true;
62995
- }
62996
63530
  function tryFocusPage(survey, panel) {
62997
63531
  if (survey.isDesignMode)
62998
63532
  return true;
@@ -63014,7 +63548,7 @@ function createTOCListModel(survey, onAction) {
63014
63548
  }
63015
63549
  !!onAction && onAction();
63016
63550
  if (page instanceof _page__WEBPACK_IMPORTED_MODULE_3__["PageModel"]) {
63017
- return tryNavigateToPage(survey, page);
63551
+ return survey.tryNavigateToPage(page);
63018
63552
  }
63019
63553
  return tryFocusPage(survey, page);
63020
63554
  },
@@ -63025,12 +63559,12 @@ function createTOCListModel(survey, onAction) {
63025
63559
  if (!!item.action()) {
63026
63560
  listModel.selectedItem = item;
63027
63561
  }
63028
- }, true, items.filter(function (i) { return i.id === survey.currentPage.name; })[0] || items.filter(function (i) { return i.id === pagesSource[0].name; })[0]);
63562
+ }, true, items.filter(function (i) { return !!survey.currentPage && i.id === survey.currentPage.name; })[0] || items.filter(function (i) { return i.id === pagesSource[0].name; })[0]);
63029
63563
  listModel.allowSelection = false;
63030
63564
  listModel.locOwner = survey;
63031
63565
  listModel.searchEnabled = false;
63032
63566
  survey.onCurrentPageChanged.add(function (s, o) {
63033
- listModel.selectedItem = items.filter(function (i) { return i.id === survey.currentPage.name; })[0];
63567
+ listModel.selectedItem = items.filter(function (i) { return !!survey.currentPage && i.id === survey.currentPage.name; })[0];
63034
63568
  });
63035
63569
  return listModel;
63036
63570
  }
@@ -65065,7 +65599,7 @@ function scrollElementByChildId(id) {
65065
65599
  return;
65066
65600
  var scrollableEl = findScrollableParent(el);
65067
65601
  if (!!scrollableEl) {
65068
- scrollableEl.dispatchEvent(new CustomEvent("scroll"));
65602
+ setTimeout(function () { return scrollableEl.dispatchEvent(new CustomEvent("scroll")); }, 10);
65069
65603
  }
65070
65604
  }
65071
65605
  function navigateToUrl(url) {