survey-core 1.11.8 → 1.11.10

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 (254) hide show
  1. package/defaultV2.css +23 -9
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +23 -9
  4. package/defaultV2.fontless.css.map +1 -1
  5. package/defaultV2.fontless.min.css +2 -2
  6. package/defaultV2.min.css +2 -2
  7. package/i18n/arabic.js +1 -1
  8. package/i18n/arabic.min.js +1 -1
  9. package/i18n/basque.js +1 -1
  10. package/i18n/basque.min.js +1 -1
  11. package/i18n/bulgarian.js +1 -1
  12. package/i18n/bulgarian.min.js +1 -1
  13. package/i18n/catalan.js +1 -1
  14. package/i18n/catalan.min.js +1 -1
  15. package/i18n/croatian.js +1 -1
  16. package/i18n/croatian.min.js +1 -1
  17. package/i18n/czech.js +1 -1
  18. package/i18n/czech.min.js +1 -1
  19. package/i18n/danish.js +1 -1
  20. package/i18n/danish.min.js +1 -1
  21. package/i18n/dutch.js +1 -1
  22. package/i18n/dutch.min.js +1 -1
  23. package/i18n/english.js +1 -1
  24. package/i18n/english.min.js +1 -1
  25. package/i18n/estonian.js +1 -1
  26. package/i18n/estonian.min.js +1 -1
  27. package/i18n/finnish.js +1 -1
  28. package/i18n/finnish.min.js +1 -1
  29. package/i18n/french.js +1 -1
  30. package/i18n/french.min.js +1 -1
  31. package/i18n/georgian.js +1 -1
  32. package/i18n/georgian.min.js +1 -1
  33. package/i18n/german.js +1 -1
  34. package/i18n/german.min.js +1 -1
  35. package/i18n/greek.js +1 -1
  36. package/i18n/greek.min.js +1 -1
  37. package/i18n/hebrew.js +1 -1
  38. package/i18n/hebrew.min.js +1 -1
  39. package/i18n/hindi.js +1 -1
  40. package/i18n/hindi.min.js +1 -1
  41. package/i18n/hungarian.js +1 -1
  42. package/i18n/hungarian.min.js +1 -1
  43. package/i18n/icelandic.js +1 -1
  44. package/i18n/icelandic.min.js +1 -1
  45. package/i18n/index.js +1 -1
  46. package/i18n/index.min.js +1 -1
  47. package/i18n/indonesian.js +1 -1
  48. package/i18n/indonesian.min.js +1 -1
  49. package/i18n/italian.js +1 -1
  50. package/i18n/italian.min.js +1 -1
  51. package/i18n/japanese.js +1 -1
  52. package/i18n/japanese.min.js +1 -1
  53. package/i18n/kazakh.js +1 -1
  54. package/i18n/kazakh.min.js +1 -1
  55. package/i18n/korean.js +1 -1
  56. package/i18n/korean.min.js +1 -1
  57. package/i18n/latvian.js +1 -1
  58. package/i18n/latvian.min.js +1 -1
  59. package/i18n/lithuanian.js +1 -1
  60. package/i18n/lithuanian.min.js +1 -1
  61. package/i18n/macedonian.js +1 -1
  62. package/i18n/macedonian.min.js +1 -1
  63. package/i18n/malay.js +1 -1
  64. package/i18n/malay.min.js +1 -1
  65. package/i18n/nl-BE.js +1 -1
  66. package/i18n/nl-BE.min.js +1 -1
  67. package/i18n/norwegian.js +1 -1
  68. package/i18n/norwegian.min.js +1 -1
  69. package/i18n/persian.js +1 -1
  70. package/i18n/persian.min.js +1 -1
  71. package/i18n/philippines.js +1 -1
  72. package/i18n/philippines.min.js +1 -1
  73. package/i18n/polish.js +1 -1
  74. package/i18n/polish.min.js +1 -1
  75. package/i18n/portuguese-br.js +1 -1
  76. package/i18n/portuguese-br.min.js +1 -1
  77. package/i18n/portuguese.js +1 -1
  78. package/i18n/portuguese.min.js +1 -1
  79. package/i18n/romanian.js +1 -1
  80. package/i18n/romanian.min.js +1 -1
  81. package/i18n/russian.js +1 -1
  82. package/i18n/russian.min.js +1 -1
  83. package/i18n/serbian.js +1 -1
  84. package/i18n/serbian.min.js +1 -1
  85. package/i18n/simplified-chinese.js +1 -1
  86. package/i18n/simplified-chinese.min.js +1 -1
  87. package/i18n/slovak.js +1 -1
  88. package/i18n/slovak.min.js +1 -1
  89. package/i18n/spanish.js +1 -1
  90. package/i18n/spanish.min.js +1 -1
  91. package/i18n/swahili.js +1 -1
  92. package/i18n/swahili.min.js +1 -1
  93. package/i18n/swedish.js +1 -1
  94. package/i18n/swedish.min.js +1 -1
  95. package/i18n/tajik.js +1 -1
  96. package/i18n/tajik.min.js +1 -1
  97. package/i18n/telugu.js +1 -1
  98. package/i18n/telugu.min.js +1 -1
  99. package/i18n/thai.js +1 -1
  100. package/i18n/thai.min.js +1 -1
  101. package/i18n/traditional-chinese.js +1 -1
  102. package/i18n/traditional-chinese.min.js +1 -1
  103. package/i18n/turkish.js +1 -1
  104. package/i18n/turkish.min.js +1 -1
  105. package/i18n/ukrainian.js +1 -1
  106. package/i18n/ukrainian.min.js +1 -1
  107. package/i18n/urdu.js +1 -1
  108. package/i18n/urdu.min.js +1 -1
  109. package/i18n/vietnamese.js +1 -1
  110. package/i18n/vietnamese.min.js +1 -1
  111. package/i18n/welsh.js +1 -1
  112. package/i18n/welsh.min.js +1 -1
  113. package/modern.css +1 -1
  114. package/modern.fontless.css +1 -1
  115. package/modern.fontless.min.css +1 -1
  116. package/modern.min.css +1 -1
  117. package/package.json +1 -1
  118. package/plugins/bootstrap-integration.js +1 -1
  119. package/plugins/bootstrap-integration.min.js +1 -1
  120. package/plugins/bootstrap-material-integration.js +1 -1
  121. package/plugins/bootstrap-material-integration.min.js +1 -1
  122. package/survey.core.js +372 -167
  123. package/survey.core.js.map +1 -1
  124. package/survey.core.min.js +3 -3
  125. package/survey.css +1 -1
  126. package/survey.i18n.js +1 -1
  127. package/survey.i18n.min.js +1 -1
  128. package/survey.min.css +1 -1
  129. package/themes/borderless-dark-panelless.js +1 -1
  130. package/themes/borderless-dark-panelless.min.js +1 -1
  131. package/themes/borderless-dark.js +1 -1
  132. package/themes/borderless-dark.min.js +1 -1
  133. package/themes/borderless-light-panelless..js +1 -1
  134. package/themes/borderless-light-panelless..min.js +1 -1
  135. package/themes/borderless-light.js +1 -1
  136. package/themes/borderless-light.min.js +1 -1
  137. package/themes/contrast-dark-panelless.js +1 -1
  138. package/themes/contrast-dark-panelless.min.js +1 -1
  139. package/themes/contrast-dark.js +1 -1
  140. package/themes/contrast-dark.min.js +1 -1
  141. package/themes/contrast-light-panelless.js +1 -1
  142. package/themes/contrast-light-panelless.min.js +1 -1
  143. package/themes/contrast-light.js +1 -1
  144. package/themes/contrast-light.min.js +1 -1
  145. package/themes/default-dark-panelless.js +1 -1
  146. package/themes/default-dark-panelless.min.js +1 -1
  147. package/themes/default-dark.js +1 -1
  148. package/themes/default-dark.min.js +1 -1
  149. package/themes/default-light-panelless.js +1 -1
  150. package/themes/default-light-panelless.min.js +1 -1
  151. package/themes/default-light.js +1 -1
  152. package/themes/default-light.min.js +1 -1
  153. package/themes/doubleborder-dark-panelless.js +1 -1
  154. package/themes/doubleborder-dark-panelless.min.js +1 -1
  155. package/themes/doubleborder-dark.js +1 -1
  156. package/themes/doubleborder-dark.min.js +1 -1
  157. package/themes/doubleborder-light-panelles.js +1 -1
  158. package/themes/doubleborder-light-panelles.min.js +1 -1
  159. package/themes/doubleborder-light.js +1 -1
  160. package/themes/doubleborder-light.min.js +1 -1
  161. package/themes/flat-dark-panelless.js +1 -1
  162. package/themes/flat-dark-panelless.min.js +1 -1
  163. package/themes/flat-dark.js +1 -1
  164. package/themes/flat-dark.min.js +1 -1
  165. package/themes/flat-light-panelless.js +1 -1
  166. package/themes/flat-light-panelless.min.js +1 -1
  167. package/themes/flat-light.js +1 -1
  168. package/themes/flat-light.min.js +1 -1
  169. package/themes/index.js +1 -1
  170. package/themes/index.min.js +1 -1
  171. package/themes/layered-dark-panelless.js +1 -1
  172. package/themes/layered-dark-panelless.min.js +1 -1
  173. package/themes/layered-dark.js +1 -1
  174. package/themes/layered-dark.min.js +1 -1
  175. package/themes/layered-light-panelless.js +1 -1
  176. package/themes/layered-light-panelless.min.js +1 -1
  177. package/themes/layered-light.js +1 -1
  178. package/themes/layered-light.min.js +1 -1
  179. package/themes/plain-dark-panelless.js +1 -1
  180. package/themes/plain-dark-panelless.min.js +1 -1
  181. package/themes/plain-dark.js +1 -1
  182. package/themes/plain-dark.min.js +1 -1
  183. package/themes/plain-light-panelless.js +1 -1
  184. package/themes/plain-light-panelless.min.js +1 -1
  185. package/themes/plain-light.js +1 -1
  186. package/themes/plain-light.min.js +1 -1
  187. package/themes/sharp-dark-panelless.js +1 -1
  188. package/themes/sharp-dark-panelless.min.js +1 -1
  189. package/themes/sharp-dark.js +1 -1
  190. package/themes/sharp-dark.min.js +1 -1
  191. package/themes/sharp-light-panelless.js +1 -1
  192. package/themes/sharp-light-panelless.min.js +1 -1
  193. package/themes/sharp-light.js +1 -1
  194. package/themes/sharp-light.min.js +1 -1
  195. package/themes/solid-dark-panelless.js +1 -1
  196. package/themes/solid-dark-panelless.min.js +1 -1
  197. package/themes/solid-dark.js +1 -1
  198. package/themes/solid-dark.min.js +1 -1
  199. package/themes/solid-light-panelless.js +1 -1
  200. package/themes/solid-light-panelless.min.js +1 -1
  201. package/themes/solid-light.js +1 -1
  202. package/themes/solid-light.min.js +1 -1
  203. package/themes/three-dimensional-dark-panelless.js +1 -1
  204. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  205. package/themes/three-dimensional-dark.js +1 -1
  206. package/themes/three-dimensional-dark.min.js +1 -1
  207. package/themes/three-dimensional-light-panelless.js +1 -1
  208. package/themes/three-dimensional-light-panelless.min.js +1 -1
  209. package/themes/three-dimensional-light.js +1 -1
  210. package/themes/three-dimensional-light.min.js +1 -1
  211. package/ts3.4/typings/base-interfaces.d.ts +9 -0
  212. package/ts3.4/typings/dragdrop/core.d.ts +1 -0
  213. package/ts3.4/typings/dropdownListModel.d.ts +1 -0
  214. package/ts3.4/typings/expressions/expressions.d.ts +0 -3
  215. package/ts3.4/typings/helpers.d.ts +2 -0
  216. package/ts3.4/typings/jsonobject.d.ts +2 -1
  217. package/ts3.4/typings/popup-dropdown-view-model.d.ts +2 -1
  218. package/ts3.4/typings/popup.d.ts +2 -1
  219. package/ts3.4/typings/question.d.ts +2 -1
  220. package/ts3.4/typings/question_baseselect.d.ts +0 -5
  221. package/ts3.4/typings/question_custom.d.ts +8 -0
  222. package/ts3.4/typings/question_file.d.ts +7 -5
  223. package/ts3.4/typings/question_matrix.d.ts +2 -2
  224. package/ts3.4/typings/question_matrixdropdownbase.d.ts +1 -0
  225. package/ts3.4/typings/question_multipletext.d.ts +1 -0
  226. package/ts3.4/typings/question_paneldynamic.d.ts +2 -0
  227. package/ts3.4/typings/question_signaturepad.d.ts +2 -0
  228. package/ts3.4/typings/question_text.d.ts +2 -0
  229. package/ts3.4/typings/settings.d.ts +25 -0
  230. package/ts3.4/typings/survey-events-api.d.ts +26 -0
  231. package/ts3.4/typings/survey.d.ts +15 -4
  232. package/ts3.4/typings/utils/utils.d.ts +1 -0
  233. package/typings/base-interfaces.d.ts +9 -0
  234. package/typings/dragdrop/core.d.ts +1 -0
  235. package/typings/dropdownListModel.d.ts +1 -0
  236. package/typings/expressions/expressions.d.ts +0 -3
  237. package/typings/helpers.d.ts +2 -0
  238. package/typings/jsonobject.d.ts +2 -1
  239. package/typings/popup-dropdown-view-model.d.ts +2 -1
  240. package/typings/popup.d.ts +2 -1
  241. package/typings/question.d.ts +2 -1
  242. package/typings/question_baseselect.d.ts +0 -5
  243. package/typings/question_custom.d.ts +8 -0
  244. package/typings/question_file.d.ts +8 -6
  245. package/typings/question_matrix.d.ts +2 -2
  246. package/typings/question_matrixdropdownbase.d.ts +1 -0
  247. package/typings/question_multipletext.d.ts +1 -0
  248. package/typings/question_paneldynamic.d.ts +2 -0
  249. package/typings/question_signaturepad.d.ts +2 -0
  250. package/typings/question_text.d.ts +2 -0
  251. package/typings/settings.d.ts +25 -0
  252. package/typings/survey-events-api.d.ts +26 -0
  253. package/typings/survey.d.ts +15 -4
  254. package/typings/utils/utils.d.ts +1 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.8
