survey-core 1.9.118 → 1.9.120

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 (253) hide show
  1. package/defaultV2.css +223 -100
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +223 -100
  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 +3 -2
  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 +2 -2
  43. package/i18n/hungarian.js.map +1 -1
  44. package/i18n/hungarian.min.js +2 -2
  45. package/i18n/icelandic.js +1 -1
  46. package/i18n/icelandic.min.js +1 -1
  47. package/i18n/index.js +2 -2
  48. package/i18n/index.js.map +1 -1
  49. package/i18n/index.min.js +2 -2
  50. package/i18n/indonesian.js +1 -1
  51. package/i18n/indonesian.min.js +1 -1
  52. package/i18n/italian.js +1 -1
  53. package/i18n/italian.min.js +1 -1
  54. package/i18n/japanese.js +1 -1
  55. package/i18n/japanese.min.js +1 -1
  56. package/i18n/kazakh.js +1 -1
  57. package/i18n/kazakh.min.js +1 -1
  58. package/i18n/korean.js +1 -1
  59. package/i18n/korean.min.js +1 -1
  60. package/i18n/latvian.js +1 -1
  61. package/i18n/latvian.min.js +1 -1
  62. package/i18n/lithuanian.js +1 -1
  63. package/i18n/lithuanian.min.js +1 -1
  64. package/i18n/macedonian.js +1 -1
  65. package/i18n/macedonian.min.js +1 -1
  66. package/i18n/malay.js +1 -1
  67. package/i18n/malay.min.js +1 -1
  68. package/i18n/nl-BE.js +1 -1
  69. package/i18n/nl-BE.min.js +1 -1
  70. package/i18n/norwegian.js +1 -1
  71. package/i18n/norwegian.min.js +1 -1
  72. package/i18n/persian.js +1 -1
  73. package/i18n/persian.min.js +1 -1
  74. package/i18n/polish.js +1 -1
  75. package/i18n/polish.min.js +1 -1
  76. package/i18n/portuguese-br.js +1 -1
  77. package/i18n/portuguese-br.min.js +1 -1
  78. package/i18n/portuguese.js +1 -1
  79. package/i18n/portuguese.min.js +1 -1
  80. package/i18n/romanian.js +1 -1
  81. package/i18n/romanian.min.js +1 -1
  82. package/i18n/russian.js +1 -1
  83. package/i18n/russian.min.js +1 -1
  84. package/i18n/serbian.js +1 -1
  85. package/i18n/serbian.min.js +1 -1
  86. package/i18n/simplified-chinese.js +1 -1
  87. package/i18n/simplified-chinese.min.js +1 -1
  88. package/i18n/slovak.js +1 -1
  89. package/i18n/slovak.min.js +1 -1
  90. package/i18n/spanish.js +1 -1
  91. package/i18n/spanish.min.js +1 -1
  92. package/i18n/swahili.js +1 -1
  93. package/i18n/swahili.min.js +1 -1
  94. package/i18n/swedish.js +1 -1
  95. package/i18n/swedish.min.js +1 -1
  96. package/i18n/tajik.js +1 -1
  97. package/i18n/tajik.min.js +1 -1
  98. package/i18n/telugu.js +1 -1
  99. package/i18n/telugu.min.js +1 -1
  100. package/i18n/thai.js +1 -1
  101. package/i18n/thai.min.js +1 -1
  102. package/i18n/traditional-chinese.js +1 -1
  103. package/i18n/traditional-chinese.min.js +1 -1
  104. package/i18n/turkish.js +1 -1
  105. package/i18n/turkish.min.js +1 -1
  106. package/i18n/ukrainian.js +1 -1
  107. package/i18n/ukrainian.min.js +1 -1
  108. package/i18n/urdu.js +1 -1
  109. package/i18n/urdu.min.js +1 -1
  110. package/i18n/vietnamese.js +1 -1
  111. package/i18n/vietnamese.min.js +1 -1
  112. package/i18n/welsh.js +1 -1
  113. package/i18n/welsh.min.js +1 -1
  114. package/modern.css +9 -6
  115. package/modern.css.map +1 -1
  116. package/modern.fontless.css +9 -6
  117. package/modern.fontless.css.map +1 -1
  118. package/modern.fontless.min.css +2 -2
  119. package/modern.min.css +2 -2
  120. package/package.json +1 -1
  121. package/plugins/bootstrap-integration.js +1 -1
  122. package/plugins/bootstrap-integration.min.js +1 -1
  123. package/plugins/bootstrap-material-integration.js +1 -1
  124. package/plugins/bootstrap-material-integration.min.js +1 -1
  125. package/survey.core.js +585 -250
  126. package/survey.core.js.map +1 -1
  127. package/survey.core.min.js +3 -3
  128. package/survey.css +1 -1
  129. package/survey.css.map +1 -1
  130. package/survey.i18n.js +2 -2
  131. package/survey.i18n.js.map +1 -1
  132. package/survey.i18n.min.js +2 -2
  133. package/survey.min.css +1 -1
  134. package/themes/borderless-dark-panelless.js +1 -1
  135. package/themes/borderless-dark-panelless.min.js +1 -1
  136. package/themes/borderless-dark.js +1 -1
  137. package/themes/borderless-dark.min.js +1 -1
  138. package/themes/borderless-light-panelless..js +1 -1
  139. package/themes/borderless-light-panelless..min.js +1 -1
  140. package/themes/borderless-light.js +1 -1
  141. package/themes/borderless-light.min.js +1 -1
  142. package/themes/contrast-dark-panelless.js +1 -1
  143. package/themes/contrast-dark-panelless.min.js +1 -1
  144. package/themes/contrast-dark.js +1 -1
  145. package/themes/contrast-dark.min.js +1 -1
  146. package/themes/contrast-light-panelless.js +1 -1
  147. package/themes/contrast-light-panelless.min.js +1 -1
  148. package/themes/contrast-light.js +1 -1
  149. package/themes/contrast-light.min.js +1 -1
  150. package/themes/default-dark-panelless.js +1 -1
  151. package/themes/default-dark-panelless.min.js +1 -1
  152. package/themes/default-dark.js +1 -1
  153. package/themes/default-dark.min.js +1 -1
  154. package/themes/default-light-panelless.js +1 -1
  155. package/themes/default-light-panelless.min.js +1 -1
  156. package/themes/default-light.js +1 -1
  157. package/themes/default-light.min.js +1 -1
  158. package/themes/doubleborder-dark-panelless.js +1 -1
  159. package/themes/doubleborder-dark-panelless.min.js +1 -1
  160. package/themes/doubleborder-dark.js +1 -1
  161. package/themes/doubleborder-dark.min.js +1 -1
  162. package/themes/doubleborder-light-panelles.js +1 -1
  163. package/themes/doubleborder-light-panelles.min.js +1 -1
  164. package/themes/doubleborder-light.js +1 -1
  165. package/themes/doubleborder-light.min.js +1 -1
  166. package/themes/flat-dark-panelless.js +1 -1
  167. package/themes/flat-dark-panelless.min.js +1 -1
  168. package/themes/flat-dark.js +1 -1
  169. package/themes/flat-dark.min.js +1 -1
  170. package/themes/flat-light-panelless.js +1 -1
  171. package/themes/flat-light-panelless.min.js +1 -1
  172. package/themes/flat-light.js +1 -1
  173. package/themes/flat-light.min.js +1 -1
  174. package/themes/index.js +1 -1
  175. package/themes/index.min.js +1 -1
  176. package/themes/layered-dark-panelless.js +1 -1
  177. package/themes/layered-dark-panelless.min.js +1 -1
  178. package/themes/layered-dark.js +1 -1
  179. package/themes/layered-dark.min.js +1 -1
  180. package/themes/layered-light-panelless.js +1 -1
  181. package/themes/layered-light-panelless.min.js +1 -1
  182. package/themes/layered-light.js +1 -1
  183. package/themes/layered-light.min.js +1 -1
  184. package/themes/plain-dark-panelless.js +1 -1
  185. package/themes/plain-dark-panelless.min.js +1 -1
  186. package/themes/plain-dark.js +1 -1
  187. package/themes/plain-dark.min.js +1 -1
  188. package/themes/plain-light-panelless.js +1 -1
  189. package/themes/plain-light-panelless.min.js +1 -1
  190. package/themes/plain-light.js +1 -1
  191. package/themes/plain-light.min.js +1 -1
  192. package/themes/sharp-dark-panelless.js +1 -1
  193. package/themes/sharp-dark-panelless.min.js +1 -1
  194. package/themes/sharp-dark.js +1 -1
  195. package/themes/sharp-dark.min.js +1 -1
  196. package/themes/sharp-light-panelless.js +1 -1
  197. package/themes/sharp-light-panelless.min.js +1 -1
  198. package/themes/sharp-light.js +1 -1
  199. package/themes/sharp-light.min.js +1 -1
  200. package/themes/solid-dark-panelless.js +1 -1
  201. package/themes/solid-dark-panelless.min.js +1 -1
  202. package/themes/solid-dark.js +1 -1
  203. package/themes/solid-dark.min.js +1 -1
  204. package/themes/solid-light-panelless.js +1 -1
  205. package/themes/solid-light-panelless.min.js +1 -1
  206. package/themes/solid-light.js +1 -1
  207. package/themes/solid-light.min.js +1 -1
  208. package/themes/three-dimensional-dark-panelless.js +1 -1
  209. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  210. package/themes/three-dimensional-dark.js +1 -1
  211. package/themes/three-dimensional-dark.min.js +1 -1
  212. package/themes/three-dimensional-light-panelless.js +1 -1
  213. package/themes/three-dimensional-light-panelless.min.js +1 -1
  214. package/themes/three-dimensional-light.js +1 -1
  215. package/themes/three-dimensional-light.min.js +1 -1
  216. package/ts3.4/typings/base-interfaces.d.ts +4 -3
  217. package/ts3.4/typings/conditionProcessValue.d.ts +1 -0
  218. package/ts3.4/typings/defaultCss/defaultV2Css.d.ts +9 -3
  219. package/ts3.4/typings/localization/english.d.ts +1 -0
  220. package/ts3.4/typings/page.d.ts +1 -0
  221. package/ts3.4/typings/panel.d.ts +4 -1
  222. package/ts3.4/typings/question.d.ts +3 -1
  223. package/ts3.4/typings/question_baseselect.d.ts +1 -1
  224. package/ts3.4/typings/question_checkbox.d.ts +1 -1
  225. package/ts3.4/typings/question_expression.d.ts +1 -1
  226. package/ts3.4/typings/question_file.d.ts +32 -27
  227. package/ts3.4/typings/question_ranking.d.ts +6 -0
  228. package/ts3.4/typings/question_rating.d.ts +1 -0
  229. package/ts3.4/typings/question_signaturepad.d.ts +13 -2
  230. package/ts3.4/typings/survey-events-api.d.ts +5 -4
  231. package/ts3.4/typings/survey.d.ts +46 -18
  232. package/ts3.4/typings/surveyStrings.d.ts +1 -0
  233. package/ts3.4/typings/surveyTaskManager.d.ts +16 -0
  234. package/ts3.4/typings/themes.d.ts +2 -2
  235. package/typings/base-interfaces.d.ts +4 -3
  236. package/typings/conditionProcessValue.d.ts +1 -0
  237. package/typings/defaultCss/defaultV2Css.d.ts +9 -3
  238. package/typings/localization/english.d.ts +1 -0
  239. package/typings/page.d.ts +1 -0
  240. package/typings/panel.d.ts +4 -1
  241. package/typings/question.d.ts +3 -1
  242. package/typings/question_baseselect.d.ts +1 -1
  243. package/typings/question_checkbox.d.ts +1 -1
  244. package/typings/question_expression.d.ts +1 -1
  245. package/typings/question_file.d.ts +34 -29
  246. package/typings/question_ranking.d.ts +6 -0
  247. package/typings/question_rating.d.ts +1 -0
  248. package/typings/question_signaturepad.d.ts +13 -2
  249. package/typings/survey-events-api.d.ts +5 -4
  250. package/typings/survey.d.ts +47 -17
  251. package/typings/surveyStrings.d.ts +1 -0
  252. package/typings/surveyTaskManager.d.ts +16 -0
  253. package/typings/themes.d.ts +2 -2
