survey-core 1.9.124 → 1.9.125

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 (300) hide show
  1. package/defaultV2.css +4 -3
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +4 -3
  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 +14 -3
  8. package/i18n/arabic.js.map +1 -1
  9. package/i18n/arabic.min.js +2 -2
  10. package/i18n/basque.js +14 -3
  11. package/i18n/basque.js.map +1 -1
  12. package/i18n/basque.min.js +2 -2
  13. package/i18n/bulgarian.js +14 -3
  14. package/i18n/bulgarian.js.map +1 -1
  15. package/i18n/bulgarian.min.js +2 -2
  16. package/i18n/catalan.js +14 -3
  17. package/i18n/catalan.js.map +1 -1
  18. package/i18n/catalan.min.js +2 -2
  19. package/i18n/croatian.js +14 -3
  20. package/i18n/croatian.js.map +1 -1
  21. package/i18n/croatian.min.js +2 -2
  22. package/i18n/czech.js +14 -3
  23. package/i18n/czech.js.map +1 -1
  24. package/i18n/czech.min.js +2 -2
  25. package/i18n/danish.js +14 -3
  26. package/i18n/danish.js.map +1 -1
  27. package/i18n/danish.min.js +2 -2
  28. package/i18n/dutch.js +14 -3
  29. package/i18n/dutch.js.map +1 -1
  30. package/i18n/dutch.min.js +2 -2
  31. package/i18n/english.js +2 -1
  32. package/i18n/english.js.map +1 -1
  33. package/i18n/english.min.js +2 -2
  34. package/i18n/estonian.js +14 -3
  35. package/i18n/estonian.js.map +1 -1
  36. package/i18n/estonian.min.js +2 -2
  37. package/i18n/finnish.js +14 -3
  38. package/i18n/finnish.js.map +1 -1
  39. package/i18n/finnish.min.js +2 -2
  40. package/i18n/french.js +14 -3
  41. package/i18n/french.js.map +1 -1
  42. package/i18n/french.min.js +2 -2
  43. package/i18n/georgian.js +14 -3
  44. package/i18n/georgian.js.map +1 -1
  45. package/i18n/georgian.min.js +2 -2
  46. package/i18n/german.js +14 -3
  47. package/i18n/german.js.map +1 -1
  48. package/i18n/german.min.js +2 -2
  49. package/i18n/greek.js +14 -3
  50. package/i18n/greek.js.map +1 -1
  51. package/i18n/greek.min.js +2 -2
  52. package/i18n/hebrew.js +14 -3
  53. package/i18n/hebrew.js.map +1 -1
  54. package/i18n/hebrew.min.js +2 -2
  55. package/i18n/hindi.js +14 -3
  56. package/i18n/hindi.js.map +1 -1
  57. package/i18n/hindi.min.js +2 -2
  58. package/i18n/hungarian.js +14 -3
  59. package/i18n/hungarian.js.map +1 -1
  60. package/i18n/hungarian.min.js +2 -2
  61. package/i18n/icelandic.js +14 -3
  62. package/i18n/icelandic.js.map +1 -1
  63. package/i18n/icelandic.min.js +2 -2
  64. package/i18n/index.js +612 -95
  65. package/i18n/index.js.map +1 -1
  66. package/i18n/index.min.js +2 -2
  67. package/i18n/indonesian.js +14 -3
  68. package/i18n/indonesian.js.map +1 -1
  69. package/i18n/indonesian.min.js +2 -2
  70. package/i18n/italian.js +14 -3
  71. package/i18n/italian.js.map +1 -1
  72. package/i18n/italian.min.js +2 -2
  73. package/i18n/japanese.js +14 -3
  74. package/i18n/japanese.js.map +1 -1
  75. package/i18n/japanese.min.js +2 -2
  76. package/i18n/kazakh.js +14 -3
  77. package/i18n/kazakh.js.map +1 -1
  78. package/i18n/kazakh.min.js +2 -2
  79. package/i18n/korean.js +14 -3
  80. package/i18n/korean.js.map +1 -1
  81. package/i18n/korean.min.js +2 -2
  82. package/i18n/latvian.js +14 -3
  83. package/i18n/latvian.js.map +1 -1
  84. package/i18n/latvian.min.js +2 -2
  85. package/i18n/lithuanian.js +14 -3
  86. package/i18n/lithuanian.js.map +1 -1
  87. package/i18n/lithuanian.min.js +2 -2
  88. package/i18n/macedonian.js +14 -3
  89. package/i18n/macedonian.js.map +1 -1
  90. package/i18n/macedonian.min.js +2 -2
  91. package/i18n/malay.js +14 -3
  92. package/i18n/malay.js.map +1 -1
  93. package/i18n/malay.min.js +2 -2
  94. package/i18n/nl-BE.js +14 -3
  95. package/i18n/nl-BE.js.map +1 -1
  96. package/i18n/nl-BE.min.js +2 -2
  97. package/i18n/norwegian.js +14 -3
  98. package/i18n/norwegian.js.map +1 -1
  99. package/i18n/norwegian.min.js +2 -2
  100. package/i18n/persian.js +14 -3
  101. package/i18n/persian.js.map +1 -1
  102. package/i18n/persian.min.js +2 -2
  103. package/i18n/polish.js +14 -3
  104. package/i18n/polish.js.map +1 -1
  105. package/i18n/polish.min.js +2 -2
  106. package/i18n/portuguese-br.js +14 -3
  107. package/i18n/portuguese-br.js.map +1 -1
  108. package/i18n/portuguese-br.min.js +2 -2
  109. package/i18n/portuguese.js +14 -3
  110. package/i18n/portuguese.js.map +1 -1
  111. package/i18n/portuguese.min.js +2 -2
  112. package/i18n/romanian.js +14 -3
  113. package/i18n/romanian.js.map +1 -1
  114. package/i18n/romanian.min.js +2 -2
  115. package/i18n/russian.js +14 -3
  116. package/i18n/russian.js.map +1 -1
  117. package/i18n/russian.min.js +2 -2
  118. package/i18n/serbian.js +14 -3
  119. package/i18n/serbian.js.map +1 -1
  120. package/i18n/serbian.min.js +2 -2
  121. package/i18n/simplified-chinese.js +14 -3
  122. package/i18n/simplified-chinese.js.map +1 -1
  123. package/i18n/simplified-chinese.min.js +2 -2
  124. package/i18n/slovak.js +14 -3
  125. package/i18n/slovak.js.map +1 -1
  126. package/i18n/slovak.min.js +2 -2
  127. package/i18n/spanish.js +14 -3
  128. package/i18n/spanish.js.map +1 -1
  129. package/i18n/spanish.min.js +2 -2
  130. package/i18n/swahili.js +14 -3
  131. package/i18n/swahili.js.map +1 -1
  132. package/i18n/swahili.min.js +2 -2
  133. package/i18n/swedish.js +14 -3
  134. package/i18n/swedish.js.map +1 -1
  135. package/i18n/swedish.min.js +2 -2
  136. package/i18n/tajik.js +1 -1
  137. package/i18n/tajik.min.js +1 -1
  138. package/i18n/telugu.js +14 -3
  139. package/i18n/telugu.js.map +1 -1
  140. package/i18n/telugu.min.js +2 -2
  141. package/i18n/thai.js +14 -3
  142. package/i18n/thai.js.map +1 -1
  143. package/i18n/thai.min.js +2 -2
  144. package/i18n/traditional-chinese.js +14 -3
  145. package/i18n/traditional-chinese.js.map +1 -1
  146. package/i18n/traditional-chinese.min.js +2 -2
  147. package/i18n/turkish.js +14 -3
  148. package/i18n/turkish.js.map +1 -1
  149. package/i18n/turkish.min.js +2 -2
  150. package/i18n/ukrainian.js +14 -3
  151. package/i18n/ukrainian.js.map +1 -1
  152. package/i18n/ukrainian.min.js +2 -2
  153. package/i18n/urdu.js +14 -3
  154. package/i18n/urdu.js.map +1 -1
  155. package/i18n/urdu.min.js +2 -2
  156. package/i18n/vietnamese.js +14 -3
  157. package/i18n/vietnamese.js.map +1 -1
  158. package/i18n/vietnamese.min.js +2 -2
  159. package/i18n/welsh.js +14 -3
  160. package/i18n/welsh.js.map +1 -1
  161. package/i18n/welsh.min.js +2 -2
  162. package/modern.css +1 -1
  163. package/modern.fontless.css +1 -1
  164. package/modern.fontless.min.css +1 -1
  165. package/modern.min.css +1 -1
  166. package/package.json +1 -1
  167. package/plugins/bootstrap-integration.js +1 -1
  168. package/plugins/bootstrap-integration.min.js +1 -1
  169. package/plugins/bootstrap-material-integration.js +1 -1
  170. package/plugins/bootstrap-material-integration.min.js +1 -1
  171. package/survey.core.js +419 -108
  172. package/survey.core.js.map +1 -1
  173. package/survey.core.min.js +3 -3
  174. package/survey.css +1 -1
  175. package/survey.i18n.js +612 -95
  176. package/survey.i18n.js.map +1 -1
  177. package/survey.i18n.min.js +2 -2
  178. package/survey.min.css +1 -1
  179. package/themes/borderless-dark-panelless.js +1 -1
  180. package/themes/borderless-dark-panelless.min.js +1 -1
  181. package/themes/borderless-dark.js +1 -1
  182. package/themes/borderless-dark.min.js +1 -1
  183. package/themes/borderless-light-panelless..js +1 -1
  184. package/themes/borderless-light-panelless..min.js +1 -1
  185. package/themes/borderless-light.js +1 -1
  186. package/themes/borderless-light.min.js +1 -1
  187. package/themes/contrast-dark-panelless.js +1 -1
  188. package/themes/contrast-dark-panelless.min.js +1 -1
  189. package/themes/contrast-dark.js +1 -1
  190. package/themes/contrast-dark.min.js +1 -1
  191. package/themes/contrast-light-panelless.js +1 -1
  192. package/themes/contrast-light-panelless.min.js +1 -1
  193. package/themes/contrast-light.js +1 -1
  194. package/themes/contrast-light.min.js +1 -1
  195. package/themes/default-dark-panelless.js +1 -1
  196. package/themes/default-dark-panelless.min.js +1 -1
  197. package/themes/default-dark.js +1 -1
  198. package/themes/default-dark.min.js +1 -1
  199. package/themes/default-light-panelless.js +1 -1
  200. package/themes/default-light-panelless.min.js +1 -1
  201. package/themes/default-light.js +1 -1
  202. package/themes/default-light.min.js +1 -1
  203. package/themes/doubleborder-dark-panelless.js +1 -1
  204. package/themes/doubleborder-dark-panelless.min.js +1 -1
  205. package/themes/doubleborder-dark.js +1 -1
  206. package/themes/doubleborder-dark.min.js +1 -1
  207. package/themes/doubleborder-light-panelles.js +1 -1
  208. package/themes/doubleborder-light-panelles.min.js +1 -1
  209. package/themes/doubleborder-light.js +1 -1
  210. package/themes/doubleborder-light.min.js +1 -1
  211. package/themes/flat-dark-panelless.js +1 -1
  212. package/themes/flat-dark-panelless.min.js +1 -1
  213. package/themes/flat-dark.js +1 -1
  214. package/themes/flat-dark.min.js +1 -1
  215. package/themes/flat-light-panelless.js +1 -1
  216. package/themes/flat-light-panelless.min.js +1 -1
  217. package/themes/flat-light.js +1 -1
  218. package/themes/flat-light.min.js +1 -1
  219. package/themes/index.js +1 -1
  220. package/themes/index.min.js +1 -1
  221. package/themes/layered-dark-panelless.js +1 -1
  222. package/themes/layered-dark-panelless.min.js +1 -1
  223. package/themes/layered-dark.js +1 -1
  224. package/themes/layered-dark.min.js +1 -1
  225. package/themes/layered-light-panelless.js +1 -1
  226. package/themes/layered-light-panelless.min.js +1 -1
  227. package/themes/layered-light.js +1 -1
  228. package/themes/layered-light.min.js +1 -1
  229. package/themes/plain-dark-panelless.js +1 -1
  230. package/themes/plain-dark-panelless.min.js +1 -1
  231. package/themes/plain-dark.js +1 -1
  232. package/themes/plain-dark.min.js +1 -1
  233. package/themes/plain-light-panelless.js +1 -1
  234. package/themes/plain-light-panelless.min.js +1 -1
  235. package/themes/plain-light.js +1 -1
  236. package/themes/plain-light.min.js +1 -1
  237. package/themes/sharp-dark-panelless.js +1 -1
  238. package/themes/sharp-dark-panelless.min.js +1 -1
  239. package/themes/sharp-dark.js +1 -1
  240. package/themes/sharp-dark.min.js +1 -1
  241. package/themes/sharp-light-panelless.js +1 -1
  242. package/themes/sharp-light-panelless.min.js +1 -1
  243. package/themes/sharp-light.js +1 -1
  244. package/themes/sharp-light.min.js +1 -1
  245. package/themes/solid-dark-panelless.js +1 -1
  246. package/themes/solid-dark-panelless.min.js +1 -1
  247. package/themes/solid-dark.js +1 -1
  248. package/themes/solid-dark.min.js +1 -1
  249. package/themes/solid-light-panelless.js +1 -1
  250. package/themes/solid-light-panelless.min.js +1 -1
  251. package/themes/solid-light.js +1 -1
  252. package/themes/solid-light.min.js +1 -1
  253. package/themes/three-dimensional-dark-panelless.js +1 -1
  254. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  255. package/themes/three-dimensional-dark.js +1 -1
  256. package/themes/three-dimensional-dark.min.js +1 -1
  257. package/themes/three-dimensional-light-panelless.js +1 -1
  258. package/themes/three-dimensional-light-panelless.min.js +1 -1
  259. package/themes/three-dimensional-light.js +1 -1
  260. package/themes/three-dimensional-light.min.js +1 -1
  261. package/ts3.4/typings/actions/action.d.ts +3 -3
  262. package/ts3.4/typings/base-interfaces.d.ts +1 -0
  263. package/ts3.4/typings/base.d.ts +1 -1
  264. package/ts3.4/typings/error.d.ts +6 -0
  265. package/ts3.4/typings/jsonobject.d.ts +4 -0
  266. package/ts3.4/typings/localizablestring.d.ts +1 -0
  267. package/ts3.4/typings/localization/english.d.ts +1 -0
  268. package/ts3.4/typings/martixBase.d.ts +6 -2
  269. package/ts3.4/typings/panel.d.ts +3 -3
  270. package/ts3.4/typings/question.d.ts +3 -3
  271. package/ts3.4/typings/question_baseselect.d.ts +2 -2
  272. package/ts3.4/typings/question_custom.d.ts +28 -1
  273. package/ts3.4/typings/question_matrix.d.ts +15 -1
  274. package/ts3.4/typings/question_matrixdropdownbase.d.ts +9 -8
  275. package/ts3.4/typings/question_matrixdropdowncolumn.d.ts +179 -0
  276. package/ts3.4/typings/settings.d.ts +2 -2
  277. package/ts3.4/typings/survey-events-api.d.ts +3 -3
  278. package/ts3.4/typings/survey.d.ts +3 -0
  279. package/ts3.4/typings/surveyStrings.d.ts +1 -0
  280. package/ts3.4/typings/surveyToc.d.ts +0 -2
  281. package/typings/actions/action.d.ts +3 -3
  282. package/typings/base-interfaces.d.ts +1 -0
  283. package/typings/base.d.ts +1 -1
  284. package/typings/error.d.ts +6 -0
  285. package/typings/jsonobject.d.ts +4 -0
  286. package/typings/localizablestring.d.ts +1 -0
  287. package/typings/localization/english.d.ts +1 -0
  288. package/typings/martixBase.d.ts +6 -2
  289. package/typings/panel.d.ts +3 -3
  290. package/typings/question.d.ts +3 -3
  291. package/typings/question_baseselect.d.ts +2 -2
  292. package/typings/question_custom.d.ts +28 -1
  293. package/typings/question_matrix.d.ts +17 -2
  294. package/typings/question_matrixdropdownbase.d.ts +9 -8
  295. package/typings/question_matrixdropdowncolumn.d.ts +179 -0
  296. package/typings/settings.d.ts +2 -2
  297. package/typings/survey-events-api.d.ts +3 -3
  298. package/typings/survey.d.ts +4 -0
  299. package/typings/surveyStrings.d.ts +1 -0
  300. package/typings/surveyToc.d.ts +0 -2
