survey-react 1.9.93 → 1.9.94

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.
package/survey.react.d.ts CHANGED
@@ -18,248 +18,392 @@ declare module "settings" {
18
18
  */
19
19
  export var settings: {
20
20
  /**
21
- * Specifies an action to perform when users press the Enter key within a survey.
21
+ * An object that configures survey appearance when the survey is being designed in Survey Creator.
22
22
  *
23
- * Possible values:
23
+ * Nested properties:
24
24
  *
25
- * - `"moveToNextEditor"` - Moves focus to the next editor.
26
- * - `"loseFocus"` - Removes focus from the current editor.
27
- * - `"default"` - Behaves as a standard `<input>` element.
25
+ * - `showEmptyDescriptions`: `Boolean`\
26
+ * Specifies whether to display an empty description for pages and panels. Default value: `true`.
27
+ *
28
+ * - `showEmptyTitles`: `Boolean`\
29
+ * Specifies whether to display an empty title for pages and panels. Default value: `true`.
28
30
  */
29
- enterKeyAction: "default" | "moveToNextEditor" | "loseFocus";
31
+ designMode: {
32
+ showEmptyDescriptions: boolean;
33
+ showEmptyTitles: boolean;
34
+ };
30
35
  /**
31
- * An object that configures string comparison.
36
+ * This property is obsolete. Use the [`settings.designMode.showEmptyDescriptions`](https://surveyjs.io/form-library/documentation/api-reference/settings#designMode) property instead.
37
+ */
38
+ allowShowEmptyDescriptionInDesignMode: boolean;
39
+ /**
40
+ * This property is obsolete. Use the [`settings.designMode.showEmptyTitles`](https://surveyjs.io/form-library/documentation/api-reference/settings#designMode) property instead.
41
+ */
42
+ allowShowEmptyTitleInDesignMode: boolean;
43
+ /**
44
+ * An object that contains properties related to localization.
32
45
  *
33
46
  * Nested properties:
34
47
  *
35
- * - `trimStrings`: `Boolean`\
36
- * Specifies whether to remove whitespace from both ends of a string before the comparison. Default value: `true`.
48
+ * - `useLocalTimeZone`: `Boolean`\
49
+ * Disable this property if you want internal SurveyJS functions to use methods that work with UTC date and time (`setUTCDate()` `setUTCHours()`, etc.) instead of methods that work with local date and time (`setYear`, `setHours()`, etc.). Default value: `true`.
37
50
  *
38
- * - `caseSensitive`: `Boolean`\
39
- * Specifies whether to differentiate between capital and lower-case letters. Default value: `false`.
51
+ * - `defaultLocaleName`: `String`\
52
+ * A property key that stores a translation for the default locale. Default value: `"default"`.
53
+ *
54
+ * - `storeDuplicatedTranslations`: `Boolean`\
55
+ * Specifies whether surveys should store translation strings that equal the translation strings in the default locale. Default value: `false`.
40
56
  */
41
- comparator: {
42
- trimStrings: boolean;
43
- caseSensitive: boolean;
57
+ localization: {
58
+ useLocalTimeZone: boolean;
59
+ storeDuplicatedTranslations: boolean;
60
+ defaultLocaleName: string;
44
61
  };
45
- expressionDisableConversionChar: string;
46
62
  /**
47
- * Disable this property if you want internal SurveyJS functions to use methods that work with UTC date and time (`setUTCDate()` `setUTCHours()`, etc.) instead of methods that work with local date and time (`setYear`, `setHours()`, etc.).
48
- *
49
- * Default value: `true`
63
+ * This property is obsolete. Use the [`settings.localization.useLocalTimeZone`](https://surveyjs.io/form-library/documentation/api-reference/settings#localization) property instead.
50
64
  */
51
65
  useLocalTimeZone: boolean;
52
- commentPrefix: string;
53
66
  /**
54
- * A suffix added to the name of the property that stores comments.
67
+ * This property is obsolete. Use the [`settings.localization.storeDuplicatedTranslations`](https://surveyjs.io/form-library/documentation/api-reference/settings#localization) property instead.
68
+ */
69
+ storeDuplicatedTranslations: boolean;
70
+ /**
71
+ * This property is obsolete. Use the [`settings.localization.defaultLocaleName`](https://surveyjs.io/form-library/documentation/api-reference/settings#localization) property instead.
72
+ */
73
+ defaultLocaleName: string;
74
+ /**
75
+ * An object with properties that configure surveys when they work with a web service.
55
76
  *
56
- * Default value: "-Comment"
77
+ * Nested properties:
57
78
  *
58
- * You can specify this setting for an individual survey: [`commentSuffix`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#commentSuffix).
79
+ * - `encodeUrlParams`: `Boolean`\
80
+ * Specifies whether to encode URL parameters when you access a web service. Default value: `true`.
81
+ *
82
+ * - `cacheLoadedChoices`: `Boolean`\
83
+ * Specifies whether to cache [choices](https://surveyjs.io/form-library/documentation/api-reference/checkbox-question-model#choicesByUrl) loaded from a web service. Default value: `true`.
84
+ *
85
+ * - `disableQuestionWhileLoadingChoices`: `Boolean`\
86
+ * Disables a question while its choices are being loaded from a web service. Default value: `false`.
87
+ *
88
+ * - `surveyServiceUrl`: `String`\
89
+ * The URL of the SurveyJS Service API endpoint.
59
90
  */
60
- commentSuffix: string;
91
+ web: {
92
+ encodeUrlParams: boolean;
93
+ cacheLoadedChoices: boolean;
94
+ disableQuestionWhileLoadingChoices: boolean;
95
+ surveyServiceUrl: string;
96
+ };
61
97
  /**
62
- * Specifies whether to encode URL parameters when you access a web service.
63
- *
64
- * Default value: `true`
98
+ * This property is obsolete. Use the [`settings.web.encodeUrlParams`](https://surveyjs.io/form-library/documentation/api-reference/settings#web) property instead.
65
99
  */
66
100
  webserviceEncodeParameters: boolean;
67
101
  /**
68
- * Specifies whether to cache choices loaded from a web service.
69
- *
70
- * Default value: `true`
71
- * @see settings.disableOnGettingChoicesFromWeb
102
+ * This property is obsolete. Use the [`settings.web.cacheLoadedChoices`](https://surveyjs.io/form-library/documentation/api-reference/settings#web) property instead.
72
103
  */
73
104
  useCachingForChoicesRestful: boolean;
74
105
  useCachingForChoicesRestfull: boolean;
75
106
  /**
76
- * The URL of the SurveyJS Service API endpoint.
107
+ * This property is obsolete. Use the [`settings.web.disableQuestionWhileLoadingChoices`](https://surveyjs.io/form-library/documentation/api-reference/settings#web) property instead.
77
108
  */
78
- surveyServiceUrl: string;
109
+ disableOnGettingChoicesFromWeb: boolean;
79
110
  /**
80
- * A separator used in a shorthand notation that specifies a value and display text for an [`ItemValue`](https://surveyjs.io/form-library/documentation/api-reference/itemvalue) object: `"value|text"`.
81
- *
82
- * Default value: `"|"`
111
+ * This property is obsolete. Use the [`settings.web.surveyServiceUrl`](https://surveyjs.io/form-library/documentation/api-reference/settings#web) property instead.
83
112
  */
84
- itemValueSeparator: string;
113
+ surveyServiceUrl: string;
85
114
  /**
86
- * Enable this property if you want to serialize [`ItemValue`](https://surveyjs.io/form-library/documentation/api-reference/itemvalue) instances as objects even when they include only the `value` property.
115
+ * An object that contains properties related to [triggers](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#conditional-survey-logic-triggers).
87
116
  *
88
- * ```js
89
- * import { ItemValue, settings } from "survey-core";
117
+ * Nested properties:
90
118
  *
91
- * settings.itemValueAlwaysSerializeAsObject = true;
92
- * const item = new ItemValue(5);
93
- * const itemString = item.toJSON(); // Produces { value: 5 } instead of 5
94
- * ```
119
+ * - `changeNavigationButtonsOnComplete`: `Boolean`\
120
+ * Specifies whether to re-evaluate an expression associated with the [Complete trigger](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#complete) immediately when a question value changes. If the expression evaluates to `true`, the trigger is executed. Default value: `false`.\
121
+ * Keep this property set to `false` if you want to re-evaluate the Complete trigger's expression only when the respondents navigate to another page.
122
+ *
123
+ * - `executeCompleteOnValueChanged`: `Boolean`\
124
+ * Specifies whether to replace the Next button with the Complete button when the [Complete trigger](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#complete) is going to be executed. Default value: `true`.
95
125
  *
96
- * @see settings.serializeLocalizableStringAsObject
126
+ * - `executeSkipOnValueChanged`: `Boolean`\
127
+ * Specifies whether to re-evaluate an expression associated with the [Skip trigger](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#skip) immediately when a question value changes. If the expression evaluates to `true`, the trigger is executed. Default value: `true`.\
128
+ * Disable this property if you want to re-evaluate the Skip trigger's expression only when respondents navigate to another page.
97
129
  */
98
- itemValueAlwaysSerializeAsObject: boolean;
130
+ triggers: {
131
+ changeNavigationButtonsOnComplete: boolean;
132
+ executeCompleteOnValueChanged: boolean;
133
+ executeSkipOnValueChanged: boolean;
134
+ };
135
+ /**
136
+ * This property is obsolete. Use the [`settings.triggers.executeCompleteOnValueChanged`](https://surveyjs.io/form-library/documentation/api-reference/settings#triggers) property instead.
137
+ */
138
+ executeCompleteTriggerOnValueChanged: boolean;
139
+ /**
140
+ * This property is obsolete. Use the [`settings.triggers.changeNavigationButtonsOnComplete`](https://surveyjs.io/form-library/documentation/api-reference/settings#triggers) property instead.
141
+ */
142
+ changeNavigationButtonsOnCompleteTrigger: boolean;
143
+ /**
144
+ * This property is obsolete. Use the [`settings.triggers.executeSkipOnValueChanged`](https://surveyjs.io/form-library/documentation/api-reference/settings#triggers) property instead.
145
+ */
146
+ executeSkipTriggerOnValueChanged: boolean;
99
147
  /**
100
- * Enable this property if you want to serialize the `text` property of [`ItemValue`](https://surveyjs.io/form-library/documentation/api-reference/itemvalue) objects even when it is empty or equal to the `value` property.
148
+ * An object that contains properties related to JSON serialization.
149
+ *
150
+ * Nested properties:
151
+ *
152
+ * - `itemValueSerializeAsObject`: `Boolean`\
153
+ * Enable this property if you want to serialize [`ItemValue`](https://surveyjs.io/form-library/documentation/api-reference/itemvalue) instances as objects even when they include only the `value` property. Default value: `false`. View an example below.
154
+ *
155
+ * - `itemValueSerializeDisplayText`: `Boolean`\
156
+ * Enable this property if you want to serialize the `text` property of [`ItemValue`](https://surveyjs.io/form-library/documentation/api-reference/itemvalue) objects even when it is empty or equal to the `value` property. Default value: `false`. View an example below.
157
+ *
158
+ * - `localizableStringSerializeAsObject`: `Boolean`\
159
+ * Enable this property if you want to serialize [`LocalizableString`](https://surveyjs.io/form-library/documentation/api-reference/localizablestring) instances as objects even when they include only a translation string for the default locale. For example, `"Custom String"` will be serialized as `{ default: "Custom String" }`. Default value: `false`.
101
160
  *
102
161
  * ```js
103
162
  * import { ItemValue, settings } from "survey-core";
104
163
  *
105
- * settings.itemValueAlwaysSerializeText = true;
164
+ * // `itemValueSerializeAsObject` example
165
+ * settings.localization.itemValueSerializeAsObject = true;
166
+ * const item = new ItemValue(5);
167
+ * const itemString = item.toJSON(); // Produces { value: 5 } instead of 5
168
+ *
169
+ * // `itemValueSerializeDisplayText` example
170
+ * settings.localization.itemValueSerializeDisplayText = true;
106
171
  * const item = new ItemValue("item1");
107
172
  * const itemString = item.toJSON(); // Produces { value: "item1", text: "item1" } instead of "item1"
108
173
  * ```
109
174
  */
175
+ serialization: {
176
+ itemValueSerializeAsObject: boolean;
177
+ itemValueSerializeDisplayText: boolean;
178
+ localizableStringSerializeAsObject: boolean;
179
+ };
180
+ /**
181
+ * This property is obsolete. Use the [`settings.serialization.itemValueSerializeAsObject`](https://surveyjs.io/form-library/documentation/api-reference/settings#serialization) property instead.
182
+ */
183
+ itemValueAlwaysSerializeAsObject: boolean;
184
+ /**
185
+ * This property is obsolete. Use the [`settings.serialization.itemValueSerializeDisplayText`](https://surveyjs.io/form-library/documentation/api-reference/settings#serialization) property instead.
186
+ */
110
187
  itemValueAlwaysSerializeText: boolean;
111
188
  /**
112
- * Specifies a property key that stores a translation for the default locale.
113
- *
114
- * Default value: `"default"`
115
- * @see storeDuplicatedTranslations
189
+ * This property is obsolete. Use the [`settings.serialization.localizableStringSerializeAsObject`](https://surveyjs.io/form-library/documentation/api-reference/settings#serialization) property instead.
116
190
  */
117
- defaultLocaleName: string;
191
+ serializeLocalizableStringAsObject: boolean;
118
192
  /**
119
- * Specifies whether surveys should store translation strings that equal the translation string specified by the `"default"` key.
193
+ * An object that configures lazy rendering.
120
194
  *
121
- * Default value: `false`
122
- * @see settings.defaultLocaleName
195
+ * Nested properties:
196
+ *
197
+ * - `enabled`: `Boolean`\
198
+ * Specifies whether to add questions to the DOM only when they get into the viewport. Default value: `false`.
199
+ *
200
+ * > Lazy rendering is an experimental feature that may not work as expected in all use cases.
123
201
  */
124
- storeDuplicatedTranslations: boolean;
202
+ lazyRender: {
203
+ enabled: boolean;
204
+ firstBatchSize: number;
205
+ };
125
206
  /**
126
- * Specifies a property key that stores an object with default cell values in [Single-Choice Matrix](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-question-model) questions.
127
- *
128
- * Default value: "default"
207
+ * This property is obsolete. Use the [`settings.lazyRender.enabled`](https://surveyjs.io/form-library/documentation/api-reference/settings#lazyRender) property instead.
129
208
  */
130
- matrixDefaultRowName: string;
209
+ lazyRowsRendering: boolean;
210
+ lazyRowsRenderingStartRow: number;
131
211
  /**
132
- * The default type of matrix cells in the [Multiple-Choice Matrix](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list) and [Dynamic Matrix](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model) question types.
212
+ * An object with properties that apply to [Single-Choice](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-question-model), [Multiple-Choice](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list), and [Dynamic Matrix](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model) questions.
213
+ *
214
+ * Nested properties:
133
215
  *
134
- * Default value: `"dropdown"`
216
+ * - `defaultRowName`: `String`\
217
+ * A property key that stores an object with default cell values. Default value: "default".
135
218
  *
219
+ * - `defaultCellType`: `String`\
220
+ * The default type of matrix cells. Default value: `"dropdown"`.\
136
221
  * You can specify this setting for individual questions or matrix columns: [`cellType`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model#cellType). Refer to the `cellType` property description for information on possible values.
222
+ *
223
+ * - `totalsSuffix`: `String`\
224
+ * A suffix added to the name of the property that stores total values. The resulting property name consists of the matrix name and the suffix. Default value: `"-total"`.
225
+ *
226
+ * - `maxRowCount`: `Number`\
227
+ * A maximum number of rows in a Dynamic Matrix. Default value: 1000.\
228
+ * You can specify this setting for an individual Dynamic Matrix: [`maxRowCount`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model#maxRowCount).
229
+ *
230
+ * - `maxRowCountInCondition`: `Number`\
231
+ * A maximum number of matrix rows included in the Condition drop-down menu in Survey Creator. This menu is used to configure conditional survey logic. Default value: 1.\
232
+ * If you set this property to 0, the Condition menu does not include any matrix rows. Users still can specify conditions that use matrix rows but only with Manual Entry.
233
+ *
234
+ * - `renderRemoveAsIcon`: `Boolean`\
235
+ * Disable this property if you want to render the Remove action in Dynamic Matrix as a button. Otherwise, the action is rendered as an icon. Default value: `true`.
236
+ *
237
+ * - `columnWidthsByType`: `Object`\
238
+ * An object that specifies fixed and minimum column width based on the column type.\
239
+ * Example: `settings.matrix.columnWidthsByType = { "tagbox": { minWidth: "240px", width: "300px" } }`
240
+ *
241
+ * - `rateSize`: `"small"` (default) | `"normal"`\
242
+ * Specifies the size of rate values. Applies to [Rating Scale](https://surveyjs.io/form-library/examples/rating-scale/) questions within matrixes.
243
+ */
244
+ matrix: {
245
+ defaultCellType: string;
246
+ defaultRowName: string;
247
+ totalsSuffix: string;
248
+ maxRowCount: number;
249
+ maxRowCountInCondition: number;
250
+ renderRemoveAsIcon: boolean;
251
+ columnWidthsByType: {
252
+ [index: string]: {
253
+ minWidth?: string;
254
+ width?: string;
255
+ };
256
+ };
257
+ rateSize: "small" | "normal";
258
+ };
259
+ /**
260
+ * This property is obsolete. Use the [`settings.matrix.defaultRowName`](https://surveyjs.io/form-library/documentation/api-reference/settings#matrix) property instead.
261
+ */
262
+ matrixDefaultRowName: string;
263
+ /**
264
+ * This property is obsolete. Use the [`settings.matrix.defaultCellType`](https://surveyjs.io/form-library/documentation/api-reference/settings#matrix) property instead.
137
265
  */
138
266
  matrixDefaultCellType: string;
139
267
  /**
140
- * A suffix added to the name of the property that stores total values. The resulting property name consists of the matrix name and the suffix.
141
- *
142
- * Default value: `"-total"`
268
+ * This property is obsolete. Use the [`settings.matrix.totalsSuffix`](https://surveyjs.io/form-library/documentation/api-reference/settings#matrix) property instead.
143
269
  */
144
270
  matrixTotalValuePostFix: string;
145
271
  /**
146
- * A maximum number of rows in a [Dynamic Matrix](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model).
147
- *
148
- * Default value: 1000
149
- *
150
- * You can specify this setting for an individual Dynamic Matrix: [`maxRowCount`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model#maxRowCount).
272
+ * This property is obsolete. Use the [`settings.matrix.maxRowCount`](https://surveyjs.io/form-library/documentation/api-reference/settings#matrix) property instead.
151
273
  */
152
274
  matrixMaximumRowCount: number;
153
275
  /**
154
- * A maximum number of matrix rows included in the Condition drop-down menu in Survey Creator. This menu is used to configure conditional survey logic.
155
- *
156
- * Default value: 1
157
- *
158
- * If you set this property to 0, the Condition menu does not include any matrix rows. Users still can specify conditions that use matrix rows but only with Manual Entry.
276
+ * This property is obsolete. Use the [`settings.matrix.maxRowCountInCondition`](https://surveyjs.io/form-library/documentation/api-reference/settings#matrix) property instead.
159
277
  */
160
278
  matrixMaxRowCountInCondition: number;
161
279
  /**
162
- * A maximum number of panels from [Dynamic Panel](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model) included in the Condition drop-down menu in Survey Creator. This menu is used to configure conditional survey logic.
280
+ * This property is obsolete. Use the [`settings.matrix.renderRemoveAsIcon`](https://surveyjs.io/form-library/documentation/api-reference/settings#matrix) property instead.
281
+ */
282
+ matrixRenderRemoveAsIcon: boolean;
283
+ /**
284
+ * An object with properties that apply to [Dynamic Panel](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model) questions.
163
285
  *
164
- * Default value: 1
286
+ * Nested properties:
287
+ *
288
+ * - `maxPanelCount`: `Number`\
289
+ * A maximum number of panels in Dynamic Panel. Default value: 100.\
290
+ * You can specify this setting for an individual Dynamic Panel: [`maxPanelCount`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#maxPanelCount).
165
291
  *
292
+ * - `maxPanelCountInCondition`: `Number`\
293
+ * A maximum number of Dynamic Panel panels included in the Condition drop-down menu in Survey Creator. This menu is used to configure conditional survey logic. Default value: 1.\
166
294
  * If you set this property to 0, the Condition menu does not include any panel questions. Users still can specify conditions that use panel questions but only with Manual Entry.
167
295
  */
168
- panelDynamicMaxPanelCountInCondition: number;
296
+ panel: {
297
+ maxPanelCount: number;
298
+ maxPanelCountInCondition: number;
299
+ };
169
300
  /**
170
- * Disable this property if you want to render the Remove action in Dynamic Matrix as a button. Otherwise, the action is rendered as an icon.
171
- *
172
- * Default value: `true`
301
+ * This property is obsolete. Use the [`settings.panel.maxPanelCountInCondition`](https://surveyjs.io/form-library/documentation/api-reference/settings#panel) property instead.
173
302
  */
174
- matrixRenderRemoveAsIcon: boolean;
303
+ panelDynamicMaxPanelCountInCondition: number;
175
304
  /**
176
- * A maximum number of panels in [Dynamic Panel](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model).
177
- *
178
- * Default value: 100
179
- *
180
- * You can specify this setting for an individual Dynamic Panel: [`maxPanelCount`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#maxPanelCount).
305
+ * This property is obsolete. Use the [`settings.panel.maxPanelCount`](https://surveyjs.io/form-library/documentation/api-reference/settings#panel) property instead.
181
306
  */
182
307
  panelMaximumPanelCount: number;
183
308
  /**
184
- * A maximum number of rate values in a [Rating](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model) question.
309
+ * An object with properties that configure questions in read-only mode.
185
310
  *
186
- * Default value: 20
311
+ * Nested properties:
312
+ *
313
+ * - `commentRenderMode`: `"textarea"` (default) | `"div"`\
314
+ * Specifies how to render the input field of [Comment](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model) questions in [read-only](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model#readOnly) mode: as a disabled `<textarea>` element or as a `<div>` element with a non-editable question value within it.
315
+ *
316
+ * - `textRenderMode`: `"input"` (default) | `"div"`\
317
+ * Specifies how to render the input field of [Text](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model) questions in [read-only](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model#readOnly) mode: as a disabled `<input>` element or as a `<div>` element with a non-editable question value within it.
187
318
  */
188
- ratingMaximumRateValueCount: number;
319
+ readOnly: {
320
+ commentRenderMode: string;
321
+ textRenderMode: string;
322
+ };
189
323
  /**
190
- * Specifies whether to close the drop-down menu of a [TagBox](https://surveyjs.io/form-library/examples/how-to-create-multiselect-tag-box/) question after a user selects a value.
191
- *
192
- * This setting applies to all TagBox questions on a page. You can use the [closeOnSelect](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model#closeOnSelect) property to specify the same setting for an individual TagBox question.
324
+ * This property is obsolete. Use the [`settings.readOnly.commentRenderMode`](https://surveyjs.io/form-library/documentation/api-reference/settings#readOnly) property instead.
193
325
  */
194
- tagboxCloseOnSelect: boolean;
326
+ readOnlyCommentRenderMode: string;
195
327
  /**
196
- * Disables the question while choices are being loaded from a web service.
197
- *
198
- * Default value: `false`
199
- * @see settings.useCachingForChoicesRestful
328
+ * This property is obsolete. Use the [`settings.readOnly.textRenderMode`](https://surveyjs.io/form-library/documentation/api-reference/settings#readOnly) property instead.
200
329
  */
201
- disableOnGettingChoicesFromWeb: boolean;
330
+ readOnlyTextRenderMode: string;
202
331
  /**
203
- * Enable this property if you want to serialize [`LocalizableString`](https://surveyjs.io/form-library/documentation/api-reference/localizablestring) instances as objects even when they include only a translation string for the default locale. For example, `"Custom String"` will be serialized as `{ default: "Custom String" }`.
332
+ * An object with properties that configure question numbering.
204
333
  *
205
- * Default value: `false`
206
- * @see settings.itemValueAlwaysSerializeAsObject
334
+ * Nested properties:
335
+ *
336
+ * - `includeQuestionsWithHiddenNumber`: `Boolean`\
337
+ * Specifies whether to number questions whose [`hideNumber`](https://surveyjs.io/form-library/documentation/api-reference/question#hideNumber) property is enabled. Default value: `false`.
338
+ *
339
+ * - `includeQuestionsWithHiddenTitle`: `Boolean`\
340
+ * Specifies whether to number questions whose [`titleLocation`](https://surveyjs.io/form-library/documentation/api-reference/question#titleLocation) property is set to `"hidden"`. Default value: `false`.
207
341
  */
208
- serializeLocalizableStringAsObject: boolean;
342
+ numbering: {
343
+ includeQuestionsWithHiddenNumber: boolean;
344
+ includeQuestionsWithHiddenTitle: boolean;
345
+ };
209
346
  /**
210
- * Specifies whether to display an empty title for pages and panels when they are being designed in Survey Creator.
211
- *
212
- * Default value: `true`
347
+ * This property is obsolete. Use the [`settings.numbering.includeQuestionsWithHiddenTitle`](https://surveyjs.io/form-library/documentation/api-reference/settings#numbering) property instead.
213
348
  */
214
- allowShowEmptyTitleInDesignMode: boolean;
349
+ setQuestionVisibleIndexForHiddenTitle: boolean;
215
350
  /**
216
- * Specifies whether to display an empty description for pages and panels when they are being designed in Survey Creator.
217
- *
218
- * Default value: `true`
351
+ * This property is obsolete. Use the [`settings.numbering.includeQuestionsWithHiddenNumber`](https://surveyjs.io/form-library/documentation/api-reference/settings#numbering) property instead.
219
352
  */
220
- allowShowEmptyDescriptionInDesignMode: boolean;
353
+ setQuestionVisibleIndexForHiddenNumber: boolean;
221
354
  /**
222
- * Specifies whether to re-evaluate an expression associated with the [Complete trigger](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#complete) immediately when a question value changes. If the expression evaluates to `true`, the trigger is executed.
355
+ * Specifies an action to perform when users press the Enter key within a survey.
223
356
  *
224
- * Keep this property set to `false` if you want to re-evaluate the Complete trigger's expression only when the respondents navigate to another page.
357
+ * Possible values:
225
358
  *
226
- * Default value: `false`
227
- * @see settings.changeNavigationButtonsOnCompleteTrigger
359
+ * - `"moveToNextEditor"` - Moves focus to the next editor.
360
+ * - `"loseFocus"` - Removes focus from the current editor.
361
+ * - `"default"` - Behaves as a standard `<input>` element.
228
362
  */
229
- executeCompleteTriggerOnValueChanged: boolean;
363
+ enterKeyAction: "default" | "moveToNextEditor" | "loseFocus";
230
364
  /**
231
- * Specifies whether to replace the Next button with the Complete button when the [Complete trigger](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#complete) is going to be executed.
365
+ * An object that configures string comparison.
232
366
  *
233
- * Default value: `true`
234
- * @see settings.executeCompleteTriggerOnValueChanged
367
+ * Nested properties:
368
+ *
369
+ * - `trimStrings`: `Boolean`\
370
+ * Specifies whether to remove whitespace from both ends of a string before the comparison. Default value: `true`.
371
+ *
372
+ * - `caseSensitive`: `Boolean`\
373
+ * Specifies whether to differentiate between capital and lower-case letters. Default value: `false`.
235
374
  */
236
- changeNavigationButtonsOnCompleteTrigger: boolean;
375
+ comparator: {
376
+ trimStrings: boolean;
377
+ caseSensitive: boolean;
378
+ };
379
+ expressionDisableConversionChar: string;
380
+ commentPrefix: string;
237
381
  /**
238
- * Specifies whether to re-evaluate an expression associated with the [Skip trigger](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#skip) immediately when a question value changes. If the expression evaluates to `true`, the trigger is executed.
382
+ * A suffix added to the name of the property that stores comments.
239
383
  *
240
- * Disable this property if you want to re-evaluate the Skip trigger's expression only when the respondents navigate to another page.
384
+ * Default value: "-Comment"
241
385
  *
242
- * Default value: `true`
386
+ * You can specify this setting for an individual survey: [`commentSuffix`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#commentSuffix).
243
387
  */
244
- executeSkipTriggerOnValueChanged: boolean;
388
+ commentSuffix: string;
245
389
  /**
246
- * Specifies how to render the input field of [Comment](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model) questions in [read-only](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model#readOnly) mode.
247
- *
248
- * Possible values:
390
+ * A separator used in a shorthand notation that specifies a value and display text for an [`ItemValue`](https://surveyjs.io/form-library/documentation/api-reference/itemvalue) object: `"value|text"`.
249
391
  *
250
- * - `"textarea"` (default) - Renders the input field as a disabled `<textarea>` element.
251
- * - `"div"` - Renders the input field as a `<div>` element with a non-editable question value within it.
392
+ * Default value: `"|"`
252
393
  */
253
- readOnlyCommentRenderMode: string;
394
+ itemValueSeparator: string;
254
395
  /**
255
- * Specifies how to render the input field of [Text](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model) questions in [read-only](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model#readOnly) mode.
396
+ * A maximum number of rate values in a [Rating](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model) question.
256
397
  *
257
- * Possible values:
398
+ * Default value: 20
399
+ */
400
+ ratingMaximumRateValueCount: number;
401
+ /**
402
+ * Specifies whether to close the drop-down menu of a [TagBox](https://surveyjs.io/form-library/examples/how-to-create-multiselect-tag-box/) question after a user selects a value.
258
403
  *
259
- * - `"input"` (default) - Renders the input field as a disabled `<input>` element.
260
- * - `"div"` - Renders the input field as a `<div>` element with a non-editable question value within it.
404
+ * This setting applies to all TagBox questions on a page. You can use the [closeOnSelect](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model#closeOnSelect) property to specify the same setting for an individual TagBox question.
261
405
  */
262
- readOnlyTextRenderMode: string;
406
+ tagboxCloseOnSelect: boolean;
263
407
  /**
264
408
  * A property that allows you to display a custom confirm dialog instead of the standard browser dialog. Set this property to a function that renders your custom dialog window.
265
409
  * @param message A message to be displayed in the confirm dialog window.
@@ -286,28 +430,7 @@ declare module "settings" {
286
430
  *
287
431
  * Default value: 10
288
432
  */
289
- maximumConditionRunCountOnValueChanged: number;
290
- /**
291
- * Specifies whether to number questions whose [`titleLocation`](https://surveyjs.io/form-library/documentation/api-reference/question#titleLocation) property is set to `"hidden"`.
292
- *
293
- * Default value: `false`
294
- */
295
- setQuestionVisibleIndexForHiddenTitle: boolean;
296
- /**
297
- * Specifies whether to number questions whose [`hideNumber`](https://surveyjs.io/form-library/documentation/api-reference/question#hideNumber) property is enabled.
298
- *
299
- * Default value: `false`
300
- */
301
- setQuestionVisibleIndexForHiddenNumber: boolean;
302
- /**
303
- * Specifies whether to add questions to the DOM only when they get into the viewport.
304
- *
305
- * Default value: `false`
306
- *
307
- * > This is an experimental feature that may not work as expected in all use cases.
308
- */
309
- lazyRowsRendering: boolean;
310
- lazyRowsRenderingStartRow: number;
433
+ maxConditionRunCountOnValueChanged: number;
311
434
  /**
312
435
  * An object that configures notifications.
313
436
  *
@@ -380,6 +503,7 @@ declare module "settings" {
380
503
  * Specifies environment in which SurveyJS will exist
381
504
  */
382
505
  environment: ISurveyEnvironment;
506
+ showMaxLengthIndicator: boolean;
383
507
  titleTags: {
384
508
  survey: string;
385
509
  page: string;
@@ -390,27 +514,6 @@ declare module "settings" {
390
514
  inputTypes: string[];
391
515
  dataList: string[];
392
516
  };
393
- /**
394
- * Contains properties that apply to [Single-Choice](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-question-model), [Multiple-Choice](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list), and [Dynamic Matrix](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model) questions.
395
- *
396
- * Nested properties:
397
- *
398
- * - `columnWidthsByType`: `Object`\
399
- * An object that specifies fixed and minimum column width based on the column type.\
400
- * Example: `settings.matrix.columnWidthsByType = { "tagbox": { minWidth: "240px", width: "300px" } }`
401
- *
402
- * - `rateSize`: `"small"` (default) | `"normal"`\
403
- * Specifies the size of rate values. Applies to [Rating Scale](https://surveyjs.io/form-library/examples/rating-scale/) questions within matrixes.
404
- */
405
- matrix: {
406
- columnWidthsByType: {
407
- [index: string]: {
408
- minWidth?: string;
409
- width?: string;
410
- };
411
- };
412
- rateSize: "small" | "normal";
413
- };
414
517
  };
415
518
  }
416
519
  declare module "helpers" {
@@ -542,6 +645,8 @@ declare module "localization/english" {
542
645
  noEntriesReadonlyText: string;
543
646
  more: string;
544
647
  tagboxDoneButtonCaption: string;
648
+ selectToRankFromContainerPlaceholder: string;
649
+ selectToRankToContainerPlaceholder: string;
545
650
  };
546
651
  }
547
652
  declare module "surveyStrings" {
@@ -651,6 +756,8 @@ declare module "surveyStrings" {
651
756
  noEntriesReadonlyText: string;
652
757
  more: string;
653
758
  tagboxDoneButtonCaption: string;
759
+ selectToRankFromContainerPlaceholder: string;
760
+ selectToRankToContainerPlaceholder: string;
654
761
  };
655
762
  }
656
763
  declare module "localizablestring" {
@@ -1422,6 +1529,7 @@ declare module "utils/utils" {
1422
1529
  function classesToSelector(str: string): string;
1423
1530
  function getElementWidth(el: HTMLElement): number;
1424
1531
  function isContainerVisible(el: HTMLElement): boolean;
1532
+ function getFirstVisibleChild(el: HTMLElement): any;
1425
1533
  function findParentByClassNames(element: HTMLElement, classNames: Array<string>): Element;
1426
1534
  export function sanitizeEditableContent(element: any): void;
1427
1535
  function mergeValues(src: any, dest: any): void;
@@ -1430,7 +1538,7 @@ declare module "utils/utils" {
1430
1538
  log(action: string): void;
1431
1539
  get result(): string;
1432
1540
  }
1433
- export { mergeValues, getElementWidth, isContainerVisible, classesToSelector, compareVersions, confirmAction, detectIEOrEdge, detectIEBrowser, loadFileFromBase64, isMobile, isShadowDOM, getElement, isElementVisible, findScrollableParent, scrollElementByChildId, navigateToUrl, createSvg, getIconNameFromProxy, increaseHeightByContent, getOriginalEvent, preventDefaults, findParentByClassNames, };
1541
+ export { mergeValues, getElementWidth, isContainerVisible, classesToSelector, compareVersions, confirmAction, detectIEOrEdge, detectIEBrowser, loadFileFromBase64, isMobile, isShadowDOM, getElement, isElementVisible, findScrollableParent, scrollElementByChildId, navigateToUrl, createSvg, getIconNameFromProxy, increaseHeightByContent, getOriginalEvent, preventDefaults, findParentByClassNames, getFirstVisibleChild, };
1434
1542
  }
1435
1543
  declare module "actions/container" {
1436
1544
  import { Base } from "base";
@@ -1510,6 +1618,7 @@ declare module "list" {
1510
1618
  itemSeparator: string;
1511
1619
  itemBody: string;
1512
1620
  itemsContainer: string;
1621
+ itemsContainerFiltering: string;
1513
1622
  filter: string;
1514
1623
  filterIcon: string;
1515
1624
  filterInput: string;
@@ -1567,6 +1676,7 @@ declare module "list" {
1567
1676
  itemSeparator: string;
1568
1677
  itemBody: string;
1569
1678
  itemsContainer: string;
1679
+ itemsContainerFiltering: string;
1570
1680
  filter: string;
1571
1681
  filterIcon: string;
1572
1682
  filterInput: string;
@@ -1578,6 +1688,7 @@ declare module "list" {
1578
1688
  isItemSelected: (itemValue: T) => boolean;
1579
1689
  isItemFocused: (itemValue: T) => boolean;
1580
1690
  protected areSameItems(item1: IAction, item2: IAction): boolean;
1691
+ getListClass: () => string;
1581
1692
  getItemClass: (itemValue: T) => string;
1582
1693
  getItemIndent: (itemValue: any) => string;
1583
1694
  get filterStringPlaceholder(): string;
@@ -1850,6 +1961,7 @@ declare module "actions/action" {
1850
1961
  }
1851
1962
  export function createDropdownActionModel(actionOptions: IAction, dropdownOptions: IActionDropdownPopupOptions, locOwner?: ILocalizableOwner): Action;
1852
1963
  export function createDropdownActionModelAdvanced(actionOptions: IAction, listOptions: IListModel, popupOptions?: IPopupOptionsBase, locOwner?: ILocalizableOwner): Action;
1964
+ export function getActionDropdownButtonTarget(container: HTMLElement): HTMLElement;
1853
1965
  export abstract class BaseAction extends Base implements IAction {
1854
1966
  private cssClassesValue;
1855
1967
  tooltip: string;
@@ -2612,6 +2724,9 @@ declare module "defaultCss/defaultV2Css" {
2612
2724
  rootDisabled: string;
2613
2725
  rootDesignMode: string;
2614
2726
  rootDragHandleAreaIcon: string;
2727
+ rootSelectToRankMod: string;
2728
+ rootSelectToRankAlignVertical: string;
2729
+ rootSelectToRankAlignHorizontal: string;
2615
2730
  item: string;
2616
2731
  itemContent: string;
2617
2732
  itemIndex: string;
@@ -2625,6 +2740,12 @@ declare module "defaultCss/defaultV2Css" {
2625
2740
  itemGhostMod: string;
2626
2741
  itemDragMod: string;
2627
2742
  itemOnError: string;
2743
+ container: string;
2744
+ containerEmptyMode: string;
2745
+ containerFromMode: string;
2746
+ containerToMode: string;
2747
+ containerPlaceholder: string;
2748
+ containersDivider: string;
2628
2749
  };
2629
2750
  buttongroup: {
2630
2751
  root: string;
@@ -3560,7 +3681,7 @@ declare module "question_file" {
3560
3681
  /**
3561
3682
  * A class that describes the File question type.
3562
3683
  *
3563
- * [View Demo](https://surveyjs.io/form-library/examples/questiontype-file/ (linkStyle))
3684
+ * [View Demo](https://surveyjs.io/form-library/examples/file-upload/ (linkStyle))
3564
3685
  */
3565
3686
  export class QuestionFileModel extends Question {
3566
3687
  private isUploading;
@@ -4972,7 +5093,7 @@ declare module "question_matrixdynamic" {
4972
5093
  /**
4973
5094
  * A maximum number of rows in the matrix. Users cannot add new rows if `rowCount` equals `maxRowCount`.
4974
5095
  *
4975
- * Default value: 1000 (inherited from [`settings.matrixMaximumRowCount`](https://surveyjs.io/form-library/documentation/settings#matrixMaximumRowCount))
5096
+ * Default value: 1000 (inherited from [`settings.matrix.maxRowCount`](https://surveyjs.io/form-library/documentation/settings#matrixMaximumRowCount))
4976
5097
  * @see rowCount
4977
5098
  * @see minRowCount
4978
5099
  * @see allowAddRows
@@ -5500,7 +5621,7 @@ declare module "question_paneldynamic" {
5500
5621
  /**
5501
5622
  * A maximum number of panels in Dynamic Panel. Users cannot add new panels if `panelCount` equals `maxPanelCount`.
5502
5623
  *
5503
- * Default value: 100 (inherited from [`settings.panelMaximumPanelCount`](https://surveyjs.io/form-library/documentation/settings#panelMaximumPanelCount))
5624
+ * Default value: 100 (inherited from [`settings.panel.maxPanelCount`](https://surveyjs.io/form-library/documentation/settings#panelMaximumPanelCount))
5504
5625
  * @see panelCount
5505
5626
  * @see minPanelCount
5506
5627
  * @see allowAddPanel
@@ -5850,7 +5971,7 @@ declare module "survey-events-api" {
5850
5971
  }
5851
5972
  export interface AfterRenderElementEventMixin {
5852
5973
  /**
5853
- * The rendered HTML element.
5974
+ * A rendered HTML element.
5854
5975
  */
5855
5976
  htmlElement: HTMLElement;
5856
5977
  }
@@ -5883,6 +6004,9 @@ declare module "survey-events-api" {
5883
6004
  * A Boolean property that you can set to `false` if you want to prevent survey completion.
5884
6005
  */
5885
6006
  allow: boolean;
6007
+ /**
6008
+ * Obsolete. Use `allow` instead.
6009
+ */
5886
6010
  allowComplete: boolean;
5887
6011
  }
5888
6012
  export interface CompleteEvent extends CompleteBaseEvent {
@@ -5902,9 +6026,21 @@ declare module "survey-events-api" {
5902
6026
  * Call this method to indicate that the save operation is in progress. You can use the `text` parameter to display a custom message.
5903
6027
  */
5904
6028
  showSaveInProgress: (text?: string) => void;
6029
+ /**
6030
+ * Obsolete. Use `showSaveInProgress` instead.
6031
+ */
5905
6032
  showDataSaving: (text?: string) => void;
6033
+ /**
6034
+ * Obsolete. Use `showSaveError` instead.
6035
+ */
5906
6036
  showDataSavingError: (text?: string) => void;
6037
+ /**
6038
+ * Obsolete. Use `showSaveSuccess` instead.
6039
+ */
5907
6040
  showDataSavingSuccess: (text?: string) => void;
6041
+ /**
6042
+ * Obsolete. Use `clearSaveMessages` instead.
6043
+ */
5908
6044
  showDataSavingClear: (text?: string) => void;
5909
6045
  }
5910
6046
  export interface ShowingPreviewEvent {
@@ -5912,6 +6048,9 @@ declare module "survey-events-api" {
5912
6048
  * A Boolean property that you can set to `false` if you want to cancel the preview.
5913
6049
  */
5914
6050
  allow: boolean;
6051
+ /**
6052
+ * Obsolete. Use `allow` instead.
6053
+ */
5915
6054
  allowShowPreview: boolean;
5916
6055
  }
5917
6056
  export interface NavigateToUrlEvent {
@@ -5955,6 +6094,9 @@ declare module "survey-events-api" {
5955
6094
  * A Boolean property that you can set to `false` if you do not want to switch the current page.
5956
6095
  */
5957
6096
  allow: boolean;
6097
+ /**
6098
+ * Obsolete. Use `allow` instead.
6099
+ */
5958
6100
  allowChanging: boolean;
5959
6101
  }
5960
6102
  export interface ValueChangeBaseEvent extends QuestionEventMixin {
@@ -6010,7 +6152,13 @@ declare module "survey-events-api" {
6010
6152
  * The parent container (panel or page).
6011
6153
  */
6012
6154
  parent: PanelModelBase;
6155
+ /**
6156
+ * Obsolete. Use `page` instead.
6157
+ */
6013
6158
  rootPanel: any;
6159
+ /**
6160
+ * Obsolete. Use `parent` instead.
6161
+ */
6014
6162
  parentPanel: any;
6015
6163
  /**
6016
6164
  * The element's index within the parent container (panel or page).
@@ -6311,6 +6459,9 @@ declare module "survey-events-api" {
6311
6459
  css: string;
6312
6460
  }
6313
6461
  export interface AfterRenderSurveyEvent extends AfterRenderElementEventMixin {
6462
+ /**
6463
+ * Obsolete. Use the `sender` parameter instead.
6464
+ */
6314
6465
  survey: SurveyModel;
6315
6466
  }
6316
6467
  export interface AfterRenderHeaderEvent extends AfterRenderElementEventMixin {
@@ -6374,19 +6525,23 @@ declare module "survey-events-api" {
6374
6525
  /**
6375
6526
  * An added matrix row.
6376
6527
  */
6377
- row: any;
6528
+ row: MatrixDropdownRowModelBase;
6378
6529
  }
6379
6530
  export interface MatrixBeforeRowAddedEvent extends MatrixDynamicQuestionEventMixin {
6380
6531
  /**
6381
6532
  * A Boolean property that you can set to `false` if you do not want to add the row.
6382
6533
  */
6534
+ allow: boolean;
6535
+ /**
6536
+ * Obsolete. Use `allow` instead.
6537
+ */
6383
6538
  canAddRow: boolean;
6384
6539
  }
6385
6540
  export interface MatrixRowRemovingEvent extends MatrixDynamicQuestionEventMixin {
6386
6541
  /**
6387
6542
  * A matrix row to be deleted. If you want to clear row data, set the `options.row.value` property to `undefined`.
6388
6543
  */
6389
- row: any;
6544
+ row: MatrixDropdownRowModelBase;
6390
6545
  /**
6391
6546
  * A zero-based index of the matrix row to be deleted.
6392
6547
  */
@@ -6400,7 +6555,7 @@ declare module "survey-events-api" {
6400
6555
  /**
6401
6556
  * A deleted matrix row.
6402
6557
  */
6403
- row: any;
6558
+ row: MatrixDropdownRowModelBase;
6404
6559
  /**
6405
6560
  * A zero-based index of the deleted row.
6406
6561
  */
@@ -6410,7 +6565,7 @@ declare module "survey-events-api" {
6410
6565
  /**
6411
6566
  * A matrix row for which the event is raised.
6412
6567
  */
6413
- row: any;
6568
+ row: MatrixDropdownRowModelBase;
6414
6569
  /**
6415
6570
  * A zero-based row index.
6416
6571
  */
@@ -6478,10 +6633,18 @@ declare module "survey-events-api" {
6478
6633
  * A matrix row to which the cell belongs.
6479
6634
  */
6480
6635
  row: MatrixDropdownRowModelBase;
6636
+ /**
6637
+ * A matrix column to which the cell belongs.
6638
+ */
6639
+ column: MatrixDropdownColumn;
6481
6640
  /**
6482
6641
  * The name of a matrix column to which the cell belongs.
6483
6642
  */
6484
6643
  columnName: string;
6644
+ /**
6645
+ * A Question instance within the matrix cell. You can use the properties and methods exposed by the instance to customize it.
6646
+ */
6647
+ cellQuestion: Question;
6485
6648
  /**
6486
6649
  * A method that returns a Question instance within the matrix cell given a column name.
6487
6650
  */
@@ -6622,7 +6785,7 @@ declare module "survey-events-api" {
6622
6785
  /**
6623
6786
  * A matrix row for which the event is raised.
6624
6787
  */
6625
- row: any;
6788
+ row: MatrixDropdownRowModelBase;
6626
6789
  }
6627
6790
  export interface ElementContentVisibilityChangedEvent {
6628
6791
  /**
@@ -6751,7 +6914,7 @@ declare module "page" {
6751
6914
  */
6752
6915
  scrollToTop(): void;
6753
6916
  /**
6754
- * A time period that a respondent spent on this page; measured in seconds. Applies only to [quiz surveys](https://surveyjs.io/form-library/documentation/design-survey-create-a-quiz).
6917
+ * A time period that a respondent has spent on this page so far; measured in seconds. Applies only to [quiz surveys](https://surveyjs.io/form-library/documentation/design-survey-create-a-quiz).
6755
6918
  * @see maxTimeToFinish
6756
6919
  */
6757
6920
  timeSpent: number;
@@ -7614,10 +7777,6 @@ declare module "survey" {
7614
7777
  * Refer to the following help topic for information on how to implement conditional visibility: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#conditional-visibility).
7615
7778
  */
7616
7779
  onQuestionVisibleChanged: EventBase<SurveyModel, QuestionVisibleChangedEvent>;
7617
- /**
7618
- * Obsolete. Please use onQuestionVisibleChanged event.
7619
- * @see onQuestionVisibleChanged
7620
- */
7621
7780
  onVisibleChanged: EventBase<SurveyModel, QuestionVisibleChangedEvent>;
7622
7781
  /**
7623
7782
  * An event that is raised after page visibility is changed.
@@ -7809,7 +7968,7 @@ declare module "survey" {
7809
7968
  *
7810
7969
  * For information on event handler parameters, refer to descriptions within the interface.
7811
7970
  *
7812
- * [View Demo](https://surveyjs.io/form-library/examples/questiontype-file/ (linkStyle))
7971
+ * [View Demo](https://surveyjs.io/form-library/examples/file-upload/ (linkStyle))
7813
7972
  * @see uploadFiles
7814
7973
  * @see QuestionFileModel.storeDataAsText
7815
7974
  * @see onDownloadFile
@@ -7821,7 +7980,7 @@ declare module "survey" {
7821
7980
  *
7822
7981
  * For information on event handler parameters, refer to descriptions within the interface.
7823
7982
  *
7824
- * [View Demo](https://surveyjs.io/form-library/examples/questiontype-file/ (linkStyle))
7983
+ * [View Demo](https://surveyjs.io/form-library/examples/file-upload/ (linkStyle))
7825
7984
  * @see downloadFile
7826
7985
  * @see onClearFiles
7827
7986
  * @see onUploadFiles
@@ -7892,15 +8051,16 @@ declare module "survey" {
7892
8051
  */
7893
8052
  onUpdateChoiceItemCss: EventBase<SurveyModel, UpdateChoiceItemCssEvent>;
7894
8053
  /**
7895
- * An event that is raised right after survey is rendered in DOM.
8054
+ * An event that is raised after the survey is rendered to the DOM. Use this event to modify survey markup.
8055
+ *
8056
+ * For information on event handler parameters, refer to descriptions within the interface.
8057
+ *
8058
+ * [View Demo](https://surveyjs.io/form-library/examples/survey-animation/ (linkStyle))
7896
8059
  */
7897
8060
  onAfterRenderSurvey: EventBase<SurveyModel, AfterRenderSurveyEvent>;
7898
- /**
7899
- * An event that is raised right after a page is rendered in DOM. Use it to modify HTML elements.
7900
- */
7901
8061
  onAfterRenderHeader: EventBase<SurveyModel, AfterRenderHeaderEvent>;
7902
8062
  /**
7903
- * An event that is raised right after a page is rendered in DOM. Use it to modify HTML elements.
8063
+ * An event that is raised after a page is rendered to the DOM. Use it to modify page markup.
7904
8064
  *
7905
8065
  * For information on event handler parameters, refer to descriptions within the interface.
7906
8066
  *
@@ -7908,7 +8068,7 @@ declare module "survey" {
7908
8068
  */
7909
8069
  onAfterRenderPage: EventBase<SurveyModel, AfterRenderPageEvent>;
7910
8070
  /**
7911
- * An event that is raised right after a question is rendered in DOM. Use it to modify HTML elements.
8071
+ * An event that is raised after a question is rendered to the DOM. Use it to modify question markup.
7912
8072
  *
7913
8073
  * For information on event handler parameters, refer to descriptions within the interface.
7914
8074
  *
@@ -7916,12 +8076,19 @@ declare module "survey" {
7916
8076
  */
7917
8077
  onAfterRenderQuestion: EventBase<SurveyModel, AfterRenderQuestionEvent>;
7918
8078
  /**
7919
- * An event that is raised right after a non-composite question (text, comment, dropdown, radiogroup, checkbox) is rendered in DOM. Use it to modify HTML elements.
7920
- * This event is not fired for matrices, panels, multiple text and image picker.
8079
+ * An event that is raised after a question with a single input field is rendered to the DOM. Use it to modify question markup.
8080
+ *
8081
+ * For information on event handler parameters, refer to descriptions within the interface.
8082
+ *
8083
+ * > This event is not raised for questions without input fields ([HTML](https://surveyjs.io/form-library/documentation/questionhtmlmodel), [Image](https://surveyjs.io/form-library/documentation/questionimagemodel)) or questions with multiple input fields ([Matrix](https://surveyjs.io/form-library/documentation/questionmatrixmodel), [Multiple Text](https://surveyjs.io/form-library/documentation/questionmultipletextmodel)).
7921
8084
  */
7922
8085
  onAfterRenderQuestionInput: EventBase<SurveyModel, AfterRenderQuestionInputEvent>;
7923
8086
  /**
7924
- * An event that is raised right after a panel is rendered in DOM. Use it to modify HTML elements.
8087
+ * An event that is raised after a panel is rendered to the DOM. Use it to modify panel markup.
8088
+ *
8089
+ * For information on event handler parameters, refer to descriptions within the interface.
8090
+ *
8091
+ * > This event is raised for static [Panels](https://surveyjs.io/form-library/examples/set-properties-on-multiple-questions-using-panel/) as well as panels within a [Dynamic Panel](https://surveyjs.io/form-library/examples/duplicate-group-of-fields-in-form/).
7925
8092
  */
7926
8093
  onAfterRenderPanel: EventBase<SurveyModel, AfterRenderPanelEvent>;
7927
8094
  /**
@@ -7969,15 +8136,19 @@ declare module "survey" {
7969
8136
  /**
7970
8137
  * An event that is raised before a new row is added to a [Dynamic Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdynamic/).
7971
8138
  */
8139
+ onMatrixRowAdding: EventBase<SurveyModel, MatrixBeforeRowAddedEvent>;
8140
+ /**
8141
+ * This event is obsolete. Use the [`onMatrixRowAdding`](/form-library/documentation/api-reference/survey-data-model#onMatrixRowAdding) event instead.
8142
+ */
7972
8143
  onMatrixBeforeRowAdded: EventBase<SurveyModel, MatrixBeforeRowAddedEvent>;
7973
8144
  /**
7974
8145
  * An event that is raised before a row is deleted from a [Dynamic Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdynamic/). You can cancel row deletion and clear row data instead.
7975
- * @see onMatrixAllowRemoveRow
8146
+ * @see onMatrixRenderRemoveButton
7976
8147
  */
7977
8148
  onMatrixRowRemoving: EventBase<SurveyModel, MatrixRowRemovingEvent>;
7978
8149
  /**
7979
8150
  * An event that is raised after a row is deleted from a [Dynamic Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdynamic/).
7980
- * @see onMatrixAllowRemoveRow
8151
+ * @see onMatrixRenderRemoveButton
7981
8152
  */
7982
8153
  onMatrixRowRemoved: EventBase<SurveyModel, MatrixRowRemovedEvent>;
7983
8154
  /**
@@ -7985,35 +8156,43 @@ declare module "survey" {
7985
8156
  * @see onMatrixRowRemoving
7986
8157
  * @see onMatrixRowRemoved
7987
8158
  */
8159
+ onMatrixRenderRemoveButton: EventBase<SurveyModel, MatrixAllowRemoveRowEvent>;
8160
+ /**
8161
+ * This event is obsolete. Use the [`onMatrixRenderRemoveButton`](/form-library/documentation/api-reference/survey-data-model#onMatrixRenderRemoveButton) event instead.
8162
+ */
7988
8163
  onMatrixAllowRemoveRow: EventBase<SurveyModel, MatrixAllowRemoveRowEvent>;
7989
8164
  /**
7990
8165
  * An event that is raised before a cell in a [Multi-Select Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdropdown/) or [Dynamic Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdynamic/) is created. Use this event to change the type of individual matrix cells.
7991
- * @see onMatrixAfterCellRender
8166
+ * @see onAfterRenderMatrixCell
7992
8167
  */
7993
8168
  onMatrixCellCreating: EventBase<SurveyModel, MatrixCellCreatingEvent>;
7994
8169
  /**
7995
8170
  * An event that is raised after a cell in a [Multi-Select Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdropdown/) or [Dynamic Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdynamic/) is created.
7996
- * @see onMatrixAfterCellRender
8171
+ * @see onAfterRenderMatrixCell
7997
8172
  */
7998
8173
  onMatrixCellCreated: EventBase<SurveyModel, MatrixCellCreatedEvent>;
7999
8174
  /**
8000
8175
  * An event that is raised for every matrix cell after it is rendered to the DOM.
8001
8176
  * @see onMatrixCellCreated
8002
8177
  */
8178
+ onAfterRenderMatrixCell: EventBase<SurveyModel, MatrixAfterCellRenderEvent>;
8179
+ /**
8180
+ * This event is obsolete. Use the [`onAfterRenderMatrixCell`](/form-library/documentation/api-reference/survey-data-model#onAfterRenderMatrixCell) event instead.
8181
+ */
8003
8182
  onMatrixAfterCellRender: EventBase<SurveyModel, MatrixAfterCellRenderEvent>;
8004
8183
  /**
8005
8184
  * An event that is raised after a cell value is changed in a [Multi-Select Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdropdown/) or [Dynamic Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdynamic/).
8006
- * @see onMatrixBeforeRowAdded
8185
+ * @see onMatrixRowAdding
8007
8186
  */
8008
8187
  onMatrixCellValueChanged: EventBase<SurveyModel, MatrixCellValueChangedEvent>;
8009
8188
  /**
8010
8189
  * An event that is raised before a cell value is changed in a [Multi-Select Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdropdown/) or [Dynamic Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdynamic/). Use this event to change the cell value.
8011
- * @see onMatrixBeforeRowAdded
8190
+ * @see onMatrixRowAdding
8012
8191
  */
8013
8192
  onMatrixCellValueChanging: EventBase<SurveyModel, MatrixCellValueChangingEvent>;
8014
8193
  /**
8015
8194
  * An event that is raised for [Multi-Select Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdropdown/) and [Dynamic Matrix](https://surveyjs.io/form-library/examples/questiontype-matrixdynamic/) questions when they validate a cell value. Use this event to display a custom error message based on a condition.
8016
- * @see onMatrixBeforeRowAdded
8195
+ * @see onMatrixRowAdding
8017
8196
  */
8018
8197
  onMatrixCellValidate: EventBase<SurveyModel, MatrixCellValidateEvent>;
8019
8198
  /**
@@ -8037,15 +8216,15 @@ declare module "survey" {
8037
8216
  */
8038
8217
  onDynamicPanelRemoving: EventBase<SurveyModel, DynamicPanelRemovingEvent>;
8039
8218
  /**
8040
- * An event that is raised every second if the method `startTimer` has been called.
8219
+ * An event that is raised every second while the timer is running.
8220
+ *
8221
+ * Use the [`timeSpent`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#timeSpent) property to find out how many seconds have elapsed.
8222
+ * @see maxTimeToFinish
8223
+ * @see maxTimeToFinishPage
8224
+ * @see showTimerPanel
8041
8225
  * @see startTimer
8042
- * @see timeSpent
8043
- * @see Page.timeSpent
8044
8226
  */
8045
8227
  onTimer: EventBase<SurveyModel, {}>;
8046
- /**
8047
- * An event that is raised before displaying a new information in the Timer Panel. Use it to change the default text.
8048
- */
8049
8228
  onTimerPanelInfoText: EventBase<SurveyModel, TimerPanelInfoTextEvent>;
8050
8229
  /**
8051
8230
  * An event that is raised after an item value is changed in a panel within a [Dynamic Panel](https://surveyjs.io/form-library/examples/questiontype-paneldynamic/) question.
@@ -9793,33 +9972,38 @@ declare module "survey" {
9793
9972
  getCorrectedAnswers(): number;
9794
9973
  getInCorrectedAnswers(): number;
9795
9974
  /**
9796
- * Gets or sets a timer panel position. The timer panel displays information about how much time an end user spends on a survey/page.
9975
+ * Displays the timer panel and specifies its position. Applies only to [quiz surveys](https://surveyjs.io/form-library/documentation/design-survey-create-a-quiz).
9797
9976
  *
9798
- * The available options:
9799
- * - `top` - display timer panel in the top.
9800
- * - `bottom` - display timer panel in the bottom.
9801
- * - `none` - do not display a timer panel.
9977
+ * Possible values:
9802
9978
  *
9803
- * If the value is not equal to 'none', the survey calls the `startTimer()` method on survey rendering.
9804
- * @see showTimerPanelMode
9979
+ * - `"top"` - Displays the timer panel at the top of the survey.
9980
+ * - `"bottom"` - Displays the timer panel at the bottom of the survey.
9981
+ * - `"none"` (default) - Hides the timer panel.
9982
+ *
9983
+ * If the timer panel is displayed, the timer starts automatically when the survey begins. To specify time limits, use the [`maxTimeToFinish`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#maxTimeToFinish) and [`maxTimeToFinishPage`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#maxTimeToFinishPage) properties.
9984
+ *
9985
+ * The timer panel displays information about time spent on an individual page and the entire survey. If you want to display only the page timer or the survey timer, set the [`showTimerPanelMode`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#showTimerPanelMode) property to `"page"` or `"survey"`.
9805
9986
  * @see startTimer
9806
9987
  * @see stopTimer
9988
+ * @see timeSpent
9989
+ * @see onTimer
9807
9990
  */
9808
9991
  get showTimerPanel(): string;
9809
9992
  set showTimerPanel(val: string);
9810
9993
  get isTimerPanelShowingOnTop(): boolean;
9811
9994
  get isTimerPanelShowingOnBottom(): boolean;
9812
9995
  /**
9813
- * Gets or set a value that specifies whether the timer displays information for the page or for the entire survey.
9996
+ * Specifies whether the timer panel displays timers for the current page, the entire survey, or both. Applies only if the timer panel is [visible](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#showTimerPanel).
9814
9997
  *
9815
- * The available options:
9816
- *
9817
- * - `page` - show timer information for page
9818
- * - `survey` - show timer information for survey
9998
+ * Possible values:
9819
9999
  *
9820
- * Use the `onTimerPanelInfoText` event to change the default text.
9821
- * @see showTimerPanel
9822
- * @see onTimerPanelInfoText
10000
+ * - `"survey"` - Displays only the survey timer.
10001
+ * - `"page"` - Displays only the page timer.
10002
+ * - `"all"` (default) - Displays both the survey and page timers.
10003
+ * @see timeSpent
10004
+ * @see onTimer
10005
+ * @see startTimer
10006
+ * @see stopTimer
9823
10007
  */
9824
10008
  get showTimerPanelMode(): string;
9825
10009
  set showTimerPanelMode(val: string);
@@ -9863,39 +10047,59 @@ declare module "survey" {
9863
10047
  private getDisplayTime;
9864
10048
  get timerModel(): SurveyTimerModel;
9865
10049
  /**
9866
- * Starts a timer that will calculate how much time end-user spends on the survey or on pages.
10050
+ * Starts a timer that calculates how many seconds a respondent has spent on the survey. Applies only to [quiz surveys](https://surveyjs.io/form-library/documentation/design-survey-create-a-quiz).
9867
10051
  * @see stopTimer
10052
+ * @see maxTimeToFinish
10053
+ * @see maxTimeToFinishPage
9868
10054
  * @see timeSpent
10055
+ * @see onTimer
9869
10056
  */
9870
10057
  startTimer(): void;
9871
10058
  startTimerFromUI(): void;
9872
10059
  /**
9873
- * Stops the timer.
10060
+ * Stops the timer. Applies only to [quiz surveys](https://surveyjs.io/form-library/documentation/design-survey-create-a-quiz).
9874
10061
  * @see startTimer
10062
+ * @see maxTimeToFinish
10063
+ * @see maxTimeToFinishPage
9875
10064
  * @see timeSpent
10065
+ * @see onTimer
9876
10066
  */
9877
10067
  stopTimer(): void;
9878
10068
  /**
9879
- * Gets or set the time in seconds an end user spends on the survey.
10069
+ * A time period that a respondent has spent on the survey so far; measured in seconds. Applies only to [quiz surveys](https://surveyjs.io/form-library/documentation/design-survey-create-a-quiz).
10070
+ *
10071
+ * Assign a number to this property if you need to start the quiz timer from a specific time (for instance, if you want to continue an interrupted quiz).
10072
+ *
10073
+ * You can also find out how many seconds a respondent has spent on an individual survey page. To do this, use the [`timeSpent`](https://surveyjs.io/form-library/documentation/api-reference/page-model#timeSpent) property of a [`PageModel`](https://surveyjs.io/form-library/documentation/api-reference/page-model) object.
10074
+ * @see maxTimeToFinish
10075
+ * @see maxTimeToFinishPage
9880
10076
  * @see startTimer
9881
- * @see PageModel.timeSpent
9882
10077
  */
9883
10078
  get timeSpent(): number;
9884
10079
  set timeSpent(val: number);
9885
10080
  /**
9886
- * Gets or sets the maximum time in seconds that end user has to complete a survey. If the value is 0 or less, an end user has no time limit to finish a survey.
9887
- * @see startTimer
10081
+ * A time period that a respondent has to complete the survey; measured in seconds. Applies only to [quiz surveys](https://surveyjs.io/form-library/documentation/design-survey-create-a-quiz).
10082
+ *
10083
+ * A negative value or 0 sets an unlimited time period.
10084
+ *
10085
+ * [View Demo](https://surveyjs.io/form-library/examples/make-quiz-javascript/ (linkStyle))
9888
10086
  * @see maxTimeToFinishPage
10087
+ * @see startTimer
10088
+ * @see timeSpent
9889
10089
  */
9890
10090
  get maxTimeToFinish(): number;
9891
10091
  set maxTimeToFinish(val: number);
9892
10092
  /**
9893
- * Gets or sets the maximum time in seconds that end user has to complete a page in the survey. If the value is 0 or less, an end user has no time limit.
10093
+ * A time period that a respondent has to complete each survey page; measured in seconds. Applies only to [quiz surveys](https://surveyjs.io/form-library/documentation/design-survey-create-a-quiz).
9894
10094
  *
9895
- * You may override this value for every page.
9896
- * @see startTimer
10095
+ * A negative value or 0 sets an unlimited time period.
10096
+ *
10097
+ * You can also use `PageModel`'s [`maxTimeToFinish`](https://surveyjs.io/form-library/documentation/api-reference/page-model#maxTimeToFinish) property to specify a time period for an individual survey page.
10098
+ *
10099
+ * [View Demo](https://surveyjs.io/form-library/examples/make-quiz-javascript/ (linkStyle))
9897
10100
  * @see maxTimeToFinish
9898
- * @see PageModel.maxTimeToFinish
10101
+ * @see startTimer
10102
+ * @see timeSpent
9899
10103
  */
9900
10104
  get maxTimeToFinishPage(): number;
9901
10105
  set maxTimeToFinishPage(val: number);
@@ -10931,7 +11135,7 @@ declare module "question" {
10931
11135
  *
10932
11136
  * - `"default"` (default) - Inherits the setting from the Survey's [`clearInvisibleValues`](https://surveyjs.io/form-library/documentation/surveymodel#clearInvisibleValues) property.
10933
11137
  * - `"onHidden"` - Clears the value when the question becomes invisible. If a question is invisible on startup and has an initial value, this value will be cleared when the survey is complete.
10934
- * - `"onHiddenContainer"` - Clears the value when the question or its containter (page or panel) becomes invisible. If the question is invisible initially, its value is removed on survey completion.
11138
+ * - `"onHiddenContainer"` - Clears the value when the question or its container (page or panel) becomes invisible. If a question is invisible on startup and has an initial value, this value will be cleared when the survey is complete.
10935
11139
  * - `"onComplete"` - Clears the value when the survey is complete.
10936
11140
  * - `"none"` - Never clears the value of an invisible question.
10937
11141
  * @see SurveyModel.clearInvisibleValues
@@ -11108,6 +11312,8 @@ declare module "question" {
11108
11312
  protected valueFromData(val: any): any;
11109
11313
  protected valueToData(val: any): any;
11110
11314
  protected onValueChanged(): void;
11315
+ protected isMouseDown: boolean;
11316
+ onMouseDown(): void;
11111
11317
  protected setNewComment(newValue: string): void;
11112
11318
  protected getValidName(name: string): string;
11113
11319
  updateValueFromSurvey(newValue: any): void;
@@ -11562,7 +11768,7 @@ declare module "question_matrixdropdownbase" {
11562
11768
  * - `"expression"`
11563
11769
  * - `"rating"`
11564
11770
  *
11565
- * Default value: `"dropdown"` (inherited from [`settings.matrixDefaultCellType`](https://surveyjs.io/form-library/documentation/settings#matrixDefaultCellType))
11771
+ * Default value: `"dropdown"` (inherited from [`settings.matrix.defaultCellType`](https://surveyjs.io/form-library/documentation/settings#matrixDefaultCellType))
11566
11772
  */
11567
11773
  get cellType(): string;
11568
11774
  set cellType(val: string);
@@ -12083,6 +12289,8 @@ declare module "itemvalue" {
12083
12289
  getType(): string;
12084
12290
  getSurvey(live?: boolean): ISurvey;
12085
12291
  getLocale(): string;
12292
+ isGhost: boolean;
12293
+ protected get isInternal(): boolean;
12086
12294
  get locText(): LocalizableString;
12087
12295
  setLocText(locText: LocalizableString): void;
12088
12296
  private _locOwner;
@@ -13502,13 +13710,34 @@ declare module "dragdrop/ranking-choices" {
13502
13710
  protected calculateIsBottom(clientY: number): boolean;
13503
13711
  protected doDragOver: () => any;
13504
13712
  protected afterDragOver(dropTargetNode: HTMLElement): void;
13505
- private updateDraggedElementShortcut;
13713
+ protected updateDraggedElementShortcut(newIndex: number): void;
13506
13714
  protected ghostPositionChanged(): void;
13507
13715
  protected doBanDropHere: () => any;
13508
13716
  protected doDrop: () => any;
13509
13717
  clear(): void;
13510
13718
  }
13511
13719
  }
13720
+ declare module "dragdrop/ranking-select-to-rank" {
13721
+ import { ItemValue } from "itemvalue";
13722
+ import { DragDropRankingChoices } from "dragdrop/ranking-choices";
13723
+ import { QuestionRankingModel } from "question_ranking";
13724
+ export class DragDropRankingSelectToRank extends DragDropRankingChoices {
13725
+ protected findDropTargetNodeByDragOverNode(dragOverNode: HTMLElement): HTMLElement;
13726
+ protected getDropTargetByDataAttributeValue(dataAttributeValue: string): ItemValue;
13727
+ protected getDropTargetByNode(dropTargetNode: HTMLElement, event: PointerEvent): any;
13728
+ protected isDropTargetValid(dropTarget: ItemValue | string, dropTargetNode?: HTMLElement): boolean;
13729
+ protected afterDragOver(dropTargetNode: HTMLElement): void;
13730
+ doRankBetween(dropTargetNode: HTMLElement, fromChoicesArray: Array<ItemValue>, toChoicesArray: Array<ItemValue>, rankFunction: Function): void;
13731
+ private doUIEffects;
13732
+ private get isDraggedElementRanked();
13733
+ private get isDropTargetRanked();
13734
+ private get isDraggedElementUnranked();
13735
+ private get isDropTargetUnranked();
13736
+ selectToRank(questionModel: QuestionRankingModel, fromIndex: number, toIndex: number): void;
13737
+ unselectFromRank(questionModel: QuestionRankingModel, fromIndex: number, toIndex?: number): void;
13738
+ reorderRankedItem(questionModel: QuestionRankingModel, fromIndex: number, toIndex: number): void;
13739
+ }
13740
+ }
13512
13741
  declare module "question_ranking" {
13513
13742
  import { ISurveyImpl } from "base-interfaces";
13514
13743
  import { DragDropRankingChoices } from "dragdrop/ranking-choices";
@@ -13527,9 +13756,10 @@ declare module "question_ranking" {
13527
13756
  getItemTabIndex(item: ItemValue): number;
13528
13757
  get rootClass(): string;
13529
13758
  protected getItemClassCore(item: ItemValue, options: any): string;
13759
+ getContainerClasses(containerType?: string): string;
13530
13760
  protected isItemCurrentDropTarget(item: ItemValue): boolean;
13531
13761
  get ghostPositionCssClass(): string;
13532
- getItemIndexClasses(): string;
13762
+ getItemIndexClasses(item: ItemValue): string;
13533
13763
  getNumberByIndex(index: number): string;
13534
13764
  setSurveyImpl(value: ISurveyImpl, isLight?: boolean): void;
13535
13765
  isAnswerCorrect(): boolean;
@@ -13539,11 +13769,15 @@ declare module "question_ranking" {
13539
13769
  private addToValueByVisibleChoices;
13540
13770
  private removeFromValueByVisibleChoices;
13541
13771
  get rankingChoices(): Array<ItemValue>;
13772
+ get unRankingChoices(): Array<ItemValue>;
13542
13773
  private updateRankingChoices;
13774
+ private updateRankingChoicesSelectToRankMode;
13543
13775
  dragDropRankingChoices: DragDropRankingChoices;
13544
13776
  currentDropTarget: ItemValue;
13545
13777
  dropTargetNodeMove: string;
13546
13778
  endLoadingFromJson(): void;
13779
+ private setDragDropRankingChoices;
13780
+ protected createDragDropRankingChoices(): DragDropRankingChoices;
13547
13781
  handlePointerDown: (event: PointerEvent, choice: ItemValue, node: HTMLElement) => void;
13548
13782
  private isDragStartNodeValid;
13549
13783
  private get allowStartDrag();
@@ -13553,8 +13787,9 @@ declare module "question_ranking" {
13553
13787
  protected supportSelectAll(): boolean;
13554
13788
  supportOther(): boolean;
13555
13789
  supportNone(): boolean;
13556
- private handleArrowUp;
13557
- private handleArrowDown;
13790
+ private handleArrowKeys;
13791
+ handleKeydownSelectToRank(event: KeyboardEvent, movedElement: ItemValue): void;
13792
+ private setValueAfterKeydown;
13558
13793
  private focusItem;
13559
13794
  setValue: () => void;
13560
13795
  getIconHoverCss(): string;
@@ -13568,6 +13803,29 @@ declare module "question_ranking" {
13568
13803
  */
13569
13804
  get longTap(): boolean;
13570
13805
  set longTap(val: boolean);
13806
+ /**
13807
+ * Specifies whether users can select choices they want to rank.
13808
+ *
13809
+ * When you enable this property, the Ranking question displays two areas for ranked and unranked choices. To order choices, users should first drag them from the unranked to the ranked area. Use this mode if you want to let users order only the choices they select.
13810
+ *
13811
+ * Default value: `false`
13812
+ * @see selectToRankAreasLayout
13813
+ */
13814
+ get selectToRankEnabled(): boolean;
13815
+ set selectToRankEnabled(val: boolean);
13816
+ /**
13817
+ * Specifies the layout of the ranked and unranked areas. Applies when [`selectToRankEnabled`](https://surveyjs.io/form-library/documentation/api-reference/ranking-question-model#selectToRankEnabled) is `true`.
13818
+ *
13819
+ * Possible values:
13820
+ *
13821
+ * - `"horizontal"` (default) - The ranked and unranked areas are positioned next to each other. Users drag and drop choices between them in the horizontal direction.
13822
+ * - `"vertical"`- The ranked area is positioned above the unranked area. Users drag and drop choices between them in the vertical direction.
13823
+ * @see selectToRankAreasLayout
13824
+ */
13825
+ get selectToRankAreasLayout(): string;
13826
+ set selectToRankAreasLayout(val: string);
13827
+ selectToRankFromContainerPlaceholder: string;
13828
+ selectToRankToContainerPlaceholder: string;
13571
13829
  get useFullItemSizeForShortcut(): boolean;
13572
13830
  set useFullItemSizeForShortcut(val: boolean);
13573
13831
  }
@@ -13681,6 +13939,7 @@ declare module "question_radiogroup" {
13681
13939
  get canShowClearButton(): boolean;
13682
13940
  get clearButtonCaption(): string;
13683
13941
  supportGoNextPageAutomatic(): boolean;
13942
+ protected setNewComment(newValue: string): void;
13684
13943
  get showClearButtonInContent(): boolean;
13685
13944
  clickItemHandler(item: ItemValue): void;
13686
13945
  protected getDefaultTitleActions(): Array<Action>;
@@ -14645,6 +14904,9 @@ declare module "popup-view-model" {
14645
14904
  import { ActionContainer } from "actions/container";
14646
14905
  export 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^=\"-\"])";
14647
14906
  export class PopupBaseViewModel extends Base {
14907
+ protected popupSelector: string;
14908
+ protected containerSelector: string;
14909
+ protected scrollingContentSelector: string;
14648
14910
  protected prevActiveElement: HTMLElement;
14649
14911
  protected footerToolbarValue: ActionContainer;
14650
14912
  top: string;
@@ -14654,7 +14916,8 @@ declare module "popup-view-model" {
14654
14916
  minWidth: string;
14655
14917
  isVisible: boolean;
14656
14918
  locale: string;
14657
- container: HTMLElement;
14919
+ get container(): HTMLElement;
14920
+ private containerElement;
14658
14921
  private createdContainer;
14659
14922
  getLocale(): string;
14660
14923
  protected hidePopup(): void;
@@ -14689,11 +14952,11 @@ declare module "popup-view-model" {
14689
14952
  updateOnHiding(): void;
14690
14953
  private focusContainer;
14691
14954
  private focusFirstInput;
14692
- clickOutside(): void;
14955
+ clickOutside(event?: Event): void;
14693
14956
  cancel(): void;
14694
14957
  dispose(): void;
14695
14958
  initializePopupContainer(): void;
14696
- unmountPopupContainer(): void;
14959
+ setComponentElement(componentRoot: HTMLElement, targetElement?: HTMLElement | null): void;
14697
14960
  }
14698
14961
  }
14699
14962
  declare module "popup-dropdown-view-model" {
@@ -14720,6 +14983,7 @@ declare module "popup-dropdown-view-model" {
14720
14983
  popupDirection: string;
14721
14984
  pointerTarget: IPosition;
14722
14985
  constructor(model: PopupModel, targetElement?: HTMLElement);
14986
+ setComponentElement(componentRoot: HTMLElement, targetElement?: HTMLElement | null): void;
14723
14987
  updateOnShowing(): void;
14724
14988
  private get shouldCreateResizeCallback();
14725
14989
  updatePosition(isResetHeight: boolean, isDelayUpdating?: boolean): void;
@@ -14739,12 +15003,15 @@ declare module "popup-modal-view-model" {
14739
15003
  apply(): void;
14740
15004
  clickOutside(): void;
14741
15005
  onKeyDown(event: any): void;
15006
+ private onScrollOutsideCallback;
15007
+ updateOnShowing(): void;
15008
+ updateOnHiding(): void;
14742
15009
  }
14743
15010
  }
14744
15011
  declare module "popup-utils" {
14745
15012
  import { IDialogOptions, PopupModel } from "popup";
14746
15013
  import { PopupBaseViewModel } from "popup-view-model";
14747
- export function createPopupModalViewModel(options: IDialogOptions): PopupBaseViewModel;
15014
+ export function createPopupModalViewModel(options: IDialogOptions, container?: HTMLElement): PopupBaseViewModel;
14748
15015
  export function createPopupViewModel(model: PopupModel, targetElement?: HTMLElement): PopupBaseViewModel;
14749
15016
  }
14750
15017
  declare module "question_buttongroup" {
@@ -14864,6 +15131,7 @@ declare module "entries/chunks/model" {
14864
15131
  export { SurveyProgressButtonsModel } from "surveyProgressButtons";
14865
15132
  export * from "themes";
14866
15133
  export { SurveyModel } from "survey";
15134
+ export * from "survey-events-api";
14867
15135
  export { SurveyTrigger, SurveyTriggerComplete, SurveyTriggerSetValue, SurveyTriggerVisible, SurveyTriggerCopyValue, SurveyTriggerRunExpression, Trigger } from "trigger";
14868
15136
  export { PopupSurveyModel, SurveyWindowModel } from "popup-survey";
14869
15137
  export { TextPreProcessor } from "textPreProcessor";
@@ -14890,6 +15158,7 @@ declare module "entries/chunks/model" {
14890
15158
  export { surveyCss, defaultV2Css, defaultV2ThemeName } from "defaultCss/defaultV2Css";
14891
15159
  export { DragDropCore } from "dragdrop/core";
14892
15160
  export { DragDropChoices } from "dragdrop/choices";
15161
+ export { DragDropRankingSelectToRank } from "dragdrop/ranking-select-to-rank";
14893
15162
  }
14894
15163
  declare module "defaultCss/cssstandard" {
14895
15164
  export var defaultStandardCss: {
@@ -15030,6 +15299,9 @@ declare module "defaultCss/cssstandard" {
15030
15299
  rootDragMod: string;
15031
15300
  rootDisabled: string;
15032
15301
  rootDragHandleAreaIcon: string;
15302
+ rootSelectToRankMod: string;
15303
+ rootSelectToRankAlignVertical: string;
15304
+ rootSelectToRankAlignHorizontal: string;
15033
15305
  item: string;
15034
15306
  itemContent: string;
15035
15307
  itemIndex: string;
@@ -15042,6 +15314,12 @@ declare module "defaultCss/cssstandard" {
15042
15314
  itemIconFocusMod: string;
15043
15315
  itemGhostMod: string;
15044
15316
  itemDragMod: string;
15317
+ container: string;
15318
+ containerEmptyMode: string;
15319
+ containerFromMode: string;
15320
+ containerToMode: string;
15321
+ containerPlaceholder: string;
15322
+ containersDivider: string;
15045
15323
  };
15046
15324
  comment: {
15047
15325
  remainingCharacterCounter: string;
@@ -15435,6 +15713,9 @@ declare module "defaultCss/cssmodern" {
15435
15713
  rootDragMod: string;
15436
15714
  rootDisabled: string;
15437
15715
  rootDragHandleAreaIcon: string;
15716
+ rootSelectToRankMod: string;
15717
+ rootSelectToRankAlignVertical: string;
15718
+ rootSelectToRankAlignHorizontal: string;
15438
15719
  item: string;
15439
15720
  itemContent: string;
15440
15721
  itemIndex: string;
@@ -15447,6 +15728,12 @@ declare module "defaultCss/cssmodern" {
15447
15728
  itemIconFocusMod: string;
15448
15729
  itemGhostMod: string;
15449
15730
  itemDragMod: string;
15731
+ container: string;
15732
+ containerEmptyMode: string;
15733
+ containerFromMode: string;
15734
+ containerToMode: string;
15735
+ containerPlaceholder: string;
15736
+ containersDivider: string;
15450
15737
  };
15451
15738
  radiogroup: {
15452
15739
  root: string;
@@ -15885,6 +16172,9 @@ declare module "plugins/themes/bootstrap/cssbootstrap" {
15885
16172
  rootDragMod: string;
15886
16173
  rootDisabled: string;
15887
16174
  rootDragHandleAreaIcon: string;
16175
+ rootSelectToRankMod: string;
16176
+ rootSelectToRankAlignVertical: string;
16177
+ rootSelectToRankAlignHorizontal: string;
15888
16178
  item: string;
15889
16179
  itemContent: string;
15890
16180
  itemIndex: string;
@@ -15897,6 +16187,12 @@ declare module "plugins/themes/bootstrap/cssbootstrap" {
15897
16187
  itemIconFocusMod: string;
15898
16188
  itemGhostMod: string;
15899
16189
  itemDragMod: string;
16190
+ container: string;
16191
+ containerEmptyMode: string;
16192
+ containerFromMode: string;
16193
+ containerToMode: string;
16194
+ containerPlaceholder: string;
16195
+ containersDivider: string;
15900
16196
  };
15901
16197
  comment: string;
15902
16198
  dropdown: {
@@ -16233,6 +16529,9 @@ declare module "plugins/themes/bootstrapmaterial/cssbootstrapmaterial" {
16233
16529
  rootDragMod: string;
16234
16530
  rootDisabled: string;
16235
16531
  rootDragHandleAreaIcon: string;
16532
+ rootSelectToRankMod: string;
16533
+ rootSelectToRankAlignVertical: string;
16534
+ rootSelectToRankAlignHorizontal: string;
16236
16535
  item: string;
16237
16536
  itemContent: string;
16238
16537
  itemIndex: string;
@@ -16245,6 +16544,12 @@ declare module "plugins/themes/bootstrapmaterial/cssbootstrapmaterial" {
16245
16544
  itemIconFocusMod: string;
16246
16545
  itemGhostMod: string;
16247
16546
  itemDragMod: string;
16547
+ container: string;
16548
+ containerEmptyMode: string;
16549
+ containerFromMode: string;
16550
+ containerToMode: string;
16551
+ containerPlaceholder: string;
16552
+ containersDivider: string;
16248
16553
  };
16249
16554
  comment: string;
16250
16555
  dropdown: {
@@ -16695,6 +17000,9 @@ declare module "entries/plugins" {
16695
17000
  rootDragMod: string;
16696
17001
  rootDisabled: string;
16697
17002
  rootDragHandleAreaIcon: string;
17003
+ rootSelectToRankMod: string;
17004
+ rootSelectToRankAlignVertical: string;
17005
+ rootSelectToRankAlignHorizontal: string;
16698
17006
  item: string;
16699
17007
  itemContent: string;
16700
17008
  itemIndex: string;
@@ -16707,6 +17015,12 @@ declare module "entries/plugins" {
16707
17015
  itemIconFocusMod: string;
16708
17016
  itemGhostMod: string;
16709
17017
  itemDragMod: string;
17018
+ container: string;
17019
+ containerEmptyMode: string;
17020
+ containerFromMode: string;
17021
+ containerToMode: string;
17022
+ containerPlaceholder: string;
17023
+ containersDivider: string;
16710
17024
  };
16711
17025
  comment: string;
16712
17026
  dropdown: {
@@ -17041,6 +17355,9 @@ declare module "entries/plugins" {
17041
17355
  rootDragMod: string;
17042
17356
  rootDisabled: string;
17043
17357
  rootDragHandleAreaIcon: string;
17358
+ rootSelectToRankMod: string;
17359
+ rootSelectToRankAlignVertical: string;
17360
+ rootSelectToRankAlignHorizontal: string;
17044
17361
  item: string;
17045
17362
  itemContent: string;
17046
17363
  itemIndex: string;
@@ -17053,6 +17370,12 @@ declare module "entries/plugins" {
17053
17370
  itemIconFocusMod: string;
17054
17371
  itemGhostMod: string;
17055
17372
  itemDragMod: string;
17373
+ container: string;
17374
+ containerEmptyMode: string;
17375
+ containerFromMode: string;
17376
+ containerToMode: string;
17377
+ containerPlaceholder: string;
17378
+ containersDivider: string;
17056
17379
  };
17057
17380
  comment: string;
17058
17381
  dropdown: {
@@ -20978,6 +21301,7 @@ declare module "react/components/popup/popup" {
20978
21301
  import { SurveyElementBase } from "react/reactquestion_element";
20979
21302
  interface IPopupProps {
20980
21303
  model: PopupModel;
21304
+ getTarget?: (container: HTMLElement) => HTMLElement;
20981
21305
  }
20982
21306
  export class Popup extends SurveyElementBase<IPopupProps, any> {
20983
21307
  private popup;
@@ -20989,7 +21313,6 @@ declare module "react/components/popup/popup" {
20989
21313
  private setTargetElement;
20990
21314
  componentDidMount(): void;
20991
21315
  componentDidUpdate(prevProps: any, prevState: any): void;
20992
- componentWillUnmount(): void;
20993
21316
  shouldComponentUpdate(nextProps: IPopupProps, nextState: any): boolean;
20994
21317
  render(): JSX.Element;
20995
21318
  }
@@ -21012,14 +21335,14 @@ declare module "react/components/popup/popup" {
21012
21335
  protected renderHeaderPopup(popupModel: PopupBaseViewModel): JSX.Element | null;
21013
21336
  }
21014
21337
  export function showModal(componentName: string, data: any, onApply: () => boolean, onCancel?: () => void, cssClass?: string, title?: string, displayMode?: "popup" | "overlay"): PopupBaseViewModel;
21015
- export function showDialog(dialogOptions: IDialogOptions): PopupBaseViewModel;
21338
+ export function showDialog(dialogOptions: IDialogOptions, container?: HTMLElement): PopupBaseViewModel;
21016
21339
  }
21017
21340
  declare module "react/components/action-bar/action-bar-item-dropdown" {
21018
21341
  import { SurveyActionBarItem } from "react/components/action-bar/action-bar-item";
21019
21342
  export class SurveyActionBarItemDropdown extends SurveyActionBarItem {
21020
21343
  private viewModel;
21021
21344
  constructor(props: any);
21022
- renderButtonContent(): JSX.Element;
21345
+ renderInnerButton(): JSX.Element;
21023
21346
  componentWillUnmount(): void;
21024
21347
  }
21025
21348
  }
@@ -21487,8 +21810,8 @@ declare module "react/reactquestion_ranking" {
21487
21810
  export class SurveyQuestionRanking extends SurveyQuestionElementBase {
21488
21811
  protected get question(): QuestionRankingModel;
21489
21812
  protected renderElement(): JSX.Element;
21490
- protected getItems(): Array<any>;
21491
- protected renderItem(item: ItemValue, i: number, handleKeydown: (event: any) => void, handlePointerDown: (event: PointerEvent) => void, cssClasses: any, itemClass: string, question: QuestionRankingModel): JSX.Element;
21813
+ protected getItems(choices?: any, unrankedItem?: boolean): Array<any>;
21814
+ protected renderItem(item: ItemValue, i: number, handleKeydown: (event: any) => void, handlePointerDown: (event: PointerEvent) => void, cssClasses: any, itemClass: string, question: QuestionRankingModel, unrankedItem?: boolean): JSX.Element;
21492
21815
  }
21493
21816
  export class SurveyQuestionRankingItem extends ReactSurveyElement {
21494
21817
  protected get text(): string;
@@ -21500,11 +21823,13 @@ declare module "react/reactquestion_ranking" {
21500
21823
  protected get itemClass(): string;
21501
21824
  protected get itemTabIndex(): number;
21502
21825
  protected get question(): any;
21826
+ protected get unrankedItem(): any;
21827
+ protected get item(): any;
21503
21828
  protected renderElement(): JSX.Element;
21504
21829
  }
21505
21830
  }
21506
21831
  declare module "react/components/rating/rating-item" {
21507
- import { QuestionRatingModel, RenderedRatingItem } from "entries/core";
21832
+ import { Base, QuestionRatingModel, RenderedRatingItem } from "entries/core";
21508
21833
  import { SurveyElementBase } from "react/reactquestion_element";
21509
21834
  export interface IRatingItemProps {
21510
21835
  question: QuestionRatingModel;
@@ -21513,36 +21838,28 @@ declare module "react/components/rating/rating-item" {
21513
21838
  handleOnClick: any;
21514
21839
  isDisplayMode: boolean;
21515
21840
  }
21516
- export class RatingItem extends SurveyElementBase<IRatingItemProps, any> {
21841
+ export class RatingItemBase extends SurveyElementBase<IRatingItemProps, any> {
21842
+ constructor(props: any);
21517
21843
  get question(): QuestionRatingModel;
21518
21844
  get item(): RenderedRatingItem;
21519
21845
  get index(): any;
21520
- getStateElement(): RenderedRatingItem;
21846
+ getStateElement(): Base;
21847
+ handleOnMouseDown(event: any): void;
21848
+ }
21849
+ export class RatingItem extends RatingItemBase {
21521
21850
  render(): JSX.Element | null;
21522
21851
  componentDidMount(): void;
21523
21852
  }
21524
21853
  }
21525
21854
  declare module "react/components/rating/rating-item-star" {
21526
- import { QuestionRatingModel, RenderedRatingItem } from "entries/core";
21527
- import { SurveyElementBase } from "react/reactquestion_element";
21528
- import { IRatingItemProps } from "react/components/rating/rating-item";
21529
- export class RatingItemStar extends SurveyElementBase<IRatingItemProps, any> {
21530
- get question(): QuestionRatingModel;
21531
- get item(): RenderedRatingItem;
21532
- get index(): any;
21533
- getStateElement(): RenderedRatingItem;
21855
+ import { RatingItemBase } from "react/components/rating/rating-item";
21856
+ export class RatingItemStar extends RatingItemBase {
21534
21857
  render(): JSX.Element | null;
21535
21858
  }
21536
21859
  }
21537
21860
  declare module "react/components/rating/rating-item-smiley" {
21538
- import { QuestionRatingModel, RenderedRatingItem } from "entries/core";
21539
- import { SurveyElementBase } from "react/reactquestion_element";
21540
- import { IRatingItemProps } from "react/components/rating/rating-item";
21541
- export class RatingItemSmiley extends SurveyElementBase<IRatingItemProps, any> {
21542
- get question(): QuestionRatingModel;
21543
- get item(): RenderedRatingItem;
21544
- get index(): any;
21545
- getStateElement(): RenderedRatingItem;
21861
+ import { RatingItemBase } from "react/components/rating/rating-item";
21862
+ export class RatingItemSmiley extends RatingItemBase {
21546
21863
  render(): JSX.Element | null;
21547
21864
  }
21548
21865
  }
@@ -21657,6 +21974,7 @@ declare module "react/reactquestion_matrix" {
21657
21974
  private get question();
21658
21975
  private get row();
21659
21976
  handleOnChange(event: any): void;
21977
+ handleOnMouseDown(event: any): void;
21660
21978
  protected wrapCell(cell: any, element: JSX.Element, reason: string): JSX.Element;
21661
21979
  protected canRender(): boolean;
21662
21980
  protected renderElement(): JSX.Element;
@@ -21742,6 +22060,7 @@ declare module "react/reactquestion_radiogroup" {
21742
22060
  private get hideCaption();
21743
22061
  shouldComponentUpdate(nextProps: any, nextState: any): boolean;
21744
22062
  handleOnChange(event: any): void;
22063
+ handleOnMouseDown(event: any): void;
21745
22064
  protected canRender(): boolean;
21746
22065
  protected renderElement(): JSX.Element;
21747
22066
  }