survey-core 1.12.15 → 1.12.16-patch.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/defaultV2.css +8 -8
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +8 -8
  4. package/defaultV2.fontless.css.map +1 -1
  5. package/defaultV2.fontless.min.css +2 -2
  6. package/defaultV2.min.css +2 -2
  7. package/i18n/arabic.js +1 -1
  8. package/i18n/arabic.min.js +1 -1
  9. package/i18n/basque.js +1 -1
  10. package/i18n/basque.min.js +1 -1
  11. package/i18n/bulgarian.js +1 -1
  12. package/i18n/bulgarian.min.js +1 -1
  13. package/i18n/catalan.js +1 -1
  14. package/i18n/catalan.min.js +1 -1
  15. package/i18n/croatian.js +1 -1
  16. package/i18n/croatian.min.js +1 -1
  17. package/i18n/czech.js +1 -1
  18. package/i18n/czech.min.js +1 -1
  19. package/i18n/danish.js +1 -1
  20. package/i18n/danish.min.js +1 -1
  21. package/i18n/dutch.js +1 -1
  22. package/i18n/dutch.min.js +1 -1
  23. package/i18n/english.js +1 -1
  24. package/i18n/english.min.js +1 -1
  25. package/i18n/estonian.js +1 -1
  26. package/i18n/estonian.min.js +1 -1
  27. package/i18n/finnish.js +1 -1
  28. package/i18n/finnish.min.js +1 -1
  29. package/i18n/french.js +1 -1
  30. package/i18n/french.min.js +1 -1
  31. package/i18n/georgian.js +1 -1
  32. package/i18n/georgian.min.js +1 -1
  33. package/i18n/german.js +1 -1
  34. package/i18n/german.min.js +1 -1
  35. package/i18n/greek.js +1 -1
  36. package/i18n/greek.min.js +1 -1
  37. package/i18n/hebrew.js +1 -1
  38. package/i18n/hebrew.min.js +1 -1
  39. package/i18n/hindi.js +1 -1
  40. package/i18n/hindi.min.js +1 -1
  41. package/i18n/hungarian.js +1 -1
  42. package/i18n/hungarian.min.js +1 -1
  43. package/i18n/icelandic.js +1 -1
  44. package/i18n/icelandic.min.js +1 -1
  45. package/i18n/index.js +1 -1
  46. package/i18n/index.min.js +1 -1
  47. package/i18n/indonesian.js +1 -1
  48. package/i18n/indonesian.min.js +1 -1
  49. package/i18n/italian.js +1 -1
  50. package/i18n/italian.min.js +1 -1
  51. package/i18n/japanese.js +1 -1
  52. package/i18n/japanese.min.js +1 -1
  53. package/i18n/kazakh.js +1 -1
  54. package/i18n/kazakh.min.js +1 -1
  55. package/i18n/korean.js +1 -1
  56. package/i18n/korean.min.js +1 -1
  57. package/i18n/latvian.js +1 -1
  58. package/i18n/latvian.min.js +1 -1
  59. package/i18n/lithuanian.js +1 -1
  60. package/i18n/lithuanian.min.js +1 -1
  61. package/i18n/macedonian.js +1 -1
  62. package/i18n/macedonian.min.js +1 -1
  63. package/i18n/malay.js +1 -1
  64. package/i18n/malay.min.js +1 -1
  65. package/i18n/nl-BE.js +1 -1
  66. package/i18n/nl-BE.min.js +1 -1
  67. package/i18n/norwegian.js +1 -1
  68. package/i18n/norwegian.min.js +1 -1
  69. package/i18n/persian.js +1 -1
  70. package/i18n/persian.min.js +1 -1
  71. package/i18n/philippines.js +1 -1
  72. package/i18n/philippines.min.js +1 -1
  73. package/i18n/polish.js +1 -1
  74. package/i18n/polish.min.js +1 -1
  75. package/i18n/portuguese-br.js +1 -1
  76. package/i18n/portuguese-br.min.js +1 -1
  77. package/i18n/portuguese.js +1 -1
  78. package/i18n/portuguese.min.js +1 -1
  79. package/i18n/romanian.js +1 -1
  80. package/i18n/romanian.min.js +1 -1
  81. package/i18n/russian.js +1 -1
  82. package/i18n/russian.min.js +1 -1
  83. package/i18n/serbian.js +1 -1
  84. package/i18n/serbian.min.js +1 -1
  85. package/i18n/simplified-chinese.js +1 -1
  86. package/i18n/simplified-chinese.min.js +1 -1
  87. package/i18n/slovak.js +1 -1
  88. package/i18n/slovak.min.js +1 -1
  89. package/i18n/spanish.js +1 -1
  90. package/i18n/spanish.min.js +1 -1
  91. package/i18n/swahili.js +1 -1
  92. package/i18n/swahili.min.js +1 -1
  93. package/i18n/swedish.js +1 -1
  94. package/i18n/swedish.min.js +1 -1
  95. package/i18n/tajik.js +1 -1
  96. package/i18n/tajik.min.js +1 -1
  97. package/i18n/telugu.js +1 -1
  98. package/i18n/telugu.min.js +1 -1
  99. package/i18n/thai.js +1 -1
  100. package/i18n/thai.min.js +1 -1
  101. package/i18n/traditional-chinese.js +1 -1
  102. package/i18n/traditional-chinese.min.js +1 -1
  103. package/i18n/turkish.js +1 -1
  104. package/i18n/turkish.min.js +1 -1
  105. package/i18n/ukrainian.js +1 -1
  106. package/i18n/ukrainian.min.js +1 -1
  107. package/i18n/urdu.js +1 -1
  108. package/i18n/urdu.min.js +1 -1
  109. package/i18n/vietnamese.js +1 -1
  110. package/i18n/vietnamese.min.js +1 -1
  111. package/i18n/welsh.js +1 -1
  112. package/i18n/welsh.min.js +1 -1
  113. package/icons/iconsV1.js +1 -1
  114. package/icons/iconsV1.min.js +1 -1
  115. package/icons/iconsV2.js +1 -1
  116. package/icons/iconsV2.min.js +1 -1
  117. package/modern.css +15 -15
  118. package/modern.css.map +1 -1
  119. package/modern.fontless.css +15 -15
  120. package/modern.fontless.css.map +1 -1
  121. package/modern.fontless.min.css +2 -2
  122. package/modern.min.css +2 -2
  123. package/package.json +1 -1
  124. package/plugins/bootstrap-integration/index.js +1 -1
  125. package/plugins/bootstrap-integration/index.min.js +1 -1
  126. package/plugins/bootstrap-material-integration/index.js +1 -1
  127. package/plugins/bootstrap-material-integration/index.min.js +1 -1
  128. package/survey.core.js +425 -244
  129. package/survey.core.js.map +1 -1
  130. package/survey.core.min.js +3 -3
  131. package/survey.css +1 -1
  132. package/survey.i18n.js +1 -1
  133. package/survey.i18n.min.js +1 -1
  134. package/survey.min.css +1 -1
  135. package/themes/borderless-dark-panelless.js +1 -1
  136. package/themes/borderless-dark-panelless.min.js +1 -1
  137. package/themes/borderless-dark.js +1 -1
  138. package/themes/borderless-dark.min.js +1 -1
  139. package/themes/borderless-light-panelless..js +1 -1
  140. package/themes/borderless-light-panelless..min.js +1 -1
  141. package/themes/borderless-light.js +1 -1
  142. package/themes/borderless-light.min.js +1 -1
  143. package/themes/contrast-dark-panelless.js +1 -1
  144. package/themes/contrast-dark-panelless.min.js +1 -1
  145. package/themes/contrast-dark.js +1 -1
  146. package/themes/contrast-dark.min.js +1 -1
  147. package/themes/contrast-light-panelless.js +1 -1
  148. package/themes/contrast-light-panelless.min.js +1 -1
  149. package/themes/contrast-light.js +1 -1
  150. package/themes/contrast-light.min.js +1 -1
  151. package/themes/default-dark-panelless.js +1 -1
  152. package/themes/default-dark-panelless.min.js +1 -1
  153. package/themes/default-dark.js +1 -1
  154. package/themes/default-dark.min.js +1 -1
  155. package/themes/default-light-panelless.js +1 -1
  156. package/themes/default-light-panelless.min.js +1 -1
  157. package/themes/default-light.js +1 -1
  158. package/themes/default-light.min.js +1 -1
  159. package/themes/doubleborder-dark-panelless.js +1 -1
  160. package/themes/doubleborder-dark-panelless.min.js +1 -1
  161. package/themes/doubleborder-dark.js +1 -1
  162. package/themes/doubleborder-dark.min.js +1 -1
  163. package/themes/doubleborder-light-panelles.js +1 -1
  164. package/themes/doubleborder-light-panelles.min.js +1 -1
  165. package/themes/doubleborder-light.js +1 -1
  166. package/themes/doubleborder-light.min.js +1 -1
  167. package/themes/flat-dark-panelless.js +1 -1
  168. package/themes/flat-dark-panelless.min.js +1 -1
  169. package/themes/flat-dark.js +1 -1
  170. package/themes/flat-dark.min.js +1 -1
  171. package/themes/flat-light-panelless.js +1 -1
  172. package/themes/flat-light-panelless.min.js +1 -1
  173. package/themes/flat-light.js +1 -1
  174. package/themes/flat-light.min.js +1 -1
  175. package/themes/index.js +1 -1
  176. package/themes/index.min.js +1 -1
  177. package/themes/layered-dark-panelless.js +1 -1
  178. package/themes/layered-dark-panelless.min.js +1 -1
  179. package/themes/layered-dark.js +1 -1
  180. package/themes/layered-dark.min.js +1 -1
  181. package/themes/layered-light-panelless.js +1 -1
  182. package/themes/layered-light-panelless.min.js +1 -1
  183. package/themes/layered-light.js +1 -1
  184. package/themes/layered-light.min.js +1 -1
  185. package/themes/plain-dark-panelless.js +1 -1
  186. package/themes/plain-dark-panelless.min.js +1 -1
  187. package/themes/plain-dark.js +1 -1
  188. package/themes/plain-dark.min.js +1 -1
  189. package/themes/plain-light-panelless.js +1 -1
  190. package/themes/plain-light-panelless.min.js +1 -1
  191. package/themes/plain-light.js +1 -1
  192. package/themes/plain-light.min.js +1 -1
  193. package/themes/sharp-dark-panelless.js +1 -1
  194. package/themes/sharp-dark-panelless.min.js +1 -1
  195. package/themes/sharp-dark.js +1 -1
  196. package/themes/sharp-dark.min.js +1 -1
  197. package/themes/sharp-light-panelless.js +1 -1
  198. package/themes/sharp-light-panelless.min.js +1 -1
  199. package/themes/sharp-light.js +1 -1
  200. package/themes/sharp-light.min.js +1 -1
  201. package/themes/solid-dark-panelless.js +1 -1
  202. package/themes/solid-dark-panelless.min.js +1 -1
  203. package/themes/solid-dark.js +1 -1
  204. package/themes/solid-dark.min.js +1 -1
  205. package/themes/solid-light-panelless.js +1 -1
  206. package/themes/solid-light-panelless.min.js +1 -1
  207. package/themes/solid-light.js +1 -1
  208. package/themes/solid-light.min.js +1 -1
  209. package/themes/three-dimensional-dark-panelless.js +1 -1
  210. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  211. package/themes/three-dimensional-dark.js +1 -1
  212. package/themes/three-dimensional-dark.min.js +1 -1
  213. package/themes/three-dimensional-light-panelless.js +1 -1
  214. package/themes/three-dimensional-light-panelless.min.js +1 -1
  215. package/themes/three-dimensional-light.js +1 -1
  216. package/themes/three-dimensional-light.min.js +1 -1
  217. package/ts3.4/typings/packages/survey-core/entries/chunks/model.d.ts +1 -1
  218. package/ts3.4/typings/packages/survey-core/src/base-interfaces.d.ts +1 -0
  219. package/ts3.4/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +1 -0
  220. package/ts3.4/typings/packages/survey-core/src/page.d.ts +11 -3
  221. package/ts3.4/typings/packages/survey-core/src/panel.d.ts +11 -7
  222. package/ts3.4/typings/packages/survey-core/src/settings.d.ts +2 -1
  223. package/ts3.4/typings/packages/survey-core/src/survey-element.d.ts +15 -5
  224. package/ts3.4/typings/packages/survey-core/src/survey.d.ts +15 -8
  225. package/ts3.4/typings/packages/survey-core/src/surveyStrings.d.ts +1 -0
  226. package/ts3.4/typings/packages/survey-core/src/utils/utils.d.ts +11 -2
  227. package/typings/packages/survey-core/entries/chunks/model.d.ts +1 -1
  228. package/typings/packages/survey-core/src/base-interfaces.d.ts +1 -0
  229. package/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +1 -0
  230. package/typings/packages/survey-core/src/page.d.ts +11 -3
  231. package/typings/packages/survey-core/src/panel.d.ts +11 -7
  232. package/typings/packages/survey-core/src/settings.d.ts +2 -1
  233. package/typings/packages/survey-core/src/survey-element.d.ts +15 -5
  234. package/typings/packages/survey-core/src/survey.d.ts +16 -8
  235. package/typings/packages/survey-core/src/surveyStrings.d.ts +1 -0
  236. package/typings/packages/survey-core/src/utils/utils.d.ts +11 -2
