survey-core 1.11.6 → 1.11.8

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 (255) hide show
  1. package/defaultV2.css +11 -6
  2. package/defaultV2.css.map +1 -1
  3. package/defaultV2.fontless.css +11 -6
  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 +1 -1
  24. package/i18n/english.min.js +1 -1
  25. package/i18n/estonian.js +1 -1
  26. package/i18n/estonian.min.js +1 -1
  27. package/i18n/finnish.js +1 -1
  28. package/i18n/finnish.min.js +1 -1
  29. package/i18n/french.js +1 -1
  30. package/i18n/french.min.js +1 -1
  31. package/i18n/georgian.js +1 -1
  32. package/i18n/georgian.min.js +1 -1
  33. package/i18n/german.js +1 -1
  34. package/i18n/german.min.js +1 -1
  35. package/i18n/greek.js +1 -1
  36. package/i18n/greek.min.js +1 -1
  37. package/i18n/hebrew.js +1 -1
  38. package/i18n/hebrew.min.js +1 -1
  39. package/i18n/hindi.js +1 -1
  40. package/i18n/hindi.min.js +1 -1
  41. package/i18n/hungarian.js +1 -1
  42. package/i18n/hungarian.min.js +1 -1
  43. package/i18n/icelandic.js +1 -1
  44. package/i18n/icelandic.min.js +1 -1
  45. package/i18n/index.js +1 -1
  46. package/i18n/index.min.js +1 -1
  47. package/i18n/indonesian.js +1 -1
  48. package/i18n/indonesian.min.js +1 -1
  49. package/i18n/italian.js +1 -1
  50. package/i18n/italian.min.js +1 -1
  51. package/i18n/japanese.js +1 -1
  52. package/i18n/japanese.min.js +1 -1
  53. package/i18n/kazakh.js +1 -1
  54. package/i18n/kazakh.min.js +1 -1
  55. package/i18n/korean.js +1 -1
  56. package/i18n/korean.min.js +1 -1
  57. package/i18n/latvian.js +1 -1
  58. package/i18n/latvian.min.js +1 -1
  59. package/i18n/lithuanian.js +1 -1
  60. package/i18n/lithuanian.min.js +1 -1
  61. package/i18n/macedonian.js +1 -1
  62. package/i18n/macedonian.min.js +1 -1
  63. package/i18n/malay.js +1 -1
  64. package/i18n/malay.min.js +1 -1
  65. package/i18n/nl-BE.js +1 -1
  66. package/i18n/nl-BE.min.js +1 -1
  67. package/i18n/norwegian.js +1 -1
  68. package/i18n/norwegian.min.js +1 -1
  69. package/i18n/persian.js +1 -1
  70. package/i18n/persian.min.js +1 -1
  71. package/i18n/philippines.js +1 -1
  72. package/i18n/philippines.min.js +1 -1
  73. package/i18n/polish.js +1 -1
  74. package/i18n/polish.min.js +1 -1
  75. package/i18n/portuguese-br.js +1 -1
  76. package/i18n/portuguese-br.min.js +1 -1
  77. package/i18n/portuguese.js +1 -1
  78. package/i18n/portuguese.min.js +1 -1
  79. package/i18n/romanian.js +1 -1
  80. package/i18n/romanian.min.js +1 -1
  81. package/i18n/russian.js +1 -1
  82. package/i18n/russian.min.js +1 -1
  83. package/i18n/serbian.js +1 -1
  84. package/i18n/serbian.min.js +1 -1
  85. package/i18n/simplified-chinese.js +1 -1
  86. package/i18n/simplified-chinese.min.js +1 -1
  87. package/i18n/slovak.js +1 -1
  88. package/i18n/slovak.min.js +1 -1
  89. package/i18n/spanish.js +1 -1
  90. package/i18n/spanish.min.js +1 -1
  91. package/i18n/swahili.js +1 -1
  92. package/i18n/swahili.min.js +1 -1
  93. package/i18n/swedish.js +1 -1
  94. package/i18n/swedish.min.js +1 -1
  95. package/i18n/tajik.js +1 -1
  96. package/i18n/tajik.min.js +1 -1
  97. package/i18n/telugu.js +1 -1
  98. package/i18n/telugu.min.js +1 -1
  99. package/i18n/thai.js +1 -1
  100. package/i18n/thai.min.js +1 -1
  101. package/i18n/traditional-chinese.js +1 -1
  102. package/i18n/traditional-chinese.min.js +1 -1
  103. package/i18n/turkish.js +1 -1
  104. package/i18n/turkish.min.js +1 -1
  105. package/i18n/ukrainian.js +1 -1
  106. package/i18n/ukrainian.min.js +1 -1
  107. package/i18n/urdu.js +1 -1
  108. package/i18n/urdu.min.js +1 -1
  109. package/i18n/vietnamese.js +1 -1
  110. package/i18n/vietnamese.min.js +1 -1
  111. package/i18n/welsh.js +1 -1
  112. package/i18n/welsh.min.js +1 -1
  113. package/modern.css +6 -6
  114. package/modern.css.map +1 -1
  115. package/modern.fontless.css +6 -6
  116. package/modern.fontless.css.map +1 -1
  117. package/modern.fontless.min.css +2 -2
  118. package/modern.min.css +2 -2
  119. package/package.json +1 -1
  120. package/plugins/bootstrap-integration.js +1 -1
  121. package/plugins/bootstrap-integration.min.js +1 -1
  122. package/plugins/bootstrap-material-integration.js +1 -1
  123. package/plugins/bootstrap-material-integration.min.js +1 -1
  124. package/survey.core.js +574 -127
  125. package/survey.core.js.map +1 -1
  126. package/survey.core.min.js +3 -3
  127. package/survey.css +6 -6
  128. package/survey.css.map +1 -1
  129. package/survey.i18n.js +1 -1
  130. package/survey.i18n.min.js +1 -1
  131. package/survey.min.css +2 -2
  132. package/themes/borderless-dark-panelless.js +1 -1
  133. package/themes/borderless-dark-panelless.min.js +1 -1
  134. package/themes/borderless-dark.js +1 -1
  135. package/themes/borderless-dark.min.js +1 -1
  136. package/themes/borderless-light-panelless..js +1 -1
  137. package/themes/borderless-light-panelless..min.js +1 -1
  138. package/themes/borderless-light.js +1 -1
  139. package/themes/borderless-light.min.js +1 -1
  140. package/themes/contrast-dark-panelless.js +1 -1
  141. package/themes/contrast-dark-panelless.min.js +1 -1
  142. package/themes/contrast-dark.js +1 -1
  143. package/themes/contrast-dark.min.js +1 -1
  144. package/themes/contrast-light-panelless.js +1 -1
  145. package/themes/contrast-light-panelless.min.js +1 -1
  146. package/themes/contrast-light.js +1 -1
  147. package/themes/contrast-light.min.js +1 -1
  148. package/themes/default-dark-panelless.js +1 -1
  149. package/themes/default-dark-panelless.min.js +1 -1
  150. package/themes/default-dark.js +1 -1
  151. package/themes/default-dark.min.js +1 -1
  152. package/themes/default-light-panelless.js +1 -1
  153. package/themes/default-light-panelless.min.js +1 -1
  154. package/themes/default-light.js +1 -1
  155. package/themes/default-light.min.js +1 -1
  156. package/themes/doubleborder-dark-panelless.js +1 -1
  157. package/themes/doubleborder-dark-panelless.min.js +1 -1
  158. package/themes/doubleborder-dark.js +1 -1
  159. package/themes/doubleborder-dark.min.js +1 -1
  160. package/themes/doubleborder-light-panelles.js +1 -1
  161. package/themes/doubleborder-light-panelles.min.js +1 -1
  162. package/themes/doubleborder-light.js +1 -1
  163. package/themes/doubleborder-light.min.js +1 -1
  164. package/themes/flat-dark-panelless.js +1 -1
  165. package/themes/flat-dark-panelless.min.js +1 -1
  166. package/themes/flat-dark.js +1 -1
  167. package/themes/flat-dark.min.js +1 -1
  168. package/themes/flat-light-panelless.js +1 -1
  169. package/themes/flat-light-panelless.min.js +1 -1
  170. package/themes/flat-light.js +1 -1
  171. package/themes/flat-light.min.js +1 -1
  172. package/themes/index.js +1 -1
  173. package/themes/index.min.js +1 -1
  174. package/themes/layered-dark-panelless.js +1 -1
  175. package/themes/layered-dark-panelless.min.js +1 -1
  176. package/themes/layered-dark.js +1 -1
  177. package/themes/layered-dark.min.js +1 -1
  178. package/themes/layered-light-panelless.js +1 -1
  179. package/themes/layered-light-panelless.min.js +1 -1
  180. package/themes/layered-light.js +1 -1
  181. package/themes/layered-light.min.js +1 -1
  182. package/themes/plain-dark-panelless.js +1 -1
  183. package/themes/plain-dark-panelless.min.js +1 -1
  184. package/themes/plain-dark.js +1 -1
  185. package/themes/plain-dark.min.js +1 -1
  186. package/themes/plain-light-panelless.js +1 -1
  187. package/themes/plain-light-panelless.min.js +1 -1
  188. package/themes/plain-light.js +1 -1
  189. package/themes/plain-light.min.js +1 -1
  190. package/themes/sharp-dark-panelless.js +1 -1
  191. package/themes/sharp-dark-panelless.min.js +1 -1
  192. package/themes/sharp-dark.js +1 -1
  193. package/themes/sharp-dark.min.js +1 -1
  194. package/themes/sharp-light-panelless.js +1 -1
  195. package/themes/sharp-light-panelless.min.js +1 -1
  196. package/themes/sharp-light.js +1 -1
  197. package/themes/sharp-light.min.js +1 -1
  198. package/themes/solid-dark-panelless.js +1 -1
  199. package/themes/solid-dark-panelless.min.js +1 -1
  200. package/themes/solid-dark.js +1 -1
  201. package/themes/solid-dark.min.js +1 -1
  202. package/themes/solid-light-panelless.js +1 -1
  203. package/themes/solid-light-panelless.min.js +1 -1
  204. package/themes/solid-light.js +1 -1
  205. package/themes/solid-light.min.js +1 -1
  206. package/themes/three-dimensional-dark-panelless.js +1 -1
  207. package/themes/three-dimensional-dark-panelless.min.js +1 -1
  208. package/themes/three-dimensional-dark.js +1 -1
  209. package/themes/three-dimensional-dark.min.js +1 -1
  210. package/themes/three-dimensional-light-panelless.js +1 -1
  211. package/themes/three-dimensional-light-panelless.min.js +1 -1
  212. package/themes/three-dimensional-light.js +1 -1
  213. package/themes/three-dimensional-light.min.js +1 -1
  214. package/ts3.4/typings/base-interfaces.d.ts +8 -0
  215. package/ts3.4/typings/dropdownListModel.d.ts +1 -1
  216. package/ts3.4/typings/jsonobject.d.ts +1 -1
  217. package/ts3.4/typings/mask/input_element_adapter.d.ts +1 -0
  218. package/ts3.4/typings/page.d.ts +1 -0
  219. package/ts3.4/typings/panel-layout-column.d.ts +9 -0
  220. package/ts3.4/typings/panel.d.ts +16 -0
  221. package/ts3.4/typings/question.d.ts +5 -1
  222. package/ts3.4/typings/question_comment.d.ts +3 -3
  223. package/ts3.4/typings/question_custom.d.ts +4 -0
  224. package/ts3.4/typings/question_dropdown.d.ts +1 -1
  225. package/ts3.4/typings/question_matrixdropdownbase.d.ts +1 -0
  226. package/ts3.4/typings/question_multipletext.d.ts +4 -0
  227. package/ts3.4/typings/question_rating.d.ts +0 -1
  228. package/ts3.4/typings/question_tagbox.d.ts +0 -1
  229. package/ts3.4/typings/question_text.d.ts +4 -0
  230. package/ts3.4/typings/settings.d.ts +30 -0
  231. package/ts3.4/typings/survey-element.d.ts +4 -3
  232. package/ts3.4/typings/survey.d.ts +2 -1
  233. package/ts3.4/typings/surveytimer.d.ts +9 -4
  234. package/ts3.4/typings/utils/utils.d.ts +1 -0
  235. package/typings/base-interfaces.d.ts +8 -0
  236. package/typings/dropdownListModel.d.ts +1 -1
  237. package/typings/jsonobject.d.ts +1 -1
  238. package/typings/mask/input_element_adapter.d.ts +1 -0
  239. package/typings/page.d.ts +1 -0
  240. package/typings/panel-layout-column.d.ts +9 -0
  241. package/typings/panel.d.ts +16 -0
  242. package/typings/question.d.ts +5 -1
  243. package/typings/question_comment.d.ts +5 -5
  244. package/typings/question_custom.d.ts +4 -0
  245. package/typings/question_dropdown.d.ts +1 -1
  246. package/typings/question_matrixdropdownbase.d.ts +1 -0
  247. package/typings/question_multipletext.d.ts +4 -0
  248. package/typings/question_rating.d.ts +0 -1
  249. package/typings/question_tagbox.d.ts +0 -1
  250. package/typings/question_text.d.ts +4 -0
  251. package/typings/settings.d.ts +30 -0
  252. package/typings/survey-element.d.ts +5 -3
  253. package/typings/survey.d.ts +2 -1
  254. package/typings/surveytimer.d.ts +9 -4
  255. package/typings/utils/utils.d.ts +1 -0
