survey-core 1.9.128 → 1.9.130

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/defaultV2.css +171 -51
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +171 -51
  4. package/defaultV2.fontless.css.map +1 -1
  5. package/defaultV2.fontless.min.css +2 -2
  6. package/defaultV2.min.css +2 -2
  7. package/i18n/arabic.js +1 -1
  8. package/i18n/arabic.min.js +1 -1
  9. package/i18n/basque.js +1 -1
  10. package/i18n/basque.min.js +1 -1
  11. package/i18n/bulgarian.js +1 -1
  12. package/i18n/bulgarian.min.js +1 -1
  13. package/i18n/catalan.js +1 -1
  14. package/i18n/catalan.min.js +1 -1
  15. package/i18n/croatian.js +1 -1
  16. package/i18n/croatian.min.js +1 -1
  17. package/i18n/czech.js +1 -1
  18. package/i18n/czech.min.js +1 -1
  19. package/i18n/danish.js +1 -1
  20. package/i18n/danish.min.js +1 -1
  21. package/i18n/dutch.js +1 -1
  22. package/i18n/dutch.min.js +1 -1
  23. package/i18n/english.js +6 -6
  24. package/i18n/english.js.map +1 -1
  25. package/i18n/english.min.js +2 -2
  26. package/i18n/estonian.js +1 -1
  27. package/i18n/estonian.min.js +1 -1
  28. package/i18n/finnish.js +1 -1
  29. package/i18n/finnish.min.js +1 -1
  30. package/i18n/french.js +1 -1
  31. package/i18n/french.min.js +1 -1
  32. package/i18n/georgian.js +1 -1
  33. package/i18n/georgian.min.js +1 -1
  34. package/i18n/german.js +1 -1
  35. package/i18n/german.min.js +1 -1
  36. package/i18n/greek.js +1 -1
  37. package/i18n/greek.min.js +1 -1
  38. package/i18n/hebrew.js +1 -1
  39. package/i18n/hebrew.min.js +1 -1
  40. package/i18n/hindi.js +1 -1
  41. package/i18n/hindi.min.js +1 -1
  42. package/i18n/hungarian.js +1 -1
  43. package/i18n/hungarian.min.js +1 -1
  44. package/i18n/icelandic.js +1 -1
  45. package/i18n/icelandic.min.js +1 -1
  46. package/i18n/index.js +3 -3
  47. package/i18n/index.js.map +1 -1
  48. package/i18n/index.min.js +2 -2
  49. package/i18n/indonesian.js +1 -1
  50. package/i18n/indonesian.min.js +1 -1
  51. package/i18n/italian.js +1 -1
  52. package/i18n/italian.min.js +1 -1
  53. package/i18n/japanese.js +1 -1
  54. package/i18n/japanese.min.js +1 -1
  55. package/i18n/kazakh.js +1 -1
  56. package/i18n/kazakh.min.js +1 -1
  57. package/i18n/korean.js +1 -1
  58. package/i18n/korean.min.js +1 -1
  59. package/i18n/latvian.js +1 -1
  60. package/i18n/latvian.min.js +1 -1
  61. package/i18n/lithuanian.js +1 -1
  62. package/i18n/lithuanian.min.js +1 -1
  63. package/i18n/macedonian.js +1 -1
  64. package/i18n/macedonian.min.js +1 -1
  65. package/i18n/malay.js +1 -1
  66. package/i18n/malay.min.js +1 -1
  67. package/i18n/nl-BE.js +1 -1
  68. package/i18n/nl-BE.min.js +1 -1
  69. package/i18n/norwegian.js +1 -1
  70. package/i18n/norwegian.min.js +1 -1
  71. package/i18n/persian.js +1 -1
  72. package/i18n/persian.min.js +1 -1
  73. package/i18n/polish.js +1 -1
  74. package/i18n/polish.min.js +1 -1
  75. package/i18n/portuguese-br.js +1 -1
  76. package/i18n/portuguese-br.min.js +1 -1
  77. package/i18n/portuguese.js +1 -1
  78. package/i18n/portuguese.min.js +1 -1
  79. package/i18n/romanian.js +1 -1
  80. package/i18n/romanian.min.js +1 -1
  81. package/i18n/russian.js +1 -1
  82. package/i18n/russian.min.js +1 -1
  83. package/i18n/serbian.js +1 -1
  84. package/i18n/serbian.min.js +1 -1
  85. package/i18n/simplified-chinese.js +1 -1
  86. package/i18n/simplified-chinese.min.js +1 -1
  87. package/i18n/slovak.js +2 -2
  88. package/i18n/slovak.js.map +1 -1
  89. package/i18n/slovak.min.js +2 -2
  90. package/i18n/spanish.js +2 -2
  91. package/i18n/spanish.js.map +1 -1
  92. package/i18n/spanish.min.js +2 -2
  93. package/i18n/swahili.js +1 -1
  94. package/i18n/swahili.min.js +1 -1
  95. package/i18n/swedish.js +1 -1
  96. package/i18n/swedish.min.js +1 -1
  97. package/i18n/tajik.js +1 -1
  98. package/i18n/tajik.min.js +1 -1
  99. package/i18n/telugu.js +1 -1
  100. package/i18n/telugu.min.js +1 -1
  101. package/i18n/thai.js +1 -1
  102. package/i18n/thai.min.js +1 -1
  103. package/i18n/traditional-chinese.js +1 -1
  104. package/i18n/traditional-chinese.min.js +1 -1
  105. package/i18n/turkish.js +1 -1
  106. package/i18n/turkish.min.js +1 -1
  107. package/i18n/ukrainian.js +1 -1
  108. package/i18n/ukrainian.min.js +1 -1
  109. package/i18n/urdu.js +1 -1
  110. package/i18n/urdu.min.js +1 -1
  111. package/i18n/vietnamese.js +1 -1
  112. package/i18n/vietnamese.min.js +1 -1
  113. package/i18n/welsh.js +1 -1
  114. package/i18n/welsh.min.js +1 -1
  115. package/modern.css +65 -16
  116. package/modern.css.map +1 -1
  117. package/modern.fontless.css +65 -16
  118. package/modern.fontless.css.map +1 -1
  119. package/modern.fontless.min.css +2 -2
  120. package/modern.min.css +2 -2
  121. package/package.json +1 -1
  122. package/plugins/bootstrap-integration.js +1 -1
  123. package/plugins/bootstrap-integration.min.js +1 -1
  124. package/plugins/bootstrap-material-integration.js +1 -1
  125. package/plugins/bootstrap-material-integration.min.js +1 -1
  126. package/survey.core.js +769 -173
  127. package/survey.core.js.map +1 -1
  128. package/survey.core.min.js +3 -3
  129. package/survey.css +63 -15
  130. package/survey.css.map +1 -1
  131. package/survey.i18n.js +3 -3
  132. package/survey.i18n.js.map +1 -1
  133. package/survey.i18n.min.js +2 -2
  134. package/survey.min.css +2 -2
  135. package/themes/borderless-dark-panelless.js +1 -1
  136. package/themes/borderless-dark-panelless.min.js +1 -1
  137. package/themes/borderless-dark.js +1 -1
  138. package/themes/borderless-dark.min.js +1 -1
  139. package/themes/borderless-light-panelless..js +1 -1
  140. package/themes/borderless-light-panelless..min.js +1 -1
  141. package/themes/borderless-light.js +1 -1
  142. package/themes/borderless-light.min.js +1 -1
  143. package/themes/contrast-dark-panelless.js +1 -1
  144. package/themes/contrast-dark-panelless.min.js +1 -1
  145. package/themes/contrast-dark.js +1 -1
  146. package/themes/contrast-dark.min.js +1 -1
  147. package/themes/contrast-light-panelless.js +1 -1
  148. package/themes/contrast-light-panelless.min.js +1 -1
  149. package/themes/contrast-light.js +1 -1
  150. package/themes/contrast-light.min.js +1 -1
  151. package/themes/default-dark-panelless.js +1 -1
  152. package/themes/default-dark-panelless.min.js +1 -1
  153. package/themes/default-dark.js +1 -1
  154. package/themes/default-dark.min.js +1 -1
  155. package/themes/default-light-panelless.js +1 -1
  156. package/themes/default-light-panelless.min.js +1 -1
  157. package/themes/default-light.js +1 -1
  158. package/themes/default-light.min.js +1 -1
  159. package/themes/doubleborder-dark-panelless.js +1 -1
  160. package/themes/doubleborder-dark-panelless.min.js +1 -1
  161. package/themes/doubleborder-dark.js +1 -1
  162. package/themes/doubleborder-dark.min.js +1 -1
  163. package/themes/doubleborder-light-panelles.js +1 -1
  164. package/themes/doubleborder-light-panelles.min.js +1 -1
  165. package/themes/doubleborder-light.js +1 -1
  166. package/themes/doubleborder-light.min.js +1 -1
  167. package/themes/flat-dark-panelless.js +1 -1
  168. package/themes/flat-dark-panelless.min.js +1 -1
  169. package/themes/flat-dark.js +1 -1
  170. package/themes/flat-dark.min.js +1 -1
  171. package/themes/flat-light-panelless.js +1 -1
  172. package/themes/flat-light-panelless.min.js +1 -1
  173. package/themes/flat-light.js +1 -1
  174. package/themes/flat-light.min.js +1 -1
  175. package/themes/index.js +1 -1
  176. package/themes/index.min.js +1 -1
  177. package/themes/layered-dark-panelless.js +1 -1
  178. package/themes/layered-dark-panelless.min.js +1 -1
  179. package/themes/layered-dark.js +1 -1
  180. package/themes/layered-dark.min.js +1 -1
  181. package/themes/layered-light-panelless.js +1 -1
  182. package/themes/layered-light-panelless.min.js +1 -1
  183. package/themes/layered-light.js +1 -1
  184. package/themes/layered-light.min.js +1 -1
  185. package/themes/plain-dark-panelless.js +1 -1
  186. package/themes/plain-dark-panelless.min.js +1 -1
  187. package/themes/plain-dark.js +1 -1
  188. package/themes/plain-dark.min.js +1 -1
  189. package/themes/plain-light-panelless.js +1 -1
  190. package/themes/plain-light-panelless.min.js +1 -1
  191. package/themes/plain-light.js +1 -1
  192. package/themes/plain-light.min.js +1 -1
  193. package/themes/sharp-dark-panelless.js +1 -1
  194. package/themes/sharp-dark-panelless.min.js +1 -1
  195. package/themes/sharp-dark.js +1 -1
  196. package/themes/sharp-dark.min.js +1 -1
  197. package/themes/sharp-light-panelless.js +1 -1
  198. package/themes/sharp-light-panelless.min.js +1 -1
  199. package/themes/sharp-light.js +1 -1
  200. package/themes/sharp-light.min.js +1 -1
  201. package/themes/solid-dark-panelless.js +1 -1
  202. package/themes/solid-dark-panelless.min.js +1 -1
  203. package/themes/solid-dark.js +1 -1
  204. package/themes/solid-dark.min.js +1 -1
  205. package/themes/solid-light-panelless.js +1 -1
  206. package/themes/solid-light-panelless.min.js +1 -1
  207. package/themes/solid-light.js +1 -1
  208. package/themes/solid-light.min.js +1 -1
  209. package/themes/three-dimensional-dark-panelless.js +1 -1
  210. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  211. package/themes/three-dimensional-dark.js +1 -1
  212. package/themes/three-dimensional-dark.min.js +1 -1
  213. package/themes/three-dimensional-light-panelless.js +1 -1
  214. package/themes/three-dimensional-light-panelless.min.js +1 -1
  215. package/themes/three-dimensional-light.js +1 -1
  216. package/themes/three-dimensional-light.min.js +1 -1
  217. package/ts3.4/typings/base-interfaces.d.ts +4 -0
  218. package/ts3.4/typings/defaultCss/cssmodern.d.ts +2 -0
  219. package/ts3.4/typings/defaultCss/cssstandard.d.ts +2 -0
  220. package/ts3.4/typings/defaultCss/defaultV2Css.d.ts +3 -0
  221. package/ts3.4/typings/dragdrop/dom-adapter.d.ts +2 -1
  222. package/ts3.4/typings/dropdownListModel.d.ts +2 -0
  223. package/ts3.4/typings/entries/chunks/model.d.ts +2 -2
  224. package/ts3.4/typings/header.d.ts +3 -0
  225. package/ts3.4/typings/jsonobject.d.ts +7 -0
  226. package/ts3.4/typings/panel.d.ts +7 -1
  227. package/ts3.4/typings/popup-survey.d.ts +10 -0
  228. package/ts3.4/typings/question_boolean.d.ts +3 -0
  229. package/ts3.4/typings/question_custom.d.ts +2 -0
  230. package/ts3.4/typings/question_file.d.ts +2 -1
  231. package/ts3.4/typings/question_matrixdropdownbase.d.ts +13 -8
  232. package/ts3.4/typings/question_matrixdropdowncolumn.d.ts +17 -0
  233. package/ts3.4/typings/question_matrixdropdownrendered.d.ts +1 -0
  234. package/ts3.4/typings/question_matrixdynamic.d.ts +2 -3
  235. package/ts3.4/typings/question_paneldynamic.d.ts +1 -1
  236. package/ts3.4/typings/settings.d.ts +27 -11
  237. package/ts3.4/typings/survey-events-api.d.ts +19 -0
  238. package/ts3.4/typings/survey.d.ts +19 -1
  239. package/ts3.4/typings/utils/utils.d.ts +4 -3
  240. package/typings/base-interfaces.d.ts +4 -0
  241. package/typings/defaultCss/cssmodern.d.ts +2 -0
  242. package/typings/defaultCss/cssstandard.d.ts +2 -0
  243. package/typings/defaultCss/defaultV2Css.d.ts +3 -0
  244. package/typings/dragdrop/dom-adapter.d.ts +2 -1
  245. package/typings/dropdownListModel.d.ts +2 -0
  246. package/typings/entries/chunks/model.d.ts +2 -2
  247. package/typings/header.d.ts +3 -0
  248. package/typings/jsonobject.d.ts +7 -0
  249. package/typings/panel.d.ts +7 -1
  250. package/typings/popup-survey.d.ts +12 -0
  251. package/typings/question_boolean.d.ts +3 -0
  252. package/typings/question_custom.d.ts +2 -0
  253. package/typings/question_file.d.ts +2 -1
  254. package/typings/question_matrixdropdownbase.d.ts +14 -8
  255. package/typings/question_matrixdropdowncolumn.d.ts +18 -0
  256. package/typings/question_matrixdropdownrendered.d.ts +1 -0
  257. package/typings/question_matrixdynamic.d.ts +2 -3
  258. package/typings/question_paneldynamic.d.ts +1 -1
  259. package/typings/settings.d.ts +27 -11
  260. package/typings/survey-events-api.d.ts +19 -0
  261. package/typings/survey.d.ts +19 -1
  262. package/typings/utils/utils.d.ts +4 -3
