survey-core 1.11.11 → 1.11.13

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 (294) hide show
  1. package/README.md +1 -2
  2. package/defaultV2.css +34 -14
  3. package/defaultV2.css.map +1 -1
  4. package/defaultV2.fontless.css +34 -14
  5. package/defaultV2.fontless.css.map +1 -1
  6. package/defaultV2.fontless.min.css +2 -2
  7. package/defaultV2.min.css +2 -2
  8. package/i18n/arabic.js +2 -4
  9. package/i18n/arabic.js.map +1 -1
  10. package/i18n/arabic.min.js +2 -2
  11. package/i18n/basque.js +2 -3
  12. package/i18n/basque.js.map +1 -1
  13. package/i18n/basque.min.js +2 -2
  14. package/i18n/bulgarian.js +2 -3
  15. package/i18n/bulgarian.js.map +1 -1
  16. package/i18n/bulgarian.min.js +2 -2
  17. package/i18n/catalan.js +2 -3
  18. package/i18n/catalan.js.map +1 -1
  19. package/i18n/catalan.min.js +2 -2
  20. package/i18n/croatian.js +2 -3
  21. package/i18n/croatian.js.map +1 -1
  22. package/i18n/croatian.min.js +2 -2
  23. package/i18n/czech.js +2 -3
  24. package/i18n/czech.js.map +1 -1
  25. package/i18n/czech.min.js +2 -2
  26. package/i18n/danish.js +2 -3
  27. package/i18n/danish.js.map +1 -1
  28. package/i18n/danish.min.js +2 -2
  29. package/i18n/dutch.js +2 -3
  30. package/i18n/dutch.js.map +1 -1
  31. package/i18n/dutch.min.js +2 -2
  32. package/i18n/english.js +2 -3
  33. package/i18n/english.js.map +1 -1
  34. package/i18n/english.min.js +1 -1
  35. package/i18n/estonian.js +2 -3
  36. package/i18n/estonian.js.map +1 -1
  37. package/i18n/estonian.min.js +2 -2
  38. package/i18n/finnish.js +2 -3
  39. package/i18n/finnish.js.map +1 -1
  40. package/i18n/finnish.min.js +2 -2
  41. package/i18n/french.js +2 -3
  42. package/i18n/french.js.map +1 -1
  43. package/i18n/french.min.js +2 -2
  44. package/i18n/georgian.js +2 -3
  45. package/i18n/georgian.js.map +1 -1
  46. package/i18n/georgian.min.js +2 -2
  47. package/i18n/german.js +2 -3
  48. package/i18n/german.js.map +1 -1
  49. package/i18n/german.min.js +2 -2
  50. package/i18n/greek.js +2 -3
  51. package/i18n/greek.js.map +1 -1
  52. package/i18n/greek.min.js +2 -2
  53. package/i18n/hebrew.js +2 -3
  54. package/i18n/hebrew.js.map +1 -1
  55. package/i18n/hebrew.min.js +2 -2
  56. package/i18n/hindi.js +2 -3
  57. package/i18n/hindi.js.map +1 -1
  58. package/i18n/hindi.min.js +2 -2
  59. package/i18n/hungarian.js +2 -3
  60. package/i18n/hungarian.js.map +1 -1
  61. package/i18n/hungarian.min.js +2 -2
  62. package/i18n/icelandic.js +2 -3
  63. package/i18n/icelandic.js.map +1 -1
  64. package/i18n/icelandic.min.js +2 -2
  65. package/i18n/index.js +51 -102
  66. package/i18n/index.js.map +1 -1
  67. package/i18n/index.min.js +2 -2
  68. package/i18n/indonesian.js +2 -3
  69. package/i18n/indonesian.js.map +1 -1
  70. package/i18n/indonesian.min.js +2 -2
  71. package/i18n/italian.js +2 -3
  72. package/i18n/italian.js.map +1 -1
  73. package/i18n/italian.min.js +2 -2
  74. package/i18n/japanese.js +2 -3
  75. package/i18n/japanese.js.map +1 -1
  76. package/i18n/japanese.min.js +2 -2
  77. package/i18n/kazakh.js +2 -3
  78. package/i18n/kazakh.js.map +1 -1
  79. package/i18n/kazakh.min.js +2 -2
  80. package/i18n/korean.js +2 -3
  81. package/i18n/korean.js.map +1 -1
  82. package/i18n/korean.min.js +2 -2
  83. package/i18n/latvian.js +2 -3
  84. package/i18n/latvian.js.map +1 -1
  85. package/i18n/latvian.min.js +2 -2
  86. package/i18n/lithuanian.js +2 -3
  87. package/i18n/lithuanian.js.map +1 -1
  88. package/i18n/lithuanian.min.js +2 -2
  89. package/i18n/macedonian.js +2 -3
  90. package/i18n/macedonian.js.map +1 -1
  91. package/i18n/macedonian.min.js +2 -2
  92. package/i18n/malay.js +2 -3
  93. package/i18n/malay.js.map +1 -1
  94. package/i18n/malay.min.js +2 -2
  95. package/i18n/nl-BE.js +3 -5
  96. package/i18n/nl-BE.js.map +1 -1
  97. package/i18n/nl-BE.min.js +2 -2
  98. package/i18n/norwegian.js +2 -3
  99. package/i18n/norwegian.js.map +1 -1
  100. package/i18n/norwegian.min.js +2 -2
  101. package/i18n/persian.js +2 -3
  102. package/i18n/persian.js.map +1 -1
  103. package/i18n/persian.min.js +2 -2
  104. package/i18n/philippines.js +2 -3
  105. package/i18n/philippines.js.map +1 -1
  106. package/i18n/philippines.min.js +2 -2
  107. package/i18n/polish.js +2 -3
  108. package/i18n/polish.js.map +1 -1
  109. package/i18n/polish.min.js +2 -2
  110. package/i18n/portuguese-br.js +2 -3
  111. package/i18n/portuguese-br.js.map +1 -1
  112. package/i18n/portuguese-br.min.js +2 -2
  113. package/i18n/portuguese.js +2 -3
  114. package/i18n/portuguese.js.map +1 -1
  115. package/i18n/portuguese.min.js +2 -2
  116. package/i18n/romanian.js +2 -3
  117. package/i18n/romanian.js.map +1 -1
  118. package/i18n/romanian.min.js +2 -2
  119. package/i18n/russian.js +2 -3
  120. package/i18n/russian.js.map +1 -1
  121. package/i18n/russian.min.js +2 -2
  122. package/i18n/serbian.js +2 -3
  123. package/i18n/serbian.js.map +1 -1
  124. package/i18n/serbian.min.js +2 -2
  125. package/i18n/simplified-chinese.js +2 -3
  126. package/i18n/simplified-chinese.js.map +1 -1
  127. package/i18n/simplified-chinese.min.js +2 -2
  128. package/i18n/slovak.js +2 -3
  129. package/i18n/slovak.js.map +1 -1
  130. package/i18n/slovak.min.js +2 -2
  131. package/i18n/spanish.js +2 -3
  132. package/i18n/spanish.js.map +1 -1
  133. package/i18n/spanish.min.js +2 -2
  134. package/i18n/swahili.js +2 -3
  135. package/i18n/swahili.js.map +1 -1
  136. package/i18n/swahili.min.js +2 -2
  137. package/i18n/swedish.js +2 -3
  138. package/i18n/swedish.js.map +1 -1
  139. package/i18n/swedish.min.js +2 -2
  140. package/i18n/tajik.js +2 -3
  141. package/i18n/tajik.js.map +1 -1
  142. package/i18n/tajik.min.js +2 -2
  143. package/i18n/telugu.js +2 -3
  144. package/i18n/telugu.js.map +1 -1
  145. package/i18n/telugu.min.js +2 -2
  146. package/i18n/thai.js +2 -3
  147. package/i18n/thai.js.map +1 -1
  148. package/i18n/thai.min.js +2 -2
  149. package/i18n/traditional-chinese.js +2 -3
  150. package/i18n/traditional-chinese.js.map +1 -1
  151. package/i18n/traditional-chinese.min.js +2 -2
  152. package/i18n/turkish.js +2 -3
  153. package/i18n/turkish.js.map +1 -1
  154. package/i18n/turkish.min.js +2 -2
  155. package/i18n/ukrainian.js +2 -3
  156. package/i18n/ukrainian.js.map +1 -1
  157. package/i18n/ukrainian.min.js +2 -2
  158. package/i18n/urdu.js +2 -3
  159. package/i18n/urdu.js.map +1 -1
  160. package/i18n/urdu.min.js +2 -2
  161. package/i18n/vietnamese.js +2 -3
  162. package/i18n/vietnamese.js.map +1 -1
  163. package/i18n/vietnamese.min.js +2 -2
  164. package/i18n/welsh.js +2 -3
  165. package/i18n/welsh.js.map +1 -1
  166. package/i18n/welsh.min.js +2 -2
  167. package/modern.css +27 -7
  168. package/modern.css.map +1 -1
  169. package/modern.fontless.css +27 -7
  170. package/modern.fontless.css.map +1 -1
  171. package/modern.fontless.min.css +2 -2
  172. package/modern.min.css +2 -2
  173. package/package.json +1 -1
  174. package/plugins/bootstrap-integration/index.js +1 -1
  175. package/plugins/bootstrap-integration/index.min.js +1 -1
  176. package/plugins/bootstrap-material-integration/index.js +1 -1
  177. package/plugins/bootstrap-material-integration/index.min.js +1 -1
  178. package/survey.core.js +319 -127
  179. package/survey.core.js.map +1 -1
  180. package/survey.core.min.js +3 -3
  181. package/survey.css +27 -7
  182. package/survey.css.map +1 -1
  183. package/survey.i18n.js +51 -102
  184. package/survey.i18n.js.map +1 -1
  185. package/survey.i18n.min.js +2 -2
  186. package/survey.min.css +2 -2
  187. package/themes/borderless-dark-panelless.js +1 -1
  188. package/themes/borderless-dark-panelless.min.js +1 -1
  189. package/themes/borderless-dark.js +1 -1
  190. package/themes/borderless-dark.min.js +1 -1
  191. package/themes/borderless-light-panelless..js +1 -1
  192. package/themes/borderless-light-panelless..min.js +1 -1
  193. package/themes/borderless-light.js +1 -1
  194. package/themes/borderless-light.min.js +1 -1
  195. package/themes/contrast-dark-panelless.js +1 -1
  196. package/themes/contrast-dark-panelless.min.js +1 -1
  197. package/themes/contrast-dark.js +1 -1
  198. package/themes/contrast-dark.min.js +1 -1
  199. package/themes/contrast-light-panelless.js +1 -1
  200. package/themes/contrast-light-panelless.min.js +1 -1
  201. package/themes/contrast-light.js +1 -1
  202. package/themes/contrast-light.min.js +1 -1
  203. package/themes/default-dark-panelless.js +1 -1
  204. package/themes/default-dark-panelless.min.js +1 -1
  205. package/themes/default-dark.js +1 -1
  206. package/themes/default-dark.min.js +1 -1
  207. package/themes/default-light-panelless.js +1 -1
  208. package/themes/default-light-panelless.min.js +1 -1
  209. package/themes/default-light.js +1 -1
  210. package/themes/default-light.min.js +1 -1
  211. package/themes/doubleborder-dark-panelless.js +1 -1
  212. package/themes/doubleborder-dark-panelless.min.js +1 -1
  213. package/themes/doubleborder-dark.js +1 -1
  214. package/themes/doubleborder-dark.min.js +1 -1
  215. package/themes/doubleborder-light-panelles.js +1 -1
  216. package/themes/doubleborder-light-panelles.min.js +1 -1
  217. package/themes/doubleborder-light.js +1 -1
  218. package/themes/doubleborder-light.min.js +1 -1
  219. package/themes/flat-dark-panelless.js +1 -1
  220. package/themes/flat-dark-panelless.min.js +1 -1
  221. package/themes/flat-dark.js +1 -1
  222. package/themes/flat-dark.min.js +1 -1
  223. package/themes/flat-light-panelless.js +1 -1
  224. package/themes/flat-light-panelless.min.js +1 -1
  225. package/themes/flat-light.js +1 -1
  226. package/themes/flat-light.min.js +1 -1
  227. package/themes/index.js +1 -1
  228. package/themes/index.min.js +1 -1
  229. package/themes/layered-dark-panelless.js +1 -1
  230. package/themes/layered-dark-panelless.min.js +1 -1
  231. package/themes/layered-dark.js +1 -1
  232. package/themes/layered-dark.min.js +1 -1
  233. package/themes/layered-light-panelless.js +1 -1
  234. package/themes/layered-light-panelless.min.js +1 -1
  235. package/themes/layered-light.js +1 -1
  236. package/themes/layered-light.min.js +1 -1
  237. package/themes/plain-dark-panelless.js +1 -1
  238. package/themes/plain-dark-panelless.min.js +1 -1
  239. package/themes/plain-dark.js +1 -1
  240. package/themes/plain-dark.min.js +1 -1
  241. package/themes/plain-light-panelless.js +1 -1
  242. package/themes/plain-light-panelless.min.js +1 -1
  243. package/themes/plain-light.js +1 -1
  244. package/themes/plain-light.min.js +1 -1
  245. package/themes/sharp-dark-panelless.js +1 -1
  246. package/themes/sharp-dark-panelless.min.js +1 -1
  247. package/themes/sharp-dark.js +1 -1
  248. package/themes/sharp-dark.min.js +1 -1
  249. package/themes/sharp-light-panelless.js +1 -1
  250. package/themes/sharp-light-panelless.min.js +1 -1
  251. package/themes/sharp-light.js +1 -1
  252. package/themes/sharp-light.min.js +1 -1
  253. package/themes/solid-dark-panelless.js +1 -1
  254. package/themes/solid-dark-panelless.min.js +1 -1
  255. package/themes/solid-dark.js +1 -1
  256. package/themes/solid-dark.min.js +1 -1
  257. package/themes/solid-light-panelless.js +1 -1
  258. package/themes/solid-light-panelless.min.js +1 -1
  259. package/themes/solid-light.js +1 -1
  260. package/themes/solid-light.min.js +1 -1
  261. package/themes/three-dimensional-dark-panelless.js +1 -1
  262. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  263. package/themes/three-dimensional-dark.js +1 -1
  264. package/themes/three-dimensional-dark.min.js +1 -1
  265. package/themes/three-dimensional-light-panelless.js +1 -1
  266. package/themes/three-dimensional-light-panelless.min.js +1 -1
  267. package/themes/three-dimensional-light.js +1 -1
  268. package/themes/three-dimensional-light.min.js +1 -1
  269. package/ts3.4/typings/packages/survey-core/src/conditions.d.ts +4 -0
  270. package/ts3.4/typings/packages/survey-core/src/expressions/expressions.d.ts +11 -5
  271. package/ts3.4/typings/packages/survey-core/src/mask/mask_utils.d.ts +1 -0
  272. package/ts3.4/typings/packages/survey-core/src/panel.d.ts +1 -0
  273. package/ts3.4/typings/packages/survey-core/src/question_baseselect.d.ts +0 -3
  274. package/ts3.4/typings/packages/survey-core/src/question_file.d.ts +1 -0
  275. package/ts3.4/typings/packages/survey-core/src/question_matrixdropdownbase.d.ts +3 -0
  276. package/ts3.4/typings/packages/survey-core/src/question_matrixdropdownrendered.d.ts +1 -0
  277. package/ts3.4/typings/packages/survey-core/src/question_multipletext.d.ts +9 -0
  278. package/ts3.4/typings/packages/survey-core/src/question_paneldynamic.d.ts +50 -37
  279. package/ts3.4/typings/packages/survey-core/src/question_text.d.ts +9 -0
  280. package/ts3.4/typings/packages/survey-core/src/surveyStrings.d.ts +7 -0
  281. package/ts3.4/typings/packages/survey-core/src/utils/camera.d.ts +2 -2
  282. package/typings/packages/survey-core/src/conditions.d.ts +4 -0
  283. package/typings/packages/survey-core/src/expressions/expressions.d.ts +11 -5
  284. package/typings/packages/survey-core/src/mask/mask_utils.d.ts +1 -0
  285. package/typings/packages/survey-core/src/panel.d.ts +1 -0
  286. package/typings/packages/survey-core/src/question_baseselect.d.ts +0 -3
  287. package/typings/packages/survey-core/src/question_file.d.ts +1 -0
  288. package/typings/packages/survey-core/src/question_matrixdropdownbase.d.ts +3 -0
  289. package/typings/packages/survey-core/src/question_matrixdropdownrendered.d.ts +1 -0
  290. package/typings/packages/survey-core/src/question_multipletext.d.ts +9 -0
  291. package/typings/packages/survey-core/src/question_paneldynamic.d.ts +49 -36
  292. package/typings/packages/survey-core/src/question_text.d.ts +9 -0
  293. package/typings/packages/survey-core/src/surveyStrings.d.ts +7 -0
  294. package/typings/packages/survey-core/src/utils/camera.d.ts +2 -2
