survey-core 1.12.22 → 1.12.23

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 (226) 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 +1 -1
  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 +1 -1
  48. package/i18n/index.min.js +1 -1
  49. package/i18n/indonesian.js +1 -1
  50. package/i18n/indonesian.min.js +1 -1
  51. package/i18n/italian.js +1 -1
  52. package/i18n/italian.min.js +1 -1
  53. package/i18n/japanese.js +1 -1
  54. package/i18n/japanese.min.js +1 -1
  55. package/i18n/kazakh.js +1 -1
  56. package/i18n/kazakh.min.js +1 -1
  57. package/i18n/korean.js +1 -1
  58. package/i18n/korean.min.js +1 -1
  59. package/i18n/latvian.js +1 -1
  60. package/i18n/latvian.min.js +1 -1
  61. package/i18n/lithuanian.js +1 -1
  62. package/i18n/lithuanian.min.js +1 -1
  63. package/i18n/macedonian.js +1 -1
  64. package/i18n/macedonian.min.js +1 -1
  65. package/i18n/malay.js +1 -1
  66. package/i18n/malay.min.js +1 -1
  67. package/i18n/nl-BE.js +1 -1
  68. package/i18n/nl-BE.min.js +1 -1
  69. package/i18n/norwegian.js +1 -1
  70. package/i18n/norwegian.min.js +1 -1
  71. package/i18n/persian.js +1 -1
  72. package/i18n/persian.min.js +1 -1
  73. package/i18n/philippines.js +1 -1
  74. package/i18n/philippines.min.js +1 -1
  75. package/i18n/polish.js +1 -1
  76. package/i18n/polish.min.js +1 -1
  77. package/i18n/portuguese-br.js +1 -1
  78. package/i18n/portuguese-br.min.js +1 -1
  79. package/i18n/portuguese.js +1 -1
  80. package/i18n/portuguese.min.js +1 -1
  81. package/i18n/romanian.js +1 -1
  82. package/i18n/romanian.min.js +1 -1
  83. package/i18n/russian.js +1 -1
  84. package/i18n/russian.min.js +1 -1
  85. package/i18n/serbian.js +1 -1
  86. package/i18n/serbian.min.js +1 -1
  87. package/i18n/simplified-chinese.js +1 -1
  88. package/i18n/simplified-chinese.min.js +1 -1
  89. package/i18n/slovak.js +1 -1
  90. package/i18n/slovak.min.js +1 -1
  91. package/i18n/spanish.js +1 -1
  92. package/i18n/spanish.min.js +1 -1
  93. package/i18n/swahili.js +1 -1
  94. package/i18n/swahili.min.js +1 -1
  95. package/i18n/swedish.js +1 -1
  96. package/i18n/swedish.min.js +1 -1
  97. package/i18n/tajik.js +1 -1
  98. package/i18n/tajik.min.js +1 -1
  99. package/i18n/telugu.js +1 -1
  100. package/i18n/telugu.min.js +1 -1
  101. package/i18n/thai.js +1 -1
  102. package/i18n/thai.min.js +1 -1
  103. package/i18n/traditional-chinese.js +1 -1
  104. package/i18n/traditional-chinese.min.js +1 -1
  105. package/i18n/turkish.js +1 -1
  106. package/i18n/turkish.min.js +1 -1
  107. package/i18n/ukrainian.js +1 -1
  108. package/i18n/ukrainian.min.js +1 -1
  109. package/i18n/urdu.js +1 -1
  110. package/i18n/urdu.min.js +1 -1
  111. package/i18n/vietnamese.js +1 -1
  112. package/i18n/vietnamese.min.js +1 -1
  113. package/i18n/welsh.js +1 -1
  114. package/i18n/welsh.min.js +1 -1
  115. package/icons/iconsV1.js +1 -1
  116. package/icons/iconsV1.min.js +1 -1
  117. package/icons/iconsV2.js +1 -1
  118. package/icons/iconsV2.min.js +1 -1
  119. package/modern.css +1 -1
  120. package/modern.fontless.css +1 -1
  121. package/modern.fontless.min.css +1 -1
  122. package/modern.min.css +1 -1
  123. package/package.json +1 -1
  124. package/plugins/bootstrap-integration/index.js +1 -1
  125. package/plugins/bootstrap-integration/index.min.js +1 -1
  126. package/plugins/bootstrap-material-integration/index.js +1 -1
  127. package/plugins/bootstrap-material-integration/index.min.js +1 -1
  128. package/survey.core.js +124 -108
  129. package/survey.core.js.map +1 -1
  130. package/survey.core.min.js +3 -3
  131. package/survey.css +1 -1
  132. package/survey.i18n.js +1 -1
  133. package/survey.i18n.min.js +1 -1
  134. package/survey.min.css +1 -1
  135. package/themes/borderless-dark-panelless.js +1 -1
  136. package/themes/borderless-dark-panelless.min.js +1 -1
  137. package/themes/borderless-dark.js +1 -1
  138. package/themes/borderless-dark.min.js +1 -1
  139. package/themes/borderless-light-panelless..js +1 -1
  140. package/themes/borderless-light-panelless..min.js +1 -1
  141. package/themes/borderless-light.js +1 -1
  142. package/themes/borderless-light.min.js +1 -1
  143. package/themes/contrast-dark-panelless.js +1 -1
  144. package/themes/contrast-dark-panelless.min.js +1 -1
  145. package/themes/contrast-dark.js +1 -1
  146. package/themes/contrast-dark.min.js +1 -1
  147. package/themes/contrast-light-panelless.js +1 -1
  148. package/themes/contrast-light-panelless.min.js +1 -1
  149. package/themes/contrast-light.js +1 -1
  150. package/themes/contrast-light.min.js +1 -1
  151. package/themes/default-dark-panelless.js +1 -1
  152. package/themes/default-dark-panelless.min.js +1 -1
  153. package/themes/default-dark.js +1 -1
  154. package/themes/default-dark.min.js +1 -1
  155. package/themes/default-light-panelless.js +1 -1
  156. package/themes/default-light-panelless.min.js +1 -1
  157. package/themes/default-light.js +1 -1
  158. package/themes/default-light.min.js +1 -1
  159. package/themes/doubleborder-dark-panelless.js +1 -1
  160. package/themes/doubleborder-dark-panelless.min.js +1 -1
  161. package/themes/doubleborder-dark.js +1 -1
  162. package/themes/doubleborder-dark.min.js +1 -1
  163. package/themes/doubleborder-light-panelles.js +1 -1
  164. package/themes/doubleborder-light-panelles.min.js +1 -1
  165. package/themes/doubleborder-light.js +1 -1
  166. package/themes/doubleborder-light.min.js +1 -1
  167. package/themes/flat-dark-panelless.js +1 -1
  168. package/themes/flat-dark-panelless.min.js +1 -1
  169. package/themes/flat-dark.js +1 -1
  170. package/themes/flat-dark.min.js +1 -1
  171. package/themes/flat-light-panelless.js +1 -1
  172. package/themes/flat-light-panelless.min.js +1 -1
  173. package/themes/flat-light.js +1 -1
  174. package/themes/flat-light.min.js +1 -1
  175. package/themes/index.js +1 -1
  176. package/themes/index.min.js +1 -1
  177. package/themes/layered-dark-panelless.js +1 -1
  178. package/themes/layered-dark-panelless.min.js +1 -1
  179. package/themes/layered-dark.js +1 -1
  180. package/themes/layered-dark.min.js +1 -1
  181. package/themes/layered-light-panelless.js +1 -1
  182. package/themes/layered-light-panelless.min.js +1 -1
  183. package/themes/layered-light.js +1 -1
  184. package/themes/layered-light.min.js +1 -1
  185. package/themes/plain-dark-panelless.js +1 -1
  186. package/themes/plain-dark-panelless.min.js +1 -1
  187. package/themes/plain-dark.js +1 -1
  188. package/themes/plain-dark.min.js +1 -1
  189. package/themes/plain-light-panelless.js +1 -1
  190. package/themes/plain-light-panelless.min.js +1 -1
  191. package/themes/plain-light.js +1 -1
  192. package/themes/plain-light.min.js +1 -1
  193. package/themes/sharp-dark-panelless.js +1 -1
  194. package/themes/sharp-dark-panelless.min.js +1 -1
  195. package/themes/sharp-dark.js +1 -1
  196. package/themes/sharp-dark.min.js +1 -1
  197. package/themes/sharp-light-panelless.js +1 -1
  198. package/themes/sharp-light-panelless.min.js +1 -1
  199. package/themes/sharp-light.js +1 -1
  200. package/themes/sharp-light.min.js +1 -1
  201. package/themes/solid-dark-panelless.js +1 -1
  202. package/themes/solid-dark-panelless.min.js +1 -1
  203. package/themes/solid-dark.js +1 -1
  204. package/themes/solid-dark.min.js +1 -1
  205. package/themes/solid-light-panelless.js +1 -1
  206. package/themes/solid-light-panelless.min.js +1 -1
  207. package/themes/solid-light.js +1 -1
  208. package/themes/solid-light.min.js +1 -1
  209. package/themes/three-dimensional-dark-panelless.js +1 -1
  210. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  211. package/themes/three-dimensional-dark.js +1 -1
  212. package/themes/three-dimensional-dark.min.js +1 -1
  213. package/themes/three-dimensional-light-panelless.js +1 -1
  214. package/themes/three-dimensional-light-panelless.min.js +1 -1
  215. package/themes/three-dimensional-light.js +1 -1
  216. package/themes/three-dimensional-light.min.js +1 -1
  217. package/ts3.4/typings/packages/survey-core/src/base-interfaces.d.ts +1 -0
  218. package/ts3.4/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +2 -0
  219. package/ts3.4/typings/packages/survey-core/src/localizablestring.d.ts +1 -1
  220. package/ts3.4/typings/packages/survey-core/src/question_paneldynamic.d.ts +14 -6
  221. package/ts3.4/typings/packages/survey-core/src/textPreProcessor.d.ts +4 -2
  222. package/typings/packages/survey-core/src/base-interfaces.d.ts +1 -0
  223. package/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +2 -0
  224. package/typings/packages/survey-core/src/localizablestring.d.ts +1 -1
  225. package/typings/packages/survey-core/src/question_paneldynamic.d.ts +14 -6
  226. 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.23
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);
@@ -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)
@@ -22816,9 +22818,7 @@ var textPreProcessor_TextPreProcessor = /** @class */ (function () {
22816
22818
  enumerable: false,
22817
22819
  configurable: true
22818
22820
  });
