survey-core 2.0.0-rc.3 → 2.0.0-rc.4

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 (318) hide show
  1. package/fesm/i18n/arabic.js +1 -1
  2. package/fesm/i18n/basque.js +1 -1
  3. package/fesm/i18n/bulgarian.js +1 -1
  4. package/fesm/i18n/burmese.js +1 -1
  5. package/fesm/i18n/catalan.js +1 -1
  6. package/fesm/i18n/croatian.js +1 -1
  7. package/fesm/i18n/czech.js +1 -1
  8. package/fesm/i18n/danish.js +1 -1
  9. package/fesm/i18n/dutch.js +1 -1
  10. package/fesm/i18n/english.js +1 -1
  11. package/fesm/i18n/estonian.js +1 -1
  12. package/fesm/i18n/finnish.js +1 -1
  13. package/fesm/i18n/french.js +1 -1
  14. package/fesm/i18n/georgian.js +1 -1
  15. package/fesm/i18n/german.js +1 -1
  16. package/fesm/i18n/greek.js +1 -1
  17. package/fesm/i18n/hebrew.js +1 -1
  18. package/fesm/i18n/hindi.js +1 -1
  19. package/fesm/i18n/hungarian.js +1 -1
  20. package/fesm/i18n/icelandic.js +1 -1
  21. package/fesm/i18n/index.js +1 -1
  22. package/fesm/i18n/indonesian.js +1 -1
  23. package/fesm/i18n/italian.js +1 -1
  24. package/fesm/i18n/japanese.js +1 -1
  25. package/fesm/i18n/kazakh.js +1 -1
  26. package/fesm/i18n/korean.js +1 -1
  27. package/fesm/i18n/latvian.js +1 -1
  28. package/fesm/i18n/lithuanian.js +1 -1
  29. package/fesm/i18n/macedonian.js +1 -1
  30. package/fesm/i18n/malay.js +1 -1
  31. package/fesm/i18n/nl-BE.js +1 -1
  32. package/fesm/i18n/norwegian.js +1 -1
  33. package/fesm/i18n/persian.js +1 -1
  34. package/fesm/i18n/philippines.js +1 -1
  35. package/fesm/i18n/polish.js +1 -1
  36. package/fesm/i18n/portuguese-br.js +1 -1
  37. package/fesm/i18n/portuguese.js +1 -1
  38. package/fesm/i18n/romanian.js +1 -1
  39. package/fesm/i18n/russian.js +1 -1
  40. package/fesm/i18n/serbian.js +1 -1
  41. package/fesm/i18n/simplified-chinese.js +1 -1
  42. package/fesm/i18n/slovak.js +1 -1
  43. package/fesm/i18n/spanish.js +1 -1
  44. package/fesm/i18n/swahili.js +1 -1
  45. package/fesm/i18n/swedish.js +1 -1
  46. package/fesm/i18n/tajik.js +1 -1
  47. package/fesm/i18n/telugu.js +1 -1
  48. package/fesm/i18n/thai.js +1 -1
  49. package/fesm/i18n/traditional-chinese.js +1 -1
  50. package/fesm/i18n/turkish.js +1 -1
  51. package/fesm/i18n/ukrainian.js +1 -1
  52. package/fesm/i18n/urdu.js +1 -1
  53. package/fesm/i18n/vietnamese.js +1 -1
  54. package/fesm/i18n/welsh.js +1 -1
  55. package/fesm/icons/iconsV1.js +1 -1
  56. package/fesm/icons/iconsV2.js +1 -1
  57. package/fesm/survey-core.js +255 -191
  58. package/fesm/survey-core.js.map +1 -1
  59. package/fesm/survey.i18n.js +1 -1
  60. package/fesm/themes/borderless-dark-panelless.js +1 -1
  61. package/fesm/themes/borderless-dark.js +1 -1
  62. package/fesm/themes/borderless-light-panelless.js +1 -1
  63. package/fesm/themes/borderless-light.js +1 -1
  64. package/fesm/themes/contrast-dark-panelless.js +1 -1
  65. package/fesm/themes/contrast-dark.js +1 -1
  66. package/fesm/themes/contrast-light-panelless.js +1 -1
  67. package/fesm/themes/contrast-light.js +1 -1
  68. package/fesm/themes/default-dark-panelless.js +1 -1
  69. package/fesm/themes/default-dark.js +1 -1
  70. package/fesm/themes/default-light-panelless.js +1 -1
  71. package/fesm/themes/default-light.js +1 -1
  72. package/fesm/themes/doubleborder-dark-panelless.js +1 -1
  73. package/fesm/themes/doubleborder-dark.js +1 -1
  74. package/fesm/themes/doubleborder-light-panelles.js +1 -1
  75. package/fesm/themes/doubleborder-light.js +1 -1
  76. package/fesm/themes/flat-dark-panelless.js +1 -1
  77. package/fesm/themes/flat-dark.js +1 -1
  78. package/fesm/themes/flat-light-panelless.js +1 -1
  79. package/fesm/themes/flat-light.js +1 -1
  80. package/fesm/themes/index.js +1 -1
  81. package/fesm/themes/layered-dark-panelless.js +1 -1
  82. package/fesm/themes/layered-dark.js +1 -1
  83. package/fesm/themes/layered-light-panelless.js +1 -1
  84. package/fesm/themes/layered-light.js +1 -1
  85. package/fesm/themes/plain-dark-panelless.js +1 -1
  86. package/fesm/themes/plain-dark.js +1 -1
  87. package/fesm/themes/plain-light-panelless.js +1 -1
  88. package/fesm/themes/plain-light.js +1 -1
  89. package/fesm/themes/sharp-dark-panelless.js +1 -1
  90. package/fesm/themes/sharp-dark.js +1 -1
  91. package/fesm/themes/sharp-light-panelless.js +1 -1
  92. package/fesm/themes/sharp-light.js +1 -1
  93. package/fesm/themes/solid-dark-panelless.js +1 -1
  94. package/fesm/themes/solid-dark.js +1 -1
  95. package/fesm/themes/solid-light-panelless.js +1 -1
  96. package/fesm/themes/solid-light.js +1 -1
  97. package/fesm/themes/three-dimensional-dark-panelless.js +1 -1
  98. package/fesm/themes/three-dimensional-dark.js +1 -1
  99. package/fesm/themes/three-dimensional-light-panelless.js +1 -1
  100. package/fesm/themes/three-dimensional-light.js +1 -1
  101. package/i18n/arabic.js +1 -1
  102. package/i18n/arabic.min.js.LICENSE.txt +1 -1
  103. package/i18n/basque.js +1 -1
  104. package/i18n/basque.min.js.LICENSE.txt +1 -1
  105. package/i18n/bulgarian.js +1 -1
  106. package/i18n/bulgarian.min.js.LICENSE.txt +1 -1
  107. package/i18n/burmese.js +1 -1
  108. package/i18n/burmese.min.js.LICENSE.txt +1 -1
  109. package/i18n/catalan.js +1 -1
  110. package/i18n/catalan.min.js.LICENSE.txt +1 -1
  111. package/i18n/croatian.js +1 -1
  112. package/i18n/croatian.min.js.LICENSE.txt +1 -1
  113. package/i18n/czech.js +1 -1
  114. package/i18n/czech.min.js.LICENSE.txt +1 -1
  115. package/i18n/danish.js +1 -1
  116. package/i18n/danish.min.js.LICENSE.txt +1 -1
  117. package/i18n/dutch.js +1 -1
  118. package/i18n/dutch.min.js.LICENSE.txt +1 -1
  119. package/i18n/english.js +1 -1
  120. package/i18n/english.min.js.LICENSE.txt +1 -1
  121. package/i18n/estonian.js +1 -1
  122. package/i18n/estonian.min.js.LICENSE.txt +1 -1
  123. package/i18n/finnish.js +1 -1
  124. package/i18n/finnish.min.js.LICENSE.txt +1 -1
  125. package/i18n/french.js +1 -1
  126. package/i18n/french.min.js.LICENSE.txt +1 -1
  127. package/i18n/georgian.js +1 -1
  128. package/i18n/georgian.min.js.LICENSE.txt +1 -1
  129. package/i18n/german.js +1 -1
  130. package/i18n/german.min.js.LICENSE.txt +1 -1
  131. package/i18n/greek.js +1 -1
  132. package/i18n/greek.min.js.LICENSE.txt +1 -1
  133. package/i18n/hebrew.js +1 -1
  134. package/i18n/hebrew.min.js.LICENSE.txt +1 -1
  135. package/i18n/hindi.js +1 -1
  136. package/i18n/hindi.min.js.LICENSE.txt +1 -1
  137. package/i18n/hungarian.js +1 -1
  138. package/i18n/hungarian.min.js.LICENSE.txt +1 -1
  139. package/i18n/icelandic.js +1 -1
  140. package/i18n/icelandic.min.js.LICENSE.txt +1 -1
  141. package/i18n/index.js +1 -1
  142. package/i18n/index.min.js.LICENSE.txt +1 -1
  143. package/i18n/indonesian.js +1 -1
  144. package/i18n/indonesian.min.js.LICENSE.txt +1 -1
  145. package/i18n/italian.js +1 -1
  146. package/i18n/italian.min.js.LICENSE.txt +1 -1
  147. package/i18n/japanese.js +1 -1
  148. package/i18n/japanese.min.js.LICENSE.txt +1 -1
  149. package/i18n/kazakh.js +1 -1
  150. package/i18n/kazakh.min.js.LICENSE.txt +1 -1
  151. package/i18n/korean.js +1 -1
  152. package/i18n/korean.min.js.LICENSE.txt +1 -1
  153. package/i18n/latvian.js +1 -1
  154. package/i18n/latvian.min.js.LICENSE.txt +1 -1
  155. package/i18n/lithuanian.js +1 -1
  156. package/i18n/lithuanian.min.js.LICENSE.txt +1 -1
  157. package/i18n/macedonian.js +1 -1
  158. package/i18n/macedonian.min.js.LICENSE.txt +1 -1
  159. package/i18n/malay.js +1 -1
  160. package/i18n/malay.min.js.LICENSE.txt +1 -1
  161. package/i18n/nl-BE.js +1 -1
  162. package/i18n/nl-BE.min.js.LICENSE.txt +1 -1
  163. package/i18n/norwegian.js +1 -1
  164. package/i18n/norwegian.min.js.LICENSE.txt +1 -1
  165. package/i18n/persian.js +1 -1
  166. package/i18n/persian.min.js.LICENSE.txt +1 -1
  167. package/i18n/philippines.js +1 -1
  168. package/i18n/philippines.min.js.LICENSE.txt +1 -1
  169. package/i18n/polish.js +1 -1
  170. package/i18n/polish.min.js.LICENSE.txt +1 -1
  171. package/i18n/portuguese-br.js +1 -1
  172. package/i18n/portuguese-br.min.js.LICENSE.txt +1 -1
  173. package/i18n/portuguese.js +1 -1
  174. package/i18n/portuguese.min.js.LICENSE.txt +1 -1
  175. package/i18n/romanian.js +1 -1
  176. package/i18n/romanian.min.js.LICENSE.txt +1 -1
  177. package/i18n/russian.js +1 -1
  178. package/i18n/russian.min.js.LICENSE.txt +1 -1
  179. package/i18n/serbian.js +1 -1
  180. package/i18n/serbian.min.js.LICENSE.txt +1 -1
  181. package/i18n/simplified-chinese.js +1 -1
  182. package/i18n/simplified-chinese.min.js.LICENSE.txt +1 -1
  183. package/i18n/slovak.js +1 -1
  184. package/i18n/slovak.min.js.LICENSE.txt +1 -1
  185. package/i18n/spanish.js +1 -1
  186. package/i18n/spanish.min.js.LICENSE.txt +1 -1
  187. package/i18n/swahili.js +1 -1
  188. package/i18n/swahili.min.js.LICENSE.txt +1 -1
  189. package/i18n/swedish.js +1 -1
  190. package/i18n/swedish.min.js.LICENSE.txt +1 -1
  191. package/i18n/tajik.js +1 -1
  192. package/i18n/tajik.min.js.LICENSE.txt +1 -1
  193. package/i18n/telugu.js +1 -1
  194. package/i18n/telugu.min.js.LICENSE.txt +1 -1
  195. package/i18n/thai.js +1 -1
  196. package/i18n/thai.min.js.LICENSE.txt +1 -1
  197. package/i18n/traditional-chinese.js +1 -1
  198. package/i18n/traditional-chinese.min.js.LICENSE.txt +1 -1
  199. package/i18n/turkish.js +1 -1
  200. package/i18n/turkish.min.js.LICENSE.txt +1 -1
  201. package/i18n/ukrainian.js +1 -1
  202. package/i18n/ukrainian.min.js.LICENSE.txt +1 -1
  203. package/i18n/urdu.js +1 -1
  204. package/i18n/urdu.min.js.LICENSE.txt +1 -1
  205. package/i18n/vietnamese.js +1 -1
  206. package/i18n/vietnamese.min.js.LICENSE.txt +1 -1
  207. package/i18n/welsh.js +1 -1
  208. package/i18n/welsh.min.js.LICENSE.txt +1 -1
  209. package/icons/iconsV1.js +1 -1
  210. package/icons/iconsV1.min.js.LICENSE.txt +1 -1
  211. package/icons/iconsV2.js +1 -1
  212. package/icons/iconsV2.min.js.LICENSE.txt +1 -1
  213. package/package.json +1 -1
  214. package/survey-core.css +1 -1
  215. package/survey-core.fontless.css +1 -1
  216. package/survey-core.fontless.min.css +1 -1
  217. package/survey-core.min.css +1 -1
  218. package/survey.core.js +374 -201
  219. package/survey.core.js.map +1 -1
  220. package/survey.core.min.js +1 -1
  221. package/survey.core.min.js.LICENSE.txt +1 -1
  222. package/survey.i18n.js +1 -1
  223. package/survey.i18n.min.js.LICENSE.txt +1 -1
  224. package/themes/borderless-dark-panelless.js +1 -1
  225. package/themes/borderless-dark-panelless.min.js.LICENSE.txt +1 -1
  226. package/themes/borderless-dark.js +1 -1
  227. package/themes/borderless-dark.min.js.LICENSE.txt +1 -1
  228. package/themes/borderless-light-panelless.js +1 -1
  229. package/themes/borderless-light-panelless.min.js.LICENSE.txt +1 -1
  230. package/themes/borderless-light.js +1 -1
  231. package/themes/borderless-light.min.js.LICENSE.txt +1 -1
  232. package/themes/contrast-dark-panelless.js +1 -1
  233. package/themes/contrast-dark-panelless.min.js.LICENSE.txt +1 -1
  234. package/themes/contrast-dark.js +1 -1
  235. package/themes/contrast-dark.min.js.LICENSE.txt +1 -1
  236. package/themes/contrast-light-panelless.js +1 -1
  237. package/themes/contrast-light-panelless.min.js.LICENSE.txt +1 -1
  238. package/themes/contrast-light.js +1 -1
  239. package/themes/contrast-light.min.js.LICENSE.txt +1 -1
  240. package/themes/default-dark-panelless.js +1 -1
  241. package/themes/default-dark-panelless.min.js.LICENSE.txt +1 -1
  242. package/themes/default-dark.js +1 -1
  243. package/themes/default-dark.min.js.LICENSE.txt +1 -1
  244. package/themes/default-light-panelless.js +1 -1
  245. package/themes/default-light-panelless.min.js.LICENSE.txt +1 -1
  246. package/themes/default-light.js +1 -1
  247. package/themes/default-light.min.js.LICENSE.txt +1 -1
  248. package/themes/doubleborder-dark-panelless.js +1 -1
  249. package/themes/doubleborder-dark-panelless.min.js.LICENSE.txt +1 -1
  250. package/themes/doubleborder-dark.js +1 -1
  251. package/themes/doubleborder-dark.min.js.LICENSE.txt +1 -1
  252. package/themes/doubleborder-light-panelles.js +1 -1
  253. package/themes/doubleborder-light-panelles.min.js.LICENSE.txt +1 -1
  254. package/themes/doubleborder-light.js +1 -1
  255. package/themes/doubleborder-light.min.js.LICENSE.txt +1 -1
  256. package/themes/flat-dark-panelless.js +1 -1
  257. package/themes/flat-dark-panelless.min.js.LICENSE.txt +1 -1
  258. package/themes/flat-dark.js +1 -1
  259. package/themes/flat-dark.min.js.LICENSE.txt +1 -1
  260. package/themes/flat-light-panelless.js +1 -1
  261. package/themes/flat-light-panelless.min.js.LICENSE.txt +1 -1
  262. package/themes/flat-light.js +1 -1
  263. package/themes/flat-light.min.js.LICENSE.txt +1 -1
  264. package/themes/index.js +1 -1
  265. package/themes/index.min.js.LICENSE.txt +1 -1
  266. package/themes/layered-dark-panelless.js +1 -1
  267. package/themes/layered-dark-panelless.min.js.LICENSE.txt +1 -1
  268. package/themes/layered-dark.js +1 -1
  269. package/themes/layered-dark.min.js.LICENSE.txt +1 -1
  270. package/themes/layered-light-panelless.js +1 -1
  271. package/themes/layered-light-panelless.min.js.LICENSE.txt +1 -1
  272. package/themes/layered-light.js +1 -1
  273. package/themes/layered-light.min.js.LICENSE.txt +1 -1
  274. package/themes/plain-dark-panelless.js +1 -1
  275. package/themes/plain-dark-panelless.min.js.LICENSE.txt +1 -1
  276. package/themes/plain-dark.js +1 -1
  277. package/themes/plain-dark.min.js.LICENSE.txt +1 -1
  278. package/themes/plain-light-panelless.js +1 -1
  279. package/themes/plain-light-panelless.min.js.LICENSE.txt +1 -1
  280. package/themes/plain-light.js +1 -1
  281. package/themes/plain-light.min.js.LICENSE.txt +1 -1
  282. package/themes/sharp-dark-panelless.js +1 -1
  283. package/themes/sharp-dark-panelless.min.js.LICENSE.txt +1 -1
  284. package/themes/sharp-dark.js +1 -1
  285. package/themes/sharp-dark.min.js.LICENSE.txt +1 -1
  286. package/themes/sharp-light-panelless.js +1 -1
  287. package/themes/sharp-light-panelless.min.js.LICENSE.txt +1 -1
  288. package/themes/sharp-light.js +1 -1
  289. package/themes/sharp-light.min.js.LICENSE.txt +1 -1
  290. package/themes/solid-dark-panelless.js +1 -1
  291. package/themes/solid-dark-panelless.min.js.LICENSE.txt +1 -1
  292. package/themes/solid-dark.js +1 -1
  293. package/themes/solid-dark.min.js.LICENSE.txt +1 -1
  294. package/themes/solid-light-panelless.js +1 -1
  295. package/themes/solid-light-panelless.min.js.LICENSE.txt +1 -1
  296. package/themes/solid-light.js +1 -1
  297. package/themes/solid-light.min.js.LICENSE.txt +1 -1
  298. package/themes/three-dimensional-dark-panelless.js +1 -1
  299. package/themes/three-dimensional-dark-panelless.min.js.LICENSE.txt +1 -1
  300. package/themes/three-dimensional-dark.js +1 -1
  301. package/themes/three-dimensional-dark.min.js.LICENSE.txt +1 -1
  302. package/themes/three-dimensional-light-panelless.js +1 -1
  303. package/themes/three-dimensional-light-panelless.min.js.LICENSE.txt +1 -1
  304. package/themes/three-dimensional-light.js +1 -1
  305. package/themes/three-dimensional-light.min.js.LICENSE.txt +1 -1
  306. package/typings/src/base-interfaces.d.ts +1 -0
  307. package/typings/src/base.d.ts +5 -1
  308. package/typings/src/itemvalue.d.ts +7 -2
  309. package/typings/src/jsonobject.d.ts +3 -1
  310. package/typings/src/localizablestring.d.ts +1 -0
  311. package/typings/src/progress-buttons.d.ts +2 -0
  312. package/typings/src/question.d.ts +13 -6
  313. package/typings/src/question_baseselect.d.ts +7 -3
  314. package/typings/src/question_dropdown.d.ts +3 -2
  315. package/typings/src/question_rating.d.ts +2 -2
  316. package/typings/src/survey-element.d.ts +4 -2
  317. package/typings/src/survey.d.ts +15 -16
  318. package/typings/src/svgbundle.d.ts +1 -0