@@ -25,6 +25,8 @@ import { QuestionFileModel } from "./question_file";
25
25
  import { QuestionMultipleTextModel } from "./question_multipletext";
26
26
  import { ITheme, ImageFit, ImageAttachment } from "./themes";
27
27
  import { PopupModel } from "./popup";
28
+ import { Cover } from "./header";
29
+ import { QuestionSignaturePadModel } from "./question_signaturepad";
28
30
  /**
29
31
  * The `SurveyModel` object contains properties and methods that allow you to control the survey and access its elements.
30
32
  *
@@ -316,6 +318,8 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
316
318
  * For information on event handler parameters, refer to descriptions within the interface.
317
319
  *
318
320
  * If you want to specify heading levels for all titles, use the [`titleTags`](https://surveyjs.io/form-library/documentation/api-reference/settings#titleTags) object in [global settings](https://surveyjs.io/form-library/documentation/api-reference/settings).
321
+ *
322
+ * [View Demo](https://surveyjs.io/form-library/examples/survey-titletagnames/ (linkStyle))
319
323
  * @see onGetQuestionTitle
320
324
  * @see onGetQuestionNo
321
325
  */
@@ -355,7 +359,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
355
359
  */
356
360
  onGetResult: EventBase<SurveyModel, GetResultEvent>;
