UNPKG

survey-core

Version:

survey.js is a JavaScript Survey Library. It is a modern way to add a survey to your website. It uses JSON for survey metadata and results.

648 lines (647 loc) 33.1 kB
import { IDialogOptions } from "./popup"; import { IConfirmDialogOptions } from "./utils/utils"; export type ISurveyEnvironment = { root: Document | ShadowRoot; rootElement: HTMLElement | ShadowRoot; popupMountContainer: HTMLElement | string; /** * @deprecated */ svgMountContainer: HTMLElement | string; stylesSheetsMountContainer: HTMLElement; }; export interface IBeforeRequestChoicesOptions { request?: XMLHttpRequest; url: string; fetchOptions?: RequestInit; } /** * Global settings that apply to all surveys on the page. To specify one of the settings, use the code below: * * ```js * import { settings } from "survey-core"; * * settings.settingName = "value"; * ``` */ export declare var settings: { version: string; /** * An object that configures survey appearance when the survey is being designed in Survey Creator. * * Nested properties: * * - `showEmptyDescriptions`: `boolean`\ * Specifies whether to display an empty description for pages and panels. Default value: `true`. * * - `showEmptyTitles`: `boolean`\ * Specifies whether to display an empty title for pages and panels. Default value: `true`. */ designMode: { showEmptyDescriptions: boolean; showEmptyTitles: boolean; }; allowShowEmptyDescriptionInDesignMode: boolean; allowShowEmptyTitleInDesignMode: boolean; /** * An object that contains properties related to localization. * * Nested properties: * * - `useLocalTimeZone`: `boolean`\ * Disable this property if you want internal SurveyJS functions to use methods that work with UTC date and time (`setUTCDate()` `setUTCHours()`, etc.) instead of methods that work with local date and time (`setYear()`, `setHours()`, etc.). Default value: `true`. * * - `defaultLocaleName`: `string`\ * A property key that stores a translation for the default locale. Default value: `"default"`. * * - `storeDuplicatedTranslations`: `boolean`\ * Specifies whether surveys should store translation strings that equal the translation strings in the default locale. Default value: `false`. */ localization: { useLocalTimeZone: boolean; storeDuplicatedTranslations: boolean; defaultLocaleName: string; }; useLocalTimeZone: boolean; storeDuplicatedTranslations: boolean; defaultLocaleName: string; /** * An object with properties that configure surveys when they work with a web service. * * Nested properties: * * - `encodeUrlParams`: `boolean`\ * Specifies whether to encode URL parameters when you access a web service. Default value: `true`. * * - `cacheLoadedChoices`: `boolean`\ * Specifies whether to cache [choices loaded from a web service](https://surveyjs.io/form-library/documentation/api-reference/questionselectbase#choicesByUrl). Default value: `true`. * * - `disableQuestionWhileLoadingChoices`: `boolean`\ * Disables a question while its choices are being loaded from a web service. Default value: `false`. * * - `surveyServiceUrl`: `string`\ * Obsolete. Self-hosted Form Library [no longer supports integration with SurveyJS Demo Service](https://surveyjs.io/stay-updated/release-notes/v2.0.0#form-library-removes-apis-for-integration-with-surveyjs-demo-service). * * - `onBeforeRequestChoices`: `(sender: ChoicesRestful, options: { url: string, request?: XMLHttpRequest, fetchOptions?: RequestInit })`\ * An event that is raised before a request for choices is sent. Applies to questions with a specified [`choiceByUrl`](https://surveyjs.io/form-library/documentation/api-reference/questionselectbase#choicesByUrl) property. Use the `options` parameter to access and modify the request to be sent. The `options.fetchOptions` object is defined only when the Form Library is run on a Node.js server; `options.request` is defined in the rest of cases. The following example shows how you can add authentication headers to a request for choices: * * ```js * import { settings } from "survey-core"; * * settings.web.onBeforeRequestChoices = (_, options) => { * if (options.request) { * options.request.setRequestHeader("RequestVerificationToken", requestVerificationToken); * } * if (options.fetchOptions) { * options.fetchOptions.headers.append("RequestVerificationToken", requestVerificationToken); * } * }; * ``` */ web: { onBeforeRequestChoices: (sender: any, options: IBeforeRequestChoicesOptions) => void; encodeUrlParams: boolean; cacheLoadedChoices: boolean; disableQuestionWhileLoadingChoices: boolean; }; webserviceEncodeParameters: boolean; useCachingForChoicesRestful: boolean; useCachingForChoicesRestfull: boolean; disableOnGettingChoicesFromWeb: boolean; /** * An object that contains properties related to [triggers](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#conditional-survey-logic-triggers). * * Nested properties: * * - `changeNavigationButtonsOnComplete`: `boolean`\ * Specifies whether to re-evaluate an expression associated with the [Complete trigger](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#complete) immediately when a question value changes. If the expression evaluates to `true`, the trigger is executed. Default value: `false`.\ * Keep this property set to `false` if you want to re-evaluate the Complete trigger's expression only when the respondents navigate to another page. * * - `executeCompleteOnValueChanged`: `boolean`\ * Specifies whether to replace the Next button with the Complete button when the [Complete trigger](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#complete) is going to be executed. Default value: `true`. * * - `executeSkipOnValueChanged`: `boolean`\ * Specifies whether to re-evaluate an expression associated with the [Skip trigger](https://surveyjs.io/form-library/documentation/design-survey/conditional-logic#skip) immediately when a question value changes. If the expression evaluates to `true`, the trigger is executed. Default value: `true`.\ * Disable this property if you want to re-evaluate the Skip trigger's expression only when respondents navigate to another page. */ triggers: { changeNavigationButtonsOnComplete: boolean; executeCompleteOnValueChanged: boolean; executeSkipOnValueChanged: boolean; }; executeCompleteTriggerOnValueChanged: boolean; changeNavigationButtonsOnCompleteTrigger: boolean; executeSkipTriggerOnValueChanged: boolean; /** * An object that contains properties related to JSON serialization. * * Nested properties: * * - `itemValueSerializeAsObject`: `boolean`\ * Enable this property if you want to serialize [`ItemValue`](https://surveyjs.io/form-library/documentation/api-reference/itemvalue) instances (choice options, matrix rows, columns in a [Single-Select Matrix](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-question-model)) as objects even when they include only the `value` property. Default value: `false`. * * - `itemValueSerializeDisplayText`: `boolean`\ * Enable this property if you want to serialize the `text` property of [`ItemValue`](https://surveyjs.io/form-library/documentation/api-reference/itemvalue) objects even when it is empty or equal to the `value` property. Default value: `false`. * * - `localizableStringSerializeAsObject`: `boolean`\ * Enable this property if you want to serialize [`LocalizableString`](https://surveyjs.io/form-library/documentation/api-reference/localizablestring) instances as objects even when they include only a translation string for the default locale. For example, `"Custom String"` will be serialized as `{ default: "Custom String" }`. Default value: `false`. * * - `matrixDropdownColumnSerializeTitle`: `boolean`\ * Enable this property if you want to serialize the `title` property of [`MatrixDropdownColumn`](https://surveyjs.io/form-library/documentation/api-reference/multi-select-matrix-column-values) objects even when it is empty or equal to the `name` property. Default value: `false`. * @see [settings.parseNumber](https://surveyjs.io/form-library/documentation/api-reference/settings#parseNumber) */ serialization: { itemValueSerializeAsObject: boolean; itemValueSerializeDisplayText: boolean; localizableStringSerializeAsObject: boolean; matrixDropdownColumnSerializeTitle: boolean; }; itemValueAlwaysSerializeAsObject: boolean; itemValueAlwaysSerializeText: boolean; serializeLocalizableStringAsObject: boolean; /** * An object that configures lazy rendering. * * Nested properties: * * - `enabled`: `boolean`\ * Specifies whether to add questions to the DOM only when they get into the viewport. Default value: `false`. * * [View Demo](https://surveyjs.io/form-library/examples/survey-lazy/ (linkStyle)) * @see [SurveyModel.lazyRenderEnabled](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#lazyRenderEnabled) */ lazyRender: { enabled: boolean; firstBatchSize: number; }; lazyRowsRendering: boolean; lazyRowsRenderingStartRow: number; /** * An object with properties that apply to [Single-Choice](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-question-model), [Multiple-Choice](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list), and [Dynamic Matrix](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model) questions. * * Nested properties: * * - `defaultRowName`: `string`\ * A property key that stores an object with default cell values. Default value: "default". * * - `defaultCellType`: `string`\ * The default type of matrix cells. Default value: `"dropdown"`.\ * You can specify this setting for individual questions or matrix columns: [`cellType`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model#cellType). Refer to the `cellType` property description for information on possible values. * * - `totalsSuffix`: `string`\ * A suffix added to the name of the property that stores total values. The resulting property name consists of the matrix name and the suffix. Default value: `"-total"`. * * - `maxRowCount`: `number`\ * A maximum number of rows in a Dynamic Matrix. Default value: 1000.\ * You can specify this setting for an individual Dynamic Matrix: [`maxRowCount`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-matrix-table-question-model#maxRowCount). * * - `maxRowCountInCondition`: `number`\ * A maximum number of matrix rows included in the Condition drop-down menu in Survey Creator. This menu is used to configure conditional survey logic. Default value: 1.\ * If you set this property to 0, the Condition menu does not include any matrix rows. Users still can specify conditions that use matrix rows but only with Manual Entry. * * - `renderRemoveAsIcon`: `boolean`\ * Disable this property if you want to render the Remove action in Dynamic Matrix as a button. Otherwise, the action is rendered as an icon. Default value: `true`. * * - `columnWidthsByType`: `object`\ * An object that specifies fixed and minimum column width based on the column type.\ * Example: `settings.matrix.columnWidthsByType = { "tagbox": { minWidth: "240px", width: "300px" } }` * * - `rateSize`: `"small"` (default) | `"normal"`\ * Specifies the size of rate values. Applies to [Rating Scale](https://surveyjs.io/form-library/examples/rating-scale/) questions within matrixes. */ matrix: { defaultCellType: string; defaultRowName: string; totalsSuffix: string; maxRowCount: number; maxRowCountInCondition: number; renderRemoveAsIcon: boolean; columnWidthsByType: { [index: string]: { minWidth?: string; width?: string; }; }; rateSize: "small" | "normal"; }; matrixDefaultRowName: string; matrixDefaultCellType: string; matrixTotalValuePostFix: string; matrixMaximumRowCount: number; matrixMaxRowCountInCondition: number; matrixRenderRemoveAsIcon: boolean; /** * An object with properties that apply to [Dynamic Panel](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model) questions. * * Nested properties: * * - `maxPanelCount`: `number`\ * A maximum number of panels in Dynamic Panel. Default value: 100.\ * You can specify this setting for an individual Dynamic Panel: [`maxPanelCount`](https://surveyjs.io/form-library/documentation/api-reference/dynamic-panel-model#maxPanelCount). * * - `maxPanelCountInCondition`: `number`\ * A maximum number of Dynamic Panel panels included in the Condition drop-down menu in Survey Creator. This menu is used to configure conditional survey logic. Default value: 1.\ * If you set this property to 0, the Condition menu does not include any panel questions. Users still can specify conditions that use panel questions but only with Manual Entry. */ panel: { maxPanelCount: number; maxPanelCountInCondition: number; }; panelDynamicMaxPanelCountInCondition: number; panelMaximumPanelCount: number; /** * An object with properties that configure questions in read-only mode. * * Nested properties: * * - `commentRenderMode`: `"textarea"` (default) | `"div"`\ * Specifies how to render the input field of [Comment](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model) questions in [read-only](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model#readOnly) mode: as a disabled `<textarea>` element or as a `<div>` element with a non-editable question value within it. * * - `textRenderMode`: `"input"` (default) | `"div"`\ * Specifies how to render the input field of [Text](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model) questions in [read-only](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model#readOnly) mode: as a disabled `<input>` element or as a `<div>` element with a non-editable question value within it. */ readOnly: { enableValidation: boolean; commentRenderMode: string; textRenderMode: string; }; readOnlyCommentRenderMode: string; readOnlyTextRenderMode: string; /** * An object with properties that configure question numbering. * * Nested properties: * * - `includeQuestionsWithHiddenNumber`: `boolean`\ * Specifies whether to number questions whose [`showNumber`](https://surveyjs.io/form-library/documentation/api-reference/question#showNumber) property is disabled. Default value: `false`. * * - `includeQuestionsWithHiddenTitle`: `boolean`\ * Specifies whether to number questions whose [`titleLocation`](https://surveyjs.io/form-library/documentation/api-reference/question#titleLocation) property is set to `"hidden"`. Default value: `false`. */ numbering: { includeQuestionsWithHiddenNumber: boolean; includeQuestionsWithHiddenTitle: boolean; }; setQuestionVisibleIndexForHiddenTitle: boolean; setQuestionVisibleIndexForHiddenNumber: boolean; /** * Specifies an action to perform when users press the Enter key within a survey. * * Possible values: * * - `"moveToNextEditor"` - Moves focus to the next editor. * - `"loseFocus"` - Removes focus from the current editor. * - `"default"` - Behaves as a standard `<input>` element. */ enterKeyAction: "moveToNextEditor" | "loseFocus" | "default"; /** * An object that configures string comparison. * * Nested properties: * * - `trimStrings`: `boolean`\ * Specifies whether to remove whitespace from both ends of a string before the comparison. Default value: `true`. * * - `caseSensitive`: `boolean`\ * Specifies whether to differentiate between capital and lower-case letters. Default value: `false`. */ comparator: { trimStrings: boolean; caseSensitive: boolean; normalizeTextCallback: (str: string, reason: string) => string; }; expressionDisableConversionChar: string; commentPrefix: string; /** * A suffix added to the name of the property that stores comments. * * Default value: "-Comment" * * You can specify this setting for an individual survey: [`commentSuffix`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#commentSuffix). */ commentSuffix: string; /** * A separator used in a shorthand notation that specifies a value and display text for an [`ItemValue`](https://surveyjs.io/form-library/documentation/api-reference/itemvalue) object: `"value|text"`. * * Default value: `"|"` * @see [settings.choicesSeparator](https://surveyjs.io/form-library/documentation/api-reference/settings#choicesSeparator) */ itemValueSeparator: string; /** * A maximum number of rate values in a [Rating](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model) question. * * Default value: 20 */ ratingMaximumRateValueCount: number; /** * 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. * * 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. */ tagboxCloseOnSelect: boolean; /** * 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`. * * Default value: 500 * * [View Demo](https://surveyjs.io/form-library/examples/lazy-loading-dropdown/ (linkStyle)) */ dropdownSearchDelay: number; /** * A function that activates a browser confirm dialog. * * Use the following code to execute this function: * * ```js * import { settings } from "survey-core"; * * // `result` contains `true` if the action was confirmed or `false` otherwise * const result = settings.confirmActionFunc("Are you sure?"); * ``` * * You can redefine the `confirmActionFunc` function if you want to display a custom dialog window. Your function should return `true` if a user confirms an action or `false` otherwise. * @param message A message to be displayed in the confirm dialog window. */ confirmActionFunc: (message: string) => boolean; /** * A function that activates a proprietary SurveyJS confirm dialog. * * Use the following code to execute this function: * * ```js * import { settings } from "survey-core"; * * settings.confirmActionAsync("Are you sure?", (confirmed) => { * if (confirmed) { * // ... * // Proceed with the action * // ... * } else { * // ... * // Cancel the action * // ... * } * }); * ``` * * You can redefine the `confirmActionAsync` function if you want to display a custom dialog window. Your function should return `true` to be enabled; otherwise, a survey executes the [`confirmActionFunc`](#confirmActionFunc) function. Pass the dialog result as the `callback` parameter: `true` if a user confirms an action, `false` otherwise. * @param message A message to be displayed in the confirm dialog window. * @param callback A callback function that should be called with `true` if a user confirms an action or `false` otherwise. */ confirmActionAsync: (message: string, callback: (res: boolean) => void, options?: IConfirmDialogOptions) => boolean; /** * A minimum width value for all survey elements. * * Default value: `"300px"` * * You can override this setting for individual elements: [`minWidth`](https://surveyjs.io/form-library/documentation/api-reference/surveyelement#minWidth). */ minWidth: string; /** * A maximum width value for all survey elements. * * Default value: `"100%"` * * You can override this setting for individual elements: [`maxWidth`](https://surveyjs.io/form-library/documentation/api-reference/surveyelement#maxWidth). */ maxWidth: string; /** * Specifies how many times surveys can re-evaluate expressions when a question value changes. This limit helps avoid recursions in expressions. * * Default value: 10 */ maxConditionRunCountOnValueChanged: number; /** * An object that configures notifications. * * Nested properties: * * - `lifetime`: `number`\ * Specifies a time period during which a notification is displayed; measured in milliseconds. Default value: 2000. */ notifications: { lifetime: number; }; /** * Specifies how many milliseconds a survey should wait before it automatically switches to the next page. Applies only when [auto-advance](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#autoAdvanceEnabled) is enabled. * * Default value: 300 */ autoAdvanceDelay: number; /** * Specifies the direction in which to lay out Checkbox and Radio Button Group items. This setting affects the resulting UI when items are arranged in [more than one column](https://surveyjs.io/form-library/documentation/api-reference/checkbox-question-model#colCount). * * Possible values: * * - `"column"` (default) - Items fill the current column, then move on to the next column. * - `"row"` - Items fill the current row, then move on to the next row. */ itemFlowDirection: string; /** * @deprecated Use the [`itemFlowDirection`](https://surveyjs.io/form-library/documentation/api-reference/settings#itemFlowDirection) property instead. */ showItemsInOrder: string; /** * A value to save in survey results when respondents select the "None" choice item. * * Default value: `"none"` */ noneItemValue: string; /** * A value to save in survey results when respondents select the "Refuse to answer" choice item. * * Default value: `"refused"` */ refuseItemValue: string; /** * A value to save in survey results when respondents select the "Don't know" choice item. * * Default value: `"dontknow"` */ dontKnowItemValue: string; /** * An object whose properties specify the order of the special choice items ("None", "Other", "Select All", "Refuse to answer", "Don't know") in select-based questions. * * Default value: `{ selectAllItem: [-1], noneItem: [1], otherItem: [2], dontKnowItem: [3], otherItem: [4] }` * * Use this object to reorder special choices. Each property accepts an array of integer numbers. Negative numbers place a special choice item above regular choice items, positive numbers place it below them. For instance, the code below specifies the following order of choices: None, Select All, regular choices, Other. * * ```js * import { settings } from "survey-core"; * * settings.specialChoicesOrder.noneItem = [-2]; * settings.specialChoicesOrder.selectAllItem = [-1]; * settings.specialChoicesOrder.otherItem = [1]; * ``` * * If you want to duplicate a special choice item above and below other choices, add two numbers to the corresponding array: * * ```js * settings.specialChoicesOrder.selectAllItem = [-1, 3] // Displays Select All above and below other choices * ``` */ specialChoicesOrder: { selectAllItem: number[]; noneItem: number[]; refuseItem: number[]; dontKnowItem: number[]; otherItem: number[]; }; /** * One or several characters used to separate choice options in a list. * * Default value: `", "` * @see [settings.itemValueSeparator](https://surveyjs.io/form-library/documentation/api-reference/settings#itemValueSeparator) */ choicesSeparator: string; /** * A list of supported validators by question type. */ supportedValidators: { question: string[]; comment: string[]; text: string[]; checkbox: string[]; imagepicker: string[]; }; /** * Specifies a minimum date that users can enter into a [Text](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model) question with [`inputType`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model#inputType) set to `"date"` or `"datetime-local"`. Set this property to a string with the folllowing format: `"yyyy-mm-dd"`. */ minDate: string; /** * Specifies a maximum date that users can enter into a [Text](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model) question with [`inputType`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model#inputType) set to `"date"` or `"datetime-local"`. Set this property to a string with the folllowing format: `"yyyy-mm-dd"`. */ maxDate: string; showDialog: (options: IDialogOptions, rootElement?: HTMLElement) => any; showDefaultItemsInCreator: boolean; /** * An object that specifies icon replacements. Object keys are built-in icon names. To use a custom icon, assign its name to the key of the icon you want to replace: * * ```js * import { settings } from "survey-core"; * * settings.customIcons["icon-redo"] = "custom-redo-icon"; * ``` * * For more information about icons in SurveyJS, refer to the following help topic: [UI Icons](https://surveyjs.io/form-library/documentation/icons). */ customIcons: {}; /** * Specifies which part of a choice item responds to a drag gesture in Ranking questions. * * Possible values: * * - `"entireItem"` (default) - Users can use the entire choice item as a drag handle. * - `"icon"` - Users can only use the choice item icon as a drag handle. */ rankingDragHandleArea: string; environment: ISurveyEnvironment; /** * Allows you to hide the maximum length indicator in text input questions. * * If you specify a question's [`maxLength`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model#maxLength) property or a survey's [`maxTextLength`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#maxTextLength) property, text input questions indicate the number of entered characters and the character limit. Assign `false` to the `settings.showMaxLengthIndicator` property if you want to hide this indicator. * * Default value: `true` */ showMaxLengthIndicator: boolean; /** * Specifies whether to animate survey elements. * * Default value: `true` */ animationEnabled: boolean; /** * An object that specifies HTML tags to use when rendering survey, page, panel, and question titles. * * Default value: `{ survey: "h3", page: "h4", panel: "h4", question: "h5" }` * * If you want to modify HTML tags for individual titles, handle `SurveyModel`'s [`onGetTitleTagName`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onGetTitleTagName) event. */ titleTags: { survey: string; page: string; panel: string; question: string; }; questions: { inputTypes: string[]; dataList: string[]; }; legacyProgressBarView: boolean; /** * An object with properties that configure input masks. * * Nested properties: * * - `patternPlaceholderChar`: `string`\ * A symbol used as a placeholder for characters to be entered in [pattern masks](https://surveyjs.io/form-library/documentation/api-reference/inputmaskpattern). Default value: `"_"`. * * - `patternEscapeChar`: `string`\ * A symbol used to insert literal representations of special characters in [pattern masks](https://surveyjs.io/form-library/documentation/api-reference/inputmaskpattern). Default value: `"\\"`. * * - `patternDefinitions`: `<{ [key: string]: RegExp }>`\ * An object that maps placeholder symbols to regular expressions in [pattern masks](https://surveyjs.io/form-library/documentation/api-reference/inputmaskpattern). Default value: `{ "9": /[0-9]/, "a": /[a-zA-Z]/, "#": /[a-zA-Z0-9]/ }`. */ maskSettings: { patternPlaceholderChar: string; patternEscapeChar: string; patternDefinitions: { [key: string]: RegExp; }; }; /** * 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"`. * * Default value: `false` * * 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"`. * * ```js * const surveyJson = { * "elements": [{ * "name": "datetime", * "type": "text", * "title": "Select a date and time", * "inputType": "datetime-local", * "defaultValue": "2024-07-16T12:15:00" // Local date-time value * }] * } * ``` * * ```js * import { Model } from "survey-core"; * const surveyJson = { ... } * const survey = new Model(surveyJson); * * survey.data = { * datetime: "2024-07-16T12:15:00.000Z" // UTC date-time value * } * ``` */ storeUtcDates: boolean; onDateCreated: (newDate: Date, reason: string, val?: number | string | Date) => Date; /** * A function that allows you to define custom parsing rules for numbers represented as string values. * * The following code shows a template that you can use to implement the `parseNumber` function: * * ```js * import { settings } from "survey-core"; * * settings.parseNumber = (stringValue, numericValue) => { * if (typeof stringValue !== "string" || !stringValue) * return numericValue; * let parsedNumber = numericValue; * // ... * // Parsing the number according to custom parsing rules * // ... * return parsedNumber; * }; * ``` * @param stringValue A number represented as a string value. * @param numericValue A number parsed using a default parsing function. `NaN` if the original string is not a number. * @returns A number that results from parsing the string value. * @see [settings.serialization](https://surveyjs.io/form-library/documentation/api-reference/settings#serialization) */ parseNumber: (stringValue: any, numericValue: number) => number; };