package/survey.core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v2.0.0-rc.3
2
+ * surveyjs - Survey JavaScript library v2.0.0-rc.4
3
3
  * Copyright (c) 2015-2025 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
@@ -1186,11 +1186,11 @@ var Version;
1186
1186
  var ReleaseDate;
1187
1187
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1188
1188
  //@ts-ignore
1189
- Version = "".concat("2.0.0-rc.3");
1189
+ Version = "".concat("2.0.0-rc.4");
1190
1190
  _src_settings__WEBPACK_IMPORTED_MODULE_1__.settings.version = Version;
1191
1191
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1192
1192
  //@ts-ignore
1193
- ReleaseDate = "".concat("2025-02-11");
1193
+ ReleaseDate = "".concat("2025-02-13");
1194
1194
  function checkLibraryVersion(ver, libraryName) {
1195
1195
  if (Version != ver) {
1196
1196
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -2564,6 +2564,11 @@ var Bindings = /** @class */ (function () {
2564
2564
  Bindings.prototype.getType = function () {
2565
2565
  return "bindings";
2566
2566
  };
2567
+ Object.defineProperty(Bindings.prototype, "isSurveyObj", {
2568
+ get: function () { return true; },
2569
+ enumerable: false,
2570
+ configurable: true
2571
+ });
2567
2572
  Bindings.prototype.getNames = function () {
2568
2573
  var res = [];
2569
2574
  this.fillProperties();
@@ -2780,7 +2785,6 @@ var Base = /** @class */ (function () {
2780
2785
  this.supportOnElementRerenderedEvent = true;
2781
2786
  this.onElementRerenderedEventEnabled = false;
2782
2787
  this._onElementRerendered = new EventBase();
2783
- this.bindingsValue = new Bindings(this);
2784
2788
  _jsonobject__WEBPACK_IMPORTED_MODULE_2__.CustomPropertiesCollection.createProperties(this);
2785
2789
  this.onBaseCreating();
2786
2790
  this.isCreating = false;
@@ -2882,6 +2886,11 @@ var Base = /** @class */ (function () {
2882
2886
  enumerable: false,
2883
2887
  configurable: true
2884
2888
  });
2889
+ Object.defineProperty(Base.prototype, "isSurveyObj", {
2890
+ get: function () { return true; },
2891
+ enumerable: false,
2892
+ configurable: true
2893
+ });
2885
2894
  Base.prototype.addEvent = function () {
2886
2895
  var res = new EventBase();
2887
2896
  this.eventList.push(res);
@@ -2933,13 +2942,21 @@ var Base = /** @class */ (function () {
2933
2942
  });
2934
2943
  Object.defineProperty(Base.prototype, "bindings", {
2935
2944
  get: function () {
2945
+ if (!this.bindingsValue) {
2946
+ this.bindingsValue = new Bindings(this);
2947
+ }
2936
2948
  return this.bindingsValue;
2937
2949
  },
2938
2950
  enumerable: false,
2939
2951
  configurable: true
2940
2952
  });
2953
+ Base.prototype.isBindingEmpty = function () {
2954
+ return !this.bindingsValue || this.bindingsValue.isEmpty();
2955
+ };
2941
2956
  Base.prototype.checkBindings = function (valueName, value) { };
2942
2957
  Base.prototype.updateBindings = function (propertyName, value) {
2958
+ if (!this.bindingsValue)
2959
+ return;
2943
2960
  var valueName = this.bindings.getValueNameByPropertyName(propertyName);
2944
2961
  if (!!valueName) {
2945
2962
  this.updateBindingValue(valueName, value);
@@ -3455,6 +3472,11 @@ var Base = /** @class */ (function () {
3455
3472
  locStr.disableLocalization = prop && prop.isLocalizable === false;
3456
3473
  return locStr;
3457
3474
  };
3475
+ Base.prototype.removeLocalizableString = function (name) {
3476
+ if (this.localizableStrings) {
3477
+ delete this.localizableStrings[name];
3478
+ }
3479
+ };
3458
3480
  Base.prototype.getLocalizableString = function (name) {
3459
3481
  return !!this.localizableStrings ? this.localizableStrings[name] : null;
3460
3482
  };
@@ -3488,7 +3510,7 @@ var Base = /** @class */ (function () {
3488
3510
  if (!!this.arraysInfo) {
3489
3511
  for (var key in this.arraysInfo) {
3490
3512
  var prop = this.getPropertyByName(key);
3491
- if (!prop || !prop.isSerializable)
3513
+ if (!prop || !prop.isPropertySerializable(this))
3492
3514
  continue;
3493
3515
  var items = this.getPropertyValue(key);
3494
3516
  if (!items || !items.length)
@@ -14934,20 +14956,6 @@ var ItemValue = /** @class */ (function (_super) {
14934
14956
  var _this = _super.call(this) || this;
14935
14957
  _this.typeName = typeName;
14936
14958
  _this.ownerPropertyName = "";
14937
- _this.locTextValue = new _localizablestring__WEBPACK_IMPORTED_MODULE_0__.LocalizableString(_this, true, "text");
14938
- _this.locTextValue.onStrChanged = function (oldValue, newValue) {
14939
- if (newValue == _this.value) {
14940
- newValue = undefined;
14941
- }
14942
- _this.propertyValueChanged("text", oldValue, newValue);
14943
- };
14944
- _this.locTextValue.onGetTextCallback = function (txt) {
14945
- return txt
14946
- ? txt
14947
- : !_helpers__WEBPACK_IMPORTED_MODULE_2__.Helpers.isValueEmpty(_this.value)
14948
- ? _this.value.toString()
14949
- : null;
14950
- };
14951
14959
  if (text)
14952
14960
  _this.locText.text = text;
14953
14961
  if (!!value && typeof value === "object") {
@@ -15022,7 +15030,7 @@ var ItemValue = /** @class */ (function (_super) {
15022
15030
  };
15023
15031
  ItemValue.getTextOrHtmlByValue = function (items, val) {
15024
15032
  var item = ItemValue.getItemByValue(items, val);
15025
- return item !== null ? item.locText.textOrHtml : "";
15033
+ return item !== null ? item.textOrHtml : "";
15026
15034
  };
15027
15035
  ItemValue.locStrsChanged = function (items) {
15028
15036
  for (var i = 0; i < items.length; i++) {
@@ -15111,8 +15119,26 @@ var ItemValue = /** @class */ (function (_super) {
15111
15119
  enumerable: false,
15112
15120
  configurable: true
15113
15121
  });
15122
+ ItemValue.prototype.createLocText = function () {
15123
+ var _this = this;
15124
+ var res = new _localizablestring__WEBPACK_IMPORTED_MODULE_0__.LocalizableString(this, true, "text");
15125
+ res.onStrChanged = function (oldValue, newValue) {
15126
+ _this.propertyValueChanged("text", oldValue, newValue);
15127
+ };
15128
+ res.onGetTextCallback = function (txt) {
15129
+ return txt || _this.getValueText();
15130
+ };
15131
+ return res;
15132
+ };
15133
+ ItemValue.prototype.getValueText = function () {
15134
+ var val = this.value;
15135
+ return !_helpers__WEBPACK_IMPORTED_MODULE_2__.Helpers.isValueEmpty(val) ? val.toString() : null;
15136
+ };
15114
15137
  Object.defineProperty(ItemValue.prototype, "locText", {
15115
15138
  get: function () {
15139
+ if (!this.locTextValue) {
15140
+ this.locTextValue = this.createLocText();
15141
+ }
15116
15142
  return this.locTextValue;
15117
15143
  },
15118
15144
  enumerable: false,
@@ -15164,14 +15190,15 @@ var ItemValue = /** @class */ (function (_super) {
15164
15190
  };
15165
15191
  Object.defineProperty(ItemValue.prototype, "hasText", {
15166
15192
  get: function () {
15167
- return this.locText.pureText ? true : false;
15193
+ return this.pureText ? true : false;
15168
15194
  },
15169
15195
  enumerable: false,
15170
15196
  configurable: true
15171
15197
  });
15172
15198
  Object.defineProperty(ItemValue.prototype, "pureText", {
15173
15199
  get: function () {
15174
- return this.locText.pureText;
15200
+ var _a;
15201
+ return ((_a = this.locTextValue) === null || _a === void 0 ? void 0 : _a.pureText) || "";
15175
15202
  },
15176
15203
  set: function (val) {
15177
15204
  this.text = val;
@@ -15181,7 +15208,7 @@ var ItemValue = /** @class */ (function (_super) {
15181
15208
  });
15182
15209
  Object.defineProperty(ItemValue.prototype, "text", {
15183
15210
  get: function () {
15184
- return this.locText.calculatedText; //TODO: it will be correct to use this.locText.text, however it would require a lot of rewriting in Creator
15211
+ return this.calculatedText; //TODO: it will be correct to use this.locText.text, however it would require a lot of rewriting in Creator
15185
15212
  },
15186
15213
  set: function (newText) {
15187
15214
  this.locText.text = newText;
@@ -15189,9 +15216,20 @@ var ItemValue = /** @class */ (function (_super) {
15189
15216
  enumerable: false,
15190
15217
  configurable: true
15191
15218
  });
15219
+ Object.defineProperty(ItemValue.prototype, "textOrHtml", {
15220
+ get: function () {
15221
+ if (this.locTextValue)
15222
+ return this.locText.textOrHtml;
15223
+ return this.getValueText();
15224
+ },
15225
+ enumerable: false,
15226
+ configurable: true
15227
+ });
15192
15228
  Object.defineProperty(ItemValue.prototype, "calculatedText", {
15193
15229
  get: function () {
15194
- return this.locText.calculatedText;
15230
+ if (this.locTextValue)
15231
+ return this.locText.calculatedText;
15232
+ return this.getValueText();
15195
15233
  },
15196
15234
  enumerable: false,
15197
15235
  configurable: true
@@ -15234,14 +15272,15 @@ var ItemValue = /** @class */ (function (_super) {
15234
15272
  var jsoObj = new _jsonobject__WEBPACK_IMPORTED_MODULE_1__.JsonObject();
15235
15273
  for (var i = 0; i < properties.length; i++) {
15236
15274
  var prop = properties[i];
15237
- if (prop.name === "text" && !this.locText.hasNonDefaultText() &&
15238
- _helpers__WEBPACK_IMPORTED_MODULE_2__.Helpers.isTwoValueEquals(this.value, this.text, false, true, false))
15275
+ if (prop.name === "text" && (!this.locTextValue || !this.locText.hasNonDefaultText() &&
15276
+ _helpers__WEBPACK_IMPORTED_MODULE_2__.Helpers.isTwoValueEquals(this.value, this.text, false, true, false)))
15239
15277
  continue;
15240
15278
  jsoObj.valueToJson(this, res, prop);
15241
15279
  }
15242
15280
  return res;
15243
15281
  };
15244
15282
  ItemValue.prototype.setData = function (value, isNewItem) {
15283
+ var _a;
15245
15284
  if (_helpers__WEBPACK_IMPORTED_MODULE_2__.Helpers.isValueEmpty(value))
15246
15285
  return;
15247
15286
  if (typeof value.value === "undefined" && typeof value.text !== "undefined" && Object.keys(value).length === 1) {
@@ -15261,7 +15300,7 @@ var ItemValue = /** @class */ (function (_super) {
15261
15300
  this.setValue(value, isNewItem);
15262
15301
  }
15263
15302
  if (!isNewItem) {
15264
- this.locText.strChanged();
15303
+ (_a = this.locTextValue) === null || _a === void 0 ? void 0 : _a.strChanged();
15265
15304
  }
15266
15305
  };
15267
15306
  Object.defineProperty(ItemValue.prototype, "visibleIf", {
@@ -15307,15 +15346,19 @@ var ItemValue = /** @class */ (function (_super) {
15307
15346
  this.setPropertyValue("isEnabled", val);
15308
15347
  };
15309
15348
  ItemValue.prototype.addUsedLocales = function (locales) {
15310
- this.AddLocStringToUsedLocales(this.locTextValue, locales);
15349
+ if (this.locTextValue) {
15350
+ this.AddLocStringToUsedLocales(this.locTextValue, locales);
15351
+ }
15311
15352
  };
15312
15353
  ItemValue.prototype.locStrsChanged = function () {
15354
+ var _a;
15313
15355
  _super.prototype.locStrsChanged.call(this);
15314
- this.locText.strChanged();
15356
+ (_a = this.locTextValue) === null || _a === void 0 ? void 0 : _a.strChanged();
15315
15357
  };
15316
15358
  ItemValue.prototype.onPropertyValueChanged = function (name, oldValue, newValue) {
15359
+ var _a;
15317
15360
  if (name === "value" && !this.hasText) {
15318
- this.locText.strChanged();
15361
+ (_a = this.locTextValue) === null || _a === void 0 ? void 0 : _a.strChanged();
15319
15362
  }
15320
15363
  var funcName = "itemValuePropertyChanged";
15321
15364
  if (!this.locOwner || !this.locOwner[funcName])
@@ -15386,6 +15429,12 @@ var ItemValue = /** @class */ (function (_super) {
15386
15429
  this._visible = val;
15387
15430
  }
15388
15431
  };
15432
+ Object.defineProperty(ItemValue.prototype, "_visible", {
15433
+ get: function () { return this.getPropertyValue("visible", true); },
15434
+ set: function (val) { this.setPropertyValue("visible", val); },
15435
+ enumerable: false,
15436
+ configurable: true
15437
+ });
15389
15438
  ItemValue.prototype.getLocTitle = function () {
15390
15439
  return this.locText;
15391
15440
  };
@@ -15394,15 +15443,15 @@ var ItemValue = /** @class */ (function (_super) {
15394
15443
  };
15395
15444
  ItemValue.prototype.setLocTitle = function (val) { };
15396
15445
  ItemValue.prototype.setTitle = function (val) { };
15397
- __decorate([
15398
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)({ defaultValue: true })
15399
- ], ItemValue.prototype, "_visible", void 0);
15446
+ Object.defineProperty(ItemValue.prototype, "icon", {
15447
+ get: function () { return this.getPropertyValue("icon", ""); },
15448
+ set: function (val) { this.setPropertyValue("icon", val); },
15449
+ enumerable: false,
15450
+ configurable: true
15451
+ });
15400
15452
  __decorate([
15401
15453
  (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)()
15402
15454
  ], ItemValue.prototype, "selectedValue", void 0);
15403
- __decorate([
15404
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)()
15405
- ], ItemValue.prototype, "icon", void 0);
15406
15455
  return ItemValue;
15407
15456
  }(_actions_action__WEBPACK_IMPORTED_MODULE_6__.BaseAction));
15408
15457
 
@@ -15751,13 +15800,11 @@ var JsonObjectProperty = /** @class */ (function () {
15751
15800
  enumerable: false,
15752
15801
  configurable: true
15753
15802
  });
15754
- Object.defineProperty(JsonObjectProperty.prototype, "hasToUseGetValue", {
15755
- get: function () {
15756
- return this.onGetValue || this.serializationProperty;
15757
- },
15758
- enumerable: false,
15759
- configurable: true
15760
- });
15803
+ JsonObjectProperty.prototype.isPropertySerializable = function (obj) {
15804
+ if (this.isSerializableFunc)
15805
+ return this.isSerializableFunc(obj);
15806
+ return this.isSerializable;
15807
+ };
15761
15808
  JsonObjectProperty.prototype.getDefaultValue = function (obj) {
15762
15809
  var result = !!this.defaultValueFunc ? this.defaultValueFunc(obj) : this.defaultValueValue;
15763
15810
  if (!!JsonObjectProperty.getItemValuesDefaultValue &&
@@ -16379,6 +16426,9 @@ var JsonMetadataClass = /** @class */ (function () {
16379
16426
  if (!_helpers__WEBPACK_IMPORTED_MODULE_2__.Helpers.isValueEmpty(propInfo.isSerializable)) {
16380
16427
  prop.isSerializable = propInfo.isSerializable;
16381
16428
  }
16429
+ if (!_helpers__WEBPACK_IMPORTED_MODULE_2__.Helpers.isValueEmpty(propInfo.isSerializableFunc)) {
16430
+ prop.isSerializableFunc = propInfo.isSerializableFunc;
16431
+ }
16382
16432
  if (!_helpers__WEBPACK_IMPORTED_MODULE_2__.Helpers.isValueEmpty(propInfo.isLightSerializable)) {
16383
16433
  prop.isLightSerializable = propInfo.isLightSerializable;
16384
16434
  }
@@ -16594,7 +16644,7 @@ var JsonMetadata = /** @class */ (function () {
16594
16644
  }
16595
16645
  };
16596
16646
  JsonMetadata.prototype.getObjPropertyValueCore = function (obj, prop) {
16597
- if (!prop.isSerializable)
16647
+ if (!prop.isPropertySerializable(obj))
16598
16648
  return obj[prop.name];
16599
16649
  if (prop.isLocalizable) {
16600
16650
  if (prop.isArray)
@@ -17336,7 +17386,7 @@ var JsonObject = /** @class */ (function () {
17336
17386
  JsonObject.prototype.valueToJson = function (obj, result, prop, options) {
17337
17387
  if (!options)
17338
17388
  options = {};
17339
- if (prop.isSerializable === false || (prop.isLightSerializable === false && this.lightSerializing))
17389
+ if (!prop.isPropertySerializable(obj) || (prop.isLightSerializable === false && this.lightSerializing))
17340
17390
  return;
17341
17391
  if (options.version && !prop.isAvailableInVersion(options.version))
17342
17392
  return;
@@ -18170,6 +18220,8 @@ var LocalizableString = /** @class */ (function () {
18170
18220
  configurable: true
18171
18221
  });
18172
18222
  LocalizableString.prototype.strChanged = function () {
18223
+ if (!this.isTextRequested)
18224
+ return;
18173
18225
  this.searchableText = undefined;
18174
18226
  if (this.renderedText === undefined && this.isEmpty && !this.onGetTextCallback && !this.localizationName)
18175
18227
  return;
@@ -18216,6 +18268,7 @@ var LocalizableString = /** @class */ (function () {
18216
18268
  };
18217
18269
  Object.defineProperty(LocalizableString.prototype, "pureText", {
18218
18270
  get: function () {
18271
+ this.isTextRequested = true;
18219
18272
  var loc = this.locale;
18220
18273
  if (!loc)
18221
18274
  loc = this.defaultLoc;
@@ -22121,7 +22174,7 @@ var PanelModelBase = /** @class */ (function (_super) {
22121
22174
  _this.createNewArray("rows", function (el, index) { _this.onAddRow(el); }, function (el) { _this.onRemoveRow(el); });
22122
22175
  _this.createNewArray("visibleRows");
22123
22176
  _this.elementsValue = _this.createNewArray("elements", _this.onAddElement.bind(_this), _this.onRemoveElement.bind(_this));
22124
- _this.id = PanelModelBase.getPanelId();
22177
+ _this.setPropertyValueDirectly("id", PanelModelBase.getPanelId());
22125
22178
  _this.addExpressionProperty("visibleIf", function (obj, res) { _this.visible = res === true; }, function (obj) { return !_this.areInvisibleElementsShowing; });
22126
22179
  _this.addExpressionProperty("enableIf", function (obj, res) { _this.readOnly = res === false; });
22127
22180
  _this.addExpressionProperty("requiredIf", function (obj, res) { _this.isRequired = res === true; });
@@ -22207,7 +22260,6 @@ var PanelModelBase = /** @class */ (function (_super) {
22207
22260
  PanelModelBase.prototype.endLoadingFromJson = function () {
22208
22261
  var _this = this;
22209
22262
  _super.prototype.endLoadingFromJson.call(this);
22210
- this.updateDescriptionVisibility(this.description);
22211
22263
  this.markQuestionListDirty();
22212
22264
  this.onRowsChanged();
22213
22265
  this.gridLayoutColumns.forEach(function (col) {
@@ -26364,11 +26416,22 @@ var ProgressButtons = /** @class */ (function (_super) {
26364
26416
  });
26365
26417
  Object.defineProperty(ProgressButtons.prototype, "footerText", {
26366
26418
  get: function () {
26367
- return this.survey.progressText;
26419
+ return this.progressText;
26420
+ },
26421
+ enumerable: false,
26422
+ configurable: true
26423
+ });
26424
+ Object.defineProperty(ProgressButtons.prototype, "progressText", {
26425
+ get: function () {
26426
+ var _this = this;
26427
+ return this.getPropertyValue("progressText", undefined, function () { return _this.survey.getProgressText(); });
26368
26428
  },
26369
26429
  enumerable: false,
26370
26430
  configurable: true
26371
26431
  });
26432
+ ProgressButtons.prototype.resetProgressText = function () {
26433
+ this.resetPropertyValue("progressText");
26434
+ };
26372
26435
  ProgressButtons.prototype.processResponsiveness = function (width) {
26373
26436
  this.onResize.fire(this, { width: width });
26374
26437
  };
@@ -26472,12 +26535,6 @@ var __extends = (undefined && undefined.__extends) || (function () {
26472
26535
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
26473
26536
  };
26474
26537
  })();
26475
- var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
26476
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
26477
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
26478
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
26479
- return c > 3 && r && Object.defineProperty(target, key, r), r;
26480
- };
26481
26538
 
26482
26539
 
26483
26540
 
@@ -26531,7 +26588,7 @@ var Question = /** @class */ (function (_super) {
26531
26588
  _this.isRunningValidatorsValue = false;
26532
26589
  _this.isValueChangedInSurvey = false;
26533
26590
  _this.allowNotifyValueChanged = true;
26534
- _this.id = Question.getQuestionId();
26591
+ _this.setPropertyValueDirectly("id", Question.getQuestionId());
26535
26592
  _this.onCreating();
26536
26593
  _this.createNewArray("validators", function (validator) {
26537
26594
  validator.errorOwner = _this;
@@ -26541,6 +26598,7 @@ var Question = /** @class */ (function (_super) {
26541
26598
  _this.addExpressionProperty("requiredIf", function (obj, res) { _this.isRequired = res === true; });
26542
26599
  _this.createLocalizableString("commentText", _this, true, "otherItemText");
26543
26600
  _this.createLocalizableString("requiredErrorText", _this);
26601
+ _this.createLocalizableString("commentPlaceholder", _this);
26544
26602
  _this.addTriggerInfo("resetValueIf", function () { return !_this.isEmpty(); }, function () {
26545
26603
  _this.startSetValueOnExpression();
26546
26604
  _this.clearValue();
@@ -26568,6 +26626,9 @@ var Question = /** @class */ (function (_super) {
26568
26626
  _this.registerPropertyChangedHandlers(["showCommentArea", "showOtherItem"], function () {
26569
26627
  _this.initCommentFromSurvey();
26570
26628
  });
26629
+ _this.registerPropertyChangedHandlers(["commentPlaceholder"], function () {
26630
+ _this.resetRenderedCommentPlaceholder();
26631
+ });
26571
26632
  _this.registerFunctionOnPropertiesValueChanged(["no", "readOnly", "hasVisibleErrors", "containsErrors"], function () {
26572
26633
  _this.updateQuestionCss();
26573
26634
  });
@@ -26605,6 +26666,24 @@ var Question = /** @class */ (function (_super) {
26605
26666
  configurable: true
26606
26667
  });
26607
26668
  Question.prototype.themeChanged = function (theme) { };
26669
+ Object.defineProperty(Question.prototype, "_isMobile", {
26670
+ get: function () { return this.getPropertyValue("_isMobile", false); },
26671
+ set: function (val) { this.setPropertyValue("_isMobile", val); },
26672
+ enumerable: false,
26673
+ configurable: true
26674
+ });
26675
+ Object.defineProperty(Question.prototype, "forceIsInputReadOnly", {
26676
+ get: function () { return this.getPropertyValue("forceIsInputReadOnly"); },
26677
+ set: function (val) { this.setPropertyValue("forceIsInputReadOnly", val); },
26678
+ enumerable: false,
26679
+ configurable: true
26680
+ });
26681
+ Object.defineProperty(Question.prototype, "ariaExpanded", {
26682
+ get: function () { return this.getPropertyValue("ariaExpanded"); },
26683
+ set: function (val) { this.setPropertyValue("ariaExpanded", val); },
26684
+ enumerable: false,
26685
+ configurable: true
26686
+ });
26608
26687
  Question.prototype.getDefaultTitle = function () { return this.name; };
26609
26688
  Question.prototype.createLocTitleProperty = function () {
26610
26689
  var _this = this;
@@ -27493,6 +27572,23 @@ var Question = /** @class */ (function (_super) {
27493
27572
  enumerable: false,
27494
27573
  configurable: true
27495
27574
  });
27575
+ Object.defineProperty(Question.prototype, "commentPlaceholder", {
27576
+ /**
27577
+ * A placeholder for the comment area. Applies when the `showCommentArea` property is `true`.
27578
+ * @see showCommentArea
27579
+ * @see comment
27580
+ * @see commentText
27581
+ */
27582
+ get: function () { return this.getLocalizableStringText("commentPlaceholder"); },
27583
+ set: function (val) { this.setLocalizableStringText("commentPlaceholder", val); },
27584
+ enumerable: false,
27585
+ configurable: true
27586
+ });
27587
+ Object.defineProperty(Question.prototype, "locCommentPlaceholder", {
27588
+ get: function () { return this.getLocalizableString("commentPlaceholder"); },
27589
+ enumerable: false,
27590
+ configurable: true
27591
+ });
27496
27592
  Object.defineProperty(Question.prototype, "commentPlaceHolder", {
27497
27593
  get: function () {
27498
27594
  return this.commentPlaceholder;
@@ -28515,7 +28611,7 @@ var Question = /** @class */ (function (_super) {
28515
28611
  return false;
28516
28612
  if (Array.isArray(val))
28517
28613
  return val.length > 0 ? this.isValueSurveyElement(val[0]) : false;
28518
- return !!val.getType && !!val.onPropertyChanged;
28614
+ return val.isSurveyObj === true;
28519
28615
  };
28520
28616
  Question.prototype.canClearValueAsInvisible = function (reason) {
28521
28617
  if (reason === "onHiddenContainer" && !this.isParentVisible)
@@ -29536,6 +29632,18 @@ var Question = /** @class */ (function (_super) {
29536
29632
  return (!!this.customWidget ||
29537
29633
  this.getComponentName() === "default");
29538
29634
  };
29635
+ Object.defineProperty(Question.prototype, "renderAs", {
29636
+ get: function () { return this.getPropertyValue("renderAs"); },
29637
+ set: function (val) { this.setPropertyValue("renderAs", val); },
29638
+ enumerable: false,
29639
+ configurable: true
29640
+ });
29641
+ Object.defineProperty(Question.prototype, "inMatrixMode", {
29642
+ get: function () { return this.getPropertyValue("inMatrixMode", false); },
29643
+ set: function (val) { this.setPropertyValue("inMatrixMode", val); },
29644
+ enumerable: false,
29645
+ configurable: true
29646
+ });
29539
29647
  //ISurveyErrorOwner
29540
29648
  Question.prototype.getErrorCustomText = function (text, error) {
29541
29649
  if (!!this.survey)
@@ -29857,24 +29965,6 @@ var Question = /** @class */ (function (_super) {
29857
29965
  require: "requiredMark",
29858
29966
  };
29859
29967
  Question.questionCounter = 100;
29860
- __decorate([
29861
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)({ defaultValue: false })
29862
- ], Question.prototype, "_isMobile", void 0);
29863
- __decorate([
29864
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)()
29865
- ], Question.prototype, "forceIsInputReadOnly", void 0);
29866
- __decorate([
29867
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)()
29868
- ], Question.prototype, "ariaExpanded", void 0);
29869
- __decorate([
29870
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)({ localizable: true, onSet: function (val, target) { return target.resetRenderedCommentPlaceholder(); } })
29871
- ], Question.prototype, "commentPlaceholder", void 0);
29872
- __decorate([
29873
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)()
29874
- ], Question.prototype, "renderAs", void 0);
29875
- __decorate([
29876
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)({ defaultValue: false })
29877
- ], Question.prototype, "inMatrixMode", void 0);
29878
29968
  return Question;
29879
29969
  }(_survey_element__WEBPACK_IMPORTED_MODULE_2__.SurveyElement));
29880
29970
 
@@ -30005,6 +30095,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__.Serializer.addClass("question", [
30005
30095
  {
30006
30096
  name: "bindings:bindings",
30007
30097
  serializationProperty: "bindings",
30098
+ isSerializableFunc: function (obj) { return !obj.isBindingEmpty(); },
30008
30099
  visibleIf: function (obj) {
30009
30100
  return obj.bindings.getNames().length > 0;
30010
30101
  },
@@ -30323,10 +30414,14 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30323
30414
  _this.registerPropertyChangedHandlers(["hideIfChoicesEmpty"], function () {
30324
30415
  _this.onVisibleChanged();
30325
30416
  });
30417
+ _this.registerPropertyChangedHandlers(["selecteditemValues"], function (newVal) {
30418
+ _this.onSelectedItemValuesChangedHandler(newVal);
30419
+ });
30326
30420
  _this.createNewArray("visibleChoices", function () { return _this.updateRenderedChoices(); }, function () { return _this.updateRenderedChoices(); });
30327
30421
  _this.setNewRestfulProperty();
30328
30422
  var locOtherText = _this.createLocalizableString("otherText", _this.otherItemValue, true, "otherItemText");
30329
30423
  _this.createLocalizableString("otherErrorText", _this, true, "otherRequiredError");
30424
+ _this.createLocalizableString("otherPlaceholder", _this, false, true);
30330
30425
  _this.otherItemValue.locOwner = _this;
30331
30426
  _this.otherItemValue.setLocText(locOtherText);
30332
30427
  _this.choicesByUrl.createItemValue = function (value) {
@@ -30353,6 +30448,12 @@ var QuestionSelectBase = /** @class */ (function (_super) {
30353
30448
  enumerable: false,
30354
30449
  configurable: true
30355
30450
  });
30451
+ Object.defineProperty(QuestionSelectBase.prototype, "selectedItemValues", {
30452
+ get: function () { return this.getPropertyValue("selectedItemValues"); },
30453
+ set: function (val) { this.setPropertyValue("selectedItemValues", val); },
30454
+ enumerable: false,
30455
+ configurable: true
30456
+ });
30356
30457
  QuestionSelectBase.prototype.getType = function () {
30357
30458
  return "selectbase";
30358
30459
  };
@@ -31390,6 +31491,34 @@ var QuestionSelectBase = /** @class */ (function (_super) {
31390
31491
  enumerable: false,
31391
31492
  configurable: true
31392
31493
  });
31494
+ Object.defineProperty(QuestionSelectBase.prototype, "separateSpecialChoices", {
31495
+ /**
31496
+ * Displays the "Select All", "None", and "Other" choices on individual rows.
31497
+ * @see showNoneItem
31498
+ * @see showOtherItem
31499
+ * @see [settings.specialChoicesOrder](https://surveyjs.io/form-library/documentation/api-reference/settings#specialChoicesOrder)
31500
+ */
31501
+ get: function () { return this.getPropertyValue("separateSpecialChoices"); },
31502
+ set: function (val) { this.setPropertyValue("separateSpecialChoices", val); },
31503
+ enumerable: false,
31504
+ configurable: true
31505
+ });
31506
+ Object.defineProperty(QuestionSelectBase.prototype, "otherPlaceholder", {
31507
+ /**
31508
+ * A placeholder for the comment area. Applies when the `showOtherItem` or `showCommentArea` property is `true`.
31509
+ * @see showOtherItem
31510
+ * @see showCommentArea
31511
+ */
31512
+ get: function () { return this.getLocalizableStringText("otherPlaceholder"); },
31513
+ set: function (val) { this.setLocalizableStringText("otherPlaceholder", val); },
31514
+ enumerable: false,
31515
+ configurable: true
31516
+ });
31517
+ Object.defineProperty(QuestionSelectBase.prototype, "locOtherPlaceholder", {
31518
+ get: function () { return this.getLocalizableString("otherPlaceholder"); },
31519
+ enumerable: false,
31520
+ configurable: true
31521
+ });
31393
31522
  Object.defineProperty(QuestionSelectBase.prototype, "otherPlaceHolder", {
31394
31523
  get: function () {
31395
31524
  return this.otherPlaceholder;
@@ -32567,19 +32696,6 @@ var QuestionSelectBase = /** @class */ (function (_super) {
32567
32696
  enumerable: false,
32568
32697
  configurable: true
32569
32698
  });
32570
- __decorate([
32571
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_0__.property)({
32572
- onSet: function (newVal, target) {
32573
- target.onSelectedItemValuesChangedHandler(newVal);
32574
- }
32575
- })
32576
- ], QuestionSelectBase.prototype, "selectedItemValues", void 0);
32577
- __decorate([
32578
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_0__.property)()
32579
- ], QuestionSelectBase.prototype, "separateSpecialChoices", void 0);
32580
- __decorate([
32581
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_0__.property)({ localizable: true })
32582
- ], QuestionSelectBase.prototype, "otherPlaceholder", void 0);
32583
32699
  __decorate([
32584
32700
  (0,_jsonobject__WEBPACK_IMPORTED_MODULE_0__.propertyArray)()
32585
32701
  ], QuestionSelectBase.prototype, "_renderedChoices", void 0);
@@ -35916,29 +36032,14 @@ var QuestionDropdownModel = /** @class */ (function (_super) {
35916
36032
  _this.onVisibleChoicesChanged();
35917
36033
  });
35918
36034
  _this.registerPropertyChangedHandlers(["value", "renderAs", "showOtherItem", "otherText", "placeholder", "choices", "visibleChoices"], function () {
35919
- _this.updateReadOnlyText();
36035
+ _this.getSingleSelectedItem();
36036
+ _this.resetReadOnlyText();
35920
36037
  });
35921
- _this.updateReadOnlyText();
35922
36038
  return _this;
35923
36039
  }
35924
- QuestionDropdownModel.prototype.updateReadOnlyText = function () {
35925
- var result = !!this.selectedItem ? "" : this.placeholder;
35926
- if (this.renderAs == "select") {
35927
- if (this.isOtherSelected) {
35928
- result = this.otherText;
35929
- }
35930
- else if (this.isNoneSelected) {
35931
- result = this.noneText;
35932
- }
35933
- else if (!!this.selectedItem) {
35934
- result = this.selectedItemText;
35935
- }
35936
- }
35937
- this.readOnlyText = result;
35938
- };
35939
36040
  QuestionDropdownModel.prototype.locStrsChanged = function () {
35940
36041
  _super.prototype.locStrsChanged.call(this);
35941
- this.updateReadOnlyText();
36042
+ this.resetReadOnlyText();
35942
36043
  };
35943
36044
  Object.defineProperty(QuestionDropdownModel.prototype, "showOptionsCaption", {
35944
36045
  get: function () {
@@ -36123,6 +36224,28 @@ var QuestionDropdownModel = /** @class */ (function (_super) {
36123
36224
  enumerable: false,
36124
36225
  configurable: true
36125
36226
  });
36227
+ Object.defineProperty(QuestionDropdownModel.prototype, "readOnlyText", {
36228
+ get: function () {
36229
+ var _this = this;
36230
+ return this.getPropertyValue("readOnlyText", undefined, function () { return _this.calculateReadOnlyText(); });
36231
+ },
36232
+ enumerable: false,
36233
+ configurable: true
36234
+ });
36235
+ QuestionDropdownModel.prototype.calculateReadOnlyText = function () {
36236
+ if (this.renderAs == "select") {
36237
+ if (this.isOtherSelected)
36238
+ return this.otherText;
36239
+ if (this.isNoneSelected)
36240
+ return this.noneText;
36241
+ if (!!this.selectedItem)
36242
+ return this.selectedItemText;
36243
+ }
36244
+ return !!this.selectedItem ? "" : this.placeholder;
36245
+ };
36246
+ QuestionDropdownModel.prototype.resetReadOnlyText = function () {
36247
+ this.resetPropertyValue("readOnlyText");
36248
+ };
36126
36249
  QuestionDropdownModel.prototype.getControlClass = function () {
36127
36250
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_3__.CssClassBuilder()
36128
36251
  .append(this.cssClasses.control)
@@ -36310,9 +36433,6 @@ var QuestionDropdownModel = /** @class */ (function (_super) {
36310
36433
  __decorate([
36311
36434
  (0,_jsonobject__WEBPACK_IMPORTED_MODULE_0__.property)({ defaultValue: false })
36312
36435
  ], QuestionDropdownModel.prototype, "inputHasValue", void 0);
36313
- __decorate([
36314
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_0__.property)({ defaultValue: "" })
36315
- ], QuestionDropdownModel.prototype, "readOnlyText", void 0);
36316
36436
  __decorate([
36317
36437
  (0,_jsonobject__WEBPACK_IMPORTED_MODULE_0__.property)({
36318
36438
  onSet: function (newValue, target) {
@@ -42843,8 +42963,11 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
42843
42963
  var rows = this.generatedVisibleRows;
42844
42964
  if (rowIndex >= rows.length)
42845
42965
  return null;
42846
- var newValue = this.createNewValue();
42847
- return this.getRowValueCore(rows[rowIndex], newValue);
42966
+ var val = this.value;
42967
+ var rowVal = this.getRowValueCore(rows[rowIndex], val);
42968
+ if (this.isValueSurveyElement(val))
42969
+ return rowVal;
42970
+ return _helpers__WEBPACK_IMPORTED_MODULE_2__.Helpers.getUnbindValue(rowVal);
42848
42971
  };
42849
42972
  QuestionMatrixDropdownModelBase.prototype.checkIfValueInRowDuplicated = function (checkedRow, cellQuestion) {
42850
42973
  if (!this.generatedVisibleRows)
@@ -53200,11 +53323,11 @@ var QuestionRatingModel = /** @class */ (function (_super) {
53200
53323
  });
53201
53324
  _this.createLocalizableString("minRateDescription", _this, true)
53202
53325
  .onStringChanged.add(function (sender, options) {
53203
- _this.hasMinRateDescription = !sender.isEmpty;
53326
+ _this.setPropertyValue("hasMinRateDescription", !sender.isEmpty);
53204
53327
  });
53205
53328
  _this.createLocalizableString("maxRateDescription", _this, true)
53206
53329
  .onStringChanged.add(function (sender, options) {
53207
- _this.hasMaxRateDescription = !sender.isEmpty;
53330
+ _this.setPropertyValue("hasMaxRateDescription", !sender.isEmpty);
53208
53331
  });
53209
53332
  _this.initPropertyDependencies();
53210
53333
  return _this;
@@ -53672,6 +53795,22 @@ var QuestionRatingModel = /** @class */ (function (_super) {
53672
53795
  enumerable: false,
53673
53796
  configurable: true
53674
53797
  });
53798
+ Object.defineProperty(QuestionRatingModel.prototype, "hasMinRateDescription", {
53799
+ get: function () {
53800
+ var _this = this;
53801
+ return this.getPropertyValue("hasMinRateDescription", undefined, function () { return !!_this.minRateDescription; });
53802
+ },
53803
+ enumerable: false,
53804
+ configurable: true
53805
+ });
53806
+ Object.defineProperty(QuestionRatingModel.prototype, "hasMaxRateDescription", {
53807
+ get: function () {
53808
+ var _this = this;
53809
+ return this.getPropertyValue("hasMaxRateDescription", undefined, function () { return !!_this.maxRateDescription; });
53810
+ },
53811
+ enumerable: false,
53812
+ configurable: true
53813
+ });
53675
53814
  Object.defineProperty(QuestionRatingModel.prototype, "hasMinLabel", {
53676
53815
  get: function () {
53677
53816
  return !this.displayRateDescriptionsAsExtremeItems && !!this.hasMinRateDescription;
@@ -54119,12 +54258,6 @@ var QuestionRatingModel = /** @class */ (function (_super) {
54119
54258
  __decorate([
54120
54259
  (0,_jsonobject__WEBPACK_IMPORTED_MODULE_2__.property)()
54121
54260
  ], QuestionRatingModel.prototype, "rateCount", void 0);
54122
- __decorate([
54123
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_2__.property)({ defaultValue: false })
54124
- ], QuestionRatingModel.prototype, "hasMinRateDescription", void 0);
54125
- __decorate([
54126
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_2__.property)({ defaultValue: false })
54127
- ], QuestionRatingModel.prototype, "hasMaxRateDescription", void 0);
54128
54261
  __decorate([
54129
54262
  (0,_jsonobject__WEBPACK_IMPORTED_MODULE_2__.property)()
54130
54263
  ], QuestionRatingModel.prototype, "displayRateDescriptionsAsExtremeItems", void 0);
@@ -57771,13 +57904,32 @@ var SurveyElementCore = /** @class */ (function (_super) {
57771
57904
  SurveyElementCore.prototype.setTitleValue = function (val) {
57772
57905
  this.setLocalizableStringText("title", val);
57773
57906
  };
57774
- SurveyElementCore.prototype.updateDescriptionVisibility = function (newDescription) {
57907
+ Object.defineProperty(SurveyElementCore.prototype, "hasDescription", {
57908
+ /**
57909
+ * Returns `true` if the survey element has a description.
57910
+ * @see description
57911
+ */
57912
+ get: function () {
57913
+ var _this = this;
57914
+ return this.getPropertyValue("hasDescription", undefined, function () { return _this.calcDescriptionVisibility(); });
57915
+ },
57916
+ set: function (val) {
57917
+ this.setPropertyValue("hasDescription", val);
57918
+ },
57919
+ enumerable: false,
57920
+ configurable: true
57921
+ });
57922
+ SurveyElementCore.prototype.calcDescriptionVisibility = function () {
57923
+ var newDescription = this.description;
57775
57924
  var showPlaceholder = false;
57776
57925
  if (this.isDesignMode) {
57777
57926
  var property_1 = _jsonobject__WEBPACK_IMPORTED_MODULE_0__.Serializer.findProperty(this.getType(), "description");
57778
57927
  showPlaceholder = !!(property_1 === null || property_1 === void 0 ? void 0 : property_1.placeholder);
57779
57928
  }
57780
- this.hasDescription = !!newDescription || (showPlaceholder && this.isDesignMode);
57929
+ return !!newDescription || (showPlaceholder && this.isDesignMode);
57930
+ };
57931
+ SurveyElementCore.prototype.resetDescriptionVisibility = function () {
57932
+ this.resetPropertyValue("hasDescription");
57781
57933
  };
57782
57934
  Object.defineProperty(SurveyElementCore.prototype, "locDescription", {
57783
57935
  get: function () {
@@ -57878,13 +58030,10 @@ var SurveyElementCore = /** @class */ (function (_super) {
57878
58030
  configurable: true
57879
58031
  });
57880
58032
  SurveyElementCore.prototype.getIsTitleRenderedAsString = function () { return !this.isTitleOwner; };
57881
- __decorate([
57882
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_0__.property)({})
57883
- ], SurveyElementCore.prototype, "hasDescription", void 0);
57884
58033
  __decorate([
57885
58034
  (0,_jsonobject__WEBPACK_IMPORTED_MODULE_0__.property)({
57886
58035
  localizable: true, onSet: function (newDescription, self) {
57887
- self.updateDescriptionVisibility(newDescription);
58036
+ self.resetDescriptionVisibility();
57888
58037
  }
57889
58038
  })
57890
58039
  ], SurveyElementCore.prototype, "description", void 0);
@@ -57930,7 +58079,7 @@ var SurveyElement = /** @class */ (function (_super) {
57930
58079
  }
57931
58080
  }, function () { return _this.renderedIsExpanded; });
57932
58081
  _this.onAfterRenderElement = _this.addEvent();
57933
- _this.name = name;
58082
+ _this.setPropertyValueDirectly("name", _this.getValidName(name));
57934
58083
  _this.createNewArray("errors");
57935
58084
  _this.createNewArray("titleActions");
57936
58085
  _this.registerPropertyChangedHandlers(["isReadOnly"], function () { _this.onReadOnlyChanged(); });
@@ -58338,8 +58487,8 @@ var SurveyElement = /** @class */ (function (_super) {
58338
58487
  this.textProcessorValue = this.surveyImplValue.getTextProcessor();
58339
58488
  this.onSetData();
58340
58489
  }
58341
- if (!!this.survey /* && !this.isLoadingFromJson*/) {
58342
- this.updateDescriptionVisibility(this.description);
58490
+ if (!!this.survey) {
58491
+ this.resetDescriptionVisibility();
58343
58492
  this.clearCssClasses();
58344
58493
  }
58345
58494
  };
@@ -58666,7 +58815,6 @@ var SurveyElement = /** @class */ (function (_super) {
58666
58815
  if (!this.survey) {
58667
58816
  this.onSurveyLoad();
58668
58817
  }
58669
- this.updateDescriptionVisibility(this.description);
58670
58818
  };
58671
58819
  SurveyElement.prototype.setVisibleIndex = function (index) {
58672
58820
  return 0;
@@ -59121,7 +59269,7 @@ var SurveyElement = /** @class */ (function (_super) {
59121
59269
  });
59122
59270
  SurveyElement.prototype.localeChanged = function () {
59123
59271
  _super.prototype.localeChanged.call(this);
59124
- this.updateDescriptionVisibility(this.description);
59272
+ this.resetDescriptionVisibility();
59125
59273
  if (this.errors.length > 0) {
59126
59274
  this.errors.forEach(function (err) {
59127
59275
  err.updateText();
@@ -60272,7 +60420,6 @@ var SurveyModel = /** @class */ (function (_super) {
60272
60420
  _this.validationAllowComplete = false;
60273
60421
  _this.isNavigationButtonPressed = false;
60274
60422
  _this.mouseDownPage = null;
60275
- _this.isCalculatingProgressText = false;
60276
60423
  _this.isSmoothScrollEnabled = false;
60277
60424
  /**
60278
60425
  * An event that is raised when the survey's width or height is changed.
@@ -60368,10 +60515,10 @@ var SurveyModel = /** @class */ (function (_super) {
60368
60515
  });
60369
60516
  _this.registerPropertyChangedHandlers(["isLoading", "isCompleted", "isCompletedBefore", "readOnly", "isStartedState", "currentPage", "isShowingPreview"], function () { _this.updateState(); });
60370
60517
  _this.registerPropertyChangedHandlers(["state", "currentPage", "showPreviewBeforeComplete"], function () { _this.onStateAndCurrentPageChanged(); });
60371
- _this.registerPropertyChangedHandlers(["logo", "logoPosition"], function () { _this.updateHasLogo(); });
60372
- _this.registerPropertyChangedHandlers(["backgroundImage"], function () { _this.updateRenderBackgroundImage(); });
60373
- _this.registerPropertyChangedHandlers(["renderBackgroundImage", "backgroundOpacity", "backgroundImageFit", "fitToContainer", "backgroundImageAttachment"], function () {
60374
- _this.updateBackgroundImageStyle();
60518
+ _this.registerPropertyChangedHandlers(["logo", "logoPosition"], function () { _this.resetHasLogo(); });
60519
+ _this.registerPropertyChangedHandlers(["backgroundImage"], function () { _this.resetPropertyValue("renderBackgroundImage"); });
60520
+ _this.registerPropertyChangedHandlers(["backgroundImage", "backgroundOpacity", "backgroundImageFit", "fitToContainer", "backgroundImageAttachment"], function () {
60521
+ _this.resetPropertyValue("backgroundImageStyle");
60375
60522
  });
60376
60523
  _this.registerPropertyChangedHandlers(["showPrevButton", "showCompleteButton"], function () { _this.updateButtonsVisibility(); });
60377
60524
  _this.onGetQuestionNumber.onCallbacksChanged = function () {
@@ -60404,8 +60551,7 @@ var SurveyModel = /** @class */ (function (_super) {
60404
60551
  _this.onShowingChoiceItem.onCallbacksChanged = function () {
60405
60552
  _this.rebuildQuestionChoices();
60406
60553
  };
60407
- _this.navigationBarValue = _this.createNavigationBar();
60408
- _this.navigationBar.locOwner = _this;
60554
+ _this.locTitle.onStringChanged.add(function () { return _this.resetPropertyValue("titleIsEmpty"); });
60409
60555
  _this.onBeforeCreating();
60410
60556
  if (jsonObj) {
60411
60557
  if (typeof jsonObj === "string" || jsonObj instanceof String) {
@@ -60437,7 +60583,6 @@ var SurveyModel = /** @class */ (function (_super) {
60437
60583
  _this.onScrollCallback = undefined;
60438
60584
  }
60439
60585
  });
60440
- _this.progressBarValue = new _progress_buttons__WEBPACK_IMPORTED_MODULE_21__.ProgressButtons(_this);
60441
60586
  if (_this.headerView === "advanced") {
60442
60587
  _this.insertAdvancedHeader(new _header__WEBPACK_IMPORTED_MODULE_18__.Cover());
60443
60588
  }
@@ -60450,7 +60595,7 @@ var SurveyModel = /** @class */ (function (_super) {
60450
60595
  _this.layoutElements.push({
60451
60596
  id: "progress-buttons",
60452
60597
  component: "sv-progress-buttons",
60453
- data: _this.progressBar,
60598
+ getData: function () { return _this.progressBar; },
60454
60599
  processResponsiveness: function (width) { return _this.progressBar.processResponsiveness && _this.progressBar.processResponsiveness(width); }
60455
60600
  });
60456
60601
  _this.layoutElements.push({
@@ -60473,19 +60618,17 @@ var SurveyModel = /** @class */ (function (_super) {
60473
60618
  component: "sv-progress-requiredquestions",
60474
60619
  data: _this
60475
60620
  });
60476
- var tocModel = new _surveyToc__WEBPACK_IMPORTED_MODULE_22__.TOCModel(_this);
60477
60621
  _this.addLayoutElement({
60478
60622
  id: "toc-navigation",
60479
60623
  component: "sv-navigation-toc",
60480
- data: tocModel,
60481
- processResponsiveness: function (width) { return tocModel.updateStickyTOCSize(_this.rootElement); }
60624
+ getData: function () { return _this.tocModel; },
60625
+ processResponsiveness: function (width) { return _this.tocModel.updateStickyTOCSize(_this.rootElement); }
60482
60626
  });
60483
60627
  _this.layoutElements.push({
60484
60628
  id: "buttons-navigation",
60485
60629
  component: "sv-action-bar",
60486
- data: _this.navigationBar
60630
+ getData: function () { return _this.navigationBar; }
60487
60631
  });
60488
- _this.locTitle.onStringChanged.add(function () { return _this.titleIsEmpty = _this.locTitle.isEmpty; });
60489
60632
  return _this;
60490
60633
  }
60491
60634
  Object.defineProperty(SurveyModel.prototype, "platformName", {
@@ -60526,6 +60669,16 @@ var SurveyModel = /** @class */ (function (_super) {
60526
60669
  enumerable: false,
60527
60670
  configurable: true
60528
60671
  });
60672
+ Object.defineProperty(SurveyModel.prototype, "tocModel", {
60673
+ get: function () {
60674
+ if (!this.tocModelValue) {
60675
+ this.tocModelValue = new _surveyToc__WEBPACK_IMPORTED_MODULE_22__.TOCModel(this);
60676
+ }
60677
+ return this.tocModelValue;
60678
+ },
60679
+ enumerable: false,
60680
+ configurable: true
60681
+ });
60529
60682
  Object.defineProperty(SurveyModel.prototype, "sjsVersion", {
60530
60683
  get: function () {
60531
60684
  return this.getPropertyValue("sjsVersion");
@@ -61745,7 +61898,9 @@ var SurveyModel = /** @class */ (function (_super) {
61745
61898
  if (!this.isStartPageActive) {
61746
61899
  this.updateProgressText();
61747
61900
  }
61748
- this.navigationBar.locStrsChanged();
61901
+ if (!!this.navigationBarValue) {
61902
+ this.navigationBar.locStrsChanged();
61903
+ }
61749
61904
  };
61750
61905
  SurveyModel.prototype.getMarkdownHtml = function (text, name) {
61751
61906
  return this.getSurveyMarkdownHtml(this, text, name);
@@ -61938,13 +62093,14 @@ var SurveyModel = /** @class */ (function (_super) {
61938
62093
  });
61939
62094
  Object.defineProperty(SurveyModel.prototype, "hasLogo", {
61940
62095
  get: function () {
61941
- return this.getPropertyValue("hasLogo", false);
62096
+ var _this = this;
62097
+ return this.getPropertyValue("hasLogo", undefined, function () { return !!_this.logo && _this.logoPosition !== "none"; });
61942
62098
  },
61943
62099
  enumerable: false,
61944
62100
  configurable: true
61945
62101
  });
61946
- SurveyModel.prototype.updateHasLogo = function () {
61947
- this.setPropertyValue("hasLogo", !!this.logo && this.logoPosition !== "none");
62102
+ SurveyModel.prototype.resetHasLogo = function () {
62103
+ this.resetPropertyValue("hasLogo");
61948
62104
  };
61949
62105
  Object.defineProperty(SurveyModel.prototype, "isLogoBefore", {
61950
62106
  get: function () {
@@ -61980,6 +62136,14 @@ var SurveyModel = /** @class */ (function (_super) {
61980
62136
  enumerable: false,
61981
62137
  configurable: true
61982
62138
  });
62139
+ Object.defineProperty(SurveyModel.prototype, "titleIsEmpty", {
62140
+ get: function () {
62141
+ var _this = this;
62142
+ return this.getPropertyValue("titleIsEmpty", undefined, function () { return _this.locTitle.isEmpty; });
62143
+ },
62144
+ enumerable: false,
62145
+ configurable: true
62146
+ });
61983
62147
  Object.defineProperty(SurveyModel.prototype, "renderedHasTitle", {
61984
62148
  get: function () {
61985
62149
  if (this.isDesignMode)
@@ -62093,10 +62257,14 @@ var SurveyModel = /** @class */ (function (_super) {
62093
62257
  enumerable: false,
62094
62258
  configurable: true
62095
62259
  });
62096
- SurveyModel.prototype.updateRenderBackgroundImage = function () {
62097
- var path = this.backgroundImage;
62098
- this.renderBackgroundImage = (0,_utils_utils__WEBPACK_IMPORTED_MODULE_13__.wrapUrlForBackgroundImage)(path);
62099
- };
62260
+ Object.defineProperty(SurveyModel.prototype, "renderBackgroundImage", {
62261
+ get: function () {
62262
+ var _this = this;
62263
+ return this.getPropertyValue("renderBackgroundImage", undefined, function () { return (0,_utils_utils__WEBPACK_IMPORTED_MODULE_13__.wrapUrlForBackgroundImage)(_this.backgroundImage); });
62264
+ },
62265
+ enumerable: false,
62266
+ configurable: true
62267
+ });
62100
62268
  Object.defineProperty(SurveyModel.prototype, "backgroundOpacity", {
62101
62269
  /**
62102
62270
  * A value from 0 to 1 that specifies how transparent the [background image](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#backgroundImage) should be: 0 makes the image completely transparent, and 1 makes it opaque.
@@ -62110,8 +62278,16 @@ var SurveyModel = /** @class */ (function (_super) {
62110
62278
  enumerable: false,
62111
62279
  configurable: true
62112
62280
  });
62113
- SurveyModel.prototype.updateBackgroundImageStyle = function () {
62114
- this.backgroundImageStyle = {
62281
+ Object.defineProperty(SurveyModel.prototype, "backgroundImageStyle", {
62282
+ get: function () {
62283
+ var _this = this;
62284
+ return this.getPropertyValue("backgroundImageStyle", undefined, function () { return _this.calcBackgroundImageStyle(); });
62285
+ },
62286
+ enumerable: false,
62287
+ configurable: true
62288
+ });
62289
+ SurveyModel.prototype.calcBackgroundImageStyle = function () {
62290
+ return {
62115
62291
  opacity: this.backgroundOpacity,
62116
62292
  backgroundImage: this.renderBackgroundImage,
62117
62293
  backgroundSize: this.backgroundImageFit,
@@ -62286,6 +62462,10 @@ var SurveyModel = /** @class */ (function (_super) {
62286
62462
  });
62287
62463
  Object.defineProperty(SurveyModel.prototype, "navigationBar", {
62288
62464
  get: function () {
62465
+ if (!this.navigationBarValue) {
62466
+ this.navigationBarValue = this.createNavigationBar();
62467
+ this.updateNavigationCss();
62468
+ }
62289
62469
  return this.navigationBarValue;
62290
62470
  },
62291
62471
  enumerable: false,
@@ -62652,6 +62832,9 @@ var SurveyModel = /** @class */ (function (_super) {
62652
62832
  });
62653
62833
  Object.defineProperty(SurveyModel.prototype, "progressBar", {
62654
62834
  get: function () {
62835
+ if (!this.progressBarValue) {
62836
+ this.progressBarValue = new _progress_buttons__WEBPACK_IMPORTED_MODULE_21__.ProgressButtons(this);
62837
+ }
62655
62838
  return this.progressBarValue;
62656
62839
  },
62657
62840
  enumerable: false,
@@ -63901,19 +64084,6 @@ var SurveyModel = /** @class */ (function (_super) {
63901
64084
  var index = visPages.indexOf(this.currentPage);
63902
64085
  return Math.ceil((index * 100) / visPages.length);
63903
64086
  };
63904
- Object.defineProperty(SurveyModel.prototype, "progressValue", {
63905
- /**
63906
- * Returns a percentage value that indicates user progress in the survey.
63907
- * @see showProgressBar
63908
- * @see progressBarType
63909
- * @see progressText
63910
- */
63911
- get: function () {
63912
- return this.getPropertyValue("progressValue", 0);
63913
- },
63914
- enumerable: false,
63915
- configurable: true
63916
- });
63917
64087
  Object.defineProperty(SurveyModel.prototype, "isNavigationButtonsShowing", {
63918
64088
  get: function () {
63919
64089
  if (this.isDesignMode)
@@ -65286,28 +65456,35 @@ var SurveyModel = /** @class */ (function (_super) {
65286
65456
  * @see progressBarType
65287
65457
  */
65288
65458
  get: function () {
65289
- var res = this.getPropertyValue("progressText", "");
65290
- if (!res) {
65291
- this.updateProgressText();
65292
- res = this.getPropertyValue("progressText", "");
65293
- }
65294
- return res;
65459
+ return this.progressBar.progressText;
65460
+ },
65461
+ enumerable: false,
65462
+ configurable: true
65463
+ });
65464
+ Object.defineProperty(SurveyModel.prototype, "progressValue", {
65465
+ /**
65466
+ * Returns a percentage value that indicates user progress in the survey.
65467
+ * @see showProgressBar
65468
+ * @see progressBarType
65469
+ * @see progressText
65470
+ */
65471
+ get: function () {
65472
+ var _this = this;
65473
+ return this.getPropertyValue("progressValue", undefined, function () { return _this.getProgress(); });
65295
65474
  },
65296
65475
  enumerable: false,
65297
65476
  configurable: true
65298
65477
  });
65299
65478
  SurveyModel.prototype.updateProgressText = function (onValueChanged) {
65300
65479
  if (onValueChanged === void 0) { onValueChanged = false; }
65301
- if (this.isCalculatingProgressText || this.isShowingPreview)
65480
+ if (this.isShowingPreview)
65302
65481
  return;
65303
- if (onValueChanged &&
65304
- this.progressBarType == "pages" &&
65305
- this.onGetProgressText.isEmpty)
65482
+ if (onValueChanged && this.progressBarType == "pages" && this.onGetProgressText.isEmpty)
65306
65483
  return;
65307
- this.isCalculatingProgressText = true;
65308
- this.setPropertyValue("progressText", this.getProgressText());
65309
- this.setPropertyValue("progressValue", this.getProgress());
65310
- this.isCalculatingProgressText = false;
65484
+ if (this.progressBarValue) {
65485
+ this.progressBarValue.resetProgressText();
65486
+ }
65487
+ this.resetPropertyValue("progressValue");
65311
65488
  };
65312
65489
  SurveyModel.prototype.getProgressText = function () {
65313
65490
  if (!this.isDesignMode && this.currentPage == null)
@@ -66655,27 +66832,21 @@ var SurveyModel = /** @class */ (function (_super) {
66655
66832
  this.notifyElementsOnAnyValueOrVariableChanged("");
66656
66833
  this.isEndLoadingFromJson = null;
66657
66834
  this.updateVisibleIndexes();
66658
- this.updateHasLogo();
66659
- this.updateRenderBackgroundImage();
66660
66835
  this.updateCurrentPage();
66661
- this.hasDescription = !!this.description;
66662
- this.titleIsEmpty = this.locTitle.isEmpty;
66663
66836
  this.setCalculatedWidthModeUpdater();
66664
66837
  };
66665
66838
  SurveyModel.prototype.updateNavigationCss = function () {
66666
- if (!!this.navigationBar) {
66667
- this.updateNavigationBarCss();
66839
+ var val = this.navigationBarValue;
66840
+ if (!!val) {
66841
+ val.cssClasses = this.css.actionBar;
66842
+ val.containerCss = this.css.footer;
66668
66843
  !!this.updateNavigationItemCssCallback && this.updateNavigationItemCssCallback();
66669
66844
  }
66670
66845
  };
66671
- SurveyModel.prototype.updateNavigationBarCss = function () {
66672
- var val = this.navigationBar;
66673
- val.cssClasses = this.css.actionBar;
66674
- val.containerCss = this.css.footer;
66675
- };
66676
66846
  SurveyModel.prototype.createNavigationBar = function () {
66677
66847
  var res = new _actions_container__WEBPACK_IMPORTED_MODULE_15__.ActionContainer();
66678
66848
  res.setItems(this.createNavigationActions());
66849
+ res.locOwner = this;
66679
66850
  return res;
66680
66851
  };
66681
66852
  SurveyModel.prototype.createNavigationActions = function () {
@@ -68236,7 +68407,7 @@ var SurveyModel = /** @class */ (function (_super) {
68236
68407
  return layoutElement;
68237
68408
  };
68238
68409
  SurveyModel.prototype.getContainerContent = function (container) {
68239
- var containerLayoutElements = [];
68410
+ var containerLayoutElements = new Array();
68240
68411
  for (var _i = 0, _a = this.layoutElements; _i < _a.length; _i++) {
68241
68412
  var layoutElement = _a[_i];
68242
68413
  if (this.mode !== "display" && isStrCiEqual(layoutElement.id, "timerpanel")) {
@@ -68319,6 +68490,11 @@ var SurveyModel = /** @class */ (function (_super) {
68319
68490
  }
68320
68491
  }
68321
68492
  containerLayoutElements.sort(function (a, b) { return (a.index || 0) - (b.index || 0); });
68493
+ containerLayoutElements.forEach(function (el) {
68494
+ if (!!el.getData) {
68495
+ el.data = el.getData();
68496
+ }
68497
+ });
68322
68498
  return containerLayoutElements;
68323
68499
  };
68324
68500
  SurveyModel.prototype.processPopupVisiblityChanged = function (question, popup, visible) {
@@ -68494,9 +68670,6 @@ var SurveyModel = /** @class */ (function (_super) {
68494
68670
  __decorate([
68495
68671
  (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)()
68496
68672
  ], SurveyModel.prototype, "lazyRenderFirstBatchSizeValue", void 0);
68497
- __decorate([
68498
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)({ defaultValue: true })
68499
- ], SurveyModel.prototype, "titleIsEmpty", void 0);
68500
68673
  __decorate([
68501
68674
  (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)({ defaultValue: {} })
68502
68675
  ], SurveyModel.prototype, "cssVariables", void 0);
@@ -68513,9 +68686,6 @@ var SurveyModel = /** @class */ (function (_super) {
68513
68686
  }
68514
68687
  })
68515
68688
  ], SurveyModel.prototype, "backgroundImage", void 0);
68516
- __decorate([
68517
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)()
68518
- ], SurveyModel.prototype, "renderBackgroundImage", void 0);
68519
68689
  __decorate([
68520
68690
  (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)()
68521
68691
  ], SurveyModel.prototype, "backgroundImageFit", void 0);
@@ -68526,9 +68696,6 @@ var SurveyModel = /** @class */ (function (_super) {
68526
68696
  }
68527
68697
  })
68528
68698
  ], SurveyModel.prototype, "backgroundImageAttachment", void 0);
68529
- __decorate([
68530
- (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)()
68531
- ], SurveyModel.prototype, "backgroundImageStyle", void 0);
68532
68699
  __decorate([
68533
68700
  (0,_jsonobject__WEBPACK_IMPORTED_MODULE_1__.property)()
68534
68701
  ], SurveyModel.prototype, "wrapperFormCss", void 0);
@@ -69727,6 +69894,12 @@ var SvgIconRegistry = /** @class */ (function () {
69727
69894
  }
69728
69895
  this.updateMarkup();
69729
69896
  };
69897
+ SvgIconRegistry.prototype.registerIcon = function (id, svg, iconSetVersion) {
69898
+ var _a;
69899
+ if (iconSetVersion === void 0) { iconSetVersion = "v2"; }
69900
+ this.registerIconFromSvg(id, svg);
69901
+ addIconsToThemeSet(iconSetVersion, (_a = {}, _a[id] = svg, _a));
69902
+ };
69730
69903
  SvgIconRegistry.prototype.iconsRenderedHtml = function () {
69731
69904
  var _this = this;
69732
69905
  return Object.keys(this.icons).map(function (icon) { return _this.icons[icon]; }).join("");