@acorex/components 22.0.0-next.3 → 22.0.0-next.31
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/combo-box/README.md +26 -0
- package/fesm2022/acorex-components-calendar.mjs +10 -12
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-combo-box.mjs +237 -0
- package/fesm2022/acorex-components-combo-box.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs +50 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs.map +1 -0
- package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs → acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs} +2 -2
- package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs.map → acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs.map} +1 -1
- package/fesm2022/acorex-components-conversation.mjs +1104 -6411
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +42 -36
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +42 -12
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +358 -319
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +11 -1
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +2 -2
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +3 -2
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-file-viewer.mjs +346 -125
- package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-grid-layout-builder.mjs +178 -36
- package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +2 -2
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +211 -74
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box.mjs +30 -29
- package/fesm2022/acorex-components-number-box.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +2 -2
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/package.json +7 -3
- package/types/acorex-components-combo-box.d.ts +114 -0
- package/types/acorex-components-conversation.d.ts +136 -56
- package/types/acorex-components-datetime-box.d.ts +16 -4
- package/types/acorex-components-datetime-input.d.ts +74 -71
- package/types/acorex-components-file-viewer.d.ts +109 -17
- package/types/acorex-components-grid-layout-builder.d.ts +29 -2
- package/types/acorex-components-menu.d.ts +26 -4
- package/types/acorex-components-number-box.d.ts +3 -1
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs +0 -106
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs.map +0 -1
|
@@ -37,6 +37,7 @@ declare const AXDateTimeBoxComponent_base: polytype.Polytype.ClusteredConstructo
|
|
|
37
37
|
* @category Components
|
|
38
38
|
*/
|
|
39
39
|
declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
|
|
40
|
+
private readonly defaultConfig;
|
|
40
41
|
/**
|
|
41
42
|
* @ignore
|
|
42
43
|
*/
|
|
@@ -56,7 +57,10 @@ declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
|
|
|
56
57
|
*/
|
|
57
58
|
formatChange: EventEmitter<string>;
|
|
58
59
|
/**
|
|
59
|
-
* Indicates whether typing is allowed in the
|
|
60
|
+
* Indicates whether typing is allowed in the input.
|
|
61
|
+
* When false, clicking the input (or the calendar icon) opens the picker.
|
|
62
|
+
* When true, the input is for typing and the picker opens from the calendar button.
|
|
63
|
+
* Defaults to `AX_DATETIME_INPUT_CONFIG.allowTyping` when not set on the instance.
|
|
60
64
|
*
|
|
61
65
|
* @defaultValue false
|
|
62
66
|
*/
|
|
@@ -91,7 +95,7 @@ declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
|
|
|
91
95
|
protected _editingDateObj: _angular_core.WritableSignal<Date>;
|
|
92
96
|
protected readonly _calendarSystem: _angular_core.Signal<string>;
|
|
93
97
|
protected readonly _resolvedFormat: _angular_core.Signal<string>;
|
|
94
|
-
protected readonly _classicDateFields: _acorex_components_datetime_box.AXDateTimeBoxClassicField[]
|
|
98
|
+
protected readonly _classicDateFields: _angular_core.Signal<_acorex_components_datetime_box.AXDateTimeBoxClassicField[]>;
|
|
95
99
|
protected readonly _classicTimeFields: _acorex_components_datetime_box.AXDateTimeBoxClassicField[];
|
|
96
100
|
private readonly _classicTimeOptions;
|
|
97
101
|
protected _classicDate: _angular_core.Signal<dist_packages_core_types_acorex_core_date_time.AXDateTime>;
|
|
@@ -125,7 +129,13 @@ declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
|
|
|
125
129
|
text: string;
|
|
126
130
|
}[];
|
|
127
131
|
/**
|
|
128
|
-
*
|
|
132
|
+
* Syncs typed input values into the box (and the picker via `_editingDateObj`).
|
|
133
|
+
* @ignore
|
|
134
|
+
*/
|
|
135
|
+
protected _handleInputModelChange(value: Date | null): void;
|
|
136
|
+
/**
|
|
137
|
+
* Syncs picker selection into the box (and the input via `_editingDateObj`).
|
|
138
|
+
* @ignore
|
|
129
139
|
*/
|
|
130
140
|
protected _handlePickerModelChange(value: Date | null): void;
|
|
131
141
|
/**
|
|
@@ -163,7 +173,9 @@ declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
|
|
|
163
173
|
*/
|
|
164
174
|
private _readSelectValue;
|
|
165
175
|
/**
|
|
166
|
-
*
|
|
176
|
+
* When typing is disabled, open the picker on input click.
|
|
177
|
+
* When typing is enabled, keep the picker closed so the user can type.
|
|
178
|
+
* @ignore
|
|
167
179
|
*/
|
|
168
180
|
protected _handleInputOnClick(): void;
|
|
169
181
|
private get __hostName();
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
2
3
|
import { MXInputBaseValueComponent, AXClickEvent } from '@acorex/cdk/common';
|
|
3
4
|
import { AXDateTimePickerType } from '@acorex/components/calendar';
|
|
5
|
+
import { AXLocaleProfile } from '@acorex/core/locale';
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
|
-
* A component for date and time input with
|
|
8
|
+
* A component for date and time input with segment-based typing, keyboard navigation,
|
|
9
|
+
* and calendar-aware formatting (gregorian and solar-hijri).
|
|
7
10
|
*
|
|
8
11
|
* @category Components
|
|
9
12
|
*/
|
|
10
13
|
declare class AXDateTimeInputComponent extends MXInputBaseValueComponent<Date> {
|
|
11
14
|
#private;
|
|
12
|
-
private platformService;
|
|
13
|
-
private formatService;
|
|
14
15
|
private localeService;
|
|
15
16
|
private calendarService;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
*/
|
|
17
|
+
private readonly defaultConfig;
|
|
18
|
+
/** @ignore */
|
|
19
19
|
private readonly _editingParts;
|
|
20
|
-
/**
|
|
21
|
-
* @ignore
|
|
22
|
-
*/
|
|
20
|
+
/** @ignore */
|
|
23
21
|
protected _editingText: _angular_core.WritableSignal<string>;
|
|
22
|
+
/** @ignore */
|
|
23
|
+
private _inputChars;
|
|
24
|
+
/** @ignore */
|
|
25
|
+
private _activePart;
|
|
24
26
|
/**
|
|
25
|
-
*
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Indicates whether typing is allowed in the input field.
|
|
27
|
+
* When true, the user can type digits and navigate segments with the keyboard.
|
|
28
|
+
* When false, keyboard input is blocked (used by datetime-box picker mode).
|
|
29
|
+
* Defaults to `AX_DATETIME_INPUT_CONFIG.allowTyping` when not set on the instance.
|
|
30
30
|
* @defaultValue false
|
|
31
31
|
*/
|
|
32
32
|
allowTyping: _angular_core.InputSignal<boolean>;
|
|
@@ -34,95 +34,97 @@ declare class AXDateTimeInputComponent extends MXInputBaseValueComponent<Date> {
|
|
|
34
34
|
* @description The calendar type to use for the datetime input.
|
|
35
35
|
*/
|
|
36
36
|
calendar: _angular_core.InputSignal<string>;
|
|
37
|
-
protected readonly _calendarSystem: _angular_core.Signal<string>;
|
|
38
|
-
private _activePart;
|
|
39
|
-
private _editingDate;
|
|
40
|
-
/**
|
|
41
|
-
* @ignore
|
|
42
|
-
*/
|
|
43
|
-
private input;
|
|
44
37
|
minValue: _angular_core.InputSignal<Date>;
|
|
45
38
|
maxValue: _angular_core.InputSignal<Date>;
|
|
46
39
|
/**
|
|
47
|
-
* Emitted when a click event occurs on the datetime
|
|
40
|
+
* Emitted when a click event occurs on the datetime input.
|
|
48
41
|
* @event
|
|
49
42
|
*/
|
|
50
43
|
onClick: _angular_core.OutputEmitterRef<AXClickEvent>;
|
|
51
44
|
picker: _angular_core.InputSignal<AXDateTimePickerType>;
|
|
52
|
-
protected readonly _resolvedFormat: _angular_core.Signal<string>;
|
|
53
45
|
/**
|
|
54
46
|
* @deprecated use locale & mode instead
|
|
55
47
|
*/
|
|
56
48
|
format: _angular_core.InputSignal<string>;
|
|
57
|
-
|
|
49
|
+
protected readonly _calendarSystem: _angular_core.Signal<string>;
|
|
50
|
+
protected readonly _resolvedFormat: _angular_core.Signal<string>;
|
|
51
|
+
/** @ignore */
|
|
52
|
+
protected readonly _isHijriRtl: _angular_core.Signal<boolean>;
|
|
53
|
+
/** @ignore */
|
|
54
|
+
private _editingDate;
|
|
55
|
+
/** @ignore */
|
|
56
|
+
private inputRef;
|
|
57
|
+
/** @ignore */
|
|
58
|
+
private get inputElement();
|
|
58
59
|
/**
|
|
59
60
|
* @description check if page is in rtl or ltr
|
|
60
61
|
*/
|
|
61
|
-
protected isRtl: _angular_core.
|
|
62
|
+
protected readonly isRtl: _angular_core.Signal<boolean>;
|
|
62
63
|
/**
|
|
63
|
-
*
|
|
64
|
-
|
|
65
|
-
protected ngOnInit(): void;
|
|
66
|
-
/**
|
|
67
|
-
* @ignore
|
|
64
|
+
* Formats a part using the calendar already attached to the AXDateTime.
|
|
65
|
+
* @ignore
|
|
68
66
|
*/
|
|
67
|
+
private _formatPart;
|
|
68
|
+
/** @ignore */
|
|
69
|
+
private _detectParts;
|
|
70
|
+
/** @ignore */
|
|
69
71
|
private _getOrderedParts;
|
|
70
|
-
/**
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
/** @ignore */
|
|
73
|
+
private _getNavigationParts;
|
|
74
|
+
/** @ignore */
|
|
73
75
|
private _clearInputBuffer;
|
|
74
|
-
/**
|
|
75
|
-
* @ignore
|
|
76
|
-
*/
|
|
76
|
+
/** @ignore */
|
|
77
77
|
private _updateText;
|
|
78
|
-
/**
|
|
79
|
-
* Sets the internal date value, adjusting it based on editing parts.
|
|
80
|
-
* @param value - The date to set. Returns `undefined` if no value is provided.
|
|
81
|
-
* @ignore
|
|
82
|
-
*/
|
|
83
78
|
/**
|
|
84
79
|
* Handles changes to the internal date value, updating editing parts and text representation.
|
|
85
|
-
*
|
|
86
|
-
* @param value - The new date value. If not provided, resets editing parts.
|
|
87
80
|
* @ignore
|
|
88
81
|
*/
|
|
89
82
|
internalValueChanged(value?: Date): void;
|
|
90
83
|
/**
|
|
91
|
-
*
|
|
92
|
-
|
|
93
|
-
_handleOnKeydownEvent(e: KeyboardEvent): void;
|
|
94
|
-
/**
|
|
95
|
-
* @ignore
|
|
96
|
-
*/
|
|
97
|
-
_handleKeyUpEvent(): void;
|
|
98
|
-
/**
|
|
99
|
-
* @ignore
|
|
84
|
+
* Normalizes Persian (U+06F0-U+06F9) and Arabic-Indic (U+0660-U+0669) digits to ASCII.
|
|
85
|
+
* @ignore
|
|
100
86
|
*/
|
|
87
|
+
private _normalizeDigit;
|
|
88
|
+
/** @ignore */
|
|
89
|
+
protected _handleOnKeydownEvent(e: KeyboardEvent): void;
|
|
90
|
+
/** @ignore */
|
|
91
|
+
private _handleDigitInput;
|
|
92
|
+
/** @ignore */
|
|
93
|
+
private _applyEditingDate;
|
|
94
|
+
/** @ignore */
|
|
95
|
+
protected _handleKeyUpEvent(): void;
|
|
96
|
+
/** @ignore */
|
|
101
97
|
protected _handleFocusEvent(e: FocusEvent): void;
|
|
102
|
-
/**
|
|
103
|
-
* @ignore
|
|
104
|
-
*/
|
|
98
|
+
/** @ignore */
|
|
105
99
|
protected _handleBlurEvent(e: FocusEvent): void;
|
|
106
|
-
/**
|
|
107
|
-
|
|
108
|
-
|
|
100
|
+
/** @ignore */
|
|
101
|
+
private _clampToRange;
|
|
102
|
+
/** @ignore */
|
|
109
103
|
protected _handleOnInputClickEvent(e: MouseEvent): void;
|
|
110
|
-
/**
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
private
|
|
114
|
-
/**
|
|
115
|
-
* @ignore
|
|
116
|
-
*/
|
|
104
|
+
/** @ignore */
|
|
105
|
+
private _selectFirstPart;
|
|
106
|
+
/** @ignore */
|
|
107
|
+
private _ensureEditableText;
|
|
108
|
+
/** @ignore */
|
|
117
109
|
private _highlightActivePart;
|
|
118
|
-
/**
|
|
119
|
-
* @ignore
|
|
120
|
-
*/
|
|
110
|
+
/** @ignore */
|
|
121
111
|
private _detectValueChanges;
|
|
122
|
-
private get __hostName();
|
|
123
112
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDateTimeInputComponent, never>;
|
|
124
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXDateTimeInputComponent, "ax-datetime-input", never, { "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "state": { "alias": "state"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "allowTyping": { "alias": "allowTyping"; "required": false; "isSignal": true; }; "calendar": { "alias": "calendar"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "picker": { "alias": "picker"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "stateChange": "stateChange"; "onValueChanged": "onValueChanged"; "onBlur": "onBlur"; "onFocus": "onFocus"; "readonlyChange": "readonlyChange"; "disabledChange": "disabledChange"; "onClick": "onClick"; }, never, ["ax-validation-rule"], true, never>;
|
|
113
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXDateTimeInputComponent, "ax-datetime-input", never, { "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "state": { "alias": "state"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "allowTyping": { "alias": "allowTyping"; "required": false; "isSignal": true; }; "calendar": { "alias": "calendar"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "picker": { "alias": "picker"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "stateChange": "stateChange"; "onValueChanged": "onValueChanged"; "onBlur": "onBlur"; "onFocus": "onFocus"; "readonlyChange": "readonlyChange"; "disabledChange": "disabledChange"; "onKeyDown": "onKeyDown"; "onKeyUp": "onKeyUp"; "onKeyPress": "onKeyPress"; "onClick": "onClick"; }, never, ["ax-validation-rule"], true, never>;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
interface AXDateTimeInputConfig {
|
|
117
|
+
allowTyping: boolean;
|
|
125
118
|
}
|
|
119
|
+
declare const AXDateTimeInputDefaultConfig: AXDateTimeInputConfig;
|
|
120
|
+
declare const AX_DATETIME_INPUT_CONFIG: InjectionToken<AXDateTimeInputConfig>;
|
|
121
|
+
declare function resolveDateTimeInputFormat(options: {
|
|
122
|
+
customFormat: string | null | undefined;
|
|
123
|
+
calendarSystem: string;
|
|
124
|
+
picker: AXDateTimePickerType;
|
|
125
|
+
isRtl: boolean;
|
|
126
|
+
localeFormats: AXLocaleProfile['formats'];
|
|
127
|
+
}): string;
|
|
126
128
|
|
|
127
129
|
declare class AXDateTimeInputModule {
|
|
128
130
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDateTimeInputModule, never>;
|
|
@@ -130,4 +132,5 @@ declare class AXDateTimeInputModule {
|
|
|
130
132
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXDateTimeInputModule>;
|
|
131
133
|
}
|
|
132
134
|
|
|
133
|
-
export { AXDateTimeInputComponent, AXDateTimeInputModule };
|
|
135
|
+
export { AXDateTimeInputComponent, AXDateTimeInputDefaultConfig, AXDateTimeInputModule, AX_DATETIME_INPUT_CONFIG, resolveDateTimeInputFormat };
|
|
136
|
+
export type { AXDateTimeInputConfig };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { OnDestroy, TemplateRef, Type, Provider } from '@angular/core';
|
|
3
|
+
import { AXComponentContent, AXComponentInputs } from '@acorex/core/components';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import { AXStyleColorType, AXComponentClosedPromise } from '@acorex/cdk/common';
|
|
3
6
|
import * as _acorex_core_file from '@acorex/core/file';
|
|
4
7
|
import { AXFileTypeExtensionHint, AXFileType, AXFileTypeViewComponent } from '@acorex/core/file';
|
|
5
|
-
import { AXStyleColorType } from '@acorex/cdk/common';
|
|
6
8
|
import { SafeResourceUrl } from '@angular/platform-browser';
|
|
7
9
|
|
|
8
10
|
/** Single item displayed in a file-viewer carousel. */
|
|
@@ -36,34 +38,35 @@ declare class AXFileViewerService {
|
|
|
36
38
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXFileViewerService>;
|
|
37
39
|
}
|
|
38
40
|
|
|
39
|
-
/** Registers file-viewer components on standard file-type catalog entries. */
|
|
40
|
-
declare function provideFileViewer(): Provider[];
|
|
41
|
-
|
|
42
41
|
/** Infers a file-type catalog name from the item. */
|
|
43
42
|
declare function resolveFileViewerFileType(item: AXFileViewerItem): string;
|
|
44
43
|
/** Builds an extension hint from item metadata. */
|
|
45
44
|
declare function buildFileViewerExtensionHint(item: AXFileViewerItem): AXFileTypeExtensionHint | undefined;
|
|
46
45
|
|
|
47
|
-
declare function createFileViewerFileTypes(): AXFileType[];
|
|
48
|
-
|
|
49
46
|
declare class AXFileViewerContainerComponent implements OnDestroy {
|
|
50
47
|
#private;
|
|
51
48
|
readonly items: _angular_core.InputSignal<AXFileViewerItem[]>;
|
|
49
|
+
readonly startIndex: _angular_core.InputSignal<number>;
|
|
52
50
|
readonly thumbnail: _angular_core.InputSignal<boolean>;
|
|
53
51
|
readonly pagination: _angular_core.InputSignal<boolean>;
|
|
54
52
|
readonly download: _angular_core.InputSignal<boolean>;
|
|
55
53
|
readonly fullscreen: _angular_core.InputSignal<boolean>;
|
|
54
|
+
/** When true, opens in a gallery overlay and closes when fullscreen exits. */
|
|
55
|
+
readonly galleryMode: _angular_core.InputSignal<boolean>;
|
|
56
|
+
readonly headerContent: _angular_core.InputSignal<AXComponentContent>;
|
|
57
|
+
readonly headerContentInputs: _angular_core.InputSignal<AXComponentInputs>;
|
|
58
|
+
readonly fallbackContent: _angular_core.InputSignal<AXComponentContent>;
|
|
59
|
+
readonly fallbackContentInputs: _angular_core.InputSignal<AXComponentInputs>;
|
|
56
60
|
/** External loading flag — show overlay while parent data is being fetched. */
|
|
57
61
|
readonly loading: _angular_core.InputSignal<boolean>;
|
|
62
|
+
readonly fullscreenClosed: _angular_core.OutputEmitterRef<void>;
|
|
58
63
|
readonly service: AXFileViewerService;
|
|
59
64
|
private readonly host;
|
|
60
|
-
private readonly zIndexService;
|
|
61
65
|
private readonly fullScreenService;
|
|
62
66
|
private readonly mainCarouselRef;
|
|
63
67
|
private readonly thumbCarouselRef;
|
|
64
|
-
readonly fullscreenActive: _angular_core.WritableSignal<boolean>;
|
|
65
|
-
private zToken;
|
|
66
68
|
private initToken;
|
|
69
|
+
readonly isFullscreenActive: _angular_core.WritableSignal<boolean>;
|
|
67
70
|
/** True while carousels are being (re)initialized. */
|
|
68
71
|
readonly initializing: _angular_core.WritableSignal<boolean>;
|
|
69
72
|
readonly isBusy: _angular_core.Signal<boolean>;
|
|
@@ -74,34 +77,123 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
|
|
|
74
77
|
readonly currentTypeLabel: _angular_core.Signal<string>;
|
|
75
78
|
readonly currentTypeColor: _angular_core.Signal<AXStyleColorType>;
|
|
76
79
|
readonly slideCounter: _angular_core.Signal<string>;
|
|
80
|
+
readonly headerTemplateContent: _angular_core.Signal<TemplateRef<any>>;
|
|
81
|
+
readonly headerComponentContent: _angular_core.Signal<Type<unknown>>;
|
|
82
|
+
readonly hasHeaderCenterContent: _angular_core.Signal<boolean>;
|
|
83
|
+
readonly headerContentContext: _angular_core.Signal<{
|
|
84
|
+
item: AXFileViewerItem;
|
|
85
|
+
items: AXFileViewerItem[];
|
|
86
|
+
selectedIndex: number;
|
|
87
|
+
slideCounter: string;
|
|
88
|
+
}>;
|
|
77
89
|
readonly resolveFileType: typeof resolveFileViewerFileType;
|
|
78
90
|
resolveTypeLabel(item: AXFileViewerItem): string;
|
|
79
91
|
formatSize(size?: number): string;
|
|
80
92
|
private readonly mainCarouselOptions;
|
|
81
93
|
private readonly thumbnailCarouselOptions;
|
|
82
|
-
|
|
83
|
-
|
|
94
|
+
toggleFullscreen(): void;
|
|
95
|
+
enterFullscreen(): void;
|
|
96
|
+
/** @param emitGalleryClose When false, skips gallery close notification (used during service teardown). */
|
|
97
|
+
exitFullscreen(emitGalleryClose?: boolean): void;
|
|
98
|
+
closeGallery(): void;
|
|
84
99
|
private initCarousels;
|
|
85
100
|
private readonly onSlideChange;
|
|
86
101
|
next(): void;
|
|
87
102
|
prev(): void;
|
|
88
103
|
goToIndex(index: number, speed?: number): void;
|
|
89
|
-
toggleFullscreen(): void;
|
|
90
104
|
downloadCurrent(): Promise<void>;
|
|
91
105
|
ngOnDestroy(): void;
|
|
92
106
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerContainerComponent, never>;
|
|
93
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerContainerComponent, "ax-file-viewer-container", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "thumbnail": { "alias": "thumbnail"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "download": { "alias": "download"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never,
|
|
107
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerContainerComponent, "ax-file-viewer-container", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "startIndex": { "alias": "startIndex"; "required": false; "isSignal": true; }; "thumbnail": { "alias": "thumbnail"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "download": { "alias": "download"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "galleryMode": { "alias": "galleryMode"; "required": false; "isSignal": true; }; "headerContent": { "alias": "headerContent"; "required": false; "isSignal": true; }; "headerContentInputs": { "alias": "headerContentInputs"; "required": false; "isSignal": true; }; "fallbackContent": { "alias": "fallbackContent"; "required": false; "isSignal": true; }; "fallbackContentInputs": { "alias": "fallbackContentInputs"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "fullscreenClosed": "fullscreenClosed"; }, never, never, true, never>;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
interface AXFileViewerGalleryConfig {
|
|
111
|
+
items: AXFileViewerItem[];
|
|
112
|
+
startIndex?: number;
|
|
113
|
+
thumbnail?: boolean;
|
|
114
|
+
download?: boolean;
|
|
115
|
+
loading?: boolean;
|
|
116
|
+
panelClass?: string[];
|
|
117
|
+
headerContent?: AXComponentContent | null;
|
|
118
|
+
headerContentInputs?: AXComponentInputs | null;
|
|
119
|
+
fallbackContent?: AXComponentContent | null;
|
|
120
|
+
fallbackContentInputs?: AXComponentInputs | null;
|
|
121
|
+
}
|
|
122
|
+
interface AXFileViewerGalleryRef<TResult = any> {
|
|
123
|
+
close: (data?: TResult) => void;
|
|
124
|
+
setInputs: (values: AXComponentInputs) => void;
|
|
125
|
+
bringToFront: () => void;
|
|
126
|
+
onClose: Subject<TResult>;
|
|
127
|
+
componentInstance?: AXFileViewerContainerComponent;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/** Opens {@link AXFileViewerContainerComponent} in fullscreen gallery mode. */
|
|
131
|
+
declare class AXFileViewerGalleryService {
|
|
132
|
+
private readonly galleryList;
|
|
133
|
+
private readonly overlayService;
|
|
134
|
+
/**
|
|
135
|
+
* Opens a file viewer gallery in fullscreen.
|
|
136
|
+
* @param config - Gallery configuration
|
|
137
|
+
* @returns Promise that resolves when the gallery is closed
|
|
138
|
+
*/
|
|
139
|
+
open(config: AXFileViewerGalleryConfig): AXComponentClosedPromise;
|
|
140
|
+
/**
|
|
141
|
+
* Closes a gallery by its ID.
|
|
142
|
+
* @param id - The gallery ID to close
|
|
143
|
+
* @param data - Optional data to pass to the close event
|
|
144
|
+
*/
|
|
145
|
+
close<TResult = unknown>(id: number, data?: TResult): void;
|
|
146
|
+
/**
|
|
147
|
+
* Sets input values for a gallery by its ID.
|
|
148
|
+
* @param id - The gallery ID
|
|
149
|
+
* @param values - Object containing input values to set
|
|
150
|
+
*/
|
|
151
|
+
setInputs(id: number, values: AXComponentInputs): void;
|
|
152
|
+
/**
|
|
153
|
+
* Brings a gallery to the front of all other overlays.
|
|
154
|
+
* @param id - The gallery ID to bring to front
|
|
155
|
+
*/
|
|
156
|
+
bringToFront(id: number): void;
|
|
157
|
+
private openInternal;
|
|
158
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerGalleryService, never>;
|
|
159
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXFileViewerGalleryService>;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** Registers file-viewer components on standard file-type catalog entries. */
|
|
163
|
+
declare function provideFileViewer(): Provider[];
|
|
164
|
+
|
|
165
|
+
declare function createFileViewerFileTypes(): AXFileType[];
|
|
166
|
+
|
|
167
|
+
/** Optional center header slot component for use with {@link headerContent}. */
|
|
168
|
+
declare class AXFileViewerHeaderPlaceholderComponent {
|
|
169
|
+
readonly slideCounter: _angular_core.InputSignal<string>;
|
|
170
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerHeaderPlaceholderComponent, never>;
|
|
171
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerHeaderPlaceholderComponent, "ax-file-viewer-header-placeholder", never, { "slideCounter": { "alias": "slideCounter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
94
172
|
}
|
|
95
173
|
|
|
96
174
|
declare class AXFileViewerSlideComponent {
|
|
97
175
|
readonly item: _angular_core.InputSignal<AXFileViewerItem>;
|
|
98
176
|
readonly index: _angular_core.InputSignal<number>;
|
|
177
|
+
readonly fallbackContent: _angular_core.InputSignal<AXComponentContent>;
|
|
178
|
+
readonly fallbackContentInputs: _angular_core.InputSignal<AXComponentInputs>;
|
|
99
179
|
private readonly service;
|
|
100
180
|
readonly fileTypeName: _angular_core.Signal<string>;
|
|
101
181
|
readonly extensionHint: _angular_core.Signal<_acorex_core_file.AXFileTypeExtensionHint>;
|
|
102
182
|
readonly viewPayload: _angular_core.Signal<AXFileViewerViewPayload>;
|
|
183
|
+
readonly fallbackTemplateContent: _angular_core.Signal<TemplateRef<any>>;
|
|
184
|
+
readonly fallbackComponentContent: _angular_core.Signal<Type<unknown>>;
|
|
185
|
+
readonly useCustomFallback: _angular_core.Signal<boolean>;
|
|
186
|
+
readonly fallbackContentContext: _angular_core.Signal<{
|
|
187
|
+
payload: AXFileViewerViewPayload;
|
|
188
|
+
item: AXFileViewerItem;
|
|
189
|
+
index: number;
|
|
190
|
+
active: boolean;
|
|
191
|
+
}>;
|
|
192
|
+
readonly fallbackComponentInputs: _angular_core.Signal<{
|
|
193
|
+
payload: AXFileViewerViewPayload;
|
|
194
|
+
}>;
|
|
103
195
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerSlideComponent, never>;
|
|
104
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerSlideComponent, "ax-file-viewer-slide", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "index": { "alias": "index"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
196
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerSlideComponent, "ax-file-viewer-slide", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "index": { "alias": "index"; "required": true; "isSignal": true; }; "fallbackContent": { "alias": "fallbackContent"; "required": false; "isSignal": true; }; "fallbackContentInputs": { "alias": "fallbackContentInputs"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
105
197
|
}
|
|
106
198
|
|
|
107
199
|
declare class AXFileViewerThumbPreviewComponent {
|
|
@@ -176,5 +268,5 @@ declare class AXFileViewerFileFallbackComponent implements AXFileTypeViewCompone
|
|
|
176
268
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerFileFallbackComponent, "ax-file-viewer-fallback", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
177
269
|
}
|
|
178
270
|
|
|
179
|
-
export { AXFileViewerAudioComponent, AXFileViewerContainerComponent, AXFileViewerFileFallbackComponent, AXFileViewerImageComponent, AXFileViewerPdfComponent, AXFileViewerService, AXFileViewerSlideComponent, AXFileViewerThumbPreviewComponent, AXFileViewerThumbnailsComponent, AXFileViewerVideoComponent, buildFileViewerExtensionHint, createFileViewerFileTypes, provideFileViewer, resolveFileViewerFileType };
|
|
180
|
-
export type { AXFileViewerItem, AXFileViewerViewPayload };
|
|
271
|
+
export { AXFileViewerAudioComponent, AXFileViewerContainerComponent, AXFileViewerFileFallbackComponent, AXFileViewerGalleryService, AXFileViewerHeaderPlaceholderComponent, AXFileViewerImageComponent, AXFileViewerPdfComponent, AXFileViewerService, AXFileViewerSlideComponent, AXFileViewerThumbPreviewComponent, AXFileViewerThumbnailsComponent, AXFileViewerVideoComponent, buildFileViewerExtensionHint, createFileViewerFileTypes, provideFileViewer, resolveFileViewerFileType };
|
|
272
|
+
export type { AXFileViewerGalleryConfig, AXFileViewerGalleryRef, AXFileViewerItem, AXFileViewerViewPayload };
|
|
@@ -5,6 +5,8 @@ import { NXEvent, NXComponent } from '@acorex/cdk/common';
|
|
|
5
5
|
import { Subscription } from 'rxjs';
|
|
6
6
|
import * as gridstack from 'gridstack';
|
|
7
7
|
|
|
8
|
+
/** Grid size preset as `[width, height]` in column/row units. */
|
|
9
|
+
type AXGridLayoutSize = readonly [width: number, height: number];
|
|
8
10
|
interface AXGridLayoutPosition {
|
|
9
11
|
/** widget position x (default?: 0) */
|
|
10
12
|
x?: number;
|
|
@@ -22,6 +24,11 @@ interface AXGridLayoutPosition {
|
|
|
22
24
|
minWidth?: number;
|
|
23
25
|
/** minimum height of widget in rows (default?: undefined = un-constrained) */
|
|
24
26
|
minHeight?: number;
|
|
27
|
+
/**
|
|
28
|
+
* When set, resize snaps to one of these `[width, height]` presets.
|
|
29
|
+
* Min/max bounds are derived from this list during grid conversion.
|
|
30
|
+
*/
|
|
31
|
+
allowedSizes?: readonly AXGridLayoutSize[];
|
|
25
32
|
}
|
|
26
33
|
interface AXGridLayoutWidget extends AXGridLayoutPosition {
|
|
27
34
|
id?: string;
|
|
@@ -318,5 +325,25 @@ declare class AXGridLayoutBuilderModule {
|
|
|
318
325
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXGridLayoutBuilderModule>;
|
|
319
326
|
}
|
|
320
327
|
|
|
321
|
-
|
|
322
|
-
|
|
328
|
+
declare const AX_GRID_LAYOUT_ALLOWED_SIZES_ATTR = "data-ax-allowed-sizes";
|
|
329
|
+
declare function convertAXGridLayoutWidgetToGridStackWidget(widget: AXGridLayoutWidget): gridstack.GridStackWidget;
|
|
330
|
+
declare function convertGridStackWidgetToAXGridLayoutWidget(widget: gridstack.GridStackWidget): AXGridLayoutWidget;
|
|
331
|
+
declare function convertAXGridLayoutNodeToGridStackNode(node: AXGridLayoutNode): gridstack.GridStackNode;
|
|
332
|
+
declare function convertGridStackNodeToAXGridLayoutNode(node: gridstack.GridStackNode): AXGridLayoutNode;
|
|
333
|
+
declare function convertAXGridLayoutOptionsToGridStackOptions(options: AXGridLayoutOptions): gridstack.GridStackOptions;
|
|
334
|
+
declare function convertGridStackOptionsToAXGridLayoutOptions(options: gridstack.GridStackOptions): AXGridLayoutOptions;
|
|
335
|
+
/** remove keys which are undefined */
|
|
336
|
+
declare function removeUndefinedKeys<T extends object>(obj: T): T;
|
|
337
|
+
declare function writeAllowedSizesToElement(element: HTMLElement | undefined, allowedSizes: readonly AXGridLayoutSize[] | undefined): void;
|
|
338
|
+
declare function readAllowedSizesFromElement(element: HTMLElement): readonly AXGridLayoutSize[] | undefined;
|
|
339
|
+
declare const AX_GRID_LAYOUT_RESIZE_INVALID_CLASS = "ax-grid-layout-resize-invalid";
|
|
340
|
+
declare function isExactAllowedSize(width: number, height: number, allowedSizes: readonly AXGridLayoutSize[]): boolean;
|
|
341
|
+
declare function updateResizeValidityMarkers(gridEl: HTMLElement, element: gridstack.GridItemHTMLElement): void;
|
|
342
|
+
declare function clearResizeValidityMarkers(gridEl: HTMLElement): void;
|
|
343
|
+
declare function snapToAllowedSize(width: number, height: number, allowedSizes: readonly AXGridLayoutSize[]): AXGridLayoutSize;
|
|
344
|
+
declare function deriveMinMaxFromAllowedSizes(allowedSizes: readonly AXGridLayoutSize[]): Pick<AXGridLayoutWidget, 'minWidth' | 'maxWidth' | 'minHeight' | 'maxHeight'>;
|
|
345
|
+
declare function normalizeLayoutNodeWithAllowedSizes<T extends AXGridLayoutWidget>(node: T): T;
|
|
346
|
+
declare function snapElementToAllowedSize(grid: gridstack.GridStack, element: gridstack.GridItemHTMLElement): boolean;
|
|
347
|
+
|
|
348
|
+
export { AXGridLayoutBuilderModule, AXGridLayoutContainerComponent, AXGridLayoutWidgetComponent, AX_GRID_LAYOUT_ALLOWED_SIZES_ATTR, AX_GRID_LAYOUT_RESIZE_INVALID_CLASS, clearResizeValidityMarkers, convertAXGridLayoutNodeToGridStackNode, convertAXGridLayoutOptionsToGridStackOptions, convertAXGridLayoutWidgetToGridStackWidget, convertGridStackNodeToAXGridLayoutNode, convertGridStackOptionsToAXGridLayoutOptions, convertGridStackWidgetToAXGridLayoutWidget, deriveMinMaxFromAllowedSizes, isExactAllowedSize, normalizeLayoutNodeWithAllowedSizes, readAllowedSizesFromElement, removeUndefinedKeys, snapElementToAllowedSize, snapToAllowedSize, updateResizeValidityMarkers, writeAllowedSizesToElement };
|
|
349
|
+
export type { AXGridLayout, AXGridLayoutContainerElement, AXGridLayoutEvent, AXGridLayoutNode, AXGridLayoutOptions, AXGridLayoutPosition, AXGridLayoutSize, AXGridLayoutWidget, AXGridLayoutWidgetElement };
|
|
@@ -175,8 +175,16 @@ declare class AXMenuItemComponent extends NXComponent implements OnDestroy {
|
|
|
175
175
|
private unsuscriber;
|
|
176
176
|
private renderer;
|
|
177
177
|
private injector;
|
|
178
|
+
private document;
|
|
178
179
|
private zIndexService;
|
|
179
180
|
private zToken;
|
|
181
|
+
private submenuPortalParent;
|
|
182
|
+
private submenuPortalNextSibling;
|
|
183
|
+
/** Survives submenu portaling when the DOM parent chain is broken. */
|
|
184
|
+
private linkedParent;
|
|
185
|
+
private mouseLeaveTimeout;
|
|
186
|
+
private submenuUnlistenEnter;
|
|
187
|
+
private submenuUnlistenLeave;
|
|
180
188
|
protected arrowIcon: _angular_core.Signal<string>;
|
|
181
189
|
onClick: _angular_core.OutputEmitterRef<AXMenuItemClickEvent>;
|
|
182
190
|
name: _angular_core.InputSignal<string>;
|
|
@@ -186,8 +194,8 @@ declare class AXMenuItemComponent extends NXComponent implements OnDestroy {
|
|
|
186
194
|
constructor();
|
|
187
195
|
private getText;
|
|
188
196
|
/**
|
|
189
|
-
* Resolves the parent menu item.
|
|
190
|
-
*
|
|
197
|
+
* Resolves the parent menu item. Prefers an explicit link (survives submenu portaling),
|
|
198
|
+
* then DI, then the DOM tree.
|
|
191
199
|
*/
|
|
192
200
|
getParentMenuItem(): AXMenuItemComponent | null;
|
|
193
201
|
/**
|
|
@@ -204,10 +212,20 @@ declare class AXMenuItemComponent extends NXComponent implements OnDestroy {
|
|
|
204
212
|
private schedulePositionCalculation;
|
|
205
213
|
/**
|
|
206
214
|
* Calculate the position of the submenu to avoid it going out of the viewport.
|
|
215
|
+
* Tall panels are height-clamped; the panel is portaled so parent overflow cannot clip it.
|
|
207
216
|
*/
|
|
208
217
|
private calculatePosition;
|
|
209
218
|
/** Measures submenu size using the same flex layout as the rendered menu. */
|
|
210
219
|
private measureSubmenuRect;
|
|
220
|
+
/** Moves the submenu under the context-menu backdrop (or body) to escape ancestor overflow. */
|
|
221
|
+
private portalSubmenu;
|
|
222
|
+
private restoreSubmenuPortal;
|
|
223
|
+
/** Keep this item open while the pointer is over its portaled submenu panel. */
|
|
224
|
+
private bindSubmenuPointerListeners;
|
|
225
|
+
private unbindSubmenuPointerListeners;
|
|
226
|
+
/** Links direct children so parent resolution still works after the panel is portaled. */
|
|
227
|
+
private linkChildItems;
|
|
228
|
+
private getInstanceFromElement;
|
|
211
229
|
/**
|
|
212
230
|
* Moves nested `ax-menu-item` nodes rendered by recursive `ngTemplateOutlet` templates
|
|
213
231
|
* into the submenu slot. Angular content queries do not traverse those embedded views.
|
|
@@ -225,10 +243,14 @@ declare class AXMenuItemComponent extends NXComponent implements OnDestroy {
|
|
|
225
243
|
private clampVerticalPosition;
|
|
226
244
|
handleClick(e: MouseEvent): void;
|
|
227
245
|
handleMouseEnter(event: MouseEvent): void;
|
|
228
|
-
private mouseLeaveTimeout;
|
|
229
246
|
handleMouseLeave(event: MouseEvent): void;
|
|
230
|
-
|
|
247
|
+
private handlePointerLeave;
|
|
248
|
+
private scheduleClose;
|
|
249
|
+
private clearCloseTimeout;
|
|
250
|
+
private clearAncestorCloseTimeouts;
|
|
251
|
+
/** True when the pointer is still inside this item's submenu tree (including portaled panels). */
|
|
231
252
|
private containsSubmenuPointer;
|
|
253
|
+
private isSelfOrAncestorOf;
|
|
232
254
|
ngOnDestroy(): void;
|
|
233
255
|
/** @ignore */
|
|
234
256
|
get __hostClass(): string[];
|
|
@@ -27,6 +27,7 @@ declare class AXNumberBoxComponent extends AXNumberBoxComponent_base {
|
|
|
27
27
|
changeOnScroll: _angular_core.InputSignal<boolean>;
|
|
28
28
|
step: _angular_core.InputSignal<number>;
|
|
29
29
|
protected mode: _angular_core.WritableSignal<"digits" | "thousandsSeparator" | "decimal">;
|
|
30
|
+
protected decimalPlaces: _angular_core.Signal<number>;
|
|
30
31
|
private input;
|
|
31
32
|
protected stringValue: _angular_core.WritableSignal<string>;
|
|
32
33
|
private translationService;
|
|
@@ -37,11 +38,12 @@ declare class AXNumberBoxComponent extends AXNumberBoxComponent_base {
|
|
|
37
38
|
result: boolean;
|
|
38
39
|
message?: undefined;
|
|
39
40
|
}>;
|
|
40
|
-
protected internalValueChanged(value: number | undefined): void;
|
|
41
|
+
protected internalValueChanged(value: number | undefined | null): void;
|
|
41
42
|
private plusValue;
|
|
42
43
|
private minusValue;
|
|
43
44
|
private getNumericValue;
|
|
44
45
|
private getSteppedValue;
|
|
46
|
+
private formatDisplayValue;
|
|
45
47
|
private clampToRange;
|
|
46
48
|
private getFractionDigits;
|
|
47
49
|
protected handleOnKeydownEvent(e: KeyboardEvent): void;
|