survey-core 1.12.5 → 1.12.7

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 (234) hide show
  1. package/defaultV2.css +6 -3
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +6 -3
  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/catalan.js +1 -1
  14. package/i18n/catalan.min.js +1 -1
  15. package/i18n/croatian.js +1 -1
  16. package/i18n/croatian.min.js +1 -1
  17. package/i18n/czech.js +1 -1
  18. package/i18n/czech.min.js +1 -1
  19. package/i18n/danish.js +1 -1
  20. package/i18n/danish.min.js +1 -1
  21. package/i18n/dutch.js +1 -1
  22. package/i18n/dutch.min.js +1 -1
  23. package/i18n/english.js +1 -1
  24. package/i18n/english.min.js +1 -1
  25. package/i18n/estonian.js +1 -1
  26. package/i18n/estonian.min.js +1 -1
  27. package/i18n/finnish.js +1 -1
  28. package/i18n/finnish.min.js +1 -1
  29. package/i18n/french.js +1 -1
  30. package/i18n/french.min.js +1 -1
  31. package/i18n/georgian.js +1 -1
  32. package/i18n/georgian.min.js +1 -1
  33. package/i18n/german.js +1 -1
  34. package/i18n/german.min.js +1 -1
  35. package/i18n/greek.js +1 -1
  36. package/i18n/greek.min.js +1 -1
  37. package/i18n/hebrew.js +1 -1
  38. package/i18n/hebrew.min.js +1 -1
  39. package/i18n/hindi.js +1 -1
  40. package/i18n/hindi.min.js +1 -1
  41. package/i18n/hungarian.js +1 -1
  42. package/i18n/hungarian.min.js +1 -1
  43. package/i18n/icelandic.js +1 -1
  44. package/i18n/icelandic.min.js +1 -1
  45. package/i18n/index.js +1 -1
  46. package/i18n/index.min.js +1 -1
  47. package/i18n/indonesian.js +1 -1
  48. package/i18n/indonesian.min.js +1 -1
  49. package/i18n/italian.js +1 -1
  50. package/i18n/italian.min.js +1 -1
  51. package/i18n/japanese.js +1 -1
  52. package/i18n/japanese.min.js +1 -1
  53. package/i18n/kazakh.js +1 -1
  54. package/i18n/kazakh.min.js +1 -1
  55. package/i18n/korean.js +1 -1
  56. package/i18n/korean.min.js +1 -1
  57. package/i18n/latvian.js +1 -1
  58. package/i18n/latvian.min.js +1 -1
  59. package/i18n/lithuanian.js +1 -1
  60. package/i18n/lithuanian.min.js +1 -1
  61. package/i18n/macedonian.js +1 -1
  62. package/i18n/macedonian.min.js +1 -1
  63. package/i18n/malay.js +1 -1
  64. package/i18n/malay.min.js +1 -1
  65. package/i18n/nl-BE.js +1 -1
  66. package/i18n/nl-BE.min.js +1 -1
  67. package/i18n/norwegian.js +1 -1
  68. package/i18n/norwegian.min.js +1 -1
  69. package/i18n/persian.js +1 -1
  70. package/i18n/persian.min.js +1 -1
  71. package/i18n/philippines.js +1 -1
  72. package/i18n/philippines.min.js +1 -1
  73. package/i18n/polish.js +1 -1
  74. package/i18n/polish.min.js +1 -1
  75. package/i18n/portuguese-br.js +1 -1
  76. package/i18n/portuguese-br.min.js +1 -1
  77. package/i18n/portuguese.js +1 -1
  78. package/i18n/portuguese.min.js +1 -1
  79. package/i18n/romanian.js +1 -1
  80. package/i18n/romanian.min.js +1 -1
  81. package/i18n/russian.js +1 -1
  82. package/i18n/russian.min.js +1 -1
  83. package/i18n/serbian.js +1 -1
  84. package/i18n/serbian.min.js +1 -1
  85. package/i18n/simplified-chinese.js +1 -1
  86. package/i18n/simplified-chinese.min.js +1 -1
  87. package/i18n/slovak.js +1 -1
  88. package/i18n/slovak.min.js +1 -1
  89. package/i18n/spanish.js +1 -1
  90. package/i18n/spanish.min.js +1 -1
  91. package/i18n/swahili.js +1 -1
  92. package/i18n/swahili.min.js +1 -1
  93. package/i18n/swedish.js +1 -1
  94. package/i18n/swedish.min.js +1 -1
  95. package/i18n/tajik.js +1 -1
  96. package/i18n/tajik.min.js +1 -1
  97. package/i18n/telugu.js +1 -1
  98. package/i18n/telugu.min.js +1 -1
  99. package/i18n/thai.js +1 -1
  100. package/i18n/thai.min.js +1 -1
  101. package/i18n/traditional-chinese.js +1 -1
  102. package/i18n/traditional-chinese.min.js +1 -1
  103. package/i18n/turkish.js +1 -1
  104. package/i18n/turkish.min.js +1 -1
  105. package/i18n/ukrainian.js +1 -1
  106. package/i18n/ukrainian.min.js +1 -1
  107. package/i18n/urdu.js +1 -1
  108. package/i18n/urdu.min.js +1 -1
  109. package/i18n/vietnamese.js +1 -1
  110. package/i18n/vietnamese.min.js +1 -1
  111. package/i18n/welsh.js +1 -1
  112. package/i18n/welsh.min.js +1 -1
  113. package/modern.css +1 -1
  114. package/modern.fontless.css +1 -1
  115. package/modern.fontless.min.css +1 -1
  116. package/modern.min.css +1 -1
  117. package/package.json +1 -1
  118. package/plugins/bootstrap-integration/index.js +1 -1
  119. package/plugins/bootstrap-integration/index.min.js +1 -1
  120. package/plugins/bootstrap-material-integration/index.js +1 -1
  121. package/plugins/bootstrap-material-integration/index.min.js +1 -1
  122. package/survey.core.js +156 -95
  123. package/survey.core.js.map +1 -1
  124. package/survey.core.min.js +3 -3
  125. package/survey.css +1 -1
  126. package/survey.i18n.js +1 -1
  127. package/survey.i18n.min.js +1 -1
  128. package/survey.min.css +1 -1
  129. package/themes/borderless-dark-panelless.js +1 -1
  130. package/themes/borderless-dark-panelless.min.js +1 -1
  131. package/themes/borderless-dark.js +1 -1
  132. package/themes/borderless-dark.min.js +1 -1
  133. package/themes/borderless-light-panelless..js +1 -1
  134. package/themes/borderless-light-panelless..min.js +1 -1
  135. package/themes/borderless-light.js +1 -1
  136. package/themes/borderless-light.min.js +1 -1
  137. package/themes/contrast-dark-panelless.js +1 -1
  138. package/themes/contrast-dark-panelless.min.js +1 -1
  139. package/themes/contrast-dark.js +1 -1
  140. package/themes/contrast-dark.min.js +1 -1
  141. package/themes/contrast-light-panelless.js +1 -1
  142. package/themes/contrast-light-panelless.min.js +1 -1
  143. package/themes/contrast-light.js +1 -1
  144. package/themes/contrast-light.min.js +1 -1
  145. package/themes/default-dark-panelless.js +1 -1
  146. package/themes/default-dark-panelless.min.js +1 -1
  147. package/themes/default-dark.js +1 -1
  148. package/themes/default-dark.min.js +1 -1
  149. package/themes/default-light-panelless.js +1 -1
  150. package/themes/default-light-panelless.min.js +1 -1
  151. package/themes/default-light.js +1 -1
  152. package/themes/default-light.min.js +1 -1
  153. package/themes/doubleborder-dark-panelless.js +1 -1
  154. package/themes/doubleborder-dark-panelless.min.js +1 -1
  155. package/themes/doubleborder-dark.js +1 -1
  156. package/themes/doubleborder-dark.min.js +1 -1
  157. package/themes/doubleborder-light-panelles.js +1 -1
  158. package/themes/doubleborder-light-panelles.min.js +1 -1
  159. package/themes/doubleborder-light.js +1 -1
  160. package/themes/doubleborder-light.min.js +1 -1
  161. package/themes/flat-dark-panelless.js +1 -1
  162. package/themes/flat-dark-panelless.min.js +1 -1
  163. package/themes/flat-dark.js +1 -1
  164. package/themes/flat-dark.min.js +1 -1
  165. package/themes/flat-light-panelless.js +1 -1
  166. package/themes/flat-light-panelless.min.js +1 -1
  167. package/themes/flat-light.js +1 -1
  168. package/themes/flat-light.min.js +1 -1
  169. package/themes/index.js +1 -1
  170. package/themes/index.min.js +1 -1
  171. package/themes/layered-dark-panelless.js +1 -1
  172. package/themes/layered-dark-panelless.min.js +1 -1
  173. package/themes/layered-dark.js +1 -1
  174. package/themes/layered-dark.min.js +1 -1
  175. package/themes/layered-light-panelless.js +1 -1
  176. package/themes/layered-light-panelless.min.js +1 -1
  177. package/themes/layered-light.js +1 -1
  178. package/themes/layered-light.min.js +1 -1
  179. package/themes/plain-dark-panelless.js +1 -1
  180. package/themes/plain-dark-panelless.min.js +1 -1
  181. package/themes/plain-dark.js +1 -1
  182. package/themes/plain-dark.min.js +1 -1
  183. package/themes/plain-light-panelless.js +1 -1
  184. package/themes/plain-light-panelless.min.js +1 -1
  185. package/themes/plain-light.js +1 -1
  186. package/themes/plain-light.min.js +1 -1
  187. package/themes/sharp-dark-panelless.js +1 -1
  188. package/themes/sharp-dark-panelless.min.js +1 -1
  189. package/themes/sharp-dark.js +1 -1
  190. package/themes/sharp-dark.min.js +1 -1
  191. package/themes/sharp-light-panelless.js +1 -1
  192. package/themes/sharp-light-panelless.min.js +1 -1
  193. package/themes/sharp-light.js +1 -1
  194. package/themes/sharp-light.min.js +1 -1
  195. package/themes/solid-dark-panelless.js +1 -1
  196. package/themes/solid-dark-panelless.min.js +1 -1
  197. package/themes/solid-dark.js +1 -1
  198. package/themes/solid-dark.min.js +1 -1
  199. package/themes/solid-light-panelless.js +1 -1
  200. package/themes/solid-light-panelless.min.js +1 -1
  201. package/themes/solid-light.js +1 -1
  202. package/themes/solid-light.min.js +1 -1
  203. package/themes/three-dimensional-dark-panelless.js +1 -1
  204. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  205. package/themes/three-dimensional-dark.js +1 -1
  206. package/themes/three-dimensional-dark.min.js +1 -1
  207. package/themes/three-dimensional-light-panelless.js +1 -1
  208. package/themes/three-dimensional-light-panelless.min.js +1 -1
  209. package/themes/three-dimensional-light.js +1 -1
  210. package/themes/three-dimensional-light.min.js +1 -1
  211. package/ts3.4/typings/packages/survey-core/src/base-interfaces.d.ts +1 -1
  212. package/ts3.4/typings/packages/survey-core/src/jsonobject.d.ts +2 -0
  213. package/ts3.4/typings/packages/survey-core/src/question.d.ts +1 -1
  214. package/ts3.4/typings/packages/survey-core/src/question_baseselect.d.ts +1 -1
  215. package/ts3.4/typings/packages/survey-core/src/question_file.d.ts +5 -5
  216. package/ts3.4/typings/packages/survey-core/src/question_matrixdropdownbase.d.ts +2 -0
  217. package/ts3.4/typings/packages/survey-core/src/question_matrixdynamic.d.ts +2 -0
  218. package/ts3.4/typings/packages/survey-core/src/question_paneldynamic.d.ts +1 -0
  219. package/ts3.4/typings/packages/survey-core/src/question_text.d.ts +0 -1
  220. package/ts3.4/typings/packages/survey-core/src/survey-element.d.ts +1 -1
  221. package/ts3.4/typings/packages/survey-core/src/survey.d.ts +3 -2
  222. package/ts3.4/typings/packages/survey-core/src/validator.d.ts +1 -0
  223. package/typings/packages/survey-core/src/base-interfaces.d.ts +1 -1
  224. package/typings/packages/survey-core/src/jsonobject.d.ts +2 -0
  225. package/typings/packages/survey-core/src/question.d.ts +1 -1
  226. package/typings/packages/survey-core/src/question_baseselect.d.ts +1 -1
  227. package/typings/packages/survey-core/src/question_file.d.ts +5 -5
  228. package/typings/packages/survey-core/src/question_matrixdropdownbase.d.ts +2 -0
  229. package/typings/packages/survey-core/src/question_matrixdynamic.d.ts +2 -0
  230. package/typings/packages/survey-core/src/question_paneldynamic.d.ts +1 -0
  231. package/typings/packages/survey-core/src/question_text.d.ts +0 -1
  232. package/typings/packages/survey-core/src/survey-element.d.ts +1 -1
  233. package/typings/packages/survey-core/src/survey.d.ts +3 -2
  234. package/typings/packages/survey-core/src/validator.d.ts +1 -0