357
361
  /**
358
- * An event that is raised when a File Upload 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.
362
+ * 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.
359
363
  *
360
364
  * For information on event handler parameters, refer to descriptions within the interface.
361
365
  *
@@ -377,7 +381,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
377
381
  */
378
382
  onDownloadFile: EventBase<SurveyModel, DownloadFileEvent>;
379
383
  /**
380
- * An event that is raised when users clear files in a [File Upload](https://surveyjs.io/form-library/documentation/api-reference/file-model) question. Use this event to delete files from your server.
384
+ * An event that is raised when users clear files in a [File Upload](https://surveyjs.io/form-library/documentation/api-reference/file-model) question or clear signature in a [Signature Pad](https://surveyjs.io/form-library/documentation/api-reference/signature-pad-model) question. Use this event to delete files from your server.
381
385
  *
382
386
  * For information on event handler parameters, refer to descriptions within the interface.
383
387
  *
@@ -750,6 +754,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
750
754
  * [View Demo](https://surveyjs.io/form-library/examples/brand-your-survey-header/ (linkStyle))
751
755
  */
752
756
  headerView: "advanced" | "basic";
757
+ protected insertAdvancedHeader(advHeader: Cover): void;
753
758
  private getNavigationCss;
754
759
  private lazyRenderingValue;
755
760
  showBrandInfo: boolean;
@@ -924,7 +929,8 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
924
929
  * Specifies whether to hide validation errors thrown by the Required validation in the UI.
925
930
  *
