survey-core 1.9.123 → 1.9.125

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 (310) hide show
  1. package/defaultV2.css +12 -10
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +12 -10
  4. package/defaultV2.fontless.css.map +1 -1
  5. package/defaultV2.fontless.min.css +3 -3
  6. package/defaultV2.min.css +3 -3
  7. package/i18n/arabic.js +15 -4
  8. package/i18n/arabic.js.map +1 -1
  9. package/i18n/arabic.min.js +3 -3
  10. package/i18n/basque.js +15 -4
  11. package/i18n/basque.js.map +1 -1
  12. package/i18n/basque.min.js +3 -3
  13. package/i18n/bulgarian.js +15 -4
  14. package/i18n/bulgarian.js.map +1 -1
  15. package/i18n/bulgarian.min.js +3 -3
  16. package/i18n/catalan.js +15 -4
  17. package/i18n/catalan.js.map +1 -1
  18. package/i18n/catalan.min.js +3 -3
  19. package/i18n/croatian.js +15 -4
  20. package/i18n/croatian.js.map +1 -1
  21. package/i18n/croatian.min.js +3 -3
  22. package/i18n/czech.js +15 -4
  23. package/i18n/czech.js.map +1 -1
  24. package/i18n/czech.min.js +3 -3
  25. package/i18n/danish.js +15 -4
  26. package/i18n/danish.js.map +1 -1
  27. package/i18n/danish.min.js +3 -3
  28. package/i18n/dutch.js +15 -4
  29. package/i18n/dutch.js.map +1 -1
  30. package/i18n/dutch.min.js +3 -3
  31. package/i18n/english.js +3 -2
  32. package/i18n/english.js.map +1 -1
  33. package/i18n/english.min.js +3 -3
  34. package/i18n/estonian.js +15 -4
  35. package/i18n/estonian.js.map +1 -1
  36. package/i18n/estonian.min.js +3 -3
  37. package/i18n/finnish.js +15 -4
  38. package/i18n/finnish.js.map +1 -1
  39. package/i18n/finnish.min.js +3 -3
  40. package/i18n/french.js +15 -4
  41. package/i18n/french.js.map +1 -1
  42. package/i18n/french.min.js +3 -3
  43. package/i18n/georgian.js +15 -4
  44. package/i18n/georgian.js.map +1 -1
  45. package/i18n/georgian.min.js +3 -3
  46. package/i18n/german.js +15 -4
  47. package/i18n/german.js.map +1 -1
  48. package/i18n/german.min.js +3 -3
  49. package/i18n/greek.js +15 -4
  50. package/i18n/greek.js.map +1 -1
  51. package/i18n/greek.min.js +3 -3
  52. package/i18n/hebrew.js +15 -4
  53. package/i18n/hebrew.js.map +1 -1
  54. package/i18n/hebrew.min.js +3 -3
  55. package/i18n/hindi.js +15 -4
  56. package/i18n/hindi.js.map +1 -1
  57. package/i18n/hindi.min.js +3 -3
  58. package/i18n/hungarian.js +15 -4
  59. package/i18n/hungarian.js.map +1 -1
  60. package/i18n/hungarian.min.js +3 -3
  61. package/i18n/icelandic.js +15 -4
  62. package/i18n/icelandic.js.map +1 -1
  63. package/i18n/icelandic.min.js +3 -3
  64. package/i18n/index.js +613 -96
  65. package/i18n/index.js.map +1 -1
  66. package/i18n/index.min.js +3 -3
  67. package/i18n/indonesian.js +15 -4
  68. package/i18n/indonesian.js.map +1 -1
  69. package/i18n/indonesian.min.js +3 -3
  70. package/i18n/italian.js +15 -4
  71. package/i18n/italian.js.map +1 -1
  72. package/i18n/italian.min.js +3 -3
  73. package/i18n/japanese.js +15 -4
  74. package/i18n/japanese.js.map +1 -1
  75. package/i18n/japanese.min.js +3 -3
  76. package/i18n/kazakh.js +15 -4
  77. package/i18n/kazakh.js.map +1 -1
  78. package/i18n/kazakh.min.js +3 -3
  79. package/i18n/korean.js +15 -4
  80. package/i18n/korean.js.map +1 -1
  81. package/i18n/korean.min.js +3 -3
  82. package/i18n/latvian.js +15 -4
  83. package/i18n/latvian.js.map +1 -1
  84. package/i18n/latvian.min.js +3 -3
  85. package/i18n/lithuanian.js +15 -4
  86. package/i18n/lithuanian.js.map +1 -1
  87. package/i18n/lithuanian.min.js +3 -3
  88. package/i18n/macedonian.js +15 -4
  89. package/i18n/macedonian.js.map +1 -1
  90. package/i18n/macedonian.min.js +3 -3
  91. package/i18n/malay.js +15 -4
  92. package/i18n/malay.js.map +1 -1
  93. package/i18n/malay.min.js +3 -3
  94. package/i18n/nl-BE.js +15 -4
  95. package/i18n/nl-BE.js.map +1 -1
  96. package/i18n/nl-BE.min.js +3 -3
  97. package/i18n/norwegian.js +15 -4
  98. package/i18n/norwegian.js.map +1 -1
  99. package/i18n/norwegian.min.js +3 -3
  100. package/i18n/persian.js +15 -4
  101. package/i18n/persian.js.map +1 -1
  102. package/i18n/persian.min.js +3 -3
  103. package/i18n/polish.js +15 -4
  104. package/i18n/polish.js.map +1 -1
  105. package/i18n/polish.min.js +3 -3
  106. package/i18n/portuguese-br.js +15 -4
  107. package/i18n/portuguese-br.js.map +1 -1
  108. package/i18n/portuguese-br.min.js +3 -3
  109. package/i18n/portuguese.js +15 -4
  110. package/i18n/portuguese.js.map +1 -1
  111. package/i18n/portuguese.min.js +3 -3
  112. package/i18n/romanian.js +15 -4
  113. package/i18n/romanian.js.map +1 -1
  114. package/i18n/romanian.min.js +3 -3
  115. package/i18n/russian.js +15 -4
  116. package/i18n/russian.js.map +1 -1
  117. package/i18n/russian.min.js +3 -3
  118. package/i18n/serbian.js +15 -4
  119. package/i18n/serbian.js.map +1 -1
  120. package/i18n/serbian.min.js +3 -3
  121. package/i18n/simplified-chinese.js +15 -4
  122. package/i18n/simplified-chinese.js.map +1 -1
  123. package/i18n/simplified-chinese.min.js +3 -3
  124. package/i18n/slovak.js +15 -4
  125. package/i18n/slovak.js.map +1 -1
  126. package/i18n/slovak.min.js +3 -3
  127. package/i18n/spanish.js +15 -4
  128. package/i18n/spanish.js.map +1 -1
  129. package/i18n/spanish.min.js +3 -3
  130. package/i18n/swahili.js +15 -4
  131. package/i18n/swahili.js.map +1 -1
  132. package/i18n/swahili.min.js +3 -3
  133. package/i18n/swedish.js +15 -4
  134. package/i18n/swedish.js.map +1 -1
  135. package/i18n/swedish.min.js +3 -3
  136. package/i18n/tajik.js +2 -2
  137. package/i18n/tajik.min.js +2 -2
  138. package/i18n/telugu.js +15 -4
  139. package/i18n/telugu.js.map +1 -1
  140. package/i18n/telugu.min.js +3 -3
  141. package/i18n/thai.js +15 -4
  142. package/i18n/thai.js.map +1 -1
  143. package/i18n/thai.min.js +3 -3
  144. package/i18n/traditional-chinese.js +15 -4
  145. package/i18n/traditional-chinese.js.map +1 -1
  146. package/i18n/traditional-chinese.min.js +3 -3
  147. package/i18n/turkish.js +15 -4
  148. package/i18n/turkish.js.map +1 -1
  149. package/i18n/turkish.min.js +3 -3
  150. package/i18n/ukrainian.js +15 -4
  151. package/i18n/ukrainian.js.map +1 -1
  152. package/i18n/ukrainian.min.js +3 -3
  153. package/i18n/urdu.js +15 -4
  154. package/i18n/urdu.js.map +1 -1
  155. package/i18n/urdu.min.js +3 -3
  156. package/i18n/vietnamese.js +15 -4
  157. package/i18n/vietnamese.js.map +1 -1
  158. package/i18n/vietnamese.min.js +3 -3
  159. package/i18n/welsh.js +15 -4
  160. package/i18n/welsh.js.map +1 -1
  161. package/i18n/welsh.min.js +3 -3
  162. package/modern.css +2 -2
  163. package/modern.fontless.css +2 -2
  164. package/modern.fontless.min.css +2 -2
  165. package/modern.min.css +2 -2
  166. package/package.json +1 -1
  167. package/plugins/bootstrap-integration.js +2 -2
  168. package/plugins/bootstrap-integration.min.js +2 -2
  169. package/plugins/bootstrap-material-integration.js +2 -2
  170. package/plugins/bootstrap-material-integration.min.js +2 -2
  171. package/survey.core.js +605 -188
  172. package/survey.core.js.map +1 -1
  173. package/survey.core.min.js +4 -4
  174. package/survey.css +2 -2
  175. package/survey.i18n.js +613 -96
  176. package/survey.i18n.js.map +1 -1
  177. package/survey.i18n.min.js +3 -3
  178. package/survey.min.css +2 -2
  179. package/themes/borderless-dark-panelless.js +2 -2
  180. package/themes/borderless-dark-panelless.min.js +2 -2
  181. package/themes/borderless-dark.js +2 -2
  182. package/themes/borderless-dark.min.js +2 -2
  183. package/themes/borderless-light-panelless..js +2 -2
  184. package/themes/borderless-light-panelless..min.js +2 -2
  185. package/themes/borderless-light.js +2 -2
  186. package/themes/borderless-light.min.js +2 -2
  187. package/themes/contrast-dark-panelless.js +2 -2
  188. package/themes/contrast-dark-panelless.min.js +2 -2
  189. package/themes/contrast-dark.js +2 -2
  190. package/themes/contrast-dark.min.js +2 -2
  191. package/themes/contrast-light-panelless.js +2 -2
  192. package/themes/contrast-light-panelless.min.js +2 -2
  193. package/themes/contrast-light.js +2 -2
  194. package/themes/contrast-light.min.js +2 -2
  195. package/themes/default-dark-panelless.js +2 -2
  196. package/themes/default-dark-panelless.min.js +2 -2
  197. package/themes/default-dark.js +2 -2
  198. package/themes/default-dark.min.js +2 -2
  199. package/themes/default-light-panelless.js +2 -2
  200. package/themes/default-light-panelless.min.js +2 -2
  201. package/themes/default-light.js +2 -2
  202. package/themes/default-light.min.js +2 -2
  203. package/themes/doubleborder-dark-panelless.js +2 -2
  204. package/themes/doubleborder-dark-panelless.min.js +2 -2
  205. package/themes/doubleborder-dark.js +2 -2
  206. package/themes/doubleborder-dark.min.js +2 -2
  207. package/themes/doubleborder-light-panelles.js +2 -2
  208. package/themes/doubleborder-light-panelles.min.js +2 -2
  209. package/themes/doubleborder-light.js +2 -2
  210. package/themes/doubleborder-light.min.js +2 -2
  211. package/themes/flat-dark-panelless.js +2 -2
  212. package/themes/flat-dark-panelless.min.js +2 -2
  213. package/themes/flat-dark.js +2 -2
  214. package/themes/flat-dark.min.js +2 -2
  215. package/themes/flat-light-panelless.js +2 -2
  216. package/themes/flat-light-panelless.min.js +2 -2
  217. package/themes/flat-light.js +2 -2
  218. package/themes/flat-light.min.js +2 -2
  219. package/themes/index.js +2 -2
  220. package/themes/index.min.js +2 -2
  221. package/themes/layered-dark-panelless.js +2 -2
  222. package/themes/layered-dark-panelless.min.js +2 -2
  223. package/themes/layered-dark.js +2 -2
  224. package/themes/layered-dark.min.js +2 -2
  225. package/themes/layered-light-panelless.js +2 -2
  226. package/themes/layered-light-panelless.min.js +2 -2
  227. package/themes/layered-light.js +2 -2
  228. package/themes/layered-light.min.js +2 -2
  229. package/themes/plain-dark-panelless.js +2 -2
  230. package/themes/plain-dark-panelless.min.js +2 -2
  231. package/themes/plain-dark.js +2 -2
  232. package/themes/plain-dark.min.js +2 -2
  233. package/themes/plain-light-panelless.js +2 -2
  234. package/themes/plain-light-panelless.min.js +2 -2
  235. package/themes/plain-light.js +2 -2
  236. package/themes/plain-light.min.js +2 -2
  237. package/themes/sharp-dark-panelless.js +2 -2
  238. package/themes/sharp-dark-panelless.min.js +2 -2
  239. package/themes/sharp-dark.js +2 -2
  240. package/themes/sharp-dark.min.js +2 -2
  241. package/themes/sharp-light-panelless.js +2 -2
  242. package/themes/sharp-light-panelless.min.js +2 -2
  243. package/themes/sharp-light.js +2 -2
  244. package/themes/sharp-light.min.js +2 -2
  245. package/themes/solid-dark-panelless.js +2 -2
  246. package/themes/solid-dark-panelless.min.js +2 -2
  247. package/themes/solid-dark.js +2 -2
  248. package/themes/solid-dark.min.js +2 -2
  249. package/themes/solid-light-panelless.js +2 -2
  250. package/themes/solid-light-panelless.min.js +2 -2
  251. package/themes/solid-light.js +2 -2
  252. package/themes/solid-light.min.js +2 -2
  253. package/themes/three-dimensional-dark-panelless.js +2 -2
  254. package/themes/three-dimensional-dark-panelless.min.js +2 -2
  255. package/themes/three-dimensional-dark.js +2 -2
  256. package/themes/three-dimensional-dark.min.js +2 -2
  257. package/themes/three-dimensional-light-panelless.js +2 -2
  258. package/themes/three-dimensional-light-panelless.min.js +2 -2
  259. package/themes/three-dimensional-light.js +2 -2
  260. package/themes/three-dimensional-light.min.js +2 -2
  261. package/ts3.4/typings/actions/action.d.ts +3 -3
  262. package/ts3.4/typings/base-interfaces.d.ts +1 -0
  263. package/ts3.4/typings/base.d.ts +2 -1
  264. package/ts3.4/typings/error.d.ts +6 -0
  265. package/ts3.4/typings/jsonobject.d.ts +4 -0
  266. package/ts3.4/typings/localizablestring.d.ts +1 -0
  267. package/ts3.4/typings/localization/english.d.ts +1 -0
  268. package/ts3.4/typings/martixBase.d.ts +6 -2
  269. package/ts3.4/typings/panel.d.ts +3 -3
  270. package/ts3.4/typings/question.d.ts +3 -3
  271. package/ts3.4/typings/question_baseselect.d.ts +5 -2
  272. package/ts3.4/typings/question_boolean.d.ts +2 -2
  273. package/ts3.4/typings/question_custom.d.ts +28 -1
  274. package/ts3.4/typings/question_matrix.d.ts +20 -1
  275. package/ts3.4/typings/question_matrixdropdownbase.d.ts +9 -8
  276. package/ts3.4/typings/question_matrixdropdowncolumn.d.ts +179 -0
  277. package/ts3.4/typings/question_matrixdropdownrendered.d.ts +2 -4
  278. package/ts3.4/typings/question_matrixdynamic.d.ts +1 -0
  279. package/ts3.4/typings/settings.d.ts +2 -2
  280. package/ts3.4/typings/survey-events-api.d.ts +3 -3
  281. package/ts3.4/typings/survey.d.ts +12 -0
  282. package/ts3.4/typings/surveyStrings.d.ts +1 -0
  283. package/ts3.4/typings/surveyToc.d.ts +0 -2
  284. package/ts3.4/typings/utils/devices.d.ts +5 -0
  285. package/ts3.4/typings/validator.d.ts +2 -0
  286. package/typings/actions/action.d.ts +3 -3
  287. package/typings/base-interfaces.d.ts +1 -0
  288. package/typings/base.d.ts +2 -1
  289. package/typings/error.d.ts +6 -0
  290. package/typings/jsonobject.d.ts +4 -0
  291. package/typings/localizablestring.d.ts +1 -0
  292. package/typings/localization/english.d.ts +1 -0
  293. package/typings/martixBase.d.ts +6 -2
  294. package/typings/panel.d.ts +3 -3
  295. package/typings/question.d.ts +3 -3
  296. package/typings/question_baseselect.d.ts +5 -2
  297. package/typings/question_boolean.d.ts +4 -4
  298. package/typings/question_custom.d.ts +28 -1
  299. package/typings/question_matrix.d.ts +22 -2
  300. package/typings/question_matrixdropdownbase.d.ts +9 -8
  301. package/typings/question_matrixdropdowncolumn.d.ts +179 -0
  302. package/typings/question_matrixdropdownrendered.d.ts +2 -4
  303. package/typings/question_matrixdynamic.d.ts +1 -0
  304. package/typings/settings.d.ts +2 -2
  305. package/typings/survey-events-api.d.ts +3 -3
  306. package/typings/survey.d.ts +14 -0
  307. package/typings/surveyStrings.d.ts +1 -0
  308. package/typings/surveyToc.d.ts +0 -2
  309. package/typings/utils/devices.d.ts +5 -0
  310. package/typings/validator.d.ts +3 -0
