survey-react 1.9.95 → 1.9.97

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.95
2
+ * surveyjs - Survey JavaScript library v1.9.97
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
  */
@@ -1291,7 +1291,7 @@ var AdaptiveActionContainer = /** @class */ (function (_super) {
1291
1291
  }
1292
1292
  };
1293
1293
  AdaptiveActionContainer.prototype.initResponsivityManager = function (container) {
1294
- this.responsivityManager = new _utils_responsivity_manager__WEBPACK_IMPORTED_MODULE_0__["ResponsivityManager"](container, this, "& > .sv-action:not(.sv-dots) > .sv-action__content");
1294
+ this.responsivityManager = new _utils_responsivity_manager__WEBPACK_IMPORTED_MODULE_0__["ResponsivityManager"](container, this, ":scope > .sv-action:not(.sv-dots) > .sv-action__content");
1295
1295
  };
1296
1296
  AdaptiveActionContainer.prototype.resetResponsivityManager = function () {
1297
1297
  if (!!this.responsivityManager) {
@@ -5102,6 +5102,7 @@ var defaultV2Css = {
5102
5102
  root: "sd-root-modern",
5103
5103
  rootMobile: "sd-root-modern--mobile",
5104
5104
  rootReadOnly: "sd-root--readonly",
5105
+ rootBackgroundImage: "sd-root_background-image",
5105
5106
  container: "sd-container-modern",
5106
5107
  header: "sd-title sd-container-modern__title",
5107
5108
  bodyContainer: "sv-components-row",
@@ -5405,7 +5406,7 @@ var defaultV2Css = {
5405
5406
  root: "sd-selectbase",
5406
5407
  popup: "sv-dropdown-popup",
5407
5408
  small: "sd-row__question--small",
5408
- selectWrapper: "",
5409
+ selectWrapper: "sv-dropdown_select-wrapper",
5409
5410
  other: "sd-input sd-comment sd-selectbase__other",
5410
5411
  onError: "sd-input--error",
5411
5412
  label: "sd-selectbase__label",
@@ -5418,6 +5419,9 @@ var defaultV2Css = {
5418
5419
  cleanButton: "sd-dropdown_clean-button",
5419
5420
  cleanButtonSvg: "sd-dropdown_clean-button-svg",
5420
5421
  cleanButtonIconId: "icon-clear",
5422
+ chevronButton: "sd-dropdown_chevron-button",
5423
+ chevronButtonSvg: "sd-dropdown_chevron-button-svg",
5424
+ chevronButtonIconId: "icon-chevron",
5421
5425
  control: "sd-input sd-dropdown",
5422
5426
  controlInputFieldComponent: "sd-dropdown__input-field-component",
5423
5427
  controlValue: "sd-dropdown__value",
@@ -5576,10 +5580,14 @@ var defaultV2Css = {
5576
5580
  itemFixedSize: "sd-rating__item--fixed-size",
5577
5581
  control: "sd-input sd-dropdown",
5578
5582
  itemSmall: "sd-rating--small",
5583
+ selectWrapper: "sv-dropdown_select-wrapper",
5579
5584
  controlValue: "sd-dropdown__value",
5580
5585
  controlDisabled: "sd-input--disabled",
5581
5586
  controlEmpty: "sd-dropdown--empty",
5582
5587
  filterStringInput: "sd-dropdown__filter-string-input",
5588
+ chevronButton: "sd-dropdown_chevron-button",
5589
+ chevronButtonSvg: "sd-dropdown_chevron-button-svg",
5590
+ chevronButtonIconId: "icon-chevron",
5583
5591
  popup: "sv-dropdown-popup",
5584
5592
  onError: "sd-input--error",
5585
5593
  },
@@ -5674,6 +5682,7 @@ var defaultV2Css = {
5674
5682
  itemIndex: "sv-ranking-item__index sd-ranking-item__index",
5675
5683
  itemIndexEmptyMode: "sv-ranking-item__index--empty sd-ranking-item__index--empty",
5676
5684
  // itemText: "sv-ranking-item__text",
5685
+ itemDisabled: "sv-ranking-item--disabled",
5677
5686
  controlLabel: "sv-ranking-item__text",
5678
5687
  itemGhostNode: "sv-ranking-item__ghost",
5679
5688
  itemIconContainer: "sv-ranking-item__icon-container",
@@ -5727,7 +5736,7 @@ var defaultV2Css = {
5727
5736
  root: "sd-selectbase",
5728
5737
  popup: "sv-dropdown-popup",
5729
5738
  small: "sd-row__question--small",
5730
- selectWrapper: "",
5739
+ selectWrapper: "sv-dropdown_select-wrapper",
5731
5740
  other: "sd-input sd-comment sd-selectbase__other",
5732
5741
  onError: "sd-input--error",
5733
5742
  label: "sd-selectbase__label",
@@ -5744,6 +5753,9 @@ var defaultV2Css = {
5744
5753
  cleanItemButton: "sd-tagbox-item_clean-button",
5745
5754
  cleanItemButtonSvg: "sd-tagbox-item_clean-button-svg",
5746
5755
  cleanItemButtonIconId: "icon-clear_16x16",
5756
+ chevronButton: "sd-dropdown_chevron-button",
5757
+ chevronButtonSvg: "sd-dropdown_chevron-button-svg",
5758
+ chevronButtonIconId: "icon-chevron",
5747
5759
  control: "sd-input sd-tagbox sd-dropdown",
5748
5760
  controlValue: "sd-tagbox__value sd-dropdown__value",
5749
5761
  controlValueItems: "sd-tagbox__value-items",
@@ -6494,9 +6506,9 @@ var DragDropCore = /** @class */ (function () {
6494
6506
  this.parentElement = parentElement;
6495
6507
  var shortcutText = this.getShortcutText(this.draggedElement);
6496
6508
  this.domAdapter.draggedElementShortcut = this.createDraggedElementShortcut(shortcutText, draggedElementNode, event);
6497
- this.onStartDrag();
6509
+ this.onStartDrag(event);
6498
6510
  };
6499
- DragDropCore.prototype.onStartDrag = function () {
6511
+ DragDropCore.prototype.onStartDrag = function (event) {
6500
6512
  };
6501
6513
  DragDropCore.prototype.isDropTargetDoesntChanged = function (newIsBottom) {
6502
6514
  return (this.dropTarget === this.prevDropTarget && newIsBottom === this.isBottom);
@@ -7227,6 +7239,13 @@ var DragDropRankingSelectToRank = /** @class */ (function (_super) {
7227
7239
  function DragDropRankingSelectToRank() {
7228
7240
  return _super !== null && _super.apply(this, arguments) || this;
7229
7241
  }
7242
+ DragDropRankingSelectToRank.prototype.onStartDrag = function (event) {
7243
+ var target = event.target;
7244
+ var fromContainerNode = target.closest(".sv-ranking__container--from");
7245
+ if (!!fromContainerNode) {
7246
+ fromContainerNode.style.minHeight = fromContainerNode.offsetHeight + "px";
7247
+ }
7248
+ };
7230
7249
  DragDropRankingSelectToRank.prototype.findDropTargetNodeByDragOverNode = function (dragOverNode) {
7231
7250
  if (dragOverNode.dataset.ranking === "from-container" || dragOverNode.dataset.ranking === "to-container") {
7232
7251
  return dragOverNode;
@@ -7284,7 +7303,7 @@ var DragDropRankingSelectToRank = /** @class */ (function (_super) {
7284
7303
  var fromIndex = fromChoicesArray.indexOf(this.draggedElement);
7285
7304
  var toIndex = toChoicesArray.indexOf(this.dropTarget);
7286
7305
  if (toIndex === -1)
7287
- toIndex = 0;
7306
+ toIndex = toChoicesArray.length;
7288
7307
  rankFunction(questionModel, fromIndex, toIndex);
7289
7308
  this.doUIEffects(dropTargetNode, fromIndex, toIndex);
7290
7309
  };
@@ -7526,6 +7545,7 @@ var DropdownListModel = /** @class */ (function (_super) {
7526
7545
  _this.resetItemsSettings();
7527
7546
  }
7528
7547
  }
7548
+ _this.question.processPopupVisiblilityChanged(_this.popupModel, option.isVisible);
7529
7549
  });
7530
7550
  };
7531
7551
  DropdownListModel.prototype.setFilterStringToListModel = function (newValue) {
@@ -8539,7 +8559,7 @@ __webpack_require__.r(__webpack_exports__);
8539
8559
  /*!*************************************!*\
8540
8560
  !*** ./src/entries/chunks/model.ts ***!
8541
8561
  \*************************************/
8542
- /*! 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, 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 */
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 */
8543
8563
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
8544
8564
 
8545
8565
  "use strict";
@@ -8838,6 +8858,8 @@ __webpack_require__.r(__webpack_exports__);
8838
8858
 
8839
8859
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["getTocRootCss"]; });
8840
8860
 
8861
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TOCModel", function() { return _surveyToc__WEBPACK_IMPORTED_MODULE_55__["TOCModel"]; });
8862
+
8841
8863
  /* harmony import */ var _surveyProgress__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ../../surveyProgress */ "./src/surveyProgress.ts");
8842
8864
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressModel", function() { return _surveyProgress__WEBPACK_IMPORTED_MODULE_56__["SurveyProgressModel"]; });
8843
8865
 
@@ -8990,7 +9012,7 @@ __webpack_require__.r(__webpack_exports__);
8990
9012
  // import "../../main.scss";
8991
9013
  //import "../../modern.scss";
8992
9014
  var Version;
8993
- Version = "" + "1.9.95";
9015
+ Version = "" + "1.9.97";
8994
9016
  function checkLibraryVersion(ver, libraryName) {
8995
9017
  if (Version != ver) {
8996
9018
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -9098,7 +9120,7 @@ function checkLibraryVersion(ver, libraryName) {
9098
9120
  /*!**************************************!*\
9099
9121
  !*** ./src/entries/core-wo-model.ts ***!
9100
9122
  \**************************************/
9101
- /*! 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, 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 */
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 */
9102
9124
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9103
9125
 
9104
9126
  "use strict";
@@ -9344,6 +9366,8 @@ __webpack_require__.r(__webpack_exports__);
9344
9366
 
9345
9367
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["getTocRootCss"]; });
9346
9368
 
9369
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TOCModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["TOCModel"]; });
9370
+
9347
9371
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["SurveyProgressModel"]; });
9348
9372
 
9349
9373
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressButtonsModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["SurveyProgressButtonsModel"]; });
@@ -9539,7 +9563,7 @@ __webpack_require__.r(__webpack_exports__);
9539
9563
  /*!*****************************!*\
9540
9564
  !*** ./src/entries/core.ts ***!
9541
9565
  \*****************************/
9542
- /*! 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, 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 */
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 */
9543
9567
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9544
9568
 
9545
9569
  "use strict";
@@ -9785,6 +9809,8 @@ __webpack_require__.r(__webpack_exports__);
9785
9809
 
9786
9810
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["getTocRootCss"]; });
9787
9811
 
9812
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TOCModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["TOCModel"]; });
9813
+
9788
9814
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["SurveyProgressModel"]; });
9789
9815
 
9790
9816
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressButtonsModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["SurveyProgressButtonsModel"]; });
@@ -10340,7 +10366,7 @@ __webpack_require__.r(__webpack_exports__);
10340
10366
  /*!******************************!*\
10341
10367
  !*** ./src/entries/react.ts ***!
10342
10368
  \******************************/
10343
- /*! 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, 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 */
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 */
10344
10370
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10345
10371
 
10346
10372
  "use strict";
@@ -10586,6 +10612,8 @@ __webpack_require__.r(__webpack_exports__);
10586
10612
 
10587
10613
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["getTocRootCss"]; });
10588
10614
 
10615
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TOCModel", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["TOCModel"]; });
10616
+
10589
10617
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressModel", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["SurveyProgressModel"]; });
10590
10618
 
10591
10619
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyProgressButtonsModel", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["SurveyProgressButtonsModel"]; });
@@ -15872,8 +15900,14 @@ var Helpers = /** @class */ (function () {
15872
15900
  return array;
15873
15901
  };
15874
15902
  Helpers.getUnbindValue = function (value) {
15903
+ if (Array.isArray(value)) {
15904
+ var res = [];
15905
+ for (var i = 0; i < value.length; i++) {
15906
+ res.push(Helpers.getUnbindValue(value[i]));
15907
+ }
15908
+ return res;
15909
+ }
15875
15910
  if (!!value && value instanceof Object && !(value instanceof Date)) {
15876
- //do not return the same object instance!!!
15877
15911
  return JSON.parse(JSON.stringify(value));
15878
15912
  }
15879
15913
  return value;
@@ -16151,6 +16185,7 @@ var map = {
16151
16185
  "./ModernCheck.svg": "./src/images/ModernCheck.svg",
16152
16186
  "./ModernRadio.svg": "./src/images/ModernRadio.svg",
16153
16187
  "./More.svg": "./src/images/More.svg",
16188
+ "./NavMenu_24x24.svg": "./src/images/NavMenu_24x24.svg",
16154
16189
  "./ProgressButton.svg": "./src/images/ProgressButton.svg",
16155
16190
  "./ProgressButtonV2.svg": "./src/images/ProgressButtonV2.svg",
16156
16191
  "./RemoveFile.svg": "./src/images/RemoveFile.svg",
@@ -16160,6 +16195,7 @@ var map = {
16160
16195
  "./V2Check.svg": "./src/images/V2Check.svg",
16161
16196
  "./V2Check_24x24.svg": "./src/images/V2Check_24x24.svg",
16162
16197
  "./V2DragElement_16x16.svg": "./src/images/V2DragElement_16x16.svg",
16198
+ "./chevron.svg": "./src/images/chevron.svg",
16163
16199
  "./clear_16x16.svg": "./src/images/clear_16x16.svg",
16164
16200
  "./collapseDetail.svg": "./src/images/collapseDetail.svg",
16165
16201
  "./expandDetail.svg": "./src/images/expandDetail.svg",
@@ -16369,6 +16405,17 @@ module.exports = "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\
16369
16405
 
16370
16406
  /***/ }),
16371
16407
 
16408
+ /***/ "./src/images/NavMenu_24x24.svg":
16409
+ /*!**************************************!*\
16410
+ !*** ./src/images/NavMenu_24x24.svg ***!
16411
+ \**************************************/
16412
+ /*! no static exports found */
16413
+ /***/ (function(module, exports) {
16414
+
16415
+ module.exports = "<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16 7H2V5H16V7ZM2 11V13H22V11H2ZM2 19H10V17H2V19Z\" fill=\"black\" fill-opacity=\"0.45\"></path></svg>"
16416
+
16417
+ /***/ }),
16418
+
16372
16419
  /***/ "./src/images/ProgressButton.svg":
16373
16420
  /*!***************************************!*\
16374
16421
  !*** ./src/images/ProgressButton.svg ***!
@@ -16468,6 +16515,17 @@ module.exports = "<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\
16468
16515
 
16469
16516
  /***/ }),
