survey-core 1.12.22 → 1.12.24

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 (233) hide show
  1. package/defaultV2.css +51 -5
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +51 -5
  4. package/defaultV2.fontless.css.map +1 -1
  5. package/defaultV2.fontless.min.css +2 -2
  6. package/defaultV2.min.css +2 -2
  7. package/i18n/arabic.js +1 -1
  8. package/i18n/arabic.min.js +1 -1
  9. package/i18n/basque.js +1 -1
  10. package/i18n/basque.min.js +1 -1
  11. package/i18n/bulgarian.js +1 -1
  12. package/i18n/bulgarian.min.js +1 -1
  13. package/i18n/burmese.js +1 -1
  14. package/i18n/burmese.min.js +1 -1
  15. package/i18n/catalan.js +1 -1
  16. package/i18n/catalan.min.js +1 -1
  17. package/i18n/croatian.js +1 -1
  18. package/i18n/croatian.min.js +1 -1
  19. package/i18n/czech.js +1 -1
  20. package/i18n/czech.min.js +1 -1
  21. package/i18n/danish.js +1 -1
  22. package/i18n/danish.min.js +1 -1
  23. package/i18n/dutch.js +1 -1
  24. package/i18n/dutch.min.js +1 -1
  25. package/i18n/english.js +1 -1
  26. package/i18n/english.min.js +2 -2
  27. package/i18n/estonian.js +1 -1
  28. package/i18n/estonian.min.js +1 -1
  29. package/i18n/finnish.js +1 -1
  30. package/i18n/finnish.min.js +1 -1
  31. package/i18n/french.js +1 -1
  32. package/i18n/french.min.js +1 -1
  33. package/i18n/georgian.js +1 -1
  34. package/i18n/georgian.min.js +1 -1
  35. package/i18n/german.js +1 -1
  36. package/i18n/german.min.js +1 -1
  37. package/i18n/greek.js +1 -1
  38. package/i18n/greek.min.js +1 -1
  39. package/i18n/hebrew.js +1 -1
  40. package/i18n/hebrew.min.js +1 -1
  41. package/i18n/hindi.js +1 -1
  42. package/i18n/hindi.min.js +1 -1
  43. package/i18n/hungarian.js +1 -1
  44. package/i18n/hungarian.min.js +1 -1
  45. package/i18n/icelandic.js +1 -1
  46. package/i18n/icelandic.min.js +1 -1
  47. package/i18n/index.js +135 -1
  48. package/i18n/index.js.map +1 -1
  49. package/i18n/index.min.js +2 -2
  50. package/i18n/indonesian.js +1 -1
  51. package/i18n/indonesian.min.js +1 -1
  52. package/i18n/italian.js +1 -1
  53. package/i18n/italian.min.js +1 -1
  54. package/i18n/japanese.js +1 -1
  55. package/i18n/japanese.min.js +1 -1
  56. package/i18n/kazakh.js +1 -1
  57. package/i18n/kazakh.min.js +1 -1
  58. package/i18n/korean.js +1 -1
  59. package/i18n/korean.min.js +1 -1
  60. package/i18n/latvian.js +1 -1
  61. package/i18n/latvian.min.js +1 -1
  62. package/i18n/lithuanian.js +1 -1
  63. package/i18n/lithuanian.min.js +1 -1
  64. package/i18n/macedonian.js +1 -1
  65. package/i18n/macedonian.min.js +1 -1
  66. package/i18n/malay.js +1 -1
  67. package/i18n/malay.min.js +1 -1
  68. package/i18n/nl-BE.js +1 -1
  69. package/i18n/nl-BE.min.js +1 -1
  70. package/i18n/norwegian.js +1 -1
  71. package/i18n/norwegian.min.js +1 -1
  72. package/i18n/persian.js +1 -1
  73. package/i18n/persian.min.js +1 -1
  74. package/i18n/philippines.js +1 -1
  75. package/i18n/philippines.min.js +1 -1
  76. package/i18n/polish.js +1 -1
  77. package/i18n/polish.min.js +1 -1
  78. package/i18n/portuguese-br.js +1 -1
  79. package/i18n/portuguese-br.min.js +1 -1
  80. package/i18n/portuguese.js +1 -1
  81. package/i18n/portuguese.min.js +1 -1
  82. package/i18n/romanian.js +1 -1
  83. package/i18n/romanian.min.js +1 -1
  84. package/i18n/russian.js +1 -1
  85. package/i18n/russian.min.js +1 -1
  86. package/i18n/serbian.js +1 -1
  87. package/i18n/serbian.min.js +1 -1
  88. package/i18n/simplified-chinese.js +1 -1
  89. package/i18n/simplified-chinese.min.js +1 -1
  90. package/i18n/slovak.js +1 -1
  91. package/i18n/slovak.min.js +1 -1
  92. package/i18n/slovenian.js +247 -0
  93. package/i18n/slovenian.js.map +1 -0
  94. package/i18n/slovenian.min.js +6 -0
  95. package/i18n/spanish.js +1 -1
  96. package/i18n/spanish.min.js +1 -1
  97. package/i18n/swahili.js +1 -1
  98. package/i18n/swahili.min.js +1 -1
  99. package/i18n/swedish.js +1 -1
  100. package/i18n/swedish.min.js +1 -1
  101. package/i18n/tajik.js +1 -1
  102. package/i18n/tajik.min.js +1 -1
  103. package/i18n/telugu.js +1 -1
  104. package/i18n/telugu.min.js +1 -1
  105. package/i18n/thai.js +1 -1
  106. package/i18n/thai.min.js +1 -1
  107. package/i18n/traditional-chinese.js +1 -1
  108. package/i18n/traditional-chinese.min.js +1 -1
  109. package/i18n/turkish.js +1 -1
  110. package/i18n/turkish.min.js +1 -1
  111. package/i18n/ukrainian.js +1 -1
  112. package/i18n/ukrainian.min.js +1 -1
  113. package/i18n/urdu.js +1 -1
  114. package/i18n/urdu.min.js +2 -2
  115. package/i18n/vietnamese.js +1 -1
  116. package/i18n/vietnamese.min.js +1 -1
  117. package/i18n/welsh.js +1 -1
  118. package/i18n/welsh.min.js +1 -1
  119. package/icons/iconsV1.js +1 -1
  120. package/icons/iconsV1.min.js +1 -1
  121. package/icons/iconsV2.js +1 -1
  122. package/icons/iconsV2.min.js +1 -1
  123. package/modern.css +1 -1
  124. package/modern.fontless.css +1 -1
  125. package/modern.fontless.min.css +1 -1
  126. package/modern.min.css +1 -1
  127. package/package.json +1 -1
  128. package/plugins/bootstrap-integration/index.js +1 -1
  129. package/plugins/bootstrap-integration/index.min.js +1 -1
  130. package/plugins/bootstrap-material-integration/index.js +1 -1
  131. package/plugins/bootstrap-material-integration/index.min.js +1 -1
  132. package/survey.core.js +144 -119
  133. package/survey.core.js.map +1 -1
  134. package/survey.core.min.js +3 -3
  135. package/survey.css +1 -1
  136. package/survey.i18n.js +135 -1
  137. package/survey.i18n.js.map +1 -1
  138. package/survey.i18n.min.js +2 -2
  139. package/survey.min.css +1 -1
  140. package/themes/borderless-dark-panelless.js +1 -1
  141. package/themes/borderless-dark-panelless.min.js +1 -1
  142. package/themes/borderless-dark.js +1 -1
  143. package/themes/borderless-dark.min.js +1 -1
  144. package/themes/borderless-light-panelless..js +1 -1
  145. package/themes/borderless-light-panelless..min.js +1 -1
  146. package/themes/borderless-light.js +1 -1
  147. package/themes/borderless-light.min.js +1 -1
  148. package/themes/contrast-dark-panelless.js +1 -1
  149. package/themes/contrast-dark-panelless.min.js +1 -1
  150. package/themes/contrast-dark.js +1 -1
  151. package/themes/contrast-dark.min.js +1 -1
  152. package/themes/contrast-light-panelless.js +1 -1
  153. package/themes/contrast-light-panelless.min.js +1 -1
  154. package/themes/contrast-light.js +1 -1
  155. package/themes/contrast-light.min.js +1 -1
  156. package/themes/default-dark-panelless.js +1 -1
  157. package/themes/default-dark-panelless.min.js +1 -1
  158. package/themes/default-dark.js +1 -1
  159. package/themes/default-dark.min.js +1 -1
  160. package/themes/default-light-panelless.js +1 -1
  161. package/themes/default-light-panelless.min.js +1 -1
  162. package/themes/default-light.js +1 -1
  163. package/themes/default-light.min.js +1 -1
  164. package/themes/doubleborder-dark-panelless.js +1 -1
  165. package/themes/doubleborder-dark-panelless.min.js +1 -1
  166. package/themes/doubleborder-dark.js +1 -1
  167. package/themes/doubleborder-dark.min.js +1 -1
  168. package/themes/doubleborder-light-panelles.js +1 -1
  169. package/themes/doubleborder-light-panelles.min.js +1 -1
  170. package/themes/doubleborder-light.js +1 -1
  171. package/themes/doubleborder-light.min.js +1 -1
  172. package/themes/flat-dark-panelless.js +1 -1
  173. package/themes/flat-dark-panelless.min.js +1 -1
  174. package/themes/flat-dark.js +1 -1
  175. package/themes/flat-dark.min.js +1 -1
  176. package/themes/flat-light-panelless.js +1 -1
  177. package/themes/flat-light-panelless.min.js +1 -1
  178. package/themes/flat-light.js +1 -1
  179. package/themes/flat-light.min.js +1 -1
  180. package/themes/index.js +1 -1
  181. package/themes/index.min.js +1 -1
  182. package/themes/layered-dark-panelless.js +1 -1
  183. package/themes/layered-dark-panelless.min.js +1 -1
  184. package/themes/layered-dark.js +1 -1
  185. package/themes/layered-dark.min.js +1 -1
  186. package/themes/layered-light-panelless.js +1 -1
  187. package/themes/layered-light-panelless.min.js +1 -1
  188. package/themes/layered-light.js +1 -1
  189. package/themes/layered-light.min.js +1 -1
  190. package/themes/plain-dark-panelless.js +1 -1
  191. package/themes/plain-dark-panelless.min.js +1 -1
  192. package/themes/plain-dark.js +1 -1
  193. package/themes/plain-dark.min.js +1 -1
  194. package/themes/plain-light-panelless.js +1 -1
  195. package/themes/plain-light-panelless.min.js +1 -1
  196. package/themes/plain-light.js +1 -1
  197. package/themes/plain-light.min.js +1 -1
  198. package/themes/sharp-dark-panelless.js +1 -1
  199. package/themes/sharp-dark-panelless.min.js +1 -1
  200. package/themes/sharp-dark.js +1 -1
  201. package/themes/sharp-dark.min.js +1 -1
  202. package/themes/sharp-light-panelless.js +1 -1
  203. package/themes/sharp-light-panelless.min.js +1 -1
  204. package/themes/sharp-light.js +1 -1
  205. package/themes/sharp-light.min.js +1 -1
  206. package/themes/solid-dark-panelless.js +1 -1
  207. package/themes/solid-dark-panelless.min.js +1 -1
  208. package/themes/solid-dark.js +1 -1
  209. package/themes/solid-dark.min.js +1 -1
  210. package/themes/solid-light-panelless.js +1 -1
  211. package/themes/solid-light-panelless.min.js +1 -1
  212. package/themes/solid-light.js +1 -1
  213. package/themes/solid-light.min.js +1 -1
  214. package/themes/three-dimensional-dark-panelless.js +1 -1
  215. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  216. package/themes/three-dimensional-dark.js +1 -1
  217. package/themes/three-dimensional-dark.min.js +1 -1
  218. package/themes/three-dimensional-light-panelless.js +1 -1
  219. package/themes/three-dimensional-light-panelless.min.js +1 -1
  220. package/themes/three-dimensional-light.js +1 -1
  221. package/themes/three-dimensional-light.min.js +1 -1
  222. package/ts3.4/typings/packages/survey-core/src/base-interfaces.d.ts +1 -0
  223. package/ts3.4/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +2 -0
  224. package/ts3.4/typings/packages/survey-core/src/localizablestring.d.ts +1 -1
  225. package/ts3.4/typings/packages/survey-core/src/question_baseselect.d.ts +1 -0
  226. package/ts3.4/typings/packages/survey-core/src/question_paneldynamic.d.ts +14 -6
  227. package/ts3.4/typings/packages/survey-core/src/textPreProcessor.d.ts +4 -2
  228. package/typings/packages/survey-core/src/base-interfaces.d.ts +1 -0
  229. package/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +2 -0
  230. package/typings/packages/survey-core/src/localizablestring.d.ts +1 -1
  231. package/typings/packages/survey-core/src/question_baseselect.d.ts +1 -0
  232. package/typings/packages/survey-core/src/question_paneldynamic.d.ts +14 -6
  233. package/typings/packages/survey-core/src/textPreProcessor.d.ts +4 -2
