@acorex/components 22.0.0-next.21 → 22.0.0-next.22

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.
Files changed (42) hide show
  1. package/fesm2022/acorex-components-calendar.mjs +2 -2
  2. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  3. package/fesm2022/acorex-components-color-palette.mjs +2 -2
  4. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  5. package/fesm2022/acorex-components-cron-job.mjs +12 -12
  6. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  7. package/fesm2022/acorex-components-datetime-box.mjs +10 -12
  8. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  9. package/fesm2022/acorex-components-datetime-input.mjs +49 -30
  10. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  11. package/fesm2022/acorex-components-form.mjs +3 -4
  12. package/fesm2022/acorex-components-form.mjs.map +1 -1
  13. package/fesm2022/acorex-components-list.mjs +19 -265
  14. package/fesm2022/acorex-components-list.mjs.map +1 -1
  15. package/fesm2022/acorex-components-phone-box.mjs +6 -6
  16. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  17. package/fesm2022/acorex-components-query-builder.mjs +2 -6
  18. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  19. package/fesm2022/acorex-components-rest-api-generator.mjs +2 -2
  20. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  21. package/fesm2022/acorex-components-rrule.mjs +2 -2
  22. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  23. package/fesm2022/acorex-components-scheduler-picker.mjs +16 -16
  24. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  25. package/fesm2022/acorex-components-scheduler.mjs +2 -2
  26. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  27. package/fesm2022/acorex-components-select-box.mjs +451 -176
  28. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  29. package/fesm2022/acorex-components-selection-list.mjs +4 -0
  30. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  31. package/package.json +3 -7
  32. package/select-box/README.md +0 -2
  33. package/types/acorex-components-datetime-input.d.ts +14 -5
  34. package/types/acorex-components-list.d.ts +3 -65
  35. package/types/acorex-components-phone-box.d.ts +2 -2
  36. package/types/acorex-components-query-builder.d.ts +9 -10
  37. package/types/acorex-components-select-box.d.ts +147 -36
  38. package/types/acorex-components-selection-list.d.ts +2 -1
  39. package/combo-box/README.md +0 -3
  40. package/fesm2022/acorex-components-combo-box.mjs +0 -669
  41. package/fesm2022/acorex-components-combo-box.mjs.map +0 -1
  42. package/types/acorex-components-combo-box.d.ts +0 -202
@@ -1,11 +1,10 @@
1
1
  import { MXInputBaseValueComponent, MXLookComponent, AXComponent, AXFocusableComponent, AXValuableComponent, AXClearableComponent } from '@acorex/cdk/common';
2
2
  import { MXCalendarBaseComponent, getCalendarYearBounds } from '@acorex/components/calendar';