16470
16517
 
16518
+ /***/ "./src/images/chevron.svg":
16519
+ /*!********************************!*\
16520
+ !*** ./src/images/chevron.svg ***!
16521
+ \********************************/
16522
+ /*! no static exports found */
16523
+ /***/ (function(module, exports) {
16524
+
16525
+ module.exports = "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15L17 10H7L12 15Z\"></path></svg>"
16526
+
16527
+ /***/ }),
16528
+
16471
16529
  /***/ "./src/images/clear_16x16.svg":
16472
16530
  /*!************************************!*\
16473
16531
  !*** ./src/images/clear_16x16.svg ***!
@@ -16736,8 +16794,7 @@ __webpack_require__.r(__webpack_exports__);
16736
16794
  /* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ "./src/base.ts");
16737
16795
  /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settings */ "./src/settings.ts");
16738
16796
  /* harmony import */ var _actions_action__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./actions/action */ "./src/actions/action.ts");
16739
- /* harmony import */ var _question_baseselect__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./question_baseselect */ "./src/question_baseselect.ts");
16740
- /* harmony import */ var _question__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./question */ "./src/question.ts");
16797
+ /* harmony import */ var _question__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./question */ "./src/question.ts");
16741
16798
  var __extends = (undefined && undefined.__extends) || (function () {
16742
16799
  var extendStatics = function (d, b) {
16743
16800
  extendStatics = Object.setPrototypeOf ||
@@ -16767,7 +16824,6 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
16767
16824
 
16768
16825
 
16769
16826
 
16770
-
16771
16827
  /**
16772
16828
  * Array of ItemValue is used in checkbox, dropdown and radiogroup choices, matrix columns and rows.
16773
16829
  * It has two main properties: value and text. If text is empty, value is used for displaying.
@@ -17181,8 +17237,9 @@ var ItemValue = /** @class */ (function (_super) {
17181
17237
  Object.defineProperty(ItemValue.prototype, "selected", {
17182
17238
  get: function () {
17183
17239
  var _this = this;
17184
- if (this._locOwner instanceof _question_baseselect__WEBPACK_IMPORTED_MODULE_7__["QuestionSelectBase"] && this.selectedValue === undefined) {
17185
- this.selectedValue = (new _base__WEBPACK_IMPORTED_MODULE_4__["ComputedUpdater"](function () { return _this._locOwner.isItemSelected(_this); }));
17240
+ var locOwner = this._locOwner;
17241
+ if (locOwner instanceof _question__WEBPACK_IMPORTED_MODULE_7__["Question"] && locOwner.isItemSelected && this.selectedValue === undefined) {
17242
+ this.selectedValue = (new _base__WEBPACK_IMPORTED_MODULE_4__["ComputedUpdater"](function () { return locOwner.isItemSelected(_this); }));
17186
17243
  }
17187
17244
  return this.selectedValue;
17188
17245
  },
@@ -17190,7 +17247,7 @@ var ItemValue = /** @class */ (function (_super) {
17190
17247
  configurable: true
17191
17248
  });
17192
17249
  ItemValue.prototype.getComponent = function () {
17193
- if (this._locOwner instanceof _question__WEBPACK_IMPORTED_MODULE_8__["Question"]) {
17250
+ if (this._locOwner instanceof _question__WEBPACK_IMPORTED_MODULE_7__["Question"]) {
17194
17251
  return this.componentValue || this._locOwner.itemComponent;
17195
17252
  }
17196
17253
  return this.componentValue;
@@ -18672,7 +18729,9 @@ var JsonMetadata = /** @class */ (function () {
18672
18729
  return res;
18673
18730
  };
18674
18731
  JsonMetadata.prototype.getChemeRefName = function (className, isRoot) {
18675
- return isRoot ? "#/definitions/" + className : className + "#";
18732
+ //Fix for #6486, according to https://niem.github.io/json/reference/json-schema/references/#:~:text=In%20a%20JSON%20schema%2C%20a,%2C%20an%20in%2Dschema%20reference
18733
+ return "#/definitions/" + className;
18734
+ //return isRoot ? "#/definitions/" + className : className + "#";
18676
18735
  };
18677
18736
  JsonMetadata.prototype.generateChemaClass = function (className, schemaDef, isRoot) {
18678
18737
  if (!!schemaDef[className])
@@ -18710,6 +18769,7 @@ var JsonError = /** @class */ (function () {
18710
18769
  this.message = message;
18711
18770
  this.description = "";
18712
18771
  this.at = -1;
18772
+ this.end = -1;
18713
18773
  }
18714
18774
  JsonError.prototype.getFullDescription = function () {
18715
18775
  return this.message + (this.description ? "\n" + this.description : "");
@@ -18823,7 +18883,7 @@ var JsonObject = /** @class */ (function () {
18823
18883
  this.toObjectCore(jsonObj, obj);
18824
18884
  var error = this.getRequiredError(obj, jsonObj);
18825
18885
  if (!!error) {
18826
- this.addNewError(error, jsonObj);
18886
+ this.addNewError(error, jsonObj, obj);
18827
18887
  }
18828
18888
  };
18829
18889
  JsonObject.prototype.toObjectCore = function (jsonObj, obj) {
@@ -18854,7 +18914,7 @@ var JsonObject = /** @class */ (function () {
18854
18914
  var property = this.findProperty(properties, key);
18855
18915
  if (!property) {
18856
18916
  if (needAddErrors) {
18857
- this.addNewError(new JsonUnknownPropertyError(key.toString(), objType), jsonObj);
18917
+ this.addNewError(new JsonUnknownPropertyError(key.toString(), objType), jsonObj, obj);
18858
18918
  }
18859
18919
  continue;
18860
18920
  }
@@ -19017,7 +19077,7 @@ var JsonObject = /** @class */ (function () {
19017
19077
  }
19018
19078
  }
19019
19079
  if (error) {
19020
- this.addNewError(error, value);
19080
+ this.addNewError(error, value, newObj);
19021
19081
  }
19022
19082
  return error;
19023
19083
  };
@@ -19038,11 +19098,17 @@ var JsonObject = /** @class */ (function () {
19038
19098
  }
19039
19099
  return null;
19040
19100
  };
19041
- JsonObject.prototype.addNewError = function (error, jsonObj) {
19042
- if (jsonObj && jsonObj[JsonObject.positionPropertyName]) {
19043
- error.at = jsonObj[JsonObject.positionPropertyName].start;
19044
- }
19101
+ JsonObject.prototype.addNewError = function (error, jsonObj, element) {
19102
+ error.jsonObj = jsonObj;
19103
+ error.element = element;
19045
19104
  this.errors.push(error);
19105
+ if (!jsonObj)
19106
+ return;
19107
+ var posObj = jsonObj[JsonObject.positionPropertyName];
19108
+ if (!posObj)
19109
+ return;
19110
+ error.at = posObj.start;
19111
+ error.end = posObj.end;
19046
19112
  };
19047
19113
  JsonObject.prototype.valueToArray = function (value, obj, key, property) {
19048
19114
  if (obj[key] && !this.isValueArray(obj[key]))
@@ -21028,8 +21094,8 @@ var englishStrings = {
21028
21094
  noEntriesReadonlyText: "There are no entries.",
21029
21095
  more: "More",
21030
21096
  tagboxDoneButtonCaption: "OK",
21031
- selectToRankFromContainerPlaceholder: "All items are ranked.",
21032
- selectToRankToContainerPlaceholder: "Drop the items which you like not to be selected here.",
21097
+ selectToRankEmptyRankedAreaText: "All choices are ranked",
21098
+ selectToRankEmptyUnrankedAreaText: "Drag and drop choices here to rank them",
21033
21099
  };
21034
21100
  // Uncomment the lines below if you create a custom dictionary.
21035
21101
  // Replace "en" with a custom locale code (for example, "fr" or "de"),
@@ -27217,6 +27283,12 @@ var PanelModelBase = /** @class */ (function (_super) {
27217
27283
  }
27218
27284
  return !rec.result;
27219
27285
  };
27286
+ PanelModelBase.prototype.validateContainerOnly = function () {
27287
+ this.hasErrorsInPanels({ fireCallback: true });
27288
+ if (!!this.parent) {
27289
+ this.parent.validateContainerOnly();
27290
+ }
27291
+ };
27220
27292
  PanelModelBase.prototype.hasErrorsInPanels = function (rec) {
27221
27293
  var errors = [];
27222
27294
  this.hasRequiredError(rec, errors);
@@ -29600,7 +29672,7 @@ function setStyles() {
29600
29672
  ".sv_q_dd_value": "width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; position: relative;",
29601
29673
  ".sv_q_dd_root": "position: relative;",
29602
29674
  ".sv_q_dd_select_wrapper::after": "content: \"\"; display: block;background-image: url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 10 10' style='enable-background:new 0 0 10 10;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23404040;%7D%0A%3C/style%3E%3Cpolygon class='st0' points='2,2 0,4 5,9 10,4 8,2 5,5 '/%3E%3C/svg%3E%0A\"); background-repeat: no-repeat; background-position: center center; background-size: 10px 12px; width: 34px; height: 100%; position: absolute; inset-inline-end: 0; top: 0;",
29603
- ".sv_q_dd_filter-string-input": "outline: none; border: none; background-color: transparent; position: absolute; inset-inline-start: 0;",
29675
+ ".sv_q_dd_filter-string-input": "outline: none; border: none; background-color: transparent; position: absolute; inset-inline-start: 0; inset-block-start: 0;",
29604
29676
  ".sv_q_dropdown_clean-button": "margin: auto 2em;",
29605
29677
  ".sv_q_tagbox__placeholder": "position: absolute; top: 0; inset-inline-start: 1em; max-width: 100%; width: auto; height: 100%; text-align: start; cursor: text; pointer-events: none;",
29606
29678
  ".sv_qstn .sv-q-col-1, .sv-question .sv-q-col-1": "width: 100%; display: inline-block; padding-right: 1em; box-sizing: border-box; word-break: break-word;",
@@ -29761,7 +29833,7 @@ function setStyles() {
29761
29833
  "sv-popup": "display: block; position: absolute; z-index: -1;",
29762
29834
  ".sv-popup": "position: fixed; left: 0; top: 0; width: 100vw; height: 100vh; outline: none; z-index: 1500;",
29763
29835
  ".sv-popup__container": "box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.1); position: absolute; padding: 0;",
29764
- ".sv-popup__body-content": "background-color: var(--background, #fff); border-radius: calc(0.5 * var(--base-unit, 8px)); width: 100%; height: 100%; box-sizing: border-box; display: flex; flex-direction: column; max-height: 90vh; max-width: 90vw;",
29836
+ ".sv-popup__body-content": "background-color: var(--background, #fff); border-radius: calc(0.5 * var(--base-unit, 8px)); width: 100%; height: 100%; box-sizing: border-box; display: flex; flex-direction: column; max-height: 90vh; max-width: 100vw;",
29765
29837
  ".sv-popup--modal .sv-list__filter": "padding-top: 8px;",
29766
29838
  ".sv-popup--modal .sv-list__filter-icon": "top: 20px;",
29767
29839
  ".sv-popup--overlay .sv-list__filter": "padding-top: 8px;",
@@ -29915,13 +29987,14 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
29915
29987
  this.isTablet = width >= PopupDropdownViewModel.tabletSizeBreakpoint;
29916
29988
  };
29917
29989
  PopupDropdownViewModel.prototype._updatePosition = function () {
29918
- var _a;
29990
+ var _a, _b, _c;
29919
29991
  if (!this.targetElement)
29920
29992
  return;
29921
29993
  var targetElementRect = this.targetElement.getBoundingClientRect();
29922
29994
  var popupContainer = (_a = this.container) === null || _a === void 0 ? void 0 : _a.querySelector(this.containerSelector);
29923
29995
  if (!popupContainer)
29924
29996
  return;
29997
+ var fixedPopupContainer = (_b = this.container) === null || _b === void 0 ? void 0 : _b.querySelector(this.fixedPopupContainer);
29925
29998
  var scrollContent = popupContainer.querySelector(this.scrollingContentSelector);
29926
29999
  var popupComputedStyle = window.getComputedStyle(popupContainer);
29927
30000
  var marginLeft = (parseFloat(popupComputedStyle.marginLeft) || 0);
@@ -29932,7 +30005,8 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
29932
30005
  var verticalPosition = this.model.verticalPosition;
29933
30006
  var actualHorizontalPosition = this.getActualHorizontalPosition();
29934
30007
  if (!!window) {
29935
- height = Math.ceil(Math.min(height, window.innerHeight * 0.9, window.visualViewport.height));
30008
+ var heightValues = [height, window.innerHeight * 0.9, (_c = window.visualViewport) === null || _c === void 0 ? void 0 : _c.height];
30009
+ height = Math.ceil(Math.min.apply(Math, heightValues.filter(function (each) { return typeof each === "number"; })));
29936
30010
  verticalPosition = _utils_popup__WEBPACK_IMPORTED_MODULE_1__["PopupUtils"].updateVerticalPosition(targetElementRect, height, this.model.verticalPosition, this.model.showPointer, window.innerHeight);
29937
30011
  }
29938
30012
  this.popupDirection = _utils_popup__WEBPACK_IMPORTED_MODULE_1__["PopupUtils"].calculatePopupDirection(verticalPosition, actualHorizontalPosition);
@@ -29949,6 +30023,11 @@ var PopupDropdownViewModel = /** @class */ (function (_super) {
29949
30023
  pos.left = newHorizontalDimensions.left;
29950
30024
  }
29951
30025
  }
30026
+ if (!!fixedPopupContainer) {
30027
+ var rect = fixedPopupContainer.getBoundingClientRect();
30028
+ pos.top -= rect.top;
30029
+ pos.left -= rect.left;
30030
+ }
29952
30031
  this.left = pos.left + "px";
29953
30032
  this.top = pos.top + "px";
29954
30033
  if (this.showHeader) {
@@ -30239,6 +30318,16 @@ var PopupSurveyModel = /** @class */ (function (_super) {
30239
30318
  _this.width = _this.survey.width;
30240
30319
  _this.updateCss();
30241
30320
  _this.onCreating();
30321
+ _this.survey.onPopupVisibleChanged.add(function (_, opt) {
30322
+ if (opt.visible) {
30323
+ _this.onScrollCallback = function () {
30324
+ opt.popup.toggleVisibility();
30325
+ };
30326
+ }
30327
+ else {
30328
+ _this.onScrollCallback = undefined;
30329
+ }
30330
+ });
30242
30331
  return _this;
30243
30332
  }
30244
30333
  PopupSurveyModel.prototype.onCreating = function () { };
@@ -30443,6 +30532,11 @@ var PopupSurveyModel = /** @class */ (function (_super) {
30443
30532
  : 0;
30444
30533
  }
30445
30534
  };
30535
+ PopupSurveyModel.prototype.onScroll = function () {
30536
+ if (this.onScrollCallback) {
30537
+ this.onScrollCallback();
30538
+ }
30539
+ };
30446
30540
  __decorate([
30447
30541
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_2__["property"])()
30448
30542
  ], PopupSurveyModel.prototype, "width", void 0);
@@ -30553,6 +30647,7 @@ var PopupBaseViewModel = /** @class */ (function (_super) {
30553
30647
  function PopupBaseViewModel(model) {
30554
30648
  var _this = _super.call(this) || this;
30555
30649
  _this.popupSelector = ".sv-popup";
30650
+ _this.fixedPopupContainer = ".sv-popup";
30556
30651
  _this.containerSelector = ".sv-popup__container";
30557
30652
  _this.scrollingContentSelector = ".sv-popup__scrolling-content";
30558
30653
  _this.model = model;
@@ -31229,6 +31324,17 @@ var Question = /** @class */ (function (_super) {
31229
31324
  get: function () {
31230
31325
  return this.isReadyValue;
31231
31326
  },
31327
+ set: function (val) {
31328
+ var oldIsReady = this.isReadyValue;
31329
+ this.isReadyValue = val;
31330
+ if (oldIsReady != val) {
31331
+ this.onReadyChanged.fire(this, {
31332
+ question: this,
31333
+ isReady: val,
31334
+ oldIsReady: oldIsReady,
31335
+ });
31336
+ }
31337
+ },
31232
31338
  enumerable: false,
31233
31339
  configurable: true
31234
31340
  });
@@ -32204,9 +32310,25 @@ var Question = /** @class */ (function (_super) {
32204
32310
  * @param onError Pass `true` if you want to focus an input field with the first validation error. Default value: `false` (focuses the first input field). Applies to question types with multiple input fields.
32205
32311
  */
32206
32312
  Question.prototype.focus = function (onError) {
32313
+ var _this = this;
32207
32314
  if (onError === void 0) { onError = false; }
32208
- if (this.isDesignMode)
32315
+ if (this.isDesignMode || !this.isVisible || !this.survey)
32209
32316
  return;
32317
+ var page = this.page;
32318
+ if (!page && !!this.parentQuestion) {
32319
+ page = this.parentQuestion.page;
32320
+ }
32321
+ var shouldChangePage = !!page && this.survey.currentPage !== page;
32322
+ if (shouldChangePage) {
32323
+ this.survey.currentPage = page;
32324
+ setTimeout(function () { return _this.focuscore(onError); }, 0);
32325
+ }
32326
+ else {
32327
+ this.focuscore(onError);
32328
+ }
32329
+ };
32330
+ Question.prototype.focuscore = function (onError) {
32331
+ if (onError === void 0) { onError = false; }
32210
32332
  if (!!this.survey) {
32211
32333
  this.expandAllParents(this);
32212
32334
  this.survey.scrollElementToTop(this, this, null, this.id);
@@ -33169,6 +33291,11 @@ var Question = /** @class */ (function (_super) {
33169
33291
  Question.prototype.validate = function (fireCallback, rec) {
33170
33292
  if (fireCallback === void 0) { fireCallback = true; }
33171
33293
  if (rec === void 0) { rec = null; }
33294
+ if (!!rec && rec.isOnValueChanged) {
33295
+ if (!!this.parent) {
33296
+ this.parent.validateContainerOnly();
33297
+ }
33298
+ }
33172
33299
  return !this.hasErrors(fireCallback, rec);
33173
33300
  };
33174
33301
  Object.defineProperty(Question.prototype, "currentErrorCount", {
@@ -33485,6 +33612,9 @@ var Question = /** @class */ (function (_super) {
33485
33612
  Question.prototype.getAllValues = function () {
33486
33613
  return !!this.data ? this.data.getAllValues() : null;
33487
33614
  };
33615
+ Question.prototype.processPopupVisiblilityChanged = function (popupModel, visible) {
33616
+ this.survey.processPopupVisiblityChanged(this, popupModel, visible);
33617
+ };
33488
33618
  Question.prototype.transformToMobileView = function () { };
33489
33619
  Question.prototype.transformToDesktopView = function () { };
33490
33620
  Question.prototype.needResponsiveWidth = function () {
@@ -34048,6 +34178,20 @@ var QuestionSelectBase = /** @class */ (function (_super) {
34048
34178
  };
34049
34179
  return _this;
34050
34180
  }
34181
+ Object.defineProperty(QuestionSelectBase.prototype, "waitingChoicesByURL", {
34182
+ get: function () {
34183
+ return !this.isChoicesLoaded && !this.choicesByUrl.isEmpty;
34184
+ },
34185
+ enumerable: false,
34186
+ configurable: true
34187
+ });
34188
+ Object.defineProperty(QuestionSelectBase.prototype, "waitingAcyncOperations", {
34189
+ get: function () {
34190
+ return this.waitingChoicesByURL || this.waitingGetChoiceDisplayValueResponse;
34191
+ },
34192
+ enumerable: false,
34193
+ configurable: true
34194
+ });
34051
34195
  QuestionSelectBase.prototype.getType = function () {
34052
34196
  return "selectbase";
34053
34197
  };
@@ -34346,7 +34490,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
34346
34490
  (_a = this.survey) === null || _a === void 0 ? void 0 : _a.loadedChoicesFromServer(this);
34347
34491
  };
34348
34492
  QuestionSelectBase.prototype.getItemIfChoicesNotContainThisValue = function (value, text) {
34349
- if (!this.isReady) {
34493
+ if (this.waitingChoicesByURL) {
34350
34494
  return this.createItemValue(value, text);
34351
34495
  }
34352
34496
  else {
@@ -34359,7 +34503,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
34359
34503
  return null;
34360
34504
  var itemValue = _itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"].getItemByValue(this.visibleChoices, this.value);
34361
34505
  this.onGetSingleSelectedItem(itemValue);
34362
- if (!itemValue && !selectedItemValues) {
34506
+ if (!itemValue && (!selectedItemValues || this.value != selectedItemValues.id)) {
34363
34507
  this.updateSelectedItemValues();
34364
34508
  }
34365
34509
  return itemValue || selectedItemValues || (this.isOtherSelected ? this.otherItem : this.getItemIfChoicesNotContainThisValue(this.value));
@@ -34591,6 +34735,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
34591
34735
  var _this = this;
34592
34736
  if (!!this.survey && !this.isEmpty() && !_itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"].getItemByValue(this.choices, this.value)) {
34593
34737
  this.waitingGetChoiceDisplayValueResponse = true;
34738
+ this.isReady = !this.waitingAcyncOperations;
34594
34739
  this.survey.getChoiceDisplayValue({
34595
34740
  question: this,
34596
34741
  values: [this.value],
@@ -34599,6 +34744,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
34599
34744
  if (!displayValues || !displayValues.length)
34600
34745
  return;
34601
34746
  _this.selectedItemValues = _this.createItemValue(_this.value, displayValues[0]);
34747
+ _this.isReady = !_this.waitingAcyncOperations;
34602
34748
  }
34603
34749
  });
34604
34750
  }
@@ -34609,6 +34755,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
34609
34755
  var hasItemWithValues = valueArray.some(function (val) { return !_itemvalue__WEBPACK_IMPORTED_MODULE_3__["ItemValue"].getItemByValue(_this.choices, val); });
34610
34756
  if (!!this.survey && !this.isEmpty() && hasItemWithValues) {
34611
34757
  this.waitingGetChoiceDisplayValueResponse = true;
34758
+ this.isReady = this.waitingAcyncOperations;
34612
34759
  this.survey.getChoiceDisplayValue({
34613
34760
  question: this,
34614
34761
  values: valueArray,
@@ -34617,6 +34764,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
34617
34764
  if (!displayValues || !displayValues.length)
34618
34765
  return;
34619
34766
  _this.selectedItemValues = displayValues.map(function (displayValue, index) { return _this.createItemValue(_this.value[index], displayValue); });
34767
+ _this.isReady = !_this.waitingAcyncOperations;
34620
34768
  }
34621
34769
  });
34622
34770
  }
@@ -35255,7 +35403,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
35255
35403
  processor = this.survey;
35256
35404
  if (!processor)
35257
35405
  return;
35258
- this.isReadyValue = this.isChoicesLoaded || this.choicesByUrl.isEmpty;
35406
+ this.isReadyValue = !this.waitingAcyncOperations;
35259
35407
  this.isRunningChoices = true;
35260
35408
  this.choicesByUrl.run(processor);
35261
35409
  this.isRunningChoices = false;
@@ -35375,7 +35523,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
35375
35523
  for (var i = 0; i < this.dependedQuestions.length; i++) {
35376
35524
  var q = this.dependedQuestions[i];
35377
35525
  q.onVisibleChoicesChanged();
35378
- q.clearIncorrectValuesCore();
35526
+ q.clearIncorrectValues();
35379
35527
  }
35380
35528
  this.isUpdatingChoicesDependedQuestions = false;
35381
35529
  };
@@ -35470,11 +35618,11 @@ var QuestionSelectBase = /** @class */ (function (_super) {
35470
35618
  };
35471
35619
  QuestionSelectBase.prototype.clearIncorrectValuesCore = function () {
35472
35620
  var val = this.value;
35473
- if (this.canClearValueAnUnknow(val)) {
35621
+ if (this.canClearValueAnUnknown(val)) {
35474
35622
  this.clearValue();
35475
35623
  }
35476
35624
  };
35477
- QuestionSelectBase.prototype.canClearValueAnUnknow = function (val) {
35625
+ QuestionSelectBase.prototype.canClearValueAnUnknown = function (val) {
35478
35626
  if (!this.getStoreOthersAsComment() && this.isOtherSelected)
35479
35627
  return false;
35480
35628
  return this.hasUnknownValue(val, true, true, true);
@@ -35656,14 +35804,7 @@ var QuestionSelectBase = /** @class */ (function (_super) {
35656
35804
  });
35657
35805
  QuestionSelectBase.prototype.choicesLoaded = function () {
35658
35806
  this.isChoicesLoaded = true;
35659
- var oldIsReady = this.isReadyValue;
35660
- this.isReadyValue = true;
35661
- this.onReadyChanged &&
35662
- this.onReadyChanged.fire(this, {
35663
- question: this,
35664
- isReady: true,
35665
- oldIsReady: oldIsReady,
35666
- });
35807
+ this.isReady = !this.waitingAcyncOperations;
35667
35808
  if (this.survey) {
35668
35809
  this.survey.loadedChoicesFromServer(this);
35669
35810
  }
@@ -36929,7 +37070,7 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
36929
37070
  if (Array.isArray(val)) {
36930
37071
  for (var i = 0; i < val.length; i++) {
36931
37072
  var rVal = this.getRealValue(val[i]);
36932
- if (this.canClearValueAnUnknow(rVal)) {
37073
+ if (this.canClearValueAnUnknown(rVal)) {
36933
37074
  this.addIntoInvisibleOldValues(rVal);
36934
37075
  }
36935
37076
  }
@@ -37068,7 +37209,7 @@ var QuestionCheckboxModel = /** @class */ (function (_super) {
37068
37209
  var newValue = [];
37069
37210
  for (var i = 0; i < val.length; i++) {
37070
37211
  var rItemVal = this.getRealValue(val[i]);
37071
- var isUnkown = this.canClearValueAnUnknow(rItemVal);
37212
+ var isUnkown = this.canClearValueAnUnknown(rItemVal);
37072
37213
  if ((!clearDisabled && !isUnkown) ||
37073
37214
  (clearDisabled && !this.isValueDisabled(rItemVal))) {
37074
37215
  newValue.push(val[i]);
@@ -37568,6 +37709,14 @@ var ComponentQuestionJSON = /** @class */ (function () {
37568
37709
  return question.getDisplayValue(keyAsText, value);
37569
37710
  return this.json.getDisplayValue(question);
37570
37711
  };
37712
+ ComponentQuestionJSON.prototype.setValueToQuestion = function (val) {
37713
+ var converter = this.json.valueToQuestion || this.json.setValue;
37714
+ return !!converter ? converter(val) : val;
37715
+ };
37716
+ ComponentQuestionJSON.prototype.getValueFromQuestion = function (val) {
37717
+ var converter = this.json.valueFromQuestion || this.json.getValue;
37718
+ return !!converter ? converter(val) : val;
37719
+ };
37571
37720
  Object.defineProperty(ComponentQuestionJSON.prototype, "isComposite", {
37572
37721
  get: function () {
37573
37722
  return !!this.json.elementsJSON || !!this.json.createElements;
@@ -37845,6 +37994,9 @@ var QuestionCustomModelBase = /** @class */ (function (_super) {
37845
37994
  QuestionCustomModelBase.prototype.ensureRowsVisibility = function () {
37846
37995
  // do nothing
37847
37996
  };
37997
+ QuestionCustomModelBase.prototype.validateContainerOnly = function () {
37998
+ // do nothing
37999
+ };
37848
38000
  QuestionCustomModelBase.prototype.getContentDisplayValueCore = function (keyAsText, value, question) {
37849
38001
  if (!question)
37850
38002
  return _super.prototype.getDisplayValueCore.call(this, keyAsText, value);
@@ -37953,7 +38105,7 @@ var QuestionCustomModel = /** @class */ (function (_super) {
37953
38105
  if (!this.contentQuestion)
37954
38106
  return;
37955
38107
  if (this.isEmpty() && !this.contentQuestion.isEmpty()) {
37956
- this.value = this.contentQuestion.value;
38108
+ this.value = this.getContentQuestionValue();
37957
38109
  }
37958
38110
  };
37959
38111
  QuestionCustomModel.prototype.runCondition = function (values, properties) {
@@ -37972,9 +38124,24 @@ var QuestionCustomModel = /** @class */ (function (_super) {
37972
38124
  };
37973
38125
  QuestionCustomModel.prototype.convertDataValue = function (name, newValue) {
37974
38126
  return this.convertDataName(name) == _super.prototype.convertDataName.call(this, name)
37975
- ? this.contentQuestion.value
38127
+ ? this.getContentQuestionValue()
37976
38128
  : newValue;
37977
38129
  };
38130
+ QuestionCustomModel.prototype.getContentQuestionValue = function () {
38131
+ if (!this.contentQuestion)
38132
+ return undefined;
38133
+ var val = this.contentQuestion.value;
38134
+ if (!!this.customQuestion)
38135
+ val = this.customQuestion.getValueFromQuestion(val);
38136
+ return val;
38137
+ };
38138
+ QuestionCustomModel.prototype.setContentQuestionValue = function (val) {
38139
+ if (!this.contentQuestion)
38140
+ return;
38141
+ if (!!this.customQuestion)
38142
+ val = this.customQuestion.setValueToQuestion(val);
38143
+ this.contentQuestion.value = val;
38144
+ };
37978
38145
  QuestionCustomModel.prototype.canSetValueToSurvey = function () {
37979
38146
  return false;
37980
38147
  };
@@ -37982,8 +38149,8 @@ var QuestionCustomModel = /** @class */ (function (_super) {
37982
38149
  if (updateIsAnswered === void 0) { updateIsAnswered = true; }
37983
38150
  _super.prototype.setQuestionValue.call(this, newValue, updateIsAnswered);
37984
38151
  if (!this.isLoadingFromJson && !!this.contentQuestion &&
37985
- !this.isTwoValueEquals(this.contentQuestion.value, newValue)) {
37986
- this.contentQuestion.value = this.getUnbindValue(newValue);
38152
+ !this.isTwoValueEquals(this.getContentQuestionValue(), newValue)) {
38153
+ this.setContentQuestionValue(this.getUnbindValue(newValue));
37987
38154
  }
37988
38155
  };
37989
38156
  QuestionCustomModel.prototype.onSurveyValueChanged = function (newValue) {
@@ -37994,7 +38161,7 @@ var QuestionCustomModel = /** @class */ (function (_super) {
37994
38161
  };
37995
38162
  QuestionCustomModel.prototype.getValueCore = function () {
37996
38163
  if (!!this.contentQuestion)
37997
- return this.contentQuestion.value;
38164
+ return this.getContentQuestionValue();
37998
38165
  return _super.prototype.getValueCore.call(this);
37999
38166
  };
38000
38167
  QuestionCustomModel.prototype.initElement = function (el) {
@@ -38150,7 +38317,7 @@ var QuestionCompositeModel = /** @class */ (function (_super) {
38150
38317
  }
38151
38318
  _super.prototype.onSurveyLoad.call(this);
38152
38319
  if (!!this.contentPanel) {
38153
- var val = this.contentPanel.getValue();
38320
+ var val = this.getContentPanelValue();
38154
38321
  if (!_helpers__WEBPACK_IMPORTED_MODULE_3__["Helpers"].isValueEmpty(val)) {
38155
38322
  this.value = val;
38156
38323
  }
@@ -38215,12 +38382,20 @@ var QuestionCompositeModel = /** @class */ (function (_super) {
38215
38382
  this.settingNewValue = false;
38216
38383
  };
38217
38384
  QuestionCompositeModel.prototype.updateValueCoreWithPanelValue = function () {
38218
- var panelValue = this.contentPanel.getValue();
38385
+ var panelValue = this.getContentPanelValue();
38219
38386
  if (this.isTwoValueEquals(this.getValueCore(), panelValue))
38220
38387
  return false;
38221
38388
  this.setValueCore(panelValue);
38222
38389
  return true;
38223
38390
  };
38391
+ QuestionCompositeModel.prototype.getContentPanelValue = function (val) {
38392
+ if (!val)
38393
+ val = this.contentPanel.getValue();
38394
+ return this.customQuestion.setValueToQuestion(val);
38395
+ };
38396
+ QuestionCompositeModel.prototype.getValueForContentPanel = function (val) {
38397
+ return this.customQuestion.getValueFromQuestion(val);
38398
+ };
38224
38399
  QuestionCompositeModel.prototype.setNewValueIntoQuestion = function (name, newValue) {
38225
38400
  var q = this.getQuestionByName(name);
38226
38401
  if (!!q && !this.isTwoValueEquals(newValue, q.value)) {
@@ -38242,7 +38417,7 @@ var QuestionCompositeModel = /** @class */ (function (_super) {
38242
38417
  }
38243
38418
  };
38244
38419
  QuestionCompositeModel.prototype.convertDataValue = function (name, newValue) {
38245
- var val = this.value;
38420
+ var val = this.getValueForContentPanel(this.value);
38246
38421
  if (!val)
38247
38422
  val = {};
38248
38423
  if (this.isValueEmpty(newValue) && !this.isEditingSurveyElement) {
@@ -38251,19 +38426,20 @@ var QuestionCompositeModel = /** @class */ (function (_super) {
38251
38426
  else {
38252
38427
  val[name] = newValue;
38253
38428
  }
38254
- return val;
38429
+ return this.getContentPanelValue(val);
38255
38430
  };
38256
38431
  QuestionCompositeModel.prototype.setQuestionValue = function (newValue, updateIsAnswered) {
38257
38432
  if (updateIsAnswered === void 0) { updateIsAnswered = true; }
38258
38433
  this.setValuesIntoQuestions(newValue);
38259
38434
  if (!this.isEditingSurveyElement && !!this.contentPanel) {
38260
- newValue = this.contentPanel.getValue();
38435
+ newValue = this.getContentPanelValue();
38261
38436
  }
38262
38437
  _super.prototype.setQuestionValue.call(this, newValue, updateIsAnswered);
38263
38438
  };
38264
38439
  QuestionCompositeModel.prototype.setValuesIntoQuestions = function (newValue) {
38265
38440
  if (!this.contentPanel)
38266
38441
  return;
38442
+ newValue = this.getValueForContentPanel(newValue);
38267
38443
  var oldSettingNewValue = this.settingNewValue;
38268
38444
  this.settingNewValue = true;
38269
38445
  var questions = this.contentPanel.questions;
@@ -38361,7 +38537,7 @@ var QuestionDropdownModel = /** @class */ (function (_super) {
38361
38537
  _this.registerPropertyChangedHandlers(["choicesMin", "choicesMax", "choicesStep"], function () {
38362
38538
  _this.onVisibleChoicesChanged();
38363
38539
  });
38364
- _this.registerPropertyChangedHandlers(["value", "renderAs", "showOtherItem", "otherText", "placeholder", "choices"], function () {
38540
+ _this.registerPropertyChangedHandlers(["value", "renderAs", "showOtherItem", "otherText", "placeholder", "choices", "visibleChoices"], function () {
38365
38541
  _this.updateReadOnlyText();
38366
38542
  });
38367
38543
  _this.updateReadOnlyText();
@@ -39679,6 +39855,13 @@ var QuestionFileModel = /** @class */ (function (_super) {
39679
39855
  }
39680
39856
  });
39681
39857
  };
39858
+ Object.defineProperty(QuestionFileModel.prototype, "renderCapture", {
39859
+ get: function () {
39860
+ return this.allowCameraAccess ? "user" : undefined;
39861
+ },
39862
+ enumerable: false,
39863
+ configurable: true
39864
+ });
39682
39865
  Object.defineProperty(QuestionFileModel.prototype, "multipleRendered", {
39683
39866
  get: function () {
39684
39867
  return this.allowMultiple ? "multiple" : undefined;
@@ -39815,13 +39998,7 @@ var QuestionFileModel = /** @class */ (function (_super) {
39815
39998
  _this.previewValue.push(val);
39816
39999
  });
39817
40000
  }
39818
- _this.isReadyValue = true;
39819
- _this.onReadyChanged &&
39820
- _this.onReadyChanged.fire(_this, {
39821
- question: _this,
39822
- isReady: true,
39823
- oldIsReady: false,
39824
- });
40001
+ _this.isReady = true;
39825
40002
  _this._previewLoader.dispose();
39826
40003
  _this._previewLoader = undefined;
39827
40004
  });
@@ -39984,6 +40161,9 @@ var QuestionFileModel = /** @class */ (function (_super) {
39984
40161
  __decorate([
39985
40162
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ defaultValue: false })
39986
40163
  ], QuestionFileModel.prototype, "containsMultiplyFiles", void 0);
40164
+ __decorate([
40165
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
40166
+ ], QuestionFileModel.prototype, "allowCameraAccess", void 0);
39987
40167
  __decorate([
39988
40168
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ localizable: { defaultStr: "confirmRemoveFile" } })
39989
40169
  ], QuestionFileModel.prototype, "confirmRemoveMessage", void 0);
@@ -40029,6 +40209,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("file", [
40029
40209
  { name: "correctAnswer", visible: false },
40030
40210
  { name: "validators", visible: false },
40031
40211
  { name: "needConfirmRemoveFile:boolean" },
40212
+ { name: "allowCameraAccess:switch", category: "general" }
40032
40213
  ], function () {
40033
40214
  return new QuestionFileModel("");
40034
40215
  }, "question");
@@ -40043,19 +40224,22 @@ var FileLoader = /** @class */ (function () {
40043
40224
  }
40044
40225
  FileLoader.prototype.load = function (files) {
40045
40226
  var _this = this;
40046
- files.forEach(function (value) {
40227
+ var downloadedCount = 0;
40228
+ this.loaded = new Array(files.length);
40229
+ files.forEach(function (value, index) {
40047
40230
  if (_this.fileQuestion.survey) {
40048
40231
  _this.fileQuestion.survey.downloadFile(_this.fileQuestion, _this.fileQuestion.name, value, function (status, data) {
40049
40232
  if (!_this.fileQuestion || !_this.callback) {
40050
40233
  return;
40051
40234
  }
40052
40235
  if (status === "success") {
40053
- _this.loaded.push({
40236
+ _this.loaded[index] = {
40054
40237
  content: data,
40055
40238
  name: value.name,
40056
40239
  type: value.type,
40057
- });
40058
- if (_this.loaded.length === files.length) {
40240
+ };
40241
+ downloadedCount++;
40242
+ if (downloadedCount === files.length) {
40059
40243
  _this.callback("loaded", _this.loaded);
40060
40244
  }
40061
40245
  }
@@ -42463,7 +42647,10 @@ var MatrixDropdownRowModelBase = /** @class */ (function () {
42463
42647
  };
42464
42648
  MatrixDropdownRowModelBase.prototype.getFilteredValues = function () {
42465
42649
  var allValues = this.getAllValues();
42466
- var values = { row: allValues };
42650
+ var values = this.validationValues;
42651
+ if (!values)
42652
+ values = {};
42653
+ values.row = allValues;
42467
42654
  for (var key in allValues) {
42468
42655
  values[key] = allValues[key];
42469
42656
  }
@@ -42740,6 +42927,7 @@ var MatrixDropdownRowModelBase = /** @class */ (function () {
42740
42927
  var cells = this.cells;
42741
42928
  if (!cells)
42742
42929
  return res;
42930
+ this.validationValues = rec.validationValues;
42743
42931
  for (var colIndex = 0; colIndex < cells.length; colIndex++) {
42744
42932
  if (!cells[colIndex])
42745
42933
  continue;
@@ -42764,6 +42952,7 @@ var MatrixDropdownRowModelBase = /** @class */ (function () {
42764
42952
  }
42765
42953
  res = panelHasError || res;
42766
42954
  }
42955
+ this.validationValues = undefined;
42767
42956
  return res;
42768
42957
  };
42769
42958
  MatrixDropdownRowModelBase.prototype.updateCellOnColumnChanged = function (cell, name, newValue) {
@@ -44112,6 +44301,7 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
44112
44301
  rec = {};
44113
44302
  if (!rows)
44114
44303
  return rec;
44304
+ rec.validationValues = this.getDataFilteredValues();
44115
44305
  rec.isSingleDetailPanel = this.detailPanelMode === "underRowSingle";
44116
44306
  for (var i = 0; i < rows.length; i++) {
44117
44307
  res = rows[i].hasErrors(fireCallback, rec, function () {
@@ -45087,10 +45277,10 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
45087
45277
  });
45088
45278
  Object.defineProperty(MatrixDropdownColumn.prototype, "width", {
45089
45279
  get: function () {
45090
- return this.getPropertyValue("width", "");
45280
+ return this.templateQuestion.width;
45091
45281
  },
45092
45282
  set: function (val) {
45093
- this.setPropertyValue("width", val);
45283
+ this.templateQuestion.width = val;
45094
45284
  },
45095
45285
  enumerable: false,
45096
45286
  configurable: true
@@ -48250,6 +48440,9 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
48250
48440
  QuestionMultipleTextModel.prototype.ensureRowsVisibility = function () {
48251
48441
  // do nothing
48252
48442
  };
48443
+ QuestionMultipleTextModel.prototype.validateContainerOnly = function () {
48444
+ // do nothing
48445
+ };
48253
48446
  QuestionMultipleTextModel.prototype.getItemLabelCss = function (item) {
48254
48447
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_7__["CssClassBuilder"]().append(this.cssClasses.itemLabel).append(this.cssClasses.itemLabelOnError, item.editor.errors.length > 0).toString();
48255
48448
  };
@@ -50124,12 +50317,11 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
50124
50317
  var res = this.changingValueQuestion.hasErrors(fireCallback, rec);
50125
50318
  res = this.hasKeysDuplicated(fireCallback, rec) || res;
50126
50319
  this.updatePanelsContainsErrors();
50127
- return res;
50128
50320
  }
50129
50321
  else {
50130
- var errosInPanels = this.hasErrorInPanels(fireCallback, rec);
50131
- return _super.prototype.hasErrors.call(this, fireCallback) || errosInPanels;
50322
+ res = this.hasErrorInPanels(fireCallback, rec);
50132
50323
  }
50324
+ return _super.prototype.hasErrors.call(this, fireCallback, rec) || res;
50133
50325
  };
50134
50326
  QuestionPanelDynamicModel.prototype.getContainsErrors = function () {
50135
50327
  var res = _super.prototype.getContainsErrors.call(this);
@@ -50414,7 +50606,6 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
50414
50606
  };
50415
50607
  QuestionPanelDynamicModel.prototype.recalculateIsReadyValue = function () {
50416
50608
  var _this = this;
50417
- var oldIsReady = this.isReadyValue;
50418
50609
  var isReady = true;
50419
50610
  this.panels.forEach(function (panel) {
50420
50611
  panel.questions.forEach(function (q) {
@@ -50427,14 +50618,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
50427
50618
  }
50428
50619
  });
50429
50620
  });
50430
- this.isReadyValue = isReady;
50431
- if (oldIsReady != this.isReadyValue) {
50432
- this.onReadyChanged.fire(this, {
50433
- question: this,
50434
- oldIsReady: oldIsReady,
50435
- isReady: this.isReadyValue
50436
- });
50437
- }
50621
+ this.isReady = isReady;
50438
50622
  };
50439
50623
  QuestionPanelDynamicModel.prototype.onSetData = function () {
50440
50624
  _super.prototype.onSetData.call(this);
@@ -51173,7 +51357,7 @@ var QuestionRankingModel = /** @class */ (function (_super) {
51173
51357
  var target = event.target;
51174
51358
  if (!_this.isDragStartNodeValid(target))
51175
51359
  return;
51176
- if (_this.allowStartDrag) {
51360
+ if (_this.allowStartDrag && _this.canStartDragDueMaxSelectedChoices(target)) {
51177
51361
  _this.dragDropRankingChoices.startDrag(event, choice, _this, node);
51178
51362
  }
51179
51363
  };
@@ -51447,6 +51631,22 @@ var QuestionRankingModel = /** @class */ (function (_super) {
51447
51631
  enumerable: false,
51448
51632
  configurable: true
51449
51633
  });
51634
+ QuestionRankingModel.prototype.canStartDragDueMaxSelectedChoices = function (target) {
51635
+ if (!this.selectToRankEnabled)
51636
+ return true;
51637
+ var fromContainer = target.closest("[data-ranking='from-container']");
51638
+ if (fromContainer) {
51639
+ return this.checkMaxSelectedChoicesUnreached();
51640
+ }
51641
+ return true;
51642
+ };
51643
+ QuestionRankingModel.prototype.checkMaxSelectedChoicesUnreached = function () {
51644
+ if (this.maxSelectedChoices < 1)
51645
+ return true;
51646
+ var val = this.value;
51647
+ var len = !Array.isArray(val) ? 0 : val.length;
51648
+ return len < this.maxSelectedChoices;
51649
+ };
51450
51650
  //cross framework initialization
51451
51651
  QuestionRankingModel.prototype.afterRenderQuestionElement = function (el) {
51452
51652
  this.domNode = el;
@@ -51476,14 +51676,14 @@ var QuestionRankingModel = /** @class */ (function (_super) {
51476
51676
  var isMovedElementUnRanked = !isMovedElementRanked;
51477
51677
  var fromIndex;
51478
51678
  var toIndex;
51479
- if (key === " " && isMovedElementUnRanked) {
51679
+ if ((key === " " || key === "Enter") && isMovedElementUnRanked) {
51480
51680
  fromIndex = unRankingChoices.indexOf(movedElement);
51481
51681
  toIndex = 0;
51482
51682
  dnd.selectToRank(this, fromIndex, toIndex);
51483
51683
  this.setValueAfterKeydown(toIndex, "to-container");
51484
51684
  return;
51485
51685
  }
51486
- if (key === " " && isMovedElementRanked) {
51686
+ if ((key === " " || key === "Enter") && isMovedElementRanked) {
51487
51687
  fromIndex = rankingChoices.indexOf(movedElement);
51488
51688
  dnd.unselectFromRank(this, fromIndex);
51489
51689
  toIndex = this.unRankingChoices.indexOf(movedElement); //'this.' leads to actual array after the 'unselectFromRank' method
@@ -51575,6 +51775,8 @@ var QuestionRankingModel = /** @class */ (function (_super) {
51575
51775
  * @see selectToRankAreasLayout
51576
51776
  */
51577
51777
  get: function () {
51778
+ if (_utils_devices__WEBPACK_IMPORTED_MODULE_7__["IsMobile"])
51779
+ return "vertical";
51578
51780
  return this.getPropertyValue("selectToRankAreasLayout", "horizontal");
51579
51781
  },
51580
51782
  set: function (val) {
@@ -51600,11 +51802,11 @@ var QuestionRankingModel = /** @class */ (function (_super) {
51600
51802
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_3__["property"])({ defaultValue: null })
51601
51803
  ], QuestionRankingModel.prototype, "dropTargetNodeMove", void 0);
51602
51804
  __decorate([
51603
- Object(_jsonobject__WEBPACK_IMPORTED_MODULE_3__["property"])({ localizable: { defaultStr: "selectToRankFromContainerPlaceholder" } })
51604
- ], QuestionRankingModel.prototype, "selectToRankFromContainerPlaceholder", void 0);
51805
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_3__["property"])({ localizable: { defaultStr: "selectToRankEmptyRankedAreaText" } })
51806
+ ], QuestionRankingModel.prototype, "selectToRankEmptyRankedAreaText", void 0);
51605
51807
  __decorate([
51606
- Object(_jsonobject__WEBPACK_IMPORTED_MODULE_3__["property"])({ localizable: { defaultStr: "selectToRankToContainerPlaceholder" } })
51607
- ], QuestionRankingModel.prototype, "selectToRankToContainerPlaceholder", void 0);
51808
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_3__["property"])({ localizable: { defaultStr: "selectToRankEmptyUnrankedAreaText" } })
51809
+ ], QuestionRankingModel.prototype, "selectToRankEmptyUnrankedAreaText", void 0);
51608
51810
  return QuestionRankingModel;
51609
51811
  }(_question_checkbox__WEBPACK_IMPORTED_MODULE_5__["QuestionCheckboxModel"]));
51610
51812
 
@@ -52750,6 +52952,10 @@ var QuestionSignaturePadModel = /** @class */ (function (_super) {
52750
52952
  function QuestionSignaturePadModel(name) {
52751
52953
  return _super.call(this, name) || this;
52752
52954
  }
52955
+ QuestionSignaturePadModel.prototype.getPenColorFromTheme = function () {
52956
+ var _survey = this.survey;
52957
+ return !!_survey && !!_survey.themeVariables && _survey.themeVariables["--sjs-primary-backcolor"];
52958
+ };
52753
52959
  QuestionSignaturePadModel.prototype.getCssRoot = function (cssClasses) {
52754
52960
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_4__["CssClassBuilder"]()
52755
52961
  .append(_super.prototype.getCssRoot.call(this, cssClasses))
@@ -52758,7 +52964,9 @@ var QuestionSignaturePadModel = /** @class */ (function (_super) {
52758
52964
  };
52759
52965
  QuestionSignaturePadModel.prototype.updateValue = function () {
52760
52966
  if (this.signaturePad) {
52761
- var data = this.signaturePad.toDataURL(this.dataFormat);
52967
+ var format = this.dataFormat === "jpeg" ? "image/jpeg" :
52968
+ (this.dataFormat === "svg" ? "image/svg+xml" : "");
52969
+ var data = this.signaturePad.toDataURL(format);
52762
52970
  this.value = data;
52763
52971
  }
52764
52972
  };
@@ -52832,6 +53040,25 @@ var QuestionSignaturePadModel = /** @class */ (function (_super) {
52832
53040
  this.readOnlyChangedCallback = null;
52833
53041
  this.signaturePad = null;
52834
53042
  };
53043
+ Object.defineProperty(QuestionSignaturePadModel.prototype, "dataFormat", {
53044
+ /**
53045
+ * Specifies the format in which to store the signature image.
53046
+ *
53047
+ * Possible values:
53048
+ *
53049
+ * - `"png"` (default)
53050
+ * - `"jpeg"`
53051
+ * - `"svg"`
53052
+ */
53053
+ get: function () {
53054
+ return this.getPropertyValue("dataFormat");
53055
+ },
53056
+ set: function (val) {
53057
+ this.setPropertyValue("dataFormat", correctFormatData(val));
53058
+ },
53059
+ enumerable: false,
53060
+ configurable: true
53061
+ });
52835
53062
  Object.defineProperty(QuestionSignaturePadModel.prototype, "signatureWidth", {
52836
53063
  /**
52837
53064
  * Specifies the width of the signature area. Accepts positive integer numbers.
@@ -52897,7 +53124,7 @@ var QuestionSignaturePadModel = /** @class */ (function (_super) {
52897
53124
  * @see backgroundColor
52898
53125
  */
52899
53126
  get: function () {
52900
- return this.getPropertyValue("penColor");
53127
+ return this.getPropertyValue("penColor", this.getPenColorFromTheme());
52901
53128
  },
52902
53129
  set: function (val) {
52903
53130
  this.setPropertyValue("penColor", val);
@@ -52955,12 +53182,17 @@ var QuestionSignaturePadModel = /** @class */ (function (_super) {
52955
53182
  __decorate([
52956
53183
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: false })
52957
53184
  ], QuestionSignaturePadModel.prototype, "isDrawingValue", void 0);
52958
- __decorate([
52959
- Object(_jsonobject__WEBPACK_IMPORTED_MODULE_0__["property"])({ defaultValue: "" })
52960
- ], QuestionSignaturePadModel.prototype, "dataFormat", void 0);
52961
53185
  return QuestionSignaturePadModel;
52962
53186
  }(_question__WEBPACK_IMPORTED_MODULE_2__["Question"]));
52963
53187
 
53188
+ function correctFormatData(val) {
53189
+ if (!val)
53190
+ val = "png";
53191
+ val = val.replace("image/", "").replace("+xml", "");
53192
+ if (val !== "jpeg" && val !== "svg")
53193
+ val = "png";
53194
+ return val;
53195
+ }
52964
53196
  _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("signaturepad", [
52965
53197
  {
52966
53198
  name: "signatureWidth:number",
@@ -52996,12 +53228,15 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("signaturepad",
52996
53228
  {
52997
53229
  name: "dataFormat",
52998
53230
  category: "general",
52999
- default: "",
53231
+ default: "png",
53000
53232
  choices: [
53001
- { value: "", text: "PNG" },
53233
+ { value: "png", text: "PNG" },
53002
53234
  { value: "image/jpeg", text: "JPEG" },
53003
53235
  { value: "image/svg+xml", text: "SVG" },
53004
53236
  ],
53237
+ onSettingValue: function (obj, val) {
53238
+ return correctFormatData(val);
53239
+ }
53005
53240
  },
53006
53241
  { name: "defaultValue", visible: false },
53007
53242
  { name: "correctAnswer", visible: false },
@@ -57452,7 +57687,9 @@ var SurveyQuestionDropdownBase = /** @class */ (function (_super) {
57452
57687
  this.renderInput(this.question["dropdownListModel"]),
57453
57688
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_components_popup_popup__WEBPACK_IMPORTED_MODULE_2__["Popup"], { model: (_b = (_a = this.question) === null || _a === void 0 ? void 0 : _a.dropdownListModel) === null || _b === void 0 ? void 0 : _b.popupModel }));
57454
57689
  }
57455
- return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: cssClasses.selectWrapper }, selectElement));
57690
+ return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: cssClasses.selectWrapper, onClick: this.click },
57691
+ selectElement,
57692
+ this.createChevronButton()));
57456
57693
  };
57457
57694
  SurveyQuestionDropdownBase.prototype.renderValueElement = function (dropdownListModel) {
57458
57695
  if (this.question.showInputFieldComponent) {
@@ -57472,7 +57709,7 @@ var SurveyQuestionDropdownBase = /** @class */ (function (_super) {
57472
57709
  dropdownListModel.inputStringRendered = e.target.value;
57473
57710
  }
57474
57711
  };
57475
- return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { id: this.question.inputId, className: this.question.getControlClass(), tabIndex: dropdownListModel.inputReadOnly ? undefined : 0, onClick: this.click,
57712
+ return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { id: this.question.inputId, className: this.question.getControlClass(), tabIndex: dropdownListModel.inputReadOnly ? undefined : 0,
57476
57713
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
57477
57714
  // @ts-ignore
57478
57715
  disabled: this.question.isInputReadOnly, required: this.question.isRequired, onKeyDown: this.keyhandler, onBlur: this.blur, role: this.question.ariaRole, "aria-required": this.question.ariaRequired, "aria-label": this.question.ariaLabel, "aria-invalid": this.question.ariaInvalid, "aria-describedby": this.question.ariaDescribedBy, "aria-expanded": this.question.ariaExpanded === null ? undefined : this.question.ariaExpanded === "true", "aria-controls": dropdownListModel.listElementId, "aria-activedescendant": dropdownListModel.ariaActivedescendant },
@@ -57495,6 +57732,12 @@ var SurveyQuestionDropdownBase = /** @class */ (function (_super) {
57495
57732
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.cleanButton, style: style, onClick: this.clear },
57496
57733
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_components_svg_icon_svg_icon__WEBPACK_IMPORTED_MODULE_3__["SvgIcon"], { className: this.question.cssClasses.cleanButtonSvg, iconName: this.question.cssClasses.cleanButtonIconId, title: this.question.clearCaption, size: "auto" })));
57497
57734
  };
57735
+ SurveyQuestionDropdownBase.prototype.createChevronButton = function () {
57736
+ if (!this.question.cssClasses.chevronButtonIconId)
57737
+ return null;
57738
+ return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.chevronButton },
57739
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_components_svg_icon_svg_icon__WEBPACK_IMPORTED_MODULE_3__["SvgIcon"], { className: this.question.cssClasses.chevronButtonSvg, iconName: this.question.cssClasses.chevronButtonIconId, size: 24 })));
57740
+ };
57498
57741
  SurveyQuestionDropdownBase.prototype.renderOther = function (cssClasses) {
57499
57742
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.getCommentAreaCss(true) },
57500
57743
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_reactquestion_comment__WEBPACK_IMPORTED_MODULE_5__["SurveyQuestionOtherValueItem"], { question: this.question, otherCss: cssClasses.other, cssClasses: cssClasses, isDisplayMode: this.isDisplayMode, isOther: true })));
@@ -57658,7 +57901,9 @@ var SurveyQuestionDropdownSelect = /** @class */ (function (_super) {
57658
57901
  (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("select", { id: this.question.inputId, className: this.question.getControlClass(), ref: function (select) { return (_this.setControl(select)); }, autoComplete: this.question.autocomplete, onChange: this.updateValueOnEvent, onInput: this.updateValueOnEvent, onClick: click, onKeyUp: keyup, "aria-required": this.question.ariaRequired, "aria-label": this.question.ariaLabel, "aria-invalid": this.question.ariaInvalid, "aria-describedby": this.question.ariaDescribedBy, required: this.question.isRequired },
57659
57902
  this.question.allowClear ? (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("option", { value: "" }, this.question.placeholder)) : null,
57660
57903
  this.question.visibleChoices.map(function (item, i) { return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_dropdown_item__WEBPACK_IMPORTED_MODULE_4__["SurveyQuestionOptionItem"], { key: "item" + i, item: item }); })));
57661
- return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: cssClasses.selectWrapper }, selectElement));
57904
+ return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: cssClasses.selectWrapper },
57905
+ selectElement,
57906
+ this.createChevronButton()));
57662
57907
  };
57663
57908
  return SurveyQuestionDropdownSelect;
57664
57909
  }(_reactquestion_dropdown__WEBPACK_IMPORTED_MODULE_3__["SurveyQuestionDropdown"]));
@@ -58730,7 +58975,8 @@ var PopupSurvey = /** @class */ (function (_super) {
58730
58975
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { className: this.popup.cssHeaderTitle, style: styleTitle }, "X"))) : null));
58731
58976
  };
58732
58977
  PopupSurvey.prototype.renderBody = function () {
58733
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.popup.cssBody }, this.doRender());
58978
+ var _this = this;
58979
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.popup.cssBody, onScroll: function () { return _this.popup.onScroll(); } }, this.doRender());
58734
58980
  };
58735
58981
  PopupSurvey.prototype.createSurvey = function (newProps) {
58736
58982
  if (!newProps)
@@ -58906,6 +59152,7 @@ var Survey = /** @class */ (function (_super) {
58906
59152
  else {
58907
59153
  renderResult = this.renderSurvey();
58908
59154
  }
59155
+ var backgroundImage = !!this.survey.renderBackgroundImage ? react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.css.rootBackgroundImage, style: this.survey.backgroundImageStyle }) : null;
58909
59156
  var header = react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_components_survey_header_survey_header__WEBPACK_IMPORTED_MODULE_5__["SurveyHeader"], { survey: this.survey });
58910
59157
  var onSubmit = function (event) {
58911
59158
  event.preventDefault();
@@ -58916,11 +59163,9 @@ var Survey = /** @class */ (function (_super) {
58916
59163
  }
58917
59164
  var rootCss = this.survey.getRootCss();
58918
59165
  var cssClasses = this.rootNodeClassName ? this.rootNodeClassName + " " + rootCss : rootCss;
58919
- var formStyle = {
58920
- backgroundColor: this.survey.renderBackgroundOpacity
58921
- };
58922
59166
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { id: this.rootNodeId, ref: this.rootRef, className: cssClasses, style: this.survey.themeVariables },
58923
- react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("form", { onSubmit: onSubmit, style: formStyle },
59167
+ backgroundImage,
59168
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("form", { onSubmit: onSubmit },
58924
59169
  customHeader,
58925
59170
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.css.container },
58926
59171
  header,
@@ -59395,6 +59640,8 @@ __webpack_require__.r(__webpack_exports__);
59395
59640
  /* harmony import */ var _reactSurveyNavigationBase__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reactSurveyNavigationBase */ "./src/react/reactSurveyNavigationBase.tsx");
59396
59641
  /* harmony import */ var _element_factory__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./element-factory */ "./src/react/element-factory.tsx");
59397
59642
  /* harmony import */ var _components_list_list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/list/list */ "./src/react/components/list/list.tsx");
59643
+ /* harmony import */ var _components_popup_popup__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/popup/popup */ "./src/react/components/popup/popup.tsx");
59644
+ /* harmony import */ var _components_svg_icon_svg_icon__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/svg-icon/svg-icon */ "./src/react/components/svg-icon/svg-icon.tsx");
59398
59645
  var __extends = (undefined && undefined.__extends) || (function () {
59399
59646
  var extendStatics = function (d, b) {
59400
59647
  extendStatics = Object.setPrototypeOf ||
@@ -59415,16 +59662,25 @@ var __extends = (undefined && undefined.__extends) || (function () {
59415
59662
 
59416
59663
 
59417
59664
 
59665
+
59666
+
59418
59667
  var SurveyProgressToc = /** @class */ (function (_super) {
59419
59668
  __extends(SurveyProgressToc, _super);
59420
59669
  function SurveyProgressToc() {
59421
59670
  return _super !== null && _super.apply(this, arguments) || this;
59422
59671
  }
59423
59672
  SurveyProgressToc.prototype.render = function () {
59424
- var listModel = Object(survey_core__WEBPACK_IMPORTED_MODULE_1__["createTOCListModel"])(this.props.model);
59425
- var rootCss = Object(survey_core__WEBPACK_IMPORTED_MODULE_1__["getTocRootCss"])(this.props.model);
59426
- return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: rootCss },
59427
- react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_components_list_list__WEBPACK_IMPORTED_MODULE_4__["List"], { model: listModel })));
59673
+ var tocModel = new survey_core__WEBPACK_IMPORTED_MODULE_1__["TOCModel"](this.props.model);
59674
+ var content;
59675
+ if (tocModel.isMobile) {
59676
+ content = react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { onClick: tocModel.togglePopup },
59677
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_components_svg_icon_svg_icon__WEBPACK_IMPORTED_MODULE_6__["SvgIcon"], { iconName: tocModel.icon, size: 24 }),
59678
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_components_popup_popup__WEBPACK_IMPORTED_MODULE_5__["Popup"], { model: tocModel.popupModel }));
59679
+ }
59680
+ else {
59681
+ content = react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_components_list_list__WEBPACK_IMPORTED_MODULE_4__["List"], { model: tocModel.listModel });
59682
+ }
59683
+ return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: tocModel.containerCss }, content));
59428
59684
  };
59429
59685
  return SurveyProgressToc;
59430
59686
  }(_reactSurveyNavigationBase__WEBPACK_IMPORTED_MODULE_2__["SurveyNavigationBase"]));
@@ -61100,7 +61356,7 @@ var SurveyQuestionFile = /** @class */ (function (_super) {
61100
61356
  fileInput = (this.isDisplayMode ?
61101
61357
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("input", { type: "file", disabled: this.isDisplayMode, className: !this.isDisplayMode ? this.question.cssClasses.fileInput : this.question.getReadOnlyFileCss(), id: this.question.inputId, ref: function (input) { return (_this.setControl(input)); }, style: !this.isDisplayMode ? {} : { color: "transparent" }, onChange: !this.isDisplayMode ? this.question.doChange : (function () { }), multiple: this.question.allowMultiple, placeholder: this.question.title, accept: this.question.acceptedTypes })
61102
61358
  :
61103
- react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("input", { type: "file", disabled: this.isDisplayMode, tabIndex: -1, className: !this.isDisplayMode ? this.question.cssClasses.fileInput : this.question.getReadOnlyFileCss(), id: this.question.inputId, ref: function (input) { return (_this.setControl(input)); }, style: !this.isDisplayMode ? {} : { color: "transparent" }, onChange: !this.isDisplayMode ? this.question.doChange : (function () { }), "aria-required": this.question.ariaRequired, "aria-label": this.question.ariaLabel, "aria-invalid": this.question.ariaInvalid, "aria-describedby": this.question.ariaDescribedBy, multiple: this.question.allowMultiple, title: this.question.inputTitle, accept: this.question.acceptedTypes }));
61359
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("input", { type: "file", disabled: this.isDisplayMode, tabIndex: -1, className: !this.isDisplayMode ? this.question.cssClasses.fileInput : this.question.getReadOnlyFileCss(), id: this.question.inputId, ref: function (input) { return (_this.setControl(input)); }, style: !this.isDisplayMode ? {} : { color: "transparent" }, onChange: !this.isDisplayMode ? this.question.doChange : (function () { }), "aria-required": this.question.ariaRequired, "aria-label": this.question.ariaLabel, "aria-invalid": this.question.ariaInvalid, "aria-describedby": this.question.ariaDescribedBy, multiple: this.question.allowMultiple, title: this.question.inputTitle, accept: this.question.acceptedTypes, capture: this.question.renderCapture }));
61104
61360
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.fileRootCss },
61105
61361
  fileInput,
61106
61362
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.dragArea, onDrop: this.question.onDrop, onDragOver: this.question.onDragOver, onDragLeave: this.question.onDragLeave, onDragEnter: this.question.onDragEnter },
@@ -62669,12 +62925,12 @@ var SurveyQuestionRanking = /** @class */ (function (_super) {
62669
62925
  this.getItems(this.question.unRankingChoices, unrankedItem),
62670
62926
  this.question.unRankingChoices.length === 0 ? react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.containerPlaceholder },
62671
62927
  " ",
62672
- this.question.selectToRankFromContainerPlaceholder,
62928
+ this.question.selectToRankEmptyRankedAreaText,
62673
62929
  " ") : null),
62674
62930
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.containersDivider }),
62675
62931
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.getContainerClasses("to"), "data-ranking": "to-container" },
62676
62932
  this.getItems(),
62677
- this.question.rankingChoices.length === 0 ? react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.containerPlaceholder }, this.question.selectToRankToContainerPlaceholder) : null)));
62933
+ this.question.rankingChoices.length === 0 ? react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.containerPlaceholder }, this.question.selectToRankEmptyUnrankedAreaText) : null)));
62678
62934
  }
62679
62935
  };
62680
62936
  SurveyQuestionRanking.prototype.getItems = function (choices, unrankedItem) {
@@ -62958,7 +63214,7 @@ var SurveyQuestionTagbox = /** @class */ (function (_super) {
62958
63214
  var _this = this;
62959
63215
  var dropdownMultiSelectListModel = dropdownListModel;
62960
63216
  var items = this.question.selectedChoices.map(function (choice, index) { return _this.renderItem("item" + index, choice); });
62961
- return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { id: this.question.inputId, className: this.question.getControlClass(), tabIndex: dropdownListModel.inputReadOnly ? undefined : 0, onClick: this.click,
63217
+ return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { id: this.question.inputId, className: this.question.getControlClass(), tabIndex: dropdownListModel.inputReadOnly ? undefined : 0,
62962
63218
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
62963
63219
  // @ts-ignore
62964
63220
  disabled: this.question.isInputReadOnly, required: this.question.isRequired, onKeyDown: this.keyhandler, onBlur: this.blur, role: this.question.ariaRole, "aria-required": this.question.ariaRequired, "aria-label": this.question.ariaLabel, "aria-invalid": this.question.ariaInvalid, "aria-describedby": this.question.ariaDescribedBy, "aria-expanded": this.question.ariaExpanded === null ? undefined : this.question.ariaExpanded === "true", "aria-controls": dropdownListModel.listElementId, "aria-activedescendant": dropdownListModel.ariaActivedescendant },
@@ -66378,11 +66634,11 @@ var SurveyModel = /** @class */ (function (_super) {
66378
66634
  _this.variablesHash = {};
66379
66635
  //#region Event declarations
66380
66636
  /**
66381
- * An event that is raised after a trigger is executed.
66637
+ * An event that is raised after a [trigger](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#triggers) is executed.
66382
66638
  *
66383
66639
  * For information on event handler parameters, refer to descriptions within the interface.
66384
66640
  *
66385
- * For more information about triggers, refer to the following help topic: [Conditional Survey Logic (Triggers)](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#conditional-survey-logic-triggers).
66641
+ * [Conditional Survey Logic (Triggers)](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#conditional-survey-logic-triggers (linkStyle)).
66386
66642
  * @see triggers
66387
66643
  * @see runTriggers
66388
66644
  */
@@ -66426,11 +66682,11 @@ var SurveyModel = /** @class */ (function (_super) {
66426
66682
  */
66427
66683
  _this.onStarted = _this.addEvent();
66428
66684
  /**
66429
- * Use this event to save incomplete survey results. Enable the [`sendResultOnPageNext`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#sendResultOnPageNext) property for this event to occur.
66685
+ * An event that is raised to save incomplete survey results. Enable the [`sendResultOnPageNext`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#sendResultOnPageNext) property for this event to occur.
66430
66686
  *
66431
66687
  * For information on event handler parameters, refer to descriptions within the interface.
66432
66688
  *
66433
- * Refer to the following help topic for more information on the use case: [Continue an Incomplete Survey](https://surveyjs.io/form-library/documentation/handle-survey-results-continue-incomplete).
66689
+ * [Continue an Incomplete Survey](https://surveyjs.io/form-library/documentation/handle-survey-results-continue-incomplete (linkStyle)).
66434
66690
  */
66435
66691
  _this.onPartialSend = _this.addEvent();
66436
66692
  /**
@@ -66656,11 +66912,11 @@ var SurveyModel = /** @class */ (function (_super) {
66656
66912
  */
66657
66913
  _this.onTextRenderAs = _this.addEvent();
66658
66914
  /**
66659
- * The event fires when it gets response from the [api.surveyjs.io](https://api.surveyjs.io) service on saving survey results. Use it to find out if the results have been saved successfully.
66915
+ * An event that is raised after a request to save survey results on [SurveyJS Service](https://api.surveyjs.io/) has been completed. Use this event to find out if the results have been saved successfully.
66660
66916
  */
66661
66917
  _this.onSendResult = _this.addEvent();
66662
66918
  /**
66663
- * Use it to get results after calling the `getResult` method. It returns a simple analytics from [api.surveyjs.io](https://api.surveyjs.io) service.
66919
+ * An event that is raised when the [`getResult(resultId, questionName)`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#getResult) method is called. Use this event to obtain answers to an individual question from [SurveyJS Service](https://api.surveyjs.io/).
66664
66920
  * @see getResult
66665
66921
  */
66666
66922
  _this.onGetResult = _this.addEvent();
@@ -66949,25 +67205,23 @@ var SurveyModel = /** @class */ (function (_super) {
66949
67205
  _this.onScrollingElementToTop = _this.addEvent();
66950
67206
  _this.onLocaleChangedEvent = _this.addEvent();
66951
67207
  /**
66952
- * Use this event to create/customize actions to be displayed in a question's title.
67208
+ * An event that allows you to add, delete, or modify actions in a question title.
66953
67209
  *
66954
67210
  * For information on event handler parameters, refer to descriptions within the interface.
66955
67211
  *
66956
67212
  * [View Demo](https://surveyjs.io/form-library/examples/survey-titleactions/ (linkStyle))
66957
- * @see IAction
66958
- * @see Question
66959
67213
  */
66960
67214
  _this.onGetQuestionTitleActions = _this.addEvent();
66961
67215
  /**
66962
- * Use this event to create/customize actions to be displayed in a panel's title.
66963
- * @see IAction
66964
- * @see PanelModel
67216
+ * An event that allows you to add, delete, or modify actions in a panel title.
66965
67217
  */
66966
67218
  _this.onGetPanelTitleActions = _this.addEvent();
66967
67219
  /**
66968
- * Use this event to create/customize actions to be displayed in a page's title.
66969
- * @see IAction
66970
- * @see PageModel
67220
+ * An event that allows you to add, delete, or modify actions in a page title.
67221
+ *
67222
+ * For information on event handler parameters, refer to descriptions within the interface.
67223
+ *
67224
+ * [View Demo](https://surveyjs.io/form-library/examples/modify-titles-of-survey-elements/ (linkStyle))
66971
67225
  */
66972
67226
  _this.onGetPageTitleActions = _this.addEvent();
66973
67227
  /**
@@ -66992,6 +67246,10 @@ var SurveyModel = /** @class */ (function (_super) {
66992
67246
  * An event that is raised before expression question convert it's value into display value for rendering.
66993
67247
  */
66994
67248
  _this.onGetExpressionDisplayValue = _this.addEvent();
67249
+ /**
67250
+ * An event that is raised after the visibility of a popup is changed. This event can be raised for [Single-](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model) and [Multi-Select Dropdown](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model) questions and [Rating](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model) questions [rendered as drop-down menus](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model#displayMode).
67251
+ */
67252
+ _this.onPopupVisibleChanged = _this.addEvent();
66995
67253
  /**
66996
67254
  * The list of errors on loading survey JSON. If the list is empty after loading a JSON, then the JSON is correct and has no errors.
66997
67255
  * @see JsonError
@@ -67239,6 +67497,9 @@ var SurveyModel = /** @class */ (function (_super) {
67239
67497
  enumerable: false,
67240
67498
  configurable: true
67241
67499
  });
67500
+ SurveyModel.prototype.processClosedPopup = function (question, popupModel) {
67501
+ throw new Error("Method not implemented.");
67502
+ };
67242
67503
  SurveyModel.prototype.createTryAgainAction = function () {
67243
67504
  var _this = this;
67244
67505
  return {
@@ -67467,8 +67728,11 @@ var SurveyModel = /** @class */ (function (_super) {
67467
67728
  };
67468
67729
  Object.defineProperty(SurveyModel.prototype, "triggers", {
67469
67730
  /**
67470
- * Gets or sets a list of triggers in the survey.
67471
- * @see SurveyTrigger
67731
+ * A list of triggers in the survey.
67732
+ *
67733
+ * [Conditional Survey Logic (Triggers)](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#conditional-survey-logic-triggers (linkStyle))
67734
+ * @see runTriggers
67735
+ * @see onTriggerExecuted
67472
67736
  */
67473
67737
  get: function () {
67474
67738
  return this.getPropertyValue("triggers");
@@ -67494,7 +67758,7 @@ var SurveyModel = /** @class */ (function (_super) {
67494
67758
  });
67495
67759
  Object.defineProperty(SurveyModel.prototype, "surveyId", {
67496
67760
  /**
67497
- * The identifier of a survey JSON schema to load from the [SurveyJS Service](https://api.surveyjs.io).
67761
+ * The identifier of a survey JSON schema to load from [SurveyJS Service](https://api.surveyjs.io).
67498
67762
  *
67499
67763
  * Refer to the following help topic for more information: [Store Survey Results in the SurveyJS Service](https://surveyjs.io/form-library/documentation/handle-survey-results-store#store-survey-results-in-the-surveyjs-service).
67500
67764
  * @see loadSurveyFromService
@@ -67511,7 +67775,7 @@ var SurveyModel = /** @class */ (function (_super) {
67511
67775
  });
67512
67776
  Object.defineProperty(SurveyModel.prototype, "surveyPostId", {
67513
67777
  /**
67514
- * An identifier used to save survey results to the [SurveyJS Service](https://api.surveyjs.io).
67778
+ * An identifier used to save survey results to [SurveyJS Service](https://api.surveyjs.io).
67515
67779
  *
67516
67780
  * Refer to the following help topic for more information: [Store Survey Results in the SurveyJS Service](https://surveyjs.io/form-library/documentation/handle-survey-results-store#store-survey-results-in-the-surveyjs-service).
67517
67781
  * @see onComplete
@@ -67530,7 +67794,7 @@ var SurveyModel = /** @class */ (function (_super) {
67530
67794
  /**
67531
67795
  * A user identifier (e-mail or other unique ID).
67532
67796
  *
67533
- * If your application works with the [SurveyJS Service](https://api.surveyjs.io), the ID ensures that users do not pass the same survey twice. On the second run, they will see the [Completed Before page](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#completedBeforeHtml).
67797
+ * If your application works with [SurveyJS Service](https://api.surveyjs.io), the ID ensures that users do not pass the same survey twice. On the second run, they will see the [Completed Before page](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#completedBeforeHtml).
67534
67798
  * @see cookieName
67535
67799
  */
67536
67800
  get: function () {
@@ -67560,9 +67824,9 @@ var SurveyModel = /** @class */ (function (_super) {
67560
67824
  });
67561
67825
  Object.defineProperty(SurveyModel.prototype, "sendResultOnPageNext", {
67562
67826
  /**
67563
- * Specifies whether to save survey results when respondents swtich between pages. Handle the [`onPartialSend`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onPartialSend) event to implement the save operation.
67827
+ * 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.
67564
67828
  *
67565
- * Refer to the following help topic for more information on the use case: [Continue an Incomplete Survey](https://surveyjs.io/form-library/documentation/handle-survey-results-continue-incomplete).
67829
+ * [Continue an Incomplete Survey](https://surveyjs.io/form-library/documentation/handle-survey-results-continue-incomplete (linkStyle)).
67566
67830
  */
67567
67831
  get: function () {
67568
67832
  return this.getPropertyValue("sendResultOnPageNext");
@@ -68098,8 +68362,13 @@ var SurveyModel = /** @class */ (function (_super) {
68098
68362
  });
68099
68363
  Object.defineProperty(SurveyModel.prototype, "locale", {
68100
68364
  /**
68101
- * Gets or sets the survey locale. The default value it is empty, this means the 'en' locale is used.
68102
- * You can set it to 'de' - German, 'fr' - French and so on. The library has built-in localization for several languages. The library has a multi-language support as well.
68365
+ * Specifies the survey's locale.
68366
+ *
68367
+ * Default value: `""` (a default locale is used)
68368
+ *
68369
+ * [Localization & Globalization help topic](https://surveyjs.io/form-library/documentation/survey-localization (linkStyle))
68370
+ *
68371
+ * [Survey Localization demo](https://surveyjs.io/form-library/examples/survey-localization/ (linkStyle))
68103
68372
  */
68104
68373
  get: function () {
68105
68374
  return this.getPropertyValue("locale", _surveyStrings__WEBPACK_IMPORTED_MODULE_8__["surveyLocalization"].currentLocale);
@@ -68119,7 +68388,11 @@ var SurveyModel = /** @class */ (function (_super) {
68119
68388
  this.onLocaleChangedEvent.fire(this, this.locale);
68120
68389
  };
68121
68390
  /**
68122
- * Returns an array of locales that are used in the survey's translation.
68391
+ * Returns an array of locales whose translations are used in the survey.
68392
+ *
68393
+ * [Localization & Globalization help topic](https://surveyjs.io/form-library/documentation/survey-localization (linkStyle))
68394
+ *
68395
+ * [Survey Localization demo](https://surveyjs.io/form-library/examples/survey-localization/ (linkStyle))
68123
68396
  */
68124
68397
  SurveyModel.prototype.getUsedLocales = function () {
68125
68398
  var locs = new Array();
@@ -68436,10 +68709,7 @@ var SurveyModel = /** @class */ (function (_super) {
68436
68709
  });
68437
68710
  Object.defineProperty(SurveyModel.prototype, "themeVariables", {
68438
68711
  get: function () {
68439
- var result = Object.assign({}, this.cssVariables);
68440
- result.backgroundImage = this.renderBackgroundImage;
68441
- result.backgroundSize = this.backgroundImageFit;
68442
- return result;
68712
+ return Object.assign({}, this.cssVariables);
68443
68713
  },
68444
68714
  enumerable: false,
68445
68715
  configurable: true
@@ -68512,12 +68782,12 @@ var SurveyModel = /** @class */ (function (_super) {
68512
68782
  configurable: true
68513
68783
  });
68514
68784
  SurveyModel.prototype.updateRenderBackgroundImage = function () {
68515
- this.renderBackgroundImage = ["url(", this.getLocalizableString("backgroundImage").renderedHtml, ")"].join("");
68785
+ var path = this.getLocalizableString("backgroundImage").renderedHtml;
68786
+ this.renderBackgroundImage = !!path ? ["url(", path, ")"].join("") : "";
68516
68787
  };
68517
68788
  Object.defineProperty(SurveyModel.prototype, "backgroundOpacity", {
68518
68789
  /**
68519
- * A value from 0 to 1 that specifies how transparent the survey background should be: 0 makes the background completely transparent, and 1 makes it opaque.
68520
- * @see backgroundImage
68790
+ * A value from 0 to 1 that specifies how transparent the [background image](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#backgroundImage) should be: 0 makes the image completely transparent, and 1 makes it opaque.
68521
68791
  */
68522
68792
  get: function () {
68523
68793
  return this.getPropertyValue("backgroundOpacity");
@@ -68528,14 +68798,14 @@ var SurveyModel = /** @class */ (function (_super) {
68528
68798
  enumerable: false,
68529
68799
  configurable: true
68530
68800
  });
68531
- Object.defineProperty(SurveyModel.prototype, "renderBackgroundOpacity", {
68801
+ Object.defineProperty(SurveyModel.prototype, "backgroundImageStyle", {
68532
68802
  get: function () {
68533
- var backgroundOpacityProperty = this.getPropertyByName("backgroundOpacity");
68534
- if (backgroundOpacityProperty.isDefaultValue(this.backgroundOpacity)) {
68535
- return "";
68536
- }
68537
- var alpha = 1 - this.backgroundOpacity;
68538
- return ["rgba(255, 255, 255, ", alpha, ")"].join("");
68803
+ return {
68804
+ opacity: this.backgroundOpacity,
68805
+ backgroundImage: this.renderBackgroundImage,
68806
+ backgroundSize: this.backgroundImageFit,
68807
+ backgroundAttachment: this.backgroundImageAttachment
68808
+ };
68539
68809
  },
68540
68810
  enumerable: false,
68541
68811
  configurable: true
@@ -68604,7 +68874,10 @@ var SurveyModel = /** @class */ (function (_super) {
68604
68874
  return new _conditions__WEBPACK_IMPORTED_MODULE_13__["ConditionRunner"](expression).run(values, properties);
68605
68875
  };
68606
68876
  /**
68607
- * Run all triggers that performs on value changed and not on moving to the next page.
68877
+ * Executes [all triggers](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#triggers), except ["complete"](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#complete).
68878
+ *
68879
+ * [Conditional Survey Logic (Triggers)](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#conditional-survey-logic-triggers (linkStyle))
68880
+ * @see onTriggerExecuted
68608
68881
  */
68609
68882
  SurveyModel.prototype.runTriggers = function () {
68610
68883
  this.checkTriggers(this.getFilteredValues(), false);
@@ -68654,7 +68927,7 @@ var SurveyModel = /** @class */ (function (_super) {
68654
68927
  });
68655
68928
  Object.defineProperty(SurveyModel.prototype, "loadingHtml", {
68656
68929
  /**
68657
- * HTML content displayed while a survey JSON schema is being loaded from the [SurveyJS Service](https://api.surveyjs.io).
68930
+ * HTML content displayed while a survey JSON schema is being loaded from [SurveyJS Service](https://api.surveyjs.io).
68658
68931
  * @see surveyId
68659
68932
  * @see processedLoadingHtml
68660
68933
  */
@@ -70195,7 +70468,19 @@ var SurveyModel = /** @class */ (function (_super) {
70195
70468
  Object.defineProperty(SurveyModel.prototype, "areEmptyElementsHidden", {
70196
70469
  get: function () {
70197
70470
  return (this.isShowingPreview &&
70198
- this.showPreviewBeforeComplete == "showAnsweredQuestions");
70471
+ this.showPreviewBeforeComplete == "showAnsweredQuestions" && this.isAnyQuestionAnswered);
70472
+ },
70473
+ enumerable: false,
70474
+ configurable: true
70475
+ });
70476
+ Object.defineProperty(SurveyModel.prototype, "isAnyQuestionAnswered", {
70477
+ get: function () {
70478
+ var questions = this.getAllQuestions(true);
70479
+ for (var i = 0; i < questions.length; i++) {
70480
+ if (!questions[i].isEmpty())
70481
+ return true;
70482
+ }
70483
+ return false;
70199
70484
  },
70200
70485
  enumerable: false,
70201
70486
  configurable: true
@@ -70981,7 +71266,7 @@ var SurveyModel = /** @class */ (function (_super) {
70981
71266
  * 1. Switches the survey [`state`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#state) to `"completed"`.
70982
71267
  * 1. Raises the [`onComplete`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onComplete) event.
70983
71268
  * 1. Navigates the user to a URL specified by the [`navigateToUrl`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#navigateToUrl) or [`navigateToUrlOnCondition`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#navigateToUrlOnCondition) property.
70984
- * 1. Calls the [`sendResult()`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#sendResult) method if Form Library works with the [SurveyJS Service](https://api.surveyjs.io/).
71269
+ * 1. Calls the [`sendResult()`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#sendResult) method if Form Library works with [SurveyJS Service](https://api.surveyjs.io/).
70985
71270
  *
70986
71271
  * The `doComplete()` method completes the survey regardless of validation errors and the current page. If you need to ensure that survey results are valid and full, call the [`completeLastPage()`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#completeLastPage) method instead.
70987
71272
  *
@@ -70989,11 +71274,11 @@ var SurveyModel = /** @class */ (function (_super) {
70989
71274
  * @returns `false` if survey completion is cancelled within the [`onCompleting`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onCompleting) event handler; otherwise, `true`.
70990
71275
  * @see surveyPostId
70991
71276
  */
70992
- SurveyModel.prototype.doComplete = function (isCompleteOnTrigger) {
71277
+ SurveyModel.prototype.doComplete = function (isCompleteOnTrigger, completeTrigger) {
70993
71278
  if (isCompleteOnTrigger === void 0) { isCompleteOnTrigger = false; }
70994
71279
  if (this.isCompleted)
70995
71280
  return;
70996
- if (!this.checkOnCompletingEvent(isCompleteOnTrigger)) {
71281
+ if (!this.checkOnCompletingEvent(isCompleteOnTrigger, completeTrigger)) {
70997
71282
  this.isCompleted = false;
70998
71283
  return false;
70999
71284
  }
@@ -71001,11 +71286,11 @@ var SurveyModel = /** @class */ (function (_super) {
71001
71286
  this.stopTimer();
71002
71287
  this.isCompleted = true;
71003
71288
  this.clearUnusedValues();
71004
- this.saveDataOnComplete(isCompleteOnTrigger);
71289
+ this.saveDataOnComplete(isCompleteOnTrigger, completeTrigger);
71005
71290
  this.setCookie();
71006
71291
  return true;
71007
71292
  };
71008
- SurveyModel.prototype.saveDataOnComplete = function (isCompleteOnTrigger) {
71293
+ SurveyModel.prototype.saveDataOnComplete = function (isCompleteOnTrigger, completeTrigger) {
71009
71294
  var _this = this;
71010
71295
  if (isCompleteOnTrigger === void 0) { isCompleteOnTrigger = false; }
71011
71296
  var previousCookie = this.hasCookie;
@@ -71026,6 +71311,7 @@ var SurveyModel = /** @class */ (function (_super) {
71026
71311
  var savingDataStarted = false;
71027
71312
  var onCompleteOptions = {
71028
71313
  isCompleteOnTrigger: isCompleteOnTrigger,
71314
+ completeTrigger: completeTrigger,
71029
71315
  showSaveInProgress: showSaveInProgress,
71030
71316
  showSaveError: showSaveError,
71031
71317
  showSaveSuccess: showSaveSuccess,
@@ -71044,11 +71330,12 @@ var SurveyModel = /** @class */ (function (_super) {
71044
71330
  this.navigateTo();
71045
71331
  }
71046
71332
  };
71047
- SurveyModel.prototype.checkOnCompletingEvent = function (isCompleteOnTrigger) {
71333
+ SurveyModel.prototype.checkOnCompletingEvent = function (isCompleteOnTrigger, completeTrigger) {
71048
71334
  var options = {
71049
71335
  allowComplete: true,
71050
71336
  allow: true,
71051
71337
  isCompleteOnTrigger: isCompleteOnTrigger,
71338
+ completeTrigger: completeTrigger
71052
71339
  };
71053
71340
  this.onCompleting.fire(this, options);
71054
71341
  return options.allowComplete && options.allow;
@@ -71193,8 +71480,8 @@ var SurveyModel = /** @class */ (function (_super) {
71193
71480
  this.doComplete(true);
71194
71481
  }
71195
71482
  };
71196
- SurveyModel.prototype.setCompleted = function () {
71197
- this.doComplete(true);
71483
+ SurveyModel.prototype.setCompleted = function (trigger) {
71484
+ this.doComplete(true, trigger);
71198
71485
  };
71199
71486
  SurveyModel.prototype.canBeCompleted = function (trigger, isCompleted) {
71200
71487
  if (!_settings__WEBPACK_IMPORTED_MODULE_14__["settings"].triggers.changeNavigationButtonsOnComplete)
@@ -72300,20 +72587,18 @@ var SurveyModel = /** @class */ (function (_super) {
72300
72587
  }
72301
72588
  };
72302
72589
  /**
72303
- * Sends a survey result to the [api.surveyjs.io](https://api.surveyjs.io) service.
72304
- * @param postId [api.surveyjs.io](https://api.surveyjs.io) service postId
72305
- * @param clientId Typically a customer e-mail or an identifier
72306
- * @param isPartialCompleted Set it to `true` if the survey is not completed yet and the results are intermediate
72307
- * @see surveyPostId
72308
- * @see clientId
72590
+ * Posts a survey result to [SurveyJS Service](https://api.surveyjs.io/).
72591
+ * @param postId An identifier used to save survey results. You can find it on the [My Surveys](https://surveyjs.io/service/mysurveys) page. If you do not specify this parameter, the survey uses the [`surveyPostId`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#surveyPostId) property value.
72592
+ * @param clientId A respondent identifier (e-mail or other unique ID). This ID ensures that the respondent does not pass the same survey twice.
72593
+ * @param isPartial Pass `true` to save partial survey results (see [Continue an Incomplete Survey](https://surveyjs.io/form-library/documentation/handle-survey-results-continue-incomplete)).
72309
72594
  */
72310
- SurveyModel.prototype.sendResult = function (postId, clientId, isPartialCompleted) {
72595
+ SurveyModel.prototype.sendResult = function (postId, clientId, isPartial) {
72311
72596
  if (postId === void 0) { postId = null; }
72312
72597
  if (clientId === void 0) { clientId = null; }
72313
- if (isPartialCompleted === void 0) { isPartialCompleted = false; }
72598
+ if (isPartial === void 0) { isPartial = false; }
72314
72599
  if (!this.isEditMode)
72315
72600
  return;
72316
- if (isPartialCompleted && this.onPartialSend) {
72601
+ if (isPartial && this.onPartialSend) {
72317
72602
  this.onPartialSend.fire(this, null);
72318
72603
  }
72319
72604
  if (!postId && this.surveyPostId) {
@@ -72324,7 +72609,7 @@ var SurveyModel = /** @class */ (function (_super) {
72324
72609
  if (clientId) {
72325
72610
  this.clientId = clientId;
72326
72611
  }
72327
- if (isPartialCompleted && !this.clientId)
72612
+ if (isPartial && !this.clientId)
72328
72613
  return;
72329
72614
  var self = this;
72330
72615
  if (this.surveyShowDataSaving) {
@@ -72344,17 +72629,16 @@ var SurveyModel = /** @class */ (function (_super) {
72344
72629
  response: response,
72345
72630
  request: request,
72346
72631
  });
72347
- }, this.clientId, isPartialCompleted);
72632
+ }, this.clientId, isPartial);
72348
72633
  };
72349
72634
  /**
72350
- * Calls the [api.surveyjs.io](https://api.surveyjs.io) service and, on callback, fires the `onGetResult` event with all answers that your users made for a question.
72351
- * @param resultId [api.surveyjs.io](https://api.surveyjs.io) service resultId
72352
- * @param name The question name
72353
- * @see onGetResult
72635
+ * Requests [SurveyJS Service](https://api.surveyjs.io/) to retrieve all answers to a specified question. Handle the [`onGetResult`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onGetResult) event to access the answers.
72636
+ * @param resultId A result ID that identifies the required survey. You can find it on the [My Surveys](https://surveyjs.io/service/mysurveys) page.
72637
+ * @param questionName A question name.
72354
72638
  */
72355
- SurveyModel.prototype.getResult = function (resultId, name) {
72639
+ SurveyModel.prototype.getResult = function (resultId, questionName) {
72356
72640
  var self = this;
72357
- this.createSurveyService().getResult(resultId, name, function (success, data, dataList, response) {
72641
+ this.createSurveyService().getResult(resultId, questionName, function (success, data, dataList, response) {
72358
72642
  self.onGetResult.fire(self, {
72359
72643
  success: success,
72360
72644
  data: data,
@@ -73830,7 +74114,7 @@ var SurveyModel = /** @class */ (function (_super) {
73830
74114
  }
73831
74115
  }
73832
74116
  }
73833
- else if (isStrCiEqual(layoutElement.id, "progress-" + this.progressBarType)) {
74117
+ else if (this.state === "running" && isStrCiEqual(layoutElement.id, "progress-" + this.progressBarType)) {
73834
74118
  if (container === "header") {
73835
74119
  if (this.isShowProgressBarOnTop && !this.isShowStartingPage) {
73836
74120
  containerLayoutElements.push(layoutElement);
@@ -73874,6 +74158,9 @@ var SurveyModel = /** @class */ (function (_super) {
73874
74158
  }
73875
74159
  return containerLayoutElements;
73876
74160
  };
74161
+ SurveyModel.prototype.processPopupVisiblityChanged = function (question, popup, visible) {
74162
+ this.onPopupVisibleChanged.fire(this, { question: question, popup: popup, visible: visible });
74163
+ };
73877
74164
  SurveyModel.prototype.applyTheme = function (theme) {
73878
74165
  var _this = this;
73879
74166
  if (!theme)
@@ -73916,9 +74203,6 @@ var SurveyModel = /** @class */ (function (_super) {
73916
74203
  __decorate([
73917
74204
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ defaultValue: {} })
73918
74205
  ], SurveyModel.prototype, "cssVariables", void 0);
73919
- __decorate([
73920
- Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
73921
- ], SurveyModel.prototype, "backgroundImagePosition", void 0);
73922
74206
  __decorate([
73923
74207
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
73924
74208
  ], SurveyModel.prototype, "_isMobile", void 0);
@@ -73931,6 +74215,9 @@ var SurveyModel = /** @class */ (function (_super) {
73931
74215
  __decorate([
73932
74216
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
73933
74217
  ], SurveyModel.prototype, "backgroundImageFit", void 0);
74218
+ __decorate([
74219
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
74220
+ ], SurveyModel.prototype, "backgroundImageAttachment", void 0);
73934
74221
  __decorate([
73935
74222
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
73936
74223
  ], SurveyModel.prototype, "rootCss", void 0);
@@ -74185,6 +74472,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("survey", [
74185
74472
  { name: "width", visibleIf: function (obj) { return obj.widthMode === "static"; } },
74186
74473
  { name: "backgroundImage", serializationProperty: "locBackgroundImage", visible: false },
74187
74474
  { name: "backgroundImageFit", default: "cover", choices: ["auto", "contain", "cover"], visible: false },
74475
+ { name: "backgroundImageAttachment", default: "scroll", choices: ["scroll", "fixed"], visible: false },
74188
74476
  { name: "backgroundOpacity:number", minValue: 0, maxValue: 1, default: 1, visible: false },
74189
74477
  { name: "showBrandInfo:boolean", default: false, visible: false }
74190
74478
  ]);
@@ -74599,7 +74887,7 @@ var SurveyTimerModel = /** @class */ (function (_super) {
74599
74887
  /*!**************************!*\
74600
74888
  !*** ./src/surveyToc.ts ***!
74601
74889
  \**************************/
74602
- /*! exports provided: tryNavigateToPage, createTOCListModel, getTocRootCss */
74890
+ /*! exports provided: tryNavigateToPage, createTOCListModel, getTocRootCss, TOCModel */
74603
74891
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
74604
74892
 
74605
74893
  "use strict";
@@ -74607,9 +74895,14 @@ __webpack_require__.r(__webpack_exports__);
74607
74895
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryNavigateToPage", function() { return tryNavigateToPage; });
74608
74896
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createTOCListModel", function() { return createTOCListModel; });
74609
74897
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTocRootCss", function() { return getTocRootCss; });
74898
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TOCModel", function() { return TOCModel; });
74610
74899
  /* harmony import */ var _actions_action__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions/action */ "./src/actions/action.ts");
74611
74900
  /* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ "./src/base.ts");
74612
74901
  /* 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");
74904
+
74905
+
74613
74906
 
74614
74907
 
74615
74908
 
@@ -74628,7 +74921,7 @@ function tryNavigateToPage(survey, page) {
74628
74921
  }
74629
74922
  return true;
74630
74923
  }
74631
- function createTOCListModel(survey) {
74924
+ function createTOCListModel(survey, onAction) {
74632
74925
  var items = survey.pages.map(function (page) {
74633
74926
  return new _actions_action__WEBPACK_IMPORTED_MODULE_0__["Action"]({
74634
74927
  id: page.name,
@@ -74637,6 +74930,7 @@ function createTOCListModel(survey) {
74637
74930
  if (typeof document !== undefined && !!document.activeElement) {
74638
74931
  !!document.activeElement.blur && document.activeElement.blur();
74639
74932
  }
74933
+ !!onAction && onAction();
74640
74934
  return tryNavigateToPage(survey, page);
74641
74935
  },
74642
74936
  visible: new _base__WEBPACK_IMPORTED_MODULE_1__["ComputedUpdater"](function () { return page.isVisible && !page.isStartPage; })
@@ -74654,9 +74948,35 @@ function createTOCListModel(survey) {
74654
74948
  });
74655
74949
  return listModel;
74656
74950
  }
74657
- function getTocRootCss(survey) {
74951
+ function getTocRootCss(survey, isMobile) {
74952
+ if (isMobile === void 0) { isMobile = false; }
74953
+ if (isMobile) {
74954
+ return "sv_progress-toc sv_progress-toc--mobile";
74955
+ }
74658
74956
  return "sv_progress-toc" + (" sv_progress-toc--" + (survey.tocLocation || "").toLowerCase());
74659
74957
  }
74958
+ var TOCModel = /** @class */ (function () {
74959
+ function TOCModel(survey) {
74960
+ var _this = this;
74961
+ this.survey = survey;
74962
+ this.isMobile = _utils_devices__WEBPACK_IMPORTED_MODULE_4__["IsTouch"];
74963
+ this.icon = "icon-navmenu_24x24";
74964
+ this.togglePopup = function () {
74965
+ _this.popupModel.toggleVisibility();
74966
+ };
74967
+ this.listModel = createTOCListModel(survey, function () { _this.popupModel.isVisible = false; });
74968
+ this.popupModel = new _popup__WEBPACK_IMPORTED_MODULE_3__["PopupModel"]("sv-list", { model: this.listModel });
74969
+ }
74970
+ Object.defineProperty(TOCModel.prototype, "containerCss", {
74971
+ get: function () {
74972
+ return getTocRootCss(this.survey, this.isMobile);
74973
+ },
74974
+ enumerable: false,
74975
+ configurable: true
74976
+ });
74977
+ return TOCModel;
74978
+ }());
74979
+
74660
74980
 
74661
74981
 
74662
74982
  /***/ }),
@@ -75484,7 +75804,7 @@ var SurveyTriggerComplete = /** @class */ (function (_super) {
75484
75804
  if (!this.owner)
75485
75805
  return;
75486
75806
  if (this.isRealExecution()) {
75487
- this.owner.setCompleted();
75807
+ this.owner.setCompleted(this);
75488
75808
  }
75489
75809
  else {
75490
75810
  this.owner.canBeCompleted(this, true);