926
931
  * [Built-In Client-Side Validators](https://surveyjs.io/form-library/documentation/data-validation#built-in-client-side-validators (linkStyle))
927
- * @see ignoreValidation
932
+ * @see validationEnabled
933
+ * @see validationAllowSwitchPages
928
934
  */
929
935
  hideRequiredErrors: boolean;
930
936
  beforeSettingQuestionErrors(question: Question, errors: Array<SurveyError>): void;
@@ -991,6 +997,10 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
991
997
  * - `"onComplete"` - Triggers validation when a user clicks the Complete button. If previous pages contain errors, the survey switches to the page with the first error.
992
998
  *
993
999
  * Refer to the following help topic for more information: [Data Validation](https://surveyjs.io/form-library/documentation/data-validation).
1000
+ * @see validationEnabled
1001
+ * @see validationAllowSwitchPages
1002
+ * @see validationAllowComplete
1003
+ * @see validate
994
1004
  */
995
1005
  checkErrorsMode: string;
996
1006
  /*
@@ -1091,10 +1101,10 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
1091
1101
  getSurveyErrorCustomText(obj: PanelModel | Question | SurveyModel, text: string, error: SurveyError): string;
1092
1102
  getQuestionDisplayValue(question: Question, displayValue: any): any;
1093
1103
  /*
1094
- * Returns a message that is displayed when a survey does not contain visible pages or questions.
1104
+ * A message that is displayed when a survey does not contain visible pages or questions.
1095
1105
  * @see [Localization & Globalization](https://surveyjs.io/form-library/documentation/survey-localization)
1096
1106
  */
1097
- readonly emptySurveyText: string;
1107
+ emptySurveyText: string;
1098
1108
  /*
1099
1109
  * An image URL or a Base64-encoded image to use as a survey logo.
1100
1110
  *
@@ -1441,7 +1451,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
1441
1451
  * @see setValue
1442
1452
  */
1443
1453
  mergeData(data: any): void;
1444
- setDataCore(data: any): void;
1454
+ setDataCore(data: any, clearData?: boolean): void;
1445
1455
  getStructuredData(includePages?: boolean, level?: number): any;
1446
1456
  setStructuredData(data: any, doMerge?: boolean): void;
1447
1457
  private collectDataFromPanel;
@@ -1678,16 +1688,32 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
1678
1688
  * @see setCookie
1679
1689
  */
1680
1690
  deleteCookie(): void;
1691
+ /*
1692
+ * This property is obsolete. Use the [`validationEnabled`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#validationEnabled) property instead.
1693
+ */
1694
+ ignoreValidation: boolean;
1681
1695
  /**
1682
- * Specifies whether to skip validation when you switch between pages or complete the survey programmatically or when users do that in the UI.
1696
+ * Specifies whether data validation is enabled.
1683
1697
  *
1684
- * Default value: `false`
1698
+ * Default value: `true`
1699
+ * @see checkErrorsMode
1685
1700
  * @see hideRequiredErrors
1686
- * @see nextPage
1687
- * @see isPrevPage
1688
- * @see completeLastPage
1689
1701
  */
1690
- ignoreValidation: boolean;
1702
+ validationEnabled: boolean;
1703
+ /**
1704
+ * Specifies whether respondents can switch the current page even if it contains validation errors.
1705
+ *
1706
+ * Default value: `false`
1707
+ * @see checkErrorsMode
1708
+ */
1709
+ validationAllowSwitchPages: boolean;
1710
+ /**
1711
+ * Specifies whether respondents can end a survey with validation errors.
1712
+ *
1713
+ * Default value: `false`
1714
+ * @see checkErrorsMode
1715
+ */
1716
+ validationAllowComplete: boolean;
1691
1717
  /**
1692
1718
  * Switches the survey to the next page.
1693
1719
  *
@@ -2028,14 +2054,14 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2028
2054
  * }
2029
2055
  * );
2030
2056
  * ```
2031
- * @param question A [File Upload question instance](https://surveyjs.io/form-library/documentation/api-reference/file-model).
2032
- * @param name The File Upload question's [`name`](https://surveyjs.io/form-library/documentation/api-reference/file-model#name).
2057
+ * @param question A [File Upload question instance](https://surveyjs.io/form-library/documentation/api-reference/file-model) or [Signature Pad question instance](https://surveyjs.io/form-library/documentation/api-reference/signature-pad-model).
2058
+ * @param name The File Upload question's [`name`](https://surveyjs.io/form-library/documentation/api-reference/file-model#name) or Signature Pad question's [`name`](https://surveyjs.io/form-library/documentation/api-reference/signature-pad-model#name).
2033
2059
  * @param files An array of JavaScript <a href="https://developer.mozilla.org/en-US/docs/Web/API/File" target="_blank">File</a> objects that represent files to upload.
2034
- * @param callback A callback function that allows you to get the upload status (`"success"` or `"error"`) and file data.
2060
+ * @param callback A callback function that allows you to access successfully uploaded files as the first argument. If any files fail to upload, the second argument contains an array of error messages.
2035
2061
  * @see onUploadFiles
2036
2062
  * @see downloadFile
2037
2063
  */
2038
- uploadFiles(question: QuestionFileModel, name: string, files: File[], callback: (status: string, data: any) => any): void;
2064
+ uploadFiles(question: QuestionFileModel | QuestionSignaturePadModel, name: string, files: File[], callback: (data: any | Array<any>, errors?: any | Array<any>) => any): void;
2039
2065
  /**
2040
2066
  * Downloads a file from a server.
2041
2067
  *
@@ -2067,11 +2093,11 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2067
2093
  * @see uploadFiles
2068
2094
  */
2069
2095
  downloadFile(question: QuestionFileModel, questionName: string, fileValue: any, callback: (status: string, data: any) => any): void;
2070
- clearFiles(question: QuestionFileModel, name: string, value: any, fileName: string, callback: (status: string, data: any) => any): void;
2096
+ clearFiles(question: QuestionFileModel | QuestionSignaturePadModel, name: string, value: any, fileName: string, callback: (status: string, data: any) => any): void;
2071
2097
  updateChoicesFromServer(question: QuestionSelectBase, choices: Array<ItemValue>, serverResult: any): Array<ItemValue>;
2072
2098
  loadedChoicesFromServer(question: IQuestion): void;
2073
2099
  protected createSurveyService(): dxSurveyService;
2074
- protected uploadFilesCore(name: string, files: File[], uploadingCallback: (status: string, data: any) => any): void;
2100
+ protected uploadFilesCore(name: string, files: File[], uploadingCallback: (data: any | Array<any>, errors?: any | Array<any>) => any): void;
2075
2101
  getPage(index: number): PageModel;
2076
2102
  /**
2077
2103
  * Adds an existing page to the survey.
@@ -2566,6 +2592,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2566
2592
  private isMovingQuestion;
2567
2593
  startMovingQuestion(): void;
2568
2594
  stopMovingQuestion(): void;
2595
+ readonly isQuestionDragging: boolean;
2569
2596
  private needRenderIcons;
2570
2597
  private skippedPages;
2571
2598
  /**
@@ -2624,6 +2651,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2624
2651
  */
2625
2652
  applyTheme(theme: ITheme): void;
2626
2653
  themeChanged(theme: ITheme): void;
2654
+ private taskManager;
2627
2655
  /**
2628
2656
  * Disposes of the survey model.
2629
2657
  *
@@ -57,6 +57,7 @@ export declare var surveyStrings: {
57
57
  urlRequestError: string;
58
58
  urlGetChoicesError: string;
59
59
  exceedMaxSize: string;
60
+ noUploadFilesHandler: string;
60
61
  otherRequiredError: string;
61
62
  uploadingFile: string;
62
63
  loadingFile: string;
@@ -0,0 +1,16 @@
1
+ import { Base } from "./base";
2
+ declare class SurveyTaskModel {
3
+ type: string;
4
+ private timestamp;
5
+ constructor(type: string);
6
+ }
7
+ export declare class SurveyTaskManagerModel extends Base {
8
+ private taskList;
9
+ constructor();
10
+ private onAllTasksCompleted;
11
+ hasActiveTasks: boolean;
12
+ runTask(type: string, func: (done: any) => void): SurveyTaskModel;
13
+ waitAndExecute(action: any): void;
14
+ private taskFinished;
15
+ }
16
+ export {};
@@ -83,9 +83,9 @@ export interface IHeader {
83
83
  *
84
84
  * Possible values:
85
85
  *
86
- * - `"survey"` (default)\
86
+ * - `"survey"`\
87
87
  * The header width is the same as the survey width.
88
- * - `"container"`\
88
+ * - `"container"` (default)\
89
89
  * The header width is the same as the survey container width.
90
90
  *
91
91
  * @see [SurveyModel.width](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#width)
@@ -98,7 +98,7 @@ export interface ISurvey extends ITextProcessor, ISurveyErrorOwner {
98
98
  maxTextLength: number;
99
99
  maxOthersLength: number;
100
100
  clearValueOnDisableItems: boolean;
101
- uploadFiles(question: IQuestion, name: string, files: File[], uploadingCallback: (status: string, data: any) => any): any;
101
+ uploadFiles(question: IQuestion, name: string, files: File[], uploadingCallback: (data: any | Array<any>, errors?: any | Array<any>) => any): any;
102
102
  downloadFile(question: IQuestion, name: string, content: string, callback: (status: string, data: any) => any): any;
103
103
  clearFiles(question: IQuestion, name: string, value: any, fileName: string, clearCallback: (status: string, data: any) => any): any;
104
104
  updateChoicesFromServer(question: IQuestion, choices: Array<any>, serverResult: any): Array<any>;
@@ -219,7 +219,7 @@ export interface IQuestion extends IElement, ISurveyErrorOwner {
219
219
  hasTitle: boolean;
220
220
  isEmpty(): boolean;
221
221
  onSurveyValueChanged(newValue: any): any;
222
- updateValueFromSurvey(newValue: any): any;
222
+ updateValueFromSurvey(newValue: any, clearData: boolean): void;
223
223
  updateCommentFromSurvey(newValue: any): any;
224
224
  supportGoNextPageAutomatic(): boolean;
225
225
  clearUnusedValues(): any;
@@ -283,7 +283,7 @@ export declare type ISurveyEnvironment = {
283
283
  svgMountContainer: HTMLElement | string;
284
284
  stylesSheetsMountContainer: HTMLElement;
285
285
  };
286
- export declare type LayoutElementContainer = "header" | "footer" | "left" | "right" | "contentTop" | "contentBottom";
286
+ export declare type LayoutElementContainer = "header" | "footer" | "left" | "right" | "contentTop" | "contentBottom" | "center";
287
287
  export declare type HorizontalAlignment = "left" | "center" | "right";
288
288
  export declare type VerticalAlignment = "top" | "middle" | "bottom";
289
289
  export interface ISurveyLayoutElement {
@@ -292,6 +292,7 @@ export interface ISurveyLayoutElement {
292
292
  component?: string;
293
293
  template?: string;
294
294
  data?: any;
295
+ index?: number;
295
296
  processResponsiveness?: (width: number) => void;
296
297
  }
297
298
  export interface IPlainDataOptions {
@@ -15,6 +15,7 @@ export declare class ProcessValue {
15
15
  private getValueFromSurvey;
16
16
  private getValueFromValues;
17
17
  private getNonNestedObject;
18
+ private getNonNestedObjectCore;
18
19
  private getObjInArray;
19
20
  private getFirstPropertyName;
20
21
  private getObjectValue;
@@ -70,6 +70,7 @@ export declare var defaultV2Css: {
70
70
  invisible: string;
71
71
  navigationButton: string;
72
72
  compact: string;
73
+ errorsContainer: string;
73
74
  };
74
75
  paneldynamic: {
75
76
  mainRoot: string;
@@ -136,6 +137,7 @@ export declare var defaultV2Css: {
136
137
  emptyHeaderRoot: string;
137
138
  title: string;
138
139
  description: string;
140
+ errorsContainer: string;
139
141
  };
140
142
  pageTitle: string;
141
143
  pageDescription: string;
@@ -190,6 +192,9 @@ export declare var defaultV2Css: {
190
192
  invisible: string;
191
193
  composite: string;
192
194
  disabled: string;
195
+ errorsContainer: string;
196
+ errorsContainerTop: string;
197
+ errorsContainerBottom: string;
193
198
  };
194
199
  image: {
195
200
  mainRoot: string;
@@ -209,9 +214,6 @@ export declare var defaultV2Css: {
209
214
  root: string;
210
215
  icon: string;
211
216
  item: string;
212
- outsideQuestion: string;
213
- aboveQuestion: string;
214
- belowQuestion: string;
215
217
  locationTop: string;
216
218
  locationBottom: string;
217
219
  };
@@ -429,6 +431,8 @@ export declare var defaultV2Css: {
429
431
  rowHasEndActions: string;
430
432
  headerCell: string;
431
433
  rowTextCell: string;
434
+ footerCell: string;
435
+ footerTotalCell: string;
432
436
  columnTitleCell: string;
433
437
  cellRequiredText: string;
434
438
  detailButton: string;
@@ -464,6 +468,7 @@ export declare var defaultV2Css: {
464
468
  itemCell: string;
465
469
  headerCell: string;
466
470
  rowTextCell: string;
471
+ footerCell: string;
467
472
  columnTitleCell: string;
468
473
  cellRequiredText: string;
469
474
  button: string;
@@ -609,6 +614,7 @@ export declare var defaultV2Css: {
609
614
  backgroundImage: string;
610
615
  clearButton: string;
611
616
  clearButtonIconId: string;
617
+ loadingIndicator: string;
612
618
  };
613
619
  saveData: {
614
620
  root: string;
@@ -40,6 +40,7 @@ export declare var englishStrings: {
40
40
  urlRequestError: string;
41
41
  urlGetChoicesError: string;
42
42
  exceedMaxSize: string;
43
+ noUploadFilesHandler: string;
43
44
  otherRequiredError: string;
44
45
  uploadingFile: string;
45
46
  loadingFile: string;
package/typings/page.d.ts CHANGED
@@ -53,6 +53,7 @@ export declare class PageModel extends PanelModelBase implements IPage {
53
53
  protected calcCssClasses(css: any): any;
54
54
  get cssTitle(): string;
55
55
  get cssRoot(): string;
56
+ protected getCssError(cssClasses: any): string;
56
57
  num: number;
57
58
  /**
58
59
  * Set this property to "hide" to make "Prev", "Next" and "Complete" buttons are invisible for this page. Set this property to "show" to make these buttons visible, even if survey showNavigationButtons property is false.
@@ -412,6 +412,8 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
412
412
  set questionErrorLocation(val: string);
413
413
  getQuestionErrorLocation(): string;
414
414
  get no(): string;
415
+ get cssError(): string;
416
+ protected getCssError(cssClasses: any): string;
415
417
  dispose(): void;
416
418
  }
417
419
  /**
@@ -492,6 +494,7 @@ export declare class PanelModel extends PanelModelBase implements IElement {
492
494
  */
493
495
  get no(): string;
494
496
  protected setNo(visibleIndex: number): void;
497
+ protected notifyStateChanged(): void;
495
498
  protected createLocTitleProperty(): LocalizableString;
496
499
  protected beforeSetVisibleIndex(index: number): number;
497
500
  protected getPanelStartIndex(index: number): number;
@@ -524,7 +527,6 @@ export declare class PanelModel extends PanelModelBase implements IElement {
524
527
  get hasEditButton(): boolean;
525
528
  cancelPreview(): void;
526
529
  get cssTitle(): string;
527
- get cssError(): string;
528
530
  get showErrorsAbovePanel(): boolean;
529
531
  protected getCssError(cssClasses: any): string;
530
532
  protected onVisibleChanged(): void;
@@ -532,6 +534,7 @@ export declare class PanelModel extends PanelModelBase implements IElement {
532
534
  focusIn(): void;
533
535
  protected getHasFrameV2(): boolean;
534
536
  protected getIsNested(): boolean;
537
+ private get showPanelAsPage();
535
538
  protected getCssRoot(cssClasses: {
536
539
  [index: string]: string;
537
540
  }): string;
@@ -630,6 +630,8 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
630
630
  * - `{row.other_question_name}` (to access questions inside the same dynamic matrix or multi-column dropdown)
631
631
  *
632
632
  * An expression can also include built-in and custom functions for advanced calculations. For example, if the `defaultValue` should be today's date, set the `defaultValueExpression` to `"today()"`, and the corresponding built-in function will be executed each time the survey is loaded. Refer to the following help topic for more information: [Built-In Functions](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#built-in-functions).
633
+ *
634
+ * [View Demo](https://surveyjs.io/form-library/examples/specify-default-question-value-dynamically (linkStyle))
633
635
  * @see defaultValue
634
636
  * @see setValueExpression
635
637
  */
@@ -810,7 +812,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
810
812
  onMouseDown(): void;
811
813
  protected setNewComment(newValue: string): void;
812
814
  protected getValidName(name: string): string;
813
- updateValueFromSurvey(newValue: any): void;
815
+ updateValueFromSurvey(newValue: any, clearData?: boolean): void;
814
816
  private updateValueFromSurveyCore;
815
817
  updateCommentFromSurvey(newValue: any): any;
816
818
  protected onChangeQuestionValue(newValue: any): void;
@@ -362,7 +362,7 @@ export declare class QuestionSelectBase extends Question {
362
362
  getStoreOthersAsComment(): boolean;
363
363
  onSurveyLoad(): void;
364
364
  onAnyValueChanged(name: string, questionName: string): void;
365
- updateValueFromSurvey(newValue: any): void;
365
+ updateValueFromSurvey(newValue: any, clearData: boolean): void;
366
366
  protected getCommentFromValue(newValue: any): string;
367
367
  protected setOtherValueIntoValue(newValue: any): any;
368
368
  onOtherValueInput(event: any): void;
@@ -102,7 +102,7 @@ export declare class QuestionCheckboxModel extends QuestionCheckboxBase {
102
102
  private shouldCheckMaxSelectedChoices;
103
103
  private checkMinSelectedChoicesUnreached;
104
104
  protected getItemClassCore(item: any, options: any): string;
105
- updateValueFromSurvey(newValue: any): void;
105
+ updateValueFromSurvey(newValue: any, clearData: boolean): void;
106
106
  protected setDefaultValue(): void;
107
107
  private addIntoInvisibleOldValues;
108
108
  protected hasValueToClearIncorrectValues(): boolean;
@@ -57,7 +57,7 @@ export declare class QuestionExpressionModel extends Question {
57
57
  get formatedValue(): string;
58
58
  protected updateFormatedValue(): void;
59
59
  protected onValueChanged(): void;
60
- updateValueFromSurvey(newValue: any): void;
60
+ updateValueFromSurvey(newValue: any, clearData: boolean): void;
61
61
  protected getDisplayValueCore(keysAsText: boolean, value: any): any;
62
62
  /**
63
63
  * Specifies a display style for the question value.
@@ -6,14 +6,10 @@ import { ActionContainer } from "./actions/container";
6
6
  import { Action } from "./actions/action";
7
7
  import { Camera } from "./utils/camera";
8
8
  import { LocalizableString } from "./localizablestring";
9
- /**
10
- * A class that describes the File Upload question type.
11
- *
12
- * [View Demo](https://surveyjs.io/form-library/examples/file-upload/ (linkStyle))
13
- */
14
- export declare class QuestionFileModel extends Question {
9
+ export declare function dataUrl2File(dataUrl: string, fileName: string, type: string): File;
10
+ export declare class QuestionFileModelBase extends Question {
15
11
  isUploading: boolean;
16
- isDragging: boolean;
12
+ currentState: string;
17
13
  /**
18
14
  * An event that is raised after the upload state has changed.
19
15
  *
@@ -24,10 +20,37 @@ export declare class QuestionFileModel extends Question {
24
20
  * - `options.state`: `string`\
25
21
  * The current upload state: `"empty"`, `"loading"`, `"loaded"`, or `"error"`.
26
22
  */
27
- onUploadStateChanged: EventBase<QuestionFileModel>;
28
- onStateChanged: EventBase<QuestionFileModel>;
23
+ onUploadStateChanged: EventBase<QuestionFileModelBase>;
24
+ onStateChanged: EventBase<QuestionFileModelBase>;
25
+ protected stateChanged(state: string): void;
26
+ get showLoadingIndicator(): boolean;
27
+ /**
28
+ * Specifies whether to store file or signature content as text in `SurveyModel`'s [`data`](https://surveyjs.io/form-library/documentation/surveymodel#data) property.
29
+ *
30
+ * If you disable this property, implement `SurveyModel`'s [`onUploadFiles`](https://surveyjs.io/form-library/documentation/surveymodel#onUploadFiles) event handler to specify how to store file content.
31
+ */
32
+ get storeDataAsText(): boolean;
33
+ set storeDataAsText(val: boolean);
34
+ /**
35
+ * Enable this property if you want to wait until files are uploaded to complete the survey.
36
+ *
37
+ * Default value: `false`
38
+ */
39
+ get waitForUpload(): boolean;
40
+ set waitForUpload(val: boolean);
41
+ clearValue(): void;
42
+ clearOnDeletingContainer(): void;
43
+ protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
44
+ protected uploadFiles(files: File[]): void;
45
+ }
46
+ /**
47
+ * A class that describes the File Upload question type.
48
+ *
49
+ * [View Demo](https://surveyjs.io/form-library/examples/file-upload/ (linkStyle))
50
+ */
51
+ export declare class QuestionFileModel extends QuestionFileModelBase {
52
+ isDragging: boolean;
29
53
  previewValue: any[];
30
- currentState: string;
31
54
  indexToShow: number;
32
55
  pageSize: number;
33
56
  containsMultiplyFiles: boolean;
@@ -80,8 +103,6 @@ export declare class QuestionFileModel extends Question {
80
103
  private previewValueChanged;
81
104
  isPreviewVisible(index: number): boolean;
82
105
  getType(): string;
83
- clearValue(): void;
84
- clearOnDeletingContainer(): void;
85
106
  /**
86
107
  * Disable this property only to implement a custom preview.
87
108
  *
@@ -112,20 +133,6 @@ export declare class QuestionFileModel extends Question {
112
133
  */
113
134
  get acceptedTypes(): string;
114
135
  set acceptedTypes(val: string);
115
- /**
116
- * Specifies whether to store file content as text in `SurveyModel`'s [`data`](https://surveyjs.io/form-library/documentation/surveymodel#data) property.
117
- *
118
- * If you disable this property, implement `SurveyModel`'s [`onUploadFiles`](https://surveyjs.io/form-library/documentation/surveymodel#onUploadFiles) event handler to specify how to store file content.
119
- */
120
- get storeDataAsText(): boolean;
121
- set storeDataAsText(val: boolean);
122
- /**
123
- * Enable this property if you want to wait until files are uploaded to complete the survey.
124
- *
125
- * Default value: `false`
126
- */
127
- get waitForUpload(): boolean;
128
- set waitForUpload(val: boolean);
129
136
  /**
130
137
  * Specifies whether to show a preview of image files.
131
138
  */
@@ -190,7 +197,6 @@ export declare class QuestionFileModel extends Question {
190
197
  get multipleRendered(): string;
191
198
  get showChooseButton(): boolean;
192
199
  get showFileDecorator(): boolean;
193
- get showLoadingIndicator(): boolean;
194
200
  get allowShowPreview(): boolean;
195
201
  get showPreviewContainer(): boolean;
196
202
  get showRemoveButtonCore(): boolean;
@@ -202,6 +208,7 @@ export declare class QuestionFileModel extends Question {
202
208
  */
203
209
  removeFile(name: string): void;
204
210
  protected removeFileByContent(content: any): void;
211
+ protected setValueFromResult(arg: any): void;
205
212
  /**
206
213
  * Loads multiple files into the question.
207
214
  * @param files An array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects.
@@ -215,8 +222,6 @@ export declare class QuestionFileModel extends Question {
215
222
  protected get isFileLoading(): boolean;
216
223
  protected set isFileLoading(val: boolean);
217
224
  protected getIsQuestionReady(): boolean;
218
- protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
219
- protected stateChanged(state: string): void;
220
225
  private allFilesOk;
221
226
  private isFileImage;
222
227
  getPlainData(options?: IPlainDataOptions): IQuestionPlainData;
@@ -89,7 +89,13 @@ export declare class QuestionRankingModel extends QuestionCheckboxModel {
89
89
  set selectToRankAreasLayout(val: string);
90
90
  get renderedSelectToRankAreasLayout(): string;
91
91
  isMobileMode(): boolean;
92
+ /**
93
+ * A placeholder displayed in the area for ranked choices. Applies when [`selectToRankEnabled`](https://surveyjs.io/form-library/documentation/api-reference/ranking-question-model#selectToRankEnabled) is `true`.
94
+ */
92
95
  selectToRankEmptyRankedAreaText: string;
96
+ /**
97
+ * A placeholder displayed in the area for unranked choices. Applies when [`selectToRankEnabled`](https://surveyjs.io/form-library/documentation/api-reference/ranking-question-model#selectToRankEnabled) is `true`.
98
+ */
93
99
  selectToRankEmptyUnrankedAreaText: string;
94
100
  get useFullItemSizeForShortcut(): boolean;
95
101
  set useFullItemSizeForShortcut(val: boolean);
@@ -118,6 +118,7 @@ export declare class QuestionRatingModel extends Question {
118
118
  itemValuePropertyChanged(item: ItemValue, name: string, oldValue: any, newValue: any): void;
119
119
  private createRenderedRateItems;
120
120
  renderedRateItems: Array<RenderedRatingItem>;
121
+ private createRateValues;
121
122
  private correctValue;
122
123
  getType(): string;
123
124
  protected getFirstInputElementId(): string;
@@ -1,15 +1,17 @@
1
- import { Question } from "./question";
2
1
  import { ITheme } from "./themes";
2
+ import { QuestionFileModelBase } from "./question_file";
3
3
  /**
4
4
  * A class that describes the Signature question type.
5
5
  *
6
6
  * [View Demo](https://surveyjs.io/form-library/examples/signature-pad-widget-javascript/ (linkStyle))
7
7
  */
8
- export declare class QuestionSignaturePadModel extends Question {
8
+ export declare class QuestionSignaturePadModel extends QuestionFileModelBase {
9
9
  isDrawingValue: boolean;
10
+ isReadyForUpload: boolean;
10
11
  private getPenColorFromTheme;
11
12
  private updateColors;
12
13
  protected getCssRoot(cssClasses: any): string;
14
+ protected getFormat(): "" | "image/svg+xml" | "image/jpeg";
13
15
  protected updateValue(): void;
14
16
  constructor(name: string);
15
17
  getType(): string;
@@ -17,10 +19,14 @@ export declare class QuestionSignaturePadModel extends Question {
17
19
  beforeDestroyQuestionElement(el: HTMLElement): void;
18
20
  themeChanged(theme: ITheme): void;
19
21
  private canvas;
22
+ private element;
20
23
  private scale;
21
24
  private valueIsUpdatingInternally;
25
+ valueWasChangedFromLastUpload: boolean;
22
26
  private resizeCanvas;
23
27
  private scaleCanvas;
28
+ private fromDataUrl;
29
+ private fromUrl;
24
30
  private refreshCanvas;
25
31
  private updateValueHandler;
26
32
  initSignaturePad(el: HTMLElement): void;
@@ -118,10 +124,15 @@ export declare class QuestionSignaturePadModel extends Question {
118
124
  * Default value: `true`
119
125
  */
120
126
  showPlaceholder: boolean;
127
+ nothingIsDrawn(): boolean;
121
128
  needShowPlaceholder(): boolean;
122
129
  /**
123
130
  * A placeholder for the signature area. Applies when the [`showPlaceholder`](#showPlaceholder) property is `true`.
124
131
  */
125
132
  placeholder: string;
133
+ onBlur: (event: any) => void;
134
+ protected uploadResultItemToValue(r: any): any;
135
+ protected setValueFromResult(arg: any): void;
136
+ clearValue(): void;
126
137
  endLoadingFromJson(): void;
127
138
  }
@@ -11,6 +11,7 @@ import { MatrixDropdownCell, MatrixDropdownRowModelBase, QuestionMatrixDropdownM
11
11
  import { MatrixDropdownColumn } from "./question_matrixdropdowncolumn";
12
12
  import { QuestionMatrixDynamicModel } from "./question_matrixdynamic";
13
13
  import { QuestionPanelDynamicModel } from "./question_paneldynamic";
14
+ import { QuestionSignaturePadModel } from "./question_signaturepad";
14
15
  import { SurveyModel } from "./survey";
15
16
  import { SurveyError } from "./survey-error";
16
17
  import { Trigger } from "./trigger";
@@ -22,9 +23,9 @@ export interface QuestionEventMixin {
22
23
  }
23
24
  export interface FileQuestionEventMixin {
24
25
  /**
25
- * A File Upload question instance for which the event is raised.
26
+ * A File Upload or Signature Pad question instance for which the event is raised.
26
27
  */
27
- question: QuestionFileModel;
28
+ question: QuestionFileModel | QuestionSignaturePadModel;
28
29
  }
29
30
  export interface PanelDynamicQuestionEventMixin {
30
31
  /**
@@ -499,9 +500,9 @@ export interface LoadFilesEvent extends FileQuestionEventMixin {
499
500
  }
500
501
  export interface UploadFilesEvent extends LoadFilesEvent {
501
502
  /**
502
- * A callback function that you should call when a file is uploaded successfully or when file upload fails. Pass `"success"` or `"error"` as the first argument to indicate the operation status. As the second argument, you can pass the uploaded file's data if file upload was successful or an error message if file upload failed.
503
+ * A callback function that you should call when a file is uploaded successfully or when file upload fails. Pass an array of successfully uploaded files as the first argument. As the second argument, you can pass an array of error messages if file upload failed.
503
504
  */
504
- callback: (status: string, data?: any) => any;
505
+ callback: (data: any | Array<any>, errors?: any | Array<any>) => any;
505
506
  /**
506
507
  * An array of JavaScript <a href="https://developer.mozilla.org/en-US/docs/Web/API/File" target="_blank">File</a> objects that represent files to upload.
507
508
  */