survey-core 1.12.2 → 1.12.4

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 (264) hide show
  1. package/defaultV2.css +65 -50
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +65 -50
  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/modern.css +69 -84
  114. package/modern.css.map +1 -1
  115. package/modern.fontless.css +69 -84
  116. package/modern.fontless.css.map +1 -1
  117. package/modern.fontless.min.css +2 -2
  118. package/modern.min.css +2 -2
  119. package/package.json +1 -1
  120. package/plugins/bootstrap-integration/index.js +1 -2
  121. package/plugins/bootstrap-integration/index.js.map +1 -1
  122. package/plugins/bootstrap-integration/index.min.js +2 -2
  123. package/plugins/bootstrap-material-integration/cssbootstrapmaterial.d.ts +1 -0
  124. package/plugins/bootstrap-material-integration/index.js +2 -2
  125. package/plugins/bootstrap-material-integration/index.js.map +1 -1
  126. package/plugins/bootstrap-material-integration/index.min.js +2 -2
  127. package/survey.core.js +616 -270
  128. package/survey.core.js.map +1 -1
  129. package/survey.core.min.js +3 -3
  130. package/survey.css +59 -24
  131. package/survey.css.map +1 -1
  132. package/survey.i18n.js +1 -1
  133. package/survey.i18n.min.js +1 -1
  134. package/survey.min.css +2 -2
  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 +12 -2
  219. package/ts3.4/typings/packages/survey-core/src/base.d.ts +12 -1
  220. package/ts3.4/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +1 -2
  221. package/ts3.4/typings/packages/survey-core/src/dragdrop/choices.d.ts +2 -1
  222. package/ts3.4/typings/packages/survey-core/src/header.d.ts +1 -0
  223. package/ts3.4/typings/packages/survey-core/src/helpers.d.ts +1 -1
  224. package/ts3.4/typings/packages/survey-core/src/page.d.ts +2 -0
  225. package/ts3.4/typings/packages/survey-core/src/panel.d.ts +11 -6
  226. package/ts3.4/typings/packages/survey-core/src/question.d.ts +11 -7
  227. package/ts3.4/typings/packages/survey-core/src/question_baseselect.d.ts +1 -1
  228. package/ts3.4/typings/packages/survey-core/src/question_custom.d.ts +1 -0
  229. package/ts3.4/typings/packages/survey-core/src/question_matrix.d.ts +13 -5
  230. package/ts3.4/typings/packages/survey-core/src/question_matrixdropdownbase.d.ts +1 -1
  231. package/ts3.4/typings/packages/survey-core/src/question_multipletext.d.ts +1 -1
  232. package/ts3.4/typings/packages/survey-core/src/question_paneldynamic.d.ts +2 -0
  233. package/ts3.4/typings/packages/survey-core/src/question_ranking.d.ts +2 -0
  234. package/ts3.4/typings/packages/survey-core/src/question_rating.d.ts +4 -1
  235. package/ts3.4/typings/packages/survey-core/src/survey-element.d.ts +4 -2
  236. package/ts3.4/typings/packages/survey-core/src/survey.d.ts +10 -6
  237. package/ts3.4/typings/packages/survey-core/src/textPreProcessor.d.ts +2 -2
  238. package/ts3.4/typings/packages/survey-core/src/utils/utils.d.ts +2 -2
  239. package/ts3.4/typings/src/defaultCss/cssmodern.d.ts +1 -0
  240. package/ts3.4/typings/src/defaultCss/cssstandard.d.ts +1 -0
  241. package/typings/packages/survey-core/entries/chunks/model.d.ts +1 -1
  242. package/typings/packages/survey-core/src/base-interfaces.d.ts +12 -2
  243. package/typings/packages/survey-core/src/base.d.ts +12 -1
  244. package/typings/packages/survey-core/src/defaultCss/defaultV2Css.d.ts +1 -2
  245. package/typings/packages/survey-core/src/dragdrop/choices.d.ts +2 -1
  246. package/typings/packages/survey-core/src/header.d.ts +1 -0
  247. package/typings/packages/survey-core/src/helpers.d.ts +1 -1
  248. package/typings/packages/survey-core/src/page.d.ts +2 -0
  249. package/typings/packages/survey-core/src/panel.d.ts +11 -6
  250. package/typings/packages/survey-core/src/question.d.ts +11 -7
  251. package/typings/packages/survey-core/src/question_baseselect.d.ts +1 -1
  252. package/typings/packages/survey-core/src/question_custom.d.ts +1 -0
  253. package/typings/packages/survey-core/src/question_matrix.d.ts +13 -5
  254. package/typings/packages/survey-core/src/question_matrixdropdownbase.d.ts +1 -1
  255. package/typings/packages/survey-core/src/question_multipletext.d.ts +1 -1
  256. package/typings/packages/survey-core/src/question_paneldynamic.d.ts +2 -0
  257. package/typings/packages/survey-core/src/question_ranking.d.ts +3 -0
  258. package/typings/packages/survey-core/src/question_rating.d.ts +4 -1
  259. package/typings/packages/survey-core/src/survey-element.d.ts +4 -2
  260. package/typings/packages/survey-core/src/survey.d.ts +10 -6
  261. package/typings/packages/survey-core/src/textPreProcessor.d.ts +2 -2
  262. package/typings/packages/survey-core/src/utils/utils.d.ts +2 -2
  263. package/typings/src/defaultCss/cssmodern.d.ts +1 -0
  264. package/typings/src/defaultCss/cssstandard.d.ts +1 -0
package/survey.core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.12.2
2
+ * surveyjs - Survey JavaScript library v1.12.4
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
  */
@@ -964,7 +964,7 @@ module.exports = "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\
964
964
  /*!*******************************************!*\
965
965
  !*** ./src/entries/core.ts + 127 modules ***!
966
966
  \*******************************************/
967
- /*! 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, 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, 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, InputMaskBase, InputMaskPattern, InputMaskNumeric, InputMaskDateTime, InputMaskCurrency, CssClassBuilder, TextAreaModel, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, StylesManager, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, 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 */
967
+ /*! 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, 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, 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, InputMaskBase, InputMaskPattern, InputMaskNumeric, InputMaskDateTime, InputMaskCurrency, CssClassBuilder, TextAreaModel, surveyCss, defaultV2Css, defaultV2ThemeName, DragDropCore, DragDropChoices, DragDropRankingSelectToRank, StylesManager, defaultStandardCss, modernCss, SvgIconRegistry, SvgRegistry, SvgBundleViewModel, 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 */
968
968
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
969
969
 
970
970
  "use strict";