package/survey.core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.12.15
2
+ * surveyjs - Survey JavaScript library v1.12.16-patch.1
3
3
  * Copyright (c) 2015-2024 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
@@ -105,7 +105,7 @@ return /******/ (function(modules) { // webpackBootstrap
105
105
  /*!*******************************************!*\
106
106
  !*** ./src/entries/core.ts + 127 modules ***!
107
107
  \*******************************************/
108
- /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, 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, QuestionMatrixDropdownRenderedErrorRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionFilePage, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, ProgressButtons, ProgressButtonsResponsivityManager, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, getLocaleString, setupLocale, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, 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, chooseFiles, sanitizeEditableContent, prepareElementForVerticalAnimation, cleanHtmlElementAfterAnimation, classesToSelector, renamedIcons, getIconNameFromProxy, InputMaskBase, InputMaskPattern, InputMaskNumeric, InputMaskDateTime, InputMaskCurrency, CssClassBuilder, TextAreaModel, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, StylesManager, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgThemeSets, addIconsToThemeSet, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, activateLazyRenderingChecks, createDropdownActionModel, createDropdownActionModelAdvanced, createPopupModelWithListModel, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AnimationUtils, AnimationPropertyUtils, AnimationGroupUtils, AnimationProperty, AnimationBoolean, AnimationGroup, AnimationTab, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper, Model */
108
+ /*! exports provided: Version, ReleaseDate, checkLibraryVersion, setLicenseKey, slk, 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, QuestionMatrixDropdownRenderedErrorRow, QuestionMatrixDropdownRenderedTable, MatrixDropdownRowModel, QuestionMatrixDropdownModel, MatrixDynamicRowModel, QuestionMatrixDynamicModel, MatrixRowModel, MatrixCells, QuestionMatrixModel, QuestionMatrixBaseModel, MultipleTextItemModel, MultipleTextCell, MultipleTextErrorCell, MutlipleTextErrorRow, MutlipleTextRow, QuestionMultipleTextModel, MultipleTextEditorModel, PanelModel, PanelModelBase, QuestionRowModel, FlowPanelModel, PageModel, DefaultTitleModel, Question, QuestionNonValue, QuestionEmptyModel, QuestionCheckboxBase, QuestionSelectBase, QuestionCheckboxModel, QuestionTagboxModel, QuestionRankingModel, QuestionCommentModel, QuestionDropdownModel, QuestionFactory, ElementFactory, QuestionFileModel, QuestionFilePage, QuestionHtmlModel, QuestionRadiogroupModel, QuestionRatingModel, RenderedRatingItem, QuestionExpressionModel, QuestionTextBase, CharacterCounter, QuestionTextModel, QuestionBooleanModel, QuestionImagePickerModel, ImageItemValue, QuestionImageModel, QuestionSignaturePadModel, QuestionPanelDynamicModel, QuestionPanelDynamicItem, SurveyTimer, SurveyTimerModel, tryFocusPage, createTOCListModel, getTocRootCss, TOCModel, SurveyProgressModel, ProgressButtons, ProgressButtonsResponsivityManager, SurveyModel, SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, SurveyTriggerSkip, Trigger, PopupSurveyModel, SurveyWindowModel, TextPreProcessor, Notifier, Cover, CoverCell, dxSurveyService, englishStrings, surveyLocalization, surveyStrings, getLocaleString, getLocaleStrings, setupLocale, QuestionCustomWidget, CustomWidgetCollection, QuestionCustomModel, QuestionCompositeModel, ComponentQuestionJSON, ComponentCollection, 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, chooseFiles, sanitizeEditableContent, prepareElementForVerticalAnimation, cleanHtmlElementAfterAnimation, classesToSelector, renamedIcons, getIconNameFromProxy, InputMaskBase, InputMaskPattern, InputMaskNumeric, InputMaskDateTime, InputMaskCurrency, CssClassBuilder, TextAreaModel, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, StylesManager, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgThemeSets, addIconsToThemeSet, RendererFactory, ResponsivityManager, VerticalResponsivityManager, unwrap, getOriginalEvent, getElement, activateLazyRenderingChecks, createDropdownActionModel, createDropdownActionModelAdvanced, createPopupModelWithListModel, getActionDropdownButtonTarget, BaseAction, Action, ActionDropdownViewModel, AnimationUtils, AnimationPropertyUtils, AnimationGroupUtils, AnimationProperty, AnimationBoolean, AnimationGroup, AnimationTab, AdaptiveActionContainer, defaultActionBarCss, ActionContainer, DragOrClickHelper, Model */
109
109
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
110
110
 
111
111
  "use strict";
@@ -267,6 +267,7 @@ __webpack_require__.d(__webpack_exports__, "englishStrings", function() { return
267
267
  __webpack_require__.d(__webpack_exports__, "surveyLocalization", function() { return /* reexport */ surveyLocalization; });
268
268
  __webpack_require__.d(__webpack_exports__, "surveyStrings", function() { return /* reexport */ surveyStrings; });
269
269
  __webpack_require__.d(__webpack_exports__, "getLocaleString", function() { return /* reexport */ getLocaleString; });
270
+ __webpack_require__.d(__webpack_exports__, "getLocaleStrings", function() { return /* reexport */ getLocaleStrings; });
270
271
  __webpack_require__.d(__webpack_exports__, "setupLocale", function() { return /* reexport */ setupLocale; });
271
272
  __webpack_require__.d(__webpack_exports__, "QuestionCustomWidget", function() { return /* reexport */ QuestionCustomWidget; });
272
273
  __webpack_require__.d(__webpack_exports__, "CustomWidgetCollection", function() { return /* reexport */ questionCustomWidgets_CustomWidgetCollection; });
@@ -1247,6 +1248,9 @@ function getLocaleString(strName, locale) {
1247
1248
  if (locale === void 0) { locale = null; }
1248
1249
  return surveyLocalization.getString(strName, locale);
1249
1250
  }
1251
+ function getLocaleStrings(locale) {
1252
+ return surveyLocalization.getLocaleStrings(locale);
1253
+ }
1250
1254
  function setupLocale(localeConfig) {
1251
1255
  surveyLocalization.setupLocale(localeConfig);
1252
1256
  }
@@ -11958,7 +11962,13 @@ var survey_element_SurveyElementCore = /** @class */ (function (_super) {
11958
11962
  Object.defineProperty(SurveyElementCore.prototype, "isPage", {
11959
11963
  /**
11960
11964
  * Returns `true` if the survey element is a page.
11961
- * @see Base.getType
11965
+ *
11966
+ * This property returns `false` for [`PageModel`](https://surveyjs.io/form-library/documentation/api-reference/page-model) objects in the following cases:
11967
+ *
11968
+ * - `SurveyModel`'s [`questionsOnPageMode`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#questionsOnPageMode) is set to `"singlePage"`.
11969
+ * - The page is included in a [preview of given answers](https://surveyjs.io/form-library/documentation/design-survey/create-a-multi-page-survey#preview-page).
11970
+ *
11971
+ * In those cases, the survey creates an internal `PageModel` object to show all questions on one page, and all regular pages become panels.
11962
11972
  */
11963
11973
  get: function () { return false; },
11964
11974
  enumerable: false,
@@ -11966,8 +11976,14 @@ var survey_element_SurveyElementCore = /** @class */ (function (_super) {
11966
11976
  });
11967
11977
  Object.defineProperty(SurveyElementCore.prototype, "isPanel", {
11968
11978
  /**
11969
- * Returns `true` if the survey element is a panel.
11970
- * @see Base.getType
11979
+ * Returns `true` if the survey element is a panel or acts as one.
11980
+ *
11981
+ * This property returns `true` for `PageModel` objects in the following cases:
11982
+ *
11983
+ * - `SurveyModel`'s [`questionsOnPageMode`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#questionsOnPageMode) is set to `"singlePage"`.
11984
+ * - The page is included in a [preview of given answers](https://surveyjs.io/form-library/documentation/design-survey/create-a-multi-page-survey#preview-page).
11985
+ *
11986
+ * In those cases, the survey creates an internal `PageModel` object to show all questions on one page, and all regular pages become panels.
11971
11987
  */
11972
11988
  get: function () { return false; },
11973
11989
  enumerable: false,
@@ -11976,7 +11992,6 @@ var survey_element_SurveyElementCore = /** @class */ (function (_super) {
11976
11992
  Object.defineProperty(SurveyElementCore.prototype, "isQuestion", {
11977
11993
  /**
11978
11994
  * Returns `true` if the survey element is a question.
11979
- * @see Base.getType
11980
11995
  */
11981
11996
  get: function () { return false; },
11982
11997
  enumerable: false,
@@ -11985,7 +12000,6 @@ var survey_element_SurveyElementCore = /** @class */ (function (_super) {
11985
12000
  Object.defineProperty(SurveyElementCore.prototype, "isSurvey", {
11986
12001
  /**
11987
12002
  * Returns `true` if the element is a survey.
11988
- * @see Base.getType
11989
12003
  */
11990
12004
  get: function () { return false; },
11991
12005
  enumerable: false,
@@ -13000,7 +13014,7 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
13000
13014
  SurveyElement.prototype.getPage = function (parent) {
13001
13015
  while (parent && parent.parent)
13002
13016
  parent = parent.parent;
13003
- if (parent && parent.getType() == "page")
13017
+ if (parent && parent.isPage)
13004
13018
  return parent;
13005
13019
  return null;
13006
13020
  };
@@ -13052,7 +13066,7 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
13052
13066
  });
13053
13067
  Object.defineProperty(SurveyElement.prototype, "hasParent", {
13054
13068
  get: function () {
13055
- return (this.parent && !this.parent.isPage && (!this.parent.originalPage)) || (this.parent === undefined);
13069
+ return (this.parent && !this.parent.isPage) || (this.parent === undefined);
13056
13070
  },
13057
13071
  enumerable: false,
13058
13072
  configurable: true
@@ -13312,6 +13326,8 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
13312
13326
  return null;
13313
13327
  };
13314
13328
  SurveyElement.prototype.getCssTitle = function (cssClasses) {
13329
+ if (!cssClasses)
13330
+ return "";
13315
13331
  var isExpandable = this.state !== "default";
13316
13332
  var numInlineLimit = 4;
13317
13333
  return new CssClassBuilder()
@@ -14211,18 +14227,18 @@ function confirmAction(message) {
14211
14227
  return settings.confirmActionFunc(message);
14212
14228
  return confirm(message);
14213
14229
  }
14214
- function confirmActionAsync(message, funcOnYes, funcOnNo, locale, rootElement) {
14230
+ function confirmActionAsync(options) {
14215
14231
  var callbackFunc = function (res) {
14216
14232
  if (res)
14217
- funcOnYes();
14218
- else if (!!funcOnNo)
14219
- funcOnNo();
14233
+ options.funcOnYes();
14234
+ else if (!!options.funcOnNo)
14235
+ options.funcOnNo();
14220
14236
  };
14221
14237
  if (!!settings && !!settings.confirmActionAsync) {
14222
- if (settings.confirmActionAsync(message, callbackFunc, undefined, locale, rootElement))
14238
+ if (settings.confirmActionAsync(options.message, callbackFunc, options))
14223
14239
  return;
14224
14240
  }
14225
- callbackFunc(confirmAction(message));
14241
+ callbackFunc(confirmAction(options.message));
14226
14242
  }
14227
14243
  function detectIEBrowser() {
14228
14244
  var ua = navigator.userAgent;
@@ -14758,7 +14774,7 @@ var Logger = /** @class */ (function () {
14758
14774
  return Logger;
14759
14775
  }());
14760
14776
 
14761
- function showConfirmDialog(message, callback, applyTitle, locale, rootElement) {
14777
+ function showConfirmDialog(message, callback, options) {
14762
14778
  var locStr = new localizablestring_LocalizableString(undefined);
14763
14779
  var popupViewModel = settings.showDialog({
14764
14780
  componentName: "sv-string-viewer",
@@ -14771,17 +14787,17 @@ function showConfirmDialog(message, callback, applyTitle, locale, rootElement) {
14771
14787
  callback(false);
14772
14788
  return false;
14773
14789
  },
14774
- title: message,
14790
+ title: message || options.message,
14775
14791
  displayMode: "popup",
14776
14792
  isFocusedContent: false,
14777
- cssClass: "sv-popup--confirm-delete"
14778
- }, rootElement);
14793
+ cssClass: options.cssClass || "sv-popup--confirm"
14794
+ }, options.rootElement);
14779
14795
  var toolbar = popupViewModel.footerToolbar;
14780
14796
  var applyBtn = toolbar.getActionById("apply");
14781
14797
  var cancelBtn = toolbar.getActionById("cancel");
14782
- cancelBtn.title = getLocaleString("cancel", locale);
14798
+ cancelBtn.title = getLocaleString("cancel", options.locale);
14783
14799
  cancelBtn.innerCss = "sv-popup__body-footer-item sv-popup__button sd-btn sd-btn--small";
14784
- applyBtn.title = applyTitle || getLocaleString("ok", locale);
14800
+ applyBtn.title = options.applyTitle || getLocaleString("ok", options.locale);
14785
14801
  applyBtn.innerCss = "sv-popup__body-footer-item sv-popup__button sv-popup__button--danger sd-btn sd-btn--small sd-btn--danger";
14786
14802
  configConfirmDialog(popupViewModel);
14787
14803
  return true;
@@ -15398,8 +15414,8 @@ var settings = {
15398
15414
  * @param message A message to be displayed in the confirm dialog window.
15399
15415
  * @param callback A callback function that should be called with `true` if a user confirms an action or `false` otherwise.
15400
15416
  */
15401
- confirmActionAsync: function (message, callback, applyTitle, locale, rootElement) {
15402
- return showConfirmDialog(message, callback, applyTitle, locale, rootElement);
15417
+ confirmActionAsync: function (message, callback, options) {
15418
+ return showConfirmDialog(message, callback, options);
15403
15419
  },
15404
15420
  /**
15405
15421
  * A minimum width value for all survey elements.
@@ -31813,10 +31829,16 @@ var question_matrixdynamic_QuestionMatrixDynamicModel = /** @class */ (function
31813
31829
  confirmDelete = this.isRequireConfirmOnRowDelete(index);
31814
31830
  }
31815
31831
  if (confirmDelete) {
31816
- confirmActionAsync(this.confirmDeleteText, function () {
31817
- _this.removeRowAsync(index, row);
31818
- onRowRemoved && onRowRemoved();
31819
- }, undefined, this.getLocale(), this.survey.rootElement);
31832
+ confirmActionAsync({
31833
+ message: this.confirmDeleteText,
31834
+ funcOnYes: function () {
31835
+ _this.removeRowAsync(index, row);
31836
+ onRowRemoved && onRowRemoved();
31837
+ },
31838
+ locale: this.getLocale(),
31839
+ rootElement: this.survey.rootElement,
31840
+ cssClass: this.cssClasses.confirmDialog
31841
+ });
31820
31842
  return;
31821
31843
  }
31822
31844
  this.removeRowAsync(index, row);
@@ -32542,7 +32564,8 @@ var defaultV2Css = {
32542
32564
  noPointerEventsMode: "sd-question--no-pointer-events",
32543
32565
  errorsContainer: "sd-element__erbox sd-question__erbox",
32544
32566
  errorsContainerTop: "sd-element__erbox--above-element sd-question__erbox--above-question",
32545
- errorsContainerBottom: "sd-question__erbox--below-question"
32567
+ errorsContainerBottom: "sd-question__erbox--below-question",
32568
+ confirmDialog: "sd-popup--confirm sv-popup--confirm"
32546
32569
  },
32547
32570
  image: {
32548
32571
  mainRoot: "sd-question sd-question--image",
@@ -34475,7 +34498,6 @@ var panel_spreadArray = (undefined && undefined.__spreadArray) || function (to,
34475
34498
 
34476
34499
 
34477
34500
 
34478
-
34479
34501
  var panel_QuestionRowModel = /** @class */ (function (_super) {
34480
34502
  panel_extends(QuestionRowModel, _super);
34481
34503
  function QuestionRowModel(panel) {
@@ -35078,9 +35100,14 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
35078
35100
  });
35079
35101
  Object.defineProperty(PanelModelBase.prototype, "parent", {
35080
35102
  /**
35081
- * Returns a survey element (panel or page) that contains this panel and allows you to move this question to a different survey element.
35103
+ * Returns a survey element (panel or page) that contains this panel and allows you to move the panel to a different survey element.
35104
+ *
35105
+ * For `PageModel` objects, the `parent` property is `null`, except in the following cases:
35082
35106
  *
35083
- * This property is always `null` for the `PageModel` object.
35107
+ * - `SurveyModel`'s [`questionsOnPageMode`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#questionsOnPageMode) is set to `"singlePage"`.
35108
+ * - The page is included in a [preview of given answers](https://surveyjs.io/form-library/documentation/design-survey/create-a-multi-page-survey#preview-page).
35109
+ *
35110
+ * In those cases, the survey creates an internal `PageModel` object to show all questions on one page, and the `parent` property contains this object.
35084
35111
  */
35085
35112
  get: function () {
35086
35113
  return this.getPropertyValue("parent", null);
@@ -35163,10 +35190,6 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
35163
35190
  configurable: true
35164
35191
  });
35165
35192
  Object.defineProperty(PanelModelBase.prototype, "isPanel", {
35166
- /**
35167
- * Returns `true` if the survey element is a panel.
35168
- * @see Base.getType
35169
- */
35170
35193
  get: function () {
35171
35194
  return false;
35172
35195
  },
@@ -35908,11 +35931,11 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
35908
35931
  PanelModelBase.prototype.updateRows = function () {
35909
35932
  if (this.isLoadingFromJson)
35910
35933
  return;
35911
- for (var i = 0; i < this.elements.length; i++) {
35912
- if (this.elements[i].isPanel) {
35913
- this.elements[i].updateRows();
35934
+ this.getElementsForRows().forEach(function (el) {
35935
+ if (el.isPanel) {
35936
+ el.updateRows();
35914
35937
  }
35915
- }
35938
+ });
35916
35939
  this.onRowsChanged();
35917
35940
  };
35918
35941
  Object.defineProperty(PanelModelBase.prototype, "rows", {
@@ -36021,7 +36044,9 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36021
36044
  var _this = this;
36022
36045
  var survey = this.survey;
36023
36046
  var fireNotification = this.canFireAddRemoveNotifications(element);
36024
- element.setSurveyImpl(this.surveyImpl);
36047
+ if (!!this.surveyImpl) {
36048
+ element.setSurveyImpl(this.surveyImpl);
36049
+ }
36025
36050
  element.parent = this;
36026
36051
  this.markQuestionListDirty();
36027
36052
  if (this.canBuildRows()) {
@@ -36047,8 +36072,8 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36047
36072
  };
36048
36073
  PanelModelBase.prototype.onRemoveElement = function (element) {
36049
36074
  element.parent = null;
36075
+ this.unregisterElementPropertiesChanged(element);
36050
36076
  this.markQuestionListDirty();
36051
- element.unregisterPropertyChangedHandlers(["visible", "isVisible", "startWithNewLine"], this.id);
36052
36077
  this.updateRowsOnElementRemoved(element);
36053
36078
  if (this.isRandomizing)
36054
36079
  return;
@@ -36057,6 +36082,9 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36057
36082
  this.removeElementCallback(element);
36058
36083
  this.onElementVisibilityChanged(this);
36059
36084
  };
36085
+ PanelModelBase.prototype.unregisterElementPropertiesChanged = function (element) {
36086
+ element.unregisterPropertyChangedHandlers(["visible", "isVisible", "startWithNewLine"], this.id);
36087
+ };
36060
36088
  PanelModelBase.prototype.onRemoveElementNotifySurvey = function (element) {
36061
36089
  if (!this.canFireAddRemoveNotifications(element))
36062
36090
  return;
@@ -36101,19 +36129,21 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36101
36129
  PanelModelBase.prototype.buildRows = function () {
36102
36130
  if (!this.canBuildRows())
36103
36131
  return [];
36104
- var result = new Array();
36105
- for (var i = 0; i < this.elements.length; i++) {
36106
- var el = this.elements[i];
36132
+ var res = new Array();
36133
+ var els = this.getElementsForRows();
36134
+ for (var i = 0; i < els.length; i++) {
36135
+ var el = els[i];
36107
36136
  var isNewRow = i == 0 || el.startWithNewLine;
36108
- var row = isNewRow ? this.createRowAndSetLazy(result.length) : result[result.length - 1];
36137
+ var row = isNewRow ? this.createRowAndSetLazy(res.length) : res[res.length - 1];
36109
36138
  if (isNewRow)
36110
- result.push(row);
36139
+ res.push(row);
36111
36140
  row.addElement(el);
36112
36141
  }
36113
- for (var i = 0; i < result.length; i++) {
36114
- result[i].updateVisible();
36115
- }
36116
- return result;
36142
+ res.forEach(function (row) { return row.updateVisible(); });
36143
+ return res;
36144
+ };
36145
+ PanelModelBase.prototype.getElementsForRows = function () {
36146
+ return this.elements;
36117
36147
  };
36118
36148
  PanelModelBase.prototype.getDragDropInfo = function () {
36119
36149
  var page = this.getPage(this.parent);
@@ -36676,10 +36706,13 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36676
36706
  }
36677
36707
  this.rows.splice(0, this.rows.length);
36678
36708
  }
36709
+ this.disposeElements();
36710
+ this.elements.splice(0, this.elements.length);
36711
+ };
36712
+ PanelModelBase.prototype.disposeElements = function () {
36679
36713
  for (var i = 0; i < this.elements.length; i++) {
36680
36714
  this.elements[i].dispose();
36681
36715
  }
36682
- this.elements.splice(0, this.elements.length);
36683
36716
  };
36684
36717
  PanelModelBase.panelCounter = 100;
36685
36718
  panel_decorate([
@@ -36732,7 +36765,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
36732
36765
  });
36733
36766
  PanelModel.prototype.getSurvey = function (live) {
36734
36767
  if (live === void 0) { live = false; }
36735
- if (live) {
36768
+ if (live && this.isPanel) {
36736
36769
  return !!this.parent ? this.parent.getSurvey(live) : null;
36737
36770
  }
36738
36771
  return _super.prototype.getSurvey.call(this, live);
@@ -36883,6 +36916,8 @@ var panel_PanelModel = /** @class */ (function (_super) {
36883
36916
  return locTitleValue;
36884
36917
  };
36885
36918
  PanelModel.prototype.beforeSetVisibleIndex = function (index) {
36919
+ if (this.isPage)
36920
+ return _super.prototype.beforeSetVisibleIndex.call(this, index);
36886
36921
  var visibleIndex = -1;
36887
36922
  if (this.showNumber && (this.isDesignMode || !this.locTitle.isEmpty || this.hasParentInQuestionIndex())) {
36888
36923
  visibleIndex = index;
@@ -36914,7 +36949,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
36914
36949
  }
36915
36950
  };
36916
36951
  PanelModel.prototype.getRenderedTitle = function (str) {
36917
- if (!str) {
36952
+ if (this.isPanel && !str) {
36918
36953
  if (this.isCollapsed || this.isExpanded)
36919
36954
  return this.name;
36920
36955
  if (this.isDesignMode)
@@ -37039,11 +37074,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
37039
37074
  return this.footerToolbarValue;
37040
37075
  };
37041
37076
  Object.defineProperty(PanelModel.prototype, "hasEditButton", {
37042
- get: function () {
37043
- if (this.survey && this.survey.state === "preview")
37044
- return (this.parent && this.parent instanceof page_PageModel);
37045
- return false;
37046
- },
37077
+ get: function () { return false; },
37047
37078
  enumerable: false,
37048
37079
  configurable: true
37049
37080
  });
@@ -37052,19 +37083,16 @@ var panel_PanelModel = /** @class */ (function (_super) {
37052
37083
  return;
37053
37084
  this.survey.cancelPreviewByPage(this);
37054
37085
  };
37055
- PanelModel.prototype.canShowTitle = function (survey) {
37056
- var page = this.originalPage;
37057
- if (!!page)
37058
- return page.canShowTitle(survey);
37059
- return _super.prototype.canShowTitle.call(this, survey);
37060
- };
37061
37086
  Object.defineProperty(PanelModel.prototype, "cssTitle", {
37062
37087
  get: function () {
37063
- return this.getCssTitle(this.cssClasses.panel);
37088
+ return this.getCssPanelTitle();
37064
37089
  },
37065
37090
  enumerable: false,
37066
37091
  configurable: true
37067
37092
  });
37093
+ PanelModel.prototype.getCssPanelTitle = function () {
37094
+ return this.getCssTitle(this.cssClasses.panel);
37095
+ };
37068
37096
  PanelModel.prototype.getCssTitleExpandableSvg = function () {
37069
37097
  if (this.state === "default")
37070
37098
  return null;
@@ -37078,6 +37106,8 @@ var panel_PanelModel = /** @class */ (function (_super) {
37078
37106
  configurable: true
37079
37107
  });
37080
37108
  PanelModel.prototype.getCssError = function (cssClasses) {
37109
+ if (this.isPage)
37110
+ return _super.prototype.getCssError.call(this, cssClasses);
37081
37111
  var builder = new CssClassBuilder()
37082
37112
  .append(_super.prototype.getCssError.call(this, cssClasses))
37083
37113
  .append(cssClasses.panel.errorsContainer);
@@ -37108,10 +37138,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
37108
37138
  };
37109
37139
  Object.defineProperty(PanelModel.prototype, "showPanelAsPage", {
37110
37140
  get: function () {
37111
- var panel = this;
37112
- if (!!panel.originalPage)
37113
- return true;
37114
- return panel.survey.isShowingPreview && panel.survey.isSinglePage && !!panel.parent && !!panel.parent.originalPage;
37141
+ return false;
37115
37142
  },
37116
37143
  enumerable: false,
37117
37144
  configurable: true
@@ -37151,7 +37178,9 @@ var panel_PanelModel = /** @class */ (function (_super) {
37151
37178
  PanelModel.prototype.afterRenderCore = function (element) {
37152
37179
  var _a;
37153
37180
  _super.prototype.afterRenderCore.call(this, element);
37154
- (_a = this.survey) === null || _a === void 0 ? void 0 : _a.afterRenderPanel(this, element);
37181
+ if (this.isPanel) {
37182
+ (_a = this.survey) === null || _a === void 0 ? void 0 : _a.afterRenderPanel(this, element);
37183
+ }
37155
37184
  };
37156
37185
  return PanelModel;
37157
37186
  }(panel_PanelModelBase));
@@ -37199,27 +37228,17 @@ Serializer.addClass("panelbase", [
37199
37228
  return new panel_PanelModelBase();
37200
37229
  });
37201
37230
  Serializer.addClass("panel", [
37202
- {
37203
- name: "state",
37204
- default: "default",
37205
- choices: ["default", "collapsed", "expanded"],
37206
- },
37231
+ { name: "state", default: "default", choices: ["default", "collapsed", "expanded"] },
37207
37232
  { name: "isRequired:switch", overridingProperty: "requiredIf" },
37208
- {
37209
- name: "requiredErrorText:text",
37210
- serializationProperty: "locRequiredErrorText",
37211
- },
37233
+ { name: "requiredErrorText:text", serializationProperty: "locRequiredErrorText" },
37212
37234
  { name: "startWithNewLine:boolean", default: true },
37213
- "width",
37235
+ { name: "width" },
37214
37236
  { name: "minWidth", defaultFunc: function () { return "auto"; } },
37215
37237
  { name: "maxWidth", defaultFunc: function () { return settings.maxWidth; } },
37216
- {
37217
- name: "colSpan:number", visible: false,
37218
- onSerializeValue: function (obj) { return obj.getPropertyValue("colSpan"); },
37219
- },
37238
+ { name: "colSpan:number", visible: false, onSerializeValue: function (obj) { return obj.getPropertyValue("colSpan"); } },
37220
37239
  {
37221
37240
  name: "effectiveColSpan:number", minValue: 1, isSerializable: false,
37222
- visibleIf: function (obj) { return !!obj && !!obj.survey && obj.survey.gridLayoutEnabled; }
37241
+ visibleIf: function (obj) { return !!obj.survey && obj.survey.gridLayoutEnabled; }
37223
37242
  },
37224
37243
  { name: "innerIndent:number", default: 0, choices: [0, 1, 2, 3] },
37225
37244
  { name: "indent:number", default: 0, choices: [0, 1, 2, 3], visible: false },
@@ -37239,13 +37258,9 @@ Serializer.addClass("panel", [
37239
37258
  : [];
37240
37259
  },
37241
37260
  },
37242
- "showNumber:boolean",
37243
- {
37244
- name: "showQuestionNumbers",
37245
- default: "default",
37246
- choices: ["default", "onpanel", "off"],
37247
- },
37248
- "questionStartIndex",
37261
+ { name: "showNumber:boolean" },
37262
+ { name: "showQuestionNumbers", default: "default", choices: ["default", "onpanel", "off"] },
37263
+ { name: "questionStartIndex", visibleIf: function (obj) { return obj.isPanel; } },
37249
37264
  { name: "allowAdaptiveActions:boolean", default: true, visible: false },
37250
37265
  ], function () {
37251
37266
  return new panel_PanelModel();
@@ -37521,12 +37536,61 @@ var page_PageModel = /** @class */ (function (_super) {
37521
37536
  return this.name;
37522
37537
  };
37523
37538
  Object.defineProperty(PageModel.prototype, "isPage", {
37539
+ get: function () {
37540
+ return !this.isPanel;
37541
+ },
37542
+ enumerable: false,
37543
+ configurable: true
37544
+ });
37545
+ Object.defineProperty(PageModel.prototype, "isPanel", {
37546
+ get: function () {
37547
+ return !!this.parent;
37548
+ },
37549
+ enumerable: false,
37550
+ configurable: true
37551
+ });
37552
+ Object.defineProperty(PageModel.prototype, "showPanelAsPage", {
37524
37553
  get: function () {
37525
37554
  return true;
37526
37555
  },
37527
37556
  enumerable: false,
37528
37557
  configurable: true
37529
37558
  });
37559
+ Object.defineProperty(PageModel.prototype, "hasEditButton", {
37560
+ get: function () {
37561
+ return this.isPanel && this.survey && this.survey.state === "preview"
37562
+ && !!this.parent && !this.parent.isPanel;
37563
+ },
37564
+ enumerable: false,
37565
+ configurable: true
37566
+ });
37567
+ PageModel.prototype.getElementsForRows = function () {
37568
+ var _a;
37569
+ var q = (_a = this.survey) === null || _a === void 0 ? void 0 : _a.currentSingleQuestion;
37570
+ if (!!q) {
37571
+ if (q.page === this)
37572
+ return [q];
37573
+ return [];
37574
+ }
37575
+ return _super.prototype.getElementsForRows.call(this);
37576
+ };
37577
+ PageModel.prototype.disposeElements = function () {
37578
+ if (!this.isPageContainer) {
37579
+ _super.prototype.disposeElements.call(this);
37580
+ }
37581
+ };
37582
+ PageModel.prototype.onRemoveElement = function (element) {
37583
+ if (this.isPageContainer) {
37584
+ element.parent = null;
37585
+ this.unregisterElementPropertiesChanged(element);
37586
+ }
37587
+ else {
37588
+ _super.prototype.onRemoveElement.call(this, element);
37589
+ }
37590
+ };
37591
+ PageModel.prototype.getTemplate = function () {
37592
+ return this.isPanel ? "panel" : _super.prototype.getTemplate.call(this);
37593
+ };
37530
37594
  Object.defineProperty(PageModel.prototype, "no", {
37531
37595
  get: function () {
37532
37596
  if (!this.canShowPageNumber() || !this.survey)
@@ -37664,6 +37728,8 @@ var page_PageModel = /** @class */ (function (_super) {
37664
37728
  configurable: true
37665
37729
  });
37666
37730
  PageModel.prototype.calcCssClasses = function (css) {
37731
+ if (this.isPanel)
37732
+ return _super.prototype.calcCssClasses.call(this, css);
37667
37733
  var classes = { page: {}, error: {}, pageTitle: "", pageDescription: "", row: "", rowMultiple: "", pageRow: "", rowCompact: "", rowEnter: "", rowLeave: "", rowDelayedEnter: "", rowReplace: "" };
37668
37734
  this.copyCssClasses(classes.page, css.page);
37669
37735
  this.copyCssClasses(classes.error, css.error);
@@ -37702,20 +37768,18 @@ var page_PageModel = /** @class */ (function (_super) {
37702
37768
  }
37703
37769
  return classes;
37704
37770
  };
37705
- Object.defineProperty(PageModel.prototype, "cssTitle", {
37706
- get: function () {
37707
- if (!this.cssClasses.page)
37708
- return "";
37709
- return new CssClassBuilder()
37710
- .append(this.cssClasses.page.title)
37711
- .toString();
37712
- },
37713
- enumerable: false,
37714
- configurable: true
37715
- });
37771
+ PageModel.prototype.getCssPanelTitle = function () {
37772
+ if (this.isPanel)
37773
+ return _super.prototype.getCssPanelTitle.call(this);
37774
+ if (!this.cssClasses.page)
37775
+ return "";
37776
+ return new CssClassBuilder()
37777
+ .append(this.cssClasses.page.title)
37778
+ .toString();
37779
+ };
37716
37780
  Object.defineProperty(PageModel.prototype, "cssRoot", {
37717
37781
  get: function () {
37718
- if (!this.cssClasses.page || !this.survey)
37782
+ if (this.isPanel || !this.cssClasses.page || !this.survey)
37719
37783
  return "";
37720
37784
  return new CssClassBuilder()
37721
37785
  .append(this.cssClasses.page.root)
@@ -37727,6 +37791,8 @@ var page_PageModel = /** @class */ (function (_super) {
37727
37791
  configurable: true
37728
37792
  });
37729
37793
  PageModel.prototype.getCssError = function (cssClasses) {
37794
+ if (this.isPanel)
37795
+ return _super.prototype.getCssError.call(this, cssClasses);
37730
37796
  return new CssClassBuilder()
37731
37797
  .append(_super.prototype.getCssError.call(this, cssClasses))
37732
37798
  .append(cssClasses.page.errorsContainer).toString();
@@ -37903,7 +37969,7 @@ var page_PageModel = /** @class */ (function (_super) {
37903
37969
  jsonobject_property({ defaultValue: -1, onSet: function (val, target) { return target.onNumChanged(val); } })
37904
37970
  ], PageModel.prototype, "num", void 0);
37905
37971
  return PageModel;
37906
- }(panel_PanelModelBase));
37972
+ }(panel_PanelModel));
37907
37973
 
37908
37974
  Serializer.addClass("page", [
37909
37975
  {
@@ -37928,9 +37994,25 @@ Serializer.addClass("page", [
37928
37994
  },
37929
37995
  { name: "title:text", serializationProperty: "locTitle" },
37930
37996
  { name: "description:text", serializationProperty: "locDescription" },
37997
+ { name: "state", visible: false },
37998
+ { name: "isRequired", visible: false },
37999
+ { name: "startWithNewLine", visible: false },
38000
+ { name: "width", visible: false },
38001
+ { name: "minWidth", visible: false },
38002
+ { name: "maxWidth", visible: false },
38003
+ { name: "colSpan", visible: false, isSerializable: false },
38004
+ { name: "effectiveColSpan:number", visible: false, isSerializable: false },
38005
+ { name: "innerIndent", visible: false },
38006
+ { name: "indent", visible: false },
38007
+ { name: "page", visible: false, isSerializable: false },
38008
+ { name: "showNumber", visible: false },
38009
+ { name: "showQuestionNumbers", visible: false },
38010
+ { name: "questionStartIndex", visible: false },
38011
+ { name: "allowAdaptiveActions", visible: false },
38012
+ { name: "requiredErrorText:text", serializationProperty: "locRequiredErrorText", visible: false },
37931
38013
  ], function () {
37932
38014
  return new page_PageModel();
37933
- }, "panelbase");
38015
+ }, "panel");
37934
38016
 
37935
38017
  // CONCATENATED MODULE: ./packages/survey-core/src/progress-buttons.ts
37936
38018
  var progress_buttons_extends = (undefined && undefined.__extends) || (function () {
@@ -38172,16 +38254,27 @@ var ProgressButtonsResponsivityManager = /** @class */ (function () {
38172
38254
 
38173
38255
 
38174
38256
 
38175
-
38176
38257
  function tryFocusPage(survey, panel) {
38177
38258
  if (survey.isDesignMode)
38178
38259
  return true;
38179
38260
  panel.focusFirstQuestion();
38180
38261
  return true;
38181
38262
  }
38263
+ function getPage(question) {
38264
+ if (!!question.parentQuestion) {
38265
+ return getPage(question.parentQuestion);
38266
+ }
38267
+ var parent = question.parent;
38268
+ while (parent && parent.getType() !== "page" && parent.parent) {
38269
+ parent = parent.parent;
38270
+ }
38271
+ if (parent && parent.getType() === "page") {
38272
+ return parent;
38273
+ }
38274
+ return null;
38275
+ }
38182
38276
  function createTOCListModel(survey, onAction) {
38183
38277
  var items = getTOCItems(survey, onAction);
38184
- var selectedItem = items.filter(function (i) { return !!survey.currentPage && i.id === survey.currentPage.name; })[0] || items[0];
38185
38278
  var listOptions = {
38186
38279
  items: items,
38187
38280
  onSelectionChanged: function (item) {
@@ -38189,15 +38282,20 @@ function createTOCListModel(survey, onAction) {
38189
38282
  listModel.selectedItem = item;
38190
38283
  }
38191
38284
  },
38192
- allowSelection: true,
38193
38285
  searchEnabled: false,
38194
38286
  locOwner: survey,
38195
- selectedItem: selectedItem
38196
38287
  };
38197
38288
  var listModel = new list_ListModel(listOptions);
38198
38289
  listModel.allowSelection = false;
38290
+ var updateSelectedItem = function (currentPage, defaultSelection) {
38291
+ listModel.selectedItem = !!currentPage && listModel.actions.filter(function (i) { return i.id === currentPage.name; })[0] || defaultSelection;
38292
+ };
38293
+ updateSelectedItem(survey.currentPage, items[0]);
38199
38294
  survey.onCurrentPageChanged.add(function (s, o) {
38200
- listModel.selectedItem = listModel.actions.filter(function (i) { return !!survey.currentPage && i.id === survey.currentPage.name; })[0];
38295
+ updateSelectedItem(survey.currentPage);
38296
+ });
38297
+ survey.onFocusInQuestion.add(function (s, o) {
38298
+ updateSelectedItem(getPage(o.question));
38201
38299
  });
38202
38300
  survey.registerFunctionOnPropertyValueChanged("pages", function () {
38203
38301
  listModel.setItems(getTOCItems(survey, onAction));
@@ -38205,8 +38303,7 @@ function createTOCListModel(survey, onAction) {
38205
38303
  return listModel;
38206
38304
  }
38207
38305
  function getTOCItems(survey, onAction) {
38208
- var _a;
38209
- var pagesSource = survey.questionsOnPageMode === "singlePage" ? (_a = survey.pages[0]) === null || _a === void 0 ? void 0 : _a.elements : survey.pages;
38306
+ var pagesSource = survey.pages;
38210
38307
  var items = (pagesSource || []).map(function (page) {
38211
38308
  return new action_Action({
38212
38309
  id: page.name,
@@ -38214,7 +38311,7 @@ function getTOCItems(survey, onAction) {
38214
38311
  action: function () {
38215
38312
  DomDocumentHelper.activeElementBlur();
38216
38313
  !!onAction && onAction();
38217
- if (page instanceof page_PageModel) {
38314
+ if (page.isPage) {
38218
38315
  return survey.tryNavigateToPage(page);
38219
38316
  }
38220
38317
  return tryFocusPage(survey, page);
@@ -41927,6 +42024,8 @@ var survey_SurveyModel = /** @class */ (function (_super) {
41927
42024
  get: function () {
41928
42025
  if (this.isDesignMode)
41929
42026
  return this.pages;
42027
+ if (!!this.pageContainerValue && (this.isShowingPreview || this.isSinglePage))
42028
+ return [this.pageContainerValue];
41930
42029
  var result = new Array();
41931
42030
  for (var i = 0; i < this.pages.length; i++) {
41932
42031
  if (this.isPageInVisibleList(this.pages[i])) {
@@ -42060,7 +42159,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
42060
42159
  return false;
42061
42160
  if (index === this.currentPageNo)
42062
42161
  return false;
42063
- if (index < this.currentPageNo || this.isValidateOnComplete) {
42162
+ if (index < this.currentPageNo || this.checkErrorsMode === "onComplete" || this.validationAllowSwitchPages) {
42064
42163
  this.currentPageNo = index;
42065
42164
  return true;
42066
42165
  }
@@ -42392,6 +42491,10 @@ var survey_SurveyModel = /** @class */ (function (_super) {
42392
42491
  this.onFirstPageIsStartedChanged();
42393
42492
  if (goToFirstPage) {
42394
42493
  this.currentPage = this.firstVisiblePage;
42494
+ if (this.currentSingleQuestion) {
42495
+ var questions = this.getAllQuestions(true);
42496
+ this.currentSingleQuestion = questions.length > 0 ? questions[0] : undefined;
42497
+ }
42395
42498
  }
42396
42499
  if (clearData) {
42397
42500
  this.updateValuesWithDefaults();
@@ -42429,7 +42532,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
42429
42532
  SurveyModel.prototype.currentPageChanged = function (newValue, oldValue) {
42430
42533
  this.notifyQuestionsOnHidingContent(oldValue);
42431
42534
  var options = this.createPageChangeEventOptions(newValue, oldValue);
42432
- if (oldValue && !oldValue.passed) {
42535
+ if (oldValue && !oldValue.isDisposed && !oldValue.passed) {
42433
42536
  if (oldValue.validate(false)) {
42434
42537
  oldValue.passed = true;
42435
42538
  }
@@ -42440,9 +42543,9 @@ var survey_SurveyModel = /** @class */ (function (_super) {
42440
42543
  this.onCurrentPageChanged.fire(this, options);
42441
42544
  };
42442
42545
  SurveyModel.prototype.notifyQuestionsOnHidingContent = function (page) {
42443
- if (!page)
42444
- return;
42445
- page.questions.forEach(function (q) { return q.onHidingContent(); });
42546
+ if (page && !page.isDisposed) {
42547
+ page.questions.forEach(function (q) { return q.onHidingContent(); });
42548
+ }
42446
42549
  };
42447
42550
  SurveyModel.prototype.createPageChangeEventOptions = function (newValue, oldValue) {
42448
42551
  var diff = !!newValue && !!oldValue ? newValue.visibleIndex - oldValue.visibleIndex : 0;
@@ -42678,6 +42781,30 @@ var survey_SurveyModel = /** @class */ (function (_super) {
42678
42781
  return false;
42679
42782
  return this.doCurrentPageComplete(false);
42680
42783
  };
42784
+ SurveyModel.prototype.performNext = function () {
42785
+ var q = this.currentSingleQuestion;
42786
+ if (!q)
42787
+ return this.nextPage();
42788
+ if (!q.validate(true))
42789
+ return false;
42790
+ var questions = this.getAllQuestions(true);
42791
+ var index = questions.indexOf(q);
42792
+ if (index < 0 || index === questions.length - 1)
42793
+ return false;
42794
+ this.currentSingleQuestion = questions[index + 1];
42795
+ return true;
42796
+ };
42797
+ SurveyModel.prototype.performPrevious = function () {
42798
+ var q = this.currentSingleQuestion;
42799
+ if (!q)
42800
+ return this.prevPage();
42801
+ var questions = this.getAllQuestions(true);
42802
+ var index = questions.indexOf(q);
42803
+ if (index === 0)
42804
+ return false;
42805
+ this.currentSingleQuestion = questions[index - 1];
42806
+ return true;
42807
+ };
42681
42808
  SurveyModel.prototype.hasErrorsOnNavigate = function (doComplete) {
42682
42809
  var _this = this;
42683
42810
  if (!this.isEditMode || this.ignoreValidation)
@@ -43007,9 +43134,9 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43007
43134
  };
43008
43135
  SurveyModel.prototype.nextPageUIClick = function () {
43009
43136
  if (!!this.mouseDownPage && this.mouseDownPage !== this.activePage)
43010
- return;
43137
+ return false;
43011
43138
  this.mouseDownPage = null;
43012
- return this.nextPage();
43139
+ return this.performNext();
43013
43140
  };
43014
43141
  SurveyModel.prototype.nextPageMouseDown = function () {
43015
43142
  this.mouseDownPage = this.activePage;
@@ -43053,7 +43180,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43053
43180
  this.isShowingPreview = false;
43054
43181
  };
43055
43182
  SurveyModel.prototype.cancelPreviewByPage = function (panel) {
43056
- this.cancelPreview(panel["originalPage"]);
43183
+ this.cancelPreview(panel);
43057
43184
  };
43058
43185
  SurveyModel.prototype.doCurrentPageComplete = function (doComplete) {
43059
43186
  if (this.isValidatingOnServer)
@@ -43083,6 +43210,16 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43083
43210
  enumerable: false,
43084
43211
  configurable: true
43085
43212
  });
43213
+ Object.defineProperty(SurveyModel.prototype, "isSingleVisibleQuestion", {
43214
+ get: function () {
43215
+ return this.isSingleVisibleQuestionVal(this.questionsOnPageMode);
43216
+ },
43217
+ enumerable: false,
43218
+ configurable: true
43219
+ });
43220
+ SurveyModel.prototype.isSingleVisibleQuestionVal = function (val) {
43221
+ return val === "questionPerPage" || val === "questionOnPage";
43222
+ };
43086
43223
  Object.defineProperty(SurveyModel.prototype, "questionsOnPageMode", {
43087
43224
  /**
43088
43225
  * Specifies how to distribute survey elements between pages.
@@ -43158,25 +43295,54 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43158
43295
  this.pageVisibilityChanged(this.pages[0], !this.isStartedState);
43159
43296
  };
43160
43297
  SurveyModel.prototype.onShowingPreviewChanged = function () {
43298
+ this.updatePagesContainer();
43299
+ };
43300
+ SurveyModel.prototype.createRootPage = function (name, pages) {
43301
+ var container = Serializer.createClass("page");
43302
+ container.name = name;
43303
+ container.isPageContainer = true;
43304
+ pages.forEach(function (page) {
43305
+ if (!page.isStartPage) {
43306
+ container.addElement(page);
43307
+ }
43308
+ });
43309
+ return container;
43310
+ };
43311
+ SurveyModel.prototype.disposeContainerPage = function () {
43312
+ var cPage = this.pageContainerValue;
43313
+ var elements = [].concat(cPage.elements);
43314
+ elements.forEach(function (el) { return cPage.removeElement(el); });
43315
+ cPage.dispose();
43316
+ this.pageContainerValue = undefined;
43317
+ };
43318
+ SurveyModel.prototype.updatePagesContainer = function () {
43161
43319
  if (this.isDesignMode)
43162
43320
  return;
43163
- if (this.isShowingPreview) {
43164
- this.runningPages = this.pages.slice(0, this.pages.length);
43165
- this.setupPagesForPageModes(true, false);
43166
- }
43167
- else {
43168
- if (this.runningPages) {
43169
- this.restoreOriginalPages(this.runningPages);
43321
+ this.getAllQuestions().forEach(function (q) { return q.updateElementVisibility(); });
43322
+ this.setPropertyValue("currentPage", undefined);
43323
+ var singleName = "single-page";
43324
+ var previewName = "preview-page";
43325
+ var rootPage = undefined;
43326
+ if (this.isSinglePage) {
43327
+ var cPage = this.pageContainerValue;
43328
+ if (cPage && cPage.name === previewName) {
43329
+ rootPage = cPage.elements[0];
43330
+ this.disposeContainerPage();
43331
+ }
43332
+ else {
43333
+ rootPage = this.createRootPage(singleName, this.pages);
43170
43334
  }
43171
- this.runningPages = undefined;
43172
43335
  }
43173
- this.runConditions();
43174
- this.updateAllElementsVisibility(this.pages);
43175
- this.updateVisibleIndexes();
43176
43336
  if (this.isShowingPreview) {
43177
- this.currentPageNo = 0;
43337
+ rootPage = this.createRootPage(previewName, rootPage ? [rootPage] : this.pages);
43178
43338
  }
43179
- else {
43339
+ if (rootPage) {
43340
+ rootPage.setSurveyImpl(this);
43341
+ this.pageContainerValue = rootPage;
43342
+ this.currentPage = rootPage;
43343
+ }
43344
+ if (!this.isSinglePage && !this.isShowingPreview) {
43345
+ this.disposeContainerPage();
43180
43346
  var curPage = this.gotoPageFromPreview;
43181
43347
  this.gotoPageFromPreview = null;
43182
43348
  if (helpers_Helpers.isValueEmpty(curPage) && this.visiblePageCount > 0) {
@@ -43188,110 +43354,62 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43188
43354
  this.changeCurrentPageFromPreview = false;
43189
43355
  }
43190
43356
  }
43357
+ if (!this.currentPage && this.visiblePageCount > 0) {
43358
+ this.currentPage = this.visiblePages[0];
43359
+ }
43360
+ this.pages.forEach(function (page) {
43361
+ if (page.hasShown) {
43362
+ page.updateElementCss(true);
43363
+ }
43364
+ });
43365
+ this.updateButtonsVisibility();
43191
43366
  };
43192
- SurveyModel.prototype.onQuestionsOnPageModeChanged = function (oldValue, isFirstLoad) {
43193
- if (isFirstLoad === void 0) { isFirstLoad = false; }
43367
+ Object.defineProperty(SurveyModel.prototype, "currentSingleQuestion", {
43368
+ get: function () { return this.currentSingleQuestionValue; },
43369
+ set: function (val) {
43370
+ if (val !== this.currentSingleQuestion) {
43371
+ this.currentSingleQuestionValue = val;
43372
+ if (!!val) {
43373
+ var page = val.page;
43374
+ page.updateRows();
43375
+ if (page !== this.currentPage) {
43376
+ this.currentPage = page;
43377
+ }
43378
+ else {
43379
+ if (this.focusFirstQuestionAutomatic) {
43380
+ val.focus();
43381
+ }
43382
+ }
43383
+ this.updateButtonsVisibility();
43384
+ }
43385
+ else {
43386
+ this.visiblePages.forEach(function (page) { return page.updateRows(); });
43387
+ }
43388
+ }
43389
+ },
43390
+ enumerable: false,
43391
+ configurable: true
43392
+ });
43393
+ SurveyModel.prototype.onQuestionsOnPageModeChanged = function (oldValue) {
43194
43394
  if (this.isShowingPreview)
43195
43395
  return;
43196
- if (this.questionsOnPageMode == "standard" || this.isDesignMode) {
43197
- if (this.originalPages) {
43198
- this.restoreOriginalPages(this.originalPages);
43199
- }
43200
- this.originalPages = undefined;
43396
+ this.currentSingleQuestion = undefined;
43397
+ if (oldValue === "singlePage") {
43398
+ this.updatePagesContainer();
43201
43399
  }
43202
- else {
43203
- if (!oldValue || oldValue == "standard") {
43204
- this.originalPages = this.pages.slice(0, this.pages.length);
43205
- }
43206
- this.setupPagesForPageModes(this.isSinglePage, isFirstLoad);
43400
+ if (this.isSinglePage) {
43401
+ this.updatePagesContainer();
43207
43402
  }
43208
- this.runConditions();
43209
- this.updateVisibleIndexes();
43210
- };
43211
- SurveyModel.prototype.restoreOriginalPages = function (originalPages) {
43212
- this.questionHashesClear();
43213
- this.pages.splice(0, this.pages.length);
43214
- for (var i = 0; i < originalPages.length; i++) {
43215
- var page = originalPages[i];
43216
- page.setWasShown(false);
43217
- this.pages.push(page);
43403
+ if (this.isSingleVisibleQuestion) {
43404
+ var questions = this.getAllQuestions(true);
43405
+ if (questions.length > 0) {
43406
+ this.currentSingleQuestion = questions[0];
43407
+ }
43218
43408
  }
43219
43409
  };
43220
43410
  SurveyModel.prototype.getPageStartIndex = function () {
43221
43411
  return this.firstPageIsStarted && this.pages.length > 0 ? 1 : 0;
43222
43412
  };
43223
- SurveyModel.prototype.setupPagesForPageModes = function (isSinglePage, isFirstLoad) {
43224
- var _this = this;
43225
- this.questionHashesClear();
43226
- if (this.firstPageIsStarted && this.pages.length > 0) {
43227
- this.pages[0].questions.forEach(function (q) { return _this.questionHashesAdded(q); });
43228
- }
43229
- this.isLockingUpdateOnPageModes = !isFirstLoad;
43230
- var startIndex = this.getPageStartIndex();
43231
- _super.prototype.startLoadingFromJson.call(this);
43232
- var newPages = this.createPagesForQuestionOnPageMode(isSinglePage, startIndex);
43233
- var deletedLen = this.pages.length - startIndex;
43234
- this.pages.splice(startIndex, deletedLen);
43235
- for (var i = 0; i < newPages.length; i++) {
43236
- this.pages.push(newPages[i]);
43237
- }
43238
- _super.prototype.endLoadingFromJson.call(this);
43239
- for (var i = 0; i < newPages.length; i++) {
43240
- newPages[i].setSurveyImpl(this, true);
43241
- }
43242
- this.doElementsOnLoad();
43243
- this.updateCurrentPage();
43244
- this.isLockingUpdateOnPageModes = false;
43245
- };
43246
- SurveyModel.prototype.createPagesForQuestionOnPageMode = function (isSinglePage, startIndex) {
43247
- if (isSinglePage) {
43248
- return [this.createSinglePage(startIndex)];
43249
- }
43250
- return this.createPagesForEveryQuestion(startIndex);
43251
- };
43252
- SurveyModel.prototype.createSinglePage = function (startIndex) {
43253
- var single = this.createNewPage("all");
43254
- single.setSurveyImpl(this);
43255
- for (var i = startIndex; i < this.pages.length; i++) {
43256
- var page = this.pages[i];
43257
- var panel = Serializer.createClass("panel");
43258
- panel.originalPage = page;
43259
- single.addPanel(panel);
43260
- var json = new jsonobject_JsonObject().toJsonObject(page);
43261
- new jsonobject_JsonObject().toObject(json, panel);
43262
- }
43263
- return single;
43264
- };
43265
- SurveyModel.prototype.createPagesForEveryQuestion = function (startIndex) {
43266
- var res = [];
43267
- for (var i = startIndex; i < this.pages.length; i++) {
43268
- var originalPage = this.pages[i];
43269
- // Initialize randomization
43270
- originalPage.setWasShown(true);
43271
- for (var j = 0; j < originalPage.elements.length; j++) {
43272
- var originalElement = originalPage.elements[j];
43273
- var element = Serializer.createClass(originalElement.getType());
43274
- if (!element)
43275
- continue;
43276
- var jsonObj = new jsonobject_JsonObject();
43277
- //Deserialize page properties only, excluding elements
43278
- jsonObj.lightSerializing = true;
43279
- var pageJson = jsonObj.toJsonObject(originalPage);
43280
- var page = Serializer.createClass(originalPage.getType());
43281
- page.fromJSON(pageJson);
43282
- page.name = originalElement.name;
43283
- page.setSurveyImpl(this);
43284
- res.push(page);
43285
- var json = new jsonobject_JsonObject().toJsonObject(originalElement);
43286
- page.addElement(element);
43287
- new jsonobject_JsonObject().toObject(json, element);
43288
- for (var k = 0; k < page.questions.length; k++) {
43289
- this.questionHashesAdded(page.questions[k]);
43290
- }
43291
- }
43292
- }
43293
- return res;
43294
- };
43295
43413
  Object.defineProperty(SurveyModel.prototype, "isFirstPage", {
43296
43414
  /**
43297
43415
  * Indicates whether the [current page](#currentPage) is the first page.
@@ -43357,30 +43475,73 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43357
43475
  enumerable: false,
43358
43476
  configurable: true
43359
43477
  });
43478
+ Object.defineProperty(SurveyModel.prototype, "isFirstElement", {
43479
+ get: function () {
43480
+ return this.getPropertyValue("isFirstElement");
43481
+ },
43482
+ enumerable: false,
43483
+ configurable: true
43484
+ });
43485
+ Object.defineProperty(SurveyModel.prototype, "isLastElement", {
43486
+ get: function () {
43487
+ return this.getPropertyValue("isLastElement");
43488
+ },
43489
+ enumerable: false,
43490
+ configurable: true
43491
+ });
43360
43492
  SurveyModel.prototype.updateIsFirstLastPageState = function () {
43361
43493
  var curPage = this.currentPage;
43362
43494
  this.setPropertyValue("isFirstPage", !!curPage && curPage === this.firstVisiblePage);
43363
43495
  this.setPropertyValue("isLastPage", !!curPage && curPage === this.lastVisiblePage);
43496
+ var fVal = undefined;
43497
+ var lVal = undefined;
43498
+ var q = this.currentSingleQuestion;
43499
+ if (!!q) {
43500
+ var questions = this.getAllQuestions(true);
43501
+ var index = questions.indexOf(q);
43502
+ if (index >= 0) {
43503
+ fVal = index === 0;
43504
+ lVal = index === questions.length - 1;
43505
+ }
43506
+ }
43507
+ this.setPropertyValue("isFirstElement", fVal);
43508
+ this.setPropertyValue("isLastElement", lVal);
43364
43509
  };
43510
+ Object.defineProperty(SurveyModel.prototype, "isLastPageOrElement", {
43511
+ get: function () {
43512
+ return this.isLastElement !== undefined ? this.isLastElement : this.isLastPage;
43513
+ },
43514
+ enumerable: false,
43515
+ configurable: true
43516
+ });
43517
+ Object.defineProperty(SurveyModel.prototype, "isFirstPageOrElement", {
43518
+ get: function () {
43519
+ return this.isFirstElement !== undefined ? this.isFirstElement : this.isFirstPage;
43520
+ },
43521
+ enumerable: false,
43522
+ configurable: true
43523
+ });
43365
43524
  SurveyModel.prototype.calcIsShowPrevButton = function () {
43366
- if (this.isFirstPage || !this.showPrevButton || this.state !== "running")
43525
+ if (this.isFirstPageOrElement || !this.showPrevButton || this.state !== "running")
43367
43526
  return false;
43527
+ if (this.isFirstElement !== undefined)
43528
+ return true;
43368
43529
  var page = this.visiblePages[this.currentPageNo - 1];
43369
43530
  return page && page.getMaxTimeToFinish() <= 0;
43370
43531
  };
43371
43532
  SurveyModel.prototype.calcIsShowNextButton = function () {
43372
- return this.state === "running" && !this.isLastPage && !this.canBeCompletedByTrigger;
43533
+ return this.state === "running" && !this.isLastPageOrElement && !this.canBeCompletedByTrigger;
43373
43534
  };
43374
43535
  SurveyModel.prototype.calcIsCompleteButtonVisible = function () {
43375
43536
  var state = this.state;
43376
43537
  return this.isEditMode && (this.state === "running" &&
43377
- (this.isLastPage && !this.isShowPreviewBeforeComplete || this.canBeCompletedByTrigger)
43538
+ (this.isLastPageOrElement && !this.isShowPreviewBeforeComplete || this.canBeCompletedByTrigger)
43378
43539
  || state === "preview") && this.showCompleteButton;
43379
43540
  };
43380
43541
  SurveyModel.prototype.calcIsPreviewButtonVisible = function () {
43381
43542
  return (this.isEditMode &&
43382
43543
  this.isShowPreviewBeforeComplete &&
43383
- this.state == "running" && this.isLastPage);
43544
+ this.state == "running" && this.isLastPageOrElement);
43384
43545
  };
43385
43546
  SurveyModel.prototype.calcIsCancelPreviewButtonVisible = function () {
43386
43547
  return (this.isEditMode &&
@@ -43389,6 +43550,8 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43389
43550
  };
43390
43551
  Object.defineProperty(SurveyModel.prototype, "firstVisiblePage", {
43391
43552
  get: function () {
43553
+ if (this.visiblePageCount === 1)
43554
+ return this.visiblePages[0];
43392
43555
  var pages = this.pages;
43393
43556
  for (var i = 0; i < pages.length; i++) {
43394
43557
  if (this.isPageInVisibleList(pages[i]))
@@ -43401,6 +43564,8 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43401
43564
  });
43402
43565
  Object.defineProperty(SurveyModel.prototype, "lastVisiblePage", {
43403
43566
  get: function () {
43567
+ if (this.visiblePageCount === 1)
43568
+ return this.visiblePages[0];
43404
43569
  var pages = this.pages;
43405
43570
  for (var i = pages.length - 1; i >= 0; i--) {
43406
43571
  if (this.isPageInVisibleList(pages[i]))
@@ -43749,7 +43914,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43749
43914
  });
43750
43915
  SurveyModel.prototype.updateProgressText = function (onValueChanged) {
43751
43916
  if (onValueChanged === void 0) { onValueChanged = false; }
43752
- if (this.isCalculatingProgressText || this.isShowingPreview || this.isLockingUpdateOnPageModes)
43917
+ if (this.isCalculatingProgressText || this.isShowingPreview)
43753
43918
  return;
43754
43919
  if (onValueChanged &&
43755
43920
  this.progressBarType == "pages" &&
@@ -45091,7 +45256,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
45091
45256
  this.updateVisibleIndexes();
45092
45257
  };
45093
45258
  SurveyModel.prototype.updateVisibleIndexes = function (page) {
45094
- if (this.isLoadingFromJson || !!this.isEndLoadingFromJson || this.isLockingUpdateOnPageModes)
45259
+ if (this.isLoadingFromJson || !!this.isEndLoadingFromJson)
45095
45260
  return;
45096
45261
  if (this.isRunningConditions &&
45097
45262
  this.onQuestionVisibleChanged.isEmpty &&
@@ -45160,12 +45325,12 @@ var survey_SurveyModel = /** @class */ (function (_super) {
45160
45325
  SurveyModel.prototype.endLoadingFromJson = function () {
45161
45326
  this.isEndLoadingFromJson = "processing";
45162
45327
  this.onFirstPageIsStartedChanged();
45163
- this.onQuestionsOnPageModeChanged("standard", true);
45164
45328
  _super.prototype.endLoadingFromJson.call(this);
45165
45329
  if (this.hasCookie) {
45166
45330
  this.isCompletedBefore = true;
45167
45331
  }
45168
45332
  this.doElementsOnLoad();
45333
+ this.onQuestionsOnPageModeChanged("standard");
45169
45334
  this.isEndLoadingFromJson = "conditions";
45170
45335
  this.runConditions();
45171
45336
  this.notifyElementsOnAnyValueOrVariableChanged("");
@@ -45213,7 +45378,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
45213
45378
  mouseDown: function () { return _this.navigationMouseDown(); },
45214
45379
  },
45215
45380
  locTitle: this.locPagePrevText,
45216
- action: function () { return _this.prevPage(); },
45381
+ action: function () { return _this.performPrevious(); },
45217
45382
  component: defaultComponent
45218
45383
  });
45219
45384
  var navNext = new action_Action({
@@ -45493,8 +45658,6 @@ var survey_SurveyModel = /** @class */ (function (_super) {
45493
45658
  SurveyModel.prototype.setValue = function (name, newQuestionValue, locNotification, allowNotifyValueChanged, questionName) {
45494
45659
  if (locNotification === void 0) { locNotification = false; }
45495
45660
  if (allowNotifyValueChanged === void 0) { allowNotifyValueChanged = true; }
45496
- if (this.isLockingUpdateOnPageModes)
45497
- return;
45498
45661
  var newValue = newQuestionValue;
45499
45662
  if (allowNotifyValueChanged) {
45500
45663
  newValue = this.questionOnValueChanging(name, newQuestionValue);
@@ -59311,7 +59474,13 @@ var question_file_QuestionFileModel = /** @class */ (function (_super) {
59311
59474
  };
59312
59475
  _this.doClean = function () {
59313
59476
  if (_this.needConfirmRemoveFile) {
59314
- confirmActionAsync(_this.confirmRemoveAllMessage, function () { _this.clearFilesCore(); }, undefined, _this.getLocale(), _this.survey.rootElement);
59477
+ confirmActionAsync({
59478
+ message: _this.confirmRemoveAllMessage,
59479
+ funcOnYes: function () { _this.clearFilesCore(); },
59480
+ locale: _this.getLocale(),
59481
+ rootElement: _this.survey.rootElement,
59482
+ cssClass: _this.cssClasses.confirmDialog
59483
+ });
59315
59484
  return;
59316
59485
  }
59317
59486
  _this.clearFilesCore();
@@ -60320,7 +60489,13 @@ var question_file_QuestionFileModel = /** @class */ (function (_super) {
60320
60489
  var _this = this;
60321
60490
  event.stopPropagation();
60322
60491
  if (this.needConfirmRemoveFile) {
60323
- confirmActionAsync(this.getConfirmRemoveMessage(data.name), function () { _this.removeFileCore(data); }, undefined, this.getLocale(), this.survey.rootElement);
60492
+ confirmActionAsync({
60493
+ message: this.getConfirmRemoveMessage(data.name),
60494
+ funcOnYes: function () { _this.clearFilesCore(); },
60495
+ locale: this.getLocale(),
60496
+ rootElement: this.survey.rootElement,
60497
+ cssClass: this.cssClasses.confirmDialog
60498
+ });
60324
60499
  return;
60325
60500
  }
60326
60501
  this.removeFileCore(data);
@@ -66305,7 +66480,13 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66305
66480
  }
66306
66481
  };
66307
66482
  if (this.isRequireConfirmOnDelete(value)) {
66308
- confirmActionAsync(this.confirmDeleteText, function () { removePanel(); }, undefined, this.getLocale(), this.survey.rootElement);
66483
+ confirmActionAsync({
66484
+ message: this.confirmDeleteText,
66485
+ funcOnYes: function () { removePanel(); },
66486
+ locale: this.getLocale(),
66487
+ rootElement: this.survey.rootElement,
66488
+ cssClass: this.cssClasses.confirmDialog
66489
+ });
66309
66490
  }
66310
66491
  else {
66311
66492
  removePanel();
@@ -70446,8 +70627,8 @@ Serializer.addClass("currencymask", [
70446
70627
 
70447
70628
  var Version;
70448
70629
  var ReleaseDate;
70449
- Version = "" + "1.12.15";
70450
- ReleaseDate = "" + "2024-12-16";
70630
+ Version = "" + "1.12.16-patch.1";
70631
+ ReleaseDate = "" + "2024-12-25";
70451
70632
  function checkLibraryVersion(ver, libraryName) {
70452
70633
  if (Version != ver) {
70453
70634
  var str = "survey-core has version '" + Version + "' and " + libraryName