survey-core 1.11.13 → 1.12.1

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 (277) hide show
  1. package/defaultV2.css +361 -339
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +361 -339
  4. package/defaultV2.fontless.css.map +1 -1
  5. package/defaultV2.fontless.min.css +2 -2
  6. package/defaultV2.min.css +2 -2
  7. package/i18n/arabic.js +1 -1
  8. package/i18n/arabic.min.js +1 -1
  9. package/i18n/basque.js +1 -1
  10. package/i18n/basque.min.js +1 -1
  11. package/i18n/bulgarian.js +1 -1
  12. package/i18n/bulgarian.min.js +1 -1
  13. package/i18n/catalan.js +1 -1
  14. package/i18n/catalan.min.js +1 -1
  15. package/i18n/croatian.js +1 -1
  16. package/i18n/croatian.min.js +1 -1
  17. package/i18n/czech.js +1 -1
  18. package/i18n/czech.min.js +1 -1
  19. package/i18n/danish.js +1 -1
  20. package/i18n/danish.min.js +1 -1
  21. package/i18n/dutch.js +1 -1
  22. package/i18n/dutch.min.js +1 -1
  23. package/i18n/english.js +2 -1
  24. package/i18n/english.js.map +1 -1
  25. package/i18n/english.min.js +2 -2
  26. package/i18n/estonian.js +1 -1
  27. package/i18n/estonian.min.js +1 -1
  28. package/i18n/finnish.js +1 -1
  29. package/i18n/finnish.min.js +1 -1
  30. package/i18n/french.js +1 -1
  31. package/i18n/french.min.js +1 -1
  32. package/i18n/georgian.js +1 -1
  33. package/i18n/georgian.min.js +1 -1
  34. package/i18n/german.js +1 -1
  35. package/i18n/german.min.js +1 -1
  36. package/i18n/greek.js +1 -1
  37. package/i18n/greek.min.js +1 -1
  38. package/i18n/hebrew.js +1 -1
  39. package/i18n/hebrew.min.js +1 -1
  40. package/i18n/hindi.js +1 -1
  41. package/i18n/hindi.min.js +1 -1
  42. package/i18n/hungarian.js +1 -1
  43. package/i18n/hungarian.min.js +1 -1
  44. package/i18n/icelandic.js +1 -1
  45. package/i18n/icelandic.min.js +1 -1
  46. package/i18n/index.js +1 -1
  47. package/i18n/index.min.js +1 -1
  48. package/i18n/indonesian.js +1 -1
  49. package/i18n/indonesian.min.js +1 -1
  50. package/i18n/italian.js +1 -1
  51. package/i18n/italian.min.js +1 -1
  52. package/i18n/japanese.js +1 -1
  53. package/i18n/japanese.min.js +1 -1
  54. package/i18n/kazakh.js +1 -1
  55. package/i18n/kazakh.min.js +1 -1
  56. package/i18n/korean.js +1 -1
  57. package/i18n/korean.min.js +1 -1
  58. package/i18n/latvian.js +1 -1
  59. package/i18n/latvian.min.js +1 -1
  60. package/i18n/lithuanian.js +1 -1
  61. package/i18n/lithuanian.min.js +1 -1
  62. package/i18n/macedonian.js +1 -1
  63. package/i18n/macedonian.min.js +1 -1
  64. package/i18n/malay.js +1 -1
  65. package/i18n/malay.min.js +1 -1
  66. package/i18n/nl-BE.js +1 -1
  67. package/i18n/nl-BE.min.js +1 -1
  68. package/i18n/norwegian.js +1 -1
  69. package/i18n/norwegian.min.js +1 -1
  70. package/i18n/persian.js +1 -1
  71. package/i18n/persian.min.js +1 -1
  72. package/i18n/philippines.js +1 -1
  73. package/i18n/philippines.min.js +1 -1
  74. package/i18n/polish.js +1 -1
  75. package/i18n/polish.min.js +1 -1
  76. package/i18n/portuguese-br.js +1 -1
  77. package/i18n/portuguese-br.min.js +1 -1
  78. package/i18n/portuguese.js +1 -1
  79. package/i18n/portuguese.min.js +1 -1
  80. package/i18n/romanian.js +1 -1
  81. package/i18n/romanian.min.js +1 -1
  82. package/i18n/russian.js +1 -1
  83. package/i18n/russian.min.js +1 -1
  84. package/i18n/serbian.js +1 -1
  85. package/i18n/serbian.min.js +1 -1
  86. package/i18n/simplified-chinese.js +1 -1
  87. package/i18n/simplified-chinese.min.js +1 -1
  88. package/i18n/slovak.js +1 -1
  89. package/i18n/slovak.min.js +1 -1
  90. package/i18n/spanish.js +1 -1
  91. package/i18n/spanish.min.js +1 -1
  92. package/i18n/swahili.js +1 -1
  93. package/i18n/swahili.min.js +1 -1
  94. package/i18n/swedish.js +1 -1
  95. package/i18n/swedish.min.js +1 -1
  96. package/i18n/tajik.js +1 -1
  97. package/i18n/tajik.min.js +1 -1
  98. package/i18n/telugu.js +1 -1
  99. package/i18n/telugu.min.js +1 -1
  100. package/i18n/thai.js +1 -1
  101. package/i18n/thai.min.js +1 -1
  102. package/i18n/traditional-chinese.js +1 -1
  103. package/i18n/traditional-chinese.min.js +1 -1
  104. package/i18n/turkish.js +1 -1
  105. package/i18n/turkish.min.js +1 -1
  106. package/i18n/ukrainian.js +1 -1
  107. package/i18n/ukrainian.min.js +1 -1
  108. package/i18n/urdu.js +1 -1
  109. package/i18n/urdu.min.js +1 -1
  110. package/i18n/vietnamese.js +1 -1
  111. package/i18n/vietnamese.min.js +1 -1
  112. package/i18n/welsh.js +1 -1
  113. package/i18n/welsh.min.js +1 -1
  114. package/modern.css +27 -41
  115. package/modern.css.map +1 -1
  116. package/modern.fontless.css +27 -41
  117. package/modern.fontless.css.map +1 -1
  118. package/modern.fontless.min.css +2 -2
  119. package/modern.min.css +2 -2
  120. package/package.json +1 -1
  121. package/plugins/bootstrap-integration/index.js +1 -1
  122. package/plugins/bootstrap-integration/index.min.js +1 -1
  123. package/plugins/bootstrap-material-integration/index.js +1 -1
  124. package/plugins/bootstrap-material-integration/index.min.js +1 -1
  125. package/survey.core.js +617 -309
  126. package/survey.core.js.map +1 -1
  127. package/survey.core.min.js +3 -3
  128. package/survey.css +1 -1
  129. package/survey.i18n.js +1 -1
  130. package/survey.i18n.min.js +1 -1
  131. package/survey.min.css +1 -1
  132. package/themes/borderless-dark-panelless.js +1 -1
  133. package/themes/borderless-dark-panelless.min.js +1 -1
  134. package/themes/borderless-dark.js +1 -1
  135. package/themes/borderless-dark.min.js +1 -1
  136. package/themes/borderless-light-panelless..js +1 -1
  137. package/themes/borderless-light-panelless..min.js +1 -1
  138. package/themes/borderless-light.js +1 -1
  139. package/themes/borderless-light.min.js +1 -1
  140. package/themes/contrast-dark-panelless.js +1 -1
  141. package/themes/contrast-dark-panelless.min.js +1 -1
  142. package/themes/contrast-dark.js +1 -1
  143. package/themes/contrast-dark.min.js +1 -1
  144. package/themes/contrast-light-panelless.js +1 -1
  145. package/themes/contrast-light-panelless.min.js +1 -1
  146. package/themes/contrast-light.js +1 -1
  147. package/themes/contrast-light.min.js +1 -1
  148. package/themes/default-dark-panelless.js +1 -1
  149. package/themes/default-dark-panelless.min.js +1 -1
  150. package/themes/default-dark.js +1 -1
  151. package/themes/default-dark.min.js +1 -1
  152. package/themes/default-light-panelless.js +1 -1
  153. package/themes/default-light-panelless.min.js +1 -1
  154. package/themes/default-light.js +1 -1
  155. package/themes/default-light.min.js +1 -1
  156. package/themes/doubleborder-dark-panelless.js +1 -1
  157. package/themes/doubleborder-dark-panelless.min.js +1 -1
  158. package/themes/doubleborder-dark.js +1 -1
  159. package/themes/doubleborder-dark.min.js +1 -1
  160. package/themes/doubleborder-light-panelles.js +1 -1
  161. package/themes/doubleborder-light-panelles.min.js +1 -1
  162. package/themes/doubleborder-light.js +1 -1
  163. package/themes/doubleborder-light.min.js +1 -1
  164. package/themes/flat-dark-panelless.js +1 -1
  165. package/themes/flat-dark-panelless.min.js +1 -1
  166. package/themes/flat-dark.js +1 -1
  167. package/themes/flat-dark.min.js +1 -1
  168. package/themes/flat-light-panelless.js +1 -1
  169. package/themes/flat-light-panelless.min.js +1 -1
  170. package/themes/flat-light.js +1 -1
  171. package/themes/flat-light.min.js +1 -1
  172. package/themes/index.js +1 -1
  173. package/themes/index.min.js +1 -1
  174. package/themes/layered-dark-panelless.js +1 -1
  175. package/themes/layered-dark-panelless.min.js +1 -1
  176. package/themes/layered-dark.js +1 -1
  177. package/themes/layered-dark.min.js +1 -1
  178. package/themes/layered-light-panelless.js +1 -1
  179. package/themes/layered-light-panelless.min.js +1 -1
  180. package/themes/layered-light.js +1 -1
  181. package/themes/layered-light.min.js +1 -1
  182. package/themes/plain-dark-panelless.js +1 -1
  183. package/themes/plain-dark-panelless.min.js +1 -1
  184. package/themes/plain-dark.js +1 -1
  185. package/themes/plain-dark.min.js +1 -1
  186. package/themes/plain-light-panelless.js +1 -1
  187. package/themes/plain-light-panelless.min.js +1 -1
  188. package/themes/plain-light.js +1 -1
  189. package/themes/plain-light.min.js +1 -1
  190. package/themes/sharp-dark-panelless.js +1 -1
  191. package/themes/sharp-dark-panelless.min.js +1 -1
  192. package/themes/sharp-dark.js +1 -1
  193. package/themes/sharp-dark.min.js +1 -1
  194. package/themes/sharp-light-panelless.js +1 -1
  195. package/themes/sharp-light-panelless.min.js +1 -1
  196. package/themes/sharp-light.js +1 -1
  197. package/themes/sharp-light.min.js +1 -1
  198. package/themes/solid-dark-panelless.js +1 -1
  199. package/themes/solid-dark-panelless.min.js +1 -1
  200. package/themes/solid-dark.js +1 -1
  201. package/themes/solid-dark.min.js +1 -1
  202. package/themes/solid-light-panelless.js +1 -1
  203. package/themes/solid-light-panelless.min.js +1 -1
  204. package/themes/solid-light.js +1 -1
  205. package/themes/solid-light.min.js +1 -1
  206. package/themes/three-dimensional-dark-panelless.js +1 -1
  207. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  208. package/themes/three-dimensional-dark.js +1 -1
  209. package/themes/three-dimensional-dark.min.js +1 -1
  210. package/themes/three-dimensional-light-panelless.js +1 -1
  211. package/themes/three-dimensional-light-panelless.min.js +1 -1
  212. package/themes/three-dimensional-light.js +1 -1
  213. package/themes/three-dimensional-light.min.js +1 -1
  214. package/ts3.4/typings/packages/survey-core/src/actions/action.d.ts +1 -1
  215. package/ts3.4/typings/packages/survey-core/src/choicesRestful.d.ts +1 -0
  216. package/ts3.4/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +29 -17
  217. package/ts3.4/typings/packages/survey-core/src/header.d.ts +2 -2
  218. package/ts3.4/typings/packages/survey-core/src/helpers.d.ts +1 -0
  219. package/ts3.4/typings/packages/survey-core/src/itemvalue.d.ts +3 -0
  220. package/ts3.4/typings/packages/survey-core/src/jsonobject.d.ts +1 -0
  221. package/ts3.4/typings/packages/survey-core/src/list.d.ts +1 -0
  222. package/ts3.4/typings/packages/survey-core/src/localization/english.d.ts +1 -0
  223. package/ts3.4/typings/packages/survey-core/src/martixBase.d.ts +11 -0
  224. package/ts3.4/typings/packages/survey-core/src/mask/mask_base.d.ts +1 -0
  225. package/ts3.4/typings/packages/survey-core/src/mask/mask_datetime.d.ts +1 -0
  226. package/ts3.4/typings/packages/survey-core/src/panel.d.ts +3 -0
  227. package/ts3.4/typings/packages/survey-core/src/question.d.ts +7 -4
  228. package/ts3.4/typings/packages/survey-core/src/question_baseselect.d.ts +9 -1
  229. package/ts3.4/typings/packages/survey-core/src/question_checkbox.d.ts +3 -1
  230. package/ts3.4/typings/packages/survey-core/src/question_custom.d.ts +1 -1
  231. package/ts3.4/typings/packages/survey-core/src/question_file.d.ts +1 -1
  232. package/ts3.4/typings/packages/survey-core/src/question_matrix.d.ts +1 -1
  233. package/ts3.4/typings/packages/survey-core/src/question_matrixdropdownbase.d.ts +1 -0
  234. package/ts3.4/typings/packages/survey-core/src/question_matrixdropdowncolumn.d.ts +2 -2
  235. package/ts3.4/typings/packages/survey-core/src/question_matrixdynamic.d.ts +1 -1
  236. package/ts3.4/typings/packages/survey-core/src/question_paneldynamic.d.ts +15 -15
  237. package/ts3.4/typings/packages/survey-core/src/question_tagbox.d.ts +3 -0
  238. package/ts3.4/typings/packages/survey-core/src/question_text.d.ts +1 -1
  239. package/ts3.4/typings/packages/survey-core/src/settings.d.ts +1 -1
  240. package/ts3.4/typings/packages/survey-core/src/survey-events-api.d.ts +22 -12
  241. package/ts3.4/typings/packages/survey-core/src/survey.d.ts +12 -36
  242. package/ts3.4/typings/packages/survey-core/src/surveyStrings.d.ts +1 -0
  243. package/ts3.4/typings/packages/survey-core/src/utils/animation.d.ts +1 -0
  244. package/ts3.4/typings/packages/survey-core/src/utils/responsivity-manager.d.ts +1 -2
  245. package/ts3.4/typings/packages/survey-core/src/utils/utils.d.ts +14 -0
  246. package/typings/packages/survey-core/src/actions/action.d.ts +1 -1
  247. package/typings/packages/survey-core/src/choicesRestful.d.ts +1 -0
  248. package/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +29 -17
  249. package/typings/packages/survey-core/src/header.d.ts +2 -2
  250. package/typings/packages/survey-core/src/helpers.d.ts +1 -0
  251. package/typings/packages/survey-core/src/itemvalue.d.ts +3 -0
  252. package/typings/packages/survey-core/src/jsonobject.d.ts +1 -0
  253. package/typings/packages/survey-core/src/list.d.ts +1 -0
  254. package/typings/packages/survey-core/src/localization/english.d.ts +1 -0
  255. package/typings/packages/survey-core/src/martixBase.d.ts +12 -0
  256. package/typings/packages/survey-core/src/mask/mask_base.d.ts +1 -0
  257. package/typings/packages/survey-core/src/mask/mask_datetime.d.ts +1 -0
  258. package/typings/packages/survey-core/src/panel.d.ts +3 -0
  259. package/typings/packages/survey-core/src/question.d.ts +8 -4
  260. package/typings/packages/survey-core/src/question_baseselect.d.ts +10 -1
  261. package/typings/packages/survey-core/src/question_checkbox.d.ts +3 -1
  262. package/typings/packages/survey-core/src/question_custom.d.ts +1 -1
  263. package/typings/packages/survey-core/src/question_file.d.ts +1 -1
  264. package/typings/packages/survey-core/src/question_matrix.d.ts +1 -1
  265. package/typings/packages/survey-core/src/question_matrixdropdownbase.d.ts +1 -0
  266. package/typings/packages/survey-core/src/question_matrixdropdowncolumn.d.ts +2 -2
  267. package/typings/packages/survey-core/src/question_matrixdynamic.d.ts +1 -1
  268. package/typings/packages/survey-core/src/question_paneldynamic.d.ts +15 -15
  269. package/typings/packages/survey-core/src/question_tagbox.d.ts +3 -0
  270. package/typings/packages/survey-core/src/question_text.d.ts +1 -1
  271. package/typings/packages/survey-core/src/settings.d.ts +1 -1
  272. package/typings/packages/survey-core/src/survey-events-api.d.ts +22 -12
  273. package/typings/packages/survey-core/src/survey.d.ts +12 -36
  274. package/typings/packages/survey-core/src/surveyStrings.d.ts +1 -0
  275. package/typings/packages/survey-core/src/utils/animation.d.ts +1 -0
  276. package/typings/packages/survey-core/src/utils/responsivity-manager.d.ts +1 -2
  277. package/typings/packages/survey-core/src/utils/utils.d.ts +14 -0
