@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.
@@ -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 component.
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
- * @ignore
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
- * @ignore
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 various custom features.
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
- * @ignore
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
- * @ignore
26
- */
27
- protected _inputChars: string[];
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 box.
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
- private _detectParts;
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
- * @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
- * @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
- * @ignore
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
- * @ignore
108
- */
98
+ /** @ignore */
99
+ private _clampToRange;
100
+ /** @ignore */
109
101
  protected _handleOnInputClickEvent(e: MouseEvent): void;
110
- /**
111
- * @ignore
112
- */
113
- private _detectPartAtPosition;
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, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
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 component.
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(false, ...(ngDevMode ? [{ debugName: "allowTyping" }] : []));
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(() => this.format() ?? this.localeService.activeProfile().formats[this.picker()]?.short ?? '', ...(ngDevMode ? [{ debugName: "_resolvedFormat" }] : []));
74
- this._classicDateFields = AX_DATETIME_BOX_CLASSIC_DATE_FIELDS;
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 ax-${this.look}${this.disabled ? ' ax-state-disabled' : ''}`;
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
- * @ignore
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
- this.commitValue(this._editingDateObj(), false);
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
- * @ignore
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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
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
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
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]