package/survey.core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.12.22
2
+ * surveyjs - Survey JavaScript library v1.12.24
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
  */
@@ -2753,12 +2753,14 @@ var JsonMetadata = /** @class */ (function () {
2753
2753
  return;
2754
2754
  var schemaProperties = classSchema.properties;
2755
2755
  var requiredProps = [];
2756
- if (classInfo.name === "question" || classInfo.name === "panel") {
2756
+ if (classInfo.name === "question") {
2757
2757
  schemaProperties.type = { type: "string" };
2758
2758
  requiredProps.push("type");
2759
2759
  }
2760
2760
  for (var i = 0; i < classInfo.properties.length; i++) {
2761
2761
  var prop = classInfo.properties[i];
2762
+ if (prop.isSerializable === false)
2763
+ continue;
2762
2764
  if (!!classInfo.parentName && !!Serializer.findProperty(classInfo.parentName, prop.name))
2763
2765
  continue;
2764
2766
  schemaProperties[prop.name] = this.generateSchemaProperty(prop, schemaDef, isRoot);
@@ -10965,9 +10967,6 @@ var action_BaseAction = /** @class */ (function (_super) {
10965
10967
  action_decorate([
10966
10968
  jsonobject_property()
10967
10969
  ], BaseAction.prototype, "pressed", void 0);
10968
- action_decorate([
10969
- jsonobject_property()
10970
- ], BaseAction.prototype, "data", void 0);
10971
10970
  action_decorate([
10972
10971
  jsonobject_property()
10973
10972
  ], BaseAction.prototype, "popupModel", void 0);
@@ -12427,7 +12426,7 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
12427
12426
  },
12428
12427
  set: function (val) {
12429
12428
  this.setPropertyValue("state", val);
12430
- this.renderedIsExpanded = !(this.state === "collapsed" && !this.isDesignMode);
12429
+ this.renderedIsExpanded = !this.isCollapsed;
12431
12430
  },
12432
12431
  enumerable: false,
12433
12432
  configurable: true
@@ -12629,6 +12628,9 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
12629
12628
  this.updateDescriptionVisibility(this.description);
12630
12629
  this.clearCssClasses();
12631
12630
  }
12631
+ this.blockAnimations();
12632
+ this.renderedIsExpanded = !this.isCollapsed;
12633
+ this.releaseAnimations();
12632
12634
  };
12633
12635
  SurveyElement.prototype.canRunConditions = function () {
12634
12636
  return _super.prototype.canRunConditions.call(this) && !!this.data;
@@ -13721,15 +13723,13 @@ var localizablestring_LocalizableString = /** @class */ (function () {
13721
13723
  configurable: true
13722
13724
  });
13723
13725
  LocalizableString.prototype.calcText = function () {
13724
- var res = this.pureText;
13725
- if (res &&
13726
- this.owner &&
13727
- this.owner.getProcessedText &&
13728
- res.indexOf("{") > -1) {
13726
+ var pureText = this.pureText;
13727
+ var res = pureText;
13728
+ if (res && this.owner && this.owner.getProcessedText && res.indexOf("{") > -1) {
13729
13729
  res = this.owner.getProcessedText(res);
13730
13730
  }
13731
13731
  if (this.onGetTextCallback)
13732
- res = this.onGetTextCallback(res);
13732
+ res = this.onGetTextCallback(res, pureText);
13733
13733
  return res;
13734
13734
  };
13735
13735
  Object.defineProperty(LocalizableString.prototype, "pureText", {
@@ -17350,8 +17350,8 @@ var question_Question = /** @class */ (function (_super) {
17350
17350
  var _this = this;
17351
17351
  var locTitleValue = _super.prototype.createLocTitleProperty.call(this);
17352
17352
  locTitleValue.storeDefaultText = true;
17353
- locTitleValue.onGetTextCallback = function (text) {
17354
- if (!text) {
17353
+ locTitleValue.onGetTextCallback = function (text, nonProcessedText) {
17354
+ if (!text && !nonProcessedText) {
17355
17355
  text = _this.getDefaultTitle();
17356
17356
  }
17357
17357
  if (!_this.survey)
@@ -19722,8 +19722,10 @@ var question_Question = /** @class */ (function (_super) {
19722
19722
  }
19723
19723
  if (!values)
19724
19724
  values = this.defaultValueExpression ? this.data.getFilteredValues() : {};
19725
- if (!properties)
19725
+ if (!properties) {
19726
19726
  properties = this.defaultValueExpression ? this.data.getFilteredProperties() : {};
19727
+ properties["question"] = this;
19728
+ }
19727
19729
  if (!!runner && runner.canRun) {
19728
19730
  runner.onRunComplete = function (res) {
19729
19731
  if (res == undefined)
@@ -20799,9 +20801,6 @@ var itemvalue_ItemValue = /** @class */ (function (_super) {
20799
20801
  _this.ownerPropertyName = "";
20800
20802
  _this.locTextValue = new localizablestring_LocalizableString(_this, true, "text");
20801
20803
  _this.locTextValue.onStrChanged = function (oldValue, newValue) {
20802
- if (newValue == _this.value) {
20803
- newValue = undefined;
20804
- }
20805
20804
  _this.propertyValueChanged("text", oldValue, newValue);
20806
20805
  };
20807
20806
  _this.locTextValue.onGetTextCallback = function (txt) {
@@ -22816,9 +22815,7 @@ var textPreProcessor_TextPreProcessor = /** @class */ (function () {
22816
22815
  enumerable: false,
22817
22816
  configurable: true
22818
22817
  });
22819
- TextPreProcessor.prototype.process = function (text, returnDisplayValue, doEncoding) {
22820
- if (returnDisplayValue === void 0) { returnDisplayValue = false; }
22821
- if (doEncoding === void 0) { doEncoding = false; }
22818
+ TextPreProcessor.prototype.process = function (text, returnDisplayValue, doEncoding, replaceUndefinedValues) {
22822
22819
  this.hasAllValuesOnLastRunValue = true;
22823
22820
  if (!text)
22824
22821
  return text;
@@ -22827,28 +22824,28 @@ var textPreProcessor_TextPreProcessor = /** @class */ (function () {
22827
22824
  var items = this.getItems(text);
22828
22825
  for (var i = items.length - 1; i >= 0; i--) {
22829
22826
  var item = items[i];
22830
- var name = this.getName(text.substring(item.start + 1, item.end));
22831
- if (!name)
22832
- continue;
22833
- var textValue = new TextPreProcessorValue(name, returnDisplayValue);
22834
- this.onProcess(textValue);
22835
- if (!textValue.isExists) {
22836
- if (textValue.canProcess) {
22837
- this.hasAllValuesOnLastRunValue = false;
22827
+ var name_1 = this.getName(text.substring(item.start + 1, item.end));
22828
+ if (!!name_1) {
22829
+ var textValue = new TextPreProcessorValue(name_1, returnDisplayValue === true);
22830
+ this.onProcess(textValue);
22831
+ if (!textValue.isExists) {
22832
+ if (textValue.canProcess) {
22833
+ this.hasAllValuesOnLastRunValue = false;
22834
+ }
22835
+ }
22836
+ if (textValue.isExists || replaceUndefinedValues) {
22837
+ if (helpers_Helpers.isValueEmpty(textValue.value)) {
22838
+ this.hasAllValuesOnLastRunValue = false;
22839
+ }
22840
+ var replacedValue = !helpers_Helpers.isValueEmpty(textValue.value)
22841
+ ? textValue.value
22842
+ : "";
22843
+ if (doEncoding) {
22844
+ replacedValue = encodeURIComponent(replacedValue);
22845
+ }
22846
+ text = text.substring(0, item.start) + replacedValue + text.substring(item.end + 1);
22838
22847
  }
22839
- continue;
22840
- }
22841
- if (helpers_Helpers.isValueEmpty(textValue.value)) {
22842
- this.hasAllValuesOnLastRunValue = false;
22843
- }
22844
- var replacedValue = !helpers_Helpers.isValueEmpty(textValue.value)
22845
- ? textValue.value
22846
- : "";
22847
- if (doEncoding) {
22848
- replacedValue = encodeURIComponent(replacedValue);
22849
22848
  }
22850
- text =
22851
- text.substring(0, item.start) + replacedValue + text.substring(item.end + 1);
22852
22849
  }
22853
22850
  return text;
22854
22851
  };
@@ -22860,12 +22857,19 @@ var textPreProcessor_TextPreProcessor = /** @class */ (function () {
22860
22857
  return textValue;
22861
22858
  };
22862
22859
  Object.defineProperty(TextPreProcessor.prototype, "hasAllValuesOnLastRun", {
22863
- get: function () {
22864
- return !!this.hasAllValuesOnLastRunValue;
22865
- },
22860
+ get: function () { return !!this.hasAllValuesOnLastRunValue; },
22866
22861
  enumerable: false,
22867
22862
  configurable: true
22868
22863
  });
22864
+ TextPreProcessor.prototype.processText = function (text, returnDisplayValue) {
22865
+ return this.process(text, returnDisplayValue);
22866
+ };
22867
+ TextPreProcessor.prototype.processTextEx = function (params) {
22868
+ var res = { hasAllValuesOnLastRun: true, text: params.text };
22869
+ res.text = this.process(params.text, params.returnDisplayValue, params.doEncoding, params.replaceUndefinedValues);
22870
+ res.hasAllValuesOnLastRun = this.hasAllValuesOnLastRun;
22871
+ return res;
22872
+ };
22869
22873
  TextPreProcessor.prototype.getItems = function (text) {
22870
22874
  var items = [];
22871
22875
  var length = text.length;
@@ -22971,27 +22975,31 @@ var textPreProcessor_QuestionTextProcessor = /** @class */ (function () {
22971
22975
  textValue.value = new conditionProcessValue_ProcessValue().getValue(textValue.name, values);
22972
22976
  };
22973
22977
  QuestionTextProcessor.prototype.processText = function (text, returnDisplayValue) {
22974
- if (this.survey && this.survey.isDesignMode)
22975
- return text;
22976
- text = this.textPreProcessor.process(text, returnDisplayValue);
22977
- text = this.processTextCore(this.getParentTextProcessor(), text, returnDisplayValue);
22978
- return this.processTextCore(this.survey, text, returnDisplayValue);
22978
+ var params = { text: text, returnDisplayValue: returnDisplayValue };
22979
+ return this.processTextEx(params).text;
22979
22980
  };
22980
22981
  QuestionTextProcessor.prototype.processTextEx = function (params) {
22981
- params.text = this.processText(params.text, params.returnDisplayValue);
22982
- var hasAllValuesOnLastRun = this.textPreProcessor.hasAllValuesOnLastRun;
22982
+ var _a;
22983
22983
  var res = { hasAllValuesOnLastRun: true, text: params.text };
22984
- if (this.survey) {
22985
- res = this.survey.processTextEx(params);
22984
+ if (!params.runAtDesign && ((_a = this.survey) === null || _a === void 0 ? void 0 : _a.isDesignMode))
22985
+ return res;
22986
+ var processors = new Array();
22987
+ this.addTextPreProcessor(processors, this.textPreProcessor);
22988
+ this.addTextPreProcessor(processors, this.getParentTextProcessor());
22989
+ this.addTextPreProcessor(processors, this.survey);
22990
+ for (var i = 0; i < processors.length; i++) {
22991
+ var processor = processors[i];
22992
+ params.text = res.text;
22993
+ var processorRes = processor.processTextEx(params);
22994
+ res.text = processorRes.text;
22995
+ res.hasAllValuesOnLastRun = res.hasAllValuesOnLastRun && processorRes.hasAllValuesOnLastRun;
22986
22996
  }
22987
- res.hasAllValuesOnLastRun =
22988
- res.hasAllValuesOnLastRun && hasAllValuesOnLastRun;
22989
22997
  return res;
22990
22998
  };
22991
- QuestionTextProcessor.prototype.processTextCore = function (textProcessor, text, returnDisplayValue) {
22992
- if (!textProcessor)
22993
- return text;
22994
- return textProcessor.processText(text, returnDisplayValue);
22999
+ QuestionTextProcessor.prototype.addTextPreProcessor = function (list, textProcessor) {
23000
+ if (!textProcessor || list.indexOf(textProcessor) > -1)
23001
+ return;
23002
+ list.push(textProcessor);
22995
23003
  };
22996
23004
  return QuestionTextProcessor;
22997
23005
  }());
@@ -23925,9 +23933,10 @@ var question_custom_QuestionCompositeModel = /** @class */ (function (_super) {
23925
23933
  }
23926
23934
  this.initElement(res);
23927
23935
  res.readOnly = this.isReadOnly;
23928
- res.questions.forEach(function (q) { return q.onUpdateCssClassesCallback = function (css) {
23929
- _this.onUpdateQuestionCssClasses(q, css);
23930
- }; });
23936
+ res.questions.forEach(function (q) {
23937
+ q.setParentQuestion(_this);
23938
+ q.onUpdateCssClassesCallback = function (css) { _this.onUpdateQuestionCssClasses(q, css); };
23939
+ });
23931
23940
  this.setAfterRenderCallbacks(res);
23932
23941
  return res;
23933
23942
  };
@@ -26896,11 +26905,10 @@ var question_matrixdropdownrendered_QuestionMatrixDropdownRenderedTable = /** @c
26896
26905
  if (this.matrix.isMobile) {
26897
26906
  actions.unshift(new action_Action({
26898
26907
  id: "show-detail-mobile",
26899
- title: "Show Details",
26908
+ title: new ComputedUpdater(function () { return row.isDetailPanelShowing ? _this.matrix.getLocalizationString("hideDetails") : _this.matrix.getLocalizationString("showDetails"); }),
26900
26909
  showTitle: true,
26901
26910
  location: "end",
26902
26911
  action: function (context) {
26903
- context.title = row.isDetailPanelShowing ? _this.matrix.getLocalizationString("showDetails") : _this.matrix.getLocalizationString("hideDetails");
26904
26912
  row.showHideDetailPanelClick();
26905
26913
  },
26906
26914
  }));
@@ -29232,8 +29240,11 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
29232
29240
  var rows = this.generatedVisibleRows;
29233
29241
  if (rowIndex >= rows.length)
29234
29242
  return null;
29235
- var newValue = this.createNewValue();
29236
- return this.getRowValueCore(rows[rowIndex], newValue);
29243
+ var val = this.value;
29244
+ var rowVal = this.getRowValueCore(rows[rowIndex], val);
29245
+ if (this.isValueSurveyElement(val))
29246
+ return rowVal;
29247
+ return helpers_Helpers.getUnbindValue(rowVal);
29237
29248
  };
29238
29249
  QuestionMatrixDropdownModelBase.prototype.checkIfValueInRowDuplicated = function (checkedRow, cellQuestion) {
29239
29250
  if (!this.generatedVisibleRows)
@@ -32578,6 +32589,8 @@ var defaultV2Css = {
32578
32589
  progressBtnIcon: "icon-progressbuttonv2",
32579
32590
  noEntriesPlaceholder: "sd-paneldynamic__placeholder sd-question__placeholder",
32580
32591
  compact: "sd-element--with-frame sd-element--compact",
32592
+ tabsContainer: "sd-paneldynamic__tabs-container",
32593
+ tabsContainerWithHeader: "sd-paneldynamic__tabs-container--with-header",
32581
32594
  tabsRoot: "sd-tabs-toolbar",
32582
32595
  tabsLeft: "sd-tabs-toolbar--left",
32583
32596
  tabsRight: "sd-tabs-toolbar--right",
@@ -36492,7 +36505,8 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36492
36505
  return false;
36493
36506
  };
36494
36507
  PanelModelBase.prototype.getIsPageVisible = function (exceptionQuestion) {
36495
- return this.visible && this.getIsContentVisible(exceptionQuestion);
36508
+ var isContentVisible = this.getIsContentVisible(exceptionQuestion);
36509
+ return this.visible && isContentVisible;
36496
36510
  };
36497
36511
  PanelModelBase.prototype.setVisibleIndex = function (index) {
36498
36512
  if (!this.isVisible || index < 0) {
@@ -46352,7 +46366,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
46352
46366
  var doEncoding = params.doEncoding === undefined ? settings.web.encodeUrlParams : params.doEncoding;
46353
46367
  var text = params.text;
46354
46368
  if (params.runAtDesign || !this.isDesignMode) {
46355
- text = this.textPreProcessor.process(text, params.returnDisplayValue === true, doEncoding);
46369
+ text = this.textPreProcessor.process(text, params.returnDisplayValue === true, doEncoding, params.replaceUndefinedValues);
46356
46370
  }
46357
46371
  var res = { text: text, hasAllValuesOnLastRun: true };
46358
46372
  res.hasAllValuesOnLastRun = this.textPreProcessor.hasAllValuesOnLastRun;
@@ -47980,6 +47994,14 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
47980
47994
  res.text = text;
47981
47995
  return res;
47982
47996
  };
47997
+ QuestionSelectBase.prototype.hasErrors = function (fireCallback, rec) {
47998
+ if (fireCallback === void 0) { fireCallback = true; }
47999
+ if (rec === void 0) { rec = null; }
48000
+ if (!rec || rec.isOnValueChanged !== true) {
48001
+ this.clearIncorrectValues();
48002
+ }
48003
+ return _super.prototype.hasErrors.call(this, fireCallback, rec);
48004
+ };
47983
48005
  Object.defineProperty(QuestionSelectBase.prototype, "isUsingCarryForward", {
47984
48006
  get: function () {
47985
48007
  return !!this.carryForwardQuestionType;
@@ -58353,7 +58375,7 @@ var question_ranking_QuestionRankingModel = /** @class */ (function (_super) {
58353
58375
  }
58354
58376
  };
58355
58377
  _this.startDrag = function (event) {
58356
- var choice = itemvalue_ItemValue.getItemByValue(_this.activeChoices, _this.draggedChoiceValue);
58378
+ var choice = itemvalue_ItemValue.getItemByValue(_this.visibleChoices, _this.draggedChoiceValue);
58357
58379
  _this.dragDropRankingChoices.startDrag(event, choice, _this, _this.draggedTargetNode);
58358
58380
  };
58359
58381
  _this.handlePointerUp = function (event, choice, node) {
@@ -65161,6 +65183,13 @@ var QuestionPanelDynamicItemTextProcessor = /** @class */ (function (_super) {
65161
65183
  };
65162
65184
  return QuestionPanelDynamicItemTextProcessor;
65163
65185
  }(textPreProcessor_QuestionTextProcessor));
65186
+ var PanelDynamicTabbedMenuItem = /** @class */ (function (_super) {
65187
+ question_paneldynamic_extends(PanelDynamicTabbedMenuItem, _super);
65188
+ function PanelDynamicTabbedMenuItem(innerItem) {
65189
+ return _super.call(this, innerItem) || this;
65190
+ }
65191
+ return PanelDynamicTabbedMenuItem;
65192
+ }(action_Action));
65164
65193
  var question_paneldynamic_QuestionPanelDynamicItem = /** @class */ (function () {
65165
65194
  function QuestionPanelDynamicItem(data, panel) {
65166
65195
  this.data = data;
@@ -66544,7 +66573,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66544
66573
  set: function (val) {
66545
66574
  this.setPropertyValue("tabAlign", val);
66546
66575
  if (this.isRenderModeTab) {
66547
- this.additionalTitleToolbar.containerCss = this.getAdditionalTitleToolbarCss();
66576
+ this.tabbedMenu.containerCss = this.getTabbedMenuCss();
66548
66577
  }
66549
66578
  },
66550
66579
  enumerable: false,
@@ -66564,18 +66593,6 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66564
66593
  enumerable: false,
66565
66594
  configurable: true
66566
66595
  });
66567
- Object.defineProperty(QuestionPanelDynamicModel.prototype, "hasTitleOnLeftTop", {
66568
- get: function () {
66569
- if (this.isRenderModeTab && this.visiblePanelCount > 0)
66570
- return true;
66571
- if (!this.hasTitle)
66572
- return false;
66573
- var location = this.getTitleLocation();
66574
- return location === "left" || location === "top";
66575
- },
66576
- enumerable: false,
66577
- configurable: true
66578
- });
66579
66596
  QuestionPanelDynamicModel.prototype.setVisibleIndex = function (value) {
66580
66597
  if (!this.isVisible)
66581
66598
  return 0;
@@ -66962,8 +66979,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66962
66979
  for (var i = 0; i < panels.length; i++) {
66963
66980
  panels[i].locStrsChanged();
66964
66981
  }
66965
- if (this.additionalTitleToolbar) {
66966
- this.additionalTitleToolbar.locStrsChanged();
66982
+ if (this.tabbedMenu) {
66983
+ this.tabbedMenu.locStrsChanged();
66967
66984
  }
66968
66985
  };
66969
66986
  QuestionPanelDynamicModel.prototype.clearIncorrectValues = function () {
@@ -67699,14 +67716,16 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67699
67716
  get: function () {
67700
67717
  var showTab = this.isRenderModeTab && !!this.visiblePanelCount;
67701
67718
  return new CssClassBuilder()
67702
- .append(this.cssClasses.header)
67703
- .append(this.cssClasses.headerTop, this.hasTitleOnTop || showTab)
67704
- .append(this.cssClasses.headerTab, showTab)
67719
+ .append(_super.prototype.getCssHeader.call(this, this.cssClasses))
67720
+ .append(this.cssClasses.headerTab, this.hasTitleOnTop && showTab)
67705
67721
  .toString();
67706
67722
  },
67707
67723
  enumerable: false,
67708
67724
  configurable: true
67709
67725
  });
67726
+ QuestionPanelDynamicModel.prototype.getTabsContainerCss = function () {
67727
+ return new CssClassBuilder().append(this.cssClasses.tabsContainer).append(this.cssClasses.tabsContainerWithHeader, this.hasTitleOnTop).toString();
67728
+ };
67710
67729
  QuestionPanelDynamicModel.prototype.getPanelWrapperCss = function (panel) {
67711
67730
  return new CssClassBuilder()
67712
67731
  .append(this.cssClasses.panelWrapper, !panel || panel.visible)
@@ -67769,25 +67788,29 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67769
67788
  return true;
67770
67789
  return false;
67771
67790
  };
67772
- Object.defineProperty(QuestionPanelDynamicModel.prototype, "hasAdditionalTitleToolbar", {
67791
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "hasTabbedMenu", {
67773
67792
  get: function () {
67774
67793
  return this.isRenderModeTab && this.visiblePanels.length > 0;
67775
67794
  },
67776
67795
  enumerable: false,
67777
67796
  configurable: true
67778
67797
  });
67779
- QuestionPanelDynamicModel.prototype.getAdditionalTitleToolbar = function () {
67780
- if (!this.isRenderModeTab)
67781
- return null;
67782
- if (!this.additionalTitleToolbarValue) {
67783
- this.additionalTitleToolbarValue = new adaptive_container_AdaptiveActionContainer();
67784
- this.additionalTitleToolbarValue.dotsItem.popupModel.showPointer = false;
67785
- this.additionalTitleToolbarValue.dotsItem.popupModel.verticalPosition = "bottom";
67786
- this.additionalTitleToolbarValue.dotsItem.popupModel.horizontalPosition = "center";
67787
- this.updateElementCss(false);
67788
- }
67789
- return this.additionalTitleToolbarValue;
67790
- };
67798
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "tabbedMenu", {
67799
+ get: function () {
67800
+ if (!this.isRenderModeTab)
67801
+ return null;
67802
+ if (!this.tabbedMenuValue) {
67803
+ this.tabbedMenuValue = new adaptive_container_AdaptiveActionContainer();
67804
+ this.tabbedMenuValue.dotsItem.popupModel.showPointer = false;
67805
+ this.tabbedMenuValue.dotsItem.popupModel.verticalPosition = "bottom";
67806
+ this.tabbedMenuValue.dotsItem.popupModel.horizontalPosition = "center";
67807
+ this.updateElementCss(false);
67808
+ }
67809
+ return this.tabbedMenuValue;
67810
+ },
67811
+ enumerable: false,
67812
+ configurable: true
67813
+ });
67791
67814
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "footerToolbar", {
67792
67815
  get: function () {
67793
67816
  if (!this.footerToolbarValue) {
@@ -67882,19 +67905,21 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67882
67905
  return options.title;
67883
67906
  };
67884
67907
  locTitle.sharedData = this.locTemplateTabTitle;
67885
- var isActive = this.getPanelVisibleIndexById(panel.id) === this.currentIndex;
67886
- var newItem = new action_Action({
67887
- id: panel.id,
67908
+ var panelId = panel.id;
67909
+ var isActive = this.getPanelVisibleIndexById(panelId) === this.currentIndex;
67910
+ var newItem = new PanelDynamicTabbedMenuItem({
67911
+ id: this.id + "_tab_" + panelId,
67912
+ panelId: panelId,
67888
67913
  pressed: isActive,
67889
67914
  locTitle: locTitle,
67890
67915
  disableHide: isActive,
67891
67916
  action: function () {
67892
- _this.currentIndex = _this.getPanelVisibleIndexById(newItem.id);
67917
+ _this.currentIndex = _this.getPanelVisibleIndexById(panelId);
67893
67918
  }
67894
67919
  });
67895
67920
  return newItem;
67896
67921
  };
67897
- QuestionPanelDynamicModel.prototype.getAdditionalTitleToolbarCss = function (cssClasses) {
67922
+ QuestionPanelDynamicModel.prototype.getTabbedMenuCss = function (cssClasses) {
67898
67923
  var css = cssClasses !== null && cssClasses !== void 0 ? cssClasses : this.cssClasses;
67899
67924
  return new CssClassBuilder()
67900
67925
  .append(css.tabsRoot)
@@ -67909,8 +67934,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67909
67934
  if (this.currentIndex < 0 || this.currentIndex >= this.visiblePanelCount)
67910
67935
  return;
67911
67936
  var panel = this.visiblePanelsCore[this.currentIndex];
67912
- this.additionalTitleToolbar.renderedActions.forEach(function (action) {
67913
- var isActive = action.id === panel.id;
67937
+ this.tabbedMenu.renderedActions.forEach(function (action) {
67938
+ var isActive = action.panelId === panel.id;
67914
67939
  action.pressed = isActive;
67915
67940
  action.disableHide = isActive;
67916
67941
  //should raise update if dimensions are not changed but action is active now
@@ -67932,22 +67957,22 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67932
67957
  for (var i = 0; i < visPanels.length; i++) {
67933
67958
  _loop_1(i);
67934
67959
  }
67935
- this.additionalTitleToolbar.setItems(items);
67960
+ this.tabbedMenu.setItems(items);
67936
67961
  };
67937
67962
  QuestionPanelDynamicModel.prototype.addTabFromToolbar = function (panel, index) {
67938
67963
  if (!this.isRenderModeTab)
67939
67964
  return;
67940
67965
  var newItem = this.createTabByPanel(panel, index);
67941
- this.additionalTitleToolbar.actions.splice(index, 0, newItem);
67966
+ this.tabbedMenu.actions.splice(index, 0, newItem);
67942
67967
  this.updateTabToolbarItemsPressedState();
67943
67968
  };
67944
67969
  QuestionPanelDynamicModel.prototype.removeTabFromToolbar = function (panel) {
67945
67970
  if (!this.isRenderModeTab)
67946
67971
  return;
67947
- var removedItem = this.additionalTitleToolbar.getActionById(panel.id);
67972
+ var removedItem = this.tabbedMenu.actions.find(function (a) { return a.panelId == panel.id; });
67948
67973
  if (!removedItem)
67949
67974
  return;
67950
- this.additionalTitleToolbar.actions.splice(this.additionalTitleToolbar.actions.indexOf(removedItem), 1);
67975
+ this.tabbedMenu.actions.splice(this.tabbedMenu.actions.indexOf(removedItem), 1);
67951
67976
  this.updateTabToolbarItemsPressedState();
67952
67977
  };
67953
67978
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "showLegacyNavigation", {
@@ -67971,12 +67996,12 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67971
67996
  };
67972
67997
  QuestionPanelDynamicModel.prototype.calcCssClasses = function (css) {
67973
67998
  var classes = _super.prototype.calcCssClasses.call(this, css);
67974
- var additionalTitleToolbar = this.additionalTitleToolbar;
67975
- if (!!additionalTitleToolbar) {
67976
- additionalTitleToolbar.containerCss = this.getAdditionalTitleToolbarCss(classes);
67977
- additionalTitleToolbar.cssClasses = classes.tabs;
67978
- additionalTitleToolbar.dotsItem.cssClasses = classes.tabs;
67979
- additionalTitleToolbar.dotsItem.popupModel.contentComponentData.model.cssClasses = css.list;
67999
+ var tabbedMenu = this.tabbedMenu;
68000
+ if (!!tabbedMenu) {
68001
+ tabbedMenu.containerCss = this.getTabbedMenuCss(classes);
68002
+ tabbedMenu.cssClasses = classes.tabs;
68003
+ tabbedMenu.dotsItem.cssClasses = classes.tabs;
68004
+ tabbedMenu.dotsItem.popupModel.contentComponentData.model.cssClasses = css.list;
67980
68005
  }
67981
68006
  return classes;
67982
68007
  };
@@ -71004,9 +71029,9 @@ Serializer.addClass("currencymask", [
71004
71029
 
71005
71030
  var Version;
71006
71031
  var ReleaseDate;
71007
- Version = "" + "1.12.22";
71032
+ Version = "" + "1.12.24";
71008
71033
  settings.version = Version;
71009
- ReleaseDate = "" + "2025-02-05";
71034
+ ReleaseDate = "" + "2025-02-19";
71010
71035
  function checkLibraryVersion(ver, libraryName) {
71011
71036
  if (Version != ver) {
71012
71037
  var str = "survey-core has version '" + Version + "' and " + libraryName