survey-react 1.9.97 → 1.9.99

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.9.97
2
+ * surveyjs - Survey JavaScript library v1.9.99
3
3
  * Copyright (c) 2015-2023 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
@@ -112,7 +112,7 @@ return /******/ (function(modules) { // webpackBootstrap
112
112
  __webpack_require__.r(__webpack_exports__);
113
113
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return SignaturePad; });
114
114
  /*!
115
- * Signature Pad v4.1.5 | https://github.com/szimek/signature_pad
115
+ * Signature Pad v4.1.6 | https://github.com/szimek/signature_pad
116
116
  * (c) 2023 Szymon Nowak | Released under the MIT license
117
117
  */
118
118
 
@@ -341,6 +341,7 @@ class SignaturePad extends SignatureEventTarget {
341
341
  this.dotSize = options.dotSize || 0;
342
342
  this.penColor = options.penColor || 'black';
343
343
  this.backgroundColor = options.backgroundColor || 'rgba(0,0,0,0)';
344
+ this.compositeOperation = options.compositeOperation || 'source-over';
344
345
  this._strokeMoveUpdate = this.throttle
345
346
  ? throttle(SignaturePad.prototype._strokeUpdate, this.throttle)
346
347
  : SignaturePad.prototype._strokeUpdate;
@@ -443,6 +444,9 @@ class SignaturePad extends SignatureEventTarget {
443
444
  velocityFilterWeight: group && 'velocityFilterWeight' in group
444
445
  ? group.velocityFilterWeight
445
446
  : this.velocityFilterWeight,
447
+ compositeOperation: group && 'compositeOperation' in group
448
+ ? group.compositeOperation
449
+ : this.compositeOperation,
446
450
  };
447
451
  }
