survey-core 1.9.136 → 1.9.138

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 (257) hide show
  1. package/defaultV2.css +353 -9
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +353 -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 +1218 -233
  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/matrix-rows.d.ts +2 -1
  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/mask/input_element_adapter.d.ts +1 -0
  223. package/ts3.4/typings/mask/mask_datetime.d.ts +12 -2
  224. package/ts3.4/typings/mask/mask_numeric.d.ts +1 -1
  225. package/ts3.4/typings/panel.d.ts +17 -4
  226. package/ts3.4/typings/popup-view-model.d.ts +14 -5
  227. package/ts3.4/typings/question_custom.d.ts +11 -0
  228. package/ts3.4/typings/question_imagepicker.d.ts +36 -6
  229. package/ts3.4/typings/question_matrixdropdowncolumn.d.ts +1 -2
  230. package/ts3.4/typings/question_matrixdynamic.d.ts +1 -0
  231. package/ts3.4/typings/question_multipletext.d.ts +67 -20
  232. package/ts3.4/typings/question_ranking.d.ts +12 -3
  233. package/ts3.4/typings/question_text.d.ts +2 -0
  234. package/ts3.4/typings/survey-element.d.ts +12 -1
  235. package/ts3.4/typings/utils/animation.d.ts +54 -0
  236. package/ts3.4/typings/utils/taskmanager.d.ts +28 -0
  237. package/typings/base.d.ts +4 -4
  238. package/typings/defaultCss/defaultV2Css.d.ts +14 -0
  239. package/typings/dragdrop/matrix-rows.d.ts +2 -1
  240. package/typings/dragdrop/ranking-choices.d.ts +1 -1
  241. package/typings/dragdrop/ranking-select-to-rank.d.ts +6 -3
  242. package/typings/entries/core-wo-model.d.ts +1 -0
  243. package/typings/mask/input_element_adapter.d.ts +1 -0
  244. package/typings/mask/mask_datetime.d.ts +12 -2
  245. package/typings/mask/mask_numeric.d.ts +1 -1
  246. package/typings/panel.d.ts +18 -3
  247. package/typings/popup-view-model.d.ts +15 -5
  248. package/typings/question_custom.d.ts +11 -0
  249. package/typings/question_imagepicker.d.ts +36 -6
  250. package/typings/question_matrixdropdowncolumn.d.ts +1 -2
  251. package/typings/question_matrixdynamic.d.ts +2 -0
  252. package/typings/question_multipletext.d.ts +70 -20
  253. package/typings/question_ranking.d.ts +12 -1
  254. package/typings/question_text.d.ts +2 -0
  255. package/typings/survey-element.d.ts +15 -1
  256. package/typings/utils/animation.d.ts +50 -0
  257. package/typings/utils/taskmanager.d.ts +28 -0
@@ -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
  readonly 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
  readonly 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
  name: string;
40
44
  readonly question: Question;
@@ -46,62 +50,104 @@ export declare class MultipleTextItemModel extends Base implements IValidatorOwn
46
50
  setData(data: IMultipleTextData): void;
47
51
  focusIn: () => void;
48
52
  /*
49
- * 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.
53
+ * Marks the item as required. If a respondent leaves this item empty, the question displays a [validation error](#requiredErrorText).
50
54
  */
51
55
  isRequired: boolean;
52
56
  /*
53
- * Use this property to change the default input type.
57
+ * 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.
58
+ *
59
+ * Default value: `"text"`
54
60
  */
55
61
  inputType: string;
56
62
  /*
57
- * Item title. If it is empty, the item name is rendered as title. This property supports markdown.
58
- * @see name
63
+ * 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.
59
64
  */
60
65
  title: string;
61
66
  readonly locTitle: LocalizableString;
62
67
  readonly fullTitle: string;
63
68
  /*
64
- * The maximum text length. If it is -1, defaul value, then the survey maxTextLength property will be used.
65
- * If it is 0, then the value is unlimited
66
- * @see SurveyModel.maxTextLength
69
+ * The maximum text length measured in characters. Assign 0 if the length should be unlimited.
70
+ *
71
+ * Default value: -1 (inherits the actual value from the `SurveyModel`'s [`maxTextLength`](https://surveyjs.io/form-library/documentation/surveymodel#maxTextLength) property).
67
72
  */
68
73
  maxLength: number;
69
74
  getMaxLength(): any;
70
75
  /*
71
- * The input place holder.
76
+ * A placeholder for the input field.
72
77
  */
73
78
  placeholder: string;
74
79
  readonly locPlaceholder: LocalizableString;
75
80
  placeHolder: string;
76
81
  readonly locPlaceHolder: LocalizableString;
77
82
  /*
78
- * The custom text that will be shown on required error. Use this property, if you do not want to show the default text.
83
+ * Specifies a custom error message for a [required item](#isRequired).
79
84
  */