package/survey.core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.12.5
2
+ * surveyjs - Survey JavaScript library v1.12.7
3
3
  * Copyright (c) 2015-2024 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
@@ -3011,6 +3011,9 @@ var jsonobject_JsonMetadataClass = /** @class */ (function () {
3011
3011
  if (propInfo.readOnly === true) {
3012
3012
  prop.readOnly = true;
3013
3013
  }
3014
+ if (propInfo.availableInMatrixColumn === true) {
3015
+ prop.availableInMatrixColumn = true;
3016
+ }
3014
3017
  if (propInfo.choices) {
3015
3018
  var choicesFunc = typeof propInfo.choices === "function" ? propInfo.choices : null;
3016
3019
  var choicesValue = typeof propInfo.choices !== "function" ? propInfo.choices : null;
@@ -12924,18 +12927,6 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
12924
12927
  requestAnimationFrame(checkPos_1);
12925
12928
  };
12926
12929
  DomWindowHelper.requestAnimationFrame(checkPos_1);
12927
- // let currPageXOffset = window.pageXOffset;
12928
- // let currPageYOffset = window.pageYOffset;
12929
- // var scrollDone = setInterval(() => {
12930
- // DomWindowHelper.requestAnimationFrame(() => {
12931
- // if (currPageXOffset == window.pageXOffset && currPageYOffset == window.pageYOffset) {
12932
- // clearInterval(scrollDone);
12933
- // doneCallback();
12934
- // }
12935
- // currPageXOffset = window.pageXOffset;
12936
- // currPageYOffset = window.pageYOffset;
12937
- // });
12938
- // }, 25);
12939
12930
  }
12940
12931
  };