package/survey.core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.13
2
+ * surveyjs - Survey JavaScript library v1.12.1
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
  */
@@ -1802,6 +1802,18 @@ var helpers_Helpers = /** @class */ (function () {
1802
1802
  }
1803
1803
  return len1 === len2 ? 0 : (len1 < len2 ? -1 : 1);
1804
1804
  };
1805
+ Helpers.isUrlYoutubeVideo = function (url) {
1806
+ if (!url)
1807
+ return false;
1808
+ var youtubeDomains = ["www.youtube.com", "m.youtube.com", "youtube.com", "youtu.be"];
1809
+ url = url.toLowerCase();
1810
+ url = url.replace(/^https?:\/\//, "");
1811
+ for (var i = 0; i < youtubeDomains.length; i++) {
1812
+ if (url.indexOf(youtubeDomains[i] + "/") === 0)
1813
+ return true;
1814
+ }
1815
+ return false;
1816
+ };
1805
1817
  return Helpers;
1806
1818
  }());
1807
1819
 
@@ -1829,6 +1841,7 @@ var englishStrings = {
1829
1841
  refuseItemText: "Refuse to answer",
1830
1842
  dontKnowItemText: "Don't know",
1831
1843
  selectAllItemText: "Select All",
1844
+ deselectAllItemText: "Deselect all",
1832
1845
  progressText: "Page {0} of {1}",
1833
1846
  indexText: "{0} of {1}",
1834
1847
  panelDynamicProgressText: "{0} of {1}",
@@ -3264,13 +3277,27 @@ var JsonMetadata = /** @class */ (function () {
3264
3277
  invalidNames = [];
3265
3278
  for (var i_1 = 0; i_1 < dynamicProps.length; i_1++) {
3266
3279
  var dProp = dynamicProps[i_1];
3267
- if (!hash[dProp.name] && invalidNames.indexOf(dProp.name) < 0) {
3280
+ if (invalidNames.indexOf(dProp.name) < 0 && this.canAddDybamicProp(dProp, hash[dProp.name])) {
3268
3281
  res.push(dProp);
3269
3282
  }
3270
3283
  }
3271
3284
  this.dynamicPropsCache[cacheType] = res;
3272
3285
  return res;
3273
3286
  };
3287
+ JsonMetadata.prototype.canAddDybamicProp = function (dProp, orgProp) {
3288
+ if (!orgProp)
3289
+ return true;
3290
+ if (dProp === orgProp)
3291
+ return false;
3292
+ var classInfo = dProp.classInfo;
3293
+ while (classInfo && classInfo.parentName) {
3294
+ dProp = this.findProperty(classInfo.parentName, dProp.name);
3295
+ if (dProp && dProp === orgProp)
3296
+ return true;
3297
+ classInfo = !!dProp ? dProp.classInfo : undefined;
3298
+ }
3299
+ return false;
3300
+ };
3274
3301
  JsonMetadata.prototype.hasOriginalProperty = function (obj, propName) {
3275
3302
  return !!this.getOriginalProperty(obj, propName);
3276
3303
  };
@@ -4735,16 +4762,16 @@ function dateFromFirstParameterOrToday(params) {
4735
4762
  }
4736
4763
  return date;
4737
4764
  }
4738
- function year(params) {
4765
+ function functionsfactory_year(params) {
4739
4766
  var date = dateFromFirstParameterOrToday(params);
4740
4767
  return date.getFullYear();
4741
4768
  }
4742
- functionsfactory_FunctionFactory.Instance.register("year", year);
4743
- function month(params) {
4769
+ functionsfactory_FunctionFactory.Instance.register("year", functionsfactory_year);
4770
+ function functionsfactory_month(params) {
4744
4771
  var date = dateFromFirstParameterOrToday(params);
4745
4772
  return date.getMonth() + 1;
4746
4773
  }
4747
- functionsfactory_FunctionFactory.Instance.register("month", month);
4774
+ functionsfactory_FunctionFactory.Instance.register("month", functionsfactory_month);
4748
4775
  function day(params) {
4749
4776
  var date = dateFromFirstParameterOrToday(params);
4750
4777
  return date.getDate();
@@ -4758,6 +4785,13 @@ functionsfactory_FunctionFactory.Instance.register("weekday", weekday);
4758
4785
  function getQuestionValueByContext(context, name) {
4759
4786
  if (!context || !name)
4760
4787
  return undefined;
4788
+ var q = context.question;
4789
+ while (q && q.parent) {
4790
+ var res = q.parent.getQuestionByName(name);
4791
+ if (!!res)
4792
+ return res;
4793
+ q = q.parentQuestion;
4794
+ }
4761
4795
  var keys = ["row", "panel", "survey"];
4762
4796
  for (var i = 0; i < keys.length; i++) {
4763
4797
  var ctx = context[keys[i]];
@@ -4769,15 +4803,31 @@ function getQuestionValueByContext(context, name) {
4769
4803
  }
4770
4804
  return null;
4771
4805
  }
4806
+ function getDisplayValueReturnResult(q, params) {
4807
+ if (params.length > 1 && !helpers_Helpers.isValueEmpty(params[1]))
4808
+ return q.getDisplayValue(true, params[1]);
4809
+ return q.displayValue;
4810
+ }
4772
4811
  function displayValue(params) {
4812
+ var _this = this;
4773
4813
  var q = getQuestionValueByContext(this, params[0]);
4774
4814
  if (!q)
4775
4815
  return "";
4776
- if (params.length > 1 && !helpers_Helpers.isValueEmpty(params[1]))
4777
- return q.getDisplayValue(true, params[1]);
4778
- return q.displayValue;
4816
+ if (q.isReady) {
4817
+ this.returnResult(getDisplayValueReturnResult(q, params));
4818
+ }
4819
+ else {
4820
+ var displayValueOnReadyChanged_1 = function (sender, options) {
4821
+ if (sender.isReady) {
4822
+ sender.onReadyChanged.remove(displayValueOnReadyChanged_1);
4823
+ _this.returnResult(getDisplayValueReturnResult(sender, params));
4824
+ }
4825
+ };
4826
+ q.onReadyChanged.add(displayValueOnReadyChanged_1);
4827
+ }
4828
+ return undefined;
4779
4829
  }
4780
- functionsfactory_FunctionFactory.Instance.register("displayValue", displayValue);
4830
+ functionsfactory_FunctionFactory.Instance.register("displayValue", displayValue, true);
4781
4831
  function propertyValue(params) {
4782
4832
  if (params.length !== 2 || !params[0] || !params[1])
4783
4833
  return undefined;
@@ -9515,6 +9565,8 @@ var base_Base = /** @class */ (function () {
9515
9565
  name: name,
9516
9566
  oldValue: oldValue,
9517
9567
  newValue: newValue,
9568
+ arrayChanges: arrayChanges,
9569
+ target: target
9518
9570
  });
9519
9571
  this.doPropertyValueChangedCallback(name, oldValue, newValue, arrayChanges, this);
9520
9572
  this.checkConditionPropertyChanged(name);
@@ -10030,6 +10082,8 @@ var base_Base = /** @class */ (function () {
10030
10082
  this.onElementRenderedEventEnabled = true;
10031
10083
  };
10032
10084
  Base.prototype.disableOnElementRenderedEvent = function () {
10085
+ var _a;
10086
+ (_a = this.onElementRerendered) === null || _a === void 0 ? void 0 : _a.fire(this, { isCancel: true });
10033
10087
  this.onElementRenderedEventEnabled = false;
10034
10088
  };
10035
10089
  Object.defineProperty(Base.prototype, "onElementRerendered", {
@@ -10041,7 +10095,7 @@ var base_Base = /** @class */ (function () {
10041
10095
  });
10042
10096
  Base.prototype.afterRerender = function () {
10043
10097
  var _a;
10044
- (_a = this.onElementRerendered) === null || _a === void 0 ? void 0 : _a.fire(this, undefined);
10098
+ (_a = this.onElementRerendered) === null || _a === void 0 ? void 0 : _a.fire(this, { isCancel: false });
10045
10099
  };
10046
10100
  Base.currentDependencis = undefined;
10047
10101
  return Base;
@@ -10156,6 +10210,10 @@ var responsivity_manager_ResponsivityManager = /** @class */ (function () {
10156
10210
  function ResponsivityManager(container, model, itemsSelector, dotsItemSize, delayedUpdateFunction) {
10157
10211
  var _this = this;
10158
10212
  if (dotsItemSize === void 0) { dotsItemSize = null; }
10213
+ if (delayedUpdateFunction === void 0) { delayedUpdateFunction = function (callback) { if (queueMicrotask)
10214
+ queueMicrotask(callback);
10215
+ else
10216
+ callback(); }; }
10159
10217
  this.container = container;
10160
10218
  this.model = model;
10161
10219
  this.itemsSelector = itemsSelector;
@@ -10173,8 +10231,9 @@ var responsivity_manager_ResponsivityManager = /** @class */ (function () {
10173
10231
  return DomDocumentHelper.getComputedStyle(elt);
10174
10232
  };
10175
10233
  this.model.updateCallback = function (isResetInitialized) {
10176
- if (isResetInitialized)
10234
+ if (isResetInitialized) {
10177
10235
  _this.isInitialized = false;
10236
+ }
10178
10237
  setTimeout(function () { _this.process(); }, 1);
10179
10238
  };
10180
10239
  if (typeof ResizeObserver !== "undefined") {
@@ -10213,16 +10272,6 @@ var responsivity_manager_ResponsivityManager = /** @class */ (function () {
10213
10272
  (currentAction.needSeparator ? this.separatorSize : 0)
10214
10273
  : currentAction.maxDimension;
10215
10274
  };
10216
- ResponsivityManager.prototype.getRenderedVisibleActionsCount = function () {
10217
- var _this = this;
10218
- var count = 0;
10219
- this.container.querySelectorAll(this.itemsSelector).forEach(function (item) {
10220
- if (_this.calcItemSize(item) > 0) {
10221
- count++;
10222
- }
10223
- });
10224
- return count;
10225
- };
10226
10275
  ResponsivityManager.prototype.calcItemsSizes = function () {
10227
10276
  var _this = this;
10228
10277
  if (this.isInitialized)
@@ -10266,16 +10315,8 @@ var responsivity_manager_ResponsivityManager = /** @class */ (function () {
10266
10315
  _this.isInitialized = true;
10267
10316
  processResponsiveness_1();
10268
10317
  };
10269
- if (this.getRenderedVisibleActionsCount() < this.model.visibleActions.length) {
10270
- if (this.delayedUpdateFunction) {
10271
- this.delayedUpdateFunction(callback);
10272
- }
10273
- else if (queueMicrotask) {
10274
- queueMicrotask(callback);
10275
- }
10276
- else {
10277
- callback();
10278
- }
10318
+ if (this.delayedUpdateFunction) {
10319
+ this.delayedUpdateFunction(callback);
10279
10320
  }
10280
10321
  else {
10281
10322
  callback();
@@ -11080,6 +11121,9 @@ var list_ListModel = /** @class */ (function (_super) {
11080
11121
  list_decorate([
11081
11122
  jsonobject_property({ defaultValue: false })
11082
11123
  ], ListModel.prototype, "textWrapEnabled", void 0);
11124
+ list_decorate([
11125
+ jsonobject_property({ defaultValue: "sv-list-item-content" })
11126
+ ], ListModel.prototype, "itemComponent", void 0);
11083
11127
  return ListModel;
11084
11128
  }(container_ActionContainer));
11085
11129
 
@@ -11712,7 +11756,7 @@ var action_Action = /** @class */ (function (_super) {
11712
11756
  evt.stopPropagation();
11713
11757
  return true;
11714
11758
  };
11715
- Action.prototype.doMouseDown = function () {
11759
+ Action.prototype.doMouseDown = function (args) {
11716
11760
  this.isMouseDown = true;
11717
11761
  };
11718
11762
  Action.prototype.doFocus = function (args) {
@@ -12184,7 +12228,6 @@ var animation_AnimationUtils = /** @class */ (function () {
12184
12228
  var animationsCount = this.getAnimationsCount(element);
12185
12229
  var onEndCallback = function (isCancel) {
12186
12230
  if (isCancel === void 0) { isCancel = true; }
12187
- _this.afterAnimationRun(element, options);
12188
12231
  callback(isCancel);
12189
12232
  clearTimeout(cancelTimeout);
12190
12233
  _this.removeCancelCallback(onEndCallback);
@@ -12203,7 +12246,6 @@ var animation_AnimationUtils = /** @class */ (function () {
12203
12246
  }, this.getAnimationDuration(element) + 10);
12204
12247
  }
12205
12248
  else {
12206
- this.afterAnimationRun(element, options);
12207
12249
  callback(true);
12208
12250
  }
12209
12251
  };
@@ -12238,6 +12280,7 @@ var animation_AnimationUtils = /** @class */ (function () {
12238
12280
  element.classList.remove(cssClass);
12239
12281
  });
12240
12282
  }
12283
+ this.afterAnimationRun(element, options);
12241
12284
  };
12242
12285
  AnimationUtils.prototype.onNextRender = function (callback, isCancel) {
12243
12286
  var _this = this;
@@ -12360,7 +12403,7 @@ var animation_AnimationProperty = /** @class */ (function () {
12360
12403
  this.update = update;
12361
12404
  this.getCurrentValue = getCurrentValue;
12362
12405
  this._debouncedSync = debounce(function (newValue) {
12363
- _this.animation.cancel();
12406
+ _this.cancelAnimations();
12364
12407
  try {
12365
12408
  _this._sync(newValue);
12366
12409
  }
@@ -12393,8 +12436,13 @@ var animation_AnimationProperty = /** @class */ (function () {
12393
12436
  rerenderEvent.remove(nextRenderCallback_1);
12394
12437
  _this.cancelCallback = undefined;
12395
12438
  };
12396
- var nextRenderCallback_1 = function () {
12397
- callback();
12439
+ var nextRenderCallback_1 = function (_, options) {
12440
+ if (options.isCancel) {
12441
+ onCancel && onCancel();
12442
+ }
12443
+ else {
12444
+ callback();
12445
+ }
12398
12446
  clear_1();
12399
12447
  };
12400
12448
  this.cancelCallback = function () {
@@ -12415,6 +12463,9 @@ var animation_AnimationProperty = /** @class */ (function () {
12415
12463
  };
12416
12464
  AnimationProperty.prototype.cancel = function () {
12417
12465
  this._debouncedSync.cancel();
12466
+ this.cancelAnimations();
12467
+ };
12468
+ AnimationProperty.prototype.cancelAnimations = function () {
12418
12469
  this.cancelCallback && this.cancelCallback();
12419
12470
  this.animation.cancel();
12420
12471
  };
@@ -12460,7 +12511,8 @@ var animation_AnimationGroup = /** @class */ (function (_super) {
12460
12511
  AnimationGroup.prototype._sync = function (newValue) {
12461
12512
  var _this = this;
12462
12513
  var _a, _b;
12463
- var oldValue = this.getCurrentValue();
12514
+ newValue = [].concat(newValue);
12515
+ var oldValue = [].concat(this.getCurrentValue());
12464
12516
  var allowSyncRemovalAddition = (_a = this.animationOptions.allowSyncRemovalAddition) !== null && _a !== void 0 ? _a : true;
12465
12517
  var _c = compareArrays(oldValue, newValue, (_b = this.animationOptions.getKey) !== null && _b !== void 0 ? _b : (function (item) { return item; })), addedItems = _c.addedItems, deletedItems = _c.deletedItems, reorderedItems = _c.reorderedItems, mergedItems = _c.mergedItems;
12466
12518
  if (!allowSyncRemovalAddition && (reorderedItems.length > 0 || addedItems.length > 0)) {
@@ -12734,7 +12786,7 @@ var survey_element_SurveyElementCore = /** @class */ (function (_super) {
12734
12786
  });
12735
12787
  SurveyElementCore.prototype.getIsTitleRenderedAsString = function () { return !this.isTitleOwner; };
12736
12788
  survey_element_decorate([
12737
- jsonobject_property()
12789
+ jsonobject_property({})
12738
12790
  ], SurveyElementCore.prototype, "hasDescription", void 0);
12739
12791
  survey_element_decorate([
12740
12792
  jsonobject_property({
@@ -13903,17 +13955,18 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
13903
13955
  var _this = this;
13904
13956
  var beforeRunAnimation = function (el) {
13905
13957
  _this.isAnimatingCollapseExpand = true;
13906
- el.style.setProperty("--animation-height", el.offsetHeight + "px");
13958
+ prepareElementForVerticalAnimation(el);
13907
13959
  };
13908
13960
  var afterRunAnimation = function (el) {
13909
13961
  _this.isAnimatingCollapseExpand = false;
13962
+ cleanHtmlElementAfterAnimation(el);
13910
13963
  };
13911
13964
  return {
13912
13965
  getRerenderEvent: function () { return _this.onElementRerendered; },
13913
13966
  getEnterOptions: function () {
13914
13967
  var cssClasses = _this.isPanel ? _this.cssClasses.panel : _this.cssClasses;
13915
13968
  return {
13916
- cssClass: cssClasses.contentFadeIn,
13969
+ cssClass: cssClasses.contentEnter,
13917
13970
  onBeforeRunAnimation: beforeRunAnimation,
13918
13971
  onAfterRunAnimation: function (el) {
13919
13972
  afterRunAnimation(el);
@@ -13923,8 +13976,7 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
13923
13976
  },
13924
13977
  getLeaveOptions: function () {
13925
13978
  var cssClasses = _this.isPanel ? _this.cssClasses.panel : _this.cssClasses;
13926
- return {
13927
- cssClass: cssClasses.contentFadeOut,
13979
+ return { cssClass: cssClasses.contentLeave,
13928
13980
  onBeforeRunAnimation: beforeRunAnimation,
13929
13981
  onAfterRunAnimation: afterRunAnimation
13930
13982
  };
@@ -14756,10 +14808,20 @@ function navigateToUrl(url) {
14756
14808
  function wrapUrlForBackgroundImage(url) {
14757
14809
  return !!url ? ["url(", url, ")"].join("") : "";
14758
14810
  }
14811
+ //new-name: old-name
14812
+ var renamedIcons = {
14813
+ "folder": "chooseFile"
14814
+ };
14759
14815
  function getIconNameFromProxy(iconName) {
14760
14816
  if (!iconName)
14761
14817
  return iconName;
14762
14818
  var proxyName = settings.customIcons[iconName];
14819
+ if (!proxyName) {
14820
+ var oldName = renamedIcons[iconName];
14821
+ if (!!oldName) {
14822
+ proxyName = settings.customIcons[oldName];
14823
+ }
14824
+ }
14763
14825
  return !!proxyName ? proxyName : iconName;
14764
14826
  }
14765
14827
  function createSvg(size, width, height, iconName, svgElem, title) {
@@ -15154,6 +15216,53 @@ function compareArrays(oldValue, newValue, getKey) {
15154
15216
  });
15155
15217
  return { reorderedItems: reorderedItems, deletedItems: deletedItems, addedItems: addedItems, mergedItems: mergedItems };
15156
15218
  }
15219
+ function getVerticalDimensions(el) {
15220
+ if (DomDocumentHelper.isAvailable()) {
15221
+ var _a = DomDocumentHelper.getComputedStyle(el), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom, borderTopWidth = _a.borderTopWidth, borderBottomWidth = _a.borderBottomWidth, marginTop = _a.marginTop, marginBottom = _a.marginBottom, boxSizing = _a.boxSizing;
15222
+ var heightTo = el.offsetHeight + "px";
15223
+ if (boxSizing == "content-box") {
15224
+ var heightPx_1 = el.offsetHeight;
15225
+ [borderBottomWidth, borderTopWidth, paddingBottom, paddingTop].forEach(function (style) {
15226
+ heightPx_1 -= parseFloat(style);
15227
+ });
15228
+ heightTo = heightPx_1 + "px";
15229
+ }
15230
+ return {
15231
+ paddingTop: paddingTop,
15232
+ paddingBottom: paddingBottom,
15233
+ borderTopWidth: borderTopWidth,
15234
+ borderBottomWidth: borderBottomWidth,
15235
+ marginTop: marginTop,
15236
+ marginBottom: marginBottom,
15237
+ heightFrom: "0px",
15238
+ heightTo: heightTo
15239
+ };
15240
+ }
15241
+ else {
15242
+ return undefined;
15243
+ }
15244
+ }
15245
+ function setPropertiesOnElementForAnimation(el, styles, prefix) {
15246
+ var _a;
15247
+ if (prefix === void 0) { prefix = "--animation-"; }
15248
+ el["__sv_created_properties"] = (_a = el["__sv_created_properties"]) !== null && _a !== void 0 ? _a : [];
15249
+ Object.keys(styles).forEach(function (key) {
15250
+ var propertyName = "" + prefix + key.split(/\.?(?=[A-Z])/).join("-").toLowerCase();
15251
+ el.style.setProperty(propertyName, styles[key]);
15252
+ el["__sv_created_properties"].push(propertyName);
15253
+ });
15254
+ }
15255
+ function prepareElementForVerticalAnimation(el) {
15256
+ setPropertiesOnElementForAnimation(el, getVerticalDimensions(el));
15257
+ }
15258
+ function cleanHtmlElementAfterAnimation(el) {
15259
+ if (Array.isArray(el["__sv_created_properties"])) {
15260
+ el["__sv_created_properties"].forEach(function (propertyName) {
15261
+ el.style.removeProperty(propertyName);
15262
+ });
15263
+ delete el["__sv_created_properties"];
15264
+ }
15265
+ }
15157
15266
  function roundTo2Decimals(number) {
15158
15267
  return Math.round(number * 100) / 100;
15159
15268
  }
@@ -15646,7 +15755,7 @@ var settings = {
15646
15755
  * Nested properties:
15647
15756
  *
15648
15757
  * - `lifetime`: `number`\
15649
- * Specifies a time period during which a notification is displayed; measured in milliseconds.
15758
+ * Specifies a time period during which a notification is displayed; measured in milliseconds. Default value: 2000.
15650
15759
  */
15651
15760
  notifications: {
15652
15761
  lifetime: 2000
@@ -17213,7 +17322,7 @@ var question_Question = /** @class */ (function (_super) {
17213
17322
  _this.registerFunctionOnPropertiesValueChanged(["no", "readOnly", "hasVisibleErrors", "containsErrors"], function () {
17214
17323
  _this.updateQuestionCss();
17215
17324
  });
17216
- _this.registerPropertyChangedHandlers(["isMobile"], function () { _this.onMobileChanged(); });
17325
+ _this.registerPropertyChangedHandlers(["_isMobile"], function () { _this.onMobileChanged(); });
17217
17326
  _this.registerPropertyChangedHandlers(["colSpan"], function () { var _a; (_a = _this.parent) === null || _a === void 0 ? void 0 : _a.updateColumns(); });
17218
17327
  return _this;
17219
17328
  }
@@ -17230,8 +17339,22 @@ var question_Question = /** @class */ (function (_super) {
17230
17339
  this.setIsMobile(this.survey._isMobile);
17231
17340
  };
17232
17341
  Question.prototype.setIsMobile = function (val) {
17233
- this.isMobile = val && (this.allowMobileInDesignMode() || !this.isDesignMode);
17342
+ var newVal = val && (this.allowMobileInDesignMode() || !this.isDesignMode);
17343
+ this.isMobile = newVal;
17344
+ };
17345
+ Question.prototype.getIsMobile = function () {
17346
+ return this._isMobile;
17234
17347
  };
17348
+ Object.defineProperty(Question.prototype, "isMobile", {
17349
+ get: function () {
17350
+ return this.getIsMobile();
17351
+ },
17352
+ set: function (val) {
17353
+ this._isMobile = val;
17354
+ },
17355
+ enumerable: false,
17356
+ configurable: true
17357
+ });
17235
17358
  Question.prototype.themeChanged = function (theme) { };
17236
17359
  Question.prototype.getDefaultTitle = function () { return this.name; };
17237
17360
  Question.prototype.createLocTitleProperty = function () {
@@ -18427,6 +18550,7 @@ var question_Question = /** @class */ (function (_super) {
18427
18550
  Question.prototype.getRootCss = function () {
18428
18551
  return new CssClassBuilder()
18429
18552
  .append(this.cssRoot)
18553
+ .append(this.cssClasses.mobile, this.isMobile)
18430
18554
  .append(this.cssClasses.readOnly, this.isReadOnlyStyle)
18431
18555
  .append(this.cssClasses.disabled, this.isDisabledStyle)
18432
18556
  .append(this.cssClasses.preview, this.isPreviewStyle)
@@ -19597,7 +19721,8 @@ var question_Question = /** @class */ (function (_super) {
19597
19721
  Object.defineProperty(Question.prototype, "validators", {
19598
19722
  /**
19599
19723
  * Question validators.
19600
- * @see [Data Validation](https://surveyjs.io/form-library/documentation/data-validation)
19724
+ *
19725
+ * [Data Validation](https://surveyjs.io/form-library/documentation/data-validation (linkStyle))
19601
19726
  */
19602
19727
  get: function () {
19603
19728
  return this.getPropertyValue("validators");
@@ -19665,7 +19790,7 @@ var question_Question = /** @class */ (function (_super) {
19665
19790
  Question.prototype.hasErrors = function (fireCallback, rec) {
19666
19791
  if (fireCallback === void 0) { fireCallback = true; }
19667
19792
  if (rec === void 0) { rec = null; }
19668
- var errors = this.checkForErrors(!!rec && rec.isOnValueChanged === true);
19793
+ var errors = this.checkForErrors(!!rec && rec.isOnValueChanged === true, fireCallback);
19669
19794
  if (fireCallback) {
19670
19795
  if (!!this.survey) {
19671
19796
  this.survey.beforeSettingQuestionErrors(this, errors);
@@ -19740,18 +19865,18 @@ var question_Question = /** @class */ (function (_super) {
19740
19865
  if (index !== -1)
19741
19866
  errors.splice(index, 1);
19742
19867
  };
19743
- Question.prototype.checkForErrors = function (isOnValueChanged) {
19868
+ Question.prototype.checkForErrors = function (isOnValueChanged, fireCallback) {
19744
19869
  var qErrors = new Array();
19745
19870
  if (this.isVisible && this.canCollectErrors()) {
19746
- this.collectErrors(qErrors, isOnValueChanged);
19871
+ this.collectErrors(qErrors, isOnValueChanged, fireCallback);
19747
19872
  }
19748
19873
  return qErrors;
19749
19874
  };
19750
19875
  Question.prototype.canCollectErrors = function () {
19751
19876
  return !this.isReadOnly || settings.readOnly.enableValidation;
19752
19877
  };
19753
- Question.prototype.collectErrors = function (qErrors, isOnValueChanged) {
19754
- this.onCheckForErrors(qErrors, isOnValueChanged);
19878
+ Question.prototype.collectErrors = function (qErrors, isOnValueChanged, fireCallback) {
19879
+ this.onCheckForErrors(qErrors, isOnValueChanged, fireCallback);
19755
19880
  if (qErrors.length > 0 || !this.canRunValidators(isOnValueChanged))
19756
19881
  return;
19757
19882
  var errors = this.runValidators();
@@ -19777,7 +19902,7 @@ var question_Question = /** @class */ (function (_super) {
19777
19902
  return this.validateValueCallback();
19778
19903
  return this.survey ? this.survey.validateQuestion(this) : null;
19779
19904
  };
19780
- Question.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
19905
+ Question.prototype.onCheckForErrors = function (errors, isOnValueChanged, fireCallback) {
19781
19906
  var _this = this;
19782
19907
  if ((!isOnValueChanged || this.isOldAnswered) && this.hasRequiredError()) {
19783
19908
  var err = new AnswerRequiredError(this.requiredErrorText, this);
@@ -20370,7 +20495,7 @@ var question_Question = /** @class */ (function (_super) {
20370
20495
  Question.questionCounter = 100;
20371
20496
  question_decorate([
20372
20497
  jsonobject_property({ defaultValue: false })
20373
- ], Question.prototype, "isMobile", void 0);
20498
+ ], Question.prototype, "_isMobile", void 0);
20374
20499
  question_decorate([
20375
20500
  jsonobject_property()
20376
20501
  ], Question.prototype, "forceIsInputReadOnly", void 0);
@@ -21003,6 +21128,12 @@ var itemvalue_ItemValue = /** @class */ (function (_super) {
21003
21128
  ItemValue.prototype.setComponent = function (val) {
21004
21129
  this.componentValue = val;
21005
21130
  };
21131
+ ItemValue.prototype.setRootElement = function (val) {
21132
+ this._htmlElement = val;
21133
+ };
21134
+ ItemValue.prototype.getRootElement = function () {
21135
+ return this._htmlElement;
21136
+ };
21006
21137
  ItemValue.prototype.getEnabled = function () {
21007
21138
  return this.isEnabled;
21008
21139
  };
@@ -21774,52 +21905,32 @@ var choicesRestful_ChoicesRestful = /** @class */ (function (_super) {
21774
21905
  }
21775
21906
  return res;
21776
21907
  };
21908
+ ChoicesRestful.prototype.getAllPropertiesNames = function () {
21909
+ var res = new Array();
21910
+ Serializer.getPropertiesByObj(this).forEach(function (prop) { return res.push(prop.name); });
21911
+ this.getCustomPropertiesNames().forEach(function (prop) { return res.push(prop); });
21912
+ return res;
21913
+ };
21777
21914
  ChoicesRestful.prototype.setData = function (json) {
21778
- this.clear();
21779
- if (json.url)
21780
- this.url = json.url;
21781
- if (json.path)
21782
- this.path = json.path;
21783
- if (json.valueName)
21784
- this.valueName = json.valueName;
21785
- if (json.titleName)
21786
- this.titleName = json.titleName;
21787
- if (json.imageLinkName)
21788
- this.imageLinkName = json.imageLinkName;
21789
- if (json.allowEmptyResponse !== undefined)
21790
- this.allowEmptyResponse = json.allowEmptyResponse;
21791
- if (json.attachOriginalItems !== undefined)
21792
- this.attachOriginalItems = json.attachOriginalItems;
21793
- var properties = this.getCustomPropertiesNames();
21794
- for (var i = 0; i < properties.length; i++) {
21795
- if (json[properties[i]])
21796
- this[properties[i]] = json[properties[i]];
21797
- }
21915
+ var _this = this;
21916
+ if (!json)
21917
+ json = {};
21918
+ this.getAllPropertiesNames().forEach(function (name) {
21919
+ _this[name] = json[name];
21920
+ });
21798
21921
  };
21799
21922
  ChoicesRestful.prototype.getData = function () {
21800
- if (this.isEmpty)
21801
- return null;
21923
+ var _this = this;
21802
21924
  var res = {};
21803
- if (this.url)
21804
- res["url"] = this.url;
21805
- if (this.path)
21806
- res["path"] = this.path;
21807
- if (this.valueName)
21808
- res["valueName"] = this.valueName;
21809
- if (this.titleName)
21810
- res["titleName"] = this.titleName;
21811
- if (this.imageLinkName)
21812
- res["imageLinkName"] = this.imageLinkName;
21813
- if (this.allowEmptyResponse)
21814
- res["allowEmptyResponse"] = this.allowEmptyResponse;
21815
- if (this.attachOriginalItems)
21816
- res["attachOriginalItems"] = this.attachOriginalItems;
21817
- var properties = this.getCustomPropertiesNames();
21818
- for (var i = 0; i < properties.length; i++) {
21819
- if (this[properties[i]])
21820
- res[properties[i]] = this[properties[i]];
21821
- }
21822
- return res;
21925
+ var hasValue = false;
21926
+ this.getAllPropertiesNames().forEach(function (name) {
21927
+ var val = _this[name];
21928
+ if (!_this.isValueEmpty(val) && val !== _this.getDefaultPropertyValue(name)) {
21929
+ res[name] = val;
21930
+ hasValue = true;
21931
+ }
21932
+ });
21933
+ return hasValue ? res : null;
21823
21934
  };
21824
21935
  Object.defineProperty(ChoicesRestful.prototype, "url", {
21825
21936
  /**
@@ -21976,16 +22087,7 @@ var choicesRestful_ChoicesRestful = /** @class */ (function (_super) {
21976
22087
  configurable: true
21977
22088
  });
21978
22089
  ChoicesRestful.prototype.clear = function () {
21979
- this.url = undefined;
21980
- this.path = undefined;
21981
- this.valueName = undefined;
21982
- this.titleName = undefined;
21983
- this.imageLinkName = undefined;
21984
- var properties = this.getCustomPropertiesNames();
21985
- for (var i = 0; i < properties.length; i++) {
21986
- if (this[properties[i]])
21987
- this[properties[i]] = "";
21988
- }
22090
+ this.setData(undefined);
21989
22091
  };
21990
22092
  ChoicesRestful.prototype.beforeSendRequest = function () {
21991
22093
  this.isRunningValue = true;
@@ -22582,6 +22684,25 @@ var martixBase_QuestionMatrixBaseModel = /** @class */ (function (_super) {
22582
22684
  enumerable: false,
22583
22685
  configurable: true
22584
22686
  });
22687
+ Object.defineProperty(QuestionMatrixBaseModel.prototype, "displayMode", {
22688
+ get: function () {
22689
+ return this.getPropertyValue("displayMode");
22690
+ },
22691
+ /**
22692
+ * Specifies how to arrange matrix questions.
22693
+ *
22694
+ * Possible values:
22695
+ *
22696
+ * - `"table"` - Displays matrix questions in a table.
22697
+ * - `"list"` - Displays matrix questions one under another as a list.
22698
+ * - `"auto"` (default) - Uses the `"table"` mode if the survey has sufficient width to fit the table or the `"list"` mode otherwise.
22699
+ */
22700
+ set: function (val) {
22701
+ this.setPropertyValue("displayMode", val);
22702
+ },
22703
+ enumerable: false,
22704
+ configurable: true
22705
+ });
22585
22706
  //a11y
22586
22707
  QuestionMatrixBaseModel.prototype.getCellAriaLabel = function (rowTitle, columnTitle) {
22587
22708
  var row = (this.getLocalizationString("matrix_row") || "row").toLocaleLowerCase();
@@ -22595,6 +22716,12 @@ var martixBase_QuestionMatrixBaseModel = /** @class */ (function (_super) {
22595
22716
  enumerable: false,
22596
22717
  configurable: true
22597
22718
  });
22719
+ // EO a11y
22720
+ QuestionMatrixBaseModel.prototype.getIsMobile = function () {
22721
+ if (this.displayMode == "auto")
22722
+ return _super.prototype.getIsMobile.call(this);
22723
+ return this.displayMode === "list";
22724
+ };
22598
22725
  martixBase_decorate([
22599
22726
  jsonobject_property()
22600
22727
  ], QuestionMatrixBaseModel.prototype, "verticalAlign", void 0);
@@ -22615,7 +22742,13 @@ Serializer.addClass("matrixbase", [
22615
22742
  choices: ["top", "middle"],
22616
22743
  default: "middle",
22617
22744
  },
22618
- { name: "alternateRows:boolean", default: false }
22745
+ { name: "alternateRows:boolean", default: false },
22746
+ {
22747
+ name: "displayMode",
22748
+ default: "auto",
22749
+ choices: ["auto", "table", "list"],
22750
+ visible: false
22751
+ },
22619
22752
  ], undefined, "question");
22620
22753
 
22621
22754
  // CONCATENATED MODULE: ./packages/survey-core/src/textPreProcessor.ts
@@ -23202,8 +23335,8 @@ var question_custom_QuestionCustomModelBase = /** @class */ (function (_super) {
23202
23335
  _super.prototype.setNewValue.call(this, newValue);
23203
23336
  this.updateElementCss();
23204
23337
  };
23205
- QuestionCustomModelBase.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
23206
- _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
23338
+ QuestionCustomModelBase.prototype.onCheckForErrors = function (errors, isOnValueChanged, fireCallback) {
23339
+ _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged, fireCallback);
23207
23340
  if (!!this.customQuestion) {
23208
23341
  var text = this.customQuestion.onGetErrorText(this);
23209
23342
  if (!!text) {
@@ -25538,7 +25671,7 @@ var question_matrixdropdowncolumn_MatrixDropdownColumn = /** @class */ (function
25538
25671
  this.templateQuestion.locOwner = this;
25539
25672
  this.addProperties(curCellType);
25540
25673
  this.templateQuestion.onPropertyChanged.add(function (sender, options) {
25541
- _this.propertyValueChanged(options.name, options.oldValue, options.newValue);
25674
+ _this.propertyValueChanged(options.name, options.oldValue, options.newValue, options.arrayChanges, options.target);
25542
25675
  });
25543
25676
  this.templateQuestion.onItemValuePropertyChanged.add(function (sender, options) {
25544
25677
  _this.doItemValuePropertyChanged(options.propertyName, options.obj, options.name, options.newValue, options.oldValue);
@@ -25581,7 +25714,7 @@ var question_matrixdropdowncolumn_MatrixDropdownColumn = /** @class */ (function
25581
25714
  delete json["choices"];
25582
25715
  }
25583
25716
  delete json["itemComponent"];
25584
- if (this.jsonObj) {
25717
+ if (this.jsonObj && json.type === "rating") {
25585
25718
  Object.keys(this.jsonObj).forEach(function (prop) {
25586
25719
  json[prop] = _this.jsonObj[prop];
25587
25720
  });
@@ -25608,8 +25741,8 @@ var question_matrixdropdowncolumn_MatrixDropdownColumn = /** @class */ (function
25608
25741
  };
25609
25742
  }
25610
25743
  };
25611
- MatrixDropdownColumn.prototype.propertyValueChanged = function (name, oldValue, newValue) {
25612
- _super.prototype.propertyValueChanged.call(this, name, oldValue, newValue);
25744
+ MatrixDropdownColumn.prototype.propertyValueChanged = function (name, oldValue, newValue, arrayChanges, target) {
25745
+ _super.prototype.propertyValueChanged.call(this, name, oldValue, newValue, arrayChanges, target);
25613
25746
  if (name === "isRequired") {
25614
25747
  this.updateIsRenderedRequired(newValue);
25615
25748
  }
@@ -25793,6 +25926,7 @@ var question_matrixdropdownrendered_spreadArray = (undefined && undefined.__spre
25793
25926
 
25794
25927
 
25795
25928
 
25929
+
25796
25930
  var question_matrixdropdownrendered_QuestionMatrixDropdownRenderedCell = /** @class */ (function () {
25797
25931
  function QuestionMatrixDropdownRenderedCell() {
25798
25932
  this.minWidth = "";
@@ -26123,9 +26257,14 @@ var question_matrixdropdownrendered_QuestionMatrixDropdownRenderedTable = /** @c
26123
26257
  };
26124
26258
  QuestionMatrixDropdownRenderedTable.prototype.getRenderedRowsAnimationOptions = function () {
26125
26259
  var _this = this;
26126
- var beforeAnimationRun = function (el) {
26260
+ var onBeforeRunAnimation = function (el) {
26261
+ el.querySelectorAll(":scope > td > *").forEach(function (el) {
26262
+ prepareElementForVerticalAnimation(el);
26263
+ });
26264
+ };
26265
+ var onAfterRunAnimation = function (el) {
26127
26266
  el.querySelectorAll(":scope > td > *").forEach(function (el) {
26128
- el.style.setProperty("--animation-height", el.offsetHeight + "px");
26267
+ cleanHtmlElementAfterAnimation(el);
26129
26268
  });
26130
26269
  };
26131
26270
  return {
@@ -26137,10 +26276,10 @@ var question_matrixdropdownrendered_QuestionMatrixDropdownRenderedTable = /** @c
26137
26276
  return el.getRootElement();
26138
26277
  },
26139
26278
  getLeaveOptions: function () {
26140
- return { cssClass: _this.cssClasses.rowFadeOut, onBeforeRunAnimation: beforeAnimationRun };
26279
+ return { cssClass: _this.cssClasses.rowLeave, onBeforeRunAnimation: onBeforeRunAnimation, onAfterRunAnimation: onAfterRunAnimation };
26141
26280
  },
26142
- getEnterOptions: function () {
26143
- return { cssClass: _this.cssClasses.rowFadeIn, onBeforeRunAnimation: beforeAnimationRun };
26281
+ getEnterOptions: function (_, info) {
26282
+ return { cssClass: _this.cssClasses.rowEnter, onBeforeRunAnimation: onBeforeRunAnimation, onAfterRunAnimation: onAfterRunAnimation };
26144
26283
  }
26145
26284
  };
26146
26285
  };
@@ -27919,12 +28058,10 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
27919
28058
  "rowCount",
27920
28059
  "hasFooter",
27921
28060
  "detailPanelMode",
28061
+ "displayMode"
27922
28062
  ], function () {
27923
28063
  _this.resetRenderedTable();
27924
28064
  });
27925
- _this.registerPropertyChangedHandlers(["isMobile"], function () {
27926
- _this.resetRenderedTable();
27927
- });
27928
28065
  return _this;
27929
28066
  }
27930
28067
  Object.defineProperty(QuestionMatrixDropdownModelBase, "defaultCellType", {
@@ -29688,6 +29825,10 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
29688
29825
  enumerable: false,
29689
29826
  configurable: true
29690
29827
  });
29828
+ QuestionMatrixDropdownModelBase.prototype.onMobileChanged = function () {
29829
+ _super.prototype.onMobileChanged.call(this);
29830
+ this.resetRenderedTable();
29831
+ };
29691
29832
  QuestionMatrixDropdownModelBase.prototype.getRootCss = function () {
29692
29833
  return new CssClassBuilder().append(_super.prototype.getRootCss.call(this)).append(this.cssClasses.rootScroll, this.horizontalScroll).toString();
29693
29834
  };
@@ -30481,13 +30622,17 @@ var core_DragDropCore = /** @class */ (function () {
30481
30622
  DragDropCore.prototype.afterDragOver = function (dropTargetNode) { };
30482
30623
  DragDropCore.prototype.findDropTargetNodeFromPoint = function (clientX, clientY) {
30483
30624
  var displayProp = this.domAdapter.draggedElementShortcut.style.display;
30484
- //this.domAdapter.draggedElementShortcut.hidden = true;
30485
30625
  this.domAdapter.draggedElementShortcut.style.display = "none";
30486
30626
  if (!DomDocumentHelper.isAvailable())
30487
30627
  return null;
30488
- var dragOverNode = this.domAdapter.documentOrShadowRoot.elementFromPoint(clientX, clientY);
30489
- // this.domAdapter.draggedElementShortcut.hidden = false;
30628
+ var dragOverNodes = this.domAdapter.documentOrShadowRoot.elementsFromPoint(clientX, clientY);
30490
30629
  this.domAdapter.draggedElementShortcut.style.display = displayProp || "block";
30630
+ var index = 0;
30631
+ var dragOverNode = dragOverNodes[index];
30632
+ while (dragOverNode && dragOverNode.className && typeof dragOverNode.className.indexOf == "function" && dragOverNode.className.indexOf("sv-drag-target-skipped") != -1) {
30633
+ index++;
30634
+ dragOverNode = dragOverNodes[index];
30635
+ }
30491
30636
  if (!dragOverNode)
30492
30637
  return null;
30493
30638
  return this.findDropTargetNodeByDragOverNode(dragOverNode);
@@ -31663,8 +31808,8 @@ var question_matrixdynamic_QuestionMatrixDynamicModel = /** @class */ (function
31663
31808
  enumerable: false,
31664
31809
  configurable: true
31665
31810
  });
31666
- QuestionMatrixDynamicModel.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
31667
- _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
31811
+ QuestionMatrixDynamicModel.prototype.onCheckForErrors = function (errors, isOnValueChanged, fireCallback) {
31812
+ _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged, fireCallback);
31668
31813
  if (!isOnValueChanged && this.hasErrorInMinRows()) {
31669
31814
  errors.push(new error_MinRowCountError(this.minRowCount, this));
31670
31815
  }
@@ -31971,10 +32116,10 @@ var defaultV2Css = {
31971
32116
  edit: "sd-btn sd-btn--small",
31972
32117
  },
31973
32118
  panel: {
31974
- contentFadeIn: "sd-element__content--fade-in",
31975
- contentFadeOut: "sd-element__content--fade-out",
31976
- fadeIn: "sd-element-wrapper--fade-in",
31977
- fadeOut: "sd-element-wrapper--fade-out",
32119
+ contentEnter: "sd-element__content--enter",
32120
+ contentLeave: "sd-element__content--leave",
32121
+ enter: "sd-element-wrapper--enter",
32122
+ leave: "sd-element-wrapper--leave",
31978
32123
  asPage: "sd-panel--as-page",
31979
32124
  number: "sd-element__num",
31980
32125
  title: "sd-title sd-element__title sd-panel__title",
@@ -32035,8 +32180,8 @@ var defaultV2Css = {
32035
32180
  footerButtonsContainer: "sd-paneldynamic__buttons-container",
32036
32181
  panelsContainer: "sd-paneldynamic__panels-container",
32037
32182
  panelWrapperInRow: "sd-paneldynamic__panel-wrapper--in-row",
32038
- panelWrapperFadeIn: "sd-paneldynamic__panel-wrapper--fade-in",
32039
- panelWrapperFadeOut: "sd-paneldynamic__panel-wrapper--fade-out",
32183
+ panelWrapperEnter: "sd-paneldynamic__panel-wrapper--enter",
32184
+ panelWrapperLeave: "sd-paneldynamic__panel-wrapper--leave",
32040
32185
  panelWrapperList: "sd-paneldynamic__panel-wrapper--list",
32041
32186
  progressBtnIcon: "icon-progressbuttonv2",
32042
32187
  noEntriesPlaceholder: "sd-paneldynamic__placeholder sd-question__placeholder",
@@ -32092,15 +32237,17 @@ var defaultV2Css = {
32092
32237
  row: "sd-row sd-clearfix",
32093
32238
  rowMultiple: "sd-row--multiple",
32094
32239
  rowCompact: "sd-row--compact",
32095
- rowFadeIn: "sd-row--fade-in",
32096
- rowDelayedFadeIn: "sd-row--delayed-fade-in",
32097
- rowFadeOut: "sd-row--fade-out",
32240
+ rowEnter: "sd-row--enter",
32241
+ rowDelayedEnter: "sd-row--delayed-enter",
32242
+ rowLeave: "sd-row--leave",
32243
+ rowReplace: "sd-row--replace",
32098
32244
  pageRow: "sd-page__row",
32099
32245
  question: {
32100
- contentFadeIn: "sd-element__content--fade-in",
32101
- contentFadeOut: "sd-element__content--fade-out",
32102
- fadeIn: "sd-element-wrapper--fade-in",
32103
- fadeOut: "sd-element-wrapper--fade-out",
32246
+ contentEnter: "sd-element__content--enter",
32247
+ contentLeave: "sd-element__content--leave",
32248
+ enter: "sd-element-wrapper--enter",
32249
+ leave: "sd-element-wrapper--leave",
32250
+ mobile: "sd-question--mobile",
32104
32251
  mainRoot: "sd-element sd-question sd-row__question",
32105
32252
  flowRoot: "sd-element sd-question sd-row__question sd-row__question--flow",
32106
32253
  withFrame: "sd-element--with-frame",
@@ -32186,6 +32333,8 @@ var defaultV2Css = {
32186
32333
  rootRow: "sd-selectbase--row",
32187
32334
  rootMultiColumn: "sd-selectbase--multi-column",
32188
32335
  item: "sd-item sd-checkbox sd-selectbase__item",
32336
+ itemEnter: "sd-item--enter",
32337
+ itemLeave: "sd-item--leave",
32189
32338
  itemOnError: "sd-item--error",
32190
32339
  itemSelectAll: "sd-checkbox--selectall",
32191
32340
  itemNone: "sd-checkbox--none",
@@ -32216,6 +32365,8 @@ var defaultV2Css = {
32216
32365
  itemInline: "sd-selectbase__item--inline",
32217
32366
  label: "sd-selectbase__label",
32218
32367
  labelChecked: "",
32368
+ itemEnter: "sd-item--enter",
32369
+ itemLeave: "sd-item--leave",
32219
32370
  itemDisabled: "sd-item--disabled sd-radio--disabled",
32220
32371
  itemReadOnly: "sd-item--readonly sd-radio--readonly",
32221
32372
  itemPreview: "sd-item--preview sd-radio--preview",
@@ -32324,6 +32475,8 @@ var defaultV2Css = {
32324
32475
  other: "sd-input sd-comment sd-selectbase__other",
32325
32476
  onError: "sd-input--error",
32326
32477
  label: "sd-selectbase__label",
32478
+ itemEnter: "sd-item--enter",
32479
+ itemLeave: "sd-item--leave",
32327
32480
  item: "sd-item sd-radio sd-selectbase__item",
32328
32481
  itemDisabled: "sd-item--disabled sd-radio--disabled",
32329
32482
  itemChecked: "sd-item--checked sd-radio--checked",
@@ -32427,8 +32580,9 @@ var defaultV2Css = {
32427
32580
  errorsCellBottom: "sd-table__cell--error-bottom",
32428
32581
  itemCell: "sd-table__cell--item",
32429
32582
  row: "sd-table__row",
32430
- rowFadeIn: "sd-table__row--fade-in",
32431
- rowFadeOut: "sd-table__row--fade-out",
32583
+ rowDelayedEnter: "sd-table__row--delayed-enter",
32584
+ rowEnter: "sd-table__row--enter",
32585
+ rowLeave: "sd-table__row--leave",
32432
32586
  expandedRow: "sd-table__row--expanded",
32433
32587
  rowHasPanel: "sd-table__row--has-panel",
32434
32588
  rowHasEndActions: "sd-table__row--has-end-actions",
@@ -32468,8 +32622,9 @@ var defaultV2Css = {
32468
32622
  cell: "sd-table__cell",
32469
32623
  cellResponsiveTitle: "sd-table__responsive-title",
32470
32624
  row: "sd-table__row",
32471
- rowFadeIn: "sd-table__row--fade-in",
32472
- rowFadeOut: "sd-table__row--fade-out",
32625
+ rowDelayedEnter: "sd-table__row--delayed-enter",
32626
+ rowEnter: "sd-table__row--enter",
32627
+ rowLeave: "sd-table__row--leave",
32473
32628
  rowHasPanel: "sd-table__row--has-panel",
32474
32629
  rowHasEndActions: "sd-table__row--has-end-actions",
32475
32630
  expandedRow: "sd-table__row--expanded",
@@ -32755,6 +32910,8 @@ var defaultV2Css = {
32755
32910
  itemHover: "sd-item--allowhover sd-checkbox--allowhover",
32756
32911
  itemControl: "sd-visuallyhidden sd-item__control sd-checkbox__control",
32757
32912
  itemDecorator: "sd-item__svg sd-checkbox__svg",
32913
+ itemEnter: "sd-item--enter",
32914
+ itemLeave: "sd-item--leave",
32758
32915
  cleanButton: "sd-tagbox_clean-button sd-dropdown_clean-button",
32759
32916
  cleanButtonSvg: "sd-tagbox_clean-button-svg sd-dropdown_clean-button-svg",
32760
32917
  cleanButtonIconId: "icon-clear",
@@ -33543,7 +33700,7 @@ var header_Cover = /** @class */ (function (_super) {
33543
33700
  enumerable: false,
33544
33701
  configurable: true
33545
33702
  });
33546
- Cover.prototype.propertyValueChanged = function (name, oldValue, newValue) {
33703
+ Cover.prototype.propertyValueChanged = function (name, oldValue, newValue, arrayChanges, target) {
33547
33704
  _super.prototype.propertyValueChanged.call(this, name, oldValue, newValue);
33548
33705
  if (name === "backgroundColor" || name === "backgroundImage" || name === "overlapEnabled") {
33549
33706
  this.updateHeaderClasses();
@@ -34154,8 +34311,8 @@ var panel_QuestionRowModel = /** @class */ (function (_super) {
34154
34311
  QuestionRowModel.prototype.getVisibleElementsAnimationOptions = function () {
34155
34312
  var _this = this;
34156
34313
  var beforeRunAnimation = function (el) {
34157
- el.style.setProperty("--animation-height", el.offsetHeight + "px");
34158
- el.style.setProperty("--animation-width", getElementWidth(el) + "px");
34314
+ prepareElementForVerticalAnimation(el);
34315
+ setPropertiesOnElementForAnimation(el, { width: getElementWidth(el) + "px" });
34159
34316
  };
34160
34317
  return {
34161
34318
  getRerenderEvent: function () { return _this.onElementRerendered; },
@@ -34166,16 +34323,18 @@ var panel_QuestionRowModel = /** @class */ (function (_super) {
34166
34323
  var surveyElement = element;
34167
34324
  var cssClasses = element.isPanel ? surveyElement.cssClasses.panel : surveyElement.cssClasses;
34168
34325
  return {
34169
- cssClass: cssClasses.fadeOut,
34170
- onBeforeRunAnimation: beforeRunAnimation
34326
+ cssClass: cssClasses.leave,
34327
+ onBeforeRunAnimation: beforeRunAnimation,
34328
+ onAfterRunAnimation: cleanHtmlElementAfterAnimation
34171
34329
  };
34172
34330
  },
34173
34331
  getEnterOptions: function (element) {
34174
34332
  var surveyElement = element;
34175
34333
  var cssClasses = element.isPanel ? surveyElement.cssClasses.panel : surveyElement.cssClasses;
34176
34334
  return {
34177
- cssClass: cssClasses.fadeIn,
34178
- onBeforeRunAnimation: beforeRunAnimation
34335
+ cssClass: cssClasses.enter,
34336
+ onBeforeRunAnimation: beforeRunAnimation,
34337
+ onAfterRunAnimation: cleanHtmlElementAfterAnimation
34179
34338
  };
34180
34339
  }
34181
34340
  };
@@ -34380,24 +34539,22 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
34380
34539
  };
34381
34540
  PanelModelBase.prototype.getRowsAnimationOptions = function () {
34382
34541
  var _this = this;
34383
- var beforeRunAnimation = function (el) {
34384
- el.style.setProperty("--animation-height", el.offsetHeight + "px");
34385
- };
34386
34542
  return {
34387
34543
  getRerenderEvent: function () { return _this.onElementRerendered; },
34388
34544
  isAnimationEnabled: function () { return _this.animationAllowed; },
34389
34545
  getAnimatedElement: function (row) { return row.getRootElement(); },
34390
- getLeaveOptions: function (_) {
34391
- return {
34392
- cssClass: _this.cssClasses.rowFadeOut,
34393
- onBeforeRunAnimation: beforeRunAnimation
34546
+ getLeaveOptions: function (row, info) {
34547
+ return { cssClass: _this.cssClasses.rowLeave,
34548
+ onBeforeRunAnimation: prepareElementForVerticalAnimation,
34549
+ onAfterRunAnimation: cleanHtmlElementAfterAnimation,
34394
34550
  };
34395
34551
  },
34396
34552
  getEnterOptions: function (_, animationInfo) {
34397
34553
  var cssClasses = _this.cssClasses;
34398
34554
  return {
34399
- cssClass: new CssClassBuilder().append(cssClasses.rowFadeIn).append(cssClasses.rowDelayedFadeIn, animationInfo.isDeletingRunning).toString(),
34400
- onBeforeRunAnimation: beforeRunAnimation
34555
+ cssClass: new CssClassBuilder().append(cssClasses.rowEnter).append(cssClasses.rowDelayedEnter, animationInfo.isDeletingRunning).toString(),
34556
+ onBeforeRunAnimation: prepareElementForVerticalAnimation,
34557
+ onAfterRunAnimation: cleanHtmlElementAfterAnimation
34401
34558
  };
34402
34559
  }
34403
34560
  };
@@ -34675,7 +34832,7 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
34675
34832
  configurable: true
34676
34833
  });
34677
34834
  PanelModelBase.prototype.calcCssClasses = function (css) {
34678
- var classes = { panel: {}, error: {}, row: "", rowFadeIn: "", rowFadeOut: "", rowDelayedFadeIn: "", rowMultiple: "", pageRow: "", rowCompact: "" };
34835
+ var classes = { panel: {}, error: {}, row: "", rowEnter: "", rowLeave: "", rowDelayedEnter: "", rowMultiple: "", pageRow: "", rowCompact: "" };
34679
34836
  this.copyCssClasses(classes.panel, css.panel);
34680
34837
  this.copyCssClasses(classes.error, css.error);
34681
34838
  if (!!css.pageRow) {
@@ -34687,14 +34844,14 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
34687
34844
  if (!!css.row) {
34688
34845
  classes.row = css.row;
34689
34846
  }
34690
- if (!!css.rowFadeIn) {
34691
- classes.rowFadeIn = css.rowFadeIn;
34847
+ if (!!css.rowEnter) {
34848
+ classes.rowEnter = css.rowEnter;
34692
34849
  }
34693
- if (!!css.rowFadeOut) {
34694
- classes.rowFadeOut = css.rowFadeOut;
34850
+ if (!!css.rowLeave) {
34851
+ classes.rowLeave = css.rowLeave;
34695
34852
  }
34696
- if (!!css.rowDelayedFadeIn) {
34697
- classes.rowDelayedFadeIn = css.rowDelayedFadeIn;
34853
+ if (!!css.rowDelayedEnter) {
34854
+ classes.rowDelayedEnter = css.rowDelayedEnter;
34698
34855
  }
34699
34856
  if (!!css.rowMultiple) {
34700
34857
  classes.rowMultiple = css.rowMultiple;
@@ -35702,6 +35859,20 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
35702
35859
  }
35703
35860
  }
35704
35861
  };
35862
+ PanelModelBase.prototype.disableLazyRenderingBeforeElement = function (el) {
35863
+ var row = el ? this.findRowByElement(el) : undefined;
35864
+ var index = el ? this.rows.indexOf(row) : this.rows.length - 1;
35865
+ for (var i = index; i >= 0; i--) {
35866
+ var currentRow = this.rows[i];
35867
+ if (currentRow.isNeedRender) {
35868
+ break;
35869
+ }
35870
+ else {
35871
+ currentRow.isNeedRender = true;
35872
+ currentRow.stopLazyRendering();
35873
+ }
35874
+ }
35875
+ };
35705
35876
  PanelModelBase.prototype.findRowByElement = function (el) {
35706
35877
  var rows = this.rows;
35707
35878
  for (var i = 0; i < rows.length; i++) {
@@ -36190,6 +36361,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
36190
36361
  function PanelModel(name) {
36191
36362
  if (name === void 0) { name = ""; }
36192
36363
  var _this = _super.call(this, name) || this;
36364
+ _this.forcusFirstQuestionOnExpand = true;
36193
36365
  _this.createNewArray("footerActions");
36194
36366
  _this.registerPropertyChangedHandlers(["width"], function () {
36195
36367
  if (!!_this.parent) {
@@ -36607,8 +36779,16 @@ var panel_PanelModel = /** @class */ (function (_super) {
36607
36779
  enumerable: false,
36608
36780
  configurable: true
36609
36781
  });
36782
+ PanelModel.prototype.expand = function (focusFirstQuestion) {
36783
+ if (focusFirstQuestion === void 0) { focusFirstQuestion = true; }
36784
+ this.forcusFirstQuestionOnExpand = focusFirstQuestion;
36785
+ _super.prototype.expand.call(this);
36786
+ };
36610
36787
  PanelModel.prototype.onElementExpanded = function (elementIsRendered) {
36611
36788
  var _this = this;
36789
+ if (!this.forcusFirstQuestionOnExpand) {
36790
+ return;
36791
+ }
36612
36792
  if (this.survey != null && !this.isLoadingFromJson) {
36613
36793
  var q_1 = this.getFirstQuestionToFocus(false);
36614
36794
  if (!!q_1) {
@@ -37113,7 +37293,7 @@ var page_PageModel = /** @class */ (function (_super) {
37113
37293
  configurable: true
37114
37294
  });
37115
37295
  PageModel.prototype.calcCssClasses = function (css) {
37116
- var classes = { page: {}, error: {}, pageTitle: "", pageDescription: "", row: "", rowMultiple: "", pageRow: "", rowCompact: "", rowFadeIn: "", rowFadeOut: "", rowDelayedFadeIn: "" };
37296
+ var classes = { page: {}, error: {}, pageTitle: "", pageDescription: "", row: "", rowMultiple: "", pageRow: "", rowCompact: "", rowEnter: "", rowLeave: "", rowDelayedEnter: "", rowReplace: "" };
37117
37297
  this.copyCssClasses(classes.page, css.page);
37118
37298
  this.copyCssClasses(classes.error, css.error);
37119
37299
  if (!!css.pageTitle) {
@@ -37134,14 +37314,17 @@ var page_PageModel = /** @class */ (function (_super) {
37134
37314
  if (!!css.rowCompact) {
37135
37315
  classes.rowCompact = css.rowCompact;
37136
37316
  }
37137
- if (!!css.rowFadeIn) {
37138
- classes.rowFadeIn = css.rowFadeIn;
37317
+ if (!!css.rowEnter) {
37318
+ classes.rowEnter = css.rowEnter;
37139
37319
  }
37140
- if (!!css.rowDelayedFadeIn) {
37141
- classes.rowDelayedFadeIn = css.rowDelayedFadeIn;
37320
+ if (!!css.rowDelayedEnter) {
37321
+ classes.rowDelayedEnter = css.rowDelayedEnter;
37142
37322
  }
37143
- if (!!css.rowFadeOut) {
37144
- classes.rowFadeOut = css.rowFadeOut;
37323
+ if (!!css.rowLeave) {
37324
+ classes.rowLeave = css.rowLeave;
37325
+ }
37326
+ if (!!css.rowReplace) {
37327
+ classes.rowReplace = css.rowReplace;
37145
37328
  }
37146
37329
  if (this.survey) {
37147
37330
  this.survey.updatePageCssClasses(this, classes);
@@ -38475,6 +38658,10 @@ var survey_SurveyModel = /** @class */ (function (_super) {
38475
38658
  _this.isNavigationButtonPressed = false;
38476
38659
  _this.mouseDownPage = null;
38477
38660
  _this.isCalculatingProgressText = false;
38661
+ /**
38662
+ * An event that is raised when the survey's width or height is changed.
38663
+ */
38664
+ _this.onResize = new EventBase();
38478
38665
  _this.isCurrentPageRendering = true;
38479
38666
  _this.isCurrentPageRendered = undefined;
38480
38667
  _this.isTriggerIsRunning = false;
@@ -38963,6 +39150,16 @@ var survey_SurveyModel = /** @class */ (function (_super) {
38963
39150
  enumerable: false,
38964
39151
  configurable: true
38965
39152
  });
39153
+ SurveyModel.prototype.disableLazyRenderingBeforeElement = function (el) {
39154
+ if (this.isDesignMode) {
39155
+ var page = this.getPageByElement(el);
39156
+ var index = this.pages.indexOf(page);
39157
+ for (var i = index; i >= 0; i--) {
39158
+ var currentPage = this.pages[i];
39159
+ currentPage.disableLazyRenderingBeforeElement(currentPage == page ? el : undefined);
39160
+ }
39161
+ }
39162
+ };
38966
39163
  SurveyModel.prototype.updateLazyRenderingRowsOnRemovingElements = function () {
38967
39164
  if (!this.isLazyRendering)
38968
39165
  return;
@@ -43144,7 +43341,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43144
43341
  isProcessed_1 = false;
43145
43342
  }
43146
43343
  else {
43147
- isProcessed_1 = _this.processResponsiveness(observedElement.offsetWidth, mobileWidth_1);
43344
+ isProcessed_1 = _this.processResponsiveness(observedElement.offsetWidth, mobileWidth_1, observedElement.offsetHeight);
43148
43345
  }
43149
43346
  });
43150
43347
  });
@@ -43158,13 +43355,16 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43158
43355
  this.rootElement = htmlElement;
43159
43356
  this.addScrollEventListener();
43160
43357
  };
43161
- SurveyModel.prototype.processResponsiveness = function (width, mobileWidth) {
43358
+ SurveyModel.prototype.processResponsiveness = function (width, mobileWidth, height) {
43162
43359
  var isMobile = width < mobileWidth;
43163
43360
  var isMobileChanged = this.isMobile !== isMobile;
43164
- if (isMobileChanged) {
43165
- this.setIsMobile(isMobile);
43166
- }
43361
+ this.setIsMobile(isMobile);
43167
43362
  this.layoutElements.forEach(function (layoutElement) { return layoutElement.processResponsiveness && layoutElement.processResponsiveness(width); });
43363
+ var options = {
43364
+ height: height,
43365
+ width: width,
43366
+ };
43367
+ this.onResize.fire(this, options);
43168
43368
  return isMobileChanged;
43169
43369
  };
43170
43370
  SurveyModel.prototype.triggerResponsiveness = function (hard) {
@@ -43573,36 +43773,6 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43573
43773
  this.uploadFilesCore(name, files, callback);
43574
43774
  }
43575
43775
  };
43576
- /**
43577
- * Downloads a file from a server.
43578
- *
43579
- * The following code shows how to call this method:
43580
- *
43581
- * ```js
43582
- * const question = survey.getQuestionByName("myFileQuestion");
43583
- * survey.downloadFile(
43584
- * question,
43585
- * question.name,
43586
- * // Download the first uploaded file
43587
- * question.value[0],
43588
- * (status, data) => {
43589
- * if (status === "success") {
43590
- * // Use `data` to retrieve the file
43591
- * }
43592
- * if (status === "error") {
43593
- * // Handle error
43594
- * }
43595
- * }
43596
- * );
43597
- * ```
43598
- *
43599
- * @param question A [File Upload question instance](https://surveyjs.io/form-library/documentation/api-reference/file-model).
43600
- * @param questionName The File Upload question's [`name`](https://surveyjs.io/form-library/documentation/api-reference/file-model#name).
43601
- * @param fileValue An object from File Upload's [`value`](https://surveyjs.io/form-library/documentation/api-reference/file-model#value) array. This object contains metadata about the file you want to download.
43602
- * @param callback A callback function that allows you to get the download status (`"success"` or `"error"`) and the file identifier (URL, file name, etc.) that you can use to retrieve the file.
43603
- * @see onDownloadFile
43604
- * @see uploadFiles
43605
- */
43606
43776
  SurveyModel.prototype.downloadFile = function (question, questionName, fileValue, callback) {
43607
43777
  if (this.onDownloadFile.isEmpty) {
43608
43778
  !!callback && callback("skipped", fileValue.content || fileValue);
@@ -45388,6 +45558,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
45388
45558
  * A survey width in CSS values.
45389
45559
  *
45390
45560
  * Default value: `undefined` (the survey inherits the width from its container)
45561
+ * @see onResize
45391
45562
  */
45392
45563
  get: function () {
45393
45564
  return this.getPropertyValue("width");
@@ -46529,6 +46700,7 @@ var question_baseselect_decorate = (undefined && undefined.__decorate) || functi
46529
46700
 
46530
46701
 
46531
46702
 
46703
+
46532
46704
  /**
46533
46705
  * A base class for multiple-choice question types ([Checkboxes](https://surveyjs.io/form-library/documentation/questioncheckboxmodel), [Dropdown](https://surveyjs.io/form-library/documentation/questiondropdownmodel), [Radio Button Group](https://surveyjs.io/form-library/documentation/questionradiogroupmodel), etc.).
46534
46706
  */
@@ -46542,6 +46714,11 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
46542
46714
  _this.isRunningChoices = false;
46543
46715
  _this.isFirstLoadChoicesFromUrl = true;
46544
46716
  _this.isUpdatingChoicesDependedQuestions = false;
46717
+ _this._renderedChoices = [];
46718
+ _this.renderedChoicesAnimation = new animation_AnimationGroup(_this.getRenderedChoicesAnimationOptions(), function (val) {
46719
+ _this._renderedChoices = val;
46720
+ _this.renderedChoicesChangedCallback && _this.renderedChoicesChangedCallback();
46721
+ }, function () { return _this._renderedChoices; });
46545
46722
  _this.headItemsCount = 0;
46546
46723
  _this.footItemsCount = 0;
46547
46724
  _this.prevIsOtherSelected = false;
@@ -46561,7 +46738,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
46561
46738
  _this.registerPropertyChangedHandlers(["hideIfChoicesEmpty"], function () {
46562
46739
  _this.onVisibleChanged();
46563
46740
  });
46564
- _this.createNewArray("visibleChoices");
46741
+ _this.createNewArray("visibleChoices", function () { return _this.updateRenderedChoices(); }, function () { return _this.updateRenderedChoices(); });
46565
46742
  _this.setNewRestfulProperty();
46566
46743
  var locOtherText = _this.createLocalizableString("otherText", _this.otherItemValue, true, "otherItemText");
46567
46744
  _this.createLocalizableString("otherErrorText", _this, true, "otherRequiredError");
@@ -47179,6 +47356,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
47179
47356
  QuestionSelectBase.prototype.clearValue = function (keepComment) {
47180
47357
  _super.prototype.clearValue.call(this, keepComment);
47181
47358
  this.prevOtherValue = undefined;
47359
+ this.selectedItemValues = undefined;
47182
47360
  };
47183
47361
  QuestionSelectBase.prototype.updateCommentFromSurvey = function (newValue) {
47184
47362
  _super.prototype.updateCommentFromSurvey.call(this, newValue);
@@ -47367,6 +47545,10 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
47367
47545
  var itemValue = itemvalue_ItemValue.getItemByValue(this.getFilteredChoices(), val);
47368
47546
  return !!itemValue && !itemValue.isEnabled;
47369
47547
  };
47548
+ QuestionSelectBase.prototype.endLoadingFromJson = function () {
47549
+ _super.prototype.endLoadingFromJson.call(this);
47550
+ this.updateVisibleChoices();
47551
+ };
47370
47552
  Object.defineProperty(QuestionSelectBase.prototype, "choicesByUrl", {
47371
47553
  /**
47372
47554
  * Configures access to a RESTful service that returns choice items. Refer to the [`ChoicesRestful`](https://surveyjs.io/form-library/documentation/choicesrestful) class description for more information. You can also specify additional application-wide settings using the [`settings.web`](https://surveyjs.io/form-library/documentation/api-reference/settings#web) object.
@@ -47670,6 +47852,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
47670
47852
  var oldValue = this.visibleChoices;
47671
47853
  if (!this.isTwoValueEquals(oldValue, newValue) || this.choicesLazyLoadEnabled) {
47672
47854
  this.setArrayPropertyDirectly("visibleChoices", newValue);
47855
+ this.updateRenderedChoices();
47673
47856
  }
47674
47857
  };
47675
47858
  QuestionSelectBase.prototype.calcVisibleChoices = function () {
@@ -48051,9 +48234,9 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48051
48234
  return (!this.isDesignMode ||
48052
48235
  this.getPropertyByName(propName).visible);
48053
48236
  };
48054
- QuestionSelectBase.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
48237
+ QuestionSelectBase.prototype.onCheckForErrors = function (errors, isOnValueChanged, fireCallback) {
48055
48238
  var _this = this;
48056
- _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
48239
+ _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged, fireCallback);
48057
48240
  if (!this.hasOther || !this.isOtherSelected || this.otherValue
48058
48241
  || isOnValueChanged && !this.prevOtherErrorValue)
48059
48242
  return;
@@ -48476,12 +48659,76 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48476
48659
  .append(this.cssClasses.controlLabelChecked, this.isItemSelected(item))
48477
48660
  .toString() || undefined;
48478
48661
  };
48662
+ QuestionSelectBase.prototype.updateRenderedChoices = function () {
48663
+ this.renderedChoices = this.onGetRenderedChoicesCallback ? this.onGetRenderedChoicesCallback(this.visibleChoices) : this.visibleChoices;
48664
+ };
48665
+ QuestionSelectBase.prototype.getRenderedChoicesAnimationOptions = function () {
48666
+ var _this = this;
48667
+ return {
48668
+ isAnimationEnabled: function () {
48669
+ return _this.animationAllowed;
48670
+ },
48671
+ getRerenderEvent: function () {
48672
+ return _this.onElementRerendered;
48673
+ },
48674
+ getKey: function (item) { return item != _this.newItemValue ? item.value : _this.newItemValue; },
48675
+ getLeaveOptions: function (item) {
48676
+ var cssClass = _this.cssClasses.itemLeave;
48677
+ if (_this.hasColumns) {
48678
+ var index = _this.bodyItems.indexOf(item);
48679
+ if (index !== -1 && index !== _this.bodyItems.length - 1) {
48680
+ cssClass = "";
48681
+ }
48682
+ }
48683
+ return {
48684
+ cssClass: cssClass,
48685
+ onBeforeRunAnimation: prepareElementForVerticalAnimation,
48686
+ onAfterRunAnimation: cleanHtmlElementAfterAnimation
48687
+ };
48688
+ },
48689
+ getAnimatedElement: function (item) {
48690
+ return item.getRootElement();
48691
+ },
48692
+ getEnterOptions: function (item) {
48693
+ var cssClass = _this.cssClasses.itemEnter;
48694
+ if (_this.hasColumns) {
48695
+ var index = _this.bodyItems.indexOf(item);
48696
+ if (index !== -1 && index !== _this.bodyItems.length - 1) {
48697
+ cssClass = "";
48698
+ }
48699
+ }
48700
+ return {
48701
+ cssClass: cssClass,
48702
+ onBeforeRunAnimation: function (el) {
48703
+ if (_this.getCurrentColCount() == 0 && _this.bodyItems.indexOf(item) >= 0) {
48704
+ var leftPosition = el.parentElement.firstElementChild.offsetLeft;
48705
+ if (el.offsetLeft > leftPosition) {
48706
+ setPropertiesOnElementForAnimation(el, { moveAnimationDuration: "0s", fadeAnimationDelay: "0s" }, "--");
48707
+ }
48708
+ }
48709
+ prepareElementForVerticalAnimation(el);
48710
+ },
48711
+ onAfterRunAnimation: cleanHtmlElementAfterAnimation
48712
+ };
48713
+ }
48714
+ };
48715
+ };
48716
+ Object.defineProperty(QuestionSelectBase.prototype, "renderedChoices", {
48717
+ get: function () {
48718
+ return this._renderedChoices;
48719
+ },
48720
+ set: function (val) {
48721
+ this.renderedChoicesAnimation.sync(val);
48722
+ },
48723
+ enumerable: false,
48724
+ configurable: true
48725
+ });
48479
48726
  Object.defineProperty(QuestionSelectBase.prototype, "headItems", {
48480
48727
  get: function () {
48481
48728
  var count = (this.separateSpecialChoices || this.isDesignMode) ? this.headItemsCount : 0;
48482
48729
  var res = [];
48483
48730
  for (var i = 0; i < count; i++)
48484
- res.push(this.visibleChoices[i]);
48731
+ this.renderedChoices[i] && res.push(this.renderedChoices[i]);
48485
48732
  return res;
48486
48733
  },
48487
48734
  enumerable: false,
@@ -48491,9 +48738,9 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48491
48738
  get: function () {
48492
48739
  var count = (this.separateSpecialChoices || this.isDesignMode) ? this.footItemsCount : 0;
48493
48740
  var res = [];
48494
- var items = this.visibleChoices;
48741
+ var items = this.renderedChoices;
48495
48742
  for (var i = 0; i < count; i++)
48496
- res.push(items[items.length - count + i]);
48743
+ this.renderedChoices[items.length - count + i] && res.push(this.renderedChoices[items.length - count + i]);
48497
48744
  return res;
48498
48745
  },
48499
48746
  enumerable: false,
@@ -48502,14 +48749,14 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48502
48749
  Object.defineProperty(QuestionSelectBase.prototype, "dataChoices", {
48503
48750
  get: function () {
48504
48751
  var _this = this;
48505
- return this.visibleChoices.filter(function (item) { return !_this.isBuiltInChoice(item); });
48752
+ return this.renderedChoices.filter(function (item) { return !_this.isBuiltInChoice(item); });
48506
48753
  },
48507
48754
  enumerable: false,
48508
48755
  configurable: true
48509
48756
  });
48510
48757
  Object.defineProperty(QuestionSelectBase.prototype, "bodyItems", {
48511
48758
  get: function () {
48512
- return (this.hasHeadItems || this.hasFootItems) ? this.dataChoices : this.visibleChoices;
48759
+ return (this.hasHeadItems || this.hasFootItems) ? this.dataChoices : this.renderedChoices;
48513
48760
  },
48514
48761
  enumerable: false,
48515
48762
  configurable: true
@@ -48532,9 +48779,9 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48532
48779
  get: function () {
48533
48780
  var columns = [];
48534
48781
  var colCount = this.getCurrentColCount();
48535
- if (this.hasColumns && this.visibleChoices.length > 0) {
48782
+ if (this.hasColumns && this.renderedChoices.length > 0) {
48536
48783
  var choicesToBuildColumns = (!this.separateSpecialChoices && !this.isDesignMode) ?
48537
- this.visibleChoices : this.dataChoices;
48784
+ this.renderedChoices : this.dataChoices;
48538
48785
  if (settings.showItemsInOrder == "column") {
48539
48786
  var prevIndex = 0;
48540
48787
  var leftElementsCount = choicesToBuildColumns.length % colCount;
@@ -48730,6 +48977,9 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48730
48977
  question_baseselect_decorate([
48731
48978
  jsonobject_property({ localizable: true })
48732
48979
  ], QuestionSelectBase.prototype, "otherPlaceholder", void 0);
48980
+ question_baseselect_decorate([
48981
+ propertyArray()
48982
+ ], QuestionSelectBase.prototype, "_renderedChoices", void 0);
48733
48983
  return QuestionSelectBase;
48734
48984
  }(question_Question));
48735
48985
 
@@ -49193,14 +49443,14 @@ var popup_view_model_PopupBaseViewModel = /** @class */ (function (_super) {
49193
49443
  this.model.onHiding();
49194
49444
  };
49195
49445
  PopupBaseViewModel.prototype.getLeaveOptions = function () {
49196
- return { cssClass: "sv-popup--animate-leave", onBeforeRunAnimation: function (el) {
49446
+ return { cssClass: "sv-popup--leave", onBeforeRunAnimation: function (el) {
49197
49447
  el.setAttribute("inert", "");
49198
49448
  },
49199
49449
  onAfterRunAnimation: function (el) { return el.removeAttribute("inert"); }
49200
49450
  };
49201
49451
  };
49202
49452
  PopupBaseViewModel.prototype.getEnterOptions = function () {
49203
- return { cssClass: "sv-popup--animate-enter" };
49453
+ return { cssClass: "sv-popup--enter" };
49204
49454
  };
49205
49455
  PopupBaseViewModel.prototype.getAnimatedElement = function () {
49206
49456
  return this.getAnimationContainer();
@@ -49443,7 +49693,7 @@ var popup_view_model_PopupBaseViewModel = /** @class */ (function (_super) {
49443
49693
  };
49444
49694
  PopupBaseViewModel.prototype.updateOnHiding = function () {
49445
49695
  if (this.isFocusedContent && this.prevActiveElement) {
49446
- this.prevActiveElement.focus();
49696
+ this.prevActiveElement.focus({ preventScroll: true });
49447
49697
  }
49448
49698
  };
49449
49699
  PopupBaseViewModel.prototype.focusContainer = function () {
@@ -51610,11 +51860,11 @@ var question_matrix_QuestionMatrixModel = /** @class */ (function (_super) {
51610
51860
  QuestionMatrixModel.prototype.supportGoNextPageAutomatic = function () {
51611
51861
  return this.isMouseDown === true && this.hasValuesInAllRows();
51612
51862
  };
51613
- QuestionMatrixModel.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
51614
- _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
51863
+ QuestionMatrixModel.prototype.onCheckForErrors = function (errors, isOnValueChanged, fireCallback) {
51864
+ _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged, fireCallback);
51615
51865
  if (!isOnValueChanged || this.hasCssError()) {
51616
51866
  var rowsErrors = { noValue: false, isNotUnique: false };
51617
- this.checkErrorsAllRows(true, rowsErrors);
51867
+ this.checkErrorsAllRows(fireCallback, rowsErrors);
51618
51868
  if (rowsErrors.noValue) {
51619
51869
  errors.push(new RequiredInAllRowsError(null, this));
51620
51870
  }
@@ -52667,9 +52917,9 @@ var question_text_QuestionTextModel = /** @class */ (function (_super) {
52667
52917
  }
52668
52918
  return _super.prototype.valueFromDataCore.call(this, val);
52669
52919
  };
52670
- QuestionTextModel.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
52920
+ QuestionTextModel.prototype.onCheckForErrors = function (errors, isOnValueChanged, fireCallback) {
52671
52921
  var _this = this;
52672
- _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
52922
+ _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged, fireCallback);
52673
52923
  if (isOnValueChanged)
52674
52924
  return;
52675
52925
  if (this.isValueLessMin) {
@@ -52710,7 +52960,8 @@ var question_text_QuestionTextModel = /** @class */ (function (_super) {
52710
52960
  return isValid;
52711
52961
  };
52712
52962
  QuestionTextModel.prototype.convertFuncValuetoQuestionValue = function (val) {
52713
- return helpers_Helpers.convertValToQuestionVal(val, this.inputType);
52963
+ var type = this.maskTypeIsEmpty ? this.inputType : this.maskSettings.getTypeForExpressions();
52964
+ return helpers_Helpers.convertValToQuestionVal(val, type);
52714
52965
  };
52715
52966
  QuestionTextModel.prototype.getMinMaxErrorText = function (errorText, value) {
52716
52967
  if (helpers_Helpers.isValueEmpty(value))
@@ -52852,8 +53103,11 @@ var question_text_QuestionTextModel = /** @class */ (function (_super) {
52852
53103
  }
52853
53104
  if (this.inputType === "month") {
52854
53105
  var d = new Date(newValue);
52855
- var m = d.getMonth() + 1;
52856
- return d.getFullYear() + "-" + (m < 10 ? "0" : "") + m;
53106
+ var isUtc = d.toISOString().indexOf(newValue) == 0 && newValue.indexOf("T") == -1;
53107
+ var month = isUtc ? d.getUTCMonth() : d.getMonth();
53108
+ var year = isUtc ? d.getUTCFullYear() : d.getFullYear();
53109
+ var m = month + 1;
53110
+ return year + "-" + (m < 10 ? "0" : "") + m;
52857
53111
  }
52858
53112
  return newValue;
52859
53113
  };
@@ -54753,9 +55007,9 @@ var question_checkbox_QuestionCheckboxModel = /** @class */ (function (_super) {
54753
55007
  _this.isChangingValueOnClearIncorrect = false;
54754
55008
  _this.selectAllItemValue = new itemvalue_ItemValue("");
54755
55009
  _this.selectAllItemValue.id = "selectall";
54756
- var selectAllItemText = _this.createLocalizableString("selectAllText", _this.selectAllItem, true, "selectAllItemText");
55010
+ _this.selectAllItemText = _this.createLocalizableString("selectAllText", _this.selectAllItem, true, "selectAllItemText");
54757
55011
  _this.selectAllItem.locOwner = _this;
54758
- _this.selectAllItem.setLocText(selectAllItemText);
55012
+ _this.selectAllItem.setLocText(_this.selectAllItemText);
54759
55013
  _this.registerPropertyChangedHandlers(["showSelectAllItem", "selectAllText"], function () {
54760
55014
  _this.onVisibleChoicesChanged();
54761
55015
  });
@@ -54862,28 +55116,7 @@ var question_checkbox_QuestionCheckboxModel = /** @class */ (function (_super) {
54862
55116
  * @see showSelectAllItem
54863
55117
  */
54864
55118
  get: function () {
54865
- var noneItems = this.getNoneItems();
54866
- for (var i = 0; i < noneItems.length; i++) {
54867
- if (this.isItemSelected(noneItems[i]))
54868
- return false;
54869
- }
54870
- var items = this.getVisibleEnableItems();
54871
- if (items.length === 0)
54872
- return false;
54873
- var val = this.value;
54874
- if (!val || !Array.isArray(val) || val.length === 0)
54875
- return false;
54876
- if (val.length < items.length)
54877
- return false;
54878
- var rVal = [];
54879
- for (var i = 0; i < val.length; i++) {
54880
- rVal.push(this.getRealValue(val[i]));
54881
- }
54882
- for (var i = 0; i < items.length; i++) {
54883
- if (rVal.indexOf(items[i].value) < 0)
54884
- return false;
54885
- }
54886
- return true;
55119
+ return this.allElementsSelected();
54887
55120
  },
54888
55121
  set: function (val) {
54889
55122
  if (val) {
@@ -54899,6 +55132,30 @@ var question_checkbox_QuestionCheckboxModel = /** @class */ (function (_super) {
54899
55132
  QuestionCheckboxModel.prototype.toggleSelectAll = function () {
54900
55133
  this.isAllSelected = !this.isAllSelected;
54901
55134
  };
55135
+ QuestionCheckboxModel.prototype.allElementsSelected = function () {
55136
+ var noneItems = this.getNoneItems();
55137
+ for (var i = 0; i < noneItems.length; i++) {
55138
+ if (this.isItemSelected(noneItems[i]))
55139
+ return false;
55140
+ }
55141
+ var items = this.getVisibleEnableItems();
55142
+ if (items.length === 0)
55143
+ return false;
55144
+ var val = this.value;
55145
+ if (!val || !Array.isArray(val) || val.length === 0)
55146
+ return false;
55147
+ if (val.length < items.length)
55148
+ return false;
55149
+ var rVal = [];
55150
+ for (var i = 0; i < val.length; i++) {
55151
+ rVal.push(this.getRealValue(val[i]));
55152
+ }
55153
+ for (var i = 0; i < items.length; i++) {
55154
+ if (rVal.indexOf(items[i].value) < 0)
55155
+ return false;
55156
+ }
55157
+ return true;
55158
+ };
54902
55159
  /**
54903
55160
  * Selects all choice items, except "Other" and "None".
54904
55161
  *
@@ -55069,8 +55326,8 @@ var question_checkbox_QuestionCheckboxModel = /** @class */ (function (_super) {
55069
55326
  return val.map(function (item) { return _this.createItemValue(item); });
55070
55327
  };
55071
55328
  QuestionCheckboxModel.prototype.getAnswerCorrectIgnoreOrder = function () { return true; };
55072
- QuestionCheckboxModel.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
55073
- _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
55329
+ QuestionCheckboxModel.prototype.onCheckForErrors = function (errors, isOnValueChanged, fireCallback) {
55330
+ _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged, fireCallback);
55074
55331
  if (isOnValueChanged)
55075
55332
  return;
55076
55333
  if (this.minSelectedChoices > 0 && this.checkMinSelectedChoicesUnreached()) {
@@ -55762,6 +56019,9 @@ var dropdownMultiSelectListModel_DropdownMultiSelectListModel = /** @class */ (f
55762
56019
  };
55763
56020
  DropdownMultiSelectListModel.prototype.selectAllItems = function () {
55764
56021
  this.question.toggleSelectAll();
56022
+ if (this.question.isAllSelected && this.question.hideSelectedItems) {
56023
+ this.popupModel.hide();
56024
+ }
55765
56025
  this.updateListState();
55766
56026
  };
55767
56027
  DropdownMultiSelectListModel.prototype.selectNoneItem = function () {
@@ -55892,6 +56152,7 @@ var question_tagbox_QuestionTagboxModel = /** @class */ (function (_super) {
55892
56152
  _this.createLocalizableString("placeholder", _this, false, true);
55893
56153
  _this.createLocalizableString("clearCaption", _this, false, true);
55894
56154
  _this.createLocalizableString("readOnlyText", _this, true);
56155
+ _this.deselectAllItemText = _this.createLocalizableString("deselectAllText", _this.selectAllItem, true, "deselectAllItemText");
55895
56156
  _this.registerPropertyChangedHandlers(["value", "renderAs", "showOtherItem", "otherText", "placeholder", "choices", "visibleChoices"], function () {
55896
56157
  _this.updateReadOnlyText();
55897
56158
  });
@@ -56081,6 +56342,14 @@ var question_tagbox_QuestionTagboxModel = /** @class */ (function (_super) {
56081
56342
  (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onFocus(event);
56082
56343
  _super.prototype.onFocusCore.call(this, event);
56083
56344
  };
56345
+ QuestionTagboxModel.prototype.allElementsSelected = function () {
56346
+ var result = _super.prototype.allElementsSelected.call(this);
56347
+ this.updateSelectAllItemText(result);
56348
+ return result;
56349
+ };
56350
+ QuestionTagboxModel.prototype.updateSelectAllItemText = function (isAllSelected) {
56351
+ this.selectAllItem.setLocText(isAllSelected ? this.deselectAllItemText : this.selectAllItemText);
56352
+ };
56084
56353
  QuestionTagboxModel.prototype.dispose = function () {
56085
56354
  _super.prototype.dispose.call(this);
56086
56355
  if (!!this.dropdownListModel) {
@@ -57978,8 +58247,8 @@ var question_file_QuestionFileModelBase = /** @class */ (function (_super) {
57978
58247
  return;
57979
58248
  this.survey.clearFiles(this, this.name, this.value, null, function () { });
57980
58249
  };
57981
- QuestionFileModelBase.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
57982
- _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
58250
+ QuestionFileModelBase.prototype.onCheckForErrors = function (errors, isOnValueChanged, fireCallback) {
58251
+ _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged, fireCallback);
57983
58252
  if (this.isUploading && this.waitForUpload) {
57984
58253
  errors.push(new UploadingFileError(this.getLocalizationString("uploadingFile"), this));
57985
58254
  }
@@ -59784,12 +60053,14 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
59784
60053
  return;
59785
60054
  if (QuestionRatingModel.colorsCalculated)
59786
60055
  return;
60056
+ function getColorFromProperty(varName) {
60057
+ var style = getComputedStyle(DomDocumentHelper.getDocumentElement());
60058
+ return style.getPropertyValue && style.getPropertyValue(varName);
60059
+ }
59787
60060
  function getRGBColor(colorName, varName) {
59788
60061
  var str = !!themeVariables && themeVariables[colorName];
59789
- if (!str) {
59790
- var style = getComputedStyle(DomDocumentHelper.getDocumentElement());
59791
- str = style.getPropertyValue && style.getPropertyValue(varName);
59792
- }
60062
+ if (!str)
60063
+ str = getColorFromProperty(varName);
59793
60064
  if (!str)
59794
60065
  return null;
59795
60066
  var canvasElement = DomDocumentHelper.createElement("canvas");
@@ -59797,6 +60068,9 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
59797
60068
  return null;
59798
60069
  var ctx = canvasElement.getContext("2d");
59799
60070
  ctx.fillStyle = str;
60071
+ if (ctx.fillStyle == "#000000") {
60072
+ ctx.fillStyle = getColorFromProperty(varName);
60073
+ }
59800
60074
  var newStr = ctx.fillStyle;
59801
60075
  if (newStr.startsWith("rgba")) {
59802
60076
  return newStr.substring(5, newStr.length - 1).split(",").map(function (c) { return +(c.trim()); });
@@ -61683,21 +61957,10 @@ var question_image_decorate = (undefined && undefined.__decorate) || function (d
61683
61957
 
61684
61958
 
61685
61959
 
61686
- var youtubeDomains = ["www.youtube.com", "m.youtube.com", "youtube.com", "youtu.be"];
61960
+
61687
61961
  var videoSuffics = [".mp4", ".mov", ".wmv", ".flv", ".avi", ".mkv"];
61688
61962
  var youtubeUrl = "https://www.youtube.com/";
61689
61963
  var youtubeEmbed = "embed";
61690
- function isUrlYoutubeVideo(url) {
61691
- if (!url)
61692
- return false;
61693
- url = url.toLowerCase();
61694
- url = url.replace(/^https?:\/\//, "");
61695
- for (var i = 0; i < youtubeDomains.length; i++) {
61696
- if (url.indexOf(youtubeDomains[i] + "/") === 0)
61697
- return true;
61698
- }
61699
- return false;
61700
- }
61701
61964
  /**
61702
61965
  * A class that describes the Image question type. Unlike other question types, Image cannot have a title or value.
61703
61966
  *
@@ -61922,7 +62185,7 @@ var question_image_QuestionImageModel = /** @class */ (function (_super) {
61922
62185
  }
61923
62186
  };
61924
62187
  QuestionImageModel.prototype.isYoutubeVideo = function () {
61925
- return isUrlYoutubeVideo(this.imageLink);
62188
+ return helpers_Helpers.isUrlYoutubeVideo(this.imageLink);
61926
62189
  };
61927
62190
  QuestionImageModel.prototype.isVideo = function () {
61928
62191
  var link = this.imageLink;
@@ -61942,9 +62205,8 @@ var question_image_QuestionImageModel = /** @class */ (function (_super) {
61942
62205
  }(QuestionNonValue));
61943
62206
 
61944
62207
  function getCorrectImageLink(val, isYouTube) {
61945
- if (!val || !isUrlYoutubeVideo(val))
62208
+ if (!val || !helpers_Helpers.isUrlYoutubeVideo(val))
61946
62209
  return isYouTube ? "" : val;
61947
- //if(!val || !isUrlYoutubeVideo(val)) return val;
61948
62210
  var res = val.toLocaleLowerCase();
61949
62211
  if (res.indexOf(youtubeEmbed) > -1)
61950
62212
  return val;
@@ -62680,7 +62942,7 @@ var question_signaturepad_QuestionSignaturePadModel = /** @class */ (function (_
62680
62942
  };
62681
62943
  };
62682
62944
  QuestionSignaturePadModel.prototype.refreshCanvas = function () {
62683
- if (!this.canvas)
62945
+ if (!this.signaturePad || !this.canvas)
62684
62946
  return;
62685
62947
  if (!this.value) {
62686
62948
  this.canvas.getContext("2d").clearRect(0, 0, this.canvas.width * this.scale, this.canvas.height * this.scale);
@@ -63410,7 +63672,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63410
63672
  _this.registerPropertyChangedHandlers(["panelsState"], function () {
63411
63673
  _this.setPanelsState();
63412
63674
  });
63413
- _this.registerPropertyChangedHandlers(["isMobile", "newPanelPosition", "displayMode", "showProgressBar"], function () {
63675
+ _this.registerPropertyChangedHandlers(["newPanelPosition", "displayMode", "showProgressBar"], function () {
63414
63676
  _this.updateFooterActions();
63415
63677
  });
63416
63678
  _this.registerPropertyChangedHandlers(["allowAddPanel"], function () { _this.updateNoEntriesTextDefaultLoc(); });
@@ -63437,8 +63699,15 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63437
63699
  if (!!res)
63438
63700
  return res;
63439
63701
  }
63702
+ if (this.showAddPanelButton && (!withError || this.currentErrorCount > 0))
63703
+ return this;
63440
63704
  return null;
63441
63705
  };
63706
+ QuestionPanelDynamicModel.prototype.getFirstInputElementId = function () {
63707
+ if (this.showAddPanelButton)
63708
+ return this.addButtonId;
63709
+ return _super.prototype.getFirstInputElementId.call(this);
63710
+ };
63442
63711
  QuestionPanelDynamicModel.prototype.setSurveyImpl = function (value, isLight) {
63443
63712
  _super.prototype.setSurveyImpl.call(this, value, isLight);
63444
63713
  this.setTemplatePanelSurveyImpl();
@@ -63888,34 +64157,44 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63888
64157
  }
63889
64158
  },
63890
64159
  getEnterOptions: function () {
63891
- var cssClass = new CssClassBuilder().append(_this.cssClasses.panelWrapperFadeIn).append(getDirectionCssClass()).toString();
64160
+ var cssClass = new CssClassBuilder().append(_this.cssClasses.panelWrapperEnter).append(getDirectionCssClass()).toString();
63892
64161
  return {
63893
64162
  onBeforeRunAnimation: function (el) {
63894
- var _a;
63895
64163
  if (_this.focusNewPanelCallback) {
63896
64164
  var scolledElement = _this.isRenderModeList ? el : el.parentElement;
63897
64165
  survey_element_SurveyElement.ScrollElementToViewCore(scolledElement, false, false, { behavior: "smooth" });
63898
64166
  }
63899
- if (!_this.isRenderModeList) {
63900
- (_a = el.parentElement) === null || _a === void 0 ? void 0 : _a.style.setProperty("--animation-height-to", el.offsetHeight + "px");
64167
+ if (!_this.isRenderModeList && el.parentElement) {
64168
+ setPropertiesOnElementForAnimation(el.parentElement, { heightTo: el.offsetHeight + "px" });
63901
64169
  }
63902
64170
  else {
63903
- el.style.setProperty("--animation-height", el.offsetHeight + "px");
64171
+ prepareElementForVerticalAnimation(el);
64172
+ }
64173
+ },
64174
+ onAfterRunAnimation: function (el) {
64175
+ cleanHtmlElementAfterAnimation(el);
64176
+ if (el.parentElement) {
64177
+ cleanHtmlElementAfterAnimation(el.parentElement);
63904
64178
  }
63905
64179
  },
63906
64180
  cssClass: cssClass
63907
64181
  };
63908
64182
  },
63909
64183
  getLeaveOptions: function () {
63910
- var cssClass = new CssClassBuilder().append(_this.cssClasses.panelWrapperFadeOut).append(getDirectionCssClass()).toString();
64184
+ var cssClass = new CssClassBuilder().append(_this.cssClasses.panelWrapperLeave).append(getDirectionCssClass()).toString();
63911
64185
  return {
63912
64186
  onBeforeRunAnimation: function (el) {
63913
- var _a;
63914
- if (!_this.isRenderModeList) {
63915
- (_a = el.parentElement) === null || _a === void 0 ? void 0 : _a.style.setProperty("--animation-height-from", el.offsetHeight + "px");
64187
+ if (!_this.isRenderModeList && el.parentElement) {
64188
+ setPropertiesOnElementForAnimation(el.parentElement, { heightFrom: el.offsetHeight + "px" });
63916
64189
  }
63917
64190
  else {
63918
- el.style.setProperty("--animation-height", el.offsetHeight + "px");
64191
+ prepareElementForVerticalAnimation(el);
64192
+ }
64193
+ },
64194
+ onAfterRunAnimation: function (el) {
64195
+ cleanHtmlElementAfterAnimation(el);
64196
+ if (el.parentElement) {
64197
+ cleanHtmlElementAfterAnimation(el.parentElement);
63919
64198
  }
63920
64199
  },
63921
64200
  cssClass: cssClass
@@ -64415,6 +64694,13 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64415
64694
  enumerable: false,
64416
64695
  configurable: true
64417
64696
  });
64697
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "addButtonId", {
64698
+ get: function () {
64699
+ return this.id + "addPanel";
64700
+ },
64701
+ enumerable: false,
64702
+ configurable: true
64703
+ });
64418
64704
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "newPanelPosition", {
64419
64705
  /**
64420
64706
  * Specifies the position of newly added panels.
@@ -64636,8 +64922,9 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64636
64922
  return 0;
64637
64923
  var onSurveyNumbering = this.showQuestionNumbers === "onSurvey";
64638
64924
  var startIndex = onSurveyNumbering ? value : 0;
64639
- for (var i = 0; i < this.visiblePanelsCore.length; i++) {
64640
- var counter = this.setPanelVisibleIndex(this.visiblePanelsCore[i], startIndex, this.showQuestionNumbers != "off");
64925
+ var panels = this.isDesignMode ? [this.template] : this.visiblePanelsCore;
64926
+ for (var i = 0; i < panels.length; i++) {
64927
+ var counter = this.setPanelVisibleIndex(panels[i], startIndex, this.showQuestionNumbers != "off");
64641
64928
  if (onSurveyNumbering) {
64642
64929
  startIndex += counter;
64643
64930
  }
@@ -64805,12 +65092,11 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64805
65092
  return true;
64806
65093
  };
64807
65094
  /**
64808
- * Add a new dynamic panel based on the template Panel. It checks if canAddPanel returns true and then calls addPanel method.
64809
- * If a displayMode is different from "list" and the current panel has erros, then
64810
- * @see template
65095
+ * Adds a new panel based on the [template](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#template).
65096
+ *
65097
+ * Unlike the [`addPanel()`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#addPanel) method, `addPanelUI()` performs additional actions: checks whether a new panel [can be added](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#canAddPanel), expands and focuses the new panel, and runs animated effects.
64811
65098
  * @see panelCount
64812
65099
  * @see panels
64813
- * @see canAddPanel
64814
65100
  */
64815
65101
  QuestionPanelDynamicModel.prototype.addPanelUI = function () {
64816
65102
  if (!this.canAddPanel)
@@ -64894,13 +65180,11 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64894
65180
  }
64895
65181
  };
64896
65182
  /**
64897
- * Call removePanel function. Do nothing is canRemovePanel returns false. If confirmDelete set to true, it shows the confirmation dialog first.
64898
- * @param value a panel or panel index
64899
- * @see removePanel
64900
- * @see confirmDelete
64901
- * @see confirmDeleteText
64902
- * @see canRemovePanel
65183
+ * Deletes a panel from the [`panels`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#panels) array.
64903
65184
  *
65185
+ * Unlike the [`removePanel()`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#removePanel) method, `removePanelUI()` performs additional actions: checks whether the panel [can be removed](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#canRemovePanel) and displays a confirmation dialog (if the [`confirmDelete`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#confirmDelete) property is enabled).
65186
+ * @param value A `PanelModel` instance or zero-based panel index.
65187
+ * @see addPanelUI
64904
65188
  */
64905
65189
  QuestionPanelDynamicModel.prototype.removePanelUI = function (value) {
64906
65190
  var _this = this;
@@ -64943,6 +65227,11 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64943
65227
  return;
64944
65228
  this.currentIndex--;
64945
65229
  };
65230
+ /**
65231
+ * Deletes a panel from the [`panels`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#panels) array.
65232
+ * @param value A `PanelModel` instance or zero-based panel index.
65233
+ * @see addPanel
65234
+ */
64946
65235
  QuestionPanelDynamicModel.prototype.removePanel = function (value) {
64947
65236
  var visIndex = this.getVisualPanelIndex(value);
64948
65237
  if (visIndex < 0 || visIndex >= this.visiblePanelCount)
@@ -65160,13 +65449,18 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
65160
65449
  }
65161
65450
  }
65162
65451
  this.updateIsReady();
65163
- if (this.isReadOnly || !this.allowAddPanel) {
65452
+ if (!this.showAddPanelButton) {
65164
65453
  this.updateNoEntriesTextDefaultLoc();
65165
65454
  }
65166
65455
  this.updateFooterActions();
65167
65456
  this.isBuildingPanelsFirstTime = false;
65168
65457
  this.releaseAnimations();
65169
65458
  };
65459
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "showAddPanelButton", {
65460
+ get: function () { return this.allowAddPanel && !this.isReadOnly; },
65461
+ enumerable: false,
65462
+ configurable: true
65463
+ });
65170
65464
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "wasNotRenderedInSurvey", {
65171
65465
  get: function () {
65172
65466
  return !this.hasPanelBuildFirstTime && !this.wasRendered && !!this.survey;
@@ -65397,11 +65691,12 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
65397
65691
  for (var i = 0; i < panels.length; i++) {
65398
65692
  this.setOnCompleteAsyncInPanel(panels[i]);
65399
65693
  }
65400
- for (var i = 0; i < panels.length; i++) {
65401
- var pnlError = panels[i].hasErrors(fireCallback, !!rec && rec.focusOnFirstError, rec);
65402
- pnlError = this.isValueDuplicated(panels[i], keyValues, rec, fireCallback) || pnlError;
65403
- if (!this.isRenderModeList && pnlError && !res) {
65404
- this.currentIndex = i;
65694
+ var focusOnError = !!rec && rec.focusOnFirstError;
65695
+ for (var i_1 = 0; i_1 < panels.length; i_1++) {
65696
+ var pnlError = panels[i_1].hasErrors(fireCallback, focusOnError, rec);
65697
+ pnlError = this.isValueDuplicated(panels[i_1], keyValues, rec, fireCallback) || pnlError;
65698
+ if (!this.isRenderModeList && pnlError && !res && focusOnError) {
65699
+ this.currentIndex = i_1;
65405
65700
  }
65406
65701
  res = pnlError || res;
65407
65702
  }
@@ -65994,6 +66289,10 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
65994
66289
  }
65995
66290
  return classes;
65996
66291
  };
66292
+ QuestionPanelDynamicModel.prototype.onMobileChanged = function () {
66293
+ _super.prototype.onMobileChanged.call(this);
66294
+ this.updateFooterActions();
66295
+ };
65997
66296
  QuestionPanelDynamicModel.maxCheckCount = 3;
65998
66297
  question_paneldynamic_decorate([
65999
66298
  propertyArray({})
@@ -67664,6 +67963,9 @@ var mask_base_InputMaskBase = /** @class */ (function (_super) {
67664
67963
  InputMaskBase.prototype.getUnmaskedValue = function (src) { return src; };
67665
67964
  InputMaskBase.prototype.getMaskedValue = function (src) { return src; };
67666
67965
  InputMaskBase.prototype.getTextAlignment = function () { return "auto"; };
67966
+ InputMaskBase.prototype.getTypeForExpressions = function () {
67967
+ return "text";
67968
+ };
67667
67969
  mask_base_decorate([
67668
67970
  jsonobject_property()
67669
67971
  ], InputMaskBase.prototype, "saveMaskedValue", void 0);
@@ -68387,6 +68689,9 @@ var mask_datetime_InputMaskDateTime = /** @class */ (function (_super) {
68387
68689
  InputMaskDateTime.prototype.getType = function () {
68388
68690
  return "datetimemask";
68389
68691
  };
68692
+ InputMaskDateTime.prototype.getTypeForExpressions = function () {
68693
+ return this.hasTimePart ? "datetime-local" : "datetime";
68694
+ };
68390
68695
  InputMaskDateTime.prototype.updateLiterals = function () {
68391
68696
  this.lexems = getDateTimeLexems(this.pattern || "");
68392
68697
  };
@@ -68403,6 +68708,9 @@ var mask_datetime_InputMaskDateTime = /** @class */ (function (_super) {
68403
68708
  var _this = this;
68404
68709
  var date = new Date(str);
68405
68710
  this.initInputDateTimeData();
68711
+ if (!this.hasTimePart) {
68712
+ date = new Date(str + "T00:00:00");
68713
+ }
68406
68714
  if (!this.hasDatePart) {
68407
68715
  date = new Date(this.defaultDate + str);
68408
68716
  }
@@ -69026,8 +69334,8 @@ Serializer.addClass("currencymask", [
69026
69334
 
69027
69335
  var Version;
69028
69336
  var ReleaseDate;
69029
- Version = "" + "1.11.13";
69030
- ReleaseDate = "" + "2024-08-27";
69337
+ Version = "" + "1.12.1";
69338
+ ReleaseDate = "" + "2024-09-10";
69031
69339
  function checkLibraryVersion(ver, libraryName) {
69032
69340
  if (Version != ver) {
69033
69341
  var str = "survey-core has version '" + Version + "' and " + libraryName