@po-ui/ng-components 21.27.0 → 21.28.0

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 (27) hide show
  1. package/fesm2022/po-ui-ng-components.mjs +157 -214
  2. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  3. package/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.d.ts +1 -0
  4. package/lib/components/po-calendar/po-calendar.component.d.ts +2 -0
  5. package/lib/components/po-field/po-datetimepicker/po-datetimepicker-base.component.d.ts +0 -3
  6. package/lib/components/po-field/po-datetimepicker/po-datetimepicker.component.d.ts +8 -2
  7. package/lib/components/po-field/po-field.module.d.ts +1 -1
  8. package/lib/components/po-field/po-input/po-input.component.d.ts +6 -0
  9. package/lib/components/po-field/po-timepicker/po-timepicker.component.d.ts +1 -0
  10. package/package.json +4 -4
  11. package/po-ui-ng-components-21.28.0.tgz +0 -0
  12. package/schematics/ng-add/index.js +1 -1
  13. package/schematics/ng-update/v14/index.js +1 -1
  14. package/schematics/ng-update/v15/index.js +1 -1
  15. package/schematics/ng-update/v16/index.js +1 -1
  16. package/schematics/ng-update/v17/index.js +1 -1
  17. package/schematics/ng-update/v18/index.js +2 -2
  18. package/schematics/ng-update/v19/index.js +2 -2
  19. package/schematics/ng-update/v2/index.js +1 -1
  20. package/schematics/ng-update/v20/index.js +2 -2
  21. package/schematics/ng-update/v21/index.js +1 -1
  22. package/schematics/ng-update/v3/index.js +1 -1
  23. package/schematics/ng-update/v4/index.js +1 -1
  24. package/schematics/ng-update/v5/index.js +1 -1
  25. package/schematics/ng-update/v6/index.js +1 -1
  26. package/types/po-ui-ng-components.d.ts +20 -7
  27. package/po-ui-ng-components-21.27.0.tgz +0 -0