12941
12932
  SurveyElement.ScrollElementToTop = function (elementId, scrollIfVisible, scrollIntoViewOptions, doneCallback) {
@@ -12946,12 +12937,17 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
12946
12937
  return SurveyElement.ScrollElementToViewCore(el, false, scrollIfVisible, scrollIntoViewOptions, doneCallback);
12947
12938
  };
12948
12939
  SurveyElement.ScrollElementToViewCore = function (el, checkLeft, scrollIfVisible, scrollIntoViewOptions, doneCallback) {
12949
- if (!el || !el.scrollIntoView)
12940
+ if (!el || !el.scrollIntoView) {
12941
+ doneCallback && doneCallback();
12950
12942
  return false;
12943
+ }
12951
12944
  var needScroll = SurveyElement.IsNeedScrollIntoView(el, checkLeft, scrollIfVisible);
12952
12945
  if (needScroll) {
12953
12946
  SurveyElement.ScrollIntoView(el, scrollIntoViewOptions, doneCallback);
12954
12947
  }
12948
+ else {
12949
+ doneCallback && doneCallback();
12950
+ }
12955
12951
  return needScroll;
12956
12952
  };
12957
12953
  SurveyElement.GetFirstNonTextElement = function (elements, removeSpaces) {
@@ -12972,22 +12968,22 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
12972
12968
  }
12973
12969
  return null;
12974
12970
  };
12975
- SurveyElement.FocusElement = function (elementId) {
12971
+ SurveyElement.FocusElement = function (elementId, isTimeOut, containerEl) {
12976
12972
  if (!elementId || !DomDocumentHelper.isAvailable())
12977
12973
  return false;
12978
- var res = SurveyElement.focusElementCore(elementId);
12974
+ var res = !isTimeOut ? SurveyElement.focusElementCore(elementId, containerEl) : false;
12979
12975
  if (!res) {
12980
12976
  setTimeout(function () {
12981
- SurveyElement.focusElementCore(elementId);
12982
- }, 10);
12977
+ SurveyElement.focusElementCore(elementId, containerEl);
12978
+ }, isTimeOut ? 100 : 10);
12983
12979
  }
12984
12980
  return res;
12985
12981
  };