@@ -142,12 +142,12 @@ export declare var settings: {
142
142
  * import { ItemValue, settings } from "survey-core";
143
143
  *
144
144
  * // `itemValueSerializeAsObject` example
145
- * settings.localization.itemValueSerializeAsObject = true;
145
+ * settings.serialization.itemValueSerializeAsObject = true;
146
146
  * const item = new ItemValue(5);
147
147
  * const itemString = item.toJSON(); // Produces { value: 5 } instead of 5
148
148
  *
149
149
  * // `itemValueSerializeDisplayText` example
150
- * settings.localization.itemValueSerializeDisplayText = true;
150
+ * settings.serialization.itemValueSerializeDisplayText = true;
151
151
  * const item = new ItemValue("item1");
152
152
  * const itemString = item.toJSON(); // Produces { value: "item1", text: "item1" } instead of "item1"
153
153
  * ```
@@ -694,7 +694,7 @@ export interface MatrixAllowRemoveRowEvent extends MatrixDynamicQuestionEventMix
694
694
  }
695
695
  export interface MatrixCellCreatingBaseEvent extends MatrixDropdownQuestionEventMixin {
696
696
  /**
697
- * A matrix column to which the cell belongs.
697
+ * A [matrix column](https://surveyjs.io/form-library/documentation/api-reference/multi-select-matrix-column-values) to which the cell belongs.
698
698
  */
699
699
  column: MatrixDropdownColumn;
700
700
  /**
@@ -741,7 +741,7 @@ export interface MatrixAfterCellRenderEvent extends QuestionEventMixin, AfterRen
741
741
  */
742
742
  row: MatrixDropdownRowModelBase;
743
743
  /**
744
- * A matrix column to which the cell belongs.
744
+ * A [matrix column](https://surveyjs.io/form-library/documentation/api-reference/multi-select-matrix-column-values) to which the cell belongs.
745
745
  */
746
746
  column: MatrixDropdownColumn | MatrixDropdownCell;
747
747
  }
@@ -751,7 +751,7 @@ export interface MatrixCellValueBaseEvent extends MatrixDropdownQuestionEventMix
751
751
  */
752
752
  row: MatrixDropdownRowModelBase;
753
753
  /**
754
- * A matrix column to which the cell belongs.
754
+ * A [matrix column](https://surveyjs.io/form-library/documentation/api-reference/multi-select-matrix-column-values) to which the cell belongs.
755
755
  */
756
756
  column: MatrixDropdownColumn;
757
757
  /**
@@ -776,6 +776,8 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
776
776
  */
777
777
  lazyRendering: boolean;
778
778
  readonly isLazyRendering: boolean;
779
+ lazyRenderingFirstBatchSizeValue: number;
780
+ lazyRenderingFirstBatchSize: number;
779
781
  private updateLazyRenderingRowsOnRemovingElements;
780
782
  /*
781
783
  * A list of triggers in the survey.
@@ -1550,6 +1552,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
1550
1552
  * The `currentPage` property does not return the start page even if it is current. Use the [`activePage`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#activePage) property instead if your survey contains a start page.
1551
1553
  */
1552
1554
  currentPage: any;
1555
+ tryNavigateToPage(page: PageModel): boolean;
1553
1556
  private updateCurrentPage;
1554
1557
  private readonly isCurrentPageAvailable: any;
1555
1558
  private isPageExistsInSurvey;
@@ -40,6 +40,7 @@ export declare var surveyStrings: {
40
40
  requiredError: string;
41
41
  requiredErrorInPanel: string;
42
42
  requiredInAllRowsError: string;
43
+ eachRowUniqueError: string;
43
44
  numericError: string;
44
45
  minError: string;
45
46
  maxError: string;
@@ -1,10 +1,8 @@
1
1
  import { Action } from "./actions/action";
2
2
  import { ListModel } from "./list";
3
- import { PageModel } from "./page";
4
3
  import { PanelModelBase } from "./panel";
5
4
  import { PopupModel } from "./popup";
6
5
  import { SurveyModel } from "./survey";
7
- export declare function tryNavigateToPage(survey: SurveyModel, page: PageModel): boolean;
8
6
  export declare function tryFocusPage(survey: SurveyModel, panel: PanelModelBase): boolean;
9
7
  export declare function createTOCListModel(survey: SurveyModel, onAction?: () => void): ListModel<Action>;
10
8
  export declare function getTocRootCss(survey: SurveyModel, isMobile?: boolean): string;
@@ -1,5 +1,5 @@
1
1
  import { ILocalizableOwner, LocalizableString } from "../localizablestring";
2
- import { Base } from "../base";
2
+ import { Base, ComputedUpdater } from "../base";
3
3
  import { IListModel } from "../list";
4
4
  import { IPopupOptionsBase } from "../popup";
5
5
  export declare type actionModeType = "large" | "small" | "popup" | "removed";
@@ -22,7 +22,7 @@ export interface IAction {
22
22
  * @see enabled
23
23
  * @see active
24
24
  */
25
- visible?: boolean;
25
+ visible?: boolean | ComputedUpdater<boolean>;
26
26
  /**
27
27
  * The action item's title.
28
28
  *
@@ -43,7 +43,7 @@ export interface IAction {
43
43
  * @see active
44
44
  * @see visible
45
45
  */
46
- enabled?: boolean;
46
+ enabled?: boolean | ComputedUpdater<boolean>;
47
47
  enabledIf?: () => boolean;
48
48
  /**
49
49
  * Specifies the visibility of the action item's title.
@@ -74,6 +74,7 @@ export interface ISurvey extends ITextProcessor, ISurveyErrorOwner {
74
74
  allowResizeComment: boolean;
75
75
  state: string;
76
76
  isLazyRendering: boolean;
77
+ lazyRenderingFirstBatchSize: number;
77
78
  cancelPreviewByPage(panel: IPanel): any;
78
79
  locEditText: LocalizableString;
79
80
  cssNavigationEdit: string;
package/typings/base.d.ts CHANGED
@@ -265,7 +265,7 @@ export declare class Base {
265
265
  registerFunctionOnPropertiesValueChanged(names: Array<string>, func: any, key?: string): void;
266
266
  unRegisterFunctionOnPropertyValueChanged(name: string, key?: string): void;
267
267
  unRegisterFunctionOnPropertiesValueChanged(names: Array<string>, key?: string): void;
268
- createCustomLocalizableObj(name: string): void;
268
+ createCustomLocalizableObj(name: string): LocalizableString;
269
269
  getLocale(): string;
270
270
  getLocalizationString(strName: string): string;
271
271
  getLocalizationFormatString(strName: string, ...args: any[]): string;
@@ -56,6 +56,12 @@ export declare class RequiredInAllRowsError extends SurveyError {
56
56
  getErrorType(): string;
57
57
  protected getDefaultText(): string;
58
58
  }
59
+ export declare class EachRowUniqueError extends SurveyError {
60
+ text: string;
61
+ constructor(text: string, errorOwner?: ISurveyErrorOwner);
62
+ getErrorType(): string;
63
+ protected getDefaultText(): string;
64
+ }
59
65
  export declare class MinRowCountError extends SurveyError {
60
66
  minRowCount: number;
61
67
  constructor(minRowCount: number, errorOwner?: ISurveyErrorOwner);
@@ -152,11 +152,13 @@ export declare class JsonMetadataClass {
152
152
  properties: Array<JsonObjectProperty>;
153
153
  private isCustomValue;
154
154
  private allProperties;
155
+ private requiredProperties;
155
156
  private hashProperties;
156
157
  constructor(name: string, properties: Array<any>, creator?: (json?: any) => any, parentName?: string);
157
158
  find(name: string): JsonObjectProperty;
158
159
  findProperty(name: string): JsonObjectProperty;
159
160
  getAllProperties(): Array<JsonObjectProperty>;
161
+ getRequiredProperties(): Array<JsonObjectProperty>;
160
162
  resetAllProperties(): void;
161
163
  get isCustom(): boolean;
162
164
  private fillAllProperties;
@@ -177,6 +179,7 @@ export declare class JsonMetadata {
177
179
  private classes;
178
180
  private alternativeNames;
179
181
  private childrenClasses;
182
+ private dynamicPropsCache;
180
183
  onSerializingProperty: ((obj: Base, prop: JsonObjectProperty, value: any, json: any) => boolean) | undefined;
181
184
  getObjPropertyValue(obj: any, name: string): any;
182
185
  setObjPropertyValue(obj: any, name: string, val: any): void;
@@ -204,6 +207,7 @@ export declare class JsonMetadata {
204
207
  addProperty(className: string, propertyInfo: any): JsonObjectProperty;
205
208
  private addCustomPropertyCore;
206
209
  removeProperty(className: string, propertyName: string): boolean;
210
+ private clearDynamicPropsCache;
207
211
  private removePropertyFromClass;
208
212
  private fillChildrenClasses;
209
213
  findClass(name: string): JsonMetadataClass;
@@ -42,6 +42,7 @@ export declare class LocalizableString implements ILocalizableString {
42
42
  searchText: string;
43
43
  searchIndex: number;
44
44
  disableLocalization: boolean;
45
+ defaultValue: string;
45
46
  constructor(owner: ILocalizableOwner, useMarkdown?: boolean, name?: string);
46
47
  getIsMultiple(): boolean;
47
48
  get locale(): string;
@@ -23,6 +23,7 @@ export declare var englishStrings: {
23
23
  requiredError: string;
24
24
  requiredErrorInPanel: string;
25
25
  requiredInAllRowsError: string;
26
+ eachRowUniqueError: string;
26
27
  numericError: string;
27
28
  minError: string;
28
29
  maxError: string;
@@ -25,9 +25,13 @@ export declare class QuestionMatrixBaseModel<TRow, TColumn> extends Question {
25
25
  /**
26
26
  * An array of matrix columns.
27
27
  *
28
- * This array can contain primitive values or objects with the `text` (display value) and `value` (value to be saved in survey results) properties.
28
+ * For a Single-Select Matrix, the `columns` array can contain configuration objects with the `text` (display value) and `value` (value to be saved in survey results) properties. Alternatively, the array can contain primitive values that will be used as both the display values and values to be saved in survey results.
29
29
  *
30
- * [View Demo](https://surveyjs.io/form-library/examples/single-selection-matrix-table-question/ (linkStyle))
30
+ * [View "Single-Select Matrix" Demo](https://surveyjs.io/form-library/examples/single-selection-matrix-table-question/ (linkStyle))
31
+ *
32
+ * For a Multi-Select Matrix or Dynamic Matrix, the `columns` array should contain configuration objects with properties described in the [`MatrixDropdownColumn`](https://surveyjs.io/form-library/documentation/api-reference/multi-select-matrix-column-values) API Reference section.
33
+ *
34
+ * [View "Multi-Select Matrix" Demo](https://surveyjs.io/form-library/examples/questiontype-matrixdropdown/ (linkStyle))
31
35
  */
32
36
  get columns(): Array<any>;
33
37
  set columns(newValue: Array<any>);
@@ -122,7 +122,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
122
122
  *
123
123
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
124
124
  *
125
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
125
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
126
126
  * @see visible
127
127
  * @see isVisible
128
128
  */
@@ -215,7 +215,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
215
215
  *
216
216
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
217
217
  *
218
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
218
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
219
219
  * @see isRequired
220
220
  */
221
221
  get requiredIf(): string;
@@ -338,7 +338,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
338
338
  *
339
339
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
340
340
  *
341
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
341
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
342
342
  * @see readOnly
343
343
  * @see isReadOnly
344
344
  */
@@ -158,7 +158,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
158
158
  *
159
159
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
160
160
  *
161
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
161
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
162
162
  * @see visible
163
163
  * @see isVisible
164
164
  */
@@ -448,7 +448,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
448
448
  *
449
449
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
450
450
  *
451
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
451
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
452
452
  * @see isRequired
453
453
  */
454
454
  get requiredIf(): string;
@@ -495,7 +495,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
495
495
  *
496
496
  * A survey parses and runs all expressions on startup. If any values used in the expression change, the survey re-evaluates it.
497
497
  *
498
- * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility)
498
+ * Refer to the following help topic for more information: [Conditional Visibility](https://surveyjs.io/form-library/documentation/design-survey-conditional-logic#conditional-visibility).
499
499
  * @see readOnly
500
500
  * @see isReadOnly
501
501
  */
@@ -293,7 +293,7 @@ export declare class QuestionSelectBase extends Question {
293
293
  get otherPlaceHolder(): string;
294
294
  set otherPlaceHolder(newValue: string);
295
295
  /**
296
- * Get or sets an error message displayed when users select the "Other" choice item but leave the comment area empty.
296
+ * Gets or sets an error message displayed when users select the "Other" choice item but leave the comment area empty.
297
297
  * @see showOtherItem
298
298
  */
299
299
  get otherErrorText(): string;
@@ -460,7 +460,7 @@ export declare class QuestionCheckboxBase extends QuestionSelectBase {
460
460
  colCountChangedCallback: () => void;
461
461
  constructor(name: string);
462
462
  /**
463
- * Get or sets the number of columns used to arrange choice items.
463
+ * Gets or sets the number of columns used to arrange choice items.
464
464
  *
465
465
  * Set this property to 0 if you want to display all items in one line. The default value depends on the available width.
466
466
  * @see separateSpecialChoices
@@ -37,13 +37,37 @@ export interface ICustomQuestionTypeConfiguration {
37
37
  */
38
38
  onInit?(): void;
39
39
  /**
40
- * Specifies whether the custom question type is available in the Toolbox and the Add Question menu.
40
+ * Specifies whether the custom question type is available in the Toolbox and the Add Question menu in Survey Creator.
41
41
  *
42
42
  * Default value: `true`
43
43
  *
44
44
  * Set this property to `false` if your custom question type is used only to customize Property Grid content and is not meant for a survey.
45
45
  */
46
46
  showInToolbox?: boolean;
47
+ /**
48
+ * A default title for questions created with this question type. Survey authors can change the default title in the JSON object or in Survey Creator's Property Grid.
49
+ *
50
+ * You can specify the question title with a string value or with an object that defines different titles for different locales:
51
+ *
52
+ * ```js
53
+ * import { ComponentCollection } from "survey-core";
54
+ *
55
+ * ComponentCollection.Instance.add({
56
+ * // ...
57
+ * defaultQuestionTitle: "Default title"
58
+ * });
59
+ * // ===== OR =====
60
+ * ComponentCollection.Instance.add({
61
+ * // ...
62
+ * defaultQuestionTitle: {
63
+ * en: "Default title",
64
+ * de: "Standardtitel",
65
+ * fr: "Titre par défaut"
66
+ * }
67
+ * });
68
+ * ```
69
+ */
70
+ defaultQuestionTitle?: any;
47
71
  /**
48
72
  * A function that is called when the custom question is created. Use it to access questions nested within a [composite question type](https://surveyjs.io/form-library/documentation/customize-question-types/create-composite-question-types).
49
73
  *
@@ -208,6 +232,7 @@ export declare class ComponentQuestionJSON {
208
232
  onValueChanging(question: Question, name: string, newValue: any): any;
209
233
  onItemValuePropertyChanged(question: Question, item: ItemValue, propertyName: string, name: string, newValue: any): void;
210
234
  getDisplayValue(keyAsText: boolean, value: any, question: Question): any;
235
+ get defaultQuestionTitle(): any;
211
236
  setValueToQuestion(val: any): any;
212
237
  getValueFromQuestion(val: any): any;
213
238
  get isComposite(): boolean;
@@ -231,10 +256,12 @@ export declare class ComponentCollection {
231
256
  }
232
257
  export declare abstract class QuestionCustomModelBase extends Question implements ISurveyImpl, ISurveyData, IPanel {
233
258
  customQuestion: ComponentQuestionJSON;
259
+ private locQuestionTitle;
234
260
  constructor(name: string, customQuestion: ComponentQuestionJSON);
235
261
  getType(): string;
236
262
  locStrsChanged(): void;
237
263
  localeChanged(): void;
264
+ protected getDefaultTitle(): string;
238
265
  addUsedLocales(locales: Array<string>): void;
239
266
  needResponsiveWidth(): boolean;
240
267
  protected createWrapper(): void;
@@ -8,6 +8,7 @@ import { IPlainDataOptions } from "./base-interfaces";
8
8
  export interface IMatrixData {
9
9
  onMatrixRowChanged(row: MatrixRowModel): void;
10
10
  getCorrectedRowValue(value: any): any;
11
+ hasErrorInRow(row: MatrixRowModel): boolean;
11
12
  }
12
13
  export declare class MatrixRowModel extends Base {
13
14
  fullName: string;
@@ -19,7 +20,7 @@ export declare class MatrixRowModel extends Base {
19
20
  get text(): string;
20
21
  get locText(): LocalizableString;
21
22
  get value(): any;
22
- set value(newValue: any);
23
+ set value(val: any);
23
24
  get rowClasses(): string;
24
25
  }
25
26
  export interface IMatrixCellsOwner extends ILocalizableOwner {
@@ -68,9 +69,18 @@ export declare class QuestionMatrixModel extends QuestionMatrixBaseModel<MatrixR
68
69
  /**
69
70
  * Specifies whether each row requires an answer. If a respondent skips a row, the question displays a validation error.
70
71
  * @see isRequired
72
+ * @see eachRowUnique
73
+ * @see validators
71
74
  */
72
75
  get isAllRowRequired(): boolean;
73
76
  set isAllRowRequired(val: boolean);
77
+ /**
78
+ * Specifies whether answers in all rows should be unique. If any answers duplicate, the question displays a validation error.
79
+ * @see isAllRowRequired
80
+ * @see validators
81
+ */
82
+ get eachRowUnique(): boolean;
83
+ set eachRowUnique(val: boolean);
74
84
  get hasRows(): boolean;
75
85
  /**
76
86
  * Specifies a sort order for matrix rows.
@@ -115,9 +125,13 @@ export declare class QuestionMatrixModel extends QuestionMatrixBaseModel<MatrixR
115
125
  private emptyLocalizableString;
116
126
  getCellDisplayLocText(row: any, column: any): LocalizableString;
117
127
  supportGoNextPageAutomatic(): boolean;
128
+ private errorsInRow;
118
129
  protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
119
- private hasErrorInRows;
130
+ private hasErrorAllRowsRequired;
131
+ private hasErrorEachRowUnique;
120
132
  private hasValuesInAllRows;
133
+ private hasNonUniqueValueInRow;
134
+ private addErrorIntoRow;
121
135
  protected getIsAnswered(): boolean;
122
136
  private createMatrixRow;
123
137
  protected onMatrixRowCreated(row: MatrixRowModel): void;
@@ -130,6 +144,7 @@ export declare class QuestionMatrixModel extends QuestionMatrixBaseModel<MatrixR
130
144
  protected getFirstInputElementId(): string;
131
145
  onMatrixRowChanged(row: MatrixRowModel): void;
132
146
  getCorrectedRowValue(value: any): any;
147
+ hasErrorInRow(row: MatrixRowModel): boolean;
133
148
  protected getSearchableItemValueKeys(keys: Array<string>): void;
134
149
  private get SurveyModel();
135
150
  getColumnHeaderWrapperComponentName(cell: ItemValue): string;
@@ -302,14 +302,15 @@ export declare class QuestionMatrixDropdownModelBase extends QuestionMatrixBaseM
302
302
  *
303
303
  * Possible values:
304
304
  *
305
- * - `"dropdown"`
306
- * - `"checkbox"`
307
- * - `"radiogroup"`
308
- * - `"text"`
309
- * - `"comment"`
310
- * - `"boolean"`
311
- * - `"expression"`
312
- * - `"rating"`
305
+ * - [`"dropdown"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model)
306
+ * - [`"checkbox"`](https://surveyjs.io/form-library/documentation/api-reference/checkbox-question-model)
307
+ * - [`"radiogroup"`](https://surveyjs.io/form-library/documentation/api-reference/radio-button-question-model)
308
+ * - [`"tagbox"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model)
309
+ * - [`"text"`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model)
310
+ * - [`"comment"`](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model)
311
+ * - [`"boolean"`](https://surveyjs.io/form-library/documentation/api-reference/boolean-question-model)
312
+ * - [`"expression"`](https://surveyjs.io/form-library/documentation/api-reference/expression-model)
313
+ * - [`"rating"`](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model)
313
314
  *
314
315
  * Default value: `"dropdown"` (inherited from [`settings.matrix.defaultCellType`](https://surveyjs.io/form-library/documentation/settings#matrixDefaultCellType))
315
316
  */