survey-core 1.9.135 → 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 (251) hide show
  1. package/defaultV2.css +385 -19
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +385 -19
  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 +1140 -196
  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 +17 -0
  218. package/ts3.4/typings/dragdrop/dom-adapter.d.ts +2 -0
  219. package/ts3.4/typings/dragdrop/ranking-choices.d.ts +1 -1
  220. package/ts3.4/typings/dragdrop/ranking-select-to-rank.d.ts +6 -3
  221. package/ts3.4/typings/entries/core-wo-model.d.ts +1 -0
  222. package/ts3.4/typings/panel.d.ts +17 -4
  223. package/ts3.4/typings/popup-view-model.d.ts +14 -5
  224. package/ts3.4/typings/question_checkbox.d.ts +1 -0
  225. package/ts3.4/typings/question_custom.d.ts +9 -0
  226. package/ts3.4/typings/question_matrixdropdowncolumn.d.ts +2 -3
  227. package/ts3.4/typings/question_multipletext.d.ts +67 -20
  228. package/ts3.4/typings/question_paneldynamic.d.ts +1 -1
  229. package/ts3.4/typings/question_ranking.d.ts +12 -3
  230. package/ts3.4/typings/question_text.d.ts +4 -0
  231. package/ts3.4/typings/survey-element.d.ts +12 -1
  232. package/ts3.4/typings/utils/animation.d.ts +54 -0
  233. package/ts3.4/typings/utils/taskmanager.d.ts +28 -0
  234. package/typings/base.d.ts +4 -4
  235. package/typings/defaultCss/defaultV2Css.d.ts +17 -0
  236. package/typings/dragdrop/dom-adapter.d.ts +2 -0
  237. package/typings/dragdrop/ranking-choices.d.ts +1 -1
  238. package/typings/dragdrop/ranking-select-to-rank.d.ts +6 -3
  239. package/typings/entries/core-wo-model.d.ts +1 -0
  240. package/typings/panel.d.ts +18 -3
  241. package/typings/popup-view-model.d.ts +15 -5
  242. package/typings/question_checkbox.d.ts +1 -0
  243. package/typings/question_custom.d.ts +9 -0
  244. package/typings/question_matrixdropdowncolumn.d.ts +3 -4
  245. package/typings/question_multipletext.d.ts +70 -20
  246. package/typings/question_paneldynamic.d.ts +1 -1
  247. package/typings/question_ranking.d.ts +12 -1
  248. package/typings/question_text.d.ts +4 -0
  249. package/typings/survey-element.d.ts +15 -1
  250. package/typings/utils/animation.d.ts +50 -0
  251. package/typings/utils/taskmanager.d.ts +28 -0