@@ -9,7 +9,7 @@ export interface IPropertyDecoratorOptions<T = any> {
9
9
  onGetTextCallback?: (str: string) => string;
10
10
  defaultStr?: string;
11
11
  } | boolean;
12
- onSet?: (val: T, objectInstance: any) => void;
12
+ onSet?: (val: T, objectInstance: any, prevVal?: T) => void;
13
13
  }
14
14
  export declare function property(options?: IPropertyDecoratorOptions): (target: any, key: string) => void;
15
15
  export interface IArrayPropertyDecoratorOptions {
@@ -8,6 +8,7 @@ export declare class InputElementAdapter {
8
8
  inputMaskInstancePropertyChangedHandler: (sender: any, options: any) => void;
9
9
  clickHandler: (event: any) => void;
10
10
  beforeInputHandler: (event: any) => void;
11
+ changeHandler: (event: any) => void;
11
12
  createArgs(event: any): ITextInputParams;
12
13
  addInputEventListener(): void;
13
14
  removeInputEventListener(): void;
@@ -90,6 +90,7 @@ export declare class PageModel extends PanelModelBase implements IPage {
90
90
  * @see timeSpent
91
91
  */
92
92
  maxTimeToFinish: number;
93
+ getMaxTimeToFinish(): number;
93
94
  protected onNumChanged(value: number): void;
94
95
  protected onVisibleChanged(): void;
95
96
  getDragDropInfo(): any;
@@ -0,0 +1,9 @@
1
+ import { Base } from "./base";
2
+ export declare class PanelLayoutColumnModel extends Base {
3
+ width: number;
4
+ effectiveWidth: number;
5
+ questionTitleWidth: string;
6
+ constructor(width?: number, questionTitleWidth?: string);
7
+ getType(): string;
8
+ isEmpty(): boolean;
9
+ }
@@ -10,6 +10,7 @@ import { IAction } from "./actions/action";
10
10
  import { ActionContainer } from "./actions/container";
11
11
  import { DragDropInfo } from "./drag-drop-helper-v1";
12
12
  import { AnimationGroup } from "./utils/animation";
13
+ import { PanelLayoutColumnModel } from "./panel-layout-column";
13
14
  export declare class QuestionRowModel extends Base {
14
15
  panel: PanelModelBase;
15
16
  private static rowCounter;
@@ -57,6 +58,9 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
57
58
  private elementsValue;
58
59
  private isQuestionsReady;
59
60
  private questionsValue;
61
+ private _columns;
62
+ private _columnsReady;
63
+ layoutColumns: Array<PanelLayoutColumnModel>;
60
64
  addElementCallback: (element: IElement) => void;
61
65
  removeElementCallback: (element: IElement) => void;
62
66
  onGetQuestionTitleLocation: () => string;
@@ -237,6 +241,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
237
241
  */
238
242
  validate(fireCallback?: boolean, focusOnFirstError?: boolean, rec?: any): boolean;
239
243
  validateContainerOnly(): void;
244
+ onQuestionValueChanged(el: IElement): void;
240
245
  private hasErrorsInPanels;
241
246
  getErrorCustomText(text: string, error: SurveyError): string;
242
247
  private hasRequiredError;
@@ -259,6 +264,11 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
259
264
  addPanelsIntoList(list: Array<IPanel>, visibleOnly?: boolean, includingDesignTime?: boolean): void;
260
265
  private addElementsToList;
261
266
  private addElementsToListCore;
267
+ private calcMaxRowColSpan;
268
+ private updateColumnWidth;
269
+ private onColumnPropertyValueChangedCallback;
270
+ updateColumns(): void;
271
+ updateRootStyle(): void;
262
272
  updateCustomWidgets(): void;
263
273
  /*
264
274
  * Sets a title location relative to the input field for questions that belong to this panel/page.
@@ -287,6 +297,9 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
287
297
  */
288
298
  questionTitleWidth: string;
289
299
  getQuestionTitleWidth(): string;
300
+ readonly columns: Array<PanelLayoutColumnModel>;
301
+ protected generateColumns(): void;
302
+ getColumsForElement(el: IElement): Array<PanelLayoutColumnModel>;
290
303
  protected getStartIndex(): string;
291
304
  getQuestionStartIndex(): string;
292
305
  getChildrenLayoutType(): string;
@@ -434,6 +447,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
434
447
  readonly no: string;
435
448
  readonly cssError: string;
436
449
  protected getCssError(cssClasses: any): string;
450
+ getSerializableColumnsValue(): Array<PanelLayoutColumnModel>;
437
451
  dispose(): void;
438
452
  }
439
453
  /**
@@ -448,6 +462,8 @@ export declare class PanelModel extends PanelModelBase implements IElement {
448
462
  getType(): string;
449
463
  readonly contentId: string;
450
464
  getSurvey(live?: boolean): ISurvey;
465
+ readonly hasTextInTitle: boolean;
466
+ private calcHasTextInTitle;
451
467
  onSurveyLoad(): void;
452
468
  protected onSetData(): void;
453
469
  readonly isPanel: boolean;
@@ -83,6 +83,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
83
83
  themeChanged(theme: ITheme): void;
84
84
  isMobile: boolean;
85
85
  forceIsInputReadOnly: boolean;
86
+ ariaExpanded: "true" | "false";
86
87
  constructor(name: string);
87
88
  protected getDefaultTitle(): string;
88
89
  protected createLocTitleProperty(): LocalizableString;
@@ -267,6 +268,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
267
268
  private notifySurveyVisibilityChanged;
268
269
  protected clearValueOnHidding(isClearOnHidden: boolean): void;
269
270
  readonly titleWidth: string;
271
+ getPercentQuestionTitleWidth(): number;
270
272
  /**
271
273
  * Returns title location calculated based on the question's `titleLocation` property and the `questionTitleLocation` property of the question's containers (survey, page, or panel).
272
274
  * @see titleLocation
@@ -414,6 +416,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
414
416
  */
415
417
  focus(onError?: boolean, scrollIfVisible?: boolean): void;
416
418
  private focuscore;
419
+ focusInputElement(onError: boolean): void;
417
420
  expandAllParents(): void;
418
421
  private expandAllParentsCore;
419
422
  focusIn(): void;
@@ -546,6 +549,8 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
546
549
  getFilteredValue(): any;
547
550
  getFilteredName(): any;
548
551
  readonly valueForSurvey: any;
552
+ protected valueForSurveyCore(val: any): any;
553
+ protected valueFromDataCore(val: any): any;
549
554
  /**
550
555
  * Sets the question's `value` and `comment` properties to `undefined`.
551
556
  * @see value
@@ -861,7 +866,6 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
861
866
  readonly ariaInvalid: "true" | "false";
862
867
  readonly ariaLabelledBy: string;
863
868
  readonly ariaDescribedBy: string;
864
- readonly ariaExpanded: string;
865
869
  readonly ariaErrormessage: string;
866
870
  readonly a11y_input_ariaRole: string;
867
871
  readonly a11y_input_ariaRequired: "true" | "false";
@@ -25,14 +25,14 @@ export declare class QuestionCommentModel extends QuestionTextBase {
25
25
  * Default value: `false` (inherited from `SurveyModel`'s [`autoGrowComment`](https://surveyjs.io/form-library/documentation/surveymodel#autoGrowComment) property)
26
26
  * @see allowResize
27
27
  */
28
- autoGrow: boolean;
28
+ autoGrow: boolean | undefined;
29
+ readonly renderedAutoGrow: boolean;
29
30
  /*
30
- * Specifies whether to display a resize handle for the comment area.
31
31
  *
32
32
  * Default value: `true` (inherited from `SurveyModel`'s [`allowResizeComment`](https://surveyjs.io/form-library/documentation/surveymodel#allowResizeComment) property)
33
33
  * @see autoGrow
34
34
  */
35
- allowResize: boolean;
35
+ allowResize: boolean | undefined;
36
36
  readonly renderedAllowResize: boolean;
37
37
  readonly resizeStyle: "none" | "both";
38
38
  getType(): string;
@@ -4,6 +4,7 @@ import { Base } from "./base";
4
4
  import { ISurveyImpl, ISurveyData, ITextProcessor, IPanel, IElement, IQuestion, IProgressInfo } from "./base-interfaces";
5
5
  import { SurveyElement } from "./survey-element";
6
6
  import { PanelModel } from "./panel";
7
+ import { PanelLayoutColumnModel } from "./panel-layout-column";
7
8
  import { HashTable } from "./helpers";
8
9
  import { ItemValue } from "./itemvalue";
9
10
  import { SurveyError } from "./survey-error";
@@ -343,6 +344,8 @@ export declare abstract class QuestionCustomModelBase extends Question implement
343
344
  removeElement(element: IElement): boolean;
344
345
  getQuestionTitleLocation(): string;
345
346
  getQuestionTitleWidth(): string;
347
+ getColumsForElement(el: IElement): Array<PanelLayoutColumnModel>;
348
+ updateColumns(): void;
346
349
  getQuestionStartIndex(): string;
347
350
  getChildrenLayoutType(): string;
348
351
  elementWidthChanged(el: IElement): void;
@@ -350,6 +353,7 @@ export declare abstract class QuestionCustomModelBase extends Question implement
350
353
  indexOf(el: IElement): number;
351
354
  ensureRowsVisibility(): void;
352
355
  validateContainerOnly(): void;
356
+ onQuestionValueChanged(el: IElement): void;
353
357
  getQuestionErrorLocation(): string;
354
358
  protected getContentDisplayValueCore(keyAsText: boolean, value: any, question: Question): any;
355
359
  }
@@ -124,7 +124,6 @@ export declare class QuestionDropdownModel extends QuestionSelectBase {
124
124
  private readonly selectedItemText: any;
125
125
  dropdownListModel: DropdownListModel;
126
126
  readonly popupModel: PopupModel;
127
- readonly ariaExpanded: string;
128
127
  onOpened: EventBase<QuestionDropdownModel>;
129
128
  onOpenedCallBack(): void;
130
129
  protected onSelectedItemValuesChangedHandler(newValue: any): void;
@@ -135,6 +134,7 @@ export declare class QuestionDropdownModel extends QuestionSelectBase {
135
134
  protected getFirstInputElementId(): string;
136
135
  getInputId(): string;
137
136
  clearValue(keepComment?: boolean): void;
137
+ afterRenderCore(el: any): void;
138
138
  onClick(e: any): void;
139
139
  onKeyUp(event: any): void;
140
140
  dispose(): void;
@@ -315,6 +315,7 @@ export declare class QuestionMatrixDropdownModelBase extends QuestionMatrixBaseM
315
315
  * Default value: `"dropdown"` (inherited from [`settings.matrix.defaultCellType`](https://surveyjs.io/form-library/documentation/settings#matrixDefaultCellType))
316
316
  */
317
317
  cellType: string;
318
+ isSelectCellType(): boolean;
318
319
  private updateColumnsCellType;
319
320
  private updateColumnsIndexes;
320
321
  /*
@@ -7,6 +7,7 @@ import { SurveyError } from "./survey-error";
7
7
  import { ILocalizableOwner, LocalizableString } from "./localizablestring";
8
8
  import { HashTable } from "./helpers";
9
9
  import { InputMaskBase } from "./mask/mask_base";
10
+ import { PanelLayoutColumnModel } from "./panel-layout-column";
10
11
  export interface IMultipleTextData extends ILocalizableOwner, IPanel {
11
12
  getSurvey(): ISurvey;
12
13
  getTextProcessor(): ITextProcessor;
@@ -283,6 +284,8 @@ export declare class QuestionMultipleTextModel extends Question implements IMult
283
284
  removeElement(element: IElement): boolean;
284
285
  getQuestionTitleLocation(): string;
285
286
  getQuestionTitleWidth(): string;
287
+ getColumsForElement(el: IElement): Array<PanelLayoutColumnModel>;
288
+ updateColumns(): void;
286
289
  getQuestionStartIndex(): string;
287
290
  getChildrenLayoutType(): string;
288
291
  elementWidthChanged(el: IElement): void;
@@ -290,6 +293,7 @@ export declare class QuestionMultipleTextModel extends Question implements IMult
290
293
  indexOf(el: IElement): number;
291
294
  ensureRowsVisibility(): void;
292
295
  validateContainerOnly(): void;
296
+ onQuestionValueChanged(el: IElement): void;
293
297
  getItemLabelCss(item: MultipleTextItemModel): string;
294
298
  getItemCss(): string;
295
299
  getItemTitleCss(): string;
@@ -268,7 +268,6 @@ export declare class QuestionRatingModel extends Question {
268
268
  protected onBeforeSetCompactRenderer(): void;
269
269
  protected getCompactRenderAs(): string;
270
270
  protected getDesktopRenderAs(): string;
271
- readonly ariaExpanded: string;
272
271
  private dropdownListModelValue;
273
272
  dropdownListModel: DropdownListModel;
274
273
  protected updateCssClasses(res: any, css: any): void;
@@ -70,7 +70,6 @@ export declare class QuestionTagboxModel extends QuestionCheckboxModel {
70
70
  getType(): string;
71
71
  readonly ariaRole: string;
72
72
  readonly popupModel: PopupModel;
73
- readonly ariaExpanded: string;
74
73
  getControlClass(): string;
75
74
  onOpened: EventBase<QuestionTagboxModel>;
76
75
  onOpenedCallBack(): void;
@@ -127,6 +127,9 @@ export declare class QuestionTextModel extends QuestionTextBase {
127
127
  inputValue: string;
128
128
  protected onChangeQuestionValue(newValue: any): void;
129
129
  private updateInputValue;
130
+ private hasToConvertToUTC;
131
+ protected valueForSurveyCore(val: any): any;
132
+ protected valueFromDataCore(val: any): any;
130
133
  protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
131
134
  protected canSetValueToSurvey(): boolean;
132
135
  protected convertFuncValuetoQuestionValue(val: any): any;
@@ -134,6 +137,7 @@ export declare class QuestionTextModel extends QuestionTextBase {
134
137
  private readonly isValueLessMin: any;
135
138
  private readonly isValueGreaterMax: any;
136
139
  private readonly isDateInputType: any;
140
+ private isDateTimeLocaleType;
137
141
  private getCalculatedMinMax;
138
142
  private setRenderedMinMax;
139
143
  /*
@@ -588,4 +588,34 @@ export declare var settings: {
588
588
  [key: string]: RegExp;
589
589
  };
590
590
  };
591
+ /**
592
+ * Specifies whether to store date-time values in the following format: `"YYYY-MM-DDThh:mm:ss.sssZ"`. Applies only to form fields with [`inputType`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model#inputType) set to `"datetime-local"`.
593
+ *
594
+ * Default value: `false`
595
+ *
596
+ * If you enable this setting, date-time values are converted from local time to UTC when they are saved to the survey's [`data`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#data) object, while the question values remain in local time. Therefore, when you specify default values using a question's [`defaultValue`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model#defaultValue) property, you need to use local time, but if you specify them using the `data` object, use a UTC date-time value in the following format: `"YYYY-MM-DDThh:mm:ss.sssZ"`.
597
+ *
598
+ * ```js
599
+ * const surveyJson = {
600
+ * "elements": [{
601
+ * "name": "datetime",
602
+ * "type": "text",
603
+ * "title": "Select a date and time",
604
+ * "inputType": "datetime-local",
605
+ * "defaultValue": "2024-07-16T12:15:00" // Local date-time value
606
+ * }]
607
+ * }
608
+ * ```
609
+ *
610
+ * ```js
611
+ * import { Model } from "survey-core";
612
+ * const surveyJson = { ... }
613
+ * const survey = new Model(surveyJson);
614
+ *
615
+ * survey.data = {
616
+ * datetime: "2024-07-16T12:15:00.000Z" // UTC date-time value
617
+ * }
618
+ * ```
619
+ */
620
+ storeUtcDates: boolean;
591
621
  };
@@ -109,6 +109,8 @@ export declare class SurveyElement<E = any> extends SurveyElementCore implements
109
109
  private static focusElementCore;
110
110
  static CreateDisabledDesignElements: boolean;
111
111
  disableDesignActions: boolean;
112
+ effectiveColSpan: number;
113
+ colSpan: number;
112
114
  constructor(name: string);
113
115
  protected onPropertyValueChanged(name: string, oldValue: any, newValue: any): void;
114
116
  protected getSkeletonComponentNameCore(): string;
@@ -378,9 +380,8 @@ export declare class SurveyElement<E = any> extends SurveyElementCore implements
378
380
  paddingLeft: string;
379
381
  paddingRight: string;
380
382
  allowRootStyle: boolean;
381
- readonly rootStyle: {
382
- [index: string]: any;
383
- };
383
+ rootStyle: any;
384
+ updateRootStyle(): void;
384
385
  private isContainsSelection;
385
386
  readonly clickTitleFunction: any;
386
387
  protected needClickTitleFunction(): boolean;
@@ -2600,6 +2600,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2600
2600
  * @see stopTimer
2601
2601
  */
2602
2602
  showTimerPanelMode: string;
2603
+ gridLayoutEnabled: boolean;
2603
2604
  /*
2604
2605
  * Specifies how to calculate the survey width.
2605
2606
  *
@@ -2691,7 +2692,6 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2691
2692
  * @see timeSpent
2692
2693
  */
2693
2694
  maxTimeToFinishPage: number;
2694
- private getPageMaxTimeToFinish;
2695
2695
  private doTimer;
2696
2696
  readonly inSurvey: boolean;
2697
2697
  getSurveyData(): ISurveyData;
@@ -2776,6 +2776,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
2776
2776
  dispose(): void;
2777
2777
  disposeCallback: () => void;
2778
2778
  private onScrollCallback;
2779
+ _isElementShouldBeSticky(selector: string): boolean;
2779
2780
  onScroll(): void;
2780
2781
  addScrollEventListener(): void;
2781
2782
  removeScrollEventListener(): void;
@@ -1,16 +1,21 @@
1
- import { Event } from "./base";
1
+ import { EventBase } from "./base";
2
2
  export declare var surveyTimerFunctions: {
3
3
  setTimeout: (func: () => any) => number;
4
4
  clearTimeout: (timerId: number) => void;
5
5
  safeTimeOut: (func: () => any, delay: number) => number | any;
6
+ now(): number;
6
7
  };
8
+ export interface SurveyTimerEvent {
9
+ seconds: number;
10
+ }
7
11
  export declare class SurveyTimer {
8
12
  private static instanceValue;
9
13
  static readonly instance: SurveyTimer;
10
14
  private listenerCounter;
11
15
  private timerId;
12
- onTimer: Event<() => any, SurveyTimer, any>;
13
- start(func?: () => any): void;
14
- stop(func?: () => any): void;
16
+ private prevTimeInMs;
17
+ onTimer: EventBase<SurveyTimer, SurveyTimerEvent>;
18
+ start(func?: (timer: SurveyTimer, options: SurveyTimerEvent) => void): void;
19
+ stop(func?: (timer: SurveyTimer, options: SurveyTimerEvent) => any): void;
15
20
  doTimer(): void;
16
21
  }
@@ -53,4 +53,5 @@ export declare function compareArrays<T>(oldValue: Array<T>, newValue: Array<T>,
53
53
  }>;
54
54
  mergedItems: Array<T>;
55
55
  };
56
+ export declare function roundTo2Decimals(number: number): number;
56
57
  export { mergeValues, getElementWidth, isContainerVisible, classesToSelector, compareVersions, confirmAction, confirmActionAsync, detectIEOrEdge, detectIEBrowser, loadFileFromBase64, isMobile, isShadowDOM, getElement, isElementVisible, findScrollableParent, scrollElementByChildId, navigateToUrl, wrapUrlForBackgroundImage, createSvg, getIconNameFromProxy, increaseHeightByContent, getOriginalEvent, preventDefaults, findParentByClassNames, getFirstVisibleChild, chooseFiles };
@@ -6,6 +6,7 @@ import { SurveyError } from "./survey-error";
6
6
  import { Base } from "./base";
7
7
  import { IAction } from "./actions/action";
8
8
  import { PanelModel } from "./panel";
9
+ import { PanelLayoutColumnModel } from "./panel-layout-column";
9
10
  import { QuestionPanelDynamicModel } from "./question_paneldynamic";
10
11
  import { DragDropAllowEvent } from "./survey-events-api";
11
12
  import { PopupModel } from "./popup";
@@ -64,6 +65,7 @@ export interface ISurvey extends ITextProcessor, ISurveyErrorOwner {
64
65
  getRendererForString(element: Base, name: string): string;
65
66
  getRendererContextForString(element: Base, locStr: LocalizableString): any;
66
67
  getExpressionDisplayValue(question: IQuestion, value: any, displayValue: string): string;
68
+ gridLayoutEnabled: boolean;
67
69
  isDisplayMode: boolean;
68
70
  isDesignMode: boolean;
69
71
  areInvisibleElementsShowing: boolean;
@@ -100,6 +102,7 @@ export interface ISurvey extends ITextProcessor, ISurveyErrorOwner {
100
102
  maxTextLength: number;
101
103
  maxOthersLength: number;
102
104
  clearValueOnDisableItems: boolean;
105
+ maxTimeToFinishPage: number;
103
106
  uploadFiles(question: IQuestion, name: string, files: File[], uploadingCallback: (data: any | Array<any>, errors?: any | Array<any>) => any): any;
104
107
  downloadFile(question: IQuestion, name: string, content: string, callback: (status: string, data: any) => any): any;
105
108
  clearFiles(question: IQuestion, name: string, value: any, fileName: string, clearCallback: (status: string, data: any) => any): any;
@@ -211,6 +214,7 @@ export interface IElement extends IConditionRunner, ISurveyElement {
211
214
  isCollapsed: boolean;
212
215
  rightIndent: number;
213
216
  startWithNewLine: boolean;
217
+ colSpan?: number;
214
218
  registerPropertyChangedHandlers(propertyNames: Array<string>, handler: any, key: string): void;
215
219
  registerFunctionOnPropertyValueChanged(name: string, func: any, key: string): void;
216
220
  unRegisterFunctionOnPropertyValueChanged(name: string, key: string): void;
@@ -224,6 +228,7 @@ export interface IElement extends IConditionRunner, ISurveyElement {
224
228
  clearErrors(): any;
225
229
  dispose(): void;
226
230
  needResponsiveWidth(): boolean;
231
+ updateRootStyle(): void;
227
232
  }
228
233
  export interface IQuestion extends IElement, ISurveyErrorOwner {
229
234
  hasTitle: boolean;
@@ -254,12 +259,15 @@ export interface IPanel extends ISurveyElement, IParentElement {
254
259
  getQuestionTitleWidth(): string;
255
260
  getQuestionStartIndex(): string;
256
261
  getQuestionErrorLocation(): string;
262
+ getColumsForElement(el: IElement): Array<PanelLayoutColumnModel>;
263
+ updateColumns(): void;
257
264
  parent: IPanel;
258
265
  elementWidthChanged(el: IElement): any;
259
266
  indexOf(el: IElement): number;
260
267
  elements: Array<IElement>;
261
268
  ensureRowsVisibility(): void;
262
269
  validateContainerOnly(): void;
270
+ onQuestionValueChanged(el: IElement): void;
263
271
  }
264
272
  export interface IPage extends IPanel, IConditionRunner {
265
273
  isStartPage: boolean;
@@ -65,7 +65,7 @@ export declare class DropdownListModel extends Base {
65
65
  get showHintString(): boolean;
66
66
  get hintStringSuffix(): string;
67
67
  get hintStringMiddle(): string;
68
- private qustionPropertyChangedHandler;
68
+ private questionPropertyChangedHandler;
69
69
  constructor(question: Question, onSelectionChanged?: (item: IAction, ...params: any[]) => void);
70
70
  get popupModel(): PopupModel;
71
71
  get noTabIndex(): boolean;
@@ -9,7 +9,7 @@ export interface IPropertyDecoratorOptions<T = any> {
9
9
  onGetTextCallback?: (str: string) => string;
10
10
  defaultStr?: string;
11
11
  } | boolean;
12
- onSet?: (val: T, objectInstance: any) => void;
12
+ onSet?: (val: T, objectInstance: any, prevVal?: T) => void;
13
13
  }
14
14
  export declare function property(options?: IPropertyDecoratorOptions): (target: any, key: string) => void;
15
15
  export interface IArrayPropertyDecoratorOptions {
@@ -8,6 +8,7 @@ export declare class InputElementAdapter {
8
8
  inputMaskInstancePropertyChangedHandler: (sender: any, options: any) => void;
9
9
  clickHandler: (event: any) => void;
10
10
  beforeInputHandler: (event: any) => void;
11
+ changeHandler: (event: any) => void;
11
12
  createArgs(event: any): ITextInputParams;
12
13
  addInputEventListener(): void;
13
14
  removeInputEventListener(): void;
package/typings/page.d.ts CHANGED
@@ -96,6 +96,7 @@ export declare class PageModel extends PanelModelBase implements IPage {
96
96
  */
97
97
  get maxTimeToFinish(): number;
98
98
  set maxTimeToFinish(val: number);
99
+ getMaxTimeToFinish(): number;
99
100
  protected onNumChanged(value: number): void;
100
101
  protected onVisibleChanged(): void;
101
102
  getDragDropInfo(): any;
@@ -0,0 +1,9 @@
1
+ import { Base } from "./base";
2
+ export declare class PanelLayoutColumnModel extends Base {
3
+ width: number;
4
+ effectiveWidth: number;
5
+ questionTitleWidth: string;
6
+ constructor(width?: number, questionTitleWidth?: string);
7
+ getType(): string;
8
+ isEmpty(): boolean;
9
+ }
@@ -10,6 +10,7 @@ import { IAction } from "./actions/action";
10
10
  import { ActionContainer } from "./actions/container";
11
11
  import { DragDropInfo } from "./drag-drop-helper-v1";
12
12
  import { AnimationGroup } from "./utils/animation";
13
+ import { PanelLayoutColumnModel } from "./panel-layout-column";
13
14
  export declare class QuestionRowModel extends Base {
14
15
  panel: PanelModelBase;
15
16
  private static rowCounter;
@@ -60,6 +61,9 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
60
61
  private elementsValue;
61
62
  private isQuestionsReady;
62
63
  private questionsValue;
64
+ private _columns;
65
+ private _columnsReady;
66
+ layoutColumns: Array<PanelLayoutColumnModel>;
63
67
  addElementCallback: (element: IElement) => void;
64
68
  removeElementCallback: (element: IElement) => void;
65
69
  onGetQuestionTitleLocation: () => string;
@@ -248,6 +252,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
248
252
  */
249
253
  validate(fireCallback?: boolean, focusOnFirstError?: boolean, rec?: any): boolean;
250
254
  validateContainerOnly(): void;
255
+ onQuestionValueChanged(el: IElement): void;
251
256
  private hasErrorsInPanels;
252
257
  getErrorCustomText(text: string, error: SurveyError): string;
253
258
  private hasRequiredError;
@@ -270,6 +275,11 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
270
275
  addPanelsIntoList(list: Array<IPanel>, visibleOnly?: boolean, includingDesignTime?: boolean): void;
271
276
  private addElementsToList;
272
277
  private addElementsToListCore;
278
+ private calcMaxRowColSpan;
279
+ private updateColumnWidth;
280
+ private onColumnPropertyValueChangedCallback;
281
+ updateColumns(): void;
282
+ updateRootStyle(): void;
273
283
  updateCustomWidgets(): void;
274
284
  /**
275
285
  * Sets a title location relative to the input field for questions that belong to this panel/page.
@@ -299,6 +309,9 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
299
309
  */
300
310
  questionTitleWidth: string;
301
311
  getQuestionTitleWidth(): string;
312
+ get columns(): Array<PanelLayoutColumnModel>;
313
+ protected generateColumns(): void;
314
+ getColumsForElement(el: IElement): Array<PanelLayoutColumnModel>;
302
315
  protected getStartIndex(): string;
303
316
  getQuestionStartIndex(): string;
304
317
  getChildrenLayoutType(): string;
@@ -449,6 +462,7 @@ export declare class PanelModelBase extends SurveyElement<Question> implements I
449
462
  get no(): string;
450
463
  get cssError(): string;
451
464
  protected getCssError(cssClasses: any): string;
465
+ getSerializableColumnsValue(): Array<PanelLayoutColumnModel>;
452
466
  dispose(): void;
453
467
  }
454
468
  /**
@@ -463,6 +477,8 @@ export declare class PanelModel extends PanelModelBase implements IElement {
463
477
  getType(): string;
464
478
  get contentId(): string;
465
479
  getSurvey(live?: boolean): ISurvey;
480
+ get hasTextInTitle(): boolean;
481
+ private calcHasTextInTitle;
466
482
  onSurveyLoad(): void;
467
483
  protected onSetData(): void;
468
484
  get isPanel(): boolean;
@@ -83,6 +83,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
83
83
  themeChanged(theme: ITheme): void;
84
84
  isMobile: boolean;
85
85
  forceIsInputReadOnly: boolean;
86
+ ariaExpanded: "true" | "false";
86
87
  constructor(name: string);
87
88
  protected getDefaultTitle(): string;
88
89
  protected createLocTitleProperty(): LocalizableString;
@@ -275,6 +276,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
275
276
  private notifySurveyVisibilityChanged;
276
277
  protected clearValueOnHidding(isClearOnHidden: boolean): void;
277
278
  get titleWidth(): string;
279
+ getPercentQuestionTitleWidth(): number;
278
280
  /**
279
281
  * Returns title location calculated based on the question's `titleLocation` property and the `questionTitleLocation` property of the question's containers (survey, page, or panel).
280
282
  * @see titleLocation
@@ -428,6 +430,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
428
430
  */
429
431
  focus(onError?: boolean, scrollIfVisible?: boolean): void;
430
432
  private focuscore;
433
+ focusInputElement(onError: boolean): void;
431
434
  expandAllParents(): void;
432
435
  private expandAllParentsCore;
433
436
  focusIn(): void;
@@ -571,6 +574,8 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
571
574
  getFilteredValue(): any;
572
575
  getFilteredName(): any;
573
576
  get valueForSurvey(): any;
577
+ protected valueForSurveyCore(val: any): any;
578
+ protected valueFromDataCore(val: any): any;
574
579
  /**
575
580
  * Sets the question's `value` and `comment` properties to `undefined`.
576
581
  * @see value
@@ -897,7 +902,6 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
897
902
  get ariaInvalid(): "true" | "false";
898
903
  get ariaLabelledBy(): string;
899
904
  get ariaDescribedBy(): string;
900
- get ariaExpanded(): string;
901
905
  get ariaErrormessage(): string;
902
906
  get a11y_input_ariaRole(): string;
903
907
  get a11y_input_ariaRequired(): "true" | "false";
@@ -28,16 +28,16 @@ export declare class QuestionCommentModel extends QuestionTextBase {
28
28
  * Default value: `false` (inherited from `SurveyModel`'s [`autoGrowComment`](https://surveyjs.io/form-library/documentation/surveymodel#autoGrowComment) property)
29
29
  * @see allowResize
30
30
  */
31
- get autoGrow(): boolean;
32
- set autoGrow(val: boolean);
31
+ get autoGrow(): boolean | undefined;
32
+ set autoGrow(val: boolean | undefined);
33
+ get renderedAutoGrow(): boolean;
33
34
  /**
34
- * Specifies whether to display a resize handle for the comment area.
35
35
  *
36
36
  * Default value: `true` (inherited from `SurveyModel`'s [`allowResizeComment`](https://surveyjs.io/form-library/documentation/surveymodel#allowResizeComment) property)
37
37
  * @see autoGrow
38
38
  */
39
- get allowResize(): boolean;
40
- set allowResize(val: boolean);
39
+ get allowResize(): boolean | undefined;
40
+ set allowResize(val: boolean | undefined);
41
41
  get renderedAllowResize(): boolean;
42
42
  get resizeStyle(): "none" | "both";
43
43
  getType(): string;
@@ -4,6 +4,7 @@ import { Base } from "./base";
4
4
  import { ISurveyImpl, ISurveyData, ITextProcessor, IPanel, IElement, IQuestion, IProgressInfo } from "./base-interfaces";
5
5
  import { SurveyElement } from "./survey-element";
6
6
  import { PanelModel } from "./panel";
7
+ import { PanelLayoutColumnModel } from "./panel-layout-column";
7
8
  import { HashTable } from "./helpers";
8
9
  import { ItemValue } from "./itemvalue";
9
10
  import { SurveyError } from "./survey-error";
@@ -343,6 +344,8 @@ export declare abstract class QuestionCustomModelBase extends Question implement
343
344
  removeElement(element: IElement): boolean;
344
345
  getQuestionTitleLocation(): string;
345
346
  getQuestionTitleWidth(): string;
347
+ getColumsForElement(el: IElement): Array<PanelLayoutColumnModel>;
348
+ updateColumns(): void;
346
349
  getQuestionStartIndex(): string;
347
350
  getChildrenLayoutType(): string;
348
351
  elementWidthChanged(el: IElement): void;
@@ -350,6 +353,7 @@ export declare abstract class QuestionCustomModelBase extends Question implement
350
353
  indexOf(el: IElement): number;
351
354
  ensureRowsVisibility(): void;
352
355
  validateContainerOnly(): void;
356
+ onQuestionValueChanged(el: IElement): void;
353
357
  getQuestionErrorLocation(): string;
354
358
  protected getContentDisplayValueCore(keyAsText: boolean, value: any, question: Question): any;
355
359
  }