80
85
  requiredErrorText: string;
81
86
  readonly locRequiredErrorText: LocalizableString;
82
87
  /*
83
- * The input size.
88
+ * A value passed on to the [`size`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/size) attribute of the underlying `<input>` element.
89
+ *
90
+ * 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.
84
91
  */
85
92
  size: number;
86
93
  /*
87
- * An expression used to calculate the [defaultValue](https://surveyjs.io/form-library/documentation/question#defaultValue).
94
+ * An [expression](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions) used to calculate the default item value.
95
+ * @see minValueExpression
96
+ * @see maxValueExpression
88
97
  */
89
98
  defaultValueExpression: string;
90
99
  /*
91
- * The minimum value specified as an expression. For example, `"minValueExpression": "today(-1)"` sets the minimum value to yesterday.
100
+ * An [expression](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions) used to calculate the minimum item value.
101
+ * @see maxValueExpression
102
+ * @see defaultValueExpression
92
103
  */
93
104
  minValueExpression: string;
94
105
  /*
95
- * The maximum value specified as an expression. For example, `"maxValueExpression": "today(1)"` sets the maximum value to tomorrow.
106
+ * An [expression](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#expressions) used to calculate the maximum item value.
107
+ * @see minValueExpression
108
+ * @see defaultValueExpression
96
109
  */
97
110
  maxValueExpression: string;
98
111
  /*
99
- * The list of question validators.
112
+ * Item validators.
113
+ *
114
+ * [Data Validation](https://surveyjs.io/form-library/documentation/data-validation (linkStyle))
100
115
  */
101
116
  validators: Array<SurveyValidator>;
102
117
  getValidators(): Array<SurveyValidator>;
103
118
  /*
104
- * The item value.
119
+ * Specifies the type of a mask applied to the input.
120
+ *
121
+ * Possible values:
122
+ *
123
+ * - `"none"` (default)
124
+ * - `"numeric"`
125
+ * - `"currency"`
126
+ * - `"datetime"`
127
+ * - `"pattern"`
128
+ *
129
+ * [View Demo](https://surveyjs.io/form-library/examples/masked-input-fields/ (linkStyle))
130
+ * @see maskSettings
131
+ */
132
+ maskType: string;
133
+ /*
134
+ * An object with properties that configure the mask applied to the input.
135
+ *
136
+ * Available properties depend on the specified [`maskType`](#maskType) and belong to corresponding classes. Refer to the class APIs for a full list of properties:
137
+ *
138
+ * | `maskType` | Class |
139
+ * | ---------- | ----- |
140
+ * | `"numeric"` | [`InputMaskNumeric`](https://surveyjs.io/form-library/documentation/api-reference/inputmasknumeric) |
141
+ * | `"currency"` | [`InputMaskCurrency`](https://surveyjs.io/form-library/documentation/api-reference/inputmaskcurrency) |
142
+ * | `"datetime"` | [`InputMaskDateTime`](https://surveyjs.io/form-library/documentation/api-reference/inputmaskdatetime) |
143
+ * | `"pattern"` | [`InputMaskPattern`](https://surveyjs.io/form-library/documentation/api-reference/inputmaskpattern) |
144
+ *
145
+ * [View Demo](https://surveyjs.io/form-library/examples/masked-input-fields/ (linkStyle))
146
+ */
147
+ maskSettings: InputMaskBase;
148
+ inputTextAlignment: "left" | "right" | "auto";
149
+ /*
150
+ * An item value.
105
151
  */
106
152
  value: any;
107
153
  isEmpty(): boolean;
@@ -145,9 +191,9 @@ export declare class QuestionMultipleTextModel extends Question implements IMult
145
191
  private editorsOnSurveyLoad;
146
192
  private performForEveryEditor;
147
193
  /*
148
- * Gets or sets an array of `MultipleTextItemModel` objects that represent input items.
194
+ * Gets or sets an array of [`MultipleTextItemModel`](https://surveyjs.io/form-library/documentation/api-reference/multipletextitemmodel) objects that represent input items.
149
195
  *
150
- * This property accepts an array of objects with the following structure:
196
+ * Each object in this array should have at least the following properties:
151
197
  *
152
198
  * ```js
153
199
  * {
@@ -169,6 +215,7 @@ export declare class QuestionMultipleTextModel extends Question implements IMult
169
215
  */
170
216
  addItem(name: string, title?: string): MultipleTextItemModel;
171
217
  getItemByName(name: string): MultipleTextItemModel;
218
+ getElementsInDesign(includeHidden?: boolean): Array<IElement>;
172
219
  addConditionObjectsByContext(objects: Array<IConditionObject>, context: any): void;