12986
- SurveyElement.focusElementCore = function (elementId) {
12982
+ SurveyElement.focusElementCore = function (elementId, containerEl) {
12987
12983
  var root = settings.environment.root;
12988
- if (!root)
12984
+ if (!root && !containerEl)
12989
12985
  return false;
12990
- var el = root.getElementById(elementId);
12986
+ var el = containerEl ? containerEl.querySelector("#" + CSS.escape(elementId)) : root.getElementById(elementId);
12991
12987
  // https://stackoverflow.com/questions/19669786/check-if-element-is-visible-in-dom
12992
12988
  if (el && !el["disabled"] && el.style.display !== "none" && el.offsetParent !== null) {
12993
12989
  SurveyElement.ScrollElementToViewCore(el, true, false);
@@ -16675,6 +16671,11 @@ var validator_SurveyValidator = /** @class */ (function (_super) {
16675
16671
  _this.createLocalizableString("text", _this, true);
16676
16672
  return _this;
16677
16673
  }
16674
+ Object.defineProperty(SurveyValidator.prototype, "isValidator", {
16675
+ get: function () { return true; },
16676
+ enumerable: false,
16677
+ configurable: true
16678
+ });
16678
16679
  SurveyValidator.prototype.getSurvey = function (live) {
16679
16680
  if (live === void 0) { live = false; }
16680
16681
  return !!this.errorOwner && !!this.errorOwner["getSurvey"]
@@ -19153,6 +19154,7 @@ var question_Question = /** @class */ (function (_super) {
19153
19154
  * @param onError Pass `true` if you want to focus an input field with the first validation error. Default value: `false` (focuses the first input field). Applies to question types with multiple input fields.
19154
19155
  */
19155
19156
  Question.prototype.focus = function (onError, scrollIfVisible) {
19157
+ var _this = this;
19156
19158
  if (onError === void 0) { onError = false; }
19157
19159
  if (this.isDesignMode || !this.isVisible || !this.survey)
19158
19160
  return;
@@ -19162,20 +19164,23 @@ var question_Question = /** @class */ (function (_super) {
19162
19164
  this.survey.focusQuestionByInstance(this, onError);
19163
19165
  }
19164
19166
  else {
19165
- this.focuscore(onError, scrollIfVisible);
19166
- }
19167
- };
19168
- Question.prototype.focuscore = function (onError, scrollIfVisible) {
19169
- if (onError === void 0) { onError = false; }
19170
- if (!!this.survey) {
19171
- this.expandAllParents();
19172
- this.survey.scrollElementToTop(this, this, null, this.id, scrollIfVisible);
19167
+ if (!!this.survey) {
19168
+ this.expandAllParents();
19169
+ var scrollOptions = this.survey["isSmoothScrollEnabled"] ? { behavior: "smooth" } : undefined;
19170
+ this.survey.scrollElementToTop(this, this, null, this.id, scrollIfVisible, scrollOptions, undefined, function () {
19171
+ _this.focusInputElement(onError);
19172
+ });
19173
+ }
19174
+ else {
19175
+ this.focusInputElement(onError);
19176
+ }
19173
19177
  }
19174
- this.focusInputElement(onError);
19175
19178
  };
19176
19179
  Question.prototype.focusInputElement = function (onError) {
19180
+ var _a;
19177
19181
  var id = !onError ? this.getFirstInputElementId() : this.getFirstErrorInputElementId();
19178
- if (survey_element_SurveyElement.FocusElement(id)) {
19182
+ var surveyRoot = (_a = this.survey) === null || _a === void 0 ? void 0 : _a.rootElement;
19183
+ if (survey_element_SurveyElement.FocusElement(id, false, surveyRoot)) {
19179
19184
  this.fireCallback(this.focusCallback);
19180
19185
  }
19181
19186
  };
@@ -20698,9 +20703,12 @@ var question_Question = /** @class */ (function (_super) {
20698
20703
  if (this.isValueEmpty(value) && helpers_Helpers.isNumber(this[propName])) {
20699
20704
  value = 0;
20700
20705
  }
20701
- this[propName] = value;
20706
+ this.updateBindingProp(propName, value);
20702
20707
  }
20703
20708
  };
20709
+ Question.prototype.updateBindingProp = function (propName, value) {
20710
+ this[propName] = value;
20711
+ };
20704
20712
  Question.prototype.getComponentName = function () {
20705
20713
  return RendererFactory.Instance.getRendererByQuestion(this);
20706
20714
  };
@@ -27802,7 +27810,7 @@ var MatrixDropdownRowTextProcessor = /** @class */ (function (_super) {
27802
27810
  textValue.value = this.row.rowIndex;
27803
27811
  return true;
27804
27812
  }
27805
- if (textValue.name == question_matrixdropdownbase_MatrixDropdownRowModelBase.RowValueVariableName) {
27813
+ if ([question_matrixdropdownbase_MatrixDropdownRowModelBase.RowValueVariableName, question_matrixdropdownbase_MatrixDropdownRowModelBase.RowNameVariableName].indexOf(textValue.name) > -1) {
27806
27814
  textValue.isExists = true;
27807
27815
  textValue.value = this.row.rowName;
27808
27816
  return true;
@@ -28036,11 +28044,12 @@ var question_matrixdropdownbase_MatrixDropdownRowModelBase = /** @class */ (func
28036
28044
  MatrixDropdownRowModelBase.prototype.applyRowVariablesToValues = function (res, rowIndex) {
28037
28045
  res[MatrixDropdownRowModelBase.IndexVariableName] = rowIndex;
28038
28046
  res[MatrixDropdownRowModelBase.RowValueVariableName] = this.rowName;
28047
+ res[MatrixDropdownRowModelBase.RowNameVariableName] = this.rowName;
28039
28048
  };
28040
28049
  MatrixDropdownRowModelBase.prototype.runCondition = function (values, properties, rowsVisibleIf) {
28041
- if (!!this.data) {
28042
- values[MatrixDropdownRowModelBase.OwnerVariableName] = this.data.getFilteredData();
28043
- }
28050
+ if (!this.data)
28051
+ return;
28052
+ values[MatrixDropdownRowModelBase.OwnerVariableName] = this.data.getFilteredData();
28044
28053
  var rowIndex = this.rowIndex;
28045
28054
  this.applyRowVariablesToValues(values, rowIndex);
28046
28055
  var newProps = helpers_Helpers.createCopy(properties);
@@ -28451,11 +28460,14 @@ var question_matrixdropdownbase_MatrixDropdownRowModelBase = /** @class */ (func
28451
28460
  };
28452
28461
  Object.defineProperty(MatrixDropdownRowModelBase.prototype, "rowIndex", {
28453
28462
  get: function () {
28454
- return !!this.data ? this.data.getRowIndex(this) + 1 : -1;
28463
+ return this.getRowIndex();
28455
28464
  },
28456
28465
  enumerable: false,
28457
28466
  configurable: true
28458
28467
  });
28468
+ MatrixDropdownRowModelBase.prototype.getRowIndex = function () {
28469
+ return !!this.data ? this.data.getRowIndex(this) + 1 : -1;
28470
+ };
28459
28471
  Object.defineProperty(MatrixDropdownRowModelBase.prototype, "editingObj", {
28460
28472
  get: function () {
28461
28473
  return this.editingObjValue;
@@ -28493,6 +28505,7 @@ var question_matrixdropdownbase_MatrixDropdownRowModelBase = /** @class */ (func
28493
28505
  MatrixDropdownRowModelBase.OwnerVariableName = "self";
28494
28506
  MatrixDropdownRowModelBase.IndexVariableName = "rowIndex";
28495
28507
  MatrixDropdownRowModelBase.RowValueVariableName = "rowValue";
28508
+ MatrixDropdownRowModelBase.RowNameVariableName = "rowName";
28496
28509
  MatrixDropdownRowModelBase.idCounter = 1;
28497
28510
  return MatrixDropdownRowModelBase;
28498
28511
  }());
@@ -29156,9 +29169,9 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
29156
29169
  return !!question ? question.getConditionJson(operator) : null;
29157
29170
  };
29158
29171
  QuestionMatrixDropdownModelBase.prototype.clearIncorrectValues = function () {
29159
- var rows = this.visibleRows;
29160
- if (!rows)
29172
+ if (!Array.isArray(this.visibleRows))
29161
29173
  return;
29174
+ var rows = this.generatedVisibleRows;
29162
29175
  for (var i = 0; i < rows.length; i++) {
29163
29176
  rows[i].clearIncorrectValues(this.getRowValue(i));
29164
29177
  }
@@ -29563,13 +29576,13 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
29563
29576
  * @see setRowValue
29564
29577
  */
29565
29578
  QuestionMatrixDropdownModelBase.prototype.getRowValue = function (rowIndex) {
29566
- if (rowIndex < 0)
29579
+ if (rowIndex < 0 || !Array.isArray(this.visibleRows))
29567
29580
  return null;
29568
- var visRows = this.visibleRows;
29569
- if (rowIndex >= visRows.length)
29581
+ var rows = this.generatedVisibleRows;
29582
+ if (rowIndex >= rows.length)
29570
29583
  return null;
29571
29584
  var newValue = this.createNewValue();
29572
- return this.getRowValueCore(visRows[rowIndex], newValue);
29585
+ return this.getRowValueCore(rows[rowIndex], newValue);
29573
29586
  };
29574
29587
  QuestionMatrixDropdownModelBase.prototype.checkIfValueInRowDuplicated = function (checkedRow, cellQuestion) {
29575
29588
  if (!this.generatedVisibleRows)
@@ -30221,9 +30234,9 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
30221
30234
  return { value: newValue, rowValue: rowValue };
30222
30235
  };
30223
30236
  QuestionMatrixDropdownModelBase.prototype.getRowIndex = function (row) {
30224
- if (!this.generatedVisibleRows)
30237
+ if (!Array.isArray(this.generatedVisibleRows))
30225
30238
  return -1;
30226
- return this.visibleRows.indexOf(row);
30239
+ return this.generatedVisibleRows.indexOf(row);
30227
30240
  };
30228
30241
  QuestionMatrixDropdownModelBase.prototype.getElementsInDesign = function (includeHidden) {
30229
30242
  if (includeHidden === void 0) { includeHidden = false; }
@@ -30621,17 +30634,17 @@ var question_matrixdropdown_QuestionMatrixDropdownModel = /** @class */ (functio
30621
30634
  if (!rows)
30622
30635
  return res;
30623
30636
  for (var i = 0; i < rows.length; i++) {
30624
- var rowValue = rows[i].rowName;
30625
- var val = value[rowValue];
30637
+ var rowName = rows[i].rowName;
30638
+ var val = value[rowName];
30626
30639
  if (!val)
30627
30640
  continue;
30628
30641
  if (keysAsText) {
30629
- var displayRowValue = itemvalue_ItemValue.getTextOrHtmlByValue(this.rows, rowValue);
30642
+ var displayRowValue = itemvalue_ItemValue.getTextOrHtmlByValue(this.rows, rowName);
30630
30643
  if (!!displayRowValue) {
30631
- rowValue = displayRowValue;
30644
+ rowName = displayRowValue;
30632
30645
  }
30633
30646
  }
30634
- res[rowValue] = this.getRowDisplayValue(keysAsText, rows[i], val);
30647
+ res[rowName] = this.getRowDisplayValue(keysAsText, rows[i], val);
30635
30648
  }
30636
30649
  return res;
30637
30650
  };
@@ -30686,11 +30699,11 @@ var question_matrixdropdown_QuestionMatrixDropdownModel = /** @class */ (functio
30686
30699
  }
30687
30700
  _super.prototype.clearGeneratedRows.call(this);
30688
30701
  };
30689
- QuestionMatrixDropdownModel.prototype.getRowValueForCreation = function (val, rowValue) {
30690
- var res = val[rowValue];
30702
+ QuestionMatrixDropdownModel.prototype.getRowValueForCreation = function (val, rowName) {
30703
+ var res = val[rowName];
30691
30704
  if (!res)
30692
30705
  return res;
30693
- var names = this.defaultValuesInRows[rowValue];
30706
+ var names = this.defaultValuesInRows[rowName];
30694
30707
  if (!Array.isArray(names) || names.length === 0)
30695
30708
  return res;
30696
30709
  names.forEach(function (name) {
@@ -30737,8 +30750,8 @@ var question_matrixdropdown_QuestionMatrixDropdownModel = /** @class */ (functio
30737
30750
  val = {};
30738
30751
  for (var i = 0; i < this.rows.length; i++) {
30739
30752
  var row = this.rows[i];
30740
- var rowValue = val[row.value];
30741
- this.updateProgressInfoByRow(res, !!rowValue ? rowValue : {});
30753
+ var rowName = val[row.value];
30754
+ this.updateProgressInfoByRow(res, !!rowName ? rowName : {});
30742
30755
  }
30743
30756
  };
30744
30757
  return QuestionMatrixDropdownModel;
@@ -31572,6 +31585,10 @@ var MatrixDynamicRowModel = /** @class */ (function (_super) {
31572
31585
  _this.buildCells(value);
31573
31586
  return _this;
31574
31587
  }
31588
+ MatrixDynamicRowModel.prototype.getRowIndex = function () {
31589
+ var res = _super.prototype.getRowIndex.call(this);
31590
+ return res > 0 ? res : this.index + 1;
31591
+ };
31575
31592
  Object.defineProperty(MatrixDynamicRowModel.prototype, "rowName", {
31576
31593
  get: function () {
31577
31594
  return this.id;
@@ -31801,6 +31818,7 @@ var question_matrixdynamic_QuestionMatrixDynamicModel = /** @class */ (function
31801
31818
  return this.rowCountValue;
31802
31819
  },
31803
31820
  set: function (val) {
31821
+ val = helpers_Helpers.getNumber(val);
31804
31822
  if (val < 0 || val > settings.matrix.maxRowCount)
31805
31823
  return;
31806
31824
  this.setRowCountValueFromData = false;
@@ -31833,6 +31851,23 @@ var question_matrixdynamic_QuestionMatrixDynamicModel = /** @class */ (function
31833
31851
  enumerable: false,
31834
31852
  configurable: true
31835
31853
  });
31854
+ QuestionMatrixDynamicModel.prototype.updateBindingProp = function (propName, value) {
31855
+ _super.prototype.updateBindingProp.call(this, propName, value);
31856
+ var rows = this.generatedVisibleRows;
31857
+ if (propName !== "rowCount" || !Array.isArray(rows))
31858
+ return;
31859
+ var val = this.getUnbindValue(this.value) || [];
31860
+ if (val.length < rows.length) {
31861
+ var hasValue = false;
31862
+ for (var i = val.length; i < rows.length; i++) {
31863
+ hasValue || (hasValue = !rows[i].isEmpty);
31864
+ val.push(rows[i].value || {});
31865
+ }
31866
+ if (hasValue) {
31867
+ this.value = val;
31868
+ }
31869
+ }
31870
+ };
31836
31871
  QuestionMatrixDynamicModel.prototype.updateProgressInfoByValues = function (res) {
31837
31872
  var val = this.value;
31838
31873
  if (!Array.isArray(val))
@@ -34305,7 +34340,7 @@ var header_Cover = /** @class */ (function (_super) {
34305
34340
  return this.height ? Math.max(this.height, this.actualHeight + 40) + "px" : undefined;
34306
34341
  }
34307
34342
  if (this.survey && this.survey.isMobile) {
34308
- return this.mobileHeight ? Math.max(this.mobileHeight, this.actualHeight + 40) + "px" : undefined;
34343
+ return this.mobileHeight ? Math.max(this.mobileHeight, this.actualHeight) + "px" : undefined;
34309
34344
  }
34310
34345
  return undefined;
34311
34346
  },
@@ -34386,13 +34421,19 @@ var header_Cover = /** @class */ (function (_super) {
34386
34421
  };
34387
34422
  Cover.prototype.processResponsiveness = function (width) {
34388
34423
  if (this.survey && this.survey.rootElement) {
34389
- var logoEl = this.survey.rootElement.querySelectorAll(".sv-header__logo")[0];
34390
- var titleEl = this.survey.rootElement.querySelectorAll(".sv-header__title")[0];
34391
- var descriptionEl = this.survey.rootElement.querySelectorAll(".sv-header__description")[0];
34392
- var logoHeight = logoEl ? logoEl.getBoundingClientRect().height : 0;
34393
- var titleHeight = titleEl ? titleEl.getBoundingClientRect().height : 0;
34394
- var descriptionHeight = descriptionEl ? descriptionEl.getBoundingClientRect().height : 0;
34395
- this.actualHeight = this.calculateActualHeight(logoHeight, titleHeight, descriptionHeight);
34424
+ if (!this.survey.isMobile) {
34425
+ var logoEl = this.survey.rootElement.querySelectorAll(".sv-header__logo")[0];
34426
+ var titleEl = this.survey.rootElement.querySelectorAll(".sv-header__title")[0];
34427
+ var descriptionEl = this.survey.rootElement.querySelectorAll(".sv-header__description")[0];
34428
+ var logoHeight = logoEl ? logoEl.getBoundingClientRect().height : 0;
34429
+ var titleHeight = titleEl ? titleEl.getBoundingClientRect().height : 0;
34430
+ var descriptionHeight = descriptionEl ? descriptionEl.getBoundingClientRect().height : 0;
34431
+ this.actualHeight = this.calculateActualHeight(logoHeight, titleHeight, descriptionHeight);
34432
+ }
34433
+ else {
34434
+ var headerContainer = this.survey.rootElement.querySelectorAll(".sv-header > div")[0];
34435
+ this.actualHeight = headerContainer ? headerContainer.getBoundingClientRect().height : 0;
34436
+ }
34396
34437
  }
34397
34438
  };
34398
34439
  Object.defineProperty(Cover.prototype, "hasBackground", {
@@ -39453,6 +39494,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
39453
39494
  _this.isNavigationButtonPressed = false;
39454
39495
  _this.mouseDownPage = null;
39455
39496
  _this.isCalculatingProgressText = false;
39497
+ _this.isSmoothScrollEnabled = false;
39456
39498
  /**
39457
39499
  * An event that is raised when the survey's width or height is changed.
39458
39500
  */
@@ -39813,7 +39855,6 @@ var survey_SurveyModel = /** @class */ (function (_super) {
39813
39855
  else {
39814
39856
  this.cssValue = value;
39815
39857
  }
39816
- this.updateCss();
39817
39858
  this.updateElementCss(false);
39818
39859
  };
39819
39860
  Object.defineProperty(SurveyModel.prototype, "cssTitle", {
@@ -40475,7 +40516,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
40475
40516
  * - `"onValueChanged"` - Triggers validation each time a question value is changed.
40476
40517
  * - `"onComplete"` - Triggers validation when a user clicks the Complete button. If previous pages contain errors, the survey switches to the page with the first error.
40477
40518
  *
40478
- * > The `"onValueChanged"` doesn't work with date input fields because of the way browsers process date values. In most browsers, the value is considered changed as soon as a user starts entering the date in a text input field. This means that a user may only enter the day without having the chance to enter the month and year before validation is triggered. For this reason, date input fields are validated before the survey is switched to the next page or completed.
40519
+ * > In SurveyJS Form Library v1.12.5 and earlier, the `"onValueChanged"` mode doesn't work with date input fields because of the way browsers process date values. In most browsers, the value is considered changed as soon as a user starts entering the date in a text input field. This means that a user may only enter the day without having the chance to enter the month and year before validation is triggered. For this reason, date input fields are validated before the survey is switched to the next page or completed. Starting with v1.12.6, `"onValueChanged"` works for date input fields as well as for input fields of other types.
40479
40520
  *
40480
40521
  * Refer to the following help topic for more information: [Data Validation](https://surveyjs.io/form-library/documentation/data-validation).
40481
40522
  * @see validationEnabled
@@ -44502,7 +44543,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
44502
44543
  this.onGetMatrixRowActions.fire(this, options);
44503
44544
  return options.actions;
44504
44545
  };
44505
- SurveyModel.prototype.scrollElementToTop = function (element, question, page, id, scrollIfVisible, scrollIntoViewOptions, passedRootElement) {
44546
+ SurveyModel.prototype.scrollElementToTop = function (element, question, page, id, scrollIfVisible, scrollIntoViewOptions, passedRootElement, onScolledCallback) {
44506
44547
  var _this = this;
44507
44548
  var options = {
44508
44549
  element: element,
@@ -44526,11 +44567,12 @@ var survey_SurveyModel = /** @class */ (function (_super) {
44526
44567
  survey_element_SurveyElement.ScrollElementToTop(options.elementId, scrollIfVisible, scrollIntoViewOptions, function () {
44527
44568
  _this.releaseLazyRendering();
44528
44569
  activateLazyRenderingChecks(elementPage_1.id);
44570
+ onScolledCallback && onScolledCallback();
44529
44571
  });
44530
44572
  }, elementsToRenderBefore);
44531
44573
  }
44532
44574
  else {
44533
- survey_element_SurveyElement.ScrollElementToTop(options.elementId, scrollIfVisible, scrollIntoViewOptions);
44575
+ survey_element_SurveyElement.ScrollElementToTop(options.elementId, scrollIfVisible, scrollIntoViewOptions, onScolledCallback);
44534
44576
  }
44535
44577
  }
44536
44578
  };
@@ -46028,11 +46070,13 @@ var survey_SurveyModel = /** @class */ (function (_super) {
46028
46070
  if (!!question.page) {
46029
46071
  this.questionHashesAdded(question);
46030
46072
  }
46031
- if (!this.currentPage) {
46032
- this.updateCurrentPage();
46073
+ if (!this.isLoadingFromJson) {
46074
+ if (!this.currentPage) {
46075
+ this.updateCurrentPage();
46076
+ }
46077
+ this.updateVisibleIndexes();
46078
+ this.setCalculatedWidthModeUpdater();
46033
46079
  }
46034
- this.updateVisibleIndexes();
46035
- this.setCalculatedWidthModeUpdater();
46036
46080
  if (this.canFireAddElement()) {
46037
46081
  this.onQuestionAdded.fire(this, {
46038
46082
  question: question,
@@ -46415,6 +46459,8 @@ var survey_SurveyModel = /** @class */ (function (_super) {
46415
46459
  });
46416
46460
  SurveyModel.prototype.setCalculatedWidthModeUpdater = function () {
46417
46461
  var _this = this;
46462
+ if (this.isLoadingFromJson)
46463
+ return;
46418
46464
  if (this.calculatedWidthModeUpdater)
46419
46465
  this.calculatedWidthModeUpdater.dispose();
46420
46466
  this.calculatedWidthModeUpdater = new ComputedUpdater(function () { return _this.calculateWidthMode(); });
@@ -49838,7 +49884,8 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
49838
49884
  return !this.isDisabledAttr && item.isEnabled;
49839
49885
  };
49840
49886
  QuestionSelectBase.prototype.focusOtherComment = function () {
49841
- survey_element_SurveyElement.FocusElement(this.otherId);
49887
+ var _a;
49888
+ survey_element_SurveyElement.FocusElement(this.otherId, false, (_a = this.survey) === null || _a === void 0 ? void 0 : _a.rootElement);
49842
49889
  };
49843
49890
  QuestionSelectBase.prototype.onValueChanged = function () {
49844
49891
  _super.prototype.onValueChanged.call(this);
@@ -49856,7 +49903,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
49856
49903
  *
49857
49904
  * [View Dropdown Demo](https://surveyjs.io/form-library/examples/dropdown-box-with-custom-items/ (linkStyle))
49858
49905
  *
49859
- * [View Ranking Demo](https://surveyjs.io/form-library/examples/dropdown-box-with-custom-items/ (linkStyle))
49906
+ * [View Ranking Demo](https://surveyjs.io/form-library/examples/ranking-with-custom-items/ (linkStyle))
49860
49907
  */
49861
49908
  get: function () {
49862
49909
  return this.getPropertyValue("itemComponent", this.getDefaultItemComponent());
@@ -53607,7 +53654,7 @@ var question_text_QuestionTextModel = /** @class */ (function (_super) {
53607
53654
  return inputMask;
53608
53655
  };
53609
53656
  QuestionTextModel.prototype.isTextValue = function () {
53610
- return ["text", "number", "password"].indexOf(this.inputType) > -1;
53657
+ return this.isDateInputType || ["text", "number", "password"].indexOf(this.inputType) > -1;
53611
53658
  };
53612
53659
  QuestionTextModel.prototype.getType = function () {
53613
53660
  return "text";
@@ -53951,7 +53998,7 @@ var question_text_QuestionTextModel = /** @class */ (function (_super) {
53951
53998
  if (!this.isMinMaxType)
53952
53999
  return true;
53953
54000
  var isValid = !this.isValueLessMin && !this.isValueGreaterMax;
53954
- if (this.inputType === "number" && !!this.survey &&
54001
+ if ((!isValid || this.errors.length > 0) && !!this.survey &&
53955
54002
  (this.survey.isValidateOnValueChanging || this.survey.isValidateOnValueChanged)) {
53956
54003
  this.hasErrors();
53957
54004
  }
@@ -54081,11 +54128,6 @@ var question_text_QuestionTextModel = /** @class */ (function (_super) {
54081
54128
  enumerable: false,
54082
54129
  configurable: true
54083
54130
  });
54084
- QuestionTextModel.prototype.canRunValidators = function (isOnValueChanged) {
54085
- return (this.errors.length > 0 ||
54086
- !isOnValueChanged ||
54087
- this.supportGoNextPageError());
54088
- };
54089
54131
  QuestionTextModel.prototype.setNewValue = function (newValue) {
54090
54132
  newValue = this.correctValueType(newValue);
54091
54133
  if (!!newValue) {
@@ -58892,8 +58934,12 @@ var question_comment_QuestionCommentModel = /** @class */ (function (_super) {
58892
58934
  Object.defineProperty(QuestionCommentModel.prototype, "renderedAllowResize", {
58893
58935
  get: function () {
58894
58936
  var res = this.allowResize;
58895
- var allowResize = res === undefined && this.survey ? this.survey.allowResizeComment : !!res;
58896
- return allowResize && !this.isPreviewStyle && !this.isReadOnlyStyle;
58937
+ if (res === undefined && this.survey) {
58938
+ return this.survey.allowResizeComment;
58939
+ }
58940
+ else {
58941
+ return !!res;
58942
+ }
58897
58943
  },
58898
58944
  enumerable: false,
58899
58945
  configurable: true
@@ -59351,11 +59397,6 @@ var question_file_QuestionFileModelBase = /** @class */ (function (_super) {
59351
59397
  return QuestionFileModelBase;
59352
59398
  }(question_Question));
59353
59399
 
59354
- /**
59355
- * A class that describes the File Upload question type.
59356
- *
59357
- * [View Demo](https://surveyjs.io/form-library/examples/file-upload/ (linkStyle))
59358
- */
59359
59400
  var question_file_QuestionFilePage = /** @class */ (function (_super) {
59360
59401
  question_file_extends(QuestionFilePage, _super);
59361
59402
  function QuestionFilePage(question, index) {
@@ -59382,6 +59423,11 @@ var question_file_QuestionFilePage = /** @class */ (function (_super) {
59382
59423
  return QuestionFilePage;
59383
59424
  }(base_Base));
59384
59425
 
59426
+ /**
59427
+ * A class that describes the File Upload question type.
59428
+ *
59429
+ * [View Demo](https://surveyjs.io/form-library/examples/file-upload/ (linkStyle))
59430
+ */
59385
59431
  var question_file_QuestionFileModel = /** @class */ (function (_super) {
59386
59432
  question_file_extends(QuestionFileModel, _super);
59387
59433
  function QuestionFileModel(name) {
@@ -66379,15 +66425,31 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66379
66425
  */
66380
66426
  QuestionPanelDynamicModel.prototype.removePanelUI = function (value) {
66381
66427
  var _this = this;
66428
+ var visIndex = this.getVisualPanelIndex(value);
66429
+ if (visIndex < 0 || visIndex >= this.visiblePanelCount)
66430
+ return;
66382
66431
  if (!this.canRemovePanel)
66383
66432
  return;
66433
+ var removePanel = function () {
66434
+ var _a;
66435
+ _this.removePanel(visIndex);
66436
+ var pnlCount = _this.visiblePanelCount;
66437
+ var nextIndex = visIndex >= pnlCount ? pnlCount - 1 : visIndex;
66438
+ var id = pnlCount === 0 ? _this.addButtonId : (nextIndex > -1 ? _this.getPanelRemoveButtonId(_this.visiblePanels[nextIndex]) : "");
66439
+ if (!!id) {
66440
+ survey_element_SurveyElement.FocusElement(id, true, (_a = _this.survey) === null || _a === void 0 ? void 0 : _a.rootElement);
66441
+ }
66442
+ };
66384
66443
  if (this.isRequireConfirmOnDelete(value)) {
66385
- confirmActionAsync(this.confirmDeleteText, function () { _this.removePanel(value); }, undefined, this.getLocale(), this.survey.rootElement);
66444
+ confirmActionAsync(this.confirmDeleteText, function () { removePanel(); }, undefined, this.getLocale(), this.survey.rootElement);
66386
66445
  }
66387
66446
  else {
66388
- this.removePanel(value);
66447
+ removePanel();
66389
66448
  }
66390
66449
  };
66450
+ QuestionPanelDynamicModel.prototype.getPanelRemoveButtonId = function (panel) {
66451
+ return panel.id + "_remove_button";
66452
+ };
66391
66453
  QuestionPanelDynamicModel.prototype.isRequireConfirmOnDelete = function (val) {
66392
66454
  if (!this.confirmDelete)
66393
66455
  return false;
@@ -66528,9 +66590,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66528
66590
  : null;
66529
66591
  };
66530
66592
  QuestionPanelDynamicModel.prototype.addConditionObjectsByContext = function (objects, context) {
66531
- var hasContext = !!context
66532
- ? context === true || this.template.questions.indexOf(context) > -1
66533
- : false;
66593
+ var contextQ = !!(context === null || context === void 0 ? void 0 : context.isValidator) ? context.errorOwner : context;
66594
+ var hasContext = !!context && (context === true || this.template.questions.indexOf(contextQ) > -1);
66534
66595
  var panelObjs = new Array();
66535
66596
  var questions = this.template.questions;
66536
66597
  for (var i = 0; i < questions.length; i++) {
@@ -66883,7 +66944,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66883
66944
  };
66884
66945
  QuestionPanelDynamicModel.prototype.hasErrorInPanels = function (fireCallback, rec) {
66885
66946
  var res = false;
66886
- var panels = this.visiblePanelsCore;
66947
+ var panels = this.visiblePanels;
66887
66948
  var keyValues = [];
66888
66949
  for (var i = 0; i < panels.length; i++) {
66889
66950
  this.setOnCompleteAsyncInPanel(panels[i]);
@@ -70531,8 +70592,8 @@ Serializer.addClass("currencymask", [
70531
70592
 
70532
70593
  var Version;
70533
70594
  var ReleaseDate;
70534
- Version = "" + "1.12.5";
70535
- ReleaseDate = "" + "2024-10-07";
70595
+ Version = "" + "1.12.7";
70596
+ ReleaseDate = "" + "2024-10-23";
70536
70597
  function checkLibraryVersion(ver, libraryName) {
70537
70598
  if (Version != ver) {
70538
70599
  var str = "survey-core has version '" + Version + "' and " + libraryName