@acorex/components 20.10.1 → 20.10.3
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/datetime-box/index.d.ts +16 -4
- package/datetime-input/index.d.ts +62 -68
- package/fesm2022/acorex-components-datetime-box.mjs +45 -14
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +326 -306
- 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-file-viewer.mjs +11 -44
- package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
- package/file-viewer/index.d.ts +15 -52
- package/package.json +19 -23
- package/datetime-text-box/README.md +0 -3
- package/datetime-text-box/index.d.ts +0 -142
- package/fesm2022/acorex-components-datetime-text-box.mjs +0 -619
- package/fesm2022/acorex-components-datetime-text-box.mjs.map +0 -1
package/datetime-box/index.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ declare const AXDateTimeBoxComponent_base: polytype.Polytype.ClusteredConstructo
|
|
|
36
36
|
* @category Components
|
|
37
37
|
*/
|
|
38
38
|
declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
|
|
39
|
+
private readonly defaultConfig;
|
|
39
40
|
/**
|
|
40
41
|
* @ignore
|
|
41
42
|
*/
|
|
@@ -55,7 +56,10 @@ declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
|
|
|
55
56
|
*/
|
|
56
57
|
formatChange: EventEmitter<string>;
|
|
57
58
|
/**
|
|
58
|
-
* Indicates whether typing is allowed in the
|
|
59
|
+
* Indicates whether typing is allowed in the input.
|
|
60
|
+
* When false, clicking the input (or the calendar icon) opens the picker.
|
|
61
|
+
* When true, the input is for typing and the picker opens from the calendar button.
|
|
62
|
+
* Defaults to `AX_DATETIME_INPUT_CONFIG.allowTyping` when not set on the instance.
|
|
59
63
|
*
|
|
60
64
|
* @defaultValue false
|
|
61
65
|
*/
|
|
@@ -90,7 +94,7 @@ declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
|
|
|
90
94
|
protected _editingDateObj: _angular_core.WritableSignal<Date>;
|
|
91
95
|
protected readonly _calendarSystem: _angular_core.Signal<string>;
|
|
92
96
|
protected readonly _resolvedFormat: _angular_core.Signal<string>;
|
|
93
|
-
protected readonly _classicDateFields: AXDateTimeBoxClassicField[]
|
|
97
|
+
protected readonly _classicDateFields: _angular_core.Signal<AXDateTimeBoxClassicField[]>;
|
|
94
98
|
protected readonly _classicTimeFields: AXDateTimeBoxClassicField[];
|
|
95
99
|
private readonly _classicTimeOptions;
|
|
96
100
|
protected _classicDate: _angular_core.Signal<_acorex_core_date_time.AXDateTime>;
|
|
@@ -124,7 +128,13 @@ declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
|
|
|
124
128
|
text: string;
|
|
125
129
|
}[];
|
|
126
130
|
/**
|
|
127
|
-
*
|
|
131
|
+
* Syncs typed input values into the box (and the picker via `_editingDateObj`).
|
|
132
|
+
* @ignore
|
|
133
|
+
*/
|
|
134
|
+
protected _handleInputModelChange(value: Date | null): void;
|
|
135
|
+
/**
|
|
136
|
+
* Syncs picker selection into the box (and the input via `_editingDateObj`).
|
|
137
|
+
* @ignore
|
|
128
138
|
*/
|
|
129
139
|
protected _handlePickerModelChange(value: Date | null): void;
|
|
130
140
|
/**
|
|
@@ -162,7 +172,9 @@ declare class AXDateTimeBoxComponent extends AXDateTimeBoxComponent_base {
|
|
|
162
172
|
*/
|
|
163
173
|
private _readSelectValue;
|
|
164
174
|
/**
|
|
165
|
-
*
|
|
175
|
+
* When typing is disabled, open the picker on input click.
|
|
176
|
+
* When typing is enabled, keep the picker closed so the user can type.
|
|
177
|
+
* @ignore
|
|
166
178
|
*/
|
|
167
179
|
protected _handleInputOnClick(): void;
|
|
168
180
|
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';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
|
-
* A component for date and time input with
|
|
7
|
+
* A component for date and time input with segment-based typing, keyboard navigation,
|
|
8
|
+
* and calendar-aware formatting (gregorian and solar-hijri).
|
|
7
9
|
*
|
|
8
10
|
* @category Components
|
|
9
11
|
*/
|
|
10
12
|
declare class AXDateTimeInputComponent extends MXInputBaseValueComponent<Date> {
|
|
11
13
|
#private;
|
|
12
14
|
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,88 @@ 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
|
+
private _editingDate;
|
|
53
|
+
/** @ignore */
|
|
54
|
+
private inputRef;
|
|
55
|
+
/** @ignore */
|
|
56
|
+
private get inputElement();
|
|
58
57
|
/**
|
|
59
58
|
* @description check if page is in rtl or ltr
|
|
60
59
|
*/
|
|
61
60
|
protected isRtl: _angular_core.WritableSignal<boolean>;
|
|
62
|
-
/**
|
|
63
|
-
* @description listen to direction change to react to it.
|
|
64
|
-
*/
|
|
61
|
+
/** @ignore */
|
|
65
62
|
protected ngOnInit(): void;
|
|
66
63
|
/**
|
|
67
|
-
*
|
|
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
|
-
* @ignore
|
|
72
|
-
*/
|
|
72
|
+
/** @ignore */
|
|
73
73
|
private _clearInputBuffer;
|
|
74
|
-
/**
|
|
75
|
-
* @ignore
|
|
76
|
-
*/
|
|
74
|
+
/** @ignore */
|
|
77
75
|
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
76
|
/**
|
|
84
77
|
* 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
78
|
* @ignore
|
|
88
79
|
*/
|
|
89
80
|
internalValueChanged(value?: Date): void;
|
|
90
81
|
/**
|
|
91
|
-
*
|
|
92
|
-
|
|
93
|
-
_handleOnKeydownEvent(e: KeyboardEvent): void;
|
|
94
|
-
/**
|
|
95
|
-
* @ignore
|
|
96
|
-
*/
|
|
97
|
-
_handleKeyUpEvent(): void;
|
|
98
|
-
/**
|
|
99
|
-
* @ignore
|
|
82
|
+
* Normalizes Persian (U+06F0-U+06F9) and Arabic-Indic (U+0660-U+0669) digits to ASCII.
|
|
83
|
+
* @ignore
|
|
100
84
|
*/
|
|
85
|
+
private _normalizeDigit;
|
|
86
|
+
/** @ignore */
|
|
87
|
+
protected _handleOnKeydownEvent(e: KeyboardEvent): void;
|
|
88
|
+
/** @ignore */
|
|
89
|
+
private _handleDigitInput;
|
|
90
|
+
/** @ignore */
|
|
91
|
+
private _applyEditingDate;
|
|
92
|
+
/** @ignore */
|
|
93
|
+
protected _handleKeyUpEvent(): void;
|
|
94
|
+
/** @ignore */
|
|
101
95
|
protected _handleFocusEvent(e: FocusEvent): void;
|
|
102
|
-
/**
|
|
103
|
-
* @ignore
|
|
104
|
-
*/
|
|
96
|
+
/** @ignore */
|
|
105
97
|
protected _handleBlurEvent(e: FocusEvent): void;
|
|
106
|
-
/**
|
|
107
|
-
|
|
108
|
-
|
|
98
|
+
/** @ignore */
|
|
99
|
+
private _clampToRange;
|
|
100
|
+
/** @ignore */
|
|
109
101
|
protected _handleOnInputClickEvent(e: MouseEvent): void;
|
|
110
|
-
/**
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
private
|
|
114
|
-
/**
|
|
115
|
-
* @ignore
|
|
116
|
-
*/
|
|
102
|
+
/** @ignore */
|
|
103
|
+
private _selectFirstPart;
|
|
104
|
+
/** @ignore */
|
|
105
|
+
private _ensureEditableText;
|
|
106
|
+
/** @ignore */
|
|
117
107
|
private _highlightActivePart;
|
|
118
|
-
/**
|
|
119
|
-
* @ignore
|
|
120
|
-
*/
|
|
108
|
+
/** @ignore */
|
|
121
109
|
private _detectValueChanges;
|
|
122
|
-
private get __hostName();
|
|
123
110
|
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>;
|
|
111
|
+
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>;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
interface AXDateTimeInputConfig {
|
|
115
|
+
allowTyping: boolean;
|
|
125
116
|
}
|
|
117
|
+
declare const AXDateTimeInputDefaultConfig: AXDateTimeInputConfig;
|
|
118
|
+
declare const AX_DATETIME_INPUT_CONFIG: InjectionToken<AXDateTimeInputConfig>;
|
|
126
119
|
|
|
127
120
|
declare class AXDateTimeInputModule {
|
|
128
121
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDateTimeInputModule, never>;
|
|
@@ -130,4 +123,5 @@ declare class AXDateTimeInputModule {
|
|
|
130
123
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXDateTimeInputModule>;
|
|
131
124
|
}
|
|
132
125
|
|
|
133
|
-
export { AXDateTimeInputComponent, AXDateTimeInputModule };
|
|
126
|
+
export { AXDateTimeInputComponent, AXDateTimeInputDefaultConfig, AXDateTimeInputModule, AX_DATETIME_INPUT_CONFIG };
|
|
127
|
+
export type { AXDateTimeInputConfig };
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { MXInputBaseValueComponent, MXLookComponent, AXComponent, AXFocusableComponent, AXValuableComponent, AXClearableComponent } from '@acorex/cdk/common';
|
|
2
2
|
import { MXCalendarBaseComponent, getCalendarYearBounds } from '@acorex/components/calendar';
|
|
3
|
-
import { AXDateTimeInputComponent } from '@acorex/components/datetime-input';
|
|
3
|
+
import { AX_DATETIME_INPUT_CONFIG, AXDateTimeInputComponent } from '@acorex/components/datetime-input';
|
|
4
4
|
import { AXDateTimePickerComponent } from '@acorex/components/datetime-picker';
|
|
5
5
|
import { AXDecoratorGenericComponent } from '@acorex/components/decorators';
|
|
6
6
|
import { MXDropdownBoxBaseComponent, AXDropdownBoxComponent } from '@acorex/components/dropdown';
|
|
7
7
|
import { AXSelectBoxComponent } from '@acorex/components/select-box';
|
|
8
|
+
import { AXIRLocaleProfile } from '@acorex/core/locale';
|
|
8
9
|
import * as i0 from '@angular/core';
|
|
9
|
-
import { EventEmitter, input, signal, computed, forwardRef, HostBinding, Output, ViewChild, ViewEncapsulation,
|
|
10
|
+
import { inject, EventEmitter, input, signal, computed, forwardRef, HostBinding, Output, ViewChild, ViewEncapsulation, Component, NgModule } from '@angular/core';
|
|
10
11
|
import * as i1 from '@angular/forms';
|
|
11
12
|
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
12
13
|
import { classes } from 'polytype';
|
|
@@ -29,6 +30,7 @@ const AX_DATETIME_BOX_CLASSIC_TIME_FIELDS = [
|
|
|
29
30
|
class AXDateTimeBoxComponent extends classes((MXInputBaseValueComponent), MXCalendarBaseComponent, MXDropdownBoxBaseComponent, MXLookComponent, AXDecoratorGenericComponent) {
|
|
30
31
|
constructor() {
|
|
31
32
|
super(...arguments);
|
|
33
|
+
this.defaultConfig = inject(AX_DATETIME_INPUT_CONFIG);
|
|
32
34
|
/**
|
|
33
35
|
* Emitted when the format of the component changes.
|
|
34
36
|
*
|
|
@@ -36,11 +38,14 @@ class AXDateTimeBoxComponent extends classes((MXInputBaseValueComponent), MXCale
|
|
|
36
38
|
*/
|
|
37
39
|
this.formatChange = new EventEmitter();
|
|
38
40
|
/**
|
|
39
|
-
* Indicates whether typing is allowed in the
|
|
41
|
+
* Indicates whether typing is allowed in the input.
|
|
42
|
+
* When false, clicking the input (or the calendar icon) opens the picker.
|
|
43
|
+
* When true, the input is for typing and the picker opens from the calendar button.
|
|
44
|
+
* Defaults to `AX_DATETIME_INPUT_CONFIG.allowTyping` when not set on the instance.
|
|
40
45
|
*
|
|
41
46
|
* @defaultValue false
|
|
42
47
|
*/
|
|
43
|
-
this.allowTyping = input(
|
|
48
|
+
this.allowTyping = input(this.defaultConfig.allowTyping, ...(ngDevMode ? [{ debugName: "allowTyping" }] : []));
|
|
44
49
|
this.picker = input('datetime', ...(ngDevMode ? [{ debugName: "picker" }] : []));
|
|
45
50
|
/**
|
|
46
51
|
* @description The calendar type to use for the datetime input.
|
|
@@ -70,8 +75,24 @@ class AXDateTimeBoxComponent extends classes((MXInputBaseValueComponent), MXCale
|
|
|
70
75
|
this.format = input(...(ngDevMode ? [undefined, { debugName: "format" }] : []));
|
|
71
76
|
this._editingDateObj = signal(null, ...(ngDevMode ? [{ debugName: "_editingDateObj" }] : []));
|
|
72
77
|
this._calendarSystem = computed(() => this.calendar() ?? this.localeService.activeProfile().calendar.system, ...(ngDevMode ? [{ debugName: "_calendarSystem" }] : []));
|
|
73
|
-
this._resolvedFormat = computed(() =>
|
|
74
|
-
|
|
78
|
+
this._resolvedFormat = computed(() => {
|
|
79
|
+
if (this.format()) {
|
|
80
|
+
return this.format();
|
|
81
|
+
}
|
|
82
|
+
// Calendar override can differ from the active locale; solar-hijri uses day/month/year.
|
|
83
|
+
const formats = this._calendarSystem() === 'solar-hijri' ? AXIRLocaleProfile.formats : this.localeService.activeProfile().formats;
|
|
84
|
+
return formats[this.picker()]?.short ?? '';
|
|
85
|
+
}, ...(ngDevMode ? [{ debugName: "_resolvedFormat" }] : []));
|
|
86
|
+
this._classicDateFields = computed(() => {
|
|
87
|
+
if (this._calendarSystem() === 'solar-hijri') {
|
|
88
|
+
return [
|
|
89
|
+
{ part: 'day', dropdownWidth: '50', maxVisibleItems: 10 },
|
|
90
|
+
{ part: 'month', dropdownWidth: '90', maxVisibleItems: 12 },
|
|
91
|
+
{ part: 'year', dropdownWidth: '70', maxVisibleItems: 10 },
|
|
92
|
+
];
|
|
93
|
+
}
|
|
94
|
+
return AX_DATETIME_BOX_CLASSIC_DATE_FIELDS;
|
|
95
|
+
}, ...(ngDevMode ? [{ debugName: "_classicDateFields" }] : []));
|
|
75
96
|
this._classicTimeFields = AX_DATETIME_BOX_CLASSIC_TIME_FIELDS;
|
|
76
97
|
this._classicTimeOptions = {
|
|
77
98
|
hour: Array.from({ length: 24 }, (_, i) => ({ id: i, text: String(i).padStart(2, '0') })),
|
|
@@ -114,7 +135,7 @@ class AXDateTimeBoxComponent extends classes((MXInputBaseValueComponent), MXCale
|
|
|
114
135
|
}, ...(ngDevMode ? [{ debugName: "_classicDayOptions" }] : []));
|
|
115
136
|
}
|
|
116
137
|
get _classicBoxClass() {
|
|
117
|
-
return `ax-editor-container ax-default ax-classic-datetime-box
|
|
138
|
+
return `ax-editor-container ax-default ax-classic-datetime-box ${this.look}${this.disabled ? ' ax-state-disabled' : ''}`;
|
|
118
139
|
}
|
|
119
140
|
get _classicHasDatePart() {
|
|
120
141
|
const mode = this.picker();
|
|
@@ -159,7 +180,15 @@ class AXDateTimeBoxComponent extends classes((MXInputBaseValueComponent), MXCale
|
|
|
159
180
|
}
|
|
160
181
|
}
|
|
161
182
|
/**
|
|
162
|
-
*
|
|
183
|
+
* Syncs typed input values into the box (and the picker via `_editingDateObj`).
|
|
184
|
+
* @ignore
|
|
185
|
+
*/
|
|
186
|
+
_handleInputModelChange(value) {
|
|
187
|
+
this.commitValue(value, true);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Syncs picker selection into the box (and the input via `_editingDateObj`).
|
|
191
|
+
* @ignore
|
|
163
192
|
*/
|
|
164
193
|
_handlePickerModelChange(value) {
|
|
165
194
|
if (this.isOpen) {
|
|
@@ -216,8 +245,8 @@ class AXDateTimeBoxComponent extends classes((MXInputBaseValueComponent), MXCale
|
|
|
216
245
|
catch {
|
|
217
246
|
this._editingDateObj.set(null);
|
|
218
247
|
}
|
|
219
|
-
|
|
220
|
-
if (this.boxLook() !== 'classic') {
|
|
248
|
+
// Close the picker after a committed selection; typing already keeps it closed.
|
|
249
|
+
if (this.boxLook() !== 'classic' && this.isOpen) {
|
|
221
250
|
this.close();
|
|
222
251
|
}
|
|
223
252
|
}
|
|
@@ -254,7 +283,9 @@ class AXDateTimeBoxComponent extends classes((MXInputBaseValueComponent), MXCale
|
|
|
254
283
|
return value != null ? Number(value) : null;
|
|
255
284
|
}
|
|
256
285
|
/**
|
|
257
|
-
*
|
|
286
|
+
* When typing is disabled, open the picker on input click.
|
|
287
|
+
* When typing is enabled, keep the picker closed so the user can type.
|
|
288
|
+
* @ignore
|
|
258
289
|
*/
|
|
259
290
|
_handleInputOnClick() {
|
|
260
291
|
if (!this.allowTyping()) {
|
|
@@ -278,7 +309,7 @@ class AXDateTimeBoxComponent extends classes((MXInputBaseValueComponent), MXCale
|
|
|
278
309
|
useExisting: forwardRef(() => AXDateTimeBoxComponent),
|
|
279
310
|
multi: true,
|
|
280
311
|
},
|
|
281
|
-
], viewQueries: [{ propertyName: "input", first: true, predicate: AXDateTimeInputComponent, descendants: true }, { propertyName: "pickerRef", first: true, predicate: AXDateTimePickerComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: AXDropdownBoxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (boxLook() === 'classic') {\n <div [class]=\"_classicBoxClass\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <div class=\"ax-classic-datetime-selects\" dir=\"ltr\">\n @if (_classicHasDatePart) {\n <div class=\"ax-classic-datetime-group\">\n @for (field of _classicDateFields; track field.part; let last = $last) {\n <ax-select-box\n look=\"none\"\n [class]=\"'ax-classic-' + field.part + '-select'\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [isItemTruncated]=\"false\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleClassicPartChanged($event, field.part)\"\n ></ax-select-box>\n @if (!last) {\n <span class=\"ax-classic-datetime-separator\" aria-hidden=\"true\">-</span>\n }\n }\n </div>\n }\n @if (_classicHasTimePart) {\n <div class=\"ax-classic-datetime-group\">\n @for (field of _classicTimeFields; track field.part; let last = $last) {\n <ax-select-box\n look=\"none\"\n [class]=\"'ax-classic-' + field.part + '-select'\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [isItemTruncated]=\"false\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleClassicPartChanged($event, field.part)\"\n ></ax-select-box>\n @if (!last) {\n <span class=\"ax-classic-datetime-separator\" aria-hidden=\"true\">:</span>\n }\n }\n </div>\n }\n </div>\n <ng-content select=\"ax-suffix\"></ng-content>\n </div>\n} @else {\n <ax-dropdown-box\n [look]=\"look\"\n [disabled]=\"disabled\"\n (onOpened)=\"_handleOnOpenedEvent($event)\"\n (onClosed)=\"_handleOnClosedEvent($event)\"\n >\n <ng-container input>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <ax-datetime-input\n dir=\"ltr\"\n [name]=\"name\"\n [ngModel]=\"_editingDateObj()\"\n id=\"{{ id }}-input\"\n [format]=\"_resolvedFormat()\"\n [picker]=\"picker()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [allowTyping]=\"allowTyping()\"\n [calendar]=\"_calendarSystem()\"\n (onClick)=\"_handleInputOnClick()\"\n (onBlur)=\"_handleInputOnBlurEvent($event)\"\n (onFocus)=\"_handleInputOnFocusEvent($event)\"\n ></ax-datetime-input>\n @if (value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <button type=\"button\" class=\"ax-editor-button\" [tabIndex]=\"-1\" [disabled]=\"disabled\" (click)=\"toggle()\">\n <span class=\"ax-icon ax-icon-calendar\"></span>\n </button>\n <ng-content select=\"ax-suffix\"> </ng-content>\n </ng-container>\n <ng-container panel>\n <ax-datetime-picker\n #pickerRef\n [type]=\"_calendarSystem()\"\n [depth]=\"depth\"\n [ngModel]=\"_editingDateObj()\"\n [picker]=\"picker()\"\n [format]=\"_resolvedFormat()\"\n id=\"{{ id }}-picker\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\"\n [weekend]=\"weekend()\"\n [weekdays]=\"weekdays()\"\n [holidayDates]=\"holidayDates\"\n [calendar]=\"_calendarSystem()\"\n [disabledDates]=\"disabledDates\"\n [calendarLook]=\"calendarLook()\"\n [yearRange]=\"yearRange()\"\n (onNavigate)=\"_handleCalendarOnNavigate($event)\"\n (ngModelChange)=\"_handlePickerModelChange($event)\"\n ></ax-datetime-picker>\n </ng-container>\n </ax-dropdown-box>\n}\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: ["ax-datetime-input{display:contents}ax-datetime-box .ax-classic-datetime-box{overflow:visible;height:auto;min-height:var(--ax-comp-editor-height)}ax-datetime-box .ax-classic-datetime-selects{display:flex;flex:1;align-items:center;justify-content:space-between;gap:1rem;min-width:12rem;flex-wrap:wrap;overflow:visible}ax-datetime-box .ax-classic-datetime-group{display:flex;align-items:center;gap:.125rem}ax-datetime-box .ax-classic-datetime-separator{flex:0 0 auto;padding-inline:.125rem;font-size:var(--ax-comp-editor-font-size);line-height:1;color:rgba(var(--ax-comp-editor-text-color));opacity:.6;-webkit-user-select:none;user-select:none;pointer-events:none}ax-datetime-box .ax-classic-datetime-selects ax-select-box{display:inline-block;width:auto;flex:0 0 auto}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-editor-button{display:none}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-editor-container,ax-datetime-box .ax-classic-datetime-selects ax-select-box ax-dropdown-box.ax-editor-container{gap:0;width:auto;overflow:visible}ax-datetime-box .ax-classic-datetime-selects ax-select-box ax-dropdown-box.ax-editor-container{--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0;justify-content:flex-start}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-chips-container{flex:0 0 auto;width:auto}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-chips-container .ax-chips{overflow:visible;text-overflow:unset;padding-inline:0}\n"], dependencies: [{ kind: "component", type: AXDropdownBoxComponent, selector: "ax-dropdown-box", inputs: ["disabled", "look", "hasInput", "popoverWidth"], outputs: ["disabledChange", "onBlur", "onFocus", "onClick", "onOpened", "onClosed"] }, { kind: "component", type: AXDateTimeInputComponent, selector: "ax-datetime-input", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "allowTyping", "calendar", "minValue", "maxValue", "picker", "format"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onClick"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXDateTimePickerComponent, selector: "ax-datetime-picker", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "depth", "activeView", "minValue", "maxValue", "disabledDates", "holidayDates", "type", "cellTemplate", "cellClass", "showNavigation", "weekend", "weekdays", "calendarLook", "yearRange", "currentTimeButton", "calendar", "picker", "format"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "onClick", "readonlyChange", "disabledChange", "depthChange", "typeChange", "activeViewChange", "disabledDatesChange", "holidayDatesChange", "onNavigate", "onSlotClick"] }, { kind: "component", type: AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }],
|
|
312
|
+
], viewQueries: [{ propertyName: "input", first: true, predicate: AXDateTimeInputComponent, descendants: true }, { propertyName: "pickerRef", first: true, predicate: AXDateTimePickerComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: AXDropdownBoxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (boxLook() === 'classic') {\n <div [class]=\"_classicBoxClass\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <div class=\"ax-classic-datetime-selects\" dir=\"ltr\">\n @if (_classicHasDatePart) {\n <div class=\"ax-classic-datetime-group\">\n @for (field of _classicDateFields(); track field.part; let last = $last) {\n <ax-select-box\n look=\"none\"\n [class]=\"'ax-classic-' + field.part + '-select'\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [isItemTruncated]=\"false\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleClassicPartChanged($event, field.part)\"\n ></ax-select-box>\n @if (!last) {\n <span class=\"ax-classic-datetime-separator\" aria-hidden=\"true\">-</span>\n }\n }\n </div>\n }\n @if (_classicHasTimePart) {\n <div class=\"ax-classic-datetime-group\">\n @for (field of _classicTimeFields; track field.part; let last = $last) {\n <ax-select-box\n look=\"none\"\n [class]=\"'ax-classic-' + field.part + '-select'\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [isItemTruncated]=\"false\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleClassicPartChanged($event, field.part)\"\n ></ax-select-box>\n @if (!last) {\n <span class=\"ax-classic-datetime-separator\" aria-hidden=\"true\">:</span>\n }\n }\n </div>\n }\n </div>\n <ng-content select=\"ax-suffix\"></ng-content>\n </div>\n} @else {\n <ax-dropdown-box\n [look]=\"look\"\n [disabled]=\"disabled\"\n (onOpened)=\"_handleOnOpenedEvent($event)\"\n (onClosed)=\"_handleOnClosedEvent($event)\"\n >\n <ng-container input>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <ax-datetime-input\n dir=\"ltr\"\n [name]=\"name\"\n [ngModel]=\"_editingDateObj()\"\n (ngModelChange)=\"_handleInputModelChange($event)\"\n id=\"{{ id }}-input\"\n [format]=\"_resolvedFormat()\"\n [picker]=\"picker()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [allowTyping]=\"allowTyping()\"\n [calendar]=\"_calendarSystem()\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\"\n (onClick)=\"_handleInputOnClick()\"\n (onBlur)=\"_handleInputOnBlurEvent($event)\"\n (onFocus)=\"_handleInputOnFocusEvent($event)\"\n ></ax-datetime-input>\n @if (value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <button type=\"button\" class=\"ax-editor-button\" [tabIndex]=\"-1\" [disabled]=\"disabled\" (click)=\"toggle()\">\n <span class=\"ax-icon ax-icon-calendar\"></span>\n </button>\n <ng-content select=\"ax-suffix\"> </ng-content>\n </ng-container>\n <ng-container panel>\n <ax-datetime-picker\n #pickerRef\n [type]=\"_calendarSystem()\"\n [depth]=\"depth\"\n [ngModel]=\"_editingDateObj()\"\n [picker]=\"picker()\"\n [format]=\"_resolvedFormat()\"\n id=\"{{ id }}-picker\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\"\n [weekend]=\"weekend()\"\n [weekdays]=\"weekdays()\"\n [holidayDates]=\"holidayDates\"\n [calendar]=\"_calendarSystem()\"\n [disabledDates]=\"disabledDates\"\n [calendarLook]=\"calendarLook()\"\n [yearRange]=\"yearRange()\"\n (onNavigate)=\"_handleCalendarOnNavigate($event)\"\n (ngModelChange)=\"_handlePickerModelChange($event)\"\n ></ax-datetime-picker>\n </ng-container>\n </ax-dropdown-box>\n}\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: ["ax-datetime-input{display:contents}ax-datetime-box .ax-classic-datetime-box{overflow:visible;height:auto;min-height:var(--ax-comp-editor-height)}ax-datetime-box .ax-classic-datetime-selects{display:flex;flex:1;align-items:center;justify-content:space-between;gap:1rem;min-width:12rem;flex-wrap:wrap;overflow:visible}ax-datetime-box .ax-classic-datetime-group{display:flex;align-items:center;gap:.125rem}ax-datetime-box .ax-classic-datetime-separator{flex:0 0 auto;padding-inline:.125rem;font-size:var(--ax-comp-editor-font-size);line-height:1;color:rgba(var(--ax-comp-editor-text-color));opacity:.6;-webkit-user-select:none;user-select:none;pointer-events:none}ax-datetime-box .ax-classic-datetime-selects ax-select-box{display:inline-block;width:auto;flex:0 0 auto}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-editor-button{display:none}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-editor-container,ax-datetime-box .ax-classic-datetime-selects ax-select-box ax-dropdown-box.ax-editor-container{gap:0;width:auto;overflow:visible}ax-datetime-box .ax-classic-datetime-selects ax-select-box ax-dropdown-box.ax-editor-container{--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0;justify-content:flex-start}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-chips-container{flex:0 0 auto;width:auto}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-chips-container .ax-chips{overflow:visible;text-overflow:unset;padding-inline:0}\n"], dependencies: [{ kind: "component", type: AXDropdownBoxComponent, selector: "ax-dropdown-box", inputs: ["disabled", "look", "hasInput", "popoverWidth"], outputs: ["disabledChange", "onBlur", "onFocus", "onClick", "onOpened", "onClosed"] }, { kind: "component", type: AXDateTimeInputComponent, selector: "ax-datetime-input", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "allowTyping", "calendar", "minValue", "maxValue", "picker", "format"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onClick"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXDateTimePickerComponent, selector: "ax-datetime-picker", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "depth", "activeView", "minValue", "maxValue", "disabledDates", "holidayDates", "type", "cellTemplate", "cellClass", "showNavigation", "weekend", "weekdays", "calendarLook", "yearRange", "currentTimeButton", "calendar", "picker", "format"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "onClick", "readonlyChange", "disabledChange", "depthChange", "typeChange", "activeViewChange", "disabledDatesChange", "holidayDatesChange", "onNavigate", "onSlotClick"] }, { kind: "component", type: AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
282
313
|
}
|
|
283
314
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXDateTimeBoxComponent, decorators: [{
|
|
284
315
|
type: Component,
|
|
@@ -307,7 +338,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
307
338
|
'onClosed',
|
|
308
339
|
'readonlyChange',
|
|
309
340
|
'disabledChange',
|
|
310
|
-
],
|
|
341
|
+
], encapsulation: ViewEncapsulation.None, providers: [
|
|
311
342
|
{ provide: AXComponent, useExisting: AXDateTimeBoxComponent },
|
|
312
343
|
{ provide: AXFocusableComponent, useExisting: AXDateTimeBoxComponent },
|
|
313
344
|
{ provide: AXValuableComponent, useExisting: AXDateTimeBoxComponent },
|
|
@@ -323,7 +354,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
323
354
|
FormsModule,
|
|
324
355
|
AXDateTimePickerComponent,
|
|
325
356
|
AXSelectBoxComponent,
|
|
326
|
-
], template: "@if (boxLook() === 'classic') {\n <div [class]=\"_classicBoxClass\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <div class=\"ax-classic-datetime-selects\" dir=\"ltr\">\n @if (_classicHasDatePart) {\n <div class=\"ax-classic-datetime-group\">\n @for (field of _classicDateFields; track field.part; let last = $last) {\n <ax-select-box\n look=\"none\"\n [class]=\"'ax-classic-' + field.part + '-select'\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [isItemTruncated]=\"false\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleClassicPartChanged($event, field.part)\"\n ></ax-select-box>\n @if (!last) {\n <span class=\"ax-classic-datetime-separator\" aria-hidden=\"true\">-</span>\n }\n }\n </div>\n }\n @if (_classicHasTimePart) {\n <div class=\"ax-classic-datetime-group\">\n @for (field of _classicTimeFields; track field.part; let last = $last) {\n <ax-select-box\n look=\"none\"\n [class]=\"'ax-classic-' + field.part + '-select'\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [isItemTruncated]=\"false\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleClassicPartChanged($event, field.part)\"\n ></ax-select-box>\n @if (!last) {\n <span class=\"ax-classic-datetime-separator\" aria-hidden=\"true\">:</span>\n }\n }\n </div>\n }\n </div>\n <ng-content select=\"ax-suffix\"></ng-content>\n </div>\n} @else {\n <ax-dropdown-box\n [look]=\"look\"\n [disabled]=\"disabled\"\n (onOpened)=\"_handleOnOpenedEvent($event)\"\n (onClosed)=\"_handleOnClosedEvent($event)\"\n >\n <ng-container input>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <ax-datetime-input\n dir=\"ltr\"\n [name]=\"name\"\n [ngModel]=\"_editingDateObj()\"\n id=\"{{ id }}-input\"\n [format]=\"_resolvedFormat()\"\n [picker]=\"picker()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [allowTyping]=\"allowTyping()\"\n [calendar]=\"_calendarSystem()\"\n (onClick)=\"_handleInputOnClick()\"\n (onBlur)=\"_handleInputOnBlurEvent($event)\"\n (onFocus)=\"_handleInputOnFocusEvent($event)\"\n ></ax-datetime-input>\n @if (value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <button type=\"button\" class=\"ax-editor-button\" [tabIndex]=\"-1\" [disabled]=\"disabled\" (click)=\"toggle()\">\n <span class=\"ax-icon ax-icon-calendar\"></span>\n </button>\n <ng-content select=\"ax-suffix\"> </ng-content>\n </ng-container>\n <ng-container panel>\n <ax-datetime-picker\n #pickerRef\n [type]=\"_calendarSystem()\"\n [depth]=\"depth\"\n [ngModel]=\"_editingDateObj()\"\n [picker]=\"picker()\"\n [format]=\"_resolvedFormat()\"\n id=\"{{ id }}-picker\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\"\n [weekend]=\"weekend()\"\n [weekdays]=\"weekdays()\"\n [holidayDates]=\"holidayDates\"\n [calendar]=\"_calendarSystem()\"\n [disabledDates]=\"disabledDates\"\n [calendarLook]=\"calendarLook()\"\n [yearRange]=\"yearRange()\"\n (onNavigate)=\"_handleCalendarOnNavigate($event)\"\n (ngModelChange)=\"_handlePickerModelChange($event)\"\n ></ax-datetime-picker>\n </ng-container>\n </ax-dropdown-box>\n}\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: ["ax-datetime-input{display:contents}ax-datetime-box .ax-classic-datetime-box{overflow:visible;height:auto;min-height:var(--ax-comp-editor-height)}ax-datetime-box .ax-classic-datetime-selects{display:flex;flex:1;align-items:center;justify-content:space-between;gap:1rem;min-width:12rem;flex-wrap:wrap;overflow:visible}ax-datetime-box .ax-classic-datetime-group{display:flex;align-items:center;gap:.125rem}ax-datetime-box .ax-classic-datetime-separator{flex:0 0 auto;padding-inline:.125rem;font-size:var(--ax-comp-editor-font-size);line-height:1;color:rgba(var(--ax-comp-editor-text-color));opacity:.6;-webkit-user-select:none;user-select:none;pointer-events:none}ax-datetime-box .ax-classic-datetime-selects ax-select-box{display:inline-block;width:auto;flex:0 0 auto}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-editor-button{display:none}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-editor-container,ax-datetime-box .ax-classic-datetime-selects ax-select-box ax-dropdown-box.ax-editor-container{gap:0;width:auto;overflow:visible}ax-datetime-box .ax-classic-datetime-selects ax-select-box ax-dropdown-box.ax-editor-container{--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0;justify-content:flex-start}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-chips-container{flex:0 0 auto;width:auto}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-chips-container .ax-chips{overflow:visible;text-overflow:unset;padding-inline:0}\n"] }]
|
|
357
|
+
], template: "@if (boxLook() === 'classic') {\n <div [class]=\"_classicBoxClass\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <div class=\"ax-classic-datetime-selects\" dir=\"ltr\">\n @if (_classicHasDatePart) {\n <div class=\"ax-classic-datetime-group\">\n @for (field of _classicDateFields(); track field.part; let last = $last) {\n <ax-select-box\n look=\"none\"\n [class]=\"'ax-classic-' + field.part + '-select'\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [isItemTruncated]=\"false\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleClassicPartChanged($event, field.part)\"\n ></ax-select-box>\n @if (!last) {\n <span class=\"ax-classic-datetime-separator\" aria-hidden=\"true\">-</span>\n }\n }\n </div>\n }\n @if (_classicHasTimePart) {\n <div class=\"ax-classic-datetime-group\">\n @for (field of _classicTimeFields; track field.part; let last = $last) {\n <ax-select-box\n look=\"none\"\n [class]=\"'ax-classic-' + field.part + '-select'\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [isItemTruncated]=\"false\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleClassicPartChanged($event, field.part)\"\n ></ax-select-box>\n @if (!last) {\n <span class=\"ax-classic-datetime-separator\" aria-hidden=\"true\">:</span>\n }\n }\n </div>\n }\n </div>\n <ng-content select=\"ax-suffix\"></ng-content>\n </div>\n} @else {\n <ax-dropdown-box\n [look]=\"look\"\n [disabled]=\"disabled\"\n (onOpened)=\"_handleOnOpenedEvent($event)\"\n (onClosed)=\"_handleOnClosedEvent($event)\"\n >\n <ng-container input>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <ax-datetime-input\n dir=\"ltr\"\n [name]=\"name\"\n [ngModel]=\"_editingDateObj()\"\n (ngModelChange)=\"_handleInputModelChange($event)\"\n id=\"{{ id }}-input\"\n [format]=\"_resolvedFormat()\"\n [picker]=\"picker()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [allowTyping]=\"allowTyping()\"\n [calendar]=\"_calendarSystem()\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\"\n (onClick)=\"_handleInputOnClick()\"\n (onBlur)=\"_handleInputOnBlurEvent($event)\"\n (onFocus)=\"_handleInputOnFocusEvent($event)\"\n ></ax-datetime-input>\n @if (value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <button type=\"button\" class=\"ax-editor-button\" [tabIndex]=\"-1\" [disabled]=\"disabled\" (click)=\"toggle()\">\n <span class=\"ax-icon ax-icon-calendar\"></span>\n </button>\n <ng-content select=\"ax-suffix\"> </ng-content>\n </ng-container>\n <ng-container panel>\n <ax-datetime-picker\n #pickerRef\n [type]=\"_calendarSystem()\"\n [depth]=\"depth\"\n [ngModel]=\"_editingDateObj()\"\n [picker]=\"picker()\"\n [format]=\"_resolvedFormat()\"\n id=\"{{ id }}-picker\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\"\n [weekend]=\"weekend()\"\n [weekdays]=\"weekdays()\"\n [holidayDates]=\"holidayDates\"\n [calendar]=\"_calendarSystem()\"\n [disabledDates]=\"disabledDates\"\n [calendarLook]=\"calendarLook()\"\n [yearRange]=\"yearRange()\"\n (onNavigate)=\"_handleCalendarOnNavigate($event)\"\n (ngModelChange)=\"_handlePickerModelChange($event)\"\n ></ax-datetime-picker>\n </ng-container>\n </ax-dropdown-box>\n}\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: ["ax-datetime-input{display:contents}ax-datetime-box .ax-classic-datetime-box{overflow:visible;height:auto;min-height:var(--ax-comp-editor-height)}ax-datetime-box .ax-classic-datetime-selects{display:flex;flex:1;align-items:center;justify-content:space-between;gap:1rem;min-width:12rem;flex-wrap:wrap;overflow:visible}ax-datetime-box .ax-classic-datetime-group{display:flex;align-items:center;gap:.125rem}ax-datetime-box .ax-classic-datetime-separator{flex:0 0 auto;padding-inline:.125rem;font-size:var(--ax-comp-editor-font-size);line-height:1;color:rgba(var(--ax-comp-editor-text-color));opacity:.6;-webkit-user-select:none;user-select:none;pointer-events:none}ax-datetime-box .ax-classic-datetime-selects ax-select-box{display:inline-block;width:auto;flex:0 0 auto}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-editor-button{display:none}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-editor-container,ax-datetime-box .ax-classic-datetime-selects ax-select-box ax-dropdown-box.ax-editor-container{gap:0;width:auto;overflow:visible}ax-datetime-box .ax-classic-datetime-selects ax-select-box ax-dropdown-box.ax-editor-container{--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0;justify-content:flex-start}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-chips-container{flex:0 0 auto;width:auto}ax-datetime-box .ax-classic-datetime-selects ax-select-box .ax-chips-container .ax-chips{overflow:visible;text-overflow:unset;padding-inline:0}\n"] }]
|
|
327
358
|
}], propDecorators: { input: [{
|
|
328
359
|
type: ViewChild,
|
|
329
360
|
args: [AXDateTimeInputComponent]
|