448
452
  _strokeBegin(event) {
@@ -517,6 +521,7 @@ class SignaturePad extends SignatureEventTarget {
517
521
  this._lastVelocity = 0;
518
522
  this._lastWidth = (options.minWidth + options.maxWidth) / 2;
519
523
  this._ctx.fillStyle = options.penColor;
524
+ this._ctx.globalCompositeOperation = options.compositeOperation;
520
525
  }
521
526
  _createPoint(x, y, pressure) {
522
527
  const rect = this.canvas.getBoundingClientRect();
@@ -1761,7 +1766,7 @@ var ComputedUpdater = /** @class */ (function () {
1761
1766
  */
1762
1767
  var Base = /** @class */ (function () {
1763
1768
  function Base() {
1764
- this.propertyHash = {};
1769
+ this.propertyHash = Base.createPropertiesHash();
1765
1770
  this.eventList = [];
1766
1771
  this.isLoadingFromJsonValue = false;
1767
1772
  this.loadingOwner = null;
@@ -1860,6 +1865,9 @@ var Base = /** @class */ (function () {
1860
1865
  Base.prototype.isPropertyEmpty = function (value) {
1861
1866
  return value !== "" && this.isValueEmpty(value);
1862
1867
  };
1868
+ Base.createPropertiesHash = function () {
1869
+ return {};
1870
+ };
1863
1871
  Base.prototype.dispose = function () {
1864
1872
  for (var i = 0; i < this.eventList.length; i++) {
1865
1873
  this.eventList[i].clear();
@@ -2921,7 +2929,7 @@ var CalculatedValue = /** @class */ (function (_super) {
2921
2929
  return;
2922
2930
  this.expressionRunner = new _conditions__WEBPACK_IMPORTED_MODULE_2__["ExpressionRunner"](this.expression);
2923
2931
  this.expressionRunner.onRunComplete = function (newValue) {
2924
- if (!_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isTwoValueEquals(newValue, _this.value)) {
2932
+ if (!_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isTwoValueEquals(newValue, _this.value, false, true)) {
2925
2933
  _this.setValue(newValue);
2926
2934
  }
2927
2935
  _this.unlocCalculation();
@@ -5662,7 +5670,7 @@ var defaultV2Css = {
5662
5670
  header: {
5663
5671
  root: "sv_window_title",
5664
5672
  title: "",
5665
- button: "",
5673
+ button: "sv_window_button",
5666
5674
  buttonExpanded: "",
5667
5675
  buttonCollapsed: ""
5668
5676
  }
@@ -5729,7 +5737,6 @@ var defaultV2Css = {
5729
5737
  },
5730
5738
  variables: {
5731
5739
  mobileWidth: "--sd-mobile-width",
5732
- imagepickerGapBetweenItems: "--sd-imagepicker-gap",
5733
5740
  themeMark: "--sv-defaultV2-mark"
5734
5741
  },
5735
5742
  tagbox: {
@@ -6304,12 +6311,12 @@ var DragDropChoices = /** @class */ (function (_super) {
6304
6311
  }
6305
6312
  var draggedElementShortcut = document.createElement("div");
6306
6313
  // draggedElementShortcut.innerText = text;
6307
- draggedElementShortcut.style.cssText = " \n cursor: grabbing;\n position: absolute;\n z-index: 10000;\n font-family: var(--font-family, $font-family);\n ";
6314
+ draggedElementShortcut.style.cssText = " \n cursor: grabbing;\n position: absolute;\n z-index: 10000;\n font-family: var(--font-family, 'Open Sans');\n ";
6308
6315
  var isDeepClone = true;
6309
6316
  var clone = (draggedElementNode
6310
6317
  .closest("[data-sv-drop-target-item-value]")
6311
6318
  .cloneNode(isDeepClone));
6312
- clone.style.cssText = "\n min-width: 100px;\n box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.1);\n background-color: var(--background, white);\n border-radius: 36px;\n padding-right: 16px;\n margin-left: 0;\n ";
6319
+ clone.style.cssText = "\n min-width: 100px;\n box-shadow: var(--sjs-shadow-large, 0px 8px 16px 0px rgba(0, 0, 0, 0.1)), var(--sjs-shadow-medium, 0px 2px 6px 0px rgba(0, 0, 0, 0.1));\n background-color: var(--sjs-general-backcolor, var(--background, #fff));\n border-radius: calc(4.5 * var(--sjs-base-unit, var(--base-unit, 8px)));\n padding-right: calc(2* var(--sjs-base-unit, var(--base-unit, 8px)));\n margin-left: 0;\n ";
6313
6320
  var dragIcon = clone.querySelector(".svc-item-value-controls__drag-icon");
6314
6321
  dragIcon.style.visibility = "visible";
6315
6322
  var removeIcon = clone.querySelector(".svc-item-value-controls__remove");
@@ -6327,7 +6334,7 @@ var DragDropChoices = /** @class */ (function (_super) {
6327
6334
  };
6328
6335
  DragDropChoices.prototype.createImagePickerShortcut = function (item, text, draggedElementNode, event) {
6329
6336
  var draggedElementShortcut = document.createElement("div");
6330
- draggedElementShortcut.style.cssText = " \n cursor: grabbing;\n position: absolute;\n z-index: 10000;\n box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.1), 0px 2px 6px rgba(0, 0, 0, 0.1);\n padding: 4px;\n border-radius: 4px;\n background: white;\n ";
6337
+ draggedElementShortcut.style.cssText = " \n cursor: grabbing;\n position: absolute;\n z-index: 10000;\n box-shadow: var(--sjs-shadow-large, 0px 8px 16px 0px rgba(0, 0, 0, 0.1)), var(--sjs-shadow-medium, 0px 2px 6px 0px rgba(0, 0, 0, 0.1));\n background-color: var(--sjs-general-backcolor, var(--background, #fff));\n padding: calc(0.5 * var(--sjs-base-unit, var(--base-unit, 8px)));\n border-radius: calc(0.5 * var(--sjs-base-unit, var(--base-unit, 8px)));\n ";
6331
6338
  var itemValueNode = draggedElementNode.closest("[data-sv-drop-target-item-value]");
6332
6339
  var controlsNode = itemValueNode.querySelector(".svc-image-item-value-controls");
6333
6340
  var imageContainerNode = itemValueNode.querySelector(".sd-imagepicker__image-container");
@@ -6498,7 +6505,9 @@ var DragDropCore = /** @class */ (function () {
6498
6505
  configurable: true
6499
6506
  });
6500
6507
  DragDropCore.prototype.startDrag = function (event, draggedElement, parentElement, draggedElementNode, preventSaveTargetNode) {
6508
+ var _a;
6501
6509
  if (preventSaveTargetNode === void 0) { preventSaveTargetNode = false; }
6510
+ this.domAdapter.rootContainer = (_a = this.survey) === null || _a === void 0 ? void 0 : _a.rootElement;
6502
6511
  this.domAdapter.startDrag(event, draggedElement, parentElement, draggedElementNode, preventSaveTargetNode);
6503
6512
  };
6504
6513
  DragDropCore.prototype.dragInit = function (event, draggedElement, parentElement, draggedElementNode) {
@@ -6686,12 +6695,12 @@ var DragDropDOMAdapter = /** @class */ (function () {
6686
6695
  if (_utils_devices__WEBPACK_IMPORTED_MODULE_1__["IsTouch"]) {
6687
6696
  _this.draggedElementShortcut.removeEventListener("contextmenu", _this.onContextMenu);
6688
6697
  }
6689
- _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.rootElement.removeChild(_this.draggedElementShortcut);
6698
+ _this.draggedElementShortcut.parentElement.removeChild(_this.draggedElementShortcut);
6690
6699
  _this.dd.clear();
6691
6700
  _this.draggedElementShortcut = null;
6692
6701
  _this.scrollIntervalId = null;
6693
6702
  if (_utils_devices__WEBPACK_IMPORTED_MODULE_1__["IsTouch"]) {
6694
- _this.savedTargetNode && _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.rootElement.removeChild(_this.savedTargetNode);
6703
+ _this.savedTargetNode && _this.savedTargetNode.parentElement.removeChild(_this.savedTargetNode);
6695
6704
  DragDropDOMAdapter.PreventScrolling = false;
6696
6705
  }
6697
6706
  document.body.style.setProperty("touch-action", "");
@@ -6704,6 +6713,18 @@ var DragDropDOMAdapter = /** @class */ (function () {
6704
6713
  };
6705
6714
  this.draggedElementShortcut = null;
6706
6715
  }
6716
+ Object.defineProperty(DragDropDOMAdapter.prototype, "rootElement", {
6717
+ get: function () {
6718
+ if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__["isShadowDOM"])(_settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root)) {
6719
+ return _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root.host;
6720
+ }
6721
+ else {
6722
+ return this.rootContainer || _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root.documentElement || document.body;
6723
+ }
6724
+ },
6725
+ enumerable: false,
6726
+ configurable: true
6727
+ });
6707
6728
  Object.defineProperty(DragDropDOMAdapter.prototype, "isMicroMovement", {
6708
6729
  // see https://stackoverflow.com/questions/6042202/how-to-distinguish-mouse-click-and-drag
6709
6730
  get: function () {
@@ -6729,7 +6750,7 @@ var DragDropDOMAdapter = /** @class */ (function () {
6729
6750
  _this.savedTargetNode = event.target;
6730
6751
  _this.savedTargetNode.style.cssText =
6731
6752
  "\n position: absolute;\n height: 1px!important;\n width: 1px!important;\n overflow: hidden;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n ";
6732
- _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.rootElement.appendChild(_this.savedTargetNode);
6753
+ _this.rootElement.appendChild(_this.savedTargetNode);
6733
6754
  }
6734
6755
  _this.stopLongTap();
6735
6756
  }, this.longTap ? 500 : 0);
@@ -6737,6 +6758,8 @@ var DragDropDOMAdapter = /** @class */ (function () {
6737
6758
  document.addEventListener("pointermove", this.stopLongTapIfMoveEnough);
6738
6759
  };
6739
6760
  DragDropDOMAdapter.prototype.moveShortcutElement = function (event) {
6761
+ var rootElementX = this.rootElement.getBoundingClientRect().x;
6762
+ var rootElementY = this.rootElement.getBoundingClientRect().y;
6740
6763
  this.doScroll(event.clientY, event.clientX);
6741
6764
  var shortcutHeight = this.draggedElementShortcut.offsetHeight;
6742
6765
  var shortcutWidth = this.draggedElementShortcut.offsetWidth;
@@ -6747,50 +6770,56 @@ var DragDropDOMAdapter = /** @class */ (function () {
6747
6770
  shortcutXOffset = shortcutWidth / 2;
6748
6771
  shortcutYOffset = shortcutHeight / 2;
6749
6772
  }
6750
- var documentBottom = (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__["isShadowDOM"])(_settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root) ? _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root.host : _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root.documentElement).clientHeight;
6751
- var documentRight = (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__["isShadowDOM"])(_settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root) ? _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root.host : _settings__WEBPACK_IMPORTED_MODULE_2__["settings"].environment.root.documentElement).clientWidth;
6752
- var shortcutBottomCoordinate = this.getShortcutBottomCoordinate(event.clientY, shortcutHeight, shortcutYOffset);
6753
- var shortcutRightCoordinate = this.getShortcutRightCoordinate(event.clientX, shortcutWidth, shortcutXOffset);
6754
- if (shortcutRightCoordinate >= documentRight) {
6773
+ var documentBottom = document.documentElement.clientHeight;
6774
+ var documentRight = document.documentElement.clientWidth;
6775
+ var pageX = event.pageX;
6776
+ var pageY = event.pageY;
6777
+ var clientX = event.clientX;
6778
+ var clientY = event.clientY;
6779
+ var shortcutBottomCoordinate = this.getShortcutBottomCoordinate(clientY, shortcutHeight, shortcutYOffset);
6780
+ var shortcutRightCoordinate = this.getShortcutRightCoordinate(clientX, shortcutWidth, shortcutXOffset);
6781
+ if (shortcutRightCoordinate >= documentRight) { // right boundary
6755
6782
  this.draggedElementShortcut.style.left =
6756
- event.pageX -
6757
- event.clientX +
6758
- documentRight -
6759
- shortcutWidth +
6783
+ // pageX -
6784
+ // clientX +
6785
+ documentRight -
6786
+ shortcutWidth -
6787
+ rootElementX +
6760
6788
  "px";
6761
6789
  this.draggedElementShortcut.style.top =
6762
- event.pageY - shortcutYOffset + "px";
6790
+ /*pageY*/ clientY - shortcutYOffset - rootElementY + "px";
6763
6791
  return;
6764
6792
  }
6765
- if (event.clientX - shortcutXOffset <= 0) {
6793
+ if (clientX - shortcutXOffset <= 0) { // left boundary
6766
6794
  this.draggedElementShortcut.style.left =
6767
- event.pageX - event.clientX + "px";
6795
+ pageX - clientX - rootElementX + "px";
6768
6796
  this.draggedElementShortcut.style.top =
6769
- event.pageY - shortcutYOffset + "px";
6797
+ /*pageY*/ clientY - rootElementY - shortcutYOffset + "px";
6770
6798
  return;
6771
6799
  }
6772
- if (shortcutBottomCoordinate >= documentBottom) {
6800
+ if (shortcutBottomCoordinate >= documentBottom) { // bottom boundary
6773
6801
  this.draggedElementShortcut.style.left =
6774
- event.pageX - shortcutXOffset + "px";
6802
+ /*pageX*/ clientX - shortcutXOffset - rootElementX + "px";
6775
6803
  this.draggedElementShortcut.style.top =
6776
- event.pageY -
6777
- event.clientY +
6778
- documentBottom -
6779
- shortcutHeight +
6804
+ // pageY -
6805
+ // clientY +
6806
+ documentBottom -
6807
+ shortcutHeight -
6808
+ rootElementY +
6780
6809
  "px";
6781
6810
  return;
6782
6811
  }
6783
- if (event.clientY - shortcutYOffset <= 0) {
6812
+ if (clientY - shortcutYOffset <= 0) { // top boundary
6784
6813
  this.draggedElementShortcut.style.left =
6785
- event.pageX - shortcutXOffset + "px";
6814
+ clientX - shortcutXOffset - rootElementX + "px";
6786
6815
  this.draggedElementShortcut.style.top =
6787
- event.pageY - event.clientY + "px";
6816
+ pageY - clientY - rootElementY + "px";
6788
6817
  return;
6789
6818
  }
6790
6819
  this.draggedElementShortcut.style.left =
6791
- event.pageX - shortcutXOffset + "px";
6820
+ clientX - rootElementX - shortcutXOffset + "px";
6792
6821
  this.draggedElementShortcut.style.top =
6793
- event.pageY - shortcutYOffset + "px";
6822
+ clientY - rootElementY - shortcutYOffset + "px";
6794
6823
  };
6795
6824
  DragDropDOMAdapter.prototype.getShortcutBottomCoordinate = function (currentY, shortcutHeight, shortcutYOffset) {
6796
6825
  return currentY + shortcutHeight - shortcutYOffset;
@@ -6801,7 +6830,7 @@ var DragDropDOMAdapter = /** @class */ (function () {
6801
6830
  DragDropDOMAdapter.prototype.doScroll = function (clientY, clientX) {
6802
6831
  var _this = this;
6803
6832
  cancelAnimationFrame(this.scrollIntervalId);
6804
- var startScrollBoundary = 50;
6833
+ var startScrollBoundary = 100;
6805
6834
  this.draggedElementShortcut.hidden = true;
6806
6835
  var dragOverNode = document.elementFromPoint(clientX, clientY);
6807
6836
  this.draggedElementShortcut.hidden = false;
@@ -6846,7 +6875,7 @@ var DragDropDOMAdapter = /** @class */ (function () {
6846
6875
  if (event.which === 3)
6847
6876
  return; //right mouse btn
6848
6877
  this.dd.dragInit(event, draggedElement, parentElement, draggedElementNode);
6849
- document.body.append(this.draggedElementShortcut);
6878
+ this.rootElement.append(this.draggedElementShortcut);
6850
6879
  this.moveShortcutElement(event);
6851
6880
  document.addEventListener("pointermove", this.dragOver);
6852
6881
  document.addEventListener("pointercancel", this.handlePointerCancel);
@@ -6929,13 +6958,13 @@ var DragDropMatrixRows = /** @class */ (function (_super) {
6929
6958
  var _this = this;
6930
6959
  var draggedElementShortcut = document.createElement("div");
6931
6960
  // draggedElementShortcut.innerText = text;
6932
- draggedElementShortcut.style.cssText = " \n cursor: grabbing;\n position: absolute;\n z-index: 10000;\n font-family: var(--font-family, $font-family);\n ";
6961
+ draggedElementShortcut.style.cssText = " \n cursor: grabbing;\n position: absolute;\n z-index: 10000;\n font-family: var(--font-family, 'Open Sans');\n ";
6933
6962
  var isDeepClone = true;
6934
6963
  if (!!draggedElementNode) {
6935
6964
  var row = (draggedElementNode
6936
6965
  .closest("[data-sv-drop-target-matrix-row]"));
6937
6966
  var clone = (row.cloneNode(isDeepClone));
6938
- clone.style.cssText = "\n box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.1), 0px 2px 6px rgba(0, 0, 0, 0.1);\n background-color: white;\n display: flex;\n flex-grow: 0;\n flex-shrink: 0;\n align-items: center;\n line-height: 0;\n width: " + row.offsetWidth + "px;\n ";
6967
+ clone.style.cssText = "\n box-shadow: var(--sjs-shadow-large, 0px 8px 16px 0px rgba(0, 0, 0, 0.1)), var(--sjs-shadow-medium, 0px 2px 6px 0px rgba(0, 0, 0, 0.1));\n background-color: var(--sjs-general-backcolor, var(--background, #fff));\n display: flex;\n flex-grow: 0;\n flex-shrink: 0;\n align-items: center;\n line-height: 0;\n width: " + row.offsetWidth + "px;\n ";
6939
6968
  clone.classList.remove("sv-matrix__drag-drop--moveup");
6940
6969
  clone.classList.remove("sv-matrix__drag-drop--movedown");
6941
6970
  this.draggedElement.isDragDropMoveDown = false;
@@ -7105,7 +7134,7 @@ var DragDropRankingChoices = /** @class */ (function (_super) {
7105
7134
  DragDropRankingChoices.prototype.createDraggedElementShortcut = function (text, draggedElementNode, event) {
7106
7135
  var draggedElementShortcut = document.createElement("div");
7107
7136
  draggedElementShortcut.className = this.shortcutClass + " sv-ranking-shortcut";
7108
- draggedElementShortcut.style.cssText = " \n cursor: grabbing;\n position: absolute;\n z-index: 10000;\n border-radius: 36px;\n min-width: 100px;\n box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.1), 0px 2px 6px rgba(0, 0, 0, 0.1);\n background-color: var(--background, white);\n font-family: var(--font-family, $font-family);\n ";
7137
+ draggedElementShortcut.style.cssText = " \n cursor: grabbing;\n position: absolute;\n z-index: 10000;\n border-radius: calc(12.5 * var(--sjs-base-unit, var(--base-unit, 8px)));\n min-width: 100px;\n box-shadow: var(--sjs-shadow-medium, 0px 2px 6px 0px rgba(0, 0, 0, 0.1)), var(--sjs-shadow-large, 0px 8px 16px 0px rgba(0, 0, 0, 0.1));\n background-color: var(--sjs-general-backcolor, var(--background, #fff));\n font-family: var(--font-family, 'Open Sans');\n ";
7109
7138
  var isDeepClone = true;
7110
7139
  var clone = draggedElementNode.cloneNode(isDeepClone);
7111
7140
  draggedElementShortcut.appendChild(clone);
@@ -8559,7 +8588,7 @@ __webpack_require__.r(__webpack_exports__);
8559
8588
  /*!*************************************!*\
8560
8589
  !*** ./src/entries/chunks/model.ts ***!
8561
8590
  \*************************************/
8562
- /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank */
8591
+ /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank */
8563
8592
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
8564
8593
 
8565
8594
  "use strict";
@@ -8854,6 +8883,8 @@ __webpack_require__.r(__webpack_exports__);
8854
8883
  /* harmony import */ var _surveyToc__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../../surveyToc */ "./src/surveyToc.ts");
8855
8884
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["tryNavigateToPage"]; });
8856
8885
 
8886
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["tryFocusPage"]; });
8887
+
8857
8888
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["createTOCListModel"]; });
8858
8889
 
8859
8890
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["getTocRootCss"]; });
@@ -9012,7 +9043,7 @@ __webpack_require__.r(__webpack_exports__);
9012
9043
  // import "../../main.scss";
9013
9044
  //import "../../modern.scss";
9014
9045
  var Version;
9015
- Version = "" + "1.9.97";
9046
+ Version = "" + "1.9.99";
9016
9047
  function checkLibraryVersion(ver, libraryName) {
9017
9048
  if (Version != ver) {
9018
9049
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -9120,7 +9151,7 @@ function checkLibraryVersion(ver, libraryName) {
9120
9151
  /*!**************************************!*\
9121
9152
  !*** ./src/entries/core-wo-model.ts ***!
9122
9153
  \**************************************/
9123
- /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper */
9154
+ /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper */
9124
9155
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9125
9156
 
9126
9157
  "use strict";
@@ -9362,6 +9393,8 @@ __webpack_require__.r(__webpack_exports__);
9362
9393
 
9363
9394
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["tryNavigateToPage"]; });
9364
9395
 
9396
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["tryFocusPage"]; });
9397
+
9365
9398
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["createTOCListModel"]; });
9366
9399
 
9367
9400
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["getTocRootCss"]; });
@@ -9563,7 +9596,7 @@ __webpack_require__.r(__webpack_exports__);
9563
9596
  /*!*****************************!*\
9564
9597
  !*** ./src/entries/core.ts ***!
9565
9598
  \*****************************/
9566
- /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper, Model */
9599
+ /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper, Model */
9567
9600
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9568
9601
 
9569
9602
  "use strict";
@@ -9805,6 +9838,8 @@ __webpack_require__.r(__webpack_exports__);
9805
9838
 
9806
9839
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["tryNavigateToPage"]; });
9807
9840
 
9841
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["tryFocusPage"]; });
9842
+
9808
9843
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["createTOCListModel"]; });
9809
9844
 
9810
9845
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["getTocRootCss"]; });
@@ -10366,7 +10401,7 @@ __webpack_require__.r(__webpack_exports__);
10366
10401
  /*!******************************!*\
10367
10402
  !*** ./src/entries/react.ts ***!
10368
10403
  \******************************/
10369
- /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper, Model, bootstrapThemeName, bootstrapThemeColors, bootstrapThemeCssRules, bootstrapMaterialThemeName, bootstrapMaterialThemeColors, bootstrapMaterialThemeCssRules, defaultBootstrapCss, defaultBootstrapMaterialCss, Survey, attachKey2click, ReactSurveyElementsWrapper, SurveyNavigationBase, SurveyTimerPanel, SurveyPage, SurveyRow, SurveyPanel, SurveyFlowPanel, SurveyQuestion, SurveyElementErrors, SurveyQuestionAndErrorsCell, ReactSurveyElement, SurveyElementBase, SurveyQuestionElementBase, SurveyQuestionCommentItem, SurveyQuestionComment, SurveyQuestionCheckbox, SurveyQuestionCheckboxItem, SurveyQuestionRanking, SurveyQuestionRankingItem, RatingItem, RatingItemStar, RatingItemSmiley, TagboxFilterString, SurveyQuestionOptionItem, SurveyQuestionDropdownBase, SurveyQuestionDropdown, SurveyQuestionTagboxItem, SurveyQuestionTagbox, SurveyQuestionDropdownSelect, SurveyQuestionMatrix, SurveyQuestionMatrixRow, SurveyQuestionHtml, SurveyQuestionFile, SurveyQuestionMultipleText, SurveyQuestionRadiogroup, SurveyQuestionRadioItem, SurveyQuestionText, SurveyQuestionBoolean, SurveyQuestionBooleanCheckbox, SurveyQuestionBooleanRadio, SurveyQuestionEmpty, SurveyQuestionMatrixDropdownCell, SurveyQuestionMatrixDropdownBase, SurveyQuestionMatrixDropdown, SurveyQuestionMatrixDynamic, SurveyQuestionMatrixDynamicAddButton, SurveyQuestionPanelDynamic, SurveyProgress, SurveyProgressButtons, SurveyProgressToc, SurveyQuestionRating, SurveyQuestionRatingDropdown, SurveyQuestionExpression, PopupSurvey, SurveyWindow, ReactQuestionFactory, ReactElementFactory, SurveyQuestionImagePicker, SurveyQuestionImage, SurveyQuestionSignaturePad, SurveyQuestionButtonGroup, SurveyQuestionCustom, SurveyQuestionComposite, Popup, List, TitleActions, TitleElement, SurveyActionBar, LogoImage, SurveyHeader, SvgIcon, SurveyQuestionMatrixDynamicRemoveButton, SurveyQuestionMatrixDetailButton, SurveyQuestionMatrixDynamicDragDropIcon, SurveyQuestionPanelDynamicAddButton, SurveyQuestionPanelDynamicRemoveButton, SurveyQuestionPanelDynamicPrevButton, SurveyQuestionPanelDynamicNextButton, SurveyQuestionPanelDynamicProgressText, SurveyNavigationButton, MatrixRow, Skeleton, NotifierComponent, ComponentsContainer, CharacterCounterComponent, SurveyLocStringViewer, SurveyLocStringEditor */
10404
+ /*! exports provided: Version, checkLibraryVersion, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper, Model, bootstrapThemeName, bootstrapThemeColors, bootstrapThemeCssRules, bootstrapMaterialThemeName, bootstrapMaterialThemeColors, bootstrapMaterialThemeCssRules, defaultBootstrapCss, defaultBootstrapMaterialCss, Survey, attachKey2click, ReactSurveyElementsWrapper, SurveyNavigationBase, SurveyTimerPanel, SurveyPage, SurveyRow, SurveyPanel, SurveyFlowPanel, SurveyQuestion, SurveyElementErrors, SurveyQuestionAndErrorsCell, ReactSurveyElement, SurveyElementBase, SurveyQuestionElementBase, SurveyQuestionCommentItem, SurveyQuestionComment, SurveyQuestionCheckbox, SurveyQuestionCheckboxItem, SurveyQuestionRanking, SurveyQuestionRankingItem, RatingItem, RatingItemStar, RatingItemSmiley, TagboxFilterString, SurveyQuestionOptionItem, SurveyQuestionDropdownBase, SurveyQuestionDropdown, SurveyQuestionTagboxItem, SurveyQuestionTagbox, SurveyQuestionDropdownSelect, SurveyQuestionMatrix, SurveyQuestionMatrixRow, SurveyQuestionHtml, SurveyQuestionFile, SurveyQuestionMultipleText, SurveyQuestionRadiogroup, SurveyQuestionRadioItem, SurveyQuestionText, SurveyQuestionBoolean, SurveyQuestionBooleanCheckbox, SurveyQuestionBooleanRadio, SurveyQuestionEmpty, SurveyQuestionMatrixDropdownCell, SurveyQuestionMatrixDropdownBase, SurveyQuestionMatrixDropdown, SurveyQuestionMatrixDynamic, SurveyQuestionMatrixDynamicAddButton, SurveyQuestionPanelDynamic, SurveyProgress, SurveyProgressButtons, SurveyProgressToc, SurveyQuestionRating, SurveyQuestionRatingDropdown, SurveyQuestionExpression, PopupSurvey, SurveyWindow, ReactQuestionFactory, ReactElementFactory, SurveyQuestionImagePicker, SurveyQuestionImage, SurveyQuestionSignaturePad, SurveyQuestionButtonGroup, SurveyQuestionCustom, SurveyQuestionComposite, Popup, List, TitleActions, TitleElement, SurveyActionBar, LogoImage, SurveyHeader, SvgIcon, SurveyQuestionMatrixDynamicRemoveButton, SurveyQuestionMatrixDetailButton, SurveyQuestionMatrixDynamicDragDropIcon, SurveyQuestionPanelDynamicAddButton, SurveyQuestionPanelDynamicRemoveButton, SurveyQuestionPanelDynamicPrevButton, SurveyQuestionPanelDynamicNextButton, SurveyQuestionPanelDynamicProgressText, SurveyNavigationButton, MatrixRow, Skeleton, NotifierComponent, ComponentsContainer, CharacterCounterComponent, SurveyLocStringViewer, SurveyLocStringEditor */
10370
10405
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10371
10406
 
10372
10407
  "use strict";
@@ -10608,6 +10643,8 @@ __webpack_require__.r(__webpack_exports__);
10608
10643
 
10609
10644
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["tryNavigateToPage"]; });
10610
10645
 
10646
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["tryFocusPage"]; });
10647
+
10611
10648
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["createTOCListModel"]; });
10612
10649
 
10613
10650
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["getTocRootCss"]; });
@@ -15784,10 +15821,11 @@ var Helpers = /** @class */ (function () {
15784
15821
  return true;
15785
15822
  };
15786
15823
  Helpers.compareStrings = function (x, y) {
15824
+ var normalize = _settings__WEBPACK_IMPORTED_MODULE_0__["settings"].comparator.normalizeTextCallback;
15787
15825
  if (!!x)
15788
- x = x.trim();
15826
+ x = normalize(x, "compare").trim();
15789
15827
  if (!!y)
15790
- y = y.trim();
15828
+ y = normalize(y, "compare").trim();
15791
15829
  if (!x && !y)
15792
15830
  return 0;
15793
15831
  if (!x)
@@ -15831,6 +15869,9 @@ var Helpers = /** @class */ (function () {
15831
15869
  if (caseSensitive === undefined)
15832
15870
  caseSensitive = _settings__WEBPACK_IMPORTED_MODULE_0__["settings"].comparator.caseSensitive;
15833
15871
  if (typeof x === "string" && typeof y === "string") {
15872
+ var normalize = _settings__WEBPACK_IMPORTED_MODULE_0__["settings"].comparator.normalizeTextCallback;
15873
+ x = normalize(x, "compare");
15874
+ y = normalize(y, "compare");
15834
15875
  if (trimStrings) {
15835
15876
  x = x.trim();
15836
15877
  y = y.trim();
@@ -19182,6 +19223,7 @@ __webpack_require__.r(__webpack_exports__);
19182
19223
  /* harmony import */ var _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/cssClassBuilder */ "./src/utils/cssClassBuilder.ts");
19183
19224
  /* harmony import */ var _element_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./element-helper */ "./src/element-helper.ts");
19184
19225
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/utils */ "./src/utils/utils.ts");
19226
+ /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./settings */ "./src/settings.ts");
19185
19227
  var __extends = (undefined && undefined.__extends) || (function () {
19186
19228
  var extendStatics = function (d, b) {
19187
19229
  extendStatics = Object.setPrototypeOf ||
@@ -19209,6 +19251,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
19209
19251
 
19210
19252
 
19211
19253
 
19254
+
19212
19255
  var defaultListCss = {
19213
19256
  root: "sv-list__container",
19214
19257
  item: "sv-list__item",
@@ -19286,6 +19329,7 @@ var ListModel = /** @class */ (function (_super) {
19286
19329
  if (!filterStringInLow)
19287
19330
  return true;
19288
19331
  var textInLow = (item.title || "").toLocaleLowerCase();
19332
+ textInLow = _settings__WEBPACK_IMPORTED_MODULE_6__["settings"].comparator.normalizeTextCallback(textInLow, "filter");
19289
19333
  return textInLow.indexOf(filterStringInLow.toLocaleLowerCase()) > -1;
19290
19334
  };
19291
19335
  ListModel.prototype.isItemVisible = function (item) {
@@ -25003,91 +25047,96 @@ __webpack_require__.r(__webpack_exports__);
25003
25047
  // These strings are commented out. Uncomment and edit them if you want to add your translations.
25004
25048
 
25005
25049
  var turkishSurveyStrings = {
25006
- pagePrevText: "Geri",
25007
- pageNextText: "İleri",
25008
- completeText: "Anketi Tamamla",
25009
- previewText: "Ön izleme",
25050
+ pagePrevText: "Önceki",
25051
+ pageNextText: "Sonraki",
25052
+ completeText: "Tamamla",
25053
+ previewText: "Önizleme",
25010
25054
  editText: "Düzenle",
25011
25055
  startSurveyText: "Başlat",
25012
25056
  otherItemText: "Diğer (açıklayınız)",
25013
- noneItemText: "Yok",
25014
- selectAllItemText: "Hepsini seç",
25015
- progressText: "Sayfa {0} / {1}",
25016
- // indexText: "{0} of {1}",
25017
- panelDynamicProgressText: "Kayıt {0} / {1}",
25018
- questionsProgressText: "Soruları cevapladı {0} / {1}",
25057
+ noneItemText: "Hiçbiri",
25058
+ selectAllItemText: "Tümünü Seç",
25059
+ progressText: "Sayfa {0}/{1}",
25060
+ indexText: "{0}/{1}",
25061
+ panelDynamicProgressText: "{0}/{1}",
25062
+ panelDynamicTabTextFormat: "Panel {panelIndex}",
25063
+ questionsProgressText: "{0}/{1} soru yanıtlandı",
25019
25064
  emptySurvey: "Ankette görüntülenecek sayfa ya da soru mevcut değil.",
25020
- completingSurvey: "Anketimizi tamamladığınız için teşekkür ederiz.",
25021
- completingSurveyBefore: "Kayıtlarımız, bu anketi zaten tamamladığınızı gösteriyor.",
25022
- loadingSurvey: "Anket sunucudan yükleniyor ...",
25023
- placeholder: "Seçiniz ...",
25024
- // ratingOptionsCaption: "Select...",
25065
+ completingSurvey: "Anketi tamamladığınız için teşekkür ederiz",
25066
+ completingSurveyBefore: "Kayıtlarımız bu anketi zaten tamamladığınızı gösteriyor.",
25067
+ loadingSurvey: "Anket Yükleniyor...",
25068
+ placeholder: "Seçiniz...",
25069
+ ratingOptionsCaption: "Seçiniz...",
25025
25070
  value: "değer",
25026
- requiredError: "Lütfen soruya cevap veriniz",
25071
+ requiredError: "Lütfen soruya cevap verin.",
25027
25072
  requiredErrorInPanel: "Lütfen en az bir soruyu yanıtlayın.",
25028
- requiredInAllRowsError: "Lütfen tüm satırlardaki soruları cevaplayınız.",
25029
- numericError: "Girilen değer numerik olmalıdır",
25030
- // minError: "The value should not be less than {0}",
25031
- // maxError: "The value should not be greater than {0}",
25032
- textMinLength: "En az {0} sembol giriniz.",
25033
- textMaxLength: "Lütfen {0} karakterden az girin.",
25034
- textMinMaxLength: "Lütfen {0} ’den fazla ve {1} ’den az karakter girin.",
25073
+ requiredInAllRowsError: "Lütfen tüm satırlardaki soruları cevaplayın.",
25074
+ numericError: "Değer sayısal olmalıdır.",
25075
+ minError: "Değer {0}'den küçük olmamalıdır",
25076
+ maxError: "Değer {0}'dan büyük olmamalıdır",
25077
+ textMinLength: "Lütfen en az {0} karakter girin.",
25078
+ textMaxLength: "Lütfen en fazla {0} karakter girin.",
25079
+ textMinMaxLength: "Lütfen {0}’den fazla ve {1}’den az karakter girin.",
25035
25080
  minRowCountError: "Lütfen en az {0} satırı doldurun.",
25036
- minSelectError: "Lütfen en az {0} seçeneği seçiniz.",
25037
- maxSelectError: "Lütfen {0} adetten fazla seçmeyiniz.",
25038
- numericMinMax: "The '{0}' should be equal or more than {1} and equal or less than {2}",
25081
+ minSelectError: "Lütfen en az {0} seçeneği seçin.",
25082
+ maxSelectError: "Lütfen en fazla {0} seçeneği seçin.",
25083
+ numericMinMax: "'{0}', {1}'e eşit veya daha büyük ve {2}'ye eşit veya daha küçük olmalıdır",
25039
25084
  numericMin: "'{0}' değeri {1} değerine eşit veya büyük olmalıdır",
25040
25085
  numericMax: "'{0}' değeri {1} değerine eşit ya da küçük olmalıdır.",
25041
- invalidEmail: "Lütfen geçerli bir eposta adresi giriniz.",
25086
+ invalidEmail: "Lütfen geçerli bir e-posta adresi girin.",
25042
25087
  invalidExpression: "İfade: {0} 'true' döndürmelidir.",
25043
- urlRequestError: "Talebi şu hatayı döndü '{0}'. {1}",
25044
- urlGetChoicesError: "Talep herhangi bir veri dönmedi ya da 'path' özelliği hatalı.",
25088
+ urlRequestError: "İstek '{0}' hatasını döndürdü. {1}",
25089
+ urlGetChoicesError: "İstek boş veri döndürdü veya 'path' özelliği yanlış",
25045
25090
  exceedMaxSize: "Dosya boyutu {0} değerini geçemez.",
25046
- otherRequiredError: "Lütfen diğer değerleri giriniz.",
25047
- uploadingFile: "Dosyanız yükleniyor. LÜtfen birkaç saniye bekleyin ve tekrar deneyin.",
25091
+ otherRequiredError: "Lütfen diğer değerleri girin.",
25092
+ uploadingFile: "Dosyanız yükleniyor. Lütfen birkaç saniye bekleyin ve tekrar deneyin.",
25048
25093
  loadingFile: "Yükleniyor...",
25049
- chooseFile: "Dosyaları seçin ...",
25094
+ chooseFile: "Dosyaları seçin...",
25050
25095
  noFileChosen: "Dosya seçili değil",
25051
- // fileDragAreaPlaceholder: "Drop a file here or click the button below to load the file.",
25096
+ fileDragAreaPlaceholder: "Buraya bir dosya bırakın veya dosyayı yüklemek için aşağıdaki düğmeyi tıklayın.",
25052
25097
  confirmDelete: "Kaydı silmek istiyor musunuz?",
25053
25098
  keyDuplicationError: "Bu değer benzersiz olmalıdır.",
25054
- addColumn: "Sütun ekleyin",
25099
+ addColumn: "Sütun Ekle",
25055
25100
  addRow: "Satır Ekle",
25056
25101
  removeRow: "Kaldır",
25057
- // emptyRowsText: "There are no rows.",
25102
+ emptyRowsText: "Satır yok.",
25058
25103
  addPanel: "Yeni ekle",
25059
- removePanel: "Kaldırmak",
25060
- choices_Item: "eşya",
25104
+ removePanel: "Kaldır",
25105
+ choices_Item: "öğe",
25061
25106
  matrix_column: "Sütun",
25062
- matrix_row: "Kürek çekmek",
25063
- // multipletext_itemname: "text",
25064
- savingData: "Sonuçlar sunucuya kaydediliyor ...",
25065
- savingDataError: "Bir hata oluştu ve sonuçları kaydedemedik.",
25107
+ matrix_row: "Satır",
25108
+ multipletext_itemname: "metin",
25109
+ savingData: "Sonuçlar sunucuya kaydediliyor...",
25110
+ savingDataError: "Bir hata oluştu ve sonuçlar kaydedilemedi.",
25066
25111
  savingDataSuccess: "Sonuçlar başarıyla kaydedildi!",
25067
25112
  saveAgainButton: "Tekrar deneyin",
25068
- timerMin: "min",
25113
+ timerMin: "dakika",
25069
25114
  timerSec: "saniye",
25070
25115
  timerSpentAll: "Bu sayfada {0} ve toplamda {1} harcadınız.",
25071
25116
  timerSpentPage: "Bu sayfaya {0} harcadınız.",
25072
25117
  timerSpentSurvey: "Toplamda {0} harcadınız.",
25073
- timerLimitAll: "Bu sayfaya {0} / {1} ve toplamda {2} / {3} harcadınız.",
25074
- timerLimitPage: "Bu sayfaya {0} / {1} harcadınız.",
25075
- timerLimitSurvey: "Toplamda {0} / {1} harcadınız.",
25076
- clearCaption: "Açık",
25077
- // signaturePlaceHolder: "Sign here",
25118
+ timerLimitAll: "Bu sayfaya {0}/{1} ve toplamda {2}/{3} harcadınız.",
25119
+ timerLimitPage: "Bu sayfaya {0}/{1} harcadınız.",
25120
+ timerLimitSurvey: "Toplamda {0}/{1} harcadınız.",
25121
+ clearCaption: "Temizle",
25122
+ signaturePlaceHolder: "Burayı imzalayın",
25078
25123
  chooseFileCaption: "Dosya seçin",
25079
25124
  removeFileCaption: "Bu dosyayı kaldır",
25080
25125
  booleanCheckedLabel: "Evet",
25081
25126
  booleanUncheckedLabel: "Hayır",
25082
25127
  confirmRemoveFile: "Bu dosyayı kaldırmak istediğinizden emin misiniz: {0}?",
25083
25128
  confirmRemoveAllFiles: "Tüm dosyaları kaldırmak istediğinizden emin misiniz?",
25084
- questionTitlePatternText: "Soru başlığı",
25085
- // modalCancelButtonText: "Cancel",
25086
- // modalApplyButtonText: "Apply",
25087
- // filterStringPlaceholder: "Type to search...",
25088
- // emptyMessage: "No data to display",
25089
- // noEntriesText: "There are no entries yet.\nClick the button below to add a new entry.",
25090
- // more: "More"
25129
+ questionTitlePatternText: "Soru Başlığı",
25130
+ modalCancelButtonText: "İptal",
25131
+ modalApplyButtonText: "Uygula",
25132
+ filterStringPlaceholder: "Aramak için yazın...",
25133
+ emptyMessage: "Görüntülenecek veri yok",
25134
+ noEntriesText: "Henüz giriş yok.\nYeni bir giriş eklemek için aşağıdaki düğmeyi tıklayın.",
25135
+ noEntriesReadonlyText: "Giriş yok.",
25136
+ more: "Daha fazla",
25137
+ tagboxDoneButtonCaption: "TAMAM",
25138
+ selectToRankEmptyRankedAreaText: "Tüm seçenekler sıralanmıştır",
25139
+ selectToRankEmptyUnrankedAreaText: "Seçimleri sıralamak için buraya sürükleyip bırakın",
25091
25140
  };
25092
25141
  survey_core__WEBPACK_IMPORTED_MODULE_0__["surveyLocalization"].locales["tr"] = turkishSurveyStrings;
25093
25142
  survey_core__WEBPACK_IMPORTED_MODULE_0__["surveyLocalization"].localeNames["tr"] = "türkçe";
@@ -26637,7 +26686,7 @@ var QuestionRowModel = /** @class */ (function (_super) {
26637
26686
  if (!el.isVisible || preSetWidthElements.indexOf(el) > -1)
26638
26687
  continue;
26639
26688
  if (preSetWidthElements.length == 0) {
26640
- el.renderWidth = (100 / visCount).toFixed(6) + "%";
26689
+ el.renderWidth = Number.parseFloat((100 / visCount).toFixed(6)) + "%";
26641
26690
  }
26642
26691
  else {
26643
26692
  el.renderWidth = this.getRenderedCalcWidth(el, preSetWidthElements, visCount);
@@ -28378,7 +28427,7 @@ var PanelModel = /** @class */ (function (_super) {
28378
28427
  if (this.hasEditButton) {
28379
28428
  actions.push({
28380
28429
  id: "cancel-preview",
28381
- title: this.survey.editText,
28430
+ locTitle: this.survey.locEditText,
28382
28431
  innerCss: this.survey.cssNavigationEdit,
28383
28432
  action: function () { _this.cancelPreview(); }
28384
28433
  });
@@ -30432,6 +30481,26 @@ var PopupSurveyModel = /** @class */ (function (_super) {
30432
30481
  PopupSurveyModel.prototype.changeExpandCollapse = function () {
30433
30482
  this.isExpanded = !this.isExpanded;
30434
30483
  };
30484
+ Object.defineProperty(PopupSurveyModel.prototype, "allowClose", {
30485
+ /**
30486
+ * Specifies whether to display a button that closes the pop-up window.
30487
+ *
30488
+ * Default value: `false`
30489
+ *
30490
+ * If you allow users to close the pop-up window, make sure to implement a UI element that opens it. This element should call the [`show()`](https://surveyjs.io/form-library/documentation/api-reference/pop-up-survey-model#show) method.
30491
+ * @see expand
30492
+ * @see collapse
30493
+ * @see hide
30494
+ */
30495
+ get: function () {
30496
+ return this.getPropertyValue("allowClose", false);
30497
+ },
30498
+ set: function (val) {
30499
+ this.setPropertyValue("allowClose", val);
30500
+ },
30501
+ enumerable: false,
30502
+ configurable: true
30503
+ });
30435
30504
  Object.defineProperty(PopupSurveyModel.prototype, "css", {
30436
30505
  get: function () {
30437
30506
  return this.survey.css;
@@ -30474,6 +30543,13 @@ var PopupSurveyModel = /** @class */ (function (_super) {
30474
30543
  enumerable: false,
30475
30544
  configurable: true
30476
30545
  });
30546
+ Object.defineProperty(PopupSurveyModel.prototype, "cssHeaderButton", {
30547
+ get: function () {
30548
+ return this.getPropertyValue("cssHeaderButton", "");
30549
+ },
30550
+ enumerable: false,
30551
+ configurable: true
30552
+ });
30477
30553
  Object.defineProperty(PopupSurveyModel.prototype, "renderedWidth", {
30478
30554
  get: function () {
30479
30555
  var width = this.getPropertyValue("width", "60%");
@@ -30495,6 +30571,7 @@ var PopupSurveyModel = /** @class */ (function (_super) {
30495
30571
  return;
30496
30572
  this.setPropertyValue("cssHeaderRoot", cssHeader.root);
30497
30573
  this.setPropertyValue("cssHeaderTitle", cssHeader.title);
30574
+ this.setPropertyValue("cssHeaderButton", cssHeader.button);
30498
30575
  this.updateCssButton();
30499
30576
  };
30500
30577
  PopupSurveyModel.prototype.updateCssButton = function () {
@@ -30575,12 +30652,16 @@ __webpack_require__.r(__webpack_exports__);
30575
30652
 
30576
30653
 
30577
30654
 
30578
- function createPopupModalViewModel(options, container) {
30655
+ function createPopupModalViewModel(options, rootElement) {
30579
30656
  var popupModel = new _popup__WEBPACK_IMPORTED_MODULE_0__["PopupModel"](options.componentName, options.data, "top", "left", false, true, options.onCancel, options.onApply, options.onHide, options.onShow, options.cssClass, options.title);
30580
30657
  popupModel.displayMode = options.displayMode || "popup";
30581
30658
  var popupViewModel = new _popup_modal_view_model__WEBPACK_IMPORTED_MODULE_2__["PopupModalViewModel"](popupModel);
30582
- popupViewModel.setComponentElement(container);
30583
- if (!container) {
30659
+ if (!!rootElement && !!rootElement.appendChild) {
30660
+ var container = document.createElement("div");
30661
+ rootElement.appendChild(container);
30662
+ popupViewModel.setComponentElement(container);
30663
+ }
30664
+ if (!popupViewModel.container) {
30584
30665
  popupViewModel.initializePopupContainer();
30585
30666
  }
30586
30667
  return popupViewModel;
@@ -32746,6 +32827,7 @@ var Question = /** @class */ (function (_super) {
32746
32827
  Question.prototype.createValueCopy = function () {
32747
32828
  return this.getUnbindValue(this.value);
32748
32829
  };
32830
+ Question.prototype.initDataUI = function () { };
32749
32831
  Question.prototype.getUnbindValue = function (value) {
32750
32832
  if (this.isValueSurveyElement(value))
32751
32833
  return value;
@@ -33093,7 +33175,7 @@ var Question = /** @class */ (function (_super) {
33093
33175
  var _this = this;
33094
33176
  this.defaultValueRunner = this.getDefaultRunner(this.defaultValueRunner, this.defaultValueExpression);
33095
33177
  this.setValueAndRunExpression(this.defaultValueRunner, this.getUnbindValue(this.defaultValue), function (val) {
33096
- if (!_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isTwoValueEquals(_this.value, val)) {
33178
+ if (!_this.isTwoValueEquals(_this.value, val)) {
33097
33179
  _this.value = val;
33098
33180
  }
33099
33181
  });
@@ -33127,7 +33209,7 @@ var Question = /** @class */ (function (_super) {
33127
33209
  if (!setFunc) {
33128
33210
  setFunc = function (val) {
33129
33211
  _this.runExpressionSetValue(val, function (val) {
33130
- if (!_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isTwoValueEquals(_this.value, val)) {
33212
+ if (!_this.isTwoValueEquals(_this.value, val)) {
33131
33213
  _this.value = val;
33132
33214
  }
33133
33215
  });
@@ -33248,7 +33330,6 @@ var Question = /** @class */ (function (_super) {
33248
33330
  }
33249
33331
  return res;
33250
33332
  };
33251
- Question.prototype.addSupportedValidators = function (supportedValidators, classValidators) { };
33252
33333
  Question.prototype.addConditionObjectsByContext = function (objects, context) {
33253
33334
  objects.push({
33254
33335
  name: this.getValueName(),
@@ -33256,6 +33337,28 @@ var Question = /** @class */ (function (_super) {
33256
33337
  question: this,
33257
33338
  });
33258
33339
  };
33340
+ /**
33341
+ * Returns an array of questions nested within the current question. Use this method to obtain questions within [Multiple Text](https://surveyjs.io/form-library/documentation/api-reference/multiple-text-entry-question-model), [Dynamic Panel](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model), and [Matrix](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-question-model)-like questions.
33342
+ * @param visibleOnly A Boolean value that specifies whether to include only visible nested questions.
33343
+ * @returns An array of nested questions.
33344
+ */
33345
+ Question.prototype.getNestedQuestions = function (visibleOnly) {
33346
+ if (visibleOnly === void 0) { visibleOnly = false; }
33347
+ var res = [];
33348
+ this.collectNestedQuestions(res, visibleOnly);
33349
+ if (res.length === 1 && res[0] === this)
33350
+ return [];
33351
+ return res;
33352
+ };
33353
+ Question.prototype.collectNestedQuestions = function (questions, visibleOnly) {
33354
+ if (visibleOnly === void 0) { visibleOnly = false; }
33355
+ if (visibleOnly && !this.isVisible)
33356
+ return;
33357
+ this.collectNestedQuestionsCore(questions, visibleOnly);
33358
+ };
33359
+ Question.prototype.collectNestedQuestionsCore = function (questions, visibleOnly) {
33360
+ questions.push(this);
33361
+ };
33259
33362
  Question.prototype.getConditionJson = function (operator, path) {
33260
33363
  if (operator === void 0) { operator = null; }
33261
33364
  if (path === void 0) { path = null; }
@@ -33650,6 +33753,12 @@ var Question = /** @class */ (function (_super) {
33650
33753
  Question.prototype.onMobileChanged = function () {
33651
33754
  this.onMobileChangedCallback && this.onMobileChangedCallback();
33652
33755
  };
33756
+ Question.prototype.triggerResponsiveness = function (hard) {
33757
+ if (hard === void 0) { hard = true; }
33758
+ if (this.triggerResponsivenessCallback) {
33759
+ this.triggerResponsivenessCallback(hard);
33760
+ }
33761
+ };
33653
33762
  Question.prototype.initResponsiveness = function (el) {
33654
33763
  var _this = this;
33655
33764
  this.destroyResizeObserver();
@@ -33662,17 +33771,33 @@ var Question = /** @class */ (function (_super) {
33662
33771
  return;
33663
33772
  var isProcessed_1 = false;
33664
33773
  var requiredWidth_1 = undefined;
33665
- this.resizeObserver = new ResizeObserver(function () {
33666
- var rootEl = el.querySelector(scrollableSelector_1);
33667
- if (!requiredWidth_1 && _this.isDefaultRendering()) {
33668
- requiredWidth_1 = rootEl.scrollWidth;
33669
- }
33670
- if (isProcessed_1 || !Object(_utils_utils__WEBPACK_IMPORTED_MODULE_11__["isContainerVisible"])(rootEl)) {
33774
+ this.triggerResponsivenessCallback = function (hard) {
33775
+ if (hard) {
33776
+ requiredWidth_1 = undefined;
33777
+ _this.renderAs = "default";
33671
33778
  isProcessed_1 = false;
33672
33779
  }
33780
+ var callback = function () {
33781
+ var rootEl = el.querySelector(scrollableSelector_1);
33782
+ if (!requiredWidth_1 && _this.isDefaultRendering()) {
33783
+ requiredWidth_1 = rootEl.scrollWidth;
33784
+ }
33785
+ if (isProcessed_1 || !Object(_utils_utils__WEBPACK_IMPORTED_MODULE_11__["isContainerVisible"])(rootEl)) {
33786
+ isProcessed_1 = false;
33787
+ }
33788
+ else {
33789
+ isProcessed_1 = _this.processResponsiveness(requiredWidth_1, Object(_utils_utils__WEBPACK_IMPORTED_MODULE_11__["getElementWidth"])(rootEl));
33790
+ }
33791
+ };
33792
+ if (hard) {
33793
+ setTimeout(callback, 1);
33794
+ }
33673
33795
  else {
33674
- isProcessed_1 = _this.processResponsiveness(requiredWidth_1, Object(_utils_utils__WEBPACK_IMPORTED_MODULE_11__["getElementWidth"])(rootEl));
33796
+ callback();
33675
33797
  }
33798
+ };
33799
+ this.resizeObserver = new ResizeObserver(function () {
33800
+ _this.triggerResponsiveness(false);
33676
33801
  });
33677
33802
  this.onMobileChangedCallback = function () {
33678
33803
  setTimeout(function () {
@@ -33708,6 +33833,7 @@ var Question = /** @class */ (function (_super) {
33708
33833
  this.resizeObserver.disconnect();
33709
33834
  this.resizeObserver = undefined;
33710
33835
  this.onMobileChangedCallback = undefined;
33836
+ this.triggerResponsivenessCallback = undefined;
33711
33837
  this.renderAs = this.getDesktopRenderAs();
33712
33838
  }
33713
33839
  };
@@ -35186,6 +35312,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
35186
35312
  return str == "" && val ? val : str;
35187
35313
  };
35188
35314
  QuestionSelectBase.prototype.getDisplayArrayValue = function (keysAsText, value, onGetValueCallback) {
35315
+ var _this = this;
35189
35316
  var items = this.visibleChoices;
35190
35317
  var strs = [];
35191
35318
  var vals = [];
@@ -35193,7 +35320,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
35193
35320
  vals.push(!onGetValueCallback ? value[i] : onGetValueCallback(i));
35194
35321
  }
35195
35322
  if (_helpers__WEBPACK_IMPORTED_MODULE_8__["Helpers"].isTwoValueEquals(this.value, vals)) {
35196
- this.getMultipleSelectedItems().forEach(function (item) { return strs.push(item.locText.textOrHtml); });
35323
+ this.getMultipleSelectedItems().forEach(function (item) { return strs.push(_this.getItemDisplayValue(item)); });
35197
35324
  }
35198
35325
  if (strs.length === 0) {
35199
35326
  for (var i = 0; i < vals.length; i++) {
@@ -35205,6 +35332,11 @@ var QuestionSelectBase = /** @class */ (function (_super) {
35205
35332
  }
35206
35333
  return strs.join(", ");
35207
35334
  };
35335
+ QuestionSelectBase.prototype.getItemDisplayValue = function (item) {
35336
+ if (item === this.otherItem && this.comment)
35337
+ return this.comment;
35338
+ return item.locText.textOrHtml;
35339
+ };
35208
35340
  QuestionSelectBase.prototype.getFilteredChoices = function () {
35209
35341
  return this.filteredChoicesValue
35210
35342
  ? this.filteredChoicesValue
@@ -38416,6 +38548,11 @@ var QuestionCompositeModel = /** @class */ (function (_super) {
38416
38548
  });
38417
38549
  }
38418
38550
  };
38551
+ QuestionCompositeModel.prototype.collectNestedQuestionsCore = function (questions, visibleOnly) {
38552
+ if (!this.contentPanel)
38553
+ return;
38554
+ this.contentPanel.questions.forEach(function (q) { return q.collectNestedQuestions(questions, visibleOnly); });
38555
+ };
38419
38556
  QuestionCompositeModel.prototype.convertDataValue = function (name, newValue) {
38420
38557
  var val = this.getValueForContentPanel(this.value);
38421
38558
  if (!val)
@@ -39102,7 +39239,7 @@ var QuestionExpressionModel = /** @class */ (function (_super) {
39102
39239
  this.expressionRunner = new _conditions__WEBPACK_IMPORTED_MODULE_4__["ExpressionRunner"](this.expression);
39103
39240
  }
39104
39241
  this.expressionRunner.onRunComplete = function (newValue) {
39105
- _this.value = newValue;
39242
+ _this.value = _this.roundValue(newValue);
39106
39243
  _this.unlocCalculation();
39107
39244
  };
39108
39245
  this.expressionRunner.run(values, properties);
@@ -39120,6 +39257,7 @@ var QuestionExpressionModel = /** @class */ (function (_super) {
39120
39257
  * Default value: -1
39121
39258
  * @see displayStyle
39122
39259
  * @see minimumFractionDigits
39260
+ * @see precision
39123
39261
  */
39124
39262
  get: function () {
39125
39263
  return this.getPropertyValue("maximumFractionDigits");
@@ -39253,6 +39391,29 @@ var QuestionExpressionModel = /** @class */ (function (_super) {
39253
39391
  enumerable: false,
39254
39392
  configurable: true
39255
39393
  });
39394
+ Object.defineProperty(QuestionExpressionModel.prototype, "precision", {
39395
+ /**
39396
+ * Specifies how many decimal digits to keep in the expression value.
39397
+ *
39398
+ * Default value: -1 (unlimited)
39399
+ * @see maximumFractionDigits
39400
+ */
39401
+ get: function () {
39402
+ return this.getPropertyValue("precision");
39403
+ },
39404
+ set: function (val) {
39405
+ this.setPropertyValue("precision", val);
39406
+ },
39407
+ enumerable: false,
39408
+ configurable: true
39409
+ });
39410
+ QuestionExpressionModel.prototype.roundValue = function (val) {
39411
+ if (this.precision < 0)
39412
+ return val;
39413
+ if (!_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isNumber(val))
39414
+ return val;
39415
+ return parseFloat(val.toFixed(this.precision));
39416
+ };
39256
39417
  QuestionExpressionModel.prototype.getValueAsStr = function (val) {
39257
39418
  if (this.displayStyle == "date") {
39258
39419
  var d = new Date(val);
@@ -39481,6 +39642,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("expression", [
39481
39642
  { name: "maximumFractionDigits:number", default: -1 },
39482
39643
  { name: "minimumFractionDigits:number", default: -1 },
39483
39644
  { name: "useGrouping:boolean", default: true },
39645
+ { name: "precision:number", default: -1, category: "data" },
39484
39646
  { name: "enableIf", visible: false },
39485
39647
  { name: "isRequired", visible: false },
39486
39648
  { name: "readOnly", visible: false },
@@ -40383,6 +40545,7 @@ __webpack_require__.r(__webpack_exports__);
40383
40545
  /* harmony import */ var _jsonobject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jsonobject */ "./src/jsonobject.ts");
40384
40546
  /* harmony import */ var _questionfactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./questionfactory */ "./src/questionfactory.ts");
40385
40547
  /* harmony import */ var _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/cssClassBuilder */ "./src/utils/cssClassBuilder.ts");
40548
+ /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/utils */ "./src/utils/utils.ts");
40386
40549
  var __extends = (undefined && undefined.__extends) || (function () {
40387
40550
  var extendStatics = function (d, b) {
40388
40551
  extendStatics = Object.setPrototypeOf ||
@@ -40408,6 +40571,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
40408
40571
 
40409
40572
 
40410
40573
 
40574
+
40411
40575
  var youtubeTags = ["youtube.com", "youtu.be"];
40412
40576
  var videoSuffics = [".mp4", ".mov", ".wmv", ".flv", ".avi", ".mkv"];
40413
40577
  var youtubeUrl = "https://www.youtube.com/";
@@ -40513,12 +40677,16 @@ var QuestionImageModel = /** @class */ (function (_super) {
40513
40677
  enumerable: false,
40514
40678
  configurable: true
40515
40679
  });
40516
- QuestionImageModel.prototype.getRenderedSize = function (val) {
40517
- return isNaN(Number(val)) ? val : val + "px";
40518
- };
40680
+ Object.defineProperty(QuestionImageModel.prototype, "renderedStyleHeight", {
40681
+ get: function () {
40682
+ return this.imageHeight ? Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__["getRenderedStyleSize"])(this.imageHeight) : undefined;
40683
+ },
40684
+ enumerable: false,
40685
+ configurable: true
40686
+ });
40519
40687
  Object.defineProperty(QuestionImageModel.prototype, "renderedHeight", {
40520
40688
  get: function () {
40521
- return this.imageHeight ? this.getRenderedSize(this.imageHeight) : undefined;
40689
+ return this.imageHeight ? Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__["getRenderedSize"])(this.imageHeight) : undefined;
40522
40690
  },
40523
40691
  enumerable: false,
40524
40692
  configurable: true
@@ -40542,9 +40710,16 @@ var QuestionImageModel = /** @class */ (function (_super) {
40542
40710
  enumerable: false,
40543
40711
  configurable: true
40544
40712
  });
40713
+ Object.defineProperty(QuestionImageModel.prototype, "renderedStyleWidth", {
40714
+ get: function () {
40715
+ return this.imageWidth ? Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__["getRenderedStyleSize"])(this.imageWidth) : undefined;
40716
+ },
40717
+ enumerable: false,
40718
+ configurable: true
40719
+ });
40545
40720
  Object.defineProperty(QuestionImageModel.prototype, "renderedWidth", {
40546
40721
  get: function () {
40547
- return this.imageWidth ? this.getRenderedSize(this.imageWidth) : undefined;
40722
+ return this.imageWidth ? Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__["getRenderedSize"])(this.imageWidth) : undefined;
40548
40723
  },
40549
40724
  enumerable: false,
40550
40725
  configurable: true
@@ -41021,8 +41196,8 @@ var QuestionImagePickerModel = /** @class */ (function (_super) {
41021
41196
  });
41022
41197
  Object.defineProperty(QuestionImagePickerModel.prototype, "renderedImageHeight", {
41023
41198
  get: function () {
41024
- var height = this.isResponsive ? this.responsiveImageHeight : this.imageHeight;
41025
- return (height ? height : 150) + "px";
41199
+ var height = this.isResponsive ? Math.floor(this.responsiveImageHeight) : this.imageHeight;
41200
+ return (height ? height : 150);
41026
41201
  },
41027
41202
  enumerable: false,
41028
41203
  configurable: true
@@ -41048,8 +41223,8 @@ var QuestionImagePickerModel = /** @class */ (function (_super) {
41048
41223
  });
41049
41224
  Object.defineProperty(QuestionImagePickerModel.prototype, "renderedImageWidth", {
41050
41225
  get: function () {
41051
- var width = this.isResponsive ? this.responsiveImageWidth : this.imageWidth;
41052
- return (width ? width : 200) + "px";
41226
+ var width = this.isResponsive ? Math.floor(this.responsiveImageWidth) : this.imageWidth;
41227
+ return (width ? width : 200);
41053
41228
  },
41054
41229
  enumerable: false,
41055
41230
  configurable: true
@@ -41200,11 +41375,21 @@ var QuestionImagePickerModel = /** @class */ (function (_super) {
41200
41375
  }
41201
41376
  return false;
41202
41377
  };
41378
+ QuestionImagePickerModel.prototype.triggerResponsiveness = function (hard) {
41379
+ if (hard === void 0) { hard = true; }
41380
+ if (hard && this.reCalcGapBetweenItemsCallback) {
41381
+ this.reCalcGapBetweenItemsCallback();
41382
+ }
41383
+ _super.prototype.triggerResponsiveness.call(this, hard);
41384
+ };
41203
41385
  QuestionImagePickerModel.prototype.afterRender = function (el) {
41386
+ var _this = this;
41204
41387
  _super.prototype.afterRender.call(this, el);
41205
- var variables = this.survey.getCss().variables;
41206
- if (!!variables) {
41207
- this.gapBetweenItems = Number.parseInt(window.getComputedStyle(el).getPropertyValue(variables.imagepickerGapBetweenItems)) || 0;
41388
+ if (el && el.querySelector(this.getObservedElementSelector())) {
41389
+ this.reCalcGapBetweenItemsCallback = function () {
41390
+ _this.gapBetweenItems = Math.ceil(Number.parseFloat(window.getComputedStyle(el.querySelector(_this.getObservedElementSelector())).gap)) || 16;
41391
+ };
41392
+ this.reCalcGapBetweenItemsCallback();
41208
41393
  }
41209
41394
  };
41210
41395
  __decorate([
@@ -44137,6 +44322,12 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
44137
44322
  }
44138
44323
  }
44139
44324
  };
44325
+ QuestionMatrixDropdownModelBase.prototype.collectNestedQuestionsCore = function (questions, visibleOnly) {
44326
+ var rows = this.visibleRows;
44327
+ rows.forEach(function (row) {
44328
+ row.questions.forEach(function (q) { return q.collectNestedQuestions(questions, visibleOnly); });
44329
+ });
44330
+ };
44140
44331
  QuestionMatrixDropdownModelBase.prototype.getConditionObjectRowName = function (index) {
44141
44332
  return "";
44142
44333
  };
@@ -46797,6 +46988,11 @@ var QuestionMatrixDynamicModel = /** @class */ (function (_super) {
46797
46988
  this.resetRenderedTable();
46798
46989
  }
46799
46990
  };
46991
+ QuestionMatrixDynamicModel.prototype.initDataUI = function () {
46992
+ if (!this.generatedVisibleRows) {
46993
+ this.visibleRows;
46994
+ }
46995
+ };
46800
46996
  Object.defineProperty(QuestionMatrixDynamicModel.prototype, "rowCount", {
46801
46997
  /**
46802
46998
  * The number of rows in the matrix.
@@ -48198,6 +48394,9 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
48198
48394
  });
48199
48395
  }
48200
48396
  };
48397
+ QuestionMultipleTextModel.prototype.collectNestedQuestionsCore = function (questions, visibleOnly) {
48398
+ this.items.forEach(function (item) { return item.editor.collectNestedQuestions(questions, visibleOnly); });
48399
+ };
48201
48400
  QuestionMultipleTextModel.prototype.getConditionJson = function (operator, path) {
48202
48401
  if (operator === void 0) { operator = null; }
48203
48402
  if (path === void 0) { path = null; }
@@ -48679,7 +48878,7 @@ var QuestionPanelDynamicItem = /** @class */ (function () {
48679
48878
  QuestionPanelDynamicItem.prototype.setValue = function (name, newValue) {
48680
48879
  var oldItemData = this.data.getPanelItemData(this);
48681
48880
  var oldValue = !!oldItemData ? oldItemData[name] : undefined;
48682
- if (_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isTwoValueEquals(newValue, oldValue))
48881
+ if (_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isTwoValueEquals(newValue, oldValue, false, true))
48683
48882
  return;
48684
48883
  this.data.setPanelItemData(this, name, _helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].getUnbindValue(newValue));
48685
48884
  var questions = this.panel.questions;
@@ -50185,6 +50384,14 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
50185
50384
  }
50186
50385
  }
50187
50386
  };
50387
+ QuestionPanelDynamicModel.prototype.collectNestedQuestionsCore = function (questions, visibleOnly) {
50388
+ var panels = visibleOnly ? this.visiblePanels : this.panels;
50389
+ if (!Array.isArray(panels))
50390
+ return;
50391
+ panels.forEach(function (panel) {
50392
+ panel.questions.forEach(function (q) { return q.collectNestedQuestions(questions, visibleOnly); });
50393
+ });
50394
+ };
50188
50395
  QuestionPanelDynamicModel.prototype.getConditionJson = function (operator, path) {
50189
50396
  if (operator === void 0) { operator = null; }
50190
50397
  if (path === void 0) { path = null; }
@@ -50594,6 +50801,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
50594
50801
  var q = questions[i];
50595
50802
  q.updateValueFromSurvey(values[q.getValueName()]);
50596
50803
  q.updateCommentFromSurvey(values[q.getValueName() + _settings__WEBPACK_IMPORTED_MODULE_8__["settings"].commentSuffix]);
50804
+ q.initDataUI();
50597
50805
  }
50598
50806
  };
50599
50807
  QuestionPanelDynamicModel.prototype.panelSurveyValueChanged = function (panel) {
@@ -54072,7 +54280,7 @@ var QuestionTextModel = /** @class */ (function (_super) {
54072
54280
  });
54073
54281
  QuestionTextModel.prototype.updateValueOnEvent = function (event) {
54074
54282
  var newValue = event.target.value;
54075
- if (!_helpers__WEBPACK_IMPORTED_MODULE_3__["Helpers"].isTwoValueEquals(this.value, newValue)) {
54283
+ if (!this.isTwoValueEquals(this.value, newValue)) {
54076
54284
  this.value = newValue;
54077
54285
  }
54078
54286
  };
@@ -55662,7 +55870,7 @@ var ListItem = /** @class */ (function (_super) {
55662
55870
  if (!this.item.component) {
55663
55871
  var text = this.renderLocString(this.item.locTitle, undefined, "locString");
55664
55872
  if (this.item.iconName) {
55665
- var icon = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_svg_icon_svg_icon__WEBPACK_IMPORTED_MODULE_4__["SvgIcon"], { key: 1, className: this.model.cssClasses.itemIcon, iconName: this.item.iconName, size: 24, "aria-label": this.item.title });
55873
+ var icon = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_svg_icon_svg_icon__WEBPACK_IMPORTED_MODULE_4__["SvgIcon"], { key: 1, className: this.model.cssClasses.itemIcon, iconName: this.item.iconName, size: this.item.iconSize, "aria-label": this.item.title });
55666
55874
  content.push(icon);
55667
55875
  content.push(react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { key: 2 }, text));
55668
55876
  }
@@ -56708,17 +56916,18 @@ function showModal(componentName, data, onApply, onCancel, cssClass, title, disp
56708
56916
  var options = Object(survey_core__WEBPACK_IMPORTED_MODULE_2__["createDialogOptions"])(componentName, data, onApply, onCancel, undefined, undefined, cssClass, title, displayMode);
56709
56917
  return showDialog(options);
56710
56918
  }
56711
- function showDialog(dialogOptions, container) {
56919
+ function showDialog(dialogOptions, rootElement) {
56712
56920
  dialogOptions.onHide = function () {
56713
56921
  react_dom__WEBPACK_IMPORTED_MODULE_0___default.a.unmountComponentAtNode(popupViewModel.container);
56714
56922
  popupViewModel.dispose();
56715
56923
  };
56716
- var popupViewModel = Object(survey_core__WEBPACK_IMPORTED_MODULE_2__["createPopupModalViewModel"])(dialogOptions, container);
56924
+ var popupViewModel = Object(survey_core__WEBPACK_IMPORTED_MODULE_2__["createPopupModalViewModel"])(dialogOptions, rootElement);
56717
56925
  react_dom__WEBPACK_IMPORTED_MODULE_0___default.a.render(react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(PopupContainer, { model: popupViewModel }), popupViewModel.container);
56718
56926
  popupViewModel.model.isVisible = true;
56719
56927
  return popupViewModel;
56720
56928
  }
56721
56929
  survey_core__WEBPACK_IMPORTED_MODULE_2__["settings"].showModal = showModal;
56930
+ survey_core__WEBPACK_IMPORTED_MODULE_2__["settings"].showDialog = showDialog;
56722
56931
 
56723
56932
 
56724
56933
  /***/ }),
@@ -57082,7 +57291,7 @@ var LogoImage = /** @class */ (function (_super) {
57082
57291
  LogoImage.prototype.render = function () {
57083
57292
  var content = [];
57084
57293
  content.push(react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { key: "logo-image", className: this.survey.logoClassNames },
57085
- react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("img", { className: this.survey.css.logoImage, src: this.survey.locLogo.renderedHtml, alt: this.survey.locTitle.renderedHtml, width: this.survey.logoWidth ? this.survey.logoWidth : undefined, height: this.survey.logoHeight ? this.survey.logoHeight : undefined, style: { objectFit: this.survey.logoFit } })));
57294
+ react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("img", { className: this.survey.css.logoImage, src: this.survey.locLogo.renderedHtml, alt: this.survey.locTitle.renderedHtml, width: this.survey.renderedLogoWidth, height: this.survey.renderedLogoHeight, style: { objectFit: this.survey.logoFit, width: this.survey.renderedStyleLogoWidth, height: this.survey.renderedStyleLogoHeight } })));
57086
57295
  return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, content);
57087
57296
  };
57088
57297
  return LogoImage;
@@ -57134,6 +57343,7 @@ var SurveyHeader = /** @class */ (function (_super) {
57134
57343
  function SurveyHeader(props) {
57135
57344
  var _this = _super.call(this, props) || this;
57136
57345
  _this.state = { changed: 0 };
57346
+ _this.rootRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.createRef();
57137
57347
  return _this;
57138
57348
  }
57139
57349
  Object.defineProperty(SurveyHeader.prototype, "survey", {
@@ -57152,6 +57362,7 @@ var SurveyHeader = /** @class */ (function (_super) {
57152
57362
  });
57153
57363
  SurveyHeader.prototype.componentDidMount = function () {
57154
57364
  var self = this;
57365
+ this.survey.afterRenderHeader(this.rootRef.current);
57155
57366
  this.survey.locLogo.onChanged = function () {
57156
57367
  self.setState({ changed: self.state.changed + 1 });
57157
57368
  };
@@ -57179,7 +57390,7 @@ var SurveyHeader = /** @class */ (function (_super) {
57179
57390
  SurveyHeader.prototype.render = function () {
57180
57391
  if (!this.survey.renderedHasHeader)
57181
57392
  return null;
57182
- return (react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { className: this.css.header },
57393
+ return (react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { className: this.css.header, ref: this.rootRef },
57183
57394
  this.renderLogoImage(this.survey.isLogoBefore),
57184
57395
  this.renderTitle(),
57185
57396
  this.renderLogoImage(this.survey.isLogoAfter),
@@ -57754,7 +57965,7 @@ var SurveyQuestionDropdownBase = /** @class */ (function (_super) {
57754
57965
  if (!!this.inputElement) {
57755
57966
  var control = this.inputElement;
57756
57967
  var newValue = this.question.dropdownListModel.inputStringRendered;
57757
- if (!survey_core__WEBPACK_IMPORTED_MODULE_1__["Helpers"].isTwoValueEquals(newValue, control.value)) {
57968
+ if (!survey_core__WEBPACK_IMPORTED_MODULE_1__["Helpers"].isTwoValueEquals(newValue, control.value, false, true)) {
57758
57969
  control.value = this.question.dropdownListModel.inputStringRendered;
57759
57970
  }
57760
57971
  }
@@ -58249,7 +58460,7 @@ var SurveyQuestionImage = /** @class */ (function (_super) {
58249
58460
  SurveyQuestionImage.prototype.renderElement = function () {
58250
58461
  var _this = this;
58251
58462
  var cssClasses = this.question.getImageCss();
58252
- var style = { objectFit: this.question.imageFit };
58463
+ var style = { objectFit: this.question.imageFit, width: this.question.renderedStyleWidth, height: this.question.renderedStyleHeight };
58253
58464
  if (!this.question.imageLink || this.question.contentNotLoaded) {
58254
58465
  style["display"] = "none";
58255
58466
  }
@@ -58664,7 +58875,7 @@ var SurveyPanelBase = /** @class */ (function (_super) {
58664
58875
  if (!!prevProps.page &&
58665
58876
  !!this.survey &&
58666
58877
  !!this.survey.currentPage &&
58667
- prevProps.page.name === this.survey.currentPage.name)
58878
+ prevProps.page.id === this.survey.currentPage.id)
58668
58879
  return;
58669
58880
  this.doAfterRender();
58670
58881
  };
@@ -58910,6 +59121,7 @@ __webpack_require__.r(__webpack_exports__);
58910
59121
  /* harmony import */ var _reactSurvey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reactSurvey */ "./src/react/reactSurvey.tsx");
58911
59122
  /* harmony import */ var _reactquestion_element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reactquestion_element */ "./src/react/reactquestion_element.tsx");
58912
59123
  /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! survey-core */ "./src/entries/core.ts");
59124
+ /* harmony import */ var _components_svg_icon_svg_icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/svg-icon/svg-icon */ "./src/react/components/svg-icon/svg-icon.tsx");
58913
59125
  var __extends = (undefined && undefined.__extends) || (function () {
58914
59126
  var extendStatics = function (d, b) {
58915
59127
  extendStatics = Object.setPrototypeOf ||
@@ -58929,6 +59141,7 @@ var __extends = (undefined && undefined.__extends) || (function () {
58929
59141
 
58930
59142
 
58931
59143
 
59144
+
58932
59145
  var PopupSurvey = /** @class */ (function (_super) {
58933
59146
  __extends(PopupSurvey, _super);
58934
59147
  function PopupSurvey(props) {
@@ -58962,6 +59175,7 @@ var PopupSurvey = /** @class */ (function (_super) {
58962
59175
  body));
58963
59176
  };
58964
59177
  PopupSurvey.prototype.renderWindowHeader = function () {
59178
+ var _this = this;
58965
59179
  var styleA = { width: "100%", cursor: "pointer" };
58966
59180
  var styleTitle = { paddingRight: "10px" };
58967
59181
  var glyphClassName = this.popup.cssButton;
@@ -58971,8 +59185,10 @@ var PopupSurvey = /** @class */ (function (_super) {
58971
59185
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { onClick: this.handleOnExpanded, style: styleA },
58972
59186
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { className: this.popup.cssHeaderTitle, style: styleTitle }, title),
58973
59187
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { className: glyphClassName, "aria-hidden": "true" })),
58974
- this.popup.isExpanded ? (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { onClick: this.handleOnExpanded, style: { float: "right", cursor: "pointer" } },
58975
- react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { className: this.popup.cssHeaderTitle, style: styleTitle }, "X"))) : null));
59188
+ this.popup.allowClose ? (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { className: this.popup.cssHeaderButton, onClick: function () { _this.popup.hide(); }, style: { transform: "rotate(45deg)", float: "right", cursor: "pointer", width: "24px", height: "24px" } },
59189
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_components_svg_icon_svg_icon__WEBPACK_IMPORTED_MODULE_4__["SvgIcon"], { iconName: "icon-expanddetail", size: 16 }))) : null,
59190
+ this.popup.isExpanded ? (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { className: this.popup.cssHeaderButton, onClick: this.handleOnExpanded, style: { float: "right", cursor: "pointer", width: "24px", height: "24px" } },
59191
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_components_svg_icon_svg_icon__WEBPACK_IMPORTED_MODULE_4__["SvgIcon"], { iconName: "icon-collapsedetail", size: 16 }))) : null));
58976
59192
  };
58977
59193
  PopupSurvey.prototype.renderBody = function () {
58978
59194
  var _this = this;
@@ -58986,6 +59202,7 @@ var PopupSurvey = /** @class */ (function (_super) {
58986
59202
  if (newProps.closeOnCompleteTimeout) {
58987
59203
  this.popup.closeOnCompleteTimeout = newProps.closeOnCompleteTimeout;
58988
59204
  }
59205
+ this.popup.allowClose = newProps.allowClose;
58989
59206
  this.popup.isShowing = true;
58990
59207
  if (!this.popup.isExpanded && (newProps.expanded || newProps.isExpanded))
58991
59208
  this.popup.expand();
@@ -61097,7 +61314,7 @@ var SurveyQuestionUncontrolledElement = /** @class */ (function (_super) {
61097
61314
  function SurveyQuestionUncontrolledElement(props) {
61098
61315
  var _this = _super.call(this, props) || this;
61099
61316
  _this.updateValueOnEvent = function (event) {
61100
- if (!survey_core__WEBPACK_IMPORTED_MODULE_1__["Helpers"].isTwoValueEquals(_this.questionBase.value, event.target.value)) {
61317
+ if (!survey_core__WEBPACK_IMPORTED_MODULE_1__["Helpers"].isTwoValueEquals(_this.questionBase.value, event.target.value, false, true)) {
61101
61318
  _this.setValueCore(event.target.value);
61102
61319
  }
61103
61320
  };
@@ -61121,7 +61338,7 @@ var SurveyQuestionUncontrolledElement = /** @class */ (function (_super) {
61121
61338
  if (!!this.control) {
61122
61339
  var control = this.control;
61123
61340
  var newValue = this.getValueCore();
61124
- if (!survey_core__WEBPACK_IMPORTED_MODULE_1__["Helpers"].isTwoValueEquals(newValue, control.value)) {
61341
+ if (!survey_core__WEBPACK_IMPORTED_MODULE_1__["Helpers"].isTwoValueEquals(newValue, control.value, false, true)) {
61125
61342
  control.value = this.getValue(newValue);
61126
61343
  }
61127
61344
  }
@@ -61669,7 +61886,6 @@ var SurveyQuestionMatrixRow = /** @class */ (function (_super) {
61669
61886
  var td = null;
61670
61887
  var column = this.question.visibleColumns[i];
61671
61888
  var key = "value" + i;
61672
- //var isChecked = Helpers.isTwoValueEquals(row.value, column.value);
61673
61889
  var isChecked = row.value == column.value;
61674
61890
  var itemClass = this.question.getItemClass(row, column);
61675
61891
  var inputId = this.question.inputId + "_" + row.name + "_" + i;
@@ -63969,7 +64185,7 @@ var TagboxFilterString = /** @class */ (function (_super) {
63969
64185
  if (!!this.inputElement) {
63970
64186
  var control = this.inputElement;
63971
64187
  var newValue = this.model.inputStringRendered;
63972
- if (!survey_core__WEBPACK_IMPORTED_MODULE_1__["Helpers"].isTwoValueEquals(newValue, control.value)) {
64188
+ if (!survey_core__WEBPACK_IMPORTED_MODULE_1__["Helpers"].isTwoValueEquals(newValue, control.value, false, true)) {
63973
64189
  control.value = this.model.inputStringRendered;
63974
64190
  }
63975
64191
  }
@@ -64575,10 +64791,17 @@ var settings = {
64575
64791
  *
64576
64792
  * - `caseSensitive`: `Boolean`\
64577
64793
  * Specifies whether to differentiate between capital and lower-case letters. Default value: `false`.
64794
+ *
64795
+ * - `normalizedTextCallback`: `(str: string, reason: string) => string`
64796
+ * Use the following function { str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); }
64797
+ * If you want to 'Brouillé' to be equal to 'Brouille'.
64798
+ * Use the following function { return reason === "filter" ? str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""): ""; }
64799
+ * If you want to use this functionality during filtering only, for example in list.
64578
64800
  */
64579
64801
  comparator: {
64580
64802
  trimStrings: true,
64581
- caseSensitive: false
64803
+ caseSensitive: false,
64804
+ normalizeTextCallback: function (str, reason) { return str; }
64582
64805
  },
64583
64806
  expressionDisableConversionChar: "#",
64584
64807
  get commentPrefix() { return settings.commentSuffix; },
@@ -64683,6 +64906,7 @@ var settings = {
64683
64906
  */
64684
64907
  maxDate: "",
64685
64908
  showModal: undefined,
64909
+ showDialog: undefined,
64686
64910
  supportCreatorV2: false,
64687
64911
  showDefaultItemsInCreatorV2: true,
64688
64912
  /**
@@ -65049,6 +65273,8 @@ var StylesManager = /** @class */ (function () {
65049
65273
  return themeMapper;
65050
65274
  };
65051
65275
  StylesManager.getIncludedThemeCss = function () {
65276
+ if (typeof _settings__WEBPACK_IMPORTED_MODULE_1__["settings"].environment === "undefined")
65277
+ return [];
65052
65278
  var rootElement = _settings__WEBPACK_IMPORTED_MODULE_1__["settings"].environment.rootElement;
65053
65279
  var themeMapper = StylesManager.getAvailableThemes();
65054
65280
  var element = Object(_utils_utils__WEBPACK_IMPORTED_MODULE_2__["isShadowDOM"])(rootElement) ? rootElement.host : rootElement;
@@ -65087,6 +65313,8 @@ var StylesManager = /** @class */ (function () {
65087
65313
  };
65088
65314
  StylesManager.applyTheme = function (themeName, themeSelector) {
65089
65315
  if (themeName === void 0) { themeName = "default"; }
65316
+ if (typeof _settings__WEBPACK_IMPORTED_MODULE_1__["settings"].environment === "undefined")
65317
+ return;
65090
65318
  var rootElement = _settings__WEBPACK_IMPORTED_MODULE_1__["settings"].environment.rootElement;
65091
65319
  var element = Object(_utils_utils__WEBPACK_IMPORTED_MODULE_2__["isShadowDOM"])(rootElement) ? rootElement.host : rootElement;
65092
65320
  _defaultCss_defaultV2Css__WEBPACK_IMPORTED_MODULE_0__["surveyCss"].currentType = themeName;
@@ -66632,6 +66860,7 @@ var SurveyModel = /** @class */ (function (_super) {
66632
66860
  var _this = _super.call(this) || this;
66633
66861
  _this.valuesHash = {};
66634
66862
  _this.variablesHash = {};
66863
+ _this.onThemeApplied = new _base__WEBPACK_IMPORTED_MODULE_2__["EventBase"]();
66635
66864
  //#region Event declarations
66636
66865
  /**
66637
66866
  * An event that is raised after a [trigger](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#triggers) is executed.
@@ -66921,34 +67150,34 @@ var SurveyModel = /** @class */ (function (_super) {
66921
67150
  */
66922
67151
  _this.onGetResult = _this.addEvent();
66923
67152
  /**
66924
- * An event that is raised on uploading the file in QuestionFile when `storeDataAsText` is set to `false`. Use this event to change the uploaded file name or to prevent a particular file from being uploaded.
67153
+ * An event that is raised when a File Upload question starts to upload a file. Applies only if [`storeDataAsText`](https://surveyjs.io/form-library/documentation/api-reference/file-model#storeDataAsText) is `false`. Use this event to upload files to your server.
66925
67154
  *
66926
67155
  * For information on event handler parameters, refer to descriptions within the interface.
66927
67156
  *
66928
67157
  * [View Demo](https://surveyjs.io/form-library/examples/file-upload/ (linkStyle))
66929
67158
  * @see uploadFiles
66930
- * @see QuestionFileModel.storeDataAsText
66931
67159
  * @see onDownloadFile
66932
67160
  * @see onClearFiles
66933
67161
  */
66934
67162
  _this.onUploadFiles = _this.addEvent();
66935
67163
  /**
66936
- * An event that is raised on downloading a file in QuestionFile. Use this event to pass the file to a preview.
67164
+ * An event that is raised when a File Upload question starts to download a file. Use this event to implement file preview when your server stores only file names.
66937
67165
  *
66938
67166
  * For information on event handler parameters, refer to descriptions within the interface.
66939
67167
  *
66940
- * [View Demo](https://surveyjs.io/form-library/examples/file-upload/ (linkStyle))
67168
+ * [View Demo](https://surveyjs.io/form-library/examples/store-file-names-in-survey-results/ (linkStyle))
66941
67169
  * @see downloadFile
66942
67170
  * @see onClearFiles
66943
67171
  * @see onUploadFiles
66944
67172
  */
66945
67173
  _this.onDownloadFile = _this.addEvent();
66946
67174
  /**
66947
- * This event is fired on clearing the value in a QuestionFile. Use this event to remove files stored on your server.
67175
+ * An event that is raised when users clear files in a [File Upload](https://surveyjs.io/form-library/documentation/api-reference/file-model) question. Use this event to delete files from your server.
66948
67176
  *
66949
67177
  * For information on event handler parameters, refer to descriptions within the interface.
66950
67178
  *
66951
67179
  * [View Demo](https://surveyjs.io/form-library/examples/file-delayed-upload/ (linkStyle))
67180
+ * @see clearFiles
66952
67181
  * @see onDownloadFile
66953
67182
  * @see onUploadFiles
66954
67183
  */
@@ -67301,8 +67530,8 @@ var SurveyModel = /** @class */ (function (_super) {
67301
67530
  }
67302
67531
  var htmlCallBack = function (str) { return "<h3>" + str + "</h3>"; };
67303
67532
  _this.createHtmlLocString("completedHtml", "completingSurvey", htmlCallBack);
67304
- _this.createHtmlLocString("completedBeforeHtml", "completingSurveyBefore", htmlCallBack);
67305
- _this.createHtmlLocString("loadingHtml", "loadingSurvey", htmlCallBack);
67533
+ _this.createHtmlLocString("completedBeforeHtml", "completingSurveyBefore", htmlCallBack, "completed-before");
67534
+ _this.createHtmlLocString("loadingHtml", "loadingSurvey", htmlCallBack, "loading");
67306
67535
  _this.createLocalizableString("logo", _this, false);
67307
67536
  _this.createLocalizableString("backgroundImage", _this, false);
67308
67537
  _this.createLocalizableString("startSurveyText", _this, false, true);
@@ -67515,8 +67744,13 @@ var SurveyModel = /** @class */ (function (_super) {
67515
67744
  }
67516
67745
  };
67517
67746
  };
67518
- SurveyModel.prototype.createHtmlLocString = function (name, locName, func) {
67519
- this.createLocalizableString(name, this, false, locName).onGetLocalizationTextCallback = func;
67747
+ SurveyModel.prototype.createHtmlLocString = function (name, locName, func, reason) {
67748
+ var _this = this;
67749
+ var res = this.createLocalizableString(name, this, false, locName);
67750
+ res.onGetLocalizationTextCallback = func;
67751
+ if (reason) {
67752
+ res.onGetTextCallback = function (str) { return _this.processHtml(str, reason); };
67753
+ }
67520
67754
  };
67521
67755
  SurveyModel.prototype.getType = function () {
67522
67756
  return "survey";
@@ -67826,7 +68060,7 @@ var SurveyModel = /** @class */ (function (_super) {
67826
68060
  /**
67827
68061
  * Specifies whether to save survey results when respondents switch between pages. Handle the [`onPartialSend`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onPartialSend) event to implement the save operation.
67828
68062
  *
67829
- * [Continue an Incomplete Survey](https://surveyjs.io/form-library/documentation/handle-survey-results-continue-incomplete (linkStyle)).
68063
+ * [Continue an Incomplete Survey](https://surveyjs.io/form-library/documentation/handle-survey-results-continue-incomplete (linkStyle))
67830
68064
  */
67831
68065
  get: function () {
67832
68066
  return this.getPropertyValue("sendResultOnPageNext");
@@ -67888,9 +68122,14 @@ var SurveyModel = /** @class */ (function (_super) {
67888
68122
  });
67889
68123
  Object.defineProperty(SurveyModel.prototype, "showNavigationButtons", {
67890
68124
  /**
67891
- * Gets or sets the navigation buttons position.
67892
- * Possible values: 'bottom' (default), 'top', 'both' and 'none'. Set it to 'none' to hide 'Prev', 'Next' and 'Complete' buttons.
67893
- * It makes sense if you are going to create a custom navigation, have only a single page, or the `goNextPageAutomatic` property is set to `true`.
68125
+ * Gets or sets the position of the Start, Next, Previous, and Complete navigation buttons and controls their visibility.
68126
+ *
68127
+ * Possible values:
68128
+ *
68129
+ * - `"bottom"` (default) - Displays the navigation buttons below survey content.
68130
+ * - `"top"` - Displays the navigation buttons above survey content.
68131
+ * - `"both"` - Displays the navigation buttons above and below survey content.
68132
+ * - `"none"` - Hides the navigation buttons. This setting may be useful if you [implement custom external navigation](https://surveyjs.io/form-library/examples/external-form-navigation-system/).
67894
68133
  * @see goNextPageAutomatic
67895
68134
  * @see showPrevButton
67896
68135
  */
@@ -67911,7 +68150,7 @@ var SurveyModel = /** @class */ (function (_super) {
67911
68150
  });
67912
68151
  Object.defineProperty(SurveyModel.prototype, "showPrevButton", {
67913
68152
  /**
67914
- * Gets or sets whether the Survey displays "Prev" button in its pages. Set it to `false` to prevent end-users from going back to their answers.
68153
+ * Specifies whether to display the Previous button. Set this property to `false` if respondents should not move backward along the survey.
67915
68154
  * @see showNavigationButtons
67916
68155
  */
67917
68156
  get: function () {
@@ -67964,10 +68203,10 @@ var SurveyModel = /** @class */ (function (_super) {
67964
68203
  });
67965
68204
  Object.defineProperty(SurveyModel.prototype, "showTitle", {
67966
68205
  /**
67967
- * Gets or sets whether the Survey displays survey title in its pages. Set it to `false` to hide a survey title.
67968
- * @see title
68206
+ * Specifies whether to display the [survey title](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#title).
67969
68207
  *
67970
- * [View Demo](https://surveyjs.io/form-library/examples/survey-options/ (linkStyle))
68208
+ * [View Demo](https://surveyjs.io/form-library/examples/brand-your-survey-header/ (linkStyle))
68209
+ * @see title
67971
68210
  */
67972
68211
  get: function () {
67973
68212
  return this.getPropertyValue("showTitle");
@@ -67980,10 +68219,7 @@ var SurveyModel = /** @class */ (function (_super) {
67980
68219
  });
67981
68220
  Object.defineProperty(SurveyModel.prototype, "showPageTitles", {
67982
68221
  /**
67983
- * Gets or sets whether the Survey displays page titles. Set it to `false` to hide page titles.
67984
- * @see PageModel.title
67985
- *
67986
- * [View Demo](https://surveyjs.io/form-library/examples/survey-options/ (linkStyle))
68222
+ * Specifies whether to display [page titles](https://surveyjs.io/form-library/documentation/api-reference/page-model#title).
67987
68223
  */
67988
68224
  get: function () {
67989
68225
  return this.getPropertyValue("showPageTitles");
@@ -67996,12 +68232,9 @@ var SurveyModel = /** @class */ (function (_super) {
67996
68232
  });
67997
68233
  Object.defineProperty(SurveyModel.prototype, "showCompletedPage", {
67998
68234
  /**
67999
- * On finishing the survey the complete page is shown. Set the property to `false`, to hide the complete page.
68000
- * @see data
68235
+ * Specifies whether to show the [complete page](https://surveyjs.io/form-library/documentation/design-survey/create-a-multi-page-survey#complete-page).
68001
68236
  * @see onComplete
68002
68237
  * @see navigateToUrl
68003
- *
68004
- * [View Demo](https://surveyjs.io/form-library/examples/survey-options/ (linkStyle))
68005
68238
  */
68006
68239
  get: function () {
68007
68240
  return this.getPropertyValue("showCompletedPage");
@@ -68424,16 +68657,21 @@ var SurveyModel = /** @class */ (function (_super) {
68424
68657
  _super.prototype.locStrsChanged.call(this);
68425
68658
  if (!this.currentPage)
68426
68659
  return;
68427
- if (!this.isShowStartingPage) {
68428
- this.updateProgressText();
68660
+ if (this.isDesignMode) {
68661
+ this.pages.forEach(function (page) { return page.locStrsChanged(); });
68429
68662
  }
68430
- var page = this.activePage;
68431
- if (!!page) {
68432
- page.locStrsChanged();
68663
+ else {
68664
+ var page = this.activePage;
68665
+ if (!!page) {
68666
+ page.locStrsChanged();
68667
+ }
68668
+ var visPages = this.visiblePages;
68669
+ for (var i = 0; i < visPages.length; i++) {
68670
+ visPages[i].navigationLocStrChanged();
68671
+ }
68433
68672
  }
68434
- var visPages = this.visiblePages;
68435
- for (var i = 0; i < visPages.length; i++) {
68436
- visPages[i].navigationLocStrChanged();
68673
+ if (!this.isShowStartingPage) {
68674
+ this.updateProgressText();
68437
68675
  }
68438
68676
  this.navigationBar.locStrsChanged();
68439
68677
  };
@@ -68496,7 +68734,8 @@ var SurveyModel = /** @class */ (function (_super) {
68496
68734
  };
68497
68735
  Object.defineProperty(SurveyModel.prototype, "emptySurveyText", {
68498
68736
  /**
68499
- * Returns the text displayed when a survey has no visible pages and questions.
68737
+ * Returns a message that is displayed when a survey does not contain visible pages or questions.
68738
+ * @see [Localization & Globalization](https://surveyjs.io/form-library/documentation/survey-localization)
68500
68739
  */
68501
68740
  get: function () {
68502
68741
  return this.getLocalizationString("emptySurvey");
@@ -68542,8 +68781,7 @@ var SurveyModel = /** @class */ (function (_super) {
68542
68781
  * @see logoFit
68543
68782
  */
68544
68783
  get: function () {
68545
- var width = this.getPropertyValue("logoWidth");
68546
- return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_15__["getSize"])(width);
68784
+ return this.getPropertyValue("logoWidth");
68547
68785
  },
68548
68786
  set: function (value) {
68549
68787
  this.setPropertyValue("logoWidth", value);
@@ -68551,6 +68789,20 @@ var SurveyModel = /** @class */ (function (_super) {
68551
68789
  enumerable: false,
68552
68790
  configurable: true
68553
68791
  });
68792
+ Object.defineProperty(SurveyModel.prototype, "renderedLogoWidth", {
68793
+ get: function () {
68794
+ return this.logoWidth ? Object(_utils_utils__WEBPACK_IMPORTED_MODULE_15__["getRenderedSize"])(this.logoWidth) : undefined;
68795
+ },
68796
+ enumerable: false,
68797
+ configurable: true
68798
+ });
68799
+ Object.defineProperty(SurveyModel.prototype, "renderedStyleLogoWidth", {
68800
+ get: function () {
68801
+ return this.logoWidth ? Object(_utils_utils__WEBPACK_IMPORTED_MODULE_15__["getRenderedStyleSize"])(this.logoWidth) : undefined;
68802
+ },
68803
+ enumerable: false,
68804
+ configurable: true
68805
+ });
68554
68806
  Object.defineProperty(SurveyModel.prototype, "logoHeight", {
68555
68807
  /**
68556
68808
  * A logo height in CSS-accepted values.
@@ -68564,8 +68816,7 @@ var SurveyModel = /** @class */ (function (_super) {
68564
68816
  * @see logoFit
68565
68817
  */
68566
68818
  get: function () {
68567
- var height = this.getPropertyValue("logoHeight");
68568
- return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_15__["getSize"])(height);
68819
+ return this.getPropertyValue("logoHeight");
68569
68820
  },
68570
68821
  set: function (value) {
68571
68822
  this.setPropertyValue("logoHeight", value);
@@ -68573,6 +68824,20 @@ var SurveyModel = /** @class */ (function (_super) {
68573
68824
  enumerable: false,
68574
68825
  configurable: true
68575
68826
  });
68827
+ Object.defineProperty(SurveyModel.prototype, "renderedLogoHeight", {
68828
+ get: function () {
68829
+ return this.logoHeight ? Object(_utils_utils__WEBPACK_IMPORTED_MODULE_15__["getRenderedSize"])(this.logoHeight) : undefined;
68830
+ },
68831
+ enumerable: false,
68832
+ configurable: true
68833
+ });
68834
+ Object.defineProperty(SurveyModel.prototype, "renderedStyleLogoHeight", {
68835
+ get: function () {
68836
+ return this.logoHeight ? Object(_utils_utils__WEBPACK_IMPORTED_MODULE_15__["getRenderedStyleSize"])(this.logoHeight) : undefined;
68837
+ },
68838
+ enumerable: false,
68839
+ configurable: true
68840
+ });
68576
68841
  Object.defineProperty(SurveyModel.prototype, "logoPosition", {
68577
68842
  /**
68578
68843
  * A logo position relative to the [survey title](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#title).
@@ -68978,10 +69243,9 @@ var SurveyModel = /** @class */ (function (_super) {
68978
69243
  };
68979
69244
  Object.defineProperty(SurveyModel.prototype, "startSurveyText", {
68980
69245
  /**
68981
- * Gets or sets the 'Start' button caption.
68982
- * The 'Start' button is shown on the started page. Set the `firstPageIsStarted` property to `true`, to display the started page.
69246
+ * Gets or sets a caption for the Start button.
68983
69247
  * @see firstPageIsStarted
68984
- * @see locale
69248
+ * @see [Localization & Globalization](https://surveyjs.io/form-library/documentation/survey-localization)
68985
69249
  */
68986
69250
  get: function () {
68987
69251
  return this.getLocalizableStringText("startSurveyText");
@@ -69001,8 +69265,8 @@ var SurveyModel = /** @class */ (function (_super) {
69001
69265
  });
69002
69266
  Object.defineProperty(SurveyModel.prototype, "pagePrevText", {
69003
69267
  /**
69004
- * Gets or sets the 'Prev' button caption.
69005
- * @see locale
69268
+ * Gets or sets a caption for the Previous button.
69269
+ * @see [Localization & Globalization](https://surveyjs.io/form-library/documentation/survey-localization)
69006
69270
  */
69007
69271
  get: function () {
69008
69272
  return this.getLocalizableStringText("pagePrevText");
@@ -69022,8 +69286,8 @@ var SurveyModel = /** @class */ (function (_super) {
69022
69286
  });
69023
69287
  Object.defineProperty(SurveyModel.prototype, "pageNextText", {
69024
69288
  /**
69025
- * Gets or sets the 'Next' button caption.
69026
- * @see locale
69289
+ * Gets or sets a caption for the Next button.
69290
+ * @see [Localization & Globalization](https://surveyjs.io/form-library/documentation/survey-localization)
69027
69291
  */
69028
69292
  get: function () {
69029
69293
  return this.getLocalizableStringText("pageNextText");
@@ -69043,8 +69307,8 @@ var SurveyModel = /** @class */ (function (_super) {
69043
69307
  });
69044
69308
  Object.defineProperty(SurveyModel.prototype, "completeText", {
69045
69309
  /**
69046
- * Gets or sets the 'Complete' button caption.
69047
- * @see locale
69310
+ * Gets or sets a caption for the Complete button.
69311
+ * @see [Localization & Globalization](https://surveyjs.io/form-library/documentation/survey-localization)
69048
69312
  */
69049
69313
  get: function () {
69050
69314
  return this.getLocalizableStringText("completeText");
@@ -69117,13 +69381,9 @@ var SurveyModel = /** @class */ (function (_super) {
69117
69381
  };
69118
69382
  Object.defineProperty(SurveyModel.prototype, "questionTitlePattern", {
69119
69383
  /**
69120
- * Set the pattern for question title. Default is "numTitleRequire", 1. What is your name? *,
69121
- * You can set it to numRequireTitle: 1. * What is your name?
69122
- * You can set it to requireNumTitle: * 1. What is your name?
69123
- * You can set it to numTitle (remove require symbol completely): 1. What is your name?
69124
- * @see QuestionModel.title
69384
+ * Specifies a pattern for question titles.
69125
69385
  *
69126
- * [View Demo](https://surveyjs.io/form-library/examples/survey-processtext/ (linkStyle))
69386
+ * Refer to the following help topic for more information: [Title Pattern](https://surveyjs.io/form-library/documentation/design-survey/configure-question-titles#title-pattern).
69127
69387
  */
69128
69388
  get: function () {
69129
69389
  return this.getPropertyValue("questionTitlePattern", "numTitleRequire");
@@ -69920,7 +70180,7 @@ var SurveyModel = /** @class */ (function (_super) {
69920
70180
  if (newPage == this.currentPage)
69921
70181
  return;
69922
70182
  var oldValue = this.currentPage;
69923
- if (!this.currentPageChanging(newPage, oldValue))
70183
+ if (!this.isShowingPreview && !this.currentPageChanging(newPage, oldValue))
69924
70184
  return;
69925
70185
  this.setPropertyValue("currentPage", newPage);
69926
70186
  if (!!newPage) {
@@ -69929,7 +70189,9 @@ var SurveyModel = /** @class */ (function (_super) {
69929
70189
  newPage.setWasShown(true);
69930
70190
  }
69931
70191
  this.locStrsChanged();
69932
- this.currentPageChanged(newPage, oldValue);
70192
+ if (!this.isShowingPreview) {
70193
+ this.currentPageChanged(newPage, oldValue);
70194
+ }
69933
70195
  },
69934
70196
  enumerable: false,
69935
70197
  configurable: true
@@ -69967,7 +70229,7 @@ var SurveyModel = /** @class */ (function (_super) {
69967
70229
  });
69968
70230
  Object.defineProperty(SurveyModel.prototype, "isShowStartingPage", {
69969
70231
  /**
69970
- * The started page is showing right now. survey state equals to "starting"
70232
+ * A Boolean value that indicates whether the [start page](https://surveyjs.io/form-library/documentation/design-survey/create-a-multi-page-survey#start-page) is currently displayed.
69971
70233
  */
69972
70234
  get: function () {
69973
70235
  return this.state === "starting";
@@ -70292,7 +70554,8 @@ var SurveyModel = /** @class */ (function (_super) {
70292
70554
  isNextPage: diff === 1,
70293
70555
  isPrevPage: diff === -1,
70294
70556
  isGoingForward: diff > 0,
70295
- isGoingBackward: diff < 0
70557
+ isGoingBackward: diff < 0,
70558
+ isAfterPreview: this.changeCurrentPageFromPreview === true
70296
70559
  };
70297
70560
  };
70298
70561
  /**
@@ -70317,7 +70580,7 @@ var SurveyModel = /** @class */ (function (_super) {
70317
70580
  : 100;
70318
70581
  }
70319
70582
  var visPages = this.visiblePages;
70320
- var index = visPages.indexOf(this.currentPage) + 1;
70583
+ var index = visPages.indexOf(this.currentPage);
70321
70584
  return Math.ceil((index * 100) / visPages.length);
70322
70585
  };
70323
70586
  Object.defineProperty(SurveyModel.prototype, "progressValue", {
@@ -70487,11 +70750,9 @@ var SurveyModel = /** @class */ (function (_super) {
70487
70750
  });
70488
70751
  Object.defineProperty(SurveyModel.prototype, "hasCookie", {
70489
70752
  /**
70490
- * Returns `true`, if a user has already completed the survey in this browser and there is a cookie about it. Survey goes to `completedbefore` state if the function returns `true`.
70491
- * @see cookieName
70753
+ * Indicates whether the browser has a cookie with a specified [`cookieName`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#cookieName). If this property's value is `true`, the respondent has passed the survey previously.
70492
70754
  * @see setCookie
70493
70755
  * @see deleteCookie
70494
- * @see state
70495
70756
  */
70496
70757
  get: function () {
70497
70758
  if (!this.cookieName || typeof document === "undefined")
@@ -70503,8 +70764,7 @@ var SurveyModel = /** @class */ (function (_super) {
70503
70764
  configurable: true
70504
70765
  });
70505
70766
  /**
70506
- * Set the cookie with `cookieName` in user's browser. It is done automatically on survey complete if the `cookieName` property value is not empty.
70507
- * @see cookieName
70767
+ * Sets a cookie with a specified [`cookieName`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#cookieName) in the browser. If the `cookieName` property value is defined, this method is automatically called on survey completion.
70508
70768
  * @see hasCookie
70509
70769
  * @see deleteCookie
70510
70770
  */
@@ -70515,8 +70775,7 @@ var SurveyModel = /** @class */ (function (_super) {
70515
70775
  this.cookieName + "=true; expires=Fri, 31 Dec 9999 0:0:0 GMT";
70516
70776
  };
70517
70777
  /**
70518
- * Deletes the cookie with `cookieName` from the browser.
70519
- * @see cookieName
70778
+ * Deletes a cookie with a specified [`cookieName`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#cookieName) from the browser.
70520
70779
  * @see hasCookie
70521
70780
  * @see setCookie
70522
70781
  */
@@ -70902,23 +71161,18 @@ var SurveyModel = /** @class */ (function (_super) {
70902
71161
  this.isShowingPreview = options.allowShowPreview && options.allow;
70903
71162
  };
70904
71163
  /**
70905
- * Cancels a [preview of given answers](https://surveyjs.io/form-library/documentation/design-survey/create-a-multi-page-survey#preview-page) and switches the survey to the page specified by the `curPage` parameter.
70906
- * @param curPage A new current page. If you do not specify this parameter, the survey displays the last page.
71164
+ * Cancels a [preview of given answers](https://surveyjs.io/form-library/documentation/design-survey/create-a-multi-page-survey#preview-page) and switches the survey to the page specified by the `currentPage` parameter.
71165
+ * @param currentPage A new current page. If you do not specify this parameter, the survey displays the last page.
70907
71166
  * @see showPreview
70908
71167
  * @see showPreviewBeforeComplete
70909
71168
  * @see state
70910
71169
  */
70911
- SurveyModel.prototype.cancelPreview = function (curPage) {
70912
- if (curPage === void 0) { curPage = null; }
71170
+ SurveyModel.prototype.cancelPreview = function (currentPage) {
71171
+ if (currentPage === void 0) { currentPage = null; }
70913
71172
  if (!this.isShowingPreview)
70914
71173
  return;
71174
+ this.gotoPageFromPreview = currentPage;
70915
71175
  this.isShowingPreview = false;
70916
- if (_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isValueEmpty(curPage) && this.visiblePageCount > 0) {
70917
- curPage = this.visiblePageCount - 1;
70918
- }
70919
- if (curPage !== null) {
70920
- this.currentPage = curPage;
70921
- }
70922
71176
  };
70923
71177
  SurveyModel.prototype.cancelPreviewByPage = function (panel) {
70924
71178
  this.cancelPreview(panel["originalPage"]);
@@ -70936,7 +71190,7 @@ var SurveyModel = /** @class */ (function (_super) {
70936
71190
  return false;
70937
71191
  if (doComplete) {
70938
71192
  this.currentPage.passed = true;
70939
- return this.doComplete(this.canBeCompletedByTrigger);
71193
+ return this.doComplete(this.canBeCompletedByTrigger, this.completedTrigger);
70940
71194
  }
70941
71195
  this.doNextPage();
70942
71196
  return true;
@@ -71041,7 +71295,21 @@ var SurveyModel = /** @class */ (function (_super) {
71041
71295
  this.runConditions();
71042
71296
  this.updateAllElementsVisibility(this.pages);
71043
71297
  this.updateVisibleIndexes();
71044
- this.currentPageNo = 0;
71298
+ if (this.isShowingPreview) {
71299
+ this.currentPageNo = 0;
71300
+ }
71301
+ else {
71302
+ var curPage = this.gotoPageFromPreview;
71303
+ this.gotoPageFromPreview = null;
71304
+ if (_helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isValueEmpty(curPage) && this.visiblePageCount > 0) {
71305
+ curPage = this.visiblePages[this.visiblePageCount - 1];
71306
+ }
71307
+ if (!!curPage) {
71308
+ this.changeCurrentPageFromPreview = true;
71309
+ this.currentPage = curPage;
71310
+ this.changeCurrentPageFromPreview = false;
71311
+ }
71312
+ }
71045
71313
  };
71046
71314
  SurveyModel.prototype.onQuestionsOnPageModeChanged = function (oldValue) {
71047
71315
  if (this.isShowingPreview)
@@ -71490,7 +71758,7 @@ var SurveyModel = /** @class */ (function (_super) {
71490
71758
  if (!this.completedByTriggers)
71491
71759
  this.completedByTriggers = {};
71492
71760
  if (isCompleted) {
71493
- this.completedByTriggers[trigger.id] = true;
71761
+ this.completedByTriggers[trigger.id] = trigger;
71494
71762
  }
71495
71763
  else {
71496
71764
  delete this.completedByTriggers[trigger.id];
@@ -71508,6 +71776,16 @@ var SurveyModel = /** @class */ (function (_super) {
71508
71776
  enumerable: false,
71509
71777
  configurable: true
71510
71778
  });
71779
+ Object.defineProperty(SurveyModel.prototype, "completedTrigger", {
71780
+ get: function () {
71781
+ if (!this.canBeCompletedByTrigger)
71782
+ return undefined;
71783
+ var key = Object.keys(this.completedByTriggers)[0];
71784
+ return this.completedByTriggers[key];
71785
+ },
71786
+ enumerable: false,
71787
+ configurable: true
71788
+ });
71511
71789
  Object.defineProperty(SurveyModel.prototype, "processedCompletedHtml", {
71512
71790
  /**
71513
71791
  * Returns the HTML content for the complete page.
@@ -71527,7 +71805,7 @@ var SurveyModel = /** @class */ (function (_super) {
71527
71805
  * @see cookieName
71528
71806
  */
71529
71807
  get: function () {
71530
- return this.processHtml(this.completedBeforeHtml, "completed-before");
71808
+ return this.locCompletedBeforeHtml.textOrHtml;
71531
71809
  },
71532
71810
  enumerable: false,
71533
71811
  configurable: true
@@ -71537,7 +71815,7 @@ var SurveyModel = /** @class */ (function (_super) {
71537
71815
  * Returns the HTML content, that is shows when a survey loads the survey JSON.
71538
71816
  */
71539
71817
  get: function () {
71540
- return this.processHtml(this.loadingHtml, "loading");
71818
+ return this.locLoadingHtml.textOrHtml;
71541
71819
  },
71542
71820
  enumerable: false,
71543
71821
  configurable: true
@@ -71650,6 +71928,7 @@ var SurveyModel = /** @class */ (function (_super) {
71650
71928
  survey: this,
71651
71929
  htmlElement: htmlElement,
71652
71930
  });
71931
+ this.rootElement = htmlElement;
71653
71932
  };
71654
71933
  SurveyModel.prototype.processResponsiveness = function (width, mobileWidth) {
71655
71934
  var isMobile = width < mobileWidth;
@@ -71661,6 +71940,11 @@ var SurveyModel = /** @class */ (function (_super) {
71661
71940
  return true;
71662
71941
  }
71663
71942
  };
71943
+ SurveyModel.prototype.triggerResponsiveness = function (hard) {
71944
+ this.getAllQuestions().forEach(function (question) {
71945
+ question.triggerResponsiveness(hard);
71946
+ });
71947
+ };
71664
71948
  SurveyModel.prototype.destroyResizeObserver = function () {
71665
71949
  if (!!this.resizeObserver) {
71666
71950
  this.resizeObserver.disconnect();
@@ -71976,32 +72260,77 @@ var SurveyModel = /** @class */ (function (_super) {
71976
72260
  };
71977
72261
  /**
71978
72262
  * Uploads a file to server.
71979
- * @param question a file question object
71980
- * @param name a question name
71981
- * @param files files to upload
71982
- * @param uploadingCallback a call back function to get the status on uploading the files
72263
+ *
72264
+ * The following code shows how to call this method:
72265
+ *
72266
+ * ```js
72267
+ * const question = survey.getQuestionByName("myFileQuestion");
72268
+ * survey.uploadFiles(
72269
+ * question,
72270
+ * question.name,
72271
+ * question.value,
72272
+ * (status, data) => {
72273
+ * if (status === "success") {
72274
+ * // Handle success
72275
+ * }
72276
+ * if (status === "error") {
72277
+ * // Handle error
72278
+ * }
72279
+ * }
72280
+ * );
72281
+ * ```
72282
+ * @param question A [File Upload question instance](https://surveyjs.io/form-library/documentation/api-reference/file-model).
72283
+ * @param name The File Upload question's [`name`](https://surveyjs.io/form-library/documentation/api-reference/file-model#name).
72284
+ * @param files An array of JavaScript <a href="https://developer.mozilla.org/en-US/docs/Web/API/File" target="_blank">File</a> objects that represent files to upload.
72285
+ * @param callback A callback function that allows you to get the upload status (`"success"` or `"error"`) and file data.
72286
+ * @see onUploadFiles
72287
+ * @see downloadFile
71983
72288
  */
71984
- SurveyModel.prototype.uploadFiles = function (question, name, files, uploadingCallback) {
72289
+ SurveyModel.prototype.uploadFiles = function (question, name, files, callback) {
71985
72290
  if (this.onUploadFiles.isEmpty) {
71986
- uploadingCallback("error", files);
72291
+ callback("error", files);
71987
72292
  }
71988
72293
  else {
71989
72294
  this.onUploadFiles.fire(this, {
71990
72295
  question: question,
71991
72296
  name: name,
71992
72297
  files: files || [],
71993
- callback: uploadingCallback,
72298
+ callback: callback,
71994
72299
  });
71995
72300
  }
71996
72301
  if (this.surveyPostId) {
71997
- this.uploadFilesCore(name, files, uploadingCallback);
72302
+ this.uploadFilesCore(name, files, callback);
71998
72303
  }
71999
72304
  };
72000
72305
  /**
72001
- * Downloads a file from server
72002
- * @param name a question name
72003
- * @param fileValue a single file question value
72004
- * @param callback a call back function to get the status on downloading the file and the downloaded file content
72306
+ * Downloads a file from a server.
72307
+ *
72308
+ * The following code shows how to call this method:
72309
+ *
72310
+ * ```js
72311
+ * const question = survey.getQuestionByName("myFileQuestion");
72312
+ * survey.downloadFile(
72313
+ * question,
72314
+ * question.name,
72315
+ * // Download the first uploaded file
72316
+ * question.value[0],
72317
+ * (status, data) => {
72318
+ * if (status === "success") {
72319
+ * // Use `data` to retrieve the file
72320
+ * }
72321
+ * if (status === "error") {
72322
+ * // Handle error
72323
+ * }
72324
+ * }
72325
+ * );
72326
+ * ```
72327
+ *
72328
+ * @param question A [File Upload question instance](https://surveyjs.io/form-library/documentation/api-reference/file-model).
72329
+ * @param questionName The File Upload question's [`name`](https://surveyjs.io/form-library/documentation/api-reference/file-model#name).
72330
+ * @param fileValue An object from File Upload's [`value`](https://surveyjs.io/form-library/documentation/api-reference/file-model#value) array. This object contains metadata about the file you want to download.
72331
+ * @param callback A callback function that allows you to get the download status (`"success"` or `"error"`) and the file identifier (URL, file name, etc.) that you can use to retrieve the file.
72332
+ * @see onDownloadFile
72333
+ * @see uploadFiles
72005
72334
  */
72006
72335
  SurveyModel.prototype.downloadFile = function (question, questionName, fileValue, callback) {
72007
72336
  if (this.onDownloadFile.isEmpty) {
@@ -72200,8 +72529,8 @@ var SurveyModel = /** @class */ (function (_super) {
72200
72529
  return result;
72201
72530
  };
72202
72531
  /**
72203
- * Returns a page on which an element (question or panel) is placed.
72204
- * @param element Question or Panel
72532
+ * Returns a page to which a specified survey element (question or panel) belongs.
72533
+ * @param element A question or panel instance.
72205
72534
  */
72206
72535
  SurveyModel.prototype.getPageByElement = function (element) {
72207
72536
  for (var i = 0; i < this.pages.length; i++) {
@@ -72212,15 +72541,15 @@ var SurveyModel = /** @class */ (function (_super) {
72212
72541
  return null;
72213
72542
  };
72214
72543
  /**
72215
- * Returns a page on which a question is located.
72216
- * @param question
72544
+ * Returns a page to which a specified question belongs.
72545
+ * @param question A question instance.
72217
72546
  */
72218
72547
  SurveyModel.prototype.getPageByQuestion = function (question) {
72219
72548
  return this.getPageByElement(question);
72220
72549
  };
72221
72550
  /**
72222
- * Returns a page by it's name.
72223
- * @param name
72551
+ * Returns a page with a specified name.
72552
+ * @param name A page [name](https://surveyjs.io/form-library/documentation/api-reference/page-model#name).
72224
72553
  */
72225
72554
  SurveyModel.prototype.getPageByName = function (name) {
72226
72555
  for (var i = 0; i < this.pages.length; i++) {
@@ -72230,8 +72559,8 @@ var SurveyModel = /** @class */ (function (_super) {
72230
72559
  return null;
72231
72560
  };
72232
72561
  /**
72233
- * Returns a list of pages by their names.
72234
- * @param names a list of page names
72562
+ * Returns an array of pages with specified names.
72563
+ * @param names An array of page names.
72235
72564
  */
72236
72565
  SurveyModel.prototype.getPagesByNames = function (names) {
72237
72566
  var result = [];
@@ -72247,17 +72576,27 @@ var SurveyModel = /** @class */ (function (_super) {
72247
72576
  return result;
72248
72577
  };
72249
72578
  /**
72250
- * Returns a list of all questions in a survey.
72251
- * @param visibleOnly set it `true`, if you want to get only visible questions
72579
+ * Returns a list of all questions in the survey.
72580
+ * @param visibleOnly A Boolean value that specifies whether to include only visible questions.
72581
+ * @param includeDesignTime For internal use.
72582
+ * @param includeNested A Boolean value that specifies whether to include nested questions, such as questions within matrix cells.
72252
72583
  */
72253
- SurveyModel.prototype.getAllQuestions = function (visibleOnly, includingDesignTime) {
72584
+ SurveyModel.prototype.getAllQuestions = function (visibleOnly, includeDesignTime, includeNested) {
72254
72585
  if (visibleOnly === void 0) { visibleOnly = false; }
72255
- if (includingDesignTime === void 0) { includingDesignTime = false; }
72256
- var result = new Array();
72586
+ if (includeDesignTime === void 0) { includeDesignTime = false; }
72587
+ if (includeNested === void 0) { includeNested = false; }
72588
+ var res = [];
72257
72589
  for (var i = 0; i < this.pages.length; i++) {
72258
- this.pages[i].addQuestionsToList(result, visibleOnly, includingDesignTime);
72590
+ this.pages[i].addQuestionsToList(res, visibleOnly, includeDesignTime);
72259
72591
  }
72260
- return result;
72592
+ if (!includeNested)
72593
+ return res;
72594
+ var res2 = [];
72595
+ res.forEach(function (q) {
72596
+ res2.push(q);
72597
+ q.getNestedQuestions(visibleOnly).forEach(function (nQ) { return res2.push(nQ); });
72598
+ });
72599
+ return res2;
72261
72600
  };
72262
72601
  /**
72263
72602
  * Returns quiz questions. All visible questions that has input(s) widgets.
@@ -72302,12 +72641,12 @@ var SurveyModel = /** @class */ (function (_super) {
72302
72641
  /**
72303
72642
  * Returns a list of all survey's panels.
72304
72643
  */
72305
- SurveyModel.prototype.getAllPanels = function (visibleOnly, includingDesignTime) {
72644
+ SurveyModel.prototype.getAllPanels = function (visibleOnly, includeDesignTime) {
72306
72645
  if (visibleOnly === void 0) { visibleOnly = false; }
72307
- if (includingDesignTime === void 0) { includingDesignTime = false; }
72646
+ if (includeDesignTime === void 0) { includeDesignTime = false; }
72308
72647
  var result = new Array();
72309
72648
  for (var i = 0; i < this.pages.length; i++) {
72310
- this.pages[i].addPanelsIntoList(result, visibleOnly, includingDesignTime);
72649
+ this.pages[i].addPanelsIntoList(result, visibleOnly, includeDesignTime);
72311
72650
  }
72312
72651
  return result;
72313
72652
  };
@@ -73129,6 +73468,8 @@ var SurveyModel = /** @class */ (function (_super) {
73129
73468
  page.name = this.generateNewName(this.pages, "page");
73130
73469
  this.questionHashesPanelAdded(page);
73131
73470
  this.updateVisibleIndexes();
73471
+ if (!!this.runningPages)
73472
+ return;
73132
73473
  if (!this.isLoadingFromJson) {
73133
73474
  this.updateProgressText();
73134
73475
  this.updateCurrentPage();
@@ -73138,6 +73479,8 @@ var SurveyModel = /** @class */ (function (_super) {
73138
73479
  };
73139
73480
  SurveyModel.prototype.doOnPageRemoved = function (page) {
73140
73481
  page.setSurveyImpl(null);
73482
+ if (!!this.runningPages)
73483
+ return;
73141
73484
  if (page === this.currentPage) {
73142
73485
  this.updateCurrentPage();
73143
73486
  }
@@ -73967,11 +74310,17 @@ var SurveyModel = /** @class */ (function (_super) {
73967
74310
  }
73968
74311
  }
73969
74312
  };
73970
- SurveyModel.prototype.copyTriggerValue = function (name, fromName) {
74313
+ SurveyModel.prototype.copyTriggerValue = function (name, fromName, copyDisplayValue) {
73971
74314
  if (!name || !fromName)
73972
74315
  return;
73973
- var processor = new _conditionProcessValue__WEBPACK_IMPORTED_MODULE_6__["ProcessValue"]();
73974
- var value = processor.getValue(fromName, this.getFilteredValues());
74316
+ var value;
74317
+ if (copyDisplayValue) {
74318
+ value = this.processText("{" + fromName + "}", true);
74319
+ }
74320
+ else {
74321
+ var processor = new _conditionProcessValue__WEBPACK_IMPORTED_MODULE_6__["ProcessValue"]();
74322
+ value = processor.getValue(fromName, this.getFilteredValues());
74323
+ }
73975
74324
  this.setTriggerValue(name, value, false);
73976
74325
  };
73977
74326
  SurveyModel.prototype.triggerExecuted = function (trigger) {
@@ -74012,9 +74361,10 @@ var SurveyModel = /** @class */ (function (_super) {
74012
74361
  return true;
74013
74362
  };
74014
74363
  SurveyModel.prototype.questionEditFinishCallback = function (question, event) {
74015
- if (_settings__WEBPACK_IMPORTED_MODULE_14__["settings"].enterKeyAction == "loseFocus")
74364
+ var enterKeyAction = this.enterKeyAction || _settings__WEBPACK_IMPORTED_MODULE_14__["settings"].enterKeyAction;
74365
+ if (enterKeyAction == "loseFocus")
74016
74366
  event.target.blur();
74017
- if (_settings__WEBPACK_IMPORTED_MODULE_14__["settings"].enterKeyAction == "moveToNextEditor") {
74367
+ if (enterKeyAction == "moveToNextEditor") {
74018
74368
  var allQuestions = this.currentPage.questions;
74019
74369
  var questionIndex = allQuestions.indexOf(question);
74020
74370
  if (questionIndex > -1 && questionIndex < allQuestions.length - 1) {
@@ -74166,8 +74516,14 @@ var SurveyModel = /** @class */ (function (_super) {
74166
74516
  if (!theme)
74167
74517
  return;
74168
74518
  Object.keys(theme).forEach(function (key) {
74169
- _this[key] = theme[key];
74519
+ if (key === "isPanelless") {
74520
+ _this.isCompact = theme[key];
74521
+ }
74522
+ else {
74523
+ _this[key] = theme[key];
74524
+ }
74170
74525
  });
74526
+ this.onThemeApplied.fire(this, {});
74171
74527
  };
74172
74528
  /**
74173
74529
  * Use this method to dispose survey model properly.
@@ -74200,6 +74556,9 @@ var SurveyModel = /** @class */ (function (_super) {
74200
74556
  __decorate([
74201
74557
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
74202
74558
  ], SurveyModel.prototype, "showBrandInfo", void 0);
74559
+ __decorate([
74560
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
74561
+ ], SurveyModel.prototype, "enterKeyAction", void 0);
74203
74562
  __decorate([
74204
74563
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ defaultValue: {} })
74205
74564
  ], SurveyModel.prototype, "cssVariables", void 0);
@@ -74887,20 +75246,23 @@ var SurveyTimerModel = /** @class */ (function (_super) {
74887
75246
  /*!**************************!*\
74888
75247
  !*** ./src/surveyToc.ts ***!
74889
75248
  \**************************/
74890
- /*! exports provided: tryNavigateToPage, createTOCListModel, getTocRootCss, TOCModel */
75249
+ /*! exports provided: tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel */
74891
75250
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
74892
75251
 
74893
75252
  "use strict";
74894
75253
  __webpack_require__.r(__webpack_exports__);
74895
75254
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return tryNavigateToPage; });
75255
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryFocusPage", function() { return tryFocusPage; });
74896
75256
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return createTOCListModel; });
74897
75257
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return getTocRootCss; });
74898
75258
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TOCModel", function() { return TOCModel; });
74899
75259
  /* harmony import */ var _actions_action__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions/action */ "./src/actions/action.ts");
74900
75260
  /* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ "./src/base.ts");
74901
75261
  /* harmony import */ var _list__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./list */ "./src/list.ts");
74902
- /* harmony import */ var _popup__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./popup */ "./src/popup.ts");
74903
- /* harmony import */ var _utils_devices__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/devices */ "./src/utils/devices.ts");
75262
+ /* harmony import */ var _page__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./page */ "./src/page.ts");
75263
+ /* harmony import */ var _popup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popup */ "./src/popup.ts");
75264
+ /* harmony import */ var _utils_devices__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/devices */ "./src/utils/devices.ts");
75265
+
74904
75266
 
74905
75267
 
74906
75268
 
@@ -74921,26 +75283,37 @@ function tryNavigateToPage(survey, page) {
74921
75283
  }
74922
75284
  return true;
74923
75285
  }
75286
+ function tryFocusPage(survey, panel) {
75287
+ if (survey.isDesignMode)
75288
+ return true;
75289
+ panel.focusFirstQuestion();
75290
+ return true;
75291
+ }
74924
75292
  function createTOCListModel(survey, onAction) {
74925
- var items = survey.pages.map(function (page) {
75293
+ var _a;
75294
+ var pagesSource = survey.questionsOnPageMode === "singlePage" ? (_a = survey.pages[0]) === null || _a === void 0 ? void 0 : _a.elements : survey.pages;
75295
+ var items = (pagesSource || []).map(function (page) {
74926
75296
  return new _actions_action__WEBPACK_IMPORTED_MODULE_0__["Action"]({
74927
75297
  id: page.name,
74928
- title: page.navigationTitle || page.title || page.name,
75298
+ title: (page["navigationTitle"]) || page.title || page.name,
74929
75299
  action: function () {
74930
75300
  if (typeof document !== undefined && !!document.activeElement) {
74931
75301
  !!document.activeElement.blur && document.activeElement.blur();
74932
75302
  }
74933
75303
  !!onAction && onAction();
74934
- return tryNavigateToPage(survey, page);
75304
+ if (page instanceof _page__WEBPACK_IMPORTED_MODULE_3__["PageModel"]) {
75305
+ return tryNavigateToPage(survey, page);
75306
+ }
75307
+ return tryFocusPage(survey, page);
74935
75308
  },
74936
- visible: new _base__WEBPACK_IMPORTED_MODULE_1__["ComputedUpdater"](function () { return page.isVisible && !page.isStartPage; })
75309
+ visible: new _base__WEBPACK_IMPORTED_MODULE_1__["ComputedUpdater"](function () { return page.isVisible && !(page["isStartPage"]); })
74937
75310
  });
74938
75311
  });
74939
75312
  var listModel = new _list__WEBPACK_IMPORTED_MODULE_2__["ListModel"](items, function (item) {
74940
75313
  if (!!item.action()) {
74941
75314
  listModel.selectedItem = item;
74942
75315
  }
74943
- }, true, items.filter(function (i) { return i.id === survey.currentPage.name; })[0]);
75316
+ }, true, items.filter(function (i) { return i.id === survey.currentPage.name; })[0] || items.filter(function (i) { return i.id === pagesSource[0].name; })[0]);
74944
75317
  listModel.allowSelection = false;
74945
75318
  listModel.locOwner = survey;
74946
75319
  survey.onCurrentPageChanged.add(function (s, o) {
@@ -74959,13 +75332,14 @@ var TOCModel = /** @class */ (function () {
74959
75332
  function TOCModel(survey) {
74960
75333
  var _this = this;
74961
75334
  this.survey = survey;
74962
- this.isMobile = _utils_devices__WEBPACK_IMPORTED_MODULE_4__["IsTouch"];
75335
+ this.isMobile = _utils_devices__WEBPACK_IMPORTED_MODULE_5__["IsTouch"];
74963
75336
  this.icon = "icon-navmenu_24x24";
74964
75337
  this.togglePopup = function () {
74965
75338
  _this.popupModel.toggleVisibility();
74966
75339
  };
74967
75340
  this.listModel = createTOCListModel(survey, function () { _this.popupModel.isVisible = false; });
74968
- this.popupModel = new _popup__WEBPACK_IMPORTED_MODULE_3__["PopupModel"]("sv-list", { model: this.listModel });
75341
+ this.popupModel = new _popup__WEBPACK_IMPORTED_MODULE_4__["PopupModel"]("sv-list", { model: this.listModel });
75342
+ this.popupModel.displayMode = this.isMobile ? "overlay" : "popup";
74969
75343
  }
74970
75344
  Object.defineProperty(TOCModel.prototype, "containerCss", {
74971
75345
  get: function () {
@@ -75143,7 +75517,7 @@ var SvgIconRegistry = /** @class */ (function () {
75143
75517
  };
75144
75518
  SvgIconRegistry.prototype.renderIcons = function () {
75145
75519
  var containerId = "sv-icon-holder-global-container";
75146
- if (!_settings__WEBPACK_IMPORTED_MODULE_0__["settings"].environment.root.getElementById(containerId)) {
75520
+ if (!!_settings__WEBPACK_IMPORTED_MODULE_0__["settings"].environment && !_settings__WEBPACK_IMPORTED_MODULE_0__["settings"].environment.root.getElementById(containerId)) {
75147
75521
  var iconsDiv = document.createElement("div");
75148
75522
  iconsDiv.id = containerId;
75149
75523
  iconsDiv.innerHTML = "<svg>" + this.iconsRenderedHtml() + "</svg>";
@@ -75991,13 +76365,23 @@ var SurveyTriggerCopyValue = /** @class */ (function (_super) {
75991
76365
  enumerable: false,
75992
76366
  configurable: true
75993
76367
  });
76368
+ Object.defineProperty(SurveyTriggerCopyValue.prototype, "copyDisplayValue", {
76369
+ get: function () {
76370
+ return this.getPropertyValue("copyDisplayValue");
76371
+ },
76372
+ set: function (val) {
76373
+ this.setPropertyValue("copyDisplayValue", val);
76374
+ },
76375
+ enumerable: false,
76376
+ configurable: true
76377
+ });
75994
76378
  SurveyTriggerCopyValue.prototype.getType = function () {
75995
76379
  return "copyvaluetrigger";
75996
76380
  };
75997
76381
  SurveyTriggerCopyValue.prototype.onSuccess = function (values, properties) {
75998
76382
  if (!this.setToName || !this.owner)
75999
76383
  return;
76000
- this.owner.copyTriggerValue(this.setToName, this.fromName);
76384
+ this.owner.copyTriggerValue(this.setToName, this.fromName, this.copyDisplayValue);
76001
76385
  };
76002
76386
  return SurveyTriggerCopyValue;
76003
76387
  }(SurveyTrigger));
@@ -76027,7 +76411,8 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("setvaluetrigger
76027
76411
  ], function () {
76028
76412
  return new SurveyTriggerSetValue();
76029
76413
  }, "surveytrigger");
76030
- _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("copyvaluetrigger", [{ name: "!fromName:questionvalue" }, { name: "!setToName:questionvalue" }], function () {
76414
+ _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("copyvaluetrigger", [{ name: "!fromName:questionvalue" }, { name: "!setToName:questionvalue" },
76415
+ { name: "copyDisplayValue:boolean", visible: false }], function () {
76031
76416
  return new SurveyTriggerCopyValue();
76032
76417
  }, "surveytrigger");
76033
76418
  _jsonobject__WEBPACK_IMPORTED_MODULE_2__["Serializer"].addClass("skiptrigger", [{ name: "!gotoName:question" }], function () {
@@ -76540,13 +76925,14 @@ var TooltipManager = /** @class */ (function () {
76540
76925
  /*!****************************!*\
76541
76926
  !*** ./src/utils/utils.ts ***!
76542
76927
  \****************************/
76543
- /*! exports provided: unwrap, getSize, doKey2ClickBlur, doKey2ClickUp, doKey2ClickDown, sanitizeEditableContent, Logger, mergeValues, getElementWidth, isContainerVisible, classesToSelector, compareVersions, confirmAction, detectIEOrEdge, detectIEBrowser, loadFileFromBase64, isMobile, isShadowDOM, getElement, isElementVisible, findScrollableParent, scrollElementByChildId, navigateToUrl, createSvg, getIconNameFromProxy, increaseHeightByContent, getOriginalEvent, preventDefaults, findParentByClassNames, getFirstVisibleChild */
76928
+ /*! exports provided: unwrap, getRenderedSize, getRenderedStyleSize, doKey2ClickBlur, doKey2ClickUp, doKey2ClickDown, sanitizeEditableContent, Logger, mergeValues, getElementWidth, isContainerVisible, classesToSelector, compareVersions, confirmAction, detectIEOrEdge, detectIEBrowser, loadFileFromBase64, isMobile, isShadowDOM, getElement, isElementVisible, findScrollableParent, scrollElementByChildId, navigateToUrl, createSvg, getIconNameFromProxy, increaseHeightByContent, getOriginalEvent, preventDefaults, findParentByClassNames, getFirstVisibleChild */
76544
76929
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
76545
76930
 
76546
76931
  "use strict";
76547
76932
  __webpack_require__.r(__webpack_exports__);
76548
76933
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unwrap", function() { return unwrap; });
76549
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSize", function() { return getSize; });
76934
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getRenderedSize", function() { return getRenderedSize; });
76935
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getRenderedStyleSize", function() { return getRenderedStyleSize; });
76550
76936
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "doKey2ClickBlur", function() { return doKey2ClickBlur; });
76551
76937
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "doKey2ClickUp", function() { return doKey2ClickUp; });
76552
76938
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "doKey2ClickDown", function() { return doKey2ClickDown; });
@@ -76744,21 +77130,43 @@ function unwrap(value) {
76744
77130
  return value();
76745
77131
  }
76746
77132
  }
76747
- function getSize(value) {
76748
- if (typeof value === "number") {
76749
- return "" + value + "px";
76750
- }
76751
- if (!!value && typeof value === "string" && value.length > 0) {
76752
- var lastSymbol = value[value.length - 1];
76753
- if ((lastSymbol >= "0" && lastSymbol <= "9") || lastSymbol == ".") {
76754
- try {
76755
- var num = parseFloat(value);
76756
- return "" + num + "px";
76757
- }
76758
- catch (_a) { }
77133
+ // export function getSize(value: any): number {
77134
+ // if (typeof value === "number") {
77135
+ // return value;
77136
+ // }
77137
+ // if (typeof value === "string" && value.includes("px")) {
77138
+ // return parseInt(value);
77139
+ // }
77140
+ // if (!!value && typeof value === "string" && value.length > 0) {
77141
+ // const lastSymbol: string = value[value.length - 1];
77142
+ // if ((lastSymbol >= "0" && lastSymbol <= "9") || lastSymbol == ".") {
77143
+ // try {
77144
+ // const num: number = parseInt(value);
77145
+ // return num;
77146
+ // } catch { }
77147
+ // }
77148
+ // }
77149
+ // return value;
77150
+ // }
77151
+ function getRenderedSize(val) {
77152
+ if (typeof val == "string") {
77153
+ if (!isNaN(Number(val))) {
77154
+ return Number(val);
77155
+ }
77156
+ else if (val.includes("px")) {
77157
+ return parseFloat(val);
76759
77158
  }
76760
77159
  }
76761
- return value;
77160
+ if (typeof val == "number") {
77161
+ return val;
77162
+ }
77163
+ return undefined;
77164
+ }
77165
+ function getRenderedStyleSize(val) {
77166
+ if (getRenderedSize(val) !== undefined) {
77167
+ return undefined;
77168
+ }
77169
+ return val;
76762
77170
  }
76763
77171
  var keyFocusedClassName = "sv-focused--by-key";
76764
77172
  function doKey2ClickBlur(evt) {