survey-core 1.11.9 → 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 (240) hide show
  1. package/defaultV2.css +17 -2
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +17 -2
  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 +226 -93
  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 +8 -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/popup-dropdown-view-model.d.ts +2 -1
  217. package/ts3.4/typings/popup.d.ts +2 -1
  218. package/ts3.4/typings/question.d.ts +2 -1
  219. package/ts3.4/typings/question_file.d.ts +5 -4
  220. package/ts3.4/typings/question_matrix.d.ts +2 -2
  221. package/ts3.4/typings/question_signaturepad.d.ts +2 -0
  222. package/ts3.4/typings/settings.d.ts +25 -0
  223. package/ts3.4/typings/survey-events-api.d.ts +26 -0
  224. package/ts3.4/typings/survey.d.ts +12 -3
  225. package/ts3.4/typings/utils/utils.d.ts +1 -0
  226. package/typings/base-interfaces.d.ts +8 -0
  227. package/typings/dragdrop/core.d.ts +1 -0
  228. package/typings/dropdownListModel.d.ts +1 -0
  229. package/typings/expressions/expressions.d.ts +0 -3
  230. package/typings/helpers.d.ts +2 -0
  231. package/typings/popup-dropdown-view-model.d.ts +2 -1
  232. package/typings/popup.d.ts +2 -1
  233. package/typings/question.d.ts +2 -1
  234. package/typings/question_file.d.ts +6 -5
  235. package/typings/question_matrix.d.ts +2 -2
  236. package/typings/question_signaturepad.d.ts +2 -0
  237. package/typings/settings.d.ts +25 -0
  238. package/typings/survey-events-api.d.ts +26 -0
  239. package/typings/survey.d.ts +12 -3
  240. package/typings/utils/utils.d.ts +1 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - Survey JavaScript library v1.11.9
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.9
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.9
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.9
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.9
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.9
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.9
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.9
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.9
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.9
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.9
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.9
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
  */