@@ -286,6 +286,11 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
286
286
  get rows(): Array<QuestionRowModel>;
287
287
  ensureRowsVisibility(): void;
288
288
  protected onRowsChanged(): void;
289
+ private locCountRowUpdates;
290
+ private blockRowsUpdates;
291
+ private releaseRowsUpdates;
292
+ private updateRowsBeforeElementRemoved;
293
+ private updateRowsOnElementAdded;
289
294
  protected onAddElement(element: IElement, index: number): void;
290
295
  protected onRemoveElement(element: IElement): void;
291
296
  private onElementVisibilityChanged;
@@ -352,6 +357,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
352
357
  * @see addNewPanel
353
358
  */
354
359
  addElement(element: IElement, index?: number): boolean;
360
+ insertElement(element: IElement, dest?: IElement, location?: "bottom" | "top" | "left" | "right"): void;
355
361
  insertElementAfter(element: IElement, after: IElement): void;
356
362
  insertElementBefore(element: IElement, before: IElement): void;
357
363
  protected canAddElement(element: IElement): boolean;
@@ -374,7 +380,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
374
380
  *
375
381
  * This method returns `null` if the panel cannot be created or added to this panel/page; otherwise, the method returns the created panel.
376
382
  * @param name A panel name.
377
- * @see elements
383
+ * @see elementsup
378
384
  * @see addElement
