survey-core 1.11.3 → 1.11.5

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 (272) hide show
  1. package/defaultV2.css +175 -48
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +175 -48
  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 +2 -1
  8. package/i18n/arabic.js.map +1 -1
  9. package/i18n/arabic.min.js +2 -2
  10. package/i18n/basque.js +1 -1
  11. package/i18n/basque.min.js +1 -1
  12. package/i18n/bulgarian.js +1 -1
  13. package/i18n/bulgarian.min.js +1 -1
  14. package/i18n/catalan.js +1 -1
  15. package/i18n/catalan.min.js +1 -1
  16. package/i18n/croatian.js +1 -1
  17. package/i18n/croatian.min.js +1 -1
  18. package/i18n/czech.js +1 -1
  19. package/i18n/czech.min.js +1 -1
  20. package/i18n/danish.js +1 -1
  21. package/i18n/danish.min.js +1 -1
  22. package/i18n/dutch.js +1 -1
  23. package/i18n/dutch.min.js +1 -1
  24. package/i18n/english.js +1 -1
  25. package/i18n/english.min.js +1 -1
  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 +2 -1
  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/philippines.js +1 -1
  74. package/i18n/philippines.min.js +1 -1
  75. package/i18n/polish.js +1 -1
  76. package/i18n/polish.min.js +1 -1
  77. package/i18n/portuguese-br.js +1 -1
  78. package/i18n/portuguese-br.min.js +1 -1
  79. package/i18n/portuguese.js +1 -1
  80. package/i18n/portuguese.min.js +1 -1
  81. package/i18n/romanian.js +1 -1
  82. package/i18n/romanian.min.js +1 -1
  83. package/i18n/russian.js +1 -1
  84. package/i18n/russian.min.js +1 -1
  85. package/i18n/serbian.js +1 -1
  86. package/i18n/serbian.min.js +1 -1
  87. package/i18n/simplified-chinese.js +1 -1
  88. package/i18n/simplified-chinese.min.js +1 -1
  89. package/i18n/slovak.js +1 -1
  90. package/i18n/slovak.min.js +1 -1
  91. package/i18n/spanish.js +1 -1
  92. package/i18n/spanish.min.js +1 -1
  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 +26 -1
  116. package/modern.css.map +1 -1
  117. package/modern.fontless.css +26 -1
  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 +305 -143
  127. package/survey.core.js.map +1 -1
  128. package/survey.core.min.js +3 -3
  129. package/survey.css +33 -1
  130. package/survey.css.map +1 -1
  131. package/survey.i18n.js +2 -1
  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/actions/action.d.ts +2 -1
  218. package/ts3.4/typings/base-interfaces.d.ts +1 -0
  219. package/ts3.4/typings/defaultCss/cssmodern.d.ts +1 -0
  220. package/ts3.4/typings/defaultCss/cssstandard.d.ts +1 -0
  221. package/ts3.4/typings/defaultCss/defaultV2Css.d.ts +1 -0
  222. package/ts3.4/typings/dragdrop/choices.d.ts +1 -0
  223. package/ts3.4/typings/dragdrop/ranking-choices.d.ts +1 -1
  224. package/ts3.4/typings/dropdownListModel.d.ts +2 -0
  225. package/ts3.4/typings/global_variables_utils.d.ts +3 -0
  226. package/ts3.4/typings/list.d.ts +2 -0
  227. package/ts3.4/typings/martixBase.d.ts +1 -0
  228. package/ts3.4/typings/mask/mask_base.d.ts +3 -0
  229. package/ts3.4/typings/panel.d.ts +4 -0
  230. package/ts3.4/typings/question.d.ts +4 -1
  231. package/ts3.4/typings/question_baseselect.d.ts +9 -0
  232. package/ts3.4/typings/question_boolean.d.ts +0 -4
  233. package/ts3.4/typings/question_checkbox.d.ts +1 -0
  234. package/ts3.4/typings/question_custom.d.ts +19 -2
  235. package/ts3.4/typings/question_expression.d.ts +1 -1
  236. package/ts3.4/typings/question_matrixdropdown.d.ts +2 -0
  237. package/ts3.4/typings/question_matrixdropdownbase.d.ts +5 -1
  238. package/ts3.4/typings/question_ranking.d.ts +2 -6
  239. package/ts3.4/typings/question_rating.d.ts +8 -3
  240. package/ts3.4/typings/settings.d.ts +10 -2
  241. package/ts3.4/typings/survey-events-api.d.ts +1 -0
  242. package/ts3.4/typings/survey.d.ts +16 -1
  243. package/ts3.4/typings/surveyStrings.d.ts +3 -0
  244. package/ts3.4/typings/utils/devices.d.ts +4 -0
  245. package/typings/actions/action.d.ts +2 -1
  246. package/typings/base-interfaces.d.ts +1 -0
  247. package/typings/defaultCss/cssmodern.d.ts +1 -0
  248. package/typings/defaultCss/cssstandard.d.ts +1 -0
  249. package/typings/defaultCss/defaultV2Css.d.ts +1 -0
  250. package/typings/dragdrop/choices.d.ts +1 -0
  251. package/typings/dragdrop/ranking-choices.d.ts +1 -1
  252. package/typings/dropdownListModel.d.ts +2 -0
  253. package/typings/global_variables_utils.d.ts +3 -0
  254. package/typings/list.d.ts +2 -0
  255. package/typings/martixBase.d.ts +1 -0
  256. package/typings/mask/mask_base.d.ts +3 -0
  257. package/typings/panel.d.ts +4 -0
  258. package/typings/question.d.ts +4 -1
  259. package/typings/question_baseselect.d.ts +9 -0
  260. package/typings/question_boolean.d.ts +0 -4
  261. package/typings/question_checkbox.d.ts +1 -0
  262. package/typings/question_custom.d.ts +19 -2
  263. package/typings/question_expression.d.ts +1 -1
  264. package/typings/question_matrixdropdown.d.ts +2 -0
  265. package/typings/question_matrixdropdownbase.d.ts +5 -1
  266. package/typings/question_ranking.d.ts +2 -7
  267. package/typings/question_rating.d.ts +8 -3
  268. package/typings/settings.d.ts +10 -2
  269. package/typings/survey-events-api.d.ts +1 -0
  270. package/typings/survey.d.ts +17 -1
  271. package/typings/surveyStrings.d.ts +3 -0
  272. package/typings/utils/devices.d.ts +4 -0
