survey-core 1.9.136 → 1.9.137

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 (245) hide show
  1. package/defaultV2.css +333 -9
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +333 -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 +2 -2
  34. package/i18n/german.js.map +1 -1
  35. package/i18n/german.min.js +2 -2
  36. package/i18n/greek.js +1 -1
  37. package/i18n/greek.min.js +1 -1
  38. package/i18n/hebrew.js +2 -2
  39. package/i18n/hebrew.js.map +1 -1
  40. package/i18n/hebrew.min.js +2 -2
  41. package/i18n/hindi.js +1 -1
  42. package/i18n/hindi.min.js +1 -1
  43. package/i18n/hungarian.js +1 -1
  44. package/i18n/hungarian.min.js +1 -1
  45. package/i18n/icelandic.js +1 -1
  46. package/i18n/icelandic.min.js +1 -1
  47. package/i18n/index.js +3 -3
  48. package/i18n/index.js.map +1 -1
  49. package/i18n/index.min.js +2 -2
  50. package/i18n/indonesian.js +1 -1
  51. package/i18n/indonesian.min.js +1 -1
  52. package/i18n/italian.js +1 -1
  53. package/i18n/italian.min.js +1 -1
  54. package/i18n/japanese.js +1 -1
  55. package/i18n/japanese.min.js +1 -1
  56. package/i18n/kazakh.js +1 -1
  57. package/i18n/kazakh.min.js +1 -1
  58. package/i18n/korean.js +1 -1
  59. package/i18n/korean.min.js +1 -1
  60. package/i18n/latvian.js +1 -1
  61. package/i18n/latvian.min.js +1 -1
  62. package/i18n/lithuanian.js +1 -1
  63. package/i18n/lithuanian.min.js +1 -1
  64. package/i18n/macedonian.js +1 -1
  65. package/i18n/macedonian.min.js +1 -1
  66. package/i18n/malay.js +1 -1
  67. package/i18n/malay.min.js +1 -1
  68. package/i18n/nl-BE.js +1 -1
  69. package/i18n/nl-BE.min.js +1 -1
  70. package/i18n/norwegian.js +1 -1
  71. package/i18n/norwegian.min.js +1 -1
  72. package/i18n/persian.js +1 -1
  73. package/i18n/persian.min.js +1 -1
  74. package/i18n/polish.js +1 -1
  75. package/i18n/polish.min.js +1 -1
  76. package/i18n/portuguese-br.js +1 -1
  77. package/i18n/portuguese-br.min.js +1 -1
  78. package/i18n/portuguese.js +1 -1
  79. package/i18n/portuguese.min.js +1 -1
  80. package/i18n/romanian.js +1 -1
  81. package/i18n/romanian.min.js +1 -1
  82. package/i18n/russian.js +1 -1
  83. package/i18n/russian.min.js +1 -1
  84. package/i18n/serbian.js +1 -1
  85. package/i18n/serbian.min.js +1 -1
  86. package/i18n/simplified-chinese.js +1 -1
  87. package/i18n/simplified-chinese.min.js +1 -1
  88. package/i18n/slovak.js +1 -1
  89. package/i18n/slovak.min.js +1 -1
  90. package/i18n/spanish.js +1 -1
  91. package/i18n/spanish.min.js +1 -1
  92. package/i18n/swahili.js +1 -1
  93. package/i18n/swahili.min.js +1 -1
  94. package/i18n/swedish.js +1 -1
  95. package/i18n/swedish.min.js +1 -1
  96. package/i18n/tajik.js +1 -1
  97. package/i18n/tajik.min.js +1 -1
  98. package/i18n/telugu.js +1 -1
  99. package/i18n/telugu.min.js +1 -1
  100. package/i18n/thai.js +1 -1
  101. package/i18n/thai.min.js +1 -1
  102. package/i18n/traditional-chinese.js +1 -1
  103. package/i18n/traditional-chinese.min.js +1 -1
  104. package/i18n/turkish.js +1 -1
  105. package/i18n/turkish.min.js +1 -1
  106. package/i18n/ukrainian.js +1 -1
  107. package/i18n/ukrainian.min.js +1 -1
  108. package/i18n/urdu.js +1 -1
  109. package/i18n/urdu.min.js +1 -1
  110. package/i18n/vietnamese.js +1 -1
  111. package/i18n/vietnamese.min.js +1 -1
  112. package/i18n/welsh.js +1 -1
  113. package/i18n/welsh.min.js +1 -1
  114. package/modern.css +187 -1
  115. package/modern.css.map +1 -1
  116. package/modern.fontless.css +187 -1
  117. package/modern.fontless.css.map +1 -1
  118. package/modern.fontless.min.css +2 -2
  119. package/modern.min.css +2 -2
  120. package/package.json +1 -1
  121. package/plugins/bootstrap-integration.js +1 -1
  122. package/plugins/bootstrap-integration.min.js +1 -1
  123. package/plugins/bootstrap-material-integration.js +1 -1
  124. package/plugins/bootstrap-material-integration.min.js +1 -1
  125. package/survey.core.js +1096 -178
  126. package/survey.core.js.map +1 -1
  127. package/survey.core.min.js +3 -3
  128. package/survey.css +1 -1
  129. package/survey.css.map +1 -1
  130. package/survey.i18n.js +3 -3
  131. package/survey.i18n.js.map +1 -1
  132. package/survey.i18n.min.js +2 -2
  133. package/survey.min.css +1 -1
  134. package/themes/borderless-dark-panelless.js +1 -1
  135. package/themes/borderless-dark-panelless.min.js +1 -1
  136. package/themes/borderless-dark.js +1 -1
  137. package/themes/borderless-dark.min.js +1 -1
  138. package/themes/borderless-light-panelless..js +1 -1
  139. package/themes/borderless-light-panelless..min.js +1 -1
  140. package/themes/borderless-light.js +1 -1
  141. package/themes/borderless-light.min.js +1 -1
  142. package/themes/contrast-dark-panelless.js +1 -1
  143. package/themes/contrast-dark-panelless.min.js +1 -1
  144. package/themes/contrast-dark.js +1 -1
  145. package/themes/contrast-dark.min.js +1 -1
  146. package/themes/contrast-light-panelless.js +1 -1
  147. package/themes/contrast-light-panelless.min.js +1 -1
  148. package/themes/contrast-light.js +1 -1
  149. package/themes/contrast-light.min.js +1 -1
  150. package/themes/default-dark-panelless.js +1 -1
  151. package/themes/default-dark-panelless.min.js +1 -1
  152. package/themes/default-dark.js +1 -1
  153. package/themes/default-dark.min.js +1 -1
  154. package/themes/default-light-panelless.js +1 -1
  155. package/themes/default-light-panelless.min.js +1 -1
  156. package/themes/default-light.js +1 -1
  157. package/themes/default-light.min.js +1 -1
  158. package/themes/doubleborder-dark-panelless.js +1 -1
  159. package/themes/doubleborder-dark-panelless.min.js +1 -1
  160. package/themes/doubleborder-dark.js +1 -1
  161. package/themes/doubleborder-dark.min.js +1 -1
  162. package/themes/doubleborder-light-panelles.js +1 -1
  163. package/themes/doubleborder-light-panelles.min.js +1 -1
  164. package/themes/doubleborder-light.js +1 -1
  165. package/themes/doubleborder-light.min.js +1 -1
  166. package/themes/flat-dark-panelless.js +1 -1
  167. package/themes/flat-dark-panelless.min.js +1 -1
  168. package/themes/flat-dark.js +1 -1
  169. package/themes/flat-dark.min.js +1 -1
  170. package/themes/flat-light-panelless.js +1 -1
  171. package/themes/flat-light-panelless.min.js +1 -1
  172. package/themes/flat-light.js +1 -1
  173. package/themes/flat-light.min.js +1 -1
  174. package/themes/index.js +1 -1
  175. package/themes/index.min.js +1 -1
  176. package/themes/layered-dark-panelless.js +1 -1
  177. package/themes/layered-dark-panelless.min.js +1 -1
  178. package/themes/layered-dark.js +1 -1
  179. package/themes/layered-dark.min.js +1 -1
  180. package/themes/layered-light-panelless.js +1 -1
  181. package/themes/layered-light-panelless.min.js +1 -1
  182. package/themes/layered-light.js +1 -1
  183. package/themes/layered-light.min.js +1 -1
  184. package/themes/plain-dark-panelless.js +1 -1
  185. package/themes/plain-dark-panelless.min.js +1 -1
  186. package/themes/plain-dark.js +1 -1
  187. package/themes/plain-dark.min.js +1 -1
  188. package/themes/plain-light-panelless.js +1 -1
  189. package/themes/plain-light-panelless.min.js +1 -1
  190. package/themes/plain-light.js +1 -1
  191. package/themes/plain-light.min.js +1 -1
  192. package/themes/sharp-dark-panelless.js +1 -1
  193. package/themes/sharp-dark-panelless.min.js +1 -1
  194. package/themes/sharp-dark.js +1 -1
  195. package/themes/sharp-dark.min.js +1 -1
  196. package/themes/sharp-light-panelless.js +1 -1
  197. package/themes/sharp-light-panelless.min.js +1 -1
  198. package/themes/sharp-light.js +1 -1
  199. package/themes/sharp-light.min.js +1 -1
  200. package/themes/solid-dark-panelless.js +1 -1
  201. package/themes/solid-dark-panelless.min.js +1 -1
  202. package/themes/solid-dark.js +1 -1
  203. package/themes/solid-dark.min.js +1 -1
  204. package/themes/solid-light-panelless.js +1 -1
  205. package/themes/solid-light-panelless.min.js +1 -1
  206. package/themes/solid-light.js +1 -1
  207. package/themes/solid-light.min.js +1 -1
  208. package/themes/three-dimensional-dark-panelless.js +1 -1
  209. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  210. package/themes/three-dimensional-dark.js +1 -1
  211. package/themes/three-dimensional-dark.min.js +1 -1
  212. package/themes/three-dimensional-light-panelless.js +1 -1
  213. package/themes/three-dimensional-light-panelless.min.js +1 -1
  214. package/themes/three-dimensional-light.js +1 -1
  215. package/themes/three-dimensional-light.min.js +1 -1
  216. package/ts3.4/typings/base.d.ts +4 -4
  217. package/ts3.4/typings/defaultCss/defaultV2Css.d.ts +14 -0
  218. package/ts3.4/typings/dragdrop/ranking-choices.d.ts +1 -1
  219. package/ts3.4/typings/dragdrop/ranking-select-to-rank.d.ts +6 -3
  220. package/ts3.4/typings/entries/core-wo-model.d.ts +1 -0
  221. package/ts3.4/typings/panel.d.ts +17 -4
  222. package/ts3.4/typings/popup-view-model.d.ts +14 -5
  223. package/ts3.4/typings/question_custom.d.ts +9 -0
  224. package/ts3.4/typings/question_matrixdropdowncolumn.d.ts +1 -2
  225. package/ts3.4/typings/question_multipletext.d.ts +67 -20
  226. package/ts3.4/typings/question_ranking.d.ts +12 -3
  227. package/ts3.4/typings/question_text.d.ts +2 -0
  228. package/ts3.4/typings/survey-element.d.ts +12 -1
  229. package/ts3.4/typings/utils/animation.d.ts +54 -0
  230. package/ts3.4/typings/utils/taskmanager.d.ts +28 -0
  231. package/typings/base.d.ts +4 -4
  232. package/typings/defaultCss/defaultV2Css.d.ts +14 -0
  233. package/typings/dragdrop/ranking-choices.d.ts +1 -1
  234. package/typings/dragdrop/ranking-select-to-rank.d.ts +6 -3
  235. package/typings/entries/core-wo-model.d.ts +1 -0
  236. package/typings/panel.d.ts +18 -3
  237. package/typings/popup-view-model.d.ts +15 -5
  238. package/typings/question_custom.d.ts +9 -0
  239. package/typings/question_matrixdropdowncolumn.d.ts +1 -2
  240. package/typings/question_multipletext.d.ts +70 -20
  241. package/typings/question_ranking.d.ts +12 -1
  242. package/typings/question_text.d.ts +2 -0
  243. package/typings/survey-element.d.ts +15 -1
  244. package/typings/utils/animation.d.ts +50 -0
  245. package/typings/utils/taskmanager.d.ts +28 -0