@@ -0,0 +1,54 @@
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
+ ]> {
8
+ getLeaveOptions(...args: T): AnimationOptions;
9
+ getEnterOptions(...args: T): AnimationOptions;
10
+ getAnimatedElement(...args: T): HTMLElement;
11
+ isAnimationEnabled(): boolean;
12
+ }
13
+ export declare class AnimationUtils {
14
+ private getMsFromRule;
15
+ private getAnimationsCount;
16
+ private getAnimationDuration;
17
+ private cancelQueue;
18
+ protected onAnimationEnd(element: HTMLElement, callback: (isCancel?: boolean) => void, options: AnimationOptions): void;
19
+ protected beforeAnimationRun(element: HTMLElement, options: AnimationOptions | AnimationOptions): void;
20
+ protected runLeaveAnimation(element: HTMLElement, options: AnimationOptions, callback: () => void): void;
21
+ protected runEnterAnimation(element: HTMLElement, options: AnimationOptions): void;
22
+ cancel(): void;
23
+ }
24
+ export declare class AnimationPropertyUtils extends AnimationUtils {
25
+ onEnter(getElement: () => HTMLElement, options: AnimationOptions): void;
26
+ onLeave(getElement: () => HTMLElement, callback: () => void, options: AnimationOptions): void;
27
+ }
28
+ export declare class AnimationGroupUtils<T> extends AnimationUtils {
29
+ onEnter(getElement: (el: T) => HTMLElement, getOptions: (el: T) => AnimationOptions, elements: Array<T>): void;
30
+ onLeave(getElement: (el: T) => HTMLElement, callback: () => void, getOptions: (el: T) => AnimationOptions, elements: Array<T>): void;
31
+ }
32
+ declare abstract class AnimationProperty<T, S extends Array<any> = [
33
+ ]> {
34
+ protected animationOptions: IAnimationConsumer<S>;
35
+ protected update: (val: T) => void;
36
+ protected getCurrentValue: () => T;
37
+ constructor(animationOptions: IAnimationConsumer<S>, update: (val: T) => void, getCurrentValue: () => T);
38
+ protected animation: AnimationUtils;
39
+ protected abstract _sync(newValue: T): void;
40
+ private _debouncedSync;
41
+ sync(newValue: T): void;
42
+ cancel(): void;
43
+ }
44
+ export declare class AnimationBoolean extends AnimationProperty<boolean> {
45
+ protected animation: AnimationPropertyUtils;
46
+ protected _sync(newValue: boolean): void;
47
+ }
48
+ export declare class AnimationGroup<T> extends AnimationProperty<Array<T>, [
49
+ T
50
+ ]> {
51
+ protected animation: AnimationGroupUtils<T>;
52
+ protected _sync(newValue: Array<T>): void;
53
+ }
54
+ 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
+ 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;
@@ -126,6 +132,9 @@ export declare var defaultV2Css: {
126
132
  progressButtonsContainerCenter: string;
127
133
  progressButtonsContainer: string;
128
134
  progressButtonsConnector: string;
135
+ progressButtonsButton: string;
136
+ progressButtonsButtonBackground: string;
137
+ progressButtonsButtonContent: string;
129
138
  progressButtonsHeader: string;
130
139
  progressButtonsFooter: string;
131
140
  progressButtonsImageButtonLeft: string;
@@ -151,8 +160,14 @@ export declare var defaultV2Css: {
151
160
  row: string;
152
161
  rowMultiple: string;
153
162
  rowCompact: string;
163
+ rowFadeIn: string;
164
+ rowFadeOut: string;
154
165
  pageRow: string;
155
166
  question: {
167
+ contentFadeIn: string;
168
+ contentFadeOut: string;
169
+ fadeIn: string;
170
+ fadeOut: string;
156
171
  mainRoot: string;
157
172
  flowRoot: string;
158
173
  withFrame: string;
@@ -195,6 +210,8 @@ export declare var defaultV2Css: {
195
210
  hasErrorTop: string;
196
211
  hasErrorBottom: string;
197
212
  collapsed: string;
213
+ expandable: string;
214
+ expandableAnimating: string;
198
215
  expanded: string;
199
216
  nested: string;
200
217
  invisible: string;
@@ -3,6 +3,7 @@ export interface IDragDropDOMAdapter {
3
3
  startDrag(event: PointerEvent, draggedElement: any, parentElement: any, draggedElementNode: HTMLElement, preventSaveTargetNode: boolean): void;
4
4
  draggedElementShortcut: HTMLElement;
5
5
  rootContainer: HTMLElement;
6
+ documentOrShadowRoot: Document | ShadowRoot;
6
7
  }
7
8
  export declare class DragDropDOMAdapter implements IDragDropDOMAdapter {
8
9
  private dd;
@@ -19,6 +20,7 @@ export declare class DragDropDOMAdapter implements IDragDropDOMAdapter {
19
20
  private savedTargetNodeIndex;
20
21
  private scrollIntervalId;
21
22
  constructor(dd: IDragDropEngine, longTap?: boolean, fitToContainer?: boolean);
23
+ get documentOrShadowRoot(): Document | ShadowRoot;
22
24
  private get rootElement();
23
25
  private stopLongTapIfMoveEnough;
24
26
  private get isMicroMovement();
@@ -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;
@@ -126,6 +126,7 @@ export declare class QuestionCheckboxModel extends QuestionCheckboxBase {
126
126
  }>, isAddAll: boolean): void;
127
127
  protected isBuiltInChoice(item: ItemValue): boolean;
128
128
  isItemInList(item: ItemValue): boolean;
129
+ protected getDisplayValueEmpty(): string;
129
130
  protected getDisplayValueCore(keysAsText: boolean, value: any): any;
130
131
  protected clearIncorrectValuesCore(): void;
131
132
  protected clearDisabledValuesCore(): void;
@@ -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
  */
@@ -189,8 +188,8 @@ export declare class MatrixDropdownColumn extends Base implements ILocalizableOw
189
188
  * @see defaultValueExpression
190
189
  * @see resetValueIf
191
190
  */
192
- get setValueExpession(): string;
193
- set setValueExpession(val: string);
191
+ get setValueExpression(): string;
192
+ set setValueExpression(val: string);
194
193
  /**
195
194
  * Specifies whether a respondent is required to provide a unique response for each question within this column.
196
195
  *
@@ -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;
@@ -606,7 +606,7 @@ export declare class QuestionPanelDynamicModel extends Question implements IQues
606
606
  get progress(): string;
607
607
  getRootCss(): string;
608
608
  get cssHeader(): string;
609
- getPanelWrapperCss(): string;
609
+ getPanelWrapperCss(panel: PanelModel): string;
610
610
  getPanelRemoveButtonCss(): string;
611
611
  getAddButtonCss(): string;
612
612
  getPrevButtonCss(): string;
@@ -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();
@@ -34,6 +34,7 @@ export declare class QuestionTextModel extends QuestionTextBase {
34
34
  * @see maskSettings
35
35
  */
36
36
  maskType: string;
37
+ inputTextAlignment: "left" | "right" | "auto";
37
38
  get maskTypeIsEmpty(): boolean;
38
39
  /**
39
40
  * An object with properties that configure the mask applied to the input.
@@ -59,6 +60,8 @@ export declare class QuestionTextModel extends QuestionTextBase {
59
60
  onSurveyLoad(): void;
60
61
  /**
61
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"`
62
65
  */
63
66
  get inputType(): string;
64
67
  set inputType(val: string);
@@ -166,6 +169,7 @@ export declare class QuestionTextModel extends QuestionTextBase {
166
169
  protected getControlCssClassBuilder(): CssClassBuilder;
167
170
  isReadOnlyRenderDiv(): boolean;
168
171
  get inputStyle(): any;
172
+ private updateTextAlign;
169
173
  private _isWaitingForEnter;
170
174
  private updateValueOnEvent;
171
175
  onCompositionUpdate: (event: any) => void;