2
+ * surveyjs - Survey JavaScript library v1.11.10
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
  */
@@ -21,6 +21,7 @@ export interface ISurveyData {
21
21
  getFilteredValues(): any;
22
22
  getFilteredProperties(): any;
23
23
  findQuestionByName(name: string): IQuestion;
24
+ getEditingSurveyElement(): Base;
24
25
  }
25
26
  export interface ITextProcessor {
26
27
  processText(text: string, returnDisplayValue: boolean): string;
@@ -162,6 +163,7 @@ export interface ISurvey extends ITextProcessor, ISurveyErrorOwner {
162
163
  elementContentVisibilityChanged(element: ISurveyElement): void;
163
164
  onCorrectQuestionAnswer(question: IQuestion, options: any): void;
164
165
  processPopupVisiblityChanged(question: IQuestion, popupModel: PopupModel, visible: boolean): void;
166
+ processOpenDropdownMenu(question: IQuestion, options: IDropdownMenuOptions): void;
165
167
  chooseFiles(input: HTMLInputElement, callback: (files: File[]) => void, context?: {
166
168
  element: Base;
167
169
  item?: any;
@@ -329,3 +331,10 @@ export interface ISaveToJSONOptions {
329
331
  storeDefaults?: boolean;
330
332
  version?: string;
331
333
  }
334
+ export interface IDropdownMenuOptions {
335
+ menuType: "dropdown" | "popup" | "overlay";
336
+ deviceType: "mobile" | "tablet" | "desktop";
337
+ hasTouchScreen: boolean;
338
+ screenHeight: number;
339
+ screenWidth: number;
340
+ }
@@ -12,6 +12,7 @@ export declare abstract class DragDropCore<T> implements IDragDropEngine {
12
12
  protected ghostPositionChanged(): void;
13
13
  onDragStart: EventBase<DragDropCore<T>>;
14
14
  onDragEnd: EventBase<DragDropCore<T>>;
15
+ onDragClear: EventBase<DragDropCore<T>>;
15
16
  onBeforeDrop: EventBase<DragDropCore<T>, any>;
16
17
  onAfterDrop: EventBase<DragDropCore<T>, any>;
17
18
  draggedElement: any;
@@ -28,6 +28,7 @@ export declare class DropdownListModel extends Base {
28
28
  private loadQuestionChoices;
29
29
  private updateQuestionChoices;
30
30
  private updatePopupFocusFirstInputSelector;
31
+ private getDropdownMenuOptions;
31
32
  protected createPopup(): void;
32
33
  private setFilterStringToListModel;
33
34
  private setTextWrapEnabled;
@@ -77,7 +77,6 @@ export declare class Const extends Operand {
77
77
  protected getCorrectValue(value: any): any;
78
78
  protected isContentEqual(op: Operand): boolean;
79
79
  private isQuote;
80
- private isBooleanValue;
81
80
  }
82
81
  export declare class Variable extends Const {
83
82
  private variableName;
@@ -117,8 +116,6 @@ export declare class OperandMaker {
117
116
  static throwInvalidOperatorError(op: string): void;
118
117
  static safeToString(operand: Operand, func: (op: Operand) => string): string;
119
118
  static toOperandString(value: string): string;
120
- static isSpaceString(str: string): boolean;
121
- static isNumeric(value: string): boolean;
122
119
  static isBooleanValue(value: string): boolean;
123
120
  static countDecimals(value: number): number;
124
121
  static plusMinus(a: number, b: number, res: number): number;
@@ -18,6 +18,8 @@ export declare class Helpers {
18
18
  static isValueObject(val: any, excludeArray?: boolean): boolean;
19
19
  static isNumber(value: any): boolean;
20
20
  static getNumber(value: any): number;
21
+ private static getNumberCore;
22
+ private static isStringHasOperator;
21
23
  private static prepareStringToNumber;
22
24
  static getMaxLength(maxLength: number, surveyLength: number): any;
23
25
  static getRemainingCharacterCounterText(newValue: string | undefined, maxLength: number | null): string;
@@ -129,7 +129,7 @@ export declare class JsonObjectProperty implements IObject, IJsonPropertyInfo {
129
129
  onPropertyEditorUpdate: (obj: any, propEditor: any) => any;
130
130
  constructor(classInfo: JsonMetadataClass, name: string, isRequired?: boolean);
131
131
  uniqueProperty?: string;
132
- dependsOn?: string | string[];
132
+ dependsOn?: string | Array<string>;
133
133
  default?: any;
134
134
  defaultFunc?: (obj: Base) => any;
135
135
  readonly id: number;
@@ -333,6 +333,7 @@ export declare class JsonObject {
333
333
  toJsonObject(obj: any, options?: ISaveToJSONOptions | boolean): any;
334
334
  toObject(jsonObj: any, obj: any, options?: ILoadFromJSONOptions): void;
335
335
  toObjectCore(jsonObj: any, obj: any, options?: ILoadFromJSONOptions): void;
336
+ private setPropertyValueToObj;
336
337
  toJsonObjectCore(obj: any, property: JsonObjectProperty, options?: ISaveToJSONOptions | boolean): any;
337
338
  private getDynamicProperties;
338
339
  private addDynamicProperties;
@@ -2,11 +2,12 @@ import { IPosition, Rect } from "./utils/popup";
2
2
  import { CssClassBuilder } from "./utils/cssClassBuilder";
3
3
  import { PopupModel } from "./popup";
4
4
  import { PopupBaseViewModel } from "./popup-view-model";
5
+ export declare function calculateIsTablet(windowWidth?: number, windowHeight?: number): boolean;
5
6
  export declare class PopupDropdownViewModel extends PopupBaseViewModel {
6
7
  targetElement?: HTMLElement;
7
8
  areaElement?: HTMLElement;
9
+ static readonly tabletSizeBreakpoint = 600;
8
10
  private scrollEventCallBack;
9
- private static readonly tabletSizeBreakpoint;
10
11
  private calculateIsTablet;
11
12
  private resizeEventCallback;
12
13
  private resizeWindowCallback;
@@ -41,7 +41,7 @@ export declare class PopupModel<T = any> extends Base implements IPopupOptionsBa
41
41
  isFocusedContainer: boolean;
42
42
  cssClass: string;
43
43
  title: string;
44
- overlayDisplayMode: "auto" | "overlay" | "dropdown-overlay";
44
+ overlayDisplayMode: "auto" | "tablet-dropdown-overlay" | "dropdown-overlay" | "plain";
45
45
  displayMode: "popup" | "overlay";
46
46
  positionMode: PositionMode;
47
47
  onVisibilityChanged: EventBase<PopupModel>;
@@ -55,6 +55,7 @@ export declare class PopupModel<T = any> extends Base implements IPopupOptionsBa
55
55
  hide(): void;
56
56
  recalculatePosition(isResetHeight: boolean): void;
57
57
  updateFooterActions(footerActions: Array<IAction>): Array<IAction>;
58
+ updateDisplayMode(menuType: "dropdown" | "popup" | "overlay"): void;
58
59
  onHiding(): void;
59
60
  dispose(): void;
60
61
  }
@@ -1,6 +1,6 @@
1
1
  import { HashTable } from "./helpers";
2
2
  import { EventBase } from "./base";
3
- import { IElement, IQuestion, IPanel, IConditionRunner, ISurveyImpl, IPage, ITitleOwner, IProgressInfo, ISurvey, IPlainDataOptions } from "./base-interfaces";
3
+ import { IElement, IQuestion, IPanel, IConditionRunner, ISurveyImpl, IPage, ITitleOwner, IProgressInfo, ISurvey, IPlainDataOptions, IDropdownMenuOptions } from "./base-interfaces";
4
4
  import { SurveyElement } from "./survey-element";
5
5
  import { SurveyValidator, IValidatorOwner } from "./validator";
6
6
  import { TextPreProcessorValue } from "./textPreProcessor";
@@ -837,6 +837,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
837
837
  validatedValue: any;
838
838
  getAllValues(): any;
839
839
  processPopupVisiblilityChanged(popupModel: PopupModel, visible: boolean): void;
840
+ processOpenDropdownMenu(options: IDropdownMenuOptions): void;
840
841
  protected onTextKeyDownHandler(event: any): void;
841
842
  transformToMobileView(): void;
842
843
  transformToDesktopView(): void;
@@ -459,11 +459,6 @@ export declare class QuestionSelectBase extends Question {
459
459
  readonly hasHeadItems: boolean;
460
460
  readonly hasFootItems: boolean;
461
461
  readonly columns: any[];
462
- protected getObservedElementSelector(): string;
463
- protected supportResponsiveness(): boolean;
464
- allowMultiColumns: boolean;
465
- protected onBeforeSetCompactRenderer(): void;
466
- protected onBeforeSetDesktopRenderer(): void;
467
462
  readonly hasColumns: boolean;
468
463
  readonly rowLayout: boolean;
469
464
  readonly blockedRow: boolean;
@@ -340,6 +340,7 @@ export declare abstract class QuestionCustomModelBase extends Question implement
340
340
  getFilteredValues(): any;
341
341
  getFilteredProperties(): any;
342
342
  findQuestionByName(name: string): IQuestion;
343
+ getEditingSurveyElement(): Base;
343
344
  addElement(element: IElement, index: number): void;
344
345
  removeElement(element: IElement): boolean;
345
346
  getQuestionTitleLocation(): string;
@@ -409,6 +410,12 @@ export declare class QuestionCompositeModel extends QuestionCustomModelBase {
409
410
  readonly contentPanel: PanelModel;
410
411
  hasErrors(fireCallback?: boolean, rec?: any): boolean;
411
412
  updateElementCss(reNew?: boolean): void;
413
+ dispose(): void;
414
+ private editingObjValue;
415
+ private onEditingObjPropertyChanged;
416
+ private updateEditingObj;
417
+ private unConnectEditingObj;
418
+ getEditingSurveyElement(): Base;
412
419
  getTextProcessor(): ITextProcessor;
413
420
  findQuestionByName(name: string): IQuestion;
414
421
  protected clearValueIfInvisibleCore(reason: string): void;
@@ -417,6 +424,7 @@ export declare class QuestionCompositeModel extends QuestionCustomModelBase {
417
424
  readonly isContainer: boolean;
418
425
  protected createPanel(): PanelModel;
419
426
  protected onReadOnlyChanged(): void;
427
+ updateValueFromSurvey(newValue: any, clearData?: boolean): void;
420
428
  onSurveyLoad(): void;
421
429
  private setIsContentElement;
422
430
  setVisibleIndex(val: number): number;
@@ -43,6 +43,8 @@ export declare class QuestionFileModelBase extends Question {
43
43
  clearOnDeletingContainer(): void;
44
44
  protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
45
45
  protected uploadFiles(files: File[]): void;
46
+ protected loadPreview(newValue: any): void;
47
+ protected onChangeQuestionValue(newValue: any): void;
46
48
  }
47
49
  /**
48
50
  * A class that describes the File Upload question type.
@@ -80,6 +82,8 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
80
82
  startCameraAction: Action;
81
83
  cleanAction: Action;
82
84
  actionsContainer: ActionContainer;
85
+ private isFileLoadingValue;
86
+ protected isFileLoading: boolean;
83
87
  readonly fileNavigatorVisible: boolean;
84
88
  private readonly pagesCount: any;
85
89
  readonly actionsContainerVisible: boolean;
@@ -212,8 +216,6 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
212
216
  protected readonly camera: Camera;
213
217
  canPreviewImage(fileItem: any): boolean;
214
218
  protected loadPreview(newValue: any): void;
215
- private isFileLoadingValue;
216
- protected isFileLoading: boolean;
217
219
  protected getIsQuestionReady(): boolean;
218
220
  private allFilesOk;
219
221
  private isFileImage;
@@ -226,7 +228,6 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
226
228
  readonly fileRootCss: string;
227
229
  getFileDecoratorCss(): string;
228
230
  private onChange;
229
- protected onChangeQuestionValue(newValue: any): void;
230
231
  protected calcCssClasses(css: any): any;
231
232
  onSurveyLoad(): void;
232
233
  protected needResponsiveness(): boolean;
@@ -241,7 +242,8 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
241
242
  protected processResponsiveness(_: number, availableWidth: number): boolean;
242
243
  private rootElement;
243
244
  private canDragDrop;
244
- afterRender(el: HTMLElement): void;
245
+ afterRenderQuestionElement(el: HTMLElement): void;
246
+ beforeDestroyQuestionElement(el: HTMLElement): void;
245
247
  private dragCounter;
246
248
  onDragEnter: (event: any) => void;
247
249
  onDragOver: (event: any) => boolean;
@@ -259,7 +261,7 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
259
261
  export declare class FileLoader {
260
262
  private fileQuestion;
261
263
  private callback;
262
- constructor(fileQuestion: QuestionFileModel, callback: (status: string, files: any[]) => void);
264
+ constructor(fileQuestion: QuestionFileModelBase, callback: (status: string, files: any[]) => void);
263
265
  loaded: any[];
264
266
  load(files: Array<any>): void;
265
267
  dispose(): void;
@@ -96,8 +96,8 @@ export declare class QuestionMatrixModel extends QuestionMatrixBaseModel<MatrixR
96
96
  *
97
97
  * Possible values:
98
98
  *
99
- * - "initial" (default) - Preserves the original order of the `rows` array.
100
- * - "random" - Arranges matrix rows in random order each time the question is displayed.
99
+ * - `"initial"` (default) - Preserves the original order of the `rows` array.
100
+ * - `"random"` - Arranges matrix rows in random order each time the question is displayed.
101
101
  * @see rows
102
102
  */
103
103
  rowsOrder: string;
@@ -112,6 +112,7 @@ export declare class MatrixDropdownRowModelBase implements ISurveyData, ISurveyI
112
112
  getComment(name: string): string;
113
113
  setComment(name: string, newValue: string, locNotification: any): void;
114
114
  findQuestionByName(name: string): IQuestion;
115
+ getEditingSurveyElement(): Base;
115
116
  private setValueCore;
116
117
  private updateQuestionsValue;
117
118
  runTriggers(name: string, value: any): void;
@@ -166,6 +166,7 @@ export declare class MultipleTextItemModel extends Base implements IValidatorOwn
166
166
  getFilteredValues(): any;
167
167
  getFilteredProperties(): any;
168
168
  findQuestionByName(name: string): IQuestion;
169
+ getEditingSurveyElement(): Base;
169
170
  getValidatorTitle(): string;
170
171
  validatedValue: any;
171
172
  getDataFilteredValues(): any;
@@ -1,6 +1,7 @@
1
1
  import { HashTable } from "./helpers";
2
2
  import { IElement, IQuestion, IPanel, ISurveyData, ISurvey, ISurveyImpl, ITextProcessor, IProgressInfo, IPlainDataOptions } from "./base-interfaces";
3
3
  import { LocalizableString } from "./localizablestring";
4
+ import { Base } from "./base";
4
5
  import { Question, IConditionObject, IQuestionPlainData } from "./question";
5
6
  import { PanelModel } from "./panel";
6
7
  import { SurveyError } from "./survey-error";
@@ -36,6 +37,7 @@ export declare class QuestionPanelDynamicItem implements ISurveyData, ISurveyImp
36
37
  getComment(name: string): string;
37
38
  setComment(name: string, newValue: string, locNotification: any): void;
38
39
  findQuestionByName(name: string): IQuestion;
40
+ getEditingSurveyElement(): Base;
39
41
  getAllValues(): any;
40
42
  getFilteredValues(): any;
41
43
  getFilteredProperties(): any;
@@ -29,6 +29,8 @@ export declare class QuestionSignaturePadModel extends QuestionFileModelBase {
29
29
  private fromUrl;
30
30
  private refreshCanvas;
31
31
  private updateValueHandler;
32
+ protected loadPreview(newValue: any): void;
33
+ onSurveyLoad(): void;
32
34
  initSignaturePad(el: HTMLElement): void;
33
35
  destroySignaturePad(el: HTMLElement): void;
34
36
  /*
@@ -130,6 +130,7 @@ export declare class QuestionTextModel extends QuestionTextBase {
130
130
  private hasToConvertToUTC;
131
131
  protected valueForSurveyCore(val: any): any;
132
132
  protected valueFromDataCore(val: any): any;
133
+ private dateValidationMessage;
133
134
  protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
134
135
  protected canSetValueToSurvey(): boolean;
135
136
  protected convertFuncValuetoQuestionValue(val: any): any;
@@ -166,6 +167,7 @@ export declare class QuestionTextModel extends QuestionTextBase {
166
167
  private updateValueOnEvent;
167
168
  onCompositionUpdate: (event: any) => void;
168
169
  onKeyUp: (event: any) => void;
170
+ private updateDateValidationMessage;
169
171
  onKeyDown: (event: any) => void;
170
172
  onChange: (event: any) => void;
171
173
  onBlur: (event: any) => void;
@@ -151,6 +151,7 @@ export declare var settings: {
151
151
  * const item = new ItemValue("item1");
152
152
  * const itemString = item.toJSON(); // Produces { value: "item1", text: "item1" } instead of "item1"
153
153
  * ```
154
+ * @see [settings.parseNumber](https://surveyjs.io/form-library/documentation/api-reference/settings#parseNumber)
154
155
  */
155
156
  serialization: {
156
157
  itemValueSerializeAsObject: boolean;
@@ -618,4 +619,28 @@ export declare var settings: {
618
619
  * ```
619
620
  */
620
621
  storeUtcDates: boolean;
622
+ /**
623
+ * A function that allows you to define custom parsing rules for numbers represented as string values.
624
+ *
625
+ * The following code shows a template that you can use to implement the `parseNumber` function:
626
+ *
627
+ * ```js
628
+ * import { settings } from "survey-core";
629
+ *
630
+ * settings.parseNumber = (stringValue, numericValue) => {
631
+ * if (typeof stringValue !== "string" || !stringValue)
632
+ * return numericValue;
633
+ * let parsedNumber = numericValue;
634
+ * // ...
635
+ * // Parsing the number according to custom parsing rules
636
+ * // ...
637
+ * return parsedNumber;
638
+ * };
639
+ * ```
640
+ * @param stringValue A number represented as a string value.
641
+ * @param numericValue A number parsed using a default parsing function. `NaN` if the original string is not a number.
642
+ * @returns A number that results from parsing the string value.
643
+ * @see [settings.serialization](https://surveyjs.io/form-library/documentation/api-reference/settings#serialization)
644
+ */
645
+ parseNumber: (stringValue: any, numericValue: number) => number;
621
646
  };
@@ -1036,6 +1036,32 @@ export interface PopupVisibleChangedEvent extends QuestionEventMixin {
1036
1036
  */
1037
1037
  visible: boolean;
1038
1038
  }
1039
+ export interface OpenDropdownMenuEvent extends QuestionEventMixin {
1040
+ /**
1041
+ * A question for which the event is raised.
1042
+ */
1043
+ question: Question;
1044
+ /**
1045
+ * A device type.
1046
+ */
1047
+ deviceType: "mobile" | "tablet" | "desktop";
1048
+ /**
1049
+ * A Boolean value that indicates whether the current device supports touch gestures.
1050
+ */
1051
+ hasTouchScreen: boolean;
1052
+ /**
1053
+ * The height of the device screen in pixels.
1054
+ */
1055
+ screenHeight: number;
1056
+ /**
1057
+ * The width of the device screen in pixels.
1058
+ */
1059
+ screenWidth: number;
1060
+ /**
1061
+ * A menu type to use for the question: a classic dropdown, a pop-up dialog, or an overlay window. You can modify this parameter's value.
1062
+ */
1063
+ menuType: "dropdown" | "popup" | "overlay";
1064
+ }
1039
1065
  export interface ElementWrapperComponentEventMixin {
1040
1066
  element: any;
1041
1067
  wrapperName: string;
@@ -1,6 +1,6 @@
1
1
  import { JsonError } from "./jsonobject";
2
2
  import { Base, EventBase } from "./base";
3
- import { ISurvey, ISurveyData, ISurveyImpl, ITextProcessor, IQuestion, IPanel, IElement, IPage, ISurveyErrorOwner, ISurveyElement, IProgressInfo, IFindElement, ISurveyLayoutElement, IPlainDataOptions, LayoutElementContainer, IValueItemCustomPropValues, ILoadFromJSONOptions } from "./base-interfaces";
3
+ import { ISurvey, ISurveyData, ISurveyImpl, ITextProcessor, IQuestion, IPanel, IElement, IPage, ISurveyErrorOwner, ISurveyElement, IProgressInfo, IFindElement, ISurveyLayoutElement, IPlainDataOptions, LayoutElementContainer, IValueItemCustomPropValues, ILoadFromJSONOptions, IDropdownMenuOptions } from "./base-interfaces";
4
4
  import { SurveyElementCore } from "./survey-element";
5
5
  import { ISurveyTriggerOwner, SurveyTrigger, Trigger } from "./trigger";
6
6
  import { CalculatedValue } from "./calculatedValue";
@@ -18,7 +18,7 @@ import { IAction, Action } from "./actions/action";
18
18
  import { ActionContainer } from "./actions/container";
19
19
  import { QuestionPanelDynamicModel } from "./question_paneldynamic";
20
20
  import { Notifier } from "./notifier";
21
- import { TriggerExecutedEvent, CompletingEvent, CompleteEvent, ShowingPreviewEvent, NavigateToUrlEvent, CurrentPageChangingEvent, CurrentPageChangedEvent, ValueChangingEvent, ValueChangedEvent, VariableChangedEvent, QuestionVisibleChangedEvent, PageVisibleChangedEvent, PanelVisibleChangedEvent, QuestionCreatedEvent, QuestionAddedEvent, QuestionRemovedEvent, PanelAddedEvent, PanelRemovedEvent, PageAddedEvent, ValidateQuestionEvent, SettingQuestionErrorsEvent, ValidatePanelEvent, ErrorCustomTextEvent, ValidatedErrorsOnCurrentPageEvent, ProcessHtmlEvent, GetQuestionTitleEvent, GetTitleTagNameEvent, GetQuestionNoEvent, ProgressTextEvent, TextMarkdownEvent, TextRenderAsEvent, SendResultEvent, GetResultEvent, UploadFilesEvent, DownloadFileEvent, ClearFilesEvent, LoadChoicesFromServerEvent, ProcessTextValueEvent, UpdateQuestionCssClassesEvent, UpdatePanelCssClassesEvent, UpdatePageCssClassesEvent, UpdateChoiceItemCssEvent, AfterRenderSurveyEvent, AfterRenderHeaderEvent, AfterRenderPageEvent, AfterRenderQuestionEvent, AfterRenderQuestionInputEvent, AfterRenderPanelEvent, FocusInQuestionEvent, FocusInPanelEvent, ShowingChoiceItemEvent, ChoicesLazyLoadEvent, GetChoiceDisplayValueEvent, MatrixRowAddedEvent, MatrixBeforeRowAddedEvent, MatrixRowRemovingEvent, MatrixRowRemovedEvent, MatrixAllowRemoveRowEvent, MatrixDetailPanelVisibleChangedEvent, MatrixCellCreatingEvent, MatrixCellCreatedEvent, MatrixAfterCellRenderEvent, MatrixCellValueChangedEvent, MatrixCellValueChangingEvent, MatrixCellValidateEvent, DynamicPanelModifiedEvent, DynamicPanelRemovingEvent, TimerPanelInfoTextEvent, DynamicPanelItemValueChangedEvent, DynamicPanelGetTabTitleEvent, DynamicPanelCurrentIndexChangedEvent, IsAnswerCorrectEvent, DragDropAllowEvent, ScrollingElementToTopEvent, GetQuestionTitleActionsEvent, GetPanelTitleActionsEvent, GetPageTitleActionsEvent, GetPanelFooterActionsEvent, GetMatrixRowActionsEvent, ElementContentVisibilityChangedEvent, GetExpressionDisplayValueEvent, ServerValidateQuestionsEvent, MultipleTextItemAddedEvent, MatrixColumnAddedEvent, GetQuestionDisplayValueEvent, PopupVisibleChangedEvent, ChoicesSearchEvent, OpenFileChooserEvent, ElementWrapperComponentNameEvent, ElementWrapperComponentDataEvent } from "./survey-events-api";
21
+ import { TriggerExecutedEvent, CompletingEvent, CompleteEvent, ShowingPreviewEvent, NavigateToUrlEvent, CurrentPageChangingEvent, CurrentPageChangedEvent, ValueChangingEvent, ValueChangedEvent, VariableChangedEvent, QuestionVisibleChangedEvent, PageVisibleChangedEvent, PanelVisibleChangedEvent, QuestionCreatedEvent, QuestionAddedEvent, QuestionRemovedEvent, PanelAddedEvent, PanelRemovedEvent, PageAddedEvent, ValidateQuestionEvent, SettingQuestionErrorsEvent, ValidatePanelEvent, ErrorCustomTextEvent, ValidatedErrorsOnCurrentPageEvent, ProcessHtmlEvent, GetQuestionTitleEvent, GetTitleTagNameEvent, GetQuestionNoEvent, ProgressTextEvent, TextMarkdownEvent, TextRenderAsEvent, SendResultEvent, GetResultEvent, UploadFilesEvent, DownloadFileEvent, ClearFilesEvent, LoadChoicesFromServerEvent, ProcessTextValueEvent, UpdateQuestionCssClassesEvent, UpdatePanelCssClassesEvent, UpdatePageCssClassesEvent, UpdateChoiceItemCssEvent, AfterRenderSurveyEvent, AfterRenderHeaderEvent, AfterRenderPageEvent, AfterRenderQuestionEvent, AfterRenderQuestionInputEvent, AfterRenderPanelEvent, FocusInQuestionEvent, FocusInPanelEvent, ShowingChoiceItemEvent, ChoicesLazyLoadEvent, GetChoiceDisplayValueEvent, MatrixRowAddedEvent, MatrixBeforeRowAddedEvent, MatrixRowRemovingEvent, MatrixRowRemovedEvent, MatrixAllowRemoveRowEvent, MatrixDetailPanelVisibleChangedEvent, MatrixCellCreatingEvent, MatrixCellCreatedEvent, MatrixAfterCellRenderEvent, MatrixCellValueChangedEvent, MatrixCellValueChangingEvent, MatrixCellValidateEvent, DynamicPanelModifiedEvent, DynamicPanelRemovingEvent, TimerPanelInfoTextEvent, DynamicPanelItemValueChangedEvent, DynamicPanelGetTabTitleEvent, DynamicPanelCurrentIndexChangedEvent, IsAnswerCorrectEvent, DragDropAllowEvent, ScrollingElementToTopEvent, GetQuestionTitleActionsEvent, GetPanelTitleActionsEvent, GetPageTitleActionsEvent, GetPanelFooterActionsEvent, GetMatrixRowActionsEvent, ElementContentVisibilityChangedEvent, GetExpressionDisplayValueEvent, ServerValidateQuestionsEvent, MultipleTextItemAddedEvent, MatrixColumnAddedEvent, GetQuestionDisplayValueEvent, PopupVisibleChangedEvent, ChoicesSearchEvent, OpenFileChooserEvent, ElementWrapperComponentNameEvent, ElementWrapperComponentDataEvent, OpenDropdownMenuEvent } from "./survey-events-api";
22
22
  import { QuestionMatrixDropdownModelBase } from "./question_matrixdropdownbase";
23
23
  import { QuestionMatrixDynamicModel } from "./question_matrixdynamic";
24
24
  import { QuestionFileModel } from "./question_file";
@@ -710,9 +710,17 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
710
710
  */
711
711
  onGetExpressionDisplayValue: EventBase<SurveyModel, GetExpressionDisplayValueEvent>;
712
712
  /**
713
- * An event that is raised after the visibility of a popup is changed. This event can be raised for [Single-](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model) and [Multi-Select Dropdown](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model) questions and [Rating](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model) questions [rendered as drop-down menus](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model#displayMode).
713
+ * An event that is raised after the visibility of a popup is changed.
714
+ *
715
+ * This event can be raised for [Single-](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model) and [Multi-Select Dropdown](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model) questions and [Rating Scale](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model) questions [rendered as drop-down menus](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model#displayMode), and [Multi-Select Matrix](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list) questions that contain columns of the `"dropdown"` or `"tagbox"` [`cellType`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#cellType).
714
716
  */
715
717
  onPopupVisibleChanged: EventBase<SurveyModel, PopupVisibleChangedEvent>;
718
+ /**
719
+ * An event that is raised when users open a drop-down menu.
720
+ *
721
+ * This event can be raised for [Single-](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model) and [Multi-Select Dropdown](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model) questions, [Rating Scale](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model) questions [rendered as drop-down menus](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model#displayMode), and [Multi-Select Matrix](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list) questions that contain columns of the `"dropdown"` or `"tagbox"` [`cellType`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#cellType). Handle this event to change the drop-down menu type for specific questions or device types.
722
+ */
723
+ onOpenDropdownMenu: EventBase<SurveyModel, OpenDropdownMenuEvent>;
716
724
  onElementWrapperComponentName: EventBase<SurveyModel, ElementWrapperComponentNameEvent>;
717
725
  onElementWrapperComponentData: EventBase<SurveyModel, ElementWrapperComponentDataEvent>;
718
726
  constructor(jsonObj?: any, renderedElement?: any);
@@ -1550,6 +1558,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
1550
1558
  private collectDataFromPanel;
1551
1559
  private onEditingObjPropertyChanged;
1552
1560
  editingObj: Base;
1561
+ private unConnectEditingObj;
1553
1562
  readonly isEditingSurveyElement: boolean;
1554
1563
  private setCalculatedValuesIntoResult;
1555
1564
  getAllValues(): any;
@@ -2073,8 +2082,8 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2073
2082
  updatePanelCssClasses(panel: PanelModel, cssClasses: any): void;
2074
2083
  updatePageCssClasses(page: PageModel, cssClasses: any): void;
2075
2084
  updateChoiceItemCss(question: IQuestion, options: any): void;
2076
- private isFirstPageRendering;
2077
2085
  private isCurrentPageRendering;
2086
+ private isCurrentPageRendered;
2078
2087
  afterRenderPage(htmlElement: HTMLElement): void;
2079
2088
  afterRenderHeader(htmlElement: HTMLElement): void;
2080
2089
  afterRenderQuestion(question: Question, htmlElement: HTMLElement): void;
@@ -2247,6 +2256,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2247
2256
  */
2248
2257
  getQuestionByName(name: string, caseInsensitive?: boolean): Question;
2249
2258
  findQuestionByName(name: string): IQuestion;
2259
+ getEditingSurveyElement(): Base;
2250
2260
  /**
2251
2261
  * Returns a question with a specified [`valueName`](https://surveyjs.io/form-library/documentation/api-reference/question#valueName).
2252
2262
  *
@@ -2759,6 +2769,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2759
2769
  removeLayoutElement(layoutElementId: string): ISurveyLayoutElement;
2760
2770
  getContainerContent(container: LayoutElementContainer): any[];
2761
2771
  processPopupVisiblityChanged(question: Question, popup: PopupModel<any>, visible: boolean): void;
2772
+ processOpenDropdownMenu(question: Question, options: IDropdownMenuOptions): void;
2762
2773
  /**
2763
2774
  * Applies a specified theme to the survey.
2764
2775
  *
@@ -15,6 +15,7 @@ declare function navigateToUrl(url: string): void;
15
15
  declare function wrapUrlForBackgroundImage(url: string): string;
16
16
  declare function getIconNameFromProxy(iconName: string): string;
17
17
  declare function createSvg(size: number | string, width: number, height: number, iconName: string, svgElem: any, title: string): void;
18
+ export declare function getSafeUrl(url: string): string;
18
19
  export declare function unwrap<T>(value: T | (() => T)): T;
19
20
  export declare function getRenderedSize(val: string | number): number;
20
21
  export declare function getRenderedStyleSize(val: string | number): string;
@@ -21,6 +21,7 @@ export interface ISurveyData {
21
21
  getFilteredValues(): any;
22
22
  getFilteredProperties(): any;
23
23
  findQuestionByName(name: string): IQuestion;
24
+ getEditingSurveyElement(): Base;
24
25
  }
25
26
  export interface ITextProcessor {
26
27
  processText(text: string, returnDisplayValue: boolean): string;
@@ -162,6 +163,7 @@ export interface ISurvey extends ITextProcessor, ISurveyErrorOwner {
162
163
  elementContentVisibilityChanged(element: ISurveyElement): void;
163
164
  onCorrectQuestionAnswer(question: IQuestion, options: any): void;
164
165
  processPopupVisiblityChanged(question: IQuestion, popupModel: PopupModel, visible: boolean): void;
166
+ processOpenDropdownMenu(question: IQuestion, options: IDropdownMenuOptions): void;
165
167
  chooseFiles(input: HTMLInputElement, callback: (files: File[]) => void, context?: {
166
168
  element: Base;
167
169
  item?: any;
@@ -329,3 +331,10 @@ export interface ISaveToJSONOptions {
329
331
  storeDefaults?: boolean;
330
332
  version?: string;
331
333
  }
334
+ export interface IDropdownMenuOptions {
335
+ menuType: "dropdown" | "popup" | "overlay";
336
+ deviceType: "mobile" | "tablet" | "desktop";
337
+ hasTouchScreen: boolean;
338
+ screenHeight: number;
339
+ screenWidth: number;
340
+ }
@@ -13,6 +13,7 @@ export declare abstract class DragDropCore<T> implements IDragDropEngine {
13
13
  protected ghostPositionChanged(): void;
14
14
  onDragStart: EventBase<DragDropCore<T>>;
15
15
  onDragEnd: EventBase<DragDropCore<T>>;
16
+ onDragClear: EventBase<DragDropCore<T>>;
16
17
  onBeforeDrop: EventBase<DragDropCore<T>, any>;
17
18
  onAfterDrop: EventBase<DragDropCore<T>, any>;
18
19
  draggedElement: any;
@@ -28,6 +28,7 @@ export declare class DropdownListModel extends Base {
28
28
  private loadQuestionChoices;
29
29
  private updateQuestionChoices;
30
30
  private updatePopupFocusFirstInputSelector;
31
+ private getDropdownMenuOptions;
31
32
  protected createPopup(): void;
32
33
  private setFilterStringToListModel;
33
34
  private setTextWrapEnabled;
@@ -77,7 +77,6 @@ export declare class Const extends Operand {
77
77
  protected getCorrectValue(value: any): any;
78
78
  protected isContentEqual(op: Operand): boolean;
79
79
  private isQuote;
80
- private isBooleanValue;
81
80
  }
82
81
  export declare class Variable extends Const {
83
82
  private variableName;
@@ -118,8 +117,6 @@ export declare class OperandMaker {
118
117
  static throwInvalidOperatorError(op: string): void;
119
118
  static safeToString(operand: Operand, func: (op: Operand) => string): string;
120
119
  static toOperandString(value: string): string;
121
- static isSpaceString(str: string): boolean;
122
- static isNumeric(value: string): boolean;
123
120
  static isBooleanValue(value: string): boolean;
124
121
  static countDecimals(value: number): number;
125
122
  static plusMinus(a: number, b: number, res: number): number;