survey-react 1.9.103 → 1.9.105

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.103
2
+ * surveyjs - Survey JavaScript library v1.9.105
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
  */
@@ -2064,15 +2064,15 @@ var Base = /** @class */ (function () {
2064
2064
  var locStr = this.localizableStrings ? this.localizableStrings[name] : undefined;
2065
2065
  if (locStr)
2066
2066
  return locStr.text;
2067
- if (defaultValue != null)
2067
+ if (defaultValue !== null && defaultValue !== undefined)
2068
2068
  return defaultValue;
2069
- var propDefaultValue = this.getDefaultValueFromProperty(name);
2069
+ var propDefaultValue = this.getDefaultPropertyValue(name);
2070
2070
  if (propDefaultValue !== undefined)
2071
2071
  return propDefaultValue;
2072
2072
  }
2073
2073
  return res;
2074
2074
  };
2075
- Base.prototype.getDefaultValueFromProperty = function (name) {
2075
+ Base.prototype.getDefaultPropertyValue = function (name) {
2076
2076
  var prop = this.getPropertyByName(name);
2077
2077
  if (!prop || prop.isCustom && this.isCreating)
2078
2078
  return undefined;
@@ -2085,6 +2085,12 @@ var Base = /** @class */ (function () {
2085
2085
  return prop.onGetValue(this);
2086
2086
  return undefined;
2087
2087
  };
2088
+ Base.prototype.hasDefaultPropertyValue = function (name) {
2089
+ return this.getDefaultPropertyValue(name) !== undefined;
2090
+ };
2091
+ Base.prototype.resetPropertyValue = function (name) {
2092
+ this.setPropertyValue(name, undefined);
2093
+ };
2088
2094
  Base.prototype.getPropertyValueWithoutDefault = function (name) {
2089
2095
  return this.getPropertyValueCore(this.propertyHash, name);
2090
2096
  };
@@ -3384,7 +3390,8 @@ var ChoicesRestful = /** @class */ (function (_super) {
3384
3390
  * @see titleName
3385
3391
  */
3386
3392
  get: function () {
3387
- return this.getPropertyValue("path", "");
3393
+ var res = this.getPropertyValue("path");
3394
+ return !!res ? res : "";
3388
3395
  },
3389
3396
  set: function (val) {
3390
3397
  this.setPropertyValue("path", val);
@@ -4669,6 +4676,8 @@ var modernCss = {
4669
4676
  small: "sv-row__question--small",
4670
4677
  controls: "sjs_sp_controls",
4671
4678
  placeholder: "sjs_sp_placeholder",
4679
+ canvas: "sjs_sp_canvas",
4680
+ backgroundImage: "sjs_sp__background-image",
4672
4681
  clearButton: "sjs_sp_clear",
4673
4682
  },
4674
4683
  saveData: {
@@ -5059,6 +5068,8 @@ var defaultStandardCss = {
5059
5068
  root: "sv_q_signaturepad sjs_sp_container",
5060
5069
  controls: "sjs_sp_controls",
5061
5070
  placeholder: "sjs_sp_placeholder",
5071
+ canvas: "sjs_sp_canvas",
5072
+ backgroundImage: "sjs_sp__background-image",
5062
5073
  clearButton: "sjs_sp_clear",
5063
5074
  },
5064
5075
  saveData: {
@@ -5509,6 +5520,7 @@ var defaultV2Css = {
5509
5520
  mainRoot: "sd-element sd-question sd-row__question sd-element--complex sd-question--complex sd-question--table",
5510
5521
  tableWrapper: "sd-matrix sd-table-wrapper",
5511
5522
  root: "sd-table sd-matrix__table",
5523
+ noHeader: "sd-table--no-header",
5512
5524
  rootVerticalAlignTop: "sd-table--align-top",
5513
5525
  rootVerticalAlignMiddle: "sd-table--align-middle",
5514
5526
  rootAlternateRows: "sd-table--alternate-rows",
@@ -5535,6 +5547,7 @@ var defaultV2Css = {
5535
5547
  mainRoot: "sd-element sd-question sd-row__question sd-element--complex sd-question--complex sd-question--table",
5536
5548
  rootScroll: "sd-question--scroll",
5537
5549
  root: "sd-table sd-matrixdropdown",
5550
+ noHeader: "sd-table--no-header",
5538
5551
  rootVerticalAlignTop: "sd-table--align-top",
5539
5552
  rootVerticalAlignMiddle: "sd-table--align-middle",
5540
5553
  tableWrapper: "sd-table-wrapper",
@@ -5547,6 +5560,7 @@ var defaultV2Css = {
5547
5560
  row: "sd-table__row",
5548
5561
  headerCell: "sd-table__cell sd-table__cell--header",
5549
5562
  rowTextCell: "sd-table__cell sd-table__cell--row-text",
5563
+ columnTitleCell: "sd-table__cell--column-title",
5550
5564
  cellRequiredText: "sd-question__required-text",
5551
5565
  detailButton: "sd-table__cell--detail-button",
5552
5566
  detailButtonExpanded: "sd-table__cell--detail-button--expanded",
@@ -5554,7 +5568,9 @@ var defaultV2Css = {
5554
5568
  detailIconExpanded: "sd-detail-panel__icon--expanded",
5555
5569
  detailIconId: "icon-expanddetail",
5556
5570
  detailIconExpandedId: "icon-collapsedetail",
5571
+ detailPanelCell: "sd-table__cell--detail-panel",
5557
5572
  actionsCell: "sd-table__cell sd-table__cell--actions",
5573
+ actionsCellDrag: "sd-table__cell--drag",
5558
5574
  emptyCell: "sd-table__cell--empty",
5559
5575
  verticalCell: "sd-table__cell--vertical",
5560
5576
  cellQuestionWrapper: "sd-table__question-wrapper",
@@ -5565,6 +5581,7 @@ var defaultV2Css = {
5565
5581
  rootScroll: "sd-question--scroll",
5566
5582
  empty: "sd-question--empty",
5567
5583
  root: "sd-table sd-matrixdynamic",
5584
+ noHeader: "sd-table--no-header",
5568
5585
  tableWrapper: "sd-table-wrapper",
5569
5586
  content: "sd-matrixdynamic__content sd-question__content",
5570
5587
  cell: "sd-table__cell",
@@ -5572,6 +5589,7 @@ var defaultV2Css = {
5572
5589
  itemCell: "sd-table__cell--item",
5573
5590
  headerCell: "sd-table__cell sd-table__cell--header",
5574
5591
  rowTextCell: "sd-table__cell sd-table__cell--row-text",
5592
+ columnTitleCell: "sd-table__cell--column-title",
5575
5593
  cellRequiredText: "sd-question__required-text",
5576
5594
  button: "sd-action sd-matrixdynamic__btn",
5577
5595
  detailRow: "sd-table__row sd-table__row--detail",
@@ -5583,6 +5601,7 @@ var defaultV2Css = {
5583
5601
  detailIconExpandedId: "icon-collapsedetail",
5584
5602
  detailPanelCell: "sd-table__cell--detail-panel",
5585
5603
  actionsCell: "sd-table__cell sd-table__cell--actions",
5604
+ actionsCellDrag: "sd-table__cell--drag",
5586
5605
  buttonAdd: "sd-matrixdynamic__add-btn",
5587
5606
  buttonRemove: "sd-action--negative sd-matrixdynamic__remove-btn",
5588
5607
  iconAdd: "",
@@ -5698,6 +5717,8 @@ var defaultV2Css = {
5698
5717
  small: "sd-row__question--small",
5699
5718
  controls: "sjs_sp_controls sd-signaturepad__controls",
5700
5719
  placeholder: "sjs_sp_placeholder",
5720
+ canvas: "sjs_sp_canvas sd-signaturepad__canvas",
5721
+ backgroundImage: "sjs_sp__background-image sd-signaturepad__background-image",
5701
5722
  clearButton: "sjs_sp_clear sd-context-btn sd-context-btn--negative sd-signaturepad__clear",
5702
5723
  clearButtonIconId: "icon-clear"
5703
5724
  },
@@ -6399,8 +6420,14 @@ var DragDropChoices = /** @class */ (function (_super) {
6399
6420
  };
6400
6421
  DragDropChoices.prototype.getVisibleChoices = function () {
6401
6422
  var parent = this.parentElement;
6402
- if (parent.getType() === "ranking")
6403
- return parent.rankingChoices;
6423
+ if (parent.getType() === "ranking") {
6424
+ if (parent.selectToRankEnabled) {
6425
+ return parent.visibleChoices;
6426
+ }
6427
+ else {
6428
+ return parent.rankingChoices;
6429
+ }
6430
+ }
6404
6431
  return parent.visibleChoices;
6405
6432
  };
6406
6433
  DragDropChoices.prototype.isDropTargetValid = function (dropTarget, dropTargetNode) {
@@ -6582,9 +6609,12 @@ var DragDropCore = /** @class */ (function () {
6582
6609
  DragDropCore.prototype.doDragOver = function () { };
6583
6610
  DragDropCore.prototype.afterDragOver = function (dropTargetNode) { };
6584
6611
  DragDropCore.prototype.findDropTargetNodeFromPoint = function (clientX, clientY) {
6585
- this.domAdapter.draggedElementShortcut.hidden = true;
6612
+ var displayProp = this.domAdapter.draggedElementShortcut.style.display;
6613
+ //this.domAdapter.draggedElementShortcut.hidden = true;
6614
+ this.domAdapter.draggedElementShortcut.style.display = "none";
6586
6615
  var dragOverNode = document.elementFromPoint(clientX, clientY);
6587
- this.domAdapter.draggedElementShortcut.hidden = false;
6616
+ // this.domAdapter.draggedElementShortcut.hidden = false;
6617
+ this.domAdapter.draggedElementShortcut.style.display = displayProp || "block";
6588
6618
  if (!dragOverNode)
6589
6619
  return null;
6590
6620
  return this.findDropTargetNodeByDragOverNode(dragOverNode);
@@ -6693,6 +6723,7 @@ if (typeof window !== "undefined") {
6693
6723
  var DragDropDOMAdapter = /** @class */ (function () {
6694
6724
  function DragDropDOMAdapter(dd, longTap) {
6695
6725
  var _this = this;
6726
+ if (longTap === void 0) { longTap = true; }
6696
6727
  this.dd = dd;
6697
6728
  this.longTap = longTap;
6698
6729
  this.scrollIntervalId = null;
@@ -7720,6 +7751,13 @@ var DropdownListModel = /** @class */ (function (_super) {
7720
7751
  enumerable: false,
7721
7752
  configurable: true
7722
7753
  });
7754
+ Object.defineProperty(DropdownListModel.prototype, "canShowSelectedItem", {
7755
+ get: function () {
7756
+ return !this.focused || this._markdownMode || !this.searchEnabled;
7757
+ },
7758
+ enumerable: false,
7759
+ configurable: true
7760
+ });
7723
7761
  DropdownListModel.prototype.applyInputString = function (item) {
7724
7762
  var hasHtml = item === null || item === void 0 ? void 0 : item.locText.hasHtml;
7725
7763
  if (hasHtml || this.question.inputFieldComponentName) {
@@ -7754,7 +7792,12 @@ var DropdownListModel = /** @class */ (function (_super) {
7754
7792
  set: function (val) {
7755
7793
  this.inputString = val;
7756
7794
  this.filterString = val;
7757
- this.applyHintString(this.listModel.focusedItem || this.question.selectedItem);
7795
+ if (!val) {
7796
+ this.hintString = "";
7797
+ }
7798
+ else {
7799
+ this.applyHintString(this.listModel.focusedItem || this.question.selectedItem);
7800
+ }
7758
7801
  },
7759
7802
  enumerable: false,
7760
7803
  configurable: true
@@ -7867,7 +7910,7 @@ var DropdownListModel = /** @class */ (function (_super) {
7867
7910
  this.listModel.setItems(this.getAvailableItems());
7868
7911
  };
7869
7912
  DropdownListModel.prototype.onClick = function (event) {
7870
- if (this.question.readOnly)
7913
+ if (this.question.readOnly || this.question.isDesignMode)
7871
7914
  return;
7872
7915
  this._popupModel.toggleVisibility();
7873
7916
  this.focusItemOnClickAndPopup();
@@ -7882,6 +7925,9 @@ var DropdownListModel = /** @class */ (function (_super) {
7882
7925
  if (options.name == "value") {
7883
7926
  this.showInputFieldComponent = this.question.showInputFieldComponent;
7884
7927
  }
7928
+ if (options.name == "choicesLazyLoadEnabled" && options.newValue) {
7929
+ this.listModel.setOnFilterStringChangedCallback(this.listModelFilterStringChanged);
7930
+ }
7885
7931
  };
7886
7932
  DropdownListModel.prototype.focusItemOnClickAndPopup = function () {
7887
7933
  if (this._popupModel.isVisible && this.question.value)
@@ -8635,7 +8681,7 @@ __webpack_require__.r(__webpack_exports__);
8635
8681
  /*!*************************************!*\
8636
8682
  !*** ./src/entries/chunks/model.ts ***!
8637
8683
  \*************************************/
8638
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank */
8684
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, 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, confirmActionAsync, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank */
8639
8685
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
8640
8686
 
8641
8687
  "use strict";
@@ -8965,6 +9011,8 @@ __webpack_require__.r(__webpack_exports__);
8965
9011
 
8966
9012
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTriggerRunExpression", function() { return _trigger__WEBPACK_IMPORTED_MODULE_61__["SurveyTriggerRunExpression"]; });
8967
9013
 
9014
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTriggerSkip", function() { return _trigger__WEBPACK_IMPORTED_MODULE_61__["SurveyTriggerSkip"]; });
9015
+
8968
9016
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Trigger", function() { return _trigger__WEBPACK_IMPORTED_MODULE_61__["Trigger"]; });
8969
9017
 
8970
9018
  /* harmony import */ var _popup_survey__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ../../popup-survey */ "./src/popup-survey.ts");
@@ -9054,6 +9102,8 @@ __webpack_require__.r(__webpack_exports__);
9054
9102
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ../../utils/utils */ "./src/utils/utils.ts");
9055
9103
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "confirmAction", function() { return _utils_utils__WEBPACK_IMPORTED_MODULE_82__["confirmAction"]; });
9056
9104
 
9105
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "confirmActionAsync", function() { return _utils_utils__WEBPACK_IMPORTED_MODULE_82__["confirmActionAsync"]; });
9106
+
9057
9107
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "detectIEOrEdge", function() { return _utils_utils__WEBPACK_IMPORTED_MODULE_82__["detectIEOrEdge"]; });
9058
9108
 
9059
9109
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "doKey2ClickUp", function() { return _utils_utils__WEBPACK_IMPORTED_MODULE_82__["doKey2ClickUp"]; });
@@ -9094,8 +9144,8 @@ __webpack_require__.r(__webpack_exports__);
9094
9144
  //import "../../modern.scss";
9095
9145
  var Version;
9096
9146
  var ReleaseDate;
9097
- Version = "" + "1.9.103";
9098
- ReleaseDate = "" + "2023-08-15";
9147
+ Version = "" + "1.9.105";
9148
+ ReleaseDate = "" + "2023-08-30";
9099
9149
  function checkLibraryVersion(ver, libraryName) {
9100
9150
  if (Version != ver) {
9101
9151
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -9243,7 +9293,7 @@ function slk(k, lh, rd) {
9243
9293
  /*!**************************************!*\
9244
9294
  !*** ./src/entries/core-wo-model.ts ***!
9245
9295
  \**************************************/
9246
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper */
9296
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, 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, confirmActionAsync, 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 */
9247
9297
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9248
9298
 
9249
9299
  "use strict";
@@ -9517,6 +9567,8 @@ __webpack_require__.r(__webpack_exports__);
9517
9567
 
9518
9568
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTriggerRunExpression", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["SurveyTriggerRunExpression"]; });
9519
9569
 
9570
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTriggerSkip", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["SurveyTriggerSkip"]; });
9571
+
9520
9572
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Trigger", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["Trigger"]; });
9521
9573
 
9522
9574
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupSurveyModel", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["PopupSurveyModel"]; });
@@ -9585,6 +9637,8 @@ __webpack_require__.r(__webpack_exports__);
9585
9637
 
9586
9638
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "confirmAction", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["confirmAction"]; });
9587
9639
 
9640
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "confirmActionAsync", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["confirmActionAsync"]; });
9641
+
9588
9642
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "detectIEOrEdge", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["detectIEOrEdge"]; });
9589
9643
 
9590
9644
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "doKey2ClickUp", function() { return _chunks_model__WEBPACK_IMPORTED_MODULE_0__["doKey2ClickUp"]; });
@@ -9694,7 +9748,7 @@ __webpack_require__.r(__webpack_exports__);
9694
9748
  /*!*****************************!*\
9695
9749
  !*** ./src/entries/core.ts ***!
9696
9750
  \*****************************/
9697
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper, Model */
9751
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, 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, confirmActionAsync, 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 */
9698
9752
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
9699
9753
 
9700
9754
  "use strict";
@@ -9968,6 +10022,8 @@ __webpack_require__.r(__webpack_exports__);
9968
10022
 
9969
10023
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTriggerRunExpression", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["SurveyTriggerRunExpression"]; });
9970
10024
 
10025
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTriggerSkip", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["SurveyTriggerSkip"]; });
10026
+
9971
10027
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Trigger", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["Trigger"]; });
9972
10028
 
9973
10029
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupSurveyModel", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["PopupSurveyModel"]; });
@@ -10036,6 +10092,8 @@ __webpack_require__.r(__webpack_exports__);
10036
10092
 
10037
10093
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "confirmAction", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["confirmAction"]; });
10038
10094
 
10095
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "confirmActionAsync", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["confirmActionAsync"]; });
10096
+
10039
10097
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "detectIEOrEdge", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["detectIEOrEdge"]; });
10040
10098
 
10041
10099
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "doKey2ClickUp", function() { return _core_wo_model__WEBPACK_IMPORTED_MODULE_0__["doKey2ClickUp"]; });
@@ -10505,7 +10563,7 @@ __webpack_require__.r(__webpack_exports__);
10505
10563
  /*!******************************!*\
10506
10564
  !*** ./src/entries/react.ts ***!
10507
10565
  \******************************/
10508
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, StylesManager, ListModel, MultiSelectListModel, PopupModel, createDialogOptions, PopupBaseViewModel, PopupDropdownViewModel, PopupModalViewModel, createPopupViewModel, createPopupModalViewModel, DropdownListModel, DropdownMultiSelectListModel, QuestionButtonGroupModel, ButtonGroupItemModel, ButtonGroupItemValue, IsMobile, IsTouch, _setIsTouch, confirmAction, detectIEOrEdge, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, loadFileFromBase64, increaseHeightByContent, createSvg, sanitizeEditableContent, CssClassBuilder, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, createDropdownActionModel, createDropdownActionModelAdvanced, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, TooltipManager, DragOrClickHelper, Model, bootstrapThemeName, bootstrapThemeColors, bootstrapThemeCssRules, bootstrapMaterialThemeName, bootstrapMaterialThemeColors, bootstrapMaterialThemeCssRules, defaultBootstrapCss, defaultBootstrapMaterialCss, Survey, attachKey2click, ReactSurveyElementsWrapper, SurveyNavigationBase, SurveyTimerPanel, SurveyPage, SurveyRow, SurveyPanel, SurveyFlowPanel, SurveyQuestion, SurveyElementErrors, SurveyQuestionAndErrorsCell, ReactSurveyElement, SurveyElementBase, SurveyQuestionElementBase, SurveyQuestionCommentItem, SurveyQuestionComment, SurveyQuestionCheckbox, SurveyQuestionCheckboxItem, SurveyQuestionRanking, SurveyQuestionRankingItem, RatingItem, RatingItemStar, RatingItemSmiley, TagboxFilterString, SurveyQuestionOptionItem, SurveyQuestionDropdownBase, SurveyQuestionDropdown, SurveyQuestionTagboxItem, SurveyQuestionTagbox, SurveyQuestionDropdownSelect, SurveyQuestionMatrix, SurveyQuestionMatrixRow, SurveyQuestionHtml, SurveyQuestionFile, SurveyQuestionMultipleText, SurveyQuestionRadiogroup, SurveyQuestionRadioItem, SurveyQuestionText, SurveyQuestionBoolean, SurveyQuestionBooleanCheckbox, SurveyQuestionBooleanRadio, SurveyQuestionEmpty, SurveyQuestionMatrixDropdownCell, SurveyQuestionMatrixDropdownBase, SurveyQuestionMatrixDropdown, SurveyQuestionMatrixDynamic, SurveyQuestionMatrixDynamicAddButton, SurveyQuestionPanelDynamic, SurveyProgress, SurveyProgressButtons, SurveyProgressToc, SurveyQuestionRating, SurveyQuestionRatingDropdown, SurveyQuestionExpression, PopupSurvey, SurveyWindow, ReactQuestionFactory, ReactElementFactory, SurveyQuestionImagePicker, SurveyQuestionImage, SurveyQuestionSignaturePad, SurveyQuestionButtonGroup, SurveyQuestionCustom, SurveyQuestionComposite, Popup, List, TitleActions, TitleElement, SurveyActionBar, LogoImage, SurveyHeader, SvgIcon, SurveyQuestionMatrixDynamicRemoveButton, SurveyQuestionMatrixDetailButton, SurveyQuestionMatrixDynamicDragDropIcon, SurveyQuestionPanelDynamicAddButton, SurveyQuestionPanelDynamicRemoveButton, SurveyQuestionPanelDynamicPrevButton, SurveyQuestionPanelDynamicNextButton, SurveyQuestionPanelDynamicProgressText, SurveyNavigationButton, MatrixRow, Skeleton, NotifierComponent, ComponentsContainer, CharacterCounterComponent, SurveyLocStringViewer, SurveyLocStringEditor */
10566
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, hasLicense, settings, Helpers, AnswerCountValidator, EmailValidator, NumericValidator, RegexValidator, SurveyValidator, TextValidator, ValidatorResult, ExpressionValidator, ValidatorRunner, ItemValue, Base, Event, EventBase, ArrayChanges, ComputedUpdater, SurveyError, SurveyElementCore, SurveyElement, DragTypeOverMeEnum, CalculatedValue, CustomError, AnswerRequiredError, OneAnswerRequiredError, RequreNumericError, ExceedSizeError, LocalizableString, LocalizableStrings, HtmlConditionItem, UrlConditionItem, ChoicesRestful, ChoicesRestfull, FunctionFactory, registerFunction, ConditionRunner, ExpressionRunner, ExpressionExecutor, Operand, Const, BinaryOperand, Variable, FunctionOperand, ArrayOperand, UnaryOperand, ConditionsParser, ProcessValue, JsonError, JsonIncorrectTypeError, JsonMetadata, JsonMetadataClass, JsonMissingTypeError, JsonMissingTypeErrorBase, JsonObject, JsonObjectProperty, JsonRequiredPropertyError, JsonUnknownPropertyError, Serializer, property, propertyArray, MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownModelBase, MatrixDropdownColumn, matrixDropdownColumnTypes, QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryNavigateToPage, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, 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, confirmActionAsync, 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 */
10509
10567
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10510
10568
 
10511
10569
  "use strict";
@@ -10779,6 +10837,8 @@ __webpack_require__.r(__webpack_exports__);
10779
10837
 
10780
10838
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTriggerRunExpression", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["SurveyTriggerRunExpression"]; });
10781
10839
 
10840
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SurveyTriggerSkip", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["SurveyTriggerSkip"]; });
10841
+
10782
10842
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Trigger", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["Trigger"]; });
10783
10843
 
10784
10844
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupSurveyModel", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["PopupSurveyModel"]; });
@@ -10847,6 +10907,8 @@ __webpack_require__.r(__webpack_exports__);
10847
10907
 
10848
10908
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "confirmAction", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["confirmAction"]; });
10849
10909
 
10910
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "confirmActionAsync", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["confirmActionAsync"]; });
10911
+
10850
10912
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "detectIEOrEdge", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["detectIEOrEdge"]; });
10851
10913
 
10852
10914
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "doKey2ClickUp", function() { return _core__WEBPACK_IMPORTED_MODULE_0__["doKey2ClickUp"]; });
@@ -16127,8 +16189,8 @@ var Helpers = /** @class */ (function () {
16127
16189
  !Array.isArray(value) &&
16128
16190
  !isNaN(value));
16129
16191
  };
16130
- Helpers.isValueObject = function (val) {
16131
- return val instanceof Object;
16192
+ Helpers.isValueObject = function (val, excludeArray) {
16193
+ return val instanceof Object && (!excludeArray || !Array.isArray(val));
16132
16194
  };
16133
16195
  Helpers.isNumber = function (value) {
16134
16196
  return !isNaN(this.getNumber(value));
@@ -19533,6 +19595,9 @@ var ListModel = /** @class */ (function (_super) {
19533
19595
  }
19534
19596
  }, ms);
19535
19597
  };
19598
+ ListModel.prototype.setOnFilterStringChangedCallback = function (callback) {
19599
+ this.onFilterStringChangedCallback = callback;
19600
+ };
19536
19601
  ListModel.prototype.setItems = function (items, sortByVisibleIndex) {
19537
19602
  var _this = this;
19538
19603
  if (sortByVisibleIndex === void 0) { sortByVisibleIndex = true; }
@@ -27046,6 +27111,7 @@ var QuestionMatrixBaseModel = /** @class */ (function (_super) {
27046
27111
  QuestionMatrixBaseModel.prototype.getTableCss = function () {
27047
27112
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]()
27048
27113
  .append(this.cssClasses.root)
27114
+ .append(this.cssClasses.noHeader, !this.showHeader)
27049
27115
  .append(this.cssClasses.rootAlternateRows, this.alternateRows)
27050
27116
  .append(this.cssClasses.rootVerticalAlignTop, (this.verticalAlign === "top"))
27051
27117
  .append(this.cssClasses.rootVerticalAlignMiddle, (this.verticalAlign === "middle")).toString();
@@ -28047,9 +28113,12 @@ var PanelModelBase = /** @class */ (function (_super) {
28047
28113
  enumerable: false,
28048
28114
  configurable: true
28049
28115
  });
28050
- PanelModelBase.prototype.delete = function () {
28116
+ PanelModelBase.prototype.delete = function (doDispose) {
28117
+ if (doDispose === void 0) { doDispose = true; }
28051
28118
  this.removeFromParent();
28052
- this.dispose();
28119
+ if (doDispose) {
28120
+ this.dispose();
28121
+ }
28053
28122
  };
28054
28123
  PanelModelBase.prototype.removeFromParent = function () { };
28055
28124
  PanelModelBase.prototype.canShowTitle = function () { return true; };
@@ -29336,6 +29405,34 @@ var PanelModelBase = /** @class */ (function (_super) {
29336
29405
  enumerable: false,
29337
29406
  configurable: true
29338
29407
  });
29408
+ Object.defineProperty(PanelModelBase.prototype, "questionErrorLocation", {
29409
+ /**
29410
+ * Specifies the error message position for questions that belong to this page/panel.
29411
+ *
29412
+ * Use this property to override the [`questionErrorLocation`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#questionErrorLocation) property specified for the survey. You can also set the [`errorLocation`](https://surveyjs.io/form-library/documentation/question#errorLocation) property for individual questions.
29413
+ *
29414
+ * Possible values:
29415
+ *
29416
+ * - `"default"` (default) - Inherits the setting from the `questionErrorLocation` property specified for the survey.
29417
+ * - `"top"` - Displays error messages above questions.
29418
+ * - `"bottom"` - Displays error messages below questions.
29419
+ */
29420
+ get: function () {
29421
+ return this.getPropertyValue("questionErrorLocation");
29422
+ },
29423
+ set: function (val) {
29424
+ this.setPropertyValue("questionErrorLocation", val);
29425
+ },
29426
+ enumerable: false,
29427
+ configurable: true
29428
+ });
29429
+ PanelModelBase.prototype.getQuestionErrorLocation = function () {
29430
+ if (this.questionErrorLocation !== "default")
29431
+ return this.questionErrorLocation;
29432
+ if (this.parent)
29433
+ return this.parent.getQuestionErrorLocation();
29434
+ return this.survey ? this.survey.questionErrorLocation : "top";
29435
+ };
29339
29436
  Object.defineProperty(PanelModelBase.prototype, "no", {
29340
29437
  //ITitleOwner
29341
29438
  get: function () { return ""; },
@@ -29792,11 +29889,11 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("panelbase", [
29792
29889
  visible: false,
29793
29890
  isLightSerializable: false,
29794
29891
  },
29795
- { name: "visible:switch", default: true },
29892
+ { name: "visible:switch", default: true, overridingProperty: "visibleIf" },
29893
+ { name: "readOnly:boolean", overridingProperty: "enableIf" },
29796
29894
  "visibleIf:condition",
29797
29895
  "enableIf:condition",
29798
29896
  "requiredIf:condition",
29799
- "readOnly:boolean",
29800
29897
  {
29801
29898
  name: "questionTitleLocation",
29802
29899
  default: "default",
@@ -29809,6 +29906,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("panelbase", [
29809
29906
  default: "default",
29810
29907
  choices: ["default", "initial", "random"],
29811
29908
  },
29909
+ { name: "questionErrorLocation", default: "default", choices: ["default", "top", "bottom"] }
29812
29910
  ], function () {
29813
29911
  return new PanelModelBase();
29814
29912
  });
@@ -29818,7 +29916,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("panel", [
29818
29916
  default: "default",
29819
29917
  choices: ["default", "collapsed", "expanded"],
29820
29918
  },
29821
- "isRequired:switch",
29919
+ { name: "isRequired:switch", overridingProperty: "requiredIf" },
29822
29920
  {
29823
29921
  name: "requiredErrorText:text",
29824
29922
  serializationProperty: "locRequiredErrorText",
@@ -30203,6 +30301,8 @@ var defaultCss = {
30203
30301
  root: "sv_q_signaturepad sjs_sp_container",
30204
30302
  controls: "sjs_sp_controls",
30205
30303
  placeholder: "sjs_sp_placeholder",
30304
+ canvas: "sjs_sp_canvas",
30305
+ backgroundImage: "sjs_sp__background-image",
30206
30306
  clearButton: "sjs_sp_clear",
30207
30307
  },
30208
30308
  saveData: {
@@ -30660,6 +30760,8 @@ var defaultCss = {
30660
30760
  root: "sv_q_signaturepad sjs_sp_container",
30661
30761
  controls: "sjs_sp_controls",
30662
30762
  placeholder: "sjs_sp_placeholder",
30763
+ canvas: "sjs_sp_canvas",
30764
+ backgroundImage: "sjs_sp__background-image",
30663
30765
  clearButton: "sjs_sp_clear",
30664
30766
  },
30665
30767
  saveData: {
@@ -30976,9 +31078,12 @@ function setStyles() {
30976
31078
  ".sv_q_dd_clean-button-svg": "width: 1em; height: 1em;",
30977
31079
  ".sv_q_dd_control": "display: flex; justify-content: space-between; appearance: none;",
30978
31080
  ".sv_q_dd_value": "width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; position: relative;",
31081
+ ".sv_q_dd_hint-prefix span": "white-space: pre;",
31082
+ ".sv_q_dd_hint-suffix": "display: flex;",
30979
31083
  ".sv_q_dd_root": "position: relative;",
31084
+ ".sv_q_dd_select_wrapper": "position: relative;",
30980
31085
  ".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;",
30981
- ".sv_q_dd_filter-string-input": "outline: none; border: none; background-color: transparent; position: absolute; inset-inline-start: 0; inset-block-start: 0;",
31086
+ ".sv_q_dd_filter-string-input": "outline: none; border: none; background-color: transparent; position: absolute; inset-inline-start: 0; inset-block-start: 0; width: 100%; max-width: 100%; padding: 0;",
30982
31087
  ".sv_q_dropdown_clean-button": "margin: auto 2em;",
30983
31088
  ".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;",
30984
31089
  ".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;",
@@ -31095,6 +31200,8 @@ function setStyles() {
31095
31200
  ".sv_main .sjs_sp_controls > button": "user-select: none;",
31096
31201
  ".sv_main .sjs_sp_container>div>canvas:focus": "outline: none;",
31097
31202
  ".sv_main .sjs_sp_placeholder": "display: flex; align-items: center; justify-content: center; position: absolute; z-index: 0; user-select: none; pointer-events: none; width: 100%; height: 100%;",
31203
+ ".sv_main .sjs_sp_canvas": "position: absolute; top: 0; left: 0;",
31204
+ ".sv_main .sjs_sp__background-image": "position: absolute; top: 0; left: 0;",
31098
31205
  // logo
31099
31206
  // ".sv_main .sv_header": "white-space: nowrap;",
31100
31207
  ".sv_main .sv_logo": "",
@@ -31138,6 +31245,7 @@ function setStyles() {
31138
31245
  //popup
31139
31246
  "sv-popup": "display: block; position: absolute; z-index: -1;",
31140
31247
  ".sv-popup": "position: fixed; left: 0; top: 0; width: 100vw; height: 100vh; outline: none; z-index: 1500;",
31248
+ ".sv-popup.sv-dropdown-popup": "height: 0;",
31141
31249
  ".sv-popup__container": "box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.1); position: absolute; padding: 0;",
31142
31250
  ".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;",
31143
31251
  ".sv-popup--modal .sv-list__filter": "padding-top: 8px;",
@@ -32752,9 +32860,15 @@ var Question = /** @class */ (function (_super) {
32752
32860
  Question.prototype.getPanel = function () {
32753
32861
  return null;
32754
32862
  };
32755
- Question.prototype.delete = function () {
32863
+ Question.prototype.delete = function (doDispose) {
32864
+ if (doDispose === void 0) { doDispose = true; }
32756
32865
  this.removeFromParent();
32757
- this.dispose();
32866
+ if (doDispose) {
32867
+ this.dispose();
32868
+ }
32869
+ else {
32870
+ this.resetDependedQuestions();
32871
+ }
32758
32872
  };
32759
32873
  Question.prototype.removeFromParent = function () {
32760
32874
  if (!!this.parent) {
@@ -32997,6 +33111,7 @@ var Question = /** @class */ (function (_super) {
32997
33111
  if (isLight !== true) {
32998
33112
  this.runConditions();
32999
33113
  }
33114
+ this.calcRenderedCommentPlaceholder();
33000
33115
  };
33001
33116
  Object.defineProperty(Question.prototype, "parent", {
33002
33117
  /**
@@ -33135,12 +33250,36 @@ var Question = /** @class */ (function (_super) {
33135
33250
  configurable: true
33136
33251
  });
33137
33252
  Object.defineProperty(Question.prototype, "errorLocation", {
33253
+ /**
33254
+ * Specifies the error message position. Overrides the `questionErrorLocation` property specified for the question's container ([survey](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#questionErrorLocation), [page](https://surveyjs.io/form-library/documentation/api-reference/page-model#questionErrorLocation), or [panel](https://surveyjs.io/form-library/documentation/api-reference/panel-model#questionErrorLocation)).
33255
+ *
33256
+ * Possible values:
33257
+ *
33258
+ * - `"default"` (default) - Inherits the setting from the `questionErrorLocation` property specified for the question's container.
33259
+ * - `"top"` - Displays error messages above questions.
33260
+ * - `"bottom"` - Displays error messages below questions.
33261
+ */
33138
33262
  get: function () {
33139
- return this.survey ? this.survey.questionErrorLocation : "top";
33263
+ return this.getPropertyValue("errorLocation");
33264
+ },
33265
+ set: function (val) {
33266
+ this.setPropertyValue("errorLocation", val);
33140
33267
  },
33141
33268
  enumerable: false,
33142
33269
  configurable: true
33143
33270
  });
33271
+ Question.prototype.getErrorLocation = function () {
33272
+ if (this.errorLocation !== "default")
33273
+ return this.errorLocation;
33274
+ if (this.parentQuestion)
33275
+ return this.parentQuestion.getChildErrorLocation(this);
33276
+ if (this.parent)
33277
+ return this.parent.getQuestionErrorLocation();
33278
+ return this.survey ? this.survey.questionErrorLocation : "top";
33279
+ };
33280
+ Question.prototype.getChildErrorLocation = function (child) {
33281
+ return this.getErrorLocation();
33282
+ };
33144
33283
  Object.defineProperty(Question.prototype, "hasInput", {
33145
33284
  /**
33146
33285
  * Returns `false` if the question has no input fields ([HTML](https://surveyjs.io/form-library/documentation/questionhtmlmodel), [Image](https://surveyjs.io/form-library/documentation/questionimagemodel), and similar question types).
@@ -33283,6 +33422,17 @@ var Question = /** @class */ (function (_super) {
33283
33422
  enumerable: false,
33284
33423
  configurable: true
33285
33424
  });
33425
+ Object.defineProperty(Question.prototype, "renderedCommentPlaceholder", {
33426
+ get: function () {
33427
+ return this.getPropertyValue("renderedCommentPlaceholder");
33428
+ },
33429
+ enumerable: false,
33430
+ configurable: true
33431
+ });
33432
+ Question.prototype.calcRenderedCommentPlaceholder = function () {
33433
+ var res = !this.isReadOnly ? this.commentPlaceHolder : undefined;
33434
+ this.setPropertyValue("renderedCommentPlaceholder", res);
33435
+ };
33286
33436
  Question.prototype.getAllErrors = function () {
33287
33437
  return this.errors.slice();
33288
33438
  };
@@ -33309,6 +33459,7 @@ var Question = /** @class */ (function (_super) {
33309
33459
  };
33310
33460
  Question.prototype.localeChanged = function () {
33311
33461
  _super.prototype.localeChanged.call(this);
33462
+ this.calcRenderedCommentPlaceholder();
33312
33463
  if (!!this.localeChangedCallback) {
33313
33464
  this.localeChangedCallback();
33314
33465
  }
@@ -33320,6 +33471,11 @@ var Question = /** @class */ (function (_super) {
33320
33471
  enumerable: false,
33321
33472
  configurable: true
33322
33473
  });
33474
+ Object.defineProperty(Question.prototype, "isContainer", {
33475
+ get: function () { return false; },
33476
+ enumerable: false,
33477
+ configurable: true
33478
+ });
33323
33479
  Question.prototype.updateCommentElements = function () {
33324
33480
  if (!this.autoGrowComment || !Array.isArray(this.commentElements))
33325
33481
  return;
@@ -33544,7 +33700,7 @@ var Question = /** @class */ (function (_super) {
33544
33700
  return _super.prototype.getIsErrorsModeTooltip.call(this) && !this.customWidget;
33545
33701
  };
33546
33702
  Question.prototype.showErrorOnCore = function (location) {
33547
- return !this.isErrorsModeTooltip && !this.showErrorsAboveQuestion && !this.showErrorsBelowQuestion && this.errorLocation === location;
33703
+ return !this.isErrorsModeTooltip && !this.showErrorsAboveQuestion && !this.showErrorsBelowQuestion && this.getErrorLocation() === location;
33548
33704
  };
33549
33705
  Object.defineProperty(Question.prototype, "showErrorOnTop", {
33550
33706
  get: function () {
@@ -33577,14 +33733,14 @@ var Question = /** @class */ (function (_super) {
33577
33733
  });
33578
33734
  Object.defineProperty(Question.prototype, "showErrorsAboveQuestion", {
33579
33735
  get: function () {
33580
- return this.showErrorsOutsideQuestion && this.errorLocation === "top";
33736
+ return this.showErrorsOutsideQuestion && this.getErrorLocation() === "top";
33581
33737
  },
33582
33738
  enumerable: false,
33583
33739
  configurable: true
33584
33740
  });
33585
33741
  Object.defineProperty(Question.prototype, "showErrorsBelowQuestion", {
33586
33742
  get: function () {
33587
- return this.showErrorsOutsideQuestion && this.errorLocation === "bottom";
33743
+ return this.showErrorsOutsideQuestion && this.getErrorLocation() === "bottom";
33588
33744
  },
33589
33745
  enumerable: false,
33590
33746
  configurable: true
@@ -33690,7 +33846,7 @@ var Question = /** @class */ (function (_super) {
33690
33846
  * Moves focus to the input field of this question.
33691
33847
  * @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.
33692
33848
  */
33693
- Question.prototype.focus = function (onError) {
33849
+ Question.prototype.focus = function (onError, scrollIfVisible) {
33694
33850
  if (onError === void 0) { onError = false; }
33695
33851
  if (this.isDesignMode || !this.isVisible || !this.survey)
33696
33852
  return;
@@ -33700,14 +33856,14 @@ var Question = /** @class */ (function (_super) {
33700
33856
  this.survey.focusQuestionByInstance(this, onError);
33701
33857
  }
33702
33858
  else {
33703
- this.focuscore(onError);
33859
+ this.focuscore(onError, scrollIfVisible);
33704
33860
  }
33705
33861
  };
33706
- Question.prototype.focuscore = function (onError) {
33862
+ Question.prototype.focuscore = function (onError, scrollIfVisible) {
33707
33863
  if (onError === void 0) { onError = false; }
33708
33864
  if (!!this.survey) {
33709
33865
  this.expandAllParents(this);
33710
- this.survey.scrollElementToTop(this, this, null, this.id);
33866
+ this.survey.scrollElementToTop(this, this, null, this.id, scrollIfVisible);
33711
33867
  }
33712
33868
  var id = !onError
33713
33869
  ? this.getFirstInputElementId()
@@ -33726,7 +33882,7 @@ var Question = /** @class */ (function (_super) {
33726
33882
  this.expandAllParents(element.parentQuestion);
33727
33883
  };
33728
33884
  Question.prototype.focusIn = function () {
33729
- if (!this.survey)
33885
+ if (!this.survey || this.isDisposed || this.isContainer)
33730
33886
  return;
33731
33887
  this.survey.whenQuestionFocusIn(this);
33732
33888
  };
@@ -33936,6 +34092,7 @@ var Question = /** @class */ (function (_super) {
33936
34092
  this.setPropertyValue("isInputReadOnly", this.isInputReadOnly);
33937
34093
  _super.prototype.onReadOnlyChanged.call(this);
33938
34094
  this.updateQuestionCss();
34095
+ this.calcRenderedCommentPlaceholder();
33939
34096
  };
33940
34097
  Object.defineProperty(Question.prototype, "enableIf", {
33941
34098
  /**
@@ -34008,6 +34165,7 @@ var Question = /** @class */ (function (_super) {
34008
34165
  if (this.isEmpty()) {
34009
34166
  this.initDataFromSurvey();
34010
34167
  }
34168
+ this.calcRenderedCommentPlaceholder();
34011
34169
  this.onIndentChanged();
34012
34170
  };
34013
34171
  Question.prototype.onSetData = function () {
@@ -34086,8 +34244,32 @@ var Question = /** @class */ (function (_super) {
34086
34244
  Object.defineProperty(Question.prototype, "value", {
34087
34245
  /**
34088
34246
  * Gets or sets the question value.
34089
- * @see SurveyModel.setValue
34090
- * @see SurveyModel.getValue
34247
+ *
34248
+ * The following table illustrates how the value type depends on the question type:
34249
+ *
34250
+ * | Question type | Value type(s) |
34251
+ * | ------------- | ------------- |
34252
+ * | Checkboxes | `Array<String \| Number>` |
34253
+ * | Dropdown | `String` \| `Number` |
34254
+ * | Dynamic Matrix | `Array<Object>` |
34255
+ * | Dynamic Panel | `Array<Object>` |
34256
+ * | Expression | `String` \| `Number` \| `Boolean` |
34257
+ * | File Upload | `File` \| `Array<File>` |
34258
+ * | HTML | (no value) |
34259
+ * | Image | (no value) |
34260
+ * | Image Picker | `Array<String \| Number>` |
34261
+ * | Long Text | `String` |
34262
+ * | Multi-Select Dropdown | `Object` |
34263
+ * | Multi-Select Matrix | `Object` |
34264
+ * | Multiple Textboxes | `Array<String>` |
34265
+ * | Panel | (no value) |
34266
+ * | Radio Button Group | `String` \| `Number` |
34267
+ * | Ranking | `Array<String \| Number>` |
34268
+ * | Rating Scale | `Number` \| `String` |
34269
+ * | Signature | `String` (base64-encoded image) |
34270
+ * | Single-Line Input | `String` \| `Number` \| `Date` |
34271
+ * | Single-Select Matrix | `Object` |
34272
+ * | Yes/No (Boolean) | `Boolean` \| `String` |
34091
34273
  */
34092
34274
  get: function () {
34093
34275
  return this.getValueCore();
@@ -34340,7 +34522,7 @@ var Question = /** @class */ (function (_super) {
34340
34522
  questionPlainData.questionType = this.getType();
34341
34523
  }
34342
34524
  (options.calculations || []).forEach(function (calculation) {
34343
- questionPlainData[calculation.propertyName] = _this[calculation.propertyName];
34525
+ questionPlainData[calculation.propertyName] = _this.getPlainDataCalculatedValue(calculation.propertyName);
34344
34526
  });
34345
34527
  if (this.hasComment) {
34346
34528
  questionPlainData.isNode = true;
@@ -34362,6 +34544,9 @@ var Question = /** @class */ (function (_super) {
34362
34544
  }
34363
34545
  return undefined;
34364
34546
  };
34547
+ Question.prototype.getPlainDataCalculatedValue = function (propName) {
34548
+ return this[propName];
34549
+ };
34365
34550
  Object.defineProperty(Question.prototype, "correctAnswer", {
34366
34551
  /**
34367
34552
  * A correct answer to this question. Specify this property if you want to [create a quiz](https://surveyjs.io/form-library/documentation/design-survey-create-a-quiz).
@@ -34676,6 +34861,9 @@ var Question = /** @class */ (function (_super) {
34676
34861
  this.survey.beforeSettingQuestionErrors(this, errors);
34677
34862
  }
34678
34863
  this.errors = errors;
34864
+ if (this.errors !== errors) {
34865
+ this.errors.forEach(function (er) { return er.locText.strChanged(); });
34866
+ }
34679
34867
  }
34680
34868
  this.updateContainsErrors();
34681
34869
  if (oldHasErrors != errors.length > 0) {
@@ -34826,10 +35014,8 @@ var Question = /** @class */ (function (_super) {
34826
35014
  Question.prototype.setNewValue = function (newValue) {
34827
35015
  if (this.isNewValueEqualsToValue(newValue))
34828
35016
  return;
34829
- if (!this.isValueEmpty(newValue, !this.allowSpaceAsAnswer) && !this.isNewValueCorrect(newValue)) {
34830
- _console_warnings__WEBPACK_IMPORTED_MODULE_12__["ConsoleWarnings"].inCorrectQuestionValue(this.name, newValue);
35017
+ if (!this.checkIsValueCorrect(newValue))
34831
35018
  return;
34832
- }
34833
35019
  this.isOldAnswered = this.isAnswered;
34834
35020
  this.setNewValueInData(newValue);
34835
35021
  this.allowNotifyValueChanged && this.onValueChanged();
@@ -34838,6 +35024,13 @@ var Question = /** @class */ (function (_super) {
34838
35024
  }
34839
35025
  this.isOldAnswered = undefined;
34840
35026
  };
35027
+ Question.prototype.checkIsValueCorrect = function (val) {
35028
+ var res = this.isValueEmpty(val, !this.allowSpaceAsAnswer) || this.isNewValueCorrect(val);
35029
+ if (!res) {
35030
+ _console_warnings__WEBPACK_IMPORTED_MODULE_12__["ConsoleWarnings"].inCorrectQuestionValue(this.name, val);
35031
+ }
35032
+ return res;
35033
+ };
34841
35034
  Question.prototype.isNewValueCorrect = function (val) {
34842
35035
  return true;
34843
35036
  };
@@ -34920,7 +35113,10 @@ var Question = /** @class */ (function (_super) {
34920
35113
  if (!!this.valueFromDataCallback) {
34921
35114
  newValue = this.valueFromDataCallback(newValue);
34922
35115
  }
35116
+ if (!this.checkIsValueCorrect(newValue))
35117
+ return;
34923
35118
  this.setQuestionValue(this.valueFromData(newValue));
35119
+ this.updateDependedQuestions();
34924
35120
  this.updateIsAnswered();
34925
35121
  };
34926
35122
  Question.prototype.updateCommentFromSurvey = function (newValue) {
@@ -35031,6 +35227,11 @@ var Question = /** @class */ (function (_super) {
35031
35227
  Question.prototype.processPopupVisiblilityChanged = function (popupModel, visible) {
35032
35228
  this.survey.processPopupVisiblityChanged(this, popupModel, visible);
35033
35229
  };
35230
+ Question.prototype.onTextKeyDownHandler = function (event) {
35231
+ if (event.keyCode === 13) {
35232
+ this.survey.questionEditFinishCallback(this, event);
35233
+ }
35234
+ };
35034
35235
  Question.prototype.transformToMobileView = function () { };
35035
35236
  Question.prototype.transformToDesktopView = function () { };
35036
35237
  Question.prototype.needResponsiveWidth = function () {
@@ -35152,10 +35353,13 @@ var Question = /** @class */ (function (_super) {
35152
35353
  };
35153
35354
  Question.prototype.dispose = function () {
35154
35355
  _super.prototype.dispose.call(this);
35356
+ this.resetDependedQuestions();
35357
+ this.destroyResizeObserver();
35358
+ };
35359
+ Question.prototype.resetDependedQuestions = function () {
35155
35360
  for (var i = 0; i < this.dependedQuestions.length; i++) {
35156
35361
  this.dependedQuestions[i].resetDependedQuestion();
35157
35362
  }
35158
- this.destroyResizeObserver();
35159
35363
  };
35160
35364
  Question.TextPreprocessorValuesMap = {
35161
35365
  title: "processedTitle",
@@ -35171,7 +35375,7 @@ var Question = /** @class */ (function (_super) {
35171
35375
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
35172
35376
  ], Question.prototype, "forceIsInputReadOnly", void 0);
35173
35377
  __decorate([
35174
- Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ localizable: true })
35378
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ localizable: true, onSet: function (val, target) { return target.calcRenderedCommentPlaceholder(); } })
35175
35379
  ], Question.prototype, "commentPlaceholder", void 0);
35176
35380
  __decorate([
35177
35381
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
@@ -35286,6 +35490,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("question", [
35286
35490
  name: "requiredErrorText:text",
35287
35491
  serializationProperty: "locRequiredErrorText",
35288
35492
  },
35493
+ { name: "errorLocation", default: "default", choices: ["default", "top", "bottom"] },
35289
35494
  { name: "readOnly:switch", overridingProperty: "enableIf" },
35290
35495
  {
35291
35496
  name: "validators:validators",
@@ -35567,7 +35772,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
35567
35772
 
35568
35773
 
35569
35774
  /**
35570
- * A base class for multiple-choice question types ([Checkbox](https://surveyjs.io/form-library/documentation/questioncheckboxmodel), [Dropdown](https://surveyjs.io/form-library/documentation/questiondropdownmodel), [Radiogroup](https://surveyjs.io/form-library/documentation/questionradiogroupmodel), etc.).
35775
+ * A base class for multiple-choice question types ([Checkboxes](https://surveyjs.io/form-library/documentation/questioncheckboxmodel), [Dropdown](https://surveyjs.io/form-library/documentation/questiondropdownmodel), [Radio Button Group](https://surveyjs.io/form-library/documentation/questionradiogroupmodel), etc.).
35571
35776
  */
35572
35777
  var QuestionSelectBase = /** @class */ (function (_super) {
35573
35778
  __extends(QuestionSelectBase, _super);
@@ -36291,11 +36496,11 @@ var QuestionSelectBase = /** @class */ (function (_super) {
36291
36496
  });
36292
36497
  Object.defineProperty(QuestionSelectBase.prototype, "choicesFromQuestion", {
36293
36498
  /**
36294
- * Inherits choice items from a specified question. Accepts a question name.
36499
+ * Copies choice items from a specified question. Accepts a question name.
36295
36500
  *
36296
- * If you specify this property, the `choices`, `choicesVisibleIf`, `choicesEnableIf`, and `choicesOrder` properties do not apply because their values are inherited.
36501
+ * If you specify this property, the `choices`, `choicesVisibleIf`, `choicesEnableIf`, and `choicesOrder` properties do not apply because their values are copied.
36297
36502
  *
36298
- * In addition, you can specify the `choicesFromQuestionMode` property if you do not want to inherit all choice items.
36503
+ * In addition, you can specify the `choicesFromQuestionMode` property if you do not want to copy all choice items.
36299
36504
  * @see choicesFromQuestionMode
36300
36505
  * @see choices
36301
36506
  */
@@ -36316,15 +36521,15 @@ var QuestionSelectBase = /** @class */ (function (_super) {
36316
36521
  });
36317
36522
  Object.defineProperty(QuestionSelectBase.prototype, "choicesFromQuestionMode", {
36318
36523
  /**
36319
- * Specifies which choice items to inherit from another question. Applies only when the `choicesFromQuestion` property is specified.
36524
+ * Specifies which choice items to copy from another question. Applies only when the `choicesFromQuestion` property is specified.
36320
36525
  *
36321
36526
  * Possible values:
36322
36527
  *
36323
- * - `"all"` (default) - Inherits all choice items.
36324
- * - `"selected"` - Inherits only selected choice items.
36325
- * - `"unselected"` - Inherits only unselected choice items.
36528
+ * - `"all"` (default) - Copies all choice items.
36529
+ * - `"selected"` - Copies only selected choice items.
36530
+ * - `"unselected"` - Copies only unselected choice items.
36326
36531
  *
36327
- * Use the `visibleChoices` property to access inherited choice items.
36532
+ * Use the `visibleChoices` property to access copied choice items.
36328
36533
  * @see choicesFromQuestion
36329
36534
  * @see visibleChoices
36330
36535
  */
@@ -36338,6 +36543,11 @@ var QuestionSelectBase = /** @class */ (function (_super) {
36338
36543
  configurable: true
36339
36544
  });
36340
36545
  Object.defineProperty(QuestionSelectBase.prototype, "choiceValuesFromQuestion", {
36546
+ /**
36547
+ * Specifies which matrix column or dynamic panel question supplies choice values. Use this property to construct choice items based on cell values in Dynamic Matrix and question values in Dynamic Panel.
36548
+ *
36549
+ * Each choice item consists of a value saved in survey results and a text displayed in the UI. To construct a choice item, assign the `name` of a Dynamic Matrix or Dynamic Panel to the [`choicesFromQuestion`](#choicesFromQuestion) property and specify which dynamic panel question or matrix column supplies values and which provides texts. Use the `choiceValuesFromQuestion` and [`choiceTextsFromQuestion`](#choiceTextsFromQuestion) properties for this purpose. If a choice text is empty, a choice value is used as a display text and saved in survey results.
36550
+ */
36341
36551
  get: function () {
36342
36552
  return this.getPropertyValue("choiceValuesFromQuestion");
36343
36553
  },
@@ -36348,6 +36558,11 @@ var QuestionSelectBase = /** @class */ (function (_super) {
36348
36558
  configurable: true
36349
36559
  });
36350
36560
  Object.defineProperty(QuestionSelectBase.prototype, "choiceTextsFromQuestion", {
36561
+ /**
36562
+ * Specifies which matrix column or dynamic panel question supplies choice texts. Use this property to construct choice items based on cell values in Dynamic Matrix and question values in Dynamic Panel.
36563
+ *
36564
+ * Each choice item consists of a value saved in survey results and a text displayed in the UI. To construct a choice item, assign the `name` of a Dynamic Matrix or Dynamic Panel to the [`choicesFromQuestion`](#choicesFromQuestion) property and specify which dynamic panel question or matrix column supplies values and which provides texts. Use the [`choiceValuesFromQuestion`](#choiceValuesFromQuestion) and `choiceTextsFromQuestion` properties for this purpose. If a choice text is empty, a choice value is used as a display text and saved in survey results.
36565
+ */
36351
36566
  get: function () {
36352
36567
  return this.getPropertyValue("choiceTextsFromQuestion");
36353
36568
  },
@@ -37682,7 +37897,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
37682
37897
 
37683
37898
 
37684
37899
  /**
37685
- * A class that describes the Boolean question type.
37900
+ * A class that describes the Yes/No (Boolean) question type.
37686
37901
  *
37687
37902
  * [View Demo](https://surveyjs.io/form-library/examples/questiontype-boolean/ (linkStyle))
37688
37903
  */
@@ -37731,7 +37946,7 @@ var QuestionBooleanModel = /** @class */ (function (_super) {
37731
37946
  return this.value == this.getValueTrue();
37732
37947
  },
37733
37948
  set: function (val) {
37734
- if (this.isReadOnly) {
37949
+ if (this.isReadOnly || this.isDesignMode) {
37735
37950
  return;
37736
37951
  }
37737
37952
  this.setBooleanValue(val);
@@ -37980,9 +38195,8 @@ var QuestionBooleanModel = /** @class */ (function (_super) {
37980
38195
  };
37981
38196
  QuestionBooleanModel.prototype.onKeyDownCore = function (event) {
37982
38197
  if (event.key === "ArrowLeft" || event.key === "ArrowRight") {
37983
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__["preventDefaults"])(event);
38198
+ event.stopPropagation();
37984
38199
  this.calculateBooleanValueByEvent(event, event.key === "ArrowRight");
37985
- return;
37986
38200
  }
37987
38201
  return true;
37988
38202
  };
@@ -38317,7 +38531,7 @@ var __extends = (undefined && undefined.__extends) || (function () {
38317
38531
 
38318
38532
 
38319
38533
  /**
38320
- * A class that describes the Checkbox question type.
38534
+ * A class that describes the Checkboxes question type.
38321
38535
  *
38322
38536
  * [View Demo](https://surveyjs.io/form-library/examples/questiontype-checkbox/ (linkStyle))
38323
38537
  */
@@ -39017,7 +39231,7 @@ var __extends = (undefined && undefined.__extends) || (function () {
39017
39231
 
39018
39232
 
39019
39233
  /**
39020
- * A class that describes the Comment question type.
39234
+ * A class that describes the Long Text question type.
39021
39235
  *
39022
39236
  * [View Demo](https://surveyjs.io/form-library/examples/questiontype-comment/ (linkStyle))
39023
39237
  */
@@ -39583,6 +39797,9 @@ var QuestionCustomModelBase = /** @class */ (function (_super) {
39583
39797
  QuestionCustomModelBase.prototype.validateContainerOnly = function () {
39584
39798
  // do nothing
39585
39799
  };
39800
+ QuestionCustomModelBase.prototype.getQuestionErrorLocation = function () {
39801
+ return this.getErrorLocation();
39802
+ };
39586
39803
  QuestionCustomModelBase.prototype.getContentDisplayValueCore = function (keyAsText, value, question) {
39587
39804
  if (!question)
39588
39805
  return _super.prototype.getDisplayValueCore.call(this, keyAsText, value);
@@ -39869,6 +40086,16 @@ var QuestionCompositeModel = /** @class */ (function (_super) {
39869
40086
  questions[i].onAnyValueChanged(name);
39870
40087
  }
39871
40088
  };
40089
+ Object.defineProperty(QuestionCompositeModel.prototype, "hasSingleInput", {
40090
+ get: function () { return false; },
40091
+ enumerable: false,
40092
+ configurable: true
40093
+ });
40094
+ Object.defineProperty(QuestionCompositeModel.prototype, "isContainer", {
40095
+ get: function () { return true; },
40096
+ enumerable: false,
40097
+ configurable: true
40098
+ });
39872
40099
  QuestionCompositeModel.prototype.createPanel = function () {
39873
40100
  var _this = this;
39874
40101
  var res = _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].createClass("panel");
@@ -40355,7 +40582,7 @@ var QuestionDropdownModel = /** @class */ (function (_super) {
40355
40582
  });
40356
40583
  Object.defineProperty(QuestionDropdownModel.prototype, "showSelectedItemLocText", {
40357
40584
  get: function () {
40358
- return !this.inputHasValue && !this.inputFieldComponentName && !!this.selectedItemLocText;
40585
+ return !this.inputHasValue && !this.inputFieldComponentName && !!this.selectedItemLocText && this.dropdownListModel.canShowSelectedItem;
40359
40586
  },
40360
40587
  enumerable: false,
40361
40588
  configurable: true
@@ -41129,12 +41356,13 @@ __webpack_require__.r(__webpack_exports__);
41129
41356
  /* harmony import */ var _question__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./question */ "./src/question.ts");
41130
41357
  /* harmony import */ var _jsonobject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jsonobject */ "./src/jsonobject.ts");
41131
41358
  /* harmony import */ var _questionfactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./questionfactory */ "./src/questionfactory.ts");
41132
- /* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./error */ "./src/error.ts");
41133
- /* harmony import */ var _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/cssClassBuilder */ "./src/utils/cssClassBuilder.ts");
41134
- /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/utils */ "./src/utils/utils.ts");
41135
- /* harmony import */ var _actions_container__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./actions/container */ "./src/actions/container.ts");
41136
- /* harmony import */ var _actions_action__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./actions/action */ "./src/actions/action.ts");
41137
- /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts");
41359
+ /* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ "./src/base.ts");
41360
+ /* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./error */ "./src/error.ts");
41361
+ /* harmony import */ var _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/cssClassBuilder */ "./src/utils/cssClassBuilder.ts");
41362
+ /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/utils */ "./src/utils/utils.ts");
41363
+ /* harmony import */ var _actions_container__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./actions/container */ "./src/actions/container.ts");
41364
+ /* harmony import */ var _actions_action__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./actions/action */ "./src/actions/action.ts");
41365
+ /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts");
41138
41366
  var __extends = (undefined && undefined.__extends) || (function () {
41139
41367
  var extendStatics = function (d, b) {
41140
41368
  extendStatics = Object.setPrototypeOf ||
@@ -41165,8 +41393,9 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
41165
41393
 
41166
41394
 
41167
41395
 
41396
+
41168
41397
  /**
41169
- * A class that describes the File question type.
41398
+ * A class that describes the File Upload question type.
41170
41399
  *
41171
41400
  * [View Demo](https://surveyjs.io/form-library/examples/file-upload/ (linkStyle))
41172
41401
  */
@@ -41188,7 +41417,7 @@ var QuestionFileModel = /** @class */ (function (_super) {
41188
41417
  */
41189
41418
  _this.onUploadStateChanged = _this.addEvent();
41190
41419
  _this.onStateChanged = _this.addEvent();
41191
- _this.mobileFileNavigator = new _actions_container__WEBPACK_IMPORTED_MODULE_6__["ActionContainer"]();
41420
+ _this.mobileFileNavigator = new _actions_container__WEBPACK_IMPORTED_MODULE_7__["ActionContainer"]();
41192
41421
  _this.dragCounter = 0;
41193
41422
  _this.onDragEnter = function (event) {
41194
41423
  if (!_this.isInputReadOnly) {
@@ -41227,29 +41456,24 @@ var QuestionFileModel = /** @class */ (function (_super) {
41227
41456
  _this.onChange(src);
41228
41457
  };
41229
41458
  _this.doClean = function (event) {
41230
- var src = event.currentTarget || event.srcElement;
41231
41459
  if (_this.needConfirmRemoveFile) {
41232
- var isConfirmed = Object(_utils_utils__WEBPACK_IMPORTED_MODULE_5__["confirmAction"])(_this.confirmRemoveAllMessage);
41233
- if (!isConfirmed)
41234
- return;
41235
- }
41236
- if (_this.rootElement) {
41237
- _this.rootElement.querySelectorAll("input")[0].value = "";
41460
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["confirmActionAsync"])(_this.confirmRemoveAllMessage, function () { _this.clearFilesCore(); });
41461
+ return;
41238
41462
  }
41239
- _this.clear();
41463
+ _this.clearFilesCore();
41240
41464
  };
41241
41465
  _this.doDownloadFile = function (event, data) {
41242
- if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_5__["detectIEOrEdge"])()) {
41466
+ if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["detectIEOrEdge"])()) {
41243
41467
  event.preventDefault();
41244
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_5__["loadFileFromBase64"])(data.content, data.name);
41468
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["loadFileFromBase64"])(data.content, data.name);
41245
41469
  }
41246
41470
  };
41247
- _this.fileIndexAction = new _actions_action__WEBPACK_IMPORTED_MODULE_7__["Action"]({
41471
+ _this.fileIndexAction = new _actions_action__WEBPACK_IMPORTED_MODULE_8__["Action"]({
41248
41472
  id: "fileIndex",
41249
41473
  title: _this.getFileIndexCaption(),
41250
41474
  enabled: false
41251
41475
  });
41252
- _this.prevFileAction = new _actions_action__WEBPACK_IMPORTED_MODULE_7__["Action"]({
41476
+ _this.prevFileAction = new _actions_action__WEBPACK_IMPORTED_MODULE_8__["Action"]({
41253
41477
  id: "prevPage",
41254
41478
  iconSize: 16,
41255
41479
  action: function () {
@@ -41257,7 +41481,7 @@ var QuestionFileModel = /** @class */ (function (_super) {
41257
41481
  _this.fileIndexAction.title = _this.getFileIndexCaption();
41258
41482
  }
41259
41483
  });
41260
- _this.nextFileAction = new _actions_action__WEBPACK_IMPORTED_MODULE_7__["Action"]({
41484
+ _this.nextFileAction = new _actions_action__WEBPACK_IMPORTED_MODULE_8__["Action"]({
41261
41485
  id: "nextPage",
41262
41486
  iconSize: 16,
41263
41487
  action: function () {
@@ -41450,6 +41674,21 @@ var QuestionFileModel = /** @class */ (function (_super) {
41450
41674
  QuestionFileModel.prototype.getConfirmRemoveMessage = function (fileName) {
41451
41675
  return this.confirmRemoveMessage.format(fileName);
41452
41676
  };
41677
+ Object.defineProperty(QuestionFileModel.prototype, "renderedPlaceholder", {
41678
+ get: function () {
41679
+ var _this = this;
41680
+ if (this.renderedPlaceholderValue === undefined) {
41681
+ this.renderedPlaceholderValue = (new _base__WEBPACK_IMPORTED_MODULE_3__["ComputedUpdater"](function () {
41682
+ var dragAreaText = _this.dragAreaPlaceholder;
41683
+ var readOnlyText = _this.noFileChosenCaption;
41684
+ return _this.isReadOnly ? readOnlyText : dragAreaText;
41685
+ }));
41686
+ }
41687
+ return this.renderedPlaceholderValue;
41688
+ },
41689
+ enumerable: false,
41690
+ configurable: true
41691
+ });
41453
41692
  Object.defineProperty(QuestionFileModel.prototype, "inputTitle", {
41454
41693
  get: function () {
41455
41694
  if (this.isUploading)
@@ -41528,7 +41767,7 @@ var QuestionFileModel = /** @class */ (function (_super) {
41528
41767
  if (status === "success") {
41529
41768
  var oldValue = _this.value;
41530
41769
  if (Array.isArray(oldValue)) {
41531
- _this.value = oldValue.filter(function (f) { return !_helpers__WEBPACK_IMPORTED_MODULE_8__["Helpers"].isTwoValueEquals(f, content, true, false, false); });
41770
+ _this.value = oldValue.filter(function (f) { return !_helpers__WEBPACK_IMPORTED_MODULE_9__["Helpers"].isTwoValueEquals(f, content, true, false, false); });
41532
41771
  }
41533
41772
  else {
41534
41773
  _this.value = undefined;
@@ -41638,7 +41877,7 @@ var QuestionFileModel = /** @class */ (function (_super) {
41638
41877
  QuestionFileModel.prototype.onCheckForErrors = function (errors, isOnValueChanged) {
41639
41878
  _super.prototype.onCheckForErrors.call(this, errors, isOnValueChanged);
41640
41879
  if (this.isUploading && this.waitForUpload) {
41641
- errors.push(new _error__WEBPACK_IMPORTED_MODULE_3__["UploadingFileError"](this.getLocalizationString("uploadingFile"), this));
41880
+ errors.push(new _error__WEBPACK_IMPORTED_MODULE_4__["UploadingFileError"](this.getLocalizationString("uploadingFile"), this));
41642
41881
  }
41643
41882
  };
41644
41883
  QuestionFileModel.prototype.stateChanged = function (state) {
@@ -41663,7 +41902,7 @@ var QuestionFileModel = /** @class */ (function (_super) {
41663
41902
  var errorLength = this.errors ? this.errors.length : 0;
41664
41903
  (files || []).forEach(function (file) {
41665
41904
  if (_this.maxSize > 0 && file.size > _this.maxSize) {
41666
- _this.errors.push(new _error__WEBPACK_IMPORTED_MODULE_3__["ExceedSizeError"](_this.maxSize, _this));
41905
+ _this.errors.push(new _error__WEBPACK_IMPORTED_MODULE_4__["ExceedSizeError"](_this.maxSize, _this));
41667
41906
  }
41668
41907
  });
41669
41908
  return errorLength === this.errors.length;
@@ -41703,7 +41942,7 @@ var QuestionFileModel = /** @class */ (function (_super) {
41703
41942
  };
41704
41943
  QuestionFileModel.prototype.getChooseFileCss = function () {
41705
41944
  var isAnswered = this.isAnswered;
41706
- return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_4__["CssClassBuilder"]()
41945
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]()
41707
41946
  .append(this.cssClasses.chooseFile)
41708
41947
  .append(this.cssClasses.controlDisabled, this.isReadOnly)
41709
41948
  .append(this.cssClasses.chooseFileAsText, !isAnswered)
@@ -41712,14 +41951,14 @@ var QuestionFileModel = /** @class */ (function (_super) {
41712
41951
  .toString();
41713
41952
  };
41714
41953
  QuestionFileModel.prototype.getReadOnlyFileCss = function () {
41715
- return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_4__["CssClassBuilder"]()
41954
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]()
41716
41955
  .append("form-control")
41717
41956
  .append(this.cssClasses.placeholderInput)
41718
41957
  .toString();
41719
41958
  };
41720
41959
  Object.defineProperty(QuestionFileModel.prototype, "fileRootCss", {
41721
41960
  get: function () {
41722
- return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_4__["CssClassBuilder"]()
41961
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]()
41723
41962
  .append(this.cssClasses.root)
41724
41963
  .append(this.cssClasses.single, !this.allowMultiple)
41725
41964
  .append(this.cssClasses.singleImage, !this.allowMultiple && this.isAnswered && this.canPreviewImage(this.value[0]))
@@ -41730,7 +41969,7 @@ var QuestionFileModel = /** @class */ (function (_super) {
41730
41969
  configurable: true
41731
41970
  });
41732
41971
  QuestionFileModel.prototype.getFileDecoratorCss = function () {
41733
- return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_4__["CssClassBuilder"]()
41972
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]()
41734
41973
  .append(this.cssClasses.fileDecorator)
41735
41974
  .append(this.cssClasses.onError, this.errors.length > 0)
41736
41975
  .append(this.cssClasses.fileDecoratorDrag, this.isDragging)
@@ -41764,12 +42003,21 @@ var QuestionFileModel = /** @class */ (function (_super) {
41764
42003
  this.rootElement = el;
41765
42004
  _super.prototype.afterRender.call(this, el);
41766
42005
  };
42006
+ QuestionFileModel.prototype.clearFilesCore = function () {
42007
+ if (this.rootElement) {
42008
+ this.rootElement.querySelectorAll("input")[0].value = "";
42009
+ }
42010
+ this.clear();
42011
+ };
41767
42012
  QuestionFileModel.prototype.doRemoveFile = function (data) {
42013
+ var _this = this;
41768
42014
  if (this.needConfirmRemoveFile) {
41769
- var isConfirmed = Object(_utils_utils__WEBPACK_IMPORTED_MODULE_5__["confirmAction"])(this.getConfirmRemoveMessage(data.name));
41770
- if (!isConfirmed)
41771
- return;
42015
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["confirmActionAsync"])(this.getConfirmRemoveMessage(data.name), function () { _this.removeFileCore(data); });
42016
+ return;
41772
42017
  }
42018
+ this.removeFileCore(data);
42019
+ };
42020
+ QuestionFileModel.prototype.removeFileCore = function (data) {
41773
42021
  var previewIndex = this.previewValue.indexOf(data);
41774
42022
  this.removeFileByContent(previewIndex === -1 ? data : this.value[previewIndex]);
41775
42023
  };
@@ -41821,6 +42069,9 @@ var QuestionFileModel = /** @class */ (function (_super) {
41821
42069
  __decorate([
41822
42070
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])({ localizable: { defaultStr: "fileDragAreaPlaceholder" } })
41823
42071
  ], QuestionFileModel.prototype, "dragAreaPlaceholder", void 0);
42072
+ __decorate([
42073
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
42074
+ ], QuestionFileModel.prototype, "renderedPlaceholderValue", void 0);
41824
42075
  return QuestionFileModel;
41825
42076
  }(_question__WEBPACK_IMPORTED_MODULE_0__["Question"]));
41826
42077
 
@@ -41923,7 +42174,7 @@ var __extends = (undefined && undefined.__extends) || (function () {
41923
42174
 
41924
42175
 
41925
42176
  /**
41926
- * A class that describes the Html question type. Unlike other question types, Html cannot have a title or value.
42177
+ * A class that describes the HTML question type. Unlike other question types, HTML cannot have a title or value.
41927
42178
  *
41928
42179
  * [View Demo](https://surveyjs.io/form-library/examples/questiontype-html/ (linkStyle))
41929
42180
  */
@@ -42853,9 +43104,11 @@ var QuestionImagePickerModel = /** @class */ (function (_super) {
42853
43104
  QuestionImagePickerModel.prototype.afterRender = function (el) {
42854
43105
  var _this = this;
42855
43106
  _super.prototype.afterRender.call(this, el);
42856
- if (el && el.querySelector(this.getObservedElementSelector())) {
43107
+ var selector = this.getObservedElementSelector();
43108
+ var observedElement = el && selector ? el.querySelector(selector) : undefined;
43109
+ if (!!observedElement) {
42857
43110
  this.reCalcGapBetweenItemsCallback = function () {
42858
- _this.gapBetweenItems = Math.ceil(Number.parseFloat(window.getComputedStyle(el.querySelector(_this.getObservedElementSelector())).gap)) || 16;
43111
+ _this.gapBetweenItems = Math.ceil(Number.parseFloat(window.getComputedStyle(observedElement).gap)) || 16;
42859
43112
  };
42860
43113
  this.reCalcGapBetweenItemsCallback();
42861
43114
  }
@@ -43220,7 +43473,7 @@ var MatrixCells = /** @class */ (function () {
43220
43473
  }());
43221
43474
 
43222
43475
  /**
43223
- * A class that describes the Single-Choice Matrix question type.
43476
+ * A class that describes the Single-Select Matrix question type.
43224
43477
  *
43225
43478
  * [View Demo](https://surveyjs.io/form-library/examples/single-selection-matrix-table-question/ (linkStyle))
43226
43479
  */
@@ -43398,7 +43651,7 @@ var QuestionMatrixModel = /** @class */ (function (_super) {
43398
43651
  this.rows = this.sortVisibleRows(this.rows);
43399
43652
  };
43400
43653
  QuestionMatrixModel.prototype.isNewValueCorrect = function (val) {
43401
- return _helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isValueObject(val);
43654
+ return _helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].isValueObject(val, true);
43402
43655
  };
43403
43656
  QuestionMatrixModel.prototype.processRowsOnSet = function (newRows) {
43404
43657
  return this.sortVisibleRows(newRows);
@@ -43755,7 +44008,7 @@ var MatrixDropdownRowModel = /** @class */ (function (_super) {
43755
44008
  }(_question_matrixdropdownbase__WEBPACK_IMPORTED_MODULE_0__["MatrixDropdownRowModelBase"]));
43756
44009
 
43757
44010
  /**
43758
- * A class that describes the Multiple-Choice Matrix question type. Multiple-Choice Matrix allows you to use the [Dropdown](https://surveyjs.io/form-library/documentation/questiondropdownmodel), [Checkbox](https://surveyjs.io/form-library/documentation/questioncheckboxmodel), [Radiogroup](https://surveyjs.io/form-library/documentation/questionradiogroupmodel), [Text](https://surveyjs.io/form-library/documentation/questiontextmodel), and [Comment](https://surveyjs.io/form-library/documentation/questioncommentmodel) question types as cell editors.
44011
+ * A class that describes the Multi-Select Matrix question type. Multi-Select Matrix allows you to use the [Dropdown](https://surveyjs.io/form-library/documentation/questiondropdownmodel), [Checkbox](https://surveyjs.io/form-library/documentation/questioncheckboxmodel), [Radiogroup](https://surveyjs.io/form-library/documentation/questionradiogroupmodel), [Text](https://surveyjs.io/form-library/documentation/questiontextmodel), and [Comment](https://surveyjs.io/form-library/documentation/questioncommentmodel) question types as cell editors.
43759
44012
  *
43760
44013
  * [View Demo](https://surveyjs.io/form-library/examples/questiontype-matrixdropdown/ (linkStyle))
43761
44014
  */
@@ -43857,7 +44110,7 @@ var QuestionMatrixDropdownModel = /** @class */ (function (_super) {
43857
44110
  return res;
43858
44111
  };
43859
44112
  QuestionMatrixDropdownModel.prototype.isNewValueCorrect = function (val) {
43860
- return _helpers__WEBPACK_IMPORTED_MODULE_4__["Helpers"].isValueObject(val);
44113
+ return _helpers__WEBPACK_IMPORTED_MODULE_4__["Helpers"].isValueObject(val, true);
43861
44114
  };
43862
44115
  QuestionMatrixDropdownModel.prototype.clearIncorrectValues = function () {
43863
44116
  var val = this.value;
@@ -44321,15 +44574,14 @@ var MatrixDropdownRowModelBase = /** @class */ (function () {
44321
44574
  }
44322
44575
  values[MatrixDropdownRowModelBase.IndexVariableName] = this.rowIndex;
44323
44576
  values[MatrixDropdownRowModelBase.RowValueVariableName] = this.rowName;
44324
- if (!properties)
44325
- properties = {};
44326
- properties[MatrixDropdownRowModelBase.RowVariableName] = this;
44577
+ var newProps = _helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].createCopy(properties);
44578
+ newProps[MatrixDropdownRowModelBase.RowVariableName] = this;
44327
44579
  for (var i = 0; i < this.cells.length; i++) {
44328
44580
  values[MatrixDropdownRowModelBase.RowVariableName] = this.value;
44329
- this.cells[i].runCondition(values, properties);
44581
+ this.cells[i].runCondition(values, newProps);
44330
44582
  }
44331
44583
  if (!!this.detailPanel) {
44332
- this.detailPanel.runCondition(values, properties);
44584
+ this.detailPanel.runCondition(values, newProps);
44333
44585
  }
44334
44586
  };
44335
44587
  MatrixDropdownRowModelBase.prototype.clearValue = function () {
@@ -44820,9 +45072,12 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
44820
45072
  this.clearGeneratedRows();
44821
45073
  };
44822
45074
  Object.defineProperty(QuestionMatrixDropdownModelBase.prototype, "hasSingleInput", {
44823
- get: function () {
44824
- return false;
44825
- },
45075
+ get: function () { return false; },
45076
+ enumerable: false,
45077
+ configurable: true
45078
+ });
45079
+ Object.defineProperty(QuestionMatrixDropdownModelBase.prototype, "isContainer", {
45080
+ get: function () { return true; },
44826
45081
  enumerable: false,
44827
45082
  configurable: true
44828
45083
  });
@@ -44887,6 +45142,52 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
44887
45142
  enumerable: false,
44888
45143
  configurable: true
44889
45144
  });
45145
+ Object.defineProperty(QuestionMatrixDropdownModelBase.prototype, "detailErrorLocation", {
45146
+ /**
45147
+ * Specifies the error message position for questions within detail sections.
45148
+ *
45149
+ * Possible values:
45150
+ *
45151
+ * - `"default"` (default) - Inherits the setting from the [`errorLocation`](#errorLocation) property.
45152
+ * - `"top"` - Displays error messages above questions.
45153
+ * - `"bottom"` - Displays error messages below questions.
45154
+ * @see cellErrorLocation
45155
+ */
45156
+ get: function () {
45157
+ return this.getPropertyValue("detailErrorLocation");
45158
+ },
45159
+ set: function (value) {
45160
+ this.setPropertyValue("detailErrorLocation", value.toLowerCase());
45161
+ },
45162
+ enumerable: false,
45163
+ configurable: true
45164
+ });
45165
+ Object.defineProperty(QuestionMatrixDropdownModelBase.prototype, "cellErrorLocation", {
45166
+ /**
45167
+ * Specifies the error message position relative to matrix cells.
45168
+ *
45169
+ * Possible values:
45170
+ *
45171
+ * - `"default"` (default) - Inherits the setting from the [`errorLocation`](#errorLocation) property.
45172
+ * - `"top"` - Displays error messages above matrix cells.
45173
+ * - `"bottom"` - Displays error messages below matrix cells.
45174
+ * @see detailErrorLocation
45175
+ */
45176
+ get: function () {
45177
+ return this.getPropertyValue("cellErrorLocation");
45178
+ },
45179
+ set: function (value) {
45180
+ this.setPropertyValue("cellErrorLocation", value.toLowerCase());
45181
+ },
45182
+ enumerable: false,
45183
+ configurable: true
45184
+ });
45185
+ QuestionMatrixDropdownModelBase.prototype.getChildErrorLocation = function (child) {
45186
+ var errLocation = !!child.parent ? this.detailErrorLocation : this.cellErrorLocation;
45187
+ if (errLocation !== "default")
45188
+ return errLocation;
45189
+ return _super.prototype.getChildErrorLocation.call(this, child);
45190
+ };
44890
45191
  Object.defineProperty(QuestionMatrixDropdownModelBase.prototype, "isColumnLayoutHorizontal", {
44891
45192
  /**
44892
45193
  * Returns `true` if columns are placed in the horizontal direction and rows in the vertical direction.
@@ -45352,10 +45653,10 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
45352
45653
  QuestionMatrixDropdownModelBase.prototype.checkColumnsVisibility = function () {
45353
45654
  var hasChanged = false;
45354
45655
  for (var i = 0; i < this.visibleColumns.length; i++) {
45355
- if (!this.visibleColumns[i].visibleIf)
45656
+ var column = this.visibleColumns[i];
45657
+ if (!column.visibleIf && !column.isFilteredMultipleColumns)
45356
45658
  continue;
45357
- hasChanged =
45358
- this.isColumnVisibilityChanged(this.visibleColumns[i]) || hasChanged;
45659
+ hasChanged = this.isColumnVisibilityChanged(column) || hasChanged;
45359
45660
  }
45360
45661
  if (hasChanged) {
45361
45662
  this.resetRenderedTable();
@@ -45379,20 +45680,43 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
45379
45680
  };
45380
45681
  QuestionMatrixDropdownModelBase.prototype.isColumnVisibilityChanged = function (column) {
45381
45682
  var curVis = column.hasVisibleCell;
45683
+ var isMultipleColumnsVisibility = column.isFilteredMultipleColumns;
45684
+ var curVisibleChoices = isMultipleColumnsVisibility ? column.getVisibleChoicesInCell : [];
45685
+ var newVisibleChoices = new Array();
45382
45686
  var hasVisCell = false;
45383
45687
  var rows = this.generatedVisibleRows;
45384
45688
  for (var i = 0; i < rows.length; i++) {
45385
45689
  var cell = rows[i].cells[column.index];
45386
- if (!!cell && !!cell.question && cell.question.isVisible) {
45690
+ var q = cell === null || cell === void 0 ? void 0 : cell.question;
45691
+ if (!!q && q.isVisible) {
45387
45692
  hasVisCell = true;
45388
- break;
45693
+ if (isMultipleColumnsVisibility) {
45694
+ this.updateNewVisibleChoices(q, newVisibleChoices);
45695
+ }
45696
+ else
45697
+ break;
45389
45698
  }
45390
45699
  }
45391
45700
  if (curVis != hasVisCell) {
45392
45701
  column.hasVisibleCell = hasVisCell;
45393
45702
  }
45703
+ if (isMultipleColumnsVisibility) {
45704
+ column.setVisibleChoicesInCell(newVisibleChoices);
45705
+ if (!_helpers__WEBPACK_IMPORTED_MODULE_2__["Helpers"].isArraysEqual(curVisibleChoices, newVisibleChoices, true, false, false))
45706
+ return true;
45707
+ }
45394
45708
  return curVis != hasVisCell;
45395
45709
  };
45710
+ QuestionMatrixDropdownModelBase.prototype.updateNewVisibleChoices = function (q, dest) {
45711
+ var choices = q.visibleChoices;
45712
+ if (!Array.isArray(choices))
45713
+ return;
45714
+ for (var i = 0; i < choices.length; i++) {
45715
+ var ch = choices[i];
45716
+ if (dest.indexOf(ch.value) < 0)
45717
+ dest.push(ch.value);
45718
+ }
45719
+ };
45396
45720
  QuestionMatrixDropdownModelBase.prototype.runTotalsCondition = function (values, properties) {
45397
45721
  if (!this.generatedTotalRow)
45398
45722
  return;
@@ -45732,9 +46056,7 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
45732
46056
  };
45733
46057
  QuestionMatrixDropdownModelBase.prototype.getPlainData = function (options) {
45734
46058
  var _this = this;
45735
- if (options === void 0) { options = {
45736
- includeEmpty: true,
45737
- }; }
46059
+ if (options === void 0) { options = { includeEmpty: true }; }
45738
46060
  var questionPlainData = _super.prototype.getPlainData.call(this, options);
45739
46061
  if (!!questionPlainData) {
45740
46062
  questionPlainData.isNode = true;
@@ -46264,6 +46586,7 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
46264
46586
  this.setPropertyValue("detailButtonCss" + row.id, buttonBuilder.toString());
46265
46587
  };
46266
46588
  QuestionMatrixDropdownModelBase.prototype.createRowDetailPanel = function (row) {
46589
+ var _this = this;
46267
46590
  if (this.isDesignMode)
46268
46591
  return this.detailPanel;
46269
46592
  var panel = this.createNewDetailPanel();
@@ -46275,6 +46598,7 @@ var QuestionMatrixDropdownModelBase = /** @class */ (function (_super) {
46275
46598
  if (!!this.onCreateDetailPanelCallback) {
46276
46599
  this.onCreateDetailPanelCallback(row, panel);
46277
46600
  }
46601
+ panel.questions.forEach(function (q) { return q.setParentQuestion(_this); });
46278
46602
  return panel;
46279
46603
  };
46280
46604
  QuestionMatrixDropdownModelBase.prototype.getSharedQuestionByName = function (columnName, row) {
@@ -46384,6 +46708,9 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("matrixdropdownb
46384
46708
  choices: ["none", "underRow", "underRowSingle"],
46385
46709
  default: "none",
46386
46710
  },
46711
+ { name: "cellErrorLocation", default: "default", choices: ["default", "top", "bottom"] },
46712
+ { name: "detailErrorLocation", default: "default", choices: ["default", "top", "bottom"], visibleIf: function (obj) { return !!obj && obj.detailPanelMode != "none"; }
46713
+ },
46387
46714
  "horizontalScroll:boolean",
46388
46715
  {
46389
46716
  name: "choices:itemvalue[]", uniqueProperty: "value",
@@ -46633,6 +46960,49 @@ var MatrixDropdownColumn = /** @class */ (function (_super) {
46633
46960
  enumerable: false,
46634
46961
  configurable: true
46635
46962
  });
46963
+ MatrixDropdownColumn.prototype.getVisibleMultipleChoices = function () {
46964
+ var choices = this.templateQuestion.visibleChoices;
46965
+ if (!Array.isArray(choices))
46966
+ return [];
46967
+ if (!Array.isArray(this._visiblechoices))
46968
+ return choices;
46969
+ var res = new Array();
46970
+ for (var i = 0; i < choices.length; i++) {
46971
+ var item = choices[i];
46972
+ if (this._visiblechoices.indexOf(item.value) > -1)
46973
+ res.push(item);
46974
+ }
46975
+ return res;
46976
+ };
46977
+ Object.defineProperty(MatrixDropdownColumn.prototype, "getVisibleChoicesInCell", {
46978
+ get: function () {
46979
+ if (Array.isArray(this._visiblechoices))
46980
+ return this._visiblechoices;
46981
+ var res = this.templateQuestion.visibleChoices;
46982
+ return Array.isArray(res) ? res : [];
46983
+ },
46984
+ enumerable: false,
46985
+ configurable: true
46986
+ });
46987
+ MatrixDropdownColumn.prototype.setVisibleChoicesInCell = function (val) {
46988
+ this._visiblechoices = val;
46989
+ };
46990
+ Object.defineProperty(MatrixDropdownColumn.prototype, "isFilteredMultipleColumns", {
46991
+ get: function () {
46992
+ if (!this.showInMultipleColumns)
46993
+ return false;
46994
+ var choices = this.templateQuestion.choices;
46995
+ if (!Array.isArray(choices))
46996
+ return false;
46997
+ for (var i = 0; i < choices.length; i++) {
46998
+ if (choices[i].visibleIf)
46999
+ return true;
47000
+ }
47001
+ return false;
47002
+ },
47003
+ enumerable: false,
47004
+ configurable: true
47005
+ });
46636
47006
  Object.defineProperty(MatrixDropdownColumn.prototype, "name", {
46637
47007
  get: function () {
46638
47008
  return this.templateQuestion.name;
@@ -47458,6 +47828,11 @@ var QuestionMatrixDropdownRenderedCell = /** @class */ (function () {
47458
47828
  .append(matrixCssClasses.choiceCell, this.isChoice)
47459
47829
  .toString();
47460
47830
  };
47831
+ QuestionMatrixDropdownRenderedCell.prototype.focusIn = function () {
47832
+ if (this.question) {
47833
+ this.question.focusIn();
47834
+ }
47835
+ };
47461
47836
  QuestionMatrixDropdownRenderedCell.counter = 1;
47462
47837
  return QuestionMatrixDropdownRenderedCell;
47463
47838
  }());
@@ -47641,7 +48016,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
47641
48016
  Object.defineProperty(QuestionMatrixDropdownRenderedTable.prototype, "showCellErrorsTop", {
47642
48017
  get: function () {
47643
48018
  //todo
47644
- return this.matrix.errorLocation == "top";
48019
+ return this.matrix.getErrorLocation() === "top";
47645
48020
  },
47646
48021
  enumerable: false,
47647
48022
  configurable: true
@@ -47649,7 +48024,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
47649
48024
  Object.defineProperty(QuestionMatrixDropdownRenderedTable.prototype, "showCellErrorsBottom", {
47650
48025
  get: function () {
47651
48026
  //todo
47652
- return this.matrix.errorLocation == "bottom";
48027
+ return this.matrix.getErrorLocation() === "bottom";
47653
48028
  },
47654
48029
  enumerable: false,
47655
48030
  configurable: true
@@ -47792,10 +48167,10 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
47792
48167
  return;
47793
48168
  this.headerRowValue = this.createRenderedRow(this.cssClasses);
47794
48169
  if (this.allowRowsDragAndDrop) {
47795
- this.headerRow.cells.push(this.createHeaderCell(null));
48170
+ this.headerRow.cells.push(this.createHeaderCell(null, "action"));
47796
48171
  }
47797
48172
  if (this.hasActionCellInRows("start")) {
47798
- this.headerRow.cells.push(this.createHeaderCell(null));
48173
+ this.headerRow.cells.push(this.createHeaderCell(null, "action"));
47799
48174
  }
47800
48175
  if (this.matrix.hasRowText && this.matrix.showHeader) {
47801
48176
  this.headerRow.cells.push(this.createHeaderCell(null));
@@ -47926,12 +48301,13 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
47926
48301
  QuestionMatrixDropdownRenderedTable.prototype.getRowDragCell = function (rowIndex) {
47927
48302
  var cell = new QuestionMatrixDropdownRenderedCell();
47928
48303
  cell.isDragHandlerCell = true;
47929
- cell.className = this.getActionsCellClassName();
48304
+ cell.className = this.getActionsCellClassName(cell);
47930
48305
  cell.row = this.matrix.visibleRows[rowIndex];
47931
48306
  return cell;
47932
48307
  };
47933
- QuestionMatrixDropdownRenderedTable.prototype.getActionsCellClassName = function () {
47934
- return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]().append(this.cssClasses.actionsCell).append(this.cssClasses.verticalCell, !this.matrix.isColumnLayoutHorizontal).toString();
48308
+ QuestionMatrixDropdownRenderedTable.prototype.getActionsCellClassName = function (cell) {
48309
+ if (cell === void 0) { cell = null; }
48310
+ return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]().append(this.cssClasses.actionsCell).append(this.cssClasses.actionsCellDrag, cell === null || cell === void 0 ? void 0 : cell.isDragHandlerCell).append(this.cssClasses.verticalCell, !this.matrix.isColumnLayoutHorizontal).toString();
47935
48311
  };
47936
48312
  QuestionMatrixDropdownRenderedTable.prototype.getRowActionsCell = function (rowIndex, location) {
47937
48313
  var rowActions = this.getRowActions(rowIndex, location);
@@ -47945,7 +48321,8 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
47945
48321
  var itemValue = new _itemvalue__WEBPACK_IMPORTED_MODULE_2__["ItemValue"](actionContainer);
47946
48322
  cell.item = itemValue;
47947
48323
  cell.isActionsCell = true;
47948
- cell.className = this.getActionsCellClassName();
48324
+ cell.isDragHandlerCell = false;
48325
+ cell.className = this.getActionsCellClassName(cell);
47949
48326
  cell.row = this.matrix.visibleRows[rowIndex];
47950
48327
  return cell;
47951
48328
  }
@@ -47993,6 +48370,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
47993
48370
  actions.push(new _actions_action__WEBPACK_IMPORTED_MODULE_3__["Action"]({
47994
48371
  id: "remove-row",
47995
48372
  iconName: "icon-delete",
48373
+ iconSize: "auto",
47996
48374
  component: "sv-action-bar-item",
47997
48375
  innerCss: new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]().append(this.matrix.cssClasses.button).append(this.matrix.cssClasses.buttonRemove).toString(),
47998
48376
  location: "end",
@@ -48056,6 +48434,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
48056
48434
  renderedCell.className = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]()
48057
48435
  .append(renderedCell.className)
48058
48436
  .append(this.cssClasses.rowTextCell)
48437
+ .append(this.cssClasses.columnTitleCell, !this.matrix.isColumnLayoutHorizontal)
48059
48438
  .append(this.cssClasses.detailRowText, row.hasPanel)
48060
48439
  .toString();
48061
48440
  }
@@ -48181,7 +48560,8 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
48181
48560
  hCell.column = column;
48182
48561
  hCell.className = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]()
48183
48562
  .append(hCell.className)
48184
- .append(this.cssClasses.rowTextCell).toString();
48563
+ .append(this.cssClasses.rowTextCell)
48564
+ .append(this.cssClasses.columnTitleCell).toString();
48185
48565
  if (!choice) {
48186
48566
  this.setRequriedToHeaderCell(column, hCell);
48187
48567
  }
@@ -48289,7 +48669,7 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
48289
48669
  var choices = column.templateQuestion.choices;
48290
48670
  if (!!choices && Array.isArray(choices) && choices.length == 0)
48291
48671
  return this.matrix.choices;
48292
- choices = column.templateQuestion.visibleChoices;
48672
+ choices = column.getVisibleMultipleChoices();
48293
48673
  if (!choices || !Array.isArray(choices))
48294
48674
  return null;
48295
48675
  return choices;
@@ -48297,15 +48677,18 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
48297
48677
  QuestionMatrixDropdownRenderedTable.prototype.setHeaderCellCssClasses = function (cell, cellType) {
48298
48678
  cell.className = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]()
48299
48679
  .append(this.cssClasses.headerCell)
48680
+ .append(this.cssClasses.columnTitleCell, this.matrix.isColumnLayoutHorizontal)
48300
48681
  .append(this.cssClasses.emptyCell, !!cell.isEmpty)
48301
48682
  .append(this.cssClasses.cell + "--" + cellType, !!cellType)
48302
48683
  .toString();
48303
48684
  };
48304
- QuestionMatrixDropdownRenderedTable.prototype.createHeaderCell = function (column) {
48685
+ QuestionMatrixDropdownRenderedTable.prototype.createHeaderCell = function (column, cellType) {
48686
+ if (cellType === void 0) { cellType = null; }
48305
48687
  var cell = !!column ? this.createTextCell(column.locTitle) : this.createEmptyCell();
48306
48688
  cell.column = column;
48307
48689
  this.setHeaderCell(column, cell);
48308
- var cellType = (!!column && column.cellType !== "default") ? column.cellType : this.matrix.cellType;
48690
+ if (!cellType)
48691
+ cellType = (!!column && column.cellType !== "default") ? column.cellType : this.matrix.cellType;
48309
48692
  this.setHeaderCellCssClasses(cell, cellType);
48310
48693
  return cell;
48311
48694
  };
@@ -48345,6 +48728,10 @@ var QuestionMatrixDropdownRenderedTable = /** @class */ (function (_super) {
48345
48728
  QuestionMatrixDropdownRenderedTable.prototype.createEmptyCell = function () {
48346
48729
  var res = this.createTextCell(null);
48347
48730
  res.isEmpty = true;
48731
+ res.className = new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_5__["CssClassBuilder"]()
48732
+ .append(this.cssClasses.cell)
48733
+ .append(this.cssClasses.emptyCell)
48734
+ .toString();
48348
48735
  return res;
48349
48736
  };
48350
48737
  __decorate([
@@ -49006,6 +49393,7 @@ var QuestionMatrixDynamicModel = /** @class */ (function (_super) {
49006
49393
  * @param confirmDelete *Optional.* A Boolean value that specifies whether to display a confirmation dialog. If you do not specify this parameter, the [`confirmDelete`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model#confirmDelete) property value is used.
49007
49394
  */
49008
49395
  QuestionMatrixDynamicModel.prototype.removeRow = function (index, confirmDelete) {
49396
+ var _this = this;
49009
49397
  if (!this.canRemoveRows)
49010
49398
  return;
49011
49399
  if (index < 0 || index >= this.rowCount)
@@ -49016,8 +49404,13 @@ var QuestionMatrixDynamicModel = /** @class */ (function (_super) {
49016
49404
  if (confirmDelete === undefined) {
49017
49405
  confirmDelete = this.isRequireConfirmOnRowDelete(index);
49018
49406
  }
49019
- if (confirmDelete && !Object(_utils_utils__WEBPACK_IMPORTED_MODULE_5__["confirmAction"])(this.confirmDeleteText))
49407
+ if (confirmDelete) {
49408
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_5__["confirmActionAsync"])(this.confirmDeleteText, function () { _this.removeRowAsync(index, row); });
49020
49409
  return;
49410
+ }
49411
+ this.removeRowAsync(index, row);
49412
+ };
49413
+ QuestionMatrixDynamicModel.prototype.removeRowAsync = function (index, row) {
49021
49414
  if (!!row && !!this.survey && !this.survey.matrixRowRemoving(this, index, row))
49022
49415
  return;
49023
49416
  this.onStartRowAddingRemoving();
@@ -49534,7 +49927,7 @@ var MultipleTextEditorModel = /** @class */ (function (_super) {
49534
49927
  }(_question_text__WEBPACK_IMPORTED_MODULE_3__["QuestionTextModel"]));
49535
49928
 
49536
49929
  /**
49537
- * A class that describes an item in a [Multiple Text](https://surveyjs.io/form-library/documentation/api-reference/multiple-text-entry-question-model) question.
49930
+ * A class that describes an item in a [Multiple Textboxes](https://surveyjs.io/form-library/documentation/api-reference/multiple-text-entry-question-model) question.
49538
49931
  *
49539
49932
  * [View Demo](/form-library/examples/multiple-text-box-question/)
49540
49933
  */
@@ -49615,8 +50008,12 @@ var MultipleTextItemModel = /** @class */ (function (_super) {
49615
50008
  this.editor.defaultValue = data.getItemDefaultValue(this.name);
49616
50009
  this.editor.setSurveyImpl(this);
49617
50010
  this.editor.parent = data;
50011
+ this.editor.setParentQuestion(data);
49618
50012
  }
49619
50013
  };
50014
+ MultipleTextItemModel.prototype.focusIn = function () {
50015
+ this.editor.focusIn();
50016
+ };
49620
50017
  Object.defineProperty(MultipleTextItemModel.prototype, "isRequired", {
49621
50018
  /**
49622
50019
  * Set this property to true, to make the item a required. If a user doesn't fill the item then a validation error will be generated.
@@ -49909,9 +50306,12 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
49909
50306
  configurable: true
49910
50307
  });
49911
50308
  Object.defineProperty(QuestionMultipleTextModel.prototype, "hasSingleInput", {
49912
- get: function () {
49913
- return false;
49914
- },
50309
+ get: function () { return false; },
50310
+ enumerable: false,
50311
+ configurable: true
50312
+ });
50313
+ Object.defineProperty(QuestionMultipleTextModel.prototype, "isContainer", {
50314
+ get: function () { return true; },
49915
50315
  enumerable: false,
49916
50316
  configurable: true
49917
50317
  });
@@ -50045,8 +50445,35 @@ var QuestionMultipleTextModel = /** @class */ (function (_super) {
50045
50445
  this.items[i].localeChanged();
50046
50446
  }
50047
50447
  };
50448
+ Object.defineProperty(QuestionMultipleTextModel.prototype, "itemErrorLocation", {
50449
+ /**
50450
+ * Specifies the error message position relative to individual input fields.
50451
+ *
50452
+ * Possible values:
50453
+ *
50454
+ * - `"default"` (default) - Inherits the setting from the [`errorLocation`](#errorLocation) property.
50455
+ * - `"top"` - Displays error messages above input fields.
50456
+ * - `"bottom"` - Displays error messages below input fields.
50457
+ */
50458
+ get: function () {
50459
+ return this.getPropertyValue("itemErrorLocation");
50460
+ },
50461
+ set: function (val) {
50462
+ this.setPropertyValue("itemErrorLocation", val);
50463
+ },
50464
+ enumerable: false,
50465
+ configurable: true
50466
+ });
50467
+ QuestionMultipleTextModel.prototype.getQuestionErrorLocation = function () {
50468
+ if (this.itemErrorLocation !== "default")
50469
+ return this.itemErrorLocation;
50470
+ return this.getErrorLocation();
50471
+ };
50472
+ QuestionMultipleTextModel.prototype.getChildErrorLocation = function (child) {
50473
+ return this.getQuestionErrorLocation();
50474
+ };
50048
50475
  QuestionMultipleTextModel.prototype.isNewValueCorrect = function (val) {
50049
- return _helpers__WEBPACK_IMPORTED_MODULE_6__["Helpers"].isValueObject(val);
50476
+ return _helpers__WEBPACK_IMPORTED_MODULE_6__["Helpers"].isValueObject(val, true);
50050
50477
  };
50051
50478
  QuestionMultipleTextModel.prototype.supportGoNextPageAutomatic = function () {
50052
50479
  for (var i = 0; i < this.items.length; i++) {
@@ -50312,6 +50739,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_4__["Serializer"].addClass("multipletext",
50312
50739
  { name: "!items:textitems", className: "multipletextitem" },
50313
50740
  { name: "itemSize:number", minValue: 0 },
50314
50741
  { name: "colCount:number", default: 1, choices: [1, 2, 3, 4, 5] },
50742
+ { name: "itemErrorLocation", default: "default", choices: ["default", "top", "bottom"], visible: false }
50315
50743
  ], function () {
50316
50744
  return new QuestionMultipleTextModel("");
50317
50745
  }, "question");
@@ -50644,10 +51072,18 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
50644
51072
  _this.registerPropertyChangedHandlers(["allowAddPanel"], function () { _this.updateNoEntriesTextDefaultLoc(); });
50645
51073
  return _this;
50646
51074
  }
51075
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "isCompositeQuestion", {
51076
+ get: function () { return true; },
51077
+ enumerable: false,
51078
+ configurable: true
51079
+ });
50647
51080
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "hasSingleInput", {
50648
- get: function () {
50649
- return false;
50650
- },
51081
+ get: function () { return false; },
51082
+ enumerable: false,
51083
+ configurable: true
51084
+ });
51085
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "isContainer", {
51086
+ get: function () { return true; },
50651
51087
  enumerable: false,
50652
51088
  configurable: true
50653
51089
  });
@@ -50708,13 +51144,6 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
50708
51144
  QuestionPanelDynamicModel.prototype.getType = function () {
50709
51145
  return "paneldynamic";
50710
51146
  };
50711
- Object.defineProperty(QuestionPanelDynamicModel.prototype, "isCompositeQuestion", {
50712
- get: function () {
50713
- return true;
50714
- },
50715
- enumerable: false,
50716
- configurable: true
50717
- });
50718
51147
  QuestionPanelDynamicModel.prototype.clearOnDeletingContainer = function () {
50719
51148
  this.panels.forEach(function (panel) {
50720
51149
  panel.clearOnDeletingContainer();
@@ -51483,6 +51912,25 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
51483
51912
  enumerable: false,
51484
51913
  configurable: true
51485
51914
  });
51915
+ Object.defineProperty(QuestionPanelDynamicModel.prototype, "templateErrorLocation", {
51916
+ /**
51917
+ * Specifies the error message position.
51918
+ *
51919
+ * Possible values:
51920
+ *
51921
+ * - `"default"` (default) - Inherits the setting from the [`errorLocation`](#errorLocation) property.
51922
+ * - `"top"` - Displays error messages above questions.
51923
+ * - `"bottom"` - Displays error messages below questions.
51924
+ */
51925
+ get: function () {
51926
+ return this.getPropertyValue("templateErrorLocation");
51927
+ },
51928
+ set: function (value) {
51929
+ this.setPropertyValue("templateErrorLocation", value.toLowerCase());
51930
+ },
51931
+ enumerable: false,
51932
+ configurable: true
51933
+ });
51486
51934
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "showQuestionNumbers", {
51487
51935
  /**
51488
51936
  * Use this property to show/hide the numbers in titles in questions inside a dynamic panel.
@@ -51843,9 +52291,13 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
51843
52291
  *
51844
52292
  */
51845
52293
  QuestionPanelDynamicModel.prototype.removePanelUI = function (value) {
52294
+ var _this = this;
51846
52295
  if (!this.canRemovePanel)
51847
52296
  return;
51848
- if (!this.confirmDelete || Object(_utils_utils__WEBPACK_IMPORTED_MODULE_9__["confirmAction"])(this.confirmDeleteText)) {
52297
+ if (this.confirmDelete) {
52298
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_9__["confirmActionAsync"])(this.confirmDeleteText, function () { _this.removePanel(value); });
52299
+ }
52300
+ else {
51849
52301
  this.removePanel(value);
51850
52302
  }
51851
52303
  };
@@ -52111,12 +52563,16 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
52111
52563
  cachedValues[QuestionPanelDynamicItem.ParentItemVariableName] = this.parent.getValue();
52112
52564
  }
52113
52565
  for (var i = 0; i < this.panels.length; i++) {
52114
- var panelValues = this.getPanelItemData(this.panels[i].data);
52566
+ var panel = this.panels[i];
52567
+ var panelValues = this.getPanelItemData(panel.data);
52115
52568
  //Should be unique for every panel due async expression support
52116
52569
  var newValues = _helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].createCopy(cachedValues);
52117
- newValues[QuestionPanelDynamicItem.ItemVariableName.toLowerCase()] = panelValues;
52570
+ var panelName = QuestionPanelDynamicItem.ItemVariableName;
52571
+ newValues[panelName] = panelValues;
52118
52572
  newValues[QuestionPanelDynamicItem.IndexVariableName.toLowerCase()] = i;
52119
- this.panels[i].runCondition(newValues, properties);
52573
+ var newProps = _helpers__WEBPACK_IMPORTED_MODULE_0__["Helpers"].createCopy(properties);
52574
+ newProps[panelName] = panel;
52575
+ panel.runCondition(newValues, newProps);
52120
52576
  }
52121
52577
  };
52122
52578
  QuestionPanelDynamicModel.prototype.onAnyValueChanged = function (name) {
@@ -52368,13 +52824,11 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
52368
52824
  return panel;
52369
52825
  };
52370
52826
  QuestionPanelDynamicModel.prototype.createAndSetupNewPanelObject = function () {
52827
+ var _this = this;
52371
52828
  var panel = this.createNewPanelObject();
52372
52829
  panel.isInteractiveDesignElement = false;
52373
52830
  panel.setParentQuestion(this);
52374
- var self = this;
52375
- panel.onGetQuestionTitleLocation = function () {
52376
- return self.getTemplateQuestionTitleLocation();
52377
- };
52831
+ panel.onGetQuestionTitleLocation = function () { return _this.getTemplateQuestionTitleLocation(); };
52378
52832
  return panel;
52379
52833
  };
52380
52834
  QuestionPanelDynamicModel.prototype.getTemplateQuestionTitleLocation = function () {
@@ -52382,6 +52836,11 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
52382
52836
  ? this.templateTitleLocation
52383
52837
  : this.getTitleLocationCore();
52384
52838
  };
52839
+ QuestionPanelDynamicModel.prototype.getChildErrorLocation = function (child) {
52840
+ if (this.templateErrorLocation !== "default")
52841
+ return this.templateErrorLocation;
52842
+ return _super.prototype.getChildErrorLocation.call(this, child);
52843
+ };
52385
52844
  QuestionPanelDynamicModel.prototype.createNewPanelObject = function () {
52386
52845
  return _jsonobject__WEBPACK_IMPORTED_MODULE_5__["Serializer"].createClass("panel");
52387
52846
  };
@@ -52549,9 +53008,7 @@ var QuestionPanelDynamicModel = /** @class */ (function (_super) {
52549
53008
  return this.data;
52550
53009
  };
52551
53010
  QuestionPanelDynamicModel.prototype.getPlainData = function (options) {
52552
- if (options === void 0) { options = {
52553
- includeEmpty: true,
52554
- }; }
53011
+ if (options === void 0) { options = { includeEmpty: true }; }
52555
53012
  var questionPlainData = _super.prototype.getPlainData.call(this, options);
52556
53013
  if (!!questionPlainData) {
52557
53014
  questionPlainData.isNode = true;
@@ -52934,6 +53391,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_5__["Serializer"].addClass("paneldynamic",
52934
53391
  default: "default",
52935
53392
  choices: ["default", "top", "bottom", "left"],
52936
53393
  },
53394
+ { name: "templateErrorLocation", default: "default", choices: ["default", "top", "bottom"] },
52937
53395
  {
52938
53396
  name: "templateVisibleIf:expression",
52939
53397
  category: "logic"
@@ -52989,7 +53447,7 @@ var __extends = (undefined && undefined.__extends) || (function () {
52989
53447
 
52990
53448
 
52991
53449
  /**
52992
- * A class that describes the Radiogroup question type.
53450
+ * A class that describes the Radio Button Group question type.
52993
53451
  *
52994
53452
  * [View Demo](https://surveyjs.io/form-library/examples/questiontype-radiogroup/ (linkStyle))
52995
53453
  */
@@ -54082,6 +54540,8 @@ var QuestionRatingModel = /** @class */ (function (_super) {
54082
54540
  this.colorsCalculated = true;
54083
54541
  };
54084
54542
  QuestionRatingModel.prototype.getDisplayValueCore = function (keysAsText, value) {
54543
+ if (!this.useRateValues)
54544
+ return _super.prototype.getDisplayValueCore.call(this, keysAsText, value);
54085
54545
  var res = _itemvalue__WEBPACK_IMPORTED_MODULE_0__["ItemValue"].getTextOrHtmlByValue(this.visibleRateValues, value);
54086
54546
  return !!res ? res : value;
54087
54547
  };
@@ -54159,6 +54619,13 @@ var QuestionRatingModel = /** @class */ (function (_super) {
54159
54619
  QuestionRatingModel.prototype.supportOther = function () {
54160
54620
  return false;
54161
54621
  };
54622
+ QuestionRatingModel.prototype.getPlainDataCalculatedValue = function (propName) {
54623
+ var res = _super.prototype.getPlainDataCalculatedValue.call(this, propName);
54624
+ if (res !== undefined || !this.useRateValues || this.isEmpty())
54625
+ return res;
54626
+ var item = _itemvalue__WEBPACK_IMPORTED_MODULE_0__["ItemValue"].getItemByValue(this.visibleRateValues, this.value);
54627
+ return item ? item[propName] : undefined;
54628
+ };
54162
54629
  Object.defineProperty(QuestionRatingModel.prototype, "minRateDescription", {
54163
54630
  /**
54164
54631
  * Specifies a description for the minimum (first) rate value.
@@ -54846,7 +55313,7 @@ function resizeCanvas(canvas) {
54846
55313
  context.scale(ratio, ratio);
54847
55314
  }
54848
55315
  /**
54849
- * A class that describes the Signature Page question type.
55316
+ * A class that describes the Signature question type.
54850
55317
  *
54851
55318
  * [View Demo](https://surveyjs.io/form-library/examples/signature-pad-widget-javascript/ (linkStyle))
54852
55319
  */
@@ -54865,7 +55332,8 @@ var QuestionSignaturePadModel = /** @class */ (function (_super) {
54865
55332
  signaturePad.penColor = this.penColor || penColorFromTheme || penColorProperty.defaultValue || "#1ab394";
54866
55333
  var backgroundColorProperty = this.getPropertyByName("backgroundColor");
54867
55334
  var backgroundColorFromTheme = penColorFromTheme ? "transparent" : undefined;
54868
- signaturePad.backgroundColor = this.backgroundColor || backgroundColorFromTheme || backgroundColorProperty.defaultValue || "#ffffff";
55335
+ var background = !!this.backgroundImage ? "transparent" : this.backgroundColor;
55336
+ signaturePad.backgroundColor = background || backgroundColorFromTheme || backgroundColorProperty.defaultValue || "#ffffff";
54869
55337
  };
54870
55338
  QuestionSignaturePadModel.prototype.getCssRoot = function (cssClasses) {
54871
55339
  return new _utils_cssClassBuilder__WEBPACK_IMPORTED_MODULE_4__["CssClassBuilder"]()
@@ -55041,7 +55509,13 @@ var QuestionSignaturePadModel = /** @class */ (function (_super) {
55041
55509
  });
55042
55510
  Object.defineProperty(QuestionSignaturePadModel.prototype, "penColor", {
55043
55511
  /**
55044
- * Specifies a color for the pen. Accepts hexadecimal colors (`"#FF0000"`), RGB colors (`"rgb(255,0,0)"`), or color names (`"red"`).
55512
+ * Specifies a color for the pen.
55513
+ *
55514
+ * This property accepts color values in the following formats:
55515
+ *
55516
+ * - Hexadecimal colors (`"#FF0000"`)
55517
+ * - RGB colors (`"rgb(255,0,0)"`)
55518
+ * - Color names (`"red"`)
55045
55519
  * @see backgroundColor
55046
55520
  */
55047
55521
  get: function () {
@@ -55049,13 +55523,20 @@ var QuestionSignaturePadModel = /** @class */ (function (_super) {
55049
55523
  },
55050
55524
  set: function (val) {
55051
55525
  this.setPropertyValue("penColor", val);
55526
+ !!this.signaturePad && this.updateColors(this.signaturePad);
55052
55527
  },
55053
55528
  enumerable: false,
55054
55529
  configurable: true
55055
55530
  });
55056
55531
  Object.defineProperty(QuestionSignaturePadModel.prototype, "backgroundColor", {
55057
55532
  /**
55058
- * Specifies a color for the signature area background. Accepts hexadecimal colors (`"#FF0000"`), RGB colors (`"rgb(255,0,0)"`), or color names (`"red"`).
55533
+ * Specifies a color for the signature area background. Ignored if [`backgroundImage`](#backgroundImage) is set.
55534
+ *
55535
+ * This property accepts color values in the following formats:
55536
+ *
55537
+ * - Hexadecimal colors (`"#FF0000"`)
55538
+ * - RGB colors (`"rgb(255,0,0)"`)
55539
+ * - Color names (`"red"`)
55059
55540
  * @see penColor
55060
55541
  */
55061
55542
  get: function () {
@@ -55063,6 +55544,22 @@ var QuestionSignaturePadModel = /** @class */ (function (_super) {
55063
55544
  },
55064
55545
  set: function (val) {
55065
55546
  this.setPropertyValue("backgroundColor", val);
55547
+ !!this.signaturePad && this.updateColors(this.signaturePad);
55548
+ },
55549
+ enumerable: false,
55550
+ configurable: true
55551
+ });
55552
+ Object.defineProperty(QuestionSignaturePadModel.prototype, "backgroundImage", {
55553
+ /**
55554
+ * An image to display in the background of the signature area. Accepts a base64 or URL string value.
55555
+ * @see backgroundColor
55556
+ */
55557
+ get: function () {
55558
+ return this.getPropertyValue("backgroundImage");
55559
+ },
55560
+ set: function (val) {
55561
+ this.setPropertyValue("backgroundImage", val);
55562
+ !!this.signaturePad && this.updateColors(this.signaturePad);
55066
55563
  },
55067
55564
  enumerable: false,
55068
55565
  configurable: true
@@ -55134,6 +55631,10 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_0__["Serializer"].addClass("signaturepad",
55134
55631
  category: "general",
55135
55632
  default: true,
55136
55633
  },
55634
+ {
55635
+ name: "backgroundImage",
55636
+ category: "general",
55637
+ },
55137
55638
  {
55138
55639
  name: "penColor:color",
55139
55640
  category: "general",
@@ -55211,7 +55712,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
55211
55712
 
55212
55713
 
55213
55714
  /**
55214
- * A Model for a tagbox question
55715
+ * A class that describes the Multi-Select Dropdown (Tag Box) question type.
55215
55716
  *
55216
55717
  * [View Demo](https://surveyjs.io/form-library/examples/how-to-create-multiselect-tag-box/ (linkStyle))
55217
55718
  */
@@ -55484,7 +55985,7 @@ var __extends = (undefined && undefined.__extends) || (function () {
55484
55985
 
55485
55986
 
55486
55987
  /**
55487
- * A class that describes the Text question type.
55988
+ * A class that describes the Single-Line Input question type.
55488
55989
  *
55489
55990
  * [View Demo](https://surveyjs.io/form-library/examples/questiontype-text/ (linkStyle))
55490
55991
  */
@@ -55521,9 +56022,7 @@ var QuestionTextModel = /** @class */ (function (_super) {
55521
56022
  if (_this.isInputTextUpdate) {
55522
56023
  _this._isWaitingForEnter = event.keyCode === 229;
55523
56024
  }
55524
- if (event.keyCode === 13) {
55525
- _this.survey.questionEditFinishCallback(_this, event);
55526
- }
56025
+ _this.onTextKeyDownHandler(event);
55527
56026
  };
55528
56027
  _this.onChange = function (event) {
55529
56028
  if (event.target === _settings__WEBPACK_IMPORTED_MODULE_6__["settings"].environment.root.activeElement) {
@@ -55590,6 +56089,11 @@ var QuestionTextModel = /** @class */ (function (_super) {
55590
56089
  enumerable: false,
55591
56090
  configurable: true
55592
56091
  });
56092
+ QuestionTextModel.prototype.getMaxLength = function () {
56093
+ if (this.inputType !== "text")
56094
+ return null;
56095
+ return _super.prototype.getMaxLength.call(this);
56096
+ };
55593
56097
  QuestionTextModel.prototype.runCondition = function (values, properties) {
55594
56098
  _super.prototype.runCondition.call(this, values, properties);
55595
56099
  if (!!this.minValueExpression || !!this.maxValueExpression) {
@@ -55973,7 +56477,7 @@ var QuestionTextModel = /** @class */ (function (_super) {
55973
56477
  }
55974
56478
  return newValue;
55975
56479
  };
55976
- QuestionTextModel.prototype.hasPlaceHolder = function () {
56480
+ QuestionTextModel.prototype.hasPlaceholder = function () {
55977
56481
  return !this.isReadOnly && this.inputType !== "range";
55978
56482
  };
55979
56483
  QuestionTextModel.prototype.isReadOnlyRenderDiv = function () {
@@ -56264,7 +56768,7 @@ var CharacterCounter = /** @class */ (function (_super) {
56264
56768
  }(_base__WEBPACK_IMPORTED_MODULE_4__["Base"]));
56265
56769
 
56266
56770
  /**
56267
- * A base class for the [Text](https://surveyjs.io/form-library/documentation/questiontextmodel) and [Comment](https://surveyjs.io/form-library/documentation/questioncommentmodel) question types.
56771
+ * A base class for the [Single-Line Input](https://surveyjs.io/form-library/documentation/questiontextmodel) and [Long Text](https://surveyjs.io/form-library/documentation/questioncommentmodel) question types.
56268
56772
  */
56269
56773
  var QuestionTextBase = /** @class */ (function (_super) {
56270
56774
  __extends(QuestionTextBase, _super);
@@ -56374,12 +56878,12 @@ var QuestionTextBase = /** @class */ (function (_super) {
56374
56878
  };
56375
56879
  QuestionTextBase.prototype.calcRenderedPlaceholder = function () {
56376
56880
  var res = this.placeHolder;
56377
- if (!!res && !this.hasPlaceHolder()) {
56881
+ if (!!res && !this.hasPlaceholder()) {
56378
56882
  res = undefined;
56379
56883
  }
56380
56884
  this.setRenderedPlaceholder(res);
56381
56885
  };
56382
- QuestionTextBase.prototype.hasPlaceHolder = function () {
56886
+ QuestionTextBase.prototype.hasPlaceholder = function () {
56383
56887
  return !this.isReadOnly;
56384
56888
  };
56385
56889
  QuestionTextBase.prototype.setNewValue = function (newValue) {
@@ -59659,7 +60163,7 @@ var SurveyQuestionDropdownBase = /** @class */ (function (_super) {
59659
60163
  if (!this.question.cssClasses.chevronButtonIconId)
59660
60164
  return null;
59661
60165
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.chevronButton },
59662
- 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 })));
60166
+ 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: "auto" })));
59663
60167
  };
59664
60168
  SurveyQuestionDropdownBase.prototype.renderOther = function (cssClasses) {
59665
60169
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.getCommentAreaCss(true) },
@@ -61999,7 +62503,9 @@ var SurveyQuestionAndErrorsCell = /** @class */ (function (_super) {
61999
62503
  };
62000
62504
  SurveyQuestionAndErrorsCell.prototype.renderElement = function () {
62001
62505
  var style = this.getCellStyle();
62002
- return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("td", { ref: this.cellRef, className: this.itemCss, colSpan: this.props.cell.colSpans, "data-responsive-title": this.getHeaderText(), title: this.props.cell.getTitle(), style: style }, this.wrapCell(this.props.cell, (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.cssClasses.cellQuestionWrapper }, this.renderQuestion())))));
62506
+ var cell = this.props.cell;
62507
+ var focusIn = function () { cell.focusIn(); };
62508
+ return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("td", { ref: this.cellRef, className: this.itemCss, colSpan: cell.colSpans, "data-responsive-title": this.getHeaderText(), title: cell.getTitle(), style: style, onFocus: focusIn }, this.wrapCell(this.props.cell, (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.cssClasses.cellQuestionWrapper }, this.renderQuestion())))));
62003
62509
  };
62004
62510
  SurveyQuestionAndErrorsCell.prototype.getCellStyle = function () {
62005
62511
  return null;
@@ -62502,7 +63008,7 @@ var SurveyQuestionCommentItem = /** @class */ (function (_super) {
62502
63008
  return this.props.question.commentId;
62503
63009
  };
62504
63010
  SurveyQuestionCommentItem.prototype.getPlaceholder = function () {
62505
- return this.props.question.commentPlaceholder;
63011
+ return this.props.question.renderedCommentPlaceholder;
62506
63012
  };
62507
63013
  SurveyQuestionCommentItem.prototype.renderElement = function () {
62508
63014
  var _this = this;
@@ -63301,7 +63807,7 @@ var SurveyQuestionFile = /** @class */ (function (_super) {
63301
63807
  noFileChosen = (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { className: this.question.cssClasses.noFileChosen }, this.question.noFileChosenCaption));
63302
63808
  }
63303
63809
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.getFileDecoratorCss() },
63304
- react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { className: this.question.cssClasses.dragAreaPlaceholder }, this.question.dragAreaPlaceholder),
63810
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", { className: this.question.cssClasses.dragAreaPlaceholder }, this.question.renderedPlaceholder),
63305
63811
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: this.question.cssClasses.wrapper },
63306
63812
  chooseFile,
63307
63813
  noFileChosen)));
@@ -64296,10 +64802,15 @@ var SurveyQuestionMultipleText = /** @class */ (function (_super) {
64296
64802
  SurveyQuestionMultipleText.prototype.renderRow = function (rowIndex, items, cssClasses) {
64297
64803
  var key = "item" + rowIndex;
64298
64804
  var tds = [];
64299
- for (var i = 0; i < items.length; i++) {
64805
+ var _loop_1 = function (i) {
64300
64806
  var item = items[i];
64301
- tds.push(react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("td", { key: "item" + i, className: this.question.cssClasses.cell },
64302
- react__WEBPACK_IMPORTED_MODULE_0__["createElement"](SurveyMultipleTextItem, { question: this.question, item: item, creator: this.creator, cssClasses: cssClasses })));
64807
+ var focusIn = function () { item.focusIn(); };
64808
+ tds.push(react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("td", { key: "item" + i, className: this_1.question.cssClasses.cell, onFocus: focusIn },
64809
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"](SurveyMultipleTextItem, { question: this_1.question, item: item, creator: this_1.creator, cssClasses: cssClasses })));
64810
+ };
64811
+ var this_1 = this;
64812
+ for (var i = 0; i < items.length; i++) {
64813
+ _loop_1(i);
64303
64814
  }
64304
64815
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("tr", { key: key, className: cssClasses.row }, tds));
64305
64816
  };
@@ -65549,7 +66060,7 @@ var SurveyRow = /** @class */ (function (_super) {
65549
66060
  var css = element.cssClassesValue;
65550
66061
  var focusIn = function () {
65551
66062
  var el = element;
65552
- if (el && !el.isDisposed && el.isQuestion) {
66063
+ if (el && el.isQuestion) {
65553
66064
  el.focusIn();
65554
66065
  }
65555
66066
  };
@@ -65668,9 +66179,15 @@ var SurveyQuestionSignaturePad = /** @class */ (function (_super) {
65668
66179
  return (react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: cssClasses.root, ref: function (root) { return (_this.setControl(root)); }, style: { height: this.question.signatureHeight, width: this.question.signatureWidth } },
65669
66180
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { className: cssClasses.placeholder, style: { display: this.question.needShowPlaceholder() ? "" : "none" } }, this.question.placeHolderText),
65670
66181
  react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", null,
65671
- react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("canvas", { tabIndex: 0 })),
66182
+ this.renderBackgroundImage(),
66183
+ react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("canvas", { tabIndex: 0, className: this.question.cssClasses.canvas })),
65672
66184
  clearButton));
65673
66185
  };
66186
+ SurveyQuestionSignaturePad.prototype.renderBackgroundImage = function () {
66187
+ if (!this.question.backgroundImage)
66188
+ return null;
66189
+ return react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("img", { className: this.question.cssClasses.backgroundImage, src: this.question.backgroundImage, width: this.question.signatureWidth, height: this.question.signatureHeight });
66190
+ };
65674
66191
  SurveyQuestionSignaturePad.prototype.renderCleanButton = function () {
65675
66192
  var _this = this;
65676
66193
  if (!this.question.canShowClearButton)
@@ -66591,12 +67108,24 @@ var settings = {
66591
67108
  */
66592
67109
  tagboxCloseOnSelect: false,
66593
67110
  /**
66594
- * A property that allows you to display a custom confirm dialog instead of the standard browser dialog. Set this property to a function that renders your custom dialog window.
67111
+ * A property that allows you to display a custom confirm dialog instead of the standard browser dialog.
67112
+ *
67113
+ * Set this property to a function that renders your custom dialog window. This function should return `true` if a user confirms an action or `false` otherwise.
66595
67114
  * @param message A message to be displayed in the confirm dialog window.
66596
67115
  */
66597
67116
  confirmActionFunc: function (message) {
66598
67117
  return confirm(message);
66599
67118
  },
67119
+ /**
67120
+ * A property that allows you to display a custom confirm dialog instead of the standard browser dialog in async mode.
67121
+ *
67122
+ * Set this property to a function that renders your custom dialog window. This function should return `true` to be enabled; otherwise, a survey executes the [`confirmActionFunc`](#confirmActionFunc) function. Pass the dialog result as the `callback` parameter: `true` if a user confirms an action, `false` otherwise.
67123
+ * @param message A message to be displayed in the confirm dialog window.
67124
+ * @param callback A callback function that should be called with `true` if a user confirms an action or `false` otherwise.
67125
+ */
67126
+ confirmActionAsync: function (message, callback) {
67127
+ return false;
67128
+ },
66600
67129
  /**
66601
67130
  * A minimum width value for all survey elements.
66602
67131
  *
@@ -67435,14 +67964,14 @@ var SurveyElement = /** @class */ (function (_super) {
67435
67964
  }
67436
67965
  return info;
67437
67966
  };
67438
- SurveyElement.ScrollElementToTop = function (elementId) {
67967
+ SurveyElement.ScrollElementToTop = function (elementId, scrollIfVisible) {
67439
67968
  var root = _settings__WEBPACK_IMPORTED_MODULE_4__["settings"].environment.root;
67440
67969
  if (!elementId || typeof root === "undefined")
67441
67970
  return false;
67442
67971
  var el = root.getElementById(elementId);
67443
67972
  if (!el || !el.scrollIntoView)
67444
67973
  return false;
67445
- var elemTop = el.getBoundingClientRect().top;
67974
+ var elemTop = scrollIfVisible ? -1 : el.getBoundingClientRect().top;
67446
67975
  if (elemTop < 0)
67447
67976
  el.scrollIntoView();
67448
67977
  return elemTop < 0;
@@ -68052,7 +68581,7 @@ var SurveyElement = /** @class */ (function (_super) {
68052
68581
  enumerable: false,
68053
68582
  configurable: true
68054
68583
  });
68055
- SurveyElement.prototype.delete = function () { };
68584
+ SurveyElement.prototype.delete = function (doDispose) { };
68056
68585
  /**
68057
68586
  * Returns the survey's [locale](https://surveyjs.io/form-library/documentation/surveymodel#locale).
68058
68587
  *
@@ -68906,7 +69435,8 @@ var SurveyModel = /** @class */ (function (_super) {
68906
69435
  */
68907
69436
  _this.onGetQuestionNo = _this.addEvent();
68908
69437
  /**
68909
- * Use this event to change the progress text in code.
69438
+ * An event that is raised before the survey displays progress text. Handle this event to change the progress text in code.
69439
+ * @see showProgressBar
68910
69440
  * @see progressBarType
68911
69441
  */
68912
69442
  _this.onProgressText = _this.addEvent();
@@ -69314,7 +69844,6 @@ var SurveyModel = /** @class */ (function (_super) {
69314
69844
  _this.createHtmlLocString("completedBeforeHtml", "completingSurveyBefore", htmlCallBack, "completed-before");
69315
69845
  _this.createHtmlLocString("loadingHtml", "loadingSurvey", htmlCallBack, "loading");
69316
69846
  _this.createLocalizableString("logo", _this, false);
69317
- _this.createLocalizableString("backgroundImage", _this, false);
69318
69847
  _this.createLocalizableString("startSurveyText", _this, false, true);
69319
69848
  _this.createLocalizableString("pagePrevText", _this, false, true);
69320
69849
  _this.createLocalizableString("pageNextText", _this, false, true);
@@ -69484,7 +70013,7 @@ var SurveyModel = /** @class */ (function (_super) {
69484
70013
  *
69485
70014
  * Many question types allow respondents to leave comments. To enable this functionality, set a question's [`showCommentArea`](https://surveyjs.io/form-library/documentation/api-reference/checkbox-question-model#showCommentArea) property to `true`. Comment values are saved in a separate property. The property name is composed of the question `name` and `commentSuffix`.
69486
70015
  *
69487
- * Respondents can also leave a comment when they select "Other" in a single- or multi-select question, such as Dropdown or Checkboxes. The property name for the comment value is composed according to the same rules. However, you can use the question `name` as a key to store the comment value instead. Disable the [`storeOthersAsComment`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#storeOthersAsComment) property in this case.
70016
+ * Respondents can also leave comments when they select "Other" in choice-based questions, such as Dropdown or Checkboxes. The property name for the comment value is composed according to the same rules. However, you can use the question `name` as a key to store the comment value instead. Disable the [`storeOthersAsComment`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#storeOthersAsComment) property in this case.
69488
70017
  *
69489
70018
  * [View Demo](https://surveyjs.io/form-library/examples/create-checkboxes-question-in-javascript/ (linkStyle))
69490
70019
  */
@@ -70112,12 +70641,9 @@ var SurveyModel = /** @class */ (function (_super) {
70112
70641
  };
70113
70642
  Object.defineProperty(SurveyModel.prototype, "questionStartIndex", {
70114
70643
  /**
70115
- * Gets or sets the first question index. The first question index is '1' by default. You may start it from '100' or from 'A', by setting '100' or 'A' to this property.
70116
- * You can set the start index to "(1)" or "# A)" or "a)" to render question number as (1), # A) and a) accordingly.
70117
- * @see Question.title
70118
- * @see requiredText
70644
+ * Specifies the initial number or letter from which to start question numbering.
70119
70645
  *
70120
- * [View Demo](https://surveyjs.io/form-library/examples/survey-processtext/ (linkStyle))
70646
+ * [Question Numbers](https://surveyjs.io/form-library/documentation/design-survey/configure-question-titles#question-numbers (linkStyle))
70121
70647
  */
70122
70648
  get: function () {
70123
70649
  return this.getPropertyValue("questionStartIndex", "");
@@ -70130,11 +70656,12 @@ var SurveyModel = /** @class */ (function (_super) {
70130
70656
  });
70131
70657
  Object.defineProperty(SurveyModel.prototype, "storeOthersAsComment", {
70132
70658
  /**
70133
- * Gets or sets whether the "Others" option text is stored as question comment.
70659
+ * Specifies whether to store the "Other" option response in a separate property.
70660
+ *
70661
+ * Default value: `true`
70134
70662
  *
70135
- * By default the entered text in the "Others" input in the checkbox/radiogroup/dropdown is stored as `"question name " + "-Comment"`. The value itself is `"question name": "others"`.
70136
- * Set this property to `false`, to store the entered text directly in the `"question name"` key.
70137
- * @see commentSuffix
70663
+ * Respondents can leave comments when they select "Other" in choice-based questions, such as Dropdown or Checkboxes. Comment values are saved in a separate property. The property name is composed of the question `name` and [`commentSuffix`](#commentSuffix). However, you can use the question `name` as a key to store the comment value instead. Disable the `storeOthersAsComment` property in this case.
70664
+ * @see maxOthersLength
70138
70665
  */
70139
70666
  get: function () {
70140
70667
  return this.getPropertyValue("storeOthersAsComment");
@@ -70147,9 +70674,11 @@ var SurveyModel = /** @class */ (function (_super) {
70147
70674
  });
70148
70675
  Object.defineProperty(SurveyModel.prototype, "maxTextLength", {
70149
70676
  /**
70150
- * Specifies the default maximum length for questions like text and comment, including matrix cell questions.
70677
+ * Specifies the maximum text length in textual questions ([Single-Line Input](https://surveyjs.io/form-library/examples/text-entry-question/), [Long Text](https://surveyjs.io/form-library/examples/add-open-ended-question-to-a-form/), [Multiple Textboxes](https://surveyjs.io/form-library/examples/multiple-text-box-question/)), measured in characters.
70678
+ *
70679
+ * Default value: 0 (unlimited)
70151
70680
  *
70152
- * The default value is `0`, that means that the text and comment have the same max length as the standard HTML input - 524288 characters: https://www.w3schools.com/tags/att_input_maxlength.asp.
70681
+ * You can override this setting for individual questions if you specify their [`maxLength`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model#maxLength) property.
70153
70682
  * @see maxOthersLength
70154
70683
  */
70155
70684
  get: function () {
@@ -70163,11 +70692,9 @@ var SurveyModel = /** @class */ (function (_super) {
70163
70692
  });
70164
70693
  Object.defineProperty(SurveyModel.prototype, "maxOthersLength", {
70165
70694
  /**
70166
- * Gets or sets the default maximum length for question comments and others
70695
+ * Specifies the maximum text length for question comments. Applies to questions with the [`showCommentArea`](https://surveyjs.io/form-library/documentation/api-reference/question#showCommentArea) or [`showOtherItem`](https://surveyjs.io/form-library/documentation/api-reference/question#showOtherItem) property set to `true`.
70167
70696
  *
70168
- * The default value is `0`, that means that the question comments have the same max length as the standard HTML input - 524288 characters: https://www.w3schools.com/tags/att_input_maxlength.asp.
70169
- * @see Question.showCommentArea
70170
- * @see Question.showOtherItem
70697
+ * Default value: 0 (unlimited)
70171
70698
  * @see maxTextLength
70172
70699
  */
70173
70700
  get: function () {
@@ -70187,7 +70714,7 @@ var SurveyModel = /** @class */ (function (_super) {
70187
70714
  *
70188
70715
  * If you enable this property, the survey is also completed automatically. Set the [`allowCompleteSurveyAutomatic`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#allowCompleteSurveyAutomatic) property to `false` if you want to disable this behavior.
70189
70716
  *
70190
- * > If any of the following questions is answered last, the survey does not switch to the next page: Checkbox, Boolean (rendered as Checkbox), Comment, Signature Pad, Image Picker (with Multi Select), File, Single-Choice Matrix (not all rows are answered), Dynamic Matrix, Panel Dynamic.
70717
+ * > If any of the following questions is answered last, the survey does not switch to the next page: Checkboxes, Yes/No (Boolean) (rendered as Checkbox), Long Text, Signature, Image Picker (with Multi Select), File Upload, Single-Select Matrix (not all rows are answered), Dynamic Matrix, Dynamic Panel.
70191
70718
  *
70192
70719
  * [View Demo](https://surveyjs.io/form-library/examples/automatically-move-to-next-page-if-answer-selected/ (linkStyle))
70193
70720
  */
@@ -70806,29 +71333,8 @@ var SurveyModel = /** @class */ (function (_super) {
70806
71333
  enumerable: false,
70807
71334
  configurable: true
70808
71335
  });
70809
- Object.defineProperty(SurveyModel.prototype, "backgroundImage", {
70810
- /**
70811
- * An image to display in the background of the survey or form. Accepts a base64 or URL string value.
70812
- * @see backgroundOpacity
70813
- */
70814
- get: function () {
70815
- return this.getLocalizableStringText("backgroundImage");
70816
- },
70817
- set: function (value) {
70818
- this.setLocalizableStringText("backgroundImage", value);
70819
- },
70820
- enumerable: false,
70821
- configurable: true
70822
- });
70823
- Object.defineProperty(SurveyModel.prototype, "locBackgroundImage", {
70824
- get: function () {
70825
- return this.getLocalizableString("backgroundImage");
70826
- },
70827
- enumerable: false,
70828
- configurable: true
70829
- });
70830
71336
  SurveyModel.prototype.updateRenderBackgroundImage = function () {
70831
- var path = this.getLocalizableString("backgroundImage").renderedHtml;
71337
+ var path = this.backgroundImage;
70832
71338
  this.renderBackgroundImage = !!path ? ["url(", path, ")"].join("") : "";
70833
71339
  };
70834
71340
  Object.defineProperty(SurveyModel.prototype, "backgroundOpacity", {
@@ -71300,9 +71806,9 @@ var SurveyModel = /** @class */ (function (_super) {
71300
71806
  };
71301
71807
  Object.defineProperty(SurveyModel.prototype, "showPageNumbers", {
71302
71808
  /**
71303
- * Gets or sets whether the survey displays page numbers on pages titles.
71809
+ * Specifies whether page titles contain page numbers.
71304
71810
  *
71305
- * [View Demo](https://surveyjs.io/form-library/examples/survey-options/ (linkStyle))
71811
+ * [View Demo](https://surveyjs.io/form-library/examples/how-to-number-pages-and-questions/ (linkStyle))
71306
71812
  */
71307
71813
  get: function () {
71308
71814
  return this.getPropertyValue("showPageNumbers");
@@ -71470,12 +71976,14 @@ var SurveyModel = /** @class */ (function (_super) {
71470
71976
  };
71471
71977
  Object.defineProperty(SurveyModel.prototype, "questionErrorLocation", {
71472
71978
  /**
71473
- * Gets or sets the error message position.
71979
+ * Specifies the error message position.
71474
71980
  *
71475
- * The following options are available:
71981
+ * Possible values:
71476
71982
  *
71477
- * - `top` - to show question error(s) over the question,
71478
- * - `bottom` - to show question error(s) under the question.
71983
+ * - `"top"` (default) - Displays error messages above questions.
71984
+ * - `"bottom"` - Displays error messages below questions.
71985
+ *
71986
+ * You can override this setting if you specify the `questionErrorLocation` property for an [individual page](https://surveyjs.io/form-library/documentation/pagemodel#questionErrorLocation) or [panel](https://surveyjs.io/form-library/documentation/panelmodel#questionErrorLocation) or set the `errorLocation` property for a [specific question](https://surveyjs.io/form-library/documentation/question#errorLocation).
71479
71987
  */
71480
71988
  get: function () {
71481
71989
  return this.getPropertyValue("questionErrorLocation");
@@ -71488,12 +71996,15 @@ var SurveyModel = /** @class */ (function (_super) {
71488
71996
  });
71489
71997
  Object.defineProperty(SurveyModel.prototype, "questionDescriptionLocation", {
71490
71998
  /**
71491
- * Gets or sets the question description position. The default value is `underTitle`.
71999
+ * Specifies where to display question descriptions.
71492
72000
  *
71493
- * The following options are available:
72001
+ * Possible values:
72002
+ *
72003
+ * - `"underTitle"` (default) - Displays descriptions under question titles.
72004
+ * - `"underInput"` - Displays descriptions under the interactive area.
72005
+ *
72006
+ * You can override this setting for individual questions if you specify their [`descriptionLocation`](https://surveyjs.io/form-library/documentation/api-reference/question#descriptionLocation) property.
71494
72007
  *
71495
- * - `underTitle` - show question description under the question title,
71496
- * - `underInput` - show question description under the question input instead of question title.
71497
72008
  */
71498
72009
  get: function () {
71499
72010
  return this.getPropertyValue("questionDescriptionLocation");
@@ -73330,6 +73841,7 @@ var SurveyModel = /** @class */ (function (_super) {
73330
73841
  * 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.
73331
73842
  *
73332
73843
  * @param isCompleteOnTrigger For internal use.
73844
+ * @param completeTrigger For internal use.
73333
73845
  * @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`.
73334
73846
  * @see surveyPostId
73335
73847
  */
@@ -74043,7 +74555,7 @@ var SurveyModel = /** @class */ (function (_super) {
74043
74555
  this.onGetMatrixRowActions.fire(this, options);
74044
74556
  return options.actions;
74045
74557
  };
74046
- SurveyModel.prototype.scrollElementToTop = function (element, question, page, id) {
74558
+ SurveyModel.prototype.scrollElementToTop = function (element, question, page, id, scrollIfVisible) {
74047
74559
  var options = {
74048
74560
  element: element,
74049
74561
  question: question,
@@ -74053,7 +74565,7 @@ var SurveyModel = /** @class */ (function (_super) {
74053
74565
  };
74054
74566
  this.onScrollingElementToTop.fire(this, options);
74055
74567
  if (!options.cancel) {
74056
- _survey_element__WEBPACK_IMPORTED_MODULE_3__["SurveyElement"].ScrollElementToTop(options.elementId);
74568
+ _survey_element__WEBPACK_IMPORTED_MODULE_3__["SurveyElement"].ScrollElementToTop(options.elementId, scrollIfVisible);
74057
74569
  }
74058
74570
  };
74059
74571
  /**
@@ -74625,7 +75137,7 @@ var SurveyModel = /** @class */ (function (_super) {
74625
75137
  }
74626
75138
  return result;
74627
75139
  };
74628
- SurveyModel.prototype.checkTriggers = function (key, isOnNextPage, isOnComplete) {
75140
+ SurveyModel.prototype.checkTriggers = function (key, isOnNextPage, isOnComplete, name) {
74629
75141
  if (isOnComplete === void 0) { isOnComplete = false; }
74630
75142
  if (this.isCompleted || this.triggers.length == 0 || this.isDisplayMode)
74631
75143
  return;
@@ -74636,19 +75148,38 @@ var SurveyModel = /** @class */ (function (_super) {
74636
75148
  }
74637
75149
  return;
74638
75150
  }
75151
+ var isQuestionInvalid = false;
75152
+ if (!isOnComplete && name && this.hasRequiredValidQuestionTrigger) {
75153
+ var question = this.getQuestionByValueName(name);
75154
+ isQuestionInvalid = question && !question.validate(false);
75155
+ }
74639
75156
  this.isTriggerIsRunning = true;
74640
75157
  this.triggerKeys = key;
74641
75158
  this.triggerValues = this.getFilteredValues();
74642
75159
  var properties = this.getFilteredProperties();
74643
75160
  var prevCanBeCompleted = this.canBeCompletedByTrigger;
74644
75161
  for (var i = 0; i < this.triggers.length; i++) {
74645
- this.triggers[i].checkExpression(isOnNextPage, isOnComplete, this.triggerKeys, this.triggerValues, properties);
75162
+ var trigger = this.triggers[i];
75163
+ if (isQuestionInvalid && trigger.requireValidQuestion)
75164
+ continue;
75165
+ trigger.checkExpression(isOnNextPage, isOnComplete, this.triggerKeys, this.triggerValues, properties);
74646
75166
  }
74647
75167
  if (prevCanBeCompleted !== this.canBeCompletedByTrigger) {
74648
75168
  this.updateButtonsVisibility();
74649
75169
  }
74650
75170
  this.isTriggerIsRunning = false;
74651
75171
  };
75172
+ Object.defineProperty(SurveyModel.prototype, "hasRequiredValidQuestionTrigger", {
75173
+ get: function () {
75174
+ for (var i = 0; i < this.triggers.length; i++) {
75175
+ if (this.triggers[i].requireValidQuestion)
75176
+ return true;
75177
+ }
75178
+ return false;
75179
+ },
75180
+ enumerable: false,
75181
+ configurable: true
75182
+ });
74652
75183
  SurveyModel.prototype.doElementsOnLoad = function () {
74653
75184
  for (var i = 0; i < this.pages.length; i++) {
74654
75185
  this.pages[i].onSurveyLoad();
@@ -75245,7 +75776,7 @@ var SurveyModel = /** @class */ (function (_super) {
75245
75776
  var triggerKeys = {};
75246
75777
  triggerKeys[name] = { newValue: newValue, oldValue: oldValue };
75247
75778
  this.runConditionOnValueChanged(name, newValue);
75248
- this.checkTriggers(triggerKeys, false);
75779
+ this.checkTriggers(triggerKeys, false, false, name);
75249
75780
  if (allowNotifyValueChanged)
75250
75781
  this.notifyQuestionOnValueChanged(name, newValue);
75251
75782
  if (locNotification !== "text") {
@@ -76377,6 +76908,9 @@ var SurveyModel = /** @class */ (function (_super) {
76377
76908
  __decorate([
76378
76909
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
76379
76910
  ], SurveyModel.prototype, "_isCompact", void 0);
76911
+ __decorate([
76912
+ Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
76913
+ ], SurveyModel.prototype, "backgroundImage", void 0);
76380
76914
  __decorate([
76381
76915
  Object(_jsonobject__WEBPACK_IMPORTED_MODULE_1__["property"])()
76382
76916
  ], SurveyModel.prototype, "renderBackgroundImage", void 0);
@@ -76538,10 +77072,8 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("survey", [
76538
77072
  name: "showTOC:switch",
76539
77073
  default: false
76540
77074
  },
76541
- {
76542
- name: "tocLocation",
76543
- default: "left",
76544
- choices: ["left", "right"],
77075
+ { name: "tocLocation", default: "left", choices: ["left", "right"],
77076
+ dependsOn: ["showTOC"], visibleIf: function (survey) { return !!survey && survey.showTOC; }
76545
77077
  },
76546
77078
  { name: "mode", default: "edit", choices: ["edit", "display"] },
76547
77079
  { name: "storeOthersAsComment:boolean", default: true },
@@ -76583,9 +77115,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("survey", [
76583
77115
  {
76584
77116
  name: "questionStartIndex",
76585
77117
  dependsOn: ["showQuestionNumbers"],
76586
- visibleIf: function (survey) {
76587
- return !survey || survey.showQuestionNumbers !== "off";
76588
- },
77118
+ visibleIf: function (survey) { return !survey || survey.showQuestionNumbers !== "off"; }
76589
77119
  },
76590
77120
  {
76591
77121
  name: "questionTitlePattern",
@@ -76638,7 +77168,7 @@ _jsonobject__WEBPACK_IMPORTED_MODULE_1__["Serializer"].addClass("survey", [
76638
77168
  choices: ["auto", "static", "responsive"],
76639
77169
  },
76640
77170
  { name: "width", visibleIf: function (obj) { return obj.widthMode === "static"; } },
76641
- { name: "backgroundImage", serializationProperty: "locBackgroundImage", visible: false },
77171
+ { name: "backgroundImage", visible: false },
76642
77172
  { name: "backgroundImageFit", default: "cover", choices: ["auto", "contain", "cover"], visible: false },
76643
77173
  { name: "backgroundImageAttachment", default: "scroll", choices: ["scroll", "fixed"], visible: false },
76644
77174
  { name: "backgroundOpacity:number", minValue: 0, maxValue: 1, default: 1, visible: false },
@@ -77794,6 +78324,11 @@ var Trigger = /** @class */ (function (_super) {
77794
78324
  this.onFailure();
77795
78325
  }
77796
78326
  };
78327
+ Object.defineProperty(Trigger.prototype, "requireValidQuestion", {
78328
+ get: function () { return false; },
78329
+ enumerable: false,
78330
+ configurable: true
78331
+ });
77797
78332
  Trigger.prototype.perform = function (values, properties) {
77798
78333
  var _this = this;
77799
78334
  this.conditionRunner.onRunComplete = function (res) {
@@ -77980,6 +78515,11 @@ var SurveyTriggerComplete = /** @class */ (function (_super) {
77980
78515
  SurveyTriggerComplete.prototype.getType = function () {
77981
78516
  return "completetrigger";
77982
78517
  };
78518
+ Object.defineProperty(SurveyTriggerComplete.prototype, "requireValidQuestion", {
78519
+ get: function () { return true; },
78520
+ enumerable: false,
78521
+ configurable: true
78522
+ });
77983
78523
  SurveyTriggerComplete.prototype.isRealExecution = function () {
77984
78524
  return !_settings__WEBPACK_IMPORTED_MODULE_6__["settings"].triggers.executeCompleteOnValueChanged === this.isExecutingOnNextPage;
77985
78525
  };
@@ -78071,6 +78611,11 @@ var SurveyTriggerSkip = /** @class */ (function (_super) {
78071
78611
  SurveyTriggerSkip.prototype.getType = function () {
78072
78612
  return "skiptrigger";
78073
78613
  };
78614
+ Object.defineProperty(SurveyTriggerSkip.prototype, "requireValidQuestion", {
78615
+ get: function () { return this.canBeExecuted(false); },
78616
+ enumerable: false,
78617
+ configurable: true
78618
+ });
78074
78619
  Object.defineProperty(SurveyTriggerSkip.prototype, "gotoName", {
78075
78620
  get: function () {
78076
78621
  return this.getPropertyValue("gotoName", "");
@@ -78734,7 +79279,7 @@ var TooltipManager = /** @class */ (function () {
78734
79279
  /*!****************************!*\
78735
79280
  !*** ./src/utils/utils.ts ***!
78736
79281
  \****************************/
78737
- /*! exports provided: unwrap, getRenderedSize, getRenderedStyleSize, doKey2ClickBlur, doKey2ClickUp, doKey2ClickDown, sanitizeEditableContent, Logger, mergeValues, getElementWidth, isContainerVisible, classesToSelector, compareVersions, confirmAction, detectIEOrEdge, detectIEBrowser, loadFileFromBase64, isMobile, isShadowDOM, getElement, isElementVisible, findScrollableParent, scrollElementByChildId, navigateToUrl, createSvg, getIconNameFromProxy, increaseHeightByContent, getOriginalEvent, preventDefaults, findParentByClassNames, getFirstVisibleChild */
79282
+ /*! exports provided: unwrap, getRenderedSize, getRenderedStyleSize, doKey2ClickBlur, doKey2ClickUp, doKey2ClickDown, sanitizeEditableContent, Logger, mergeValues, getElementWidth, isContainerVisible, classesToSelector, compareVersions, confirmAction, confirmActionAsync, detectIEOrEdge, detectIEBrowser, loadFileFromBase64, isMobile, isShadowDOM, getElement, isElementVisible, findScrollableParent, scrollElementByChildId, navigateToUrl, createSvg, getIconNameFromProxy, increaseHeightByContent, getOriginalEvent, preventDefaults, findParentByClassNames, getFirstVisibleChild */
78738
79283
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
78739
79284
 
78740
79285
  "use strict";
@@ -78753,6 +79298,7 @@ __webpack_require__.r(__webpack_exports__);
78753
79298
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "classesToSelector", function() { return classesToSelector; });
78754
79299
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compareVersions", function() { return compareVersions; });
78755
79300
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "confirmAction", function() { return confirmAction; });
79301
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "confirmActionAsync", function() { return confirmActionAsync; });
78756
79302
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detectIEOrEdge", function() { return detectIEOrEdge; });
78757
79303
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detectIEBrowser", function() { return detectIEBrowser; });
78758
79304
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadFileFromBase64", function() { return loadFileFromBase64; });
@@ -78790,6 +79336,19 @@ function confirmAction(message) {
78790
79336
  return _settings__WEBPACK_IMPORTED_MODULE_0__["settings"].confirmActionFunc(message);
78791
79337
  return confirm(message);
78792
79338
  }
79339
+ function confirmActionAsync(message, funcOnYes, funcOnNo) {
79340
+ var callbackFunc = function (res) {
79341
+ if (res)
79342
+ funcOnYes();
79343
+ else if (!!funcOnNo)
79344
+ funcOnNo();
79345
+ };
79346
+ if (!!_settings__WEBPACK_IMPORTED_MODULE_0__["settings"] && !!_settings__WEBPACK_IMPORTED_MODULE_0__["settings"].confirmActionAsync) {
79347
+ if (_settings__WEBPACK_IMPORTED_MODULE_0__["settings"].confirmActionAsync(message, callbackFunc))
79348
+ return;
79349
+ }
79350
+ callbackFunc(confirmAction(message));
79351
+ }
78793
79352
  function detectIEBrowser() {
78794
79353
  if (typeof window === "undefined")
78795
79354
  return false;