survey-core 1.11.9 → 1.11.10
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.
- package/defaultV2.css +17 -2
- package/defaultV2.css.map +1 -1
- package/defaultV2.fontless.css +17 -2
- package/defaultV2.fontless.css.map +1 -1
- package/defaultV2.fontless.min.css +2 -2
- package/defaultV2.min.css +2 -2
- package/i18n/arabic.js +1 -1
- package/i18n/arabic.min.js +1 -1
- package/i18n/basque.js +1 -1
- package/i18n/basque.min.js +1 -1
- package/i18n/bulgarian.js +1 -1
- package/i18n/bulgarian.min.js +1 -1
- package/i18n/catalan.js +1 -1
- package/i18n/catalan.min.js +1 -1
- package/i18n/croatian.js +1 -1
- package/i18n/croatian.min.js +1 -1
- package/i18n/czech.js +1 -1
- package/i18n/czech.min.js +1 -1
- package/i18n/danish.js +1 -1
- package/i18n/danish.min.js +1 -1
- package/i18n/dutch.js +1 -1
- package/i18n/dutch.min.js +1 -1
- package/i18n/english.js +1 -1
- package/i18n/english.min.js +1 -1
- package/i18n/estonian.js +1 -1
- package/i18n/estonian.min.js +1 -1
- package/i18n/finnish.js +1 -1
- package/i18n/finnish.min.js +1 -1
- package/i18n/french.js +1 -1
- package/i18n/french.min.js +1 -1
- package/i18n/georgian.js +1 -1
- package/i18n/georgian.min.js +1 -1
- package/i18n/german.js +1 -1
- package/i18n/german.min.js +1 -1
- package/i18n/greek.js +1 -1
- package/i18n/greek.min.js +1 -1
- package/i18n/hebrew.js +1 -1
- package/i18n/hebrew.min.js +1 -1
- package/i18n/hindi.js +1 -1
- package/i18n/hindi.min.js +1 -1
- package/i18n/hungarian.js +1 -1
- package/i18n/hungarian.min.js +1 -1
- package/i18n/icelandic.js +1 -1
- package/i18n/icelandic.min.js +1 -1
- package/i18n/index.js +1 -1
- package/i18n/index.min.js +1 -1
- package/i18n/indonesian.js +1 -1
- package/i18n/indonesian.min.js +1 -1
- package/i18n/italian.js +1 -1
- package/i18n/italian.min.js +1 -1
- package/i18n/japanese.js +1 -1
- package/i18n/japanese.min.js +1 -1
- package/i18n/kazakh.js +1 -1
- package/i18n/kazakh.min.js +1 -1
- package/i18n/korean.js +1 -1
- package/i18n/korean.min.js +1 -1
- package/i18n/latvian.js +1 -1
- package/i18n/latvian.min.js +1 -1
- package/i18n/lithuanian.js +1 -1
- package/i18n/lithuanian.min.js +1 -1
- package/i18n/macedonian.js +1 -1
- package/i18n/macedonian.min.js +1 -1
- package/i18n/malay.js +1 -1
- package/i18n/malay.min.js +1 -1
- package/i18n/nl-BE.js +1 -1
- package/i18n/nl-BE.min.js +1 -1
- package/i18n/norwegian.js +1 -1
- package/i18n/norwegian.min.js +1 -1
- package/i18n/persian.js +1 -1
- package/i18n/persian.min.js +1 -1
- package/i18n/philippines.js +1 -1
- package/i18n/philippines.min.js +1 -1
- package/i18n/polish.js +1 -1
- package/i18n/polish.min.js +1 -1
- package/i18n/portuguese-br.js +1 -1
- package/i18n/portuguese-br.min.js +1 -1
- package/i18n/portuguese.js +1 -1
- package/i18n/portuguese.min.js +1 -1
- package/i18n/romanian.js +1 -1
- package/i18n/romanian.min.js +1 -1
- package/i18n/russian.js +1 -1
- package/i18n/russian.min.js +1 -1
- package/i18n/serbian.js +1 -1
- package/i18n/serbian.min.js +1 -1
- package/i18n/simplified-chinese.js +1 -1
- package/i18n/simplified-chinese.min.js +1 -1
- package/i18n/slovak.js +1 -1
- package/i18n/slovak.min.js +1 -1
- package/i18n/spanish.js +1 -1
- package/i18n/spanish.min.js +1 -1
- package/i18n/swahili.js +1 -1
- package/i18n/swahili.min.js +1 -1
- package/i18n/swedish.js +1 -1
- package/i18n/swedish.min.js +1 -1
- package/i18n/tajik.js +1 -1
- package/i18n/tajik.min.js +1 -1
- package/i18n/telugu.js +1 -1
- package/i18n/telugu.min.js +1 -1
- package/i18n/thai.js +1 -1
- package/i18n/thai.min.js +1 -1
- package/i18n/traditional-chinese.js +1 -1
- package/i18n/traditional-chinese.min.js +1 -1
- package/i18n/turkish.js +1 -1
- package/i18n/turkish.min.js +1 -1
- package/i18n/ukrainian.js +1 -1
- package/i18n/ukrainian.min.js +1 -1
- package/i18n/urdu.js +1 -1
- package/i18n/urdu.min.js +1 -1
- package/i18n/vietnamese.js +1 -1
- package/i18n/vietnamese.min.js +1 -1
- package/i18n/welsh.js +1 -1
- package/i18n/welsh.min.js +1 -1
- package/modern.css +1 -1
- package/modern.fontless.css +1 -1
- package/modern.fontless.min.css +1 -1
- package/modern.min.css +1 -1
- package/package.json +1 -1
- package/plugins/bootstrap-integration.js +1 -1
- package/plugins/bootstrap-integration.min.js +1 -1
- package/plugins/bootstrap-material-integration.js +1 -1
- package/plugins/bootstrap-material-integration.min.js +1 -1
- package/survey.core.js +226 -93
- package/survey.core.js.map +1 -1
- package/survey.core.min.js +3 -3
- package/survey.css +1 -1
- package/survey.i18n.js +1 -1
- package/survey.i18n.min.js +1 -1
- package/survey.min.css +1 -1
- package/themes/borderless-dark-panelless.js +1 -1
- package/themes/borderless-dark-panelless.min.js +1 -1
- package/themes/borderless-dark.js +1 -1
- package/themes/borderless-dark.min.js +1 -1
- package/themes/borderless-light-panelless..js +1 -1
- package/themes/borderless-light-panelless..min.js +1 -1
- package/themes/borderless-light.js +1 -1
- package/themes/borderless-light.min.js +1 -1
- package/themes/contrast-dark-panelless.js +1 -1
- package/themes/contrast-dark-panelless.min.js +1 -1
- package/themes/contrast-dark.js +1 -1
- package/themes/contrast-dark.min.js +1 -1
- package/themes/contrast-light-panelless.js +1 -1
- package/themes/contrast-light-panelless.min.js +1 -1
- package/themes/contrast-light.js +1 -1
- package/themes/contrast-light.min.js +1 -1
- package/themes/default-dark-panelless.js +1 -1
- package/themes/default-dark-panelless.min.js +1 -1
- package/themes/default-dark.js +1 -1
- package/themes/default-dark.min.js +1 -1
- package/themes/default-light-panelless.js +1 -1
- package/themes/default-light-panelless.min.js +1 -1
- package/themes/default-light.js +1 -1
- package/themes/default-light.min.js +1 -1
- package/themes/doubleborder-dark-panelless.js +1 -1
- package/themes/doubleborder-dark-panelless.min.js +1 -1
- package/themes/doubleborder-dark.js +1 -1
- package/themes/doubleborder-dark.min.js +1 -1
- package/themes/doubleborder-light-panelles.js +1 -1
- package/themes/doubleborder-light-panelles.min.js +1 -1
- package/themes/doubleborder-light.js +1 -1
- package/themes/doubleborder-light.min.js +1 -1
- package/themes/flat-dark-panelless.js +1 -1
- package/themes/flat-dark-panelless.min.js +1 -1
- package/themes/flat-dark.js +1 -1
- package/themes/flat-dark.min.js +1 -1
- package/themes/flat-light-panelless.js +1 -1
- package/themes/flat-light-panelless.min.js +1 -1
- package/themes/flat-light.js +1 -1
- package/themes/flat-light.min.js +1 -1
- package/themes/index.js +1 -1
- package/themes/index.min.js +1 -1
- package/themes/layered-dark-panelless.js +1 -1
- package/themes/layered-dark-panelless.min.js +1 -1
- package/themes/layered-dark.js +1 -1
- package/themes/layered-dark.min.js +1 -1
- package/themes/layered-light-panelless.js +1 -1
- package/themes/layered-light-panelless.min.js +1 -1
- package/themes/layered-light.js +1 -1
- package/themes/layered-light.min.js +1 -1
- package/themes/plain-dark-panelless.js +1 -1
- package/themes/plain-dark-panelless.min.js +1 -1
- package/themes/plain-dark.js +1 -1
- package/themes/plain-dark.min.js +1 -1
- package/themes/plain-light-panelless.js +1 -1
- package/themes/plain-light-panelless.min.js +1 -1
- package/themes/plain-light.js +1 -1
- package/themes/plain-light.min.js +1 -1
- package/themes/sharp-dark-panelless.js +1 -1
- package/themes/sharp-dark-panelless.min.js +1 -1
- package/themes/sharp-dark.js +1 -1
- package/themes/sharp-dark.min.js +1 -1
- package/themes/sharp-light-panelless.js +1 -1
- package/themes/sharp-light-panelless.min.js +1 -1
- package/themes/sharp-light.js +1 -1
- package/themes/sharp-light.min.js +1 -1
- package/themes/solid-dark-panelless.js +1 -1
- package/themes/solid-dark-panelless.min.js +1 -1
- package/themes/solid-dark.js +1 -1
- package/themes/solid-dark.min.js +1 -1
- package/themes/solid-light-panelless.js +1 -1
- package/themes/solid-light-panelless.min.js +1 -1
- package/themes/solid-light.js +1 -1
- package/themes/solid-light.min.js +1 -1
- package/themes/three-dimensional-dark-panelless.js +1 -1
- package/themes/three-dimensional-dark-panelless.min.js +1 -1
- package/themes/three-dimensional-dark.js +1 -1
- package/themes/three-dimensional-dark.min.js +1 -1
- package/themes/three-dimensional-light-panelless.js +1 -1
- package/themes/three-dimensional-light-panelless.min.js +1 -1
- package/themes/three-dimensional-light.js +1 -1
- package/themes/three-dimensional-light.min.js +1 -1
- package/ts3.4/typings/base-interfaces.d.ts +8 -0
- package/ts3.4/typings/dragdrop/core.d.ts +1 -0
- package/ts3.4/typings/dropdownListModel.d.ts +1 -0
- package/ts3.4/typings/expressions/expressions.d.ts +0 -3
- package/ts3.4/typings/helpers.d.ts +2 -0
- package/ts3.4/typings/popup-dropdown-view-model.d.ts +2 -1
- package/ts3.4/typings/popup.d.ts +2 -1
- package/ts3.4/typings/question.d.ts +2 -1
- package/ts3.4/typings/question_file.d.ts +5 -4
- package/ts3.4/typings/question_matrix.d.ts +2 -2
- package/ts3.4/typings/question_signaturepad.d.ts +2 -0
- package/ts3.4/typings/settings.d.ts +25 -0
- package/ts3.4/typings/survey-events-api.d.ts +26 -0
- package/ts3.4/typings/survey.d.ts +12 -3
- package/ts3.4/typings/utils/utils.d.ts +1 -0
- package/typings/base-interfaces.d.ts +8 -0
- package/typings/dragdrop/core.d.ts +1 -0
- package/typings/dropdownListModel.d.ts +1 -0
- package/typings/expressions/expressions.d.ts +0 -3
- package/typings/helpers.d.ts +2 -0
- package/typings/popup-dropdown-view-model.d.ts +2 -1
- package/typings/popup.d.ts +2 -1
- package/typings/question.d.ts +2 -1
- package/typings/question_file.d.ts +6 -5
- package/typings/question_matrix.d.ts +2 -2
- package/typings/question_signaturepad.d.ts +2 -0
- package/typings/settings.d.ts +25 -0
- package/typings/survey-events-api.d.ts +26 -0
- package/typings/survey.d.ts +12 -3
- package/typings/utils/utils.d.ts +1 -0
package/themes/solid-light.js
CHANGED
|
@@ -163,6 +163,7 @@ export interface ISurvey extends ITextProcessor, ISurveyErrorOwner {
|
|
|
163
163
|
elementContentVisibilityChanged(element: ISurveyElement): void;
|
|
164
164
|
onCorrectQuestionAnswer(question: IQuestion, options: any): void;
|
|
165
165
|
processPopupVisiblityChanged(question: IQuestion, popupModel: PopupModel, visible: boolean): void;
|
|
166
|
+
processOpenDropdownMenu(question: IQuestion, options: IDropdownMenuOptions): void;
|
|
166
167
|
chooseFiles(input: HTMLInputElement, callback: (files: File[]) => void, context?: {
|
|
167
168
|
element: Base;
|
|
168
169
|
item?: any;
|
|
@@ -330,3 +331,10 @@ export interface ISaveToJSONOptions {
|
|
|
330
331
|
storeDefaults?: boolean;
|
|
331
332
|
version?: string;
|
|
332
333
|
}
|
|
334
|
+
export interface IDropdownMenuOptions {
|
|
335
|
+
menuType: "dropdown" | "popup" | "overlay";
|
|
336
|
+
deviceType: "mobile" | "tablet" | "desktop";
|
|
337
|
+
hasTouchScreen: boolean;
|
|
338
|
+
screenHeight: number;
|
|
339
|
+
screenWidth: number;
|
|
340
|
+
}
|
|
@@ -12,6 +12,7 @@ export declare abstract class DragDropCore<T> implements IDragDropEngine {
|
|
|
12
12
|
protected ghostPositionChanged(): void;
|
|
13
13
|
onDragStart: EventBase<DragDropCore<T>>;
|
|
14
14
|
onDragEnd: EventBase<DragDropCore<T>>;
|
|
15
|
+
onDragClear: EventBase<DragDropCore<T>>;
|
|
15
16
|
onBeforeDrop: EventBase<DragDropCore<T>, any>;
|
|
16
17
|
onAfterDrop: EventBase<DragDropCore<T>, any>;
|
|
17
18
|
draggedElement: any;
|
|
@@ -28,6 +28,7 @@ export declare class DropdownListModel extends Base {
|
|
|
28
28
|
private loadQuestionChoices;
|
|
29
29
|
private updateQuestionChoices;
|
|
30
30
|
private updatePopupFocusFirstInputSelector;
|
|
31
|
+
private getDropdownMenuOptions;
|
|
31
32
|
protected createPopup(): void;
|
|
32
33
|
private setFilterStringToListModel;
|
|
33
34
|
private setTextWrapEnabled;
|
|
@@ -77,7 +77,6 @@ export declare class Const extends Operand {
|
|
|
77
77
|
protected getCorrectValue(value: any): any;
|
|
78
78
|
protected isContentEqual(op: Operand): boolean;
|
|
79
79
|
private isQuote;
|
|
80
|
-
private isBooleanValue;
|
|
81
80
|
}
|
|
82
81
|
export declare class Variable extends Const {
|
|
83
82
|
private variableName;
|
|
@@ -117,8 +116,6 @@ export declare class OperandMaker {
|
|
|
117
116
|
static throwInvalidOperatorError(op: string): void;
|
|
118
117
|
static safeToString(operand: Operand, func: (op: Operand) => string): string;
|
|
119
118
|
static toOperandString(value: string): string;
|
|
120
|
-
static isSpaceString(str: string): boolean;
|
|
121
|
-
static isNumeric(value: string): boolean;
|
|
122
119
|
static isBooleanValue(value: string): boolean;
|
|
123
120
|
static countDecimals(value: number): number;
|
|
124
121
|
static plusMinus(a: number, b: number, res: number): number;
|
|
@@ -18,6 +18,8 @@ export declare class Helpers {
|
|
|
18
18
|
static isValueObject(val: any, excludeArray?: boolean): boolean;
|
|
19
19
|
static isNumber(value: any): boolean;
|
|
20
20
|
static getNumber(value: any): number;
|
|
21
|
+
private static getNumberCore;
|
|
22
|
+
private static isStringHasOperator;
|
|
21
23
|
private static prepareStringToNumber;
|
|
22
24
|
static getMaxLength(maxLength: number, surveyLength: number): any;
|
|
23
25
|
static getRemainingCharacterCounterText(newValue: string | undefined, maxLength: number | null): string;
|
|
@@ -2,11 +2,12 @@ import { IPosition, Rect } from "./utils/popup";
|
|
|
2
2
|
import { CssClassBuilder } from "./utils/cssClassBuilder";
|
|
3
3
|
import { PopupModel } from "./popup";
|
|
4
4
|
import { PopupBaseViewModel } from "./popup-view-model";
|
|
5
|
+
export declare function calculateIsTablet(windowWidth?: number, windowHeight?: number): boolean;
|
|
5
6
|
export declare class PopupDropdownViewModel extends PopupBaseViewModel {
|
|
6
7
|
targetElement?: HTMLElement;
|
|
7
8
|
areaElement?: HTMLElement;
|
|
9
|
+
static readonly tabletSizeBreakpoint = 600;
|
|
8
10
|
private scrollEventCallBack;
|
|
9
|
-
private static readonly tabletSizeBreakpoint;
|
|
10
11
|
private calculateIsTablet;
|
|
11
12
|
private resizeEventCallback;
|
|
12
13
|
private resizeWindowCallback;
|
package/ts3.4/typings/popup.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export declare class PopupModel<T = any> extends Base implements IPopupOptionsBa
|
|
|
41
41
|
isFocusedContainer: boolean;
|
|
42
42
|
cssClass: string;
|
|
43
43
|
title: string;
|
|
44
|
-
overlayDisplayMode: "auto" | "overlay" | "dropdown-overlay";
|
|
44
|
+
overlayDisplayMode: "auto" | "tablet-dropdown-overlay" | "dropdown-overlay" | "plain";
|
|
45
45
|
displayMode: "popup" | "overlay";
|
|
46
46
|
positionMode: PositionMode;
|
|
47
47
|
onVisibilityChanged: EventBase<PopupModel>;
|
|
@@ -55,6 +55,7 @@ export declare class PopupModel<T = any> extends Base implements IPopupOptionsBa
|
|
|
55
55
|
hide(): void;
|
|
56
56
|
recalculatePosition(isResetHeight: boolean): void;
|
|
57
57
|
updateFooterActions(footerActions: Array<IAction>): Array<IAction>;
|
|
58
|
+
updateDisplayMode(menuType: "dropdown" | "popup" | "overlay"): void;
|
|
58
59
|
onHiding(): void;
|
|
59
60
|
dispose(): void;
|
|
60
61
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HashTable } from "./helpers";
|
|
2
2
|
import { EventBase } from "./base";
|
|
3
|
-
import { IElement, IQuestion, IPanel, IConditionRunner, ISurveyImpl, IPage, ITitleOwner, IProgressInfo, ISurvey, IPlainDataOptions } from "./base-interfaces";
|
|
3
|
+
import { IElement, IQuestion, IPanel, IConditionRunner, ISurveyImpl, IPage, ITitleOwner, IProgressInfo, ISurvey, IPlainDataOptions, IDropdownMenuOptions } from "./base-interfaces";
|
|
4
4
|
import { SurveyElement } from "./survey-element";
|
|
5
5
|
import { SurveyValidator, IValidatorOwner } from "./validator";
|
|
6
6
|
import { TextPreProcessorValue } from "./textPreProcessor";
|
|
@@ -837,6 +837,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
|
|
|
837
837
|
validatedValue: any;
|
|
838
838
|
getAllValues(): any;
|
|
839
839
|
processPopupVisiblilityChanged(popupModel: PopupModel, visible: boolean): void;
|
|
840
|
+
processOpenDropdownMenu(options: IDropdownMenuOptions): void;
|
|
840
841
|
protected onTextKeyDownHandler(event: any): void;
|
|
841
842
|
transformToMobileView(): void;
|
|
842
843
|
transformToDesktopView(): void;
|
|
@@ -43,6 +43,8 @@ export declare class QuestionFileModelBase extends Question {
|
|
|
43
43
|
clearOnDeletingContainer(): void;
|
|
44
44
|
protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
|
|
45
45
|
protected uploadFiles(files: File[]): void;
|
|
46
|
+
protected loadPreview(newValue: any): void;
|
|
47
|
+
protected onChangeQuestionValue(newValue: any): void;
|
|
46
48
|
}
|
|
47
49
|
/**
|
|
48
50
|
* A class that describes the File Upload question type.
|
|
@@ -80,6 +82,8 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
|
|
|
80
82
|
startCameraAction: Action;
|
|
81
83
|
cleanAction: Action;
|
|
82
84
|
actionsContainer: ActionContainer;
|
|
85
|
+
private isFileLoadingValue;
|
|
86
|
+
protected isFileLoading: boolean;
|
|
83
87
|
readonly fileNavigatorVisible: boolean;
|
|
84
88
|
private readonly pagesCount: any;
|
|
85
89
|
readonly actionsContainerVisible: boolean;
|
|
@@ -212,8 +216,6 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
|
|
|
212
216
|
protected readonly camera: Camera;
|
|
213
217
|
canPreviewImage(fileItem: any): boolean;
|
|
214
218
|
protected loadPreview(newValue: any): void;
|
|
215
|
-
private isFileLoadingValue;
|
|
216
|
-
protected isFileLoading: boolean;
|
|
217
219
|
protected getIsQuestionReady(): boolean;
|
|
218
220
|
private allFilesOk;
|
|
219
221
|
private isFileImage;
|
|
@@ -226,7 +228,6 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
|
|
|
226
228
|
readonly fileRootCss: string;
|
|
227
229
|
getFileDecoratorCss(): string;
|
|
228
230
|
private onChange;
|
|
229
|
-
protected onChangeQuestionValue(newValue: any): void;
|
|
230
231
|
protected calcCssClasses(css: any): any;
|
|
231
232
|
onSurveyLoad(): void;
|
|
232
233
|
protected needResponsiveness(): boolean;
|
|
@@ -260,7 +261,7 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
|
|
|
260
261
|
export declare class FileLoader {
|
|
261
262
|
private fileQuestion;
|
|
262
263
|
private callback;
|
|
263
|
-
constructor(fileQuestion:
|
|
264
|
+
constructor(fileQuestion: QuestionFileModelBase, callback: (status: string, files: any[]) => void);
|
|
264
265
|
loaded: any[];
|
|
265
266
|
load(files: Array<any>): void;
|
|
266
267
|
dispose(): void;
|
|
@@ -96,8 +96,8 @@ export declare class QuestionMatrixModel extends QuestionMatrixBaseModel<MatrixR
|
|
|
96
96
|
*
|
|
97
97
|
* Possible values:
|
|
98
98
|
*
|
|
99
|
-
* - "initial" (default) - Preserves the original order of the `rows` array.
|
|
100
|
-
* - "random" - Arranges matrix rows in random order each time the question is displayed.
|
|
99
|
+
* - `"initial"` (default) - Preserves the original order of the `rows` array.
|
|
100
|
+
* - `"random"` - Arranges matrix rows in random order each time the question is displayed.
|
|
101
101
|
* @see rows
|
|
102
102
|
*/
|
|
103
103
|
rowsOrder: string;
|
|
@@ -29,6 +29,8 @@ export declare class QuestionSignaturePadModel extends QuestionFileModelBase {
|
|
|
29
29
|
private fromUrl;
|
|
30
30
|
private refreshCanvas;
|
|
31
31
|
private updateValueHandler;
|
|
32
|
+
protected loadPreview(newValue: any): void;
|
|
33
|
+
onSurveyLoad(): void;
|
|
32
34
|
initSignaturePad(el: HTMLElement): void;
|
|
33
35
|
destroySignaturePad(el: HTMLElement): void;
|
|
34
36
|
/*
|
|
@@ -151,6 +151,7 @@ export declare var settings: {
|
|
|
151
151
|
* const item = new ItemValue("item1");
|
|
152
152
|
* const itemString = item.toJSON(); // Produces { value: "item1", text: "item1" } instead of "item1"
|
|
153
153
|
* ```
|
|
154
|
+
* @see [settings.parseNumber](https://surveyjs.io/form-library/documentation/api-reference/settings#parseNumber)
|
|
154
155
|
*/
|
|
155
156
|
serialization: {
|
|
156
157
|
itemValueSerializeAsObject: boolean;
|
|
@@ -618,4 +619,28 @@ export declare var settings: {
|
|
|
618
619
|
* ```
|
|
619
620
|
*/
|
|
620
621
|
storeUtcDates: boolean;
|
|
622
|
+
/**
|
|
623
|
+
* A function that allows you to define custom parsing rules for numbers represented as string values.
|
|
624
|
+
*
|
|
625
|
+
* The following code shows a template that you can use to implement the `parseNumber` function:
|
|
626
|
+
*
|
|
627
|
+
* ```js
|
|
628
|
+
* import { settings } from "survey-core";
|
|
629
|
+
*
|
|
630
|
+
* settings.parseNumber = (stringValue, numericValue) => {
|
|
631
|
+
* if (typeof stringValue !== "string" || !stringValue)
|
|
632
|
+
* return numericValue;
|
|
633
|
+
* let parsedNumber = numericValue;
|
|
634
|
+
* // ...
|
|
635
|
+
* // Parsing the number according to custom parsing rules
|
|
636
|
+
* // ...
|
|
637
|
+
* return parsedNumber;
|
|
638
|
+
* };
|
|
639
|
+
* ```
|
|
640
|
+
* @param stringValue A number represented as a string value.
|
|
641
|
+
* @param numericValue A number parsed using a default parsing function. `NaN` if the original string is not a number.
|
|
642
|
+
* @returns A number that results from parsing the string value.
|
|
643
|
+
* @see [settings.serialization](https://surveyjs.io/form-library/documentation/api-reference/settings#serialization)
|
|
644
|
+
*/
|
|
645
|
+
parseNumber: (stringValue: any, numericValue: number) => number;
|
|
621
646
|
};
|
|
@@ -1036,6 +1036,32 @@ export interface PopupVisibleChangedEvent extends QuestionEventMixin {
|
|
|
1036
1036
|
*/
|
|
1037
1037
|
visible: boolean;
|
|
1038
1038
|
}
|
|
1039
|
+
export interface OpenDropdownMenuEvent extends QuestionEventMixin {
|
|
1040
|
+
/**
|
|
1041
|
+
* A question for which the event is raised.
|
|
1042
|
+
*/
|
|
1043
|
+
question: Question;
|
|
1044
|
+
/**
|
|
1045
|
+
* A device type.
|
|
1046
|
+
*/
|
|
1047
|
+
deviceType: "mobile" | "tablet" | "desktop";
|
|
1048
|
+
/**
|
|
1049
|
+
* A Boolean value that indicates whether the current device supports touch gestures.
|
|
1050
|
+
*/
|
|
1051
|
+
hasTouchScreen: boolean;
|
|
1052
|
+
/**
|
|
1053
|
+
* The height of the device screen in pixels.
|
|
1054
|
+
*/
|
|
1055
|
+
screenHeight: number;
|
|
1056
|
+
/**
|
|
1057
|
+
* The width of the device screen in pixels.
|
|
1058
|
+
*/
|
|
1059
|
+
screenWidth: number;
|
|
1060
|
+
/**
|
|
1061
|
+
* A menu type to use for the question: a classic dropdown, a pop-up dialog, or an overlay window. You can modify this parameter's value.
|
|
1062
|
+
*/
|
|
1063
|
+
menuType: "dropdown" | "popup" | "overlay";
|
|
1064
|
+
}
|
|
1039
1065
|
export interface ElementWrapperComponentEventMixin {
|
|
1040
1066
|
element: any;
|
|
1041
1067
|
wrapperName: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { JsonError } from "./jsonobject";
|
|
2
2
|
import { Base, EventBase } from "./base";
|
|
3
|
-
import { ISurvey, ISurveyData, ISurveyImpl, ITextProcessor, IQuestion, IPanel, IElement, IPage, ISurveyErrorOwner, ISurveyElement, IProgressInfo, IFindElement, ISurveyLayoutElement, IPlainDataOptions, LayoutElementContainer, IValueItemCustomPropValues, ILoadFromJSONOptions } from "./base-interfaces";
|
|
3
|
+
import { ISurvey, ISurveyData, ISurveyImpl, ITextProcessor, IQuestion, IPanel, IElement, IPage, ISurveyErrorOwner, ISurveyElement, IProgressInfo, IFindElement, ISurveyLayoutElement, IPlainDataOptions, LayoutElementContainer, IValueItemCustomPropValues, ILoadFromJSONOptions, IDropdownMenuOptions } from "./base-interfaces";
|
|
4
4
|
import { SurveyElementCore } from "./survey-element";
|
|
5
5
|
import { ISurveyTriggerOwner, SurveyTrigger, Trigger } from "./trigger";
|
|
6
6
|
import { CalculatedValue } from "./calculatedValue";
|
|
@@ -18,7 +18,7 @@ import { IAction, Action } from "./actions/action";
|
|
|
18
18
|
import { ActionContainer } from "./actions/container";
|
|
19
19
|
import { QuestionPanelDynamicModel } from "./question_paneldynamic";
|
|
20
20
|
import { Notifier } from "./notifier";
|
|
21
|
-
import { TriggerExecutedEvent, CompletingEvent, CompleteEvent, ShowingPreviewEvent, NavigateToUrlEvent, CurrentPageChangingEvent, CurrentPageChangedEvent, ValueChangingEvent, ValueChangedEvent, VariableChangedEvent, QuestionVisibleChangedEvent, PageVisibleChangedEvent, PanelVisibleChangedEvent, QuestionCreatedEvent, QuestionAddedEvent, QuestionRemovedEvent, PanelAddedEvent, PanelRemovedEvent, PageAddedEvent, ValidateQuestionEvent, SettingQuestionErrorsEvent, ValidatePanelEvent, ErrorCustomTextEvent, ValidatedErrorsOnCurrentPageEvent, ProcessHtmlEvent, GetQuestionTitleEvent, GetTitleTagNameEvent, GetQuestionNoEvent, ProgressTextEvent, TextMarkdownEvent, TextRenderAsEvent, SendResultEvent, GetResultEvent, UploadFilesEvent, DownloadFileEvent, ClearFilesEvent, LoadChoicesFromServerEvent, ProcessTextValueEvent, UpdateQuestionCssClassesEvent, UpdatePanelCssClassesEvent, UpdatePageCssClassesEvent, UpdateChoiceItemCssEvent, AfterRenderSurveyEvent, AfterRenderHeaderEvent, AfterRenderPageEvent, AfterRenderQuestionEvent, AfterRenderQuestionInputEvent, AfterRenderPanelEvent, FocusInQuestionEvent, FocusInPanelEvent, ShowingChoiceItemEvent, ChoicesLazyLoadEvent, GetChoiceDisplayValueEvent, MatrixRowAddedEvent, MatrixBeforeRowAddedEvent, MatrixRowRemovingEvent, MatrixRowRemovedEvent, MatrixAllowRemoveRowEvent, MatrixDetailPanelVisibleChangedEvent, MatrixCellCreatingEvent, MatrixCellCreatedEvent, MatrixAfterCellRenderEvent, MatrixCellValueChangedEvent, MatrixCellValueChangingEvent, MatrixCellValidateEvent, DynamicPanelModifiedEvent, DynamicPanelRemovingEvent, TimerPanelInfoTextEvent, DynamicPanelItemValueChangedEvent, DynamicPanelGetTabTitleEvent, DynamicPanelCurrentIndexChangedEvent, IsAnswerCorrectEvent, DragDropAllowEvent, ScrollingElementToTopEvent, GetQuestionTitleActionsEvent, GetPanelTitleActionsEvent, GetPageTitleActionsEvent, GetPanelFooterActionsEvent, GetMatrixRowActionsEvent, ElementContentVisibilityChangedEvent, GetExpressionDisplayValueEvent, ServerValidateQuestionsEvent, MultipleTextItemAddedEvent, MatrixColumnAddedEvent, GetQuestionDisplayValueEvent, PopupVisibleChangedEvent, ChoicesSearchEvent, OpenFileChooserEvent, ElementWrapperComponentNameEvent, ElementWrapperComponentDataEvent } from "./survey-events-api";
|
|
21
|
+
import { TriggerExecutedEvent, CompletingEvent, CompleteEvent, ShowingPreviewEvent, NavigateToUrlEvent, CurrentPageChangingEvent, CurrentPageChangedEvent, ValueChangingEvent, ValueChangedEvent, VariableChangedEvent, QuestionVisibleChangedEvent, PageVisibleChangedEvent, PanelVisibleChangedEvent, QuestionCreatedEvent, QuestionAddedEvent, QuestionRemovedEvent, PanelAddedEvent, PanelRemovedEvent, PageAddedEvent, ValidateQuestionEvent, SettingQuestionErrorsEvent, ValidatePanelEvent, ErrorCustomTextEvent, ValidatedErrorsOnCurrentPageEvent, ProcessHtmlEvent, GetQuestionTitleEvent, GetTitleTagNameEvent, GetQuestionNoEvent, ProgressTextEvent, TextMarkdownEvent, TextRenderAsEvent, SendResultEvent, GetResultEvent, UploadFilesEvent, DownloadFileEvent, ClearFilesEvent, LoadChoicesFromServerEvent, ProcessTextValueEvent, UpdateQuestionCssClassesEvent, UpdatePanelCssClassesEvent, UpdatePageCssClassesEvent, UpdateChoiceItemCssEvent, AfterRenderSurveyEvent, AfterRenderHeaderEvent, AfterRenderPageEvent, AfterRenderQuestionEvent, AfterRenderQuestionInputEvent, AfterRenderPanelEvent, FocusInQuestionEvent, FocusInPanelEvent, ShowingChoiceItemEvent, ChoicesLazyLoadEvent, GetChoiceDisplayValueEvent, MatrixRowAddedEvent, MatrixBeforeRowAddedEvent, MatrixRowRemovingEvent, MatrixRowRemovedEvent, MatrixAllowRemoveRowEvent, MatrixDetailPanelVisibleChangedEvent, MatrixCellCreatingEvent, MatrixCellCreatedEvent, MatrixAfterCellRenderEvent, MatrixCellValueChangedEvent, MatrixCellValueChangingEvent, MatrixCellValidateEvent, DynamicPanelModifiedEvent, DynamicPanelRemovingEvent, TimerPanelInfoTextEvent, DynamicPanelItemValueChangedEvent, DynamicPanelGetTabTitleEvent, DynamicPanelCurrentIndexChangedEvent, IsAnswerCorrectEvent, DragDropAllowEvent, ScrollingElementToTopEvent, GetQuestionTitleActionsEvent, GetPanelTitleActionsEvent, GetPageTitleActionsEvent, GetPanelFooterActionsEvent, GetMatrixRowActionsEvent, ElementContentVisibilityChangedEvent, GetExpressionDisplayValueEvent, ServerValidateQuestionsEvent, MultipleTextItemAddedEvent, MatrixColumnAddedEvent, GetQuestionDisplayValueEvent, PopupVisibleChangedEvent, ChoicesSearchEvent, OpenFileChooserEvent, ElementWrapperComponentNameEvent, ElementWrapperComponentDataEvent, OpenDropdownMenuEvent } from "./survey-events-api";
|
|
22
22
|
import { QuestionMatrixDropdownModelBase } from "./question_matrixdropdownbase";
|
|
23
23
|
import { QuestionMatrixDynamicModel } from "./question_matrixdynamic";
|
|
24
24
|
import { QuestionFileModel } from "./question_file";
|
|
@@ -710,9 +710,17 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
|
|
|
710
710
|
*/
|
|
711
711
|
onGetExpressionDisplayValue: EventBase<SurveyModel, GetExpressionDisplayValueEvent>;
|
|
712
712
|
/**
|
|
713
|
-
* An event that is raised after the visibility of a popup is changed.
|
|
713
|
+
* An event that is raised after the visibility of a popup is changed.
|
|
714
|
+
*
|
|
715
|
+
* This event can be raised for [Single-](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model) and [Multi-Select Dropdown](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model) questions and [Rating Scale](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model) questions [rendered as drop-down menus](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model#displayMode), and [Multi-Select Matrix](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list) questions that contain columns of the `"dropdown"` or `"tagbox"` [`cellType`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#cellType).
|
|
714
716
|
*/
|
|
715
717
|
onPopupVisibleChanged: EventBase<SurveyModel, PopupVisibleChangedEvent>;
|
|
718
|
+
/**
|
|
719
|
+
* An event that is raised when users open a drop-down menu.
|
|
720
|
+
*
|
|
721
|
+
* This event can be raised for [Single-](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model) and [Multi-Select Dropdown](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model) questions, [Rating Scale](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model) questions [rendered as drop-down menus](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model#displayMode), and [Multi-Select Matrix](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list) questions that contain columns of the `"dropdown"` or `"tagbox"` [`cellType`](https://surveyjs.io/form-library/documentation/api-reference/matrix-table-with-dropdown-list#cellType). Handle this event to change the drop-down menu type for specific questions or device types.
|
|
722
|
+
*/
|
|
723
|
+
onOpenDropdownMenu: EventBase<SurveyModel, OpenDropdownMenuEvent>;
|
|
716
724
|
onElementWrapperComponentName: EventBase<SurveyModel, ElementWrapperComponentNameEvent>;
|
|
717
725
|
onElementWrapperComponentData: EventBase<SurveyModel, ElementWrapperComponentDataEvent>;
|
|
718
726
|
constructor(jsonObj?: any, renderedElement?: any);
|
|
@@ -2761,6 +2769,7 @@ export declare class SurveyModel extends SurveyElementCore implements ISurvey, I
|
|
|
2761
2769
|
removeLayoutElement(layoutElementId: string): ISurveyLayoutElement;
|
|
2762
2770
|
getContainerContent(container: LayoutElementContainer): any[];
|
|
2763
2771
|
processPopupVisiblityChanged(question: Question, popup: PopupModel<any>, visible: boolean): void;
|
|
2772
|
+
processOpenDropdownMenu(question: Question, options: IDropdownMenuOptions): void;
|
|
2764
2773
|
/**
|
|
2765
2774
|
* Applies a specified theme to the survey.
|
|
2766
2775
|
*
|
|
@@ -15,6 +15,7 @@ declare function navigateToUrl(url: string): void;
|
|
|
15
15
|
declare function wrapUrlForBackgroundImage(url: string): string;
|
|
16
16
|
declare function getIconNameFromProxy(iconName: string): string;
|
|
17
17
|
declare function createSvg(size: number | string, width: number, height: number, iconName: string, svgElem: any, title: string): void;
|
|
18
|
+
export declare function getSafeUrl(url: string): string;
|
|
18
19
|
export declare function unwrap<T>(value: T | (() => T)): T;
|
|
19
20
|
export declare function getRenderedSize(val: string | number): number;
|
|
20
21
|
export declare function getRenderedStyleSize(val: string | number): string;
|
|
@@ -163,6 +163,7 @@ export interface ISurvey extends ITextProcessor, ISurveyErrorOwner {
|
|
|
163
163
|
elementContentVisibilityChanged(element: ISurveyElement): void;
|
|
164
164
|
onCorrectQuestionAnswer(question: IQuestion, options: any): void;
|
|
165
165
|
processPopupVisiblityChanged(question: IQuestion, popupModel: PopupModel, visible: boolean): void;
|
|
166
|
+
processOpenDropdownMenu(question: IQuestion, options: IDropdownMenuOptions): void;
|
|
166
167
|
chooseFiles(input: HTMLInputElement, callback: (files: File[]) => void, context?: {
|
|
167
168
|
element: Base;
|
|
168
169
|
item?: any;
|
|
@@ -330,3 +331,10 @@ export interface ISaveToJSONOptions {
|
|
|
330
331
|
storeDefaults?: boolean;
|
|
331
332
|
version?: string;
|
|
332
333
|
}
|
|
334
|
+
export interface IDropdownMenuOptions {
|
|
335
|
+
menuType: "dropdown" | "popup" | "overlay";
|
|
336
|
+
deviceType: "mobile" | "tablet" | "desktop";
|
|
337
|
+
hasTouchScreen: boolean;
|
|
338
|
+
screenHeight: number;
|
|
339
|
+
screenWidth: number;
|
|
340
|
+
}
|
|
@@ -13,6 +13,7 @@ export declare abstract class DragDropCore<T> implements IDragDropEngine {
|
|
|
13
13
|
protected ghostPositionChanged(): void;
|
|
14
14
|
onDragStart: EventBase<DragDropCore<T>>;
|
|
15
15
|
onDragEnd: EventBase<DragDropCore<T>>;
|
|
16
|
+
onDragClear: EventBase<DragDropCore<T>>;
|
|
16
17
|
onBeforeDrop: EventBase<DragDropCore<T>, any>;
|
|
17
18
|
onAfterDrop: EventBase<DragDropCore<T>, any>;
|
|
18
19
|
draggedElement: any;
|
|
@@ -28,6 +28,7 @@ export declare class DropdownListModel extends Base {
|
|
|
28
28
|
private loadQuestionChoices;
|
|
29
29
|
private updateQuestionChoices;
|
|
30
30
|
private updatePopupFocusFirstInputSelector;
|
|
31
|
+
private getDropdownMenuOptions;
|
|
31
32
|
protected createPopup(): void;
|
|
32
33
|
private setFilterStringToListModel;
|
|
33
34
|
private setTextWrapEnabled;
|
|
@@ -77,7 +77,6 @@ export declare class Const extends Operand {
|
|
|
77
77
|
protected getCorrectValue(value: any): any;
|
|
78
78
|
protected isContentEqual(op: Operand): boolean;
|
|
79
79
|
private isQuote;
|
|
80
|
-
private isBooleanValue;
|
|
81
80
|
}
|
|
82
81
|
export declare class Variable extends Const {
|
|
83
82
|
private variableName;
|
|
@@ -118,8 +117,6 @@ export declare class OperandMaker {
|
|
|
118
117
|
static throwInvalidOperatorError(op: string): void;
|
|
119
118
|
static safeToString(operand: Operand, func: (op: Operand) => string): string;
|
|
120
119
|
static toOperandString(value: string): string;
|
|
121
|
-
static isSpaceString(str: string): boolean;
|
|
122
|
-
static isNumeric(value: string): boolean;
|
|
123
120
|
static isBooleanValue(value: string): boolean;
|
|
124
121
|
static countDecimals(value: number): number;
|
|
125
122
|
static plusMinus(a: number, b: number, res: number): number;
|
package/typings/helpers.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export declare class Helpers {
|
|
|
18
18
|
static isValueObject(val: any, excludeArray?: boolean): boolean;
|
|
19
19
|
static isNumber(value: any): boolean;
|
|
20
20
|
static getNumber(value: any): number;
|
|
21
|
+
private static getNumberCore;
|
|
22
|
+
private static isStringHasOperator;
|
|
21
23
|
private static prepareStringToNumber;
|
|
22
24
|
static getMaxLength(maxLength: number, surveyLength: number): any;
|
|
23
25
|
static getRemainingCharacterCounterText(newValue: string | undefined, maxLength: number | null): string;
|
|
@@ -2,11 +2,12 @@ import { IPosition, Rect } from "./utils/popup";
|
|
|
2
2
|
import { CssClassBuilder } from "./utils/cssClassBuilder";
|
|
3
3
|
import { PopupModel } from "./popup";
|
|
4
4
|
import { PopupBaseViewModel } from "./popup-view-model";
|
|
5
|
+
export declare function calculateIsTablet(windowWidth?: number, windowHeight?: number): boolean;
|
|
5
6
|
export declare class PopupDropdownViewModel extends PopupBaseViewModel {
|
|
6
7
|
targetElement?: HTMLElement;
|
|
7
8
|
areaElement?: HTMLElement;
|
|
9
|
+
static readonly tabletSizeBreakpoint = 600;
|
|
8
10
|
private scrollEventCallBack;
|
|
9
|
-
private static readonly tabletSizeBreakpoint;
|
|
10
11
|
private calculateIsTablet;
|
|
11
12
|
private resizeEventCallback;
|
|
12
13
|
private resizeWindowCallback;
|
package/typings/popup.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export declare class PopupModel<T = any> extends Base implements IPopupOptionsBa
|
|
|
41
41
|
isFocusedContainer: boolean;
|
|
42
42
|
cssClass: string;
|
|
43
43
|
title: string;
|
|
44
|
-
overlayDisplayMode: "auto" | "overlay" | "dropdown-overlay";
|
|
44
|
+
overlayDisplayMode: "auto" | "tablet-dropdown-overlay" | "dropdown-overlay" | "plain";
|
|
45
45
|
displayMode: "popup" | "overlay";
|
|
46
46
|
positionMode: PositionMode;
|
|
47
47
|
onVisibilityChanged: EventBase<PopupModel>;
|
|
@@ -56,6 +56,7 @@ export declare class PopupModel<T = any> extends Base implements IPopupOptionsBa
|
|
|
56
56
|
hide(): void;
|
|
57
57
|
recalculatePosition(isResetHeight: boolean): void;
|
|
58
58
|
updateFooterActions(footerActions: Array<IAction>): Array<IAction>;
|
|
59
|
+
updateDisplayMode(menuType: "dropdown" | "popup" | "overlay"): void;
|
|
59
60
|
onHiding(): void;
|
|
60
61
|
dispose(): void;
|
|
61
62
|
}
|
package/typings/question.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HashTable } from "./helpers";
|
|
2
2
|
import { EventBase } from "./base";
|
|
3
|
-
import { IElement, IQuestion, IPanel, IConditionRunner, ISurveyImpl, IPage, ITitleOwner, IProgressInfo, ISurvey, IPlainDataOptions } from "./base-interfaces";
|
|
3
|
+
import { IElement, IQuestion, IPanel, IConditionRunner, ISurveyImpl, IPage, ITitleOwner, IProgressInfo, ISurvey, IPlainDataOptions, IDropdownMenuOptions } from "./base-interfaces";
|
|
4
4
|
import { SurveyElement } from "./survey-element";
|
|
5
5
|
import { SurveyValidator, IValidatorOwner } from "./validator";
|
|
6
6
|
import { TextPreProcessorValue } from "./textPreProcessor";
|
|
@@ -873,6 +873,7 @@ export declare class Question extends SurveyElement<Question> implements IQuesti
|
|
|
873
873
|
set validatedValue(val: any);
|
|
874
874
|
getAllValues(): any;
|
|
875
875
|
processPopupVisiblilityChanged(popupModel: PopupModel, visible: boolean): void;
|
|
876
|
+
processOpenDropdownMenu(options: IDropdownMenuOptions): void;
|
|
876
877
|
protected onTextKeyDownHandler(event: any): void;
|
|
877
878
|
transformToMobileView(): void;
|
|
878
879
|
transformToDesktopView(): void;
|
|
@@ -45,6 +45,8 @@ export declare class QuestionFileModelBase extends Question {
|
|
|
45
45
|
clearOnDeletingContainer(): void;
|
|
46
46
|
protected onCheckForErrors(errors: Array<SurveyError>, isOnValueChanged: boolean): void;
|
|
47
47
|
protected uploadFiles(files: File[]): void;
|
|
48
|
+
protected loadPreview(newValue: any): void;
|
|
49
|
+
protected onChangeQuestionValue(newValue: any): void;
|
|
48
50
|
}
|
|
49
51
|
/**
|
|
50
52
|
* A class that describes the File Upload question type.
|
|
@@ -82,6 +84,9 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
|
|
|
82
84
|
startCameraAction: Action;
|
|
83
85
|
cleanAction: Action;
|
|
84
86
|
actionsContainer: ActionContainer;
|
|
87
|
+
private isFileLoadingValue;
|
|
88
|
+
protected get isFileLoading(): boolean;
|
|
89
|
+
protected set isFileLoading(val: boolean);
|
|
85
90
|
get fileNavigatorVisible(): boolean;
|
|
86
91
|
private get pagesCount();
|
|
87
92
|
get actionsContainerVisible(): boolean;
|
|
@@ -224,9 +229,6 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
|
|
|
224
229
|
protected get camera(): Camera;
|
|
225
230
|
canPreviewImage(fileItem: any): boolean;
|
|
226
231
|
protected loadPreview(newValue: any): void;
|
|
227
|
-
private isFileLoadingValue;
|
|
228
|
-
protected get isFileLoading(): boolean;
|
|
229
|
-
protected set isFileLoading(val: boolean);
|
|
230
232
|
protected getIsQuestionReady(): boolean;
|
|
231
233
|
private allFilesOk;
|
|
232
234
|
private isFileImage;
|
|
@@ -239,7 +241,6 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
|
|
|
239
241
|
get fileRootCss(): string;
|
|
240
242
|
getFileDecoratorCss(): string;
|
|
241
243
|
private onChange;
|
|
242
|
-
protected onChangeQuestionValue(newValue: any): void;
|
|
243
244
|
protected calcCssClasses(css: any): any;
|
|
244
245
|
onSurveyLoad(): void;
|
|
245
246
|
protected needResponsiveness(): boolean;
|
|
@@ -273,7 +274,7 @@ export declare class QuestionFileModel extends QuestionFileModelBase {
|
|
|
273
274
|
export declare class FileLoader {
|
|
274
275
|
private fileQuestion;
|
|
275
276
|
private callback;
|
|
276
|
-
constructor(fileQuestion:
|
|
277
|
+
constructor(fileQuestion: QuestionFileModelBase, callback: (status: string, files: any[]) => void);
|
|
277
278
|
loaded: any[];
|
|
278
279
|
load(files: Array<any>): void;
|
|
279
280
|
dispose(): void;
|
|
@@ -100,8 +100,8 @@ export declare class QuestionMatrixModel extends QuestionMatrixBaseModel<MatrixR
|
|
|
100
100
|
*
|
|
101
101
|
* Possible values:
|
|
102
102
|
*
|
|
103
|
-
* - "initial" (default) - Preserves the original order of the `rows` array.
|
|
104
|
-
* - "random" - Arranges matrix rows in random order each time the question is displayed.
|
|
103
|
+
* - `"initial"` (default) - Preserves the original order of the `rows` array.
|
|
104
|
+
* - `"random"` - Arranges matrix rows in random order each time the question is displayed.
|
|
105
105
|
* @see rows
|
|
106
106
|
*/
|
|
107
107
|
get rowsOrder(): string;
|
|
@@ -29,6 +29,8 @@ export declare class QuestionSignaturePadModel extends QuestionFileModelBase {
|
|
|
29
29
|
private fromUrl;
|
|
30
30
|
private refreshCanvas;
|
|
31
31
|
private updateValueHandler;
|
|
32
|
+
protected loadPreview(newValue: any): void;
|
|
33
|
+
onSurveyLoad(): void;
|
|
32
34
|
initSignaturePad(el: HTMLElement): void;
|
|
33
35
|
destroySignaturePad(el: HTMLElement): void;
|
|
34
36
|
/**
|
package/typings/settings.d.ts
CHANGED
|
@@ -151,6 +151,7 @@ export declare var settings: {
|
|
|
151
151
|
* const item = new ItemValue("item1");
|
|
152
152
|
* const itemString = item.toJSON(); // Produces { value: "item1", text: "item1" } instead of "item1"
|
|
153
153
|
* ```
|
|
154
|
+
* @see [settings.parseNumber](https://surveyjs.io/form-library/documentation/api-reference/settings#parseNumber)
|
|
154
155
|
*/
|
|
155
156
|
serialization: {
|
|
156
157
|
itemValueSerializeAsObject: boolean;
|
|
@@ -618,4 +619,28 @@ export declare var settings: {
|
|
|
618
619
|
* ```
|
|
619
620
|
*/
|
|
620
621
|
storeUtcDates: boolean;
|
|
622
|
+
/**
|
|
623
|
+
* A function that allows you to define custom parsing rules for numbers represented as string values.
|
|
624
|
+
*
|
|
625
|
+
* The following code shows a template that you can use to implement the `parseNumber` function:
|
|
626
|
+
*
|
|
627
|
+
* ```js
|
|
628
|
+
* import { settings } from "survey-core";
|
|
629
|
+
*
|
|
630
|
+
* settings.parseNumber = (stringValue, numericValue) => {
|
|
631
|
+
* if (typeof stringValue !== "string" || !stringValue)
|
|
632
|
+
* return numericValue;
|
|
633
|
+
* let parsedNumber = numericValue;
|
|
634
|
+
* // ...
|
|
635
|
+
* // Parsing the number according to custom parsing rules
|
|
636
|
+
* // ...
|
|
637
|
+
* return parsedNumber;
|
|
638
|
+
* };
|
|
639
|
+
* ```
|
|
640
|
+
* @param stringValue A number represented as a string value.
|
|
641
|
+
* @param numericValue A number parsed using a default parsing function. `NaN` if the original string is not a number.
|
|
642
|
+
* @returns A number that results from parsing the string value.
|
|
643
|
+
* @see [settings.serialization](https://surveyjs.io/form-library/documentation/api-reference/settings#serialization)
|
|
644
|
+
*/
|
|
645
|
+
parseNumber: (stringValue: any, numericValue: number) => number;
|
|
621
646
|
};
|