22819
- TextPreProcessor.prototype.process = function (text, returnDisplayValue, doEncoding) {
22820
- if (returnDisplayValue === void 0) { returnDisplayValue = false; }
22821
- if (doEncoding === void 0) { doEncoding = false; }
22821
+ TextPreProcessor.prototype.process = function (text, returnDisplayValue, doEncoding, replaceUndefinedValues) {
22822
22822
  this.hasAllValuesOnLastRunValue = true;
22823
22823
  if (!text)
22824
22824
  return text;
@@ -22827,28 +22827,28 @@ var textPreProcessor_TextPreProcessor = /** @class */ (function () {
22827
22827
  var items = this.getItems(text);
22828
22828
  for (var i = items.length - 1; i >= 0; i--) {
22829
22829
  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;
22830
+ var name_1 = this.getName(text.substring(item.start + 1, item.end));
22831
+ if (!!name_1) {
22832
+ var textValue = new TextPreProcessorValue(name_1, returnDisplayValue === true);
22833
+ this.onProcess(textValue);
22834
+ if (!textValue.isExists) {
22835
+ if (textValue.canProcess) {
22836
+ this.hasAllValuesOnLastRunValue = false;
22837
+ }
22838
+ }
22839
+ if (textValue.isExists || replaceUndefinedValues) {
22840
+ if (helpers_Helpers.isValueEmpty(textValue.value)) {
22841
+ this.hasAllValuesOnLastRunValue = false;
22842
+ }
22843
+ var replacedValue = !helpers_Helpers.isValueEmpty(textValue.value)
22844
+ ? textValue.value
22845
+ : "";
22846
+ if (doEncoding) {
22847
+ replacedValue = encodeURIComponent(replacedValue);
22848
+ }
22849
+ text = text.substring(0, item.start) + replacedValue + text.substring(item.end + 1);
22838
22850
  }
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
22851
  }
22850
- text =
22851
- text.substring(0, item.start) + replacedValue + text.substring(item.end + 1);
22852
22852
  }
22853
22853
  return text;
22854
22854
  };
@@ -22860,12 +22860,19 @@ var textPreProcessor_TextPreProcessor = /** @class */ (function () {
22860
22860
  return textValue;
22861
22861
  };
22862
22862
  Object.defineProperty(TextPreProcessor.prototype, "hasAllValuesOnLastRun", {
22863
- get: function () {
22864
- return !!this.hasAllValuesOnLastRunValue;
22865
- },
22863
+ get: function () { return !!this.hasAllValuesOnLastRunValue; },
22866
22864
  enumerable: false,
22867
22865
  configurable: true
22868
22866
  });
22867
+ TextPreProcessor.prototype.processText = function (text, returnDisplayValue) {
22868
+ return this.process(text, returnDisplayValue);
22869
+ };
22870
+ TextPreProcessor.prototype.processTextEx = function (params) {
22871
+ var res = { hasAllValuesOnLastRun: true, text: params.text };
22872
+ res.text = this.process(params.text, params.returnDisplayValue, params.doEncoding, params.replaceUndefinedValues);
22873
+ res.hasAllValuesOnLastRun = this.hasAllValuesOnLastRun;
22874
+ return res;
22875
+ };
22869
22876
  TextPreProcessor.prototype.getItems = function (text) {
22870
22877
  var items = [];
22871
22878
  var length = text.length;
@@ -22971,27 +22978,31 @@ var textPreProcessor_QuestionTextProcessor = /** @class */ (function () {
22971
22978
  textValue.value = new conditionProcessValue_ProcessValue().getValue(textValue.name, values);
22972
22979
  };
22973
22980
  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);
22981
+ var params = { text: text, returnDisplayValue: returnDisplayValue };
22982
+ return this.processTextEx(params).text;
22979
22983
  };
22980
22984
  QuestionTextProcessor.prototype.processTextEx = function (params) {
22981
- params.text = this.processText(params.text, params.returnDisplayValue);
22982
- var hasAllValuesOnLastRun = this.textPreProcessor.hasAllValuesOnLastRun;
22985
+ var _a;
22983
22986
  var res = { hasAllValuesOnLastRun: true, text: params.text };
22984
- if (this.survey) {
22985
- res = this.survey.processTextEx(params);
22987
+ if (!params.runAtDesign && ((_a = this.survey) === null || _a === void 0 ? void 0 : _a.isDesignMode))
22988
+ return res;
22989
+ var processors = new Array();
22990
+ this.addTextPreProcessor(processors, this.textPreProcessor);
22991
+ this.addTextPreProcessor(processors, this.getParentTextProcessor());
22992
+ this.addTextPreProcessor(processors, this.survey);
22993
+ for (var i = 0; i < processors.length; i++) {
22994
+ var processor = processors[i];
22995
+ params.text = res.text;
22996
+ var processorRes = processor.processTextEx(params);
22997
+ res.text = processorRes.text;
22998
+ res.hasAllValuesOnLastRun = res.hasAllValuesOnLastRun && processorRes.hasAllValuesOnLastRun;
22986
22999
  }
22987
- res.hasAllValuesOnLastRun =
22988
- res.hasAllValuesOnLastRun && hasAllValuesOnLastRun;
22989
23000
  return res;
22990
23001
  };
22991
- QuestionTextProcessor.prototype.processTextCore = function (textProcessor, text, returnDisplayValue) {
22992
- if (!textProcessor)
22993
- return text;
22994
- return textProcessor.processText(text, returnDisplayValue);
23002
+ QuestionTextProcessor.prototype.addTextPreProcessor = function (list, textProcessor) {
23003
+ if (!textProcessor || list.indexOf(textProcessor) > -1)
23004
+ return;
23005
+ list.push(textProcessor);
22995
23006
  };
22996
23007
  return QuestionTextProcessor;
22997
23008
  }());
@@ -23925,9 +23936,10 @@ var question_custom_QuestionCompositeModel = /** @class */ (function (_super) {
23925
23936
  }
23926
23937
  this.initElement(res);
23927
23938
  res.readOnly = this.isReadOnly;
23928
- res.questions.forEach(function (q) { return q.onUpdateCssClassesCallback = function (css) {
23929
- _this.onUpdateQuestionCssClasses(q, css);
23930
- }; });
23939
+ res.questions.forEach(function (q) {
23940
+ q.setParentQuestion(_this);
23941
+ q.onUpdateCssClassesCallback = function (css) { _this.onUpdateQuestionCssClasses(q, css); };
23942
+ });
23931
23943
  this.setAfterRenderCallbacks(res);
23932
23944
  return res;
23933
23945
  };
@@ -26896,11 +26908,10 @@ var question_matrixdropdownrendered_QuestionMatrixDropdownRenderedTable = /** @c
26896
26908
  if (this.matrix.isMobile) {
26897
26909
  actions.unshift(new action_Action({
26898
26910
  id: "show-detail-mobile",
26899
- title: "Show Details",
26911
+ title: new ComputedUpdater(function () { return row.isDetailPanelShowing ? _this.matrix.getLocalizationString("hideDetails") : _this.matrix.getLocalizationString("showDetails"); }),
26900
26912
  showTitle: true,
26901
26913
  location: "end",
26902
26914
  action: function (context) {
26903
- context.title = row.isDetailPanelShowing ? _this.matrix.getLocalizationString("showDetails") : _this.matrix.getLocalizationString("hideDetails");
26904
26915
  row.showHideDetailPanelClick();
26905
26916
  },
26906
26917
  }));
@@ -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",
@@ -46352,7 +46365,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
46352
46365
  var doEncoding = params.doEncoding === undefined ? settings.web.encodeUrlParams : params.doEncoding;
46353
46366
  var text = params.text;
46354
46367
  if (params.runAtDesign || !this.isDesignMode) {
46355
- text = this.textPreProcessor.process(text, params.returnDisplayValue === true, doEncoding);
46368
+ text = this.textPreProcessor.process(text, params.returnDisplayValue === true, doEncoding, params.replaceUndefinedValues);
46356
46369
  }
46357
46370
  var res = { text: text, hasAllValuesOnLastRun: true };
46358
46371
  res.hasAllValuesOnLastRun = this.textPreProcessor.hasAllValuesOnLastRun;
@@ -65161,6 +65174,13 @@ var QuestionPanelDynamicItemTextProcessor = /** @class */ (function (_super) {
65161
65174
  };
65162
65175
  return QuestionPanelDynamicItemTextProcessor;
65163
65176
  }(textPreProcessor_QuestionTextProcessor));
65177
+ var PanelDynamicTabbedMenuItem = /** @class */ (function (_super) {
65178
+ question_paneldynamic_extends(PanelDynamicTabbedMenuItem, _super);
65179
+ function PanelDynamicTabbedMenuItem(innerItem) {
65180
+ return _super.call(this, innerItem) || this;
65181
+ }
65182
+ return PanelDynamicTabbedMenuItem;
65183
+ }(action_Action));
65164
65184
  var question_paneldynamic_QuestionPanelDynamicItem = /** @class */ (function () {
65165
65185
  function QuestionPanelDynamicItem(data, panel) {
65166
65186
  this.data = data;
@@ -66544,7 +66564,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66544
66564
  set: function (val) {
66545
66565
  this.setPropertyValue("tabAlign", val);
66546
66566
  if (this.isRenderModeTab) {
66547
- this.additionalTitleToolbar.containerCss = this.getAdditionalTitleToolbarCss();
66567
+ this.tabbedMenu.containerCss = this.getTabbedMenuCss();
66548
66568
  }
66549
66569
  },
66550
66570
  enumerable: false,
@@ -66564,18 +66584,6 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66564
66584
  enumerable: false,
66565
66585
  configurable: true
66566
66586
  });
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
66587
  QuestionPanelDynamicModel.prototype.setVisibleIndex = function (value) {
66580
66588
  if (!this.isVisible)
66581
66589
  return 0;
@@ -66962,8 +66970,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66962
66970
  for (var i = 0; i < panels.length; i++) {
66963
66971
  panels[i].locStrsChanged();
66964
66972
  }
66965
- if (this.additionalTitleToolbar) {
66966
- this.additionalTitleToolbar.locStrsChanged();
66973
+ if (this.tabbedMenu) {
66974
+ this.tabbedMenu.locStrsChanged();
66967
66975
  }
66968
66976
  };
66969
66977
  QuestionPanelDynamicModel.prototype.clearIncorrectValues = function () {
@@ -67699,14 +67707,16 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67699
67707
  get: function () {
67700
67708
  var showTab = this.isRenderModeTab && !!this.visiblePanelCount;
67701
67709
  return new CssClassBuilder()
67702
- .append(this.cssClasses.header)
67703
- .append(this.cssClasses.headerTop, this.hasTitleOnTop || showTab)
67704
- .append(this.cssClasses.headerTab, showTab)
67710
+ .append(_super.prototype.getCssHeader.call(this, this.cssClasses))
67711
+ .append(this.cssClasses.headerTab, this.hasTitleOnTop && showTab)
67705
67712
  .toString();
67706
67713
  },
67707
67714
  enumerable: false,
67708
67715
  configurable: true
67709
67716
  });
67717
+ QuestionPanelDynamicModel.prototype.getTabsContainerCss = function () {
67718
+ return new CssClassBuilder().append(this.cssClasses.tabsContainer).append(this.cssClasses.tabsContainerWithHeader, this.hasTitleOnTop).toString();
67719
+ };
67710
67720
  QuestionPanelDynamicModel.prototype.getPanelWrapperCss = function (panel) {
67711
67721
  return new CssClassBuilder()
67712
67722
  .append(this.cssClasses.panelWrapper, !panel || panel.visible)
@@ -67769,25 +67779,29 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67769
67779
  return true;
67770
67780
  return false;
67771
67781
  };
67772
- Object.defineProperty(QuestionPanelDynamicModel.prototype, "hasAdditionalTitleToolbar", {
67782
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "hasTabbedMenu", {
67773
67783
  get: function () {
67774
67784
  return this.isRenderModeTab && this.visiblePanels.length > 0;
67775
67785
  },
67776
67786
  enumerable: false,
67777
67787
  configurable: true
67778
67788
  });
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
- };
67789
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "tabbedMenu", {
67790
+ get: function () {
67791
+ if (!this.isRenderModeTab)
67792
+ return null;
67793
+ if (!this.tabbedMenuValue) {
67794
+ this.tabbedMenuValue = new adaptive_container_AdaptiveActionContainer();
67795
+ this.tabbedMenuValue.dotsItem.popupModel.showPointer = false;
67796
+ this.tabbedMenuValue.dotsItem.popupModel.verticalPosition = "bottom";
67797
+ this.tabbedMenuValue.dotsItem.popupModel.horizontalPosition = "center";
67798
+ this.updateElementCss(false);
67799
+ }
67800
+ return this.tabbedMenuValue;
67801
+ },
67802
+ enumerable: false,
67803
+ configurable: true
67804
+ });
67791
67805
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "footerToolbar", {
67792
67806
  get: function () {
67793
67807
  if (!this.footerToolbarValue) {
@@ -67882,19 +67896,21 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67882
67896
  return options.title;
67883
67897
  };
67884
67898
  locTitle.sharedData = this.locTemplateTabTitle;
67885
- var isActive = this.getPanelVisibleIndexById(panel.id) === this.currentIndex;
67886
- var newItem = new action_Action({
67887
- id: panel.id,
67899
+ var panelId = panel.id;
67900
+ var isActive = this.getPanelVisibleIndexById(panelId) === this.currentIndex;
67901
+ var newItem = new PanelDynamicTabbedMenuItem({
67902
+ id: this.id + "_tab_" + panelId,
67903
+ panelId: panelId,
67888
67904
  pressed: isActive,
67889
67905
  locTitle: locTitle,
67890
67906
  disableHide: isActive,
67891
67907
  action: function () {
67892
- _this.currentIndex = _this.getPanelVisibleIndexById(newItem.id);
67908
+ _this.currentIndex = _this.getPanelVisibleIndexById(panelId);
67893
67909
  }
67894
67910
  });
67895
67911
  return newItem;
67896
67912
  };
67897
- QuestionPanelDynamicModel.prototype.getAdditionalTitleToolbarCss = function (cssClasses) {
67913
+ QuestionPanelDynamicModel.prototype.getTabbedMenuCss = function (cssClasses) {
67898
67914
  var css = cssClasses !== null && cssClasses !== void 0 ? cssClasses : this.cssClasses;
67899
67915
  return new CssClassBuilder()
67900
67916
  .append(css.tabsRoot)
@@ -67909,8 +67925,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67909
67925
  if (this.currentIndex < 0 || this.currentIndex >= this.visiblePanelCount)
67910
67926
  return;
67911
67927
  var panel = this.visiblePanelsCore[this.currentIndex];
67912
- this.additionalTitleToolbar.renderedActions.forEach(function (action) {
67913
- var isActive = action.id === panel.id;
67928
+ this.tabbedMenu.renderedActions.forEach(function (action) {
67929
+ var isActive = action.panelId === panel.id;
67914
67930
  action.pressed = isActive;
67915
67931
  action.disableHide = isActive;
67916
67932
  //should raise update if dimensions are not changed but action is active now
@@ -67932,22 +67948,22 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67932
67948
  for (var i = 0; i < visPanels.length; i++) {
67933
67949
  _loop_1(i);
67934
67950
  }
67935
- this.additionalTitleToolbar.setItems(items);
67951
+ this.tabbedMenu.setItems(items);
67936
67952
  };
67937
67953
  QuestionPanelDynamicModel.prototype.addTabFromToolbar = function (panel, index) {
67938
67954
  if (!this.isRenderModeTab)
67939
67955
  return;
67940
67956
  var newItem = this.createTabByPanel(panel, index);
67941
- this.additionalTitleToolbar.actions.splice(index, 0, newItem);
67957
+ this.tabbedMenu.actions.splice(index, 0, newItem);
67942
67958
  this.updateTabToolbarItemsPressedState();
67943
67959
  };
67944
67960
  QuestionPanelDynamicModel.prototype.removeTabFromToolbar = function (panel) {
67945
67961
  if (!this.isRenderModeTab)
67946
67962
  return;
67947
- var removedItem = this.additionalTitleToolbar.getActionById(panel.id);
67963
+ var removedItem = this.tabbedMenu.actions.find(function (a) { return a.panelId == panel.id; });
67948
67964
  if (!removedItem)
67949
67965
  return;
67950
- this.additionalTitleToolbar.actions.splice(this.additionalTitleToolbar.actions.indexOf(removedItem), 1);
67966
+ this.tabbedMenu.actions.splice(this.tabbedMenu.actions.indexOf(removedItem), 1);
67951
67967
  this.updateTabToolbarItemsPressedState();
67952
67968
  };
67953
67969
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "showLegacyNavigation", {
@@ -67971,12 +67987,12 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
67971
67987
  };
67972
67988
  QuestionPanelDynamicModel.prototype.calcCssClasses = function (css) {
67973
67989
  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;
67990
+ var tabbedMenu = this.tabbedMenu;
67991
+ if (!!tabbedMenu) {
67992
+ tabbedMenu.containerCss = this.getTabbedMenuCss(classes);
67993
+ tabbedMenu.cssClasses = classes.tabs;
67994
+ tabbedMenu.dotsItem.cssClasses = classes.tabs;
67995
+ tabbedMenu.dotsItem.popupModel.contentComponentData.model.cssClasses = css.list;
67980
67996
  }
67981
67997
  return classes;
67982
67998
  };
@@ -71004,9 +71020,9 @@ Serializer.addClass("currencymask", [
71004
71020
 
71005
71021
  var Version;
71006
71022
  var ReleaseDate;
71007
- Version = "" + "1.12.22";
71023
+ Version = "" + "1.12.23";
71008
71024
  settings.version = Version;
71009
- ReleaseDate = "" + "2025-02-05";
71025
+ ReleaseDate = "" + "2025-02-11";
71010
71026
  function checkLibraryVersion(ver, libraryName) {
71011
71027
  if (Version != ver) {
71012
71028
  var str = "survey-core has version '" + Version + "' and " + libraryName