@@ -0,0 +1,28 @@
1
+ export interface IExecutable {
2
+ id?: string;
3
+ execute: () => void;
4
+ isCompleted: boolean;
5
+ dispose?: () => void;
6
+ }
7
+ export declare class Task implements IExecutable {
8
+ private func;
9
+ private isMultiple;
10
+ private _isCompleted;
11
+ constructor(func: () => void, isMultiple?: boolean);
12
+ execute: () => void;
13
+ discard(): void;
14
+ readonly isCompleted: boolean;
15
+ }
16
+ export declare class TaskManger {
17
+ private interval;
18
+ private static instance;
19
+ private static tasks;
20
+ private constructor();
21
+ static Instance(): TaskManger;
22
+ private tick;
23
+ static schedule(task: IExecutable): void;
24
+ }
25
+ export declare function debounce<T extends (...args: any) => void>(func: T): {
26
+ run: T;
27
+ cancel: () => void;
28
+ };
package/typings/base.d.ts CHANGED
@@ -294,12 +294,12 @@ export declare class Base {
294
294
  private getValueInLowCase;
295
295
  getElementsInDesign(includeHidden?: boolean): Array<IElement>;
296
296
  }
297
- export declare class ArrayChanges {
297
+ export declare class ArrayChanges<T = any> {
298
298
  index: number;
299
299
  deleteCount: number;
300
- itemsToAdd: any[];
301
- deletedItems: any[];
302
- constructor(index: number, deleteCount: number, itemsToAdd: any[], deletedItems: any[]);
300
+ itemsToAdd: T[];
301
+ deletedItems: T[];
302
+ constructor(index: number, deleteCount: number, itemsToAdd: T[], deletedItems: T[]);
303
303
  }
304
304
  export declare class Event<CallbackFunction extends Function, Sender, Options> {
305
305
  onCallbacksChanged: () => void;
@@ -45,6 +45,10 @@ export declare var defaultV2Css: {
45
45
  edit: string;
46
46
  };
47
47
  panel: {
48
+ contentFadeIn: string;
49
+ contentFadeOut: string;
50
+ fadeIn: string;
51
+ fadeOut: string;
48
52
  asPage: string;
49
53
  number: string;
50
54
  title: string;
@@ -67,6 +71,8 @@ export declare var defaultV2Css: {
67
71
  header: string;
68
72
  collapsed: string;
69
73
  expanded: string;
74
+ expandable: string;
75
+ expandableAnimating: string;
70
76
  nested: string;
71
77
  invisible: string;
72
78
  navigationButton: string;
@@ -154,8 +160,14 @@ export declare var defaultV2Css: {
154
160
  row: string;
155
161
  rowMultiple: string;
156
162
  rowCompact: string;
163
+ rowFadeIn: string;
164
+ rowFadeOut: string;
157
165
  pageRow: string;
158
166
  question: {
167
+ contentFadeIn: string;
168
+ contentFadeOut: string;
169
+ fadeIn: string;
170
+ fadeOut: string;
159
171
  mainRoot: string;
160
172
  flowRoot: string;
161
173
  withFrame: string;
@@ -198,6 +210,8 @@ export declare var defaultV2Css: {
198
210
  hasErrorTop: string;
199
211
  hasErrorBottom: string;
200
212
  collapsed: string;
213
+ expandable: string;
214
+ expandableAnimating: string;
201
215
  expanded: string;
202
216
  nested: string;
203
217
  invisible: string;
@@ -15,6 +15,6 @@ export declare class DragDropRankingChoices extends DragDropChoices {
15
15
  protected updateDraggedElementShortcut(newIndex: number): void;
16
16
  protected ghostPositionChanged(): void;
17
17
  protected doBanDropHere: () => any;
18
- protected doDrop: () => any;
18
+ protected doDrop(): any;
19
19
  clear(): void;
20
20
  }
@@ -12,12 +12,15 @@ export declare class DragDropRankingSelectToRank extends DragDropRankingChoices
12
12
  fromIndex: number;
13
13
  toIndex: number;
14
14
  };
15
+ protected calculateIsBottom(clientY: number, dropTargetNode?: HTMLElement): boolean;
15
16
  private doUIEffects;
16
17
  private get isDraggedElementRanked();
17
18
  private get isDropTargetRanked();
18
19
  private get isDraggedElementUnranked();
19
20
  private get isDropTargetUnranked();
20
- selectToRank(questionModel: QuestionRankingModel, fromIndex: number, toIndex: number): void;
21
- unselectFromRank(questionModel: QuestionRankingModel, fromIndex: number, toIndex?: number): void;
22
- reorderRankedItem(questionModel: QuestionRankingModel, fromIndex: number, toIndex: number): void;
21
+ private updateChoices;
22
+ selectToRank: (questionModel: QuestionRankingModel, fromIndex: number, toIndex: number) => void;
23
+ unselectFromRank: (questionModel: QuestionRankingModel, fromIndex: number, toIndex?: number) => void;
24
+ reorderRankedItem: (questionModel: QuestionRankingModel, fromIndex: number, toIndex: number, dropTargetNode?: HTMLElement) => void;
25
+ clear(): void;
23
26
  }
@@ -6,6 +6,7 @@ export * from "../rendererFactory";
6
6
  export * from "../utils/responsivity-manager";
7
7
  export { unwrap, getOriginalEvent, getElement } from "../utils/utils";
8
8
  export * from "../actions/action";
9
+ export * from "../utils/animation";
9
10
  export * from "../actions/adaptive-container";
10
11
  export * from "../actions/container";
11
12
  export * from "../utils/dragOrClickHelper";
@@ -9,6 +9,7 @@ import { SurveyError } from "./survey-error";
9
9
  import { IAction } from "./actions/action";
10
10
  import { ActionContainer } from "./actions/container";
11
11
  import { DragDropInfo } from "./drag-drop-helper-v1";
12
+ import { AnimationGroup } from "./utils/animation";
12
13
  export declare class QuestionRowModel extends Base {
13
14
  panel: PanelModelBase;
14
15
  private static rowCounter;
@@ -24,8 +25,13 @@ export declare class QuestionRowModel extends Base {
24
25
  setIsLazyRendering(val: boolean): void;
25
26
  isLazyRendering(): boolean;
26
27
  get id(): string;
28
+ protected equalsCore(obj: Base): boolean;
27
29
  get elements(): Array<IElement>;
30
+ private getVisibleElementsAnimationOptions;
31
+ visibleElementsAnimation: AnimationGroup<IElement>;
32
+ set visibleElements(val: Array<IElement>);
28
33
  get visibleElements(): Array<IElement>;
34
+ onVisibleChangedCallback: () => void;
29
35
  get visible(): boolean;
30
36
  set visible(val: boolean);
31
37
  get isNeedRender(): boolean;
@@ -37,11 +43,12 @@ export declare class QuestionRowModel extends Base {
37
43
  private getRenderedCalcWidth;
38
44
  private getElementWidth;
39
45
  private getRenderedWidthFromWidth;
40
- private calcVisible;
41
- private needToUpdateVisibleElements;
42
46
  dragTypeOverMe: DragTypeOverMeEnum;
43
47
  dispose(): void;
44
48
  getRowCss(): string;
49
+ private rootElement?;
50
+ setRootElement(element?: HTMLElement): void;
51
+ getRootElement(): HTMLElement;
45
52
  }
46
53
  /**
47
54
  * A base class for the [PanelModel](https://surveyjs.io/form-library/documentation/panelmodel) and [PageModel](https://surveyjs.io/form-library/documentation/pagemodel) classes.
@@ -56,6 +63,13 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
56
63
  removeElementCallback: (element: IElement) => void;
57
64
  onGetQuestionTitleLocation: () => string;
58
65
  private dragDropPanelHelper;
66
+ onAddRow(row: QuestionRowModel): void;
67
+ private getRowsAnimationOptions;
68
+ private rowsAnimation;
69
+ get visibleRows(): Array<QuestionRowModel>;
70
+ set visibleRows(val: Array<QuestionRowModel>);
71
+ onRemoveRow(row: QuestionRowModel): void;
72
+ onRowVisibleChanged(): void;
59
73
  constructor(name?: string);
60
74
  getType(): string;
61
75
  setSurveyImpl(value: ISurveyImpl, isLight?: boolean): void;
@@ -327,7 +341,8 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
327
341
  * @see visible
328
342
  */
329
343
  get isVisible(): boolean;
330
- getIsPageVisible(exceptionQuestion: IQuestion): boolean;
344
+ getIsContentVisible(exceptionQuestion?: IQuestion): boolean;
345
+ getIsPageVisible(exceptionQuestion?: IQuestion): boolean;
331
346
  private lastVisibleIndex;
332
347
  setVisibleIndex(index: number): number;
333
348
  private updateVisibleIndexes;
@@ -1,11 +1,10 @@
1
- import { Base } from "./base";
1
+ import { Base, EventBase } from "./base";
2
2
  import { PopupModel } from "./popup";
3
3
  import { CssClassBuilder } from "./utils/cssClassBuilder";
4
4
  import { ActionContainer } from "./actions/container";
5
+ import { AnimationOptions, IAnimationConsumer } from "./utils/animation";
5
6
  export declare const FOCUS_INPUT_SELECTOR = "input:not(:disabled):not([readonly]):not([type=hidden]),select:not(:disabled):not([readonly]),textarea:not(:disabled):not([readonly]), button:not(:disabled):not([readonly]), [tabindex]:not([tabindex^=\"-\"])";
6
- export declare class PopupBaseViewModel extends Base {
7
- private static SubscriptionId;
8
- private subscriptionId;
7
+ export declare class PopupBaseViewModel extends Base implements IAnimationConsumer {
9
8
  protected popupSelector: string;
10
9
  protected fixedPopupContainer: string;
11
10
  protected containerSelector: string;
@@ -17,8 +16,18 @@ export declare class PopupBaseViewModel extends Base {
17
16
  height: string;
18
17
  width: string;
19
18
  minWidth: string;
20
- isVisible: boolean;
19
+ _isVisible: boolean;
21
20
  locale: string;
21
+ private updateIsVisible;
22
+ private visibilityAnimation;
23
+ getLeaveOptions(): AnimationOptions;
24
+ getEnterOptions(): AnimationOptions;
25
+ getAnimatedElement(): HTMLElement;
26
+ isAnimationEnabled(): boolean;
27
+ private getAnimationContainer;
28
+ set isVisible(val: boolean);
29
+ get isVisible(): boolean;
30
+ onVisibilityChanged: EventBase<PopupBaseViewModel, any>;
22
31
  get container(): HTMLElement;
23
32
  private containerElement;
24
33
  private createdContainer;
@@ -31,6 +40,7 @@ export declare class PopupBaseViewModel extends Base {
31
40
  protected createFooterActionBar(): void;
32
41
  protected resetDimensionsAndPositionStyleProperties(): void;
33
42
  protected onModelChanging(newModel: PopupModel): void;
43
+ private onModelIsVisibleChangedCallback;
34
44
  private setupModel;
35
45
  private _model;
36
46
  get model(): PopupModel;
@@ -6,6 +6,7 @@ import { SurveyElement } from "./survey-element";
6
6
  import { PanelModel } from "./panel";
7
7
  import { HashTable } from "./helpers";
8
8
  import { ItemValue } from "./itemvalue";
9
+ import { SurveyError } from "./survey-error";
9
10
  /**
10
11
  * An interface used to create custom question types.
11
12
  *
@@ -224,6 +225,12 @@ export interface ICustomQuestionTypeConfiguration {
224
225
  * @see questionJSON
225
226
  */
226
227
  createQuestion?: any;
228
+ /**
229
+ * A function that allows you to display different error texts based on conditions.
230
+ * @param question A custom question. Use the `question.value` property to access the question's value.
231
+ * @returns An error text.
232
+ */
233
+ getErrorText?: (question: Question) => string;
227
234
  valueToQuestion?: (val: any) => any;
228
235
  valueFromQuestion?: (val: any) => any;
229
236
  getValue?: (val: any) => any;
@@ -243,6 +250,7 @@ export declare class ComponentQuestionJSON {
243
250
  onPropertyChanged(question: Question, propertyName: string, newValue: any): void;
244
251
  onValueChanged(question: Question, name: string, newValue: any): void;
245
252
  onValueChanging(question: Question, name: string, newValue: any): any;
253
+ onGetErrorText(question: Question): string;
246
254
  onItemValuePropertyChanged(question: Question, item: ItemValue, propertyName: string, name: string, newValue: any): void;
247
255
  getDisplayValue(keyAsText: boolean, value: any, question: Question): any;
248
256
  get defaultQuestionTitle(): any;
@@ -295,6 +303,7 @@ export declare abstract class QuestionCustomModelBase extends Question implement
295
303
  protected onUpdateQuestionCssClasses(element: Question, css: any): void;
296
304
  protected setQuestionValue(newValue: any, updateIsAnswered?: boolean): void;
297
305
  protected setNewValue(newValue: any): void;
306
+ protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
298
307
  getSurveyData(): ISurveyData;
299
308
  getTextProcessor(): ITextProcessor;
300
309
  getValue(name: string): any;
@@ -101,10 +101,9 @@ export declare class MatrixDropdownColumn extends Base implements ILocalizableOw
101
101
  get locTitle(): LocalizableString;
102
102
  get fullTitle(): string;
103
103
  /**
104
- * Marks the column as required. If a respondent skips any cell in a required column, the matrix displays a validation error.
104
+ * Marks the column as required. If a respondent skips any cell in a required column, the matrix displays a [validation error](#requiredErrorText).
105
105
  *
106
106
  * If you want to mark the column as required based on a condition, specify the [`requiredIf`](#requiredIf) property.
107
- * @see requiredErrorText
108
107
  * @see visible
109
108
  * @see readOnly
110
109
  */
@@ -6,6 +6,7 @@ import { QuestionTextModel } from "./question_text";
6
6
  import { SurveyError } from "./survey-error";
7
7
  import { ILocalizableOwner, LocalizableString } from "./localizablestring";
8
8
  import { HashTable } from "./helpers";
9
+ import { InputMaskBase } from "./mask/mask_base";
9
10
  export interface IMultipleTextData extends ILocalizableOwner, IPanel {
10
11
  getSurvey(): ISurvey;
11
12
  getTextProcessor(): ITextProcessor;
@@ -21,9 +22,9 @@ export declare class MultipleTextEditorModel extends QuestionTextModel {
21
22
  get a11y_input_ariaDescribedBy(): string;
22
23
  }
23
24
  /**
24
- * A class that describes an item in a [Multiple Textboxes](https://surveyjs.io/form-library/documentation/api-reference/multiple-text-entry-question-model) question.
25
+ * A class that describes an [item](https://surveyjs.io/form-library/documentation/api-reference/multiple-text-entry-question-model#items) in a Multiple Textboxes question.
25
26
  *
26
- * [View Demo](https://surveyjs.io/form-library/examples/multiple-text-box-question/)
27
+ * [View Demo](https://surveyjs.io/form-library/examples/multiple-text-box-question/ (linkStyle))
27
28
  */
28
29
  export declare class MultipleTextItemModel extends Base implements IValidatorOwner, ISurveyData, ISurveyImpl {
29
30
  private editorValue;
@@ -34,7 +35,10 @@ export declare class MultipleTextItemModel extends Base implements IValidatorOwn
34
35
  get id(): string;
35
36
  getOriginalObj(): Base;
36
37
  /**
37
- * The item name.
38
+ * An item ID that is not visible to respondents.
39
+ *
40
+ * > Item IDs must be unique.
41
+ * @see title
38
42
  */
39
43
  get name(): string;
40
44
  set name(val: string);
@@ -47,33 +51,34 @@ export declare class MultipleTextItemModel extends Base implements IValidatorOwn
47
51
  setData(data: IMultipleTextData): void;
48
52
  focusIn: () => void;
49
53
  /**
50
- * Set this property to true, to make the item a required. If a user doesn't fill the item then a validation error will be generated.
54
+ * Marks the item as required. If a respondent leaves this item empty, the question displays a [validation error](#requiredErrorText).
51
55
  */
52
56
  get isRequired(): boolean;
53
57
  set isRequired(val: boolean);
54
58
  /**
55
- * Use this property to change the default input type.
59
+ * A value passed on to the [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types) attribute of the underlying `<input>` element.
60
+ *
61
+ * Default value: `"text"`
56
62
  */
57
63
  get inputType(): string;
58
64
  set inputType(val: string);
59
65
  /**
60
- * Item title. If it is empty, the item name is rendered as title. This property supports markdown.
61
- * @see name
66
+ * A user-friendly item label to display. If `title` is undefined, [`name`](https://surveyjs.io/form-library/documentation/api-reference/multipletextitemmodel#name) is displayed instead.
62
67
  */
63
68
  get title(): string;
64
69
  set title(val: string);
65
70
  get locTitle(): LocalizableString;
66
71
  get fullTitle(): string;
67
72
  /**
68
- * The maximum text length. If it is -1, defaul value, then the survey maxTextLength property will be used.
69
- * If it is 0, then the value is unlimited
70
- * @see SurveyModel.maxTextLength
73
+ * The maximum text length measured in characters. Assign 0 if the length should be unlimited.
74
+ *
75
+ * Default value: -1 (inherits the actual value from the `SurveyModel`'s [`maxTextLength`](https://surveyjs.io/form-library/documentation/surveymodel#maxTextLength) property).
71
76
  */
72
77
  get maxLength(): number;
73
78
  set maxLength(val: number);
74
79
  getMaxLength(): any;
75
80
  /**
76
- * The input place holder.
81
+ * A placeholder for the input field.
77
82
  */
78
83
  get placeholder(): string;
79
84
  set placeholder(val: string);
@@ -82,39 +87,83 @@ export declare class MultipleTextItemModel extends Base implements IValidatorOwn
82
87
  set placeHolder(val: string);
83
88
  get locPlaceHolder(): LocalizableString;
84
89
  /**
85
- * The custom text that will be shown on required error. Use this property, if you do not want to show the default text.
90
+ * Specifies a custom error message for a [required item](#isRequired).
86
91
  */
87
92
  get requiredErrorText(): string;
88
93
  set requiredErrorText(val: string);
89
94
  get locRequiredErrorText(): LocalizableString;
90
95
  /**
91
- * The input size.
96
+ * A value passed on to the [`size`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/size) attribute of the underlying `<input>` element.
97
+ *
98
+ * If you want to set a uniform `size` for all text box items, use the [`itemSize`](https://surveyjs.io/form-library/documentation/api-reference/multiple-text-entry-question-model#itemSize) within the Multiple Textboxes configuration.
92
99
  */
93
100
  get size(): number;
94
101
  set size(val: number);
95
102
  /**
96
- * An expression used to calculate the [defaultValue](https://surveyjs.io/form-library/documentation/question#defaultValue).
103
+ * An [expression](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions) used to calculate the default item value.
104
+ * @see minValueExpression
105
+ * @see maxValueExpression
97
106
  */
98
107
  get defaultValueExpression(): string;
99
108
  set defaultValueExpression(val: string);
100
109
  /**
101
- * The minimum value specified as an expression. For example, `"minValueExpression": "today(-1)"` sets the minimum value to yesterday.
110
+ * An [expression](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions) used to calculate the minimum item value.
111
+ * @see maxValueExpression
112
+ * @see defaultValueExpression
102
113
  */
103
114
  get minValueExpression(): string;
104
115
  set minValueExpression(val: string);
105
116
  /**
106
- * The maximum value specified as an expression. For example, `"maxValueExpression": "today(1)"` sets the maximum value to tomorrow.
117
+ * An [expression](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions) used to calculate the maximum item value.
118
+ * @see minValueExpression
119
+ * @see defaultValueExpression
107
120
  */
108
121
  get maxValueExpression(): string;
109
122
  set maxValueExpression(val: string);
110
123
  /**
111
- * The list of question validators.
124
+ * Item validators.
125
+ *
126
+ * [Data Validation](https://surveyjs.io/form-library/documentation/data-validation (linkStyle))
112
127
  */
113
128
  get validators(): Array<SurveyValidator>;
114
129
  set validators(val: Array<SurveyValidator>);
115
130
  getValidators(): Array<SurveyValidator>;
116
131
  /**
117
- * The item value.
132
+ * Specifies the type of a mask applied to the input.
133
+ *
134
+ * Possible values:
135
+ *
136
+ * - `"none"` (default)
137
+ * - `"numeric"`
138
+ * - `"currency"`
139
+ * - `"datetime"`
140
+ * - `"pattern"`
141
+ *
142
+ * [View Demo](https://surveyjs.io/form-library/examples/masked-input-fields/ (linkStyle))
143
+ * @see maskSettings
144
+ */
145
+ get maskType(): string;
146
+ set maskType(val: string);
147
+ /**
148
+ * An object with properties that configure the mask applied to the input.
149
+ *
150
+ * Available properties depend on the specified [`maskType`](#maskType) and belong to corresponding classes. Refer to the class APIs for a full list of properties:
151
+ *
152
+ * | `maskType` | Class |
153
+ * | ---------- | ----- |
154
+ * | `"numeric"` | [`InputMaskNumeric`](https://surveyjs.io/form-library/documentation/api-reference/inputmasknumeric) |
155
+ * | `"currency"` | [`InputMaskCurrency`](https://surveyjs.io/form-library/documentation/api-reference/inputmaskcurrency) |
156
+ * | `"datetime"` | [`InputMaskDateTime`](https://surveyjs.io/form-library/documentation/api-reference/inputmaskdatetime) |
157
+ * | `"pattern"` | [`InputMaskPattern`](https://surveyjs.io/form-library/documentation/api-reference/inputmaskpattern) |
158
+ *
159
+ * [View Demo](https://surveyjs.io/form-library/examples/masked-input-fields/ (linkStyle))
160
+ */
161
+ get maskSettings(): InputMaskBase;
162
+ set maskSettings(val: InputMaskBase);
163
+ get inputTextAlignment(): "left" | "right" | "auto";
164
+ set inputTextAlignment(val: "left" | "right" | "auto");
165
+ /**
166
+ * An item value.
118
167
  */
119
168
  get value(): any;
120
169
  set value(value: any);
@@ -161,9 +210,9 @@ export declare class QuestionMultipleTextModel extends Question implements IMult
161
210
  private editorsOnSurveyLoad;
162
211
  private performForEveryEditor;
163
212
  /**
164
- * Gets or sets an array of `MultipleTextItemModel` objects that represent input items.
213
+ * Gets or sets an array of [`MultipleTextItemModel`](https://surveyjs.io/form-library/documentation/api-reference/multipletextitemmodel) objects that represent input items.
165
214
  *
166
- * This property accepts an array of objects with the following structure:
215
+ * Each object in this array should have at least the following properties:
167
216
  *
168
217
  * ```js
169
218
  * {
@@ -186,6 +235,7 @@ export declare class QuestionMultipleTextModel extends Question implements IMult
186
235
  */
187
236
  addItem(name: string, title?: string): MultipleTextItemModel;
188
237
  getItemByName(name: string): MultipleTextItemModel;
238
+ getElementsInDesign(includeHidden?: boolean): Array<IElement>;
189
239
  addConditionObjectsByContext(objects: Array<IConditionObject>, context: any): void;
190
240
  protected collectNestedQuestionsCore(questions: Question[], visibleOnly: boolean): void;
191
241
  getConditionJson(operator?: string, path?: string): any;
@@ -1,7 +1,9 @@
1
1
  import { ISurveyImpl } from "./base-interfaces";
2
2
  import { DragDropRankingChoices } from "./dragdrop/ranking-choices";
3
+ import { DragDropRankingSelectToRank } from "./dragdrop/ranking-select-to-rank";
3
4
  import { ItemValue } from "./itemvalue";
4
5
  import { QuestionCheckboxModel } from "./question_checkbox";
6
+ import { AnimationGroup } from "./utils/animation";
5
7
  /**
6
8
  * A class that describes the Ranking question type.
7
9
  *
@@ -21,6 +23,7 @@ export declare class QuestionRankingModel extends QuestionCheckboxModel {
21
23
  get ghostPositionCssClass(): string;
22
24
  getItemIndexClasses(item: ItemValue): string;
23
25
  getNumberByIndex(index: number): string;
26
+ private updateRankingChoicesSync;
24
27
  setSurveyImpl(value: ISurveyImpl, isLight?: boolean): void;
25
28
  isAnswerCorrect(): boolean;
26
29
  get requireStrictCompare(): boolean;
@@ -29,16 +32,24 @@ export declare class QuestionRankingModel extends QuestionCheckboxModel {
29
32
  localeChanged: () => void;
30
33
  private addToValueByVisibleChoices;
31
34
  private removeFromValueByVisibleChoices;
35
+ private getChoicesAnimation;
36
+ private _rankingChoicesAnimation;
37
+ get rankingChoicesAnimation(): AnimationGroup<ItemValue>;
38
+ private _unRankingChoicesAnimation;
39
+ get unRankingChoicesAnimation(): AnimationGroup<ItemValue>;
32
40
  get rankingChoices(): Array<ItemValue>;
41
+ set rankingChoices(val: Array<ItemValue>);
33
42
  get unRankingChoices(): Array<ItemValue>;
43
+ set unRankingChoices(val: Array<ItemValue>);
34
44
  private updateRankingChoices;
45
+ updateUnRankingChoices(newRankingChoices: Array<ItemValue>): void;
35
46
  private updateRankingChoicesSelectToRankMode;
36
47
  dragDropRankingChoices: DragDropRankingChoices;
37
48
  currentDropTarget: ItemValue;
38
49
  dropTargetNodeMove: string;
39
50
  endLoadingFromJson(): void;
40
51
  private setDragDropRankingChoices;
41
- protected createDragDropRankingChoices(): DragDropRankingChoices;
52
+ protected createDragDropRankingChoices(): DragDropRankingChoices | DragDropRankingSelectToRank;
42
53
  handlePointerDown: (event: PointerEvent, choice: ItemValue, node: HTMLElement) => void;
43
54
  private isDragStartNodeValid;
44
55
  private get allowStartDrag();
@@ -60,6 +60,8 @@ export declare class QuestionTextModel extends QuestionTextBase {
60
60
  onSurveyLoad(): void;
61
61
  /**
62
62
  * A value passed on to the [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types) attribute of the underlying `<input>` element.
63
+ *
64
+ * Default value: `"text"`
63
65
  */
64
66
  get inputType(): string;
65
67
  set inputType(val: string);
@@ -324,7 +324,7 @@ export declare class SurveyElement<E = any> extends SurveyElementCore implements
324
324
  protected setPage(parent: IPanel, newPage: IPage): void;
325
325
  protected getSearchableLocKeys(keys: Array<string>): void;
326
326
  get isDefaultV2Theme(): boolean;
327
- get hasParent(): any;
327
+ get hasParent(): boolean;
328
328
  isSingleInRow: boolean;
329
329
  private shouldAddRunnerStyles;
330
330
  protected get isCompact(): boolean;
@@ -399,5 +399,19 @@ export declare class SurveyElement<E = any> extends SurveyElementCore implements
399
399
  protected getAdditionalTitleToolbar(): ActionContainer | null;
400
400
  protected getCssTitle(cssClasses: any): string;
401
401
  localeChanged(): void;
402
+ private wrapperElement?;
403
+ setWrapperElement(element?: HTMLElement): void;
404
+ getWrapperElement(): HTMLElement;
405
+ private _renderedIsExpanded;
406
+ private _isAnimatingCollapseExpand;
407
+ private set isAnimatingCollapseExpand(value);
408
+ private get isAnimatingCollapseExpand();
409
+ private getExpandCollapseAnimationOptions;
410
+ private animationCollapsed;
411
+ set renderedIsExpanded(val: boolean);
412
+ get renderedIsExpanded(): boolean;
413
+ private animationAllowedValue;
414
+ get animationAllowed(): boolean;
415
+ set animationAllowed(val: boolean);
402
416
  dispose(): void;
403
417
  }
@@ -0,0 +1,50 @@
1
+ export interface AnimationOptions {
2
+ cssClass: string;
3
+ onBeforeRunAnimation?: (element: HTMLElement) => void;
4
+ onAfterRunAnimation?: (element: HTMLElement) => void;
5
+ }
6
+ export interface IAnimationConsumer<T extends Array<any> = []> {
7
+ getLeaveOptions(...args: T): AnimationOptions;
8
+ getEnterOptions(...args: T): AnimationOptions;
9
+ getAnimatedElement(...args: T): HTMLElement;
10
+ isAnimationEnabled(): boolean;
11
+ }
12
+ export declare class AnimationUtils {
13
+ private getMsFromRule;
14
+ private getAnimationsCount;
15
+ private getAnimationDuration;
16
+ private cancelQueue;
17
+ protected onAnimationEnd(element: HTMLElement, callback: (isCancel?: boolean) => void, options: AnimationOptions): void;
18
+ protected beforeAnimationRun(element: HTMLElement, options: AnimationOptions | AnimationOptions): void;
19
+ protected runLeaveAnimation(element: HTMLElement, options: AnimationOptions, callback: () => void): void;
20
+ protected runEnterAnimation(element: HTMLElement, options: AnimationOptions): void;
21
+ cancel(): void;
22
+ }
23
+ export declare class AnimationPropertyUtils extends AnimationUtils {
24
+ onEnter(getElement: () => HTMLElement, options: AnimationOptions): void;
25
+ onLeave(getElement: () => HTMLElement, callback: () => void, options: AnimationOptions): void;
26
+ }
27
+ export declare class AnimationGroupUtils<T> extends AnimationUtils {
28
+ onEnter(getElement: (el: T) => HTMLElement, getOptions: (el: T) => AnimationOptions, elements: Array<T>): void;
29
+ onLeave(getElement: (el: T) => HTMLElement, callback: () => void, getOptions: (el: T) => AnimationOptions, elements: Array<T>): void;
30
+ }
31
+ declare abstract class AnimationProperty<T, S extends Array<any> = []> {
32
+ protected animationOptions: IAnimationConsumer<S>;
33
+ protected update: (val: T) => void;
34
+ protected getCurrentValue: () => T;
35
+ constructor(animationOptions: IAnimationConsumer<S>, update: (val: T) => void, getCurrentValue: () => T);
36
+ protected animation: AnimationUtils;
37
+ protected abstract _sync(newValue: T): void;
38
+ private _debouncedSync;
39
+ sync(newValue: T): void;
40
+ cancel(): void;
41
+ }
42
+ export declare class AnimationBoolean extends AnimationProperty<boolean> {
43
+ protected animation: AnimationPropertyUtils;
44
+ protected _sync(newValue: boolean): void;
45
+ }
46
+ export declare class AnimationGroup<T> extends AnimationProperty<Array<T>, [T]> {
47
+ protected animation: AnimationGroupUtils<T>;
48
+ protected _sync(newValue: Array<T>): void;
49
+ }
50
+ export {};
@@ -0,0 +1,28 @@
1
+ export interface IExecutable {
2
+ id?: string;
3
+ execute: () => void;
4
+ isCompleted: boolean;
5
+ dispose?: () => void;
6
+ }
7
+ export declare class Task implements IExecutable {
8
+ private func;
9
+ private isMultiple;
10
+ private _isCompleted;
11
+ constructor(func: () => void, isMultiple?: boolean);
12
+ execute: () => void;
13
+ discard(): void;
14
+ get isCompleted(): boolean;
15
+ }
16
+ export declare class TaskManger {
17
+ private interval;
18
+ private static instance;
19
+ private static tasks;
20
+ private constructor();
21
+ static Instance(): TaskManger;
22
+ private tick;
23
+ static schedule(task: IExecutable): void;
24
+ }
25
+ export declare function debounce<T extends (...args: any) => void>(func: T): {
26
+ run: T;
27
+ cancel: () => void;
28
+ };