379
385
  */
380
386
  addNewPanel(name?: string): PanelModel;
@@ -34,6 +34,8 @@ export declare class PopupSurveyModel extends Base {
34
34
  */
35
35
  get isShowing(): boolean;
36
36
  set isShowing(val: boolean);
37
+ get isFullScreen(): boolean;
38
+ set isFullScreen(val: boolean);
37
39
  /**
38
40
  * Shows the pop-up survey. The survey may appear [expanded or collapsed](#isExpanded).
39
41
  *
@@ -50,6 +52,7 @@ export declare class PopupSurveyModel extends Base {
50
52
  * @see collapse
51
53
  */
52
54
  hide(): void;
55
+ toggleFullScreen(): void;
53
56
  /**
54
57
  * Indicates whether the pop-up window is expanded or collapsed.
55
58
  *
@@ -93,6 +96,13 @@ export declare class PopupSurveyModel extends Base {
93
96
  */
94
97
  get allowClose(): boolean;
95
98
  set allowClose(val: boolean);
99
+ /**
100
+ * Specifies whether to display a button that allows respondents to show the pop-up survey in full screen mode.
101
+ *
102
+ * Default value: `false`
103
+ */
104
+ get allowFullScreen(): boolean;
105
+ set allowFullScreen(val: boolean);
96
106
  get css(): any;
97
107
  get cssButton(): string;
98
108
  get cssRoot(): string;
@@ -104,9 +114,11 @@ export declare class PopupSurveyModel extends Base {
104
114
  get cssHeaderButtonsContainer(): string;
105
115
  get cssHeaderCollapseButton(): string;
106
116
  get cssHeaderCloseButton(): string;
117
+ get cssHeaderFullScreenButton(): string;
107
118
  get renderedWidth(): string;
108
119
  width: string;
109
120
  private updateCss;
121
+ private setCssRoot;
110
122
  private updateCssButton;
111
123
  private setCssButton;
112
124
  protected createSurvey(jsonObj: any): SurveyModel;
@@ -46,6 +46,9 @@ export declare class QuestionBooleanModel extends Question {
46
46
  set labelTrue(val: string);
47
47
  get locLabelTrue(): LocalizableString;
48
48
  get isDeterminated(): boolean;
49
+ swapOrder: boolean;
50
+ get locLabelLeft(): LocalizableString;
51
+ get locLabelRight(): LocalizableString;
49
52
  /**
50
53
  * Gets or sets a text label that corresponds to a negative answer.
51
54
  *
@@ -332,6 +332,7 @@ export declare class QuestionCustomModel extends QuestionCustomModelBase {
332
332
  getDynamicType(): string;
333
333
  getOriginalObj(): Base;
334
334
  protected createWrapper(): void;
335
+ private getDynamicProperty;
335
336
  protected getElement(): SurveyElement;
336
337
  onAnyValueChanged(name: string, questionName: string): void;
337
338
  protected getQuestionByName(name: string): IQuestion;
@@ -390,6 +391,7 @@ export declare class QuestionCompositeModel extends QuestionCustomModelBase {
390
391
  protected getQuestionByName(name: string): IQuestion;
391
392
  private settingNewValue;
392
393
  setValue(name: string, newValue: any, locNotification: any, allowNotifyValueChanged?: boolean): any;
394
+ getFilteredValues(): any;
393
395
  private updateValueCoreWithPanelValue;
394
396
  private getContentPanelValue;
395
397
  private getValueForContentPanel;
@@ -148,6 +148,7 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
148
148
  */
149
149
  get maxSize(): number;
150
150
  set maxSize(val: number);
151
+ chooseFile(event: MouseEvent): void;
151
152
  /**
152
153
  * Specifies whether users should confirm file deletion.
153
154
  *
@@ -239,7 +240,7 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
239
240
  protected onChangeQuestionValue(newValue: any): void;
240
241
  protected calcCssClasses(css: any): any;
241
242
  updateElementCss(reNew?: boolean): void;
242
- endLoadingFromJson(): void;
243
+ onSurveyLoad(): void;
243
244
  protected needResponsiveness(): boolean;
244
245
  protected supportResponsiveness(): boolean;
245
246
  protected getObservedElementSelector(): string;
@@ -47,6 +47,7 @@ export declare class MatrixDropdownCell {
47
47
  get question(): Question;
48
48
  get value(): any;
49
49
  set value(value: any);
50
+ getQuestionWrapperClassName(className: string): string;
50
51
  runCondition(values: HashTable<any>, properties: HashTable<any>): void;
51
52
  }
52
53
  export declare class MatrixDropdownTotalCell extends MatrixDropdownCell {
@@ -57,6 +58,7 @@ export declare class MatrixDropdownTotalCell extends MatrixDropdownCell {
57
58
  protected createQuestion(column: MatrixDropdownColumn, row: MatrixDropdownRowModelBase, data: IMatrixDropdownData): Question;
58
59
  locStrsChanged(): void;
59
60
  updateCellQuestion(): void;
61
+ getQuestionWrapperClassName(className: string): string;
60
62
  getTotalExpression(): string;
61
63
  }
62
64
  export declare class MatrixDropdownRowModelBase implements ISurveyData, ISurveyImpl, ILocalizableOwner {
@@ -191,12 +193,16 @@ export declare class QuestionMatrixDropdownModelBase extends QuestionMatrixBaseM
191
193
  protected updateColumnsAndRows(): void;
192
194
  itemValuePropertyChanged(item: ItemValue, name: string, oldValue: any, newValue: any): void;
193
195
  /**
194
- * Specifies the matrix layout. Set this property to `"vertical"` if you want to display columns instead of rows and rows instead of columns.
196
+ * Specifies whether to display [`columns`](#columns) as rows and [`rows`](#rows) as columns.
195
197
  *
196
- * Default value: `"horizontal"`
197
- * @see columns
198
- * @see rows
199
- * @see isColumnLayoutHorizontal
198
+ * Default value: `false`
199
+ *
200
+ * [View Demo](https://surveyjs.io/form-library/examples/transpose-dynamic-rows-to-columns-in-matrix/ (linkStyle))
201
+ */
202
+ get transposeData(): boolean;
203
+ set transposeData(val: boolean);
204
+ /**
205
+ * This property is obsolete. Use the [`transposeData`](#transposeData) property instead.
200
206
  */
201
207
  get columnLayout(): string;
202
208
  set columnLayout(val: string);
@@ -228,10 +234,10 @@ export declare class QuestionMatrixDropdownModelBase extends QuestionMatrixBaseM
228
234
  set cellErrorLocation(value: string);
229
235
  getChildErrorLocation(child: Question): string;
230
236
  /**
231
- * Returns `true` if columns are placed in the horizontal direction and rows in the vertical direction.
237
+ * Returns `true` if [`columns`](#columns) are placed in the horizontal direction and [`rows`](#columns) in the vertical direction.
232
238
  *
233
- * To specify the layout, use the `columnLayout` property. If you set it to `"vertical"`, the survey applies it only when the screen has enough space. Otherwise, the survey falls back to the horizontal layout, but the `columnLayout` property remains set to `"vertical"`. Unlike `columnLayout`, the `isColumnLayoutHorizontal` property always indicates the current layout.
234
- * @see columnLayout
239
+ * To specify the layout, use the [`transposeData`](#transposeData) property. If you set it to `true`, the survey applies it only when the screen has enough space. Otherwise, the survey falls back to the original layout, but the `transposeData` property remains set to `true`. Unlike `transposeData`, the `isColumnLayoutHorizontal` property always indicates the current layout.
240
+ * @see transposeData
235
241
  */
236
242
  get isColumnLayoutHorizontal(): boolean;
237
243
  /**
@@ -275,6 +275,24 @@ export declare class MatrixDropdownColumn extends Base implements ILocalizableOw
275
275
  */
276
276
  get totalDisplayStyle(): string;
277
277
  set totalDisplayStyle(val: string);
278
+ /**
279
+ * An alignment for calculated total values.
280
+ *
281
+ * Possible values:
282
+ *
283
+ * - `"left"`
284
+ * - `"center"`
285
+ * - `"right"`
286
+ * - `"auto"` (default) - Applies one of the values above based on the column's [cell type](#cellType).
287
+ *
288
+ * [View Demo](https://surveyjs.io/form-library/examples/aggregate-data-within-form/ (linkStyle))
289
+ * @see totalType
290
+ * @see totalFormat
291
+ * @see totalCurrency
292
+ * @see totalDisplayStyle
293
+ */
294
+ get totalAlignment(): string;
295
+ set totalAlignment(val: string);
278
296
  /**
279
297
  * Specifies a currency used to display calculated total values. Applies only if [`totalDisplayStyle`](#totalDisplayStyle) is set to `"currency"`.
280
298
  * @see totalType
@@ -46,6 +46,7 @@ export declare class QuestionMatrixDropdownRenderedCell {
46
46
  get isFirstChoice(): boolean;
47
47
  set className(val: string);
48
48
  get className(): string;
49
+ get cellQuestionWrapperClassName(): string;
49
50
  get headers(): string;
50
51
  getTitle(): string;
51
52
  calculateFinalClassName(matrixCssClasses: any): string;
@@ -84,7 +84,7 @@ export declare class QuestionMatrixDynamicModel extends QuestionMatrixDropdownMo
84
84
  protected updateProgressInfoByValues(res: IProgressInfo): void;
85
85
  private getValueForNewRow;
86
86
  /**
87
- * Specifies whether users can drag and drop matrix rows to reorder them. Applies only if [`columnLayout`](#columnLayout) is `"horizontal"`.
87
+ * Specifies whether users can drag and drop matrix rows to reorder them. Applies only if [`transposeData`](#transposeData) is `false`.
88
88
  *
89
89
  * Default value: `false`
90
90
  */
@@ -217,8 +217,7 @@ export declare class QuestionMatrixDynamicModel extends QuestionMatrixDropdownMo
217
217
  * - `"bottom"` - Displays the Add Row button at the bottom of the matrix.
218
218
  * - `"topBottom"` - Displays the Add Row button at the top and bottom of the matrix.
219
219
  *
220
- * Default value: `"top"` if `columnLayout` is `vertical`; `"bottom"` if `columnLayout` is `"horizontal"` or the matrix is in compact mode.
221
- * @see columnLayout
220
+ * Default value: `"top"` if [`transposeData`](#transposeData) is `true`; `"bottom"` if `transposeData` is `false` or the matrix is in compact mode.
222
221
  * @see addRowText
223
222
  */
224
223
  get addRowLocation(): string;
@@ -612,7 +612,7 @@ export declare class QuestionPanelDynamicModel extends Question implements IQues
612
612
  getPrevButtonCss(): string;
613
613
  getNextButtonCss(): string;
614
614
  /**
615
- * A text displayed when Dynamic Panel contains no entries. Applies only in the Default V2 theme.
615
+ * A text displayed when Dynamic Panel contains no entries.
616
616
  */
617
617
  get noEntriesText(): string;
618
618
  set noEntriesText(val: string);
@@ -339,31 +339,47 @@ export declare var settings: {
339
339
  */
340
340
  tagboxCloseOnSelect: boolean;
341
341
  /**
342
- * A property that allows you to display a custom confirm dialog.
342
+ * A function that activates a browser confirm dialog.
343
343
  *
344
- * Set this property to a function that renders your custom dialog window. This function should return `true` if a user confirms an action or `false` otherwise.
344
+ * Use the following code to execute this function:
345
+ *
346
+ * ```js
347
+ * import { settings } from "survey-core";
348
+ *
349
+ * // `result` contains `true` if the action was confirmed or `false` otherwise
350
+ * const result = settings.confirmActionFunc("Are you sure?");
351
+ * ```
352
+ *
353
+ * You can redefine the `confirmActionFunc` function if you want to display a custom dialog window. Your function should return `true` if a user confirms an action or `false` otherwise.
345
354
  * @param message A message to be displayed in the confirm dialog window.
346
355
  */
347
356
  confirmActionFunc: (message: string) => boolean;
348
357
  /**
349
- * A property that allows you to display a custom confirm dialog in async mode or activate the standard browser dialog.
358
+ * A function that activates a proprietary SurveyJS confirm dialog.
350
359
  *
351
- * To display a custom confirm dialog, set this property to a function that renders it. This function should return `true` to be enabled; otherwise, a survey executes the [`confirmActionFunc`](#confirmActionFunc) function. Pass the dialog result as the `callback` parameter: `true` if a user confirms an action, `false` otherwise.
352
- *
353
- * To activate the standard browser dialog, set the `confirmActionAsync` property to a function that returns `false`. With this configuration, a survey falls back to the [`confirmActionFunc`](#confirmActionFunc) function, which renders the standard browser dialog by default.
360
+ * Use the following code to execute this function:
354
361
  *
355
362
  * ```js
356
363
  * import { settings } from "survey-core";
357
364
  *
358
- * // Display the standard browser dialog
359
- * settings.confirmActionAsync = () => {
360
- * return false;
361
- * }
365
+ * settings.confirmActionAsync("Are you sure?", (confirmed) => {
366
+ * if (confirmed) {
367
+ * // ...
368
+ * // Proceed with the action
369
+ * // ...
370
+ * } else {
371
+ * // ...
372
+ * // Cancel the action
373
+ * // ...
374
+ * }
375
+ * });
362
376
  * ```
377
+ *
378
+ * You can redefine the `confirmActionAsync` function if you want to display a custom dialog window. Your function should return `true` to be enabled; otherwise, a survey executes the [`confirmActionFunc`](#confirmActionFunc) function. Pass the dialog result as the `callback` parameter: `true` if a user confirms an action, `false` otherwise.
363
379
  * @param message A message to be displayed in the confirm dialog window.
364
380
  * @param callback A callback function that should be called with `true` if a user confirms an action or `false` otherwise.
365
381
  */
366
- confirmActionAsync: (message: string, callback: (res: boolean) => void, applyTitle?: string, locale?: string) => boolean;
382
+ confirmActionAsync: (message: string, callback: (res: boolean) => void, applyTitle?: string, locale?: string, rootElement?: HTMLElement) => boolean;
367
383
  /**
368
384
  * A minimum width value for all survey elements.
369
385
  *
@@ -508,6 +508,25 @@ export interface UploadFilesEvent extends LoadFilesEvent {
508
508
  */
509
509
  files: Array<File>;
510
510
  }
511
+ export interface OpenFileChooserEvent {
512
+ /**
513
+ * A file input HTML element.
514
+ */
515
+ input: HTMLInputElement;
516
+ /**
517
+ * A question, panel, page, or survey for which this event is raised.
518
+ */
519
+ element: Base;
520
+ /**
521
+ * A choice item for which the event is raised. This parameter has a value only when the dialog window is opened to select images for an [Image Picker](https://surveyjs.io/form-library/documentation/api-reference/image-picker-question-model) question.
522
+ */
523
+ item: ItemValue;
524
+ /**
525
+ * A callback function to which you should pass selected files.
526
+ * @param files An array of selected files.
527
+ */
528
+ callback: (files: Array<File>) => void;
529
+ }
511
530
  export interface DownloadFileEvent extends LoadFilesEvent {
512
531
  /**
513
532
  * A callback function that you should call when a file is downloaded successfully or when deletion fails. Pass `"success"` or `"error"` as the first argument to indicate the operation status. As the second argument, you can pass the downloaded file's data as a Base64 string if file download was successful or an error message if file download failed.
@@ -18,7 +18,7 @@ import { IAction, Action } from "./actions/action";
18
18
  import { ActionContainer } from "./actions/container";
19
19
  import { QuestionPanelDynamicModel } from "./question_paneldynamic";
20
20
  import { Notifier } from "./notifier";
21
- import { TriggerExecutedEvent, CompletingEvent, CompleteEvent, ShowingPreviewEvent, NavigateToUrlEvent, CurrentPageChangingEvent, CurrentPageChangedEvent, ValueChangingEvent, ValueChangedEvent, VariableChangedEvent, QuestionVisibleChangedEvent, PageVisibleChangedEvent, PanelVisibleChangedEvent, QuestionCreatedEvent, QuestionAddedEvent, QuestionRemovedEvent, PanelAddedEvent, PanelRemovedEvent, PageAddedEvent, ValidateQuestionEvent, SettingQuestionErrorsEvent, ValidatePanelEvent, ErrorCustomTextEvent, ValidatedErrorsOnCurrentPageEvent, ProcessHtmlEvent, GetQuestionTitleEvent, GetTitleTagNameEvent, GetQuestionNoEvent, ProgressTextEvent, TextMarkdownEvent, TextRenderAsEvent, SendResultEvent, GetResultEvent, UploadFilesEvent, DownloadFileEvent, ClearFilesEvent, LoadChoicesFromServerEvent, ProcessTextValueEvent, UpdateQuestionCssClassesEvent, UpdatePanelCssClassesEvent, UpdatePageCssClassesEvent, UpdateChoiceItemCssEvent, AfterRenderSurveyEvent, AfterRenderHeaderEvent, AfterRenderPageEvent, AfterRenderQuestionEvent, AfterRenderQuestionInputEvent, AfterRenderPanelEvent, FocusInQuestionEvent, FocusInPanelEvent, ShowingChoiceItemEvent, ChoicesLazyLoadEvent, GetChoiceDisplayValueEvent, MatrixRowAddedEvent, MatrixBeforeRowAddedEvent, MatrixRowRemovingEvent, MatrixRowRemovedEvent, MatrixAllowRemoveRowEvent, MatrixCellCreatingEvent, MatrixCellCreatedEvent, MatrixAfterCellRenderEvent, MatrixCellValueChangedEvent, MatrixCellValueChangingEvent, MatrixCellValidateEvent, DynamicPanelModifiedEvent, DynamicPanelRemovingEvent, TimerPanelInfoTextEvent, DynamicPanelItemValueChangedEvent, DynamicPanelGetTabTitleEvent, DynamicPanelCurrentIndexChangedEvent, IsAnswerCorrectEvent, DragDropAllowEvent, ScrollingElementToTopEvent, GetQuestionTitleActionsEvent, GetPanelTitleActionsEvent, GetPageTitleActionsEvent, GetPanelFooterActionsEvent, GetMatrixRowActionsEvent, ElementContentVisibilityChangedEvent, GetExpressionDisplayValueEvent, ServerValidateQuestionsEvent, MultipleTextItemAddedEvent, MatrixColumnAddedEvent, GetQuestionDisplayValueEvent, PopupVisibleChangedEvent, ChoicesSearchEvent } from "./survey-events-api";
21
+ import { TriggerExecutedEvent, CompletingEvent, CompleteEvent, ShowingPreviewEvent, NavigateToUrlEvent, CurrentPageChangingEvent, CurrentPageChangedEvent, ValueChangingEvent, ValueChangedEvent, VariableChangedEvent, QuestionVisibleChangedEvent, PageVisibleChangedEvent, PanelVisibleChangedEvent, QuestionCreatedEvent, QuestionAddedEvent, QuestionRemovedEvent, PanelAddedEvent, PanelRemovedEvent, PageAddedEvent, ValidateQuestionEvent, SettingQuestionErrorsEvent, ValidatePanelEvent, ErrorCustomTextEvent, ValidatedErrorsOnCurrentPageEvent, ProcessHtmlEvent, GetQuestionTitleEvent, GetTitleTagNameEvent, GetQuestionNoEvent, ProgressTextEvent, TextMarkdownEvent, TextRenderAsEvent, SendResultEvent, GetResultEvent, UploadFilesEvent, DownloadFileEvent, ClearFilesEvent, LoadChoicesFromServerEvent, ProcessTextValueEvent, UpdateQuestionCssClassesEvent, UpdatePanelCssClassesEvent, UpdatePageCssClassesEvent, UpdateChoiceItemCssEvent, AfterRenderSurveyEvent, AfterRenderHeaderEvent, AfterRenderPageEvent, AfterRenderQuestionEvent, AfterRenderQuestionInputEvent, AfterRenderPanelEvent, FocusInQuestionEvent, FocusInPanelEvent, ShowingChoiceItemEvent, ChoicesLazyLoadEvent, GetChoiceDisplayValueEvent, MatrixRowAddedEvent, MatrixBeforeRowAddedEvent, MatrixRowRemovingEvent, MatrixRowRemovedEvent, MatrixAllowRemoveRowEvent, MatrixCellCreatingEvent, MatrixCellCreatedEvent, MatrixAfterCellRenderEvent, MatrixCellValueChangedEvent, MatrixCellValueChangingEvent, MatrixCellValidateEvent, DynamicPanelModifiedEvent, DynamicPanelRemovingEvent, TimerPanelInfoTextEvent, DynamicPanelItemValueChangedEvent, DynamicPanelGetTabTitleEvent, DynamicPanelCurrentIndexChangedEvent, IsAnswerCorrectEvent, DragDropAllowEvent, ScrollingElementToTopEvent, GetQuestionTitleActionsEvent, GetPanelTitleActionsEvent, GetPageTitleActionsEvent, GetPanelFooterActionsEvent, GetMatrixRowActionsEvent, ElementContentVisibilityChangedEvent, GetExpressionDisplayValueEvent, ServerValidateQuestionsEvent, MultipleTextItemAddedEvent, MatrixColumnAddedEvent, GetQuestionDisplayValueEvent, PopupVisibleChangedEvent, ChoicesSearchEvent, OpenFileChooserEvent } from "./survey-events-api";
22
22
  import { QuestionMatrixDropdownModelBase } from "./question_matrixdropdownbase";
23
23
  import { QuestionMatrixDynamicModel } from "./question_matrixdynamic";
24
24
  import { QuestionFileModel } from "./question_file";
@@ -361,6 +361,12 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
361
361
  * @see getResult
362
362
  */
363
363
  onGetResult: EventBase<SurveyModel, GetResultEvent>;
364
+ /**
365
+ * An event that is raised when Survey Creator opens a dialog window for users to select files.
366
+ * @see onUploadFile
367
+ * @see uploadFiles
368
+ */
369
+ onOpenFileChooser: EventBase<SurveyModel, OpenFileChooserEvent>;
364
370
  /**
365
371
  * An event that is raised when a File Upload or Signature Pad question starts to upload a file. Applies only if [`storeDataAsText`](https://surveyjs.io/form-library/documentation/api-reference/file-model#storeDataAsText) is `false`. Use this event to upload files to your server.
366
372
  *
@@ -1216,6 +1222,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
1216
1222
  get isLogoBefore(): boolean;
1217
1223
  get isLogoAfter(): boolean;
1218
1224
  get logoClassNames(): string;
1225
+ private titleIsEmpty;
1219
1226
  get renderedHasTitle(): boolean;
1220
1227
  get renderedHasDescription(): boolean;
1221
1228
  get hasTitle(): boolean;
@@ -2154,6 +2161,17 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2154
2161
  private getUpdatedPageTitleActions;
2155
2162
  getUpdatedMatrixRowActions(question: QuestionMatrixDropdownModelBase, row: any, actions: Array<IAction>): IAction[];
2156
2163
  scrollElementToTop(element: ISurveyElement, question: Question, page: PageModel, id: string, scrollIfVisible?: boolean): any;
2164
+ /**
2165
+ * Opens a dialog window for users to select files.
2166
+ * @param input A [file input HTML element](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement).
2167
+ * @param callback A callback function that you can use to process selected files. Accepts an array of JavaScript <a href="https://developer.mozilla.org/en-US/docs/Web/API/File" target="_blank">File</a> objects.
2168
+ * @see onOpenFileChooser
2169
+ * @see onUploadFile
2170
+ */
2171
+ chooseFiles(input: HTMLInputElement, callback: (files: File[]) => void, context?: {
2172
+ element: ISurveyElement;
2173
+ item?: any;
2174
+ }): void;
2157
2175
  /**
2158
2176
  * Uploads files to a server.
2159
2177
  *
@@ -1,6 +1,6 @@
1
1
  declare function compareVersions(a: any, b: any): number;
2
2
  declare function confirmAction(message: string): boolean;
3
- declare function confirmActionAsync(message: string, funcOnYes: () => void, funcOnNo?: () => void, locale?: string): void;
3
+ declare function confirmActionAsync(message: string, funcOnYes: () => void, funcOnNo?: () => void, locale?: string, rootElement?: HTMLElement): void;
4
4
  declare function detectIEBrowser(): boolean;
5
5
  declare function detectIEOrEdge(): boolean;
6
6
  declare function loadFileFromBase64(b64Data: string, fileName: string): void;
@@ -40,5 +40,6 @@ export declare class Logger {
40
40
  log(action: string): void;
41
41
  get result(): string;
42
42
  }
43
- export declare function showConfirmDialog(message: string, callback: (res: boolean) => void, applyTitle?: string, locale?: string): boolean;
44
- export { mergeValues, getElementWidth, isContainerVisible, classesToSelector, compareVersions, confirmAction, confirmActionAsync, detectIEOrEdge, detectIEBrowser, loadFileFromBase64, isMobile, isShadowDOM, getElement, isElementVisible, findScrollableParent, scrollElementByChildId, navigateToUrl, wrapUrlForBackgroundImage, createSvg, getIconNameFromProxy, increaseHeightByContent, getOriginalEvent, preventDefaults, findParentByClassNames, getFirstVisibleChild, };
43
+ export declare function showConfirmDialog(message: string, callback: (res: boolean) => void, applyTitle?: string, locale?: string, rootElement?: HTMLElement): boolean;
44
+ declare function chooseFiles(input: HTMLInputElement, callback: (files: File[]) => void): void;
45
+ export { mergeValues, getElementWidth, isContainerVisible, classesToSelector, compareVersions, confirmAction, confirmActionAsync, detectIEOrEdge, detectIEBrowser, loadFileFromBase64, isMobile, isShadowDOM, getElement, isElementVisible, findScrollableParent, scrollElementByChildId, navigateToUrl, wrapUrlForBackgroundImage, createSvg, getIconNameFromProxy, increaseHeightByContent, getOriginalEvent, preventDefaults, findParentByClassNames, getFirstVisibleChild, chooseFiles };