@@ -15444,7 +15444,6 @@ class PoCalendarWrapperComponent {
15444
15444
  size;
15445
15445
  hideTodayButton = false;
15446
15446
  hasPresets = false;
15447
- // Template customizado para o header do calendário. Para uso interno do datepicker/datepicker-range.
15448
15447
  headerTemplate;
15449
15448
  _locale;
15450
15449
  set locale(value) {
@@ -15456,9 +15455,9 @@ class PoCalendarWrapperComponent {
15456
15455
  }
15457
15456
  headerChange = new EventEmitter();
15458
15457
  selectDate = new EventEmitter();
15458
+ selectTodayEvent = new EventEmitter();
15459
15459
  hoverDateSource = new Subject();
15460
15460
  hoverDate = this.hoverDateSource.pipe(debounceTime$1(100));
15461
- // Evento para fechar o calendário. Para uso interno do datepicker/datepicker-range.
15462
15461
  closeCalendar = new EventEmitter();
15463
15462
  currentYear;
15464
15463
  displayYear;
@@ -15731,7 +15730,6 @@ class PoCalendarWrapperComponent {
15731
15730
  }
15732
15731
  return index === this.focusedDayIndex ? 0 : -1;
15733
15732
  }
15734
- // --- 4. Navegação (Setas) ---
15735
15733
  onNextMonth() {
15736
15734
  const newMonth = this.displayMonthNumber < 11 ? this.displayMonthNumber + 1 : 0;
15737
15735
  const newYear = this.displayMonthNumber < 11 ? this.displayYear : this.displayYear + 1;
@@ -15775,6 +15773,7 @@ class PoCalendarWrapperComponent {
15775
15773
  this.hoverDateSource.next(null);
15776
15774
  }
15777
15775
  onSelectToday() {
15776
+ this.selectTodayEvent.emit();
15778
15777
  this.onSelectDate(this.today);
15779
15778
  if (this.displayMonthNumber !== this.today.getMonth() || this.displayYear !== this.today.getFullYear()) {
15780
15779
  this.updateDisplay(this.today.getFullYear(), this.today.getMonth());
@@ -15835,7 +15834,6 @@ class PoCalendarWrapperComponent {
15835
15834
  return key === 'Enter' || key === ' ';
15836
15835
  }
15837
15836
  handleSelectKey(day, index) {
15838
- // Bloqueia seleção de dias desabilitados
15839
15837
  if (this.isDayDisabled(day)) {
15840
15838
  return;
15841
15839
  }
@@ -16182,7 +16180,7 @@ class PoCalendarWrapperComponent {
16182
16180
  return `${index}:${weekDay}`;
16183
16181
  }
16184
16182
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoCalendarWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16185
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoCalendarWrapperComponent, isStandalone: false, selector: "po-calendar-wrapper", inputs: { value: ["p-value", "value"], mode: ["p-mode", "mode"], responsive: ["p-responsive", "responsive"], partType: ["p-part-type", "partType"], range: ["p-range", "range"], activateDate: ["p-activate-date", "activateDate"], selectedValue: ["p-selected-value", "selectedValue"], minDate: ["p-min-date", "minDate"], maxDate: ["p-max-date", "maxDate"], hoverValue: ["p-hover-value", "hoverValue"], size: ["p-size", "size"], hideTodayButton: ["p-hide-today-button", "hideTodayButton"], hasPresets: ["p-presets", "hasPresets"], headerTemplate: ["p-header-template", "headerTemplate"], locale: ["p-locale", "locale"] }, outputs: { headerChange: "p-header-change", selectDate: "p-select-date", hoverDate: "p-hover-date", closeCalendar: "p-close-calendar" }, host: { listeners: { "keydown": "onHostKeydown($event)" } }, providers: [PoCalendarService], usesOnChanges: true, ngImport: i0, template: "<div class=\"po-calendar-wrapper\">\n @if (isDayVisible) {\n <ng-container>\n @if (templateContext) {\n <po-calendar-header\n (p-previous)=\"onPreviousMonth()\"\n (p-next)=\"onNextMonth()\"\n [p-display-month]=\"displayMonth\"\n [p-display-year]=\"displayYear\"\n [p-template-context]=\"templateContext\"\n [p-header-template]=\"headerTemplate || internalComboTemplate\"\n [p-size]=\"size\"\n [p-locale]=\"locale\"\n >\n </po-calendar-header>\n }\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n @for (weekDay of displayWeekDays; track trackByWeekDay($index, weekDay)) {\n <div class=\"po-calendar-label\">\n {{ weekDay }}\n </div>\n }\n </div>\n\n <div class=\"po-calendar-content-list-day\">\n @for (day of displayDays; track trackByDay($index, day); let i = $index) {\n <div\n class=\"po-calendar-day\"\n [ngClass]=\"getDayBackgroundColor(day)\"\n (click)=\"onSelectDate(day)\"\n (mouseenter)=\"onMouseEnter(day)\"\n (mouseleave)=\"onMouseLeave()\"\n (keydown)=\"onDayKeydown($event, day, i)\"\n [tabindex]=\"getDayTabIndex(day, i)\"\n attr-calendar\n [attr.data-other-month]=\"day.getMonth() !== displayMonthNumber\"\n [attr.data-day-index]=\"i\"\n >\n <span [ngClass]=\"getDayForegroundColor(day)\">\n {{ day.getDate() }}\n </span>\n </div>\n }\n </div>\n </div>\n </ng-container>\n }\n\n @if (isMonthVisible) {\n <ng-container>\n <po-calendar-header\n (p-previous)=\"updateYear(-1)\"\n (p-next)=\"updateYear(1)\"\n [p-template-context]=\"templateContext\"\n [p-header-template]=\"headerTemplate || internalComboTemplate\"\n [p-size]=\"size\"\n [p-locale]=\"locale\"\n >\n </po-calendar-header>\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n <div class=\"po-calendar-label\">\n {{ monthLabel }}\n </div>\n </div>\n <div class=\"po-calendar-content-list-month\">\n @for (month of displayMonths; track trackByMonth($index, month); let i = $index) {\n <div\n class=\"po-calendar-month\"\n [ngClass]=\"getBackgroundColor(i, displayMonthNumber)\"\n (click)=\"onSelectMonth(displayYear, i)\"\n attr-calendar\n >\n <span [ngClass]=\"getForegroundColor(i, displayMonthNumber)\">\n {{ month }}\n </span>\n </div>\n }\n </div>\n </div>\n </ng-container>\n }\n\n @if (isYearVisible) {\n <ng-container>\n <po-calendar-header\n (p-previous)=\"updateYear(-10)\"\n (p-next)=\"updateYear(10)\"\n [p-template-context]=\"templateContext\"\n [p-header-template]=\"headerTemplate || internalComboTemplate\"\n [p-size]=\"size\"\n [p-locale]=\"locale\"\n >\n </po-calendar-header>\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n <div class=\"po-calendar-label\">\n {{ yearLabel }}\n </div>\n </div>\n\n <div class=\"po-calendar-content-list-year\">\n @for (year of displayDecade; track trackByYear($index, year)) {\n <div\n class=\"po-calendar-year\"\n [ngClass]=\"getBackgroundColor(year, currentYear)\"\n (click)=\"onSelectYear(year, displayMonthNumber)\"\n attr-calendar\n >\n <span [ngClass]=\"getForegroundColor(year, currentYear)\">\n {{ year }}\n </span>\n </div>\n }\n </div>\n </div>\n </ng-container>\n }\n @if (!responsive || (responsive && !hasPresets)) {\n <po-calendar-footer\n [p-label-clear]=\"displayToClean\"\n [p-label-today]=\"displayToday\"\n [p-hide-today-button]=\"hideTodayButton\"\n [p-size]=\"size\"\n [p-responsive]=\"responsive\"\n [p-today-disabled]=\"isTodayUnavailable()\"\n (p-clear)=\"onClear()\"\n (p-select-today)=\"onSelectToday()\"\n (p-close-calendar)=\"onFooterCloseCalendar()\"\n ></po-calendar-footer>\n }\n</div>\n\n<ng-template #internalComboTemplate let-combo>\n <po-combo\n #monthCombo\n class=\"po-combo-first\"\n [name]=\"'month-' + comboKey\"\n [p-clean]=\"false\"\n [p-remove-initial-filter]=\"true\"\n [ngModel]=\"combo.monthIndex\"\n [p-options]=\"combo.monthsOptions\"\n (p-change)=\"combo.updateDate(combo.year, $event)\"\n (p-blur)=\"combo.onComboBlur(monthCombo)\"\n [p-size]=\"size\"\n >\n </po-combo>\n\n <po-combo\n #yearCombo\n class=\"po-combo-last\"\n [name]=\"'year-' + comboKey\"\n [p-clean]=\"false\"\n [p-remove-initial-filter]=\"true\"\n [ngModel]=\"combo.year\"\n [p-options]=\"combo.yearsOptions\"\n (p-change)=\"combo.updateDate($event, combo.monthIndex)\"\n (p-blur)=\"combo.onComboBlur(yearCombo)\"\n [p-size]=\"size\"\n >\n </po-combo>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PoComboComponent, selector: "po-combo" }, { kind: "component", type: PoCalendarFooterComponent, selector: "po-calendar-footer", inputs: ["p-size", "p-label-clear", "p-label-today", "p-responsive", "p-today-disabled", "p-hide-today-button"], outputs: ["p-clear", "p-select-today", "p-close-calendar"] }, { kind: "component", type: PoCalendarHeaderComponent, selector: "po-calendar-header", inputs: ["p-hide-previous", "p-hide-next", "p-display-month", "p-display-year", "p-display-month-label", "p-month-options", "p-header-template", "p-template-context", "p-size", "p-locale"], outputs: ["p-previous", "p-next", "p-select-month", "p-select-year"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16183
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoCalendarWrapperComponent, isStandalone: false, selector: "po-calendar-wrapper", inputs: { value: ["p-value", "value"], mode: ["p-mode", "mode"], responsive: ["p-responsive", "responsive"], partType: ["p-part-type", "partType"], range: ["p-range", "range"], activateDate: ["p-activate-date", "activateDate"], selectedValue: ["p-selected-value", "selectedValue"], minDate: ["p-min-date", "minDate"], maxDate: ["p-max-date", "maxDate"], hoverValue: ["p-hover-value", "hoverValue"], size: ["p-size", "size"], hideTodayButton: ["p-hide-today-button", "hideTodayButton"], hasPresets: ["p-presets", "hasPresets"], headerTemplate: ["p-header-template", "headerTemplate"], locale: ["p-locale", "locale"] }, outputs: { headerChange: "p-header-change", selectDate: "p-select-date", selectTodayEvent: "p-select-today", hoverDate: "p-hover-date", closeCalendar: "p-close-calendar" }, host: { listeners: { "keydown": "onHostKeydown($event)" } }, providers: [PoCalendarService], usesOnChanges: true, ngImport: i0, template: "<div class=\"po-calendar-wrapper\">\n @if (isDayVisible) {\n <ng-container>\n @if (templateContext) {\n <po-calendar-header\n (p-previous)=\"onPreviousMonth()\"\n (p-next)=\"onNextMonth()\"\n [p-display-month]=\"displayMonth\"\n [p-display-year]=\"displayYear\"\n [p-template-context]=\"templateContext\"\n [p-header-template]=\"headerTemplate || internalComboTemplate\"\n [p-size]=\"size\"\n [p-locale]=\"locale\"\n >\n </po-calendar-header>\n }\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n @for (weekDay of displayWeekDays; track trackByWeekDay($index, weekDay)) {\n <div class=\"po-calendar-label\">\n {{ weekDay }}\n </div>\n }\n </div>\n\n <div class=\"po-calendar-content-list-day\">\n @for (day of displayDays; track trackByDay($index, day); let i = $index) {\n <div\n class=\"po-calendar-day\"\n [ngClass]=\"getDayBackgroundColor(day)\"\n (click)=\"onSelectDate(day)\"\n (mouseenter)=\"onMouseEnter(day)\"\n (mouseleave)=\"onMouseLeave()\"\n (keydown)=\"onDayKeydown($event, day, i)\"\n [tabindex]=\"getDayTabIndex(day, i)\"\n attr-calendar\n [attr.data-other-month]=\"day.getMonth() !== displayMonthNumber\"\n [attr.data-day-index]=\"i\"\n >\n <span [ngClass]=\"getDayForegroundColor(day)\">\n {{ day.getDate() }}\n </span>\n </div>\n }\n </div>\n </div>\n </ng-container>\n }\n\n @if (isMonthVisible) {\n <ng-container>\n <po-calendar-header\n (p-previous)=\"updateYear(-1)\"\n (p-next)=\"updateYear(1)\"\n [p-template-context]=\"templateContext\"\n [p-header-template]=\"headerTemplate || internalComboTemplate\"\n [p-size]=\"size\"\n [p-locale]=\"locale\"\n >\n </po-calendar-header>\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n <div class=\"po-calendar-label\">\n {{ monthLabel }}\n </div>\n </div>\n <div class=\"po-calendar-content-list-month\">\n @for (month of displayMonths; track trackByMonth($index, month); let i = $index) {\n <div\n class=\"po-calendar-month\"\n [ngClass]=\"getBackgroundColor(i, displayMonthNumber)\"\n (click)=\"onSelectMonth(displayYear, i)\"\n attr-calendar\n >\n <span [ngClass]=\"getForegroundColor(i, displayMonthNumber)\">\n {{ month }}\n </span>\n </div>\n }\n </div>\n </div>\n </ng-container>\n }\n\n @if (isYearVisible) {\n <ng-container>\n <po-calendar-header\n (p-previous)=\"updateYear(-10)\"\n (p-next)=\"updateYear(10)\"\n [p-template-context]=\"templateContext\"\n [p-header-template]=\"headerTemplate || internalComboTemplate\"\n [p-size]=\"size\"\n [p-locale]=\"locale\"\n >\n </po-calendar-header>\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n <div class=\"po-calendar-label\">\n {{ yearLabel }}\n </div>\n </div>\n\n <div class=\"po-calendar-content-list-year\">\n @for (year of displayDecade; track trackByYear($index, year)) {\n <div\n class=\"po-calendar-year\"\n [ngClass]=\"getBackgroundColor(year, currentYear)\"\n (click)=\"onSelectYear(year, displayMonthNumber)\"\n attr-calendar\n >\n <span [ngClass]=\"getForegroundColor(year, currentYear)\">\n {{ year }}\n </span>\n </div>\n }\n </div>\n </div>\n </ng-container>\n }\n @if (!responsive || (responsive && !hasPresets)) {\n <po-calendar-footer\n [p-label-clear]=\"displayToClean\"\n [p-label-today]=\"displayToday\"\n [p-hide-today-button]=\"hideTodayButton\"\n [p-size]=\"size\"\n [p-responsive]=\"responsive\"\n [p-today-disabled]=\"isTodayUnavailable()\"\n (p-clear)=\"onClear()\"\n (p-select-today)=\"onSelectToday()\"\n (p-close-calendar)=\"onFooterCloseCalendar()\"\n ></po-calendar-footer>\n }\n</div>\n\n<ng-template #internalComboTemplate let-combo>\n <po-combo\n #monthCombo\n class=\"po-combo-first\"\n [name]=\"'month-' + comboKey\"\n [p-clean]=\"false\"\n [p-remove-initial-filter]=\"true\"\n [ngModel]=\"combo.monthIndex\"\n [p-options]=\"combo.monthsOptions\"\n (p-change)=\"combo.updateDate(combo.year, $event)\"\n (p-blur)=\"combo.onComboBlur(monthCombo)\"\n [p-size]=\"size\"\n >\n </po-combo>\n\n <po-combo\n #yearCombo\n class=\"po-combo-last\"\n [name]=\"'year-' + comboKey\"\n [p-clean]=\"false\"\n [p-remove-initial-filter]=\"true\"\n [ngModel]=\"combo.year\"\n [p-options]=\"combo.yearsOptions\"\n (p-change)=\"combo.updateDate($event, combo.monthIndex)\"\n (p-blur)=\"combo.onComboBlur(yearCombo)\"\n [p-size]=\"size\"\n >\n </po-combo>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PoComboComponent, selector: "po-combo" }, { kind: "component", type: PoCalendarFooterComponent, selector: "po-calendar-footer", inputs: ["p-size", "p-label-clear", "p-label-today", "p-responsive", "p-today-disabled", "p-hide-today-button"], outputs: ["p-clear", "p-select-today", "p-close-calendar"] }, { kind: "component", type: PoCalendarHeaderComponent, selector: "po-calendar-header", inputs: ["p-hide-previous", "p-hide-next", "p-display-month", "p-display-year", "p-display-month-label", "p-month-options", "p-header-template", "p-template-context", "p-size", "p-locale"], outputs: ["p-previous", "p-next", "p-select-month", "p-select-year"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16186
16184
  }
16187
16185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoCalendarWrapperComponent, decorators: [{
16188
16186
  type: Component,
@@ -16238,6 +16236,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImpo
16238
16236
  }], selectDate: [{
16239
16237
  type: Output,
16240
16238
  args: ['p-select-date']
16239
+ }], selectTodayEvent: [{
16240
+ type: Output,
16241
+ args: ['p-select-today']
16241
16242
  }], hoverDate: [{
16242
16243
  type: Output,
16243
16244
  args: ['p-hover-date']
@@ -16402,6 +16403,7 @@ class PoCalendarComponent extends PoCalendarBaseComponent {
16402
16403
  selectedIndexYear = null;
16403
16404
  selectedMonth;
16404
16405
  selectedYear;
16406
+ isTodayPresetSelection = false;
16405
16407
  _isRange = signal(false, ...(ngDevMode ? [{ debugName: "_isRange" }] : /* istanbul ignore next */ []));
16406
16408
  _rangePresetsValue = signal(false, ...(ngDevMode ? [{ debugName: "_rangePresetsValue" }] : /* istanbul ignore next */ []));
16407
16409
  _rangePresetOptionsValue = signal(undefined, ...(ngDevMode ? [{ debugName: "_rangePresetOptionsValue" }] : /* istanbul ignore next */ []));
@@ -16430,7 +16432,6 @@ class PoCalendarComponent extends PoCalendarBaseComponent {
16430
16432
  }
16431
16433
  const customPresets = hasCustomPresets ? rangePresetOptions : [];
16432
16434
  const combined = [...defaultPresets, ...customPresets];
16433
- // Regra: o preset "today" é obrigatório e deve estar presente mesmo com apenas presets customizados
16434
16435
  if (combined.length > 0 && !combined.some(p => p.label.toLowerCase() === 'today')) {
16435
16436
  const todayPreset = PO_CALENDAR_DEFAULT_RANGE_PRESETS.find(p => p.label === 'today');
16436
16437
  if (todayPreset) {
@@ -16649,9 +16650,9 @@ class PoCalendarComponent extends PoCalendarBaseComponent {
16649
16650
  this.value = newValue;
16650
16651
  const newModel = this.convertDateToISO(this.value);
16651
16652
  this.updateModel(newModel);
16652
- this.change.emit(newModel);
16653
- // Em modo date-time, se a data selecionada é "hoje", define a hora atual no timer
16654
- if (this.isDateTime && this.timerComponent && this.poCalendarService.isToday(selectedDate)) {
16653
+ if (this.isDateTime && this.timerComponent && this.isTodayPresetSelection) {
16654
+ this.close.emit();
16655
+ this.change.emit(newModel);
16655
16656
  const now = new Date();
16656
16657
  const hours = ('0' + now.getHours()).slice(-2);
16657
16658
  const minutes = ('0' + now.getMinutes()).slice(-2);
@@ -16659,16 +16660,26 @@ class PoCalendarComponent extends PoCalendarBaseComponent {
16659
16660
  const currentTime = this.showSeconds ? `${hours}:${minutes}:${seconds}` : `${hours}:${minutes}`;
16660
16661
  this.timerComponent.writeValue(currentTime);
16661
16662
  this.changeTime.emit(currentTime);
16663
+ this.isTodayPresetSelection = false;
16664
+ }
16665
+ else {
16666
+ this.change.emit(newModel);
16662
16667
  }
16663
16668
  }
16664
16669
  onHoverDate(date) {
16665
16670
  this.hoverValue = date;
16666
16671
  }
16672
+ onSelectTodayPreset() {
16673
+ this.isTodayPresetSelection = true;
16674
+ }
16667
16675
  onHeaderChange({ month, year }, partType) {
16668
16676
  this.updateActivateDateFromHeaderChange(month, year, partType);
16669
16677
  this.changeMonthYear.emit({ month, year });
16670
16678
  }
16671
16679
  onCloseCalendar() {
16680
+ if (this.isDateTime) {
16681
+ return;
16682
+ }
16672
16683
  this.change.emit(this.value);
16673
16684
  this.close.emit();
16674
16685
  }
@@ -16730,7 +16741,6 @@ class PoCalendarComponent extends PoCalendarBaseComponent {
16730
16741
  }
16731
16742
  return 1; // Presente
16732
16743
  };
16733
- // Ordena em ASC: Futuro → Presente → Passado, proximidade crescente dentro de cada grupo
16734
16744
  const sorted = [...presets].sort((a, b) => {
16735
16745
  const rangeA = a.dateRange(today);
16736
16746
  const rangeB = b.dateRange(today);
@@ -16746,7 +16756,6 @@ class PoCalendarComponent extends PoCalendarBaseComponent {
16746
16756
  return distA - distB;
16747
16757
  });
16748
16758
  const resolvedOrder = order ?? this.rangePresetsOrder;
16749
- // DESC: inverte completamente a lista (Passado → Presente → Futuro, mais distante primeiro)
16750
16759
  return resolvedOrder === 'desc' ? sorted.reverse() : sorted;
16751
16760
  }
16752
16761
  normalizeDate(date) {
@@ -16895,11 +16904,11 @@ class PoCalendarComponent extends PoCalendarBaseComponent {
16895
16904
  }
16896
16905
  }
16897
16906
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16898
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoCalendarComponent, isStandalone: false, selector: "po-calendar", providers: providers$7, viewQueries: [{ propertyName: "timerComponent", first: true, predicate: ["timer"], descendants: true }, { propertyName: "yearOptions", predicate: ["yearOption"], descendants: true }, { propertyName: "monthOptions", predicate: ["monthOption"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (isMonthYear) {\n <div class=\"po-calendar po-calendar-month-year\">\n <ng-container *ngTemplateOutlet=\"calendarMonth\"></ng-container>\n <ng-container *ngTemplateOutlet=\"calendarYear\"></ng-container>\n </div>\n} @else if (isYear) {\n <div class=\"po-calendar po-calendar-year\">\n <ng-container *ngTemplateOutlet=\"calendarYear\"></ng-container>\n </div>\n} @else if (isRange) {\n <div\n class=\"po-calendar\"\n [class.po-calendar-with-presets]=\"effectivePresets().length > 0\"\n [class.po-calendar-mobile]=\"isResponsive || widthWithPresets\"\n [class.po-calendar-responsive]=\"!isResponsive && widthWithPresets\"\n >\n @if (effectivePresets().length > 0 && !isResponsive && !widthWithPresets) {\n <po-calendar-preset-list\n [p-presets]=\"effectivePresets()\"\n [p-locale]=\"locale\"\n [p-selected-preset]=\"selectedPresetLabel\"\n [p-size]=\"size\"\n (p-select-preset)=\"onPresetSelected($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-preset-list>\n }\n <ng-container *ngTemplateOutlet=\"calendarWrapper; context: { partType: 'start' }\"></ng-container>\n @if (effectivePresets().length > 0 && (isResponsive || widthWithPresets)) {\n <po-calendar-preset-list\n [p-presets]=\"effectivePresets()\"\n [p-locale]=\"locale\"\n [p-selected-preset]=\"selectedPresetLabel\"\n [p-size]=\"size\"\n [p-responsive]=\"true\"\n (p-select-preset)=\"onPresetSelected($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-preset-list>\n\n <po-calendar-footer\n [p-size]=\"size\"\n [p-responsive]=\"isResponsive\"\n [p-hide-today-button]=\"true\"\n [p-label-clear]=\"displayToClean\"\n (p-clear)=\"onSelectDate($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-footer>\n }\n </div>\n} @else {\n <div\n [class.po-calendar-date-time]=\"isDateTime\"\n [class.po-calendar-three-columns]=\"showSeconds || format === '12'\"\n [class.po-calendar-four-columns]=\"showSeconds && format === '12'\"\n >\n <div class=\"po-calendar\">\n <ng-container *ngTemplateOutlet=\"calendarWrapper; context: { partType: 'single' }\"></ng-container>\n </div>\n @if (isDateTime) {\n <ng-container *ngTemplateOutlet=\"calendarTimer\"></ng-container>\n }\n </div>\n}\n\n<ng-template #calendarWrapper let-partType=\"partType\">\n <po-calendar-wrapper\n [p-value]=\"getValue(partType)\"\n [p-activate-date]=\"getActivateDate(partType)\"\n [p-locale]=\"locale\"\n [p-min-date]=\"minDate\"\n [p-presets]=\"effectivePresets().length > 0\"\n [p-max-date]=\"maxDate\"\n [p-part-type]=\"partType\"\n [p-range]=\"isRange\"\n [p-responsive]=\"isResponsive || widthWithPresets\"\n [p-selected-value]=\"value\"\n [p-hover-value]=\"hoverValue\"\n [p-hide-today-button]=\"effectivePresets().length > 0\"\n (p-header-change)=\"onHeaderChange($event, partType)\"\n (p-select-date)=\"onSelectDate($event, partType)\"\n (p-hover-date)=\"onHoverDate($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n [p-header-template]=\"headerTemplate\"\n [p-size]=\"size\"\n >\n </po-calendar-wrapper>\n</ng-template>\n\n<ng-template #calendarMonth>\n <ul class=\"po-calendar-months\">\n @for (month of displayMonths; track month; let i = $index) {\n <li class=\"po-calendar-month-item\">\n <po-button\n #monthOption\n [class.po-button-selected]=\"i === selectedIndexMonth\"\n role=\"option\"\n p-kind=\"tertiary\"\n p-label=\"{{ month }}\"\n [attr.aria-selected]=\"i === selectedIndexMonth\"\n [p-tabindex]=\"i === focusedIndex ? 0 : -1\"\n [p-size]=\"size\"\n [p-disabled]=\"isMonthDisabled(i)\"\n (p-click)=\"selectMonth(i, $event, true)\"\n (keydown)=\"onKeydownMonth($event, i)\"\n ></po-button>\n </li>\n }\n </ul>\n</ng-template>\n\n<ng-template #calendarYear>\n <ul class=\"po-calendar-years\">\n @for (year of displayYears; track year; let i = $index) {\n <li class=\"po-calendar-year-item\">\n <po-button\n #yearOption\n [class.po-button-selected]=\"i === selectedIndexYear\"\n role=\"option\"\n p-kind=\"tertiary\"\n p-label=\"{{ year }}\"\n [attr.aria-selected]=\"i === selectedIndexYear\"\n [p-tabindex]=\"i === focusedIndex ? 0 : -1\"\n [p-size]=\"size\"\n [p-disabled]=\"isYearDisabled(year)\"\n (p-click)=\"selectYear(i, $event, true, year)\"\n (keydown)=\"onKeydownYear($event, i)\"\n >\n </po-button>\n </li>\n }\n </ul>\n</ng-template>\n\n<ng-template #calendarTimer>\n <div class=\"po-calendar-vertical-divider\"></div>\n <po-timer\n #timer\n [p-format]=\"format\"\n [p-locale]=\"locale\"\n [p-min-time]=\"minTime\"\n [p-max-time]=\"maxTime\"\n [p-minute-interval]=\"minuteInterval\"\n [p-second-interval]=\"secondInterval\"\n [p-show-seconds]=\"showSeconds\"\n [p-size]=\"size\"\n (p-change)=\"onTimeChange($event)\"\n (p-boundary-tab)=\"onTimerBoundaryTab($event)\"\n ></po-timer>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoTimerComponent, selector: "po-timer", outputs: ["p-boundary-tab"] }, { kind: "component", type: PoCalendarFooterComponent, selector: "po-calendar-footer", inputs: ["p-size", "p-label-clear", "p-label-today", "p-responsive", "p-today-disabled", "p-hide-today-button"], outputs: ["p-clear", "p-select-today", "p-close-calendar"] }, { kind: "component", type: PoCalendarWrapperComponent, selector: "po-calendar-wrapper", inputs: ["p-value", "p-mode", "p-responsive", "p-part-type", "p-range", "p-activate-date", "p-selected-value", "p-min-date", "p-max-date", "p-hover-value", "p-size", "p-hide-today-button", "p-presets", "p-header-template", "p-locale"], outputs: ["p-header-change", "p-select-date", "p-hover-date", "p-close-calendar"] }, { kind: "component", type: PoCalendarPresetListComponent, selector: "po-calendar-preset-list", inputs: ["p-size", "p-presets", "p-selected-preset", "p-responsive", "p-locale"], outputs: ["p-close-calendar", "p-select-preset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16907
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoCalendarComponent, isStandalone: false, selector: "po-calendar", providers: providers$7, viewQueries: [{ propertyName: "timerComponent", first: true, predicate: ["timer"], descendants: true }, { propertyName: "yearOptions", predicate: ["yearOption"], descendants: true }, { propertyName: "monthOptions", predicate: ["monthOption"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (isMonthYear) {\n <div class=\"po-calendar po-calendar-month-year\">\n <ng-container *ngTemplateOutlet=\"calendarMonth\"></ng-container>\n <ng-container *ngTemplateOutlet=\"calendarYear\"></ng-container>\n </div>\n} @else if (isYear) {\n <div class=\"po-calendar po-calendar-year\">\n <ng-container *ngTemplateOutlet=\"calendarYear\"></ng-container>\n </div>\n} @else if (isRange) {\n <div\n class=\"po-calendar\"\n [class.po-calendar-with-presets]=\"effectivePresets().length > 0\"\n [class.po-calendar-mobile]=\"isResponsive || widthWithPresets\"\n [class.po-calendar-responsive]=\"!isResponsive && widthWithPresets\"\n >\n @if (effectivePresets().length > 0 && !isResponsive && !widthWithPresets) {\n <po-calendar-preset-list\n [p-presets]=\"effectivePresets()\"\n [p-locale]=\"locale\"\n [p-selected-preset]=\"selectedPresetLabel\"\n [p-size]=\"size\"\n (p-select-preset)=\"onPresetSelected($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-preset-list>\n }\n <ng-container *ngTemplateOutlet=\"calendarWrapper; context: { partType: 'start' }\"></ng-container>\n @if (effectivePresets().length > 0 && (isResponsive || widthWithPresets)) {\n <po-calendar-preset-list\n [p-presets]=\"effectivePresets()\"\n [p-locale]=\"locale\"\n [p-selected-preset]=\"selectedPresetLabel\"\n [p-size]=\"size\"\n [p-responsive]=\"true\"\n (p-select-preset)=\"onPresetSelected($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-preset-list>\n\n <po-calendar-footer\n [p-size]=\"size\"\n [p-responsive]=\"isResponsive\"\n [p-hide-today-button]=\"true\"\n [p-label-clear]=\"displayToClean\"\n (p-clear)=\"onSelectDate($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-footer>\n }\n </div>\n} @else {\n <div\n [class.po-calendar-date-time]=\"isDateTime\"\n [class.po-calendar-three-columns]=\"showSeconds || format === '12'\"\n [class.po-calendar-four-columns]=\"showSeconds && format === '12'\"\n >\n <div class=\"po-calendar\">\n <ng-container *ngTemplateOutlet=\"calendarWrapper; context: { partType: 'single' }\"></ng-container>\n </div>\n @if (isDateTime) {\n <ng-container *ngTemplateOutlet=\"calendarTimer\"></ng-container>\n }\n </div>\n}\n\n<ng-template #calendarWrapper let-partType=\"partType\">\n <po-calendar-wrapper\n [p-value]=\"getValue(partType)\"\n [p-activate-date]=\"getActivateDate(partType)\"\n [p-locale]=\"locale\"\n [p-min-date]=\"minDate\"\n [p-presets]=\"effectivePresets().length > 0\"\n [p-max-date]=\"maxDate\"\n [p-part-type]=\"partType\"\n [p-range]=\"isRange\"\n [p-responsive]=\"isResponsive || widthWithPresets\"\n [p-selected-value]=\"value\"\n [p-hover-value]=\"hoverValue\"\n [p-hide-today-button]=\"effectivePresets().length > 0\"\n (p-header-change)=\"onHeaderChange($event, partType)\"\n (p-select-date)=\"onSelectDate($event, partType)\"\n (p-select-today)=\"onSelectTodayPreset()\"\n (p-hover-date)=\"onHoverDate($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n [p-header-template]=\"headerTemplate\"\n [p-size]=\"size\"\n >\n </po-calendar-wrapper>\n</ng-template>\n\n<ng-template #calendarMonth>\n <ul class=\"po-calendar-months\">\n @for (month of displayMonths; track month; let i = $index) {\n <li class=\"po-calendar-month-item\">\n <po-button\n #monthOption\n [class.po-button-selected]=\"i === selectedIndexMonth\"\n role=\"option\"\n p-kind=\"tertiary\"\n p-label=\"{{ month }}\"\n [attr.aria-selected]=\"i === selectedIndexMonth\"\n [p-tabindex]=\"i === focusedIndex ? 0 : -1\"\n [p-size]=\"size\"\n [p-disabled]=\"isMonthDisabled(i)\"\n (p-click)=\"selectMonth(i, $event, true)\"\n (keydown)=\"onKeydownMonth($event, i)\"\n ></po-button>\n </li>\n }\n </ul>\n</ng-template>\n\n<ng-template #calendarYear>\n <ul class=\"po-calendar-years\">\n @for (year of displayYears; track year; let i = $index) {\n <li class=\"po-calendar-year-item\">\n <po-button\n #yearOption\n [class.po-button-selected]=\"i === selectedIndexYear\"\n role=\"option\"\n p-kind=\"tertiary\"\n p-label=\"{{ year }}\"\n [attr.aria-selected]=\"i === selectedIndexYear\"\n [p-tabindex]=\"i === focusedIndex ? 0 : -1\"\n [p-size]=\"size\"\n [p-disabled]=\"isYearDisabled(year)\"\n (p-click)=\"selectYear(i, $event, true, year)\"\n (keydown)=\"onKeydownYear($event, i)\"\n >\n </po-button>\n </li>\n }\n </ul>\n</ng-template>\n\n<ng-template #calendarTimer>\n <div class=\"po-calendar-vertical-divider\"></div>\n <po-timer\n #timer\n [p-format]=\"format\"\n [p-locale]=\"locale\"\n [p-min-time]=\"minTime\"\n [p-max-time]=\"maxTime\"\n [p-minute-interval]=\"minuteInterval\"\n [p-second-interval]=\"secondInterval\"\n [p-show-seconds]=\"showSeconds\"\n [p-size]=\"size\"\n (p-change)=\"onTimeChange($event)\"\n (p-boundary-tab)=\"onTimerBoundaryTab($event)\"\n ></po-timer>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoTimerComponent, selector: "po-timer", outputs: ["p-boundary-tab"] }, { kind: "component", type: PoCalendarFooterComponent, selector: "po-calendar-footer", inputs: ["p-size", "p-label-clear", "p-label-today", "p-responsive", "p-today-disabled", "p-hide-today-button"], outputs: ["p-clear", "p-select-today", "p-close-calendar"] }, { kind: "component", type: PoCalendarWrapperComponent, selector: "po-calendar-wrapper", inputs: ["p-value", "p-mode", "p-responsive", "p-part-type", "p-range", "p-activate-date", "p-selected-value", "p-min-date", "p-max-date", "p-hover-value", "p-size", "p-hide-today-button", "p-presets", "p-header-template", "p-locale"], outputs: ["p-header-change", "p-select-date", "p-select-today", "p-hover-date", "p-close-calendar"] }, { kind: "component", type: PoCalendarPresetListComponent, selector: "po-calendar-preset-list", inputs: ["p-size", "p-presets", "p-selected-preset", "p-responsive", "p-locale"], outputs: ["p-close-calendar", "p-select-preset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16899
16908
  }
16900
16909
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoCalendarComponent, decorators: [{
16901
16910
  type: Component,
16902
- args: [{ selector: 'po-calendar', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers$7, standalone: false, template: "@if (isMonthYear) {\n <div class=\"po-calendar po-calendar-month-year\">\n <ng-container *ngTemplateOutlet=\"calendarMonth\"></ng-container>\n <ng-container *ngTemplateOutlet=\"calendarYear\"></ng-container>\n </div>\n} @else if (isYear) {\n <div class=\"po-calendar po-calendar-year\">\n <ng-container *ngTemplateOutlet=\"calendarYear\"></ng-container>\n </div>\n} @else if (isRange) {\n <div\n class=\"po-calendar\"\n [class.po-calendar-with-presets]=\"effectivePresets().length > 0\"\n [class.po-calendar-mobile]=\"isResponsive || widthWithPresets\"\n [class.po-calendar-responsive]=\"!isResponsive && widthWithPresets\"\n >\n @if (effectivePresets().length > 0 && !isResponsive && !widthWithPresets) {\n <po-calendar-preset-list\n [p-presets]=\"effectivePresets()\"\n [p-locale]=\"locale\"\n [p-selected-preset]=\"selectedPresetLabel\"\n [p-size]=\"size\"\n (p-select-preset)=\"onPresetSelected($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-preset-list>\n }\n <ng-container *ngTemplateOutlet=\"calendarWrapper; context: { partType: 'start' }\"></ng-container>\n @if (effectivePresets().length > 0 && (isResponsive || widthWithPresets)) {\n <po-calendar-preset-list\n [p-presets]=\"effectivePresets()\"\n [p-locale]=\"locale\"\n [p-selected-preset]=\"selectedPresetLabel\"\n [p-size]=\"size\"\n [p-responsive]=\"true\"\n (p-select-preset)=\"onPresetSelected($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-preset-list>\n\n <po-calendar-footer\n [p-size]=\"size\"\n [p-responsive]=\"isResponsive\"\n [p-hide-today-button]=\"true\"\n [p-label-clear]=\"displayToClean\"\n (p-clear)=\"onSelectDate($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-footer>\n }\n </div>\n} @else {\n <div\n [class.po-calendar-date-time]=\"isDateTime\"\n [class.po-calendar-three-columns]=\"showSeconds || format === '12'\"\n [class.po-calendar-four-columns]=\"showSeconds && format === '12'\"\n >\n <div class=\"po-calendar\">\n <ng-container *ngTemplateOutlet=\"calendarWrapper; context: { partType: 'single' }\"></ng-container>\n </div>\n @if (isDateTime) {\n <ng-container *ngTemplateOutlet=\"calendarTimer\"></ng-container>\n }\n </div>\n}\n\n<ng-template #calendarWrapper let-partType=\"partType\">\n <po-calendar-wrapper\n [p-value]=\"getValue(partType)\"\n [p-activate-date]=\"getActivateDate(partType)\"\n [p-locale]=\"locale\"\n [p-min-date]=\"minDate\"\n [p-presets]=\"effectivePresets().length > 0\"\n [p-max-date]=\"maxDate\"\n [p-part-type]=\"partType\"\n [p-range]=\"isRange\"\n [p-responsive]=\"isResponsive || widthWithPresets\"\n [p-selected-value]=\"value\"\n [p-hover-value]=\"hoverValue\"\n [p-hide-today-button]=\"effectivePresets().length > 0\"\n (p-header-change)=\"onHeaderChange($event, partType)\"\n (p-select-date)=\"onSelectDate($event, partType)\"\n (p-hover-date)=\"onHoverDate($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n [p-header-template]=\"headerTemplate\"\n [p-size]=\"size\"\n >\n </po-calendar-wrapper>\n</ng-template>\n\n<ng-template #calendarMonth>\n <ul class=\"po-calendar-months\">\n @for (month of displayMonths; track month; let i = $index) {\n <li class=\"po-calendar-month-item\">\n <po-button\n #monthOption\n [class.po-button-selected]=\"i === selectedIndexMonth\"\n role=\"option\"\n p-kind=\"tertiary\"\n p-label=\"{{ month }}\"\n [attr.aria-selected]=\"i === selectedIndexMonth\"\n [p-tabindex]=\"i === focusedIndex ? 0 : -1\"\n [p-size]=\"size\"\n [p-disabled]=\"isMonthDisabled(i)\"\n (p-click)=\"selectMonth(i, $event, true)\"\n (keydown)=\"onKeydownMonth($event, i)\"\n ></po-button>\n </li>\n }\n </ul>\n</ng-template>\n\n<ng-template #calendarYear>\n <ul class=\"po-calendar-years\">\n @for (year of displayYears; track year; let i = $index) {\n <li class=\"po-calendar-year-item\">\n <po-button\n #yearOption\n [class.po-button-selected]=\"i === selectedIndexYear\"\n role=\"option\"\n p-kind=\"tertiary\"\n p-label=\"{{ year }}\"\n [attr.aria-selected]=\"i === selectedIndexYear\"\n [p-tabindex]=\"i === focusedIndex ? 0 : -1\"\n [p-size]=\"size\"\n [p-disabled]=\"isYearDisabled(year)\"\n (p-click)=\"selectYear(i, $event, true, year)\"\n (keydown)=\"onKeydownYear($event, i)\"\n >\n </po-button>\n </li>\n }\n </ul>\n</ng-template>\n\n<ng-template #calendarTimer>\n <div class=\"po-calendar-vertical-divider\"></div>\n <po-timer\n #timer\n [p-format]=\"format\"\n [p-locale]=\"locale\"\n [p-min-time]=\"minTime\"\n [p-max-time]=\"maxTime\"\n [p-minute-interval]=\"minuteInterval\"\n [p-second-interval]=\"secondInterval\"\n [p-show-seconds]=\"showSeconds\"\n [p-size]=\"size\"\n (p-change)=\"onTimeChange($event)\"\n (p-boundary-tab)=\"onTimerBoundaryTab($event)\"\n ></po-timer>\n</ng-template>\n" }]
16911
+ args: [{ selector: 'po-calendar', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers$7, standalone: false, template: "@if (isMonthYear) {\n <div class=\"po-calendar po-calendar-month-year\">\n <ng-container *ngTemplateOutlet=\"calendarMonth\"></ng-container>\n <ng-container *ngTemplateOutlet=\"calendarYear\"></ng-container>\n </div>\n} @else if (isYear) {\n <div class=\"po-calendar po-calendar-year\">\n <ng-container *ngTemplateOutlet=\"calendarYear\"></ng-container>\n </div>\n} @else if (isRange) {\n <div\n class=\"po-calendar\"\n [class.po-calendar-with-presets]=\"effectivePresets().length > 0\"\n [class.po-calendar-mobile]=\"isResponsive || widthWithPresets\"\n [class.po-calendar-responsive]=\"!isResponsive && widthWithPresets\"\n >\n @if (effectivePresets().length > 0 && !isResponsive && !widthWithPresets) {\n <po-calendar-preset-list\n [p-presets]=\"effectivePresets()\"\n [p-locale]=\"locale\"\n [p-selected-preset]=\"selectedPresetLabel\"\n [p-size]=\"size\"\n (p-select-preset)=\"onPresetSelected($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-preset-list>\n }\n <ng-container *ngTemplateOutlet=\"calendarWrapper; context: { partType: 'start' }\"></ng-container>\n @if (effectivePresets().length > 0 && (isResponsive || widthWithPresets)) {\n <po-calendar-preset-list\n [p-presets]=\"effectivePresets()\"\n [p-locale]=\"locale\"\n [p-selected-preset]=\"selectedPresetLabel\"\n [p-size]=\"size\"\n [p-responsive]=\"true\"\n (p-select-preset)=\"onPresetSelected($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-preset-list>\n\n <po-calendar-footer\n [p-size]=\"size\"\n [p-responsive]=\"isResponsive\"\n [p-hide-today-button]=\"true\"\n [p-label-clear]=\"displayToClean\"\n (p-clear)=\"onSelectDate($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n ></po-calendar-footer>\n }\n </div>\n} @else {\n <div\n [class.po-calendar-date-time]=\"isDateTime\"\n [class.po-calendar-three-columns]=\"showSeconds || format === '12'\"\n [class.po-calendar-four-columns]=\"showSeconds && format === '12'\"\n >\n <div class=\"po-calendar\">\n <ng-container *ngTemplateOutlet=\"calendarWrapper; context: { partType: 'single' }\"></ng-container>\n </div>\n @if (isDateTime) {\n <ng-container *ngTemplateOutlet=\"calendarTimer\"></ng-container>\n }\n </div>\n}\n\n<ng-template #calendarWrapper let-partType=\"partType\">\n <po-calendar-wrapper\n [p-value]=\"getValue(partType)\"\n [p-activate-date]=\"getActivateDate(partType)\"\n [p-locale]=\"locale\"\n [p-min-date]=\"minDate\"\n [p-presets]=\"effectivePresets().length > 0\"\n [p-max-date]=\"maxDate\"\n [p-part-type]=\"partType\"\n [p-range]=\"isRange\"\n [p-responsive]=\"isResponsive || widthWithPresets\"\n [p-selected-value]=\"value\"\n [p-hover-value]=\"hoverValue\"\n [p-hide-today-button]=\"effectivePresets().length > 0\"\n (p-header-change)=\"onHeaderChange($event, partType)\"\n (p-select-date)=\"onSelectDate($event, partType)\"\n (p-select-today)=\"onSelectTodayPreset()\"\n (p-hover-date)=\"onHoverDate($event)\"\n (p-close-calendar)=\"onCloseCalendar()\"\n [p-header-template]=\"headerTemplate\"\n [p-size]=\"size\"\n >\n </po-calendar-wrapper>\n</ng-template>\n\n<ng-template #calendarMonth>\n <ul class=\"po-calendar-months\">\n @for (month of displayMonths; track month; let i = $index) {\n <li class=\"po-calendar-month-item\">\n <po-button\n #monthOption\n [class.po-button-selected]=\"i === selectedIndexMonth\"\n role=\"option\"\n p-kind=\"tertiary\"\n p-label=\"{{ month }}\"\n [attr.aria-selected]=\"i === selectedIndexMonth\"\n [p-tabindex]=\"i === focusedIndex ? 0 : -1\"\n [p-size]=\"size\"\n [p-disabled]=\"isMonthDisabled(i)\"\n (p-click)=\"selectMonth(i, $event, true)\"\n (keydown)=\"onKeydownMonth($event, i)\"\n ></po-button>\n </li>\n }\n </ul>\n</ng-template>\n\n<ng-template #calendarYear>\n <ul class=\"po-calendar-years\">\n @for (year of displayYears; track year; let i = $index) {\n <li class=\"po-calendar-year-item\">\n <po-button\n #yearOption\n [class.po-button-selected]=\"i === selectedIndexYear\"\n role=\"option\"\n p-kind=\"tertiary\"\n p-label=\"{{ year }}\"\n [attr.aria-selected]=\"i === selectedIndexYear\"\n [p-tabindex]=\"i === focusedIndex ? 0 : -1\"\n [p-size]=\"size\"\n [p-disabled]=\"isYearDisabled(year)\"\n (p-click)=\"selectYear(i, $event, true, year)\"\n (keydown)=\"onKeydownYear($event, i)\"\n >\n </po-button>\n </li>\n }\n </ul>\n</ng-template>\n\n<ng-template #calendarTimer>\n <div class=\"po-calendar-vertical-divider\"></div>\n <po-timer\n #timer\n [p-format]=\"format\"\n [p-locale]=\"locale\"\n [p-min-time]=\"minTime\"\n [p-max-time]=\"maxTime\"\n [p-minute-interval]=\"minuteInterval\"\n [p-second-interval]=\"secondInterval\"\n [p-show-seconds]=\"showSeconds\"\n [p-size]=\"size\"\n (p-change)=\"onTimeChange($event)\"\n (p-boundary-tab)=\"onTimerBoundaryTab($event)\"\n ></po-timer>\n</ng-template>\n" }]
16903
16912
  }], ctorParameters: () => [], propDecorators: { timerComponent: [{
16904
16913
  type: ViewChild,
16905
16914
  args: ['timer']
@@ -29695,12 +29704,9 @@ class PoDatetimepickerBaseComponent {
29695
29704
  _size = undefined;
29696
29705
  _date;
29697
29706
  _timeValue = '';
29698
- previousValue;
29699
29707
  _resolvedMinDate;
29700
29708
  _resolvedMaxDate;
29701
29709
  hasValidatorRequired;
29702
- hour = 'T00:00:00-00:00';
29703
- isExtendedISO = false;
29704
29710
  objMask;
29705
29711
  onChangeModel = null;
29706
29712
  onTouchedModel = null;
@@ -30088,7 +30094,6 @@ class PoDatetimepickerBaseComponent {
30088
30094
  else {
30089
30095
  this._locale = this.shortLanguage;
30090
30096
  }
30091
- // Recalcula o formato de data baseado no locale (se não foi definido explicitamente)
30092
30097
  this._format = this.resolveFormat();
30093
30098
  this.objMask = this.buildMask(replaceFormatSeparator(this.format, this.languageService.getDateSeparator(this.localeInput())));
30094
30099
  this.refreshValue(this._date);
@@ -30172,7 +30177,6 @@ class PoDatetimepickerBaseComponent {
30172
30177
  this.processStringValue(value);
30173
30178
  }
30174
30179
  this.refreshValue(this._date);
30175
- // Normaliza o model para ISO 8601 se o valor recebido era Date ou string válida
30176
30180
  if (this._date && this._timeValue) {
30177
30181
  this.callOnChange(this.getModelValue());
30178
30182
  }
@@ -30203,11 +30207,9 @@ class PoDatetimepickerBaseComponent {
30203
30207
  if (this.requiredFailed(c.value)) {
30204
30208
  return { required: { valid: false } };
30205
30209
  }
30206
- // Validação de range de data (p-min-date / p-max-date)
30207
30210
  if (this._date && !this.isDateInRange()) {
30208
30211
  return { date: { valid: false } };
30209
30212
  }
30210
- // Validação de range de hora (p-min-time / p-max-time)
30211
30213
  if (this._timeValue && !this.isTimeInRange(this._timeValue)) {
30212
30214
  return { time: { valid: false } };
30213
30215
  }
@@ -30226,15 +30228,9 @@ class PoDatetimepickerBaseComponent {
30226
30228
  set timeValue(value) {
30227
30229
  this._timeValue = value;
30228
30230
  }
30229
- // Retorna o formato de data efetivo, considerando:
30230
- // 1. Valor explícito de `p-date-format`
30231
- // 2. Formato padrão do locale
30232
30231
  get format() {
30233
30232
  return this._format || this.resolveFormat();
30234
30233
  }
30235
- // Retorna o formato de hora efetivo, considerando:
30236
- // 1. Valor explícito de `p-format` (timerFormat)
30237
- // 2. Formato padrão do locale (12h para en, 24h para pt/es/ru)
30238
30234
  get resolvedTimerFormat() {
30239
30235
  const explicit = this.timerFormat();
30240
30236
  if (explicit) {
@@ -30243,7 +30239,6 @@ class PoDatetimepickerBaseComponent {
30243
30239
  const localeTimeFormat = PoDatetimepickerTimeFormatByLocale[this.locale] || '24';
30244
30240
  return localeTimeFormat === '12' ? PoTimerFormat.Format12 : PoTimerFormat.Format24;
30245
30241
  }
30246
- // Indica se o formato de hora é 12h (AM/PM).
30247
30242
  get is12HourFormat() {
30248
30243
  return this.resolvedTimerFormat === PoTimerFormat.Format12;
30249
30244
  }
@@ -30280,27 +30275,6 @@ class PoDatetimepickerBaseComponent {
30280
30275
  mapSizeToIcon(size) {
30281
30276
  return mapInputSizeToLoadingIcon(size);
30282
30277
  }
30283
- // Retorna o valor do model no formato ISO 8601 combinando data e hora com timezone local.
30284
- //
30285
- // Formato de saída: `yyyy-mm-ddTHH:mm:ss+/-HH:mm` ou `yyyy-mm-ddTHH:mm+/-HH:mm`.
30286
- //
30287
- // O componente opera internamente em **local timezone**:
30288
- // - O valor exibido ao usuário é sempre em horário local.
30289
- // - O valor emitido no model inclui o offset do timezone local para que consumidores
30290
- // possam converter para UTC ou outro timezone conforme necessário.
30291
- // - Ao receber um valor via `writeValue`, strings ISO com timezone são convertidas
30292
- // para horário local antes de serem armazenadas.
30293
- // - Objetos `Date` do JavaScript já representam instantes em UTC internamente,
30294
- // mas são exibidos em horário local — o componente segue esse comportamento.
30295
- //
30296
- // Exemplos de saída (timezone -03:00 / Brasília):
30297
- // - `2026-05-09T14:30:00-03:00`
30298
- // - `2026-05-09T14:30-03:00`
30299
- //
30300
- // Considerações sobre horário de verão:
30301
- // - O offset é calculado no momento da emissão do valor, usando `Date.getTimezoneOffset()`
30302
- // da data selecionada. Isso garante que o offset correto seja aplicado mesmo quando
30303
- // a data selecionada está em período de horário de verão diferente do momento atual.
30304
30278
  getModelValue() {
30305
30279
  if (!this._date) {
30306
30280
  return '';
@@ -30310,12 +30284,6 @@ class PoDatetimepickerBaseComponent {
30310
30284
  const timezone = this.getTimezoneOffset(this._date);
30311
30285
  return `${dateISO}T${time}${timezone}`;
30312
30286
  }
30313
- // Retorna o offset do timezone local no formato `+/-HH:mm`.
30314
- //
30315
- // Usa a data informada para calcular o offset, garantindo que o horário de verão
30316
- // seja considerado corretamente (o offset pode variar conforme a data).
30317
- //
30318
- // @param date Data de referência para cálculo do offset.
30319
30287
  getTimezoneOffset(date) {
30320
30288
  const referenceDate = date || new Date();
30321
30289
  const offset = referenceDate.getTimezoneOffset();
@@ -30325,32 +30293,22 @@ class PoDatetimepickerBaseComponent {
30325
30293
  const minutes = ('00' + (offsetAbsolute % 60)).slice(-2);
30326
30294
  return `${sign}${hours}:${minutes}`;
30327
30295
  }
30328
- // Executa a função onChange propagando o valor para o formulário.
30329
30296
  callOnChange(value, retry = true) {
30330
30297
  if (this.onChangeModel) {
30331
30298
  this.onChangeModel(value);
30332
- this.previousValue = value;
30333
30299
  }
30334
30300
  else if (retry) {
30335
30301
  setTimeout(() => this.callOnChange(value, false));
30336
30302
  }
30337
30303
  }
30338
- // Atualiza o model com o valor combinado de data e hora.
30339
30304
  controlModel() {
30340
30305
  const modelValue = this.getModelValue();
30341
30306
  this.callOnChange(modelValue || '');
30342
30307
  }
30343
- // Formata o horário para exibição, incluindo AM/PM quando em formato 12h.
30344
- //
30345
- // @param time Horário no formato HH:mm ou HH:mm:ss (24h interno)
30346
- // @returns Horário formatado para exibição (ex: "02:30" ou "14:30")
30347
- // Nota: Para formato 12h, retorna apenas a parte numérica (sem AM/PM).
30348
- // O período é exibido no input separado gerenciado pelo componente.
30349
30308
  formatTimeForDisplay(time) {
30350
30309
  if (!time) {
30351
30310
  return this.is12HourFormat ? '12:00' : '00:00';
30352
30311
  }
30353
- // Trunca segundos se showSeconds está desabilitado
30354
30312
  const parts = time.split(':');
30355
30313
  if (!this.showSeconds() && parts.length > 2) {
30356
30314
  time = `${parts[0]}:${parts[1]}`;
@@ -30358,7 +30316,6 @@ class PoDatetimepickerBaseComponent {
30358
30316
  if (!this.is12HourFormat) {
30359
30317
  return time;
30360
30318
  }
30361
- // Converte de 24h para 12h (sem AM/PM — o período é gerenciado separadamente)
30362
30319
  let hours = Number.parseInt(parts[0], 10);
30363
30320
  const minutes = parts[1];
30364
30321
  const seconds = this.showSeconds() && parts.length > 2 ? parts[2] : null;
@@ -30372,13 +30329,8 @@ class PoDatetimepickerBaseComponent {
30372
30329
  return seconds ? `${hoursStr}:${minutes}:${seconds}` : `${hoursStr}:${minutes}`;
30373
30330
  }
30374
30331
  // --- Protected / Private ---
30375
- // Constrói a máscara para o input de datetime.
30376
- // Formato resultante: "99/99/9999 99:99" (24h e 12h)
30377
- // Com segundos: "99/99/9999 99:99:99"
30378
- // Nota: O sufixo AM/PM em formato 12h é gerenciado separadamente (não faz parte da máscara).
30379
30332
  buildMask(format = this.format) {
30380
30333
  let mask = format.toUpperCase();
30381
- // Parte da data
30382
30334
  mask = mask.replace(/DD/g, '99');
30383
30335
  mask = mask.replace(/MM/g, '99');
30384
30336
  mask = mask.replace(/YYYY/g, '9999');
@@ -30389,7 +30341,6 @@ class PoDatetimepickerBaseComponent {
30389
30341
  else {
30390
30342
  mask += ' 99:99';
30391
30343
  }
30392
- // AM/PM NÃO é incluído na máscara — é gerenciado como sufixo fixo no componente.
30393
30344
  return new PoMask(mask, true);
30394
30345
  }
30395
30346
  validateModel(value) {
@@ -30397,24 +30348,18 @@ class PoDatetimepickerBaseComponent {
30397
30348
  this.validatorChange();
30398
30349
  }
30399
30350
  }
30400
- // Retorna a data mínima resolvida (cacheada).
30401
30351
  get resolvedMinDate() {
30402
30352
  return this._resolvedMinDate;
30403
30353
  }
30404
- // Retorna a data máxima resolvida (cacheada).
30405
30354
  get resolvedMaxDate() {
30406
30355
  return this._resolvedMaxDate;
30407
30356
  }
30408
- // Verifica se a data selecionada está dentro do intervalo [minDate, maxDate].
30409
- // Segue o mesmo padrão do po-datepicker: `PoUtils.validateDateRange`.
30410
30357
  isDateInRange() {
30411
30358
  if (!this._date) {
30412
30359
  return true;
30413
30360
  }
30414
30361
  return PoUtils.validateDateRange(this._date, this.resolvedMinDate, this.resolvedMaxDate);
30415
30362
  }
30416
- // Verifica se o horário selecionado está dentro do intervalo [minTime, maxTime].
30417
- // Segue o mesmo padrão do po-timepicker: converte para segundos e compara.
30418
30363
  isTimeInRange(time) {
30419
30364
  if (!time) {
30420
30365
  return true;
@@ -30436,7 +30381,6 @@ class PoDatetimepickerBaseComponent {
30436
30381
  }
30437
30382
  return true;
30438
30383
  }
30439
- // Converte uma string de horário (HH:mm ou HH:mm:ss) para total de segundos.
30440
30384
  timeToSeconds(time) {
30441
30385
  const parts = time.split(':');
30442
30386
  const hours = Number.parseInt(parts[0], 10) || 0;
@@ -30444,7 +30388,6 @@ class PoDatetimepickerBaseComponent {
30444
30388
  const seconds = parts.length >= 3 ? Number.parseInt(parts[2], 10) || 0 : 0;
30445
30389
  return hours * 3600 + minutes * 60 + seconds;
30446
30390
  }
30447
- // Resolve o formato de data efetivo baseado no input explícito ou no locale.
30448
30391
  resolveFormat() {
30449
30392
  const explicit = this.dateFormat?.();
30450
30393
  if (explicit) {
@@ -30455,37 +30398,23 @@ class PoDatetimepickerBaseComponent {
30455
30398
  }
30456
30399
  return PoDatetimepickerFormatByLocale[this.locale] || poDatepickerFormatDefault;
30457
30400
  }
30458
- // Processa um valor string recebido via writeValue.
30459
- // Formatos aceitos:
30460
- // - `yyyy-mm-ddTHH:mm:ss+/-HH:mm` (ISO 8601 com timezone)
30461
- // - `yyyy-mm-ddTHH:mm:ssZ` (UTC)
30462
- // - `yyyy-mm-ddTHH:mm:ss` (sem timezone, interpretado como local)
30463
- // - `yyyy-mm-ddTHH:mm` (sem segundos)
30464
- // - `yyyy-mm-dd` (apenas data, hora assume 00:00)
30465
- //
30466
- // Quando o valor contém timezone, é convertido para horário local antes de ser armazenado.
30467
- // Isso garante que o valor exibido ao usuário sempre represente o horário local.
30468
30401
  processStringValue(value) {
30469
30402
  if (value.includes('T')) {
30470
30403
  const tIndex = value.indexOf('T');
30471
30404
  const datePart = value.substring(0, tIndex);
30472
30405
  const timeAndTz = value.substring(tIndex + 1);
30473
- // Tenta fazer parse completo via Date para respeitar timezone
30474
30406
  const fullDate = new Date(value);
30475
30407
  if (!isNaN(fullDate.getTime())) {
30476
- // Parse bem-sucedido — Date converte automaticamente para local timezone
30477
30408
  this._date = new Date(fullDate.getFullYear(), fullDate.getMonth(), fullDate.getDate());
30478
30409
  this._timeValue = this.extractTimeFromDate(fullDate);
30479
30410
  }
30480
30411
  else {
30481
- // Fallback: parse manual sem timezone
30482
30412
  const parsedDate = convertIsoToDate(datePart, false, false);
30483
30413
  this._date = parsedDate;
30484
30414
  this._timeValue = this.normalizeTimePart(timeAndTz);
30485
30415
  }
30486
30416
  }
30487
30417
  else {
30488
- // Apenas data (yyyy-mm-dd)
30489
30418
  const parsedDate = convertIsoToDate(value, false, false);
30490
30419
  this._date = parsedDate;
30491
30420
  this._timeValue = '00:00';
@@ -30499,7 +30428,7 @@ class PoDatetimepickerBaseComponent {
30499
30428
  const hours = ('0' + date.getHours()).slice(-2);
30500
30429
  const minutes = ('0' + date.getMinutes()).slice(-2);
30501
30430
  const seconds = ('0' + date.getSeconds()).slice(-2);
30502
- if (this.showSeconds() && seconds !== '00') {
30431
+ if (this.showSeconds()) {
30503
30432
  return `${hours}:${minutes}:${seconds}`;
30504
30433
  }
30505
30434
  return `${hours}:${minutes}`;
@@ -30580,13 +30509,11 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30580
30509
  iconDatepicker;
30581
30510
  calendarComponent;
30582
30511
  inputEl;
30583
- iconClean;
30584
30512
  dialogPicker;
30585
30513
  helperEl;
30586
30514
  datetimepickerField;
30587
30515
  renderer = inject(Renderer2);
30588
30516
  cd = inject(ChangeDetectorRef);
30589
- poCalendarService = inject(PoCalendarService);
30590
30517
  controlPosition = inject(PoControlPositionService);
30591
30518
  id = `po-datetimepicker[${uuid()}]`;
30592
30519
  displayAdditionalHelp = false;
@@ -30598,6 +30525,8 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30598
30525
  clickListener;
30599
30526
  eventResizeListener;
30600
30527
  valueBeforeChange = '';
30528
+ hadValueOnOpen = false;
30529
+ isTodayPresetInProgress = false;
30601
30530
  constructor() {
30602
30531
  const languageService = inject(PoLanguageService);
30603
30532
  const el = inject(ElementRef);
@@ -30628,6 +30557,8 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30628
30557
  }
30629
30558
  if (!this.visible) {
30630
30559
  this.visible = true;
30560
+ this.hadValueOnOpen = !!(this.date && this.timeValue);
30561
+ this.syncDateFromInput();
30631
30562
  this.setCalendarPosition();
30632
30563
  this.initializeListeners();
30633
30564
  this.syncCalendarAndTimer();
@@ -30689,25 +30620,51 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30689
30620
  }
30690
30621
  this.objMask?.keyup($event);
30691
30622
  if (this.objMask?.valueToModel || this.objMask?.valueToModel === '') {
30692
- const inputValue = this.inputEl.nativeElement.value;
30693
- const minLength = this.getExpectedInputLength();
30694
- if (this.objMask.valueToModel.length >= minLength) {
30695
- this.parseInputAndSync(inputValue);
30696
- }
30697
- else {
30698
- this.date = undefined;
30699
- this.timeValue = '';
30700
- this.controlModel();
30701
- this.syncCalendarAndTimer();
30623
+ this.processKeyupWithMask();
30624
+ }
30625
+ else {
30626
+ this.clearDateTimeState();
30627
+ this.syncCalendarAndTimer();
30628
+ }
30629
+ }
30630
+ processKeyupWithMask() {
30631
+ const inputValue = this.inputEl.nativeElement.value;
30632
+ const minLength = this.getExpectedInputLength();
30633
+ if (this.objMask.valueToModel.length >= minLength) {
30634
+ this.tryParseCompleteInput(inputValue);
30635
+ }
30636
+ else {
30637
+ this.clearDateTimeState();
30638
+ this.controlModel();
30639
+ this.syncCalendarAndTimer();
30640
+ }
30641
+ }
30642
+ tryParseCompleteInput(inputValue) {
30643
+ const parsed = this.parseDateTimeFromInput(inputValue);
30644
+ if (parsed) {
30645
+ this.date = parsed.date;
30646
+ this.timeValue = this.normalizeTimeWithSeconds(parsed.time);
30647
+ if (this.is12HourFormat) {
30648
+ const hours = Number.parseInt(parsed.time.split(':')[0], 10);
30649
+ this.currentPeriod = hours >= 12 ? 'PM' : 'AM';
30702
30650
  }
30651
+ this.controlModel();
30652
+ this.syncCalendarAndTimer();
30703
30653
  }
30704
30654
  else {
30705
- this.date = undefined;
30706
- this.timeValue = '';
30655
+ this.clearDateTimeState();
30656
+ this.controlModel();
30707
30657
  this.syncCalendarAndTimer();
30708
30658
  }
30709
30659
  }
30660
+ clearDateTimeState() {
30661
+ this.date = undefined;
30662
+ this.timeValue = '';
30663
+ }
30710
30664
  onKeydown($event) {
30665
+ if ($event?.target === this.inputEl?.nativeElement) {
30666
+ this.keydown.emit($event);
30667
+ }
30711
30668
  if (this.isReadonly) {
30712
30669
  return;
30713
30670
  }
@@ -30719,7 +30676,6 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30719
30676
  }
30720
30677
  if ($event?.target === this.inputEl?.nativeElement) {
30721
30678
  this.objMask?.keydown($event);
30722
- this.keydown.emit($event);
30723
30679
  }
30724
30680
  }
30725
30681
  onInputFocus() {
@@ -30728,8 +30684,6 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30728
30684
  onPeriodBlur() {
30729
30685
  this.isInputFocused = false;
30730
30686
  }
30731
- // Chamado ao sair do campo (blur).
30732
- // Finaliza a edição, valida o valor e sincroniza com o calendário/timer.
30733
30687
  eventOnBlur($event) {
30734
30688
  this.isInputFocused = false;
30735
30689
  this.onTouchedModel?.();
@@ -30772,7 +30726,6 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30772
30726
  }
30773
30727
  }
30774
30728
  }
30775
- // Chamado ao clicar no input.
30776
30729
  eventOnClick($event) {
30777
30730
  if (this.verifyMobile()) {
30778
30731
  $event.target.blur();
@@ -30782,14 +30735,11 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30782
30735
  this.objMask?.click($event);
30783
30736
  }
30784
30737
  }
30785
- // Chamado ao clicar em qualquer parte do wrapper do campo.
30786
- // Foca o input principal se o clique não foi no period input ou nos ícones.
30787
30738
  onFieldClick($event) {
30788
30739
  if (this.isDisabled || this.isReadonly) {
30789
30740
  return;
30790
30741
  }
30791
30742
  const target = $event.target;
30792
- // Se clicou no period input ou nos botões, não redireciona
30793
30743
  if (target.closest('.po-datetimepicker-field-period') || target.closest('.po-field-icon-container-right')) {
30794
30744
  return;
30795
30745
  }
@@ -30804,27 +30754,25 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30804
30754
  this.closeCalendar(false);
30805
30755
  }
30806
30756
  }
30807
- // Chamado quando Tab/Shift+Tab atinge a borda do timer (última ou primeira coluna).
30808
- // Quando direction é 'forward' (Tab na última coluna), fecha o calendário e foca no botão toggle.
30809
30757
  onTimerBoundaryTab(event) {
30810
30758
  if (event.direction === 'forward') {
30811
30759
  event.event.preventDefault();
30812
30760
  this.closeCalendar(false);
30813
30761
  }
30814
30762
  }
30815
- // Sobrescreve writeValue para sincronizar valueBeforeChange,
30763
+ onCalendarClose() {
30764
+ this.isTodayPresetInProgress = true;
30765
+ this.closeCalendar(false);
30766
+ }
30816
30767
  writeValue(value) {
30817
30768
  super.writeValue(value);
30818
30769
  this.valueBeforeChange = this.getModelValue();
30819
30770
  }
30820
- // Atualiza o valor exibido no input quando o model muda externamente (writeValue)
30821
- // ou quando o locale muda em runtime.
30822
30771
  refreshValue(value) {
30823
30772
  if (!this.inputEl) {
30824
30773
  return;
30825
30774
  }
30826
30775
  if (value && value instanceof Date && !Number.isNaN(value.getTime())) {
30827
- // Atualiza o período atual com base no horário armazenado (formato 24h)
30828
30776
  if (this.is12HourFormat && this.timeValue) {
30829
30777
  const hours = Number.parseInt(this.timeValue.split(':')[0], 10);
30830
30778
  this.currentPeriod = hours >= 12 ? 'PM' : 'AM';
@@ -30834,35 +30782,26 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30834
30782
  else if (!value) {
30835
30783
  this.inputEl.nativeElement.value = '';
30836
30784
  }
30837
- // Se value é inválido (NaN), não altera o input — mantém o valor atual
30838
30785
  this.cd?.markForCheck();
30839
30786
  }
30840
- // Chamado quando o timer emite uma mudança de horário.
30841
- // Atualiza o valor, propaga o model, emite p-change e fecha o calendário.
30842
- // Só processa se já há data válida selecionada (seleção completa = data + hora).
30843
30787
  onTimeChange(time) {
30844
30788
  if (!time) {
30845
30789
  return;
30846
30790
  }
30847
- this.timeValue = time;
30791
+ this.timeValue = this.normalizeTimeWithSeconds(time);
30848
30792
  if (this.date && !Number.isNaN(this.date.getTime())) {
30849
30793
  this.controlModel();
30850
30794
  this.refreshValue(this.date);
30851
30795
  this.emitChangeIfDifferent(this.getModelValue());
30852
- this.closeCalendar(true);
30796
+ if (this.isTodayPresetInProgress) {
30797
+ this.isTodayPresetInProgress = false;
30798
+ }
30799
+ else if (!this.hadValueOnOpen) {
30800
+ this.closeCalendar(true);
30801
+ }
30853
30802
  this.cd.markForCheck();
30854
30803
  }
30855
30804
  }
30856
- // Chamado quando o calendário emite uma mudança de data.
30857
- //
30858
- // Distingue entre:
30859
- // - "Limpar": calendar emite change('') — string vazia
30860
- // - Tab/close interno: calendar emite change(null) — ignorar
30861
- // - Seleção de data: calendar emite change('yyyy-mm-dd') — processar
30862
- //
30863
- // Ao selecionar uma data, NÃO emite p-change nem propaga model com hora 00:00.
30864
- // O p-change só será emitido quando o timer completar a seleção (data + hora).
30865
- // Exceção: "Hoje" define data+hora simultaneamente, então emite e fecha.
30866
30805
  onDateChange(date) {
30867
30806
  if (date === null || date === undefined) {
30868
30807
  return;
@@ -30873,44 +30812,35 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30873
30812
  this.callOnChange('');
30874
30813
  this.emitChangeIfDifferent('');
30875
30814
  this.refreshValue(undefined);
30876
- this.closeCalendar(true);
30815
+ this.closeCalendar(false);
30877
30816
  this.cd.markForCheck();
30878
30817
  return;
30879
30818
  }
30880
- // date vem no formato ISO yyyy-mm-dd do po-calendar
30881
30819
  const parsedDate = new Date(date + 'T00:00:00');
30882
30820
  if (Number.isNaN(parsedDate.getTime())) {
30883
30821
  return;
30884
30822
  }
30885
30823
  this.date = parsedDate;
30886
- // "Hoje" — hora já foi definida via p-change-time antes deste evento.
30887
- // Emite model completo e fecha.
30888
- if (this.poCalendarService.isToday(parsedDate) && this.timeValue) {
30889
- this.controlModel();
30890
- this.refreshValue(this.date);
30891
- this.emitChangeIfDifferent(this.getModelValue());
30892
- this.closeCalendar(true);
30824
+ if (this.isTodayPresetInProgress) {
30893
30825
  return;
30894
30826
  }
30895
- // Se já existe hora preenchida, a seleção de data atualiza o model
30896
- // imediatamente mas mantém o calendário aberto para possível ajuste de hora.
30897
30827
  if (this.timeValue) {
30898
30828
  this.controlModel();
30899
30829
  this.refreshValue(this.date);
30900
30830
  this.emitChangeIfDifferent(this.getModelValue());
30901
30831
  return;
30902
30832
  }
30903
- // Seleção de data sem hora — apenas atualiza o display
30904
- // (aguarda seleção de hora no timer para completar)
30905
30833
  this.refreshValue(this.date);
30906
30834
  }
30907
- // Chamado ao clicar no botão de limpar (po-clean no input).
30908
- // Limpa data, hora, input e reseta o calendário/timer.
30909
30835
  clear(triggeredByKeyboard = false) {
30910
30836
  this.date = undefined;
30911
30837
  this.timeValue = '';
30912
30838
  this.currentPeriod = 'AM';
30913
30839
  this.inputEl.nativeElement.value = '';
30840
+ if (this.objMask) {
30841
+ this.objMask.valueToModel = '';
30842
+ this.objMask.valueToInput = '';
30843
+ }
30914
30844
  if (triggeredByKeyboard) {
30915
30845
  setTimeout(() => {
30916
30846
  this.focus();
@@ -30989,7 +30919,6 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30989
30919
  dateFormatted = dateFormatted.replace('mm', month);
30990
30920
  dateFormatted = dateFormatted.replace('yyyy', year);
30991
30921
  dateFormatted = dateFormatted.replace(/\//g, separator);
30992
- // Se não há hora selecionada, exibe placeholders vazios para indicar que falta preencher
30993
30922
  if (!time) {
30994
30923
  const timePlaceholder = this.showSeconds() ? '--:--:--' : '--:--';
30995
30924
  return `${dateFormatted} ${timePlaceholder}`;
@@ -30997,16 +30926,11 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
30997
30926
  const timeDisplay = this.formatTimeForDisplay(time);
30998
30927
  return `${dateFormatted} ${timeDisplay}`;
30999
30928
  }
31000
- // Faz o parse do valor digitado no input e sincroniza com o calendário e timer.
31001
- //
31002
- // Formato esperado: "dd/mm/yyyy HH:mm" ou "mm/dd/yyyy HH:mm" (conforme locale)
31003
- // Para 12h: "dd/mm/yyyy hh:mm AM/PM"
31004
30929
  parseInputAndSync(inputValue) {
31005
30930
  const parsed = this.parseDateTimeFromInput(inputValue);
31006
30931
  if (parsed) {
31007
30932
  this.date = parsed.date;
31008
- this.timeValue = parsed.time;
31009
- // Sincroniza currentPeriod com o horário parseado (formato 24h)
30933
+ this.timeValue = this.normalizeTimeWithSeconds(parsed.time);
31010
30934
  if (this.is12HourFormat) {
31011
30935
  const hours = Number.parseInt(parsed.time.split(':')[0], 10);
31012
30936
  this.currentPeriod = hours >= 12 ? 'PM' : 'AM';
@@ -31020,30 +30944,24 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
31020
30944
  this.callOnChange(this.literals.invalidDatetime);
31021
30945
  }
31022
30946
  }
31023
- // Extrai data e hora de uma string formatada conforme o locale.
31024
30947
  parseDateTimeFromInput(inputValue) {
31025
30948
  if (!inputValue) {
31026
30949
  return null;
31027
30950
  }
31028
- // Separa a parte de data da parte de hora pelo espaço
31029
- // Formato: "dd/mm/yyyy HH:mm" ou "dd/mm/yyyy hh:mm AM"
31030
30951
  const separator = this.languageService.getDateSeparator(this.localeInput());
31031
- const datePartLength = 10; // dd/mm/yyyy sempre tem 10 chars (com separador)
30952
+ const datePartLength = 10;
31032
30953
  const datePart = inputValue.substring(0, datePartLength);
31033
- const timePart = inputValue.substring(datePartLength + 1).trim(); // +1 para o espaço
31034
- // Parse da data
30954
+ const timePart = inputValue.substring(datePartLength + 1).trim();
31035
30955
  const date = this.getDateFromFormattedString(datePart, separator);
31036
30956
  if (!date) {
31037
30957
  return null;
31038
30958
  }
31039
- // Parse da hora
31040
30959
  const time = this.parseTimeFromInput(timePart);
31041
30960
  if (!time) {
31042
30961
  return null;
31043
30962
  }
31044
30963
  return { date, time };
31045
30964
  }
31046
- // Converte uma string de data formatada (ex: "09/05/2026") em um objeto Date.
31047
30965
  getDateFromFormattedString(dateStr, separator) {
31048
30966
  const format = this.format.replace(/\//g, separator);
31049
30967
  const dayIndex = format.indexOf('dd');
@@ -31065,7 +30983,6 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
31065
30983
  }
31066
30984
  return date;
31067
30985
  }
31068
- // Converte uma string de hora (ex: "14:30" ou "02:30 PM") em formato 24h "HH:mm" ou "HH:mm:ss".
31069
30986
  parseTimeFromInput(timeStr) {
31070
30987
  if (!timeStr) {
31071
30988
  return null;
@@ -31074,8 +30991,6 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
31074
30991
  }
31075
30992
  parse12HourTime(timeStr) {
31076
30993
  const periodMatch = /(AM|PM)$/i.exec(timeStr);
31077
- // Se o período está na string (ex: "02:30 PM"), usa-o diretamente.
31078
- // Caso contrário, usa o currentPeriod do input separado.
31079
30994
  const period = periodMatch ? periodMatch[1].toUpperCase() : this.currentPeriod;
31080
30995
  const timeOnly = periodMatch ? timeStr.replace(/(AM|PM)/i, '').trim() : timeStr.trim();
31081
30996
  const parts = timeOnly.split(':');
@@ -31131,6 +31046,9 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
31131
31046
  }
31132
31047
  return `${hoursStr}:${minutesStr}:${this.padTime(seconds)}`;
31133
31048
  }
31049
+ if (this.showSeconds()) {
31050
+ return null;
31051
+ }
31134
31052
  return `${hoursStr}:${minutesStr}`;
31135
31053
  }
31136
31054
  isValidSeconds(seconds) {
@@ -31139,15 +31057,43 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
31139
31057
  padTime(value) {
31140
31058
  return ('0' + value).slice(-2);
31141
31059
  }
31142
- // Sincroniza o calendário e o timer com os valores internos de date e timeValue.
31060
+ normalizeTimeWithSeconds(time) {
31061
+ if (!time || !this.showSeconds()) {
31062
+ return time;
31063
+ }
31064
+ const parts = time.split(':');
31065
+ if (parts.length === 2) {
31066
+ return `${time}:00`;
31067
+ }
31068
+ return time;
31069
+ }
31070
+ syncDateFromInput() {
31071
+ if (this.date) {
31072
+ return;
31073
+ }
31074
+ const inputValue = this.inputEl?.nativeElement?.value;
31075
+ if (!inputValue || inputValue.length < 10) {
31076
+ return;
31077
+ }
31078
+ const separator = this.languageService.getDateSeparator(this.localeInput());
31079
+ const fullParsed = this.parseDateTimeFromInput(inputValue);
31080
+ if (fullParsed) {
31081
+ this.date = fullParsed.date;
31082
+ this.timeValue = this.normalizeTimeWithSeconds(fullParsed.time);
31083
+ return;
31084
+ }
31085
+ const datePart = inputValue.substring(0, 10);
31086
+ const parsedDate = this.getDateFromFormattedString(datePart, separator);
31087
+ if (parsedDate) {
31088
+ this.date = parsedDate;
31089
+ }
31090
+ }
31143
31091
  syncCalendarAndTimer() {
31144
31092
  if (!this.calendarComponent) {
31145
31093
  return;
31146
31094
  }
31147
31095
  if (this.date) {
31148
- // Sincroniza o calendário com a data selecionada
31149
31096
  this.calendarComponent.writeValue(this.date);
31150
- // Sincroniza o timer com o horário
31151
31097
  if (this.calendarComponent.timerComponent && this.timeValue) {
31152
31098
  this.calendarComponent.timerComponent.writeValue(this.timeValue);
31153
31099
  }
@@ -31156,24 +31102,19 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
31156
31102
  }
31157
31103
  }
31158
31104
  else {
31159
- // Sem data válida — reseta o calendário e o timer
31160
31105
  this.calendarComponent.writeValue(null);
31161
31106
  if (this.calendarComponent.timerComponent) {
31162
31107
  this.calendarComponent.timerComponent.writeValue(null);
31163
31108
  }
31164
31109
  }
31165
31110
  }
31166
- // Retorna o comprimento mínimo esperado do input (sem formatação) para considerar completo.
31167
- // Formato 24h: ddmmyyyyHHmm = 12 chars (ou 14 com segundos)
31168
- // Formato 12h: ddmmyyyyHHmm = 12 chars (ou 14 com segundos) — AM/PM é sufixo fixo, não conta.
31169
31111
  getExpectedInputLength() {
31170
- let length = 12; // ddmmyyyy + HHmm
31112
+ let length = 16;
31171
31113
  if (this.showSeconds()) {
31172
- length += 2; // ss
31114
+ length += 3;
31173
31115
  }
31174
31116
  return length;
31175
31117
  }
31176
- // --- Position ---
31177
31118
  setCalendarPosition() {
31178
31119
  this.setDialogPickerStyleDisplay('block');
31179
31120
  this.adjustCalendarPosition();
@@ -31192,7 +31133,6 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
31192
31133
  });
31193
31134
  }
31194
31135
  }
31195
- // --- Listeners ---
31196
31136
  initializeListeners() {
31197
31137
  this.clickListener = this.renderer.listen('document', 'click', (event) => {
31198
31138
  this.wasClickedOnPicker(event);
@@ -31236,8 +31176,6 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
31236
31176
  this.onchange.emit(value);
31237
31177
  }
31238
31178
  }
31239
- // --- Período AM/PM (input separado) ---
31240
- // Chamado quando uma tecla é pressionada no input de período AM/PM.
31241
31179
  onPeriodKeydown(event) {
31242
31180
  if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
31243
31181
  event.preventDefault();
@@ -31250,32 +31188,25 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
31250
31188
  event.preventDefault();
31251
31189
  return;
31252
31190
  }
31253
- // Shift+Tab: volta para o input principal
31254
31191
  if (event.key === 'Tab' && event.shiftKey) {
31255
31192
  event.preventDefault();
31256
31193
  this.focus();
31257
31194
  return;
31258
31195
  }
31259
- // Tab: avança para o clean ou botão do calendário
31260
31196
  if (event.key === 'Tab' && !event.shiftKey) {
31261
- // Permite o fluxo natural de tab (para clean/botão)
31262
31197
  return;
31263
31198
  }
31264
- // Bloqueia qualquer outra digitação (o período é read-only toggle)
31265
31199
  if (event.key.length === 1) {
31266
31200
  event.preventDefault();
31267
31201
  }
31268
31202
  }
31269
- // Chamado ao clicar no input de período AM/PM — alterna o período.
31270
31203
  onPeriodClick(event) {
31271
31204
  if (!this.isReadonly && !this.isDisabled) {
31272
31205
  this.togglePeriod();
31273
31206
  }
31274
31207
  }
31275
- // Alterna o período entre AM e PM e atualiza o model.
31276
31208
  togglePeriod() {
31277
31209
  this.currentPeriod = this.currentPeriod === 'AM' ? 'PM' : 'AM';
31278
- // Reparse o input para atualizar o model com o novo período
31279
31210
  const inputValue = this.inputEl.nativeElement.value;
31280
31211
  const minLength = this.getExpectedInputLength();
31281
31212
  if (this.objMask?.valueToModel && this.objMask.valueToModel.length >= minLength) {
@@ -31286,11 +31217,11 @@ class PoDatetimepickerComponent extends PoDatetimepickerBaseComponent {
31286
31217
  }
31287
31218
  }
31288
31219
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoDatetimepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31289
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoDatetimepickerComponent, isStandalone: false, selector: "po-datetimepicker", host: { listeners: { "keyup": "onKeyup($event)", "keydown": "onKeydown($event)" } }, providers: providers$6, viewQueries: [{ propertyName: "iconDatepicker", first: true, predicate: ["iconCalendar"], descendants: true }, { propertyName: "calendarComponent", first: true, predicate: ["calendar"], descendants: true }, { propertyName: "inputEl", first: true, predicate: ["inp"], descendants: true, read: ElementRef, static: true }, { propertyName: "iconClean", first: true, predicate: ["iconClean"], descendants: true, read: ElementRef }, { propertyName: "dialogPicker", first: true, predicate: ["dialogPicker"], descendants: true, read: ElementRef }, { propertyName: "helperEl", first: true, predicate: ["helperEl"], descendants: true, read: PoHelperComponent }, { propertyName: "datetimepickerField", first: true, predicate: ["datetimepickerField"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "@let poHelper = setHelper(label());\n<po-field-container\n [class.po-date-picker-container-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label()\"\n [p-disabled]=\"isDisabled\"\n [p-optional]=\"optional()\"\n [p-required]=\"isRequired\"\n [p-show-required]=\"showRequired()\"\n [p-helper]=\"label() ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label() ? displayAdditionalHelp : undefined\"\n [p-size]=\"hostSize\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n <div #outerContainer>\n <div\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"po-field-container-content po-field-container-content-datetimepicker\"\n >\n <div class=\"po-field-container-input\">\n <div\n #datetimepickerField\n class=\"po-datetimepicker-field po-input\"\n [class.po-input-icon-right]=\"isClean && dateTimeInputValue && !isDisabled && !isReadonly\"\n [class.po-datetimepicker-field-disabled]=\"isDisabled\"\n [class.po-datetimepicker-field-readonly]=\"isReadonly\"\n [class.po-datetimepicker-field-focused]=\"isInputFocused\"\n [attr.data-inactive-component]=\"isDisabled || isReadonly\"\n [attr.p-size]=\"hostSize\"\n (keydown)=\"onFieldClick($event)\"\n (click)=\"onFieldClick($event)\"\n >\n <div\n class=\"po-datetimepicker-field-segment\"\n [attr.data-value]=\"dateTimeInputValue || placeholderValue || ' '\"\n >\n <input\n #inp\n type=\"text\"\n class=\"po-datetimepicker-inner-input\"\n [attr.data-focused-element]=\"!isDisabled\"\n [attr.name]=\"name()\"\n [id]=\"id\"\n [autocomplete]=\"isNoAutocomplete\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"isDisabled ? '' : placeholderValue\"\n [readonly]=\"isReadonly\"\n [required]=\"isRequired\"\n [attr.data-append-in-body]=\"appendBox()\"\n (blur)=\"eventOnBlur($event)\"\n (click)=\"eventOnClick($event)\"\n (focus)=\"onInputFocus()\"\n />\n </div>\n @if (is12HourFormat && dateTimeInputValue) {\n <div\n class=\"po-datetimepicker-field-segment po-datetimepicker-field-period\"\n [attr.data-value]=\"currentPeriod\"\n >\n <input\n class=\"po-datetimepicker-segment-input po-datetimepicker-period-input\"\n type=\"text\"\n maxlength=\"2\"\n readonly\n [value]=\"currentPeriod\"\n [disabled]=\"isDisabled\"\n [attr.tabindex]=\"isDisabled || isReadonly ? -1 : 0\"\n role=\"spinbutton\"\n [attr.aria-label]=\"currentPeriod\"\n (keydown)=\"onPeriodKeydown($event)\"\n (click)=\"onPeriodClick($event)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onPeriodBlur()\"\n />\n </div>\n }\n @if (loading()) {\n <po-loading-icon [p-size]=\"mapSizeToIcon(hostSize)\"></po-loading-icon>\n } @else {\n <div class=\"po-field-icon-container-right\">\n @if (isClean && dateTimeInputValue && !isDisabled && !isReadonly) {\n <po-clean\n #iconClean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-icon-input\"\n p-icon=\"ICON_FILL_CLEAR_CONTENT\"\n [p-element-ref]=\"inputEl\"\n [p-size]=\"hostSize\"\n (p-change-event)=\"clear()\"\n (keydown.enter)=\"clear(true); $event.preventDefault()\"\n (keydown.space)=\"clear(true); $event.preventDefault()\"\n >\n </po-clean>\n <div class=\"po-button-vertical-divider\"></div>\n }\n <po-button\n #iconCalendar\n class=\"po-datetimepicker-button\"\n [class.po-button-tertiary-danger]=\"getErrorPattern()\"\n p-icon=\"ICON_CALENDAR_DOTS\"\n p-kind=\"tertiary\"\n [p-disabled]=\"isDisabled || isReadonly\"\n [p-size]=\"hostSize\"\n (p-click)=\"togglePicker(false)\"\n (keydown)=\"eventOnButtonKeydown($event)\"\n >\n </po-button>\n </div>\n }\n </div>\n </div>\n @if ((!this.label() && poHelperComponent()) || (!this.label() && poHelper.hideAdditionalHelp)) {\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"hostSize\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox()\"\n >\n </po-helper>\n }\n </div>\n\n @if (appendBox()) {\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"true\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n </ng-template>\n } @else {\n <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n }\n </div>\n\n @if (!isReadonly) {\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox()\"\n [p-help]=\"help()\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit()\"\n [p-size]=\"hostSize\"\n ></po-field-container-bottom>\n }\n</po-field-container>\n\n<ng-template #sharedCalendarContent>\n <div #dialogPicker [class.po-datetimepicker-popup-calendar]=\"!verifyMobile()\" tabindex=\"-1\" [hidden]=\"!visible\">\n @if (verifyMobile()) {\n <div class=\"po-datetimepicker-calendar-overlay\"></div>\n }\n <po-calendar\n #calendar\n [class.po-datetimepicker-calendar-mobile]=\"verifyMobile()\"\n p-mode=\"date-time\"\n [p-size]=\"hostSize\"\n [p-locale]=\"locale\"\n [p-format]=\"resolvedTimerFormat\"\n [p-min-date]=\"resolvedMinDate\"\n [p-max-date]=\"resolvedMaxDate\"\n [p-max-time]=\"maxTime()\"\n [p-min-time]=\"minTime()\"\n [p-minute-interval]=\"minuteInterval()\"\n [p-second-interval]=\"secondInterval()\"\n [p-show-seconds]=\"showSeconds()\"\n (p-change)=\"onDateChange($event)\"\n (p-change-time)=\"onTimeChange($event)\"\n (p-change-month-year)=\"adjustCalendarPosition()\"\n (p-timer-boundary-tab)=\"onTimerBoundaryTab($event)\"\n (keydown)=\"eventOnCalendarKeydown($event)\"\n ></po-calendar>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: PoCleanComponent, selector: "po-clean" }, { kind: "component", type: PoHelperComponent, selector: "po-helper" }, { kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoLoadingIconComponent, selector: "po-loading-icon", inputs: ["p-neutral-color", "p-size", "p-in-overlay"] }, { kind: "component", type: PoCalendarComponent, selector: "po-calendar" }, { kind: "component", type: PoFieldContainerBottomComponent, selector: "po-field-container-bottom", inputs: ["p-append-in-body", "p-disabled", "p-error-pattern", "p-error-limit", "p-help", "p-size", "p-helper", "p-show-helper"] }, { kind: "component", type: PoFieldContainerComponent, selector: "po-field-container", inputs: ["p-disabled", "p-id", "p-label", "p-help", "p-helper", "p-show-helper", "p-text-wrap", "p-optional", "p-required", "p-show-required", "p-size", "p-compact-label"] }] });
31220
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoDatetimepickerComponent, isStandalone: false, selector: "po-datetimepicker", host: { listeners: { "keyup": "onKeyup($event)", "keydown": "onKeydown($event)" } }, providers: providers$6, viewQueries: [{ propertyName: "iconDatepicker", first: true, predicate: ["iconCalendar"], descendants: true }, { propertyName: "calendarComponent", first: true, predicate: ["calendar"], descendants: true }, { propertyName: "inputEl", first: true, predicate: ["inp"], descendants: true, read: ElementRef, static: true }, { propertyName: "dialogPicker", first: true, predicate: ["dialogPicker"], descendants: true, read: ElementRef }, { propertyName: "helperEl", first: true, predicate: ["helperEl"], descendants: true, read: PoHelperComponent }, { propertyName: "datetimepickerField", first: true, predicate: ["datetimepickerField"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "@let poHelper = setHelper(label());\n<po-field-container\n [class.po-date-picker-container-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label()\"\n [p-disabled]=\"isDisabled\"\n [p-optional]=\"optional()\"\n [p-required]=\"isRequired\"\n [p-show-required]=\"showRequired()\"\n [p-helper]=\"label() ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label() ? displayAdditionalHelp : undefined\"\n [p-size]=\"hostSize\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n <div #outerContainer>\n <div\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"po-field-container-content po-field-container-content-datetimepicker\"\n >\n <div class=\"po-field-container-input\">\n <div\n #datetimepickerField\n class=\"po-datetimepicker-field po-input\"\n [class.po-input-icon-right]=\"isClean && dateTimeInputValue && !isDisabled && !isReadonly\"\n [class.po-datetimepicker-field-disabled]=\"isDisabled\"\n [class.po-datetimepicker-field-readonly]=\"isReadonly\"\n [class.po-datetimepicker-field-focused]=\"isInputFocused\"\n [attr.data-inactive-component]=\"isDisabled || isReadonly\"\n [attr.p-size]=\"hostSize\"\n (keydown)=\"onFieldClick($event)\"\n (click)=\"onFieldClick($event)\"\n >\n <div\n class=\"po-datetimepicker-field-segment\"\n [attr.data-value]=\"dateTimeInputValue || placeholderValue || ' '\"\n >\n <input\n #inp\n type=\"text\"\n class=\"po-datetimepicker-inner-input\"\n [attr.data-focused-element]=\"!isDisabled\"\n [attr.name]=\"name()\"\n [id]=\"id\"\n [autocomplete]=\"isNoAutocomplete\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"isDisabled ? '' : placeholderValue\"\n [readonly]=\"isReadonly\"\n [required]=\"isRequired\"\n [attr.data-append-in-body]=\"appendBox()\"\n (blur)=\"eventOnBlur($event)\"\n (click)=\"eventOnClick($event)\"\n (focus)=\"onInputFocus()\"\n />\n </div>\n @if (is12HourFormat && dateTimeInputValue) {\n <div\n class=\"po-datetimepicker-field-segment po-datetimepicker-field-period\"\n [attr.data-value]=\"currentPeriod\"\n >\n <input\n class=\"po-datetimepicker-segment-input po-datetimepicker-period-input\"\n type=\"text\"\n maxlength=\"2\"\n readonly\n [value]=\"currentPeriod\"\n [disabled]=\"isDisabled\"\n [attr.tabindex]=\"isDisabled || isReadonly ? -1 : 0\"\n role=\"spinbutton\"\n [attr.aria-label]=\"currentPeriod\"\n (keydown)=\"onPeriodKeydown($event)\"\n (click)=\"onPeriodClick($event)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onPeriodBlur()\"\n />\n </div>\n }\n @if (loading()) {\n <po-loading-icon [p-size]=\"mapSizeToIcon(hostSize)\"></po-loading-icon>\n } @else {\n <div class=\"po-field-icon-container-right\">\n @if (isClean && dateTimeInputValue && !isDisabled && !isReadonly) {\n <po-clean\n #iconClean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-icon-input\"\n p-icon=\"ICON_FILL_CLEAR_CONTENT\"\n [p-element-ref]=\"inputEl\"\n [p-size]=\"hostSize\"\n (p-change-event)=\"clear()\"\n (keydown.enter)=\"clear(true); $event.preventDefault()\"\n (keydown.space)=\"clear(true); $event.preventDefault()\"\n >\n </po-clean>\n <div class=\"po-button-vertical-divider\"></div>\n }\n <po-button\n #iconCalendar\n class=\"po-datetimepicker-button\"\n [class.po-button-tertiary-danger]=\"getErrorPattern()\"\n p-icon=\"ICON_CALENDAR_DOTS\"\n p-kind=\"tertiary\"\n [p-disabled]=\"isDisabled || isReadonly\"\n [p-size]=\"hostSize\"\n (p-click)=\"togglePicker(false)\"\n (keydown)=\"eventOnButtonKeydown($event)\"\n >\n </po-button>\n </div>\n }\n </div>\n </div>\n @if ((!this.label() && poHelperComponent()) || (!this.label() && poHelper.hideAdditionalHelp)) {\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"hostSize\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox()\"\n >\n </po-helper>\n }\n </div>\n\n @if (appendBox()) {\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"true\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n </ng-template>\n } @else {\n <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n }\n </div>\n\n @if (!isReadonly) {\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox()\"\n [p-help]=\"help()\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit()\"\n [p-size]=\"hostSize\"\n ></po-field-container-bottom>\n }\n</po-field-container>\n\n<ng-template #sharedCalendarContent>\n <div #dialogPicker [class.po-datetimepicker-popup-calendar]=\"!verifyMobile()\" tabindex=\"-1\" [hidden]=\"!visible\">\n @if (verifyMobile()) {\n <div class=\"po-datetimepicker-calendar-overlay\"></div>\n }\n <po-calendar\n #calendar\n [class.po-datetimepicker-calendar-mobile]=\"verifyMobile()\"\n p-mode=\"date-time\"\n [p-size]=\"hostSize\"\n [p-locale]=\"locale\"\n [p-format]=\"resolvedTimerFormat\"\n [p-min-date]=\"resolvedMinDate\"\n [p-max-date]=\"resolvedMaxDate\"\n [p-max-time]=\"maxTime()\"\n [p-min-time]=\"minTime()\"\n [p-minute-interval]=\"minuteInterval()\"\n [p-second-interval]=\"secondInterval()\"\n [p-show-seconds]=\"showSeconds()\"\n (p-change)=\"onDateChange($event)\"\n (p-change-time)=\"onTimeChange($event)\"\n (p-close)=\"onCalendarClose()\"\n (p-change-month-year)=\"adjustCalendarPosition()\"\n (p-timer-boundary-tab)=\"onTimerBoundaryTab($event)\"\n (keydown)=\"eventOnCalendarKeydown($event)\"\n ></po-calendar>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: PoCleanComponent, selector: "po-clean" }, { kind: "component", type: PoHelperComponent, selector: "po-helper" }, { kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoLoadingIconComponent, selector: "po-loading-icon", inputs: ["p-neutral-color", "p-size", "p-in-overlay"] }, { kind: "component", type: PoCalendarComponent, selector: "po-calendar" }, { kind: "component", type: PoFieldContainerBottomComponent, selector: "po-field-container-bottom", inputs: ["p-append-in-body", "p-disabled", "p-error-pattern", "p-error-limit", "p-help", "p-size", "p-helper", "p-show-helper"] }, { kind: "component", type: PoFieldContainerComponent, selector: "po-field-container", inputs: ["p-disabled", "p-id", "p-label", "p-help", "p-helper", "p-show-helper", "p-text-wrap", "p-optional", "p-required", "p-show-required", "p-size", "p-compact-label"] }] });
31290
31221
  }
31291
31222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoDatetimepickerComponent, decorators: [{
31292
31223
  type: Component,
31293
- args: [{ selector: 'po-datetimepicker', providers: providers$6, standalone: false, template: "@let poHelper = setHelper(label());\n<po-field-container\n [class.po-date-picker-container-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label()\"\n [p-disabled]=\"isDisabled\"\n [p-optional]=\"optional()\"\n [p-required]=\"isRequired\"\n [p-show-required]=\"showRequired()\"\n [p-helper]=\"label() ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label() ? displayAdditionalHelp : undefined\"\n [p-size]=\"hostSize\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n <div #outerContainer>\n <div\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"po-field-container-content po-field-container-content-datetimepicker\"\n >\n <div class=\"po-field-container-input\">\n <div\n #datetimepickerField\n class=\"po-datetimepicker-field po-input\"\n [class.po-input-icon-right]=\"isClean && dateTimeInputValue && !isDisabled && !isReadonly\"\n [class.po-datetimepicker-field-disabled]=\"isDisabled\"\n [class.po-datetimepicker-field-readonly]=\"isReadonly\"\n [class.po-datetimepicker-field-focused]=\"isInputFocused\"\n [attr.data-inactive-component]=\"isDisabled || isReadonly\"\n [attr.p-size]=\"hostSize\"\n (keydown)=\"onFieldClick($event)\"\n (click)=\"onFieldClick($event)\"\n >\n <div\n class=\"po-datetimepicker-field-segment\"\n [attr.data-value]=\"dateTimeInputValue || placeholderValue || ' '\"\n >\n <input\n #inp\n type=\"text\"\n class=\"po-datetimepicker-inner-input\"\n [attr.data-focused-element]=\"!isDisabled\"\n [attr.name]=\"name()\"\n [id]=\"id\"\n [autocomplete]=\"isNoAutocomplete\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"isDisabled ? '' : placeholderValue\"\n [readonly]=\"isReadonly\"\n [required]=\"isRequired\"\n [attr.data-append-in-body]=\"appendBox()\"\n (blur)=\"eventOnBlur($event)\"\n (click)=\"eventOnClick($event)\"\n (focus)=\"onInputFocus()\"\n />\n </div>\n @if (is12HourFormat && dateTimeInputValue) {\n <div\n class=\"po-datetimepicker-field-segment po-datetimepicker-field-period\"\n [attr.data-value]=\"currentPeriod\"\n >\n <input\n class=\"po-datetimepicker-segment-input po-datetimepicker-period-input\"\n type=\"text\"\n maxlength=\"2\"\n readonly\n [value]=\"currentPeriod\"\n [disabled]=\"isDisabled\"\n [attr.tabindex]=\"isDisabled || isReadonly ? -1 : 0\"\n role=\"spinbutton\"\n [attr.aria-label]=\"currentPeriod\"\n (keydown)=\"onPeriodKeydown($event)\"\n (click)=\"onPeriodClick($event)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onPeriodBlur()\"\n />\n </div>\n }\n @if (loading()) {\n <po-loading-icon [p-size]=\"mapSizeToIcon(hostSize)\"></po-loading-icon>\n } @else {\n <div class=\"po-field-icon-container-right\">\n @if (isClean && dateTimeInputValue && !isDisabled && !isReadonly) {\n <po-clean\n #iconClean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-icon-input\"\n p-icon=\"ICON_FILL_CLEAR_CONTENT\"\n [p-element-ref]=\"inputEl\"\n [p-size]=\"hostSize\"\n (p-change-event)=\"clear()\"\n (keydown.enter)=\"clear(true); $event.preventDefault()\"\n (keydown.space)=\"clear(true); $event.preventDefault()\"\n >\n </po-clean>\n <div class=\"po-button-vertical-divider\"></div>\n }\n <po-button\n #iconCalendar\n class=\"po-datetimepicker-button\"\n [class.po-button-tertiary-danger]=\"getErrorPattern()\"\n p-icon=\"ICON_CALENDAR_DOTS\"\n p-kind=\"tertiary\"\n [p-disabled]=\"isDisabled || isReadonly\"\n [p-size]=\"hostSize\"\n (p-click)=\"togglePicker(false)\"\n (keydown)=\"eventOnButtonKeydown($event)\"\n >\n </po-button>\n </div>\n }\n </div>\n </div>\n @if ((!this.label() && poHelperComponent()) || (!this.label() && poHelper.hideAdditionalHelp)) {\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"hostSize\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox()\"\n >\n </po-helper>\n }\n </div>\n\n @if (appendBox()) {\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"true\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n </ng-template>\n } @else {\n <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n }\n </div>\n\n @if (!isReadonly) {\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox()\"\n [p-help]=\"help()\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit()\"\n [p-size]=\"hostSize\"\n ></po-field-container-bottom>\n }\n</po-field-container>\n\n<ng-template #sharedCalendarContent>\n <div #dialogPicker [class.po-datetimepicker-popup-calendar]=\"!verifyMobile()\" tabindex=\"-1\" [hidden]=\"!visible\">\n @if (verifyMobile()) {\n <div class=\"po-datetimepicker-calendar-overlay\"></div>\n }\n <po-calendar\n #calendar\n [class.po-datetimepicker-calendar-mobile]=\"verifyMobile()\"\n p-mode=\"date-time\"\n [p-size]=\"hostSize\"\n [p-locale]=\"locale\"\n [p-format]=\"resolvedTimerFormat\"\n [p-min-date]=\"resolvedMinDate\"\n [p-max-date]=\"resolvedMaxDate\"\n [p-max-time]=\"maxTime()\"\n [p-min-time]=\"minTime()\"\n [p-minute-interval]=\"minuteInterval()\"\n [p-second-interval]=\"secondInterval()\"\n [p-show-seconds]=\"showSeconds()\"\n (p-change)=\"onDateChange($event)\"\n (p-change-time)=\"onTimeChange($event)\"\n (p-change-month-year)=\"adjustCalendarPosition()\"\n (p-timer-boundary-tab)=\"onTimerBoundaryTab($event)\"\n (keydown)=\"eventOnCalendarKeydown($event)\"\n ></po-calendar>\n </div>\n</ng-template>\n" }]
31224
+ args: [{ selector: 'po-datetimepicker', providers: providers$6, standalone: false, template: "@let poHelper = setHelper(label());\n<po-field-container\n [class.po-date-picker-container-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label()\"\n [p-disabled]=\"isDisabled\"\n [p-optional]=\"optional()\"\n [p-required]=\"isRequired\"\n [p-show-required]=\"showRequired()\"\n [p-helper]=\"label() ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label() ? displayAdditionalHelp : undefined\"\n [p-size]=\"hostSize\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n <div #outerContainer>\n <div\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"po-field-container-content po-field-container-content-datetimepicker\"\n >\n <div class=\"po-field-container-input\">\n <div\n #datetimepickerField\n class=\"po-datetimepicker-field po-input\"\n [class.po-input-icon-right]=\"isClean && dateTimeInputValue && !isDisabled && !isReadonly\"\n [class.po-datetimepicker-field-disabled]=\"isDisabled\"\n [class.po-datetimepicker-field-readonly]=\"isReadonly\"\n [class.po-datetimepicker-field-focused]=\"isInputFocused\"\n [attr.data-inactive-component]=\"isDisabled || isReadonly\"\n [attr.p-size]=\"hostSize\"\n (keydown)=\"onFieldClick($event)\"\n (click)=\"onFieldClick($event)\"\n >\n <div\n class=\"po-datetimepicker-field-segment\"\n [attr.data-value]=\"dateTimeInputValue || placeholderValue || ' '\"\n >\n <input\n #inp\n type=\"text\"\n class=\"po-datetimepicker-inner-input\"\n [attr.data-focused-element]=\"!isDisabled\"\n [attr.name]=\"name()\"\n [id]=\"id\"\n [autocomplete]=\"isNoAutocomplete\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"isDisabled ? '' : placeholderValue\"\n [readonly]=\"isReadonly\"\n [required]=\"isRequired\"\n [attr.data-append-in-body]=\"appendBox()\"\n (blur)=\"eventOnBlur($event)\"\n (click)=\"eventOnClick($event)\"\n (focus)=\"onInputFocus()\"\n />\n </div>\n @if (is12HourFormat && dateTimeInputValue) {\n <div\n class=\"po-datetimepicker-field-segment po-datetimepicker-field-period\"\n [attr.data-value]=\"currentPeriod\"\n >\n <input\n class=\"po-datetimepicker-segment-input po-datetimepicker-period-input\"\n type=\"text\"\n maxlength=\"2\"\n readonly\n [value]=\"currentPeriod\"\n [disabled]=\"isDisabled\"\n [attr.tabindex]=\"isDisabled || isReadonly ? -1 : 0\"\n role=\"spinbutton\"\n [attr.aria-label]=\"currentPeriod\"\n (keydown)=\"onPeriodKeydown($event)\"\n (click)=\"onPeriodClick($event)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onPeriodBlur()\"\n />\n </div>\n }\n @if (loading()) {\n <po-loading-icon [p-size]=\"mapSizeToIcon(hostSize)\"></po-loading-icon>\n } @else {\n <div class=\"po-field-icon-container-right\">\n @if (isClean && dateTimeInputValue && !isDisabled && !isReadonly) {\n <po-clean\n #iconClean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-icon-input\"\n p-icon=\"ICON_FILL_CLEAR_CONTENT\"\n [p-element-ref]=\"inputEl\"\n [p-size]=\"hostSize\"\n (p-change-event)=\"clear()\"\n (keydown.enter)=\"clear(true); $event.preventDefault()\"\n (keydown.space)=\"clear(true); $event.preventDefault()\"\n >\n </po-clean>\n <div class=\"po-button-vertical-divider\"></div>\n }\n <po-button\n #iconCalendar\n class=\"po-datetimepicker-button\"\n [class.po-button-tertiary-danger]=\"getErrorPattern()\"\n p-icon=\"ICON_CALENDAR_DOTS\"\n p-kind=\"tertiary\"\n [p-disabled]=\"isDisabled || isReadonly\"\n [p-size]=\"hostSize\"\n (p-click)=\"togglePicker(false)\"\n (keydown)=\"eventOnButtonKeydown($event)\"\n >\n </po-button>\n </div>\n }\n </div>\n </div>\n @if ((!this.label() && poHelperComponent()) || (!this.label() && poHelper.hideAdditionalHelp)) {\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"hostSize\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox()\"\n >\n </po-helper>\n }\n </div>\n\n @if (appendBox()) {\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"true\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n </ng-template>\n } @else {\n <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n }\n </div>\n\n @if (!isReadonly) {\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox()\"\n [p-help]=\"help()\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit()\"\n [p-size]=\"hostSize\"\n ></po-field-container-bottom>\n }\n</po-field-container>\n\n<ng-template #sharedCalendarContent>\n <div #dialogPicker [class.po-datetimepicker-popup-calendar]=\"!verifyMobile()\" tabindex=\"-1\" [hidden]=\"!visible\">\n @if (verifyMobile()) {\n <div class=\"po-datetimepicker-calendar-overlay\"></div>\n }\n <po-calendar\n #calendar\n [class.po-datetimepicker-calendar-mobile]=\"verifyMobile()\"\n p-mode=\"date-time\"\n [p-size]=\"hostSize\"\n [p-locale]=\"locale\"\n [p-format]=\"resolvedTimerFormat\"\n [p-min-date]=\"resolvedMinDate\"\n [p-max-date]=\"resolvedMaxDate\"\n [p-max-time]=\"maxTime()\"\n [p-min-time]=\"minTime()\"\n [p-minute-interval]=\"minuteInterval()\"\n [p-second-interval]=\"secondInterval()\"\n [p-show-seconds]=\"showSeconds()\"\n (p-change)=\"onDateChange($event)\"\n (p-change-time)=\"onTimeChange($event)\"\n (p-close)=\"onCalendarClose()\"\n (p-change-month-year)=\"adjustCalendarPosition()\"\n (p-timer-boundary-tab)=\"onTimerBoundaryTab($event)\"\n (keydown)=\"eventOnCalendarKeydown($event)\"\n ></po-calendar>\n </div>\n</ng-template>\n" }]
31294
31225
  }], ctorParameters: () => [], propDecorators: { iconDatepicker: [{
31295
31226
  type: ViewChild,
31296
31227
  args: ['iconCalendar']
@@ -31300,9 +31231,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImpo
31300
31231
  }], inputEl: [{
31301
31232
  type: ViewChild,
31302
31233
  args: ['inp', { read: ElementRef, static: true }]
31303
- }], iconClean: [{
31304
- type: ViewChild,
31305
- args: ['iconClean', { read: ElementRef }]
31306
31234
  }], dialogPicker: [{
31307
31235
  type: ViewChild,
31308
31236
  args: ['dialogPicker', { read: ElementRef, static: false }]
@@ -32243,6 +32171,15 @@ class PoTimepickerComponent extends PoTimepickerBaseComponent {
32243
32171
  get isPlaceholder() {
32244
32172
  return !this.hourDisplay && !this.minuteDisplay && (!this.showSeconds || !this.secondDisplay);
32245
32173
  }
32174
+ get showSeparator() {
32175
+ if (!this.placeholder?.trim()) {
32176
+ return true;
32177
+ }
32178
+ if (this.hasValue()) {
32179
+ return true;
32180
+ }
32181
+ return this.placeholder.includes(':');
32182
+ }
32246
32183
  get customPlaceholderSegments() {
32247
32184
  if (!this.placeholder?.trim()) {
32248
32185
  return [];
@@ -33280,7 +33217,7 @@ class PoTimepickerComponent extends PoTimepickerBaseComponent {
33280
33217
  multi: true
33281
33218
  },
33282
33219
  PoControlPositionService
33283
- ], viewQueries: [{ propertyName: "dialogPicker", first: true, predicate: ["dialogPicker"], descendants: true, read: ElementRef }, { propertyName: "iconTimepicker", first: true, predicate: ["iconTimepicker"], descendants: true }, { propertyName: "inputEl", first: true, predicate: ["inp"], descendants: true, read: ElementRef, static: true }, { propertyName: "minuteInputEl", first: true, predicate: ["minuteInput"], descendants: true, read: ElementRef }, { propertyName: "secondInputEl", first: true, predicate: ["secondInput"], descendants: true, read: ElementRef }, { propertyName: "timepickerFieldEl", first: true, predicate: ["timepickerField"], descendants: true, read: ElementRef }, { propertyName: "iconClean", first: true, predicate: ["iconClean"], descendants: true, read: ElementRef }, { propertyName: "helperEl", first: true, predicate: ["helperEl"], descendants: true, read: PoHelperComponent }, { propertyName: "timerComponent", first: true, predicate: ["timer"], descendants: true }, { propertyName: "periodInputEl", first: true, predicate: ["periodInput"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@let poHelper = setHelper(label);\n<po-field-container\n [class.po-timepicker-container-disabled]=\"isDisabled\"\n [p-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n [p-size]=\"size\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n <div #outerContainer>\n <div cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\" class=\"po-field-container-content\">\n <div class=\"po-field-container-input\">\n <div\n #timepickerField\n class=\"po-timepicker-field po-input\"\n [class.po-input-icon-right]=\"clean && hasValue() && !isDisabled\"\n [class.po-timepicker-field-disabled]=\"isDisabled\"\n [class.po-timepicker-field-readonly]=\"readonly\"\n [class.po-timepicker-field-focused]=\"isSegmentFocused\"\n [class.po-timepicker-field-placeholder]=\"isPlaceholder\"\n [attr.data-inactive-component]=\"isDisabled || readonly\"\n [attr.p-size]=\"size\"\n [attr.data-append-in-body]=\"appendBox\"\n [attr.aria-label]=\"label || literals.field\"\n role=\"group\"\n (click)=\"onFieldClick($event)\"\n (keydown)=\"onKeyDown($event)\"\n >\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"hourDisplay || hourPlaceholder || ' '\">\n <input\n #inp\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.hour\"\n [attr.aria-valuenow]=\"hourDisplay ? +hourDisplay : null\"\n [attr.aria-valuemin]=\"is12HourFormat ? 1 : 0\"\n [attr.aria-valuemax]=\"is12HourFormat ? 12 : 23\"\n [attr.aria-valuetext]=\"hourDisplay || null\"\n [attr.data-focused-element]=\"!isDisabled\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"isDisabled\"\n [id]=\"id\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [placeholder]=\"isDisabled ? '' : hourPlaceholder\"\n (input)=\"onSegmentInput($event, 'hour')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'hour')\"\n />\n </div>\n\n <div class=\"po-timepicker-field-separator\">:</div>\n\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"minuteDisplay || minutePlaceholder || ' '\">\n <input\n #minuteInput\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.minute\"\n [attr.aria-valuenow]=\"minuteDisplay ? +minuteDisplay : null\"\n aria-valuemin=\"0\"\n aria-valuemax=\"59\"\n [attr.aria-valuetext]=\"minuteDisplay || null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [placeholder]=\"isDisabled ? '' : minutePlaceholder\"\n (input)=\"onSegmentInput($event, 'minute')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'minute')\"\n />\n </div>\n\n @if (showSeconds) {\n <div class=\"po-timepicker-field-separator\">:</div>\n\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"secondDisplay || secondPlaceholder || ' '\">\n <input\n #secondInput\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.second\"\n [attr.aria-valuenow]=\"secondDisplay ? +secondDisplay : null\"\n aria-valuemin=\"0\"\n aria-valuemax=\"59\"\n [attr.aria-valuetext]=\"secondDisplay || null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [placeholder]=\"isDisabled ? '' : secondPlaceholder\"\n (input)=\"onSegmentInput($event, 'second')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'second')\"\n />\n </div>\n }\n\n @if (is12HourFormat) {\n <div\n class=\"po-timepicker-field-segment po-timepicker-field-period\"\n [attr.data-value]=\"periodDisplay || 'AM'\"\n >\n <input\n #periodInput\n class=\"po-timepicker-segment-input po-timepicker-period-input\"\n maxlength=\"2\"\n type=\"text\"\n [value]=\"periodDisplay || 'AM'\"\n [disabled]=\"isDisabled\"\n [attr.tabindex]=\"isDisabled || readonly ? -1 : 0\"\n role=\"spinbutton\"\n [attr.aria-label]=\"periodDisplay || 'AM'\"\n (keydown)=\"onPeriodSegmentKeydown($event)\"\n (click)=\"onPeriodSegmentClick($event)\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n />\n </div>\n }\n\n @if (loading) {\n <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n } @else {\n <div class=\"po-field-icon-container-right\">\n @if (clean && hasValue() && !isDisabled && !readonly) {\n <po-clean\n #iconClean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-icon-input\"\n p-icon=\"ICON_FILL_CLEAR_CONTENT\"\n [p-element-ref]=\"cleanElementRef\"\n [p-size]=\"size\"\n (p-change-event)=\"clear()\"\n (keydown)=\"handleCleanKeyboardTab($event)\"\n (keydown.enter)=\"clearAndFocus(); $event.preventDefault()\"\n (keydown.space)=\"clearAndFocus(); $event.preventDefault()\"\n >\n </po-clean>\n <div class=\"po-button-vertical-divider\"></div>\n }\n <po-button\n #iconTimepicker\n class=\"po-timepicker-button\"\n [class.po-button-tertiary-danger]=\"getErrorPattern()\"\n p-icon=\"ICON_CLOCK\"\n p-kind=\"tertiary\"\n [p-aria-label]=\"literals.open\"\n [p-disabled]=\"isDisabled || readonly\"\n [p-size]=\"size\"\n (keydown)=\"onKeyPress($event)\"\n (keydown.tab)=\"handleTimepickerButtonKeyboardTab($event)\"\n (p-click)=\"togglePicker(false)\"\n >\n </po-button>\n </div>\n }\n </div>\n </div>\n @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"size\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox\"\n >\n </po-helper>\n }\n </div>\n\n @if (appendBox) {\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"true\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"sharedTimerContent\"></ng-container>\n </ng-template>\n } @else {\n <ng-container *ngTemplateOutlet=\"sharedTimerContent\"></ng-container>\n }\n\n <ng-template #sharedTimerContent>\n @if (visible) {\n <div #dialogPicker [class.po-timepicker-popup-timer]=\"!verifyMobile()\" tabindex=\"-1\">\n @if (verifyMobile()) {\n <div class=\"po-timepicker-timer-overlay\"></div>\n }\n <po-timer\n #timer\n [class.po-timepicker-timer-mobile]=\"verifyMobile()\"\n [p-format]=\"format\"\n [p-locale]=\"locale\"\n [p-show-seconds]=\"showSeconds\"\n [p-minute-interval]=\"minuteInterval\"\n [p-second-interval]=\"secondInterval\"\n [p-min-time]=\"minTime\"\n [p-max-time]=\"maxTime\"\n [p-size]=\"size\"\n [p-value]=\"timeValue\"\n (p-change)=\"timerSelected($event)\"\n (p-boundary-tab)=\"onTimerBoundaryTab($event)\"\n (keydown)=\"onTimerKeyDown($event)\"\n (focusout)=\"onTimerFocusOut($event)\"\n ></po-timer>\n </div>\n }\n </ng-template>\n\n <span class=\"po-sr-only\" aria-live=\"polite\" aria-atomic=\"true\">{{ ariaLiveMessage }}</span>\n </div>\n\n @if (!readonly) {\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox\"\n [p-help]=\"help\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit\"\n [p-size]=\"size\"\n ></po-field-container-bottom>\n }\n</po-field-container>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PoFieldContainerBottomComponent, selector: "po-field-container-bottom", inputs: ["p-append-in-body", "p-disabled", "p-error-pattern", "p-error-limit", "p-help", "p-size", "p-helper", "p-show-helper"] }, { kind: "component", type: PoFieldContainerComponent, selector: "po-field-container", inputs: ["p-disabled", "p-id", "p-label", "p-help", "p-helper", "p-show-helper", "p-text-wrap", "p-optional", "p-required", "p-show-required", "p-size", "p-compact-label"] }, { kind: "directive", type: i2$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: PoCleanComponent, selector: "po-clean" }, { kind: "component", type: PoLoadingIconComponent, selector: "po-loading-icon", inputs: ["p-neutral-color", "p-size", "p-in-overlay"] }, { kind: "component", type: PoTimerComponent, selector: "po-timer", outputs: ["p-boundary-tab"] }, { kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoHelperComponent, selector: "po-helper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
33220
+ ], viewQueries: [{ propertyName: "dialogPicker", first: true, predicate: ["dialogPicker"], descendants: true, read: ElementRef }, { propertyName: "iconTimepicker", first: true, predicate: ["iconTimepicker"], descendants: true }, { propertyName: "inputEl", first: true, predicate: ["inp"], descendants: true, read: ElementRef, static: true }, { propertyName: "minuteInputEl", first: true, predicate: ["minuteInput"], descendants: true, read: ElementRef }, { propertyName: "secondInputEl", first: true, predicate: ["secondInput"], descendants: true, read: ElementRef }, { propertyName: "timepickerFieldEl", first: true, predicate: ["timepickerField"], descendants: true, read: ElementRef }, { propertyName: "iconClean", first: true, predicate: ["iconClean"], descendants: true, read: ElementRef }, { propertyName: "helperEl", first: true, predicate: ["helperEl"], descendants: true, read: PoHelperComponent }, { propertyName: "timerComponent", first: true, predicate: ["timer"], descendants: true }, { propertyName: "periodInputEl", first: true, predicate: ["periodInput"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@let poHelper = setHelper(label);\n<po-field-container\n [class.po-timepicker-container-disabled]=\"isDisabled\"\n [p-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n [p-size]=\"size\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n <div #outerContainer>\n <div cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\" class=\"po-field-container-content\">\n <div class=\"po-field-container-input\">\n <div\n #timepickerField\n class=\"po-timepicker-field po-input\"\n [class.po-input-icon-right]=\"clean && hasValue() && !isDisabled\"\n [class.po-timepicker-field-disabled]=\"isDisabled\"\n [class.po-timepicker-field-readonly]=\"readonly\"\n [class.po-timepicker-field-focused]=\"isSegmentFocused\"\n [class.po-timepicker-field-placeholder]=\"isPlaceholder\"\n [attr.data-inactive-component]=\"isDisabled || readonly\"\n [attr.p-size]=\"size\"\n [attr.data-append-in-body]=\"appendBox\"\n [attr.aria-label]=\"label || literals.field\"\n role=\"group\"\n (click)=\"onFieldClick($event)\"\n (keydown)=\"onKeyDown($event)\"\n >\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"hourDisplay || hourPlaceholder || ' '\">\n <input\n #inp\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.hour\"\n [attr.aria-valuenow]=\"hourDisplay ? +hourDisplay : null\"\n [attr.aria-valuemin]=\"is12HourFormat ? 1 : 0\"\n [attr.aria-valuemax]=\"is12HourFormat ? 12 : 23\"\n [attr.aria-valuetext]=\"hourDisplay || null\"\n [attr.data-focused-element]=\"!isDisabled\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"isDisabled\"\n [id]=\"id\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [placeholder]=\"isDisabled ? '' : hourPlaceholder\"\n (input)=\"onSegmentInput($event, 'hour')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'hour')\"\n />\n </div>\n\n <div class=\"po-timepicker-field-separator\" [class.po-timepicker-field-separator-hidden]=\"!showSeparator\">\n :\n </div>\n\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"minuteDisplay || minutePlaceholder || ' '\">\n <input\n #minuteInput\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.minute\"\n [attr.aria-valuenow]=\"minuteDisplay ? +minuteDisplay : null\"\n aria-valuemin=\"0\"\n aria-valuemax=\"59\"\n [attr.aria-valuetext]=\"minuteDisplay || null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [placeholder]=\"isDisabled ? '' : minutePlaceholder\"\n (input)=\"onSegmentInput($event, 'minute')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'minute')\"\n />\n </div>\n\n @if (showSeconds) {\n <div class=\"po-timepicker-field-separator\" [class.po-timepicker-field-separator-hidden]=\"!showSeparator\">\n :\n </div>\n\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"secondDisplay || secondPlaceholder || ' '\">\n <input\n #secondInput\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.second\"\n [attr.aria-valuenow]=\"secondDisplay ? +secondDisplay : null\"\n aria-valuemin=\"0\"\n aria-valuemax=\"59\"\n [attr.aria-valuetext]=\"secondDisplay || null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [placeholder]=\"isDisabled ? '' : secondPlaceholder\"\n (input)=\"onSegmentInput($event, 'second')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'second')\"\n />\n </div>\n }\n\n @if (is12HourFormat && hasValue()) {\n <div\n class=\"po-timepicker-field-segment po-timepicker-field-period\"\n [attr.data-value]=\"periodDisplay || 'AM'\"\n >\n <input\n #periodInput\n class=\"po-timepicker-segment-input po-timepicker-period-input\"\n maxlength=\"2\"\n type=\"text\"\n [value]=\"periodDisplay || 'AM'\"\n [disabled]=\"isDisabled\"\n [attr.tabindex]=\"isDisabled || readonly ? -1 : 0\"\n role=\"spinbutton\"\n [attr.aria-label]=\"periodDisplay || 'AM'\"\n (keydown)=\"onPeriodSegmentKeydown($event)\"\n (click)=\"onPeriodSegmentClick($event)\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n />\n </div>\n }\n\n @if (loading) {\n <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n } @else {\n <div class=\"po-field-icon-container-right\">\n @if (clean && hasValue() && !isDisabled && !readonly) {\n <po-clean\n #iconClean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-icon-input\"\n p-icon=\"ICON_FILL_CLEAR_CONTENT\"\n [p-element-ref]=\"cleanElementRef\"\n [p-size]=\"size\"\n (p-change-event)=\"clear()\"\n (keydown)=\"handleCleanKeyboardTab($event)\"\n (keydown.enter)=\"clearAndFocus(); $event.preventDefault()\"\n (keydown.space)=\"clearAndFocus(); $event.preventDefault()\"\n >\n </po-clean>\n <div class=\"po-button-vertical-divider\"></div>\n }\n <po-button\n #iconTimepicker\n class=\"po-timepicker-button\"\n [class.po-button-tertiary-danger]=\"getErrorPattern()\"\n p-icon=\"ICON_CLOCK\"\n p-kind=\"tertiary\"\n [p-aria-label]=\"literals.open\"\n [p-disabled]=\"isDisabled || readonly\"\n [p-size]=\"size\"\n (keydown)=\"onKeyPress($event)\"\n (keydown.tab)=\"handleTimepickerButtonKeyboardTab($event)\"\n (p-click)=\"togglePicker(false)\"\n >\n </po-button>\n </div>\n }\n </div>\n </div>\n @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"size\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox\"\n >\n </po-helper>\n }\n </div>\n\n @if (appendBox) {\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"true\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"sharedTimerContent\"></ng-container>\n </ng-template>\n } @else {\n <ng-container *ngTemplateOutlet=\"sharedTimerContent\"></ng-container>\n }\n\n <ng-template #sharedTimerContent>\n @if (visible) {\n <div #dialogPicker [class.po-timepicker-popup-timer]=\"!verifyMobile()\" tabindex=\"-1\">\n @if (verifyMobile()) {\n <div class=\"po-timepicker-timer-overlay\"></div>\n }\n <po-timer\n #timer\n [class.po-timepicker-timer-mobile]=\"verifyMobile()\"\n [p-format]=\"format\"\n [p-locale]=\"locale\"\n [p-show-seconds]=\"showSeconds\"\n [p-minute-interval]=\"minuteInterval\"\n [p-second-interval]=\"secondInterval\"\n [p-min-time]=\"minTime\"\n [p-max-time]=\"maxTime\"\n [p-size]=\"size\"\n [p-value]=\"timeValue\"\n (p-change)=\"timerSelected($event)\"\n (p-boundary-tab)=\"onTimerBoundaryTab($event)\"\n (keydown)=\"onTimerKeyDown($event)\"\n (focusout)=\"onTimerFocusOut($event)\"\n ></po-timer>\n </div>\n }\n </ng-template>\n\n <span class=\"po-sr-only\" aria-live=\"polite\" aria-atomic=\"true\">{{ ariaLiveMessage }}</span>\n </div>\n\n @if (!readonly) {\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox\"\n [p-help]=\"help\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit\"\n [p-size]=\"size\"\n ></po-field-container-bottom>\n }\n</po-field-container>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PoFieldContainerBottomComponent, selector: "po-field-container-bottom", inputs: ["p-append-in-body", "p-disabled", "p-error-pattern", "p-error-limit", "p-help", "p-size", "p-helper", "p-show-helper"] }, { kind: "component", type: PoFieldContainerComponent, selector: "po-field-container", inputs: ["p-disabled", "p-id", "p-label", "p-help", "p-helper", "p-show-helper", "p-text-wrap", "p-optional", "p-required", "p-show-required", "p-size", "p-compact-label"] }, { kind: "directive", type: i2$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: PoCleanComponent, selector: "po-clean" }, { kind: "component", type: PoLoadingIconComponent, selector: "po-loading-icon", inputs: ["p-neutral-color", "p-size", "p-in-overlay"] }, { kind: "component", type: PoTimerComponent, selector: "po-timer", outputs: ["p-boundary-tab"] }, { kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoHelperComponent, selector: "po-helper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
33284
33221
  }
33285
33222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoTimepickerComponent, decorators: [{
33286
33223
  type: Component,
@@ -33296,7 +33233,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImpo
33296
33233
  multi: true
33297
33234
  },
33298
33235
  PoControlPositionService
33299
- ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@let poHelper = setHelper(label);\n<po-field-container\n [class.po-timepicker-container-disabled]=\"isDisabled\"\n [p-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n [p-size]=\"size\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n <div #outerContainer>\n <div cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\" class=\"po-field-container-content\">\n <div class=\"po-field-container-input\">\n <div\n #timepickerField\n class=\"po-timepicker-field po-input\"\n [class.po-input-icon-right]=\"clean && hasValue() && !isDisabled\"\n [class.po-timepicker-field-disabled]=\"isDisabled\"\n [class.po-timepicker-field-readonly]=\"readonly\"\n [class.po-timepicker-field-focused]=\"isSegmentFocused\"\n [class.po-timepicker-field-placeholder]=\"isPlaceholder\"\n [attr.data-inactive-component]=\"isDisabled || readonly\"\n [attr.p-size]=\"size\"\n [attr.data-append-in-body]=\"appendBox\"\n [attr.aria-label]=\"label || literals.field\"\n role=\"group\"\n (click)=\"onFieldClick($event)\"\n (keydown)=\"onKeyDown($event)\"\n >\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"hourDisplay || hourPlaceholder || ' '\">\n <input\n #inp\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.hour\"\n [attr.aria-valuenow]=\"hourDisplay ? +hourDisplay : null\"\n [attr.aria-valuemin]=\"is12HourFormat ? 1 : 0\"\n [attr.aria-valuemax]=\"is12HourFormat ? 12 : 23\"\n [attr.aria-valuetext]=\"hourDisplay || null\"\n [attr.data-focused-element]=\"!isDisabled\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"isDisabled\"\n [id]=\"id\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [placeholder]=\"isDisabled ? '' : hourPlaceholder\"\n (input)=\"onSegmentInput($event, 'hour')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'hour')\"\n />\n </div>\n\n <div class=\"po-timepicker-field-separator\">:</div>\n\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"minuteDisplay || minutePlaceholder || ' '\">\n <input\n #minuteInput\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.minute\"\n [attr.aria-valuenow]=\"minuteDisplay ? +minuteDisplay : null\"\n aria-valuemin=\"0\"\n aria-valuemax=\"59\"\n [attr.aria-valuetext]=\"minuteDisplay || null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [placeholder]=\"isDisabled ? '' : minutePlaceholder\"\n (input)=\"onSegmentInput($event, 'minute')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'minute')\"\n />\n </div>\n\n @if (showSeconds) {\n <div class=\"po-timepicker-field-separator\">:</div>\n\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"secondDisplay || secondPlaceholder || ' '\">\n <input\n #secondInput\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.second\"\n [attr.aria-valuenow]=\"secondDisplay ? +secondDisplay : null\"\n aria-valuemin=\"0\"\n aria-valuemax=\"59\"\n [attr.aria-valuetext]=\"secondDisplay || null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [placeholder]=\"isDisabled ? '' : secondPlaceholder\"\n (input)=\"onSegmentInput($event, 'second')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'second')\"\n />\n </div>\n }\n\n @if (is12HourFormat) {\n <div\n class=\"po-timepicker-field-segment po-timepicker-field-period\"\n [attr.data-value]=\"periodDisplay || 'AM'\"\n >\n <input\n #periodInput\n class=\"po-timepicker-segment-input po-timepicker-period-input\"\n maxlength=\"2\"\n type=\"text\"\n [value]=\"periodDisplay || 'AM'\"\n [disabled]=\"isDisabled\"\n [attr.tabindex]=\"isDisabled || readonly ? -1 : 0\"\n role=\"spinbutton\"\n [attr.aria-label]=\"periodDisplay || 'AM'\"\n (keydown)=\"onPeriodSegmentKeydown($event)\"\n (click)=\"onPeriodSegmentClick($event)\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n />\n </div>\n }\n\n @if (loading) {\n <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n } @else {\n <div class=\"po-field-icon-container-right\">\n @if (clean && hasValue() && !isDisabled && !readonly) {\n <po-clean\n #iconClean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-icon-input\"\n p-icon=\"ICON_FILL_CLEAR_CONTENT\"\n [p-element-ref]=\"cleanElementRef\"\n [p-size]=\"size\"\n (p-change-event)=\"clear()\"\n (keydown)=\"handleCleanKeyboardTab($event)\"\n (keydown.enter)=\"clearAndFocus(); $event.preventDefault()\"\n (keydown.space)=\"clearAndFocus(); $event.preventDefault()\"\n >\n </po-clean>\n <div class=\"po-button-vertical-divider\"></div>\n }\n <po-button\n #iconTimepicker\n class=\"po-timepicker-button\"\n [class.po-button-tertiary-danger]=\"getErrorPattern()\"\n p-icon=\"ICON_CLOCK\"\n p-kind=\"tertiary\"\n [p-aria-label]=\"literals.open\"\n [p-disabled]=\"isDisabled || readonly\"\n [p-size]=\"size\"\n (keydown)=\"onKeyPress($event)\"\n (keydown.tab)=\"handleTimepickerButtonKeyboardTab($event)\"\n (p-click)=\"togglePicker(false)\"\n >\n </po-button>\n </div>\n }\n </div>\n </div>\n @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"size\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox\"\n >\n </po-helper>\n }\n </div>\n\n @if (appendBox) {\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"true\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"sharedTimerContent\"></ng-container>\n </ng-template>\n } @else {\n <ng-container *ngTemplateOutlet=\"sharedTimerContent\"></ng-container>\n }\n\n <ng-template #sharedTimerContent>\n @if (visible) {\n <div #dialogPicker [class.po-timepicker-popup-timer]=\"!verifyMobile()\" tabindex=\"-1\">\n @if (verifyMobile()) {\n <div class=\"po-timepicker-timer-overlay\"></div>\n }\n <po-timer\n #timer\n [class.po-timepicker-timer-mobile]=\"verifyMobile()\"\n [p-format]=\"format\"\n [p-locale]=\"locale\"\n [p-show-seconds]=\"showSeconds\"\n [p-minute-interval]=\"minuteInterval\"\n [p-second-interval]=\"secondInterval\"\n [p-min-time]=\"minTime\"\n [p-max-time]=\"maxTime\"\n [p-size]=\"size\"\n [p-value]=\"timeValue\"\n (p-change)=\"timerSelected($event)\"\n (p-boundary-tab)=\"onTimerBoundaryTab($event)\"\n (keydown)=\"onTimerKeyDown($event)\"\n (focusout)=\"onTimerFocusOut($event)\"\n ></po-timer>\n </div>\n }\n </ng-template>\n\n <span class=\"po-sr-only\" aria-live=\"polite\" aria-atomic=\"true\">{{ ariaLiveMessage }}</span>\n </div>\n\n @if (!readonly) {\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox\"\n [p-help]=\"help\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit\"\n [p-size]=\"size\"\n ></po-field-container-bottom>\n }\n</po-field-container>\n" }]
33236
+ ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@let poHelper = setHelper(label);\n<po-field-container\n [class.po-timepicker-container-disabled]=\"isDisabled\"\n [p-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n [p-size]=\"size\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n <div #outerContainer>\n <div cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\" class=\"po-field-container-content\">\n <div class=\"po-field-container-input\">\n <div\n #timepickerField\n class=\"po-timepicker-field po-input\"\n [class.po-input-icon-right]=\"clean && hasValue() && !isDisabled\"\n [class.po-timepicker-field-disabled]=\"isDisabled\"\n [class.po-timepicker-field-readonly]=\"readonly\"\n [class.po-timepicker-field-focused]=\"isSegmentFocused\"\n [class.po-timepicker-field-placeholder]=\"isPlaceholder\"\n [attr.data-inactive-component]=\"isDisabled || readonly\"\n [attr.p-size]=\"size\"\n [attr.data-append-in-body]=\"appendBox\"\n [attr.aria-label]=\"label || literals.field\"\n role=\"group\"\n (click)=\"onFieldClick($event)\"\n (keydown)=\"onKeyDown($event)\"\n >\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"hourDisplay || hourPlaceholder || ' '\">\n <input\n #inp\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.hour\"\n [attr.aria-valuenow]=\"hourDisplay ? +hourDisplay : null\"\n [attr.aria-valuemin]=\"is12HourFormat ? 1 : 0\"\n [attr.aria-valuemax]=\"is12HourFormat ? 12 : 23\"\n [attr.aria-valuetext]=\"hourDisplay || null\"\n [attr.data-focused-element]=\"!isDisabled\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"isDisabled\"\n [id]=\"id\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [placeholder]=\"isDisabled ? '' : hourPlaceholder\"\n (input)=\"onSegmentInput($event, 'hour')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'hour')\"\n />\n </div>\n\n <div class=\"po-timepicker-field-separator\" [class.po-timepicker-field-separator-hidden]=\"!showSeparator\">\n :\n </div>\n\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"minuteDisplay || minutePlaceholder || ' '\">\n <input\n #minuteInput\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.minute\"\n [attr.aria-valuenow]=\"minuteDisplay ? +minuteDisplay : null\"\n aria-valuemin=\"0\"\n aria-valuemax=\"59\"\n [attr.aria-valuetext]=\"minuteDisplay || null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [placeholder]=\"isDisabled ? '' : minutePlaceholder\"\n (input)=\"onSegmentInput($event, 'minute')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'minute')\"\n />\n </div>\n\n @if (showSeconds) {\n <div class=\"po-timepicker-field-separator\" [class.po-timepicker-field-separator-hidden]=\"!showSeparator\">\n :\n </div>\n\n <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"secondDisplay || secondPlaceholder || ' '\">\n <input\n #secondInput\n class=\"po-timepicker-segment-input\"\n maxlength=\"2\"\n type=\"text\"\n inputmode=\"numeric\"\n role=\"spinbutton\"\n [attr.aria-label]=\"literals.second\"\n [attr.aria-valuenow]=\"secondDisplay ? +secondDisplay : null\"\n aria-valuemin=\"0\"\n aria-valuemax=\"59\"\n [attr.aria-valuetext]=\"secondDisplay || null\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [placeholder]=\"isDisabled ? '' : secondPlaceholder\"\n (input)=\"onSegmentInput($event, 'second')\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n (click)=\"eventOnClick($event)\"\n (keydown)=\"onSegmentKeydown($event, 'second')\"\n />\n </div>\n }\n\n @if (is12HourFormat && hasValue()) {\n <div\n class=\"po-timepicker-field-segment po-timepicker-field-period\"\n [attr.data-value]=\"periodDisplay || 'AM'\"\n >\n <input\n #periodInput\n class=\"po-timepicker-segment-input po-timepicker-period-input\"\n maxlength=\"2\"\n type=\"text\"\n [value]=\"periodDisplay || 'AM'\"\n [disabled]=\"isDisabled\"\n [attr.tabindex]=\"isDisabled || readonly ? -1 : 0\"\n role=\"spinbutton\"\n [attr.aria-label]=\"periodDisplay || 'AM'\"\n (keydown)=\"onPeriodSegmentKeydown($event)\"\n (click)=\"onPeriodSegmentClick($event)\"\n (blur)=\"onSegmentBlur($event)\"\n (focus)=\"onSegmentFocus()\"\n />\n </div>\n }\n\n @if (loading) {\n <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n } @else {\n <div class=\"po-field-icon-container-right\">\n @if (clean && hasValue() && !isDisabled && !readonly) {\n <po-clean\n #iconClean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-icon-input\"\n p-icon=\"ICON_FILL_CLEAR_CONTENT\"\n [p-element-ref]=\"cleanElementRef\"\n [p-size]=\"size\"\n (p-change-event)=\"clear()\"\n (keydown)=\"handleCleanKeyboardTab($event)\"\n (keydown.enter)=\"clearAndFocus(); $event.preventDefault()\"\n (keydown.space)=\"clearAndFocus(); $event.preventDefault()\"\n >\n </po-clean>\n <div class=\"po-button-vertical-divider\"></div>\n }\n <po-button\n #iconTimepicker\n class=\"po-timepicker-button\"\n [class.po-button-tertiary-danger]=\"getErrorPattern()\"\n p-icon=\"ICON_CLOCK\"\n p-kind=\"tertiary\"\n [p-aria-label]=\"literals.open\"\n [p-disabled]=\"isDisabled || readonly\"\n [p-size]=\"size\"\n (keydown)=\"onKeyPress($event)\"\n (keydown.tab)=\"handleTimepickerButtonKeyboardTab($event)\"\n (p-click)=\"togglePicker(false)\"\n >\n </po-button>\n </div>\n }\n </div>\n </div>\n @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"size\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox\"\n >\n </po-helper>\n }\n </div>\n\n @if (appendBox) {\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"true\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"sharedTimerContent\"></ng-container>\n </ng-template>\n } @else {\n <ng-container *ngTemplateOutlet=\"sharedTimerContent\"></ng-container>\n }\n\n <ng-template #sharedTimerContent>\n @if (visible) {\n <div #dialogPicker [class.po-timepicker-popup-timer]=\"!verifyMobile()\" tabindex=\"-1\">\n @if (verifyMobile()) {\n <div class=\"po-timepicker-timer-overlay\"></div>\n }\n <po-timer\n #timer\n [class.po-timepicker-timer-mobile]=\"verifyMobile()\"\n [p-format]=\"format\"\n [p-locale]=\"locale\"\n [p-show-seconds]=\"showSeconds\"\n [p-minute-interval]=\"minuteInterval\"\n [p-second-interval]=\"secondInterval\"\n [p-min-time]=\"minTime\"\n [p-max-time]=\"maxTime\"\n [p-size]=\"size\"\n [p-value]=\"timeValue\"\n (p-change)=\"timerSelected($event)\"\n (p-boundary-tab)=\"onTimerBoundaryTab($event)\"\n (keydown)=\"onTimerKeyDown($event)\"\n (focusout)=\"onTimerFocusOut($event)\"\n ></po-timer>\n </div>\n }\n </ng-template>\n\n <span class=\"po-sr-only\" aria-live=\"polite\" aria-atomic=\"true\">{{ ariaLiveMessage }}</span>\n </div>\n\n @if (!readonly) {\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox\"\n [p-help]=\"help\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit\"\n [p-size]=\"size\"\n ></po-field-container-bottom>\n }\n</po-field-container>\n" }]
33300
33237
  }], ctorParameters: () => [], propDecorators: { dialogPicker: [{
33301
33238
  type: ViewChild,
33302
33239
  args: ['dialogPicker', { read: ElementRef, static: false }]
@@ -41335,11 +41272,11 @@ class PoTableDetailComponent {
41335
41272
  }
41336
41273
  }
41337
41274
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoTableDetailComponent, deps: [{ token: i1.DecimalPipe }], target: i0.ɵɵFactoryTarget.Component });
41338
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoTableDetailComponent, isStandalone: false, selector: "po-table-detail", inputs: { componentsSize: ["p-components-size", "componentsSize"], items: ["p-items", "items"], parentRow: ["p-parent-row", "parentRow"], isSelectable: ["p-selectable", "isSelectable"], detail: ["p-detail", "detail"] }, outputs: { selectRow: "p-select-row" }, ngImport: i0, template: "<table class=\"po-table-master-detail\">\n @if (typeHeaderTop) {\n <thead>\n <tr>\n @if (isSelectable) {\n <th class=\"po-table-header po-table-column-selectable\"></th>\n }\n <th class=\"po-table-header po-table-header-column po-table-header-master-detail\"></th>\n @for (detail of detail.columns; track detail) {\n <th class=\"po-table-header po-table-header-ellipsis\">\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-flex-right]=\"detail.type === 'currency' || detail.type === 'number'\"\n >\n {{ getColumnTitleLabel(detail) }}\n </div>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody>\n @for (item of items; track item) {\n <tr class=\"po-table-detail-row\" [class.po-table-row-active]=\"item.$selected && isSelectable\">\n @if (isSelectable) {\n <td class=\"po-table-column-master-detail-space-checkbox\"></td>\n <td class=\"po-table-column po-table-column-selectable\">\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"onSelectRow(item)\"\n [p-checkboxValue]=\"item.$selected\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n </td>\n } @else {\n <td class=\"po-table-column-master-detail-space\"></td>\n }\n @for (detail of detailColumns; track detail) {\n <td\n class=\"po-table-column-master-detail po-table-master-detail-label\"\n (click)=\"isSelectable ? onSelectRow(item) : 'javascript:;'\"\n [class.po-table-column-right]=\"typeHeaderTop && (detail.type === 'currency' || detail.type === 'number')\"\n >\n @if (typeHeaderInline) {\n <strong> {{ getColumnTitleLabel(detail) }}: </strong>\n }\n @switch (detail.type) {\n @case ('currency') {\n <span>{{ getDetailData(item, detail) | currency: detail.format : 'symbol' : '1.2-2' }}</span>\n }\n @case ('date') {\n <span>{{ getDetailData(item, detail) | date: detail.format || 'dd/MM/yyyy' }}</span>\n }\n @case ('time') {\n <span>{{ getDetailData(item, detail) | po_time: detail.format || 'HH:mm:ss.ffffff' }}</span>\n }\n @case ('dateTime') {\n <span>\n {{ getDetailData(item, detail) | date: detail.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>{{ formatNumberDetail(getDetailData(item, detail), detail.format) }}</span>\n }\n @default {\n <span>{{ getDetailData(item, detail) }}</span>\n }\n }\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n", dependencies: [{ kind: "component", type: PoCheckboxComponent, selector: "po-checkbox" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: PoTimePipe, name: "po_time" }] });
41275
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoTableDetailComponent, isStandalone: false, selector: "po-table-detail", inputs: { componentsSize: ["p-components-size", "componentsSize"], items: ["p-items", "items"], parentRow: ["p-parent-row", "parentRow"], isSelectable: ["p-selectable", "isSelectable"], detail: ["p-detail", "detail"] }, outputs: { selectRow: "p-select-row" }, ngImport: i0, template: "<table class=\"po-table-master-detail\">\n @if (typeHeaderTop) {\n <thead>\n <tr>\n @if (isSelectable) {\n <th class=\"po-table-header po-table-column-selectable\"></th>\n }\n <th class=\"po-table-header po-table-header-column po-table-header-master-detail\"></th>\n @for (detail of detail.columns; track $index) {\n <th class=\"po-table-header po-table-header-ellipsis\">\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-flex-right]=\"detail.type === 'currency' || detail.type === 'number'\"\n >\n {{ getColumnTitleLabel(detail) }}\n </div>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody>\n @for (item of items; track $index) {\n <tr class=\"po-table-detail-row\" [class.po-table-row-active]=\"item.$selected && isSelectable\">\n @if (isSelectable) {\n <td class=\"po-table-column-master-detail-space-checkbox\"></td>\n <td class=\"po-table-column po-table-column-selectable\">\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"onSelectRow(item)\"\n [p-checkboxValue]=\"item.$selected\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n </td>\n } @else {\n <td class=\"po-table-column-master-detail-space\"></td>\n }\n @for (detail of detailColumns; track $index) {\n <td\n class=\"po-table-column-master-detail po-table-master-detail-label\"\n (click)=\"isSelectable ? onSelectRow(item) : 'javascript:;'\"\n [class.po-table-column-right]=\"typeHeaderTop && (detail.type === 'currency' || detail.type === 'number')\"\n >\n @if (typeHeaderInline) {\n <strong> {{ getColumnTitleLabel(detail) }}: </strong>\n }\n @switch (detail.type) {\n @case ('currency') {\n <span>{{ getDetailData(item, detail) | currency: detail.format : 'symbol' : '1.2-2' }}</span>\n }\n @case ('date') {\n <span>{{ getDetailData(item, detail) | date: detail.format || 'dd/MM/yyyy' }}</span>\n }\n @case ('time') {\n <span>{{ getDetailData(item, detail) | po_time: detail.format || 'HH:mm:ss.ffffff' }}</span>\n }\n @case ('dateTime') {\n <span>\n {{ getDetailData(item, detail) | date: detail.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>{{ formatNumberDetail(getDetailData(item, detail), detail.format) }}</span>\n }\n @default {\n <span>{{ getDetailData(item, detail) }}</span>\n }\n }\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n", dependencies: [{ kind: "component", type: PoCheckboxComponent, selector: "po-checkbox" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: PoTimePipe, name: "po_time" }] });
41339
41276
  }
41340
41277
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoTableDetailComponent, decorators: [{
41341
41278
  type: Component,
41342
- args: [{ selector: 'po-table-detail', standalone: false, template: "<table class=\"po-table-master-detail\">\n @if (typeHeaderTop) {\n <thead>\n <tr>\n @if (isSelectable) {\n <th class=\"po-table-header po-table-column-selectable\"></th>\n }\n <th class=\"po-table-header po-table-header-column po-table-header-master-detail\"></th>\n @for (detail of detail.columns; track detail) {\n <th class=\"po-table-header po-table-header-ellipsis\">\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-flex-right]=\"detail.type === 'currency' || detail.type === 'number'\"\n >\n {{ getColumnTitleLabel(detail) }}\n </div>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody>\n @for (item of items; track item) {\n <tr class=\"po-table-detail-row\" [class.po-table-row-active]=\"item.$selected && isSelectable\">\n @if (isSelectable) {\n <td class=\"po-table-column-master-detail-space-checkbox\"></td>\n <td class=\"po-table-column po-table-column-selectable\">\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"onSelectRow(item)\"\n [p-checkboxValue]=\"item.$selected\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n </td>\n } @else {\n <td class=\"po-table-column-master-detail-space\"></td>\n }\n @for (detail of detailColumns; track detail) {\n <td\n class=\"po-table-column-master-detail po-table-master-detail-label\"\n (click)=\"isSelectable ? onSelectRow(item) : 'javascript:;'\"\n [class.po-table-column-right]=\"typeHeaderTop && (detail.type === 'currency' || detail.type === 'number')\"\n >\n @if (typeHeaderInline) {\n <strong> {{ getColumnTitleLabel(detail) }}: </strong>\n }\n @switch (detail.type) {\n @case ('currency') {\n <span>{{ getDetailData(item, detail) | currency: detail.format : 'symbol' : '1.2-2' }}</span>\n }\n @case ('date') {\n <span>{{ getDetailData(item, detail) | date: detail.format || 'dd/MM/yyyy' }}</span>\n }\n @case ('time') {\n <span>{{ getDetailData(item, detail) | po_time: detail.format || 'HH:mm:ss.ffffff' }}</span>\n }\n @case ('dateTime') {\n <span>\n {{ getDetailData(item, detail) | date: detail.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>{{ formatNumberDetail(getDetailData(item, detail), detail.format) }}</span>\n }\n @default {\n <span>{{ getDetailData(item, detail) }}</span>\n }\n }\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n" }]
41279
+ args: [{ selector: 'po-table-detail', standalone: false, template: "<table class=\"po-table-master-detail\">\n @if (typeHeaderTop) {\n <thead>\n <tr>\n @if (isSelectable) {\n <th class=\"po-table-header po-table-column-selectable\"></th>\n }\n <th class=\"po-table-header po-table-header-column po-table-header-master-detail\"></th>\n @for (detail of detail.columns; track $index) {\n <th class=\"po-table-header po-table-header-ellipsis\">\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-flex-right]=\"detail.type === 'currency' || detail.type === 'number'\"\n >\n {{ getColumnTitleLabel(detail) }}\n </div>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody>\n @for (item of items; track $index) {\n <tr class=\"po-table-detail-row\" [class.po-table-row-active]=\"item.$selected && isSelectable\">\n @if (isSelectable) {\n <td class=\"po-table-column-master-detail-space-checkbox\"></td>\n <td class=\"po-table-column po-table-column-selectable\">\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"onSelectRow(item)\"\n [p-checkboxValue]=\"item.$selected\"\n [p-size]=\"componentsSize\"\n ></po-checkbox>\n </td>\n } @else {\n <td class=\"po-table-column-master-detail-space\"></td>\n }\n @for (detail of detailColumns; track $index) {\n <td\n class=\"po-table-column-master-detail po-table-master-detail-label\"\n (click)=\"isSelectable ? onSelectRow(item) : 'javascript:;'\"\n [class.po-table-column-right]=\"typeHeaderTop && (detail.type === 'currency' || detail.type === 'number')\"\n >\n @if (typeHeaderInline) {\n <strong> {{ getColumnTitleLabel(detail) }}: </strong>\n }\n @switch (detail.type) {\n @case ('currency') {\n <span>{{ getDetailData(item, detail) | currency: detail.format : 'symbol' : '1.2-2' }}</span>\n }\n @case ('date') {\n <span>{{ getDetailData(item, detail) | date: detail.format || 'dd/MM/yyyy' }}</span>\n }\n @case ('time') {\n <span>{{ getDetailData(item, detail) | po_time: detail.format || 'HH:mm:ss.ffffff' }}</span>\n }\n @case ('dateTime') {\n <span>\n {{ getDetailData(item, detail) | date: detail.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n }\n @case ('number') {\n <span>{{ formatNumberDetail(getDetailData(item, detail), detail.format) }}</span>\n }\n @default {\n <span>{{ getDetailData(item, detail) }}</span>\n }\n }\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n" }]
41343
41280
  }], ctorParameters: () => [{ type: i1.DecimalPipe }], propDecorators: { componentsSize: [{
41344
41281
  type: Input,
41345
41282
  args: ['p-components-size']
@@ -41414,11 +41351,11 @@ class PoTableShowSubtitleComponent {
41414
41351
  /** Define o tamanho dos elementos que possuem `p-size` dentro do componente. */
41415
41352
  componentsSize;
41416
41353
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoTableShowSubtitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41417
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoTableShowSubtitleComponent, isStandalone: false, selector: "po-table-show-subtitle", inputs: { subtitles: ["p-subtitles", "subtitles"], literals: ["p-literals", "literals"], componentsSize: ["p-components-size", "componentsSize"] }, ngImport: i0, template: "<div class=\"po-table-footer-show-subtitle\" (click)=\"modal.open()\">\n <div class=\"po-table-footer-show-subtitle-container\">\n <span class=\"po-table-show-subtitle\">{{ literals.seeCompleteSubtitle }}</span>\n </div>\n</div>\n\n<po-modal #modal p-size=\"sm\" [p-title]=\"literals.completeSubtitle\" [p-components-size]=\"componentsSize\">\n @for (subtitle of subtitles; track subtitle) {\n <div class=\"po-table-subtitle-footer-modal po-row\">\n <po-table-subtitle-circle p-hide-title=\"true\" [p-subtitle]=\"subtitle\"> </po-table-subtitle-circle>\n <span class=\"po-table-subtitle-text\">{{ subtitle.label }}</span>\n </div>\n }\n</po-modal>\n", dependencies: [{ kind: "component", type: PoModalComponent, selector: "po-modal" }, { kind: "component", type: PoTableSubtitleCircleComponent, selector: "po-table-subtitle-circle", inputs: ["p-hide-title", "p-subtitle"] }] });
41354
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoTableShowSubtitleComponent, isStandalone: false, selector: "po-table-show-subtitle", inputs: { subtitles: ["p-subtitles", "subtitles"], literals: ["p-literals", "literals"], componentsSize: ["p-components-size", "componentsSize"] }, ngImport: i0, template: "<div class=\"po-table-footer-show-subtitle\" (click)=\"modal.open()\">\n <div class=\"po-table-footer-show-subtitle-container\">\n <span class=\"po-table-show-subtitle\">{{ literals.seeCompleteSubtitle }}</span>\n </div>\n</div>\n\n<po-modal #modal p-size=\"sm\" [p-title]=\"literals.completeSubtitle\" [p-components-size]=\"componentsSize\">\n @for (subtitle of subtitles; track $index) {\n <div class=\"po-table-subtitle-footer-modal po-row\">\n <po-table-subtitle-circle p-hide-title=\"true\" [p-subtitle]=\"subtitle\"> </po-table-subtitle-circle>\n <span class=\"po-table-subtitle-text\">{{ subtitle.label }}</span>\n </div>\n }\n</po-modal>\n", dependencies: [{ kind: "component", type: PoModalComponent, selector: "po-modal" }, { kind: "component", type: PoTableSubtitleCircleComponent, selector: "po-table-subtitle-circle", inputs: ["p-hide-title", "p-subtitle"] }] });
41418
41355
  }
41419
41356
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoTableShowSubtitleComponent, decorators: [{
41420
41357
  type: Component,
41421
- args: [{ selector: 'po-table-show-subtitle', standalone: false, template: "<div class=\"po-table-footer-show-subtitle\" (click)=\"modal.open()\">\n <div class=\"po-table-footer-show-subtitle-container\">\n <span class=\"po-table-show-subtitle\">{{ literals.seeCompleteSubtitle }}</span>\n </div>\n</div>\n\n<po-modal #modal p-size=\"sm\" [p-title]=\"literals.completeSubtitle\" [p-components-size]=\"componentsSize\">\n @for (subtitle of subtitles; track subtitle) {\n <div class=\"po-table-subtitle-footer-modal po-row\">\n <po-table-subtitle-circle p-hide-title=\"true\" [p-subtitle]=\"subtitle\"> </po-table-subtitle-circle>\n <span class=\"po-table-subtitle-text\">{{ subtitle.label }}</span>\n </div>\n }\n</po-modal>\n" }]
41358
+ args: [{ selector: 'po-table-show-subtitle', standalone: false, template: "<div class=\"po-table-footer-show-subtitle\" (click)=\"modal.open()\">\n <div class=\"po-table-footer-show-subtitle-container\">\n <span class=\"po-table-show-subtitle\">{{ literals.seeCompleteSubtitle }}</span>\n </div>\n</div>\n\n<po-modal #modal p-size=\"sm\" [p-title]=\"literals.completeSubtitle\" [p-components-size]=\"componentsSize\">\n @for (subtitle of subtitles; track $index) {\n <div class=\"po-table-subtitle-footer-modal po-row\">\n <po-table-subtitle-circle p-hide-title=\"true\" [p-subtitle]=\"subtitle\"> </po-table-subtitle-circle>\n <span class=\"po-table-subtitle-text\">{{ subtitle.label }}</span>\n </div>\n }\n</po-modal>\n" }]
41422
41359
  }], propDecorators: { subtitles: [{
41423
41360
  type: Input,
41424
41361
  args: ['p-subtitles']
@@ -41496,11 +41433,11 @@ class PoTableSubtitleFooterComponent {
41496
41433
  this.showSubtitle = itemsSize > containerSize;
41497
41434
  }
41498
41435
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoTableSubtitleFooterComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
41499
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoTableSubtitleFooterComponent, isStandalone: false, selector: "po-table-subtitle-footer", inputs: { componentsSize: ["p-components-size", "componentsSize"], literals: ["p-literals", "literals"], subtitles: ["p-subtitles", "subtitles"] }, ngImport: i0, template: "<div class=\"po-table-subtitle-footer-container\">\n @for (subtitle of subtitles; track subtitle) {\n <div class=\"po-table-subtitle-footer\">\n <po-table-subtitle-circle p-hide-title=\"true\" [p-subtitle]=\"subtitle\"> </po-table-subtitle-circle>\n <span class=\"po-table-subtitle-text\">{{ subtitle.label }}</span>\n </div>\n }\n @if (showSubtitle) {\n <po-table-show-subtitle [p-components-size]=\"componentsSize\" [p-literals]=\"literals\" [p-subtitles]=\"subtitles\">\n </po-table-show-subtitle>\n }\n</div>\n", dependencies: [{ kind: "component", type: PoTableShowSubtitleComponent, selector: "po-table-show-subtitle", inputs: ["p-subtitles", "p-literals", "p-components-size"] }, { kind: "component", type: PoTableSubtitleCircleComponent, selector: "po-table-subtitle-circle", inputs: ["p-hide-title", "p-subtitle"] }] });
41436
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoTableSubtitleFooterComponent, isStandalone: false, selector: "po-table-subtitle-footer", inputs: { componentsSize: ["p-components-size", "componentsSize"], literals: ["p-literals", "literals"], subtitles: ["p-subtitles", "subtitles"] }, ngImport: i0, template: "<div class=\"po-table-subtitle-footer-container\">\n @for (subtitle of subtitles; track $index) {\n <div class=\"po-table-subtitle-footer\">\n <po-table-subtitle-circle p-hide-title=\"true\" [p-subtitle]=\"subtitle\"> </po-table-subtitle-circle>\n <span class=\"po-table-subtitle-text\">{{ subtitle.label }}</span>\n </div>\n }\n @if (showSubtitle) {\n <po-table-show-subtitle [p-components-size]=\"componentsSize\" [p-literals]=\"literals\" [p-subtitles]=\"subtitles\">\n </po-table-show-subtitle>\n }\n</div>\n", dependencies: [{ kind: "component", type: PoTableShowSubtitleComponent, selector: "po-table-show-subtitle", inputs: ["p-subtitles", "p-literals", "p-components-size"] }, { kind: "component", type: PoTableSubtitleCircleComponent, selector: "po-table-subtitle-circle", inputs: ["p-hide-title", "p-subtitle"] }] });
41500
41437
  }
41501
41438
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoTableSubtitleFooterComponent, decorators: [{
41502
41439
  type: Component,
41503
- args: [{ selector: 'po-table-subtitle-footer', standalone: false, template: "<div class=\"po-table-subtitle-footer-container\">\n @for (subtitle of subtitles; track subtitle) {\n <div class=\"po-table-subtitle-footer\">\n <po-table-subtitle-circle p-hide-title=\"true\" [p-subtitle]=\"subtitle\"> </po-table-subtitle-circle>\n <span class=\"po-table-subtitle-text\">{{ subtitle.label }}</span>\n </div>\n }\n @if (showSubtitle) {\n <po-table-show-subtitle [p-components-size]=\"componentsSize\" [p-literals]=\"literals\" [p-subtitles]=\"subtitles\">\n </po-table-show-subtitle>\n }\n</div>\n" }]
41440
+ args: [{ selector: 'po-table-subtitle-footer', standalone: false, template: "<div class=\"po-table-subtitle-footer-container\">\n @for (subtitle of subtitles; track $index) {\n <div class=\"po-table-subtitle-footer\">\n <po-table-subtitle-circle p-hide-title=\"true\" [p-subtitle]=\"subtitle\"> </po-table-subtitle-circle>\n <span class=\"po-table-subtitle-text\">{{ subtitle.label }}</span>\n </div>\n }\n @if (showSubtitle) {\n <po-table-show-subtitle [p-components-size]=\"componentsSize\" [p-literals]=\"literals\" [p-subtitles]=\"subtitles\">\n </po-table-show-subtitle>\n }\n</div>\n" }]
41504
41441
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { componentsSize: [{
41505
41442
  type: Input,
41506
41443
  args: ['p-components-size']
@@ -45239,6 +45176,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImpo
45239
45176
  * <file name="sample-po-input-reactive-form/sample-po-input-reactive-form.component.html"> </file>
45240
45177
  * <file name="sample-po-input-reactive-form/sample-po-input-reactive-form.component.ts"> </file>
45241
45178
  * </example>
45179
+ *
45180
+ * <example name="po-input-mask-dynamic" title="PO Input - Dynamic Mask (CPF/CNPJ)">
45181
+ * <file name="sample-po-input-mask-dynamic/sample-po-input-mask-dynamic.component.html"> </file>
45182
+ * <file name="sample-po-input-mask-dynamic/sample-po-input-mask-dynamic.component.ts"> </file>
45183
+ * <file name="sample-po-input-mask-dynamic/document-mask.ts"> </file>
45184
+ * </example>
45242
45185
  */
45243
45186
  class PoInputComponent extends PoInputGeneric {
45244
45187
  inp;
@@ -47725,11 +47668,11 @@ class PoLookupComponent extends PoLookupBaseComponent {
47725
47668
  });
47726
47669
  }
47727
47670
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoLookupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
47728
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoLookupComponent, isStandalone: false, selector: "po-lookup", providers: providers$2, viewQueries: [{ propertyName: "helperEl", first: true, predicate: ["helperEl"], descendants: true, read: PoHelperComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@let poHelper = setHelper(label, additionalHelpTooltip);\n@let needsHelper = !label && (poHelperComponent() || poHelper.hideAdditionalHelp);\n\n<ng-template #poHelperTemplate>\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"size\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox\"\n ></po-helper>\n</ng-template>\n\n<po-field-container\n [p-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n [p-size]=\"size\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n @if (!disclaimers.length) {\n <div\n class=\"po-field-container-content po-lookup\"\n [class.po-lookup-disabled]=\"disabled\"\n [class.po-lookup-loading]=\"loading\"\n >\n <div class=\"po-field-container-content-helper-wrapper\">\n <div class=\"po-field-container-input\">\n <input\n #inp\n class=\"po-lookup-input po-lookup-input-trigger\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [id]=\"id\"\n type=\"text\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n (blur)=\"searchEvent()\"\n (keydown)=\"onKeyDown($event)\"\n />\n <div class=\"po-field-icon-container-right po-lookup-buttons\">\n @if (loading) {\n <div class=\"po-lookup-button po-lookup-button-loading\">\n <po-loading-icon class=\"po-lookup-loading-icon\" [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n </div>\n } @else {\n @if (clean && !isDisabled && !!inp.value) {\n <po-clean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-lookup-button po-lookup-button-clean\"\n [class.po-lookup-button-aa]=\"size === 'small'\"\n [p-element-ref]=\"inp\"\n [p-size]=\"size\"\n (p-change-event)=\"cleanModel()\"\n (click)=\"cleanModel(); $event.preventDefault()\"\n (keydown.enter)=\"cleanModel(); $event.preventDefault()\"\n ></po-clean>\n }\n }\n <div\n #iconLookup\n tabindex=\"0\"\n role=\"button\"\n class=\"po-lookup-button po-lookup-button-trigger po-field-icon\"\n [class.po-field-icon-disabled]=\"isDisabled\"\n [ariaLabel]=\"literals.search\"\n (p-change-event)=\"openLookup()\"\n (click)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n (keydown.enter)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n >\n <po-icon\n p-icon=\"ICON_SEARCH\"\n [class.po-field-icon]=\"!isDisabled\"\n [class.po-field-icon-aa]=\"!isDisabled && size === 'small'\"\n ></po-icon>\n </div>\n </div>\n </div>\n\n @if (needsHelper) {\n <ng-container *ngTemplateOutlet=\"poHelperTemplate\"></ng-container>\n }\n </div>\n </div>\n } @else {\n <div\n class=\"po-field-container-content po-lookup\"\n [class.po-lookup-disabled]=\"disabled\"\n [class.po-lookup-loading]=\"loading\"\n >\n <div class=\"po-field-container-content-helper-wrapper\">\n <div class=\"po-field-container-input\">\n <div\n #inp\n [tabindex]=\"isDisabled ? -1 : 0\"\n class=\"po-lookup-input po-input-icon-right po-icon-input\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [class.po-lookup-input-auto]=\"autoHeight\"\n [class.po-lookup-input-static]=\"!autoHeight\"\n [class.po-lookup-input-padding-button-clean]=\"clean || loading\"\n [class.po-lookup-input-disabled]=\"isDisabled\"\n [class.po-lookup-input-auto-dynamic-height]=\"isExpandedHeight\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeyDown($event)\"\n >\n @if (placeholder && !disclaimers?.length) {\n <span class=\"po-lookup-input-placeholder\">{{ placeholder }}</span>\n }\n @for (disclaimer of visibleDisclaimers; track disclaimer) {\n <po-disclaimer\n class=\"po-lookup-input-disclaimer\"\n [p-label]=\"disclaimer.label\"\n [p-value]=\"disclaimer.value\"\n [p-hide-close]=\"disclaimer.value === '' || isDisabled\"\n [class.po-clickable]=\"disclaimer.value === '' && !isDisabled\"\n (p-close-action)=\"closeDisclaimer(disclaimer.value)\"\n ></po-disclaimer>\n }\n </div>\n <div class=\"po-field-icon-container-right po-lookup-buttons\">\n @if (loading) {\n <div class=\"po-lookup-button po-lookup-button-loading\">\n <po-loading-icon class=\"po-lookup-loading-icon\" [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n </div>\n } @else {\n @if (clean && !isDisabled && !!inp.value) {\n <po-clean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-lookup-button po-lookup-button-clean\"\n [p-element-ref]=\"inp\"\n [p-size]=\"size\"\n (p-change-event)=\"cleanModel()\"\n (click)=\"cleanModel(); $event.preventDefault()\"\n (keydown.enter)=\"cleanModel(); $event.preventDefault()\"\n ></po-clean>\n }\n }\n <div\n #iconLookup\n tabindex=\"0\"\n role=\"button\"\n class=\"po-lookup-button po-lookup-button-trigger po-field-icon\"\n [class.po-field-icon-disabled]=\"isDisabled\"\n [ariaLabel]=\"literals.search\"\n (p-change-event)=\"openLookup()\"\n (click)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n (keydown.enter)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n >\n <po-icon\n p-icon=\"ICON_SEARCH\"\n [class.po-field-icon]=\"!isDisabled\"\n [class.po-field-icon-aa]=\"!isDisabled && size === 'small'\"\n ></po-icon>\n </div>\n </div>\n </div>\n\n @if (needsHelper) {\n <ng-container *ngTemplateOutlet=\"poHelperTemplate\"></ng-container>\n }\n </div>\n </div>\n }\n\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox\"\n [p-help]=\"help\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit\"\n [p-size]=\"size\"\n ></po-field-container-bottom>\n</po-field-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PoCleanComponent, selector: "po-clean" }, { kind: "component", type: PoDisclaimerComponent, selector: "po-disclaimer" }, { kind: "component", type: PoFieldContainerBottomComponent, selector: "po-field-container-bottom", inputs: ["p-append-in-body", "p-disabled", "p-error-pattern", "p-error-limit", "p-help", "p-size", "p-helper", "p-show-helper"] }, { kind: "component", type: PoFieldContainerComponent, selector: "po-field-container", inputs: ["p-disabled", "p-id", "p-label", "p-help", "p-helper", "p-show-helper", "p-text-wrap", "p-optional", "p-required", "p-show-required", "p-size", "p-compact-label"] }, { kind: "component", type: PoHelperComponent, selector: "po-helper" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "component", type: PoLoadingIconComponent, selector: "po-loading-icon", inputs: ["p-neutral-color", "p-size", "p-in-overlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
47671
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoLookupComponent, isStandalone: false, selector: "po-lookup", providers: providers$2, viewQueries: [{ propertyName: "helperEl", first: true, predicate: ["helperEl"], descendants: true, read: PoHelperComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@let poHelper = setHelper(label, additionalHelpTooltip);\n@let needsHelper = !label && (poHelperComponent() || poHelper.hideAdditionalHelp);\n\n<ng-template #poHelperTemplate>\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"size\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox\"\n ></po-helper>\n</ng-template>\n\n<po-field-container\n [p-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n [p-size]=\"size\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n @if (!disclaimers.length) {\n <div\n class=\"po-field-container-content po-lookup\"\n [class.po-lookup-disabled]=\"disabled\"\n [class.po-lookup-loading]=\"loading\"\n >\n <div class=\"po-field-container-content-helper-wrapper\">\n <div class=\"po-field-container-input\">\n <input\n #inp\n class=\"po-lookup-input po-lookup-input-trigger\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [id]=\"id\"\n type=\"text\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n (blur)=\"searchEvent()\"\n (keydown)=\"onKeyDown($event)\"\n />\n <div class=\"po-field-icon-container-right po-lookup-buttons\">\n @if (loading) {\n <div class=\"po-lookup-button po-lookup-button-loading\">\n <po-loading-icon class=\"po-lookup-loading-icon\" [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n </div>\n } @else {\n @if (clean && !isDisabled && !!inp.value) {\n <po-clean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-lookup-button po-lookup-button-clean\"\n [class.po-lookup-button-aa]=\"size === 'small'\"\n [p-element-ref]=\"inp\"\n [p-size]=\"size\"\n (p-change-event)=\"cleanModel()\"\n (click)=\"cleanModel(); $event.preventDefault()\"\n (keydown.enter)=\"cleanModel(); $event.preventDefault()\"\n ></po-clean>\n }\n }\n <div\n #iconLookup\n tabindex=\"0\"\n role=\"button\"\n class=\"po-lookup-button po-lookup-button-trigger po-field-icon\"\n [class.po-field-icon-disabled]=\"isDisabled\"\n [ariaLabel]=\"literals.search\"\n (p-change-event)=\"openLookup()\"\n (click)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n (keydown.enter)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n >\n <po-icon\n p-icon=\"ICON_SEARCH\"\n [class.po-field-icon]=\"!isDisabled\"\n [class.po-field-icon-aa]=\"!isDisabled && size === 'small'\"\n ></po-icon>\n </div>\n </div>\n </div>\n\n @if (needsHelper) {\n <ng-container *ngTemplateOutlet=\"poHelperTemplate\"></ng-container>\n }\n </div>\n </div>\n } @else {\n <div\n class=\"po-field-container-content po-lookup\"\n [class.po-lookup-disabled]=\"disabled\"\n [class.po-lookup-loading]=\"loading\"\n >\n <div class=\"po-field-container-content-helper-wrapper\">\n <div class=\"po-field-container-input\">\n <div\n #inp\n [tabindex]=\"isDisabled ? -1 : 0\"\n class=\"po-lookup-input po-input-icon-right po-icon-input\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [class.po-lookup-input-auto]=\"autoHeight\"\n [class.po-lookup-input-static]=\"!autoHeight\"\n [class.po-lookup-input-padding-button-clean]=\"clean || loading\"\n [class.po-lookup-input-disabled]=\"isDisabled\"\n [class.po-lookup-input-auto-dynamic-height]=\"isExpandedHeight\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeyDown($event)\"\n >\n @if (placeholder && !disclaimers?.length) {\n <span class=\"po-lookup-input-placeholder\">{{ placeholder }}</span>\n }\n @for (disclaimer of visibleDisclaimers; track $index) {\n <po-disclaimer\n class=\"po-lookup-input-disclaimer\"\n [p-label]=\"disclaimer.label\"\n [p-value]=\"disclaimer.value\"\n [p-hide-close]=\"disclaimer.value === '' || isDisabled\"\n [class.po-clickable]=\"disclaimer.value === '' && !isDisabled\"\n (p-close-action)=\"closeDisclaimer(disclaimer.value)\"\n ></po-disclaimer>\n }\n </div>\n <div class=\"po-field-icon-container-right po-lookup-buttons\">\n @if (loading) {\n <div class=\"po-lookup-button po-lookup-button-loading\">\n <po-loading-icon class=\"po-lookup-loading-icon\" [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n </div>\n } @else {\n @if (clean && !isDisabled && !!inp.value) {\n <po-clean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-lookup-button po-lookup-button-clean\"\n [p-element-ref]=\"inp\"\n [p-size]=\"size\"\n (p-change-event)=\"cleanModel()\"\n (click)=\"cleanModel(); $event.preventDefault()\"\n (keydown.enter)=\"cleanModel(); $event.preventDefault()\"\n ></po-clean>\n }\n }\n <div\n #iconLookup\n tabindex=\"0\"\n role=\"button\"\n class=\"po-lookup-button po-lookup-button-trigger po-field-icon\"\n [class.po-field-icon-disabled]=\"isDisabled\"\n [ariaLabel]=\"literals.search\"\n (p-change-event)=\"openLookup()\"\n (click)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n (keydown.enter)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n >\n <po-icon\n p-icon=\"ICON_SEARCH\"\n [class.po-field-icon]=\"!isDisabled\"\n [class.po-field-icon-aa]=\"!isDisabled && size === 'small'\"\n ></po-icon>\n </div>\n </div>\n </div>\n\n @if (needsHelper) {\n <ng-container *ngTemplateOutlet=\"poHelperTemplate\"></ng-container>\n }\n </div>\n </div>\n }\n\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox\"\n [p-help]=\"help\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit\"\n [p-size]=\"size\"\n ></po-field-container-bottom>\n</po-field-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PoCleanComponent, selector: "po-clean" }, { kind: "component", type: PoDisclaimerComponent, selector: "po-disclaimer" }, { kind: "component", type: PoFieldContainerBottomComponent, selector: "po-field-container-bottom", inputs: ["p-append-in-body", "p-disabled", "p-error-pattern", "p-error-limit", "p-help", "p-size", "p-helper", "p-show-helper"] }, { kind: "component", type: PoFieldContainerComponent, selector: "po-field-container", inputs: ["p-disabled", "p-id", "p-label", "p-help", "p-helper", "p-show-helper", "p-text-wrap", "p-optional", "p-required", "p-show-required", "p-size", "p-compact-label"] }, { kind: "component", type: PoHelperComponent, selector: "po-helper" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "component", type: PoLoadingIconComponent, selector: "po-loading-icon", inputs: ["p-neutral-color", "p-size", "p-in-overlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
47729
47672
  }
47730
47673
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoLookupComponent, decorators: [{
47731
47674
  type: Component,
47732
- args: [{ selector: 'po-lookup', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers$2, standalone: false, template: "@let poHelper = setHelper(label, additionalHelpTooltip);\n@let needsHelper = !label && (poHelperComponent() || poHelper.hideAdditionalHelp);\n\n<ng-template #poHelperTemplate>\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"size\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox\"\n ></po-helper>\n</ng-template>\n\n<po-field-container\n [p-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n [p-size]=\"size\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n @if (!disclaimers.length) {\n <div\n class=\"po-field-container-content po-lookup\"\n [class.po-lookup-disabled]=\"disabled\"\n [class.po-lookup-loading]=\"loading\"\n >\n <div class=\"po-field-container-content-helper-wrapper\">\n <div class=\"po-field-container-input\">\n <input\n #inp\n class=\"po-lookup-input po-lookup-input-trigger\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [id]=\"id\"\n type=\"text\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n (blur)=\"searchEvent()\"\n (keydown)=\"onKeyDown($event)\"\n />\n <div class=\"po-field-icon-container-right po-lookup-buttons\">\n @if (loading) {\n <div class=\"po-lookup-button po-lookup-button-loading\">\n <po-loading-icon class=\"po-lookup-loading-icon\" [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n </div>\n } @else {\n @if (clean && !isDisabled && !!inp.value) {\n <po-clean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-lookup-button po-lookup-button-clean\"\n [class.po-lookup-button-aa]=\"size === 'small'\"\n [p-element-ref]=\"inp\"\n [p-size]=\"size\"\n (p-change-event)=\"cleanModel()\"\n (click)=\"cleanModel(); $event.preventDefault()\"\n (keydown.enter)=\"cleanModel(); $event.preventDefault()\"\n ></po-clean>\n }\n }\n <div\n #iconLookup\n tabindex=\"0\"\n role=\"button\"\n class=\"po-lookup-button po-lookup-button-trigger po-field-icon\"\n [class.po-field-icon-disabled]=\"isDisabled\"\n [ariaLabel]=\"literals.search\"\n (p-change-event)=\"openLookup()\"\n (click)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n (keydown.enter)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n >\n <po-icon\n p-icon=\"ICON_SEARCH\"\n [class.po-field-icon]=\"!isDisabled\"\n [class.po-field-icon-aa]=\"!isDisabled && size === 'small'\"\n ></po-icon>\n </div>\n </div>\n </div>\n\n @if (needsHelper) {\n <ng-container *ngTemplateOutlet=\"poHelperTemplate\"></ng-container>\n }\n </div>\n </div>\n } @else {\n <div\n class=\"po-field-container-content po-lookup\"\n [class.po-lookup-disabled]=\"disabled\"\n [class.po-lookup-loading]=\"loading\"\n >\n <div class=\"po-field-container-content-helper-wrapper\">\n <div class=\"po-field-container-input\">\n <div\n #inp\n [tabindex]=\"isDisabled ? -1 : 0\"\n class=\"po-lookup-input po-input-icon-right po-icon-input\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [class.po-lookup-input-auto]=\"autoHeight\"\n [class.po-lookup-input-static]=\"!autoHeight\"\n [class.po-lookup-input-padding-button-clean]=\"clean || loading\"\n [class.po-lookup-input-disabled]=\"isDisabled\"\n [class.po-lookup-input-auto-dynamic-height]=\"isExpandedHeight\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeyDown($event)\"\n >\n @if (placeholder && !disclaimers?.length) {\n <span class=\"po-lookup-input-placeholder\">{{ placeholder }}</span>\n }\n @for (disclaimer of visibleDisclaimers; track disclaimer) {\n <po-disclaimer\n class=\"po-lookup-input-disclaimer\"\n [p-label]=\"disclaimer.label\"\n [p-value]=\"disclaimer.value\"\n [p-hide-close]=\"disclaimer.value === '' || isDisabled\"\n [class.po-clickable]=\"disclaimer.value === '' && !isDisabled\"\n (p-close-action)=\"closeDisclaimer(disclaimer.value)\"\n ></po-disclaimer>\n }\n </div>\n <div class=\"po-field-icon-container-right po-lookup-buttons\">\n @if (loading) {\n <div class=\"po-lookup-button po-lookup-button-loading\">\n <po-loading-icon class=\"po-lookup-loading-icon\" [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n </div>\n } @else {\n @if (clean && !isDisabled && !!inp.value) {\n <po-clean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-lookup-button po-lookup-button-clean\"\n [p-element-ref]=\"inp\"\n [p-size]=\"size\"\n (p-change-event)=\"cleanModel()\"\n (click)=\"cleanModel(); $event.preventDefault()\"\n (keydown.enter)=\"cleanModel(); $event.preventDefault()\"\n ></po-clean>\n }\n }\n <div\n #iconLookup\n tabindex=\"0\"\n role=\"button\"\n class=\"po-lookup-button po-lookup-button-trigger po-field-icon\"\n [class.po-field-icon-disabled]=\"isDisabled\"\n [ariaLabel]=\"literals.search\"\n (p-change-event)=\"openLookup()\"\n (click)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n (keydown.enter)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n >\n <po-icon\n p-icon=\"ICON_SEARCH\"\n [class.po-field-icon]=\"!isDisabled\"\n [class.po-field-icon-aa]=\"!isDisabled && size === 'small'\"\n ></po-icon>\n </div>\n </div>\n </div>\n\n @if (needsHelper) {\n <ng-container *ngTemplateOutlet=\"poHelperTemplate\"></ng-container>\n }\n </div>\n </div>\n }\n\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox\"\n [p-help]=\"help\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit\"\n [p-size]=\"size\"\n ></po-field-container-bottom>\n</po-field-container>\n" }]
47675
+ args: [{ selector: 'po-lookup', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers$2, standalone: false, template: "@let poHelper = setHelper(label, additionalHelpTooltip);\n@let needsHelper = !label && (poHelperComponent() || poHelper.hideAdditionalHelp);\n\n<ng-template #poHelperTemplate>\n <po-helper\n #helperEl\n class=\"po-field-helper-button\"\n [p-size]=\"size\"\n [p-helper]=\"poHelper.helperSettings\"\n [p-disabled]=\"isDisabled\"\n [p-append-in-body]=\"appendBox\"\n ></po-helper>\n</ng-template>\n\n<po-field-container\n [p-disabled]=\"isDisabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n [p-size]=\"size\"\n [p-text-wrap]=\"labelTextWrap()\"\n [p-compact-label]=\"compactLabel()\"\n>\n @if (!disclaimers.length) {\n <div\n class=\"po-field-container-content po-lookup\"\n [class.po-lookup-disabled]=\"disabled\"\n [class.po-lookup-loading]=\"loading\"\n >\n <div class=\"po-field-container-content-helper-wrapper\">\n <div class=\"po-field-container-input\">\n <input\n #inp\n class=\"po-lookup-input po-lookup-input-trigger\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [id]=\"id\"\n type=\"text\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n (blur)=\"searchEvent()\"\n (keydown)=\"onKeyDown($event)\"\n />\n <div class=\"po-field-icon-container-right po-lookup-buttons\">\n @if (loading) {\n <div class=\"po-lookup-button po-lookup-button-loading\">\n <po-loading-icon class=\"po-lookup-loading-icon\" [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n </div>\n } @else {\n @if (clean && !isDisabled && !!inp.value) {\n <po-clean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-lookup-button po-lookup-button-clean\"\n [class.po-lookup-button-aa]=\"size === 'small'\"\n [p-element-ref]=\"inp\"\n [p-size]=\"size\"\n (p-change-event)=\"cleanModel()\"\n (click)=\"cleanModel(); $event.preventDefault()\"\n (keydown.enter)=\"cleanModel(); $event.preventDefault()\"\n ></po-clean>\n }\n }\n <div\n #iconLookup\n tabindex=\"0\"\n role=\"button\"\n class=\"po-lookup-button po-lookup-button-trigger po-field-icon\"\n [class.po-field-icon-disabled]=\"isDisabled\"\n [ariaLabel]=\"literals.search\"\n (p-change-event)=\"openLookup()\"\n (click)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n (keydown.enter)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n >\n <po-icon\n p-icon=\"ICON_SEARCH\"\n [class.po-field-icon]=\"!isDisabled\"\n [class.po-field-icon-aa]=\"!isDisabled && size === 'small'\"\n ></po-icon>\n </div>\n </div>\n </div>\n\n @if (needsHelper) {\n <ng-container *ngTemplateOutlet=\"poHelperTemplate\"></ng-container>\n }\n </div>\n </div>\n } @else {\n <div\n class=\"po-field-container-content po-lookup\"\n [class.po-lookup-disabled]=\"disabled\"\n [class.po-lookup-loading]=\"loading\"\n >\n <div class=\"po-field-container-content-helper-wrapper\">\n <div class=\"po-field-container-input\">\n <div\n #inp\n [tabindex]=\"isDisabled ? -1 : 0\"\n class=\"po-lookup-input po-input-icon-right po-icon-input\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [class.po-lookup-input-auto]=\"autoHeight\"\n [class.po-lookup-input-static]=\"!autoHeight\"\n [class.po-lookup-input-padding-button-clean]=\"clean || loading\"\n [class.po-lookup-input-disabled]=\"isDisabled\"\n [class.po-lookup-input-auto-dynamic-height]=\"isExpandedHeight\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeyDown($event)\"\n >\n @if (placeholder && !disclaimers?.length) {\n <span class=\"po-lookup-input-placeholder\">{{ placeholder }}</span>\n }\n @for (disclaimer of visibleDisclaimers; track $index) {\n <po-disclaimer\n class=\"po-lookup-input-disclaimer\"\n [p-label]=\"disclaimer.label\"\n [p-value]=\"disclaimer.value\"\n [p-hide-close]=\"disclaimer.value === '' || isDisabled\"\n [class.po-clickable]=\"disclaimer.value === '' && !isDisabled\"\n (p-close-action)=\"closeDisclaimer(disclaimer.value)\"\n ></po-disclaimer>\n }\n </div>\n <div class=\"po-field-icon-container-right po-lookup-buttons\">\n @if (loading) {\n <div class=\"po-lookup-button po-lookup-button-loading\">\n <po-loading-icon class=\"po-lookup-loading-icon\" [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n </div>\n } @else {\n @if (clean && !isDisabled && !!inp.value) {\n <po-clean\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"literals.clean\"\n class=\"po-lookup-button po-lookup-button-clean\"\n [p-element-ref]=\"inp\"\n [p-size]=\"size\"\n (p-change-event)=\"cleanModel()\"\n (click)=\"cleanModel(); $event.preventDefault()\"\n (keydown.enter)=\"cleanModel(); $event.preventDefault()\"\n ></po-clean>\n }\n }\n <div\n #iconLookup\n tabindex=\"0\"\n role=\"button\"\n class=\"po-lookup-button po-lookup-button-trigger po-field-icon\"\n [class.po-field-icon-disabled]=\"isDisabled\"\n [ariaLabel]=\"literals.search\"\n (p-change-event)=\"openLookup()\"\n (click)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n (keydown.enter)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n >\n <po-icon\n p-icon=\"ICON_SEARCH\"\n [class.po-field-icon]=\"!isDisabled\"\n [class.po-field-icon-aa]=\"!isDisabled && size === 'small'\"\n ></po-icon>\n </div>\n </div>\n </div>\n\n @if (needsHelper) {\n <ng-container *ngTemplateOutlet=\"poHelperTemplate\"></ng-container>\n }\n </div>\n </div>\n }\n\n <po-field-container-bottom\n [p-append-in-body]=\"appendBox\"\n [p-help]=\"help\"\n [p-disabled]=\"isDisabled\"\n [p-error-pattern]=\"getErrorPattern()\"\n [p-error-limit]=\"errorLimit\"\n [p-size]=\"size\"\n ></po-field-container-bottom>\n</po-field-container>\n" }]
47733
47676
  }], ctorParameters: () => [], propDecorators: { helperEl: [{
47734
47677
  type: ViewChild,
47735
47678
  args: ['helperEl', { read: PoHelperComponent, static: false }]
@@ -56079,7 +56022,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImpo
56079
56022
  * @description
56080
56023
  *
56081
56024
  * Módulo dos componentes: po-checkbox, po-checkbox-group, po-combo, po-datepicker, po-datetimepicker, po-datepicker-range, po-email, po-input,
56082
- * po-lookup, po-number, po-multiselect, po-password, po-radio-group, po-select, po-switch, po-textarea, po-upload, po-url e po-search-ai.
56025
+ * po-lookup, po-number, po-multiselect, po-password, po-radio-group, po-select, po-switch, po-textarea, po-timepicker, po-upload, po-url e po-search-ai.
56083
56026
  *
56084
56027
  * > Não esqueça de importar o módulo `FormsModule` para usar os componentes de formulários e caso esteja trabalhando com
56085
56028
  * > formulários reativos, importe o módulo `ReactiveFormsModule`, ambos nativos do Angular.
@@ -61150,11 +61093,11 @@ class PoMenuItemComponent {
61150
61093
  }
61151
61094
  }
61152
61095
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61153
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoMenuItemComponent, isStandalone: false, selector: "po-menu-item", inputs: { action: ["p-action", "action"], badgeAlert: ["p-badge-alert", "badgeAlert"], badgeColor: ["p-badge-color", "badgeColor"], collapsedMenu: ["p-collapsed-menu", "collapsedMenu"], icon: ["p-icon", "icon"], id: ["p-id", "id"], isOpened: ["p-is-opened", "isOpened"], label: ["p-label", "label"], level: ["p-level", "level"], link: ["p-link", "link"], shortLabel: ["p-short-label", "shortLabel"], type: ["p-type", "type"], badgeValue: ["p-badge-value", "badgeValue"], isSelected: ["p-is-selected", "isSelected"], isSubItem: ["p-is-sub-item", "isSubItem"], subItems: ["p-sub-items", "subItems"] }, viewQueries: [{ propertyName: "menuSubItems", first: true, predicate: ["menuSubItems"], descendants: true }], ngImport: i0, template: "<!-- menu com link interno -->\n@if (type === 'internalLink') {\n <a\n class=\"po-menu-item-link\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n [routerLink]=\"link\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu com link externo -->\n@if (type === 'externalLink') {\n <a\n class=\"po-menu-item-link\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n [href]=\"link\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu sem link -->\n@if (type === 'noLink') {\n <a\n class=\"po-menu-item-link\"\n href=\"javascript:;\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu sem dados -->\n@if (type === 'noData') {\n <div class=\"po-menu-item-link\" role=\"none\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </div>\n}\n<!-- menu com sub itens -->\n@if (type === 'subItems') {\n <div class=\"po-menu-item-link po-clickable\" role=\"menuitem\" [attr.aria-expanded]=\"isOpened ? true : false\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n <div\n #menuSubItems\n class=\"po-menu-sub-items\"\n [hidden]=\"collapsedMenu || !isOpened\"\n [attr.aria-expanded]=\"isOpened ? true : false\"\n [attr.aria-hidden]=\"!isOpened ? true : false\"\n role=\"group\"\n [style.maxHeight.px]=\"maxHeight\"\n >\n <ul class=\"po-menu-sub-items-list\">\n @for (subItem of subItems; track subItem) {\n <li class=\"po-menu-sub-items-list-item\" [attr.aria-level]=\"subItem.level\">\n <po-menu-item\n p-is-sub-item\n [p-action]=\"subItem.action\"\n [p-badge-alert]=\"subItem.badgeAlert\"\n [p-badge-color]=\"subItem.badge ? subItem.badge.color : undefined\"\n [p-badge-value]=\"subItem.badge ? subItem.badge.value : undefined\"\n [p-id]=\"subItem.id\"\n [p-label]=\"subItem.label\"\n [p-level]=\"subItem.level\"\n [p-link]=\"subItem.link\"\n [p-sub-items]=\"subItem.subItems\"\n [p-type]=\"subItem.type\"\n ></po-menu-item>\n </li>\n }\n </ul>\n </div>\n </div>\n}\n\n<ng-template #menuItemTemplate>\n <div\n p-tooltip-position=\"right\"\n [p-tooltip]=\"type === 'subItems' && collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n class=\"po-menu-item\"\n [tabindex]=\"type === 'subItems' ? 0 : -1\"\n [attr.aria-label]=\"label\"\n [attr.role]=\"type === 'subItems' ? 'menuitem' : undefined\"\n [class.po-menu-icon-container]=\"level === 1 && icon\"\n [class.po-menu-item-selected]=\"isSelected\"\n [class.po-menu-item-level-two]=\"level === 2\"\n [class.po-menu-item-level-three]=\"level === 3\"\n [class.po-menu-item-level-four]=\"level === 4\"\n [class.po-menu-item-grouper-up]=\"type === 'subItems' && isOpened\"\n [class.po-menu-item-grouper-down]=\"type === 'subItems' && !isOpened\"\n [class.po-menu-item-no-data]=\"type === 'noData'\"\n [class.po-menu-sub-item-selected]=\"isSelectedSubItem\"\n (click)=\"clickMenuItem($event)\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n >\n @if (level === 1 && icon) {\n <po-icon aria-hidden=\"true\" class=\"po-menu-icon-item\" [p-icon]=\"icon\"></po-icon>\n }\n\n @if (type === 'subItems' && !collapsedMenu) {\n <po-icon\n class=\"po-menu-group-icon\"\n [p-icon]=\"isOpened ? 'ICON_ARROW_UP po-field-icon' : 'ICON_ARROW_DOWN po-field-icon'\"\n ></po-icon>\n }\n\n <span [class.po-menu-icon-label]=\"level === 1 && icon\">\n {{ label }}\n </span>\n\n @if (canShowBadge) {\n <po-badge\n aria-hidden=\"true\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-align' : 'po-menu-badge-align-collapsed'\"\n [p-color]=\"badgeColor\"\n [p-value]=\"badgeValue\"\n ></po-badge>\n }\n\n @if (badgeAlert) {\n <span\n aria-hidden=\"true\"\n class=\"po-color-07\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-alert' : 'po-menu-badge-alert-collapsed'\"\n ></span>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: PoBadgeComponent, selector: "po-badge" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "directive", type: PoTooltipDirective, selector: "[p-tooltip]" }, { kind: "component", type: PoMenuItemComponent, selector: "po-menu-item", inputs: ["p-action", "p-badge-alert", "p-badge-color", "p-collapsed-menu", "p-icon", "p-id", "p-is-opened", "p-label", "p-level", "p-link", "p-short-label", "p-type", "p-badge-value", "p-is-selected", "p-is-sub-item", "p-sub-items"] }] });
61096
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoMenuItemComponent, isStandalone: false, selector: "po-menu-item", inputs: { action: ["p-action", "action"], badgeAlert: ["p-badge-alert", "badgeAlert"], badgeColor: ["p-badge-color", "badgeColor"], collapsedMenu: ["p-collapsed-menu", "collapsedMenu"], icon: ["p-icon", "icon"], id: ["p-id", "id"], isOpened: ["p-is-opened", "isOpened"], label: ["p-label", "label"], level: ["p-level", "level"], link: ["p-link", "link"], shortLabel: ["p-short-label", "shortLabel"], type: ["p-type", "type"], badgeValue: ["p-badge-value", "badgeValue"], isSelected: ["p-is-selected", "isSelected"], isSubItem: ["p-is-sub-item", "isSubItem"], subItems: ["p-sub-items", "subItems"] }, viewQueries: [{ propertyName: "menuSubItems", first: true, predicate: ["menuSubItems"], descendants: true }], ngImport: i0, template: "<!-- menu com link interno -->\n@if (type === 'internalLink') {\n <a\n class=\"po-menu-item-link\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n [routerLink]=\"link\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu com link externo -->\n@if (type === 'externalLink') {\n <a\n class=\"po-menu-item-link\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n [href]=\"link\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu sem link -->\n@if (type === 'noLink') {\n <a\n class=\"po-menu-item-link\"\n href=\"javascript:;\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu sem dados -->\n@if (type === 'noData') {\n <div class=\"po-menu-item-link\" role=\"none\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </div>\n}\n<!-- menu com sub itens -->\n@if (type === 'subItems') {\n <div class=\"po-menu-item-link po-clickable\" role=\"menuitem\" [attr.aria-expanded]=\"isOpened ? true : false\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n <div\n #menuSubItems\n class=\"po-menu-sub-items\"\n [hidden]=\"collapsedMenu || !isOpened\"\n [attr.aria-expanded]=\"isOpened ? true : false\"\n [attr.aria-hidden]=\"!isOpened ? true : false\"\n role=\"group\"\n [style.maxHeight.px]=\"maxHeight\"\n >\n <ul class=\"po-menu-sub-items-list\">\n @for (subItem of subItems; track $index) {\n <li class=\"po-menu-sub-items-list-item\" [attr.aria-level]=\"subItem.level\">\n <po-menu-item\n p-is-sub-item\n [p-action]=\"subItem.action\"\n [p-badge-alert]=\"subItem.badgeAlert\"\n [p-badge-color]=\"subItem.badge ? subItem.badge.color : undefined\"\n [p-badge-value]=\"subItem.badge ? subItem.badge.value : undefined\"\n [p-id]=\"subItem.id\"\n [p-label]=\"subItem.label\"\n [p-level]=\"subItem.level\"\n [p-link]=\"subItem.link\"\n [p-sub-items]=\"subItem.subItems\"\n [p-type]=\"subItem.type\"\n ></po-menu-item>\n </li>\n }\n </ul>\n </div>\n </div>\n}\n\n<ng-template #menuItemTemplate>\n <div\n p-tooltip-position=\"right\"\n [p-tooltip]=\"type === 'subItems' && collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n class=\"po-menu-item\"\n [tabindex]=\"type === 'subItems' ? 0 : -1\"\n [attr.aria-label]=\"label\"\n [attr.role]=\"type === 'subItems' ? 'menuitem' : undefined\"\n [class.po-menu-icon-container]=\"level === 1 && icon\"\n [class.po-menu-item-selected]=\"isSelected\"\n [class.po-menu-item-level-two]=\"level === 2\"\n [class.po-menu-item-level-three]=\"level === 3\"\n [class.po-menu-item-level-four]=\"level === 4\"\n [class.po-menu-item-grouper-up]=\"type === 'subItems' && isOpened\"\n [class.po-menu-item-grouper-down]=\"type === 'subItems' && !isOpened\"\n [class.po-menu-item-no-data]=\"type === 'noData'\"\n [class.po-menu-sub-item-selected]=\"isSelectedSubItem\"\n (click)=\"clickMenuItem($event)\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n >\n @if (level === 1 && icon) {\n <po-icon aria-hidden=\"true\" class=\"po-menu-icon-item\" [p-icon]=\"icon\"></po-icon>\n }\n\n @if (type === 'subItems' && !collapsedMenu) {\n <po-icon\n class=\"po-menu-group-icon\"\n [p-icon]=\"isOpened ? 'ICON_ARROW_UP po-field-icon' : 'ICON_ARROW_DOWN po-field-icon'\"\n ></po-icon>\n }\n\n <span [class.po-menu-icon-label]=\"level === 1 && icon\">\n {{ label }}\n </span>\n\n @if (canShowBadge) {\n <po-badge\n aria-hidden=\"true\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-align' : 'po-menu-badge-align-collapsed'\"\n [p-color]=\"badgeColor\"\n [p-value]=\"badgeValue\"\n ></po-badge>\n }\n\n @if (badgeAlert) {\n <span\n aria-hidden=\"true\"\n class=\"po-color-07\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-alert' : 'po-menu-badge-alert-collapsed'\"\n ></span>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: PoBadgeComponent, selector: "po-badge" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "directive", type: PoTooltipDirective, selector: "[p-tooltip]" }, { kind: "component", type: PoMenuItemComponent, selector: "po-menu-item", inputs: ["p-action", "p-badge-alert", "p-badge-color", "p-collapsed-menu", "p-icon", "p-id", "p-is-opened", "p-label", "p-level", "p-link", "p-short-label", "p-type", "p-badge-value", "p-is-selected", "p-is-sub-item", "p-sub-items"] }] });
61154
61097
  }
61155
61098
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoMenuItemComponent, decorators: [{
61156
61099
  type: Component,
61157
- args: [{ selector: 'po-menu-item', standalone: false, template: "<!-- menu com link interno -->\n@if (type === 'internalLink') {\n <a\n class=\"po-menu-item-link\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n [routerLink]=\"link\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu com link externo -->\n@if (type === 'externalLink') {\n <a\n class=\"po-menu-item-link\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n [href]=\"link\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu sem link -->\n@if (type === 'noLink') {\n <a\n class=\"po-menu-item-link\"\n href=\"javascript:;\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu sem dados -->\n@if (type === 'noData') {\n <div class=\"po-menu-item-link\" role=\"none\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </div>\n}\n<!-- menu com sub itens -->\n@if (type === 'subItems') {\n <div class=\"po-menu-item-link po-clickable\" role=\"menuitem\" [attr.aria-expanded]=\"isOpened ? true : false\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n <div\n #menuSubItems\n class=\"po-menu-sub-items\"\n [hidden]=\"collapsedMenu || !isOpened\"\n [attr.aria-expanded]=\"isOpened ? true : false\"\n [attr.aria-hidden]=\"!isOpened ? true : false\"\n role=\"group\"\n [style.maxHeight.px]=\"maxHeight\"\n >\n <ul class=\"po-menu-sub-items-list\">\n @for (subItem of subItems; track subItem) {\n <li class=\"po-menu-sub-items-list-item\" [attr.aria-level]=\"subItem.level\">\n <po-menu-item\n p-is-sub-item\n [p-action]=\"subItem.action\"\n [p-badge-alert]=\"subItem.badgeAlert\"\n [p-badge-color]=\"subItem.badge ? subItem.badge.color : undefined\"\n [p-badge-value]=\"subItem.badge ? subItem.badge.value : undefined\"\n [p-id]=\"subItem.id\"\n [p-label]=\"subItem.label\"\n [p-level]=\"subItem.level\"\n [p-link]=\"subItem.link\"\n [p-sub-items]=\"subItem.subItems\"\n [p-type]=\"subItem.type\"\n ></po-menu-item>\n </li>\n }\n </ul>\n </div>\n </div>\n}\n\n<ng-template #menuItemTemplate>\n <div\n p-tooltip-position=\"right\"\n [p-tooltip]=\"type === 'subItems' && collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n class=\"po-menu-item\"\n [tabindex]=\"type === 'subItems' ? 0 : -1\"\n [attr.aria-label]=\"label\"\n [attr.role]=\"type === 'subItems' ? 'menuitem' : undefined\"\n [class.po-menu-icon-container]=\"level === 1 && icon\"\n [class.po-menu-item-selected]=\"isSelected\"\n [class.po-menu-item-level-two]=\"level === 2\"\n [class.po-menu-item-level-three]=\"level === 3\"\n [class.po-menu-item-level-four]=\"level === 4\"\n [class.po-menu-item-grouper-up]=\"type === 'subItems' && isOpened\"\n [class.po-menu-item-grouper-down]=\"type === 'subItems' && !isOpened\"\n [class.po-menu-item-no-data]=\"type === 'noData'\"\n [class.po-menu-sub-item-selected]=\"isSelectedSubItem\"\n (click)=\"clickMenuItem($event)\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n >\n @if (level === 1 && icon) {\n <po-icon aria-hidden=\"true\" class=\"po-menu-icon-item\" [p-icon]=\"icon\"></po-icon>\n }\n\n @if (type === 'subItems' && !collapsedMenu) {\n <po-icon\n class=\"po-menu-group-icon\"\n [p-icon]=\"isOpened ? 'ICON_ARROW_UP po-field-icon' : 'ICON_ARROW_DOWN po-field-icon'\"\n ></po-icon>\n }\n\n <span [class.po-menu-icon-label]=\"level === 1 && icon\">\n {{ label }}\n </span>\n\n @if (canShowBadge) {\n <po-badge\n aria-hidden=\"true\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-align' : 'po-menu-badge-align-collapsed'\"\n [p-color]=\"badgeColor\"\n [p-value]=\"badgeValue\"\n ></po-badge>\n }\n\n @if (badgeAlert) {\n <span\n aria-hidden=\"true\"\n class=\"po-color-07\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-alert' : 'po-menu-badge-alert-collapsed'\"\n ></span>\n }\n </div>\n</ng-template>\n" }]
61100
+ args: [{ selector: 'po-menu-item', standalone: false, template: "<!-- menu com link interno -->\n@if (type === 'internalLink') {\n <a\n class=\"po-menu-item-link\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n [routerLink]=\"link\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu com link externo -->\n@if (type === 'externalLink') {\n <a\n class=\"po-menu-item-link\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n [href]=\"link\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu sem link -->\n@if (type === 'noLink') {\n <a\n class=\"po-menu-item-link\"\n href=\"javascript:;\"\n role=\"menuitem\"\n [attr.aria-label]=\"label\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </a>\n}\n<!-- menu sem dados -->\n@if (type === 'noData') {\n <div class=\"po-menu-item-link\" role=\"none\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n </div>\n}\n<!-- menu com sub itens -->\n@if (type === 'subItems') {\n <div class=\"po-menu-item-link po-clickable\" role=\"menuitem\" [attr.aria-expanded]=\"isOpened ? true : false\">\n <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n <div\n #menuSubItems\n class=\"po-menu-sub-items\"\n [hidden]=\"collapsedMenu || !isOpened\"\n [attr.aria-expanded]=\"isOpened ? true : false\"\n [attr.aria-hidden]=\"!isOpened ? true : false\"\n role=\"group\"\n [style.maxHeight.px]=\"maxHeight\"\n >\n <ul class=\"po-menu-sub-items-list\">\n @for (subItem of subItems; track $index) {\n <li class=\"po-menu-sub-items-list-item\" [attr.aria-level]=\"subItem.level\">\n <po-menu-item\n p-is-sub-item\n [p-action]=\"subItem.action\"\n [p-badge-alert]=\"subItem.badgeAlert\"\n [p-badge-color]=\"subItem.badge ? subItem.badge.color : undefined\"\n [p-badge-value]=\"subItem.badge ? subItem.badge.value : undefined\"\n [p-id]=\"subItem.id\"\n [p-label]=\"subItem.label\"\n [p-level]=\"subItem.level\"\n [p-link]=\"subItem.link\"\n [p-sub-items]=\"subItem.subItems\"\n [p-type]=\"subItem.type\"\n ></po-menu-item>\n </li>\n }\n </ul>\n </div>\n </div>\n}\n\n<ng-template #menuItemTemplate>\n <div\n p-tooltip-position=\"right\"\n [p-tooltip]=\"type === 'subItems' && collapsedMenu && shortLabel ? shortLabel : undefined\"\n [p-append-in-body]=\"true\"\n class=\"po-menu-item\"\n [tabindex]=\"type === 'subItems' ? 0 : -1\"\n [attr.aria-label]=\"label\"\n [attr.role]=\"type === 'subItems' ? 'menuitem' : undefined\"\n [class.po-menu-icon-container]=\"level === 1 && icon\"\n [class.po-menu-item-selected]=\"isSelected\"\n [class.po-menu-item-level-two]=\"level === 2\"\n [class.po-menu-item-level-three]=\"level === 3\"\n [class.po-menu-item-level-four]=\"level === 4\"\n [class.po-menu-item-grouper-up]=\"type === 'subItems' && isOpened\"\n [class.po-menu-item-grouper-down]=\"type === 'subItems' && !isOpened\"\n [class.po-menu-item-no-data]=\"type === 'noData'\"\n [class.po-menu-sub-item-selected]=\"isSelectedSubItem\"\n (click)=\"clickMenuItem($event)\"\n (keydown.enter)=\"clickMenuItem($event)\"\n (keydown.space)=\"clickMenuItem($event)\"\n >\n @if (level === 1 && icon) {\n <po-icon aria-hidden=\"true\" class=\"po-menu-icon-item\" [p-icon]=\"icon\"></po-icon>\n }\n\n @if (type === 'subItems' && !collapsedMenu) {\n <po-icon\n class=\"po-menu-group-icon\"\n [p-icon]=\"isOpened ? 'ICON_ARROW_UP po-field-icon' : 'ICON_ARROW_DOWN po-field-icon'\"\n ></po-icon>\n }\n\n <span [class.po-menu-icon-label]=\"level === 1 && icon\">\n {{ label }}\n </span>\n\n @if (canShowBadge) {\n <po-badge\n aria-hidden=\"true\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-align' : 'po-menu-badge-align-collapsed'\"\n [p-color]=\"badgeColor\"\n [p-value]=\"badgeValue\"\n ></po-badge>\n }\n\n @if (badgeAlert) {\n <span\n aria-hidden=\"true\"\n class=\"po-color-07\"\n [ngClass]=\"!collapsedMenu ? 'po-menu-badge-alert' : 'po-menu-badge-alert-collapsed'\"\n ></span>\n }\n </div>\n</ng-template>\n" }]
61158
61101
  }], propDecorators: { action: [{
61159
61102
  type: Input,
61160
61103
  args: ['p-action']
@@ -65391,11 +65334,11 @@ class PoSlideCirclesComponent {
65391
65334
  /** Evento emitido ao clicar em um controle. */
65392
65335
  click = new EventEmitter();
65393
65336
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoSlideCirclesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
65394
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoSlideCirclesComponent, isStandalone: false, selector: "po-slide-circles", inputs: { currentSlideIndex: ["p-current-slide-index", "currentSlideIndex"], items: ["p-items", "items"] }, outputs: { click: "p-click" }, ngImport: i0, template: "<div class=\"po-slide-circles\">\n @for (item of items; track item; let index = $index) {\n <div\n class=\"po-slide-circle\"\n [class.po-slide-active-circle]=\"index === currentSlideIndex\"\n (click)=\"click.emit(index)\"\n ></div>\n }\n</div>\n" });
65337
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoSlideCirclesComponent, isStandalone: false, selector: "po-slide-circles", inputs: { currentSlideIndex: ["p-current-slide-index", "currentSlideIndex"], items: ["p-items", "items"] }, outputs: { click: "p-click" }, ngImport: i0, template: "<div class=\"po-slide-circles\">\n @for (item of items; track $index; let index = $index) {\n <div\n class=\"po-slide-circle\"\n [class.po-slide-active-circle]=\"index === currentSlideIndex\"\n (click)=\"click.emit(index)\"\n ></div>\n }\n</div>\n" });
65395
65338
  }
65396
65339
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoSlideCirclesComponent, decorators: [{
65397
65340
  type: Component,
65398
- args: [{ selector: 'po-slide-circles', standalone: false, template: "<div class=\"po-slide-circles\">\n @for (item of items; track item; let index = $index) {\n <div\n class=\"po-slide-circle\"\n [class.po-slide-active-circle]=\"index === currentSlideIndex\"\n (click)=\"click.emit(index)\"\n ></div>\n }\n</div>\n" }]
65341
+ args: [{ selector: 'po-slide-circles', standalone: false, template: "<div class=\"po-slide-circles\">\n @for (item of items; track $index; let index = $index) {\n <div\n class=\"po-slide-circle\"\n [class.po-slide-active-circle]=\"index === currentSlideIndex\"\n (click)=\"click.emit(index)\"\n ></div>\n }\n</div>\n" }]
65399
65342
  }], propDecorators: { currentSlideIndex: [{
65400
65343
  type: Input,
65401
65344
  args: ['p-current-slide-index']
@@ -65897,11 +65840,11 @@ class PoSlideComponent extends PoSlideBaseComponent {
65897
65840
  }
65898
65841
  }
65899
65842
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoSlideComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
65900
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoSlideComponent, isStandalone: false, selector: "po-slide", host: { listeners: { "window:resize": "onResize()" } }, queries: [{ propertyName: "slideContentTemplate", first: true, predicate: PoSlideContentTemplateDirective, descendants: true, static: true }], viewQueries: [{ propertyName: "slide", first: true, predicate: ["slide"], descendants: true, static: true }, { propertyName: "itemsElements", predicate: PoSlideItemComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"po-slide-wrapper\">\n <div class=\"po-slide-outer\">\n <div class=\"po-slide-inner\" #slide>\n @for (item of slideItems; track item; let index = $index) {\n <po-slide-item\n [p-action]=\"item.action\"\n [p-data]=\"item\"\n [p-image]=\"item.image\"\n [p-image-height]=\"imageHeight\"\n [p-template]=\"slideContentTemplate\"\n [p-alt]=\"item.alt\"\n [p-link]=\"item.link\"\n >\n </po-slide-item>\n }\n </div>\n\n @if (!hideArrows && hasSlides && slides.length > 1) {\n <po-slide-control p-control=\"previous\" (p-click)=\"previousControl()\"> </po-slide-control>\n }\n\n @if (!hideArrows && hasSlides && slides.length > 1) {\n <po-slide-control p-control=\"next\" (p-click)=\"nextControl()\"> </po-slide-control>\n }\n </div>\n\n @if (hasSlides && slides.length > 1) {\n <po-slide-circles [p-current-slide-index]=\"currentSlideIndex\" [p-items]=\"slideItems\" (p-click)=\"goToItem($event)\">\n </po-slide-circles>\n }\n</div>\n", dependencies: [{ kind: "component", type: PoSlideCirclesComponent, selector: "po-slide-circles", inputs: ["p-current-slide-index", "p-items"], outputs: ["p-click"] }, { kind: "component", type: PoSlideControlComponent, selector: "po-slide-control", inputs: ["p-control"], outputs: ["p-click"] }, { kind: "component", type: PoSlideItemComponent, selector: "po-slide-item", inputs: ["p-action", "p-alt", "p-data", "p-image", "p-image-height", "p-template", "p-link"] }] });
65843
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoSlideComponent, isStandalone: false, selector: "po-slide", host: { listeners: { "window:resize": "onResize()" } }, queries: [{ propertyName: "slideContentTemplate", first: true, predicate: PoSlideContentTemplateDirective, descendants: true, static: true }], viewQueries: [{ propertyName: "slide", first: true, predicate: ["slide"], descendants: true, static: true }, { propertyName: "itemsElements", predicate: PoSlideItemComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"po-slide-wrapper\">\n <div class=\"po-slide-outer\">\n <div class=\"po-slide-inner\" #slide>\n @for (item of slideItems; track $index; let index = $index) {\n <po-slide-item\n [p-action]=\"item.action\"\n [p-data]=\"item\"\n [p-image]=\"item.image\"\n [p-image-height]=\"imageHeight\"\n [p-template]=\"slideContentTemplate\"\n [p-alt]=\"item.alt\"\n [p-link]=\"item.link\"\n >\n </po-slide-item>\n }\n </div>\n\n @if (!hideArrows && hasSlides && slides.length > 1) {\n <po-slide-control p-control=\"previous\" (p-click)=\"previousControl()\"> </po-slide-control>\n }\n\n @if (!hideArrows && hasSlides && slides.length > 1) {\n <po-slide-control p-control=\"next\" (p-click)=\"nextControl()\"> </po-slide-control>\n }\n </div>\n\n @if (hasSlides && slides.length > 1) {\n <po-slide-circles [p-current-slide-index]=\"currentSlideIndex\" [p-items]=\"slideItems\" (p-click)=\"goToItem($event)\">\n </po-slide-circles>\n }\n</div>\n", dependencies: [{ kind: "component", type: PoSlideCirclesComponent, selector: "po-slide-circles", inputs: ["p-current-slide-index", "p-items"], outputs: ["p-click"] }, { kind: "component", type: PoSlideControlComponent, selector: "po-slide-control", inputs: ["p-control"], outputs: ["p-click"] }, { kind: "component", type: PoSlideItemComponent, selector: "po-slide-item", inputs: ["p-action", "p-alt", "p-data", "p-image", "p-image-height", "p-template", "p-link"] }] });
65901
65844
  }
65902
65845
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoSlideComponent, decorators: [{
65903
65846
  type: Component,
65904
- args: [{ selector: 'po-slide', standalone: false, template: "<div class=\"po-slide-wrapper\">\n <div class=\"po-slide-outer\">\n <div class=\"po-slide-inner\" #slide>\n @for (item of slideItems; track item; let index = $index) {\n <po-slide-item\n [p-action]=\"item.action\"\n [p-data]=\"item\"\n [p-image]=\"item.image\"\n [p-image-height]=\"imageHeight\"\n [p-template]=\"slideContentTemplate\"\n [p-alt]=\"item.alt\"\n [p-link]=\"item.link\"\n >\n </po-slide-item>\n }\n </div>\n\n @if (!hideArrows && hasSlides && slides.length > 1) {\n <po-slide-control p-control=\"previous\" (p-click)=\"previousControl()\"> </po-slide-control>\n }\n\n @if (!hideArrows && hasSlides && slides.length > 1) {\n <po-slide-control p-control=\"next\" (p-click)=\"nextControl()\"> </po-slide-control>\n }\n </div>\n\n @if (hasSlides && slides.length > 1) {\n <po-slide-circles [p-current-slide-index]=\"currentSlideIndex\" [p-items]=\"slideItems\" (p-click)=\"goToItem($event)\">\n </po-slide-circles>\n }\n</div>\n" }]
65847
+ args: [{ selector: 'po-slide', standalone: false, template: "<div class=\"po-slide-wrapper\">\n <div class=\"po-slide-outer\">\n <div class=\"po-slide-inner\" #slide>\n @for (item of slideItems; track $index; let index = $index) {\n <po-slide-item\n [p-action]=\"item.action\"\n [p-data]=\"item\"\n [p-image]=\"item.image\"\n [p-image-height]=\"imageHeight\"\n [p-template]=\"slideContentTemplate\"\n [p-alt]=\"item.alt\"\n [p-link]=\"item.link\"\n >\n </po-slide-item>\n }\n </div>\n\n @if (!hideArrows && hasSlides && slides.length > 1) {\n <po-slide-control p-control=\"previous\" (p-click)=\"previousControl()\"> </po-slide-control>\n }\n\n @if (!hideArrows && hasSlides && slides.length > 1) {\n <po-slide-control p-control=\"next\" (p-click)=\"nextControl()\"> </po-slide-control>\n }\n </div>\n\n @if (hasSlides && slides.length > 1) {\n <po-slide-circles [p-current-slide-index]=\"currentSlideIndex\" [p-items]=\"slideItems\" (p-click)=\"goToItem($event)\">\n </po-slide-circles>\n }\n</div>\n" }]
65905
65848
  }], propDecorators: { slideContentTemplate: [{
65906
65849
  type: ContentChild,
65907
65850
  args: [PoSlideContentTemplateDirective, { static: true }]
@@ -68203,11 +68146,11 @@ class PoContextTabButtonComponent extends PoTabButtonComponent {
68203
68146
  this.activeCloseIcon = false;
68204
68147
  }
68205
68148
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoContextTabButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
68206
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", type: PoContextTabButtonComponent, isStandalone: false, selector: "po-context-tab-button", inputs: { hideClose: ["p-hide-close", "hideClose"], showTooltip: ["p-show-tooltip", "showTooltip"], literals: ["p-literals", "literals"] }, outputs: { close: "p-close", changeVisible: "p-change-visible" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n #tabButtom\n role=\"tab\"\n [p-tooltip]=\"widthButton > 239 || showTooltip ? label : ''\"\n p-tooltip-position=\"top\"\n class=\"po-tab-button-default\"\n [id]=\"id\"\n [ngClass]=\"{ 'po-tab-focusable': !disabled && !hide }\"\n [attr.tabindex]=\"disabled ? null : 0\"\n [attr.aria-selected]=\"active\"\n [class.po-tab-button-active]=\"active\"\n [class.po-tab-button-disabled]=\"disabled\"\n (click)=\"onClick()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n (keyup.enter)=\"onClick()\"\n>\n <div class=\"po-tab-button-content\">\n <span [ngClass]=\"!hideClose ? 'po-context-tab-button-label' : 'po-tab-button-label'\" class=\"po-text-ellipsis\">\n {{ label }}\n </span>\n <div\n class=\"po-tab-button-content-close-icon\"\n *ngIf=\"!hideClose\"\n (click)=\"closeTab($event)\"\n (keydown)=\"closeTab($event)\"\n >\n <po-icon\n [tabIndex]=\"activeCloseIcon ? 0 : -1\"\n [attr.aria-label]=\"literals.close\"\n p-icon=\"ICON_CLOSE\"\n class=\"po-tab-button-icon-close\"\n ></po-icon>\n </div>\n </div>\n</div>\n<div [ngClass]=\"{ 'po-tab-border-active': active, 'po-tab-border-disabled': !active }\"></div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "directive", type: PoTooltipDirective, selector: "[p-tooltip]" }] });
68149
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PoContextTabButtonComponent, isStandalone: false, selector: "po-context-tab-button", inputs: { hideClose: ["p-hide-close", "hideClose"], showTooltip: ["p-show-tooltip", "showTooltip"], literals: ["p-literals", "literals"] }, outputs: { close: "p-close", changeVisible: "p-change-visible" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n #tabButtom\n role=\"tab\"\n [p-tooltip]=\"widthButton > 239 || showTooltip ? label : ''\"\n p-tooltip-position=\"top\"\n class=\"po-tab-button-default\"\n [id]=\"id\"\n [ngClass]=\"{ 'po-tab-focusable': !disabled && !hide }\"\n [attr.tabindex]=\"disabled ? null : 0\"\n [attr.aria-selected]=\"active\"\n [class.po-tab-button-active]=\"active\"\n [class.po-tab-button-disabled]=\"disabled\"\n (click)=\"onClick()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n (keyup.enter)=\"onClick()\"\n>\n <div class=\"po-tab-button-content\">\n <span [ngClass]=\"!hideClose ? 'po-context-tab-button-label' : 'po-tab-button-label'\" class=\"po-text-ellipsis\">\n {{ label }}\n </span>\n @if (!hideClose) {\n <div class=\"po-tab-button-content-close-icon\" (click)=\"closeTab($event)\" (keydown)=\"closeTab($event)\">\n <po-icon\n [tabIndex]=\"activeCloseIcon ? 0 : -1\"\n [attr.aria-label]=\"literals.close\"\n p-icon=\"ICON_CLOSE\"\n class=\"po-tab-button-icon-close\"\n ></po-icon>\n </div>\n }\n </div>\n</div>\n<div [ngClass]=\"{ 'po-tab-border-active': active, 'po-tab-border-disabled': !active }\"></div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "directive", type: PoTooltipDirective, selector: "[p-tooltip]" }] });
68207
68150
  }
68208
68151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PoContextTabButtonComponent, decorators: [{
68209
68152
  type: Component,
68210
- args: [{ selector: 'po-context-tab-button', standalone: false, template: "<div\n #tabButtom\n role=\"tab\"\n [p-tooltip]=\"widthButton > 239 || showTooltip ? label : ''\"\n p-tooltip-position=\"top\"\n class=\"po-tab-button-default\"\n [id]=\"id\"\n [ngClass]=\"{ 'po-tab-focusable': !disabled && !hide }\"\n [attr.tabindex]=\"disabled ? null : 0\"\n [attr.aria-selected]=\"active\"\n [class.po-tab-button-active]=\"active\"\n [class.po-tab-button-disabled]=\"disabled\"\n (click)=\"onClick()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n (keyup.enter)=\"onClick()\"\n>\n <div class=\"po-tab-button-content\">\n <span [ngClass]=\"!hideClose ? 'po-context-tab-button-label' : 'po-tab-button-label'\" class=\"po-text-ellipsis\">\n {{ label }}\n </span>\n <div\n class=\"po-tab-button-content-close-icon\"\n *ngIf=\"!hideClose\"\n (click)=\"closeTab($event)\"\n (keydown)=\"closeTab($event)\"\n >\n <po-icon\n [tabIndex]=\"activeCloseIcon ? 0 : -1\"\n [attr.aria-label]=\"literals.close\"\n p-icon=\"ICON_CLOSE\"\n class=\"po-tab-button-icon-close\"\n ></po-icon>\n </div>\n </div>\n</div>\n<div [ngClass]=\"{ 'po-tab-border-active': active, 'po-tab-border-disabled': !active }\"></div>\n" }]
68153
+ args: [{ selector: 'po-context-tab-button', standalone: false, template: "<div\n #tabButtom\n role=\"tab\"\n [p-tooltip]=\"widthButton > 239 || showTooltip ? label : ''\"\n p-tooltip-position=\"top\"\n class=\"po-tab-button-default\"\n [id]=\"id\"\n [ngClass]=\"{ 'po-tab-focusable': !disabled && !hide }\"\n [attr.tabindex]=\"disabled ? null : 0\"\n [attr.aria-selected]=\"active\"\n [class.po-tab-button-active]=\"active\"\n [class.po-tab-button-disabled]=\"disabled\"\n (click)=\"onClick()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n (keyup.enter)=\"onClick()\"\n>\n <div class=\"po-tab-button-content\">\n <span [ngClass]=\"!hideClose ? 'po-context-tab-button-label' : 'po-tab-button-label'\" class=\"po-text-ellipsis\">\n {{ label }}\n </span>\n @if (!hideClose) {\n <div class=\"po-tab-button-content-close-icon\" (click)=\"closeTab($event)\" (keydown)=\"closeTab($event)\">\n <po-icon\n [tabIndex]=\"activeCloseIcon ? 0 : -1\"\n [attr.aria-label]=\"literals.close\"\n p-icon=\"ICON_CLOSE\"\n class=\"po-tab-button-icon-close\"\n ></po-icon>\n </div>\n }\n </div>\n</div>\n<div [ngClass]=\"{ 'po-tab-border-active': active, 'po-tab-border-disabled': !active }\"></div>\n" }]
68211
68154
  }], propDecorators: { hideClose: [{
68212
68155
  type: Input,
68213
68156
  args: ['p-hide-close']