@@ -163,6 +163,7 @@ export interface ISurvey extends ITextProcessor, ISurveyErrorOwner {
163
163
  elementContentVisibilityChanged(element: ISurveyElement): void;
164
164
  onCorrectQuestionAnswer(question: IQuestion, options: any): void;
165
165
  processPopupVisiblityChanged(question: IQuestion, popupModel: PopupModel, visible: boolean): void;
166
+ processOpenDropdownMenu(question: IQuestion, options: IDropdownMenuOptions): void;
166
167
  chooseFiles(input: HTMLInputElement, callback: (files: File[]) => void, context?: {
167
168
  element: Base;
168
169
  item?: any;
@@ -330,3 +331,10 @@ export interface ISaveToJSONOptions {
330
331
  storeDefaults?: boolean;
331
332
  version?: string;
332
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;
@@ -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;
@@ -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;
@@ -260,7 +261,7 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
260
261
  export declare class FileLoader {
261
262
  private fileQuestion;
262
263
  private callback;
263
- constructor(fileQuestion: QuestionFileModel, callback: (status: string, files: any[]) => void);
264
+ constructor(fileQuestion: QuestionFileModelBase, callback: (status: string, files: any[]) => void);
264
265
  loaded: any[];
265
266
  load(files: Array<any>): void;
266
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;
@@ -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
  /*
@@ -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);
@@ -2761,6 +2769,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2761
2769
  removeLayoutElement(layoutElementId: string): ISurveyLayoutElement;
2762
2770
  getContainerContent(container: LayoutElementContainer): any[];
2763
2771
  processPopupVisiblityChanged(question: Question, popup: PopupModel<any>, visible: boolean): void;
2772
+ processOpenDropdownMenu(question: Question, options: IDropdownMenuOptions): void;
2764
2773
  /**
2765
2774
  * Applies a specified theme to the survey.
2766
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;
@@ -163,6 +163,7 @@ export interface ISurvey extends ITextProcessor, ISurveyErrorOwner {
163
163
  elementContentVisibilityChanged(element: ISurveyElement): void;
164
164
  onCorrectQuestionAnswer(question: IQuestion, options: any): void;
165
165
  processPopupVisiblityChanged(question: IQuestion, popupModel: PopupModel, visible: boolean): void;
166
+ processOpenDropdownMenu(question: IQuestion, options: IDropdownMenuOptions): void;
166
167
  chooseFiles(input: HTMLInputElement, callback: (files: File[]) => void, context?: {
167
168
  element: Base;
168
169
  item?: any;
@@ -330,3 +331,10 @@ export interface ISaveToJSONOptions {
330
331
  storeDefaults?: boolean;
331
332
  version?: string;
332
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;
@@ -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;
@@ -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>;
@@ -56,6 +56,7 @@ export declare class PopupModel<T = any> extends Base implements IPopupOptionsBa
56
56
  hide(): void;
57
57
  recalculatePosition(isResetHeight: boolean): void;
58
58
  updateFooterActions(footerActions: Array<IAction>): Array<IAction>;
59
+ updateDisplayMode(menuType: "dropdown" | "popup" | "overlay"): void;
59
60
  onHiding(): void;
60
61
  dispose(): void;
61
62
  }
@@ -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";
@@ -873,6 +873,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
873
873
  set validatedValue(val: any);
874
874
  getAllValues(): any;
875
875
  processPopupVisiblilityChanged(popupModel: PopupModel, visible: boolean): void;
876
+ processOpenDropdownMenu(options: IDropdownMenuOptions): void;
876
877
  protected onTextKeyDownHandler(event: any): void;
877
878
  transformToMobileView(): void;
878
879
  transformToDesktopView(): void;
@@ -45,6 +45,8 @@ export declare class QuestionFileModelBase extends Question {
45
45
  clearOnDeletingContainer(): void;
46
46
  protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
47
47
  protected uploadFiles(files: File[]): void;
48
+ protected loadPreview(newValue: any): void;
49
+ protected onChangeQuestionValue(newValue: any): void;
48
50
  }
49
51
  /**
50
52
  * A class that describes the File Upload question type.
@@ -82,6 +84,9 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
82
84
  startCameraAction: Action;
83
85
  cleanAction: Action;
84
86
  actionsContainer: ActionContainer;
87
+ private isFileLoadingValue;
88
+ protected get isFileLoading(): boolean;
89
+ protected set isFileLoading(val: boolean);
85
90
  get fileNavigatorVisible(): boolean;
86
91
  private get pagesCount();
87
92
  get actionsContainerVisible(): boolean;
@@ -224,9 +229,6 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
224
229
  protected get camera(): Camera;
225
230
  canPreviewImage(fileItem: any): boolean;
226
231
  protected loadPreview(newValue: any): void;
227
- private isFileLoadingValue;
228
- protected get isFileLoading(): boolean;
229
- protected set isFileLoading(val: boolean);
230
232
  protected getIsQuestionReady(): boolean;
231
233
  private allFilesOk;
232
234
  private isFileImage;
@@ -239,7 +241,6 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
239
241
  get fileRootCss(): string;
240
242
  getFileDecoratorCss(): string;
241
243
  private onChange;
242
- protected onChangeQuestionValue(newValue: any): void;
243
244
  protected calcCssClasses(css: any): any;
244
245
  onSurveyLoad(): void;
245
246
  protected needResponsiveness(): boolean;
@@ -273,7 +274,7 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
273
274
  export declare class FileLoader {
274
275
  private fileQuestion;
275
276
  private callback;
276
- constructor(fileQuestion: QuestionFileModel, callback: (status: string, files: any[]) => void);
277
+ constructor(fileQuestion: QuestionFileModelBase, callback: (status: string, files: any[]) => void);
277
278
  loaded: any[];
278
279
  load(files: Array<any>): void;
279
280
  dispose(): void;
@@ -100,8 +100,8 @@ export declare class QuestionMatrixModel extends QuestionMatrixBaseModel<MatrixR
100
100
  *
101
101
  * Possible values:
102
102
  *
103
- * - "initial" (default) - Preserves the original order of the `rows` array.
104
- * - "random" - Arranges matrix rows in random order each time the question is displayed.
103
+ * - `"initial"` (default) - Preserves the original order of the `rows` array.
104
+ * - `"random"` - Arranges matrix rows in random order each time the question is displayed.
105
105
  * @see rows
106
106
  */
107
107
  get rowsOrder(): string;
@@ -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
  /**
@@ -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
  };