@@ -9,6 +9,7 @@ export declare class DropdownListModel extends Base {
9
9
  protected onSelectionChanged?: (item: IAction, ...params: any[]) => void;
10
10
  readonly minPageSize = 25;
11
11
  readonly loadingItemHeight = 40;
12
+ timer: any;
12
13
  private htmlCleanerElement;
13
14
  private _markdownMode;
14
15
  private _popupModel;
@@ -25,6 +26,7 @@ export declare class DropdownListModel extends Base {
25
26
  protected listModelFilterStringChanged: (newValue: string) => void;
26
27
  private resetItemsSettings;
27
28
  private setItems;
29
+ private loadQuestionChoices;
28
30
  private updateQuestionChoices;
29
31
  private updatePopupFocusFirstInputSelector;
30
32
  protected createPopup(): void;
@@ -11,6 +11,9 @@ export declare class DomWindowHelper {
11
11
  static requestAnimationFrame(callback: FrameRequestCallback): number;
12
12
  static addEventListener(type: string, listener: (e?: any) => void): void;
13
13
  static removeEventListener(type: string, listener: (e?: any) => void): void;
14
+ static matchMedia(mediaQueryString: string): {
15
+ matches: boolean;
16
+ } | null;
14
17
  }
15
18
  export declare class DomDocumentHelper {
16
19
  static isAvailable(): boolean;
@@ -7,6 +7,7 @@ export declare let defaultListCss: {
7
7
  searchClearButtonIcon: string;
8
8
  loadingIndicator: string;
9
9
  itemSelected: string;
10
+ itemGroup: string;
10
11
  itemWithIcon: string;
11
12
  itemDisabled: string;
12
13
  itemFocused: string;
@@ -77,6 +78,7 @@ export declare class ListModel<T extends BaseAction = Action> extends ActionCont
77
78
  searchClearButtonIcon: string;
78
79
  loadingIndicator: string;
79
80
  itemSelected: string;
81
+ itemGroup: string;
80
82
  itemWithIcon: string;
81
83
  itemDisabled: string;
82
84
  itemFocused: string;
@@ -77,6 +77,7 @@ export declare class QuestionMatrixBaseModel<TRow, TColumn> extends Question {
77
77
  protected onColumnsChanged(): void;
78
78
  protected onRowsChanged(): void;
79
79
  protected updateVisibilityBasedOnRows(): void;
80
+ protected isVisibleCore(): boolean;
80
81
  protected shouldRunColumnExpression(): boolean;
81
82
  protected hasRowsAsItems(): boolean;
82
83
  protected runItemsCondition(values: HashTable<any>, properties: HashTable<any>): boolean;
@@ -1,4 +1,5 @@
1
1
  import { Base } from "../base";
2
+ import { ISurvey } from "../base-interfaces";
2
3
  import { IInputMask, IMaskedInputResult, ITextInputParams } from "./mask_utils";
3
4
  /**
4
5
  * A base class for classes that implement input masks:
@@ -15,6 +16,8 @@ export declare class InputMaskBase extends Base implements IInputMask {
15
16
  * Default value: `false`
16
17
  */
17
18
  saveMaskedValue: boolean;
19
+ owner: ISurvey;
20
+ getSurvey(live?: boolean): ISurvey;
18
21
  getType(): string;
19
22
  setData(json: any): void;
20
23
  getData(): any;
@@ -74,6 +74,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
74
74
  showTitle: boolean;
75
75
  readonly hasTitle: boolean;
76
76
  delete(doDispose?: boolean): void;
77
+ private deletePanel;
77
78
  protected removeFromParent(): void;
78
79
  protected canShowTitle(): boolean;
79
80
  showDescription: boolean;
@@ -277,6 +278,8 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
277
278
  */
278
279
  questionTitleLocation: string;
279
280
  getQuestionTitleLocation(): string;
281
+ availableQuestionTitleWidth(): boolean;
282
+ hasElementWithTitleLocationLeft(): boolean;
280
283
  /**
281
284
  * Sets consistent width for question titles in CSS values. Applies only when [`questionTitleLocation`](#questionTitleLocation) evaluates to `"left"`.
282
285
  *
@@ -305,6 +308,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
305
308
  private updateRowsOnElementAdded;
306
309
  protected onAddElement(element: IElement, index: number): void;
307
310
  protected onRemoveElement(element: IElement): void;
311
+ private onRemoveElementNotifySurvey;
308
312
  private onElementVisibilityChanged;
309
313
  private onElementStartWithNewLineChanged;
310
314
  private updateRowsVisibility;
@@ -469,6 +469,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
469
469
  hasOther: boolean;
470
470
  protected hasOtherChanged(): void;
471
471
  readonly requireUpdateCommentValue: boolean;
472
+ readOnlyCallback: () => boolean;
472
473
  readonly isReadOnly: boolean;
473
474
  readonly isInputReadOnly: boolean;
474
475
  readonly renderedInputReadOnly: string;
@@ -505,6 +506,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
505
506
  protected initDataFromSurvey(): void;
506
507
  protected initCommentFromSurvey(): void;
507
508
  protected runExpression(expression: string): any;
509
+ readonly commentAreaRows: number;
508
510
  private readonly autoGrowComment: any;
509
511
  private readonly allowResizeComment: any;
510
512
  private questionValue: any;
@@ -695,6 +697,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
695
697
  protected isValueExpression(val: any): boolean;
696
698
  protected setValueAndRunExpression(runner: ExpressionRunner, defaultValue: any, setFunc: (val: any) => void, values?: HashTable<any>, properties?: HashTable<any>): void;
697
699
  protected convertFuncValuetoQuestionValue(val: any): any;
700
+ private runExpressionSetValueCore;
698
701
  private runExpressionSetValue;
699
702
  private runDefaultValueExpression;
700
703
  /*
@@ -753,7 +756,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
753
756
  protected canRunValidators(isOnValueChanged: boolean): boolean;
754
757
  private fireSurveyValidation;
755
758
  protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
756
- protected hasRequiredError(): boolean;
759
+ hasRequiredError(): boolean;
757
760
  private validatorRunner;
758
761
  private isRunningValidatorsValue;
759
762
  onCompletedAsyncValidators: (hasErrors: boolean) => void;
@@ -459,6 +459,11 @@ export declare class QuestionSelectBase extends Question {
459
459
  readonly hasHeadItems: boolean;
460
460
  readonly hasFootItems: boolean;
461
461
  readonly columns: any[];
462
+ protected getObservedElementSelector(): string;
463
+ protected supportResponsiveness(): boolean;
464
+ allowMultiColumns: boolean;
465
+ protected onBeforeSetCompactRenderer(): void;
466
+ protected onBeforeSetDesktopRenderer(): void;
462
467
  readonly hasColumns: boolean;
463
468
  readonly rowLayout: boolean;
464
469
  readonly blockedRow: boolean;
@@ -483,6 +488,10 @@ export declare class QuestionSelectBase extends Question {
483
488
  protected getDefaultItemComponent(): string;
484
489
  /*
485
490
  * The name of a component used to render items.
491
+ *
492
+ * [View Dropdown Demo](https://surveyjs.io/form-library/examples/dropdown-box-with-custom-items/ (linkStyle))
493
+ *
494
+ * [View Ranking Demo](https://surveyjs.io/form-library/examples/dropdown-box-with-custom-items/ (linkStyle))
486
495
  */
487
496
  itemComponent: string;
488
497
  protected updateCssClasses(res: any, css: any): void;
@@ -28,10 +28,6 @@ export declare class QuestionBooleanModel extends Question {
28
28
  getDefaultValue(): any;
29
29
  readonly locTitle: LocalizableString;
30
30
  readonly labelRenderedAriaID: string;
31
- leftAnswerElement: HTMLElement;
32
- thumbMargin: string;
33
- updateThumbMargin(): void;
34
- afterRender(el: HTMLElement): void;
35
31
  beforeDestroyQuestionElement(el: HTMLElement): void;
36
32
  showTitle: boolean;
37
33
  label: string;
@@ -142,4 +142,5 @@ export declare class QuestionCheckboxModel extends QuestionCheckboxBase {
142
142
  readonly checkBoxSvgPath: string;
143
143
  readonly isNewA11yStructure: boolean;
144
144
  readonly a11y_input_ariaRole: string;
145
+ readonly a11y_input_ariaRequired: "true" | "false";
145
146
  }
@@ -150,7 +150,7 @@ export interface ICustomQuestionTypeConfiguration {
150
150
  */
151
151
  onPropertyChanged?(question: Question, propertyName: string, newValue: any): void;
152
152
  /**
153
- * A function that is called after the question value is changed.
153
+ * A function that is called after the question value is changed in the UI.
154
154
  *
155
155
  * Parameters:
156
156
  *
@@ -160,10 +160,12 @@ export interface ICustomQuestionTypeConfiguration {
160
160
  * The question's [name](https://surveyjs.io/Documentation/Library?id=Question#name).
161
161
  * - `newValue`: `any`\
162
162
  * A new value for the question.
163
+ *
164
+ * If you want to perform some actions when the value is changed in code as well as in the UI, implement the [`onValueSet`](https://surveyjs.io/form-library/documentation/api-reference/icustomquestiontypeconfiguration#onValueSet) function.
163
165
  */
164
166
  onValueChanged?(question: Question, name: string, newValue: any): void;
165
167
  /**
166
- * A function that is called before a question value is changed.
168
+ * A function that is called before a question value is changed in the UI.
167
169
  *
168
170
  * This function should return the value you want to save: `newValue`, a custom value, or `undefined` if you want to clear the question value.
169
171
  *
@@ -231,6 +233,21 @@ export interface ICustomQuestionTypeConfiguration {
231
233
  * @returns An error text.
232
234
  */
233
235
  getErrorText?: (question: Question) => string;
236
+ /**
237
+ * A function that is called after the question value is set.
238
+ *
239
+ * Parameters:
240
+ *
241
+ * - `question`: [Question](https://surveyjs.io/Documentation/Library?id=Question)\
242
+ * A custom question.
243
+ * - `newValue`: `any`\
244
+ * A new value for the question.
245
+ *
246
+ * Unlike the [`onValueChanged`](https://surveyjs.io/form-library/documentation/api-reference/icustomquestiontypeconfiguration#onValueChanged) function, which is called only when the question value is changed in the UI, `onValueSet` is called when the value is changed in code as well.
247
+ *
248
+ * [View Demo](https://surveyjs.io/survey-creator/examples/smart-search-input/ (linkStyle))
249
+ */
250
+ onValueSet?: (question: Question, newValue: any) => void;
234
251
  onSetQuestionValue?: (question: Question, newValue: any) => void;
235
252
  valueToQuestion?: (val: any) => any;
236
253
  valueFromQuestion?: (val: any) => any;
@@ -28,7 +28,7 @@ export declare class QuestionExpressionModel extends Question {
28
28
  unlocCalculation(): void;
29
29
  runCondition(values: HashTable<any>, properties: HashTable<any>): void;
30
30
  protected canCollectErrors(): boolean;
31
- protected hasRequiredError(): boolean;
31
+ hasRequiredError(): boolean;
32
32
  private createRunner;
33
33
  /*
34
34
  * The maximum number of fraction digits. Applies only if the `displayStyle` property is not `"none"`. Accepts values in the range from -1 to 20, where -1 disables the property.
@@ -9,6 +9,8 @@ export declare class MatrixDropdownRowModel extends MatrixDropdownRowModelBase {
9
9
  readonly rowName: string;
10
10
  readonly text: string;
11
11
  readonly locText: LocalizableString;
12
+ isRowEnabled(): boolean;
13
+ protected isRowHasEnabledCondition(): boolean;
12
14
  }
13
15
  /**
14
16
  * A class that describes the Multi-Select Matrix question type. Multi-Select Matrix allows you to use the [Dropdown](https://surveyjs.io/form-library/documentation/questiondropdownmodel), [Checkbox](https://surveyjs.io/form-library/documentation/questioncheckboxmodel), [Radiogroup](https://surveyjs.io/form-library/documentation/questionradiogroupmodel), [Text](https://surveyjs.io/form-library/documentation/questiontextmodel), and [Comment](https://surveyjs.io/form-library/documentation/questioncommentmodel) question types as cell editors.
@@ -34,6 +34,7 @@ export interface IMatrixDropdownData {
34
34
  onTotalValueChanged(): any;
35
35
  getSurvey(): ISurvey;
36
36
  getDataFilteredValues(): any;
37
+ isMatrixReadOnly(): boolean;
37
38
  }
38
39
  export declare class MatrixDropdownCell {
39
40
  column: MatrixDropdownColumn;
@@ -80,6 +81,8 @@ export declare class MatrixDropdownRowModelBase implements ISurveyData, ISurveyI
80
81
  readonly rowName: any;
81
82
  readonly dataName: string;
82
83
  readonly text: any;
84
+ isRowEnabled(): boolean;
85
+ protected isRowHasEnabledCondition(): boolean;
83
86
  value: any;
84
87
  readonly locText: LocalizableString;
85
88
  getAccessbilityText(): string;
@@ -131,7 +134,7 @@ export declare class MatrixDropdownRowModelBase implements ISurveyData, ISurveyI
131
134
  locStrsChanged(): void;
132
135
  updateCellQuestionOnColumnChanged(column: MatrixDropdownColumn, name: string, newValue: any): void;
133
136
  updateCellQuestionOnColumnItemValueChanged(column: MatrixDropdownColumn, propertyName: string, obj: ItemValue, name: string, newValue: any, oldValue: any): void;
134
- onQuestionReadOnlyChanged(parentIsReadOnly: boolean): void;
137
+ onQuestionReadOnlyChanged(): void;
135
138
  private validationValues;
136
139
  hasErrors(fireCallback: boolean, rec: any, raiseOnCompletedAsyncValidators: () => void): boolean;
137
140
  protected updateCellOnColumnChanged(cell: MatrixDropdownCell, name: string, newValue: any): void;
@@ -493,6 +496,7 @@ export declare class QuestionMatrixDropdownModelBase extends QuestionMatrixBaseM
493
496
  onTotalValueChanged(): any;
494
497
  getDataFilteredValues(): any;
495
498
  getParentTextProcessor(): ITextProcessor;
499
+ isMatrixReadOnly(): boolean;
496
500
  getQuestionFromArray(name: string, index: number): IQuestion;
497
501
  private isMatrixValueEmpty;
498
502
  private readonly SurveyModel: any;
@@ -12,7 +12,6 @@ export declare class QuestionRankingModel extends QuestionCheckboxModel {
12
12
  private domNode;
13
13
  private dragOrClickHelper;
14
14
  constructor(name: string);
15
- protected getDefaultItemComponent(): string;
16
15
  getType(): string;
17
16
  getItemTabIndex(item: ItemValue): number;
18
17
  protected supportContainerQueries(): boolean;
@@ -55,7 +54,7 @@ export declare class QuestionRankingModel extends QuestionCheckboxModel {
55
54
  endLoadingFromJson(): void;
56
55
  private setDragDropRankingChoices;
57
56
  protected createDragDropRankingChoices(): DragDropRankingChoices;
58
- private draggedChoise;
57
+ private draggedChoiceValue;
59
58
  private draggedTargetNode;
60
59
  handlePointerDown: (event: PointerEvent, choice: ItemValue, node: HTMLElement) => void;
61
60
  startDrag: (event: PointerEvent) => void;
@@ -88,10 +87,7 @@ export declare class QuestionRankingModel extends QuestionCheckboxModel {
88
87
  * Disable this property if you want to start dragging when users perform a scroll gesture.
89
88
  */
90
89
  longTap: boolean;
91
- /*
92
- * The name of a component used to render items.
93
- */
94
- itemContentComponent: string;
90
+ protected getDefaultItemComponent(): string;
95
91
  /*
96
92
  * Specifies whether users can select choices they want to rank.
97
93
  *
@@ -244,9 +244,14 @@ export declare class QuestionRatingModel extends Question {
244
244
  getItemClassByText(item: ItemValue, text: string): string;
245
245
  private getRenderedItemColor;
246
246
  getItemStyle(item: ItemValue, highlight?: "none" | "highlighted" | "unhighlighted"): {
247
- borderColor: string;
248
- fill: string;
249
- backgroundColor: string;
247
+ "--sd-rating-item-color"?: undefined;
248
+ "--sd-rating-item-color-light"?: undefined;
249
+ } | {
250
+ "--sd-rating-item-color": string;
251
+ "--sd-rating-item-color-light": string;
252
+ } | {
253
+ "--sd-rating-item-color": string;
254
+ "--sd-rating-item-color-light"?: undefined;
250
255
  };
251
256
  getItemClass(item: ItemValue, highlight?: "none" | "highlighted" | "unhighlighted"): string;
252
257
  getControlClass(): string;
@@ -335,11 +335,19 @@ export declare var settings: {
335
335
  */
336
336
  ratingMaximumRateValueCount: number;
337
337
  /**
338
- * Specifies whether to close the drop-down menu of a [TagBox](https://surveyjs.io/form-library/examples/how-to-create-multiselect-tag-box/) question after a user selects a value.
338
+ * Specifies whether to close the drop-down menu of a [Multi-Select Dropdown (Tag Box)](https://surveyjs.io/form-library/examples/how-to-create-multiselect-tag-box/) question after a user selects a value.
339
339
  *
340
- * This setting applies to all TagBox questions on a page. You can use the [closeOnSelect](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model#closeOnSelect) property to specify the same setting for an individual TagBox question.
340
+ * This setting applies to all Multi-Select Dropdown questions on a web page. You can use the [`closeOnSelect`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model#closeOnSelect) property to specify the same setting for an individual Multi-Select Dropdown question.
341
341
  */
342
342
  tagboxCloseOnSelect: boolean;
343
+ /**
344
+ * A time interval in milliseconds between the last entered character and the beginning of search in [Single-](https://surveyjs.io/form-library/examples/create-dropdown-menu-in-javascript/) and [Multi-Select Dropdown](https://surveyjs.io/form-library/examples/how-to-create-multiselect-tag-box/) questions. Applies only to questions with the [`choicesLazyLoadEnabled`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model#choicesLazyLoadEnabled) property set to `true`.
345
+ *
346
+ * Default value: 500
347
+ *
348
+ * [View Demo](https://surveyjs.io/form-library/examples/lazy-loading-dropdown/ (linkStyle))
349
+ */
350
+ dropdownSearchDelay: number;
343
351
  /**
344
352
  * A function that activates a browser confirm dialog.
345
353
  *
@@ -946,6 +946,7 @@ export interface DragDropAllowEvent {
946
946
  * A Boolean property that you can set to `false` if you want to cancel the drag and drop operation.
947
947
  */
948
948
  allow: boolean;
949
+ allowMultipleElementsInRow?: boolean;
949
950
  /**
950
951
  * Obsolete. Use `options.draggedElement` instead.
951
952
  */
@@ -440,7 +440,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
440
440
  */
441
441
  onUpdatePageCssClasses: EventBase<SurveyModel, UpdatePageCssClassesEvent>;
442
442
  /**
443
- * An event that is raised before rendering a choice item in Radio Button Group, Checkboxes, and Dropdown questions. Use it to override default CSS classes applied to choice items.
443
+ * An event that is raised before rendering a choice item in Radio Button Group and Checkboxes questions. Use it to override default CSS classes applied to choice items.
444
444
  *
445
445
  * For information on event handler parameters, refer to descriptions within the interface.
446
446
  *
@@ -1017,6 +1017,8 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
1017
1017
  * - `"onValueChanged"` - Triggers validation each time a question value is changed.
1018
1018
  * - `"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.
1019
1019
  *
1020
+ * > The `"onValueChanged"` doesn't work with date input fields because of the way browsers process date values. In most browsers, the value is considered changed as soon as a user starts entering the date in a text input field. This means that a user may only enter the day without having the chance to enter the month and year before validation is triggered. For this reason, date input fields are validated before the survey is switched to the next page or completed.
1021
+ *
1020
1022
  * Refer to the following help topic for more information: [Data Validation](https://surveyjs.io/form-library/documentation/data-validation).
1021
1023
  * @see validationEnabled
1022
1024
  * @see validationAllowSwitchPages
@@ -1031,6 +1033,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
1031
1033
  *
1032
1034
  * You can override this property for individual Long Text questions: [`autoGrow`](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model#autoGrow).
1033
1035
  * @see allowResizeComment
1036
+ * @see commentAreaRows
1034
1037
  */
1035
1038
  autoGrowComment: boolean;
1036
1039
  /*
@@ -1040,9 +1043,20 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
1040
1043
  *
1041
1044
  * You can override this property for individual Long Text questions: [`allowResize`](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model#allowResize).
1042
1045
  * @see autoGrowComment
1046
+ * @see commentAreaRows
1043
1047
  */
1044
1048
  allowResizeComment: boolean;
1045
1049
  /*
1050
+ * Specifies the visible height of comment areas, measured in lines. Applies to the questions with the [`showCommentArea`](https://surveyjs.io/form-library/documentation/api-reference/question#showCommentArea) or [`showOtherItem`](https://surveyjs.io/form-library/documentation/api-reference/question#showOtherItem) property enabled.
1051
+ *
1052
+ * Default value: 2
1053
+ *
1054
+ * The value of this property is passed on to the `rows` attribute of the underlying `<textarea>` element.
1055
+ * @see autoGrowComment
1056
+ * @see allowResizeComment
1057
+ */
1058
+ commentAreaRows: number;
1059
+ /*
1046
1060
  * Specifies when to update the question value in questions with a text input field.
1047
1061
  *
1048
1062
  * Possible values:
@@ -1098,6 +1112,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
1098
1112
  */
1099
1113
  locale: string;
1100
1114
  private onSurveyLocaleChanged;
1115
+ readonly localeDir: string;
1101
1116
  /**
1102
1117
  * Returns an array of locales whose translations are used in the survey.
1103
1118
  *
@@ -7,6 +7,9 @@ export declare var surveyLocalization: {
7
7
  localeNames: {
8
8
  [index: string]: any;
9
9
  };
10
+ localeDirections: {
11
+ [index: string]: any;
12
+ };
10
13
  supportedLocales: any[];
11
14
  currentLocale: string;
12
15
  defaultLocale: string;
@@ -6,3 +6,7 @@ export declare var mouseInfo: {
6
6
  };
7
7
  export declare let IsTouch: boolean;
8
8
  export declare function _setIsTouch(val: boolean): void;
9
+ export declare type MatchMediaMethod = ((query: string) => {
10
+ matches: boolean;
11
+ } | null) | null;
12
+ export declare function detectMouseSupport(matchMedia: MatchMediaMethod): boolean;
@@ -211,6 +211,7 @@ export declare abstract class BaseAction extends Base implements IAction {
211
211
  get disabled(): boolean;
212
212
  get canShrink(): boolean;
213
213
  get hasTitle(): boolean;
214
+ get hasSubItems(): boolean;
214
215
  getActionBarItemTitleCss(): string;
215
216
  getActionBarItemCss(): string;
216
217
  getActionRootCss(): string;
@@ -243,7 +244,7 @@ export declare class Action extends BaseAction implements IAction, ILocalizableO
243
244
  private raiseUpdate;
244
245
  constructor(innerItem: IAction);
245
246
  private createLocTitle;
246
- setItems(items: Array<IAction>, onSelectionChanged?: (item: Action, ...params: any[]) => void): void;
247
+ setSubItems(options: IListModel): void;
247
248
  location?: string;
248
249
  id: string;
249
250
  private _visible;
@@ -72,6 +72,7 @@ export interface ISurvey extends ITextProcessor, ISurveyErrorOwner {
72
72
  isUpdateValueTextOnTyping: boolean;
73
73
  autoGrowComment: boolean;
74
74
  allowResizeComment: boolean;
75
+ commentAreaRows: number;
75
76
  state: string;
76
77
  isLazyRendering: boolean;
77
78
  lazyRenderingFirstBatchSize: number;
@@ -1,5 +1,6 @@
1
1
  export declare var modernCss: {
2
2
  root: string;
3
+ rootProgress: string;
3
4
  timerRoot: string;
4
5
  container: string;
5
6
  header: string;
@@ -1,5 +1,6 @@
1
1
  export declare var defaultStandardCss: {
2
2
  root: string;
3
+ rootProgress: string;
3
4
  container: string;
4
5
  header: string;
5
6
  bodyContainer: string;
@@ -1,6 +1,7 @@
1
1
  export declare var surveyCss: any;
2
2
  export declare var defaultV2Css: {
3
3
  root: string;
4
+ rootProgress: string;
4
5
  rootMobile: string;
5
6
  rootAnimationDisabled: string;
6
7
  rootReadOnly: string;
@@ -5,6 +5,7 @@ export declare class DragDropChoices extends DragDropCore<QuestionSelectBase> {
5
5
  private imagepickerControlsNode;
6
6
  protected get draggedElementType(): string;
7
7
  protected createDraggedElementShortcut(text: string, draggedElementNode: HTMLElement, event: PointerEvent): HTMLElement;
8
+ onShortcutCreated: (node: HTMLElement) => void;
8
9
  private createImagePickerShortcut;
9
10
  protected getDropTargetByDataAttributeValue(dataAttributeValue: string): ItemValue;
10
11
  private getVisibleChoices;
@@ -12,7 +12,7 @@ export declare class DragDropRankingChoices extends DragDropChoices {
12
12
  protected isDropTargetValid(dropTarget: ItemValue, dropTargetNode?: HTMLElement): boolean;
13
13
  protected calculateIsBottom(clientY: number, dropTargetNode?: HTMLElement): boolean;
14
14
  protected doDragOver: () => any;
15
- getIndixies(model: any, fromChoicesArray: Array<ItemValue>, toChoicesArray: Array<ItemValue>): {
15
+ getIndices(model: any, fromChoicesArray: Array<ItemValue>, toChoicesArray: Array<ItemValue>): {
16
16
  fromIndex: number;
17
17
  toIndex: number;
18
18
  };
@@ -9,6 +9,7 @@ export declare class DropdownListModel extends Base {
9
9
  protected onSelectionChanged?: (item: IAction, ...params: any[]) => void;
10
10
  readonly minPageSize = 25;
11
11
  readonly loadingItemHeight = 40;
12
+ timer: any;
12
13
  private htmlCleanerElement;
13
14
  private _markdownMode;
14
15
  private _popupModel;
@@ -25,6 +26,7 @@ export declare class DropdownListModel extends Base {
25
26
  protected listModelFilterStringChanged: (newValue: string) => void;
26
27
  private resetItemsSettings;
27
28
  private setItems;
29
+ private loadQuestionChoices;
28
30
  private updateQuestionChoices;
29
31
  private updatePopupFocusFirstInputSelector;
30
32
  protected createPopup(): void;
@@ -11,6 +11,9 @@ export declare class DomWindowHelper {
11
11
  static requestAnimationFrame(callback: FrameRequestCallback): number;
12
12
  static addEventListener(type: string, listener: (e?: any) => void): void;
13
13
  static removeEventListener(type: string, listener: (e?: any) => void): void;
14
+ static matchMedia(mediaQueryString: string): {
15
+ matches: boolean;
16
+ } | null;
14
17
  }
15
18
  export declare class DomDocumentHelper {
16
19
  static isAvailable(): boolean;
package/typings/list.d.ts CHANGED
@@ -7,6 +7,7 @@ export declare let defaultListCss: {
7
7
  searchClearButtonIcon: string;
8
8
  loadingIndicator: string;
9
9
  itemSelected: string;
10
+ itemGroup: string;
10
11
  itemWithIcon: string;
11
12
  itemDisabled: string;
12
13
  itemFocused: string;
@@ -77,6 +78,7 @@ export declare class ListModel<T extends BaseAction = Action> extends ActionCont
77
78
  searchClearButtonIcon: string;
78
79
  loadingIndicator: string;
79
80
  itemSelected: string;
81
+ itemGroup: string;
80
82
  itemWithIcon: string;
81
83
  itemDisabled: string;
82
84
  itemFocused: string;
@@ -82,6 +82,7 @@ export declare class QuestionMatrixBaseModel<TRow, TColumn> extends Question {
82
82
  protected onColumnsChanged(): void;
83
83
  protected onRowsChanged(): void;
84
84
  protected updateVisibilityBasedOnRows(): void;
85
+ protected isVisibleCore(): boolean;
85
86
  protected shouldRunColumnExpression(): boolean;
86
87
  protected hasRowsAsItems(): boolean;
87
88
  protected runItemsCondition(values: HashTable<any>, properties: HashTable<any>): boolean;
@@ -1,4 +1,5 @@
1
1
  import { Base } from "../base";
2
+ import { ISurvey } from "../base-interfaces";
2
3
  import { IInputMask, IMaskedInputResult, ITextInputParams } from "./mask_utils";
3
4
  /**
4
5
  * A base class for classes that implement input masks:
@@ -15,6 +16,8 @@ export declare class InputMaskBase extends Base implements IInputMask {
15
16
  * Default value: `false`
16
17
  */
17
18
  saveMaskedValue: boolean;
19
+ owner: ISurvey;
20
+ getSurvey(live?: boolean): ISurvey;
18
21
  getType(): string;
19
22
  setData(json: any): void;
20
23
  getData(): any;
@@ -78,6 +78,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
78
78
  showTitle: boolean;
79
79
  get hasTitle(): boolean;
80
80
  delete(doDispose?: boolean): void;
81
+ private deletePanel;
81
82
  protected removeFromParent(): void;
82
83
  protected canShowTitle(): boolean;
83
84
  showDescription: boolean;
@@ -289,6 +290,8 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
289
290
  get questionTitleLocation(): string;
290
291
  set questionTitleLocation(value: string);
291
292
  getQuestionTitleLocation(): string;
293
+ availableQuestionTitleWidth(): boolean;
294
+ hasElementWithTitleLocationLeft(): boolean;
292
295
  /**
293
296
  * Sets consistent width for question titles in CSS values. Applies only when [`questionTitleLocation`](#questionTitleLocation) evaluates to `"left"`.
294
297
  *
@@ -317,6 +320,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
317
320
  private updateRowsOnElementAdded;
318
321
  protected onAddElement(element: IElement, index: number): void;
319
322
  protected onRemoveElement(element: IElement): void;
323
+ private onRemoveElementNotifySurvey;
320
324
  private onElementVisibilityChanged;
321
325
  private onElementStartWithNewLineChanged;
322
326
  private updateRowsVisibility;
@@ -490,6 +490,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
490
490
  set hasOther(val: boolean);
491
491
  protected hasOtherChanged(): void;
492
492
  get requireUpdateCommentValue(): boolean;
493
+ readOnlyCallback: () => boolean;
493
494
  get isReadOnly(): boolean;
494
495
  get isInputReadOnly(): boolean;
495
496
  get renderedInputReadOnly(): string;
@@ -527,6 +528,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
527
528
  protected initDataFromSurvey(): void;
528
529
  protected initCommentFromSurvey(): void;
529
530
  protected runExpression(expression: string): any;
531
+ get commentAreaRows(): number;
530
532
  private get autoGrowComment();
531
533
  private get allowResizeComment();
532
534
  private get questionValue();
@@ -727,6 +729,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
727
729
  protected isValueExpression(val: any): boolean;
728
730
  protected setValueAndRunExpression(runner: ExpressionRunner, defaultValue: any, setFunc: (val: any) => void, values?: HashTable<any>, properties?: HashTable<any>): void;
729
731
  protected convertFuncValuetoQuestionValue(val: any): any;
732
+ private runExpressionSetValueCore;
730
733
  private runExpressionSetValue;
731
734
  private runDefaultValueExpression;
732
735
  /**
@@ -788,7 +791,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
788
791
  protected canRunValidators(isOnValueChanged: boolean): boolean;
789
792
  private fireSurveyValidation;
790
793
  protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
791
- protected hasRequiredError(): boolean;
794
+ hasRequiredError(): boolean;
792
795
  private validatorRunner;
793
796
  private isRunningValidatorsValue;
794
797
  onCompletedAsyncValidators: (hasErrors: boolean) => void;