@@ -1158,6 +1158,9 @@ __webpack_require__.d(__webpack_exports__, "increaseHeightByContent", function()
1158
1158
  __webpack_require__.d(__webpack_exports__, "createSvg", function() { return /* reexport */ createSvg; });
1159
1159
  __webpack_require__.d(__webpack_exports__, "chooseFiles", function() { return /* reexport */ chooseFiles; });
1160
1160
  __webpack_require__.d(__webpack_exports__, "sanitizeEditableContent", function() { return /* reexport */ sanitizeEditableContent; });
1161
+ __webpack_require__.d(__webpack_exports__, "prepareElementForVerticalAnimation", function() { return /* reexport */ prepareElementForVerticalAnimation; });
1162
+ __webpack_require__.d(__webpack_exports__, "cleanHtmlElementAfterAnimation", function() { return /* reexport */ cleanHtmlElementAfterAnimation; });
1163
+ __webpack_require__.d(__webpack_exports__, "classesToSelector", function() { return /* reexport */ classesToSelector; });
1161
1164
  __webpack_require__.d(__webpack_exports__, "InputMaskBase", function() { return /* reexport */ mask_base_InputMaskBase; });
1162
1165
  __webpack_require__.d(__webpack_exports__, "InputMaskPattern", function() { return /* reexport */ mask_pattern_InputMaskPattern; });
1163
1166
  __webpack_require__.d(__webpack_exports__, "InputMaskNumeric", function() { return /* reexport */ mask_numeric_InputMaskNumeric; });
@@ -1598,7 +1601,7 @@ var helpers_Helpers = /** @class */ (function () {
1598
1601
  var value = newValue ? newValue.length : "0";
1599
1602
  return [value, maxLength].join("/");
1600
1603
  };
1601
- Helpers.getNumberByIndex = function (index, startIndexStr) {
1604
+ Helpers.getNumberByIndex = function (index, startIndexStr, parentIndex) {
1602
1605
  if (index < 0)
1603
1606
  return "";
1604
1607
  var startIndex = 1;
@@ -1607,16 +1610,19 @@ var helpers_Helpers = /** @class */ (function () {
1607
1610
  var isNumeric = true;
1608
1611
  var strIndex = "A";
1609
1612
  var str = "";
1613
+ var hasDigitFunc = function (str) {
1614
+ if (!str)
1615
+ return false;
1616
+ for (var i = 0; i < str.length; i++) {
1617
+ if (Helpers.isCharDigit(str[i]))
1618
+ return true;
1619
+ }
1620
+ return false;
1621
+ };
1610
1622
  if (!!startIndexStr) {
1611
1623
  str = startIndexStr;
1612
1624
  var ind = str.length - 1;
1613
- var hasDigit = false;
1614
- for (var i = 0; i < str.length; i++) {
1615
- if (Helpers.isCharDigit(str[i])) {
1616
- hasDigit = true;
1617
- break;
1618
- }
1619
- }
1625
+ var hasDigit = hasDigitFunc(str);
1620
1626
  var checkLetter = function () {
1621
1627
  return ((hasDigit && !Helpers.isCharDigit(str[ind])) ||
1622
1628
  Helpers.isCharNotLetterAndDigit(str[ind]));
@@ -1646,6 +1652,9 @@ var helpers_Helpers = /** @class */ (function () {
1646
1652
  postfix = newPostfix;
1647
1653
  }
1648
1654
  }
1655
+ if (parentIndex > -1 && hasDigitFunc(prefix)) {
1656
+ prefix = this.getNumberByIndex(parentIndex, prefix);
1657
+ }
1649
1658
  if (isNumeric) {
1650
1659
  var val = (index + startIndex).toString();
1651
1660
  while (val.length < strIndex.length)
@@ -10102,6 +10111,66 @@ var base_Base = /** @class */ (function () {
10102
10111
  return Base;
10103
10112
  }());
10104
10113
 
10114
+ var RenderingCompletedAwaiter = /** @class */ (function () {
10115
+ function RenderingCompletedAwaiter(_elements, _renderedHandler, waitingTimeout) {
10116
+ var _this = this;
10117
+ if (waitingTimeout === void 0) { waitingTimeout = 100; }
10118
+ this._elements = _elements;
10119
+ this._renderedHandler = _renderedHandler;
10120
+ this._elementsToRenderCount = 0;
10121
+ this._elementsToRenderTimer = undefined;
10122
+ this._elementRenderedHandler = function (s, o) {
10123
+ var _a;
10124
+ (_a = s.onElementRerendered) === null || _a === void 0 ? void 0 : _a.remove(_this._elementRenderedHandler);
10125
+ _this._elementsToRenderCount--;
10126
+ if (_this._elementsToRenderCount <= 0) {
10127
+ _this.visibleElementsRendered();
10128
+ }
10129
+ };
10130
+ this._elements.forEach(function (element) {
10131
+ if (element.onElementRerendered) {
10132
+ element.onElementRerendered.add(_this._elementRenderedHandler);
10133
+ _this._elementsToRenderCount++;
10134
+ }
10135
+ });
10136
+ if (this._elementsToRenderCount > 0) {
10137
+ this._elementsToRenderTimer = setTimeout(function () {
10138
+ if (_this._elementsToRenderCount > 0) {
10139
+ _this.visibleElementsRendered();
10140
+ }
10141
+ }, waitingTimeout);
10142
+ }
10143
+ else {
10144
+ this.visibleElementsRendered();
10145
+ }
10146
+ }
10147
+ RenderingCompletedAwaiter.prototype.stopWaitingForElementsRendering = function () {
10148
+ var _this = this;
10149
+ if (this._elementsToRenderTimer) {
10150
+ clearTimeout(this._elementsToRenderTimer);
10151
+ this._elementsToRenderTimer = undefined;
10152
+ }
10153
+ this._elements.forEach(function (element) {
10154
+ var _a;
10155
+ (_a = element.onElementRerendered) === null || _a === void 0 ? void 0 : _a.remove(_this._elementRenderedHandler);
10156
+ });
10157
+ this._elementsToRenderCount = 0;
10158
+ };
10159
+ RenderingCompletedAwaiter.prototype.visibleElementsRendered = function () {
10160
+ var renderedHandler = this._renderedHandler;
10161
+ this.dispose();
10162
+ if (typeof renderedHandler == "function") {
10163
+ renderedHandler();
10164
+ }
10165
+ };
10166
+ RenderingCompletedAwaiter.prototype.dispose = function () {
10167
+ this.stopWaitingForElementsRendering();
10168
+ this._elements = undefined;
10169
+ this._renderedHandler = undefined;
10170
+ };
10171
+ return RenderingCompletedAwaiter;
10172
+ }());
10173
+
10105
10174
  var ArrayChanges = /** @class */ (function () {
10106
10175
  function ArrayChanges(index, deleteCount, itemsToAdd, deletedItems) {
10107
10176
  this.index = index;
@@ -12666,7 +12735,7 @@ var survey_element_SurveyElementCore = /** @class */ (function (_super) {
12666
12735
  return this.getLocalizableStringText("title", this.getDefaultTitleValue());
12667
12736
  },
12668
12737
  set: function (val) {
12669
- this.setLocalizableStringText("title", val);
12738
+ this.setTitleValue(val);
12670
12739
  },
12671
12740
  enumerable: false,
12672
12741
  configurable: true
@@ -12679,6 +12748,9 @@ var survey_element_SurveyElementCore = /** @class */ (function (_super) {
12679
12748
  configurable: true
12680
12749
  });
12681
12750
  SurveyElementCore.prototype.getDefaultTitleValue = function () { return undefined; };
12751
+ SurveyElementCore.prototype.setTitleValue = function (val) {
12752
+ this.setLocalizableStringText("title", val);
12753
+ };
12682
12754
  SurveyElementCore.prototype.updateDescriptionVisibility = function (newDescription) {
12683
12755
  var showPlaceholder = false;
12684
12756
  if (this.isDesignMode) {
@@ -12867,14 +12939,14 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
12867
12939
  }
12868
12940
  return info;
12869
12941
  };
12870
- SurveyElement.ScrollElementToTop = function (elementId, scrollIfVisible, scrollIntoViewOptions) {
12942
+ SurveyElement.ScrollElementToTop = function (elementId, scrollIfVisible, scrollIntoViewOptions, doneCallback) {
12871
12943
  var root = settings.environment.root;
12872
12944
  if (!elementId || typeof root === "undefined")
12873
12945
  return false;
12874
12946
  var el = root.getElementById(elementId);
12875
- return SurveyElement.ScrollElementToViewCore(el, false, scrollIfVisible, scrollIntoViewOptions);
12947
+ return SurveyElement.ScrollElementToViewCore(el, false, scrollIfVisible, scrollIntoViewOptions, doneCallback);
12876
12948
  };
12877
- SurveyElement.ScrollElementToViewCore = function (el, checkLeft, scrollIfVisible, scrollIntoViewOptions) {
12949
+ SurveyElement.ScrollElementToViewCore = function (el, checkLeft, scrollIfVisible, scrollIntoViewOptions, doneCallback) {
12878
12950
  if (!el || !el.scrollIntoView)
12879
12951
  return false;
12880
12952
  var elTop = scrollIfVisible ? -1 : el.getBoundingClientRect().top;
@@ -12894,6 +12966,18 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
12894
12966
  }
12895
12967
  if (needScroll) {
12896
12968
  el.scrollIntoView(scrollIntoViewOptions);
12969
+ if (typeof doneCallback === "function") {
12970
+ var currPageXOffset_1 = window.pageXOffset;
12971
+ var currPageYOffset_1 = window.pageYOffset;
12972
+ var scrollDone = setInterval(function () {
12973
+ if (currPageXOffset_1 == window.pageXOffset && currPageYOffset_1 == window.pageYOffset) {
12974
+ clearInterval(scrollDone);
12975
+ doneCallback();
12976
+ }
12977
+ currPageXOffset_1 = window.pageXOffset;
12978
+ currPageYOffset_1 = window.pageYOffset;
12979
+ }, 25);
12980
+ }
12897
12981
  }
12898
12982
  return needScroll;
12899
12983
  };
@@ -13261,6 +13345,17 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
13261
13345
  this.surveyChangedCallback();
13262
13346
  }
13263
13347
  };
13348
+ Object.defineProperty(SurveyElement.prototype, "skeletonHeight", {
13349
+ get: function () {
13350
+ var skeletonHeight = undefined;
13351
+ if (!!this.survey && this.survey.skeletonHeight) {
13352
+ skeletonHeight = this.survey.skeletonHeight + "px";
13353
+ }
13354
+ return skeletonHeight;
13355
+ },
13356
+ enumerable: false,
13357
+ configurable: true
13358
+ });
13264
13359
  Object.defineProperty(SurveyElement.prototype, "isInternal", {
13265
13360
  get: function () {
13266
13361
  return this.isContentElement;
@@ -13985,7 +14080,8 @@ var survey_element_SurveyElement = /** @class */ (function (_super) {
13985
14080
  },
13986
14081
  getLeaveOptions: function () {
13987
14082
  var cssClasses = _this.isPanel ? _this.cssClasses.panel : _this.cssClasses;
13988
- return { cssClass: cssClasses.contentLeave,
14083
+ return {
14084
+ cssClass: cssClasses.contentLeave,
13989
14085
  onBeforeRunAnimation: beforeRunAnimation,
13990
14086
  onAfterRunAnimation: afterRunAnimation
13991
14087
  };
@@ -14795,7 +14891,7 @@ function findScrollableParent(element) {
14795
14891
  }
14796
14892
  return findScrollableParent(element.parentElement);
14797
14893
  }
14798
- function scrollElementByChildId(id) {
14894
+ function activateLazyRenderingChecks(id) {
14799
14895
  var environment = settings.environment;
14800
14896
  if (!environment)
14801
14897
  return;
@@ -17414,7 +17510,7 @@ var text_area_TextAreaModel = /** @class */ (function () {
17414
17510
  };
17415
17511
  TextAreaModel.prototype.getTextValue = function () {
17416
17512
  if (!!this.options.getTextValue)
17417
- return this.options.getTextValue();
17513
+ return this.options.getTextValue() || "";
17418
17514
  return "";
17419
17515
  };
17420
17516
  TextAreaModel.prototype.onTextAreaChange = function (event) {
@@ -19291,7 +19387,7 @@ var question_Question = /** @class */ (function (_super) {
19291
19387
  });
19292
19388
  Object.defineProperty(Question.prototype, "isDisabledAttr", {
19293
19389
  get: function () {
19294
- return this.isDesignModeV2;
19390
+ return this.isDesignModeV2 || (!!this.readOnlyCallback && this.readOnlyCallback());
19295
19391
  },
19296
19392
  enumerable: false,
19297
19393
  configurable: true
@@ -19312,6 +19408,8 @@ var question_Question = /** @class */ (function (_super) {
19312
19408
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
19313
19409
  *
19314
19410
  * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
19411
+ *
19412
+ * [View Demo](https://surveyjs.io/form-library/examples/how-to-conditionally-make-input-field-read-only/ (linkStyle))
19315
19413
  * @see readOnly
19316
19414
  * @see isReadOnly
19317
19415
  */
@@ -19337,6 +19435,20 @@ var question_Question = /** @class */ (function (_super) {
19337
19435
  this.runDefaultValueExpression(this.defaultValueRunner, values, properties);
19338
19436
  }
19339
19437
  };
19438
+ Object.defineProperty(Question.prototype, "isInDesignMode", {
19439
+ get: function () {
19440
+ return !this.isContentElement && this.isDesignMode;
19441
+ },
19442
+ enumerable: false,
19443
+ configurable: true
19444
+ });
19445
+ Object.defineProperty(Question.prototype, "isInDesignModeV2", {
19446
+ get: function () {
19447
+ return !this.isContentElement && this.isDesignModeV2;
19448
+ },
19449
+ enumerable: false,
19450
+ configurable: true
19451
+ });
19340
19452
  Object.defineProperty(Question.prototype, "no", {
19341
19453
  /**
19342
19454
  * A question number or letter (depends on the `questionStartIndex` property of the question container (panel, page, or survey)).
@@ -19354,9 +19466,11 @@ var question_Question = /** @class */ (function (_super) {
19354
19466
  configurable: true
19355
19467
  });
19356
19468
  Question.prototype.calcNo = function () {
19469
+ var _a;
19357
19470
  if (!this.hasTitle || this.hideNumber)
19358
19471
  return "";
19359
- var no = helpers_Helpers.getNumberByIndex(this.visibleIndex, this.getStartIndex());
19472
+ var parentIndex = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.visibleIndex;
19473
+ var no = helpers_Helpers.getNumberByIndex(this.visibleIndex, this.getStartIndex(), parentIndex);
19360
19474
  if (!!this.survey) {
19361
19475
  no = this.survey.getUpdatedQuestionNo(this, no);
19362
19476
  }
@@ -19467,7 +19581,7 @@ var question_Question = /** @class */ (function (_super) {
19467
19581
  *
19468
19582
  * | Question type | Value type(s) |
19469
19583
  * | ------------- | ------------- |
19470
- * | Checkboxes | `Array<string \| number>` |
19584
+ * | Checkboxes | <code>Array&lt;string &#124; number&gt;</code> |
19471
19585
  * | Dropdown | `string` \| `number` |
19472
19586
  * | Dynamic Matrix | `Array<object>` |
19473
19587
  * | Dynamic Panel | `Array<object>` |
@@ -19475,14 +19589,14 @@ var question_Question = /** @class */ (function (_super) {
19475
19589
  * | File Upload | `File` \| `Array<File>` |
19476
19590
  * | HTML | (no value) |
19477
19591
  * | Image | (no value) |
19478
- * | Image Picker | `Array<string \| number>` |
19592
+ * | Image Picker | <code>Array&lt;string &#124; number&gt;</code> |
19479
19593
  * | Long Text | `string` |
19480
19594
  * | Multi-Select Dropdown | `object` |
19481
19595
  * | Multi-Select Matrix | `object` |
19482
19596
  * | Multiple Textboxes | `Array<string>` |
19483
19597
  * | Panel | (no value) |
19484
19598
  * | Radio Button Group | `string` \| `number` |
19485
- * | Ranking | `Array<string \| number>` |
19599
+ * | Ranking | <code>Array&lt;string &#124; number&gt;</code> |
19486
19600
  * | Rating Scale | `number` \| `string` |
19487
19601
  * | Signature | `string` (base64-encoded image) |
19488
19602
  * | Single-Line Input | `string` \| `number` \| `Date` |
@@ -19736,7 +19850,7 @@ var question_Question = /** @class */ (function (_super) {
19736
19850
  *
19737
19851
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
19738
19852
  *
19739
- * [View Demo](https://surveyjs.io/form-library/examples/trigger-setvalue/ (linkStyle))
19853
+ * [View Demo](https://surveyjs.io/form-library/examples/set-question-value-dynamically/ (linkStyle))
19740
19854
  * @see setValueIf
19741
19855
  */
19742
19856
  get: function () {
@@ -19754,7 +19868,7 @@ var question_Question = /** @class */ (function (_super) {
19754
19868
  *
19755
19869
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
19756
19870
  *
19757
- * [View Demo](https://surveyjs.io/form-library/examples/trigger-setvalue/ (linkStyle))
19871
+ * [View Demo](https://surveyjs.io/form-library/examples/set-question-value-dynamically/ (linkStyle))
19758
19872
  * @see resetValueIf
19759
19873
  */
19760
19874
  get: function () {
@@ -19772,7 +19886,7 @@ var question_Question = /** @class */ (function (_super) {
19772
19886
  *
19773
19887
  * You can use `setValueExpression` as a standalone property or in conjunction with the [`setValueIf`](#setValueIf) expression, in which case the calculated question value applies only when `setValueIf` evaluates to `true`.
19774
19888
  *
19775
- * [View Demo](https://surveyjs.io/form-library/examples/trigger-setvalue/ (linkStyle))
19889
+ * [View Demo](https://surveyjs.io/form-library/examples/set-question-value-dynamically/ (linkStyle))
19776
19890
  * @see defaultValueExpression
19777
19891
  * @see resetValueIf
19778
19892
  */
@@ -20237,11 +20351,12 @@ var question_Question = /** @class */ (function (_super) {
20237
20351
  };
20238
20352
  Question.prototype.removeError = function (error) {
20239
20353
  if (!error)
20240
- return;
20354
+ return false;
20241
20355
  var errors = this.errors;
20242
20356
  var index = errors.indexOf(error);
20243
20357
  if (index !== -1)
20244
20358
  errors.splice(index, 1);
20359
+ return index !== -1;
20245
20360
  };
20246
20361
  Question.prototype.checkForErrors = function (isOnValueChanged, fireCallback) {
20247
20362
  var qErrors = new Array();
@@ -20944,7 +21059,7 @@ Serializer.addClass("question", [
20944
21059
  name: "title:text", serializationProperty: "locTitle", layout: "row", dependsOn: "name",
20945
21060
  onPropertyEditorUpdate: function (obj, editor) {
20946
21061
  if (!!obj && !!editor) {
20947
- editor.placeholder = obj.name;
21062
+ editor.placeholder = obj.getDefaultTitle();
20948
21063
  }
20949
21064
  }
20950
21065
  },
@@ -22187,8 +22302,8 @@ var choicesRestful_ChoicesRestful = /** @class */ (function (_super) {
22187
22302
  .replace(ChoicesRestful.noCacheText, "");
22188
22303
  }
22189
22304
  if (textProcessor) {
22190
- var pUrl = textProcessor.processTextEx(urlText, false, settings.web.encodeUrlParams);
22191
- var pPath = textProcessor.processTextEx(this.path, false, settings.web.encodeUrlParams);
22305
+ var pUrl = textProcessor.processTextEx({ text: urlText, runAtDesign: true });
22306
+ var pPath = textProcessor.processTextEx({ text: this.path, runAtDesign: true });
22192
22307
  if (!pUrl.hasAllValuesOnLastRun || !pPath.hasAllValuesOnLastRun) {
22193
22308
  this.processedUrl = "";
22194
22309
  this.processedPath = "";
@@ -22890,10 +23005,11 @@ var martixBase_QuestionMatrixBaseModel = /** @class */ (function (_super) {
22890
23005
  }
22891
23006
  };
22892
23007
  QuestionMatrixBaseModel.prototype.isVisibleCore = function () {
23008
+ var _a;
22893
23009
  var res = _super.prototype.isVisibleCore.call(this);
22894
23010
  if (!res || !this.hideIfRowsEmpty)
22895
23011
  return res;
22896
- return this.visibleRows.length > 0;
23012
+ return ((_a = this.visibleRows) === null || _a === void 0 ? void 0 : _a.length) > 0;
22897
23013
  };
22898
23014
  QuestionMatrixBaseModel.prototype.shouldRunColumnExpression = function () {
22899
23015
  return !this.survey || !this.survey.areInvisibleElementsShowing;
@@ -23245,12 +23361,12 @@ var textPreProcessor_QuestionTextProcessor = /** @class */ (function () {
23245
23361
  text = this.processTextCore(this.getParentTextProcessor(), text, returnDisplayValue);
23246
23362
  return this.processTextCore(this.survey, text, returnDisplayValue);
23247
23363
  };
23248
- QuestionTextProcessor.prototype.processTextEx = function (text, returnDisplayValue) {
23249
- text = this.processText(text, returnDisplayValue);
23364
+ QuestionTextProcessor.prototype.processTextEx = function (params) {
23365
+ params.text = this.processText(params.text, params.returnDisplayValue);
23250
23366
  var hasAllValuesOnLastRun = this.textPreProcessor.hasAllValuesOnLastRun;
23251
- var res = { hasAllValuesOnLastRun: true, text: text };
23367
+ var res = { hasAllValuesOnLastRun: true, text: params.text };
23252
23368
  if (this.survey) {
23253
- res = this.survey.processTextEx(text, returnDisplayValue, false);
23369
+ res = this.survey.processTextEx(params);
23254
23370
  }
23255
23371
  res.hasAllValuesOnLastRun =
23256
23372
  res.hasAllValuesOnLastRun && hasAllValuesOnLastRun;
@@ -24400,6 +24516,13 @@ var question_custom_QuestionCompositeModel = /** @class */ (function (_super) {
24400
24516
  };
24401
24517
  }
24402
24518
  };
24519
+ Object.defineProperty(QuestionCompositeModel.prototype, "ariaRole", {
24520
+ get: function () {
24521
+ return "group";
24522
+ },
24523
+ enumerable: false,
24524
+ configurable: true
24525
+ });
24403
24526
  QuestionCompositeModel.ItemVariableName = "composite";
24404
24527
  return QuestionCompositeModel;
24405
24528
  }(question_custom_QuestionCustomModelBase));
@@ -29026,6 +29149,7 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
29026
29149
  counter++;
29027
29150
  } while (!helpers_Helpers.isTwoValueEquals(prevTotalValue, this.totalValue) &&
29028
29151
  counter < 3);
29152
+ this.updateVisibilityBasedOnRows();
29029
29153
  };
29030
29154
  QuestionMatrixDropdownModelBase.prototype.runTriggers = function (name, value) {
29031
29155
  _super.prototype.runTriggers.call(this, name, value);
@@ -29206,7 +29330,7 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
29206
29330
  * }
29207
29331
  * ```
29208
29332
  *
29209
- * To enable Markdown support for the `text` property, implement Markdown-to-HTML conversion in the [onTextMarkdown](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onTextMarkdown) event handler. For an example, refer to the following demo: [Convert Markdown to HTML with Showdown](https://surveyjs.io/form-library/examples/edit-survey-questions-markdown/).
29333
+ * To enable Markdown support for the `text` property, implement Markdown-to-HTML conversion in the [onTextMarkdown](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onTextMarkdown) event handler. For an example, refer to the following demo: [Convert Markdown to HTML with markdown-it](https://surveyjs.io/form-library/examples/edit-survey-questions-markdown/).
29210
29334
  *
29211
29335
  * If you add custom properties, refer to the following help topic to learn how to serialize them into JSON: [Add Custom Properties to Property Grid](https://surveyjs.io/survey-creator/documentation/property-grid#add-custom-properties-to-the-property-grid).
29212
29336
  *
@@ -29748,9 +29872,11 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
29748
29872
  rec.validationValues = this.getDataFilteredValues();
29749
29873
  rec.isSingleDetailPanel = this.detailPanelMode === "underRowSingle";
29750
29874
  for (var i = 0; i < rows.length; i++) {
29751
- res = rows[i].hasErrors(fireCallback, rec, function () {
29752
- _this.raiseOnCompletedAsyncValidators();
29753
- }) || res;
29875
+ if (rows[i].isVisible) {
29876
+ res = rows[i].hasErrors(fireCallback, rec, function () {
29877
+ _this.raiseOnCompletedAsyncValidators();
29878
+ }) || res;
29879
+ }
29754
29880
  }
29755
29881
  return res;
29756
29882
  };
@@ -29837,7 +29963,7 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
29837
29963
  if (duplicatedRows.indexOf(row) < 0) {
29838
29964
  var question = row.getQuestionByName(columnName);
29839
29965
  if (question) {
29840
- _this.removeDuplicationError(question);
29966
+ _this.removeDuplicationError(row, question);
29841
29967
  }
29842
29968
  }
29843
29969
  });
@@ -29855,8 +29981,10 @@ var question_matrixdropdownbase_QuestionMatrixDropdownModelBase = /** @class */
29855
29981
  question.addError(new KeyDuplicationError(this.keyDuplicationError, this));
29856
29982
  }
29857
29983
  };
29858
- QuestionMatrixDropdownModelBase.prototype.removeDuplicationError = function (question) {
29859
- question.removeError(this.getDuplicationError(question));
29984
+ QuestionMatrixDropdownModelBase.prototype.removeDuplicationError = function (row, question) {
29985
+ if (question.removeError(this.getDuplicationError(question)) && question.errors.length === 0 && !!row.editingObj) {
29986
+ row.editingObj[question.getValueName()] = question.value;
29987
+ }
29860
29988
  };
29861
29989
  QuestionMatrixDropdownModelBase.prototype.getFirstQuestionToFocus = function (withError) {
29862
29990
  return this.getFirstCellQuestion(withError);
@@ -32313,6 +32441,7 @@ var question_matrixdynamic_QuestionMatrixDynamicModel = /** @class */ (function
32313
32441
  newRow = lastDelRow;
32314
32442
  }
32315
32443
  else {
32444
+ lastDelRow = undefined;
32316
32445
  newRow = this.createMatrixRow(val[index]);
32317
32446
  }
32318
32447
  rows.splice(index, 0, newRow);
@@ -32329,6 +32458,12 @@ var question_matrixdynamic_QuestionMatrixDynamicModel = /** @class */ (function
32329
32458
  QuestionMatrixDynamicModel.prototype.updateValueFromSurvey = function (newValue, clearData) {
32330
32459
  if (clearData === void 0) { clearData = false; }
32331
32460
  this.setRowCountValueFromData = true;
32461
+ if (this.minRowCount > 0 && helpers_Helpers.isValueEmpty(newValue) && !helpers_Helpers.isValueEmpty(this.defaultRowValue)) {
32462
+ newValue = [];
32463
+ for (var i = 0; i < this.minRowCount; i++) {
32464
+ newValue.push(helpers_Helpers.createCopy(this.defaultRowValue));
32465
+ }
32466
+ }
32332
32467
  _super.prototype.updateValueFromSurvey.call(this, newValue, clearData);
32333
32468
  this.setRowCountValueFromData = false;
32334
32469
  };
@@ -32573,7 +32708,6 @@ var defaultV2Css = {
32573
32708
  titleExpanded: "sd-element__title--expanded",
32574
32709
  titleCollapsed: "sd-element__title--collapsed",
32575
32710
  titleDisabled: "sd-element__title--disabled",
32576
- titleHidden: "sd-element__title--hidden",
32577
32711
  titleOnExpand: "sd-panel__title--expanded",
32578
32712
  titleOnError: "sd-panel__title--error",
32579
32713
  titleBar: "sd-action-title-bar",
@@ -32586,7 +32720,6 @@ var defaultV2Css = {
32586
32720
  footer: "sd-panel__footer",
32587
32721
  requiredText: "sd-panel__required-text",
32588
32722
  header: "sd-panel__header sd-element__header sd-element__header--location-top",
32589
- headerHidden: "sd-panel__header--hidden",
32590
32723
  collapsed: "sd-element--collapsed",
32591
32724
  expanded: "sd-element--expanded",
32592
32725
  expandable: "sd-element--expandable",
@@ -33285,6 +33418,7 @@ var defaultV2Css = {
33285
33418
  rootSelectToRankEmptyValueMod: "sv-ranking--select-to-rank-empty-value",
33286
33419
  rootSelectToRankAlignVertical: "sv-ranking--select-to-rank-vertical",
33287
33420
  rootSelectToRankAlignHorizontal: "sv-ranking--select-to-rank-horizontal",
33421
+ rootSelectToRankSwapAreas: "sv-ranking--select-to-rank-swap-areas",
33288
33422
  item: "sv-ranking-item",
33289
33423
  itemContent: "sv-ranking-item__content sd-ranking-item__content",
33290
33424
  itemIndex: "sv-ranking-item__index sd-ranking-item__index",
@@ -34100,7 +34234,13 @@ var header_Cover = /** @class */ (function (_super) {
34100
34234
  };
34101
34235
  Object.defineProperty(Cover.prototype, "renderedHeight", {
34102
34236
  get: function () {
34103
- return this.height && (this.survey && !this.survey.isMobile || !this.survey) ? Math.max(this.height, this.actualHeight + 40) + "px" : undefined;
34237
+ if (this.survey && !this.survey.isMobile || !this.survey) {
34238
+ return this.height ? Math.max(this.height, this.actualHeight + 40) + "px" : undefined;
34239
+ }
34240
+ if (this.survey && this.survey.isMobile) {
34241
+ return this.mobileHeight ? Math.max(this.mobileHeight, this.actualHeight + 40) + "px" : undefined;
34242
+ }
34243
+ return undefined;
34104
34244
  },
34105
34245
  enumerable: false,
34106
34246
  configurable: true
@@ -34201,6 +34341,9 @@ var header_Cover = /** @class */ (function (_super) {
34201
34341
  header_decorate([
34202
34342
  jsonobject_property()
34203
34343
  ], Cover.prototype, "height", void 0);
34344
+ header_decorate([
34345
+ jsonobject_property()
34346
+ ], Cover.prototype, "mobileHeight", void 0);
34204
34347
  header_decorate([
34205
34348
  jsonobject_property()
34206
34349
  ], Cover.prototype, "inheritWidthFrom", void 0);
@@ -34282,6 +34425,7 @@ var header_Cover = /** @class */ (function (_super) {
34282
34425
 
34283
34426
  Serializer.addClass("cover", [
34284
34427
  { name: "height:number", minValue: 0, default: 256 },
34428
+ { name: "mobileHeight:number", minValue: 0, default: 0 },
34285
34429
  { name: "inheritWidthFrom", default: "container" },
34286
34430
  { name: "textAreaWidth:number", minValue: 0, default: 512 },
34287
34431
  { name: "textGlowEnabled:boolean" },
@@ -34683,6 +34827,13 @@ var panel_QuestionRowModel = /** @class */ (function (_super) {
34683
34827
  QuestionRowModel.getRowId = function () {
34684
34828
  return "pr_" + QuestionRowModel.rowCounter++;
34685
34829
  };
34830
+ Object.defineProperty(QuestionRowModel.prototype, "allowRendering", {
34831
+ get: function () {
34832
+ return !this.panel || !this.panel.survey || !this.panel.survey["isLazyRenderingSuspended"];
34833
+ },
34834
+ enumerable: false,
34835
+ configurable: true
34836
+ });
34686
34837
  QuestionRowModel.prototype.startLazyRendering = function (rowContainerDiv, findScrollableContainer) {
34687
34838
  var _this = this;
34688
34839
  if (findScrollableContainer === void 0) { findScrollableContainer = findScrollableParent; }
@@ -34697,6 +34848,9 @@ var panel_QuestionRowModel = /** @class */ (function (_super) {
34697
34848
  this.isNeedRender = !hasScroll;
34698
34849
  if (hasScroll) {
34699
34850
  this._updateVisibility = function () {
34851
+ if (!_this.allowRendering) {
34852
+ return;
34853
+ }
34700
34854
  var isRowContainerDivVisible = isElementVisible(rowContainerDiv, 50);
34701
34855
  if (!_this.isNeedRender && isRowContainerDivVisible) {
34702
34856
  _this.isNeedRender = true;
@@ -34830,6 +34984,10 @@ var panel_QuestionRowModel = /** @class */ (function (_super) {
34830
34984
  if (this.elements[i].isVisible) {
34831
34985
  visElements.push(this.elements[i]);
34832
34986
  }
34987
+ if (this.elements[i].isPanel || this.elements[i].getType() === "paneldynamic") {
34988
+ this.setIsLazyRendering(false);
34989
+ this.stopLazyRendering();
34990
+ }
34833
34991
  }
34834
34992
  this.visibleElements = visElements;
34835
34993
  return;
@@ -34972,6 +35130,9 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
34972
35130
  _this.registerPropertyChangedHandlers(["questionStartIndex", "showQuestionNumbers"], function () {
34973
35131
  _this.updateVisibleIndexes();
34974
35132
  });
35133
+ _this.registerPropertyChangedHandlers(["title"], function () {
35134
+ _this.calcHasTextInTitle();
35135
+ });
34975
35136
  _this.dragDropPanelHelper = new drag_drop_panel_helper_v1_DragDropPanelHelperV1(_this);
34976
35137
  return _this;
34977
35138
  }
@@ -35046,10 +35207,13 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
35046
35207
  col.onPropertyValueChangedCallback = _this.onColumnPropertyValueChangedCallback;
35047
35208
  });
35048
35209
  };
35210
+ PanelModelBase.prototype.calcHasTextInTitle = function () {
35211
+ this.hasTextInTitle = !!this.title;
35212
+ };
35049
35213
  Object.defineProperty(PanelModelBase.prototype, "hasTitle", {
35050
35214
  get: function () {
35051
- return ((this.canShowTitle() && this.locTitle.textOrHtml.length > 0) ||
35052
- (this.isDesignMode && (this.showTitle && this.isInteractiveDesignElement && settings.designMode.showEmptyTitles)));
35215
+ return ((this.canShowTitle() && (this.hasTextInTitle || this.locTitle.textOrHtml.length > 0)) ||
35216
+ (this.isDesignMode && !(settings.supportCreatorV2 && this.isPanel) && this.showTitle && settings.designMode.showEmptyTitles));
35053
35217
  },
35054
35218
  enumerable: false,
35055
35219
  configurable: true
@@ -35537,6 +35701,7 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
35537
35701
  * @see questions
35538
35702
  */
35539
35703
  get: function () {
35704
+ base_Base.collectDependency(this, "elements");
35540
35705
  return this.elementsValue;
35541
35706
  },
35542
35707
  enumerable: false,
@@ -36033,11 +36198,21 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36033
36198
  this.onVisibleChanged();
36034
36199
  }
36035
36200
  };
36201
+ PanelModelBase.prototype.canRenderFirstRows = function () {
36202
+ return this.isPage;
36203
+ };
36204
+ PanelModelBase.prototype.isLazyRenderInRow = function (rowIndex) {
36205
+ if (!this.survey || !this.survey.isLazyRendering)
36206
+ return false;
36207
+ return (rowIndex >= this.survey.lazyRenderingFirstBatchSize ||
36208
+ !this.canRenderFirstRows());
36209
+ };
36036
36210
  PanelModelBase.prototype.createRowAndSetLazy = function (index) {
36037
36211
  var row = this.createRow();
36038
36212
  row.setIsLazyRendering(this.isLazyRenderInRow(index));
36039
36213
  return row;
36040
36214
  };
36215
+ // TODO V2: make all createRow API private (at least protected) after removing DragDropPanelHelperV1
36041
36216
  PanelModelBase.prototype.createRow = function () {
36042
36217
  return new panel_QuestionRowModel(this);
36043
36218
  };
@@ -36049,6 +36224,7 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36049
36224
  }
36050
36225
  this.onElementVisibilityChanged(this);
36051
36226
  this.releaseAnimations();
36227
+ this.calcHasTextInTitle();
36052
36228
  };
36053
36229
  PanelModelBase.prototype.onFirstRendering = function () {
36054
36230
  _super.prototype.onFirstRendering.call(this);
@@ -36267,15 +36443,6 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36267
36443
  }
36268
36444
  return result;
36269
36445
  };
36270
- PanelModelBase.prototype.isLazyRenderInRow = function (rowIndex) {
36271
- if (!this.survey || !this.survey.isLazyRendering)
36272
- return false;
36273
- return (rowIndex >= this.survey.lazyRenderingFirstBatchSize ||
36274
- !this.canRenderFirstRows());
36275
- };
36276
- PanelModelBase.prototype.canRenderFirstRows = function () {
36277
- return this.isPage;
36278
- };
36279
36446
  PanelModelBase.prototype.getDragDropInfo = function () {
36280
36447
  var page = this.getPage(this.parent);
36281
36448
  return !!page ? page.getDragDropInfo() : undefined;
@@ -36305,27 +36472,74 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36305
36472
  }
36306
36473
  }
36307
36474
  };
36308
- PanelModelBase.prototype.disableLazyRenderingBeforeElement = function (el) {
36309
- var row = el ? this.findRowByElement(el) : undefined;
36310
- var index = el ? this.rows.indexOf(row) : this.rows.length - 1;
36311
- for (var i = index; i >= 0; i--) {
36312
- var currentRow = this.rows[i];
36313
- if (currentRow.isNeedRender) {
36314
- break;
36315
- }
36316
- else {
36317
- currentRow.isNeedRender = true;
36318
- currentRow.stopLazyRendering();
36319
- }
36320
- }
36475
+ PanelModelBase.prototype.getAllRows = function () {
36476
+ var _this = this;
36477
+ var allRows = [];
36478
+ this.rows.forEach(function (row) {
36479
+ var nestedRows = [];
36480
+ row.elements.forEach(function (element) {
36481
+ if (element.isPanel) {
36482
+ nestedRows.push.apply(nestedRows, element.getAllRows());
36483
+ }
36484
+ else if (element.getType() == "paneldynamic") {
36485
+ if (_this.isDesignMode) {
36486
+ nestedRows.push.apply(nestedRows, element.template.getAllRows());
36487
+ }
36488
+ else {
36489
+ element.panels.forEach(function (panel) { return nestedRows.push.apply(nestedRows, panel.getAllRows()); });
36490
+ }
36491
+ }
36492
+ });
36493
+ allRows.push(row);
36494
+ allRows.push.apply(allRows, nestedRows);
36495
+ });
36496
+ return allRows;
36321
36497
  };
36322
- PanelModelBase.prototype.findRowByElement = function (el) {
36323
- var rows = this.rows;
36498
+ PanelModelBase.prototype.findRowAndIndexByElement = function (el, rows) {
36499
+ if (!el) {
36500
+ return { row: undefined, index: this.rows.length - 1 };
36501
+ }
36502
+ rows = rows || this.rows;
36324
36503
  for (var i = 0; i < rows.length; i++) {
36325
36504
  if (rows[i].elements.indexOf(el) > -1)
36326
- return rows[i];
36505
+ return { row: rows[i], index: i };
36327
36506
  }
36328
- return null;
36507
+ return { row: null, index: -1 };
36508
+ };
36509
+ PanelModelBase.prototype.forceRenderRow = function (row) {
36510
+ if (!!row && !row.isNeedRender) {
36511
+ row.isNeedRender = true;
36512
+ row.stopLazyRendering();
36513
+ }
36514
+ };
36515
+ PanelModelBase.prototype.forceRenderElement = function (el, elementsRendered, gap) {
36516
+ if (elementsRendered === void 0) { elementsRendered = function () { }; }
36517
+ if (gap === void 0) { gap = 0; }
36518
+ var allRows = this.getAllRows();
36519
+ var _a = this.findRowAndIndexByElement(el, allRows), row = _a.row, index = _a.index;
36520
+ if (index >= 0 && index < allRows.length) {
36521
+ var rowsToRender = [];
36522
+ rowsToRender.push(row);
36523
+ for (var i = index - 1; i >= index - gap && i >= 0; i--) {
36524
+ rowsToRender.push(allRows[i]);
36525
+ }
36526
+ this.forceRenderRows(rowsToRender, elementsRendered);
36527
+ }
36528
+ };
36529
+ PanelModelBase.prototype.forceRenderRows = function (rows, elementsRendered) {
36530
+ var _this = this;
36531
+ if (elementsRendered === void 0) { elementsRendered = function () { }; }
36532
+ var rowRenderedHandler = (function (rowsCount) { return function () {
36533
+ rowsCount--;
36534
+ if (rowsCount <= 0) {
36535
+ elementsRendered();
36536
+ }
36537
+ }; })(rows.length);
36538
+ rows.forEach(function (row) { return new RenderingCompletedAwaiter(row.visibleElements, rowRenderedHandler); });
36539
+ rows.forEach(function (row) { return _this.forceRenderRow(row); });
36540
+ };
36541
+ PanelModelBase.prototype.findRowByElement = function (el) {
36542
+ return this.findRowAndIndexByElement(el).row;
36329
36543
  };
36330
36544
  PanelModelBase.prototype.elementWidthChanged = function (el) {
36331
36545
  if (this.isLoadingFromJson)
@@ -36801,6 +37015,9 @@ var panel_PanelModelBase = /** @class */ (function (_super) {
36801
37015
  panel_decorate([
36802
37016
  jsonobject_property({ defaultValue: true })
36803
37017
  ], PanelModelBase.prototype, "showTitle", void 0);
37018
+ panel_decorate([
37019
+ jsonobject_property({ defaultValue: false })
37020
+ ], PanelModelBase.prototype, "hasTextInTitle", void 0);
36804
37021
  panel_decorate([
36805
37022
  jsonobject_property({ defaultValue: true })
36806
37023
  ], PanelModelBase.prototype, "showDescription", void 0);
@@ -36831,9 +37048,6 @@ var panel_PanelModel = /** @class */ (function (_super) {
36831
37048
  });
36832
37049
  _this.registerPropertyChangedHandlers(["indent", "innerIndent", "rightIndent"], function () { _this.onIndentChanged(); });
36833
37050
  _this.registerPropertyChangedHandlers(["colSpan"], function () { var _a; (_a = _this.parent) === null || _a === void 0 ? void 0 : _a.updateColumns(); });
36834
- _this.registerPropertyChangedHandlers(["title"], function () {
36835
- _this.calcHasTextInTitle();
36836
- });
36837
37051
  return _this;
36838
37052
  }
36839
37053
  PanelModel.prototype.getType = function () {
@@ -36853,37 +37067,15 @@ var panel_PanelModel = /** @class */ (function (_super) {
36853
37067
  }
36854
37068
  return _super.prototype.getSurvey.call(this, live);
36855
37069
  };
36856
- Object.defineProperty(PanelModel.prototype, "hasTextInTitle", {
36857
- get: function () {
36858
- return this.getPropertyValue("hasTextInTitle");
36859
- },
36860
- enumerable: false,
36861
- configurable: true
36862
- });
36863
- PanelModel.prototype.calcHasTextInTitle = function () {
36864
- this.setPropertyValue("hasTextInTitle", !!this.title);
36865
- };
36866
37070
  PanelModel.prototype.onSurveyLoad = function () {
36867
37071
  _super.prototype.onSurveyLoad.call(this);
36868
37072
  this.onIndentChanged();
36869
- this.calcHasTextInTitle();
36870
37073
  };
36871
37074
  PanelModel.prototype.onSetData = function () {
36872
37075
  _super.prototype.onSetData.call(this);
36873
37076
  this.onIndentChanged();
36874
37077
  this.calcHasTextInTitle();
36875
37078
  };
36876
- Object.defineProperty(PanelModel.prototype, "cssHeader", {
36877
- get: function () {
36878
- return new CssClassBuilder()
36879
- .append(this.cssClasses.panel.header)
36880
- .append(this.cssClasses.panel.headerHidden, !this.hasTextInTitle &&
36881
- !this.hasDescription &&
36882
- this.isDesignMode).toString();
36883
- },
36884
- enumerable: false,
36885
- configurable: true
36886
- });
36887
37079
  Object.defineProperty(PanelModel.prototype, "isPanel", {
36888
37080
  get: function () {
36889
37081
  return true;
@@ -37022,7 +37214,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
37022
37214
  var _this = this;
37023
37215
  var locTitleValue = _super.prototype.createLocTitleProperty.call(this);
37024
37216
  locTitleValue.onGetTextCallback = function (text) {
37025
- if (!text && (_this.state !== "default" || (_this.isDesignMode && _this.isDefaultV2Theme && _this.isInteractiveDesignElement))) {
37217
+ if (!text && (_this.state !== "default")) {
37026
37218
  text = _this.name;
37027
37219
  }
37028
37220
  return text;
@@ -37031,7 +37223,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
37031
37223
  };
37032
37224
  PanelModel.prototype.beforeSetVisibleIndex = function (index) {
37033
37225
  var visibleIndex = -1;
37034
- if (this.showNumber && (this.isDesignMode || !this.locTitle.isEmpty)) {
37226
+ if (this.showNumber && (this.isDesignMode || !this.locTitle.isEmpty || this.hasParentInQuestionIndex())) {
37035
37227
  visibleIndex = index;
37036
37228
  }
37037
37229
  this.setPropertyValue("visibleIndex", visibleIndex);
@@ -37039,14 +37231,21 @@ var panel_PanelModel = /** @class */ (function (_super) {
37039
37231
  return visibleIndex < 0 ? 0 : 1;
37040
37232
  };
37041
37233
  PanelModel.prototype.getPanelStartIndex = function (index) {
37042
- if (this.showQuestionNumbers == "off")
37234
+ if (this.showQuestionNumbers === "off")
37043
37235
  return -1;
37044
- if (this.showQuestionNumbers == "onpanel")
37236
+ if (this.showQuestionNumbers === "onpanel")
37045
37237
  return 0;
37046
37238
  return index;
37047
37239
  };
37240
+ PanelModel.prototype.hasParentInQuestionIndex = function () {
37241
+ if (this.showQuestionNumbers !== "onpanel")
37242
+ return false;
37243
+ var str = this.questionStartIndex;
37244
+ var index = str.indexOf(".");
37245
+ return index > -1 && index < str.length - 1;
37246
+ };
37048
37247
  PanelModel.prototype.isContinueNumbering = function () {
37049
- return (this.showQuestionNumbers != "off" && this.showQuestionNumbers != "onpanel");
37248
+ return this.showQuestionNumbers !== "off" && this.showQuestionNumbers !== "onpanel";
37050
37249
  };
37051
37250
  PanelModel.prototype.notifySurveyOnVisibilityChanged = function () {
37052
37251
  if (this.survey != null && !this.isLoadingFromJson) {
@@ -37185,10 +37384,7 @@ var panel_PanelModel = /** @class */ (function (_super) {
37185
37384
  };
37186
37385
  Object.defineProperty(PanelModel.prototype, "cssTitle", {
37187
37386
  get: function () {
37188
- return new CssClassBuilder()
37189
- .append(this.getCssTitle(this.cssClasses.panel))
37190
- .append(this.cssClasses.panel.titleHidden, !this.hasTextInTitle && this.isDesignMode)
37191
- .toString();
37387
+ return this.getCssTitle(this.cssClasses.panel);
37192
37388
  },
37193
37389
  enumerable: false,
37194
37390
  configurable: true
@@ -37671,6 +37867,10 @@ var page_PageModel = /** @class */ (function (_super) {
37671
37867
  PageModel.prototype.canShowTitle = function () {
37672
37868
  return this.survey && this.survey.showPageTitles;
37673
37869
  };
37870
+ PageModel.prototype.setTitleValue = function (val) {
37871
+ _super.prototype.setTitleValue.call(this, val);
37872
+ this.navigationLocStrChanged();
37873
+ };
37674
37874
  Object.defineProperty(PageModel.prototype, "navigationTitle", {
37675
37875
  /**
37676
37876
  * A caption displayed on a navigation button in the TOC or progress bar. Applies when [`showTOC`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#showTOC) is `true` or when the [progress bar is visible](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#showProgressBar), [`progressBarType`](https://surveyjs.io/form-library/documentation/surveymodel#progressBarType) is set to `"pages"`, and [`progressBarShowPageTitles`](https://surveyjs.io/form-library/documentation/surveymodel#progressBarShowPageTitles) is `true`.
@@ -37713,6 +37913,13 @@ var page_PageModel = /** @class */ (function (_super) {
37713
37913
  this.locNavigationTitle.strChanged();
37714
37914
  this.locNavigationDescription.strChanged();
37715
37915
  };
37916
+ PageModel.prototype.getMarkdownHtml = function (text, name) {
37917
+ var result = _super.prototype.getMarkdownHtml.call(this, text, name);
37918
+ if (name === "navigationTitle" && this.canShowPageNumber() && result) {
37919
+ return this.num + ". " + result;
37920
+ }
37921
+ return result;
37922
+ };
37716
37923
  Object.defineProperty(PageModel.prototype, "passed", {
37717
37924
  get: function () {
37718
37925
  return this.getPropertyValue("passed", false);
@@ -38255,24 +38462,8 @@ function tryFocusPage(survey, panel) {
38255
38462
  return true;
38256
38463
  }
38257
38464
  function createTOCListModel(survey, onAction) {
38258
- var _a;
38259
- var pagesSource = survey.questionsOnPageMode === "singlePage" ? (_a = survey.pages[0]) === null || _a === void 0 ? void 0 : _a.elements : survey.pages;
38260
- var items = (pagesSource || []).map(function (page) {
38261
- return new action_Action({
38262
- id: page.name,
38263
- locTitle: page.locNavigationTitle,
38264
- action: function () {
38265
- DomDocumentHelper.activeElementBlur();
38266
- !!onAction && onAction();
38267
- if (page instanceof page_PageModel) {
38268
- return survey.tryNavigateToPage(page);
38269
- }
38270
- return tryFocusPage(survey, page);
38271
- },
38272
- visible: new ComputedUpdater(function () { return page.isVisible && !(page["isStartPage"]); })
38273
- });
38274
- });
38275
- var selectedItem = items.filter(function (i) { return !!survey.currentPage && i.id === survey.currentPage.name; })[0] || items.filter(function (i) { return i.id === pagesSource[0].name; })[0];
38465
+ var items = getTOCItems(survey, onAction);
38466
+ var selectedItem = items.filter(function (i) { return !!survey.currentPage && i.id === survey.currentPage.name; })[0] || items[0];
38276
38467
  var listOptions = {
38277
38468
  items: items,
38278
38469
  onSelectionChanged: function (item) {
@@ -38288,10 +38479,35 @@ function createTOCListModel(survey, onAction) {
38288
38479
  var listModel = new list_ListModel(listOptions);
38289
38480
  listModel.allowSelection = false;
38290
38481
  survey.onCurrentPageChanged.add(function (s, o) {
38291
- listModel.selectedItem = items.filter(function (i) { return !!survey.currentPage && i.id === survey.currentPage.name; })[0];
38482
+ listModel.selectedItem = listModel.actions.filter(function (i) { return !!survey.currentPage && i.id === survey.currentPage.name; })[0];
38292
38483
  });
38484
+ survey.registerFunctionOnPropertyValueChanged("pages", function () {
38485
+ listModel.setItems(getTOCItems(survey, onAction));
38486
+ }, "toc");
38293
38487
  return listModel;
38294
38488
  }
38489
+ function getTOCItems(survey, onAction) {
38490
+ var _a;
38491
+ var pagesSource = survey.questionsOnPageMode === "singlePage" ? (_a = survey.pages[0]) === null || _a === void 0 ? void 0 : _a.elements : survey.pages;
38492
+ var items = (pagesSource || []).map(function (page) {
38493
+ return new action_Action({
38494
+ id: page.name,
38495
+ locTitle: page.locNavigationTitle,
38496
+ action: function () {
38497
+ DomDocumentHelper.activeElementBlur();
38498
+ !!onAction && onAction();
38499
+ if (page instanceof page_PageModel) {
38500
+ return survey.tryNavigateToPage(page);
38501
+ }
38502
+ return tryFocusPage(survey, page);
38503
+ },
38504
+ visible: new ComputedUpdater(function () {
38505
+ return page.isVisible && !(page["isStartPage"]);
38506
+ })
38507
+ });
38508
+ });
38509
+ return items;
38510
+ }
38295
38511
  function getTocRootCss(survey, isMobile) {
38296
38512
  if (isMobile === void 0) { isMobile = false; }
38297
38513
  var rootCss = surveyToc_TOCModel.RootStyle;
@@ -38362,6 +38578,7 @@ var surveyToc_TOCModel = /** @class */ (function () {
38362
38578
  configurable: true
38363
38579
  });
38364
38580
  TOCModel.prototype.dispose = function () {
38581
+ this.survey.unRegisterFunctionOnPropertyValueChanged("pages", "toc");
38365
38582
  this.popupModel.dispose();
38366
38583
  this.listModel.dispose();
38367
38584
  };
@@ -39104,6 +39321,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
39104
39321
  */
39105
39322
  _this.jsonErrors = null;
39106
39323
  _this.cssValue = null;
39324
+ _this._isLazyRenderingSuspended = false;
39107
39325
  /**
39108
39326
  * Specifies whether to hide validation errors thrown by the Required validation in the UI.
39109
39327
  *
@@ -39140,6 +39358,7 @@ var survey_SurveyModel = /** @class */ (function (_super) {
39140
39358
  _this.onResize = new EventBase();
39141
39359
  _this.isCurrentPageRendering = true;
39142
39360
  _this.isCurrentPageRendered = undefined;
39361
+ _this.skeletonHeight = undefined;
39143
39362
  _this.isTriggerIsRunning = false;
39144
39363
  _this.triggerValues = null;
39145
39364
  _this.triggerKeys = null;
@@ -39626,22 +39845,29 @@ var survey_SurveyModel = /** @class */ (function (_super) {
39626
39845
  enumerable: false,
39627
39846
  configurable: true
39628
39847
  });
39629
- SurveyModel.prototype.disableLazyRenderingBeforeElement = function (el) {
39630
- if (this.isDesignMode) {
39631
- var page = this.getPageByElement(el);
39632
- var index = this.pages.indexOf(page);
39633
- for (var i = index; i >= 0; i--) {
39634
- var currentPage = this.pages[i];
39635
- currentPage.disableLazyRenderingBeforeElement(currentPage == page ? el : undefined);
39636
- }
39637
- }
39848
+ Object.defineProperty(SurveyModel.prototype, "isLazyRenderingSuspended", {
39849
+ get: function () {
39850
+ return this._isLazyRenderingSuspended;
39851
+ },
39852
+ enumerable: false,
39853
+ configurable: true
39854
+ });
39855
+ SurveyModel.prototype.suspendLazyRendering = function () {
39856
+ if (!this.isLazyRendering)
39857
+ return;
39858
+ this._isLazyRenderingSuspended = true;
39859
+ };
39860
+ SurveyModel.prototype.releaseLazyRendering = function () {
39861
+ if (!this.isLazyRendering)
39862
+ return;
39863
+ this._isLazyRenderingSuspended = false;
39638
39864
  };
39639
39865
  SurveyModel.prototype.updateLazyRenderingRowsOnRemovingElements = function () {
39640
39866
  if (!this.isLazyRendering)
39641
39867
  return;
39642
39868
  var page = this.currentPage;
39643
39869
  if (!!page) {
39644
- scrollElementByChildId(page.id);
39870
+ activateLazyRenderingChecks(page.id);
39645
39871
  }
39646
39872
  };
39647
39873
  Object.defineProperty(SurveyModel.prototype, "triggers", {
@@ -40874,13 +41100,20 @@ var survey_SurveyModel = /** @class */ (function (_super) {
40874
41100
  /**
40875
41101
  * Calculates a given [expression](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions) and returns a result value.
40876
41102
  * @param expression An expression to calculate.
41103
+ * @param callback A callback function that you can use to access the calculation result if the expression uses asynchronous functions.
40877
41104
  */
40878
- SurveyModel.prototype.runExpression = function (expression) {
41105
+ SurveyModel.prototype.runExpression = function (expression, callback) {
40879
41106
  if (!expression)
40880
41107
  return null;
40881
41108
  var values = this.getFilteredValues();
40882
41109
  var properties = this.getFilteredProperties();
40883
- return new ExpressionRunner(expression).run(values, properties);
41110
+ var exp = new ExpressionRunner(expression);
41111
+ var onCompleteRes = undefined;
41112
+ exp.onRunComplete = function (res) {
41113
+ onCompleteRes = res;
41114
+ callback && callback(res);
41115
+ };
41116
+ return exp.run(values, properties) || onCompleteRes;
40884
41117
  };
40885
41118
  /**
40886
41119
  * Calculates a given [expression](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions) and returns `true` or `false`.
@@ -44168,7 +44401,8 @@ var survey_SurveyModel = /** @class */ (function (_super) {
44168
44401
  this.onGetMatrixRowActions.fire(this, options);
44169
44402
  return options.actions;
44170
44403
  };
44171
- SurveyModel.prototype.scrollElementToTop = function (element, question, page, id, scrollIfVisible, scrollIntoViewOptions) {
44404
+ SurveyModel.prototype.scrollElementToTop = function (element, question, page, id, scrollIfVisible, scrollIntoViewOptions, passedRootElement) {
44405
+ var _this = this;
44172
44406
  var options = {
44173
44407
  element: element,
44174
44408
  question: question,
@@ -44178,7 +44412,25 @@ var survey_SurveyModel = /** @class */ (function (_super) {
44178
44412
  };
44179
44413
  this.onScrollingElementToTop.fire(this, options);
44180
44414
  if (!options.cancel) {
44181
- survey_element_SurveyElement.ScrollElementToTop(options.elementId, scrollIfVisible, scrollIntoViewOptions);
44415
+ var elementPage_1 = this.getPageByElement(element);
44416
+ if (this.isLazyRendering) {
44417
+ var elementsToRenderBefore = 1;
44418
+ var rootElement = settings.environment.rootElement;
44419
+ var surveyRootElement = this.rootElement || passedRootElement || rootElement;
44420
+ if (!!this.skeletonHeight && !!surveyRootElement && typeof surveyRootElement.getBoundingClientRect === "function") {
44421
+ elementsToRenderBefore = surveyRootElement.getBoundingClientRect().height / this.skeletonHeight - 1;
44422
+ }
44423
+ elementPage_1.forceRenderElement(element, function () {
44424
+ _this.suspendLazyRendering();
44425
+ survey_element_SurveyElement.ScrollElementToTop(options.elementId, scrollIfVisible, scrollIntoViewOptions, function () {
44426
+ _this.releaseLazyRendering();
44427
+ activateLazyRenderingChecks(elementPage_1.id);
44428
+ });
44429
+ }, elementsToRenderBefore);
44430
+ }
44431
+ else {
44432
+ survey_element_SurveyElement.ScrollElementToTop(options.elementId, scrollIfVisible, scrollIntoViewOptions);
44433
+ }
44182
44434
  }
44183
44435
  };
44184
44436
  /**
@@ -45816,13 +46068,15 @@ var survey_SurveyModel = /** @class */ (function (_super) {
45816
46068
  return this.processText(options.html, true);
45817
46069
  };
45818
46070
  SurveyModel.prototype.processText = function (text, returnDisplayValue) {
45819
- return this.processTextEx(text, returnDisplayValue, false).text;
46071
+ return this.processTextEx({ text: text, returnDisplayValue: returnDisplayValue, doEncoding: false }).text;
45820
46072
  };
45821
- SurveyModel.prototype.processTextEx = function (text, returnDisplayValue, doEncoding) {
45822
- var res = {
45823
- text: this.processTextCore(text, returnDisplayValue, doEncoding),
45824
- hasAllValuesOnLastRun: true,
45825
- };
46073
+ SurveyModel.prototype.processTextEx = function (params) {
46074
+ var doEncoding = params.doEncoding === undefined ? settings.web.encodeUrlParams : params.doEncoding;
46075
+ var text = params.text;
46076
+ if (params.runAtDesign || !this.isDesignMode) {
46077
+ text = this.textPreProcessor.process(text, params.returnDisplayValue === true, doEncoding);
46078
+ }
46079
+ var res = { text: text, hasAllValuesOnLastRun: true };
45826
46080
  res.hasAllValuesOnLastRun = this.textPreProcessor.hasAllValuesOnLastRun;
45827
46081
  return res;
45828
46082
  };
@@ -45840,12 +46094,6 @@ var survey_SurveyModel = /** @class */ (function (_super) {
45840
46094
  enumerable: false,
45841
46095
  configurable: true
45842
46096
  });
45843
- SurveyModel.prototype.processTextCore = function (text, returnDisplayValue, doEncoding) {
45844
- if (doEncoding === void 0) { doEncoding = false; }
45845
- if (this.isDesignMode)
45846
- return text;
45847
- return this.textPreProcessor.process(text, returnDisplayValue, doEncoding);
45848
- };
45849
46097
  SurveyModel.prototype.getSurveyMarkdownHtml = function (element, text, name) {
45850
46098
  var options = {
45851
46099
  element: element,
@@ -48080,7 +48328,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48080
48328
  * }
48081
48329
  * ```
48082
48330
  *
48083
- * To enable Markdown support for the `text` property, implement Markdown-to-HTML conversion in the [onTextMarkdown](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onTextMarkdown) event handler. For an example, refer to the following demo: [Convert Markdown to HTML with Showdown](https://surveyjs.io/form-library/examples/edit-survey-questions-markdown/).
48331
+ * To enable Markdown support for the `text` property, implement Markdown-to-HTML conversion in the [`onTextMarkdown`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onTextMarkdown) event handler. For an example, refer to the following demo: [Convert Markdown to HTML with markdown-it](https://surveyjs.io/form-library/examples/edit-survey-questions-markdown/).
48084
48332
  *
48085
48333
  * If you add custom properties, refer to the following help topic to learn how to serialize them into JSON: [Add Custom Properties to Property Grid](https://surveyjs.io/survey-creator/documentation/property-grid#add-custom-properties-to-the-property-grid).
48086
48334
  *
@@ -48116,7 +48364,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48116
48364
  this.isLockVisibleChoices = !!question && question.name === val;
48117
48365
  if (!!question && question.name !== val) {
48118
48366
  question.removeDependedQuestion(this);
48119
- if (this.isDesignMode && !this.isLoadingFromJson && !!val) {
48367
+ if (this.isInDesignMode && !this.isLoadingFromJson && !!val) {
48120
48368
  this.setPropertyValue("choicesFromQuestion", undefined);
48121
48369
  }
48122
48370
  }
@@ -48463,8 +48711,8 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48463
48711
  };
48464
48712
  Object.defineProperty(QuestionSelectBase.prototype, "isAddDefaultItems", {
48465
48713
  get: function () {
48466
- return settings.showDefaultItemsInCreatorV2 && this.isDesignModeV2 &&
48467
- !this.customWidget && !this.isContentElement;
48714
+ return settings.showDefaultItemsInCreatorV2 && this.isInDesignModeV2 &&
48715
+ !this.customWidget;
48468
48716
  },
48469
48717
  enumerable: false,
48470
48718
  configurable: true
@@ -48590,7 +48838,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48590
48838
  });
48591
48839
  Object.defineProperty(QuestionSelectBase.prototype, "isEmptyActiveChoicesInDesign", {
48592
48840
  get: function () {
48593
- return this.isDesignModeV2 && (this.hasChoicesUrl || this.isMessagePanelVisible);
48841
+ return this.isInDesignModeV2 && (this.hasChoicesUrl || this.isMessagePanelVisible);
48594
48842
  },
48595
48843
  enumerable: false,
48596
48844
  configurable: true
@@ -48630,7 +48878,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48630
48878
  return !!question && question.isValueArray ? question : null;
48631
48879
  };
48632
48880
  QuestionSelectBase.prototype.getChoicesFromArrayQuestion = function (question) {
48633
- if (this.isDesignMode)
48881
+ if (this.isInDesignMode)
48634
48882
  return [];
48635
48883
  var val = question.value;
48636
48884
  if (!Array.isArray(val))
@@ -48655,7 +48903,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48655
48903
  return keys.length > 0 ? keys[0] : undefined;
48656
48904
  };
48657
48905
  QuestionSelectBase.prototype.getChoicesFromSelectQuestion = function (question) {
48658
- if (this.isDesignMode)
48906
+ if (this.isInDesignMode)
48659
48907
  return [];
48660
48908
  var res = [];
48661
48909
  var isSelected = this.choicesFromQuestionMode == "selected"
@@ -48830,7 +49078,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48830
49078
  };
48831
49079
  QuestionSelectBase.prototype.runChoicesByUrl = function () {
48832
49080
  this.updateIsUsingRestful();
48833
- if (!this.choicesByUrl || this.isLoadingFromJson || this.isRunningChoices || this.isDesignModeV2)
49081
+ if (!this.choicesByUrl || this.isLoadingFromJson || this.isRunningChoices || this.isInDesignModeV2)
48834
49082
  return;
48835
49083
  var processor = this.surveyImpl
48836
49084
  ? this.surveyImpl.getTextProcessor()
@@ -48998,7 +49246,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
48998
49246
  return !choices || choices.length > 0;
48999
49247
  };
49000
49248
  QuestionSelectBase.prototype.sortVisibleChoices = function (array) {
49001
- if (this.isDesignMode)
49249
+ if (this.isInDesignMode)
49002
49250
  return array;
49003
49251
  var order = this.choicesOrder.toLowerCase();
49004
49252
  if (order == "asc")
@@ -49223,7 +49471,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
49223
49471
  });
49224
49472
  Object.defineProperty(QuestionSelectBase.prototype, "headItems", {
49225
49473
  get: function () {
49226
- var count = (this.separateSpecialChoices || this.isDesignMode) ? this.headItemsCount : 0;
49474
+ var count = (this.separateSpecialChoices || this.isInDesignMode) ? this.headItemsCount : 0;
49227
49475
  var res = [];
49228
49476
  for (var i = 0; i < count; i++) {
49229
49477
  if (this.renderedChoices[i]) {
@@ -49237,7 +49485,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
49237
49485
  });
49238
49486
  Object.defineProperty(QuestionSelectBase.prototype, "footItems", {
49239
49487
  get: function () {
49240
- var count = (this.separateSpecialChoices || this.isDesignMode) ? this.footItemsCount : 0;
49488
+ var count = (this.separateSpecialChoices || this.isInDesignMode) ? this.footItemsCount : 0;
49241
49489
  var res = [];
49242
49490
  var items = this.renderedChoices;
49243
49491
  for (var i = 0; i < count; i++) {
@@ -49284,7 +49532,7 @@ var question_baseselect_QuestionSelectBase = /** @class */ (function (_super) {
49284
49532
  var columns = [];
49285
49533
  var colCount = this.getCurrentColCount();
49286
49534
  if (this.hasColumns && this.renderedChoices.length > 0) {
49287
- var choicesToBuildColumns = (!this.separateSpecialChoices && !this.isDesignMode) ?
49535
+ var choicesToBuildColumns = (!this.separateSpecialChoices && !this.isInDesignMode) ?
49288
49536
  this.renderedChoices : this.dataChoices;
49289
49537
  if (settings.showItemsInOrder == "column") {
49290
49538
  var prevIndex = 0;
@@ -51920,11 +52168,16 @@ var question_matrix_MatrixRowModel = /** @class */ (function (_super) {
51920
52168
  return MatrixRowModel;
51921
52169
  }(base_Base));
51922
52170
 
51923
- var question_matrix_MatrixCells = /** @class */ (function () {
52171
+ var question_matrix_MatrixCells = /** @class */ (function (_super) {
52172
+ question_matrix_extends(MatrixCells, _super);
51924
52173
  function MatrixCells(cellsOwner) {
51925
- this.cellsOwner = cellsOwner;
51926
- this.values = {};
52174
+ var _this = _super.call(this) || this;
52175
+ _this.cellsOwner = cellsOwner;
52176
+ _this.values = {};
52177
+ _this.locs = {};
52178
+ return _this;
51927
52179
  }
52180
+ MatrixCells.prototype.getType = function () { return "cells"; };
51928
52181
  Object.defineProperty(MatrixCells.prototype, "isEmpty", {
51929
52182
  get: function () {
51930
52183
  return Object.keys(this.values).length == 0;
@@ -51933,78 +52186,97 @@ var question_matrix_MatrixCells = /** @class */ (function () {
51933
52186
  configurable: true
51934
52187
  });
51935
52188
  MatrixCells.prototype.valuesChanged = function () {
51936
- if (!!this.onValuesChanged) {
52189
+ if (!this.locNotification && !!this.onValuesChanged) {
51937
52190
  this.onValuesChanged();
51938
52191
  }
51939
52192
  };
51940
- MatrixCells.prototype.setCellText = function (row, column, val) {
52193
+ MatrixCells.prototype.getDefaultCellLocText = function (column) {
52194
+ return this.getCellLocCore(this.defaultRowValue, column);
52195
+ };
52196
+ MatrixCells.prototype.getCellDisplayLocText = function (row, column) {
52197
+ return this.getCellLocCore(row, column);
52198
+ };
52199
+ MatrixCells.prototype.getCellLocCore = function (row, col) {
52200
+ var _this = this;
51941
52201
  row = this.getCellRowColumnValue(row, this.rows);
51942
- column = this.getCellRowColumnValue(column, this.columns);
51943
- if (!row || !column)
51944
- return;
51945
- if (val) {
51946
- if (!this.values[row])
51947
- this.values[row] = {};
51948
- if (!this.values[row][column])
51949
- this.values[row][column] = this.createString();
51950
- this.values[row][column].text = val;
52202
+ col = this.getCellRowColumnValue(col, this.columns);
52203
+ if (helpers_Helpers.isValueEmpty(row) || helpers_Helpers.isValueEmpty(col))
52204
+ return null;
52205
+ if (!this.locs[row]) {
52206
+ this.locs[row] = {};
51951
52207
  }
51952
- else {
51953
- if (this.values[row] && this.values[row][column]) {
51954
- var loc = this.values[row][column];
51955
- loc.text = "";
51956
- if (loc.isEmpty) {
51957
- delete this.values[row][column];
51958
- if (Object.keys(this.values[row]).length == 0) {
51959
- delete this.values[row];
52208
+ var res = this.locs[row][col];
52209
+ if (!res) {
52210
+ res = this.createString();
52211
+ res.setJson(this.getCellLocData(row, col));
52212
+ res.onGetTextCallback = function (str) {
52213
+ if (!str) {
52214
+ var column = itemvalue_ItemValue.getItemByValue(_this.columns, col);
52215
+ if (column) {
52216
+ return column.locText.getJson() || column.value;
51960
52217
  }
51961
52218
  }
51962
- }
52219
+ return str;
52220
+ };
52221
+ res.onStrChanged = function (oldValue, newValue) {
52222
+ _this.updateValues(row, col, newValue);
52223
+ };
52224
+ this.locs[row][col] = res;
51963
52225
  }
51964
- this.valuesChanged();
52226
+ return res;
51965
52227
  };
51966
- MatrixCells.prototype.setDefaultCellText = function (column, val) {
51967
- this.setCellText(settings.matrix.defaultRowName, column, val);
52228
+ Object.defineProperty(MatrixCells.prototype, "defaultRowValue", {
52229
+ get: function () { return settings.matrix.defaultRowName; },
52230
+ enumerable: false,
52231
+ configurable: true
52232
+ });
52233
+ MatrixCells.prototype.getCellLocData = function (row, col) {
52234
+ var data = this.getCellLocDataFromValue(row, col);
52235
+ if (data)
52236
+ return data;
52237
+ return this.getCellLocDataFromValue(this.defaultRowValue, col);
51968
52238
  };
51969
- MatrixCells.prototype.getCellLocText = function (row, column) {
51970
- row = this.getCellRowColumnValue(row, this.rows);
51971
- column = this.getCellRowColumnValue(column, this.columns);
51972
- if (!row || !column)
51973
- return null;
52239
+ MatrixCells.prototype.getCellLocDataFromValue = function (row, column) {
51974
52240
  if (!this.values[row])
51975
52241
  return null;
51976
52242
  if (!this.values[row][column])
51977
52243
  return null;
51978
52244
  return this.values[row][column];
51979
52245
  };
51980
- MatrixCells.prototype.getDefaultCellLocText = function (column, val) {
51981
- return this.getCellLocText(settings.matrix.defaultRowName, column);
52246
+ MatrixCells.prototype.getCellText = function (row, column) {
52247
+ var loc = this.getCellLocCore(row, column);
52248
+ return loc ? loc.calculatedText : null;
51982
52249
  };
51983
- MatrixCells.prototype.getCellDisplayLocText = function (row, column) {
51984
- var cellText = this.getCellLocText(row, column);
51985
- if (cellText && !cellText.isEmpty)
51986
- return cellText;
51987
- cellText = this.getCellLocText(settings.matrix.defaultRowName, column);
51988
- if (cellText && !cellText.isEmpty)
51989
- return cellText;
51990
- if (typeof column == "number") {
51991
- column =
51992
- column >= 0 && column < this.columns.length
51993
- ? this.columns[column]
51994
- : null;
52250
+ MatrixCells.prototype.setCellText = function (row, column, val) {
52251
+ var loc = this.getCellLocCore(row, column);
52252
+ if (loc) {
52253
+ loc.text = val;
51995
52254
  }
51996
- if (column && column.locText)
51997
- return column.locText;
51998
- return null;
51999
52255
  };
52000
- MatrixCells.prototype.getCellText = function (row, column) {
52001
- var loc = this.getCellLocText(row, column);
52002
- return loc ? loc.calculatedText : null;
52256
+ MatrixCells.prototype.updateValues = function (row, column, val) {
52257
+ if (val) {
52258
+ if (!this.values[row])
52259
+ this.values[row] = {};
52260
+ this.values[row][column] = val;
52261
+ this.valuesChanged();
52262
+ }
52263
+ else {
52264
+ if (this.values[row] && this.values[row][column]) {
52265
+ delete this.values[row][column];
52266
+ if (Object.keys(this.values[row]).length == 0) {
52267
+ delete this.values[row];
52268
+ }
52269
+ this.valuesChanged();
52270
+ }
52271
+ }
52003
52272
  };
52004
52273
  MatrixCells.prototype.getDefaultCellText = function (column) {
52005
- var loc = this.getCellLocText(settings.matrix.defaultRowName, column);
52274
+ var loc = this.getCellLocCore(this.defaultRowValue, column);
52006
52275
  return loc ? loc.calculatedText : null;
52007
52276
  };
52277
+ MatrixCells.prototype.setDefaultCellText = function (column, val) {
52278
+ this.setCellText(this.defaultRowValue, column, val);
52279
+ };
52008
52280
  MatrixCells.prototype.getCellDisplayText = function (row, column) {
52009
52281
  var loc = this.getCellDisplayLocText(row, column);
52010
52282
  return loc ? loc.calculatedText : null;
@@ -52038,18 +52310,22 @@ var question_matrix_MatrixCells = /** @class */ (function () {
52038
52310
  MatrixCells.prototype.getJson = function () {
52039
52311
  if (this.isEmpty)
52040
52312
  return null;
52313
+ var defaultRow = this.values[this.defaultRowValue];
52041
52314
  var res = {};
52042
52315
  for (var row in this.values) {
52043
52316
  var resRow = {};
52044
52317
  var rowValues = this.values[row];
52045
52318
  for (var col in rowValues) {
52046
- resRow[col] = rowValues[col].getJson();
52319
+ if (row === this.defaultRowValue || !defaultRow || defaultRow[col] !== rowValues[col]) {
52320
+ resRow[col] = rowValues[col];
52321
+ }
52047
52322
  }
52048
52323
  res[row] = resRow;
52049
52324
  }
52050
52325
  return res;
52051
52326
  };
52052
52327
  MatrixCells.prototype.setJson = function (value) {
52328
+ var _this = this;
52053
52329
  this.values = {};
52054
52330
  if (!!value) {
52055
52331
  for (var row in value) {
@@ -52060,21 +52336,23 @@ var question_matrix_MatrixCells = /** @class */ (function () {
52060
52336
  for (var col in rowValues) {
52061
52337
  if (col == "pos")
52062
52338
  continue;
52063
- var loc = this.createString();
52064
- loc.setJson(rowValues[col]);
52065
- this.values[row][col] = loc;
52339
+ this.values[row][col] = rowValues[col];
52066
52340
  }
52067
52341
  }
52068
52342
  }
52343
+ this.locNotification = true;
52344
+ this.runFuncOnLocs(function (row, col, loc) { return loc.setJson(_this.getCellLocData(row, col)); });
52345
+ this.locNotification = false;
52069
52346
  this.valuesChanged();
52070
52347
  };
52071
52348
  MatrixCells.prototype.locStrsChanged = function () {
52072
- if (this.isEmpty)
52073
- return;
52074
- for (var row in this.values) {
52075
- var rowValues = this.values[row];
52349
+ this.runFuncOnLocs(function (row, col, loc) { return loc.strChanged(); });
52350
+ };
52351
+ MatrixCells.prototype.runFuncOnLocs = function (func) {
52352
+ for (var row in this.locs) {
52353
+ var rowValues = this.locs[row];
52076
52354
  for (var col in rowValues) {
52077
- rowValues[col].strChanged();
52355
+ func(row, col, rowValues[col]);
52078
52356
  }
52079
52357
  }
52080
52358
  };
@@ -52082,7 +52360,7 @@ var question_matrix_MatrixCells = /** @class */ (function () {
52082
52360
  return new localizablestring_LocalizableString(this.cellsOwner, true);
52083
52361
  };
52084
52362
  return MatrixCells;
52085
- }());
52363
+ }(base_Base));
52086
52364
 
52087
52365
  /**
52088
52366
  * A class that describes the Single-Select Matrix question type.
@@ -53043,6 +53321,7 @@ var question_text_QuestionTextModel = /** @class */ (function (_super) {
53043
53321
  _this.updateRemainingCharacterCounter(event.target.value);
53044
53322
  };
53045
53323
  _this.onKeyUp = function (event) {
53324
+ _this.updateDateValidationMessage(event);
53046
53325
  if (_this.isInputTextUpdate) {
53047
53326
  if (!_this._isWaitingForEnter || event.keyCode === 13) {
53048
53327
  _this.updateValueOnEvent(event);
@@ -53057,7 +53336,6 @@ var question_text_QuestionTextModel = /** @class */ (function (_super) {
53057
53336
  _this.updateRemainingCharacterCounter(event.target.value);
53058
53337
  };
53059
53338
  _this.onKeyDown = function (event) {
53060
- _this.updateDateValidationMessage(event);
53061
53339
  _this.onKeyDownPreprocess && _this.onKeyDownPreprocess(event);
53062
53340
  if (_this.isInputTextUpdate) {
53063
53341
  _this._isWaitingForEnter = event.keyCode === 229;
@@ -54611,7 +54889,7 @@ var question_multipletext_QuestionMultipleTextModel = /** @class */ (function (_
54611
54889
  * }
54612
54890
  * ```
54613
54891
  *
54614
- * To enable Markdown support for the `title` property, implement Markdown-to-HTML conversion in the [`onTextMarkdown`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onTextMarkdown) event handler. For an example, refer to the following demo: [Convert Markdown to HTML with Showdown](https://surveyjs.io/form-library/examples/edit-survey-questions-markdown/).
54892
+ * To enable Markdown support for the `title` property, implement Markdown-to-HTML conversion in the [`onTextMarkdown`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onTextMarkdown) event handler. For an example, refer to the following demo: [Convert Markdown to HTML with markdown-it](https://surveyjs.io/form-library/examples/edit-survey-questions-markdown/).
54615
54893
  * @see itemTitleWidth
54616
54894
  * @see addItem
54617
54895
  */
@@ -57126,19 +57404,31 @@ var choices_DragDropChoices = /** @class */ (function (_super) {
57126
57404
  return false;
57127
57405
  return true;
57128
57406
  };
57129
- DragDropChoices.prototype.calculateIsBottom = function (clientY) {
57130
- var choices = this.getVisibleChoices();
57131
- return (choices.indexOf(this.dropTarget) - choices.indexOf(this.draggedElement) >
57132
- 0);
57407
+ DragDropChoices.prototype.isDropTargetDoesntChanged = function (newIsBottom) {
57408
+ return (this.dropTarget === this.prevDropTarget && newIsBottom === this.isBottom);
57409
+ };
57410
+ DragDropChoices.prototype.calculateIsBottom = function (clientY, dropTargetNode) {
57411
+ var rect = dropTargetNode.getBoundingClientRect();
57412
+ return clientY >= rect.y + rect.height / 2;
57133
57413
  };
57134
57414
  DragDropChoices.prototype.afterDragOver = function (dropTargetNode) {
57135
- if (this.isDropTargetDoesntChanged(this.isBottom))
57136
- return;
57415
+ //if (this.isDropTargetDoesntChanged(this.isBottom)) return;
57137
57416
  var choices = this.getVisibleChoices();
57138
57417
  var dropTargetIndex = choices.indexOf(this.dropTarget);
57139
57418
  var draggedElementIndex = choices.indexOf(this.draggedElement);
57140
- choices.splice(draggedElementIndex, 1);
57141
- choices.splice(dropTargetIndex, 0, this.draggedElement);
57419
+ if (draggedElementIndex < dropTargetIndex && this.isBottom === true) {
57420
+ // drag "down"
57421
+ choices.splice(draggedElementIndex, 1);
57422
+ choices.splice(dropTargetIndex, 0, this.draggedElement);
57423
+ }
57424
+ else if (draggedElementIndex > dropTargetIndex && this.isBottom === false) {
57425
+ // drag "up"
57426
+ choices.splice(dropTargetIndex, 1);
57427
+ choices.splice(draggedElementIndex, 0, this.dropTarget);
57428
+ }
57429
+ else {
57430
+ return;
57431
+ }
57142
57432
  if (this.parentElement.getType() === "imagepicker")
57143
57433
  return;
57144
57434
  if (draggedElementIndex !== dropTargetIndex) {
@@ -57298,10 +57588,9 @@ var ranking_choices_DragDropRankingChoices = /** @class */ (function (_super) {
57298
57588
  };
57299
57589
  DragDropRankingChoices.prototype.calculateIsBottom = function (clientY, dropTargetNode) {
57300
57590
  if (this.dropTarget instanceof itemvalue_ItemValue && this.draggedElement !== this.dropTarget) {
57301
- var rect = dropTargetNode.getBoundingClientRect();
57302
- return clientY >= rect.y + rect.height / 2;
57591
+ return _super.prototype.calculateIsBottom.call(this, clientY, dropTargetNode);
57303
57592
  }
57304
- return _super.prototype.calculateIsBottom.call(this, clientY);
57593
+ return false;
57305
57594
  };
57306
57595
  DragDropRankingChoices.prototype.getIndices = function (model, fromChoicesArray, toChoicesArray) {
57307
57596
  var fromIndex = fromChoicesArray.indexOf(this.draggedElement);
@@ -57659,6 +57948,7 @@ var question_ranking_QuestionRankingModel = /** @class */ (function (_super) {
57659
57948
  .append(this.cssClasses.rootSelectToRankEmptyValueMod, this.isEmpty())
57660
57949
  .append(this.cssClasses.rootSelectToRankAlignHorizontal, this.selectToRankEnabled && this.renderedSelectToRankAreasLayout === "horizontal")
57661
57950
  .append(this.cssClasses.rootSelectToRankAlignVertical, this.selectToRankEnabled && this.renderedSelectToRankAreasLayout === "vertical")
57951
+ .append(this.cssClasses.rootSelectToRankSwapAreas, this.selectToRankEnabled && this.renderedSelectToRankAreasLayout === "horizontal" && this.selectToRankSwapAreas)
57662
57952
  .toString();
57663
57953
  },
57664
57954
  enumerable: false,
@@ -57753,6 +58043,11 @@ var question_ranking_QuestionRankingModel = /** @class */ (function (_super) {
57753
58043
  this.updateRankingChoices();
57754
58044
  this.releaseAnimations();
57755
58045
  };
58046
+ QuestionRankingModel.prototype.updateValueFromSurvey = function (newValue, clearData) {
58047
+ _super.prototype.updateValueFromSurvey.call(this, newValue, clearData);
58048
+ if (newValue)
58049
+ this.isValueSetByUser = true;
58050
+ };
57756
58051
  QuestionRankingModel.prototype.addToValueByVisibleChoices = function () {
57757
58052
  var newValue = this.value.slice();
57758
58053
  this.visibleChoices.forEach(function (choice) {
@@ -58080,6 +58375,16 @@ var question_ranking_QuestionRankingModel = /** @class */ (function (_super) {
58080
58375
  enumerable: false,
58081
58376
  configurable: true
58082
58377
  });
58378
+ Object.defineProperty(QuestionRankingModel.prototype, "selectToRankSwapAreas", {
58379
+ get: function () {
58380
+ return this.getPropertyValue("selectToRankSwapAreas", false);
58381
+ },
58382
+ set: function (val) {
58383
+ this.setPropertyValue("selectToRankSwapAreas", val);
58384
+ },
58385
+ enumerable: false,
58386
+ configurable: true
58387
+ });
58083
58388
  Object.defineProperty(QuestionRankingModel.prototype, "selectToRankAreasLayout", {
58084
58389
  /**
58085
58390
  * Specifies the layout of the ranked and unranked areas. Applies when [`selectToRankEnabled`](https://surveyjs.io/form-library/documentation/api-reference/ranking-question-model#selectToRankEnabled) is `true`.
@@ -58209,6 +58514,13 @@ Serializer.addClass("ranking", [
58209
58514
  visible: true,
58210
58515
  isSerializable: true,
58211
58516
  },
58517
+ {
58518
+ name: "selectToRankSwapAreas:switch",
58519
+ default: false,
58520
+ visible: false,
58521
+ isSerializable: true,
58522
+ dependsOn: "selectToRankEnabled",
58523
+ },
58212
58524
  {
58213
58525
  name: "selectToRankAreasLayout",
58214
58526
  default: "horizontal",
@@ -60446,8 +60758,14 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
60446
60758
  }
60447
60759
  _this.createRenderedRateItems();
60448
60760
  });
60449
- _this.createLocalizableString("minRateDescription", _this, true);
60450
- _this.createLocalizableString("maxRateDescription", _this, true);
60761
+ _this.createLocalizableString("minRateDescription", _this, true)
60762
+ .onStringChanged.add(function (sender, options) {
60763
+ _this.hasMinRateDescription = !sender.isEmpty;
60764
+ });
60765
+ _this.createLocalizableString("maxRateDescription", _this, true)
60766
+ .onStringChanged.add(function (sender, options) {
60767
+ _this.hasMaxRateDescription = !sender.isEmpty;
60768
+ });
60451
60769
  _this.initPropertyDependencies();
60452
60770
  return _this;
60453
60771
  }
@@ -60459,8 +60777,6 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
60459
60777
  };
60460
60778
  QuestionRatingModel.prototype.endLoadingFromJson = function () {
60461
60779
  _super.prototype.endLoadingFromJson.call(this);
60462
- this.hasMinRateDescription = !!this.minRateDescription;
60463
- this.hasMaxRateDescription = !!this.maxRateDescription;
60464
60780
  if (this.jsonObj.rateMin !== undefined && this.jsonObj.rateCount !== undefined && this.jsonObj.rateMax === undefined) {
60465
60781
  this.updateRateMax();
60466
60782
  }
@@ -60562,7 +60878,7 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
60562
60878
  *
60563
60879
  * If you add custom properties, refer to the following help topic to learn how to serialize them into JSON: [Add Custom Properties to Property Grid](https://surveyjs.io/survey-creator/documentation/property-grid#add-custom-properties-to-the-property-grid).
60564
60880
  *
60565
- * To enable Markdown support for the `text` property, implement Markdown-to-HTML conversion in the [onTextMarkdown](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onTextMarkdown) event handler. For an example, refer to the following demo: [Convert Markdown to HTML with Showdown](https://surveyjs.io/form-library/examples/edit-survey-questions-markdown/).
60881
+ * To enable Markdown support for the `text` property, implement Markdown-to-HTML conversion in the [onTextMarkdown](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onTextMarkdown) event handler. For an example, refer to the following demo: [Convert Markdown to HTML with markdown-it](https://surveyjs.io/form-library/examples/edit-survey-questions-markdown/).
60566
60882
  *
60567
60883
  * If you need to specify only the `value` property, you can set the `rateValues` property to an array of numbers, for example, `[ 3, 6, 10 ]`. These values are both saved in survey results and used as display text.
60568
60884
  *
@@ -60718,6 +61034,7 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
60718
61034
  }
60719
61035
  if (this.rateType == "smileys" && rateValues.length > 10)
60720
61036
  rateValues = rateValues.slice(0, 10);
61037
+ this.visibleChoicesValue = rateValues.map(function (i, idx) { return _this.getRatingItemValue(i, idx); });
60721
61038
  this.renderedRateItems = rateValues.map(function (v, i) {
60722
61039
  var renderedItem = null;
60723
61040
  if (_this.displayRateDescriptionsAsExtremeItems) {
@@ -60737,14 +61054,7 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
60737
61054
  var step = this.rateStep;
60738
61055
  while (value <= this.rateMax &&
60739
61056
  res.length < settings.ratingMaximumRateValueCount) {
60740
- var description = void 0;
60741
- if (value === this.rateMin) {
60742
- description = this.minRateDescription && this.locMinRateDescription;
60743
- }
60744
- if (value === this.rateMax || res.length === settings.ratingMaximumRateValueCount) {
60745
- description = this.maxRateDescription && this.locMaxRateDescription;
60746
- }
60747
- var item = new RatingItemValue(value, description);
61057
+ var item = new itemvalue_ItemValue(value);
60748
61058
  item.locOwner = this;
60749
61059
  item.ownerPropertyName = "rateValues";
60750
61060
  res.push(item);
@@ -60752,6 +61062,22 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
60752
61062
  }
60753
61063
  return res;
60754
61064
  };
61065
+ QuestionRatingModel.prototype.getRatingItemValue = function (item, index) {
61066
+ if (!item)
61067
+ return null;
61068
+ var value = item.value;
61069
+ var description;
61070
+ if (value === this.rateMin) {
61071
+ description = this.minRateDescription && this.locMinRateDescription;
61072
+ }
61073
+ if (value === this.rateMax || index === settings.ratingMaximumRateValueCount) {
61074
+ description = this.maxRateDescription && this.locMaxRateDescription;
61075
+ }
61076
+ var newItem = new RatingItemValue(value, description);
61077
+ newItem.locOwner = item.locOwner;
61078
+ newItem.ownerPropertyName = item.ownerPropertyName;
61079
+ return newItem;
61080
+ };
60755
61081
  QuestionRatingModel.prototype.correctValue = function (value, step) {
60756
61082
  if (!value)
60757
61083
  return value;
@@ -60806,7 +61132,6 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
60806
61132
  },
60807
61133
  set: function (val) {
60808
61134
  this.setLocalizableStringText("minRateDescription", val);
60809
- this.hasMinRateDescription = !!this.minRateDescription;
60810
61135
  },
60811
61136
  enumerable: false,
60812
61137
  configurable: true
@@ -60831,7 +61156,6 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
60831
61156
  },
60832
61157
  set: function (val) {
60833
61158
  this.setLocalizableStringText("maxRateDescription", val);
60834
- this.hasMaxRateDescription = !!this.maxRateDescription;
60835
61159
  },
60836
61160
  enumerable: false,
60837
61161
  configurable: true
@@ -61199,7 +61523,7 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
61199
61523
  };
61200
61524
  Object.defineProperty(QuestionRatingModel.prototype, "visibleChoices", {
61201
61525
  get: function () {
61202
- return this.visibleRateValues;
61526
+ return this.visibleChoicesValue;
61203
61527
  },
61204
61528
  enumerable: false,
61205
61529
  configurable: true
@@ -61251,6 +61575,11 @@ var question_rating_QuestionRatingModel = /** @class */ (function (_super) {
61251
61575
  enumerable: false,
61252
61576
  configurable: true
61253
61577
  });
61578
+ QuestionRatingModel.prototype.onBlurCore = function (event) {
61579
+ var _a;
61580
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onBlur(event);
61581
+ _super.prototype.onBlurCore.call(this, event);
61582
+ };
61254
61583
  QuestionRatingModel.prototype.updateCssClasses = function (res, css) {
61255
61584
  _super.prototype.updateCssClasses.call(this, res, css);
61256
61585
  if (!!this.dropdownListModel) {
@@ -64270,6 +64599,8 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
64270
64599
  _this.updateFooterActions();
64271
64600
  });
64272
64601
  _this.registerPropertyChangedHandlers(["allowAddPanel"], function () { _this.updateNoEntriesTextDefaultLoc(); });
64602
+ _this.registerPropertyChangedHandlers(["minPanelCount"], function () { _this.onMinPanelCountChanged(); });
64603
+ _this.registerPropertyChangedHandlers(["maxPanelCount"], function () { _this.onMaxPanelCountChanged(); });
64273
64604
  return _this;
64274
64605
  }
64275
64606
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "isCompositeQuestion", {
@@ -65206,8 +65537,11 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
65206
65537
  value = [];
65207
65538
  if (value.length == this.panelCount)
65208
65539
  return;
65209
- for (var i = value.length; i < this.panelCount; i++)
65210
- value.push({});
65540
+ for (var i = value.length; i < this.panelCount; i++) {
65541
+ var panelValue = this.panels[i].getValue();
65542
+ var val = !helpers_Helpers.isValueEmpty(panelValue) ? panelValue : {};
65543
+ value.push(val);
65544
+ }
65211
65545
  if (value.length > this.panelCount) {
65212
65546
  value.splice(this.panelCount, value.length - this.panelCount);
65213
65547
  }
@@ -65230,17 +65564,18 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
65230
65564
  set: function (val) {
65231
65565
  if (val < 0)
65232
65566
  val = 0;
65233
- if (val == this.minPanelCount)
65234
- return;
65235
65567
  this.setPropertyValue("minPanelCount", val);
65236
- if (val > this.maxPanelCount)
65237
- this.maxPanelCount = val;
65238
- if (this.panelCount < val)
65239
- this.panelCount = val;
65240
65568
  },
65241
65569
  enumerable: false,
65242
65570
  configurable: true
65243
65571
  });
65572
+ QuestionPanelDynamicModel.prototype.onMinPanelCountChanged = function () {
65573
+ var val = this.minPanelCount;
65574
+ if (val > this.maxPanelCount)
65575
+ this.maxPanelCount = val;
65576
+ if (this.panelCount < val)
65577
+ this.panelCount = val;
65578
+ };
65244
65579
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "maxPanelCount", {
65245
65580
  /**
65246
65581
  * A maximum number of panels in Dynamic Panel. Users cannot add new panels if `panelCount` equals `maxPanelCount`.
@@ -65258,17 +65593,20 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
65258
65593
  return;
65259
65594
  if (val > settings.panel.maxPanelCount)
65260
65595
  val = settings.panel.maxPanelCount;
65261
- if (val == this.maxPanelCount)
65262
- return;
65263
65596
  this.setPropertyValue("maxPanelCount", val);
65264
- if (val < this.minPanelCount)
65265
- this.minPanelCount = val;
65266
- if (this.panelCount > val)
65267
- this.panelCount = val;
65597
+ this.updateFooterActions();
65268
65598
  },
65269
65599
  enumerable: false,
65270
65600
  configurable: true
65271
65601
  });
65602
+ QuestionPanelDynamicModel.prototype.onMaxPanelCountChanged = function () {
65603
+ var val = this.maxPanelCount;
65604
+ if (val < this.minPanelCount)
65605
+ this.minPanelCount = val;
65606
+ if (this.panelCount > val)
65607
+ this.panelCount = val;
65608
+ this.updateFooterActions();
65609
+ };
65272
65610
  Object.defineProperty(QuestionPanelDynamicModel.prototype, "allowAddPanel", {
65273
65611
  /**
65274
65612
  * Specifies whether users are allowed to add new panels.
@@ -66016,6 +66354,12 @@ var question_paneldynamic_QuestionPanelDynamicModel = /** @class */ (function (_
66016
66354
  QuestionPanelDynamicModel.prototype.onSurveyLoad = function () {
66017
66355
  this.template.readOnly = this.isReadOnly;
66018
66356
  this.template.onSurveyLoad();
66357
+ if (this.panelCount < this.minPanelCount) {
66358
+ this.panelCount = this.minPanelCount;
66359
+ }
66360
+ if (this.panelCount > this.maxPanelCount) {
66361
+ this.panelCount = this.maxPanelCount;
66362
+ }
66019
66363
  this.buildPanelsFirstTime();
66020
66364
  _super.prototype.onSurveyLoad.call(this);
66021
66365
  };
@@ -69928,8 +70272,8 @@ Serializer.addClass("currencymask", [
69928
70272
 
69929
70273
  var Version;
69930
70274
  var ReleaseDate;
69931
- Version = "" + "1.12.2";
69932
- ReleaseDate = "" + "2024-09-16";
70275
+ Version = "" + "1.12.4";
70276
+ ReleaseDate = "" + "2024-10-01";
69933
70277
  function checkLibraryVersion(ver, libraryName) {
69934
70278
  if (Version != ver) {
69935
70279
  var str = "survey-core has version '" + Version + "' and " + libraryName
@@ -70630,6 +70974,7 @@ var defaultStandardCss = {
70630
70974
  rootSelectToRankMod: "sv-ranking--select-to-rank",
70631
70975
  rootSelectToRankAlignVertical: "sv-ranking--select-to-rank-vertical",
70632
70976
  rootSelectToRankAlignHorizontal: "sv-ranking--select-to-rank-horizontal",
70977
+ rootSelectToRankSwapAreas: "sv-ranking--select-to-rank-swap-areas",
70633
70978
  item: "sv-ranking-item",
70634
70979
  itemContent: "sv-ranking-item__content",
70635
70980
  itemIndex: "sv-ranking-item__index",
@@ -71064,6 +71409,7 @@ var modernCss = {
71064
71409
  rootSelectToRankMod: "sv-ranking--select-to-rank",
71065
71410
  rootSelectToRankAlignVertical: "sv-ranking--select-to-rank-vertical",
71066
71411
  rootSelectToRankAlignHorizontal: "sv-ranking--select-to-rank-horizontal",
71412
+ rootSelectToRankSwapAreas: "sv-ranking--select-to-rank-swap-areas",
71067
71413
  item: "sv-ranking-item",
71068
71414
  itemContent: "sv-ranking-item__content",
71069
71415
  itemIndex: "sv-ranking-item__index",