survey-core 1.12.14 → 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 (242) hide show
  1. package/defaultV2.css +30 -9
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +30 -9
  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 +18 -16
  118. package/modern.css.map +1 -1
  119. package/modern.fontless.css +18 -16
  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 +457 -261
  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/core-wo-model.d.ts +1 -1
  218. package/ts3.4/typings/packages/survey-core/entries/chunks/model.d.ts +1 -1
  219. package/ts3.4/typings/packages/survey-core/src/actions/action.d.ts +2 -2
  220. package/ts3.4/typings/packages/survey-core/src/base-interfaces.d.ts +1 -0
  221. package/ts3.4/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +1 -0
  222. package/ts3.4/typings/packages/survey-core/src/list.d.ts +3 -1
  223. package/ts3.4/typings/packages/survey-core/src/page.d.ts +11 -3
  224. package/ts3.4/typings/packages/survey-core/src/panel.d.ts +11 -7
  225. package/ts3.4/typings/packages/survey-core/src/settings.d.ts +2 -1
  226. package/ts3.4/typings/packages/survey-core/src/survey-element.d.ts +15 -5
  227. package/ts3.4/typings/packages/survey-core/src/survey.d.ts +17 -8
  228. package/ts3.4/typings/packages/survey-core/src/surveyStrings.d.ts +8 -1
  229. package/ts3.4/typings/packages/survey-core/src/utils/utils.d.ts +11 -2
  230. package/typings/packages/survey-core/entries/chunks/core-wo-model.d.ts +1 -1
  231. package/typings/packages/survey-core/entries/chunks/model.d.ts +1 -1
  232. package/typings/packages/survey-core/src/actions/action.d.ts +2 -2
  233. package/typings/packages/survey-core/src/base-interfaces.d.ts +1 -0
  234. package/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +1 -0
  235. package/typings/packages/survey-core/src/list.d.ts +3 -1
  236. package/typings/packages/survey-core/src/page.d.ts +11 -3
  237. package/typings/packages/survey-core/src/panel.d.ts +11 -7
  238. package/typings/packages/survey-core/src/settings.d.ts +2 -1
  239. package/typings/packages/survey-core/src/survey-element.d.ts +15 -5
  240. package/typings/packages/survey-core/src/survey.d.ts +18 -8
  241. package/typings/packages/survey-core/src/surveyStrings.d.ts +8 -1
  242. 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.14
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, 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; });
@@ -333,6 +334,7 @@ __webpack_require__.d(__webpack_exports__, "VerticalResponsivityManager", functi
333
334
  __webpack_require__.d(__webpack_exports__, "unwrap", function() { return /* reexport */ unwrap; });
334
335
  __webpack_require__.d(__webpack_exports__, "getOriginalEvent", function() { return /* reexport */ getOriginalEvent; });
335
336
  __webpack_require__.d(__webpack_exports__, "getElement", function() { return /* reexport */ getElement; });
337
+ __webpack_require__.d(__webpack_exports__, "activateLazyRenderingChecks", function() { return /* reexport */ activateLazyRenderingChecks; });
336
338
  __webpack_require__.d(__webpack_exports__, "createDropdownActionModel", function() { return /* reexport */ createDropdownActionModel; });
337
339
  __webpack_require__.d(__webpack_exports__, "createDropdownActionModelAdvanced", function() { return /* reexport */ createDropdownActionModelAdvanced; });
338
340
  __webpack_require__.d(__webpack_exports__, "createPopupModelWithListModel", function() { return /* reexport */ createPopupModelWithListModel; });
@@ -1142,12 +1144,13 @@ var surveyLocalization = {
1142
1144
  //TODO remove on next week
1143
1145
  get showNamesInEnglish() { return this.useEnglishNames; },
1144
1146
  set showNamesInEnglish(val) { this.useEnglishNames = val; },
1145
- setupLocale: function (loc, strings, name, nameInEngish, direction) {
1146
- this.locales[loc] = strings;
1147
- this.localeNames[loc] = name;
1148
- this.localeNamesInEnglish[loc] = nameInEngish;
1149
- if (direction !== undefined) {
1150
- this.localeDirections[loc] = direction;
1147
+ setupLocale: function (localeConfig) {
1148
+ var loc = localeConfig.localeCode;
1149
+ this.locales[loc] = localeConfig.strings;
1150
+ this.localeNames[loc] = localeConfig.nativeName;
1151
+ this.localeNamesInEnglish[loc] = localeConfig.englishName;
1152
+ if (localeConfig.rtl !== undefined) {
1153
+ this.localeDirections[loc] = localeConfig.rtl;
1151
1154
  }
1152
1155
  },
1153
1156
  get currentLocale() {
@@ -1245,8 +1248,11 @@ function getLocaleString(strName, locale) {
1245
1248
  if (locale === void 0) { locale = null; }
1246
1249
  return surveyLocalization.getString(strName, locale);
1247
1250
  }
1251
+ function getLocaleStrings(locale) {
1252
+ return surveyLocalization.getLocaleStrings(locale);
1253
+ }
1248
1254
  function setupLocale(localeConfig) {
1249
- surveyLocalization.setupLocale(localeConfig.localeCode, localeConfig.strings, localeConfig.nativeName, localeConfig.englishName, localeConfig.rtl ? "rtl" : undefined);
1255
+ surveyLocalization.setupLocale(localeConfig);
1250
1256
  }
1251
1257
  var surveyStrings = englishStrings;
1252
1258
  surveyLocalization.locales["en"] = englishStrings;
@@ -10068,9 +10074,15 @@ var list_ListModel = /** @class */ (function (_super) {
10068
10074
  .append(itemValue.css)
10069
10075
  .toString();
10070
10076
  };
10071
- _this.getItemIndent = function (itemValue) {
10077
+ // public getItemIndent = (itemValue: any) => {
10078
+ // const level: number = itemValue.level || 0;
10079
+ // return (level + 1) * ListModel.INDENT + "px";
10080
+ // };
10081
+ _this.getItemStyle = function (itemValue) {
10072
10082
  var level = itemValue.level || 0;
10073
- return (level + 1) * ListModel.INDENT + "px";
10083
+ return {
10084
+ "--sjs-list-item-level": level + 1
10085
+ };
10074
10086
  };
10075
10087
  if (Object.keys(items).indexOf("items") !== -1) {
10076
10088
  var options_1 = items;
@@ -10986,13 +10998,14 @@ var action_BaseAction = /** @class */ (function (_super) {
10986
10998
 
10987
10999
  var action_Action = /** @class */ (function (_super) {
10988
11000
  action_extends(Action, _super);
10989
- function Action(innerItem) {
11001
+ function Action(innerItemData) {
10990
11002
  var _this = _super.call(this) || this;
10991
- _this.innerItem = innerItem;
10992
11003
  _this.locTitleChanged = function () {
10993
11004
  var val = _this.locTitle.renderedHtml;
10994
11005
  _this.setPropertyValue("_title", !!val ? val : undefined);
10995
11006
  };
11007
+ var innerItem = (innerItemData instanceof Action) ? innerItemData.innerItem : innerItemData;
11008
+ _this.innerItem = innerItem;
10996
11009
  _this.locTitle = !!innerItem ? innerItem["locTitle"] : null;
10997
11010
  //Object.assign(this, item) to support IE11
10998
11011
  if (!!innerItem) {
@@ -11949,7 +11962,13 @@ var survey_element_SurveyElementCore = /** @class */ (function (_super) {
11949
11962
  Object.defineProperty(SurveyElementCore.prototype, "isPage", {
11950
11963
  /**
11951
11964
  * Returns `true` if the survey element is a page.
11952
- * @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.
11953
11972
  */
11954
11973
  get: function () { return false; },
11955
11974
  enumerable: false,
@@ -11957,8 +11976,14 @@ var survey_element_SurveyElementCore = /** @class */ (function (_super) {
11957
11976
  });
11958
11977
  Object.defineProperty(SurveyElementCore.prototype, "isPanel", {
11959
11978
  /**
11960
- * Returns `true` if the survey element is a panel.
11961
- * @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.
11962
11987
  */
11963
11988
  get: function () { return false; },
11964
11989
  enumerable: false,
@@ -11967,7 +11992,6 @@ var survey_element_SurveyElementCore = /** @class */ (function (_super) {
11967
11992
  Object.defineProperty(SurveyElementCore.prototype, "isQuestion", {
11968
11993
  /**
11969
11994
  * Returns `true` if the survey element is a question.
11970
- * @see Base.getType
11971
11995
  */
11972
11996
  get: function () { return false; },
11973
11997
  enumerable: false,
@@ -11976,7 +12000,6 @@ var survey_element_SurveyElementCore = /** @class */ (function (_super) {
11976
12000
  Object.defineProperty(SurveyElementCore.prototype, "isSurvey", {
11977
12001
  /**
11978
12002
  * Returns `true` if the element is a survey.
11979
- * @see Base.getType
11980
12003
  */
11981
12004
  get: function () { return false; },
11982
12005
  enumerable: false,
@@ -12991,7 +13014,7 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
12991
13014
  SurveyElement.prototype.getPage = function (parent) {
12992
13015
  while (parent && parent.parent)
12993
13016
  parent = parent.parent;
12994
- if (parent && parent.getType() == "page")
13017
+ if (parent && parent.isPage)
12995
13018
  return parent;
12996
13019
  return null;
12997
13020
  };
@@ -13043,7 +13066,7 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
13043
13066
  });
13044
13067
  Object.defineProperty(SurveyElement.prototype, "hasParent", {
13045
13068
  get: function () {
13046
- return (this.parent && !this.parent.isPage && (!this.parent.originalPage)) || (this.parent === undefined);
13069
+ return (this.parent && !this.parent.isPage) || (this.parent === undefined);
13047
13070
  },
13048
13071
  enumerable: false,
13049
13072
  configurable: true
@@ -13303,6 +13326,8 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
13303
13326
  return null;
13304
13327
  };
13305
13328
  SurveyElement.prototype.getCssTitle = function (cssClasses) {
13329
+ if (!cssClasses)
13330
+ return "";
13306
13331
  var isExpandable = this.state !== "default";
13307
13332
  var numInlineLimit = 4;
13308
13333
  return new CssClassBuilder()
@@ -14202,18 +14227,18 @@ function confirmAction(message) {
14202
14227
  return settings.confirmActionFunc(message);
14203
14228
  return confirm(message);
14204
14229
  }
14205
- function confirmActionAsync(message, funcOnYes, funcOnNo, locale, rootElement) {
14230
+ function confirmActionAsync(options) {
14206
14231
  var callbackFunc = function (res) {
14207
14232
  if (res)
14208
- funcOnYes();
14209
- else if (!!funcOnNo)
14210
- funcOnNo();
14233
+ options.funcOnYes();
14234
+ else if (!!options.funcOnNo)
14235
+ options.funcOnNo();
14211
14236
  };
14212
14237
  if (!!settings && !!settings.confirmActionAsync) {
14213
- if (settings.confirmActionAsync(message, callbackFunc, undefined, locale, rootElement))
14238
+ if (settings.confirmActionAsync(options.message, callbackFunc, options))
14214
14239
  return;
14215
14240
  }
14216
- callbackFunc(confirmAction(message));
14241
+ callbackFunc(confirmAction(options.message));
14217
14242
  }
14218
14243
  function detectIEBrowser() {
14219
14244
  var ua = navigator.userAgent;
@@ -14749,7 +14774,7 @@ var Logger = /** @class */ (function () {
14749
14774
  return Logger;
14750
14775
  }());
14751
14776
 
14752
- function showConfirmDialog(message, callback, applyTitle, locale, rootElement) {
14777
+ function showConfirmDialog(message, callback, options) {
14753
14778
  var locStr = new localizablestring_LocalizableString(undefined);
14754
14779
  var popupViewModel = settings.showDialog({
14755
14780
  componentName: "sv-string-viewer",
@@ -14762,17 +14787,17 @@ function showConfirmDialog(message, callback, applyTitle, locale, rootElement) {
14762
14787
  callback(false);
14763
14788
  return false;
14764
14789
  },
14765
- title: message,
14790
+ title: message || options.message,
14766
14791
  displayMode: "popup",
14767
14792
  isFocusedContent: false,
14768
- cssClass: "sv-popup--confirm-delete"
14769
- }, rootElement);
14793
+ cssClass: options.cssClass || "sv-popup--confirm"
14794
+ }, options.rootElement);
14770
14795
  var toolbar = popupViewModel.footerToolbar;
14771
14796
  var applyBtn = toolbar.getActionById("apply");
14772
14797
  var cancelBtn = toolbar.getActionById("cancel");
14773
- cancelBtn.title = getLocaleString("cancel", locale);
14798
+ cancelBtn.title = getLocaleString("cancel", options.locale);
14774
14799
  cancelBtn.innerCss = "sv-popup__body-footer-item sv-popup__button sd-btn sd-btn--small";
14775
- applyBtn.title = applyTitle || getLocaleString("ok", locale);
14800
+ applyBtn.title = options.applyTitle || getLocaleString("ok", options.locale);
14776
14801
  applyBtn.innerCss = "sv-popup__body-footer-item sv-popup__button sv-popup__button--danger sd-btn sd-btn--small sd-btn--danger";
14777
14802
  configConfirmDialog(popupViewModel);
14778
14803
  return true;
@@ -15389,8 +15414,8 @@ var settings = {
15389
15414
  * @param message A message to be displayed in the confirm dialog window.
15390
15415
  * @param callback A callback function that should be called with `true` if a user confirms an action or `false` otherwise.
15391
15416
  */
15392
- confirmActionAsync: function (message, callback, applyTitle, locale, rootElement) {
15393
- return showConfirmDialog(message, callback, applyTitle, locale, rootElement);
15417
+ confirmActionAsync: function (message, callback, options) {
15418
+ return showConfirmDialog(message, callback, options);
15394
15419
  },
15395
15420
  /**
15396
15421
  * A minimum width value for all survey elements.
@@ -29711,10 +29736,9 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
29711
29736
  if (isDeletingValue) {
29712
29737
  delete rowValue[columnName];
29713
29738
  }
29714
- for (var i = 0; i < row.cells.length; i++) {
29715
- var key = row.cells[i].question.getValueName();
29716
- delete rowValue[key];
29717
- }
29739
+ row.questions.forEach(function (q) {
29740
+ delete rowValue[q.getValueName()];
29741
+ });
29718
29742
  if (newRowValue) {
29719
29743
  newRowValue = JSON.parse(JSON.stringify(newRowValue));
29720
29744
  for (var key in newRowValue) {
@@ -31805,10 +31829,16 @@ var question_matrixdynamic_QuestionMatrixDynamicModel = /** @class */ (function
31805
31829
  confirmDelete = this.isRequireConfirmOnRowDelete(index);
31806
31830
  }
31807
31831
  if (confirmDelete) {
31808
- confirmActionAsync(this.confirmDeleteText, function () {
31809
- _this.removeRowAsync(index, row);
31810
- onRowRemoved && onRowRemoved();
31811
- }, 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
+ });
31812
31842
  return;
31813
31843
  }
31814
31844
  this.removeRowAsync(index, row);
@@ -32534,7 +32564,8 @@ var defaultV2Css = {
32534
32564
  noPointerEventsMode: "sd-question--no-pointer-events",
32535
32565
  errorsContainer: "sd-element__erbox sd-question__erbox",
32536
32566
  errorsContainerTop: "sd-element__erbox--above-element sd-question__erbox--above-question",
32537
- errorsContainerBottom: "sd-question__erbox--below-question"
32567
+ errorsContainerBottom: "sd-question__erbox--below-question",
32568
+ confirmDialog: "sd-popup--confirm sv-popup--confirm"
32538
32569
  },
32539
32570
  image: {
32540
32571
  mainRoot: "sd-question sd-question--image",
@@ -34467,7 +34498,6 @@ var panel_spreadArray = (undefined && undefined.__spreadArray) || function (to,
34467
34498
 
34468
34499
 
34469
34500
 
34470
-
34471
34501
  var panel_QuestionRowModel = /** @class */ (function (_super) {
34472
34502
  panel_extends(QuestionRowModel, _super);
34473
34503
  function QuestionRowModel(panel) {
@@ -35070,9 +35100,14 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
35070
35100
  });
35071
35101
  Object.defineProperty(PanelModelBase.prototype, "parent", {
35072
35102
  /**
35073
- * 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:
35106
+ *
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).
35074
35109
  *
35075
- * This property is always `null` for the `PageModel` object.
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.
35076
35111
  */
35077
35112
  get: function () {
35078
35113
  return this.getPropertyValue("parent", null);
@@ -35155,10 +35190,6 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
35155
35190
  configurable: true
35156
35191
  });
35157
35192
  Object.defineProperty(PanelModelBase.prototype, "isPanel", {
35158
- /**
35159
- * Returns `true` if the survey element is a panel.
35160
- * @see Base.getType
35161
- */
35162
35193
  get: function () {
35163
35194
  return false;
35164
35195
  },
@@ -35900,11 +35931,11 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
35900
35931
  PanelModelBase.prototype.updateRows = function () {
35901
35932
  if (this.isLoadingFromJson)
35902
35933
  return;
35903
- for (var i = 0; i < this.elements.length; i++) {
35904
- if (this.elements[i].isPanel) {
35905
- this.elements[i].updateRows();
35934
+ this.getElementsForRows().forEach(function (el) {
35935
+ if (el.isPanel) {
35936
+ el.updateRows();
35906
35937
  }
35907
- }
35938
+ });
35908
35939
  this.onRowsChanged();
35909
35940
  };
35910
35941
  Object.defineProperty(PanelModelBase.prototype, "rows", {
@@ -36013,7 +36044,9 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36013
36044
  var _this = this;
36014
36045
  var survey = this.survey;
36015
36046
  var fireNotification = this.canFireAddRemoveNotifications(element);
36016
- element.setSurveyImpl(this.surveyImpl);
36047
+ if (!!this.surveyImpl) {
36048
+ element.setSurveyImpl(this.surveyImpl);
36049
+ }
36017
36050
  element.parent = this;
36018
36051
  this.markQuestionListDirty();
36019
36052
  if (this.canBuildRows()) {
@@ -36039,8 +36072,8 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36039
36072
  };
36040
36073
  PanelModelBase.prototype.onRemoveElement = function (element) {
36041
36074
  element.parent = null;
36075
+ this.unregisterElementPropertiesChanged(element);
36042
36076
  this.markQuestionListDirty();
36043
- element.unregisterPropertyChangedHandlers(["visible", "isVisible", "startWithNewLine"], this.id);
36044
36077
  this.updateRowsOnElementRemoved(element);
36045
36078
  if (this.isRandomizing)
36046
36079
  return;
@@ -36049,6 +36082,9 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36049
36082
  this.removeElementCallback(element);
36050
36083
  this.onElementVisibilityChanged(this);
36051
36084
  };
36085
+ PanelModelBase.prototype.unregisterElementPropertiesChanged = function (element) {
36086
+ element.unregisterPropertyChangedHandlers(["visible", "isVisible", "startWithNewLine"], this.id);
36087
+ };
36052
36088
  PanelModelBase.prototype.onRemoveElementNotifySurvey = function (element) {
36053
36089
  if (!this.canFireAddRemoveNotifications(element))
36054
36090
  return;
@@ -36093,19 +36129,21 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36093
36129
  PanelModelBase.prototype.buildRows = function () {
36094
36130
  if (!this.canBuildRows())
36095
36131
  return [];
36096
- var result = new Array();
36097
- for (var i = 0; i < this.elements.length; i++) {
36098
- 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];
36099
36136
  var isNewRow = i == 0 || el.startWithNewLine;
36100
- var row = isNewRow ? this.createRowAndSetLazy(result.length) : result[result.length - 1];
36137
+ var row = isNewRow ? this.createRowAndSetLazy(res.length) : res[res.length - 1];
36101
36138
  if (isNewRow)
36102
- result.push(row);
36139
+ res.push(row);
36103
36140
  row.addElement(el);
36104
36141
  }
36105
- for (var i = 0; i < result.length; i++) {
36106
- result[i].updateVisible();
36107
- }
36108
- return result;
36142
+ res.forEach(function (row) { return row.updateVisible(); });
36143
+ return res;
36144
+ };
36145
+ PanelModelBase.prototype.getElementsForRows = function () {
36146
+ return this.elements;
36109
36147
  };
36110
36148
  PanelModelBase.prototype.getDragDropInfo = function () {
36111
36149
  var page = this.getPage(this.parent);
@@ -36668,10 +36706,13 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36668
36706
  }
36669
36707
  this.rows.splice(0, this.rows.length);
36670
36708
  }
36709
+ this.disposeElements();
36710
+ this.elements.splice(0, this.elements.length);
36711
+ };
36712
+ PanelModelBase.prototype.disposeElements = function () {
36671
36713
  for (var i = 0; i < this.elements.length; i++) {
36672
36714
  this.elements[i].dispose();
36673
36715
  }
36674
- this.elements.splice(0, this.elements.length);
36675
36716
  };
36676
36717
  PanelModelBase.panelCounter = 100;
36677
36718
  panel_decorate([
@@ -36724,7 +36765,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
36724
36765
  });
36725
36766
  PanelModel.prototype.getSurvey = function (live) {
36726
36767
  if (live === void 0) { live = false; }
36727
- if (live) {
36768
+ if (live && this.isPanel) {
36728
36769
  return !!this.parent ? this.parent.getSurvey(live) : null;
36729
36770
  }
36730
36771
  return _super.prototype.getSurvey.call(this, live);
@@ -36875,6 +36916,8 @@ var panel_PanelModel = /** @class */ (function (_super) {
36875
36916
  return locTitleValue;
36876
36917
  };
36877
36918
  PanelModel.prototype.beforeSetVisibleIndex = function (index) {
36919
+ if (this.isPage)
36920
+ return _super.prototype.beforeSetVisibleIndex.call(this, index);
36878
36921
  var visibleIndex = -1;
36879
36922
  if (this.showNumber && (this.isDesignMode || !this.locTitle.isEmpty || this.hasParentInQuestionIndex())) {
36880
36923
  visibleIndex = index;
@@ -36906,7 +36949,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
36906
36949
  }
36907
36950
  };
36908
36951
  PanelModel.prototype.getRenderedTitle = function (str) {
36909
- if (!str) {
36952
+ if (this.isPanel && !str) {
36910
36953
  if (this.isCollapsed || this.isExpanded)
36911
36954
  return this.name;
36912
36955
  if (this.isDesignMode)
@@ -37031,11 +37074,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
37031
37074
  return this.footerToolbarValue;
37032
37075
  };
37033
37076
  Object.defineProperty(PanelModel.prototype, "hasEditButton", {
37034
- get: function () {
37035
- if (this.survey && this.survey.state === "preview")
37036
- return (this.parent && this.parent instanceof page_PageModel);
37037
- return false;
37038
- },
37077
+ get: function () { return false; },
37039
37078
  enumerable: false,
37040
37079
  configurable: true
37041
37080
  });
@@ -37044,19 +37083,16 @@ var panel_PanelModel = /** @class */ (function (_super) {
37044
37083
  return;
37045
37084
  this.survey.cancelPreviewByPage(this);
37046
37085
  };
37047
- PanelModel.prototype.canShowTitle = function (survey) {
37048
- var page = this.originalPage;
37049
- if (!!page)
37050
- return page.canShowTitle(survey);
37051
- return _super.prototype.canShowTitle.call(this, survey);
37052
- };
37053
37086
  Object.defineProperty(PanelModel.prototype, "cssTitle", {
37054
37087
  get: function () {
37055
- return this.getCssTitle(this.cssClasses.panel);
37088
+ return this.getCssPanelTitle();
37056
37089
  },
37057
37090
  enumerable: false,
37058
37091
  configurable: true
37059
37092
  });
37093
+ PanelModel.prototype.getCssPanelTitle = function () {
37094
+ return this.getCssTitle(this.cssClasses.panel);
37095
+ };
37060
37096
  PanelModel.prototype.getCssTitleExpandableSvg = function () {
37061
37097
  if (this.state === "default")
37062
37098
  return null;
@@ -37070,6 +37106,8 @@ var panel_PanelModel = /** @class */ (function (_super) {
37070
37106
  configurable: true
37071
37107
  });
37072
37108
  PanelModel.prototype.getCssError = function (cssClasses) {
37109
+ if (this.isPage)
37110
+ return _super.prototype.getCssError.call(this, cssClasses);
37073
37111
  var builder = new CssClassBuilder()
37074
37112
  .append(_super.prototype.getCssError.call(this, cssClasses))
37075
37113
  .append(cssClasses.panel.errorsContainer);
@@ -37100,10 +37138,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
37100
37138
  };
37101
37139
  Object.defineProperty(PanelModel.prototype, "showPanelAsPage", {
37102
37140
  get: function () {
37103
- var panel = this;
37104
- if (!!panel.originalPage)
37105
- return true;
37106
- return panel.survey.isShowingPreview && panel.survey.isSinglePage && !!panel.parent && !!panel.parent.originalPage;
37141
+ return false;
37107
37142
  },
37108
37143
  enumerable: false,
37109
37144
  configurable: true
@@ -37143,7 +37178,9 @@ var panel_PanelModel = /** @class */ (function (_super) {
37143
37178
  PanelModel.prototype.afterRenderCore = function (element) {
37144
37179
  var _a;
37145
37180
  _super.prototype.afterRenderCore.call(this, element);
37146
- (_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
+ }
37147
37184
  };
37148
37185
  return PanelModel;
37149
37186
  }(panel_PanelModelBase));
@@ -37191,27 +37228,17 @@ Serializer.addClass("panelbase", [
37191
37228
  return new panel_PanelModelBase();
37192
37229
  });
37193
37230
  Serializer.addClass("panel", [
37194
- {
37195
- name: "state",
37196
- default: "default",
37197
- choices: ["default", "collapsed", "expanded"],
37198
- },
37231
+ { name: "state", default: "default", choices: ["default", "collapsed", "expanded"] },
37199
37232
  { name: "isRequired:switch", overridingProperty: "requiredIf" },
37200
- {
37201
- name: "requiredErrorText:text",
37202
- serializationProperty: "locRequiredErrorText",
37203
- },
37233
+ { name: "requiredErrorText:text", serializationProperty: "locRequiredErrorText" },
37204
37234
  { name: "startWithNewLine:boolean", default: true },
37205
- "width",
37235
+ { name: "width" },
37206
37236
  { name: "minWidth", defaultFunc: function () { return "auto"; } },
37207
37237
  { name: "maxWidth", defaultFunc: function () { return settings.maxWidth; } },
37208
- {
37209
- name: "colSpan:number", visible: false,
37210
- onSerializeValue: function (obj) { return obj.getPropertyValue("colSpan"); },
37211
- },
37238
+ { name: "colSpan:number", visible: false, onSerializeValue: function (obj) { return obj.getPropertyValue("colSpan"); } },
37212
37239
  {
37213
37240
  name: "effectiveColSpan:number", minValue: 1, isSerializable: false,
37214
- visibleIf: function (obj) { return !!obj && !!obj.survey && obj.survey.gridLayoutEnabled; }
37241
+ visibleIf: function (obj) { return !!obj.survey && obj.survey.gridLayoutEnabled; }
37215
37242
  },
37216
37243
  { name: "innerIndent:number", default: 0, choices: [0, 1, 2, 3] },
37217
37244
  { name: "indent:number", default: 0, choices: [0, 1, 2, 3], visible: false },
@@ -37231,13 +37258,9 @@ Serializer.addClass("panel", [
37231
37258
  : [];
37232
37259
  },
37233
37260
  },
37234
- "showNumber:boolean",
37235
- {
37236
- name: "showQuestionNumbers",
37237
- default: "default",
37238
- choices: ["default", "onpanel", "off"],
37239
- },
37240
- "questionStartIndex",
37261
+ { name: "showNumber:boolean" },
37262
+ { name: "showQuestionNumbers", default: "default", choices: ["default", "onpanel", "off"] },
37263
+ { name: "questionStartIndex", visibleIf: function (obj) { return obj.isPanel; } },
37241
37264
  { name: "allowAdaptiveActions:boolean", default: true, visible: false },
37242
37265
  ], function () {
37243
37266
  return new panel_PanelModel();
@@ -37513,12 +37536,61 @@ var page_PageModel = /** @class */ (function (_super) {
37513
37536
  return this.name;
37514
37537
  };
37515
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", {
37516
37553
  get: function () {
37517
37554
  return true;
37518
37555
  },
37519
37556
  enumerable: false,
37520
37557
  configurable: true
37521
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
+ };
37522
37594
  Object.defineProperty(PageModel.prototype, "no", {
37523
37595
  get: function () {
37524
37596
  if (!this.canShowPageNumber() || !this.survey)
@@ -37656,6 +37728,8 @@ var page_PageModel = /** @class */ (function (_super) {
37656
37728
  configurable: true
37657
37729
  });
37658
37730
  PageModel.prototype.calcCssClasses = function (css) {
37731
+ if (this.isPanel)
37732
+ return _super.prototype.calcCssClasses.call(this, css);
37659
37733
  var classes = { page: {}, error: {}, pageTitle: "", pageDescription: "", row: "", rowMultiple: "", pageRow: "", rowCompact: "", rowEnter: "", rowLeave: "", rowDelayedEnter: "", rowReplace: "" };
37660
37734
  this.copyCssClasses(classes.page, css.page);
37661
37735
  this.copyCssClasses(classes.error, css.error);
@@ -37694,20 +37768,18 @@ var page_PageModel = /** @class */ (function (_super) {
37694
37768
  }
37695
37769
  return classes;
37696
37770
  };
37697
- Object.defineProperty(PageModel.prototype, "cssTitle", {
37698
- get: function () {
37699
- if (!this.cssClasses.page)
37700
- return "";
37701
- return new CssClassBuilder()
37702
- .append(this.cssClasses.page.title)
37703
- .toString();
37704
- },
37705
- enumerable: false,
37706
- configurable: true
37707
- });
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
+ };
37708
37780
  Object.defineProperty(PageModel.prototype, "cssRoot", {
37709
37781
  get: function () {
37710
- if (!this.cssClasses.page || !this.survey)
37782
+ if (this.isPanel || !this.cssClasses.page || !this.survey)
37711
37783
  return "";
37712
37784
  return new CssClassBuilder()
37713
37785
  .append(this.cssClasses.page.root)
@@ -37719,6 +37791,8 @@ var page_PageModel = /** @class */ (function (_super) {
37719
37791
  configurable: true
37720
37792
  });
37721
37793
  PageModel.prototype.getCssError = function (cssClasses) {
37794
+ if (this.isPanel)
37795
+ return _super.prototype.getCssError.call(this, cssClasses);
37722
37796
  return new CssClassBuilder()
37723
37797
  .append(_super.prototype.getCssError.call(this, cssClasses))
37724
37798
  .append(cssClasses.page.errorsContainer).toString();
@@ -37895,7 +37969,7 @@ var page_PageModel = /** @class */ (function (_super) {
37895
37969
  jsonobject_property({ defaultValue: -1, onSet: function (val, target) { return target.onNumChanged(val); } })
37896
37970
  ], PageModel.prototype, "num", void 0);
37897
37971
  return PageModel;
37898
- }(panel_PanelModelBase));
37972
+ }(panel_PanelModel));
37899
37973
 
37900
37974
  Serializer.addClass("page", [
37901
37975
  {
@@ -37920,9 +37994,25 @@ Serializer.addClass("page", [
37920
37994
  },
37921
37995
  { name: "title:text", serializationProperty: "locTitle" },
37922
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 },
37923
38013
  ], function () {
37924
38014
  return new page_PageModel();
37925
- }, "panelbase");
38015
+ }, "panel");
37926
38016
 
37927
38017
  // CONCATENATED MODULE: ./packages/survey-core/src/progress-buttons.ts
37928
38018
  var progress_buttons_extends = (undefined && undefined.__extends) || (function () {
@@ -38164,16 +38254,27 @@ var ProgressButtonsResponsivityManager = /** @class */ (function () {
38164
38254
 
38165
38255
 
38166
38256
 
38167
-
38168
38257
  function tryFocusPage(survey, panel) {
38169
38258
  if (survey.isDesignMode)
38170
38259
  return true;
38171
38260
  panel.focusFirstQuestion();
38172
38261
  return true;
38173
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
+ }
38174
38276
  function createTOCListModel(survey, onAction) {
38175
38277
  var items = getTOCItems(survey, onAction);
38176
- var selectedItem = items.filter(function (i) { return !!survey.currentPage && i.id === survey.currentPage.name; })[0] || items[0];
38177
38278
  var listOptions = {
38178
38279
  items: items,
38179
38280
  onSelectionChanged: function (item) {
@@ -38181,15 +38282,20 @@ function createTOCListModel(survey, onAction) {
38181
38282
  listModel.selectedItem = item;
38182
38283
  }
38183
38284
  },
38184
- allowSelection: true,
38185
38285
  searchEnabled: false,
38186
38286
  locOwner: survey,
38187
- selectedItem: selectedItem
38188
38287
  };
38189
38288
  var listModel = new list_ListModel(listOptions);
38190
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]);
38191
38294
  survey.onCurrentPageChanged.add(function (s, o) {
38192
- 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));
38193
38299
  });
38194
38300
  survey.registerFunctionOnPropertyValueChanged("pages", function () {
38195
38301
  listModel.setItems(getTOCItems(survey, onAction));
@@ -38197,8 +38303,7 @@ function createTOCListModel(survey, onAction) {
38197
38303
  return listModel;
38198
38304
  }
38199
38305
  function getTOCItems(survey, onAction) {
38200
- var _a;
38201
- var pagesSource = survey.questionsOnPageMode === "singlePage" ? (_a = survey.pages[0]) === null || _a === void 0 ? void 0 : _a.elements : survey.pages;
38306
+ var pagesSource = survey.pages;
38202
38307
  var items = (pagesSource || []).map(function (page) {
38203
38308
  return new action_Action({
38204
38309
  id: page.name,
@@ -38206,7 +38311,7 @@ function getTOCItems(survey, onAction) {
38206
38311
  action: function () {
38207
38312
  DomDocumentHelper.activeElementBlur();
38208
38313
  !!onAction && onAction();
38209
- if (page instanceof page_PageModel) {
38314
+ if (page.isPage) {
38210
38315
  return survey.tryNavigateToPage(page);
38211
38316
  }
38212
38317
  return tryFocusPage(survey, page);
@@ -41919,6 +42024,8 @@ var survey_SurveyModel = /** @class */ (function (_super) {
41919
42024
  get: function () {
41920
42025
  if (this.isDesignMode)
41921
42026
  return this.pages;
42027
+ if (!!this.pageContainerValue && (this.isShowingPreview || this.isSinglePage))
42028
+ return [this.pageContainerValue];
41922
42029
  var result = new Array();
41923
42030
  for (var i = 0; i < this.pages.length; i++) {
41924
42031
  if (this.isPageInVisibleList(this.pages[i])) {
@@ -42052,7 +42159,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
42052
42159
  return false;
42053
42160
  if (index === this.currentPageNo)
42054
42161
  return false;
42055
- if (index < this.currentPageNo || this.isValidateOnComplete) {
42162
+ if (index < this.currentPageNo || this.checkErrorsMode === "onComplete" || this.validationAllowSwitchPages) {
42056
42163
  this.currentPageNo = index;
42057
42164
  return true;
42058
42165
  }
@@ -42384,6 +42491,10 @@ var survey_SurveyModel = /** @class */ (function (_super) {
42384
42491
  this.onFirstPageIsStartedChanged();
42385
42492
  if (goToFirstPage) {
42386
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
+ }
42387
42498
  }
42388
42499
  if (clearData) {
42389
42500
  this.updateValuesWithDefaults();
@@ -42421,7 +42532,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
42421
42532
  SurveyModel.prototype.currentPageChanged = function (newValue, oldValue) {
42422
42533
  this.notifyQuestionsOnHidingContent(oldValue);
42423
42534
  var options = this.createPageChangeEventOptions(newValue, oldValue);
42424
- if (oldValue && !oldValue.passed) {
42535
+ if (oldValue && !oldValue.isDisposed && !oldValue.passed) {
42425
42536
  if (oldValue.validate(false)) {
42426
42537
  oldValue.passed = true;
42427
42538
  }
@@ -42432,9 +42543,9 @@ var survey_SurveyModel = /** @class */ (function (_super) {
42432
42543
  this.onCurrentPageChanged.fire(this, options);
42433
42544
  };
42434
42545
  SurveyModel.prototype.notifyQuestionsOnHidingContent = function (page) {
42435
- if (!page)
42436
- return;
42437
- page.questions.forEach(function (q) { return q.onHidingContent(); });
42546
+ if (page && !page.isDisposed) {
42547
+ page.questions.forEach(function (q) { return q.onHidingContent(); });
42548
+ }
42438
42549
  };
42439
42550
  SurveyModel.prototype.createPageChangeEventOptions = function (newValue, oldValue) {
42440
42551
  var diff = !!newValue && !!oldValue ? newValue.visibleIndex - oldValue.visibleIndex : 0;
@@ -42670,6 +42781,30 @@ var survey_SurveyModel = /** @class */ (function (_super) {
42670
42781
  return false;
42671
42782
  return this.doCurrentPageComplete(false);
42672
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
+ };
42673
42808
  SurveyModel.prototype.hasErrorsOnNavigate = function (doComplete) {
42674
42809
  var _this = this;
42675
42810
  if (!this.isEditMode || this.ignoreValidation)
@@ -42999,9 +43134,9 @@ var survey_SurveyModel = /** @class */ (function (_super) {
42999
43134
  };
43000
43135
  SurveyModel.prototype.nextPageUIClick = function () {
43001
43136
  if (!!this.mouseDownPage && this.mouseDownPage !== this.activePage)
43002
- return;
43137
+ return false;
43003
43138
  this.mouseDownPage = null;
43004
- return this.nextPage();
43139
+ return this.performNext();
43005
43140
  };
43006
43141
  SurveyModel.prototype.nextPageMouseDown = function () {
43007
43142
  this.mouseDownPage = this.activePage;
@@ -43045,7 +43180,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43045
43180
  this.isShowingPreview = false;
43046
43181
  };
43047
43182
  SurveyModel.prototype.cancelPreviewByPage = function (panel) {
43048
- this.cancelPreview(panel["originalPage"]);
43183
+ this.cancelPreview(panel);
43049
43184
  };
43050
43185
  SurveyModel.prototype.doCurrentPageComplete = function (doComplete) {
43051
43186
  if (this.isValidatingOnServer)
@@ -43075,6 +43210,16 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43075
43210
  enumerable: false,
43076
43211
  configurable: true
43077
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
+ };
43078
43223
  Object.defineProperty(SurveyModel.prototype, "questionsOnPageMode", {
43079
43224
  /**
43080
43225
  * Specifies how to distribute survey elements between pages.
@@ -43150,25 +43295,54 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43150
43295
  this.pageVisibilityChanged(this.pages[0], !this.isStartedState);
43151
43296
  };
43152
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 () {
43153
43319
  if (this.isDesignMode)
43154
43320
  return;
43155
- if (this.isShowingPreview) {
43156
- this.runningPages = this.pages.slice(0, this.pages.length);
43157
- this.setupPagesForPageModes(true, false);
43158
- }
43159
- else {
43160
- if (this.runningPages) {
43161
- 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);
43162
43334
  }
43163
- this.runningPages = undefined;
43164
43335
  }
43165
- this.runConditions();
43166
- this.updateAllElementsVisibility(this.pages);
43167
- this.updateVisibleIndexes();
43168
43336
  if (this.isShowingPreview) {
43169
- this.currentPageNo = 0;
43337
+ rootPage = this.createRootPage(previewName, rootPage ? [rootPage] : this.pages);
43170
43338
  }
43171
- 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();
43172
43346
  var curPage = this.gotoPageFromPreview;
43173
43347
  this.gotoPageFromPreview = null;
43174
43348
  if (helpers_Helpers.isValueEmpty(curPage) && this.visiblePageCount > 0) {
@@ -43180,110 +43354,62 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43180
43354
  this.changeCurrentPageFromPreview = false;
43181
43355
  }
43182
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();
43183
43366
  };
43184
- SurveyModel.prototype.onQuestionsOnPageModeChanged = function (oldValue, isFirstLoad) {
43185
- 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) {
43186
43394
  if (this.isShowingPreview)
43187
43395
  return;
43188
- if (this.questionsOnPageMode == "standard" || this.isDesignMode) {
43189
- if (this.originalPages) {
43190
- this.restoreOriginalPages(this.originalPages);
43191
- }
43192
- this.originalPages = undefined;
43396
+ this.currentSingleQuestion = undefined;
43397
+ if (oldValue === "singlePage") {
43398
+ this.updatePagesContainer();
43193
43399
  }
43194
- else {
43195
- if (!oldValue || oldValue == "standard") {
43196
- this.originalPages = this.pages.slice(0, this.pages.length);
43197
- }
43198
- this.setupPagesForPageModes(this.isSinglePage, isFirstLoad);
43400
+ if (this.isSinglePage) {
43401
+ this.updatePagesContainer();
43199
43402
  }
43200
- this.runConditions();
43201
- this.updateVisibleIndexes();
43202
- };
43203
- SurveyModel.prototype.restoreOriginalPages = function (originalPages) {
43204
- this.questionHashesClear();
43205
- this.pages.splice(0, this.pages.length);
43206
- for (var i = 0; i < originalPages.length; i++) {
43207
- var page = originalPages[i];
43208
- page.setWasShown(false);
43209
- 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
+ }
43210
43408
  }
43211
43409
  };
43212
43410
  SurveyModel.prototype.getPageStartIndex = function () {
43213
43411
  return this.firstPageIsStarted && this.pages.length > 0 ? 1 : 0;
43214
43412
  };
43215
- SurveyModel.prototype.setupPagesForPageModes = function (isSinglePage, isFirstLoad) {
43216
- var _this = this;
43217
- this.questionHashesClear();
43218
- if (this.firstPageIsStarted && this.pages.length > 0) {
43219
- this.pages[0].questions.forEach(function (q) { return _this.questionHashesAdded(q); });
43220
- }
43221
- this.isLockingUpdateOnPageModes = !isFirstLoad;
43222
- var startIndex = this.getPageStartIndex();
43223
- _super.prototype.startLoadingFromJson.call(this);
43224
- var newPages = this.createPagesForQuestionOnPageMode(isSinglePage, startIndex);
43225
- var deletedLen = this.pages.length - startIndex;
43226
- this.pages.splice(startIndex, deletedLen);
43227
- for (var i = 0; i < newPages.length; i++) {
43228
- this.pages.push(newPages[i]);
43229
- }
43230
- _super.prototype.endLoadingFromJson.call(this);
43231
- for (var i = 0; i < newPages.length; i++) {
43232
- newPages[i].setSurveyImpl(this, true);
43233
- }
43234
- this.doElementsOnLoad();
43235
- this.updateCurrentPage();
43236
- this.isLockingUpdateOnPageModes = false;
43237
- };
43238
- SurveyModel.prototype.createPagesForQuestionOnPageMode = function (isSinglePage, startIndex) {
43239
- if (isSinglePage) {
43240
- return [this.createSinglePage(startIndex)];
43241
- }
43242
- return this.createPagesForEveryQuestion(startIndex);
43243
- };
43244
- SurveyModel.prototype.createSinglePage = function (startIndex) {
43245
- var single = this.createNewPage("all");
43246
- single.setSurveyImpl(this);
43247
- for (var i = startIndex; i < this.pages.length; i++) {
43248
- var page = this.pages[i];
43249
- var panel = Serializer.createClass("panel");
43250
- panel.originalPage = page;
43251
- single.addPanel(panel);
43252
- var json = new jsonobject_JsonObject().toJsonObject(page);
43253
- new jsonobject_JsonObject().toObject(json, panel);
43254
- }
43255
- return single;
43256
- };
43257
- SurveyModel.prototype.createPagesForEveryQuestion = function (startIndex) {
43258
- var res = [];
43259
- for (var i = startIndex; i < this.pages.length; i++) {
43260
- var originalPage = this.pages[i];
43261
- // Initialize randomization
43262
- originalPage.setWasShown(true);
43263
- for (var j = 0; j < originalPage.elements.length; j++) {
43264
- var originalElement = originalPage.elements[j];
43265
- var element = Serializer.createClass(originalElement.getType());
43266
- if (!element)
43267
- continue;
43268
- var jsonObj = new jsonobject_JsonObject();
43269
- //Deserialize page properties only, excluding elements
43270
- jsonObj.lightSerializing = true;
43271
- var pageJson = jsonObj.toJsonObject(originalPage);
43272
- var page = Serializer.createClass(originalPage.getType());
43273
- page.fromJSON(pageJson);
43274
- page.name = originalElement.name;
43275
- page.setSurveyImpl(this);
43276
- res.push(page);
43277
- var json = new jsonobject_JsonObject().toJsonObject(originalElement);
43278
- page.addElement(element);
43279
- new jsonobject_JsonObject().toObject(json, element);
43280
- for (var k = 0; k < page.questions.length; k++) {
43281
- this.questionHashesAdded(page.questions[k]);
43282
- }
43283
- }
43284
- }
43285
- return res;
43286
- };
43287
43413
  Object.defineProperty(SurveyModel.prototype, "isFirstPage", {
43288
43414
  /**
43289
43415
  * Indicates whether the [current page](#currentPage) is the first page.
@@ -43349,30 +43475,73 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43349
43475
  enumerable: false,
43350
43476
  configurable: true
43351
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
+ });
43352
43492
  SurveyModel.prototype.updateIsFirstLastPageState = function () {
43353
43493
  var curPage = this.currentPage;
43354
43494
  this.setPropertyValue("isFirstPage", !!curPage && curPage === this.firstVisiblePage);
43355
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);
43356
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
+ });
43357
43524
  SurveyModel.prototype.calcIsShowPrevButton = function () {
43358
- if (this.isFirstPage || !this.showPrevButton || this.state !== "running")
43525
+ if (this.isFirstPageOrElement || !this.showPrevButton || this.state !== "running")
43359
43526
  return false;
43527
+ if (this.isFirstElement !== undefined)
43528
+ return true;
43360
43529
  var page = this.visiblePages[this.currentPageNo - 1];
43361
43530
  return page && page.getMaxTimeToFinish() <= 0;
43362
43531
  };
43363
43532
  SurveyModel.prototype.calcIsShowNextButton = function () {
43364
- return this.state === "running" && !this.isLastPage && !this.canBeCompletedByTrigger;
43533
+ return this.state === "running" && !this.isLastPageOrElement && !this.canBeCompletedByTrigger;
43365
43534
  };
43366
43535
  SurveyModel.prototype.calcIsCompleteButtonVisible = function () {
43367
43536
  var state = this.state;
43368
43537
  return this.isEditMode && (this.state === "running" &&
43369
- (this.isLastPage && !this.isShowPreviewBeforeComplete || this.canBeCompletedByTrigger)
43538
+ (this.isLastPageOrElement && !this.isShowPreviewBeforeComplete || this.canBeCompletedByTrigger)
43370
43539
  || state === "preview") && this.showCompleteButton;
43371
43540
  };
43372
43541
  SurveyModel.prototype.calcIsPreviewButtonVisible = function () {
43373
43542
  return (this.isEditMode &&
43374
43543
  this.isShowPreviewBeforeComplete &&
43375
- this.state == "running" && this.isLastPage);
43544
+ this.state == "running" && this.isLastPageOrElement);
43376
43545
  };
43377
43546
  SurveyModel.prototype.calcIsCancelPreviewButtonVisible = function () {
43378
43547
  return (this.isEditMode &&
@@ -43381,6 +43550,8 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43381
43550
  };
43382
43551
  Object.defineProperty(SurveyModel.prototype, "firstVisiblePage", {
43383
43552
  get: function () {
43553
+ if (this.visiblePageCount === 1)
43554
+ return this.visiblePages[0];
43384
43555
  var pages = this.pages;
43385
43556
  for (var i = 0; i < pages.length; i++) {
43386
43557
  if (this.isPageInVisibleList(pages[i]))
@@ -43393,6 +43564,8 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43393
43564
  });
43394
43565
  Object.defineProperty(SurveyModel.prototype, "lastVisiblePage", {
43395
43566
  get: function () {
43567
+ if (this.visiblePageCount === 1)
43568
+ return this.visiblePages[0];
43396
43569
  var pages = this.pages;
43397
43570
  for (var i = pages.length - 1; i >= 0; i--) {
43398
43571
  if (this.isPageInVisibleList(pages[i]))
@@ -43741,7 +43914,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43741
43914
  });
43742
43915
  SurveyModel.prototype.updateProgressText = function (onValueChanged) {
43743
43916
  if (onValueChanged === void 0) { onValueChanged = false; }
43744
- if (this.isCalculatingProgressText || this.isShowingPreview || this.isLockingUpdateOnPageModes)
43917
+ if (this.isCalculatingProgressText || this.isShowingPreview)
43745
43918
  return;
43746
43919
  if (onValueChanged &&
43747
43920
  this.progressBarType == "pages" &&
@@ -43852,7 +44025,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
43852
44025
  width: width,
43853
44026
  };
43854
44027
  this.onResize.fire(this, options);
43855
- this.setResponsiveStartWidth(width);
44028
+ // this.setResponsiveStartWidth(width);
43856
44029
  return isMobileChanged;
43857
44030
  };
43858
44031
  SurveyModel.prototype.triggerResponsiveness = function (hard) {
@@ -45083,7 +45256,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
45083
45256
  this.updateVisibleIndexes();
45084
45257
  };
45085
45258
  SurveyModel.prototype.updateVisibleIndexes = function (page) {
45086
- if (this.isLoadingFromJson || !!this.isEndLoadingFromJson || this.isLockingUpdateOnPageModes)
45259
+ if (this.isLoadingFromJson || !!this.isEndLoadingFromJson)
45087
45260
  return;
45088
45261
  if (this.isRunningConditions &&
45089
45262
  this.onQuestionVisibleChanged.isEmpty &&
@@ -45152,12 +45325,12 @@ var survey_SurveyModel = /** @class */ (function (_super) {
45152
45325
  SurveyModel.prototype.endLoadingFromJson = function () {
45153
45326
  this.isEndLoadingFromJson = "processing";
45154
45327
  this.onFirstPageIsStartedChanged();
45155
- this.onQuestionsOnPageModeChanged("standard", true);
45156
45328
  _super.prototype.endLoadingFromJson.call(this);
45157
45329
  if (this.hasCookie) {
45158
45330
  this.isCompletedBefore = true;
45159
45331
  }
45160
45332
  this.doElementsOnLoad();
45333
+ this.onQuestionsOnPageModeChanged("standard");
45161
45334
  this.isEndLoadingFromJson = "conditions";
45162
45335
  this.runConditions();
45163
45336
  this.notifyElementsOnAnyValueOrVariableChanged("");
@@ -45205,7 +45378,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
45205
45378
  mouseDown: function () { return _this.navigationMouseDown(); },
45206
45379
  },
45207
45380
  locTitle: this.locPagePrevText,
45208
- action: function () { return _this.prevPage(); },
45381
+ action: function () { return _this.performPrevious(); },
45209
45382
  component: defaultComponent
45210
45383
  });
45211
45384
  var navNext = new action_Action({
@@ -45485,8 +45658,6 @@ var survey_SurveyModel = /** @class */ (function (_super) {
45485
45658
  SurveyModel.prototype.setValue = function (name, newQuestionValue, locNotification, allowNotifyValueChanged, questionName) {
45486
45659
  if (locNotification === void 0) { locNotification = false; }
45487
45660
  if (allowNotifyValueChanged === void 0) { allowNotifyValueChanged = true; }
45488
- if (this.isLockingUpdateOnPageModes)
45489
- return;
45490
45661
  var newValue = newQuestionValue;
45491
45662
  if (allowNotifyValueChanged) {
45492
45663
  newValue = this.questionOnValueChanging(name, newQuestionValue);
@@ -46171,6 +46342,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
46171
46342
  if (this.isScaled && this.responsiveStartWidth > 1) {
46172
46343
  var initialWidth = this.responsiveStartWidth;
46173
46344
  try {
46345
+ width = width || this.staticStartWidth;
46174
46346
  initialWidth = !isNaN(width) ? width : parseFloat(width.toString().replace("px", ""));
46175
46347
  }
46176
46348
  catch (e) { }
@@ -46183,6 +46355,9 @@ var survey_SurveyModel = /** @class */ (function (_super) {
46183
46355
  enumerable: false,
46184
46356
  configurable: true
46185
46357
  });
46358
+ SurveyModel.prototype.setStaticStartWidth = function (width) {
46359
+ this.staticStartWidth = width;
46360
+ };
46186
46361
  SurveyModel.prototype.setResponsiveStartWidth = function (width) {
46187
46362
  this.responsiveStartWidth = width;
46188
46363
  };
@@ -47021,6 +47196,9 @@ var survey_SurveyModel = /** @class */ (function (_super) {
47021
47196
  survey_decorate([
47022
47197
  jsonobject_property({ defaultValue: 100 })
47023
47198
  ], SurveyModel.prototype, "widthScale", void 0);
47199
+ survey_decorate([
47200
+ jsonobject_property()
47201
+ ], SurveyModel.prototype, "staticStartWidth", void 0);
47024
47202
  survey_decorate([
47025
47203
  jsonobject_property()
47026
47204
  ], SurveyModel.prototype, "responsiveStartWidth", void 0);
@@ -59296,7 +59474,13 @@ var question_file_QuestionFileModel = /** @class */ (function (_super) {
59296
59474
  };
59297
59475
  _this.doClean = function () {
59298
59476
  if (_this.needConfirmRemoveFile) {
59299
- 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
+ });
59300
59484
  return;
59301
59485
  }
59302
59486
  _this.clearFilesCore();
@@ -59596,7 +59780,7 @@ var question_file_QuestionFileModel = /** @class */ (function (_super) {
59596
59780
  if (this.previewValue.length > 0 && !this.calculatedGapBetweenItems && !this.calculatedItemWidth) {
59597
59781
  setTimeout(function () {
59598
59782
  _this.processResponsiveness(0, _this._width);
59599
- });
59783
+ }, 1);
59600
59784
  }
59601
59785
  this.prevPreviewLength = this.previewValue.length;
59602
59786
  };
@@ -60305,7 +60489,13 @@ var question_file_QuestionFileModel = /** @class */ (function (_super) {
60305
60489
  var _this = this;
60306
60490
  event.stopPropagation();
60307
60491
  if (this.needConfirmRemoveFile) {
60308
- 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
+ });
60309
60499
  return;
60310
60500
  }
60311
60501
  this.removeFileCore(data);
@@ -66290,7 +66480,13 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66290
66480
  }
66291
66481
  };
66292
66482
  if (this.isRequireConfirmOnDelete(value)) {
66293
- 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
+ });
66294
66490
  }
66295
66491
  else {
66296
66492
  removePanel();
@@ -70431,8 +70627,8 @@ Serializer.addClass("currencymask", [
70431
70627
 
70432
70628
  var Version;
70433
70629
  var ReleaseDate;
70434
- Version = "" + "1.12.14";
70435
- ReleaseDate = "" + "2024-12-09";
70630
+ Version = "" + "1.12.16-patch.1";
70631
+ ReleaseDate = "" + "2024-12-25";
70436
70632
  function checkLibraryVersion(ver, libraryName) {
70437
70633
  if (Version != ver) {
70438
70634
  var str = "survey-core has version '" + Version + "' and " + libraryName