173
220
  protected collectNestedQuestionsCore(questions: Question[], visibleOnly: boolean): void;
174
221
  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
  readonly 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
  readonly requireStrictCompare: boolean;
@@ -29,16 +32,22 @@ export declare class QuestionRankingModel extends QuestionCheckboxModel {
29
32
  localeChanged: () => void;
30
33
  private addToValueByVisibleChoices;
31
34
  private removeFromValueByVisibleChoices;
32
- readonly rankingChoices: Array<ItemValue>;
33
- readonly unRankingChoices: Array<ItemValue>;
35
+ private getChoicesAnimation;
36
+ private _rankingChoicesAnimation;
37
+ readonly rankingChoicesAnimation: AnimationGroup<ItemValue>;
38
+ private _unRankingChoicesAnimation;
39
+ readonly unRankingChoicesAnimation: AnimationGroup<ItemValue>;
40
+ rankingChoices: Array<ItemValue>;
41
+ unRankingChoices: Array<ItemValue>;
34
42
  private updateRankingChoices;
43
+ updateUnRankingChoices(newRankingChoices: Array<ItemValue>): void;
35
44
  private updateRankingChoicesSelectToRankMode;
36
45
  dragDropRankingChoices: DragDropRankingChoices;
37
46
  currentDropTarget: ItemValue;
38
47
  dropTargetNodeMove: string;
39
48
  endLoadingFromJson(): void;
40
49
  private setDragDropRankingChoices;
41
- protected createDragDropRankingChoices(): DragDropRankingChoices;
50
+ protected createDragDropRankingChoices(): DragDropRankingChoices | DragDropRankingSelectToRank;
42
51
  handlePointerDown: (event: PointerEvent, choice: ItemValue, node: HTMLElement) => void;
43
52
  private isDragStartNodeValid;
44
53
  private readonly allowStartDrag: any;
@@ -59,6 +59,8 @@ export declare class QuestionTextModel extends QuestionTextBase {
59
59
  onSurveyLoad(): void;
60
60
  /*
61
61
  * 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.
62
+ *
63
+ * Default value: `"text"`
62
64
  */
63
65
  inputType: string;
64
66
  getMaxLength(): any;
@@ -316,7 +316,7 @@ export declare class SurveyElement<E = any> extends SurveyElementCore implements
316
316
  protected setPage(parent: IPanel, newPage: IPage): void;
317
317
  protected getSearchableLocKeys(keys: Array<string>): void;
318
318
  readonly isDefaultV2Theme: boolean;
319
- readonly hasParent: any;
319
+ readonly hasParent: boolean;
320
320
  isSingleInRow: boolean;
321
321
  private shouldAddRunnerStyles;
322
322
  protected readonly isCompact: boolean;
@@ -383,5 +383,16 @@ export declare class SurveyElement<E = any> extends SurveyElementCore implements
383
383
  protected getAdditionalTitleToolbar(): ActionContainer | null;
384
384
  protected getCssTitle(cssClasses: any): string;
385
385
  localeChanged(): void;
386
+ private wrapperElement?;
387
+ setWrapperElement(element?: HTMLElement): void;
388
+ getWrapperElement(): HTMLElement;
389
+ private _renderedIsExpanded;
390
+ private _isAnimatingCollapseExpand;
391
+ private isAnimatingCollapseExpand: any;
392
+ private getExpandCollapseAnimationOptions;
393
+ private animationCollapsed;
394
+ renderedIsExpanded: boolean;
395
+ private animationAllowedValue;
396
+ animationAllowed: boolean;
386
397
  dispose(): void;
387
398
  }
@@ -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;
@@ -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;
@@ -1,5 +1,5 @@
1
1
  import { MatrixDropdownRowModelBase } from "../question_matrixdropdownbase";
2
- import { QuestionMatrixDynamicModel } from "../question_matrixdynamic";
2
+ import { QuestionMatrixDynamicModel, MatrixDynamicRowModel } from "../question_matrixdynamic";
3
3
  import { DragDropCore } from "./core";
4
4
  export declare class DragDropMatrixRows extends DragDropCore<QuestionMatrixDynamicModel> {
5
5
  protected get draggedElementType(): string;
@@ -9,6 +9,7 @@ export declare class DragDropMatrixRows extends DragDropCore<QuestionMatrixDynam
9
9
  private fromIndex;
10
10
  private toIndex;
11
11
  protected getDropTargetByDataAttributeValue(dataAttributeValue: any): MatrixDropdownRowModelBase;
12
+ canInsertIntoThisRow(row: MatrixDynamicRowModel): boolean;
12
13
  protected isDropTargetValid(dropTarget: any, dropTargetNode?: HTMLElement): boolean;
13
14
  protected calculateIsBottom(clientY: number): boolean;
14
15
  protected afterDragOver(dropTargetNode: HTMLElement): void;
@@ -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";
@@ -6,6 +6,7 @@ export declare class InputElementAdapter {
6
6
  private prevUnmaskedValue;
7
7
  constructor(inputMaskInstance: InputMaskBase, inputElement: HTMLInputElement, value?: string);
8
8
  inputMaskInstancePropertyChangedHandler: (sender: any, options: any) => void;
9
+ clickHandler: (event: any) => void;
9
10
  beforeInputHandler: (event: any) => void;
10
11
  createArgs(event: any): ITextInputParams;
11
12
  addInputEventListener(): void;
@@ -6,6 +6,16 @@ export interface IDateTimeMaskLexem {
6
6
  count: number;
7
7
  maxCount: number;
8
8
  }
9
+ interface IDateTimeComposition {
10
+ day: number;
11
+ month: number;
12
+ year: number;
13
+ hour?: number;
14
+ minute?: number;
15
+ second?: number;
16
+ min?: Date;
17
+ max?: Date;
18
+ }
9
19
  export declare function getDateTimeLexems(pattern: string): Array<IDateTimeMaskLexem>;
10
20
  /**
11
21
  * A class that describes an input mask of the `"datetime"` [`maskType`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model#maskType).
@@ -46,7 +56,7 @@ export declare class InputMaskDateTime extends InputMaskPattern {
46
56
  private leaveOnlyNumbers;
47
57
  private getMaskedStrFromISO;
48
58
  private initInputDateTimeData;
49
- private getISO_8601Format;
59
+ getISO_8601Format(dateTime: IDateTimeComposition): string;
50
60
  private isYearValid;
51
61
  private isDateValid;
52
62
  private getPlaceholder;
@@ -57,9 +67,9 @@ export declare class InputMaskDateTime extends InputMaskPattern {
57
67
  private getFormatedString;
58
68
  private setInputDateTimeData;
59
69
  _getMaskedValue(src: string, matchWholeMask?: boolean): string;
60
- private getPartsOld;
61
70
  private getParts;
62
71
  getUnmaskedValue(src: string): any;
63
72
  getMaskedValue(src: string): string;
64
73
  processInput(args: ITextInputParams): IMaskedInputResult;
65
74
  }
75
+ export {};
@@ -75,7 +75,7 @@ export declare class InputMaskNumeric extends InputMaskBase {
75
75
  private calccaretPosition;
76
76
  displayNumber(parsedNumber: INumericalComposition, insertThousandsSeparator?: boolean, matchWholeMask?: boolean): string;
77
77
  convertNumber(parsedNumber: INumericalComposition): number;
78
- validateNumber(number: INumericalComposition): boolean;
78
+ validateNumber(number: INumericalComposition, matchWholeMask: boolean): boolean;
79
79
  parseNumber(src: string | number): INumericalComposition;
80
80
  getNumberMaskedValue(src: string | number, matchWholeMask?: boolean): string;
81
81
  private getNumberUnmaskedValue;
@@ -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,13 @@ 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;
234
+ onSetQuestionValue?: (question: Question, newValue: any) => void;
227
235
  valueToQuestion?: (val: any) => any;
228
236
  valueFromQuestion?: (val: any) => any;
229
237
  getValue?: (val: any) => any;
@@ -240,9 +248,11 @@ export declare class ComponentQuestionJSON {
240
248
  onAfterRender(question: Question, htmlElement: any): void;
241
249
  onAfterRenderContentElement(question: Question, element: Question, htmlElement: any): void;
242
250
  onUpdateQuestionCssClasses(question: Question, element: Question, css: any): void;
251
+ onSetQuestionValue(question: Question, newValue: any): void;
243
252
  onPropertyChanged(question: Question, propertyName: string, newValue: any): void;
244
253
  onValueChanged(question: Question, name: string, newValue: any): void;
245
254
  onValueChanging(question: Question, name: string, newValue: any): any;
255
+ onGetErrorText(question: Question): string;
246
256
  onItemValuePropertyChanged(question: Question, item: ItemValue, propertyName: string, name: string, newValue: any): void;
247
257
  getDisplayValue(keyAsText: boolean, value: any, question: Question): any;
248
258
  get defaultQuestionTitle(): any;
@@ -295,6 +305,7 @@ export declare abstract class QuestionCustomModelBase extends Question implement
295
305
  protected onUpdateQuestionCssClasses(element: Question, css: any): void;
296
306
  protected setQuestionValue(newValue: any, updateIsAnswered?: boolean): void;
297
307
  protected setNewValue(newValue: any): void;
308
+ protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
298
309
  getSurveyData(): ISurveyData;
299
310
  getTextProcessor(): ITextProcessor;
300
311
  getValue(name: string): any;