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
@@ -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
  get id(): number;
@@ -342,6 +342,7 @@ export declare class JsonObject {
342
342
  toJsonObject(obj: any, options?: ISaveToJSONOptions | boolean): any;
343
343
  toObject(jsonObj: any, obj: any, options?: ILoadFromJSONOptions): void;
344
344
  toObjectCore(jsonObj: any, obj: any, options?: ILoadFromJSONOptions): void;
345
+ private setPropertyValueToObj;
345
346
  toJsonObjectCore(obj: any, property: JsonObjectProperty, options?: ISaveToJSONOptions | boolean): any;
346
347
  private getDynamicProperties;
347
348
  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>;
@@ -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;
@@ -486,11 +486,6 @@ export declare class QuestionSelectBase extends Question {
486
486
  get hasHeadItems(): boolean;
487
487
  get hasFootItems(): boolean;
488
488
  get columns(): any[];
489
- protected getObservedElementSelector(): string;
490
- protected supportResponsiveness(): boolean;
491
- allowMultiColumns: boolean;
492
- protected onBeforeSetCompactRenderer(): void;
493
- protected onBeforeSetDesktopRenderer(): void;
494
489
  get hasColumns(): boolean;
495
490
  get rowLayout(): boolean;
496
491
  get 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
  get 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
  get 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;
@@ -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;
@@ -254,7 +255,8 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
254
255
  protected processResponsiveness(_: number, availableWidth: number): boolean;
255
256
  private rootElement;
256
257
  private canDragDrop;
257
- afterRender(el: HTMLElement): void;
258
+ afterRenderQuestionElement(el: HTMLElement): void;
259
+ beforeDestroyQuestionElement(el: HTMLElement): void;
258
260
  private dragCounter;
259
261
  onDragEnter: (event: any) => void;
260
262
  onDragOver: (event: any) => boolean;
@@ -272,7 +274,7 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
272
274
  export declare class FileLoader {
273
275
  private fileQuestion;
274
276
  private callback;
275
- constructor(fileQuestion: QuestionFileModel, callback: (status: string, files: any[]) => void);
277
+ constructor(fileQuestion: QuestionFileModelBase, callback: (status: string, files: any[]) => void);
276
278
  loaded: any[];
277
279
  load(files: Array<any>): void;
278
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;
@@ -114,6 +114,7 @@ export declare class MatrixDropdownRowModelBase implements ISurveyData, ISurveyI
114
114
  getComment(name: string): string;
115
115
  setComment(name: string, newValue: string, locNotification: any): void;
116
116
  findQuestionByName(name: string): IQuestion;
117
+ getEditingSurveyElement(): Base;
117
118
  private setValueCore;
118
119
  private updateQuestionsValue;
119
120
  runTriggers(name: string, value: any): void;
@@ -183,6 +183,7 @@ export declare class MultipleTextItemModel extends Base implements IValidatorOwn
183
183
  getFilteredValues(): any;
184
184
  getFilteredProperties(): any;
185
185
  findQuestionByName(name: string): IQuestion;
186
+ getEditingSurveyElement(): Base;
186
187
  getValidatorTitle(): string;
187
188
  get validatedValue(): any;
188
189
  set validatedValue(val: 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
  /**
@@ -141,6 +141,7 @@ export declare class QuestionTextModel extends QuestionTextBase {
141
141
  private hasToConvertToUTC;
142
142
  protected valueForSurveyCore(val: any): any;
143
143
  protected valueFromDataCore(val: any): any;
144
+ private dateValidationMessage;
144
145
  protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
145
146
  protected canSetValueToSurvey(): boolean;
146
147
  protected convertFuncValuetoQuestionValue(val: any): any;
@@ -179,6 +180,7 @@ export declare class QuestionTextModel extends QuestionTextBase {
179
180
  private updateValueOnEvent;
180
181
  onCompositionUpdate: (event: any) => void;
181
182
  onKeyUp: (event: any) => void;
183
+ private updateDateValidationMessage;
182
184
  onKeyDown: (event: any) => void;
183
185
  onChange: (event: any) => void;
184
186
  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";
@@ -713,9 +713,17 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
713
713
  */
714
714
  onGetExpressionDisplayValue: EventBase<SurveyModel, GetExpressionDisplayValueEvent>;
715
715
  /**
716
- * 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).
716
+ * An event that is raised after the visibility of a popup is changed.
717
+ *
718
+ * 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).
717
719
  */
718
720
  onPopupVisibleChanged: EventBase<SurveyModel, PopupVisibleChangedEvent>;
721
+ /**
722
+ * An event that is raised when users open a drop-down menu.
723
+ *
724
+ * 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.
725
+ */
726
+ onOpenDropdownMenu: EventBase<SurveyModel, OpenDropdownMenuEvent>;
719
727
  onElementWrapperComponentName: EventBase<SurveyModel, ElementWrapperComponentNameEvent>;
720
728
  onElementWrapperComponentData: EventBase<SurveyModel, ElementWrapperComponentDataEvent>;
721
729
  constructor(jsonObj?: any, renderedElement?: any);
@@ -1621,6 +1629,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
1621
1629
  private onEditingObjPropertyChanged;
1622
1630
  get editingObj(): Base;
1623
1631
  set editingObj(val: Base);
1632
+ private unConnectEditingObj;
1624
1633
  get isEditingSurveyElement(): boolean;
1625
1634
  private setCalculatedValuesIntoResult;
1626
1635
  getAllValues(): any;
@@ -2159,8 +2168,8 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2159
2168
  updatePanelCssClasses(panel: PanelModel, cssClasses: any): void;
2160
2169
  updatePageCssClasses(page: PageModel, cssClasses: any): void;
2161
2170
  updateChoiceItemCss(question: IQuestion, options: any): void;
2162
- private isFirstPageRendering;
2163
2171
  private isCurrentPageRendering;
2172
+ private isCurrentPageRendered;
2164
2173
  afterRenderPage(htmlElement: HTMLElement): void;
2165
2174
  afterRenderHeader(htmlElement: HTMLElement): void;
2166
2175
  afterRenderQuestion(question: Question, htmlElement: HTMLElement): void;
@@ -2333,6 +2342,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2333
2342
  */
2334
2343
  getQuestionByName(name: string, caseInsensitive?: boolean): Question;
2335
2344
  findQuestionByName(name: string): IQuestion;
2345
+ getEditingSurveyElement(): Base;
2336
2346
  /**
2337
2347
  * Returns a question with a specified [`valueName`](https://surveyjs.io/form-library/documentation/api-reference/question#valueName).
2338
2348
  *
@@ -2853,6 +2863,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2853
2863
  removeLayoutElement(layoutElementId: string): ISurveyLayoutElement;
2854
2864
  getContainerContent(container: LayoutElementContainer): any[];
2855
2865
  processPopupVisiblityChanged(question: Question, popup: PopupModel<any>, visible: boolean): void;
2866
+ processOpenDropdownMenu(question: Question, options: IDropdownMenuOptions): void;
2856
2867
  /**
2857
2868
  * Applies a specified theme to the survey.
2858
2869
  *
@@ -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;