3
- import { AX_DATETIME_INPUT_CONFIG, AXDateTimeInputComponent } from '@acorex/components/datetime-input';
3
+ import { AX_DATETIME_INPUT_CONFIG, resolveDateTimeInputFormat, 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';
9
8
  import * as i0 from '@angular/core';
10
9
  import { inject, EventEmitter, input, signal, computed, forwardRef, HostBinding, Output, ViewChild, ViewEncapsulation, Component, NgModule } from '@angular/core';
11
10
  import * as i1 from '@angular/forms';
@@ -86,14 +85,13 @@ class AXDateTimeBoxComponent extends classes((MXInputBaseValueComponent), MXCale
86
85
  ...(ngDevMode ? [{ debugName: "_editingDateObj" }] : /* istanbul ignore next */ []));
87
86
  this._calendarSystem = computed(() => this.calendar() ?? this.localeService.activeProfile().calendar.system, /* @ts-ignore */
88
87
  ...(ngDevMode ? [{ debugName: "_calendarSystem" }] : /* istanbul ignore next */ []));
89
- this._resolvedFormat = computed(() => {
90
- if (this.format()) {
91
- return this.format();
92
- }
93
- // Calendar override can differ from the active locale; solar-hijri uses day/month/year.
94
- const formats = this._calendarSystem() === 'solar-hijri' ? AXIRLocaleProfile.formats : this.localeService.activeProfile().formats;
95
- return formats[this.picker()]?.short ?? '';
96
- }, /* @ts-ignore */
88
+ this._resolvedFormat = computed(() => resolveDateTimeInputFormat({
89
+ customFormat: this.format(),
90
+ calendarSystem: this._calendarSystem(),
91
+ picker: this.picker(),
92
+ isRtl: this.localeService.isRtl(),
93
+ localeFormats: this.localeService.activeProfile().formats,
94
+ }), /* @ts-ignore */
97
95
  ...(ngDevMode ? [{ debugName: "_resolvedFormat" }] : /* istanbul ignore next */ []));
98
96
  this._classicDateFields = computed(() => {
99
97
  if (this._calendarSystem() === 'solar-hijri') {
@@ -326,7 +324,7 @@ class AXDateTimeBoxComponent extends classes((MXInputBaseValueComponent), MXCale
326
324
  useExisting: forwardRef(() => AXDateTimeBoxComponent),
327
325
  multi: true,
328
326
  },
329
- ], 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 [items]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\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 [items]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\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-general-button-icon\" [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: ["@layer components{ax-datetime-input{display:contents}ax-datetime-box .ax-classic-datetime-box{padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1);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-general-button-icon{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}app-demo-box .log-container{display:flex;flex-direction:row-reverse;justify-content:space-between}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\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", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "items", "placeholder", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "maxVisibleItems", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
327
+ ], 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 [name]=\"name\"\n [ngModel]=\"_editingDateObj()\"\n (ngModelChange)=\"_handleInputModelChange($event)\"\n id=\"{{ id }}-input\"\n [format]=\"format()\"\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-general-button-icon\" [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: ["@layer components{ax-datetime-input{display:contents}ax-datetime-box .ax-classic-datetime-box{padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1);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-general-button-icon{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}app-demo-box .log-container{display:flex;flex-direction:row-reverse;justify-content:space-between}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\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 }); }
330
328
  }
331
329
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXDateTimeBoxComponent, decorators: [{
332
330
  type: Component,
@@ -371,7 +369,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
371
369
  FormsModule,
372
370
  AXDateTimePickerComponent,
373
371
  AXSelectBoxComponent,
374
- ], 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 [items]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\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 [items]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\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-general-button-icon\" [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: ["@layer components{ax-datetime-input{display:contents}ax-datetime-box .ax-classic-datetime-box{padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1);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-general-button-icon{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}app-demo-box .log-container{display:flex;flex-direction:row-reverse;justify-content:space-between}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
372
+ ], 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 [name]=\"name\"\n [ngModel]=\"_editingDateObj()\"\n (ngModelChange)=\"_handleInputModelChange($event)\"\n id=\"{{ id }}-input\"\n [format]=\"format()\"\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-general-button-icon\" [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: ["@layer components{ax-datetime-input{display:contents}ax-datetime-box .ax-classic-datetime-box{padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1);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-general-button-icon{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}app-demo-box .log-container{display:flex;flex-direction:row-reverse;justify-content:space-between}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
375
373
  }], propDecorators: { input: [{
376
374
  type: ViewChild,
377
375
  args: [AXDateTimeInputComponent]
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-datetime-box.mjs","sources":["../../../../packages/components/datetime-box/src/lib/datetime-box.class.ts","../../../../packages/components/datetime-box/src/lib/datetime-box.component.ts","../../../../packages/components/datetime-box/src/lib/datetime-box.component.html","../../../../packages/components/datetime-box/src/lib/datetime-box.module.ts","../../../../packages/components/datetime-box/src/acorex-components-datetime-box.ts"],"sourcesContent":["import { TimeUnit } from '@acorex/core/date-time';\n\n/**\n * Controls how date/time is chosen in the datetime box.\n * - `default`: text input with calendar popup.\n * - `classic`: inline select boxes for year, month, day, and optionally hour/minute.\n */\nexport type AXDateTimeBoxLookType = 'default' | 'classic';\n\nexport type AXDateTimeBoxClassicPart = Extract<TimeUnit, 'year' | 'month' | 'day' | 'hour' | 'minute'>;\n\nexport interface AXDateTimeBoxClassicField {\n part: AXDateTimeBoxClassicPart;\n dropdownWidth: string;\n maxVisibleItems: number;\n}\n\nexport const AX_DATETIME_BOX_CLASSIC_DATE_FIELDS: AXDateTimeBoxClassicField[] = [\n { part: 'year', dropdownWidth: '70', maxVisibleItems: 10 },\n { part: 'month', dropdownWidth: '90', maxVisibleItems: 12 },\n { part: 'day', dropdownWidth: '50', maxVisibleItems: 10 },\n];\n\nexport const AX_DATETIME_BOX_CLASSIC_TIME_FIELDS: AXDateTimeBoxClassicField[] = [\n { part: 'hour', dropdownWidth: '50', maxVisibleItems: 10 },\n { part: 'minute', dropdownWidth: '50', maxVisibleItems: 10 },\n];\n","import {\n AXClearableComponent,\n AXComponent,\n AXEvent,\n AXFocusEvent,\n AXFocusableComponent,\n AXValuableComponent,\n AXValueChangedEvent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport {\n AXCalendarNavigateEvent,\n AXCalendarNavigationLookType,\n AXCalendarYearRange,\n AXDateTimePickerType,\n MXCalendarBaseComponent,\n getCalendarYearBounds,\n} from '@acorex/components/calendar';\nimport {\n AX_DATETIME_INPUT_CONFIG,\n AXDateTimeInputComponent,\n AXDateTimeInputConfig,\n} from '@acorex/components/datetime-input';\nimport { AXDateTimePickerComponent } from '@acorex/components/datetime-picker';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXDropdownBoxComponent, MXDropdownBoxBaseComponent } from '@acorex/components/dropdown';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXIRLocaleProfile } from '@acorex/core/locale';\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Output,\n ViewChild,\n ViewEncapsulation,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport {\n AXDateTimeBoxClassicPart,\n AXDateTimeBoxLookType,\n AX_DATETIME_BOX_CLASSIC_DATE_FIELDS,\n AX_DATETIME_BOX_CLASSIC_TIME_FIELDS,\n} from './datetime-box.class';\n\n/**\n * Represents a date and time input component that allows user interaction and triggers events.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-datetime-box',\n templateUrl: './datetime-box.component.html',\n styleUrl: './datetime-box.component.css',\n inputs: [\n 'disabled',\n 'readonly',\n 'tabIndex',\n 'placeholder',\n 'minValue',\n 'maxValue',\n 'value',\n 'state',\n 'name',\n 'depth',\n 'id',\n 'type',\n 'look',\n 'holidayDates',\n ],\n outputs: [\n 'valueChange',\n 'stateChange',\n 'onValueChanged',\n 'onBlur',\n 'onFocus',\n 'onOpened',\n 'onClosed',\n 'readonlyChange',\n 'disabledChange',\n ],\n\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: AXComponent, useExisting: AXDateTimeBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXDateTimeBoxComponent },\n { provide: AXValuableComponent, useExisting: AXDateTimeBoxComponent },\n { provide: AXClearableComponent, useExisting: AXDateTimeBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXDateTimeBoxComponent),\n multi: true,\n },\n ],\n host: { ngSkipHydration: 'true' },\n imports: [\n AXDropdownBoxComponent,\n AXDateTimeInputComponent,\n FormsModule,\n AXDateTimePickerComponent,\n AXSelectBoxComponent,\n ],\n})\nexport class AXDateTimeBoxComponent extends classes(\n MXInputBaseValueComponent<Date>,\n MXCalendarBaseComponent,\n MXDropdownBoxBaseComponent,\n MXLookComponent,\n AXDecoratorGenericComponent,\n) {\n private readonly defaultConfig: AXDateTimeInputConfig = inject(AX_DATETIME_INPUT_CONFIG);\n\n /**\n * @ignore\n */\n @ViewChild(AXDateTimeInputComponent)\n protected input: AXDateTimeInputComponent;\n\n /**\n * @ignore\n */\n @ViewChild(AXDateTimePickerComponent)\n protected pickerRef: AXDateTimePickerComponent;\n\n /**\n * @ignore\n */\n @ViewChild(AXDropdownBoxComponent)\n protected dropdown: AXDropdownBoxComponent;\n\n /**\n * Emitted when the format of the component changes.\n *\n * @event\n */\n @Output()\n formatChange = new EventEmitter<string>();\n\n /**\n * Indicates whether typing is allowed in the input.\n * When false, clicking the input (or the calendar icon) opens the picker.\n * When true, the input is for typing and the picker opens from the calendar button.\n * Defaults to `AX_DATETIME_INPUT_CONFIG.allowTyping` when not set on the instance.\n *\n * @defaultValue false\n */\n readonly allowTyping = input<boolean>(this.defaultConfig.allowTyping);\n\n readonly picker = input<AXDateTimePickerType>('datetime');\n\n /**\n * @description The calendar type to use for the datetime input.\n */\n readonly calendar = input<string | null>(null);\n\n readonly weekend = input<number[]>([]);\n readonly weekdays = input<number[]>([]);\n\n /**\n * Day view navigation style of the embedded calendar.\n */\n readonly calendarLook = input<AXCalendarNavigationLookType>('select');\n\n /**\n * Years shown in the year selector when `calendarLook` is `select`.\n * Use a number for equal past/future ranges, or `{ past, future }` for asymmetric ranges.\n * `minValue` and `maxValue` take priority when set.\n */\n readonly yearRange = input<AXCalendarYearRange>(80);\n\n /**\n * Input style of the datetime box.\n * - `default`: text input with calendar popup.\n * - `classic`: inline select boxes for date/time parts.\n */\n readonly boxLook = input<AXDateTimeBoxLookType>('default');\n\n /**\n * @deprecated use locale & mode instead\n */\n readonly format = input<string | null>();\n\n protected _editingDateObj = signal<Date | null>(null);\n\n protected readonly _calendarSystem = computed(\n () => this.calendar() ?? this.localeService.activeProfile().calendar.system,\n );\n\n protected readonly _resolvedFormat = computed(() => {\n if (this.format()) {\n return this.format()!;\n }\n // Calendar override can differ from the active locale; solar-hijri uses day/month/year.\n const formats =\n this._calendarSystem() === 'solar-hijri' ? AXIRLocaleProfile.formats : this.localeService.activeProfile().formats;\n return formats[this.picker()]?.short ?? '';\n });\n\n protected readonly _classicDateFields = computed(() => {\n if (this._calendarSystem() === 'solar-hijri') {\n return [\n { part: 'day' as const, dropdownWidth: '50', maxVisibleItems: 10 },\n { part: 'month' as const, dropdownWidth: '90', maxVisibleItems: 12 },\n { part: 'year' as const, dropdownWidth: '70', maxVisibleItems: 10 },\n ];\n }\n return AX_DATETIME_BOX_CLASSIC_DATE_FIELDS;\n });\n\n protected readonly _classicTimeFields = AX_DATETIME_BOX_CLASSIC_TIME_FIELDS;\n\n private readonly _classicTimeOptions = {\n hour: Array.from({ length: 24 }, (_, i) => ({ id: i, text: String(i).padStart(2, '0') })),\n minute: Array.from({ length: 60 }, (_, i) => ({ id: i, text: String(i).padStart(2, '0') })),\n };\n\n protected _classicDate = computed(() => {\n const value = this._editingDateObj();\n return value\n ? this.calendarService.create(value, this._calendarSystem())\n : this.calendarService.now(this._calendarSystem());\n });\n\n protected _classicYearOptions = computed(() => {\n const calendarSystem = this._calendarSystem();\n const referenceYear = this.calendarService.now(calendarSystem).year;\n const { minYear, maxYear } = getCalendarYearBounds({\n referenceYear,\n yearRange: this.yearRange(),\n minValue: this.minValue,\n maxValue: this.maxValue,\n getYear: (date) => this.calendarService.create(date, calendarSystem).year,\n });\n return Array.from({ length: maxYear - minYear + 1 }, (_, i) => ({\n id: minYear + i,\n text: String(minYear + i),\n }));\n });\n\n protected _classicMonthOptions = computed(() => {\n const calendar = this._classicDate().calendar.name();\n return Array.from({ length: 12 }, (_, i) => ({\n id: i + 1,\n text: `@acorex:dateTime.months.${calendar}.short.${i}`,\n }));\n });\n\n protected _classicDayOptions = computed(() => {\n const daysInMonth = this._classicDate().endOf('month').dayOfMonth;\n return Array.from({ length: daysInMonth }, (_, i) => ({\n id: i + 1,\n text: String(i + 1).padStart(2, '0'),\n }));\n });\n\n protected get _classicBoxClass(): string {\n return `ax-editor-container ax-default ax-classic-datetime-box ${this.look}${this.disabled ? ' ax-state-disabled' : ''}`;\n }\n\n protected get _classicHasDatePart(): boolean {\n const mode = this.picker();\n return mode === 'date' || mode === 'datetime';\n }\n\n protected get _classicHasTimePart(): boolean {\n const mode = this.picker();\n return mode === 'time' || mode === 'datetime';\n }\n\n /**\n * @ignore\n */\n protected _classicPartValue(part: AXDateTimeBoxClassicPart): { id: number; text: string } | null {\n if (!this._editingDateObj()) return null;\n\n const date = this._classicDate();\n const values: Record<AXDateTimeBoxClassicPart, number> = {\n year: date.year,\n month: date.monthOfYear,\n day: date.dayOfMonth,\n hour: date.hour,\n minute: date.minute,\n };\n const id = values[part];\n return this._classicPartOptions(part).find((option) => option.id === id) ?? { id, text: String(id) };\n }\n\n /**\n * @ignore\n */\n protected _classicPartOptions(part: AXDateTimeBoxClassicPart) {\n switch (part) {\n case 'year':\n return this._classicYearOptions();\n case 'month':\n return this._classicMonthOptions();\n case 'day':\n return this._classicDayOptions();\n case 'hour':\n return this._classicTimeOptions.hour;\n case 'minute':\n return this._classicTimeOptions.minute;\n }\n }\n\n /**\n * Syncs typed input values into the box (and the picker via `_editingDateObj`).\n * @ignore\n */\n protected _handleInputModelChange(value: Date | null) {\n this.commitValue(value, true);\n }\n\n /**\n * Syncs picker selection into the box (and the input via `_editingDateObj`).\n * @ignore\n */\n protected _handlePickerModelChange(value: Date | null) {\n if (this.isOpen) {\n this.commitValue(value, true);\n }\n }\n\n /**\n * @ignore\n */\n protected _handleOnOpenedEvent(e: AXEvent) {\n //this.emitOnFocusEvent(null);\n this.emitOnOpenedEvent();\n }\n\n /**\n * @ignore\n */\n protected _handleOnClosedEvent(e: AXEvent) {\n //this.emitOnBlurEvent(null);\n this.input?.focus();\n this.emitOnClosedEvent();\n }\n\n /**\n * @ignore\n */\n protected _handleInputOnFocusEvent(e: AXFocusEvent) {\n this.emitOnFocusEvent(e.nativeEvent);\n }\n\n /**\n * @ignore\n */\n protected _handleInputOnBlurEvent(e: AXFocusEvent) {\n this.emitOnBlurEvent(e.nativeEvent);\n }\n\n /**\n * @ignore\n */\n protected _handleCalendarOnNavigate(e: AXCalendarNavigateEvent) {\n this.onNavigate.emit(e);\n }\n\n /**\n * Handles changes to the internal value.\n * @param value The new value that was set.\n * @ignore\n */\n override internalValueChanged(value): void {\n try {\n if (this.calendarService.isValidDate(value)) {\n this._editingDateObj.set(this.calendarService.create(value, this._calendarSystem()).date);\n } else {\n throw new Error();\n }\n } catch {\n this._editingDateObj.set(null);\n }\n\n // Close the picker after a committed selection; typing already keeps it closed.\n if (this.boxLook() !== 'classic' && this.isOpen) {\n this.close();\n }\n }\n\n /**\n * @ignore\n */\n protected _handleClassicPartChanged(e: AXValueChangedEvent, part: AXDateTimeBoxClassicPart) {\n if (!e.isUserInteraction) return;\n\n const partValue = this._readSelectValue(e.value);\n if (partValue == null) return;\n\n let date = this._editingDateObj()\n ? this.calendarService.create(this._editingDateObj()!, this._calendarSystem())\n : this.calendarService.now(this._calendarSystem());\n\n date = date.set(part, partValue);\n\n if (part === 'year' || part === 'month') {\n const maxDay = date.endOf('month').dayOfMonth;\n if (date.dayOfMonth > maxDay) {\n date = date.set('day', maxDay);\n }\n }\n\n this._editingDateObj.set(date.date);\n this.commitValue(date.date, true);\n }\n\n /**\n * @ignore\n */\n private _readSelectValue(value: unknown): number | null {\n if (Array.isArray(value)) return (value[0] as { id: number } | undefined)?.id ?? null;\n if (value && typeof value === 'object') return (value as { id: number }).id ?? null;\n return value != null ? Number(value) : null;\n }\n\n /**\n * When typing is disabled, open the picker on input click.\n * When typing is enabled, keep the picker closed so the user can type.\n * @ignore\n */\n protected _handleInputOnClick() {\n if (!this.allowTyping()) {\n this.open();\n } else {\n this.close();\n }\n }\n\n @HostBinding('attr.name')\n private get __hostName(): string {\n return this.name;\n }\n}\n","@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 [items]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\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 [items]=\"_classicPartOptions(field.part)\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_classicPartValue(field.part)\"\n [dropdownWidth]=\"field.dropdownWidth\"\n [maxVisibleItems]=\"field.maxVisibleItems\"\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-general-button-icon\" [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","import { NgModule } from '@angular/core';\nimport { AXDateTimeBoxComponent } from './datetime-box.component';\n\n@NgModule({\n imports: [AXDateTimeBoxComponent],\n exports: [AXDateTimeBoxComponent],\n})\nexport class AXDateTimeBoxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-datetime-box.mjs","sources":["../../../../packages/components/datetime-box/src/lib/datetime-box.class.ts","../../../../packages/components/datetime-box/src/lib/datetime-box.component.ts","../../../../packages/components/datetime-box/src/lib/datetime-box.component.html","../../../../packages/components/datetime-box/src/lib/datetime-box.module.ts","../../../../packages/components/datetime-box/src/acorex-components-datetime-box.ts"],"sourcesContent":["import { TimeUnit } from '@acorex/core/date-time';\n\n/**\n * Controls how date/time is chosen in the datetime box.\n * - `default`: text input with calendar popup.\n * - `classic`: inline select boxes for year, month, day, and optionally hour/minute.\n */\nexport type AXDateTimeBoxLookType = 'default' | 'classic';\n\nexport type AXDateTimeBoxClassicPart = Extract<TimeUnit, 'year' | 'month' | 'day' | 'hour' | 'minute'>;\n\nexport interface AXDateTimeBoxClassicField {\n part: AXDateTimeBoxClassicPart;\n dropdownWidth: string;\n maxVisibleItems: number;\n}\n\nexport const AX_DATETIME_BOX_CLASSIC_DATE_FIELDS: AXDateTimeBoxClassicField[] = [\n { part: 'year', dropdownWidth: '70', maxVisibleItems: 10 },\n { part: 'month', dropdownWidth: '90', maxVisibleItems: 12 },\n { part: 'day', dropdownWidth: '50', maxVisibleItems: 10 },\n];\n\nexport const AX_DATETIME_BOX_CLASSIC_TIME_FIELDS: AXDateTimeBoxClassicField[] = [\n { part: 'hour', dropdownWidth: '50', maxVisibleItems: 10 },\n { part: 'minute', dropdownWidth: '50', maxVisibleItems: 10 },\n];\n","import {\n AXClearableComponent,\n AXComponent,\n AXEvent,\n AXFocusEvent,\n AXFocusableComponent,\n AXValuableComponent,\n AXValueChangedEvent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport {\n AXCalendarNavigateEvent,\n AXCalendarNavigationLookType,\n AXCalendarYearRange,\n AXDateTimePickerType,\n MXCalendarBaseComponent,\n getCalendarYearBounds,\n} from '@acorex/components/calendar';\nimport {\n AX_DATETIME_INPUT_CONFIG,\n AXDateTimeInputComponent,\n AXDateTimeInputConfig,\n resolveDateTimeInputFormat,\n} from '@acorex/components/datetime-input';\nimport { AXDateTimePickerComponent } from '@acorex/components/datetime-picker';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXDropdownBoxComponent, MXDropdownBoxBaseComponent } from '@acorex/components/dropdown';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXIRLocaleProfile } from '@acorex/core/locale';\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Output,\n ViewChild,\n ViewEncapsulation,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport {\n AXDateTimeBoxClassicPart,\n AXDateTimeBoxLookType,\n AX_DATETIME_BOX_CLASSIC_DATE_FIELDS,\n AX_DATETIME_BOX_CLASSIC_TIME_FIELDS,\n} from './datetime-box.class';\n\n/**\n * Represents a date and time input component that allows user interaction and triggers events.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-datetime-box',\n templateUrl: './datetime-box.component.html',\n styleUrl: './datetime-box.component.css',\n inputs: [\n 'disabled',\n 'readonly',\n 'tabIndex',\n 'placeholder',\n 'minValue',\n 'maxValue',\n 'value',\n 'state',\n 'name',\n 'depth',\n 'id',\n 'type',\n 'look',\n 'holidayDates',\n ],\n outputs: [\n 'valueChange',\n 'stateChange',\n 'onValueChanged',\n 'onBlur',\n 'onFocus',\n 'onOpened',\n 'onClosed',\n 'readonlyChange',\n 'disabledChange',\n ],\n\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: AXComponent, useExisting: AXDateTimeBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXDateTimeBoxComponent },\n { provide: AXValuableComponent, useExisting: AXDateTimeBoxComponent },\n { provide: AXClearableComponent, useExisting: AXDateTimeBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXDateTimeBoxComponent),\n multi: true,\n },\n ],\n host: { ngSkipHydration: 'true' },\n imports: [\n AXDropdownBoxComponent,\n AXDateTimeInputComponent,\n FormsModule,\n AXDateTimePickerComponent,\n AXSelectBoxComponent,\n ],\n})\nexport class AXDateTimeBoxComponent extends classes(\n MXInputBaseValueComponent<Date>,\n MXCalendarBaseComponent,\n MXDropdownBoxBaseComponent,\n MXLookComponent,\n AXDecoratorGenericComponent,\n) {\n private readonly defaultConfig: AXDateTimeInputConfig = inject(AX_DATETIME_INPUT_CONFIG);\n\n /**\n * @ignore\n */\n @ViewChild(AXDateTimeInputComponent)\n protected input: AXDateTimeInputComponent;\n\n /**\n * @ignore\n */\n @ViewChild(AXDateTimePickerComponent)\n protected pickerRef: AXDateTimePickerComponent;\n\n /**\n * @ignore\n */\n @ViewChild(AXDropdownBoxComponent)\n protected dropdown: AXDropdownBoxComponent;\n\n /**\n * Emitted when the format of the component changes.\n *\n * @event\n */\n @Output()\n formatChange = new EventEmitter<string>();\n\n /**\n * Indicates whether typing is allowed in the input.\n * When false, clicking the input (or the calendar icon) opens the picker.\n * When true, the input is for typing and the picker opens from the calendar button.\n * Defaults to `AX_DATETIME_INPUT_CONFIG.allowTyping` when not set on the instance.\n *\n * @defaultValue false\n */\n readonly allowTyping = input<boolean>(this.defaultConfig.allowTyping);\n\n readonly picker = input<AXDateTimePickerType>('datetime');\n\n /**\n * @description The calendar type to use for the datetime input.\n */\n readonly calendar = input<string | null>(null);\n\n readonly weekend = input<number[]>([]);\n readonly weekdays = input<number[]>([]);\n\n /**\n * Day view navigation style of the embedded calendar.\n */\n readonly calendarLook = input<AXCalendarNavigationLookType>('select');\n\n /**\n * Years shown in the year selector when `calendarLook` is `select`.\n * Use a number for equal past/future ranges, or `{ past, future }` for asymmetric ranges.\n * `minValue` and `maxValue` take priority when set.\n */\n readonly yearRange = input<AXCalendarYearRange>(80);\n\n /**\n * Input style of the datetime box.\n * - `default`: text input with calendar popup.\n * - `classic`: inline select boxes for date/time parts.\n */\n readonly boxLook = input<AXDateTimeBoxLookType>('default');\n\n /**\n * @deprecated use locale & mode instead\n */\n readonly format = input<string | null>();\n\n protected _editingDateObj = signal<Date | null>(null);\n\n protected readonly _calendarSystem = computed(\n () => this.calendar() ?? this.localeService.activeProfile().calendar.system,\n );\n\n protected readonly _resolvedFormat = computed(() =>\n resolveDateTimeInputFormat({\n customFormat: this.format(),\n calendarSystem: this._calendarSystem(),\n picker: this.picker(),\n isRtl: this.localeService.isRtl(),\n localeFormats: this.localeService.activeProfile().formats,\n }),\n );\n\n protected readonly _classicDateFields = computed(() => {\n if (this._calendarSystem() === 'solar-hijri') {\n return [\n { part: 'day' as const, dropdownWidth: '50', maxVisibleItems: 10 },\n { part: 'month' as const, dropdownWidth: '90', maxVisibleItems: 12 },\n { part: 'year' as const, dropdownWidth: '70', maxVisibleItems: 10 },\n ];\n }\n return AX_DATETIME_BOX_CLASSIC_DATE_FIELDS;\n });\n\n protected readonly _classicTimeFields = AX_DATETIME_BOX_CLASSIC_TIME_FIELDS;\n\n private readonly _classicTimeOptions = {\n hour: Array.from({ length: 24 }, (_, i) => ({ id: i, text: String(i).padStart(2, '0') })),\n minute: Array.from({ length: 60 }, (_, i) => ({ id: i, text: String(i).padStart(2, '0') })),\n };\n\n protected _classicDate = computed(() => {\n const value = this._editingDateObj();\n return value\n ? this.calendarService.create(value, this._calendarSystem())\n : this.calendarService.now(this._calendarSystem());\n });\n\n protected _classicYearOptions = computed(() => {\n const calendarSystem = this._calendarSystem();\n const referenceYear = this.calendarService.now(calendarSystem).year;\n const { minYear, maxYear } = getCalendarYearBounds({\n referenceYear,\n yearRange: this.yearRange(),\n minValue: this.minValue,\n maxValue: this.maxValue,\n getYear: (date) => this.calendarService.create(date, calendarSystem).year,\n });\n return Array.from({ length: maxYear - minYear + 1 }, (_, i) => ({\n id: minYear + i,\n text: String(minYear + i),\n }));\n });\n\n protected _classicMonthOptions = computed(() => {\n const calendar = this._classicDate().calendar.name();\n return Array.from({ length: 12 }, (_, i) => ({\n id: i + 1,\n text: `@acorex:dateTime.months.${calendar}.short.${i}`,\n }));\n });\n\n protected _classicDayOptions = computed(() => {\n const daysInMonth = this._classicDate().endOf('month').dayOfMonth;\n return Array.from({ length: daysInMonth }, (_, i) => ({\n id: i + 1,\n text: String(i + 1).padStart(2, '0'),\n }));\n });\n\n protected get _classicBoxClass(): string {\n return `ax-editor-container ax-default ax-classic-datetime-box ${this.look}${this.disabled ? ' ax-state-disabled' : ''}`;\n }\n\n protected get _classicHasDatePart(): boolean {\n const mode = this.picker();\n return mode === 'date' || mode === 'datetime';\n }\n\n protected get _classicHasTimePart(): boolean {\n const mode = this.picker();\n return mode === 'time' || mode === 'datetime';\n }\n\n /**\n * @ignore\n */\n protected _classicPartValue(part: AXDateTimeBoxClassicPart): { id: number; text: string } | null {\n if (!this._editingDateObj()) return null;\n\n const date = this._classicDate();\n const values: Record<AXDateTimeBoxClassicPart, number> = {\n year: date.year,\n month: date.monthOfYear,\n day: date.dayOfMonth,\n hour: date.hour,\n minute: date.minute,\n };\n const id = values[part];\n return this._classicPartOptions(part).find((option) => option.id === id) ?? { id, text: String(id) };\n }\n\n /**\n * @ignore\n */\n protected _classicPartOptions(part: AXDateTimeBoxClassicPart) {\n switch (part) {\n case 'year':\n return this._classicYearOptions();\n case 'month':\n return this._classicMonthOptions();\n case 'day':\n return this._classicDayOptions();\n case 'hour':\n return this._classicTimeOptions.hour;\n case 'minute':\n return this._classicTimeOptions.minute;\n }\n }\n\n /**\n * Syncs typed input values into the box (and the picker via `_editingDateObj`).\n * @ignore\n */\n protected _handleInputModelChange(value: Date | null) {\n this.commitValue(value, true);\n }\n\n /**\n * Syncs picker selection into the box (and the input via `_editingDateObj`).\n * @ignore\n */\n protected _handlePickerModelChange(value: Date | null) {\n if (this.isOpen) {\n this.commitValue(value, true);\n }\n }\n\n /**\n * @ignore\n */\n protected _handleOnOpenedEvent(e: AXEvent) {\n //this.emitOnFocusEvent(null);\n this.emitOnOpenedEvent();\n }\n\n /**\n * @ignore\n */\n protected _handleOnClosedEvent(e: AXEvent) {\n //this.emitOnBlurEvent(null);\n this.input?.focus();\n this.emitOnClosedEvent();\n }\n\n /**\n * @ignore\n */\n protected _handleInputOnFocusEvent(e: AXFocusEvent) {\n this.emitOnFocusEvent(e.nativeEvent);\n }\n\n /**\n * @ignore\n */\n protected _handleInputOnBlurEvent(e: AXFocusEvent) {\n this.emitOnBlurEvent(e.nativeEvent);\n }\n\n /**\n * @ignore\n */\n protected _handleCalendarOnNavigate(e: AXCalendarNavigateEvent) {\n this.onNavigate.emit(e);\n }\n\n /**\n * Handles changes to the internal value.\n * @param value The new value that was set.\n * @ignore\n */\n override internalValueChanged(value): void {\n try {\n if (this.calendarService.isValidDate(value)) {\n this._editingDateObj.set(this.calendarService.create(value, this._calendarSystem()).date);\n } else {\n throw new Error();\n }\n } catch {\n this._editingDateObj.set(null);\n }\n\n // Close the picker after a committed selection; typing already keeps it closed.\n if (this.boxLook() !== 'classic' && this.isOpen) {\n this.close();\n }\n }\n\n /**\n * @ignore\n */\n protected _handleClassicPartChanged(e: AXValueChangedEvent, part: AXDateTimeBoxClassicPart) {\n if (!e.isUserInteraction) return;\n\n const partValue = this._readSelectValue(e.value);\n if (partValue == null) return;\n\n let date = this._editingDateObj()\n ? this.calendarService.create(this._editingDateObj()!, this._calendarSystem())\n : this.calendarService.now(this._calendarSystem());\n\n date = date.set(part, partValue);\n\n if (part === 'year' || part === 'month') {\n const maxDay = date.endOf('month').dayOfMonth;\n if (date.dayOfMonth > maxDay) {\n date = date.set('day', maxDay);\n }\n }\n\n this._editingDateObj.set(date.date);\n this.commitValue(date.date, true);\n }\n\n /**\n * @ignore\n */\n private _readSelectValue(value: unknown): number | null {\n if (Array.isArray(value)) return (value[0] as { id: number } | undefined)?.id ?? null;\n if (value && typeof value === 'object') return (value as { id: number }).id ?? null;\n return value != null ? Number(value) : null;\n }\n\n /**\n * When typing is disabled, open the picker on input click.\n * When typing is enabled, keep the picker closed so the user can type.\n * @ignore\n */\n protected _handleInputOnClick() {\n if (!this.allowTyping()) {\n this.open();\n } else {\n this.close();\n }\n }\n\n @HostBinding('attr.name')\n private get __hostName(): string {\n return this.name;\n }\n}\n","@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 [name]=\"name\"\n [ngModel]=\"_editingDateObj()\"\n (ngModelChange)=\"_handleInputModelChange($event)\"\n id=\"{{ id }}-input\"\n [format]=\"format()\"\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-general-button-icon\" [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","import { NgModule } from '@angular/core';\nimport { AXDateTimeBoxComponent } from './datetime-box.component';\n\n@NgModule({\n imports: [AXDateTimeBoxComponent],\n exports: [AXDateTimeBoxComponent],\n})\nexport class AXDateTimeBoxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,13 +1,11 @@
1
1
  import { MXInputBaseValueComponent, AXComponent, AXFocusableComponent, AXValuableComponent, AXClearableComponent } from '@acorex/cdk/common';
2
2
  import { AXCalendarService } from '@acorex/core/date-time';
3
- import { AXLocaleService, AXIRLocaleProfile } from '@acorex/core/locale';
4
- import { AXPlatform } from '@acorex/core/platform';
3
+ import { AXIRLocaleProfile, AXLocaleService } from '@acorex/core/locale';
5
4
  import { getWordBoundsAtPosition } from '@acorex/core/utils';
6
5
  import * as i0 from '@angular/core';
7
6
  import { InjectionToken, inject, signal, input, output, computed, linkedSignal, viewChild, effect, untracked, forwardRef, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
8
7
  import * as i1 from '@angular/forms';
9
8
  import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
10
- import { map } from 'rxjs';
11
9
 
12
10
  const AXDateTimeInputDefaultConfig = {
13
11
  allowTyping: false,
@@ -16,6 +14,24 @@ const AX_DATETIME_INPUT_CONFIG = new InjectionToken('AX_DATETIME_INPUT_CONFIG',
16
14
  providedIn: 'root',
17
15
  factory: () => AXDateTimeInputDefaultConfig,
18
16
  });
17
+ function resolveDateTimeInputFormat(options) {
18
+ if (options.customFormat) {
19
+ return options.customFormat;
20
+ }
21
+ const formats = options.calendarSystem === 'solar-hijri' ? AXIRLocaleProfile.formats : options.localeFormats;
22
+ if (options.calendarSystem === 'solar-hijri' && options.isRtl) {
23
+ const dateFormat = formats.date.medium;
24
+ const timeFormat = formats.time.short;
25
+ if (options.picker === 'date') {
26
+ return dateFormat;
27
+ }
28
+ if (options.picker === 'time') {
29
+ return timeFormat;
30
+ }
31
+ return `${timeFormat} ${dateFormat}`;
32
+ }
33
+ return formats[options.picker]?.short ?? '';
34
+ }
19
35
 
20
36
  /**
21
37
  * A component for date and time input with segment-based typing, keyboard navigation,
@@ -26,7 +42,6 @@ const AX_DATETIME_INPUT_CONFIG = new InjectionToken('AX_DATETIME_INPUT_CONFIG',
26
42
  class AXDateTimeInputComponent extends MXInputBaseValueComponent {
27
43
  constructor() {
28
44
  super(...arguments);
29
- this.platformService = inject(AXPlatform);
30
45
  this.localeService = inject(AXLocaleService);
31
46
  this.calendarService = inject(AXCalendarService);
32
47
  this.defaultConfig = inject(AX_DATETIME_INPUT_CONFIG);
@@ -135,16 +150,18 @@ class AXDateTimeInputComponent extends MXInputBaseValueComponent {
135
150
  ...(ngDevMode ? [undefined, { debugName: "format" }] : /* istanbul ignore next */ []));
136
151
  this._calendarSystem = computed(() => this.calendar() ?? this.localeService.activeProfile().calendar.system, /* @ts-ignore */
137
152
  ...(ngDevMode ? [{ debugName: "_calendarSystem" }] : /* istanbul ignore next */ []));
138
- this._resolvedFormat = computed(() => {
139
- if (this.format()) {
140
- return this.format();
141
- }
142
- // Calendar override can differ from the active locale; solar-hijri uses day/month/year.
143
- const formats = this._calendarSystem() === 'solar-hijri' ? AXIRLocaleProfile.formats : this.localeService.activeProfile().formats;
144
- return formats[this.picker()]?.short ?? '';
145
- }, /* @ts-ignore */
153
+ this._resolvedFormat = computed(() => resolveDateTimeInputFormat({
154
+ customFormat: this.format(),
155
+ calendarSystem: this._calendarSystem(),
156
+ picker: this.picker(),
157
+ isRtl: this.isRtl(),
158
+ localeFormats: this.localeService.activeProfile().formats,
159
+ }), /* @ts-ignore */
146
160
  ...(ngDevMode ? [{ debugName: "_resolvedFormat" }] : /* istanbul ignore next */ []));
147
161
  /** @ignore */
162
+ this._isHijriRtl = computed(() => this.isRtl() && this._calendarSystem() === 'solar-hijri', /* @ts-ignore */
163
+ ...(ngDevMode ? [{ debugName: "_isHijriRtl" }] : /* istanbul ignore next */ []));
164
+ /** @ignore */
148
165
  this._editingDate = linkedSignal(() => this.calendarService.now(this._calendarSystem()), /* @ts-ignore */
149
166
  ...(ngDevMode ? [{ debugName: "_editingDate" }] : /* istanbul ignore next */ []));
150
167
  /** @ignore */
@@ -153,12 +170,12 @@ class AXDateTimeInputComponent extends MXInputBaseValueComponent {
153
170
  /**
154
171
  * @description check if page is in rtl or ltr
155
172
  */
156
- this.isRtl = signal(this.platformService.isRtl(), /* @ts-ignore */
157
- ...(ngDevMode ? [{ debugName: "isRtl" }] : /* istanbul ignore next */ []));
173
+ this.isRtl = this.localeService.isRtl;
158
174
  /** @ignore */
159
175
  this.#formatEffect = effect(() => {
160
176
  this._resolvedFormat();
161
177
  this._calendarSystem();
178
+ this.isRtl();
162
179
  this._detectParts();
163
180
  untracked(() => {
164
181
  this.internalValueChanged(this.value);
@@ -172,11 +189,6 @@ class AXDateTimeInputComponent extends MXInputBaseValueComponent {
172
189
  }
173
190
  /** @ignore */
174
191
  #formatEffect;
175
- /** @ignore */
176
- ngOnInit() {
177
- super.ngOnInit();
178
- this.platformService.directionChange.pipe(map((i) => i.data === 'rtl')).subscribe((isRtl) => this.isRtl.set(isRtl));
179
- }
180
192
  /**
181
193
  * Formats a part using the calendar already attached to the AXDateTime.
182
194
  * @ignore
@@ -210,6 +222,11 @@ class AXDateTimeInputComponent extends MXInputBaseValueComponent {
210
222
  return result;
211
223
  }
212
224
  /** @ignore */
225
+ _getNavigationParts() {
226
+ const parts = this._getOrderedParts();
227
+ return this._isHijriRtl() ? [...parts].reverse() : parts;
228
+ }
229
+ /** @ignore */
213
230
  _clearInputBuffer() {
214
231
  this._inputChars = [];
215
232
  }
@@ -289,10 +306,11 @@ class AXDateTimeInputComponent extends MXInputBaseValueComponent {
289
306
  return;
290
307
  }
291
308
  const input = e.target;
292
- const orderedParts = this._getOrderedParts();
293
- const part = this._activePart() ? this._editingParts[this._activePart()] : orderedParts[0];
294
- const nextPart = part ? orderedParts[orderedParts.indexOf(part) + 1] : null;
295
- const prevPart = part ? orderedParts[orderedParts.indexOf(part) - 1] : null;
309
+ const navigationParts = this._getNavigationParts();
310
+ const part = this._activePart() ? this._editingParts[this._activePart()] : navigationParts[0];
311
+ const partIndex = part ? navigationParts.indexOf(part) : -1;
312
+ const nextPart = partIndex >= 0 ? navigationParts[partIndex + 1] : null;
313
+ const prevPart = partIndex > 0 ? navigationParts[partIndex - 1] : null;
296
314
  const goNext = () => {
297
315
  this._clearInputBuffer();
298
316
  if (nextPart) {
@@ -315,7 +333,8 @@ class AXDateTimeInputComponent extends MXInputBaseValueComponent {
315
333
  this._highlightActivePart();
316
334
  }
317
335
  else {
318
- e.code === 'ArrowRight' ? goNext() : goPrev();
336
+ const moveForward = this.isRtl() ? e.code === 'ArrowLeft' : e.code === 'ArrowRight';
337
+ moveForward ? goNext() : goPrev();
319
338
  }
320
339
  }
321
340
  else if ((e.code === 'ArrowUp' || e.code === 'ArrowDown') && !e.ctrlKey) {
@@ -546,11 +565,11 @@ class AXDateTimeInputComponent extends MXInputBaseValueComponent {
546
565
  }
547
566
  /** @ignore */
548
567
  _selectFirstPart() {
549
- const orderedParts = this._getOrderedParts();
550
- if (!orderedParts.length)
568
+ const navigationParts = this._getNavigationParts();
569
+ if (!navigationParts.length)
551
570
  return;
552
571
  this._clearInputBuffer();
553
- this._activePart.set(orderedParts[0].key);
572
+ this._activePart.set(navigationParts[0].key);
554
573
  const wasEmpty = !this._editingText();
555
574
  this._ensureEditableText();
556
575
  if (wasEmpty) {
@@ -603,7 +622,7 @@ class AXDateTimeInputComponent extends MXInputBaseValueComponent {
603
622
  useExisting: forwardRef(() => AXDateTimeInputComponent),
604
623
  multi: true,
605
624
  },
606
- ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<input\n #input\n id=\"input\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n class=\"ax-input\"\n type=\"text\"\n [dir]=\"isRtl() ? 'rtl' : 'ltr'\"\n [attr.placeholder]=\"placeholder || _resolvedFormat()\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-select-none]=\"!allowTyping()\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"true\"\n [ngModel]=\"_editingText()\"\n (mouseup)=\"_handleOnInputClickEvent($event)\"\n (blur)=\"_handleBlurEvent($event)\"\n (focus)=\"_handleFocusEvent($event)\"\n [style.text-align]=\"isRtl() ? 'end' : 'start'\"\n [tabindex]=\"tabIndex\"\n/>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: ["@layer components{.ax-select-none,.ax-select-none *{-webkit-user-select:none!important;user-select:none!important}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
625
+ ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<input\n #input\n id=\"input\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n class=\"ax-input\"\n type=\"text\"\n [dir]=\"isRtl() ? (_isHijriRtl() ? 'ltr' : 'rtl') : 'ltr'\"\n [attr.placeholder]=\"placeholder || _resolvedFormat()\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-select-none]=\"!allowTyping()\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"true\"\n [ngModel]=\"_editingText()\"\n (mouseup)=\"_handleOnInputClickEvent($event)\"\n (blur)=\"_handleBlurEvent($event)\"\n (focus)=\"_handleFocusEvent($event)\"\n [style.text-align]=\"isRtl() ? 'right' : 'left'\"\n [tabindex]=\"tabIndex\"\n/>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: ["@layer components{.ax-select-none,.ax-select-none *{-webkit-user-select:none!important;user-select:none!important}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
607
626
  }
608
627
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXDateTimeInputComponent, decorators: [{
609
628
  type: Component,
@@ -632,7 +651,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
632
651
  '(keydown)': '_handleOnKeydownEvent($event)',
633
652
  '(keyup)': '_handleKeyUpEvent()',
634
653
  '[attr.name]': 'name',
635
- }, template: "<input\n #input\n id=\"input\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n class=\"ax-input\"\n type=\"text\"\n [dir]=\"isRtl() ? 'rtl' : 'ltr'\"\n [attr.placeholder]=\"placeholder || _resolvedFormat()\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-select-none]=\"!allowTyping()\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"true\"\n [ngModel]=\"_editingText()\"\n (mouseup)=\"_handleOnInputClickEvent($event)\"\n (blur)=\"_handleBlurEvent($event)\"\n (focus)=\"_handleFocusEvent($event)\"\n [style.text-align]=\"isRtl() ? 'end' : 'start'\"\n [tabindex]=\"tabIndex\"\n/>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: ["@layer components{.ax-select-none,.ax-select-none *{-webkit-user-select:none!important;user-select:none!important}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
654
+ }, template: "<input\n #input\n id=\"input\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n class=\"ax-input\"\n type=\"text\"\n [dir]=\"isRtl() ? (_isHijriRtl() ? 'ltr' : 'rtl') : 'ltr'\"\n [attr.placeholder]=\"placeholder || _resolvedFormat()\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-select-none]=\"!allowTyping()\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"true\"\n [ngModel]=\"_editingText()\"\n (mouseup)=\"_handleOnInputClickEvent($event)\"\n (blur)=\"_handleBlurEvent($event)\"\n (focus)=\"_handleFocusEvent($event)\"\n [style.text-align]=\"isRtl() ? 'right' : 'left'\"\n [tabindex]=\"tabIndex\"\n/>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: ["@layer components{.ax-select-none,.ax-select-none *{-webkit-user-select:none!important;user-select:none!important}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
636
655
  }], propDecorators: { allowTyping: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowTyping", required: false }] }], calendar: [{ type: i0.Input, args: [{ isSignal: true, alias: "calendar", required: false }] }], minValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "minValue", required: false }] }], maxValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxValue", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], picker: [{ type: i0.Input, args: [{ isSignal: true, alias: "picker", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], inputRef: [{ type: i0.ViewChild, args: ['input', { isSignal: true }] }] } });
637
656
 
638
657
  class AXDateTimeInputModule {
@@ -652,5 +671,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
652
671
  * Generated bundle index. Do not edit.
653
672
  */
654
673
 
655
- export { AXDateTimeInputComponent, AXDateTimeInputDefaultConfig, AXDateTimeInputModule, AX_DATETIME_INPUT_CONFIG };
674
+ export { AXDateTimeInputComponent, AXDateTimeInputDefaultConfig, AXDateTimeInputModule, AX_DATETIME_INPUT_CONFIG, resolveDateTimeInputFormat };
656
675
  //# sourceMappingURL=acorex-components-datetime-input.mjs.map