package/survey.core.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.9.123
3
- * Copyright (c) 2015-2023 Devsoft Baltic OÜ - http://surveyjs.io/
2
+ * surveyjs - Survey JavaScript library v1.9.125
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
  */
6
6
  (function webpackUniversalModuleDefinition(root, factory) {
@@ -1964,6 +1964,13 @@ var Base = /** @class */ (function () {
1964
1964
  enumerable: false,
1965
1965
  configurable: true
1966
1966
  });
1967
+ Object.defineProperty(Base.prototype, "isDesignModeV2", {
1968
+ get: function () {
1969
+ return _settings__WEBPACK_IMPORTED_MODULE_3__["settings"].supportCreatorV2 && this.isDesignMode;
1970
+ },
1971
+ enumerable: false,
1972
+ configurable: true
1973
+ });
1967
1974
  Object.defineProperty(Base.prototype, "inSurvey", {
1968
1975
  /**
1969
1976
  * Returns `true` if the object is included in a survey.
@@ -2139,6 +2146,7 @@ var Base = /** @class */ (function () {
2139
2146
  Base.prototype.resetPropertyValue = function (name) {
2140
2147
  var locStr = this.localizableStrings ? this.localizableStrings[name] : undefined;
2141
2148
  if (locStr) {
2149
+ this.setLocalizableStringText(name, undefined);
2142
2150
  locStr.clear();
2143
2151
  }
2144
2152
  else {
@@ -2431,8 +2439,8 @@ var Base = /** @class */ (function () {
2431
2439
  Base.prototype.createCustomLocalizableObj = function (name) {
2432
2440
  var locStr = this.getLocalizableString(name);
2433
2441
  if (locStr)
2434
- return;
2435
- this.createLocalizableString(name, this, false, true);
2442
+ return locStr;
2443
+ return this.createLocalizableString(name, this, false, true);
2436
2444
  };
2437
2445
  Base.prototype.getLocale = function () {
2438
2446
  var locOwner = this.getSurvey();
@@ -3152,6 +3160,10 @@ var ChoicesRestful = /** @class */ (function (_super) {
3152
3160
  _this.createItemValue = function (value) {
3153
3161
  return new _itemvalue__WEBPACK_IMPORTED_MODULE_1__["ItemValue"](value);
3154
3162
  };
3163
+ _this.registerPropertyChangedHandlers(["url"], function () {
3164
+ if (_this.owner)
3165
+ _this.owner.setPropertyValue("isUsingRestful", !!_this.url);
3166
+ });
3155
3167
  return _this;
3156
3168
  }
3157
3169
  Object.defineProperty(ChoicesRestful, "EncodeParameters", {
@@ -3444,7 +3456,7 @@ var ChoicesRestful = /** @class */ (function (_super) {
3444
3456
  * @see titleName
3445
3457
  */
3446
3458
  get: function () {
3447
- return this.getPropertyValue("url", "");
3459
+ return this.getPropertyValue("url") || "";
3448
3460
  },
3449
3461
  set: function (val) {
3450
3462
  this.setPropertyValue("url", val);
@@ -3482,8 +3494,7 @@ var ChoicesRestful = /** @class */ (function (_super) {
3482
3494
  * @see titleName
3483
3495
  */
3484
3496
  get: function () {
3485
- var res = this.getPropertyValue("path");
3486
- return !!res ? res : "";
3497
+ return this.getPropertyValue("path") || "";
3487
3498
  },
3488
3499
  set: function (val) {
3489
3500
  this.setPropertyValue("path", val);
@@ -6145,8 +6156,6 @@ var DragDropInfo = /** @class */ (function () {
6145
6156
  __webpack_require__.r(__webpack_exports__);
6146
6157
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragDropPageHelperV1", function() { return DragDropPageHelperV1; });
6147
6158
  /* harmony import */ var _drag_drop_helper_v1__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./drag-drop-helper-v1 */ "./src/drag-drop-helper-v1.ts");
6148
- /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settings */ "./src/settings.ts");
6149
-
6150
6159
 
6151
6160
  var DragDropPageHelperV1 = /** @class */ (function () {
6152
6161
  function DragDropPageHelperV1(page) {
@@ -6244,7 +6253,7 @@ var DragDropPageHelperV1 = /** @class */ (function () {
6244
6253
  var elementsToResetSWNL = [];
6245
6254
  if (!isCancel && !!row) {
6246
6255
  var isSamePanel = false;
6247
- if (this.page.isDesignMode && _settings__WEBPACK_IMPORTED_MODULE_1__["settings"].supportCreatorV2) {
6256
+ if (this.page.isDesignModeV2) {
6248
6257
  var srcRow = src && src.parent && src.parent.dragDropFindRow(src);
6249
6258
  if (row.panel.elements[targetIndex] && row.panel.elements[targetIndex].startWithNewLine && row.elements.length > 1 && row.panel.elements[targetIndex] === dest) {
6250
6259
  elementsToSetSWNL.push(target);
@@ -6263,8 +6272,8 @@ var DragDropPageHelperV1 = /** @class */ (function () {
6263
6272
  elementsToResetSWNL.push(target);
6264
6273
  }
6265
6274
  }
6275
+ this.page.survey.startMovingQuestion();
6266
6276
  if (!!src && !!src.parent) {
6267
- this.page.survey.startMovingQuestion();
6268
6277
  isSamePanel = row.panel == src.parent;
6269
6278
  if (isSamePanel) {
6270
6279
  row.panel.dragDropMoveElement(src, target, targetIndex);
@@ -6307,7 +6316,7 @@ var DragDropPageHelperV1 = /** @class */ (function () {
6307
6316
  var destination = this.dragDropInfo.destination;
6308
6317
  if (!this.dragDropCanDropCore(source, destination))
6309
6318
  return false;
6310
- if (this.page.isDesignMode && _settings__WEBPACK_IMPORTED_MODULE_1__["settings"].supportCreatorV2) {
6319
+ if (this.page.isDesignModeV2) {
6311
6320
  var rowSource = this.page.dragDropFindRow(source);
6312
6321
  var rowDestination = this.page.dragDropFindRow(destination);
6313
6322
  if (rowSource !== rowDestination) {
@@ -6373,8 +6382,6 @@ var DragDropPageHelperV1 = /** @class */ (function () {
6373
6382
  __webpack_require__.r(__webpack_exports__);
6374
6383
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragDropPanelHelperV1", function() { return DragDropPanelHelperV1; });
6375
6384
  /* harmony import */ var _drag_drop_helper_v1__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./drag-drop-helper-v1 */ "./src/drag-drop-helper-v1.ts");
6376
- /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settings */ "./src/settings.ts");
6377
-
6378
6385
 
6379
6386
  var DragDropPanelHelperV1 = /** @class */ (function () {
6380
6387
  function DragDropPanelHelperV1(panel) {
@@ -6479,7 +6486,7 @@ var DragDropPanelHelperV1 = /** @class */ (function () {
6479
6486
  var index = destRow.elements.indexOf(dragDropInfo.destination);
6480
6487
  if (index == 0 &&
6481
6488
  !dragDropInfo.isBottom) {
6482
- if (this.panel.isDesignMode && _settings__WEBPACK_IMPORTED_MODULE_1__["settings"].supportCreatorV2) {
6489
+ if (this.panel.isDesignModeV2) {
6483
6490
  }
6484
6491
  else if (destRow.elements[0].startWithNewLine) {
6485
6492
  if (destRow.index > 0) {
@@ -6517,7 +6524,7 @@ var DragDropPanelHelperV1 = /** @class */ (function () {
6517
6524
  };
6518
6525
  DragDropPanelHelperV1.prototype.dragDropAddTargetToNewRow = function (dragDropInfo, destRow, prevRow) {
6519
6526
  var targetRow = destRow.panel.createRowAndSetLazy(destRow.panel.rows.length);
6520
- if (this.panel.isDesignMode && _settings__WEBPACK_IMPORTED_MODULE_1__["settings"].supportCreatorV2) {
6527
+ if (this.panel.isDesignModeV2) {
6521
6528
  targetRow.setIsLazyRendering(false);
6522
6529
  }
6523
6530
  targetRow.addElement(dragDropInfo.target);
@@ -8855,7 +8862,7 @@ var ElementHelper = /** @class */ (function () {
8855
8862
  /*!*************************************!*\
8856
8863
  !*** ./src/entries/chunks/model.ts ***!
8857
8864
  \*************************************/
8858
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank */
8865
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank */
8859
8866
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
8860
8867
 
8861
8868
  "use strict";
@@ -9160,8 +9167,6 @@ __webpack_require__.r(__webpack_exports__);
9160
9167
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTimerModel", function() { return _surveyTimerModel__WEBPACK_IMPORTED_MODULE_54__["SurveyTimerModel"]; });
9161
9168
 
9162
9169
  /* harmony import */ var _surveyToc__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../../surveyToc */ "./src/surveyToc.ts");
9163
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["tryNavigateToPage"]; });
9164
-
9165
9170
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["tryFocusPage"]; });
9166
9171
 
9167
9172
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["createTOCListModel"]; });
@@ -9332,8 +9337,8 @@ __webpack_require__.r(__webpack_exports__);
9332
9337
  //import "../../modern.scss";
9333
9338
  var Version;
9334
9339
  var ReleaseDate;
9335
- Version = "" + "1.9.123";
9336
- ReleaseDate = "" + "2023-12-26";
9340
+ Version = "" + "1.9.125";
9341
+ ReleaseDate = "" + "2024-01-11";
9337
9342
  function checkLibraryVersion(ver, libraryName) {
9338
9343
  if (Version != ver) {
9339
9344
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -9508,7 +9513,7 @@ function checkPrefix(prefix) {
9508
9513
  /*!**************************************!*\
9509
9514
  !*** ./src/entries/core-wo-model.ts ***!
9510
9515
  \**************************************/
9511
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper */
9516
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper */
9512
9517
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9513
9518
 
9514
9519
  "use strict";
@@ -9764,8 +9769,6 @@ __webpack_require__.r(__webpack_exports__);
9764
9769
 
9765
9770
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTimerModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["SurveyTimerModel"]; });
9766
9771
 
9767
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["tryNavigateToPage"]; });
9768
-
9769
9772
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["tryFocusPage"]; });
9770
9773
 
9771
9774
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["createTOCListModel"]; });
@@ -9973,7 +9976,7 @@ __webpack_require__.r(__webpack_exports__);
9973
9976
  /*!*****************************!*\
9974
9977
  !*** ./src/entries/core.ts ***!
9975
9978
  \*****************************/
9976
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper, Model */
9979
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper, Model */
9977
9980
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9978
9981
 
9979
9982
  "use strict";
@@ -10229,8 +10232,6 @@ __webpack_require__.r(__webpack_exports__);
10229
10232
 
10230
10233
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTimerModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["SurveyTimerModel"]; });
10231
10234
 
10232
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["tryNavigateToPage"]; });
10233
-
10234
10235
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["tryFocusPage"]; });
10235
10236
 
10236
10237
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["createTOCListModel"]; });
@@ -10419,7 +10420,7 @@ __webpack_require__.r(__webpack_exports__);
10419
10420
  /*!**********************!*\
10420
10421
  !*** ./src/error.ts ***!
10421
10422
  \**********************/
10422
- /*! exports provided: AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, WebRequestError, WebRequestEmptyError, OtherEmptyError, UploadingFileError, RequiredInAllRowsError, MinRowCountError, KeyDuplicationError, CustomError */
10423
+ /*! exports provided: AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, WebRequestError, WebRequestEmptyError, OtherEmptyError, UploadingFileError, RequiredInAllRowsError, EachRowUniqueError, MinRowCountError, KeyDuplicationError, CustomError */
10423
10424
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10424
10425
 
10425
10426
  "use strict";
@@ -10433,6 +10434,7 @@ __webpack_require__.r(__webpack_exports__);
10433
10434
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OtherEmptyError", function() { return OtherEmptyError; });
10434
10435
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UploadingFileError", function() { return UploadingFileError; });
10435
10436
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RequiredInAllRowsError", function() { return RequiredInAllRowsError; });
10437
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EachRowUniqueError", function() { return EachRowUniqueError; });
10436
10438
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MinRowCountError", function() { return MinRowCountError; });
10437
10439
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyDuplicationError", function() { return KeyDuplicationError; });
10438
10440
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CustomError", function() { return CustomError; });
@@ -10625,6 +10627,23 @@ var RequiredInAllRowsError = /** @class */ (function (_super) {
10625
10627
  return RequiredInAllRowsError;
10626
10628
  }(_survey_error__WEBPACK_IMPORTED_MODULE_1__["SurveyError"]));
10627
10629
 
10630
+ var EachRowUniqueError = /** @class */ (function (_super) {
10631
+ __extends(EachRowUniqueError, _super);
10632
+ function EachRowUniqueError(text, errorOwner) {
10633
+ if (errorOwner === void 0) { errorOwner = null; }
10634
+ var _this = _super.call(this, text, errorOwner) || this;
10635
+ _this.text = text;
10636
+ return _this;
10637
+ }
10638
+ EachRowUniqueError.prototype.getErrorType = function () {
10639
+ return "eachrowuniqueeerror";
10640
+ };
10641
+ EachRowUniqueError.prototype.getDefaultText = function () {
10642
+ return this.getLocalizationString("eachRowUniqueError");
10643
+ };
10644
+ return EachRowUniqueError;
10645
+ }(_survey_error__WEBPACK_IMPORTED_MODULE_1__["SurveyError"]));
10646
+
10628
10647
  var MinRowCountError = /** @class */ (function (_super) {
10629
10648
  __extends(MinRowCountError, _super);
10630
10649
  function MinRowCountError(minRowCount, errorOwner) {
@@ -17598,7 +17617,12 @@ var JsonObjectProperty = /** @class */ (function () {
17598
17617
  return this.isRequiredValue;
17599
17618
  },
17600
17619
  set: function (val) {
17601
- this.isRequiredValue = val;
17620
+ if (val !== this.isRequired) {
17621
+ this.isRequiredValue = val;
17622
+ if (!!this.classInfo) {
17623
+ this.classInfo.resetAllProperties();
17624
+ }
17625
+ }
17602
17626
  },
17603
17627
  enumerable: false,
17604
17628
  configurable: true
@@ -17633,7 +17657,7 @@ var JsonObjectProperty = /** @class */ (function () {
17633
17657
  JsonObjectProperty.prototype.getDefaultValue = function (obj) {
17634
17658
  var result = !!this.defaultValueFunc ? this.defaultValueFunc(obj) : this.defaultValueValue;
17635
17659
  if (!!JsonObjectProperty.getItemValuesDefaultValue &&
17636
- JsonObject.metaData.isDescendantOf(this.className, "itemvalue")) {
17660
+ Serializer.isDescendantOf(this.className, "itemvalue")) {
17637
17661
  result = JsonObjectProperty.getItemValuesDefaultValue(this.defaultValueValue || [], this.className);
17638
17662
  }
17639
17663
  return result;
@@ -17978,7 +18002,8 @@ var CustomPropertiesCollection = /** @class */ (function () {
17978
18002
  if (prop.isLocalizable &&
17979
18003
  prop.serializationProperty &&
17980
18004
  obj.createCustomLocalizableObj) {
17981
- obj.createCustomLocalizableObj(prop.name);
18005
+ var locStr = obj.createCustomLocalizableObj(prop.name);
18006
+ locStr.defaultValue = prop.defaultValue;
17982
18007
  var locDesc = {
17983
18008
  get: function () {
17984
18009
  return obj.getLocalizableString(prop.name);
@@ -17987,7 +18012,7 @@ var CustomPropertiesCollection = /** @class */ (function () {
17987
18012
  Object.defineProperty(obj, prop.serializationProperty, locDesc);
17988
18013
  var desc = {
17989
18014
  get: function () {
17990
- return obj.getLocalizableStringText(prop.name, prop.defaultValue);
18015
+ return obj.getLocalizableStringText(prop.name);
17991
18016
  },
17992
18017
  set: function (v) {
17993
18018
  obj.setLocalizableStringText(prop.name, v);
@@ -17999,7 +18024,7 @@ var CustomPropertiesCollection = /** @class */ (function () {
17999
18024
  var defaultValue = prop.defaultValue;
18000
18025
  var isArrayProp = prop.isArray || prop.type === "multiplevalues";
18001
18026
  if (typeof obj.createNewArray === "function") {
18002
- if (JsonObject.metaData.isDescendantOf(prop.className, "itemvalue")) {
18027
+ if (Serializer.isDescendantOf(prop.className, "itemvalue")) {
18003
18028
  obj.createNewArray(prop.name, function (item) {
18004
18029
  item.locOwner = obj;
18005
18030
  item.ownerPropertyName = prop.name;
@@ -18090,8 +18115,20 @@ var JsonMetadataClass = /** @class */ (function () {
18090
18115
  this.fillAllProperties();
18091
18116
  return this.allProperties;
18092
18117
  };
18118
+ JsonMetadataClass.prototype.getRequiredProperties = function () {
18119
+ if (!!this.requiredProperties)
18120
+ return this.requiredProperties;
18121
+ this.requiredProperties = [];
18122
+ var props = this.getAllProperties();
18123
+ for (var i = 0; i < props.length; i++) {
18124
+ if (props[i].isRequired)
18125
+ this.requiredProperties.push(props[i]);
18126
+ }
18127
+ return this.requiredProperties;
18128
+ };
18093
18129
  JsonMetadataClass.prototype.resetAllProperties = function () {
18094
18130
  this.allProperties = undefined;
18131
+ this.requiredProperties = undefined;
18095
18132
  this.hashProperties = undefined;
18096
18133
  var childClasses = Serializer.getChildrenClasses(this.name);
18097
18134
  for (var i = 0; i < childClasses.length; i++) {
@@ -18361,6 +18398,7 @@ var JsonMetadata = /** @class */ (function () {
18361
18398
  this.classes = {};
18362
18399
  this.alternativeNames = {};
18363
18400
  this.childrenClasses = {};
18401
+ this.dynamicPropsCache = {};
18364
18402
  }
18365
18403
  JsonMetadata.prototype.getObjPropertyValue = function (obj, name) {
18366
18404
  if (this.isObjWrapper(obj)) {
@@ -18473,14 +18511,18 @@ var JsonMetadata = /** @class */ (function () {
18473
18511
  if (dynamicType === void 0) { dynamicType = null; }
18474
18512
  if (!obj || !obj.getType || (!obj.getDynamicType && !dynamicType))
18475
18513
  return [];
18514
+ var objType = obj.getType();
18476
18515
  var dType = !!dynamicType ? dynamicType : obj.getDynamicType();
18477
18516
  if (!dType)
18478
18517
  return [];
18518
+ var cacheType = dType + "-" + objType;
18519
+ if (this.dynamicPropsCache[cacheType])
18520
+ return this.dynamicPropsCache[cacheType];
18479
18521
  var dynamicProps = this.getProperties(dType);
18480
18522
  if (!dynamicProps || dynamicProps.length == 0)
18481
18523
  return [];
18482
18524
  var hash = {};
18483
- var props = this.getProperties(obj.getType());
18525
+ var props = this.getProperties(objType);
18484
18526
  for (var i = 0; i < props.length; i++) {
18485
18527
  hash[props[i].name] = props[i];
18486
18528
  }
@@ -18491,6 +18533,7 @@ var JsonMetadata = /** @class */ (function () {
18491
18533
  res.push(dProp);
18492
18534
  }
18493
18535
  }
18536
+ this.dynamicPropsCache[cacheType] = res;
18494
18537
  return res;
18495
18538
  };
18496
18539
  JsonMetadata.prototype.hasOriginalProperty = function (obj, propName) {
@@ -18600,12 +18643,13 @@ var JsonMetadata = /** @class */ (function () {
18600
18643
  return result;
18601
18644
  };
18602
18645
  JsonMetadata.prototype.getRequiredProperties = function (name) {
18603
- var properties = this.getProperties(name);
18646
+ var metaClass = this.findClass(name);
18647
+ if (!metaClass)
18648
+ return [];
18649
+ var props = metaClass.getRequiredProperties();
18604
18650
  var res = [];
18605
- for (var i = 0; i < properties.length; i++) {
18606
- if (properties[i].isRequired) {
18607
- res.push(properties[i].name);
18608
- }
18651
+ for (var i = 0; i < props.length; i++) {
18652
+ res.push(props[i].name);
18609
18653
  }
18610
18654
  return res;
18611
18655
  };
@@ -18624,6 +18668,7 @@ var JsonMetadata = /** @class */ (function () {
18624
18668
  return null;
18625
18669
  var property = metaDataClass.createProperty(propertyInfo, true);
18626
18670
  if (property) {
18671
+ this.clearDynamicPropsCache(metaDataClass);
18627
18672
  metaDataClass.resetAllProperties();
18628
18673
  }
18629
18674
  return property;
@@ -18634,11 +18679,15 @@ var JsonMetadata = /** @class */ (function () {
18634
18679
  return false;
18635
18680
  var property = metaDataClass.find(propertyName);
18636
18681
  if (property) {
18682
+ this.clearDynamicPropsCache(metaDataClass);
18637
18683
  this.removePropertyFromClass(metaDataClass, property);
18638
18684
  metaDataClass.resetAllProperties();
18639
18685
  CustomPropertiesCollection.removeProperty(metaDataClass.name, propertyName);
18640
18686
  }
18641
18687
  };
18688
+ JsonMetadata.prototype.clearDynamicPropsCache = function (metaDataClass) {
18689
+ this.dynamicPropsCache = {};
18690
+ };
18642
18691
  JsonMetadata.prototype.removePropertyFromClass = function (metaDataClass, property) {
18643
18692
  var index = metaDataClass.properties.indexOf(property);
18644
18693
  if (index < 0)
@@ -18865,7 +18914,7 @@ var JsonUnknownPropertyError = /** @class */ (function (_super) {
18865
18914
  "' is unknown.") || this;
18866
18915
  _this.propertyName = propertyName;
18867
18916
  _this.className = className;
18868
- var properties = JsonObject.metaData.getProperties(className);
18917
+ var properties = Serializer.getProperties(className);
18869
18918
  if (properties) {
18870
18919
  _this.description = "The list of available properties are: ";
18871
18920
  for (var i = 0; i < properties.length; i++) {
@@ -18888,7 +18937,7 @@ var JsonMissingTypeErrorBase = /** @class */ (function (_super) {
18888
18937
  _this.type = type;
18889
18938
  _this.message = message;
18890
18939
  _this.description = "The following types are available: ";
18891
- var types = JsonObject.metaData.getChildrenClasses(baseClassName, true);
18940
+ var types = Serializer.getChildrenClasses(baseClassName, true);
18892
18941
  for (var i = 0; i < types.length; i++) {
18893
18942
  if (i > 0)
18894
18943
  _this.description += ", ";
@@ -18994,9 +19043,9 @@ var JsonObject = /** @class */ (function () {
18994
19043
  var needAddErrors = true;
18995
19044
  if (obj.getType) {
18996
19045
  objType = obj.getType();
18997
- properties = JsonObject.metaData.getProperties(objType);
19046
+ properties = Serializer.getProperties(objType);
18998
19047
  needAddErrors =
18999
- !!objType && !JsonObject.metaData.isDescendantOf(objType, "itemvalue");
19048
+ !!objType && !Serializer.isDescendantOf(objType, "itemvalue");
19000
19049
  }
19001
19050
  if (!properties)
19002
19051
  return;
@@ -19036,7 +19085,7 @@ var JsonObject = /** @class */ (function () {
19036
19085
  if (property != null && !property.className) {
19037
19086
  result[JsonObject.typePropertyName] = property.getObjType(obj.getType());
19038
19087
  }
19039
- this.propertiesToJson(obj, JsonObject.metaData.getProperties(obj.getType()), result, storeDefaults);
19088
+ this.propertiesToJson(obj, Serializer.getProperties(obj.getType()), result, storeDefaults);
19040
19089
  this.propertiesToJson(obj, this.getDynamicProperties(obj), result, storeDefaults);
19041
19090
  return result;
19042
19091
  };
@@ -19154,7 +19203,7 @@ var JsonObject = /** @class */ (function () {
19154
19203
  var result = { newObj: null, error: null };
19155
19204
  var className = this.getClassNameForNewObj(value, property);
19156
19205
  result.newObj = className
19157
- ? JsonObject.metaData.createClass(className, value)
19206
+ ? Serializer.createClass(className, value)
19158
19207
  : null;
19159
19208
  result.error = this.checkNewObjectOnErrors(result.newObj, value, property, className);
19160
19209
  return result;
@@ -19196,16 +19245,18 @@ var JsonObject = /** @class */ (function () {
19196
19245
  JsonObject.prototype.getRequiredError = function (obj, jsonValue) {
19197
19246
  if (!obj.getType || typeof obj.getData === "function")
19198
19247
  return null;
19199
- var className = obj.getType();
19200
- var requiredProperties = JsonObject.metaData.getRequiredProperties(className);
19201
- if (!Array.isArray(requiredProperties))
19248
+ var metaClass = Serializer.findClass(obj.getType());
19249
+ if (!metaClass)
19250
+ return null;
19251
+ var props = metaClass.getRequiredProperties();
19252
+ if (!Array.isArray(props))
19202
19253
  return null;
19203
- for (var i = 0; i < requiredProperties.length; i++) {
19204
- var prop = Serializer.findProperty(className, requiredProperties[i]);
19205
- if (!prop || !_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(prop.defaultValue))
19254
+ for (var i = 0; i < props.length; i++) {
19255
+ var prop = props[i];
19256
+ if (!_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isValueEmpty(prop.defaultValue))
19206
19257
  continue;
19207
19258
  if (!jsonValue[prop.name]) {
19208
- return new JsonRequiredPropertyError(prop.name, className);
19259
+ return new JsonRequiredPropertyError(prop.name, obj.getType());
19209
19260
  }
19210
19261
  }
19211
19262
  return null;
@@ -19827,7 +19878,7 @@ var LocalizableString = /** @class */ (function () {
19827
19878
  }
19828
19879
  }
19829
19880
  if (!res)
19830
- res = "";
19881
+ res = this.defaultValue || "";
19831
19882
  return res;
19832
19883
  },
19833
19884
  enumerable: false,
@@ -20325,6 +20376,7 @@ var englishStrings = {
20325
20376
  requiredError: "Response required.",
20326
20377
  requiredErrorInPanel: "Response required: answer at least one question.",
20327
20378
  requiredInAllRowsError: "Response required: answer questions in all rows.",
20379
+ eachRowUniqueError: "Each row must have a unique value.",
20328
20380
  numericError: "The value should be numeric.",
20329
20381
  minError: "The value should not be less than {0}",
20330
20382
  maxError: "The value should not be greater than {0}",
@@ -20504,9 +20556,13 @@ var QuestionMatrixBaseModel = /** @class */ (function (_super) {
20504
20556
  /**
20505
20557
  * An array of matrix columns.
20506
20558
  *
20507
- * This array can contain primitive values or objects with the `text` (display value) and `value` (value to be saved in survey results) properties.
20559
+ * For a Single-Select Matrix, the `columns` array can contain configuration objects with the `text` (display value) and `value` (value to be saved in survey results) properties. Alternatively, the array can contain primitive values that will be used as both the display values and values to be saved in survey results.
20508
20560
  *
20509
- * [View Demo](https://surveyjs.io/form-library/examples/single-selection-matrix-table-question/ (linkStyle))
20561
+ * [View "Single-Select Matrix" Demo](https://surveyjs.io/form-library/examples/single-selection-matrix-table-question/ (linkStyle))
20562
+ *
20563
+ * For a Multi-Select Matrix or Dynamic Matrix, the `columns` array should contain configuration objects with properties described in the [`MatrixDropdownColumn`](https://surveyjs.io/form-library/documentation/api-reference/multi-select-matrix-column-values) API Reference section.
20564
+ *
20565
+ * [View "Multi-Select Matrix" Demo](https://surveyjs.io/form-library/examples/questiontype-matrixdropdown/ (linkStyle))
20510
20566
  */
20511
20567
  get: function () {
20512
20568
  return this.getPropertyValue("columns");
@@ -21972,7 +22028,7 @@ var PanelModelBase = /** @class */ (function (_super) {
21972
22028
  *
21973
22029
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
21974
22030
  *
21975
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
22031
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
21976
22032
  * @see visible
21977
22033
  * @see isVisible
21978
22034
  */
@@ -22278,7 +22334,7 @@ var PanelModelBase = /** @class */ (function (_super) {
22278
22334
  *
22279
22335
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
22280
22336
  *
22281
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
22337
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
22282
22338
  * @see isRequired
22283
22339
  */
22284
22340
  get: function () {
@@ -22714,7 +22770,7 @@ var PanelModelBase = /** @class */ (function (_super) {
22714
22770
  PanelModelBase.prototype.isLazyRenderInRow = function (rowIndex) {
22715
22771
  if (!this.survey || !this.survey.isLazyRendering)
22716
22772
  return false;
22717
- return (rowIndex >= _settings__WEBPACK_IMPORTED_MODULE_7__["settings"].lazyRender.firstBatchSize ||
22773
+ return (rowIndex >= this.survey.lazyRenderingFirstBatchSize ||
22718
22774
  !this.canRenderFirstRows());
22719
22775
  };
22720
22776
  PanelModelBase.prototype.canRenderFirstRows = function () {
@@ -22928,7 +22984,7 @@ var PanelModelBase = /** @class */ (function (_super) {
22928
22984
  *
22929
22985
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
22930
22986
  *
22931
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
22987
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
22932
22988
  * @see readOnly
22933
22989
  * @see isReadOnly
22934
22990
  */
@@ -25429,7 +25485,7 @@ var Question = /** @class */ (function (_super) {
25429
25485
  *
25430
25486
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
25431
25487
  *
25432
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
25488
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
25433
25489
  * @see visible
25434
25490
  * @see isVisible
25435
25491
  */
@@ -26490,7 +26546,7 @@ var Question = /** @class */ (function (_super) {
26490
26546
  *
26491
26547
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
26492
26548
  *
26493
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
26549
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
26494
26550
  * @see isRequired
26495
26551
  */
26496
26552
  get: function () {
@@ -26612,8 +26668,7 @@ var Question = /** @class */ (function (_super) {
26612
26668
  if (this.forceIsInputReadOnly !== undefined) {
26613
26669
  return this.forceIsInputReadOnly;
26614
26670
  }
26615
- var isDesignModeV2 = _settings__WEBPACK_IMPORTED_MODULE_8__["settings"].supportCreatorV2 && this.isDesignMode;
26616
- return this.isReadOnly || isDesignModeV2;
26671
+ return this.isReadOnly || this.isDesignModeV2;
26617
26672
  },
26618
26673
  enumerable: false,
26619
26674
  configurable: true
@@ -26647,7 +26702,7 @@ var Question = /** @class */ (function (_super) {
26647
26702
  *
26648
26703
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
26649
26704
  *
26650
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
26705
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
26651
26706
  * @see readOnly
26652
26707
  * @see isReadOnly
26653
26708
  */
@@ -28575,7 +28630,8 @@ var QuestionSelectBase = /** @class */ (function (_super) {
28575
28630
  _this.onVisibleChoicesChanged();
28576
28631
  }
28577
28632
  });
28578
- _this.registerPropertyChangedHandlers(["choicesFromQuestion", "choicesFromQuestionMode", "choiceValuesFromQuestion", "choiceTextsFromQuestion", "showNoneItem"], function () {
28633
+ _this.registerPropertyChangedHandlers(["choicesFromQuestion", "choicesFromQuestionMode", "choiceValuesFromQuestion",
28634
+ "choiceTextsFromQuestion", "showNoneItem", "isUsingRestful"], function () {
28579
28635
  _this.onVisibleChoicesChanged();
28580
28636
  });
28581
28637
  _this.registerPropertyChangedHandlers(["hideIfChoicesEmpty"], function () {
@@ -28606,7 +28662,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
28606
28662
  }
28607
28663
  Object.defineProperty(QuestionSelectBase.prototype, "waitingChoicesByURL", {
28608
28664
  get: function () {
28609
- return !this.isChoicesLoaded && !this.choicesByUrl.isEmpty;
28665
+ return !this.isChoicesLoaded && this.hasChoicesUrl;
28610
28666
  },
28611
28667
  enumerable: false,
28612
28668
  configurable: true
@@ -28662,6 +28718,16 @@ var QuestionSelectBase = /** @class */ (function (_super) {
28662
28718
  var mode = selBaseQuestion ? "select" : (arrayQuestion ? "array" : undefined);
28663
28719
  this.setPropertyValue("carryForwardQuestionType", mode);
28664
28720
  };
28721
+ Object.defineProperty(QuestionSelectBase.prototype, "isUsingRestful", {
28722
+ get: function () {
28723
+ return this.getPropertyValueWithoutDefault("isUsingRestful") || false;
28724
+ },
28725
+ enumerable: false,
28726
+ configurable: true
28727
+ });
28728
+ QuestionSelectBase.prototype.updateIsUsingRestful = function () {
28729
+ this.setPropertyValueDirectly("isUsingRestful", this.hasChoicesUrl);
28730
+ };
28665
28731
  QuestionSelectBase.prototype.supportGoNextPageError = function () {
28666
28732
  return !this.isOtherSelected || !!this.otherValue;
28667
28733
  };
@@ -29169,7 +29235,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29169
29235
  var value = this.value;
29170
29236
  var valueArray = Array.isArray(value) ? value : [value];
29171
29237
  var hasItemWithoutValues = valueArray.some(function (val) { return !_itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"].getItemByValue(_this.choices, val); });
29172
- if (hasItemWithoutValues && (this.choicesLazyLoadEnabled || !this.choicesByUrl.isEmpty)) {
29238
+ if (hasItemWithoutValues && (this.choicesLazyLoadEnabled || this.hasChoicesUrl)) {
29173
29239
  this.waitingGetChoiceDisplayValueResponse = true;
29174
29240
  this.updateIsReady();
29175
29241
  this.survey.getChoiceDisplayValue({
@@ -29462,7 +29528,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29462
29528
  });
29463
29529
  Object.defineProperty(QuestionSelectBase.prototype, "otherErrorText", {
29464
29530
  /**
29465
- * Get or sets an error message displayed when users select the "Other" choice item but leave the comment area empty.
29531
+ * Gets or sets an error message displayed when users select the "Other" choice item but leave the comment area empty.
29466
29532
  * @see showOtherItem
29467
29533
  */
29468
29534
  get: function () {
@@ -29559,7 +29625,9 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29559
29625
  QuestionSelectBase.prototype.addToVisibleChoices = function (items, isAddAll) {
29560
29626
  this.headItemsCount = 0;
29561
29627
  this.footItemsCount = 0;
29562
- this.addNewItemToVisibleChoices(items, isAddAll);
29628
+ if (!this.hasChoicesUrl) {
29629
+ this.addNewItemToVisibleChoices(items, isAddAll);
29630
+ }
29563
29631
  var dict = new Array();
29564
29632
  this.addNonChoicesItems(dict, isAddAll);
29565
29633
  dict.sort(function (a, b) {
@@ -29621,8 +29689,8 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29621
29689
  };
29622
29690
  Object.defineProperty(QuestionSelectBase.prototype, "isAddDefaultItems", {
29623
29691
  get: function () {
29624
- return _settings__WEBPACK_IMPORTED_MODULE_9__["settings"].supportCreatorV2 && _settings__WEBPACK_IMPORTED_MODULE_9__["settings"].showDefaultItemsInCreatorV2 &&
29625
- this.isDesignMode && !this.customWidget && !this.isContentElement;
29692
+ return _settings__WEBPACK_IMPORTED_MODULE_9__["settings"].showDefaultItemsInCreatorV2 && this.isDesignModeV2 &&
29693
+ !this.customWidget && !this.isContentElement;
29626
29694
  },
29627
29695
  enumerable: false,
29628
29696
  configurable: true
@@ -29721,6 +29789,8 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29721
29789
  question.addDependedQuestion(this);
29722
29790
  return this.getChoicesFromArrayQuestion(question);
29723
29791
  }
29792
+ if (this.isDesignModeV2 && this.hasChoicesUrl)
29793
+ return [];
29724
29794
  return this.choicesFromUrl ? this.choicesFromUrl : this.getChoices();
29725
29795
  },
29726
29796
  enumerable: false,
@@ -29883,7 +29953,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29883
29953
  return (this.storeOthersAsComment === true ||
29884
29954
  (this.storeOthersAsComment == "default" &&
29885
29955
  (this.survey != null ? this.survey.storeOthersAsComment : true)) ||
29886
- (!this.choicesByUrl.isEmpty && !this.choicesFromUrl));
29956
+ (this.hasChoicesUrl && !this.choicesFromUrl));
29887
29957
  };
29888
29958
  QuestionSelectBase.prototype.onSurveyLoad = function () {
29889
29959
  this.runChoicesByUrl();
@@ -29945,7 +30015,8 @@ var QuestionSelectBase = /** @class */ (function (_super) {
29945
30015
  }
29946
30016
  };
29947
30017
  QuestionSelectBase.prototype.runChoicesByUrl = function () {
29948
- if (!this.choicesByUrl || this.isLoadingFromJson || this.isRunningChoices)
30018
+ this.updateIsUsingRestful();
30019
+ if (!this.choicesByUrl || this.isLoadingFromJson || this.isRunningChoices || this.isDesignModeV2)
29949
30020
  return;
29950
30021
  var processor = this.surveyImpl
29951
30022
  ? this.surveyImpl.getTextProcessor()
@@ -30119,6 +30190,13 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30119
30190
  QuestionSelectBase.prototype.randomizeArray = function (array) {
30120
30191
  return _helpers__WEBPACK_IMPORTED_MODULE_8__["Helpers"].randomizeArray(array);
30121
30192
  };
30193
+ Object.defineProperty(QuestionSelectBase.prototype, "hasChoicesUrl", {
30194
+ get: function () {
30195
+ return this.choicesByUrl && !!this.choicesByUrl.url;
30196
+ },
30197
+ enumerable: false,
30198
+ configurable: true
30199
+ });
30122
30200
  QuestionSelectBase.prototype.clearIncorrectValues = function () {
30123
30201
  if (!this.hasValueToClearIncorrectValues())
30124
30202
  return;
@@ -30127,8 +30205,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30127
30205
  if (!!this.survey &&
30128
30206
  this.survey.questionsByValueName(this.getValueName()).length > 1)
30129
30207
  return;
30130
- if (!!this.choicesByUrl &&
30131
- !this.choicesByUrl.isEmpty &&
30208
+ if (this.hasChoicesUrl &&
30132
30209
  (!this.choicesFromUrl || this.choicesFromUrl.length == 0))
30133
30210
  return;
30134
30211
  if (this.clearIncorrectValuesCallback) {
@@ -30504,7 +30581,7 @@ var QuestionCheckboxBase = /** @class */ (function (_super) {
30504
30581
  }
30505
30582
  Object.defineProperty(QuestionCheckboxBase.prototype, "colCount", {
30506
30583
  /**
30507
- * Get or sets the number of columns used to arrange choice items.
30584
+ * Gets or sets the number of columns used to arrange choice items.
30508
30585
  *
30509
30586
  * Set this property to 0 if you want to display all items in one line. The default value depends on the available width.
30510
30587
  * @see separateSpecialChoices
@@ -32057,8 +32134,20 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
32057
32134
  _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("checkbox", [
32058
32135
  { name: "showSelectAllItem:boolean", alternativeName: "hasSelectAll" },
32059
32136
  { name: "separateSpecialChoices", visible: true },
32060
- { name: "maxSelectedChoices:number", default: 0 },
32061
- { name: "minSelectedChoices:number", default: 0 },
32137
+ { name: "maxSelectedChoices:number", default: 0, onSettingValue: function (obj, val) {
32138
+ if (val <= 0)
32139
+ return 0;
32140
+ var min = obj.minSelectedChoices;
32141
+ return min > 0 && val < min ? min : val;
32142
+ }
32143
+ },
32144
+ { name: "minSelectedChoices:number", default: 0, onSettingValue: function (obj, val) {
32145
+ if (val <= 0)
32146
+ return 0;
32147
+ var max = obj.maxSelectedChoices;
32148
+ return max > 0 && val > max ? max : val;
32149
+ }
32150
+ },
32062
32151
  {
32063
32152
  name: "selectAllText",
32064
32153
  serializationProperty: "locSelectAllText",
@@ -32411,6 +32500,13 @@ var ComponentQuestionJSON = /** @class */ (function () {
32411
32500
  return question.getDisplayValue(keyAsText, value);
32412
32501
  return this.json.getDisplayValue(question);
32413
32502
  };
32503
+ Object.defineProperty(ComponentQuestionJSON.prototype, "defaultQuestionTitle", {
32504
+ get: function () {
32505
+ return this.json.defaultQuestionTitle;
32506
+ },
32507
+ enumerable: false,
32508
+ configurable: true
32509
+ });
32414
32510
  ComponentQuestionJSON.prototype.setValueToQuestion = function (val) {
32415
32511
  var converter = this.json.valueToQuestion || this.json.setValue;
32416
32512
  return !!converter ? converter(val) : val;
@@ -32518,6 +32614,8 @@ var QuestionCustomModelBase = /** @class */ (function (_super) {
32518
32614
  _this.customQuestion = customQuestion;
32519
32615
  _jsonobject__WEBPACK_IMPORTED_MODULE_1__["CustomPropertiesCollection"].createProperties(_this);
32520
32616
  _survey_element__WEBPACK_IMPORTED_MODULE_2__["SurveyElement"].CreateDisabledDesignElements = true;
32617
+ _this.locQuestionTitle = _this.createLocalizableString("questionTitle", _this);
32618
+ _this.locQuestionTitle.setJson(_this.customQuestion.defaultQuestionTitle);
32521
32619
  _this.createWrapper();
32522
32620
  _survey_element__WEBPACK_IMPORTED_MODULE_2__["SurveyElement"].CreateDisabledDesignElements = false;
32523
32621
  if (!!_this.customQuestion) {
@@ -32540,6 +32638,12 @@ var QuestionCustomModelBase = /** @class */ (function (_super) {
32540
32638
  this.getElement().localeChanged();
32541
32639
  }
32542
32640
  };
32641
+ QuestionCustomModelBase.prototype.getDefaultTitle = function () {
32642
+ if (!this.locQuestionTitle.isEmpty) {
32643
+ return this.getProcessedText(this.locQuestionTitle.textOrHtml);
32644
+ }
32645
+ return _super.prototype.getDefaultTitle.call(this);
32646
+ };
32543
32647
  QuestionCustomModelBase.prototype.addUsedLocales = function (locales) {
32544
32648
  _super.prototype.addUsedLocales.call(this, locales);
32545
32649
  if (!!this.getElement()) {
@@ -32775,8 +32879,9 @@ var QuestionCustomModel = /** @class */ (function (_super) {
32775
32879
  return this.contentQuestion;
32776
32880
  };
32777
32881
  QuestionCustomModel.prototype.getDefaultTitle = function () {
32778
- if (this.hasJSONTitle && this.contentQuestion)
32779
- return this.contentQuestion.title;
32882
+ if (this.hasJSONTitle && this.contentQuestion) {
32883
+ return this.getProcessedText(this.contentQuestion.title);
32884
+ }
32780
32885
  return _super.prototype.getDefaultTitle.call(this);
32781
32886
  };
32782
32887
  QuestionCustomModel.prototype.setValue = function (name, newValue, locNotification, allowNotifyValueChanged) {
@@ -36787,9 +36892,9 @@ var MatrixRowModel = /** @class */ (function (_super) {
36787
36892
  get: function () {
36788
36893
  return this.getPropertyValue("value");
36789
36894
  },
36790
- set: function (newValue) {
36791
- newValue = this.data.getCorrectedRowValue(newValue);
36792
- this.setPropertyValue("value", newValue);
36895
+ set: function (val) {
36896
+ val = this.data.getCorrectedRowValue(val);
36897
+ this.setPropertyValue("value", val);
36793
36898
  },
36794
36899
  enumerable: false,
36795
36900
  configurable: true
@@ -36797,9 +36902,8 @@ var MatrixRowModel = /** @class */ (function (_super) {
36797
36902
  Object.defineProperty(MatrixRowModel.prototype, "rowClasses", {
36798
36903
  get: function () {
36799
36904
  var cssClasses = this.data.cssClasses;
36800
- var hasError = !!this.data.getErrorByType("requiredinallrowserror");
36801
36905
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_11__["CssClassBuilder"]().append(cssClasses.row)
36802
- .append(cssClasses.rowError, hasError && this.isValueEmpty(this.value))
36906
+ .append(cssClasses.rowError, this.data.hasErrorInRow(this))
36803
36907
  .toString();
36804
36908
  },
36805
36909
  enumerable: false,
@@ -37004,6 +37108,23 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37004
37108
  QuestionMatrixModel.prototype.getType = function () {
37005
37109
  return "matrix";
37006
37110
  };
37111
+ Object.defineProperty(QuestionMatrixModel.prototype, "cellComponent", {
37112
+ /**
37113
+ * The name of a component used to render cells.
37114
+ */
37115
+ get: function () {
37116
+ return this.getPropertyValue("cellComponent");
37117
+ },
37118
+ enumerable: false,
37119
+ configurable: true
37120
+ });
37121
+ Object.defineProperty(QuestionMatrixModel.prototype, "itemComponent", {
37122
+ set: function (value) {
37123
+ this.setPropertyValue("cellComponent", value);
37124
+ },
37125
+ enumerable: false,
37126
+ configurable: true
37127
+ });
37007
37128
  Object.defineProperty(QuestionMatrixModel.prototype, "hasSingleInput", {
37008
37129
  get: function () {
37009
37130
  return false;
@@ -37015,6 +37136,8 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37015
37136
  /**
37016
37137
  * Specifies whether each row requires an answer. If a respondent skips a row, the question displays a validation error.
37017
37138
  * @see isRequired
37139
+ * @see eachRowUnique
37140
+ * @see validators
37018
37141
  */
37019
37142
  get: function () {
37020
37143
  return this.getPropertyValue("isAllRowRequired");
@@ -37025,6 +37148,21 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37025
37148
  enumerable: false,
37026
37149
  configurable: true
37027
37150
  });
37151
+ Object.defineProperty(QuestionMatrixModel.prototype, "eachRowUnique", {
37152
+ /**
37153
+ * Specifies whether answers in all rows should be unique. If any answers duplicate, the question displays a validation error.
37154
+ * @see isAllRowRequired
37155
+ * @see validators
37156
+ */
37157
+ get: function () {
37158
+ return this.getPropertyValue("eachRowUnique");
37159
+ },
37160
+ set: function (val) {
37161
+ this.setPropertyValue("eachRowUnique", val);
37162
+ },
37163
+ enumerable: false,
37164
+ configurable: true
37165
+ });
37028
37166
  Object.defineProperty(QuestionMatrixModel.prototype, "hasRows", {
37029
37167
  get: function () {
37030
37168
  return this.rows.length > 0;
@@ -37209,15 +37347,21 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37209
37347
  };
37210
37348
  QuestionMatrixModel.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
37211
37349
  _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
37212
- if ((!isOnValueChanged || this.hasCssError()) &&
37213
- this.hasErrorInRows()) {
37214
- errors.push(new _error__WEBPACK_IMPORTED_MODULE_6__["RequiredInAllRowsError"](null, this));
37350
+ this.errorsInRow = undefined;
37351
+ if (!isOnValueChanged || this.hasCssError()) {
37352
+ if (this.hasErrorAllRowsRequired()) {
37353
+ errors.push(new _error__WEBPACK_IMPORTED_MODULE_6__["RequiredInAllRowsError"](null, this));
37354
+ }
37355
+ if (this.hasErrorEachRowUnique()) {
37356
+ errors.push(new _error__WEBPACK_IMPORTED_MODULE_6__["EachRowUniqueError"](null, this));
37357
+ }
37215
37358
  }
37216
37359
  };
37217
- QuestionMatrixModel.prototype.hasErrorInRows = function () {
37218
- if (!this.isAllRowRequired)
37219
- return false;
37220
- return !this.hasValuesInAllRows();
37360
+ QuestionMatrixModel.prototype.hasErrorAllRowsRequired = function () {
37361
+ return this.isAllRowRequired && !this.hasValuesInAllRows();
37362
+ };
37363
+ QuestionMatrixModel.prototype.hasErrorEachRowUnique = function () {
37364
+ return this.eachRowUnique && this.hasNonUniqueValueInRow();
37221
37365
  };
37222
37366
  QuestionMatrixModel.prototype.hasValuesInAllRows = function () {
37223
37367
  var rows = this.generatedVisibleRows;
@@ -37225,11 +37369,43 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37225
37369
  rows = this.visibleRows;
37226
37370
  if (!rows)
37227
37371
  return true;
37372
+ var res = true;
37228
37373
  for (var i = 0; i < rows.length; i++) {
37229
- if (this.isValueEmpty(rows[i].value))
37230
- return false;
37374
+ var row = rows[i];
37375
+ var hasValue = !this.isValueEmpty(row.value);
37376
+ if (!hasValue) {
37377
+ this.addErrorIntoRow(row);
37378
+ }
37379
+ res = res && hasValue;
37231
37380
  }
37232
- return true;
37381
+ return res;
37382
+ };
37383
+ QuestionMatrixModel.prototype.hasNonUniqueValueInRow = function () {
37384
+ var rows = this.generatedVisibleRows;
37385
+ if (!rows)
37386
+ rows = this.visibleRows;
37387
+ if (!rows)
37388
+ return false;
37389
+ var hash = {};
37390
+ var res = true;
37391
+ for (var i = 0; i < rows.length; i++) {
37392
+ var val = rows[i].value;
37393
+ var isEmpty = this.isValueEmpty(val);
37394
+ var isUnique = isEmpty || hash[val] !== true;
37395
+ if (!isUnique) {
37396
+ this.addErrorIntoRow(rows[i]);
37397
+ }
37398
+ res = res && isUnique;
37399
+ if (!isEmpty) {
37400
+ hash[val] = true;
37401
+ }
37402
+ }
37403
+ return !res;
37404
+ };
37405
+ QuestionMatrixModel.prototype.addErrorIntoRow = function (row) {
37406
+ if (!this.errorsInRow)
37407
+ this.errorsInRow = {};
37408
+ this.errorsInRow[row.name] = true;
37233
37409
  };
37234
37410
  QuestionMatrixModel.prototype.getIsAnswered = function () {
37235
37411
  return _super.prototype.getIsAnswered.call(this) && this.hasValuesInAllRows();
@@ -37379,6 +37555,9 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
37379
37555
  }
37380
37556
  return value;
37381
37557
  };
37558
+ QuestionMatrixModel.prototype.hasErrorInRow = function (row) {
37559
+ return !!this.errorsInRow && !!this.errorsInRow[row.name];
37560
+ };
37382
37561
  QuestionMatrixModel.prototype.getSearchableItemValueKeys = function (keys) {
37383
37562
  keys.push("columns");
37384
37563
  keys.push("rows");
@@ -37426,7 +37605,9 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_3__["Serializer"].addClass("matrix", [
37426
37605
  choices: ["initial", "random"],
37427
37606
  },
37428
37607
  "isAllRowRequired:boolean",
37608
+ { name: "eachRowUnique:boolean", category: "validation" },
37429
37609
  "hideIfRowsEmpty:boolean",
37610
+ { name: "cellComponent", visible: false, default: "survey-matrix-cell" }
37430
37611
  ], function () {
37431
37612
  return new QuestionMatrixModel("");
37432
37613
  }, "matrixbase");
@@ -37724,6 +37905,7 @@ __webpack_require__.r(__webpack_exports__);
37724
37905
  /* harmony import */ var _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/cssClassBuilder */ "./src/utils/cssClassBuilder.ts");
37725
37906
  /* harmony import */ var _question_matrixdropdowncolumn__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./question_matrixdropdowncolumn */ "./src/question_matrixdropdowncolumn.ts");
37726
37907
  /* harmony import */ var _question_matrixdropdownrendered__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./question_matrixdropdownrendered */ "./src/question_matrixdropdownrendered.ts");
37908
+ /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils/utils */ "./src/utils/utils.ts");
37727
37909
  var __extends = (undefined && undefined.__extends) || (function () {
37728
37910
  var extendStatics = function (d, b) {
37729
37911
  extendStatics = Object.setPrototypeOf ||
@@ -37753,6 +37935,7 @@ var __extends = (undefined && undefined.__extends) || (function () {
37753
37935
 
37754
37936
 
37755
37937
 
37938
+
37756
37939
  var MatrixDropdownCell = /** @class */ (function () {
37757
37940
  function MatrixDropdownCell(column, row, data) {
37758
37941
  this.column = column;
@@ -38100,12 +38283,17 @@ var MatrixDropdownRowModelBase = /** @class */ (function () {
38100
38283
  if (!!this.data) {
38101
38284
  values[MatrixDropdownRowModelBase.OwnerVariableName] = this.data.value;
38102
38285
  }
38103
- values[MatrixDropdownRowModelBase.IndexVariableName] = this.rowIndex;
38286
+ var rowIndex = this.rowIndex;
38287
+ values[MatrixDropdownRowModelBase.IndexVariableName] = rowIndex;
38104
38288
  values[MatrixDropdownRowModelBase.RowValueVariableName] = this.rowName;
38105
38289
  var newProps = _helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].createCopy(properties);
38106
38290
  newProps[MatrixDropdownRowModelBase.RowVariableName] = this;
38291
+ var rowValues = rowIndex > 0 ? this.data.getRowValue(this.rowIndex - 1) : this.value;
38107
38292
  for (var i = 0; i < this.cells.length; i++) {
38108
- values[MatrixDropdownRowModelBase.RowVariableName] = this.value;
38293
+ if (i > 0) {
38294
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_14__["mergeValues"])(this.value, rowValues);
38295
+ }
38296
+ values[MatrixDropdownRowModelBase.RowVariableName] = rowValues;
38109
38297
  this.cells[i].runCondition(values, newProps);
38110
38298
  }
38111
38299
  if (!!this.detailPanel) {
@@ -38955,14 +39143,15 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
38955
39143
  *
38956
39144
  * Possible values:
38957
39145
  *
38958
- * - `"dropdown"`
38959
- * - `"checkbox"`
38960
- * - `"radiogroup"`
38961
- * - `"text"`
38962
- * - `"comment"`
38963
- * - `"boolean"`
38964
- * - `"expression"`
38965
- * - `"rating"`
39146
+ * - [`"dropdown"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model)
39147
+ * - [`"checkbox"`](https://surveyjs.io/form-library/documentation/api-reference/checkbox-question-model)
39148
+ * - [`"radiogroup"`](https://surveyjs.io/form-library/documentation/api-reference/radio-button-question-model)
39149
+ * - [`"tagbox"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model)
39150
+ * - [`"text"`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model)
39151
+ * - [`"comment"`](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model)
39152
+ * - [`"boolean"`](https://surveyjs.io/form-library/documentation/api-reference/boolean-question-model)
39153
+ * - [`"expression"`](https://surveyjs.io/form-library/documentation/api-reference/expression-model)
39154
+ * - [`"rating"`](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model)
38966
39155
  *
38967
39156
  * Default value: `"dropdown"` (inherited from [`settings.matrix.defaultCellType`](https://surveyjs.io/form-library/documentation/settings#matrixDefaultCellType))
38968
39157
  */
@@ -39249,7 +39438,7 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
39249
39438
  if (!_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isArraysEqual(curVisibleChoices, newVisibleChoices, true, false, false))
39250
39439
  return true;
39251
39440
  }
39252
- return curVis != column.isVisible;
39441
+ return curVis !== column.isColumnVisible;
39253
39442
  };
39254
39443
  QuestionMatrixDropdownModelBase.prototype.updateNewVisibleChoices = function (q, dest) {
39255
39444
  var choices = q.visibleChoices;
@@ -40395,6 +40584,11 @@ var matrixDropdownColumnTypes = {
40395
40584
  expression: {},
40396
40585
  rating: {},
40397
40586
  };
40587
+ /**
40588
+ * An auxiliary class that describes a column in a [Multi-Select Matrix](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list) or [Dynamic Matrix](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model).
40589
+ *
40590
+ * You can get an object of this class from the [`columns`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#columns) array or by calling the [`getColumnByName()`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#getColumnByName) method on a matrix instance.
40591
+ */
40398
40592
  var MatrixDropdownColumn = /** @class */ (function (_super) {
40399
40593
  __extends(MatrixDropdownColumn, _super);
40400
40594
  function MatrixDropdownColumn(name, title) {
@@ -40488,6 +40682,26 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40488
40682
  return "matrixdropdowncolumn";
40489
40683
  };
40490
40684
  Object.defineProperty(MatrixDropdownColumn.prototype, "cellType", {
40685
+ /**
40686
+ * Specifies the type of column cells.
40687
+ *
40688
+ * Possible values:
40689
+ *
40690
+ * - [`"dropdown"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model)
40691
+ * - [`"checkbox"`](https://surveyjs.io/form-library/documentation/api-reference/checkbox-question-model)
40692
+ * - [`"radiogroup"`](https://surveyjs.io/form-library/documentation/api-reference/radio-button-question-model)
40693
+ * - [`"tagbox"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model)
40694
+ * - [`"text"`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model)
40695
+ * - [`"comment"`](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model)
40696
+ * - [`"boolean"`](https://surveyjs.io/form-library/documentation/api-reference/boolean-question-model)
40697
+ * - [`"expression"`](https://surveyjs.io/form-library/documentation/api-reference/expression-model)
40698
+ * - [`"rating"`](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model)
40699
+ * - `"default"` (default) - Inherits the input type from the [`cellType`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#cellType) property specified for the parent matrix.
40700
+ *
40701
+ * The input types are based upon standalone question types. Depending on the selected input type, the matrix column can have additional configuration properties inherited from the corresponding question type. For instance, Dropdown, Checkboxes, Radio Button Group, and Tag Box columns can specify the [`choices`](https://surveyjs.io/form-library/documentation/api-reference/radio-button-question-model#choices) array, similar to the question types upon which they are based. Refer to the API Reference of these question types for a full list of available properties.
40702
+ *
40703
+ * [View Demo](https://surveyjs.io/form-library/examples/aggregate-data-within-form/ (linkStyle))
40704
+ */
40491
40705
  get: function () {
40492
40706
  return this.getPropertyValue("cellType");
40493
40707
  },
@@ -40534,6 +40748,13 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40534
40748
  configurable: true
40535
40749
  });
40536
40750
  Object.defineProperty(MatrixDropdownColumn.prototype, "visible", {
40751
+ /**
40752
+ * Gets or sets column visibility.
40753
+ *
40754
+ * If you want to display or hide a column based on a condition, specify the [`visibleIf`](#visibleIf) property.
40755
+ * @see isRequired
40756
+ * @see readOnly
40757
+ */
40537
40758
  get: function () { return this.getPropertyValue("visible"); },
40538
40759
  set: function (val) {
40539
40760
  this.setPropertyValue("visible", val);
@@ -40595,6 +40816,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40595
40816
  configurable: true
40596
40817
  });
40597
40818
  Object.defineProperty(MatrixDropdownColumn.prototype, "name", {
40819
+ /**
40820
+ * A column ID that is not visible to respondents.
40821
+ *
40822
+ * > Column IDs must be unique.
40823
+ * @see title
40824
+ */
40598
40825
  get: function () {
40599
40826
  return this.templateQuestion.name;
40600
40827
  },
@@ -40605,6 +40832,9 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40605
40832
  configurable: true
40606
40833
  });
40607
40834
  Object.defineProperty(MatrixDropdownColumn.prototype, "title", {
40835
+ /**
40836
+ * A user-friendly column caption to display. If `title` is undefined, [`name`](#name) is displayed instead.
40837
+ */
40608
40838
  get: function () {
40609
40839
  return this.templateQuestion.title;
40610
40840
  },
@@ -40629,6 +40859,14 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40629
40859
  configurable: true
40630
40860
  });
40631
40861
  Object.defineProperty(MatrixDropdownColumn.prototype, "isRequired", {
40862
+ /**
40863
+ * Marks the column as required. If a respondent skips any cell in a required column, the matrix displays a validation error.
40864
+ *
40865
+ * If you want to mark the column as required based on a condition, specify the [`requiredIf`](#requiredIf) property.
40866
+ * @see requiredErrorText
40867
+ * @see visible
40868
+ * @see readOnly
40869
+ */
40632
40870
  get: function () {
40633
40871
  return this.templateQuestion.isRequired;
40634
40872
  },
@@ -40659,6 +40897,10 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40659
40897
  configurable: true
40660
40898
  });
40661
40899
  Object.defineProperty(MatrixDropdownColumn.prototype, "requiredErrorText", {
40900
+ /**
40901
+ * Specifies a custom error message for a required column.
40902
+ * @see isRequired
40903
+ */
40662
40904
  get: function () {
40663
40905
  return this.templateQuestion.requiredErrorText;
40664
40906
  },
@@ -40676,6 +40918,13 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40676
40918
  configurable: true
40677
40919
  });
40678
40920
  Object.defineProperty(MatrixDropdownColumn.prototype, "readOnly", {
40921
+ /**
40922
+ * Makes the column read-only.
40923
+ *
40924
+ * If you want to switch the column to the read-only state based on a condition, specify the [`enableIf`](#enableIf) property.
40925
+ * @see visible
40926
+ * @see isRequired
40927
+ */
40679
40928
  get: function () {
40680
40929
  return this.templateQuestion.readOnly;
40681
40930
  },
@@ -40696,6 +40945,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40696
40945
  configurable: true
40697
40946
  });
40698
40947
  Object.defineProperty(MatrixDropdownColumn.prototype, "visibleIf", {
40948
+ /**
40949
+ * A Boolean expression. If it evaluates to `false`, this column becomes hidden.
40950
+ *
40951
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
40952
+ * @see visible
40953
+ */
40699
40954
  get: function () {
40700
40955
  return this.templateQuestion.visibleIf;
40701
40956
  },
@@ -40706,6 +40961,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40706
40961
  configurable: true
40707
40962
  });
40708
40963
  Object.defineProperty(MatrixDropdownColumn.prototype, "enableIf", {
40964
+ /**
40965
+ * A Boolean expression. If it evaluates to `false`, this column becomes read-only.
40966
+ *
40967
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
40968
+ * @see readOnly
40969
+ */
40709
40970
  get: function () {
40710
40971
  return this.templateQuestion.enableIf;
40711
40972
  },
@@ -40716,6 +40977,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40716
40977
  configurable: true
40717
40978
  });
40718
40979
  Object.defineProperty(MatrixDropdownColumn.prototype, "requiredIf", {
40980
+ /**
40981
+ * A Boolean expression. If it evaluates to `true`, this column becomes required.
40982
+ *
40983
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
40984
+ * @see isRequired
40985
+ */
40719
40986
  get: function () {
40720
40987
  return this.templateQuestion.requiredIf;
40721
40988
  },
@@ -40726,6 +40993,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40726
40993
  configurable: true
40727
40994
  });
40728
40995
  Object.defineProperty(MatrixDropdownColumn.prototype, "resetValueIf", {
40996
+ /**
40997
+ * A Boolean expression. If it evaluates to `true`, all cells in this column are set to a value calculated using the [`defaultValueExpression`](#defaultValueExpression).
40998
+ *
40999
+ * [Expressions](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions (linkStyle))
41000
+ * @see setValueIf
41001
+ */
40729
41002
  get: function () {
40730
41003
  return this.templateQuestion.resetValueIf;
40731
41004
  },
@@ -40736,6 +41009,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40736
41009
  configurable: true
40737
41010
  });
40738
41011
  Object.defineProperty(MatrixDropdownColumn.prototype, "defaultValueExpression", {
41012
+ /**
41013
+ * An expression used to calculate the column's default value. This expression applies to all cells of this column until the cell value is specified by an end user or programmatically.
41014
+ *
41015
+ * [Expressions](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions (linkStyle))
41016
+ * @see setValueExpression
41017
+ */
40739
41018
  get: function () {
40740
41019
  return this.templateQuestion.defaultValueExpression;
40741
41020
  },
@@ -40746,6 +41025,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40746
41025
  configurable: true
40747
41026
  });
40748
41027
  Object.defineProperty(MatrixDropdownColumn.prototype, "setValueIf", {
41028
+ /**
41029
+ * A Boolean expression. If it evaluates to `true`, all cells in this column are set to a value calculated using the [`setValueExpression`](#setValueExpression).
41030
+ *
41031
+ * [Expressions](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions (linkStyle))
41032
+ * @see resetValueIf
41033
+ */
40749
41034
  get: function () {
40750
41035
  return this.templateQuestion.setValueIf;
40751
41036
  },
@@ -40756,6 +41041,15 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40756
41041
  configurable: true
40757
41042
  });
40758
41043
  Object.defineProperty(MatrixDropdownColumn.prototype, "setValueExpession", {
41044
+ /**
41045
+ * An expression used to calculate a value for all column cells.
41046
+ *
41047
+ * You can use `setValueExpression` as a standalone property or in conjunction with the [`setValueIf`](#setValueIf) expression, in which case the calculated cell value applies only when `setValueIf` evaluates to `true`.
41048
+ *
41049
+ * [Expressions](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions (linkStyle))
41050
+ * @see defaultValueExpression
41051
+ * @see resetValueIf
41052
+ */
40759
41053
  get: function () {
40760
41054
  return this.templateQuestion.setValueExpession;
40761
41055
  },
@@ -40766,6 +41060,11 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40766
41060
  configurable: true
40767
41061
  });
40768
41062
  Object.defineProperty(MatrixDropdownColumn.prototype, "isUnique", {
41063
+ /**
41064
+ * Specifies whether a respondent is required to provide a unique response for each question within this column.
41065
+ *
41066
+ * Default value: `false`
41067
+ */
40769
41068
  get: function () {
40770
41069
  return this.getPropertyValue("isUnique");
40771
41070
  },
@@ -40776,6 +41075,9 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40776
41075
  configurable: true
40777
41076
  });
40778
41077
  Object.defineProperty(MatrixDropdownColumn.prototype, "showInMultipleColumns", {
41078
+ /**
41079
+ * Specifies whether to create an individual column for each choice option. Applies only to columns of `"checkbox"` or `"radiogroup"` [`cellType`](#cellType).
41080
+ */
40779
41081
  get: function () {
40780
41082
  return this.getPropertyValue("showInMultipleColumns");
40781
41083
  },
@@ -40800,6 +41102,12 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40800
41102
  configurable: true
40801
41103
  });
40802
41104
  Object.defineProperty(MatrixDropdownColumn.prototype, "validators", {
41105
+ /**
41106
+ * Column validators.
41107
+ *
41108
+ * [Data Validation](https://surveyjs.io/form-library/documentation/data-validation (linkStyle))
41109
+ * @see isRequired
41110
+ */
40803
41111
  get: function () {
40804
41112
  return this.templateQuestion.validators;
40805
41113
  },
@@ -40810,6 +41118,22 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40810
41118
  configurable: true
40811
41119
  });
40812
41120
  Object.defineProperty(MatrixDropdownColumn.prototype, "totalType", {
41121
+ /**
41122
+ * An aggregation method used to calculate the column total.
41123
+ *
41124
+ * Possible values:
41125
+ *
41126
+ * - `"none"` (default) - Disables total calculations.
41127
+ * - `"sum"`
41128
+ * - `"count"`
41129
+ * - `"min"`
41130
+ * - `"max"`
41131
+ * - `"avg"`
41132
+ *
41133
+ * [View Demo](https://surveyjs.io/form-library/examples/aggregate-data-within-form/ (linkStyle))
41134
+ * @see totalFormat
41135
+ * @see totalDisplayStyle
41136
+ */
40813
41137
  get: function () {
40814
41138
  return this.getPropertyValue("totalType");
40815
41139
  },
@@ -40820,6 +41144,11 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40820
41144
  configurable: true
40821
41145
  });
40822
41146
  Object.defineProperty(MatrixDropdownColumn.prototype, "totalExpression", {
41147
+ /**
41148
+ * An expression used to calculate total values. Overrides the [`totalType`](#totalType) property.
41149
+ *
41150
+ * [Expressions](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions (linkStyle))
41151
+ */
40823
41152
  get: function () {
40824
41153
  return this.getPropertyValue("totalExpression");
40825
41154
  },
@@ -40837,6 +41166,13 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40837
41166
  configurable: true
40838
41167
  });
40839
41168
  Object.defineProperty(MatrixDropdownColumn.prototype, "totalFormat", {
41169
+ /**
41170
+ * A string pattern used to display column totals. To reference a total value within this pattern, use the `{0}` placeholder.
41171
+ *
41172
+ * [View Demo](https://surveyjs.io/form-library/examples/aggregate-data-within-form/ (linkStyle))
41173
+ * @see totalType
41174
+ * @see totalDisplayStyle
41175
+ */
40840
41176
  get: function () {
40841
41177
  return this.getLocalizableStringText("totalFormat", "");
40842
41178
  },
@@ -40908,6 +41244,21 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40908
41244
  configurable: true
40909
41245
  });
40910
41246
  Object.defineProperty(MatrixDropdownColumn.prototype, "totalDisplayStyle", {
41247
+ /**
41248
+ * A format for calculated total values.
41249
+ *
41250
+ * Possible values:
41251
+ *
41252
+ * - `"none"` (default)
41253
+ * - `"decimal"`
41254
+ * - `"currency"`
41255
+ * - `"percent"`
41256
+ *
41257
+ * [View Demo](https://surveyjs.io/form-library/examples/aggregate-data-within-form/ (linkStyle))
41258
+ * @see totalType
41259
+ * @see totalFormat
41260
+ * @see totalCurrency
41261
+ */
40911
41262
  get: function () {
40912
41263
  return this.getPropertyValue("totalDisplayStyle");
40913
41264
  },
@@ -40918,6 +41269,10 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40918
41269
  configurable: true
40919
41270
  });
40920
41271
  Object.defineProperty(MatrixDropdownColumn.prototype, "totalCurrency", {
41272
+ /**
41273
+ * Specifies a currency used to display calculated total values. Applies only if [`totalDisplayStyle`](#totalDisplayStyle) is set to `"currency"`.
41274
+ * @see totalType
41275
+ */
40921
41276
  get: function () {
40922
41277
  return this.getPropertyValue("totalCurrency");
40923
41278
  },
@@ -40930,6 +41285,10 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40930
41285
  configurable: true
40931
41286
  });
40932
41287
  Object.defineProperty(MatrixDropdownColumn.prototype, "minWidth", {
41288
+ /**
41289
+ * Gets or sets minimum column width in CSS values. By default, the matrix calculates column widths to optimally fit the content of all columns.
41290
+ * @see width
41291
+ */
40933
41292
  get: function () {
40934
41293
  return this.getPropertyValue("minWidth", "");
40935
41294
  },
@@ -40940,6 +41299,10 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40940
41299
  configurable: true
40941
41300
  });
40942
41301
  Object.defineProperty(MatrixDropdownColumn.prototype, "width", {
41302
+ /**
41303
+ * Gets or sets column width in CSS values. By default, the matrix calculates column widths to optimally fit the content of all columns.
41304
+ * @see minWidth
41305
+ */
40943
41306
  get: function () {
40944
41307
  return this.templateQuestion.width;
40945
41308
  },
@@ -40950,6 +41313,11 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
40950
41313
  configurable: true
40951
41314
  });
40952
41315
  Object.defineProperty(MatrixDropdownColumn.prototype, "colCount", {
41316
+ /**
41317
+ * Gets or sets the number of columns used to arrange choice options. Applies only to columns of `"checkbox"` or `"radiogroup"` [`cellType`](#cellType).
41318
+ *
41319
+ * Default value: -1 (inherits the actual value from the parent matrix's [`columnColCount`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#columnColCount) property)
41320
+ */
40953
41321
  get: function () {
40954
41322
  return this.getPropertyValue("colCount");
40955
41323
  },
@@ -41326,6 +41694,13 @@ var QuestionMatrixDropdownRenderedCell = /** @class */ (function () {
41326
41694
  this.classNameValue = "";
41327
41695
  this.idValue = QuestionMatrixDropdownRenderedCell.counter++;
41328
41696
  }
41697
+ Object.defineProperty(QuestionMatrixDropdownRenderedCell.prototype, "requiredText", {
41698
+ get: function () {
41699
+ return this.column && this.column.isRenderedRequired ? this.column.requiredText : undefined;
41700
+ },
41701
+ enumerable: false,
41702
+ configurable: true
41703
+ });
41329
41704
  Object.defineProperty(QuestionMatrixDropdownRenderedCell.prototype, "hasQuestion", {
41330
41705
  get: function () {
41331
41706
  return !!this.question && !this.isErrorsCell;
@@ -41660,9 +42035,9 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
41660
42035
  enumerable: false,
41661
42036
  configurable: true
41662
42037
  });
41663
- Object.defineProperty(QuestionMatrixDropdownRenderedTable.prototype, "allowRowsDragAndDrop", {
42038
+ Object.defineProperty(QuestionMatrixDropdownRenderedTable.prototype, "isRowsDragAndDrop", {
41664
42039
  get: function () {
41665
- return this.matrix.allowRowsDragAndDrop && this.matrix.isColumnLayoutHorizontal;
42040
+ return this.matrix.isRowsDragAndDrop && this.matrix.isColumnLayoutHorizontal;
41666
42041
  },
41667
42042
  enumerable: false,
41668
42043
  configurable: true
@@ -41821,7 +42196,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
41821
42196
  if (!isShown)
41822
42197
  return;
41823
42198
  this.headerRowValue = this.createRenderedRow(this.cssClasses);
41824
- if (this.allowRowsDragAndDrop) {
42199
+ if (this.isRowsDragAndDrop) {
41825
42200
  this.headerRow.cells.push(this.createHeaderCell(null, "action"));
41826
42201
  }
41827
42202
  if (this.hasActionCellInRows("start")) {
@@ -41865,7 +42240,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
41865
42240
  if (!this.showFooter)
41866
42241
  return;
41867
42242
  this.footerRowValue = this.createRenderedRow(this.cssClasses);
41868
- if (this.allowRowsDragAndDrop) {
42243
+ if (this.isRowsDragAndDrop) {
41869
42244
  this.footerRow.cells.push(this.createHeaderCell(null));
41870
42245
  }
41871
42246
  if (this.hasActionCellInRows("start")) {
@@ -42110,7 +42485,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
42110
42485
  };
42111
42486
  QuestionMatrixDropdownRenderedTable.prototype.createHorizontalRow = function (row, useAsHeader) {
42112
42487
  var res = this.createRenderedRow(this.cssClasses);
42113
- if (this.allowRowsDragAndDrop) {
42488
+ if (this.isRowsDragAndDrop) {
42114
42489
  var rowIndex = this.matrix.visibleRows.indexOf(row);
42115
42490
  res.cells.push(this.getRowDragCell(rowIndex));
42116
42491
  }
@@ -42258,9 +42633,6 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
42258
42633
  .append(hCell.className)
42259
42634
  .append(this.cssClasses.rowTextCell)
42260
42635
  .append(this.cssClasses.columnTitleCell).toString();
42261
- if (!choice) {
42262
- this.setRequriedToHeaderCell(column, hCell);
42263
- }
42264
42636
  res.cells.push(hCell);
42265
42637
  }
42266
42638
  var rows = this.matrix.visibleRows;
@@ -42390,26 +42762,11 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
42390
42762
  };
42391
42763
  QuestionMatrixDropdownRenderedTable.prototype.setHeaderCell = function (column, cell) {
42392
42764
  this.setHeaderCellWidth(column, cell);
42393
- this.setRequriedToHeaderCell(column, cell);
42394
42765
  };
42395
42766
  QuestionMatrixDropdownRenderedTable.prototype.setHeaderCellWidth = function (column, cell) {
42396
42767
  cell.minWidth = column != null ? this.matrix.getColumnWidth(column) : this.matrix.getRowTitleWidth();
42397
42768
  cell.width = column != null ? column.width : this.matrix.getRowTitleWidth();
42398
42769
  };
42399
- QuestionMatrixDropdownRenderedTable.prototype.setRequriedToHeaderCell = function (column, cell) {
42400
- if (!!column && column.isRequired && this.matrix.survey) {
42401
- cell.requiredText = this.matrix.survey.requiredText;
42402
- }
42403
- };
42404
- QuestionMatrixDropdownRenderedTable.prototype.createRemoveRowCell = function (row) {
42405
- var res = new QuestionMatrixDropdownRenderedCell();
42406
- res.row = row;
42407
- res.isRemoveRow = this.canRemoveRow(row);
42408
- if (!!this.cssClasses.cell) {
42409
- res.className = this.cssClasses.cell;
42410
- }
42411
- return res;
42412
- };
42413
42770
  QuestionMatrixDropdownRenderedTable.prototype.createTextCell = function (locTitle) {
42414
42771
  var cell = new QuestionMatrixDropdownRenderedCell();
42415
42772
  cell.locTitle = locTitle;
@@ -42567,7 +42924,7 @@ var QuestionMatrixDynamicModel = /** @class */ (function (_super) {
42567
42924
  _this.registerPropertyChangedHandlers(["hideColumnsIfEmpty", "allowAddRows"], function () {
42568
42925
  _this.updateShowTableAndAddRow();
42569
42926
  });
42570
- _this.registerPropertyChangedHandlers(["allowRowsDragAndDrop"], function () { _this.clearRowsAndResetRenderedTable(); });
42927
+ _this.registerPropertyChangedHandlers(["allowRowsDragAndDrop", "isReadOnly"], function () { _this.clearRowsAndResetRenderedTable(); });
42571
42928
  _this.dragOrClickHelper = new _utils_dragOrClickHelper__WEBPACK_IMPORTED_MODULE_9__["DragOrClickHelper"](_this.startDragMatrixRow);
42572
42929
  return _this;
42573
42930
  }
@@ -42586,7 +42943,7 @@ var QuestionMatrixDynamicModel = /** @class */ (function (_super) {
42586
42943
  return true;
42587
42944
  };
42588
42945
  QuestionMatrixDynamicModel.prototype.onPointerDown = function (pointerDownEvent, row) {
42589
- if (!row || !this.allowRowsDragAndDrop)
42946
+ if (!row || !this.isRowsDragAndDrop)
42590
42947
  return;
42591
42948
  if (this.isBanStartDrag(pointerDownEvent))
42592
42949
  return;
@@ -42783,8 +43140,6 @@ var QuestionMatrixDynamicModel = /** @class */ (function (_super) {
42783
43140
  * Default value: `false`
42784
43141
  */
42785
43142
  get: function () {
42786
- if (this.readOnly)
42787
- return false;
42788
43143
  return this.getPropertyValue("allowRowsDragAndDrop");
42789
43144
  },
42790
43145
  set: function (val) {
@@ -42793,6 +43148,13 @@ var QuestionMatrixDynamicModel = /** @class */ (function (_super) {
42793
43148
  enumerable: false,
42794
43149
  configurable: true
42795
43150
  });
43151
+ Object.defineProperty(QuestionMatrixDynamicModel.prototype, "isRowsDragAndDrop", {
43152
+ get: function () {
43153
+ return this.allowRowsDragAndDrop && !this.isReadOnly;
43154
+ },
43155
+ enumerable: false,
43156
+ configurable: true
43157
+ });
42796
43158
  Object.defineProperty(QuestionMatrixDynamicModel.prototype, "iconDragElement", {
42797
43159
  get: function () {
42798
43160
  return this.cssClasses.iconDragElement;
@@ -45212,9 +45574,10 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
45212
45574
  * @see visiblePanels
45213
45575
  */
45214
45576
  get: function () {
45215
- return this.template.visibleIf;
45577
+ return this.getPropertyValue("templateVisibleIf");
45216
45578
  },
45217
45579
  set: function (val) {
45580
+ this.setPropertyValue("templateVisibleIf", val);
45218
45581
  this.template.visibleIf = val;
45219
45582
  },
45220
45583
  enumerable: false,
@@ -51536,7 +51899,7 @@ __webpack_require__.r(__webpack_exports__);
51536
51899
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settings", function() { return settings; });
51537
51900
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/utils */ "./src/utils/utils.ts");
51538
51901
 
51539
- var document = globalThis.document;
51902
+ var document = typeof globalThis !== "undefined" ? globalThis.document : undefined.document;
51540
51903
  var defaultEnvironment = (!!document ? {
51541
51904
  root: document,
51542
51905
  _rootElement: document.body,
@@ -51714,12 +52077,12 @@ var settings = {
51714
52077
  * import { ItemValue, settings } from "survey-core";
51715
52078
  *
51716
52079
  * // `itemValueSerializeAsObject` example
51717
- * settings.localization.itemValueSerializeAsObject = true;
52080
+ * settings.serialization.itemValueSerializeAsObject = true;
51718
52081
  * const item = new ItemValue(5);
51719
52082
  * const itemString = item.toJSON(); // Produces { value: 5 } instead of 5
51720
52083
  *
51721
52084
  * // `itemValueSerializeDisplayText` example
51722
- * settings.localization.itemValueSerializeDisplayText = true;
52085
+ * settings.serialization.itemValueSerializeDisplayText = true;
51723
52086
  * const item = new ItemValue("item1");
51724
52087
  * const itemString = item.toJSON(); // Produces { value: "item1", text: "item1" } instead of "item1"
51725
52088
  * ```
@@ -54822,6 +55185,7 @@ var SurveyModel = /** @class */ (function (_super) {
54822
55185
  _this.registerPropertyChangedHandlers(["renderBackgroundImage", "backgroundOpacity", "backgroundImageFit", "fitToContainer", "backgroundImageAttachment"], function () {
54823
55186
  _this.updateBackgroundImageStyle();
54824
55187
  });
55188
+ _this.registerPropertyChangedHandlers(["showPrevButton", "showCompleteButton"], function () { _this.updateButtonsVisibility(); });
54825
55189
  _this.onGetQuestionNo.onCallbacksChanged = function () {
54826
55190
  _this.resetVisibleIndexes();
54827
55191
  };
@@ -55223,6 +55587,16 @@ var SurveyModel = /** @class */ (function (_super) {
55223
55587
  enumerable: false,
55224
55588
  configurable: true
55225
55589
  });
55590
+ Object.defineProperty(SurveyModel.prototype, "lazyRenderingFirstBatchSize", {
55591
+ get: function () {
55592
+ return this.lazyRenderingFirstBatchSizeValue || _settings__WEBPACK_IMPORTED_MODULE_14__["settings"].lazyRender.firstBatchSize;
55593
+ },
55594
+ set: function (val) {
55595
+ this.lazyRenderingFirstBatchSizeValue = val;
55596
+ },
55597
+ enumerable: false,
55598
+ configurable: true
55599
+ });
55226
55600
  SurveyModel.prototype.updateLazyRenderingRowsOnRemovingElements = function () {
55227
55601
  if (!this.isLazyRendering)
55228
55602
  return;
@@ -55405,6 +55779,7 @@ var SurveyModel = /** @class */ (function (_super) {
55405
55779
  * - `"none"` - Hides the navigation buttons. This setting may be useful if you [implement custom external navigation](https://surveyjs.io/form-library/examples/external-form-navigation-system/).
55406
55780
  * @see goNextPageAutomatic
55407
55781
  * @see showPrevButton
55782
+ * @see showCompleteButton
55408
55783
  */
55409
55784
  get: function () {
55410
55785
  return this.getPropertyValue("showNavigationButtons");
@@ -55425,6 +55800,7 @@ var SurveyModel = /** @class */ (function (_super) {
55425
55800
  /**
55426
55801
  * Specifies whether to display the Previous button. Set this property to `false` if respondents should not move backward along the survey.
55427
55802
  * @see showNavigationButtons
55803
+ * @see showCompleteButton
55428
55804
  */
55429
55805
  get: function () {
55430
55806
  return this.getPropertyValue("showPrevButton");
@@ -55435,6 +55811,21 @@ var SurveyModel = /** @class */ (function (_super) {
55435
55811
  enumerable: false,
55436
55812
  configurable: true
55437
55813
  });
55814
+ Object.defineProperty(SurveyModel.prototype, "showCompleteButton", {
55815
+ /**
55816
+ * Specifies whether to display the Complete button. Set this property to `false` if respondents should not complete the survey.
55817
+ * @see showNavigationButtons
55818
+ * @see showPrevButton
55819
+ */
55820
+ get: function () {
55821
+ return this.getPropertyValue("showCompleteButton", true);
55822
+ },
55823
+ set: function (val) {
55824
+ this.setPropertyValue("showCompleteButton", val);
55825
+ },
55826
+ enumerable: false,
55827
+ configurable: true
55828
+ });
55438
55829
  Object.defineProperty(SurveyModel.prototype, "showTOC", {
55439
55830
  /**
55440
55831
  * Gets or sets the visibility of the table of contents.
@@ -57484,6 +57875,27 @@ var SurveyModel = /** @class */ (function (_super) {
57484
57875
  enumerable: false,
57485
57876
  configurable: true
57486
57877
  });
57878
+ SurveyModel.prototype.tryNavigateToPage = function (page) {
57879
+ if (this.isDesignMode)
57880
+ return false;
57881
+ var index = this.visiblePages.indexOf(page);
57882
+ if (index < 0)
57883
+ return false;
57884
+ if (index === this.currentPageNo)
57885
+ return false;
57886
+ if (index < this.currentPageNo) {
57887
+ this.currentPageNo = index;
57888
+ return true;
57889
+ }
57890
+ for (var i = this.currentPageNo; i < index; i++) {
57891
+ var page_1 = this.visiblePages[i];
57892
+ if (!page_1.validate(true, true))
57893
+ return false;
57894
+ page_1.passed = true;
57895
+ }
57896
+ this.currentPage = page;
57897
+ return true;
57898
+ };
57487
57899
  SurveyModel.prototype.updateCurrentPage = function () {
57488
57900
  if (this.isCurrentPageAvailable)
57489
57901
  return;
@@ -58776,7 +59188,7 @@ var SurveyModel = /** @class */ (function (_super) {
58776
59188
  var state = this.state;
58777
59189
  return this.isEditMode && (this.state === "running" &&
58778
59190
  (this.isLastPage && !this.isShowPreviewBeforeComplete || this.canBeCompletedByTrigger)
58779
- || state === "preview");
59191
+ || state === "preview") && this.showCompleteButton;
58780
59192
  };
58781
59193
  SurveyModel.prototype.calcIsPreviewButtonVisible = function () {
58782
59194
  return (this.isEditMode &&
@@ -61061,7 +61473,7 @@ var SurveyModel = /** @class */ (function (_super) {
61061
61473
  }
61062
61474
  this.updateVisibleIndexes();
61063
61475
  this.setCalculatedWidthModeUpdater();
61064
- if (!this.isMovingQuestion || this.isDesignMode && !_settings__WEBPACK_IMPORTED_MODULE_14__["settings"].supportCreatorV2) {
61476
+ if (this.canFireAddElement()) {
61065
61477
  this.onQuestionAdded.fire(this, {
61066
61478
  question: question,
61067
61479
  name: question.name,
@@ -61073,6 +61485,9 @@ var SurveyModel = /** @class */ (function (_super) {
61073
61485
  });
61074
61486
  }
61075
61487
  };
61488
+ SurveyModel.prototype.canFireAddElement = function () {
61489
+ return !this.isMovingQuestion || this.isDesignMode && !_settings__WEBPACK_IMPORTED_MODULE_14__["settings"].supportCreatorV2;
61490
+ };
61076
61491
  SurveyModel.prototype.questionRemoved = function (question) {
61077
61492
  this.questionHashesRemoved(question, question.name, question.getValueName());
61078
61493
  this.updateVisibleIndexes();
@@ -61146,15 +61561,17 @@ var SurveyModel = /** @class */ (function (_super) {
61146
61561
  }
61147
61562
  this.questionHashesPanelAdded(panel);
61148
61563
  this.updateVisibleIndexes();
61149
- this.onPanelAdded.fire(this, {
61150
- panel: panel,
61151
- name: panel.name,
61152
- index: index,
61153
- parent: parentPanel,
61154
- page: rootPanel,
61155
- parentPanel: parentPanel,
61156
- rootPanel: rootPanel,
61157
- });
61564
+ if (this.canFireAddElement()) {
61565
+ this.onPanelAdded.fire(this, {
61566
+ panel: panel,
61567
+ name: panel.name,
61568
+ index: index,
61569
+ parent: parentPanel,
61570
+ page: rootPanel,
61571
+ parentPanel: parentPanel,
61572
+ rootPanel: rootPanel,
61573
+ });
61574
+ }
61158
61575
  };
61159
61576
  SurveyModel.prototype.panelRemoved = function (panel) {
61160
61577
  this.updateVisibleIndexes();
@@ -61883,7 +62300,7 @@ var SurveyModel = /** @class */ (function (_super) {
61883
62300
  var containerLayoutElements = [];
61884
62301
  for (var _i = 0, _a = this.layoutElements; _i < _a.length; _i++) {
61885
62302
  var layoutElement = _a[_i];
61886
- if (isStrCiEqual(layoutElement.id, "timerpanel")) {
62303
+ if (this.mode !== "display" && isStrCiEqual(layoutElement.id, "timerpanel")) {
61887
62304
  if (container === "header") {
61888
62305
  if (this.isTimerPanelShowingOnTop && !this.isShowStartingPage) {
61889
62306
  containerLayoutElements.push(layoutElement);
@@ -62087,6 +62504,9 @@ var SurveyModel = /** @class */ (function (_super) {
62087
62504
  __decorate([
62088
62505
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
62089
62506
  ], SurveyModel.prototype, "enterKeyAction", void 0);
62507
+ __decorate([
62508
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
62509
+ ], SurveyModel.prototype, "lazyRenderingFirstBatchSizeValue", void 0);
62090
62510
  __decorate([
62091
62511
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ defaultValue: {} })
62092
62512
  ], SurveyModel.prototype, "cssVariables", void 0);
@@ -62455,17 +62875,7 @@ var SurveyProgressButtonsModel = /** @class */ (function () {
62455
62875
  .toString();
62456
62876
  };
62457
62877
  SurveyProgressButtonsModel.prototype.clickListElement = function (index) {
62458
- if (this.survey.isDesignMode)
62459
- return;
62460
- if (index < this.survey.currentPageNo) {
62461
- this.survey.currentPageNo = index;
62462
- }
62463
- else if (index > this.survey.currentPageNo) {
62464
- for (var i = this.survey.currentPageNo; i < index; i++) {
62465
- if (!this.survey.nextPage())
62466
- break;
62467
- }
62468
- }
62878
+ this.survey.tryNavigateToPage(this.survey.visiblePages[index]);
62469
62879
  };
62470
62880
  return SurveyProgressButtonsModel;
62471
62881
  }());
@@ -62783,9 +63193,12 @@ var SurveyTimerModel = /** @class */ (function (_super) {
62783
63193
  _this.progress = Math.floor((spent + 1) / limit * 100) / 100;
62784
63194
  }, 0);
62785
63195
  }
62786
- else if (spent !== limit) {
63196
+ else if (spent <= limit) {
62787
63197
  this.progress = Math.floor((spent + 1) / limit * 100) / 100;
62788
63198
  }
63199
+ if (this.progress > 1) {
63200
+ this.progress = undefined;
63201
+ }
62789
63202
  }
62790
63203
  };
62791
63204
  SurveyTimerModel.prototype.updateText = function () {
@@ -62872,12 +63285,11 @@ var SurveyTimerModel = /** @class */ (function (_super) {
62872
63285
  /*!**************************!*\
62873
63286
  !*** ./src/surveyToc.ts ***!
62874
63287
  \**************************/
62875
- /*! exports provided: tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel */
63288
+ /*! exports provided: tryFocusPage, createTOCListModel, getTocRootCss, TOCModel */
62876
63289
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
62877
63290
 
62878
63291
  "use strict";
62879
63292
  __webpack_require__.r(__webpack_exports__);
62880
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return tryNavigateToPage; });
62881
63293
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return tryFocusPage; });
62882
63294
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return createTOCListModel; });
62883
63295
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return getTocRootCss; });
@@ -62892,21 +63304,6 @@ __webpack_require__.r(__webpack_exports__);
62892
63304
 
62893
63305
 
62894
63306
 
62895
- function tryNavigateToPage(survey, page) {
62896
- if (survey.isDesignMode)
62897
- return;
62898
- var index = survey.visiblePages.indexOf(page);
62899
- if (index < survey.currentPageNo) {
62900
- survey.currentPageNo = index;
62901
- }
62902
- else if (index > survey.currentPageNo) {
62903
- for (var i = survey.currentPageNo; i < index; i++) {
62904
- if (!survey.nextPageUIClick())
62905
- return false;
62906
- }
62907
- }
62908
- return true;
62909
- }
62910
63307
  function tryFocusPage(survey, panel) {
62911
63308
  if (survey.isDesignMode)
62912
63309
  return true;
@@ -62928,7 +63325,7 @@ function createTOCListModel(survey, onAction) {
62928
63325
  }
62929
63326
  !!onAction && onAction();
62930
63327
  if (page instanceof _page__WEBPACK_IMPORTED_MODULE_3__["PageModel"]) {
62931
- return tryNavigateToPage(survey, page);
63328
+ return survey.tryNavigateToPage(page);
62932
63329
  }
62933
63330
  return tryFocusPage(survey, page);
62934
63331
  },
@@ -64326,12 +64723,13 @@ var CssClassBuilder = /** @class */ (function () {
64326
64723
  /*!******************************!*\
64327
64724
  !*** ./src/utils/devices.ts ***!
64328
64725
  \******************************/
64329
- /*! exports provided: IsMobile, IsTouch, _setIsTouch */
64726
+ /*! exports provided: IsMobile, mouseInfo, IsTouch, _setIsTouch */
64330
64727
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
64331
64728
 
64332
64729
  "use strict";
64333
64730
  __webpack_require__.r(__webpack_exports__);
64334
64731
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IsMobile", function() { return IsMobile; });
64732
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseInfo", function() { return mouseInfo; });
64335
64733
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IsTouch", function() { return IsTouch; });
64336
64734
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_setIsTouch", function() { return _setIsTouch; });
64337
64735
  // isMobile
@@ -64355,12 +64753,18 @@ if (typeof navigator !== "undefined" &&
64355
64753
  })(vendor);
64356
64754
  var _IPad = false;
64357
64755
  var IsMobile = _isMobile || _IPad;
64358
- // isTouch
64359
- var _isTouch = false;
64360
- if (typeof window !== "undefined") {
64361
- _isTouch = "ontouchstart" in window || navigator.maxTouchPoints > 0;
64362
- }
64363
- var IsTouch = IsMobile && _isTouch;
64756
+ var mouseInfo = {
64757
+ get isTouch() {
64758
+ return !this.hasMouse && this.hasTouchEvent;
64759
+ },
64760
+ get hasTouchEvent() {
64761
+ return typeof window !== "undefined" && ("ontouchstart" in window || navigator.maxTouchPoints > 0);
64762
+ },
64763
+ hasMouse: true
64764
+ };
64765
+ var pointerMatches = (typeof matchMedia !== "undefined" && !!matchMedia && matchMedia("(pointer:fine)")) || undefined;
64766
+ mouseInfo.hasMouse = !!pointerMatches && !!pointerMatches.matches;
64767
+ var IsTouch = mouseInfo.isTouch;
64364
64768
  //for tests
64365
64769
  function _setIsTouch(val) {
64366
64770
  IsTouch = val;
@@ -65699,7 +66103,7 @@ var RegexValidator = /** @class */ (function (_super) {
65699
66103
  if (properties === void 0) { properties = null; }
65700
66104
  if (!this.regex || this.isValueEmpty(value))
65701
66105
  return null;
65702
- var re = new RegExp(this.regex);
66106
+ var re = this.createRegExp();
65703
66107
  if (Array.isArray(value)) {
65704
66108
  for (var i = 0; i < value.length; i++) {
65705
66109
  var res = this.hasError(re, value[i], name);
@@ -65727,6 +66131,19 @@ var RegexValidator = /** @class */ (function (_super) {
65727
66131
  enumerable: false,
65728
66132
  configurable: true
65729
66133
  });
66134
+ Object.defineProperty(RegexValidator.prototype, "insensitive", {
66135
+ get: function () {
66136
+ return this.getPropertyValue("insensitive");
66137
+ },
66138
+ set: function (val) {
66139
+ this.setPropertyValue("insensitive", val);
66140
+ },
66141
+ enumerable: false,
66142
+ configurable: true
66143
+ });
66144
+ RegexValidator.prototype.createRegExp = function () {
66145
+ return new RegExp(this.regex, this.insensitive ? "i" : "");
66146
+ };
65730
66147
  return RegexValidator;
65731
66148
  }(SurveyValidator));
65732
66149
 
@@ -65867,7 +66284,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("textvalidator",
65867
66284
  _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("answercountvalidator", ["minCount:number", "maxCount:number"], function () {
65868
66285
  return new AnswerCountValidator();
65869
66286
  }, "surveyvalidator");
65870
- _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("regexvalidator", ["regex"], function () {
66287
+ _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("regexvalidator", ["regex", { name: "insensitive:boolean", visible: false }], function () {
65871
66288
  return new RegexValidator();
65872
66289
  }, "surveyvalidator");
65873
66290
  _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("emailvalidator", [], function () {