survey-react 1.11.11 → 1.11.13

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.
package/survey.react.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.11
2
+ * surveyjs - Survey JavaScript library v1.11.13
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
  */
@@ -2039,8 +2039,7 @@ var englishStrings = {
2039
2039
  // Uncomment the lines below if you create a custom dictionary.
2040
2040
  // Replace "en" with a custom locale code (for example, "fr" or "de"),
2041
2041
  // Replace `englishStrings` with the name of the variable that contains the custom dictionary.
2042
- // surveyLocalization.locales["en"] = englishStrings;
2043
- // surveyLocalization.localeNames["en"] = "English";
2042
+ //surveyLocalization.setupLocale("en", englishStrings, "English", "English");
2044
2043
 
2045
2044
  // CONCATENATED MODULE: ./packages/survey-core/src/surveyStrings.ts
2046
2045
 
@@ -2049,8 +2048,21 @@ var surveyLocalization = {
2049
2048
  defaultLocaleValue: "en",
2050
2049
  locales: {},
2051
2050
  localeNames: {},
2051
+ localeNamesInEnglish: {},
2052
2052
  localeDirections: {},
2053
2053
  supportedLocales: [],
2054
+ useEnglishNames: false,
2055
+ //TODO remove on next week
2056
+ get showNamesInEnglish() { return this.useEnglishNames; },
2057
+ set showNamesInEnglish(val) { this.useEnglishNames = val; },
2058
+ setupLocale: function (loc, strings, name, nameInEngish, direction) {
2059
+ this.locales[loc] = strings;
2060
+ this.localeNames[loc] = name;
2061
+ this.localeNamesInEnglish[loc] = nameInEngish;
2062
+ if (direction !== undefined) {
2063
+ this.localeDirections[loc] = direction;
2064
+ }
2065
+ },
2054
2066
  get currentLocale() {
2055
2067
  return this.currentLocaleValue === this.defaultLocaleValue ? "" : this.currentLocaleValue;
2056
2068
  },
@@ -2102,7 +2114,17 @@ var surveyLocalization = {
2102
2114
  }
2103
2115
  return this.onGetExternalString(strName, locale);
2104
2116
  },
2117
+ getLocaleName: function (loc, inEnglish) {
2118
+ if (!loc)
2119
+ return "";
2120
+ if (inEnglish === undefined)
2121
+ inEnglish = this.showNamesInEnglish;
2122
+ var firstNames = inEnglish ? this.localeNamesInEnglish : this.localeNames;
2123
+ var secondNames = inEnglish ? this.localeNames : this.localeNamesInEnglish;
2124
+ return firstNames[loc] || secondNames[loc] || loc;
2125
+ },
2105
2126
  getLocales: function (removeDefaultLoc) {
2127
+ var _this = this;
2106
2128
  if (removeDefaultLoc === void 0) { removeDefaultLoc = false; }
2107
2129
  var res = [];
2108
2130
  res.push("");
@@ -2119,12 +2141,7 @@ var surveyLocalization = {
2119
2141
  res.push(key);
2120
2142
  }
2121
2143
  var locName = function (loc) {
2122
- if (!loc)
2123
- return "";
2124
- var res = surveyLocalization.localeNames[loc];
2125
- if (!res)
2126
- res = loc;
2127
- return res.toLowerCase();
2144
+ return _this.getLocaleName(loc).toLowerCase();
2128
2145
  };
2129
2146
  res.sort(function (a, b) {
2130
2147
  var str1 = locName(a);
@@ -5379,11 +5396,27 @@ var expressions_FunctionOperand = /** @class */ (function (_super) {
5379
5396
  return true;
5380
5397
  };
5381
5398
  FunctionOperand.prototype.hasAsyncFunction = function () {
5399
+ return this.isAsyncFunction() || this.parameters.hasAsyncFunction();
5400
+ };
5401
+ FunctionOperand.prototype.isAsyncFunction = function () {
5382
5402
  return functionsfactory_FunctionFactory.Instance.isAsyncFunction(this.originalValue);
5383
5403
  };
5384
5404
  FunctionOperand.prototype.addToAsyncList = function (list) {
5385
- if (this.hasAsyncFunction()) {
5386
- list.push(this);
5405
+ var item = undefined;
5406
+ if (this.isAsyncFunction()) {
5407
+ item = { operand: this };
5408
+ }
5409
+ if (this.parameters.hasAsyncFunction()) {
5410
+ var children = new Array();
5411
+ this.parameters.addToAsyncList(children);
5412
+ children.forEach(function (child) { return child.parent = item; });
5413
+ if (!item) {
5414
+ item = {};
5415
+ }
5416
+ item.children = children;
5417
+ }
5418
+ if (item) {
5419
+ list.push(item);
5387
5420
  }
5388
5421
  };
5389
5422
  FunctionOperand.prototype.isContentEqual = function (op) {
@@ -8742,7 +8775,6 @@ var conditions_ExpressionExecutor = /** @class */ (function () {
8742
8775
  return !!this.operand;
8743
8776
  };
8744
8777
  ExpressionExecutor.prototype.run = function (values, properties) {
8745
- var _this = this;
8746
8778
  if (properties === void 0) { properties = null; }
8747
8779
  if (!this.operand) {
8748
8780
  if (!!this.expression) {
@@ -8754,25 +8786,57 @@ var conditions_ExpressionExecutor = /** @class */ (function () {
8754
8786
  this.processValue.properties = properties;
8755
8787
  if (!this.isAsync)
8756
8788
  return this.runValues();
8757
- this.asyncFuncList = [];
8789
+ this.asyncFuncList = new Array();
8758
8790
  this.operand.addToAsyncList(this.asyncFuncList);
8759
8791
  for (var i = 0; i < this.asyncFuncList.length; i++) {
8760
- this.asyncFuncList[i].onAsyncReady = function () {
8761
- _this.doAsyncFunctionReady();
8762
- };
8763
- }
8764
- for (var i = 0; i < this.asyncFuncList.length; i++) {
8765
- this.asyncFuncList[i].evaluateAsync(this.processValue);
8792
+ this.runAsyncItem(this.asyncFuncList[i]);
8766
8793
  }
8767
8794
  return false;
8768
8795
  };
8769
- ExpressionExecutor.prototype.doAsyncFunctionReady = function () {
8796
+ ExpressionExecutor.prototype.runAsyncItem = function (item) {
8797
+ var _this = this;
8798
+ if (item.children) {
8799
+ item.children.forEach(function (child) { return _this.runAsyncItem(child); });
8800
+ }
8801
+ else {
8802
+ this.runAsyncItemCore(item);
8803
+ }
8804
+ };
8805
+ ExpressionExecutor.prototype.runAsyncItemCore = function (item) {
8806
+ var _this = this;
8807
+ if (item.operand) {
8808
+ item.operand.onAsyncReady = function () { return _this.doAsyncFunctionReady(item); };
8809
+ item.operand.evaluateAsync(this.processValue);
8810
+ }
8811
+ else {
8812
+ this.doAsyncFunctionReady(item);
8813
+ }
8814
+ };
8815
+ ExpressionExecutor.prototype.doAsyncFunctionReady = function (item) {
8816
+ if (item.parent && this.isAsyncChildrenReady(item)) {
8817
+ this.runAsyncItemCore(item.parent);
8818
+ return;
8819
+ }
8770
8820
  for (var i = 0; i < this.asyncFuncList.length; i++) {
8771
- if (!this.asyncFuncList[i].isReady)
8821
+ if (!this.isAsyncFuncReady(this.asyncFuncList[i]))
8772
8822
  return;
8773
8823
  }
8774
8824
  this.runValues();
8775
8825
  };
8826
+ ExpressionExecutor.prototype.isAsyncFuncReady = function (item) {
8827
+ if (item.operand && !item.operand.isReady)
8828
+ return false;
8829
+ return this.isAsyncChildrenReady(item);
8830
+ };
8831
+ ExpressionExecutor.prototype.isAsyncChildrenReady = function (item) {
8832
+ if (item.children) {
8833
+ for (var i = 0; i < item.children.length; i++) {
8834
+ if (!this.isAsyncFuncReady(item.children[i]))
8835
+ return false;
8836
+ }
8837
+ }
8838
+ return true;
8839
+ };
8776
8840
  ExpressionExecutor.prototype.runValues = function () {
8777
8841
  var res = this.operand.evaluate(this.processValue);
8778
8842
  if (!!this.onComplete) {
@@ -25966,6 +26030,14 @@ var question_matrixdropdownrendered_QuestionMatrixDropdownRenderedCell = /** @cl
25966
26030
  enumerable: false,
25967
26031
  configurable: true
25968
26032
  });
26033
+ Object.defineProperty(QuestionMatrixDropdownRenderedCell.prototype, "isVisible", {
26034
+ get: function () {
26035
+ var _a;
26036
+ return (!this.hasQuestion && !this.isErrorsCell) || !((_a = this.matrix) === null || _a === void 0 ? void 0 : _a.isMobile) || this.question.isVisible;
26037
+ },
26038
+ enumerable: false,
26039
+ configurable: true
26040
+ });
25969
26041
  Object.defineProperty(QuestionMatrixDropdownRenderedCell.prototype, "showResponsiveTitle", {
25970
26042
  get: function () {
25971
26043
  var _a;
@@ -27011,9 +27083,6 @@ var question_matrixdropdownrendered_QuestionMatrixDropdownRenderedTable = /** @c
27011
27083
  QuestionMatrixDropdownRenderedTable.prototype.createTextCell = function (locTitle) {
27012
27084
  var cell = new question_matrixdropdownrendered_QuestionMatrixDropdownRenderedCell();
27013
27085
  cell.locTitle = locTitle;
27014
- if (!!locTitle) {
27015
- locTitle.strChanged();
27016
- }
27017
27086
  if (!!this.cssClasses.cell) {
27018
27087
  cell.className = this.cssClasses.cell;
27019
27088
  }
@@ -27535,6 +27604,9 @@ var question_matrixdropdownbase_MatrixDropdownRowModelBase = /** @class */ (func
27535
27604
  if (this.isSettingValue)
27536
27605
  return;
27537
27606
  this.updateQuestionsValue(name, newColumnValue, isComment);
27607
+ if (!isComment) {
27608
+ this.updateSharedQuestionsValue(name, newColumnValue);
27609
+ }
27538
27610
  var newValue = this.value;
27539
27611
  var changedName = isComment ? name + base_Base.commentSuffix : name;
27540
27612
  var changedValue = newColumnValue;
@@ -27580,6 +27652,18 @@ var question_matrixdropdownbase_MatrixDropdownRowModelBase = /** @class */ (func
27580
27652
  }
27581
27653
  this.isSettingValue = false;
27582
27654
  };
27655
+ MatrixDropdownRowModelBase.prototype.updateSharedQuestionsValue = function (name, value) {
27656
+ var questions = this.getQuestionsByValueName(name);
27657
+ if (questions.length > 1) {
27658
+ for (var i = 0; i < questions.length; i++) {
27659
+ if (!helpers_Helpers.isTwoValueEquals(questions[i].value, value)) {
27660
+ this.isSettingValue = true;
27661
+ questions[i].updateValueFromSurvey(value);
27662
+ this.isSettingValue = false;
27663
+ }
27664
+ }
27665
+ }
27666
+ };
27583
27667
  MatrixDropdownRowModelBase.prototype.runTriggers = function (name, value) {
27584
27668
  if (!name)
27585
27669
  return;
@@ -27668,6 +27752,19 @@ var question_matrixdropdownbase_MatrixDropdownRowModelBase = /** @class */ (func
27668
27752
  }
27669
27753
  return res;
27670
27754
  };
27755
+ MatrixDropdownRowModelBase.prototype.getQuestionsByValueName = function (name) {
27756
+ var res = [];
27757
+ for (var i = 0; i < this.cells.length; i++) {
27758
+ var cell = this.cells[i];
27759
+ if (cell.question && cell.question.getValueName() === name) {
27760
+ res.push(cell.question);
27761
+ }
27762
+ }
27763
+ if (!!this.detailPanel) {
27764
+ res = res.concat(this.detailPanel.getQuestionsByValueName(name));
27765
+ }
27766
+ return res;
27767
+ };
27671
27768
  MatrixDropdownRowModelBase.prototype.getSharedQuestionByName = function (columnName) {
27672
27769
  return !!this.data
27673
27770
  ? this.data.getSharedQuestionByName(columnName, this)
@@ -27771,6 +27868,9 @@ var question_matrixdropdownbase_MatrixDropdownRowModelBase = /** @class */ (func
27771
27868
  return res;
27772
27869
  };
27773
27870
  MatrixDropdownRowModelBase.prototype.updateCellOnColumnChanged = function (cell, name, newValue) {
27871
+ if (name === "choices" && Array.isArray(newValue) && newValue.length === 0 && this.data) {
27872
+ newValue = this.data.choices;
27873
+ }
27774
27874
  cell.question[name] = newValue;
27775
27875
  };
27776
27876
  MatrixDropdownRowModelBase.prototype.updateCellOnColumnItemValueChanged = function (cell, propertyName, obj, name, newValue, oldValue) {
@@ -29722,6 +29822,7 @@ Serializer.addClass("matrixdropdownbase", [
29722
29822
  },
29723
29823
  {
29724
29824
  name: "detailElements",
29825
+ baseClassName: "question",
29725
29826
  visible: false,
29726
29827
  isLightSerializable: false,
29727
29828
  },
@@ -34823,12 +34924,17 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
34823
34924
  return null;
34824
34925
  };
34825
34926
  PanelModelBase.prototype.getQuestionByValueName = function (valueName) {
34927
+ var res = this.getQuestionsByValueName(valueName);
34928
+ return res.length > 0 ? res[0] : null;
34929
+ };
34930
+ PanelModelBase.prototype.getQuestionsByValueName = function (valueName) {
34931
+ var res = [];
34826
34932
  var questions = this.questions;
34827
34933
  for (var i = 0; i < questions.length; i++) {
34828
34934
  if (questions[i].getValueName() == valueName)
34829
- return questions[i];
34935
+ res.push(questions[i]);
34830
34936
  }
34831
- return null;
34937
+ return res;
34832
34938
  };
34833
34939
  /**
34834
34940
  * Returns a JSON object with question values nested in the panel/page.
@@ -38464,14 +38570,6 @@ var survey_SurveyModel = /** @class */ (function (_super) {
38464
38570
  _this._isMobile = false;
38465
38571
  _this._isCompact = false;
38466
38572
  _this._isDesignMode = false;
38467
- /**
38468
- * Specifies whether data validation is enabled.
38469
- *
38470
- * Default value: `true`
38471
- * @see checkErrorsMode
38472
- * @see hideRequiredErrors
38473
- */
38474
- _this.validationEnabled = true;
38475
38573
  /**
38476
38574
  * Specifies whether respondents can switch the current page even if it contains validation errors.
38477
38575
  *
@@ -46191,6 +46289,9 @@ var survey_SurveyModel = /** @class */ (function (_super) {
46191
46289
  survey_decorate([
46192
46290
  jsonobject_property()
46193
46291
  ], SurveyModel.prototype, "progressBarInheritWidthFrom", void 0);
46292
+ survey_decorate([
46293
+ jsonobject_property({ defaultValue: true })
46294
+ ], SurveyModel.prototype, "validationEnabled", void 0);
46194
46295
  survey_decorate([
46195
46296
  jsonobject_property()
46196
46297
  ], SurveyModel.prototype, "rootCss", void 0);
@@ -52182,6 +52283,22 @@ var InputElementAdapter = /** @class */ (function () {
52182
52283
  }());
52183
52284
 
52184
52285
 
52286
+ // CONCATENATED MODULE: ./packages/survey-core/src/mask/mask_utils.ts
52287
+
52288
+ var numberDefinition = /[0-9]/;
52289
+ function getAvailableMaskTypeChoices() {
52290
+ var classes = Serializer.getChildrenClasses("masksettings") || [];
52291
+ var choices = classes.map(function (cl) {
52292
+ var value = cl.name;
52293
+ if (cl.name.indexOf("mask") !== -1) {
52294
+ value = value.slice(0, value.indexOf("mask"));
52295
+ }
52296
+ return value;
52297
+ });
52298
+ choices.unshift("none");
52299
+ return choices;
52300
+ }
52301
+
52185
52302
  // CONCATENATED MODULE: ./packages/survey-core/src/question_text.ts
52186
52303
  var question_text_extends = (undefined && undefined.__extends) || (function () {
52187
52304
  var extendStatics = function (d, b) {
@@ -52213,6 +52330,7 @@ var question_text_decorate = (undefined && undefined.__decorate) || function (de
52213
52330
 
52214
52331
 
52215
52332
 
52333
+
52216
52334
  /**
52217
52335
  * A class that describes the Single-Line Input question type.
52218
52336
  *
@@ -53083,14 +53201,18 @@ Serializer.addClass("text", [
53083
53201
  return isMinMaxType(obj);
53084
53202
  },
53085
53203
  },
53086
- { name: "inputTextAlignment", default: "auto", choices: ["left", "right", "auto"], visible: false },
53204
+ { name: "inputTextAlignment", default: "auto", choices: ["left", "right", "auto"] },
53087
53205
  {
53088
- name: "maskType:masktype",
53206
+ name: "maskType",
53089
53207
  default: "none",
53090
53208
  visibleIndex: 0,
53091
53209
  dependsOn: "inputType",
53092
53210
  visibleIf: function (obj) {
53093
53211
  return obj.inputType === "text" || obj.inputType === "tel";
53212
+ },
53213
+ choices: function (obj) {
53214
+ var choices = getAvailableMaskTypeChoices();
53215
+ return choices;
53094
53216
  }
53095
53217
  },
53096
53218
  {
@@ -53186,6 +53308,7 @@ var question_multipletext_decorate = (undefined && undefined.__decorate) || func
53186
53308
 
53187
53309
 
53188
53310
 
53311
+
53189
53312
  var MultipleTextEditorModel = /** @class */ (function (_super) {
53190
53313
  question_multipletext_extends(MultipleTextEditorModel, _super);
53191
53314
  function MultipleTextEditorModel() {
@@ -53569,6 +53692,15 @@ var question_multipletext_MultipleTextItemModel = /** @class */ (function (_supe
53569
53692
  configurable: true
53570
53693
  });
53571
53694
  Object.defineProperty(MultipleTextItemModel.prototype, "inputTextAlignment", {
53695
+ /**
53696
+ * Specifies text alignment within the input field.
53697
+ *
53698
+ * Possible values:
53699
+ *
53700
+ * - `"left"` - Aligns input text to the left side.
53701
+ * - `"right"` - Aligns input text to the right side.
53702
+ * - `"auto"` (default) - Applies right alignment if a [numeric or currency input mask](https://surveyjs.io/form-library/documentation/api-reference/multipletextitemmodel#maskType) is specified. Otherwise, applies left alignment.
53703
+ */
53572
53704
  get: function () {
53573
53705
  return this.editor.inputTextAlignment;
53574
53706
  },
@@ -54287,12 +54419,16 @@ Serializer.addClass("multipletextitem", [
54287
54419
  choices: settings.questions.inputTypes,
54288
54420
  },
54289
54421
  {
54290
- name: "maskType:masktype",
54422
+ name: "maskType",
54291
54423
  default: "none",
54292
54424
  visibleIndex: 0,
54293
54425
  dependsOn: "inputType",
54294
54426
  visibleIf: function (obj) {
54295
54427
  return obj.inputType === "text";
54428
+ },
54429
+ choices: function (obj) {
54430
+ var choices = getAvailableMaskTypeChoices();
54431
+ return choices;
54296
54432
  }
54297
54433
  },
54298
54434
  {
@@ -54310,7 +54446,7 @@ Serializer.addClass("multipletextitem", [
54310
54446
  obj.maskSettings.setData(value);
54311
54447
  },
54312
54448
  },
54313
- { name: "inputTextAlignment", default: "auto", choices: ["left", "right", "auto"], visible: false },
54449
+ { name: "inputTextAlignment", default: "auto", choices: ["left", "right", "auto"] },
54314
54450
  { name: "title", serializationProperty: "locTitle" },
54315
54451
  { name: "maxLength:number", default: -1 },
54316
54452
  { name: "size:number", minValue: 0 },
@@ -57629,7 +57765,6 @@ questionfactory_QuestionFactory.Instance.registerQuestion("comment", function (n
57629
57765
 
57630
57766
  // CONCATENATED MODULE: ./packages/survey-core/src/utils/camera.ts
57631
57767
 
57632
-
57633
57768
  var camera_Camera = /** @class */ (function () {
57634
57769
  function Camera() {
57635
57770
  this.canFlipValue = undefined;
@@ -57732,27 +57867,25 @@ var camera_Camera = /** @class */ (function () {
57732
57867
  audio: false
57733
57868
  };
57734
57869
  };
57735
- Camera.prototype.startVideo = function (videoElementId, callback, imageWidth, imageHeight) {
57870
+ Camera.prototype.startVideo = function (videoElement, callback, imageWidth, imageHeight) {
57736
57871
  var _this = this;
57737
- var _a;
57738
- var videoEl = (_a = settings.environment.root) === null || _a === void 0 ? void 0 : _a.getElementById(videoElementId);
57739
- if (!videoEl) {
57872
+ if (!videoElement) {
57740
57873
  callback(undefined);
57741
57874
  return;
57742
57875
  }
57743
- videoEl.style.width = "100%";
57744
- videoEl.style.height = "auto";
57745
- videoEl.style.height = "100%";
57746
- videoEl.style.objectFit = "contain";
57876
+ videoElement.style.width = "100%";
57877
+ videoElement.style.height = "auto";
57878
+ videoElement.style.height = "100%";
57879
+ videoElement.style.objectFit = "contain";
57747
57880
  var mediaConstraints = this.getMediaConstraints({ width: imageWidth, height: imageHeight });
57748
57881
  navigator.mediaDevices.getUserMedia(mediaConstraints).then(function (stream) {
57749
57882
  var _a;
57750
- videoEl.srcObject = stream;
57883
+ videoElement.srcObject = stream;
57751
57884
  if (!((_a = Camera.cameraList[Camera.cameraIndex]) === null || _a === void 0 ? void 0 : _a.deviceId) && !!stream.getTracks()[0].getCapabilities().facingMode) {
57752
57885
  Camera.canSwitchFacingMode = true;
57753
57886
  _this.updateCanFlipValue();
57754
57887
  }
57755
- videoEl.play();
57888
+ videoElement.play();
57756
57889
  callback(stream);
57757
57890
  })
57758
57891
  .catch(function (error) {
@@ -57762,15 +57895,14 @@ var camera_Camera = /** @class */ (function () {
57762
57895
  Camera.prototype.getImageSize = function (videoEl) {
57763
57896
  return { width: videoEl.videoWidth, height: videoEl.videoHeight };
57764
57897
  };
57765
- Camera.prototype.snap = function (videoElementId, callback) {
57898
+ Camera.prototype.snap = function (videoElement, callback) {
57899
+ if (!videoElement)
57900
+ return false;
57766
57901
  if (!DomDocumentHelper.isAvailable())
57767
57902
  return false;
57768
57903
  var root = DomDocumentHelper.getDocument();
57769
- var videoEl = root === null || root === void 0 ? void 0 : root.getElementById(videoElementId);
57770
- if (!videoEl)
57771
- return false;
57772
57904
  var canvasEl = root.createElement("canvas");
57773
- var imageSize = this.getImageSize(videoEl);
57905
+ var imageSize = this.getImageSize(videoElement);
57774
57906
  canvasEl.height = imageSize.height;
57775
57907
  canvasEl.width = imageSize.width;
57776
57908
  var context = canvasEl.getContext("2d");
@@ -57781,7 +57913,7 @@ var camera_Camera = /** @class */ (function () {
57781
57913
  }
57782
57914
  */
57783
57915
  context.clearRect(0, 0, canvasEl.width, canvasEl.height);
57784
- context.drawImage(videoEl, 0, 0, canvasEl.width, canvasEl.height);
57916
+ context.drawImage(videoElement, 0, 0, canvasEl.width, canvasEl.height);
57785
57917
  canvasEl.toBlob(callback, "image/png");
57786
57918
  return true;
57787
57919
  };
@@ -58244,9 +58376,17 @@ var question_file_QuestionFileModel = /** @class */ (function (_super) {
58244
58376
  _this.startVideoInCamera();
58245
58377
  }, 0);
58246
58378
  };
58379
+ Object.defineProperty(QuestionFileModel.prototype, "videoHtmlElement", {
58380
+ get: function () {
58381
+ var _a;
58382
+ return (_a = this.rootElement) === null || _a === void 0 ? void 0 : _a.querySelector("#" + this.videoId);
58383
+ },
58384
+ enumerable: false,
58385
+ configurable: true
58386
+ });
58247
58387
  QuestionFileModel.prototype.startVideoInCamera = function () {
58248
58388
  var _this = this;
58249
- this.camera.startVideo(this.videoId, function (stream) {
58389
+ this.camera.startVideo(this.videoHtmlElement, function (stream) {
58250
58390
  _this.videoStream = stream;
58251
58391
  if (!stream) {
58252
58392
  _this.stopVideo();
@@ -58267,7 +58407,7 @@ var question_file_QuestionFileModel = /** @class */ (function (_super) {
58267
58407
  _this.loadFiles([file]);
58268
58408
  }
58269
58409
  };
58270
- this.camera.snap(this.videoId, blobCallback);
58410
+ this.camera.snap(this.videoHtmlElement, blobCallback);
58271
58411
  this.stopVideo();
58272
58412
  };
58273
58413
  QuestionFileModel.prototype.canFlipCamera = function () {
@@ -60038,7 +60178,7 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
60038
60178
  QuestionRatingModel.prototype.setValueFromClick = function (value) {
60039
60179
  if (this.isReadOnlyAttr)
60040
60180
  return;
60041
- if (this.value === parseFloat(value)) {
60181
+ if (this.value === ((typeof (this.value) === "string") ? value : parseFloat(value))) {
60042
60182
  this.clearValue(true);
60043
60183
  }
60044
60184
  else {
@@ -63382,7 +63522,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63382
63522
  _this.registerPropertyChangedHandlers(["panelsState"], function () {
63383
63523
  _this.setPanelsState();
63384
63524
  });
63385
- _this.registerPropertyChangedHandlers(["isMobile", "newPanelPosition", "showRangeInProgress", "renderMode"], function () {
63525
+ _this.registerPropertyChangedHandlers(["isMobile", "newPanelPosition", "displayMode", "showProgressBar"], function () {
63386
63526
  _this.updateFooterActions();
63387
63527
  });
63388
63528
  _this.registerPropertyChangedHandlers(["allowAddPanel"], function () { _this.updateNoEntriesTextDefaultLoc(); });
@@ -63538,7 +63678,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63538
63678
  });
63539
63679
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "templateTabTitle", {
63540
63680
  /**
63541
- * A template for tab titles. Applies when [`renderMode`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#renderMode) is `"tab"`.
63681
+ * A template for tab titles. Applies when [`displayMode`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#displayMode) is `"tab"`.
63542
63682
  *
63543
63683
  * The template can contain the following placeholders:
63544
63684
  *
@@ -63550,7 +63690,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63550
63690
  * [View Demo](https://surveyjs.io/form-library/examples/tabbed-interface-for-duplicate-group-option/ (linkStyle))
63551
63691
  * @see templateTitle
63552
63692
  * @see tabTitlePlaceholder
63553
- * @see renderMode
63693
+ * @see displayMode
63554
63694
  */
63555
63695
  get: function () {
63556
63696
  return this.locTemplateTabTitle.text;
@@ -63730,11 +63870,11 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63730
63870
  /**
63731
63871
  * A zero-based index of the currently displayed panel.
63732
63872
  *
63733
- * When `renderMode` is `"list"` or Dynamic Panel is empty (`panelCount` is 0), this property contains -1.
63873
+ * When `displayMode` is `"list"` or Dynamic Panel is empty (`panelCount` is 0), this property contains -1.
63734
63874
  * @see currentPanel
63735
63875
  * @see panels
63736
63876
  * @see panelCount
63737
- * @see renderMode
63877
+ * @see displayMode
63738
63878
  */
63739
63879
  get: function () {
63740
63880
  if (this.isRenderModeList)
@@ -63757,11 +63897,11 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
63757
63897
  /**
63758
63898
  * A `PanelModel` object that is the currently displayed panel.
63759
63899
  *
63760
- * When `renderMode` is `"list"` or Dynamic Panel is empty (`panelCount` is 0), this property contains `null`.
63900
+ * When `displayMode` is `"list"` or Dynamic Panel is empty (`panelCount` is 0), this property contains `null`.
63761
63901
  * @see currentIndex
63762
63902
  * @see panels
63763
63903
  * @see panelCount
63764
- * @see renderMode
63904
+ * @see displayMode
63765
63905
  */
63766
63906
  get: function () {
63767
63907
  if (this.isDesignMode)
@@ -64011,8 +64151,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64011
64151
  });
64012
64152
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "panelPrevText", {
64013
64153
  /**
64014
- * A caption for the Previous button. Applies only if `renderMode` is different from `"list"`.
64015
- * @see renderMode
64154
+ * A caption for the Previous button. Applies only if `displayMode` is different from `"list"`.
64155
+ * @see displayMode
64016
64156
  * @see isPrevButtonVisible
64017
64157
  */
64018
64158
  get: function () {
@@ -64033,8 +64173,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64033
64173
  });
64034
64174
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "panelNextText", {
64035
64175
  /**
64036
- * A caption for the Next button. Applies only if `renderMode` is different from `"list"`.
64037
- * @see renderMode
64176
+ * A caption for the Next button. Applies only if `displayMode` is different from `"list"`.
64177
+ * @see displayMode
64038
64178
  * @see isNextButtonVisible
64039
64179
  */
64040
64180
  get: function () {
@@ -64095,21 +64235,15 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64095
64235
  configurable: true
64096
64236
  });
64097
64237
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "isProgressTopShowing", {
64098
- /**
64099
- * Returns true when the renderMode equals to "progressTop" or "progressTopBottom"
64100
- */
64101
64238
  get: function () {
64102
- return this.renderMode === "progressTop" || this.renderMode === "progressTopBottom";
64239
+ return this.displayMode == "carousel" && (this.progressBarLocation === "top" || this.progressBarLocation === "topBottom");
64103
64240
  },
64104
64241
  enumerable: false,
64105
64242
  configurable: true
64106
64243
  });
64107
64244
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "isProgressBottomShowing", {
64108
- /**
64109
- * Returns true when the renderMode equals to "progressBottom" or "progressTopBottom"
64110
- */
64111
64245
  get: function () {
64112
- return this.renderMode === "progressBottom" || this.renderMode === "progressTopBottom";
64246
+ return this.displayMode == "carousel" && (this.progressBarLocation === "bottom" || this.progressBarLocation === "topBottom");
64113
64247
  },
64114
64248
  enumerable: false,
64115
64249
  configurable: true
@@ -64149,9 +64283,6 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64149
64283
  configurable: true
64150
64284
  });
64151
64285
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "isRangeShowing", {
64152
- /**
64153
- * Returns true when showRangeInProgress equals to true, renderMode doesn't equal to "list" and visiblePanelCount is >= 2.
64154
- */
64155
64286
  get: function () {
64156
64287
  return (this.showRangeInProgress && this.currentIndex >= 0 && this.visiblePanelCount > 1);
64157
64288
  },
@@ -64228,7 +64359,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64228
64359
  for (var i = this.panelCount; i < val; i++) {
64229
64360
  var panel = this.createNewPanel();
64230
64361
  this.panelsCore.push(panel);
64231
- if (this.renderMode == "list" && this.panelsState != "default") {
64362
+ if (this.displayMode == "list" && this.panelsState != "default") {
64232
64363
  if (this.panelsState === "expanded") {
64233
64364
  panel.expand();
64234
64365
  }
@@ -64264,7 +64395,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64264
64395
  });
64265
64396
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "panelsState", {
64266
64397
  /**
64267
- * Specifies whether users can expand and collapse panels. Applies if `renderMode` is `"list"` and the `templateTitle` property is specified.
64398
+ * Specifies whether users can expand and collapse panels. Applies if `displayMode` is `"list"` and the `templateTitle` property is specified.
64268
64399
  *
64269
64400
  * Possible values:
64270
64401
  *
@@ -64272,7 +64403,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64272
64403
  * - `"expanded"` - All panels are displayed in full and can be collapsed in the UI.
64273
64404
  * - `"collapsed"` - All panels display only their titles and descriptions and can be expanded in the UI.
64274
64405
  * - `"firstExpanded"` - Only the first panel is displayed in full; other panels are collapsed and can be expanded in the UI.
64275
- * @see renderMode
64406
+ * @see displayMode
64276
64407
  * @see templateTitle
64277
64408
  */
64278
64409
  get: function () {
@@ -64298,7 +64429,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64298
64429
  }
64299
64430
  };
64300
64431
  QuestionPanelDynamicModel.prototype.setPanelsState = function () {
64301
- if (this.useTemplatePanel || this.renderMode != "list" || !this.templateTitle)
64432
+ if (this.useTemplatePanel || this.displayMode != "list" || !this.templateTitle)
64302
64433
  return;
64303
64434
  for (var i = 0; i < this.panelsCore.length; i++) {
64304
64435
  var state = this.panelsState;
@@ -64511,46 +64642,68 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64511
64642
  });
64512
64643
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "showRangeInProgress", {
64513
64644
  /**
64514
- * Shows the range from 1 to panelCount when renderMode doesn't equal to "list". Set to false to hide this element.
64515
- * @see panelCount
64516
- * @see renderMode
64645
+ * Obsolete. Use the [`showProgressBar`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#showProgressBar) property instead.
64646
+ * @deprecated
64517
64647
  */
64518
64648
  get: function () {
64519
- return this.getPropertyValue("showRangeInProgress");
64649
+ return this.showProgressBar;
64650
+ // return this.getPropertyValue("showRangeInProgress");
64520
64651
  },
64521
64652
  set: function (val) {
64522
- this.setPropertyValue("showRangeInProgress", val);
64523
- this.fireCallback(this.currentIndexChangedCallback);
64653
+ this.showProgressBar = val;
64654
+ // this.setPropertyValue("showRangeInProgress", val);
64524
64655
  },
64525
64656
  enumerable: false,
64526
64657
  configurable: true
64527
64658
  });
64528
64659
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "renderMode", {
64529
64660
  /**
64530
- * Specifies how to render panels.
64531
- *
64532
- * Possible values:
64533
- *
64534
- * - `"list"` (default) - Renders panels one under the other. [View Demo](https://surveyjs.io/form-library/examples/how-to-use-expressions-in-dynamic-panel/)
64535
- * - `"progressTop"` - Renders each panel as a card and displays a progress bar at the top. [View Demo](https://surveyjs.io/form-library/examples/questiontype-paneldynamic/)
64536
- * - `"progressBottom"` - Renders each panel panel as a card and displays a progress bar at the bottom.
64537
- * - `"progressTopBottom"` - Renders each panel as a card and displays a progress bar at the top and bottom.
64538
- * - `"tab"` - Renders each panel within a tab. Use the [`templateTabTitle`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#templateTabTitle) to specify a template for tab titles. [View Demo](https://surveyjs.io/form-library/examples/tabbed-interface-for-duplicate-group-option/)
64661
+ * Obsolete. Use the [`displayMode`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#displayMode) property instead.
64662
+ * @deprecated
64539
64663
  */
64540
64664
  get: function () {
64541
- return this.getPropertyValue("renderMode");
64665
+ var displayMode = this.displayMode;
64666
+ if (displayMode == "carousel") {
64667
+ var progressBarLocation = this.progressBarLocation;
64668
+ if (progressBarLocation == "top") {
64669
+ return "progressTop";
64670
+ }
64671
+ else if (progressBarLocation == "bottom") {
64672
+ return "progressBottom";
64673
+ }
64674
+ else if (progressBarLocation == "topBottom") {
64675
+ return "progressTopBottom";
64676
+ }
64677
+ }
64678
+ return displayMode;
64542
64679
  },
64543
64680
  set: function (val) {
64544
- this.setPropertyValue("renderMode", val);
64545
- this.fireCallback(this.renderModeChangedCallback);
64546
- this.blockAnimations();
64547
- this.updateRenderedPanels();
64548
- this.releaseAnimations();
64549
- this.updatePanelsAnimation();
64681
+ if ((val || "").startsWith("progress")) {
64682
+ if (val == "progressTop") {
64683
+ this.progressBarLocation = "top";
64684
+ }
64685
+ else if (val == "progressBottom") {
64686
+ this.progressBarLocation = "bottom";
64687
+ }
64688
+ else if (val == "progressTopBottom") {
64689
+ this.progressBarLocation = "topBottom";
64690
+ }
64691
+ this.displayMode = "carousel";
64692
+ }
64693
+ else {
64694
+ this.displayMode = val;
64695
+ }
64696
+ // this.updatePanelView();
64550
64697
  },
64551
64698
  enumerable: false,
64552
64699
  configurable: true
64553
64700
  });
64701
+ QuestionPanelDynamicModel.prototype.updatePanelView = function () {
64702
+ this.blockAnimations();
64703
+ this.updateRenderedPanels();
64704
+ this.releaseAnimations();
64705
+ this.updatePanelsAnimation();
64706
+ };
64554
64707
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "tabAlign", {
64555
64708
  get: function () {
64556
64709
  return this.getPropertyValue("tabAlign");
@@ -64566,14 +64719,14 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64566
64719
  });
64567
64720
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "isRenderModeList", {
64568
64721
  get: function () {
64569
- return this.renderMode === "list";
64722
+ return this.displayMode === "list";
64570
64723
  },
64571
64724
  enumerable: false,
64572
64725
  configurable: true
64573
64726
  });
64574
64727
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "isRenderModeTab", {
64575
64728
  get: function () {
64576
- return this.renderMode === "tab";
64729
+ return this.displayMode === "tab";
64577
64730
  },
64578
64731
  enumerable: false,
64579
64732
  configurable: true
@@ -64765,7 +64918,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64765
64918
  };
64766
64919
  /**
64767
64920
  * Add a new dynamic panel based on the template Panel. It checks if canAddPanel returns true and then calls addPanel method.
64768
- * If a renderMode is different from "list" and the current panel has erros, then
64921
+ * If a displayMode is different from "list" and the current panel has erros, then
64769
64922
  * @see template
64770
64923
  * @see panelCount
64771
64924
  * @see panels
@@ -64777,7 +64930,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64777
64930
  if (!this.canLeaveCurrentPanel())
64778
64931
  return null;
64779
64932
  var newPanel = this.addPanel();
64780
- if (this.renderMode === "list" && this.panelsState !== "default") {
64933
+ if (this.displayMode === "list" && this.panelsState !== "default") {
64781
64934
  newPanel.expand();
64782
64935
  }
64783
64936
  this.focusNewPanelCallback = function () {
@@ -64796,7 +64949,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64796
64949
  };
64797
64950
  /**
64798
64951
  * Adds a new panel based on the [template](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#template).
64799
- * @param index *(Optional)* An index at which to insert the new panel. `undefined` adds the panel to the end or inserts it after the current panel if [`renderMode`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#renderMode) is `"tab"`. A negative index (for instance, -1) adds the panel to the end in all cases, regardless of the `renderMode` value.
64952
+ * @param index *(Optional)* An index at which to insert the new panel. `undefined` adds the panel to the end or inserts it after the current panel if [`displayMode`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#renderMode) is `"tab"`. A negative index (for instance, -1) adds the panel to the end in all cases, regardless of the `displayMode` value.
64800
64953
  * @see panelCount
64801
64954
  * @see panels
64802
64955
  * @see allowAddPanel
@@ -64845,7 +64998,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64845
64998
  }
64846
64999
  };
64847
65000
  QuestionPanelDynamicModel.prototype.canLeaveCurrentPanel = function () {
64848
- return !(this.renderMode !== "list" && this.currentPanel && this.currentPanel.hasErrors(true, true));
65001
+ return !(this.displayMode !== "list" && this.currentPanel && this.currentPanel.hasErrors(true, true));
64849
65002
  };
64850
65003
  QuestionPanelDynamicModel.prototype.copyValue = function (dest, src) {
64851
65004
  for (var key in src) {
@@ -64883,8 +65036,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64883
65036
  (this.isValueEmpty(this.defaultPanelValue) || !this.isTwoValueEquals(panelValue, this.defaultPanelValue));
64884
65037
  };
64885
65038
  /**
64886
- * Switches Dynamic Panel to the next panel. Returns `true` in case of success, or `false` if `renderMode` is `"list"` or the current panel contains validation errors.
64887
- * @see renderMode
65039
+ * Switches Dynamic Panel to the next panel. Returns `true` in case of success, or `false` if `displayMode` is `"list"` or the current panel contains validation errors.
65040
+ * @see displayMode
64888
65041
  */
64889
65042
  QuestionPanelDynamicModel.prototype.goToNextPanel = function () {
64890
65043
  if (this.currentIndex < 0)
@@ -65698,7 +65851,7 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
65698
65851
  return new CssClassBuilder()
65699
65852
  .append(this.cssClasses.button)
65700
65853
  .append(this.cssClasses.buttonAdd)
65701
- .append(this.cssClasses.buttonAdd + "--list-mode", this.renderMode === "list")
65854
+ .append(this.cssClasses.buttonAdd + "--list-mode", this.displayMode === "list")
65702
65855
  .toString();
65703
65856
  };
65704
65857
  QuestionPanelDynamicModel.prototype.getPrevButtonCss = function () {
@@ -65957,6 +66110,28 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
65957
66110
  question_paneldynamic_decorate([
65958
66111
  propertyArray({})
65959
66112
  ], QuestionPanelDynamicModel.prototype, "_renderedPanels", void 0);
66113
+ question_paneldynamic_decorate([
66114
+ jsonobject_property({
66115
+ onSet: function (val, target) {
66116
+ target.fireCallback(target.renderModeChangedCallback);
66117
+ target.updatePanelView();
66118
+ }
66119
+ })
66120
+ ], QuestionPanelDynamicModel.prototype, "displayMode", void 0);
66121
+ question_paneldynamic_decorate([
66122
+ jsonobject_property({
66123
+ onSet: function (val, target) {
66124
+ target.fireCallback(target.currentIndexChangedCallback);
66125
+ }
66126
+ })
66127
+ ], QuestionPanelDynamicModel.prototype, "showProgressBar", void 0);
66128
+ question_paneldynamic_decorate([
66129
+ jsonobject_property({
66130
+ onSet: function (val, target) {
66131
+ // target.updatePanelView();
66132
+ }
66133
+ })
66134
+ ], QuestionPanelDynamicModel.prototype, "progressBarLocation", void 0);
65960
66135
  question_paneldynamic_decorate([
65961
66136
  jsonobject_property({ defaultValue: false, onSet: function (_, target) { target.updateFooterActions(); } })
65962
66137
  ], QuestionPanelDynamicModel.prototype, "legacyNavigation", void 0);
@@ -65973,8 +66148,14 @@ Serializer.addClass("paneldynamic", [
65973
66148
  isLightSerializable: false
65974
66149
  },
65975
66150
  { name: "templateTitle:text", serializationProperty: "locTemplateTitle" },
65976
- { name: "templateTabTitle", serializationProperty: "locTemplateTabTitle", visibleIf: function (obj) { return obj.renderMode === "tab"; } },
65977
- { name: "tabTitlePlaceholder", serializationProperty: "locTabTitlePlaceholder", visibleIf: function (obj) { return obj.renderMode === "tab"; } },
66151
+ {
66152
+ name: "templateTabTitle", serializationProperty: "locTemplateTabTitle",
66153
+ visibleIf: function (obj) { return obj.displayMode === "tab"; }
66154
+ },
66155
+ {
66156
+ name: "tabTitlePlaceholder", serializationProperty: "locTabTitlePlaceholder",
66157
+ visibleIf: function (obj) { return obj.displayMode === "tab"; }
66158
+ },
65978
66159
  {
65979
66160
  name: "templateDescription:text",
65980
66161
  serializationProperty: "locTemplateDescription",
@@ -66001,7 +66182,7 @@ Serializer.addClass("paneldynamic", [
66001
66182
  name: "panelsState",
66002
66183
  default: "default",
66003
66184
  choices: ["default", "collapsed", "expanded", "firstExpanded"],
66004
- visibleIf: function (obj) { return obj.renderMode === "list"; }
66185
+ visibleIf: function (obj) { return obj.displayMode === "list"; }
66005
66186
  },
66006
66187
  { name: "keyName" },
66007
66188
  {
@@ -66027,12 +66208,12 @@ Serializer.addClass("paneldynamic", [
66027
66208
  {
66028
66209
  name: "panelPrevText",
66029
66210
  serializationProperty: "locPanelPrevText",
66030
- visibleIf: function (obj) { return obj.renderMode !== "list"; }
66211
+ visibleIf: function (obj) { return obj.displayMode !== "list"; }
66031
66212
  },
66032
66213
  {
66033
66214
  name: "panelNextText",
66034
66215
  serializationProperty: "locPanelNextText",
66035
- visibleIf: function (obj) { return obj.renderMode !== "list"; }
66216
+ visibleIf: function (obj) { return obj.displayMode !== "list"; }
66036
66217
  },
66037
66218
  {
66038
66219
  name: "showQuestionNumbers",
@@ -66042,16 +66223,30 @@ Serializer.addClass("paneldynamic", [
66042
66223
  {
66043
66224
  name: "showRangeInProgress:boolean",
66044
66225
  default: true,
66045
- visibleIf: function (obj) { return obj.renderMode !== "list"; }
66226
+ visible: false
66227
+ // visibleIf: (obj: any) => { return obj.displayMode !== "list"; }
66046
66228
  },
66047
66229
  {
66048
66230
  name: "renderMode",
66049
66231
  default: "list",
66050
66232
  choices: ["list", "progressTop", "progressBottom", "progressTopBottom", "tab"],
66233
+ visible: false,
66234
+ },
66235
+ { name: "displayMode", default: "list", choices: ["list", "carousel", "tab"] },
66236
+ {
66237
+ name: "showProgressBar:boolean",
66238
+ default: true,
66239
+ visibleIf: function (obj) { return obj.displayMode === "carousel"; }
66240
+ },
66241
+ {
66242
+ name: "progressBarLocation",
66243
+ default: "top",
66244
+ choices: ["top", "bottom", "topBottom"],
66245
+ visibleIf: function (obj) { return obj.showProgressBar; }
66051
66246
  },
66052
66247
  {
66053
66248
  name: "tabAlign", default: "center", choices: ["left", "center", "right"],
66054
- visibleIf: function (obj) { return obj.renderMode === "tab"; }
66249
+ visibleIf: function (obj) { return obj.displayMode === "tab"; }
66055
66250
  },
66056
66251
  {
66057
66252
  name: "templateTitleLocation",
@@ -67800,9 +67995,6 @@ Serializer.addClass("patternmask", [
67800
67995
  return new mask_pattern_InputMaskPattern();
67801
67996
  }, "masksettings");
67802
67997
 
67803
- // CONCATENATED MODULE: ./packages/survey-core/src/mask/mask_utils.ts
67804
- var numberDefinition = /[0-9]/;
67805
-
67806
67998
  // CONCATENATED MODULE: ./packages/survey-core/src/mask/mask_numeric.ts
67807
67999
  var mask_numeric_extends = (undefined && undefined.__extends) || (function () {
67808
68000
  var extendStatics = function (d, b) {
@@ -68946,8 +69138,8 @@ Serializer.addClass("currencymask", [
68946
69138
 
68947
69139
  var Version;
68948
69140
  var ReleaseDate;
68949
- Version = "" + "1.11.11";
68950
- ReleaseDate = "" + "2024-08-14";
69141
+ Version = "" + "1.11.13";
69142
+ ReleaseDate = "" + "2024-08-27";
68951
69143
  function checkLibraryVersion(ver, libraryName) {
68952
69144
  if (Version != ver) {
68953
69145
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -71881,9 +72073,7 @@ var arabicSurveyStrings = {
71881
72073
  ok: "موافق",
71882
72074
  cancel: "إلغاء الأمر"
71883
72075
  };
71884
- surveyLocalization.locales["ar"] = arabicSurveyStrings;
71885
- surveyLocalization.localeNames["ar"] = "العربية";
71886
- surveyLocalization.localeDirections["ar"] = "rtl";
72076
+ surveyLocalization.setupLocale("ar", arabicSurveyStrings, "العربية", "Arabic", "rtl");
71887
72077
  // The following strings have been translated by a machine translation service
71888
72078
  // Remove those strings that you have corrected manually
71889
72079
  // indexText: "{0} of {1}" => "{0} من {1}"
@@ -72026,8 +72216,7 @@ var basqueSurveyStrings = {
72026
72216
  ok: "Ados",
72027
72217
  cancel: "Ezeztatu"
72028
72218
  };
72029
- surveyLocalization.locales["eu"] = basqueSurveyStrings;
72030
- surveyLocalization.localeNames["eu"] = "Euskara";
72219
+ surveyLocalization.setupLocale("eu", basqueSurveyStrings, "euskara", "Basque");
72031
72220
  // The following strings have been translated by a machine translation service
72032
72221
  // Remove those strings that you have corrected manually
72033
72222
  // indexText: "{0} of {1}" => "{1} {0}"
@@ -72163,8 +72352,7 @@ var bulgarianStrings = {
72163
72352
  ok: "Добре",
72164
72353
  cancel: "Отмени"
72165
72354
  };
72166
- surveyLocalization.locales["bg"] = bulgarianStrings;
72167
- surveyLocalization.localeNames["bg"] = "български";
72355
+ surveyLocalization.setupLocale("bg", bulgarianStrings, "български", "Bulgarian");
72168
72356
  // The following strings have been translated by a machine translation service
72169
72357
  // Remove those strings that you have corrected manually
72170
72358
  // indexText: "{0} of {1}" => "{0} на {1}"
@@ -72307,8 +72495,7 @@ var catalanSurveyStrings = {
72307
72495
  ok: "D'ACORD",
72308
72496
  cancel: "Cancel·lar"
72309
72497
  };
72310
- surveyLocalization.locales["ca"] = catalanSurveyStrings;
72311
- surveyLocalization.localeNames["ca"] = "català";
72498
+ surveyLocalization.setupLocale("ca", catalanSurveyStrings, "català", "Catalan");
72312
72499
  // The following strings have been translated by a machine translation service
72313
72500
  // Remove those strings that you have corrected manually
72314
72501
  // previewText: "Preview" => "Preestrena"
@@ -72491,8 +72678,7 @@ var croatianStrings = {
72491
72678
  ok: "OK",
72492
72679
  cancel: "Otkazati"
72493
72680
  };
72494
- surveyLocalization.locales["hr"] = croatianStrings;
72495
- surveyLocalization.localeNames["hr"] = "hrvatski";
72681
+ surveyLocalization.setupLocale("hr", croatianStrings, "hrvatski", "Croatian");
72496
72682
  // The following strings have been translated by a machine translation service
72497
72683
  // Remove those strings that you have corrected manually
72498
72684
  // indexText: "{0} of {1}" => "{0} {1}"
@@ -72633,8 +72819,7 @@ var czechSurveyStrings = {
72633
72819
  ok: "OK",
72634
72820
  cancel: "Zrušit"
72635
72821
  };
72636
- surveyLocalization.locales["cs"] = czechSurveyStrings;
72637
- surveyLocalization.localeNames["cs"] = "čeština";
72822
+ surveyLocalization.setupLocale("cs", czechSurveyStrings, "čeština", "Czech");
72638
72823
  // The following strings have been translated by a machine translation service
72639
72824
  // Remove those strings that you have corrected manually
72640
72825
  // indexText: "{0} of {1}" => "{0} z {1}"
@@ -72777,8 +72962,7 @@ var danishSurveyStrings = {
72777
72962
  ok: "OK",
72778
72963
  cancel: "Aflyse"
72779
72964
  };
72780
- surveyLocalization.locales["da"] = danishSurveyStrings;
72781
- surveyLocalization.localeNames["da"] = "dansk";
72965
+ surveyLocalization.setupLocale("da", danishSurveyStrings, "dansk", "Danish");
72782
72966
  // The following strings have been translated by a machine translation service
72783
72967
  // Remove those strings that you have corrected manually
72784
72968
  // indexText: "{0} of {1}" => "{0} af {1}"
@@ -72921,8 +73105,7 @@ var dutchSurveyStrings = {
72921
73105
  ok: "OK",
72922
73106
  cancel: "Annuleren"
72923
73107
  };
72924
- surveyLocalization.locales["nl"] = dutchSurveyStrings;
72925
- surveyLocalization.localeNames["nl"] = "nederlands";
73108
+ surveyLocalization.setupLocale("nl", dutchSurveyStrings, "nederlands", "Dutch");
72926
73109
  // The following strings have been translated by a machine translation service
72927
73110
  // Remove those strings that you have corrected manually
72928
73111
  // indexText: "{0} of {1}" => "{0} van {1}"
@@ -72962,8 +73145,7 @@ surveyLocalization.localeNames["nl"] = "nederlands";
72962
73145
  * - Copy the Dutch set once and move forward as if it are 2 totally different languages
72963
73146
  * - Override the relevant strings only
72964
73147
  */
72965
- surveyLocalization.locales["nl-BE"] = dutchSurveyStrings;
72966
- surveyLocalization.localeNames["nl-BE"] = "vlaams";
73148
+ surveyLocalization.setupLocale("nl-BE", dutchSurveyStrings, "vlaams", "Flemish");
72967
73149
 
72968
73150
  // CONCATENATED MODULE: ./packages/survey-core/src/localization/estonian.ts
72969
73151
 
@@ -73074,8 +73256,7 @@ var estonianSurveyStrings = {
73074
73256
  ok: "OK",
73075
73257
  cancel: "Tühistama"
73076
73258
  };
73077
- surveyLocalization.locales["et"] = estonianSurveyStrings;
73078
- surveyLocalization.localeNames["et"] = "eesti keel";
73259
+ surveyLocalization.setupLocale("et", estonianSurveyStrings, "eesti keel", "Estonian");
73079
73260
  // The following strings have been translated by a machine translation service
73080
73261
  // Remove those strings that you have corrected manually
73081
73262
  // indexText: "{0} of {1}" => "{0} {1}"
@@ -73218,8 +73399,7 @@ var finnishSurveyStrings = {
73218
73399
  ok: "OKEI",
73219
73400
  cancel: "Perua"
73220
73401
  };
73221
- surveyLocalization.locales["fi"] = finnishSurveyStrings;
73222
- surveyLocalization.localeNames["fi"] = "suomi";
73402
+ surveyLocalization.setupLocale("fi", finnishSurveyStrings, "suomi", "Finnish");
73223
73403
  // The following strings have been translated by a machine translation service
73224
73404
  // Remove those strings that you have corrected manually
73225
73405
  // panelDynamicTabTextFormat: "Panel {panelIndex}" => "Paneeli {panelIndex}"
@@ -73350,8 +73530,7 @@ var frenchSurveyStrings = {
73350
73530
  ok: "D’ACCORD",
73351
73531
  cancel: "Annuler"
73352
73532
  };
73353
- surveyLocalization.locales["fr"] = frenchSurveyStrings;
73354
- surveyLocalization.localeNames["fr"] = "français";
73533
+ surveyLocalization.setupLocale("fr", frenchSurveyStrings, "français", "French");
73355
73534
  // The following strings have been translated by a machine translation service
73356
73535
  // Remove those strings that you have corrected manually
73357
73536
  // panelDynamicTabTextFormat: "Panel {panelIndex}" => "Panel {panelIndex}"
@@ -73482,8 +73661,7 @@ var georgianSurveyStrings = {
73482
73661
  ok: "კარგი",
73483
73662
  cancel: "გაუქმება"
73484
73663
  };
73485
- surveyLocalization.locales["ka"] = georgianSurveyStrings;
73486
- surveyLocalization.localeNames["ka"] = "ქართული";
73664
+ surveyLocalization.setupLocale("ka", georgianSurveyStrings, "ქართული", "Georgian");
73487
73665
  // The following strings have been translated by a machine translation service
73488
73666
  // Remove those strings that you have corrected manually
73489
73667
  // previewText: "Preview" => "გადახედვა"
@@ -73679,8 +73857,7 @@ var germanSurveyStrings = {
73679
73857
  ok: "OK",
73680
73858
  cancel: "Abbrechen"
73681
73859
  };
73682
- surveyLocalization.locales["de"] = germanSurveyStrings;
73683
- surveyLocalization.localeNames["de"] = "deutsch";
73860
+ surveyLocalization.setupLocale("de", germanSurveyStrings, "deutsch", "German");
73684
73861
  // The following strings have been translated by a machine translation service
73685
73862
  // Remove those strings that you have corrected manually
73686
73863
  // tabTitlePlaceholder: "New Panel" => "Neues Panel"
@@ -73794,8 +73971,7 @@ var greekSurveyStrings = {
73794
73971
  ok: "OK",
73795
73972
  cancel: "Ακυρώνω"
73796
73973
  };
73797
- surveyLocalization.locales["gr"] = greekSurveyStrings;
73798
- surveyLocalization.localeNames["gr"] = "ελληνικά";
73974
+ surveyLocalization.setupLocale("gr", greekSurveyStrings, "ελληνικά", "Greek");
73799
73975
  // The following strings have been translated by a machine translation service
73800
73976
  // Remove those strings that you have corrected manually
73801
73977
  // panelDynamicTabTextFormat: "Panel {panelIndex}" => "Πίνακας {panelIndex}"
@@ -73923,8 +74099,7 @@ var hebrewSurveyStrings = {
73923
74099
  ok: "אוקיי",
73924
74100
  cancel: "ביטל"
73925
74101
  };
73926
- surveyLocalization.locales["he"] = hebrewSurveyStrings;
73927
- surveyLocalization.localeNames["he"] = "עברית";
74102
+ surveyLocalization.setupLocale("he", hebrewSurveyStrings, "עברית", "Hebrew");
73928
74103
  // The following strings have been translated by a machine translation service
73929
74104
  // Remove those strings that you have corrected manually
73930
74105
  // indexText: "{0} of {1}" => "{0} מתוך {1}"
@@ -74068,8 +74243,7 @@ var hindiStrings = {
74068
74243
  ok: "ठीक है",
74069
74244
  cancel: "रद्द करना"
74070
74245
  };
74071
- surveyLocalization.locales["hi"] = hindiStrings;
74072
- surveyLocalization.localeNames["hi"] = "hindi";
74246
+ surveyLocalization.setupLocale("hi", hindiStrings, "hindi", "Hindi");
74073
74247
  // The following strings have been translated by a machine translation service
74074
74248
  // Remove those strings that you have corrected manually
74075
74249
  // noneItemText: "None" => "कोई नहीं"
@@ -74212,8 +74386,7 @@ var hungarianSurveyStrings = {
74212
74386
  ok: "OKÉ",
74213
74387
  cancel: "Érvénytelenít"
74214
74388
  };
74215
- surveyLocalization.locales["hu"] = hungarianSurveyStrings;
74216
- surveyLocalization.localeNames["hu"] = "magyar";
74389
+ surveyLocalization.setupLocale("hu", hungarianSurveyStrings, "magyar", "Hungarian");
74217
74390
  // The following strings have been translated by a machine translation service
74218
74391
  // Remove those strings that you have corrected manually
74219
74392
  // indexText: "{0} of {1}" => "{0} {1} közül"
@@ -74355,8 +74528,7 @@ var icelandicSurveyStrings = {
74355
74528
  ok: "ÓKEI",
74356
74529
  cancel: "Afturkalla"
74357
74530
  };
74358
- surveyLocalization.locales["is"] = icelandicSurveyStrings;
74359
- surveyLocalization.localeNames["is"] = "íslenska";
74531
+ surveyLocalization.setupLocale("is", icelandicSurveyStrings, "íslenska", "Icelandic");
74360
74532
  // The following strings have been translated by a machine translation service
74361
74533
  // Remove those strings that you have corrected manually
74362
74534
  // indexText: "{0} of {1}" => "{0} af {1}"
@@ -74499,8 +74671,7 @@ var indonesianStrings = {
74499
74671
  ok: "OKE",
74500
74672
  cancel: "Membatalkan"
74501
74673
  };
74502
- surveyLocalization.locales["id"] = indonesianStrings;
74503
- surveyLocalization.localeNames["id"] = "bahasa Indonesia";
74674
+ surveyLocalization.setupLocale("id", indonesianStrings, "bahasa indonesia", "Indonesian");
74504
74675
  // The following strings have been translated by a machine translation service
74505
74676
  // Remove those strings that you have corrected manually
74506
74677
  // indexText: "{0} of {1}" => "{0} dari {1}"
@@ -74643,8 +74814,7 @@ var italianSurveyStrings = {
74643
74814
  ok: "OK",
74644
74815
  cancel: "Annulla"
74645
74816
  };
74646
- surveyLocalization.locales["it"] = italianSurveyStrings;
74647
- surveyLocalization.localeNames["it"] = "italiano";
74817
+ surveyLocalization.setupLocale("it", italianSurveyStrings, "italiano", "Italian");
74648
74818
  // The following strings have been translated by a machine translation service
74649
74819
  // Remove those strings that you have corrected manually
74650
74820
  // panelDynamicTabTextFormat: "Panel {panelIndex}" => "Pannello {panelIndex}"
@@ -74775,8 +74945,7 @@ var japaneseSurveyStrings = {
74775
74945
  ok: "わかりました",
74776
74946
  cancel: "キャンセル"
74777
74947
  };
74778
- surveyLocalization.locales["ja"] = japaneseSurveyStrings;
74779
- surveyLocalization.localeNames["ja"] = "日本語";
74948
+ surveyLocalization.setupLocale("ja", japaneseSurveyStrings, "日本語", "Japanese");
74780
74949
  // The following strings have been translated by a machine translation service
74781
74950
  // Remove those strings that you have corrected manually
74782
74951
  // indexText: "{0} of {1}" => "{1}の{0}"
@@ -74919,8 +75088,7 @@ var kazakhStrings = {
74919
75088
  ok: "ЖАҚСЫ",
74920
75089
  cancel: "Болдырмау"
74921
75090
  };
74922
- surveyLocalization.locales["kk"] = kazakhStrings;
74923
- surveyLocalization.localeNames["kk"] = "Kazakh";
75091
+ surveyLocalization.setupLocale("kk", kazakhStrings, "kazakh", "Kazakh");
74924
75092
  // The following strings have been translated by a machine translation service
74925
75093
  // Remove those strings that you have corrected manually
74926
75094
  // indexText: "{0} of {1}" => "{1} {0}"
@@ -75063,8 +75231,7 @@ var koreanStrings = {
75063
75231
  ok: "그래",
75064
75232
  cancel: "취소"
75065
75233
  };
75066
- surveyLocalization.locales["ko"] = koreanStrings;
75067
- surveyLocalization.localeNames["ko"] = "한국어";
75234
+ surveyLocalization.setupLocale("ko", koreanStrings, "한국어", "Korean");
75068
75235
  // The following strings have been translated by a machine translation service
75069
75236
  // Remove those strings that you have corrected manually
75070
75237
  // panelDynamicTabTextFormat: "Panel {panelIndex}" => "패널 {panelIndex}"
@@ -75194,8 +75361,7 @@ var latvianSurveyStrings = {
75194
75361
  ok: "LABI",
75195
75362
  cancel: "Atcelt"
75196
75363
  };
75197
- surveyLocalization.locales["lv"] = latvianSurveyStrings;
75198
- surveyLocalization.localeNames["lv"] = "latviešu";
75364
+ surveyLocalization.setupLocale("lv", latvianSurveyStrings, "latviešu", "Latvian");
75199
75365
  // The following strings have been translated by a machine translation service
75200
75366
  // Remove those strings that you have corrected manually
75201
75367
  // panelDynamicTabTextFormat: "Panel {panelIndex}" => "Panelis {panelIndex}"
@@ -75326,8 +75492,7 @@ var lithuaniaSurveyStrings = {
75326
75492
  ok: "GERAI",
75327
75493
  cancel: "Atšaukti"
75328
75494
  };
75329
- surveyLocalization.locales["lt"] = lithuaniaSurveyStrings;
75330
- surveyLocalization.localeNames["lt"] = "lietuvių";
75495
+ surveyLocalization.setupLocale("lt", lithuaniaSurveyStrings, "lietuvių", "Lithuanian");
75331
75496
  // The following strings have been translated by a machine translation service
75332
75497
  // Remove those strings that you have corrected manually
75333
75498
  // indexText: "{0} of {1}" => "{1} {0}"
@@ -75470,8 +75635,7 @@ var macedonianSurveyStrings = {
75470
75635
  ok: "ДОБРО",
75471
75636
  cancel: "Откажи"
75472
75637
  };
75473
- surveyLocalization.locales["mk"] = macedonianSurveyStrings;
75474
- surveyLocalization.localeNames["mk"] = "Македонски";
75638
+ surveyLocalization.setupLocale("mk", macedonianSurveyStrings, "македонски", "Macedonian");
75475
75639
  // The following strings have been translated by a machine translation service
75476
75640
  // Remove those strings that you have corrected manually
75477
75641
  // indexText: "{0} of {1}" => "{0} на {1}"
@@ -75608,8 +75772,7 @@ var malaySurveyStrings = {
75608
75772
  ok: "OK",
75609
75773
  cancel: "Batal"
75610
75774
  };
75611
- surveyLocalization.locales["ms"] = malaySurveyStrings;
75612
- surveyLocalization.localeNames["ms"] = "melayu";
75775
+ surveyLocalization.setupLocale("ms", malaySurveyStrings, "melayu", "Malay");
75613
75776
  // The following strings have been translated by a machine translation service
75614
75777
  // Remove those strings that you have corrected manually
75615
75778
  // indexText: "{0} of {1}" => "{0} {1}"
@@ -75742,8 +75905,7 @@ var norwegianSurveyStrings = {
75742
75905
  ok: "OK",
75743
75906
  cancel: "Annullere"
75744
75907
  };
75745
- surveyLocalization.locales["no"] = norwegianSurveyStrings;
75746
- surveyLocalization.localeNames["no"] = "norsk";
75908
+ surveyLocalization.setupLocale("no", norwegianSurveyStrings, "norsk", "Norwegian");
75747
75909
  // The following strings have been translated by a machine translation service
75748
75910
  // Remove those strings that you have corrected manually
75749
75911
  // indexText: "{0} of {1}" => "{0} av {1}"
@@ -75886,8 +76048,7 @@ var persianSurveyStrings = {
75886
76048
  ok: "باشه",
75887
76049
  cancel: "لغو"
75888
76050
  };
75889
- surveyLocalization.locales["fa"] = persianSurveyStrings;
75890
- surveyLocalization.localeNames["fa"] = "فارْسِى";
76051
+ surveyLocalization.setupLocale("fa", persianSurveyStrings, "فارْسِى", "Persian");
75891
76052
  // The following strings have been translated by a machine translation service
75892
76053
  // Remove those strings that you have corrected manually
75893
76054
  // indexText: "{0} of {1}" => "{0} {1}"
@@ -76030,8 +76191,7 @@ var polishSurveyStrings = {
76030
76191
  ok: "OK",
76031
76192
  cancel: "Anuluj"
76032
76193
  };
76033
- surveyLocalization.locales["pl"] = polishSurveyStrings;
76034
- surveyLocalization.localeNames["pl"] = "polski";
76194
+ surveyLocalization.setupLocale("pl", polishSurveyStrings, "polski", "Polish");
76035
76195
  // The following strings have been translated by a machine translation service
76036
76196
  // Remove those strings that you have corrected manually
76037
76197
  // panelDynamicTabTextFormat: "Panel {panelIndex}" => "Panel {panelIndex}"
@@ -76162,8 +76322,7 @@ var portugueseSurveyStrings = {
76162
76322
  ok: "OKEY",
76163
76323
  cancel: "Cancelar"
76164
76324
  };
76165
- surveyLocalization.locales["pt"] = portugueseSurveyStrings;
76166
- surveyLocalization.localeNames["pt"] = "português";
76325
+ surveyLocalization.setupLocale("pt", portugueseSurveyStrings, "português", "Portuguese");
76167
76326
  // The following strings have been translated by a machine translation service
76168
76327
  // Remove those strings that you have corrected manually
76169
76328
  // panelDynamicTabTextFormat: "Panel {panelIndex}" => "Painel {panelIndex}"
@@ -76294,8 +76453,7 @@ var portugueseBrSurveyStrings = {
76294
76453
  ok: "OKEY",
76295
76454
  cancel: "Cancelar"
76296
76455
  };
76297
- surveyLocalization.locales["pt-br"] = portugueseBrSurveyStrings;
76298
- surveyLocalization.localeNames["pt-br"] = "português brasileiro";
76456
+ surveyLocalization.setupLocale("pt-br", portugueseBrSurveyStrings, "português brasileiro", "Brazilian Portuguese");
76299
76457
  // The following strings have been translated by a machine translation service
76300
76458
  // Remove those strings that you have corrected manually
76301
76459
  // pagePrevText: "Previous" => "Anterior"
@@ -76485,8 +76643,7 @@ var romanianSurveyStrings = {
76485
76643
  ok: "OK",
76486
76644
  cancel: "Anula"
76487
76645
  };
76488
- surveyLocalization.locales["ro"] = romanianSurveyStrings;
76489
- surveyLocalization.localeNames["ro"] = "română";
76646
+ surveyLocalization.setupLocale("ro", romanianSurveyStrings, "română", "Romanian");
76490
76647
  // The following strings have been translated by a machine translation service
76491
76648
  // Remove those strings that you have corrected manually
76492
76649
  // indexText: "{0} of {1}" => "{0} de {1}"
@@ -76629,8 +76786,7 @@ var russianSurveyStrings = {
76629
76786
  ok: "Хорошо",
76630
76787
  cancel: "Отмена"
76631
76788
  };
76632
- surveyLocalization.locales["ru"] = russianSurveyStrings;
76633
- surveyLocalization.localeNames["ru"] = "русский";
76789
+ surveyLocalization.setupLocale("ru", russianSurveyStrings, "русский", "Russian");
76634
76790
  // The following strings have been translated by a machine translation service
76635
76791
  // Remove those strings that you have corrected manually
76636
76792
  // panelDynamicTabTextFormat: "Panel {panelIndex}" => "Панель {panelIndex}"
@@ -76758,8 +76914,7 @@ var serbianStrings = {
76758
76914
  cancel: "Otkaži"
76759
76915
  };
76760
76916
  //Uncomment these two lines on creating a translation file. You should replace "en" and enStrings with your locale ("fr", "de" and so on) and your variable.
76761
- surveyLocalization.locales["rs"] = serbianStrings;
76762
- surveyLocalization.localeNames["rs"] = "Srpski";
76917
+ surveyLocalization.setupLocale("rs", serbianStrings, "srpski", "Serbian");
76763
76918
  // The following strings have been translated by a machine translation service
76764
76919
  // Remove those strings that you have corrected manually
76765
76920
  // indexText: "{0} of {1}" => "{0} {1}"
@@ -76896,8 +77051,7 @@ var simplifiedChineseSurveyStrings = {
76896
77051
  ok: "还行",
76897
77052
  cancel: "取消"
76898
77053
  };
76899
- surveyLocalization.locales["zh-cn"] = simplifiedChineseSurveyStrings;
76900
- surveyLocalization.localeNames["zh-cn"] = "简体中文";
77054
+ surveyLocalization.setupLocale("zh-cn", simplifiedChineseSurveyStrings, "简体中文", "Simplified Chinese ");
76901
77055
  // The following strings have been translated by a machine translation service
76902
77056
  // Remove those strings that you have corrected manually
76903
77057
  // indexText: "{0} of {1}" => "{1}{0}"
@@ -77034,8 +77188,7 @@ var slovakSurveyStrings = {
77034
77188
  ok: "OK",
77035
77189
  cancel: "Zrušiť"
77036
77190
  };
77037
- surveyLocalization.locales["sk"] = slovakSurveyStrings;
77038
- surveyLocalization.localeNames["sk"] = "slovak";
77191
+ surveyLocalization.setupLocale("sk", slovakSurveyStrings, "slovak", "Slovak");
77039
77192
  // The following strings have been translated by a machine translation service
77040
77193
  // Remove those strings that you have corrected manually
77041
77194
  // indexText: "{0} of {1}" => "{0} {1}"
@@ -77168,8 +77321,7 @@ var spanishSurveyStrings = {
77168
77321
  ok: "De acuerdo",
77169
77322
  cancel: "Cancelar"
77170
77323
  };
77171
- surveyLocalization.locales["es"] = spanishSurveyStrings;
77172
- surveyLocalization.localeNames["es"] = "español";
77324
+ surveyLocalization.setupLocale("es", spanishSurveyStrings, "español", "Spanish");
77173
77325
  // The following strings have been translated by a machine translation service
77174
77326
  // Remove those strings that you have corrected manually
77175
77327
  // panelDynamicTabTextFormat: "Panel {panelIndex}" => "Panel {panelIndex}"
@@ -77300,8 +77452,7 @@ var swahiliStrings = {
77300
77452
  ok: "Sawa kabisa",
77301
77453
  cancel: "Katisha"
77302
77454
  };
77303
- surveyLocalization.locales["sw"] = swahiliStrings;
77304
- surveyLocalization.localeNames["sw"] = "swahili";
77455
+ surveyLocalization.setupLocale("sw", swahiliStrings, "swahili", "Swahili");
77305
77456
  // The following strings have been translated by a machine translation service
77306
77457
  // Remove those strings that you have corrected manually
77307
77458
  // indexText: "{0} of {1}" => "{0} ya {1}"
@@ -77444,8 +77595,7 @@ var swedishSurveyStrings = {
77444
77595
  ok: "OKEJ",
77445
77596
  cancel: "Annullera"
77446
77597
  };
77447
- surveyLocalization.locales["sv"] = swedishSurveyStrings;
77448
- surveyLocalization.localeNames["sv"] = "svenska";
77598
+ surveyLocalization.setupLocale("sv", swedishSurveyStrings, "svenska", "Swedish");
77449
77599
  // The following strings have been translated by a machine translation service
77450
77600
  // Remove those strings that you have corrected manually
77451
77601
  // panelDynamicTabTextFormat: "Panel {panelIndex}" => "Panel {panelIndex}"
@@ -77558,8 +77708,7 @@ var tajikSurveyStrings = {
77558
77708
  // noEntriesText: "There are no entries yet.\nClick the button below to add a new entry.",
77559
77709
  // more: "More"
77560
77710
  };
77561
- surveyLocalization.locales["tg"] = tajikSurveyStrings;
77562
- surveyLocalization.localeNames["tg"] = "тоҷикӣ";
77711
+ surveyLocalization.setupLocale("tg", tajikSurveyStrings, "тоҷикӣ", "Tajik");
77563
77712
 
77564
77713
  // CONCATENATED MODULE: ./packages/survey-core/src/localization/thai.ts
77565
77714
 
@@ -77670,8 +77819,7 @@ var thaiStrings = {
77670
77819
  ok: "ตกลง, ได้",
77671
77820
  cancel: "ยกเลิก"
77672
77821
  };
77673
- surveyLocalization.locales["th"] = thaiStrings;
77674
- surveyLocalization.localeNames["th"] = "ไทย";
77822
+ surveyLocalization.setupLocale("th", thaiStrings, "ไทย", "Thai");
77675
77823
  // The following strings have been translated by a machine translation service
77676
77824
  // Remove those strings that you have corrected manually
77677
77825
  // indexText: "{0} of {1}" => "{0} of {1}"
@@ -77813,8 +77961,7 @@ var traditionalChineseSurveyStrings = {
77813
77961
  ok: "還行",
77814
77962
  cancel: "取消"
77815
77963
  };
77816
- surveyLocalization.locales["zh-tw"] = traditionalChineseSurveyStrings;
77817
- surveyLocalization.localeNames["zh-tw"] = "繁體中文";
77964
+ surveyLocalization.setupLocale("zh-tw", traditionalChineseSurveyStrings, "繁體中文", "Tranditional Chinese");
77818
77965
  // The following strings have been translated by a machine translation service
77819
77966
  // Remove those strings that you have corrected manually
77820
77967
  // previewText: "Preview" => "預覽"
@@ -77991,8 +78138,7 @@ var turkishSurveyStrings = {
77991
78138
  ok: "TAMAM",
77992
78139
  cancel: "İptal"
77993
78140
  };
77994
- surveyLocalization.locales["tr"] = turkishSurveyStrings;
77995
- surveyLocalization.localeNames["tr"] = "türkçe";
78141
+ surveyLocalization.setupLocale("tr", turkishSurveyStrings, "türkçe", "Turkish");
77996
78142
  // The following strings have been translated by a machine translation service
77997
78143
  // Remove those strings that you have corrected manually
77998
78144
  // takePhotoCaption: "Take Photo" => "Fotoğraf Çekin"
@@ -78116,8 +78262,7 @@ var ukrainianSurveyStrings = {
78116
78262
  ok: "ГАРАЗД",
78117
78263
  cancel: "Скасувати"
78118
78264
  };
78119
- surveyLocalization.locales["ua"] = ukrainianSurveyStrings;
78120
- surveyLocalization.localeNames["ua"] = "українська";
78265
+ surveyLocalization.setupLocale("ua", ukrainianSurveyStrings, "українська", "Ukrainian");
78121
78266
  // The following strings have been translated by a machine translation service
78122
78267
  // Remove those strings that you have corrected manually
78123
78268
  // indexText: "{0} of {1}" => "{0} {1}"
@@ -78260,8 +78405,7 @@ var vietnameseSurveyStrings = {
78260
78405
  cancel: "Hủy"
78261
78406
  };
78262
78407
  //Uncomment these two lines on creating a translation file. You should replace "en" and enStrings with your locale ("fr", "de" and so on) and your variable.
78263
- surveyLocalization.locales["vi"] = vietnameseSurveyStrings;
78264
- surveyLocalization.localeNames["vi"] = "Việt Nam";
78408
+ surveyLocalization.setupLocale("vi", vietnameseSurveyStrings, "việt nam", "Vietnamese");
78265
78409
  // The following strings have been translated by a machine translation service
78266
78410
  // Remove those strings that you have corrected manually
78267
78411
  // indexText: "{0} of {1}" => "{0} của {1}"
@@ -78403,8 +78547,7 @@ var welshSurveyStrings = {
78403
78547
  ok: "OCÊ",
78404
78548
  cancel: "Canslo"
78405
78549
  };
78406
- surveyLocalization.locales["cy"] = welshSurveyStrings;
78407
- surveyLocalization.localeNames["cy"] = "cymraeg";
78550
+ surveyLocalization.setupLocale("cy", welshSurveyStrings, "cymraeg", "Welsh");
78408
78551
  // The following strings have been translated by a machine translation service
78409
78552
  // Remove those strings that you have corrected manually
78410
78553
  // indexText: "{0} of {1}" => "{0} o {1}"
@@ -78546,8 +78689,7 @@ var teluguStrings = {
78546
78689
  ok: "సరే",
78547
78690
  cancel: "రద్దు"
78548
78691
  };
78549
- surveyLocalization.locales["tel"] = teluguStrings;
78550
- surveyLocalization.localeNames["tel"] = "Telugu";
78692
+ surveyLocalization.setupLocale("tel", teluguStrings, "telugu", "Telugu");
78551
78693
  // The following strings have been translated by a machine translation service
78552
78694
  // Remove those strings that you have corrected manually
78553
78695
  // noneItemText: "None" => "ఎవరు కాదు"
@@ -78693,8 +78835,7 @@ var philippinesStrings = {
78693
78835
  // Uncomment the lines below if you create a custom dictionary.
78694
78836
  // Replace "en" with a custom locale code (for example, "fr" or "de"),
78695
78837
  // Replace `englishStrings` with the name of the variable that contains the custom dictionary.
78696
- surveyLocalization.locales["fil"] = philippinesStrings;
78697
- surveyLocalization.localeNames["fil"] = "Filipino";
78838
+ surveyLocalization.setupLocale("fil", philippinesStrings, "filipino", "Filipino");
78698
78839
  // The following strings have been translated by a machine translation service
78699
78840
  // Remove those strings that you have corrected manually
78700
78841
  // tabTitlePlaceholder: "New Panel" => "Bagong Panel"
@@ -81015,14 +81156,17 @@ var reactquestion_SurveyQuestionErrorCell = /** @class */ (function (_super) {
81015
81156
  SurveyQuestionErrorCell.prototype.update = function () {
81016
81157
  this.setState({ changed: this.state.changed + 1 });
81017
81158
  };
81159
+ SurveyQuestionErrorCell.prototype.getQuestionPropertiesToTrack = function () {
81160
+ return ["errors"];
81161
+ };
81018
81162
  SurveyQuestionErrorCell.prototype.registerCallback = function (question) {
81019
81163
  var _this = this;
81020
- question.registerFunctionOnPropertyValueChanged("errors", function () {
81164
+ question.registerFunctionOnPropertiesValueChanged(this.getQuestionPropertiesToTrack(), function () {
81021
81165
  _this.update();
81022
81166
  }, "__reactSubscription");
81023
81167
  };
81024
81168
  SurveyQuestionErrorCell.prototype.unRegisterCallback = function (question) {
81025
- question.unRegisterFunctionOnPropertyValueChanged("errors", "__reactSubscription");
81169
+ question.unRegisterFunctionOnPropertiesValueChanged(this.getQuestionPropertiesToTrack(), "__reactSubscription");
81026
81170
  };
81027
81171
  SurveyQuestionErrorCell.prototype.componentDidUpdate = function (prevProps) {
81028
81172
  if (prevProps.question && prevProps.question !== this.question) {
@@ -81511,7 +81655,6 @@ var reactSurvey_Survey = /** @class */ (function (_super) {
81511
81655
  external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](components_container_ComponentsContainer, { survey: this.survey, container: "header", needRenderWrapper: false }),
81512
81656
  renderResult,
81513
81657
  external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](components_container_ComponentsContainer, { survey: this.survey, container: "footer", needRenderWrapper: false }))),
81514
- this.survey.showBrandInfo ? external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](brand_info_BrandInfo, null) : null,
81515
81658
  external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](notifier_NotifierComponent, { notifier: this.survey.notifier }))));
81516
81659
  };
81517
81660
  Survey.prototype.renderElement = function () {
@@ -81561,7 +81704,8 @@ var reactSurvey_Survey = /** @class */ (function (_super) {
81561
81704
  external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"]("div", { id: pageId, className: className, style: style },
81562
81705
  external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](components_container_ComponentsContainer, { survey: this.survey, container: "contentTop" }),
81563
81706
  activePage,
81564
- external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](components_container_ComponentsContainer, { survey: this.survey, container: "contentBottom" }))),
81707
+ external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](components_container_ComponentsContainer, { survey: this.survey, container: "contentBottom" }),
81708
+ this.survey.showBrandInfo ? external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](brand_info_BrandInfo, null) : null)),
81565
81709
  external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](components_container_ComponentsContainer, { survey: this.survey, container: "right" })));
81566
81710
  };
81567
81711
  Survey.prototype.renderPage = function (page) {
@@ -84779,6 +84923,11 @@ var reactquestion_matrixdropdownbase_SurveyQuestionMatrixTable = /** @class */ (
84779
84923
  if (cell.hasQuestion) {
84780
84924
  return (external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](reactquestion_matrixdropdownbase_SurveyQuestionMatrixDropdownCell, { key: key, cssClasses: cssClasses, cell: cell, creator: this.creator, reason: reason }));
84781
84925
  }
84926
+ if (cell.isErrorsCell) {
84927
+ if (cell.isErrorsCell) {
84928
+ return (external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](reactquestion_matrixdropdownbase_SurveyQuestionMatrixDropdownErrorsCell, { cell: cell, key: key, keyValue: key, question: cell.question, creator: this.creator }));
84929
+ }
84930
+ }
84782
84931
  var calcReason = reason;
84783
84932
  if (!calcReason) {
84784
84933
  calcReason = cell.hasTitle ? "row-header" : "";
@@ -84826,11 +84975,6 @@ var reactquestion_matrixdropdownbase_SurveyQuestionMatrixTable = /** @class */ (
84826
84975
  if (cell.hasPanel) {
84827
84976
  cellContent = (external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](panel_SurveyPanel, { key: cell.panel.id, element: cell.panel, survey: this.question.survey, cssClasses: cssClasses, isDisplayMode: this.isDisplayMode, creator: this.creator }));
84828
84977
  }
84829
- if (cell.isErrorsCell) {
84830
- if (cell.isErrorsCell) {
84831
- return (external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](reactquestion_SurveyQuestionErrorCell, { question: cell.question, creator: this.creator }));
84832
- }
84833
- }
84834
84978
  if (!cellContent)
84835
84979
  return null;
84836
84980
  var readyCell = (external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](external_root_React_commonjs2_react_commonjs_react_amd_react_["Fragment"], null, cellContent));
@@ -84914,6 +85058,35 @@ var reactquestion_matrixdropdownbase_SurveyQuestionMatrixActionsCell = /** @clas
84914
85058
  };
84915
85059
  return SurveyQuestionMatrixActionsCell;
84916
85060
  }(ReactSurveyElement));
85061
+ var reactquestion_matrixdropdownbase_SurveyQuestionMatrixDropdownErrorsCell = /** @class */ (function (_super) {
85062
+ reactquestion_matrixdropdownbase_extends(SurveyQuestionMatrixDropdownErrorsCell, _super);
85063
+ function SurveyQuestionMatrixDropdownErrorsCell(props) {
85064
+ return _super.call(this, props) || this;
85065
+ }
85066
+ Object.defineProperty(SurveyQuestionMatrixDropdownErrorsCell.prototype, "key", {
85067
+ get: function () {
85068
+ return this.props.keyValue;
85069
+ },
85070
+ enumerable: false,
85071
+ configurable: true
85072
+ });
85073
+ Object.defineProperty(SurveyQuestionMatrixDropdownErrorsCell.prototype, "cell", {
85074
+ get: function () {
85075
+ return this.props.cell;
85076
+ },
85077
+ enumerable: false,
85078
+ configurable: true
85079
+ });
85080
+ SurveyQuestionMatrixDropdownErrorsCell.prototype.render = function () {
85081
+ if (!this.cell.isVisible)
85082
+ return null;
85083
+ return external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"]("td", { className: this.cell.className, key: this.key, colSpan: this.cell.colSpans, title: this.cell.getTitle() }, _super.prototype.render.call(this));
85084
+ };
85085
+ SurveyQuestionMatrixDropdownErrorsCell.prototype.getQuestionPropertiesToTrack = function () {
85086
+ return _super.prototype.getQuestionPropertiesToTrack.call(this).concat(["visible"]);
85087
+ };
85088
+ return SurveyQuestionMatrixDropdownErrorsCell;
85089
+ }(reactquestion_SurveyQuestionErrorCell));
84917
85090
  ReactElementFactory.Instance.registerElement("sv-matrixdynamic-actions-cell", function (props) {
84918
85091
  return external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](reactquestion_matrixdropdownbase_SurveyQuestionMatrixActionsCell, props);
84919
85092
  });
@@ -85011,6 +85184,12 @@ var reactquestion_matrixdropdownbase_SurveyQuestionMatrixDropdownCell = /** @cla
85011
85184
  SurveyQuestionMatrixDropdownCell.prototype.getHeaderText = function () {
85012
85185
  return this.cell.headers;
85013
85186
  };
85187
+ SurveyQuestionMatrixDropdownCell.prototype.renderElement = function () {
85188
+ if (!this.cell.isVisible) {
85189
+ return null;
85190
+ }
85191
+ return _super.prototype.renderElement.call(this);
85192
+ };
85014
85193
  SurveyQuestionMatrixDropdownCell.prototype.renderCellContent = function () {
85015
85194
  var content = _super.prototype.renderCellContent.call(this);
85016
85195
  var responsiveTitle = this.cell.showResponsiveTitle ? (external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"]("span", { className: this.cell.responsiveTitleCss }, this.renderLocString(this.cell.responsiveLocTitle))) : null;
@@ -86267,7 +86446,13 @@ var react_popup_survey_PopupSurvey = /** @class */ (function (_super) {
86267
86446
  return external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](svg_icon_SvgIcon, { iconName: "icon-minimize_16x16", size: 16 });
86268
86447
  };
86269
86448
  PopupSurvey.prototype.renderCloseButton = function (popup) {
86270
- return (external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"]("div", { className: popup.cssHeaderCloseButton, onClick: function () { popup.hide(); } },
86449
+ var _this = this;
86450
+ return (external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"]("div", { className: popup.cssHeaderCloseButton, onClick: function () {
86451
+ popup.hide();
86452
+ if (typeof _this.props.onClose == "function") {
86453
+ _this.props.onClose();
86454
+ }
86455
+ } },
86271
86456
  external_root_React_commonjs2_react_commonjs_react_amd_react_["createElement"](svg_icon_SvgIcon, { iconName: "icon-close_16x16", size: 16 })));
86272
86457
  };
86273
86458
  PopupSurvey.prototype.renderAllowFullScreenButon = function (popup) {