package/survey.core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.11
2
+ * surveyjs - Survey JavaScript library v1.11.13
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
  */
@@ -1927,8 +1927,7 @@ var englishStrings = {
1927
1927
  // Uncomment the lines below if you create a custom dictionary.
1928
1928
  // Replace "en" with a custom locale code (for example, "fr" or "de"),
1929
1929
  // Replace `englishStrings` with the name of the variable that contains the custom dictionary.
1930
- // surveyLocalization.locales["en"] = englishStrings;
1931
- // surveyLocalization.localeNames["en"] = "English";
1930
+ //surveyLocalization.setupLocale("en", englishStrings, "English", "English");
1932
1931
 
1933
1932
  // CONCATENATED MODULE: ./packages/survey-core/src/surveyStrings.ts
1934
1933
 
@@ -1937,8 +1936,21 @@ var surveyLocalization = {
1937
1936
  defaultLocaleValue: "en",
1938
1937
  locales: {},
1939
1938
  localeNames: {},
1939
+ localeNamesInEnglish: {},
1940
1940
  localeDirections: {},
1941
1941
  supportedLocales: [],
1942
+ useEnglishNames: false,
1943
+ //TODO remove on next week
1944
+ get showNamesInEnglish() { return this.useEnglishNames; },
1945
+ set showNamesInEnglish(val) { this.useEnglishNames = val; },
1946
+ setupLocale: function (loc, strings, name, nameInEngish, direction) {
1947
+ this.locales[loc] = strings;
1948
+ this.localeNames[loc] = name;
1949
+ this.localeNamesInEnglish[loc] = nameInEngish;
1950
+ if (direction !== undefined) {
1951
+ this.localeDirections[loc] = direction;
1952
+ }
1953
+ },
1942
1954
  get currentLocale() {
1943
1955
  return this.currentLocaleValue === this.defaultLocaleValue ? "" : this.currentLocaleValue;
1944
1956
  },
@@ -1990,7 +2002,17 @@ var surveyLocalization = {
1990
2002
  }
1991
2003
  return this.onGetExternalString(strName, locale);
1992
2004
  },
2005
+ getLocaleName: function (loc, inEnglish) {
2006
+ if (!loc)
2007
+ return "";
2008
+ if (inEnglish === undefined)
2009
+ inEnglish = this.showNamesInEnglish;
2010
+ var firstNames = inEnglish ? this.localeNamesInEnglish : this.localeNames;
2011
+ var secondNames = inEnglish ? this.localeNames : this.localeNamesInEnglish;
2012
+ return firstNames[loc] || secondNames[loc] || loc;
2013
+ },
1993
2014
  getLocales: function (removeDefaultLoc) {
2015
+ var _this = this;
1994
2016
  if (removeDefaultLoc === void 0) { removeDefaultLoc = false; }
1995
2017
  var res = [];
1996
2018
  res.push("");
@@ -2007,12 +2029,7 @@ var surveyLocalization = {
2007
2029
  res.push(key);
2008
2030
  }
2009
2031
  var locName = function (loc) {
2010
- if (!loc)
2011
- return "";
2012
- var res = surveyLocalization.localeNames[loc];
2013
- if (!res)
2014
- res = loc;
2015
- return res.toLowerCase();
2032
+ return _this.getLocaleName(loc).toLowerCase();
2016
2033
  };
2017
2034
  res.sort(function (a, b) {
2018
2035
  var str1 = locName(a);
@@ -5267,11 +5284,27 @@ var expressions_FunctionOperand = /** @class */ (function (_super) {
5267
5284
  return true;
5268
5285
  };
5269
5286
  FunctionOperand.prototype.hasAsyncFunction = function () {
5287
+ return this.isAsyncFunction() || this.parameters.hasAsyncFunction();
5288
+ };
5289
+ FunctionOperand.prototype.isAsyncFunction = function () {
5270
5290
  return functionsfactory_FunctionFactory.Instance.isAsyncFunction(this.originalValue);
5271
5291
  };
5272
5292
  FunctionOperand.prototype.addToAsyncList = function (list) {
5273
- if (this.hasAsyncFunction()) {
5274
- list.push(this);
5293
+ var item = undefined;
5294
+ if (this.isAsyncFunction()) {
5295
+ item = { operand: this };
5296
+ }
5297
+ if (this.parameters.hasAsyncFunction()) {
5298
+ var children = new Array();
5299
+ this.parameters.addToAsyncList(children);
5300
+ children.forEach(function (child) { return child.parent = item; });
5301
+ if (!item) {
5302
+ item = {};
5303
+ }
5304
+ item.children = children;
5305
+ }
5306
+ if (item) {
5307
+ list.push(item);
5275
5308
  }
5276
5309
  };
5277
5310
  FunctionOperand.prototype.isContentEqual = function (op) {
@@ -8630,7 +8663,6 @@ var conditions_ExpressionExecutor = /** @class */ (function () {
8630
8663
  return !!this.operand;
8631
8664
  };
8632
8665
  ExpressionExecutor.prototype.run = function (values, properties) {
8633
- var _this = this;
8634
8666
  if (properties === void 0) { properties = null; }
8635
8667
  if (!this.operand) {
8636
8668
  if (!!this.expression) {
@@ -8642,25 +8674,57 @@ var conditions_ExpressionExecutor = /** @class */ (function () {
8642
8674
  this.processValue.properties = properties;
8643
8675
  if (!this.isAsync)
8644
8676
  return this.runValues();
8645
- this.asyncFuncList = [];
8677
+ this.asyncFuncList = new Array();
8646
8678
  this.operand.addToAsyncList(this.asyncFuncList);
8647
8679
  for (var i = 0; i < this.asyncFuncList.length; i++) {
8648
- this.asyncFuncList[i].onAsyncReady = function () {
8649
- _this.doAsyncFunctionReady();
8650
- };
8651
- }
8652
- for (var i = 0; i < this.asyncFuncList.length; i++) {
8653
- this.asyncFuncList[i].evaluateAsync(this.processValue);
8680
+ this.runAsyncItem(this.asyncFuncList[i]);
8654
8681
  }
8655
8682
  return false;
8656
8683
  };
8657
- ExpressionExecutor.prototype.doAsyncFunctionReady = function () {
8684
+ ExpressionExecutor.prototype.runAsyncItem = function (item) {
8685
+ var _this = this;
8686
+ if (item.children) {
8687
+ item.children.forEach(function (child) { return _this.runAsyncItem(child); });
8688
+ }
8689
+ else {
8690
+ this.runAsyncItemCore(item);
8691
+ }
8692
+ };
8693
+ ExpressionExecutor.prototype.runAsyncItemCore = function (item) {
8694
+ var _this = this;
8695
+ if (item.operand) {
8696
+ item.operand.onAsyncReady = function () { return _this.doAsyncFunctionReady(item); };
8697
+ item.operand.evaluateAsync(this.processValue);
8698
+ }
8699
+ else {
8700
+ this.doAsyncFunctionReady(item);
8701
+ }
8702
+ };
8703
+ ExpressionExecutor.prototype.doAsyncFunctionReady = function (item) {
8704
+ if (item.parent && this.isAsyncChildrenReady(item)) {
8705
+ this.runAsyncItemCore(item.parent);
8706
+ return;
8707
+ }
8658
8708
  for (var i = 0; i < this.asyncFuncList.length; i++) {
8659
- if (!this.asyncFuncList[i].isReady)
8709
+ if (!this.isAsyncFuncReady(this.asyncFuncList[i]))
8660
8710
  return;
8661
8711
  }
8662
8712
  this.runValues();
8663
8713
  };
8714
+ ExpressionExecutor.prototype.isAsyncFuncReady = function (item) {
8715
+ if (item.operand && !item.operand.isReady)
8716
+ return false;
8717
+ return this.isAsyncChildrenReady(item);
8718
+ };
8719
+ ExpressionExecutor.prototype.isAsyncChildrenReady = function (item) {
8720
+ if (item.children) {
8721
+ for (var i = 0; i < item.children.length; i++) {
8722
+ if (!this.isAsyncFuncReady(item.children[i]))
8723
+ return false;
8724
+ }
8725
+ }
8726
+ return true;
8727
+ };
8664
8728
  ExpressionExecutor.prototype.runValues = function () {
8665
8729
  var res = this.operand.evaluate(this.processValue);
8666
8730
  if (!!this.onComplete) {
@@ -25854,6 +25918,14 @@ var question_matrixdropdownrendered_QuestionMatrixDropdownRenderedCell = /** @cl
25854
25918
  enumerable: false,
25855
25919
  configurable: true
25856
25920
  });
25921
+ Object.defineProperty(QuestionMatrixDropdownRenderedCell.prototype, "isVisible", {
25922
+ get: function () {
25923
+ var _a;
25924
+ return (!this.hasQuestion && !this.isErrorsCell) || !((_a = this.matrix) === null || _a === void 0 ? void 0 : _a.isMobile) || this.question.isVisible;
25925
+ },
25926
+ enumerable: false,
25927
+ configurable: true
25928
+ });
25857
25929
  Object.defineProperty(QuestionMatrixDropdownRenderedCell.prototype, "showResponsiveTitle", {
25858
25930
  get: function () {
25859
25931
  var _a;
@@ -26899,9 +26971,6 @@ var question_matrixdropdownrendered_QuestionMatrixDropdownRenderedTable = /** @c
26899
26971
  QuestionMatrixDropdownRenderedTable.prototype.createTextCell = function (locTitle) {
26900
26972
  var cell = new question_matrixdropdownrendered_QuestionMatrixDropdownRenderedCell();
26901
26973
  cell.locTitle = locTitle;
26902
- if (!!locTitle) {
26903
- locTitle.strChanged();
26904
- }
26905
26974
  if (!!this.cssClasses.cell) {
26906
26975
  cell.className = this.cssClasses.cell;
26907
26976
  }
@@ -27423,6 +27492,9 @@ var question_matrixdropdownbase_MatrixDropdownRowModelBase = /** @class */ (func
27423
27492
  if (this.isSettingValue)
27424
27493
  return;
27425
27494
  this.updateQuestionsValue(name, newColumnValue, isComment);
27495
+ if (!isComment) {
27496
+ this.updateSharedQuestionsValue(name, newColumnValue);
27497
+ }
27426
27498
  var newValue = this.value;
27427
27499
  var changedName = isComment ? name + base_Base.commentSuffix : name;
27428
27500
  var changedValue = newColumnValue;
@@ -27468,6 +27540,18 @@ var question_matrixdropdownbase_MatrixDropdownRowModelBase = /** @class */ (func
27468
27540
  }
27469
27541
  this.isSettingValue = false;
27470
27542
  };
27543
+ MatrixDropdownRowModelBase.prototype.updateSharedQuestionsValue = function (name, value) {
27544
+ var questions = this.getQuestionsByValueName(name);
27545
+ if (questions.length > 1) {
27546
+ for (var i = 0; i < questions.length; i++) {
27547
+ if (!helpers_Helpers.isTwoValueEquals(questions[i].value, value)) {
27548
+ this.isSettingValue = true;
27549
+ questions[i].updateValueFromSurvey(value);
27550
+ this.isSettingValue = false;
27551
+ }
27552
+ }
27553
+ }
27554
+ };
27471
27555
  MatrixDropdownRowModelBase.prototype.runTriggers = function (name, value) {
27472
27556
  if (!name)
27473
27557
  return;
@@ -27556,6 +27640,19 @@ var question_matrixdropdownbase_MatrixDropdownRowModelBase = /** @class */ (func
27556
27640
  }
27557
27641
  return res;
27558
27642
  };
27643
+ MatrixDropdownRowModelBase.prototype.getQuestionsByValueName = function (name) {
27644
+ var res = [];
27645
+ for (var i = 0; i < this.cells.length; i++) {
27646
+ var cell = this.cells[i];
27647
+ if (cell.question && cell.question.getValueName() === name) {
27648
+ res.push(cell.question);
27649
+ }
27650
+ }
27651
+ if (!!this.detailPanel) {
27652
+ res = res.concat(this.detailPanel.getQuestionsByValueName(name));
27653
+ }
27654
+ return res;
27655
+ };
27559
27656
  MatrixDropdownRowModelBase.prototype.getSharedQuestionByName = function (columnName) {
27560
27657
  return !!this.data
27561
27658
  ? this.data.getSharedQuestionByName(columnName, this)
@@ -27659,6 +27756,9 @@ var question_matrixdropdownbase_MatrixDropdownRowModelBase = /** @class */ (func
27659
27756
  return res;
27660
27757
  };
27661
27758
  MatrixDropdownRowModelBase.prototype.updateCellOnColumnChanged = function (cell, name, newValue) {
27759
+ if (name === "choices" && Array.isArray(newValue) && newValue.length === 0 && this.data) {
27760
+ newValue = this.data.choices;
27761
+ }
27662
27762
  cell.question[name] = newValue;
27663
27763
  };
27664
27764
  MatrixDropdownRowModelBase.prototype.updateCellOnColumnItemValueChanged = function (cell, propertyName, obj, name, newValue, oldValue) {
@@ -29610,6 +29710,7 @@ Serializer.addClass("matrixdropdownbase", [
29610
29710
  },
29611
29711
  {
29612
29712
  name: "detailElements",
29713
+ baseClassName: "question",
29613
29714
  visible: false,
29614
29715
  isLightSerializable: false,
29615
29716
  },
@@ -34711,12 +34812,17 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
34711
34812
  return null;
34712
34813
  };
34713
34814
  PanelModelBase.prototype.getQuestionByValueName = function (valueName) {
34815
+ var res = this.getQuestionsByValueName(valueName);
34816
+ return res.length > 0 ? res[0] : null;
34817
+ };
34818
+ PanelModelBase.prototype.getQuestionsByValueName = function (valueName) {
34819
+ var res = [];
34714
34820
  var questions = this.questions;
34715
34821
  for (var i = 0; i < questions.length; i++) {
34716
34822
  if (questions[i].getValueName() == valueName)
34717
- return questions[i];
34823
+ res.push(questions[i]);
34718
34824
  }
34719
- return null;
34825
+ return res;
34720
34826
  };
34721
34827
  /**
34722
34828
  * Returns a JSON object with question values nested in the panel/page.
@@ -38352,14 +38458,6 @@ var survey_SurveyModel = /** @class */ (function (_super) {
38352
38458
  _this._isMobile = false;
38353
38459
  _this._isCompact = false;
38354
38460
  _this._isDesignMode = false;
38355
- /**
38356
- * Specifies whether data validation is enabled.
38357
- *
38358
- * Default value: `true`
38359
- * @see checkErrorsMode
38360
- * @see hideRequiredErrors
38361
- */
38362
- _this.validationEnabled = true;
38363
38461
  /**
38364
38462
  * Specifies whether respondents can switch the current page even if it contains validation errors.
38365
38463
  *
@@ -46079,6 +46177,9 @@ var survey_SurveyModel = /** @class */ (function (_super) {
46079
46177
  survey_decorate([
46080
46178
  jsonobject_property()
46081
46179
  ], SurveyModel.prototype, "progressBarInheritWidthFrom", void 0);
46180
+ survey_decorate([
46181
+ jsonobject_property({ defaultValue: true })
46182
+ ], SurveyModel.prototype, "validationEnabled", void 0);
46082
46183
  survey_decorate([
46083
46184
  jsonobject_property()
46084
46185
  ], SurveyModel.prototype, "rootCss", void 0);
@@ -52070,6 +52171,22 @@ var InputElementAdapter = /** @class */ (function () {
52070
52171
  }());
52071
52172
 
52072
52173
 
52174
+ // CONCATENATED MODULE: ./packages/survey-core/src/mask/mask_utils.ts
52175
+
52176
+ var numberDefinition = /[0-9]/;
52177
+ function getAvailableMaskTypeChoices() {
52178
+ var classes = Serializer.getChildrenClasses("masksettings") || [];
52179
+ var choices = classes.map(function (cl) {
52180
+ var value = cl.name;
52181
+ if (cl.name.indexOf("mask") !== -1) {
52182
+ value = value.slice(0, value.indexOf("mask"));
52183
+ }
52184
+ return value;
52185
+ });
52186
+ choices.unshift("none");
52187
+ return choices;
52188
+ }
52189
+
52073
52190
  // CONCATENATED MODULE: ./packages/survey-core/src/question_text.ts
52074
52191
  var question_text_extends = (undefined && undefined.__extends) || (function () {
52075
52192
  var extendStatics = function (d, b) {
@@ -52101,6 +52218,7 @@ var question_text_decorate = (undefined && undefined.__decorate) || function (de
52101
52218
 
52102
52219
 
52103
52220
 
52221
+
52104
52222
  /**
52105
52223
  * A class that describes the Single-Line Input question type.
52106
52224
  *
@@ -52971,14 +53089,18 @@ Serializer.addClass("text", [
52971
53089
  return isMinMaxType(obj);
52972
53090
  },
52973
53091
  },
52974
- { name: "inputTextAlignment", default: "auto", choices: ["left", "right", "auto"], visible: false },
53092
+ { name: "inputTextAlignment", default: "auto", choices: ["left", "right", "auto"] },
52975
53093
  {
52976
- name: "maskType:masktype",
53094
+ name: "maskType",
52977
53095
  default: "none",
52978
53096
  visibleIndex: 0,
52979
53097
  dependsOn: "inputType",
52980
53098
  visibleIf: function (obj) {
52981
53099
  return obj.inputType === "text" || obj.inputType === "tel";
53100
+ },
53101
+ choices: function (obj) {
53102
+ var choices = getAvailableMaskTypeChoices();
53103
+ return choices;
52982
53104
  }
52983
53105
  },
52984
53106
  {
@@ -53074,6 +53196,7 @@ var question_multipletext_decorate = (undefined && undefined.__decorate) || func
53074
53196
 
53075
53197
 
53076
53198
 
53199
+
53077
53200
  var MultipleTextEditorModel = /** @class */ (function (_super) {
53078
53201
  question_multipletext_extends(MultipleTextEditorModel, _super);
53079
53202
  function MultipleTextEditorModel() {
@@ -53457,6 +53580,15 @@ var question_multipletext_MultipleTextItemModel = /** @class */ (function (_supe
53457
53580
  configurable: true
53458
53581
  });
53459
53582
  Object.defineProperty(MultipleTextItemModel.prototype, "inputTextAlignment", {
53583
+ /**
53584
+ * Specifies text alignment within the input field.
53585
+ *
53586
+ * Possible values:
53587
+ *
53588
+ * - `"left"` - Aligns input text to the left side.
53589
+ * - `"right"` - Aligns input text to the right side.
53590
+ * - `"auto"` (default) - Applies right alignment if a [numeric or currency input mask](https://surveyjs.io/form-library/documentation/api-reference/multipletextitemmodel#maskType) is specified. Otherwise, applies left alignment.
53591
+ */
53460
53592
  get: function () {
53461
53593
  return this.editor.inputTextAlignment;
53462
53594
  },
@@ -54175,12 +54307,16 @@ Serializer.addClass("multipletextitem", [
54175
54307
  choices: settings.questions.inputTypes,
54176
54308
  },
54177
54309
  {
54178
- name: "maskType:masktype",
54310
+ name: "maskType",
54179
54311
  default: "none",
54180
54312
  visibleIndex: 0,
54181
54313
  dependsOn: "inputType",
54182
54314
  visibleIf: function (obj) {
54183
54315
  return obj.inputType === "text";
54316
+ },
54317
+ choices: function (obj) {
54318
+ var choices = getAvailableMaskTypeChoices();
54319
+ return choices;
54184
54320
  }
54185
54321
  },
54186
54322
  {
@@ -54198,7 +54334,7 @@ Serializer.addClass("multipletextitem", [
54198
54334
  obj.maskSettings.setData(value);
54199
54335
  },
54200
54336
  },
54201
- { name: "inputTextAlignment", default: "auto", choices: ["left", "right", "auto"], visible: false },
54337
+ { name: "inputTextAlignment", default: "auto", choices: ["left", "right", "auto"] },
54202
54338
  { name: "title", serializationProperty: "locTitle" },
54203
54339
  { name: "maxLength:number", default: -1 },
54204
54340
  { name: "size:number", minValue: 0 },
@@ -57517,7 +57653,6 @@ questionfactory_QuestionFactory.Instance.registerQuestion("comment", function (n
57517
57653
 
57518
57654
  // CONCATENATED MODULE: ./packages/survey-core/src/utils/camera.ts
57519
57655
 
57520
-
57521
57656
  var camera_Camera = /** @class */ (function () {
57522
57657
  function Camera() {
57523
57658
  this.canFlipValue = undefined;
@@ -57620,27 +57755,25 @@ var camera_Camera = /** @class */ (function () {
57620
57755
  audio: false
57621
57756
  };
57622
57757
  };
57623
- Camera.prototype.startVideo = function (videoElementId, callback, imageWidth, imageHeight) {
57758
+ Camera.prototype.startVideo = function (videoElement, callback, imageWidth, imageHeight) {
57624
57759
  var _this = this;
57625
- var _a;
57626
- var videoEl = (_a = settings.environment.root) === null || _a === void 0 ? void 0 : _a.getElementById(videoElementId);
57627
- if (!videoEl) {
57760
+ if (!videoElement) {
57628
57761
  callback(undefined);
57629
57762
  return;
57630
57763
  }
57631
- videoEl.style.width = "100%";
57632
- videoEl.style.height = "auto";
57633
- videoEl.style.height = "100%";
57634
- videoEl.style.objectFit = "contain";
57764
+ videoElement.style.width = "100%";
57765
+ videoElement.style.height = "auto";
57766
+ videoElement.style.height = "100%";
57767
+ videoElement.style.objectFit = "contain";
57635
57768
  var mediaConstraints = this.getMediaConstraints({ width: imageWidth, height: imageHeight });
57636
57769
  navigator.mediaDevices.getUserMedia(mediaConstraints).then(function (stream) {
57637
57770
  var _a;
57638
- videoEl.srcObject = stream;
57771
+ videoElement.srcObject = stream;
57639
57772
  if (!((_a = Camera.cameraList[Camera.cameraIndex]) === null || _a === void 0 ? void 0 : _a.deviceId) && !!stream.getTracks()[0].getCapabilities().facingMode) {
57640
57773
  Camera.canSwitchFacingMode = true;
57641
57774
  _this.updateCanFlipValue();
57642
57775
  }
57643
- videoEl.play();
57776
+ videoElement.play();
57644
57777
  callback(stream);
57645
57778
  })
57646
57779
  .catch(function (error) {
@@ -57650,15 +57783,14 @@ var camera_Camera = /** @class */ (function () {
57650
57783
  Camera.prototype.getImageSize = function (videoEl) {
57651
57784
  return { width: videoEl.videoWidth, height: videoEl.videoHeight };
57652
57785
  };
57653
- Camera.prototype.snap = function (videoElementId, callback) {
57786
+ Camera.prototype.snap = function (videoElement, callback) {
57787
+ if (!videoElement)
57788
+ return false;
57654
57789
  if (!DomDocumentHelper.isAvailable())
57655
57790
  return false;
57656
57791
  var root = DomDocumentHelper.getDocument();
57657
- var videoEl = root === null || root === void 0 ? void 0 : root.getElementById(videoElementId);
57658
- if (!videoEl)
57659
- return false;
57660
57792
  var canvasEl = root.createElement("canvas");
57661
- var imageSize = this.getImageSize(videoEl);
57793
+ var imageSize = this.getImageSize(videoElement);
57662
57794
  canvasEl.height = imageSize.height;
57663
57795
  canvasEl.width = imageSize.width;
57664
57796
  var context = canvasEl.getContext("2d");
@@ -57669,7 +57801,7 @@ var camera_Camera = /** @class */ (function () {
57669
57801
  }
57670
57802
  */
57671
57803
  context.clearRect(0, 0, canvasEl.width, canvasEl.height);
57672
- context.drawImage(videoEl, 0, 0, canvasEl.width, canvasEl.height);
57804
+ context.drawImage(videoElement, 0, 0, canvasEl.width, canvasEl.height);
57673
57805
  canvasEl.toBlob(callback, "image/png");
57674
57806
  return true;
57675
57807
  };
@@ -58132,9 +58264,17 @@ var question_file_QuestionFileModel = /** @class */ (function (_super) {
58132
58264
  _this.startVideoInCamera();
58133
58265
  }, 0);
58134
58266
  };
58267
+ Object.defineProperty(QuestionFileModel.prototype, "videoHtmlElement", {
58268
+ get: function () {
58269
+ var _a;
58270
+ return (_a = this.rootElement) === null || _a === void 0 ? void 0 : _a.querySelector("#" + this.videoId);
58271
+ },
58272
+ enumerable: false,
58273
+ configurable: true
58274
+ });
58135
58275
  QuestionFileModel.prototype.startVideoInCamera = function () {
58136
58276
  var _this = this;
58137
- this.camera.startVideo(this.videoId, function (stream) {
58277
+ this.camera.startVideo(this.videoHtmlElement, function (stream) {
58138
58278
  _this.videoStream = stream;
58139
58279
  if (!stream) {
58140
58280
  _this.stopVideo();
@@ -58155,7 +58295,7 @@ var question_file_QuestionFileModel = /** @class */ (function (_super) {
58155
58295
  _this.loadFiles([file]);
58156
58296
  }
58157
58297
  };
58158
- this.camera.snap(this.videoId, blobCallback);
58298
+ this.camera.snap(this.videoHtmlElement, blobCallback);
58159
58299
  this.stopVideo();
58160
58300
  };
58161
58301
  QuestionFileModel.prototype.canFlipCamera = function () {
@@ -59926,7 +60066,7 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
59926
60066
  QuestionRatingModel.prototype.setValueFromClick = function (value) {
59927
60067
  if (this.isReadOnlyAttr)
59928
60068
  return;
59929
- if (this.value === parseFloat(value)) {
60069
+ if (this.value === ((typeof (this.value) === "string") ? value : parseFloat(value))) {
59930
60070
  this.clearValue(true);
59931
60071
  }
59932
60072
  else {
@@ -63270,7 +63410,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63270
63410
  _this.registerPropertyChangedHandlers(["panelsState"], function () {
63271
63411
  _this.setPanelsState();
63272
63412
  });
63273
- _this.registerPropertyChangedHandlers(["isMobile", "newPanelPosition", "showRangeInProgress", "renderMode"], function () {
63413
+ _this.registerPropertyChangedHandlers(["isMobile", "newPanelPosition", "displayMode", "showProgressBar"], function () {
63274
63414
  _this.updateFooterActions();
63275
63415
  });
63276
63416
  _this.registerPropertyChangedHandlers(["allowAddPanel"], function () { _this.updateNoEntriesTextDefaultLoc(); });
@@ -63426,7 +63566,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63426
63566
  });
63427
63567
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "templateTabTitle", {
63428
63568
  /**
63429
- * A template for tab titles. Applies when [`renderMode`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#renderMode) is `"tab"`.
63569
+ * A template for tab titles. Applies when [`displayMode`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#displayMode) is `"tab"`.
63430
63570
  *
63431
63571
  * The template can contain the following placeholders:
63432
63572
  *
@@ -63438,7 +63578,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63438
63578
  * [View Demo](https://surveyjs.io/form-library/examples/tabbed-interface-for-duplicate-group-option/ (linkStyle))
63439
63579
  * @see templateTitle
63440
63580
  * @see tabTitlePlaceholder
63441
- * @see renderMode
63581
+ * @see displayMode
63442
63582
  */
63443
63583
  get: function () {
63444
63584
  return this.locTemplateTabTitle.text;
@@ -63618,11 +63758,11 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63618
63758
  /**
63619
63759
  * A zero-based index of the currently displayed panel.
63620
63760
  *
63621
- * When `renderMode` is `"list"` or Dynamic Panel is empty (`panelCount` is 0), this property contains -1.
63761
+ * When `displayMode` is `"list"` or Dynamic Panel is empty (`panelCount` is 0), this property contains -1.
63622
63762
  * @see currentPanel
63623
63763
  * @see panels
63624
63764
  * @see panelCount
63625
- * @see renderMode
63765
+ * @see displayMode
63626
63766
  */
63627
63767
  get: function () {
63628
63768
  if (this.isRenderModeList)
@@ -63645,11 +63785,11 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63645
63785
  /**
63646
63786
  * A `PanelModel` object that is the currently displayed panel.
63647
63787
  *
63648
- * When `renderMode` is `"list"` or Dynamic Panel is empty (`panelCount` is 0), this property contains `null`.
63788
+ * When `displayMode` is `"list"` or Dynamic Panel is empty (`panelCount` is 0), this property contains `null`.
63649
63789
  * @see currentIndex
63650
63790
  * @see panels
63651
63791
  * @see panelCount
63652
- * @see renderMode
63792
+ * @see displayMode
63653
63793
  */
63654
63794
  get: function () {
63655
63795
  if (this.isDesignMode)
@@ -63899,8 +64039,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63899
64039
  });
63900
64040
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "panelPrevText", {
63901
64041
  /**
63902
- * A caption for the Previous button. Applies only if `renderMode` is different from `"list"`.
63903
- * @see renderMode
64042
+ * A caption for the Previous button. Applies only if `displayMode` is different from `"list"`.
64043
+ * @see displayMode
63904
64044
  * @see isPrevButtonVisible
63905
64045
  */
63906
64046
  get: function () {
@@ -63921,8 +64061,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63921
64061
  });
63922
64062
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "panelNextText", {
63923
64063
  /**
63924
- * A caption for the Next button. Applies only if `renderMode` is different from `"list"`.
63925
- * @see renderMode
64064
+ * A caption for the Next button. Applies only if `displayMode` is different from `"list"`.
64065
+ * @see displayMode
63926
64066
  * @see isNextButtonVisible
63927
64067
  */
63928
64068
  get: function () {
@@ -63983,21 +64123,15 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63983
64123
  configurable: true
63984
64124
  });
63985
64125
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "isProgressTopShowing", {
63986
- /**
63987
- * Returns true when the renderMode equals to "progressTop" or "progressTopBottom"
63988
- */
63989
64126
  get: function () {
63990
- return this.renderMode === "progressTop" || this.renderMode === "progressTopBottom";
64127
+ return this.displayMode == "carousel" && (this.progressBarLocation === "top" || this.progressBarLocation === "topBottom");
63991
64128
  },
63992
64129
  enumerable: false,
63993
64130
  configurable: true
63994
64131
  });
63995
64132
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "isProgressBottomShowing", {
63996
- /**
63997
- * Returns true when the renderMode equals to "progressBottom" or "progressTopBottom"
63998
- */
63999
64133
  get: function () {
64000
- return this.renderMode === "progressBottom" || this.renderMode === "progressTopBottom";
64134
+ return this.displayMode == "carousel" && (this.progressBarLocation === "bottom" || this.progressBarLocation === "topBottom");
64001
64135
  },
64002
64136
  enumerable: false,
64003
64137
  configurable: true
@@ -64037,9 +64171,6 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64037
64171
  configurable: true
64038
64172
  });
64039
64173
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "isRangeShowing", {
64040
- /**
64041
- * Returns true when showRangeInProgress equals to true, renderMode doesn't equal to "list" and visiblePanelCount is >= 2.
64042
- */
64043
64174
  get: function () {
64044
64175
  return (this.showRangeInProgress && this.currentIndex >= 0 && this.visiblePanelCount > 1);
64045
64176
  },
@@ -64116,7 +64247,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64116
64247
  for (var i = this.panelCount; i < val; i++) {
64117
64248
  var panel = this.createNewPanel();
64118
64249
  this.panelsCore.push(panel);
64119
- if (this.renderMode == "list" && this.panelsState != "default") {
64250
+ if (this.displayMode == "list" && this.panelsState != "default") {
64120
64251
  if (this.panelsState === "expanded") {
64121
64252
  panel.expand();
64122
64253
  }
@@ -64152,7 +64283,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64152
64283
  });
64153
64284
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "panelsState", {
64154
64285
  /**
64155
- * Specifies whether users can expand and collapse panels. Applies if `renderMode` is `"list"` and the `templateTitle` property is specified.
64286
+ * Specifies whether users can expand and collapse panels. Applies if `displayMode` is `"list"` and the `templateTitle` property is specified.
64156
64287
  *
64157
64288
  * Possible values:
64158
64289
  *
@@ -64160,7 +64291,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64160
64291
  * - `"expanded"` - All panels are displayed in full and can be collapsed in the UI.
64161
64292
  * - `"collapsed"` - All panels display only their titles and descriptions and can be expanded in the UI.
64162
64293
  * - `"firstExpanded"` - Only the first panel is displayed in full; other panels are collapsed and can be expanded in the UI.
64163
- * @see renderMode
64294
+ * @see displayMode
64164
64295
  * @see templateTitle
64165
64296
  */
64166
64297
  get: function () {
@@ -64186,7 +64317,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64186
64317
  }
64187
64318
  };
64188
64319
  QuestionPanelDynamicModel.prototype.setPanelsState = function () {
64189
- if (this.useTemplatePanel || this.renderMode != "list" || !this.templateTitle)
64320
+ if (this.useTemplatePanel || this.displayMode != "list" || !this.templateTitle)
64190
64321
  return;
64191
64322
  for (var i = 0; i < this.panelsCore.length; i++) {
64192
64323
  var state = this.panelsState;
@@ -64399,46 +64530,68 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64399
64530
  });
64400
64531
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "showRangeInProgress", {
64401
64532
  /**
64402
- * Shows the range from 1 to panelCount when renderMode doesn't equal to "list". Set to false to hide this element.
64403
- * @see panelCount
64404
- * @see renderMode
64533
+ * Obsolete. Use the [`showProgressBar`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#showProgressBar) property instead.
64534
+ * @deprecated
64405
64535
  */
64406
64536
  get: function () {
64407
- return this.getPropertyValue("showRangeInProgress");
64537
+ return this.showProgressBar;
64538
+ // return this.getPropertyValue("showRangeInProgress");
64408
64539
  },
64409
64540
  set: function (val) {
64410
- this.setPropertyValue("showRangeInProgress", val);
64411
- this.fireCallback(this.currentIndexChangedCallback);
64541
+ this.showProgressBar = val;
64542
+ // this.setPropertyValue("showRangeInProgress", val);
64412
64543
  },
64413
64544
  enumerable: false,
64414
64545
  configurable: true
64415
64546
  });
64416
64547
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "renderMode", {
64417
64548
  /**
64418
- * Specifies how to render panels.
64419
- *
64420
- * Possible values:
64421
- *
64422
- * - `"list"` (default) - Renders panels one under the other. [View Demo](https://surveyjs.io/form-library/examples/how-to-use-expressions-in-dynamic-panel/)
64423
- * - `"progressTop"` - Renders each panel as a card and displays a progress bar at the top. [View Demo](https://surveyjs.io/form-library/examples/questiontype-paneldynamic/)
64424
- * - `"progressBottom"` - Renders each panel panel as a card and displays a progress bar at the bottom.
64425
- * - `"progressTopBottom"` - Renders each panel as a card and displays a progress bar at the top and bottom.
64426
- * - `"tab"` - Renders each panel within a tab. Use the [`templateTabTitle`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#templateTabTitle) to specify a template for tab titles. [View Demo](https://surveyjs.io/form-library/examples/tabbed-interface-for-duplicate-group-option/)
64549
+ * Obsolete. Use the [`displayMode`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#displayMode) property instead.
64550
+ * @deprecated
64427
64551
  */
64428
64552
  get: function () {
64429
- return this.getPropertyValue("renderMode");
64553
+ var displayMode = this.displayMode;
64554
+ if (displayMode == "carousel") {
64555
+ var progressBarLocation = this.progressBarLocation;
64556
+ if (progressBarLocation == "top") {
64557
+ return "progressTop";
64558
+ }
64559
+ else if (progressBarLocation == "bottom") {
64560
+ return "progressBottom";
64561
+ }
64562
+ else if (progressBarLocation == "topBottom") {
64563
+ return "progressTopBottom";
64564
+ }
64565
+ }
64566
+ return displayMode;
64430
64567
  },
64431
64568
  set: function (val) {
64432
- this.setPropertyValue("renderMode", val);
64433
- this.fireCallback(this.renderModeChangedCallback);
64434
- this.blockAnimations();
64435
- this.updateRenderedPanels();
64436
- this.releaseAnimations();
64437
- this.updatePanelsAnimation();
64569
+ if ((val || "").startsWith("progress")) {
64570
+ if (val == "progressTop") {
64571
+ this.progressBarLocation = "top";
64572
+ }
64573
+ else if (val == "progressBottom") {
64574
+ this.progressBarLocation = "bottom";
64575
+ }
64576
+ else if (val == "progressTopBottom") {
64577
+ this.progressBarLocation = "topBottom";
64578
+ }
64579
+ this.displayMode = "carousel";
64580
+ }
64581
+ else {
64582
+ this.displayMode = val;
64583
+ }
64584
+ // this.updatePanelView();
64438
64585
  },
64439
64586
  enumerable: false,
64440
64587
  configurable: true
64441
64588
  });
64589
+ QuestionPanelDynamicModel.prototype.updatePanelView = function () {
64590
+ this.blockAnimations();
64591
+ this.updateRenderedPanels();
64592
+ this.releaseAnimations();
64593
+ this.updatePanelsAnimation();
64594
+ };
64442
64595
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "tabAlign", {
64443
64596
  get: function () {
64444
64597
  return this.getPropertyValue("tabAlign");
@@ -64454,14 +64607,14 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64454
64607
  });
64455
64608
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "isRenderModeList", {
64456
64609
  get: function () {
64457
- return this.renderMode === "list";
64610
+ return this.displayMode === "list";
64458
64611
  },
64459
64612
  enumerable: false,
64460
64613
  configurable: true
64461
64614
  });
64462
64615
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "isRenderModeTab", {
64463
64616
  get: function () {
64464
- return this.renderMode === "tab";
64617
+ return this.displayMode === "tab";
64465
64618
  },
64466
64619
  enumerable: false,
64467
64620
  configurable: true
@@ -64653,7 +64806,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64653
64806
  };
64654
64807
  /**
64655
64808
  * Add a new dynamic panel based on the template Panel. It checks if canAddPanel returns true and then calls addPanel method.
64656
- * If a renderMode is different from "list" and the current panel has erros, then
64809
+ * If a displayMode is different from "list" and the current panel has erros, then
64657
64810
  * @see template
64658
64811
  * @see panelCount
64659
64812
  * @see panels
@@ -64665,7 +64818,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64665
64818
  if (!this.canLeaveCurrentPanel())
64666
64819
  return null;
64667
64820
  var newPanel = this.addPanel();
64668
- if (this.renderMode === "list" && this.panelsState !== "default") {
64821
+ if (this.displayMode === "list" && this.panelsState !== "default") {
64669
64822
  newPanel.expand();
64670
64823
  }
64671
64824
  this.focusNewPanelCallback = function () {
@@ -64684,7 +64837,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64684
64837
  };
64685
64838
  /**
64686
64839
  * Adds a new panel based on the [template](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#template).
64687
- * @param index *(Optional)* An index at which to insert the new panel. `undefined` adds the panel to the end or inserts it after the current panel if [`renderMode`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#renderMode) is `"tab"`. A negative index (for instance, -1) adds the panel to the end in all cases, regardless of the `renderMode` value.
64840
+ * @param index *(Optional)* An index at which to insert the new panel. `undefined` adds the panel to the end or inserts it after the current panel if [`displayMode`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#renderMode) is `"tab"`. A negative index (for instance, -1) adds the panel to the end in all cases, regardless of the `displayMode` value.
64688
64841
  * @see panelCount
64689
64842
  * @see panels
64690
64843
  * @see allowAddPanel
@@ -64733,7 +64886,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64733
64886
  }
64734
64887
  };
64735
64888
  QuestionPanelDynamicModel.prototype.canLeaveCurrentPanel = function () {
64736
- return !(this.renderMode !== "list" && this.currentPanel && this.currentPanel.hasErrors(true, true));
64889
+ return !(this.displayMode !== "list" && this.currentPanel && this.currentPanel.hasErrors(true, true));
64737
64890
  };
64738
64891
  QuestionPanelDynamicModel.prototype.copyValue = function (dest, src) {
64739
64892
  for (var key in src) {
@@ -64771,8 +64924,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64771
64924
  (this.isValueEmpty(this.defaultPanelValue) || !this.isTwoValueEquals(panelValue, this.defaultPanelValue));
64772
64925
  };
64773
64926
  /**
64774
- * Switches Dynamic Panel to the next panel. Returns `true` in case of success, or `false` if `renderMode` is `"list"` or the current panel contains validation errors.
64775
- * @see renderMode
64927
+ * Switches Dynamic Panel to the next panel. Returns `true` in case of success, or `false` if `displayMode` is `"list"` or the current panel contains validation errors.
64928
+ * @see displayMode
64776
64929
  */
64777
64930
  QuestionPanelDynamicModel.prototype.goToNextPanel = function () {
64778
64931
  if (this.currentIndex < 0)
@@ -65586,7 +65739,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
65586
65739
  return new CssClassBuilder()
65587
65740
  .append(this.cssClasses.button)
65588
65741
  .append(this.cssClasses.buttonAdd)
65589
- .append(this.cssClasses.buttonAdd + "--list-mode", this.renderMode === "list")
65742
+ .append(this.cssClasses.buttonAdd + "--list-mode", this.displayMode === "list")
65590
65743
  .toString();
65591
65744
  };
65592
65745
  QuestionPanelDynamicModel.prototype.getPrevButtonCss = function () {
@@ -65845,6 +65998,28 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
65845
65998
  question_paneldynamic_decorate([
65846
65999
  propertyArray({})
65847
66000
  ], QuestionPanelDynamicModel.prototype, "_renderedPanels", void 0);
66001
+ question_paneldynamic_decorate([
66002
+ jsonobject_property({
66003
+ onSet: function (val, target) {
66004
+ target.fireCallback(target.renderModeChangedCallback);
66005
+ target.updatePanelView();
66006
+ }
66007
+ })
66008
+ ], QuestionPanelDynamicModel.prototype, "displayMode", void 0);
66009
+ question_paneldynamic_decorate([
66010
+ jsonobject_property({
66011
+ onSet: function (val, target) {
66012
+ target.fireCallback(target.currentIndexChangedCallback);
66013
+ }
66014
+ })
66015
+ ], QuestionPanelDynamicModel.prototype, "showProgressBar", void 0);
66016
+ question_paneldynamic_decorate([
66017
+ jsonobject_property({
66018
+ onSet: function (val, target) {
66019
+ // target.updatePanelView();
66020
+ }
66021
+ })
66022
+ ], QuestionPanelDynamicModel.prototype, "progressBarLocation", void 0);
65848
66023
  question_paneldynamic_decorate([
65849
66024
  jsonobject_property({ defaultValue: false, onSet: function (_, target) { target.updateFooterActions(); } })
65850
66025
  ], QuestionPanelDynamicModel.prototype, "legacyNavigation", void 0);
@@ -65861,8 +66036,14 @@ Serializer.addClass("paneldynamic", [
65861
66036
  isLightSerializable: false
65862
66037
  },
65863
66038
  { name: "templateTitle:text", serializationProperty: "locTemplateTitle" },
65864
- { name: "templateTabTitle", serializationProperty: "locTemplateTabTitle", visibleIf: function (obj) { return obj.renderMode === "tab"; } },
65865
- { name: "tabTitlePlaceholder", serializationProperty: "locTabTitlePlaceholder", visibleIf: function (obj) { return obj.renderMode === "tab"; } },
66039
+ {
66040
+ name: "templateTabTitle", serializationProperty: "locTemplateTabTitle",
66041
+ visibleIf: function (obj) { return obj.displayMode === "tab"; }
66042
+ },
66043
+ {
66044
+ name: "tabTitlePlaceholder", serializationProperty: "locTabTitlePlaceholder",
66045
+ visibleIf: function (obj) { return obj.displayMode === "tab"; }
66046
+ },
65866
66047
  {
65867
66048
  name: "templateDescription:text",
65868
66049
  serializationProperty: "locTemplateDescription",
@@ -65889,7 +66070,7 @@ Serializer.addClass("paneldynamic", [
65889
66070
  name: "panelsState",
65890
66071
  default: "default",
65891
66072
  choices: ["default", "collapsed", "expanded", "firstExpanded"],
65892
- visibleIf: function (obj) { return obj.renderMode === "list"; }
66073
+ visibleIf: function (obj) { return obj.displayMode === "list"; }
65893
66074
  },
65894
66075
  { name: "keyName" },
65895
66076
  {
@@ -65915,12 +66096,12 @@ Serializer.addClass("paneldynamic", [
65915
66096
  {
65916
66097
  name: "panelPrevText",
65917
66098
  serializationProperty: "locPanelPrevText",
65918
- visibleIf: function (obj) { return obj.renderMode !== "list"; }
66099
+ visibleIf: function (obj) { return obj.displayMode !== "list"; }
65919
66100
  },
65920
66101
  {
65921
66102
  name: "panelNextText",
65922
66103
  serializationProperty: "locPanelNextText",
65923
- visibleIf: function (obj) { return obj.renderMode !== "list"; }
66104
+ visibleIf: function (obj) { return obj.displayMode !== "list"; }
65924
66105
  },
65925
66106
  {
65926
66107
  name: "showQuestionNumbers",
@@ -65930,16 +66111,30 @@ Serializer.addClass("paneldynamic", [
65930
66111
  {
65931
66112
  name: "showRangeInProgress:boolean",
65932
66113
  default: true,
65933
- visibleIf: function (obj) { return obj.renderMode !== "list"; }
66114
+ visible: false
66115
+ // visibleIf: (obj: any) => { return obj.displayMode !== "list"; }
65934
66116
  },
65935
66117
  {
65936
66118
  name: "renderMode",
65937
66119
  default: "list",
65938
66120
  choices: ["list", "progressTop", "progressBottom", "progressTopBottom", "tab"],
66121
+ visible: false,
66122
+ },
66123
+ { name: "displayMode", default: "list", choices: ["list", "carousel", "tab"] },
66124
+ {
66125
+ name: "showProgressBar:boolean",
66126
+ default: true,
66127
+ visibleIf: function (obj) { return obj.displayMode === "carousel"; }
66128
+ },
66129
+ {
66130
+ name: "progressBarLocation",
66131
+ default: "top",
66132
+ choices: ["top", "bottom", "topBottom"],
66133
+ visibleIf: function (obj) { return obj.showProgressBar; }
65939
66134
  },
65940
66135
  {
65941
66136
  name: "tabAlign", default: "center", choices: ["left", "center", "right"],
65942
- visibleIf: function (obj) { return obj.renderMode === "tab"; }
66137
+ visibleIf: function (obj) { return obj.displayMode === "tab"; }
65943
66138
  },
65944
66139
  {
65945
66140
  name: "templateTitleLocation",
@@ -67688,9 +67883,6 @@ Serializer.addClass("patternmask", [
67688
67883
  return new mask_pattern_InputMaskPattern();
67689
67884
  }, "masksettings");
67690
67885
 
67691
- // CONCATENATED MODULE: ./packages/survey-core/src/mask/mask_utils.ts
67692
- var numberDefinition = /[0-9]/;
67693
-
67694
67886
  // CONCATENATED MODULE: ./packages/survey-core/src/mask/mask_numeric.ts
67695
67887
  var mask_numeric_extends = (undefined && undefined.__extends) || (function () {
67696
67888
  var extendStatics = function (d, b) {
@@ -68834,8 +69026,8 @@ Serializer.addClass("currencymask", [
68834
69026
 
68835
69027
  var Version;
68836
69028
  var ReleaseDate;
68837
- Version = "" + "1.11.11";
68838
- ReleaseDate = "" + "2024-08-14";
69029
+ Version = "" + "1.11.13";
69030
+ ReleaseDate = "" + "2024-08-27";
68839
69031
  function checkLibraryVersion(ver, libraryName) {
68840
69032
  if (Version != ver) {
68841
69033
  var str = "survey-core has version '" + Version + "' and " + libraryName