ng-prime-tools 1.1.23 → 1.1.26

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Pipe, EventEmitter, ViewChild, Output, Input, Component, NgModule, Injectable, Inject, HostListener, ChangeDetectionStrategy, ContentChild, Directive, ContentChildren, HostBinding } from '@angular/core';
2
+ import { Pipe, EventEmitter, ViewChild, Output, Input, Component, NgModule, Injectable, Inject, HostListener, ContentChild, Directive, ContentChildren, ChangeDetectionStrategy, HostBinding } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule, DOCUMENT, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';
5
5
  import * as i2 from '@angular/forms';
@@ -55,21 +55,19 @@ import { Subject, interval, BehaviorSubject } from 'rxjs';
55
55
  import { takeUntil, filter, debounceTime, distinctUntilChanged } from 'rxjs/operators';
56
56
  import * as i1$2 from '@angular/router';
57
57
  import { RouterModule, NavigationEnd } from '@angular/router';
58
- import * as i2$1 from 'primeng/popover';
59
- import { PopoverModule } from 'primeng/popover';
60
- import * as i2$2 from 'primeng/breadcrumb';
58
+ import * as i2$1 from 'primeng/breadcrumb';
61
59
  import { BreadcrumbModule } from 'primeng/breadcrumb';
62
60
  import * as i3$7 from 'primeng/confirmdialog';
63
61
  import { ConfirmDialogModule } from 'primeng/confirmdialog';
64
- import * as i2$3 from 'primeng/toast';
62
+ import * as i2$2 from 'primeng/toast';
65
63
  import { ToastModule } from 'primeng/toast';
66
- import * as i2$4 from 'primeng/dialog';
64
+ import * as i2$3 from 'primeng/dialog';
67
65
  import { DialogModule } from 'primeng/dialog';
68
- import * as i2$5 from 'primeng/accordion';
66
+ import * as i2$4 from 'primeng/accordion';
69
67
  import { AccordionModule } from 'primeng/accordion';
70
68
  import * as i5$1 from 'primeng/menu';
71
69
  import { MenuModule } from 'primeng/menu';
72
- import * as i2$6 from 'primeng/paginator';
70
+ import * as i2$5 from 'primeng/paginator';
73
71
  import { PaginatorModule } from 'primeng/paginator';
74
72
 
75
73
  /**
@@ -6519,11 +6517,11 @@ class PTNotificationComponent {
6519
6517
  return String(value).padStart(2, '0');
6520
6518
  }
6521
6519
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6522
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTNotificationComponent, isStandalone: false, selector: "pt-notification", inputs: { notifications: "notifications", config: "config", totalRecords: "totalRecords", totalUnreadRecords: "totalUnreadRecords", page: "page", rows: "rows", loading: "loading" }, outputs: { notificationClick: "notificationClick", action: "action", globalAction: "globalAction", viewAll: "viewAll", panelOpened: "panelOpened", panelClosed: "panelClosed", loadMore: "loadMore" }, host: { listeners: { "document:click": "onDocumentClick()" } }, ngImport: i0, template: "@if (isVisible()) {\n <div class=\"pt-notification\">\n <button\n type=\"button\"\n class=\"pt-notification-trigger\"\n [attr.aria-expanded]=\"isOpen\"\n aria-label=\"Notifications\"\n (click)=\"togglePanel($event)\"\n >\n <i [class]=\"getBellIcon()\"></i>\n\n @if (showBadge()) {\n <span class=\"pt-notification-badge\">\n {{ getBadgeText() }}\n </span>\n }\n </button>\n\n @if (isOpen) {\n <div\n class=\"pt-notification-panel\"\n [ngStyle]=\"getPanelStyles()\"\n (click)=\"onPanelClick($event)\"\n >\n <div class=\"pt-notification-header\">\n <div class=\"pt-notification-header-left\">\n <div class=\"pt-notification-header-title\">\n {{ getTitle() }}\n </div>\n\n @if (showHeaderCount()) {\n <span class=\"pt-notification-header-count\">\n {{ getUnreadCount() }}\n </span>\n }\n </div>\n\n @if (showGlobalActions()) {\n <div\n class=\"pt-notification-global-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notification-global-more-button\"\n aria-label=\"Notification global actions\"\n (click)=\"toggleGlobalActionMenu($event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isGlobalActionMenuOpen) {\n <div\n class=\"pt-notification-global-action-menu\"\n (click)=\"onGlobalActionMenuClick($event)\"\n >\n @for (menuAction of getGlobalActions(); track menuAction.id) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onGlobalActionClick(menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n\n @if (hasNotifications()) {\n <div\n class=\"pt-notification-list\"\n [ngStyle]=\"getListStyles()\"\n (scroll)=\"onListScroll($event)\"\n >\n @for (notification of getNotifications(); track notification.id) {\n <div\n [class]=\"getNotificationClasses(notification)\"\n (click)=\"onNotificationClick(notification, $event)\"\n >\n <div class=\"pt-notification-item-icon-wrapper\">\n <div class=\"pt-notification-item-icon\">\n <i\n [class]=\"getNotificationIcon(notification)\"\n [ngStyle]=\"getNotificationIconStyles(notification)\"\n ></i>\n </div>\n </div>\n\n <div class=\"pt-notification-item-content\">\n <div class=\"pt-notification-item-text\">\n {{ notification.text }}\n </div>\n\n @if (hasMetadata(notification)) {\n <div class=\"pt-notification-item-metadata\">\n @if (notification.date) {\n <span class=\"pt-notification-item-date\">\n <i class=\"pi pi-clock\"></i>\n\n {{ getDateText(notification) }}\n </span>\n }\n\n @if (notification.sender) {\n <span class=\"pt-notification-item-sender\">\n <i class=\"pi pi-user\"></i>\n\n {{ notification.sender }}\n </span>\n }\n </div>\n }\n </div>\n\n @if (hasActions(notification)) {\n <div\n class=\"pt-notification-item-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notification-more-button\"\n aria-label=\"Notification actions\"\n [disabled]=\"notification.disabled\"\n (click)=\"toggleActionMenu(notification, $event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isActionMenuOpen(notification)) {\n <div\n class=\"pt-notification-action-menu\"\n (click)=\"onActionMenuClick($event)\"\n >\n @for (\n menuAction of getActions(notification);\n track menuAction.id\n ) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"\n onActionClick(notification, menuAction, $event)\n \"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (notification.read !== true) {\n <span class=\"pt-notification-unread-indicator\"></span>\n }\n </div>\n }\n\n @if (showInfiniteScrollLoader()) {\n <div class=\"pt-notification-load-more\">\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n </div>\n }\n </div>\n } @else {\n <div class=\"pt-notification-empty\">\n @if (loading) {\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n } @else {\n <i class=\"pi pi-bell-slash\"></i>\n\n <span>\n {{ getEmptyText() }}\n </span>\n }\n </div>\n }\n\n @if (showViewAll()) {\n <div class=\"pt-notification-footer\">\n <button\n type=\"button\"\n class=\"pt-notification-view-all\"\n (click)=\"onViewAllClick($event)\"\n >\n <span>\n {{ getViewAllText() }}\n </span>\n\n <i [class]=\"getViewAllIcon()\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n}\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center}.pt-notification{position:relative;display:inline-flex;align-items:center;justify-content:center}.pt-notification-trigger{position:relative;width:40px;height:40px;min-width:40px;padding:0;border:none;border-radius:999px;background:transparent;color:var(--pt-notification-bell-color, #475569);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;transition:background-color .2s ease,color .2s ease}.pt-notification-trigger:hover{background:var(--pt-notification-bell-hover-bg, #f1f5f9);color:var(--pt-notification-bell-hover-color, #0f172a)}.pt-notification-trigger:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-notification-bell-focus-shadow, rgba(37, 99, 235, .16))}.pt-notification-trigger>i{font-size:1.25rem;line-height:1}.pt-notification-badge{position:absolute;top:-1px;right:-3px;min-width:18px;height:18px;padding:0 4px;border:2px solid var(--pt-notification-badge-border, #ffffff);border-radius:999px;background:var(--pt-notification-badge-bg, #dc2626);color:var(--pt-notification-badge-text, #ffffff);display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-size:.65rem;font-weight:800;line-height:1;pointer-events:none}.pt-notification-panel{position:absolute;top:calc(100% + 10px);right:0;min-width:320px;max-width:min(420px,calc(100vw - 24px));background:var(--pt-notification-panel-bg, #ffffff);color:var(--pt-notification-panel-text, #334155);border:1px solid var(--pt-notification-panel-border, #e2e8f0);border-radius:14px;box-shadow:var( --pt-notification-panel-shadow, 0 18px 45px rgba(15, 23, 42, .16) );box-sizing:border-box;overflow:visible;z-index:10000}.pt-notification-header{min-height:52px;padding:0 16px;border-bottom:1px solid var(--pt-notification-header-border, #e2e8f0);display:flex;align-items:center;justify-content:space-between;gap:12px;box-sizing:border-box}.pt-notification-header-title{min-width:0;color:var(--pt-notification-header-title, #0f172a);font-size:.95rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-notification-header-count{min-width:24px;height:24px;padding:0 7px;border-radius:999px;background:var(--pt-notification-header-count-bg, #eff6ff);color:var(--pt-notification-header-count-text, #2563eb);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;box-sizing:border-box;font-size:.75rem;font-weight:800;line-height:1}.pt-notification-list{overflow-y:auto;overflow-x:visible;overscroll-behavior:contain}.pt-notification-item{position:relative;display:grid;grid-template-columns:42px minmax(0,1fr) 34px;align-items:flex-start;gap:10px;min-height:76px;padding:13px 14px 13px 12px;border-bottom:1px solid var(--pt-notification-item-border, #f1f5f9);background:var(--pt-notification-item-bg, #ffffff);cursor:pointer;box-sizing:border-box;transition:background-color .15s ease}.pt-notification-item:last-child{border-bottom:none}.pt-notification-item:hover{background:var(--pt-notification-item-hover-bg, #f8fafc)}.pt-notification-item.unread{background:var(--pt-notification-item-unread-bg, #f8fbff)}.pt-notification-item.unread:hover{background:var(--pt-notification-item-unread-hover-bg, #f1f7ff)}.pt-notification-item.disabled{opacity:.55;cursor:not-allowed}.pt-notification-item-icon-wrapper{display:flex;justify-content:center;align-items:flex-start}.pt-notification-item-icon{width:38px;height:38px;min-width:38px;border-radius:999px;background:var(--pt-notification-item-icon-bg, #eff6ff);display:flex;align-items:center;justify-content:center;box-sizing:border-box}.pt-notification-item-icon i{font-size:1rem;line-height:1}.pt-notification-item-content{min-width:0;padding-top:1px}.pt-notification-item-text{color:var(--pt-notification-item-text, #1e293b);font-size:.86rem;font-weight:600;line-height:1.4;overflow-wrap:anywhere}.pt-notification-item.unread .pt-notification-item-text{color:var(--pt-notification-item-unread-text, #0f172a);font-weight:700}.pt-notification-item-metadata{margin-top:6px;display:flex;flex-wrap:wrap;align-items:center;gap:5px 12px;color:var(--pt-notification-metadata-text, #94a3b8);font-size:.71rem;font-weight:500;line-height:1.3}.pt-notification-item-date,.pt-notification-item-sender{min-width:0;display:inline-flex;align-items:center;gap:4px}.pt-notification-item-date i,.pt-notification-item-sender i{flex:0 0 auto;font-size:.68rem}.pt-notification-item-sender{max-width:160px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pt-notification-item-actions{position:relative;display:flex;justify-content:flex-end;align-items:flex-start}.pt-notification-more-button{width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-more-color, #64748b);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;transition:background-color .15s ease,color .15s ease}.pt-notification-more-button:hover{background:var(--pt-notification-more-hover-bg, #e2e8f0);color:var(--pt-notification-more-hover-color, #0f172a)}.pt-notification-more-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-notification-action-focus-shadow, rgba(37, 99, 235, .14))}.pt-notification-more-button:disabled{opacity:.5;cursor:not-allowed}.pt-notification-more-button i{font-size:.95rem;line-height:1}.pt-notification-action-menu{position:absolute;top:34px;right:0;width:200px;padding:5px;background:var(--pt-notification-action-menu-bg, #ffffff);border:1px solid var(--pt-notification-action-menu-border, #e2e8f0);border-radius:10px;box-shadow:var( --pt-notification-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10002}.pt-notification-action-menu-item{width:100%;min-height:36px;padding:7px 9px;border:none;border-radius:7px;background:transparent;color:var(--pt-notification-action-text, #334155);display:flex;align-items:center;gap:8px;box-sizing:border-box;text-align:left;cursor:pointer;font-size:.78rem;font-weight:600;transition:background-color .15s ease,color .15s ease}.pt-notification-action-menu-item:hover{background:var(--pt-notification-action-hover-bg, #f1f5f9);color:var(--pt-notification-action-hover-text, #0f172a)}.pt-notification-action-menu-item:focus-visible{outline:none;box-shadow:0 0 0 2px var(--pt-notification-action-focus-shadow, rgba(37, 99, 235, .14))}.pt-notification-action-menu-item.danger{color:var(--pt-notification-action-danger-text, #dc2626)}.pt-notification-action-menu-item.danger:hover{background:var(--pt-notification-action-danger-hover-bg, #fef2f2);color:var(--pt-notification-action-danger-hover-text, #b91c1c)}.pt-notification-action-menu-item.disabled,.pt-notification-action-menu-item:disabled{opacity:.5;cursor:not-allowed}.pt-notification-action-menu-item i{width:16px;flex:0 0 16px;font-size:.82rem;text-align:center}.pt-notification-action-menu-item span{min-width:0;flex:1 1 auto}.pt-notification-unread-indicator{position:absolute;top:50%;right:4px;width:6px;height:6px;border-radius:999px;background:var(--pt-notification-unread-indicator, #2563eb);transform:translateY(-50%);pointer-events:none}.pt-notification-empty{min-height:160px;padding:25px;color:var(--pt-notification-empty-text, #94a3b8);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;box-sizing:border-box;text-align:center}.pt-notification-empty i{font-size:1.8rem}.pt-notification-empty span{font-size:.84rem;font-weight:600}@media(max-width:520px){.pt-notification-panel{position:fixed;top:60px;right:8px;left:8px;width:auto!important;min-width:0;max-width:none}.pt-notification-item{grid-template-columns:38px minmax(0,1fr) 32px;gap:8px;padding-right:13px}.pt-notification-item-icon{width:36px;height:36px;min-width:36px}.pt-notification-item-metadata{flex-direction:column;align-items:flex-start;gap:4px}.pt-notification-item-sender{max-width:190px}.pt-notification-action-menu{right:0;width:190px}}.pt-notification-header-left{display:flex;align-items:center;gap:8px;min-width:0}.pt-notification-global-actions{position:relative;display:flex;align-items:center;justify-content:flex-end;flex:0 0 auto}.pt-notification-global-more-button{width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-global-more-color, #64748b);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-sizing:border-box;transition:background-color .15s ease,color .15s ease}.pt-notification-global-more-button:hover{background:var(--pt-notification-global-more-hover-bg, #f1f5f9);color:var(--pt-notification-global-more-hover-color, #0f172a)}.pt-notification-global-more-button i{font-size:.95rem}.pt-notification-global-action-menu{position:absolute;top:36px;right:0;width:210px;padding:5px;background:var(--pt-notification-action-menu-bg, #ffffff);border:1px solid var(--pt-notification-action-menu-border, #e2e8f0);border-radius:10px;box-shadow:var( --pt-notification-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10003}.pt-notification-footer{min-height:50px;padding:7px;border-top:1px solid var(--pt-notification-footer-border, #e2e8f0);background:var(--pt-notification-footer-bg, #ffffff);display:flex;align-items:center;justify-content:center;box-sizing:border-box}.pt-notification-view-all{width:100%;min-height:36px;padding:7px 12px;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-view-all-text, #2563eb);display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;font-size:.82rem;font-weight:700;box-sizing:border-box;transition:background-color .15s ease,color .15s ease}.pt-notification-view-all:hover{background:var(--pt-notification-view-all-hover-bg, #eff6ff);color:var(--pt-notification-view-all-hover-text, #1d4ed8)}.pt-notification-view-all i{font-size:.75rem}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
6520
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTNotificationComponent, isStandalone: false, selector: "pt-notification", inputs: { notifications: "notifications", config: "config", totalRecords: "totalRecords", totalUnreadRecords: "totalUnreadRecords", page: "page", rows: "rows", loading: "loading" }, outputs: { notificationClick: "notificationClick", action: "action", globalAction: "globalAction", viewAll: "viewAll", panelOpened: "panelOpened", panelClosed: "panelClosed", loadMore: "loadMore" }, host: { listeners: { "document:click": "onDocumentClick()" } }, ngImport: i0, template: "@if (isVisible()) {\n <div class=\"pt-notification\">\n <button\n type=\"button\"\n class=\"pt-notification-trigger\"\n [attr.aria-expanded]=\"isOpen\"\n aria-label=\"Notifications\"\n (click)=\"togglePanel($event)\"\n >\n <i [class]=\"getBellIcon()\"></i>\n\n @if (showBadge()) {\n <span class=\"pt-notification-badge\">\n {{ getBadgeText() }}\n </span>\n }\n </button>\n\n @if (isOpen) {\n <div\n class=\"pt-notification-panel\"\n [ngStyle]=\"getPanelStyles()\"\n (click)=\"onPanelClick($event)\"\n >\n <div class=\"pt-notification-header\">\n <div class=\"pt-notification-header-left\">\n <div class=\"pt-notification-header-title\">\n {{ getTitle() }}\n </div>\n\n @if (showHeaderCount()) {\n <span class=\"pt-notification-header-count\">\n {{ getUnreadCount() }}\n </span>\n }\n </div>\n\n @if (showGlobalActions()) {\n <div\n class=\"pt-notification-global-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notification-global-more-button\"\n aria-label=\"Notification global actions\"\n (click)=\"toggleGlobalActionMenu($event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isGlobalActionMenuOpen) {\n <div\n class=\"pt-notification-global-action-menu\"\n (click)=\"onGlobalActionMenuClick($event)\"\n >\n @for (menuAction of getGlobalActions(); track menuAction.id) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onGlobalActionClick(menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n\n @if (hasNotifications()) {\n <div\n class=\"pt-notification-list\"\n [ngStyle]=\"getListStyles()\"\n (scroll)=\"onListScroll($event)\"\n >\n @for (notification of getNotifications(); track notification.id) {\n <div\n [class]=\"getNotificationClasses(notification)\"\n (click)=\"onNotificationClick(notification, $event)\"\n >\n <div class=\"pt-notification-item-icon-wrapper\">\n <div class=\"pt-notification-item-icon\">\n <i\n [class]=\"getNotificationIcon(notification)\"\n [ngStyle]=\"getNotificationIconStyles(notification)\"\n ></i>\n </div>\n </div>\n\n <div class=\"pt-notification-item-content\">\n <div class=\"pt-notification-item-text\">\n {{ notification.text }}\n </div>\n\n @if (hasMetadata(notification)) {\n <div class=\"pt-notification-item-metadata\">\n @if (notification.date) {\n <span class=\"pt-notification-item-date\">\n <i class=\"pi pi-clock\"></i>\n\n {{ getDateText(notification) }}\n </span>\n }\n\n @if (notification.sender) {\n <span class=\"pt-notification-item-sender\">\n <i class=\"pi pi-user\"></i>\n\n {{ notification.sender }}\n </span>\n }\n </div>\n }\n </div>\n\n @if (hasActions(notification)) {\n <div\n class=\"pt-notification-item-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notification-more-button\"\n aria-label=\"Notification actions\"\n [disabled]=\"notification.disabled\"\n (click)=\"toggleActionMenu(notification, $event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isActionMenuOpen(notification)) {\n <div\n class=\"pt-notification-action-menu\"\n (click)=\"onActionMenuClick($event)\"\n >\n @for (\n menuAction of getActions(notification);\n track menuAction.id\n ) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"\n onActionClick(notification, menuAction, $event)\n \"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (notification.read !== true) {\n <span class=\"pt-notification-unread-indicator\"></span>\n }\n </div>\n }\n\n @if (showInfiniteScrollLoader()) {\n <div class=\"pt-notification-load-more\">\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n </div>\n }\n </div>\n } @else {\n <div class=\"pt-notification-empty\">\n @if (loading) {\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n } @else {\n <i class=\"pi pi-bell-slash\"></i>\n\n <span>\n {{ getEmptyText() }}\n </span>\n }\n </div>\n }\n\n @if (showViewAll()) {\n <div class=\"pt-notification-footer\">\n <button\n type=\"button\"\n class=\"pt-notification-view-all\"\n (click)=\"onViewAllClick($event)\"\n >\n <span>\n {{ getViewAllText() }}\n </span>\n\n <i [class]=\"getViewAllIcon()\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n}\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center}.pt-notification{position:relative;display:inline-flex;align-items:center;justify-content:center}.pt-notification-trigger{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;padding:0;border:none;border-radius:999px;background:transparent;color:var(--pt-notification-bell-color, #475569);box-sizing:border-box;cursor:pointer;transition:background-color .2s ease,color .2s ease}.pt-notification-trigger:hover{background:var(--pt-notification-bell-hover-bg, #f1f5f9);color:var(--pt-notification-bell-hover-color, #0f172a)}.pt-notification-trigger:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-notification-bell-focus-shadow, rgba(37, 99, 235, .16))}.pt-notification-trigger>i{font-size:1.25rem;line-height:1}.pt-notification-badge{position:absolute;top:-2px;right:-4px;display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;padding:0 4px;border:2px solid var(--pt-notification-badge-border, #ffffff);border-radius:999px;background:var(--pt-notification-badge-bg, #dc2626);color:var(--pt-notification-badge-text, #ffffff);box-sizing:border-box;font-size:.65rem;font-weight:800;line-height:1;pointer-events:none}.pt-notification-panel{position:absolute;top:calc(100% + 10px);right:0;display:flex;flex-direction:column;width:min(500px,calc(100vw - 24px));min-width:360px;max-width:calc(100vw - 24px);border:1px solid var(--pt-notification-panel-border, #e2e8f0);border-radius:14px;background:var(--pt-notification-panel-bg, #ffffff);color:var(--pt-notification-panel-text, #334155);box-shadow:var( --pt-notification-panel-shadow, 0 18px 45px rgba(15, 23, 42, .16) );box-sizing:border-box;overflow:hidden;z-index:10000}.pt-notification-header{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;min-height:54px;padding:0 16px;border-bottom:1px solid var(--pt-notification-header-border, #e2e8f0);box-sizing:border-box;gap:12px}.pt-notification-header-left{display:flex;align-items:center;min-width:0;gap:8px}.pt-notification-header-title{min-width:0;color:var(--pt-notification-header-title, #0f172a);font-size:.95rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-notification-header-count{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:26px;height:26px;padding:0 7px;border-radius:999px;background:var(--pt-notification-header-count-bg, #eff6ff);color:var(--pt-notification-header-count-text, #2563eb);box-sizing:border-box;font-size:.75rem;font-weight:800;line-height:1}.pt-notification-global-actions{position:relative;display:flex;align-items:center;justify-content:center;flex:0 0 auto}.pt-notification-global-more-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-global-more-color, #64748b);box-sizing:border-box;cursor:pointer;transition:background-color .15s ease,color .15s ease}.pt-notification-global-more-button:hover{background:var(--pt-notification-global-more-hover-bg, #f1f5f9);color:var(--pt-notification-global-more-hover-color, #0f172a)}.pt-notification-global-more-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-notification-action-focus-shadow, rgba(37, 99, 235, .14))}.pt-notification-global-more-button i{font-size:.95rem}.pt-notification-global-action-menu{position:absolute;top:36px;right:0;width:210px;padding:5px;border:1px solid var(--pt-notification-action-menu-border, #e2e8f0);border-radius:10px;background:var(--pt-notification-action-menu-bg, #ffffff);box-shadow:var( --pt-notification-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10005}.pt-notification-list{display:block;width:100%;min-width:0;box-sizing:border-box;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.pt-notification-item{position:relative;display:grid;grid-template-columns:40px minmax(0,1fr) 32px;align-items:start;width:100%;min-width:0;gap:11px;min-height:76px;padding:14px 16px;border-bottom:1px solid var(--pt-notification-item-border, #f1f5f9);background:var(--pt-notification-item-bg, #ffffff);box-sizing:border-box;overflow:hidden;cursor:pointer;transition:background-color .15s ease}.pt-notification-item:last-child{border-bottom:none}.pt-notification-item:hover{background:var(--pt-notification-item-hover-bg, #f8fafc)}.pt-notification-item.unread{background:var(--pt-notification-item-unread-bg, #f8fbff)}.pt-notification-item.unread:hover{background:var(--pt-notification-item-unread-hover-bg, #f1f7ff)}.pt-notification-item.disabled{opacity:.55;cursor:not-allowed}.pt-notification-item-icon-wrapper{display:flex;align-items:flex-start;justify-content:center;width:40px;min-width:40px}.pt-notification-item-icon{display:flex;align-items:center;justify-content:center;width:38px;height:38px;min-width:38px;border-radius:999px;background:var(--pt-notification-item-icon-bg, #eff6ff);box-sizing:border-box}.pt-notification-item-icon i{font-size:1rem;line-height:1}.pt-notification-item-content{width:100%;min-width:0;max-width:100%;padding-top:1px;box-sizing:border-box;overflow:hidden}.pt-notification-item-text{display:block;width:100%;min-width:0;max-width:100%;color:var(--pt-notification-item-text, #1e293b);font-size:.86rem;font-weight:600;line-height:1.45;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.pt-notification-item.unread .pt-notification-item-text{color:var(--pt-notification-item-unread-text, #0f172a);font-weight:700}.pt-notification-item-metadata{display:flex;align-items:center;flex-wrap:wrap;width:100%;min-width:0;gap:5px 12px;margin-top:7px;color:var(--pt-notification-metadata-text, #94a3b8);font-size:.71rem;font-weight:500;line-height:1.3}.pt-notification-item-date,.pt-notification-item-sender{display:inline-flex;align-items:center;min-width:0;gap:4px}.pt-notification-item-date i,.pt-notification-item-sender i{flex:0 0 auto;font-size:.68rem}.pt-notification-item-sender{max-width:180px;white-space:normal;overflow-wrap:anywhere}.pt-notification-item-actions{position:relative;display:flex;align-items:flex-start;justify-content:center;width:32px;min-width:32px}.pt-notification-more-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-more-color, #64748b);box-sizing:border-box;cursor:pointer;transition:background-color .15s ease,color .15s ease}.pt-notification-more-button:hover:not(:disabled){background:var(--pt-notification-more-hover-bg, #e2e8f0);color:var(--pt-notification-more-hover-color, #0f172a)}.pt-notification-more-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-notification-action-focus-shadow, rgba(37, 99, 235, .14))}.pt-notification-more-button:disabled{opacity:.5;cursor:not-allowed}.pt-notification-more-button i{font-size:.95rem;line-height:1}.pt-notification-action-menu{position:absolute;top:34px;right:0;width:200px;padding:5px;border:1px solid var(--pt-notification-action-menu-border, #e2e8f0);border-radius:10px;background:var(--pt-notification-action-menu-bg, #ffffff);box-shadow:var( --pt-notification-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10006}.pt-notification-action-menu-item{display:flex;align-items:center;gap:8px;width:100%;min-height:36px;padding:7px 9px;border:none;border-radius:7px;background:transparent;color:var(--pt-notification-action-text, #334155);box-sizing:border-box;text-align:left;cursor:pointer;font-size:.78rem;font-weight:600;transition:background-color .15s ease,color .15s ease}.pt-notification-action-menu-item:hover:not(:disabled){background:var(--pt-notification-action-hover-bg, #f1f5f9);color:var(--pt-notification-action-hover-text, #0f172a)}.pt-notification-action-menu-item:focus-visible{outline:none;box-shadow:0 0 0 2px var(--pt-notification-action-focus-shadow, rgba(37, 99, 235, .14))}.pt-notification-action-menu-item.danger{color:var(--pt-notification-action-danger-text, #dc2626)}.pt-notification-action-menu-item.danger:hover:not(:disabled){background:var(--pt-notification-action-danger-hover-bg, #fef2f2);color:var(--pt-notification-action-danger-hover-text, #b91c1c)}.pt-notification-action-menu-item.disabled,.pt-notification-action-menu-item:disabled{opacity:.5;cursor:not-allowed}.pt-notification-action-menu-item i{width:16px;flex:0 0 16px;font-size:.82rem;text-align:center}.pt-notification-action-menu-item span{min-width:0;flex:1 1 auto}.pt-notification-unread-indicator{position:absolute;top:15px;right:7px;width:6px;height:6px;border-radius:999px;background:var(--pt-notification-unread-indicator, #2563eb);pointer-events:none}.pt-notification-load-more{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:10px 16px;color:var(--pt-notification-loading-text, #64748b);box-sizing:border-box;gap:8px;font-size:.78rem;font-weight:600}.pt-notification-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:160px;padding:25px;color:var(--pt-notification-empty-text, #94a3b8);box-sizing:border-box;gap:10px;text-align:center}.pt-notification-empty i{font-size:1.8rem}.pt-notification-empty span{font-size:.84rem;font-weight:600}.pt-notification-footer{display:flex;align-items:center;justify-content:center;width:100%;min-height:50px;padding:7px;border-top:1px solid var(--pt-notification-footer-border, #e2e8f0);background:var(--pt-notification-footer-bg, #ffffff);box-sizing:border-box}.pt-notification-view-all{display:flex;align-items:center;justify-content:center;width:100%;min-height:36px;padding:7px 12px;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-view-all-text, #2563eb);box-sizing:border-box;gap:8px;cursor:pointer;font-size:.82rem;font-weight:700;transition:background-color .15s ease,color .15s ease}.pt-notification-view-all:hover{background:var(--pt-notification-view-all-hover-bg, #eff6ff);color:var(--pt-notification-view-all-hover-text, #1d4ed8)}.pt-notification-view-all i{font-size:.75rem}@media(max-width:520px){.pt-notification-panel{position:fixed;top:60px;right:8px;left:8px;width:auto!important;min-width:0;max-width:none}.pt-notification-item{grid-template-columns:36px minmax(0,1fr) 30px;gap:8px;padding:12px}.pt-notification-item-icon-wrapper{width:36px;min-width:36px}.pt-notification-item-icon{width:34px;height:34px;min-width:34px}.pt-notification-item-metadata{flex-direction:column;align-items:flex-start;gap:4px}.pt-notification-item-sender{max-width:100%}.pt-notification-action-menu{right:0;width:190px}}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
6523
6521
  }
6524
6522
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationComponent, decorators: [{
6525
6523
  type: Component,
6526
- args: [{ selector: 'pt-notification', standalone: false, template: "@if (isVisible()) {\n <div class=\"pt-notification\">\n <button\n type=\"button\"\n class=\"pt-notification-trigger\"\n [attr.aria-expanded]=\"isOpen\"\n aria-label=\"Notifications\"\n (click)=\"togglePanel($event)\"\n >\n <i [class]=\"getBellIcon()\"></i>\n\n @if (showBadge()) {\n <span class=\"pt-notification-badge\">\n {{ getBadgeText() }}\n </span>\n }\n </button>\n\n @if (isOpen) {\n <div\n class=\"pt-notification-panel\"\n [ngStyle]=\"getPanelStyles()\"\n (click)=\"onPanelClick($event)\"\n >\n <div class=\"pt-notification-header\">\n <div class=\"pt-notification-header-left\">\n <div class=\"pt-notification-header-title\">\n {{ getTitle() }}\n </div>\n\n @if (showHeaderCount()) {\n <span class=\"pt-notification-header-count\">\n {{ getUnreadCount() }}\n </span>\n }\n </div>\n\n @if (showGlobalActions()) {\n <div\n class=\"pt-notification-global-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notification-global-more-button\"\n aria-label=\"Notification global actions\"\n (click)=\"toggleGlobalActionMenu($event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isGlobalActionMenuOpen) {\n <div\n class=\"pt-notification-global-action-menu\"\n (click)=\"onGlobalActionMenuClick($event)\"\n >\n @for (menuAction of getGlobalActions(); track menuAction.id) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onGlobalActionClick(menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n\n @if (hasNotifications()) {\n <div\n class=\"pt-notification-list\"\n [ngStyle]=\"getListStyles()\"\n (scroll)=\"onListScroll($event)\"\n >\n @for (notification of getNotifications(); track notification.id) {\n <div\n [class]=\"getNotificationClasses(notification)\"\n (click)=\"onNotificationClick(notification, $event)\"\n >\n <div class=\"pt-notification-item-icon-wrapper\">\n <div class=\"pt-notification-item-icon\">\n <i\n [class]=\"getNotificationIcon(notification)\"\n [ngStyle]=\"getNotificationIconStyles(notification)\"\n ></i>\n </div>\n </div>\n\n <div class=\"pt-notification-item-content\">\n <div class=\"pt-notification-item-text\">\n {{ notification.text }}\n </div>\n\n @if (hasMetadata(notification)) {\n <div class=\"pt-notification-item-metadata\">\n @if (notification.date) {\n <span class=\"pt-notification-item-date\">\n <i class=\"pi pi-clock\"></i>\n\n {{ getDateText(notification) }}\n </span>\n }\n\n @if (notification.sender) {\n <span class=\"pt-notification-item-sender\">\n <i class=\"pi pi-user\"></i>\n\n {{ notification.sender }}\n </span>\n }\n </div>\n }\n </div>\n\n @if (hasActions(notification)) {\n <div\n class=\"pt-notification-item-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notification-more-button\"\n aria-label=\"Notification actions\"\n [disabled]=\"notification.disabled\"\n (click)=\"toggleActionMenu(notification, $event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isActionMenuOpen(notification)) {\n <div\n class=\"pt-notification-action-menu\"\n (click)=\"onActionMenuClick($event)\"\n >\n @for (\n menuAction of getActions(notification);\n track menuAction.id\n ) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"\n onActionClick(notification, menuAction, $event)\n \"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (notification.read !== true) {\n <span class=\"pt-notification-unread-indicator\"></span>\n }\n </div>\n }\n\n @if (showInfiniteScrollLoader()) {\n <div class=\"pt-notification-load-more\">\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n </div>\n }\n </div>\n } @else {\n <div class=\"pt-notification-empty\">\n @if (loading) {\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n } @else {\n <i class=\"pi pi-bell-slash\"></i>\n\n <span>\n {{ getEmptyText() }}\n </span>\n }\n </div>\n }\n\n @if (showViewAll()) {\n <div class=\"pt-notification-footer\">\n <button\n type=\"button\"\n class=\"pt-notification-view-all\"\n (click)=\"onViewAllClick($event)\"\n >\n <span>\n {{ getViewAllText() }}\n </span>\n\n <i [class]=\"getViewAllIcon()\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n}\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center}.pt-notification{position:relative;display:inline-flex;align-items:center;justify-content:center}.pt-notification-trigger{position:relative;width:40px;height:40px;min-width:40px;padding:0;border:none;border-radius:999px;background:transparent;color:var(--pt-notification-bell-color, #475569);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;transition:background-color .2s ease,color .2s ease}.pt-notification-trigger:hover{background:var(--pt-notification-bell-hover-bg, #f1f5f9);color:var(--pt-notification-bell-hover-color, #0f172a)}.pt-notification-trigger:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-notification-bell-focus-shadow, rgba(37, 99, 235, .16))}.pt-notification-trigger>i{font-size:1.25rem;line-height:1}.pt-notification-badge{position:absolute;top:-1px;right:-3px;min-width:18px;height:18px;padding:0 4px;border:2px solid var(--pt-notification-badge-border, #ffffff);border-radius:999px;background:var(--pt-notification-badge-bg, #dc2626);color:var(--pt-notification-badge-text, #ffffff);display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-size:.65rem;font-weight:800;line-height:1;pointer-events:none}.pt-notification-panel{position:absolute;top:calc(100% + 10px);right:0;min-width:320px;max-width:min(420px,calc(100vw - 24px));background:var(--pt-notification-panel-bg, #ffffff);color:var(--pt-notification-panel-text, #334155);border:1px solid var(--pt-notification-panel-border, #e2e8f0);border-radius:14px;box-shadow:var( --pt-notification-panel-shadow, 0 18px 45px rgba(15, 23, 42, .16) );box-sizing:border-box;overflow:visible;z-index:10000}.pt-notification-header{min-height:52px;padding:0 16px;border-bottom:1px solid var(--pt-notification-header-border, #e2e8f0);display:flex;align-items:center;justify-content:space-between;gap:12px;box-sizing:border-box}.pt-notification-header-title{min-width:0;color:var(--pt-notification-header-title, #0f172a);font-size:.95rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-notification-header-count{min-width:24px;height:24px;padding:0 7px;border-radius:999px;background:var(--pt-notification-header-count-bg, #eff6ff);color:var(--pt-notification-header-count-text, #2563eb);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;box-sizing:border-box;font-size:.75rem;font-weight:800;line-height:1}.pt-notification-list{overflow-y:auto;overflow-x:visible;overscroll-behavior:contain}.pt-notification-item{position:relative;display:grid;grid-template-columns:42px minmax(0,1fr) 34px;align-items:flex-start;gap:10px;min-height:76px;padding:13px 14px 13px 12px;border-bottom:1px solid var(--pt-notification-item-border, #f1f5f9);background:var(--pt-notification-item-bg, #ffffff);cursor:pointer;box-sizing:border-box;transition:background-color .15s ease}.pt-notification-item:last-child{border-bottom:none}.pt-notification-item:hover{background:var(--pt-notification-item-hover-bg, #f8fafc)}.pt-notification-item.unread{background:var(--pt-notification-item-unread-bg, #f8fbff)}.pt-notification-item.unread:hover{background:var(--pt-notification-item-unread-hover-bg, #f1f7ff)}.pt-notification-item.disabled{opacity:.55;cursor:not-allowed}.pt-notification-item-icon-wrapper{display:flex;justify-content:center;align-items:flex-start}.pt-notification-item-icon{width:38px;height:38px;min-width:38px;border-radius:999px;background:var(--pt-notification-item-icon-bg, #eff6ff);display:flex;align-items:center;justify-content:center;box-sizing:border-box}.pt-notification-item-icon i{font-size:1rem;line-height:1}.pt-notification-item-content{min-width:0;padding-top:1px}.pt-notification-item-text{color:var(--pt-notification-item-text, #1e293b);font-size:.86rem;font-weight:600;line-height:1.4;overflow-wrap:anywhere}.pt-notification-item.unread .pt-notification-item-text{color:var(--pt-notification-item-unread-text, #0f172a);font-weight:700}.pt-notification-item-metadata{margin-top:6px;display:flex;flex-wrap:wrap;align-items:center;gap:5px 12px;color:var(--pt-notification-metadata-text, #94a3b8);font-size:.71rem;font-weight:500;line-height:1.3}.pt-notification-item-date,.pt-notification-item-sender{min-width:0;display:inline-flex;align-items:center;gap:4px}.pt-notification-item-date i,.pt-notification-item-sender i{flex:0 0 auto;font-size:.68rem}.pt-notification-item-sender{max-width:160px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pt-notification-item-actions{position:relative;display:flex;justify-content:flex-end;align-items:flex-start}.pt-notification-more-button{width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-more-color, #64748b);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;transition:background-color .15s ease,color .15s ease}.pt-notification-more-button:hover{background:var(--pt-notification-more-hover-bg, #e2e8f0);color:var(--pt-notification-more-hover-color, #0f172a)}.pt-notification-more-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-notification-action-focus-shadow, rgba(37, 99, 235, .14))}.pt-notification-more-button:disabled{opacity:.5;cursor:not-allowed}.pt-notification-more-button i{font-size:.95rem;line-height:1}.pt-notification-action-menu{position:absolute;top:34px;right:0;width:200px;padding:5px;background:var(--pt-notification-action-menu-bg, #ffffff);border:1px solid var(--pt-notification-action-menu-border, #e2e8f0);border-radius:10px;box-shadow:var( --pt-notification-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10002}.pt-notification-action-menu-item{width:100%;min-height:36px;padding:7px 9px;border:none;border-radius:7px;background:transparent;color:var(--pt-notification-action-text, #334155);display:flex;align-items:center;gap:8px;box-sizing:border-box;text-align:left;cursor:pointer;font-size:.78rem;font-weight:600;transition:background-color .15s ease,color .15s ease}.pt-notification-action-menu-item:hover{background:var(--pt-notification-action-hover-bg, #f1f5f9);color:var(--pt-notification-action-hover-text, #0f172a)}.pt-notification-action-menu-item:focus-visible{outline:none;box-shadow:0 0 0 2px var(--pt-notification-action-focus-shadow, rgba(37, 99, 235, .14))}.pt-notification-action-menu-item.danger{color:var(--pt-notification-action-danger-text, #dc2626)}.pt-notification-action-menu-item.danger:hover{background:var(--pt-notification-action-danger-hover-bg, #fef2f2);color:var(--pt-notification-action-danger-hover-text, #b91c1c)}.pt-notification-action-menu-item.disabled,.pt-notification-action-menu-item:disabled{opacity:.5;cursor:not-allowed}.pt-notification-action-menu-item i{width:16px;flex:0 0 16px;font-size:.82rem;text-align:center}.pt-notification-action-menu-item span{min-width:0;flex:1 1 auto}.pt-notification-unread-indicator{position:absolute;top:50%;right:4px;width:6px;height:6px;border-radius:999px;background:var(--pt-notification-unread-indicator, #2563eb);transform:translateY(-50%);pointer-events:none}.pt-notification-empty{min-height:160px;padding:25px;color:var(--pt-notification-empty-text, #94a3b8);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;box-sizing:border-box;text-align:center}.pt-notification-empty i{font-size:1.8rem}.pt-notification-empty span{font-size:.84rem;font-weight:600}@media(max-width:520px){.pt-notification-panel{position:fixed;top:60px;right:8px;left:8px;width:auto!important;min-width:0;max-width:none}.pt-notification-item{grid-template-columns:38px minmax(0,1fr) 32px;gap:8px;padding-right:13px}.pt-notification-item-icon{width:36px;height:36px;min-width:36px}.pt-notification-item-metadata{flex-direction:column;align-items:flex-start;gap:4px}.pt-notification-item-sender{max-width:190px}.pt-notification-action-menu{right:0;width:190px}}.pt-notification-header-left{display:flex;align-items:center;gap:8px;min-width:0}.pt-notification-global-actions{position:relative;display:flex;align-items:center;justify-content:flex-end;flex:0 0 auto}.pt-notification-global-more-button{width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-global-more-color, #64748b);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-sizing:border-box;transition:background-color .15s ease,color .15s ease}.pt-notification-global-more-button:hover{background:var(--pt-notification-global-more-hover-bg, #f1f5f9);color:var(--pt-notification-global-more-hover-color, #0f172a)}.pt-notification-global-more-button i{font-size:.95rem}.pt-notification-global-action-menu{position:absolute;top:36px;right:0;width:210px;padding:5px;background:var(--pt-notification-action-menu-bg, #ffffff);border:1px solid var(--pt-notification-action-menu-border, #e2e8f0);border-radius:10px;box-shadow:var( --pt-notification-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10003}.pt-notification-footer{min-height:50px;padding:7px;border-top:1px solid var(--pt-notification-footer-border, #e2e8f0);background:var(--pt-notification-footer-bg, #ffffff);display:flex;align-items:center;justify-content:center;box-sizing:border-box}.pt-notification-view-all{width:100%;min-height:36px;padding:7px 12px;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-view-all-text, #2563eb);display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;font-size:.82rem;font-weight:700;box-sizing:border-box;transition:background-color .15s ease,color .15s ease}.pt-notification-view-all:hover{background:var(--pt-notification-view-all-hover-bg, #eff6ff);color:var(--pt-notification-view-all-hover-text, #1d4ed8)}.pt-notification-view-all i{font-size:.75rem}\n"] }]
6524
+ args: [{ selector: 'pt-notification', standalone: false, template: "@if (isVisible()) {\n <div class=\"pt-notification\">\n <button\n type=\"button\"\n class=\"pt-notification-trigger\"\n [attr.aria-expanded]=\"isOpen\"\n aria-label=\"Notifications\"\n (click)=\"togglePanel($event)\"\n >\n <i [class]=\"getBellIcon()\"></i>\n\n @if (showBadge()) {\n <span class=\"pt-notification-badge\">\n {{ getBadgeText() }}\n </span>\n }\n </button>\n\n @if (isOpen) {\n <div\n class=\"pt-notification-panel\"\n [ngStyle]=\"getPanelStyles()\"\n (click)=\"onPanelClick($event)\"\n >\n <div class=\"pt-notification-header\">\n <div class=\"pt-notification-header-left\">\n <div class=\"pt-notification-header-title\">\n {{ getTitle() }}\n </div>\n\n @if (showHeaderCount()) {\n <span class=\"pt-notification-header-count\">\n {{ getUnreadCount() }}\n </span>\n }\n </div>\n\n @if (showGlobalActions()) {\n <div\n class=\"pt-notification-global-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notification-global-more-button\"\n aria-label=\"Notification global actions\"\n (click)=\"toggleGlobalActionMenu($event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isGlobalActionMenuOpen) {\n <div\n class=\"pt-notification-global-action-menu\"\n (click)=\"onGlobalActionMenuClick($event)\"\n >\n @for (menuAction of getGlobalActions(); track menuAction.id) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onGlobalActionClick(menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n\n @if (hasNotifications()) {\n <div\n class=\"pt-notification-list\"\n [ngStyle]=\"getListStyles()\"\n (scroll)=\"onListScroll($event)\"\n >\n @for (notification of getNotifications(); track notification.id) {\n <div\n [class]=\"getNotificationClasses(notification)\"\n (click)=\"onNotificationClick(notification, $event)\"\n >\n <div class=\"pt-notification-item-icon-wrapper\">\n <div class=\"pt-notification-item-icon\">\n <i\n [class]=\"getNotificationIcon(notification)\"\n [ngStyle]=\"getNotificationIconStyles(notification)\"\n ></i>\n </div>\n </div>\n\n <div class=\"pt-notification-item-content\">\n <div class=\"pt-notification-item-text\">\n {{ notification.text }}\n </div>\n\n @if (hasMetadata(notification)) {\n <div class=\"pt-notification-item-metadata\">\n @if (notification.date) {\n <span class=\"pt-notification-item-date\">\n <i class=\"pi pi-clock\"></i>\n\n {{ getDateText(notification) }}\n </span>\n }\n\n @if (notification.sender) {\n <span class=\"pt-notification-item-sender\">\n <i class=\"pi pi-user\"></i>\n\n {{ notification.sender }}\n </span>\n }\n </div>\n }\n </div>\n\n @if (hasActions(notification)) {\n <div\n class=\"pt-notification-item-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notification-more-button\"\n aria-label=\"Notification actions\"\n [disabled]=\"notification.disabled\"\n (click)=\"toggleActionMenu(notification, $event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isActionMenuOpen(notification)) {\n <div\n class=\"pt-notification-action-menu\"\n (click)=\"onActionMenuClick($event)\"\n >\n @for (\n menuAction of getActions(notification);\n track menuAction.id\n ) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"\n onActionClick(notification, menuAction, $event)\n \"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (notification.read !== true) {\n <span class=\"pt-notification-unread-indicator\"></span>\n }\n </div>\n }\n\n @if (showInfiniteScrollLoader()) {\n <div class=\"pt-notification-load-more\">\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n </div>\n }\n </div>\n } @else {\n <div class=\"pt-notification-empty\">\n @if (loading) {\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n } @else {\n <i class=\"pi pi-bell-slash\"></i>\n\n <span>\n {{ getEmptyText() }}\n </span>\n }\n </div>\n }\n\n @if (showViewAll()) {\n <div class=\"pt-notification-footer\">\n <button\n type=\"button\"\n class=\"pt-notification-view-all\"\n (click)=\"onViewAllClick($event)\"\n >\n <span>\n {{ getViewAllText() }}\n </span>\n\n <i [class]=\"getViewAllIcon()\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n}\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center}.pt-notification{position:relative;display:inline-flex;align-items:center;justify-content:center}.pt-notification-trigger{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;padding:0;border:none;border-radius:999px;background:transparent;color:var(--pt-notification-bell-color, #475569);box-sizing:border-box;cursor:pointer;transition:background-color .2s ease,color .2s ease}.pt-notification-trigger:hover{background:var(--pt-notification-bell-hover-bg, #f1f5f9);color:var(--pt-notification-bell-hover-color, #0f172a)}.pt-notification-trigger:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-notification-bell-focus-shadow, rgba(37, 99, 235, .16))}.pt-notification-trigger>i{font-size:1.25rem;line-height:1}.pt-notification-badge{position:absolute;top:-2px;right:-4px;display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;padding:0 4px;border:2px solid var(--pt-notification-badge-border, #ffffff);border-radius:999px;background:var(--pt-notification-badge-bg, #dc2626);color:var(--pt-notification-badge-text, #ffffff);box-sizing:border-box;font-size:.65rem;font-weight:800;line-height:1;pointer-events:none}.pt-notification-panel{position:absolute;top:calc(100% + 10px);right:0;display:flex;flex-direction:column;width:min(500px,calc(100vw - 24px));min-width:360px;max-width:calc(100vw - 24px);border:1px solid var(--pt-notification-panel-border, #e2e8f0);border-radius:14px;background:var(--pt-notification-panel-bg, #ffffff);color:var(--pt-notification-panel-text, #334155);box-shadow:var( --pt-notification-panel-shadow, 0 18px 45px rgba(15, 23, 42, .16) );box-sizing:border-box;overflow:hidden;z-index:10000}.pt-notification-header{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;min-height:54px;padding:0 16px;border-bottom:1px solid var(--pt-notification-header-border, #e2e8f0);box-sizing:border-box;gap:12px}.pt-notification-header-left{display:flex;align-items:center;min-width:0;gap:8px}.pt-notification-header-title{min-width:0;color:var(--pt-notification-header-title, #0f172a);font-size:.95rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-notification-header-count{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:26px;height:26px;padding:0 7px;border-radius:999px;background:var(--pt-notification-header-count-bg, #eff6ff);color:var(--pt-notification-header-count-text, #2563eb);box-sizing:border-box;font-size:.75rem;font-weight:800;line-height:1}.pt-notification-global-actions{position:relative;display:flex;align-items:center;justify-content:center;flex:0 0 auto}.pt-notification-global-more-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-global-more-color, #64748b);box-sizing:border-box;cursor:pointer;transition:background-color .15s ease,color .15s ease}.pt-notification-global-more-button:hover{background:var(--pt-notification-global-more-hover-bg, #f1f5f9);color:var(--pt-notification-global-more-hover-color, #0f172a)}.pt-notification-global-more-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-notification-action-focus-shadow, rgba(37, 99, 235, .14))}.pt-notification-global-more-button i{font-size:.95rem}.pt-notification-global-action-menu{position:absolute;top:36px;right:0;width:210px;padding:5px;border:1px solid var(--pt-notification-action-menu-border, #e2e8f0);border-radius:10px;background:var(--pt-notification-action-menu-bg, #ffffff);box-shadow:var( --pt-notification-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10005}.pt-notification-list{display:block;width:100%;min-width:0;box-sizing:border-box;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.pt-notification-item{position:relative;display:grid;grid-template-columns:40px minmax(0,1fr) 32px;align-items:start;width:100%;min-width:0;gap:11px;min-height:76px;padding:14px 16px;border-bottom:1px solid var(--pt-notification-item-border, #f1f5f9);background:var(--pt-notification-item-bg, #ffffff);box-sizing:border-box;overflow:hidden;cursor:pointer;transition:background-color .15s ease}.pt-notification-item:last-child{border-bottom:none}.pt-notification-item:hover{background:var(--pt-notification-item-hover-bg, #f8fafc)}.pt-notification-item.unread{background:var(--pt-notification-item-unread-bg, #f8fbff)}.pt-notification-item.unread:hover{background:var(--pt-notification-item-unread-hover-bg, #f1f7ff)}.pt-notification-item.disabled{opacity:.55;cursor:not-allowed}.pt-notification-item-icon-wrapper{display:flex;align-items:flex-start;justify-content:center;width:40px;min-width:40px}.pt-notification-item-icon{display:flex;align-items:center;justify-content:center;width:38px;height:38px;min-width:38px;border-radius:999px;background:var(--pt-notification-item-icon-bg, #eff6ff);box-sizing:border-box}.pt-notification-item-icon i{font-size:1rem;line-height:1}.pt-notification-item-content{width:100%;min-width:0;max-width:100%;padding-top:1px;box-sizing:border-box;overflow:hidden}.pt-notification-item-text{display:block;width:100%;min-width:0;max-width:100%;color:var(--pt-notification-item-text, #1e293b);font-size:.86rem;font-weight:600;line-height:1.45;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.pt-notification-item.unread .pt-notification-item-text{color:var(--pt-notification-item-unread-text, #0f172a);font-weight:700}.pt-notification-item-metadata{display:flex;align-items:center;flex-wrap:wrap;width:100%;min-width:0;gap:5px 12px;margin-top:7px;color:var(--pt-notification-metadata-text, #94a3b8);font-size:.71rem;font-weight:500;line-height:1.3}.pt-notification-item-date,.pt-notification-item-sender{display:inline-flex;align-items:center;min-width:0;gap:4px}.pt-notification-item-date i,.pt-notification-item-sender i{flex:0 0 auto;font-size:.68rem}.pt-notification-item-sender{max-width:180px;white-space:normal;overflow-wrap:anywhere}.pt-notification-item-actions{position:relative;display:flex;align-items:flex-start;justify-content:center;width:32px;min-width:32px}.pt-notification-more-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-more-color, #64748b);box-sizing:border-box;cursor:pointer;transition:background-color .15s ease,color .15s ease}.pt-notification-more-button:hover:not(:disabled){background:var(--pt-notification-more-hover-bg, #e2e8f0);color:var(--pt-notification-more-hover-color, #0f172a)}.pt-notification-more-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-notification-action-focus-shadow, rgba(37, 99, 235, .14))}.pt-notification-more-button:disabled{opacity:.5;cursor:not-allowed}.pt-notification-more-button i{font-size:.95rem;line-height:1}.pt-notification-action-menu{position:absolute;top:34px;right:0;width:200px;padding:5px;border:1px solid var(--pt-notification-action-menu-border, #e2e8f0);border-radius:10px;background:var(--pt-notification-action-menu-bg, #ffffff);box-shadow:var( --pt-notification-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10006}.pt-notification-action-menu-item{display:flex;align-items:center;gap:8px;width:100%;min-height:36px;padding:7px 9px;border:none;border-radius:7px;background:transparent;color:var(--pt-notification-action-text, #334155);box-sizing:border-box;text-align:left;cursor:pointer;font-size:.78rem;font-weight:600;transition:background-color .15s ease,color .15s ease}.pt-notification-action-menu-item:hover:not(:disabled){background:var(--pt-notification-action-hover-bg, #f1f5f9);color:var(--pt-notification-action-hover-text, #0f172a)}.pt-notification-action-menu-item:focus-visible{outline:none;box-shadow:0 0 0 2px var(--pt-notification-action-focus-shadow, rgba(37, 99, 235, .14))}.pt-notification-action-menu-item.danger{color:var(--pt-notification-action-danger-text, #dc2626)}.pt-notification-action-menu-item.danger:hover:not(:disabled){background:var(--pt-notification-action-danger-hover-bg, #fef2f2);color:var(--pt-notification-action-danger-hover-text, #b91c1c)}.pt-notification-action-menu-item.disabled,.pt-notification-action-menu-item:disabled{opacity:.5;cursor:not-allowed}.pt-notification-action-menu-item i{width:16px;flex:0 0 16px;font-size:.82rem;text-align:center}.pt-notification-action-menu-item span{min-width:0;flex:1 1 auto}.pt-notification-unread-indicator{position:absolute;top:15px;right:7px;width:6px;height:6px;border-radius:999px;background:var(--pt-notification-unread-indicator, #2563eb);pointer-events:none}.pt-notification-load-more{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:10px 16px;color:var(--pt-notification-loading-text, #64748b);box-sizing:border-box;gap:8px;font-size:.78rem;font-weight:600}.pt-notification-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:160px;padding:25px;color:var(--pt-notification-empty-text, #94a3b8);box-sizing:border-box;gap:10px;text-align:center}.pt-notification-empty i{font-size:1.8rem}.pt-notification-empty span{font-size:.84rem;font-weight:600}.pt-notification-footer{display:flex;align-items:center;justify-content:center;width:100%;min-height:50px;padding:7px;border-top:1px solid var(--pt-notification-footer-border, #e2e8f0);background:var(--pt-notification-footer-bg, #ffffff);box-sizing:border-box}.pt-notification-view-all{display:flex;align-items:center;justify-content:center;width:100%;min-height:36px;padding:7px 12px;border:none;border-radius:8px;background:transparent;color:var(--pt-notification-view-all-text, #2563eb);box-sizing:border-box;gap:8px;cursor:pointer;font-size:.82rem;font-weight:700;transition:background-color .15s ease,color .15s ease}.pt-notification-view-all:hover{background:var(--pt-notification-view-all-hover-bg, #eff6ff);color:var(--pt-notification-view-all-hover-text, #1d4ed8)}.pt-notification-view-all i{font-size:.75rem}@media(max-width:520px){.pt-notification-panel{position:fixed;top:60px;right:8px;left:8px;width:auto!important;min-width:0;max-width:none}.pt-notification-item{grid-template-columns:36px minmax(0,1fr) 30px;gap:8px;padding:12px}.pt-notification-item-icon-wrapper{width:36px;min-width:36px}.pt-notification-item-icon{width:34px;height:34px;min-width:34px}.pt-notification-item-metadata{flex-direction:column;align-items:flex-start;gap:4px}.pt-notification-item-sender{max-width:100%}.pt-notification-action-menu{right:0;width:190px}}\n"] }]
6527
6525
  }], propDecorators: { notifications: [{
6528
6526
  type: Input
6529
6527
  }], config: [{
@@ -6565,10 +6563,34 @@ class PTReleaseNotesComponent {
6565
6563
  this.hasMore = false;
6566
6564
  this.pageSize = 10;
6567
6565
  this.releaseClick = new EventEmitter();
6566
+ this.action = new EventEmitter();
6567
+ this.globalAction = new EventEmitter();
6568
6568
  this.viewAll = new EventEmitter();
6569
6569
  this.loadMore = new EventEmitter();
6570
+ this.panelOpened = new EventEmitter();
6571
+ this.panelClosed = new EventEmitter();
6572
+ this.isOpen = false;
6573
+ this.openedActionMenuId = null;
6574
+ this.isGlobalActionMenuOpen = false;
6570
6575
  this.currentPage = 0;
6571
6576
  this.loadMoreRequested = false;
6577
+ this.defaultActions = [
6578
+ {
6579
+ id: 'MARK_AS_READ',
6580
+ label: 'Marquer comme lue',
6581
+ icon: 'pi pi-check',
6582
+ },
6583
+ ];
6584
+ this.defaultGlobalActions = [
6585
+ {
6586
+ id: 'MARK_ALL_AS_READ',
6587
+ label: 'Tout marquer comme lu',
6588
+ icon: 'pi pi-check-circle',
6589
+ },
6590
+ ];
6591
+ }
6592
+ onDocumentClick() {
6593
+ this.closePanel();
6572
6594
  }
6573
6595
  ngOnChanges(changes) {
6574
6596
  if (changes['loading'] &&
@@ -6578,7 +6600,7 @@ class PTReleaseNotesComponent {
6578
6600
  }
6579
6601
  if (changes['releases'] &&
6580
6602
  !changes['releases'].firstChange &&
6581
- (this.releases ?? []).length === 0) {
6603
+ this.getReleases().length === 0) {
6582
6604
  this.currentPage = 0;
6583
6605
  this.loadMoreRequested = false;
6584
6606
  }
@@ -6591,19 +6613,19 @@ class PTReleaseNotesComponent {
6591
6613
  return {
6592
6614
  visible: this.config.visible ?? true,
6593
6615
  language: this.language,
6594
- title: this.config.title ?? (isFrench ? 'Nouveautés' : "What's new"),
6616
+ title: this.config.title ?? (isFrench ? 'Nouveautés' : 'Release notes'),
6595
6617
  emptyText: this.config.emptyText ??
6596
6618
  (isFrench
6597
6619
  ? 'Aucune nouveauté disponible'
6598
6620
  : 'No release notes available'),
6599
6621
  icon: this.config.icon ?? 'pi pi-sparkles',
6600
6622
  badgeLimit: this.config.badgeLimit ?? 99,
6601
- width: this.config.width ?? '430px',
6602
- maxHeight: this.config.maxHeight ?? '500px',
6623
+ width: this.config.width ?? '450px',
6624
+ maxHeight: this.config.maxHeight ?? '420px',
6603
6625
  showBadge: this.config.showBadge ?? true,
6604
6626
  showHeaderCount: this.config.showHeaderCount ?? true,
6605
6627
  closePanelOnReleaseClick: this.config.closePanelOnReleaseClick ?? false,
6606
- showViewAll: this.config.showViewAll ?? false,
6628
+ showViewAll: this.config.showViewAll ?? true,
6607
6629
  viewAllText: this.config.viewAllText ??
6608
6630
  (isFrench ? 'Voir toutes les versions' : 'View all releases'),
6609
6631
  viewAllIcon: this.config.viewAllIcon ?? 'pi pi-arrow-right',
@@ -6613,46 +6635,126 @@ class PTReleaseNotesComponent {
6613
6635
  improvementLabel: this.config.improvementLabel ??
6614
6636
  (isFrench ? 'Améliorations' : 'Improvements'),
6615
6637
  bugFixLabel: this.config.bugFixLabel ?? (isFrench ? 'Corrections' : 'Fixes'),
6616
- infiniteScroll: this.config.infiniteScroll ?? false,
6638
+ infiniteScroll: this.config.infiniteScroll ?? true,
6617
6639
  infiniteScrollThreshold: this.config.infiniteScrollThreshold ?? 80,
6618
- loadingText: this.config.loadingText ?? (isFrench ? 'Chargement...' : 'Loading...'),
6640
+ loadingText: this.config.loadingText ??
6641
+ (isFrench
6642
+ ? 'Chargement des nouveautés...'
6643
+ : 'Loading release notes...'),
6619
6644
  showDetailsText: this.config.showDetailsText ??
6620
6645
  (isFrench ? 'Afficher tous les détails' : 'Show all details'),
6621
6646
  hideDetailsText: this.config.hideDetailsText ??
6622
6647
  (isFrench ? 'Masquer les détails' : 'Hide details'),
6648
+ showActions: this.config.showActions ?? true,
6649
+ showGlobalActions: this.config.showGlobalActions ?? true,
6650
+ closeActionMenuOnAction: this.config.closeActionMenuOnAction ?? true,
6651
+ closeGlobalActionMenuOnAction: this.config.closeGlobalActionMenuOnAction ?? true,
6652
+ actions: this.config.actions ?? this.defaultActions,
6653
+ globalActions: this.config.globalActions ?? this.defaultGlobalActions,
6623
6654
  };
6624
6655
  }
6625
- get unreadCount() {
6656
+ isVisible() {
6657
+ return this.resolvedConfig.visible;
6658
+ }
6659
+ togglePanel(event) {
6660
+ event.stopPropagation();
6661
+ this.isOpen = !this.isOpen;
6662
+ this.closeMenus();
6663
+ if (this.isOpen) {
6664
+ this.loadMoreRequested = false;
6665
+ this.panelOpened.emit();
6666
+ return;
6667
+ }
6668
+ this.panelClosed.emit();
6669
+ }
6670
+ closePanel() {
6671
+ if (!this.isOpen) {
6672
+ return;
6673
+ }
6674
+ this.isOpen = false;
6675
+ this.closeMenus();
6676
+ this.loadMoreRequested = false;
6677
+ this.panelClosed.emit();
6678
+ }
6679
+ onPanelClick(event) {
6680
+ event.stopPropagation();
6681
+ this.closeMenus();
6682
+ }
6683
+ getReleases() {
6684
+ return this.releases ?? [];
6685
+ }
6686
+ hasReleases() {
6687
+ return this.getReleases().length > 0;
6688
+ }
6689
+ getUnreadCount() {
6626
6690
  if (this.totalUnreadRecords !== undefined) {
6627
6691
  return Math.max(0, this.totalUnreadRecords);
6628
6692
  }
6629
- return (this.releases ?? []).filter((release) => release.read !== true && release.disabled !== true).length;
6693
+ return this.getReleases().filter((release) => release.read !== true && release.disabled !== true).length;
6630
6694
  }
6631
- get badgeValue() {
6632
- const limit = this.resolvedConfig.badgeLimit;
6633
- return this.unreadCount > limit ? `${limit}+` : `${this.unreadCount}`;
6695
+ hasUnreadReleases() {
6696
+ return this.getUnreadCount() > 0;
6634
6697
  }
6635
- toggle(event) {
6636
- if (!this.resolvedConfig.visible) {
6637
- return;
6698
+ getBadgeText() {
6699
+ const count = this.getUnreadCount();
6700
+ const limit = this.resolvedConfig.badgeLimit;
6701
+ if (count > limit) {
6702
+ return `${limit}+`;
6638
6703
  }
6639
- this.releaseNotesPanel?.toggle(event);
6704
+ return `${count}`;
6705
+ }
6706
+ showBadge() {
6707
+ return this.resolvedConfig.showBadge && this.hasUnreadReleases();
6708
+ }
6709
+ showHeaderCount() {
6710
+ return this.resolvedConfig.showHeaderCount;
6711
+ }
6712
+ showViewAll() {
6713
+ return this.resolvedConfig.showViewAll;
6714
+ }
6715
+ showGlobalActions() {
6716
+ return (this.resolvedConfig.showGlobalActions &&
6717
+ this.getGlobalActions().length > 0);
6718
+ }
6719
+ getTitle() {
6720
+ return this.resolvedConfig.title;
6721
+ }
6722
+ getEmptyText() {
6723
+ return this.resolvedConfig.emptyText;
6724
+ }
6725
+ getLoadingText() {
6726
+ return this.resolvedConfig.loadingText;
6727
+ }
6728
+ getViewAllText() {
6729
+ return this.resolvedConfig.viewAllText;
6730
+ }
6731
+ getViewAllIcon() {
6732
+ return this.resolvedConfig.viewAllIcon;
6640
6733
  }
6641
- hide() {
6642
- this.releaseNotesPanel?.hide();
6734
+ getPanelStyles() {
6735
+ return {
6736
+ width: this.resolvedConfig.width,
6737
+ };
6738
+ }
6739
+ getListStyles() {
6740
+ return {
6741
+ maxHeight: this.resolvedConfig.maxHeight,
6742
+ };
6643
6743
  }
6644
- onReleaseClick(release) {
6744
+ getReleaseClasses(release) {
6745
+ const classes = ['pt-release-notes-item'];
6746
+ if (release.read !== true) {
6747
+ classes.push('unread');
6748
+ }
6645
6749
  if (release.disabled) {
6646
- return;
6750
+ classes.push('disabled');
6647
6751
  }
6648
- this.releaseClick.emit({
6649
- release,
6650
- });
6651
- if (this.resolvedConfig.closePanelOnReleaseClick) {
6652
- this.hide();
6752
+ if (release.styleClass) {
6753
+ classes.push(release.styleClass);
6653
6754
  }
6755
+ return classes.join(' ');
6654
6756
  }
6655
- onDetailsClick(event, release) {
6757
+ onReleaseClick(release, event) {
6656
6758
  event.stopPropagation();
6657
6759
  if (release.disabled) {
6658
6760
  return;
@@ -6660,77 +6762,183 @@ class PTReleaseNotesComponent {
6660
6762
  this.releaseClick.emit({
6661
6763
  release,
6662
6764
  });
6663
- const detailsUrl = release.detailsUrl?.trim();
6664
- if (!detailsUrl) {
6765
+ this.closePanel();
6766
+ }
6767
+ onReleaseKeyboardClick(release, event) {
6768
+ event.preventDefault();
6769
+ event.stopPropagation();
6770
+ this.onReleaseClick(release, event);
6771
+ }
6772
+ getActions(release) {
6773
+ const configuredActions = this.config.actions !== undefined
6774
+ ? this.config.actions
6775
+ : this.defaultActions;
6776
+ return configuredActions.filter((menuAction) => {
6777
+ if (menuAction.visible === false) {
6778
+ return false;
6779
+ }
6780
+ if (menuAction.id === 'MARK_AS_READ' && release.read === true) {
6781
+ return false;
6782
+ }
6783
+ return true;
6784
+ });
6785
+ }
6786
+ hasActions(release) {
6787
+ return (this.resolvedConfig.showActions &&
6788
+ !release.disabled &&
6789
+ this.getActions(release).length > 0);
6790
+ }
6791
+ toggleActionMenu(release, event) {
6792
+ event.stopPropagation();
6793
+ if (!this.hasActions(release)) {
6665
6794
  return;
6666
6795
  }
6667
- this.navigateToUrl(detailsUrl);
6668
- this.hide();
6796
+ this.isGlobalActionMenuOpen = false;
6797
+ if (this.openedActionMenuId === release.id) {
6798
+ this.openedActionMenuId = null;
6799
+ return;
6800
+ }
6801
+ this.openedActionMenuId = release.id;
6669
6802
  }
6670
- onViewAll() {
6671
- this.viewAll.emit();
6672
- this.hide();
6803
+ isActionMenuOpen(release) {
6804
+ return this.openedActionMenuId === release.id;
6673
6805
  }
6674
- onScroll(event) {
6675
- if (!this.resolvedConfig.infiniteScroll ||
6676
- this.loading ||
6677
- !this.hasMore ||
6678
- this.loadMoreRequested) {
6806
+ onActionMenuClick(event) {
6807
+ event.stopPropagation();
6808
+ }
6809
+ onActionClick(release, menuAction, event) {
6810
+ event.stopPropagation();
6811
+ if (release.disabled || menuAction.disabled) {
6679
6812
  return;
6680
6813
  }
6681
- const element = event.target;
6682
- const distanceFromBottom = element.scrollHeight - element.scrollTop - element.clientHeight;
6683
- if (distanceFromBottom > this.resolvedConfig.infiniteScrollThreshold) {
6814
+ this.action.emit({
6815
+ release,
6816
+ action: menuAction,
6817
+ });
6818
+ if (this.resolvedConfig.closeActionMenuOnAction) {
6819
+ this.openedActionMenuId = null;
6820
+ }
6821
+ }
6822
+ getGlobalActions() {
6823
+ const configuredActions = this.config.globalActions !== undefined
6824
+ ? this.config.globalActions
6825
+ : this.defaultGlobalActions;
6826
+ return configuredActions.filter((menuAction) => {
6827
+ if (menuAction.visible === false) {
6828
+ return false;
6829
+ }
6830
+ if (menuAction.id === 'MARK_ALL_AS_READ' && !this.hasUnreadReleases()) {
6831
+ return false;
6832
+ }
6833
+ return true;
6834
+ });
6835
+ }
6836
+ toggleGlobalActionMenu(event) {
6837
+ event.stopPropagation();
6838
+ this.openedActionMenuId = null;
6839
+ this.isGlobalActionMenuOpen = !this.isGlobalActionMenuOpen;
6840
+ }
6841
+ onGlobalActionMenuClick(event) {
6842
+ event.stopPropagation();
6843
+ }
6844
+ onGlobalActionClick(menuAction, event) {
6845
+ event.stopPropagation();
6846
+ if (menuAction.disabled) {
6684
6847
  return;
6685
6848
  }
6686
- this.loadMoreRequested = true;
6687
- this.currentPage++;
6688
- this.loadMore.emit({
6689
- page: this.currentPage,
6690
- size: this.pageSize,
6691
- first: this.currentPage * this.pageSize,
6849
+ this.globalAction.emit({
6850
+ action: menuAction,
6851
+ releases: this.getReleases(),
6692
6852
  });
6853
+ if (this.resolvedConfig.closeGlobalActionMenuOnAction) {
6854
+ this.isGlobalActionMenuOpen = false;
6855
+ }
6856
+ }
6857
+ getActionClasses(menuAction) {
6858
+ const classes = ['pt-release-notes-action-menu-item'];
6859
+ if (menuAction.danger) {
6860
+ classes.push('danger');
6861
+ }
6862
+ if (menuAction.disabled) {
6863
+ classes.push('disabled');
6864
+ }
6865
+ return classes.join(' ');
6693
6866
  }
6694
6867
  getNewCount(release) {
6695
- return release.newCount ?? 0;
6868
+ return Math.max(0, release.newCount ?? 0);
6696
6869
  }
6697
6870
  getImprovementCount(release) {
6698
- return release.improvementCount ?? 0;
6871
+ return Math.max(0, release.improvementCount ?? 0);
6699
6872
  }
6700
6873
  getBugFixCount(release) {
6701
- return release.bugFixCount ?? 0;
6874
+ return Math.max(0, release.bugFixCount ?? 0);
6702
6875
  }
6703
- getTotalChangesCount(release) {
6704
- return (this.getNewCount(release) +
6705
- this.getImprovementCount(release) +
6706
- this.getBugFixCount(release));
6876
+ hasNewItems(release) {
6877
+ return this.getNewCount(release) > 0;
6878
+ }
6879
+ hasImprovements(release) {
6880
+ return this.getImprovementCount(release) > 0;
6881
+ }
6882
+ hasBugFixes(release) {
6883
+ return this.getBugFixCount(release) > 0;
6707
6884
  }
6708
6885
  hasCounters(release) {
6709
- return this.getTotalChangesCount(release) > 0;
6886
+ return (this.hasNewItems(release) ||
6887
+ this.hasImprovements(release) ||
6888
+ this.hasBugFixes(release));
6710
6889
  }
6711
- hasDetails(release) {
6712
- return (release.details ?? []).length > 0;
6890
+ isInfiniteScrollEnabled() {
6891
+ return this.resolvedConfig.infiniteScroll;
6713
6892
  }
6714
- trackByReleaseId(index, release) {
6715
- return release.id;
6893
+ showInfiniteScrollLoader() {
6894
+ return this.isInfiniteScrollEnabled() && this.loading && this.hasMore;
6716
6895
  }
6717
- navigateToUrl(url) {
6718
- const target = url.trim();
6719
- if (!target) {
6896
+ onListScroll(event) {
6897
+ if (!this.isInfiniteScrollEnabled()) {
6898
+ return;
6899
+ }
6900
+ if (this.loading) {
6901
+ return;
6902
+ }
6903
+ if (!this.hasMore) {
6904
+ return;
6905
+ }
6906
+ if (this.loadMoreRequested) {
6720
6907
  return;
6721
6908
  }
6722
- window.location.href = target;
6909
+ const element = event.target;
6910
+ if (!element) {
6911
+ return;
6912
+ }
6913
+ const distanceFromBottom = element.scrollHeight - element.scrollTop - element.clientHeight;
6914
+ if (distanceFromBottom > this.resolvedConfig.infiniteScrollThreshold) {
6915
+ return;
6916
+ }
6917
+ this.loadMoreRequested = true;
6918
+ this.currentPage++;
6919
+ const size = Math.max(1, this.pageSize);
6920
+ this.loadMore.emit({
6921
+ page: this.currentPage,
6922
+ size,
6923
+ first: this.currentPage * size,
6924
+ });
6925
+ }
6926
+ onViewAllClick(event) {
6927
+ event.stopPropagation();
6928
+ this.viewAll.emit();
6929
+ this.closePanel();
6930
+ }
6931
+ closeMenus() {
6932
+ this.openedActionMenuId = null;
6933
+ this.isGlobalActionMenuOpen = false;
6723
6934
  }
6724
6935
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6725
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTReleaseNotesComponent, isStandalone: false, selector: "pt-release-notes", inputs: { releases: "releases", config: "config", loading: "loading", hasMore: "hasMore", pageSize: "pageSize", totalUnreadRecords: "totalUnreadRecords" }, outputs: { releaseClick: "releaseClick", viewAll: "viewAll", loadMore: "loadMore" }, viewQueries: [{ propertyName: "releaseNotesPanel", first: true, predicate: ["releaseNotesPanel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (resolvedConfig.visible) {\n <div class=\"pt-release-notes\">\n <button\n type=\"button\"\n class=\"pt-release-notes__trigger\"\n (click)=\"toggle($event)\"\n [attr.aria-label]=\"resolvedConfig.title\"\n >\n <i\n class=\"pt-release-notes__trigger-icon\"\n [ngClass]=\"resolvedConfig.icon\"\n ></i>\n\n @if (resolvedConfig.showBadge && unreadCount > 0) {\n <span class=\"pt-release-notes__badge\">\n {{ badgeValue }}\n </span>\n }\n </button>\n\n <p-popover\n #releaseNotesPanel\n styleClass=\"pt-release-notes-panel\"\n [style]=\"{\n width: resolvedConfig.width,\n }\"\n >\n <div class=\"pt-release-notes__panel\">\n <div class=\"pt-release-notes__header\">\n <div class=\"pt-release-notes__header-left\">\n <i [ngClass]=\"resolvedConfig.icon\"></i>\n\n <span class=\"pt-release-notes__title\">\n {{ resolvedConfig.title }}\n </span>\n </div>\n\n @if (resolvedConfig.showHeaderCount) {\n <span class=\"pt-release-notes__header-count\">\n {{ unreadCount }}\n </span>\n }\n </div>\n\n <div\n class=\"pt-release-notes__content\"\n [style.max-height]=\"resolvedConfig.maxHeight\"\n (scroll)=\"onScroll($event)\"\n >\n @if (releases.length === 0 && !loading) {\n <div class=\"pt-release-notes__empty\">\n <i [ngClass]=\"resolvedConfig.icon\"></i>\n\n <span>\n {{ resolvedConfig.emptyText }}\n </span>\n </div>\n }\n\n @for (release of releases; track release.id) {\n <article\n class=\"pt-release-notes__release\"\n [class.pt-release-notes__release--unread]=\"release.read !== true\"\n [class.pt-release-notes__release--disabled]=\"release.disabled\"\n [ngClass]=\"release.styleClass || ''\"\n (click)=\"onReleaseClick(release)\"\n >\n <div class=\"pt-release-notes__release-header\">\n <div class=\"pt-release-notes__version-container\">\n <span class=\"pt-release-notes__version\">\n v{{ release.version }}\n </span>\n\n @if (release.read !== true) {\n <span class=\"pt-release-notes__unread-dot\"></span>\n }\n </div>\n\n @if (release.date) {\n <span class=\"pt-release-notes__date\">\n {{ release.date | date: \"dd/MM/yyyy\" }}\n </span>\n }\n </div>\n\n <div class=\"pt-release-notes__release-title\">\n {{ release.title }}\n </div>\n\n @if (release.summary) {\n <div class=\"pt-release-notes__release-description\">\n {{ release.summary }}\n </div>\n }\n\n @if (hasCounters(release)) {\n <div class=\"pt-release-notes__stats\">\n @if (getNewCount(release) > 0) {\n <div\n class=\"pt-release-notes__stat pt-release-notes__stat--new\"\n >\n <div class=\"pt-release-notes__stat-icon\">\n <i class=\"pi pi-plus-circle\"></i>\n </div>\n\n <div class=\"pt-release-notes__stat-content\">\n <span class=\"pt-release-notes__stat-value\">\n {{ getNewCount(release) }}\n </span>\n\n <span class=\"pt-release-notes__stat-label\">\n {{ resolvedConfig.newLabel }}\n </span>\n </div>\n </div>\n }\n\n @if (getImprovementCount(release) > 0) {\n <div\n class=\"pt-release-notes__stat pt-release-notes__stat--improvement\"\n >\n <div class=\"pt-release-notes__stat-icon\">\n <i class=\"pi pi-arrow-up-right\"></i>\n </div>\n\n <div class=\"pt-release-notes__stat-content\">\n <span class=\"pt-release-notes__stat-value\">\n {{ getImprovementCount(release) }}\n </span>\n\n <span class=\"pt-release-notes__stat-label\">\n {{ resolvedConfig.improvementLabel }}\n </span>\n </div>\n </div>\n }\n\n @if (getBugFixCount(release) > 0) {\n <div\n class=\"pt-release-notes__stat pt-release-notes__stat--bug-fix\"\n >\n <div class=\"pt-release-notes__stat-icon\">\n <i class=\"pi pi-wrench\"></i>\n </div>\n\n <div class=\"pt-release-notes__stat-content\">\n <span class=\"pt-release-notes__stat-value\">\n {{ getBugFixCount(release) }}\n </span>\n\n <span class=\"pt-release-notes__stat-label\">\n {{ resolvedConfig.bugFixLabel }}\n </span>\n </div>\n </div>\n }\n </div>\n }\n\n @if (release.detailsUrl) {\n <div class=\"pt-release-notes__details-container\">\n <button\n type=\"button\"\n class=\"pt-release-notes__details\"\n [disabled]=\"release.disabled\"\n (click)=\"onDetailsClick($event, release)\"\n >\n <span>\n {{ resolvedConfig.detailsText }}\n </span>\n\n <i class=\"pi pi-arrow-right\"></i>\n </button>\n </div>\n }\n </article>\n }\n\n @if (loading) {\n <div class=\"pt-release-notes__loading\">\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ resolvedConfig.loadingText }}\n </span>\n </div>\n }\n </div>\n\n @if (resolvedConfig.showViewAll && releases.length > 0) {\n <button\n type=\"button\"\n class=\"pt-release-notes__view-all\"\n (click)=\"onViewAll()\"\n >\n <span>\n {{ resolvedConfig.viewAllText }}\n </span>\n\n <i [ngClass]=\"resolvedConfig.viewAllIcon\"></i>\n </button>\n }\n </div>\n </p-popover>\n </div>\n}\n", styles: [":host{display:inline-flex;align-items:center}.pt-release-notes{position:relative;display:inline-flex;align-items:center}.pt-release-notes__trigger{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;cursor:pointer;transition:background-color .2s ease,color .2s ease}.pt-release-notes__trigger:hover{background-color:#0000000f}.pt-release-notes__trigger:focus-visible{outline:2px solid var(--primary-color, #3b82f6);outline-offset:2px}.pt-release-notes__trigger-icon{font-size:1.15rem}.pt-release-notes__badge{position:absolute;top:-2px;right:-4px;min-width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid var(--surface-card, #ffffff);border-radius:999px;background-color:#ef4444;color:#fff;font-size:.65rem;font-weight:700;line-height:1}.pt-release-notes__panel{display:flex;flex-direction:column}.pt-release-notes__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid var(--surface-border, #e5e7eb)}.pt-release-notes__header-left{display:flex;align-items:center;gap:8px}.pt-release-notes__header-left>i{color:var(--primary-color, #3b82f6)}.pt-release-notes__title{color:var(--text-color, #1f2937);font-size:1rem;font-weight:700}.pt-release-notes__header-count{min-width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px;border-radius:999px;background-color:var(--primary-color, #3b82f6);color:var(--primary-color-text, #ffffff);font-size:.75rem;font-weight:700}.pt-release-notes__content{overflow-x:hidden;overflow-y:auto}.pt-release-notes__release{position:relative;display:flex;flex-direction:column;padding:16px 18px;border-bottom:1px solid var(--surface-border, #e5e7eb);transition:background-color .15s ease}.pt-release-notes__release:last-child{border-bottom:0}.pt-release-notes__release:hover{background-color:var(--surface-hover, #f8fafc)}.pt-release-notes__release--unread{background-color:#3b82f60d}.pt-release-notes__release--disabled{opacity:.6;pointer-events:none}.pt-release-notes__release-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.pt-release-notes__version-container{display:flex;align-items:center;gap:7px}.pt-release-notes__version{color:var(--text-color, #1f2937);font-size:.95rem;font-weight:700}.pt-release-notes__unread-dot{width:7px;height:7px;border-radius:50%;background-color:var(--primary-color, #3b82f6)}.pt-release-notes__date{color:var(--text-color-secondary, #6b7280);font-size:.75rem}.pt-release-notes__release-title{margin-bottom:5px;color:var(--text-color, #1f2937);font-size:.92rem;font-weight:700}.pt-release-notes__release-description{margin-bottom:14px;color:var(--text-color-secondary, #6b7280);font-size:.8rem;line-height:1.5}.pt-release-notes__stats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.pt-release-notes__stat{display:inline-flex;align-items:center;gap:6px;min-width:0;padding:6px 9px;border-radius:8px}.pt-release-notes__stat-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.pt-release-notes__stat-icon i{font-size:.8rem}.pt-release-notes__stat-content{display:flex;align-items:center;gap:4px;min-width:0}.pt-release-notes__stat-value{font-size:.78rem;font-weight:800}.pt-release-notes__stat-label{font-size:.7rem;font-weight:600}.pt-release-notes__stat--new{background-color:#dcfce7;color:#15803d}.pt-release-notes__stat--improvement{background-color:#dbeafe;color:#1d4ed8}.pt-release-notes__stat--bug-fix{background-color:#fee2e2;color:#b91c1c}.pt-release-notes__details{display:inline-flex;align-items:center;justify-content:flex-end;align-self:flex-end;gap:7px;padding:6px 0;border:0;background:transparent;color:var(--primary-color, #3b82f6);font-size:.78rem;font-weight:700;cursor:pointer}.pt-release-notes__details:hover{text-decoration:underline}.pt-release-notes__details:focus-visible{outline:2px solid var(--primary-color, #3b82f6);outline-offset:3px}.pt-release-notes__details i{font-size:.7rem}.pt-release-notes__empty{min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:30px;color:var(--text-color-secondary, #6b7280);text-align:center}.pt-release-notes__empty>i{font-size:2rem;opacity:.6}.pt-release-notes__loading{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;color:var(--text-color-secondary, #6b7280);font-size:.8rem}.pt-release-notes__view-all{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;border:0;border-top:1px solid var(--surface-border, #e5e7eb);background:transparent;color:var(--primary-color, #3b82f6);font-size:.82rem;font-weight:600;cursor:pointer;transition:background-color .15s ease}.pt-release-notes__view-all:hover{background-color:var(--surface-hover, #f3f4f6)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2$1.Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions", "motionOptions"], outputs: ["onShow", "onHide"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6936
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTReleaseNotesComponent, isStandalone: false, selector: "pt-release-notes", inputs: { releases: "releases", config: "config", loading: "loading", hasMore: "hasMore", pageSize: "pageSize", totalUnreadRecords: "totalUnreadRecords" }, outputs: { releaseClick: "releaseClick", action: "action", globalAction: "globalAction", viewAll: "viewAll", loadMore: "loadMore", panelOpened: "panelOpened", panelClosed: "panelClosed" }, host: { listeners: { "document:click": "onDocumentClick()" } }, usesOnChanges: true, ngImport: i0, template: "@if (isVisible()) {\n <div class=\"pt-release-notes\">\n <button\n type=\"button\"\n class=\"pt-release-notes-trigger\"\n [attr.aria-expanded]=\"isOpen\"\n aria-label=\"Notes de version\"\n (click)=\"togglePanel($event)\"\n >\n <i [class]=\"resolvedConfig.icon\"></i>\n\n @if (showBadge()) {\n <span class=\"pt-release-notes-badge\">\n {{ getBadgeText() }}\n </span>\n }\n </button>\n\n @if (isOpen) {\n <div\n class=\"pt-release-notes-panel\"\n [ngStyle]=\"getPanelStyles()\"\n (click)=\"onPanelClick($event)\"\n >\n <div class=\"pt-release-notes-header\">\n <div class=\"pt-release-notes-header-left\">\n <div class=\"pt-release-notes-header-title\">\n {{ getTitle() }}\n </div>\n\n @if (showHeaderCount()) {\n <span class=\"pt-release-notes-header-count\">\n {{ getUnreadCount() }}\n </span>\n }\n </div>\n\n @if (showGlobalActions()) {\n <div\n class=\"pt-release-notes-global-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-release-notes-global-more-button\"\n aria-label=\"Actions globales des notes de version\"\n (click)=\"toggleGlobalActionMenu($event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isGlobalActionMenuOpen) {\n <div\n class=\"pt-release-notes-global-action-menu\"\n (click)=\"onGlobalActionMenuClick($event)\"\n >\n @for (menuAction of getGlobalActions(); track menuAction.id) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onGlobalActionClick(menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n\n @if (hasReleases()) {\n <div\n class=\"pt-release-notes-list\"\n [ngStyle]=\"getListStyles()\"\n (scroll)=\"onListScroll($event)\"\n >\n @for (release of getReleases(); track release.id) {\n <div\n [class]=\"getReleaseClasses(release)\"\n role=\"button\"\n tabindex=\"0\"\n (click)=\"onReleaseClick(release, $event)\"\n (keydown.enter)=\"onReleaseKeyboardClick(release, $event)\"\n (keydown.space)=\"onReleaseKeyboardClick(release, $event)\"\n >\n <div class=\"pt-release-notes-item-icon-wrapper\">\n <div class=\"pt-release-notes-item-icon\">\n <i class=\"pi pi-sparkles\"></i>\n </div>\n </div>\n\n <div class=\"pt-release-notes-item-content\">\n <div class=\"pt-release-notes-version-row\">\n <span class=\"pt-release-notes-version\">\n v{{ release.version }}\n </span>\n\n <span class=\"pt-release-notes-item-title\">\n {{ release.title }}\n </span>\n </div>\n\n @if (release.summary) {\n <div class=\"pt-release-notes-summary\">\n {{ release.summary }}\n </div>\n }\n\n @if (release.date) {\n <div class=\"pt-release-notes-metadata\">\n <span>\n <i class=\"pi pi-calendar\"></i>\n\n {{ release.date | date: \"dd/MM/yyyy\" }}\n </span>\n </div>\n }\n\n @if (hasCounters(release)) {\n <div class=\"pt-release-notes-stats\">\n @if (hasNewItems(release)) {\n <span class=\"pt-release-notes-stat new\">\n <i class=\"pi pi-plus-circle\"></i>\n\n <strong>\n {{ getNewCount(release) }}\n </strong>\n\n {{ resolvedConfig.newLabel }}\n </span>\n }\n\n @if (hasImprovements(release)) {\n <span class=\"pt-release-notes-stat improvement\">\n <i class=\"pi pi-arrow-up-right\"></i>\n\n <strong>\n {{ getImprovementCount(release) }}\n </strong>\n\n {{ resolvedConfig.improvementLabel }}\n </span>\n }\n\n @if (hasBugFixes(release)) {\n <span class=\"pt-release-notes-stat bug-fix\">\n <i class=\"pi pi-wrench\"></i>\n\n <strong>\n {{ getBugFixCount(release) }}\n </strong>\n\n {{ resolvedConfig.bugFixLabel }}\n </span>\n }\n </div>\n }\n </div>\n\n @if (hasActions(release)) {\n <div\n class=\"pt-release-notes-item-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-release-notes-more-button\"\n aria-label=\"Actions de la note de version\"\n [disabled]=\"release.disabled\"\n (click)=\"toggleActionMenu(release, $event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isActionMenuOpen(release)) {\n <div\n class=\"pt-release-notes-action-menu\"\n (click)=\"onActionMenuClick($event)\"\n >\n @for (\n menuAction of getActions(release);\n track menuAction.id\n ) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onActionClick(release, menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (release.read !== true) {\n <span class=\"pt-release-notes-unread-indicator\"></span>\n }\n </div>\n }\n\n @if (showInfiniteScrollLoader()) {\n <div class=\"pt-release-notes-load-more\">\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n </div>\n }\n </div>\n } @else {\n <div class=\"pt-release-notes-empty\">\n @if (loading) {\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n } @else {\n <i class=\"pi pi-sparkles\"></i>\n\n <span>\n {{ getEmptyText() }}\n </span>\n }\n </div>\n }\n\n @if (showViewAll()) {\n <div class=\"pt-release-notes-footer\">\n <button\n type=\"button\"\n class=\"pt-release-notes-view-all\"\n (click)=\"onViewAllClick($event)\"\n >\n <span>\n {{ getViewAllText() }}\n </span>\n\n <i [class]=\"getViewAllIcon()\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n}\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center}.pt-release-notes{position:relative;display:inline-flex;align-items:center;justify-content:center}.pt-release-notes-trigger{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;padding:0;border:none;border-radius:999px;background:transparent;color:var(--pt-release-notes-icon-color, #475569);box-sizing:border-box;cursor:pointer;transition:background-color .2s ease,color .2s ease}.pt-release-notes-trigger:hover{background:var(--pt-release-notes-icon-hover-bg, #f1f5f9);color:var(--pt-release-notes-icon-hover-color, #0f172a)}.pt-release-notes-trigger:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-release-notes-focus-shadow, rgba(63, 37, 100, .16))}.pt-release-notes-trigger>i{font-size:1.25rem;line-height:1}.pt-release-notes-badge{position:absolute;top:-2px;right:-4px;display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;padding:0 4px;border:2px solid var(--pt-release-notes-badge-border, #ffffff);border-radius:999px;background:var(--pt-release-notes-badge-bg, #dc2626);color:var(--pt-release-notes-badge-text, #ffffff);box-sizing:border-box;font-size:.65rem;font-weight:800;line-height:1;pointer-events:none}.pt-release-notes-panel{position:absolute;top:calc(100% + 10px);right:0;display:flex;flex-direction:column;width:min(500px,calc(100vw - 24px));min-width:360px;max-width:calc(100vw - 24px);background:var(--pt-release-notes-panel-bg, #ffffff);color:var(--pt-release-notes-panel-text, #334155);border:1px solid var(--pt-release-notes-panel-border, #e2e8f0);border-radius:14px;box-shadow:var( --pt-release-notes-panel-shadow, 0 18px 45px rgba(15, 23, 42, .16) );box-sizing:border-box;overflow:hidden;z-index:10000}.pt-release-notes-header{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;min-height:54px;padding:0 16px;border-bottom:1px solid var(--pt-release-notes-header-border, #e2e8f0);box-sizing:border-box;gap:12px}.pt-release-notes-header-left{display:flex;align-items:center;min-width:0;gap:8px}.pt-release-notes-header-title{min-width:0;color:var(--pt-release-notes-header-title, #0f172a);font-size:.95rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-release-notes-header-count{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:26px;height:26px;padding:0 7px;border-radius:999px;background:var(--pt-release-notes-header-count-bg, #f3f0f8);color:var(--pt-release-notes-header-count-text, #3f2564);box-sizing:border-box;font-size:.75rem;font-weight:800;line-height:1}.pt-release-notes-global-actions{position:relative;display:flex;align-items:center;justify-content:center;flex:0 0 auto}.pt-release-notes-global-more-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-release-notes-more-color, #64748b);box-sizing:border-box;cursor:pointer;transition:background-color .15s ease,color .15s ease}.pt-release-notes-global-more-button:hover{background:var(--pt-release-notes-more-hover-bg, #f1f5f9);color:var(--pt-release-notes-more-hover-color, #0f172a)}.pt-release-notes-global-more-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-release-notes-focus-shadow, rgba(63, 37, 100, .14))}.pt-release-notes-global-more-button i{font-size:.95rem}.pt-release-notes-global-action-menu{position:absolute;top:36px;right:0;width:210px;padding:5px;border:1px solid var(--pt-release-notes-action-menu-border, #e2e8f0);border-radius:10px;background:var(--pt-release-notes-action-menu-bg, #ffffff);box-shadow:var( --pt-release-notes-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10005}.pt-release-notes-list{display:block;width:100%;min-width:0;box-sizing:border-box;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.pt-release-notes-item{position:relative;display:grid;grid-template-columns:40px minmax(0,1fr) 32px;align-items:start;width:100%;min-width:0;gap:11px;padding:14px 16px;border-bottom:1px solid var(--pt-release-notes-item-border, #f1f5f9);background:var(--pt-release-notes-item-bg, #ffffff);box-sizing:border-box;cursor:pointer;overflow:hidden;transition:background-color .15s ease}.pt-release-notes-item:last-child{border-bottom:none}.pt-release-notes-item:hover{background:var(--pt-release-notes-item-hover-bg, #f8fafc)}.pt-release-notes-item.unread{background:var(--pt-release-notes-item-unread-bg, #faf8fd)}.pt-release-notes-item.unread:hover{background:var(--pt-release-notes-item-unread-hover-bg, #f6f2fa)}.pt-release-notes-item.disabled{opacity:.55;cursor:not-allowed}.pt-release-notes-item-icon-wrapper{display:flex;align-items:flex-start;justify-content:center;width:40px;min-width:40px}.pt-release-notes-item-icon{display:flex;align-items:center;justify-content:center;width:38px;height:38px;min-width:38px;border-radius:999px;background:var(--pt-release-notes-item-icon-bg, #f3f0f8);color:var(--pt-release-notes-item-icon-color, #3f2564);box-sizing:border-box}.pt-release-notes-item-icon i{font-size:1rem;line-height:1}.pt-release-notes-item-content{width:100%;min-width:0;max-width:100%;box-sizing:border-box;overflow:hidden}.pt-release-notes-version-row{display:flex;align-items:center;flex-wrap:wrap;width:100%;min-width:0;gap:7px}.pt-release-notes-version{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:24px;padding:3px 7px;border-radius:6px;background:var(--pt-release-notes-version-bg, #f3f0f8);color:var(--pt-release-notes-version-text, #3f2564);box-sizing:border-box;font-size:.72rem;font-weight:800;line-height:1}.pt-release-notes-item-title{flex:1 1 180px;min-width:0;max-width:100%;color:var(--pt-release-notes-item-title, #1e293b);font-size:.86rem;font-weight:700;line-height:1.35;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.pt-release-notes-item.unread .pt-release-notes-item-title{color:var(--pt-release-notes-item-unread-text, #0f172a);font-weight:800}.pt-release-notes-summary{display:block;width:100%;min-width:0;max-width:100%;margin-top:7px;color:var(--pt-release-notes-summary-text, #64748b);font-size:.78rem;line-height:1.5;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.pt-release-notes-metadata{display:flex;align-items:center;flex-wrap:wrap;width:100%;min-width:0;gap:5px 12px;margin-top:7px;color:var(--pt-release-notes-metadata-text, #94a3b8);font-size:.71rem;font-weight:500}.pt-release-notes-metadata span{display:inline-flex;align-items:center;gap:4px}.pt-release-notes-metadata i{font-size:.68rem}.pt-release-notes-stats{display:flex;align-items:center;flex-wrap:wrap;width:100%;min-width:0;gap:6px;margin-top:10px}.pt-release-notes-stat{display:inline-flex;align-items:center;gap:5px;max-width:100%;min-height:25px;padding:4px 8px;border-radius:999px;box-sizing:border-box;font-size:.68rem;font-weight:600;white-space:normal}.pt-release-notes-stat i{font-size:.7rem}.pt-release-notes-stat strong{font-weight:800}.pt-release-notes-stat.new{background:#dcfce7;color:#15803d}.pt-release-notes-stat.improvement{background:#dbeafe;color:#1d4ed8}.pt-release-notes-stat.bug-fix{background:#fee2e2;color:#b91c1c}.pt-release-notes-details-link{display:inline-flex;align-items:center;justify-content:flex-start;max-width:100%;gap:6px;margin-top:9px;padding:4px 0;border:none;background:transparent;color:var(--pt-release-notes-details-text, #3f2564);font-size:.75rem;font-weight:700;white-space:normal;cursor:pointer}.pt-release-notes-details-link:hover:not(:disabled){text-decoration:underline}.pt-release-notes-details-link:focus-visible{outline:none;text-decoration:underline}.pt-release-notes-details-link:disabled{opacity:.5;cursor:not-allowed}.pt-release-notes-details-link i{font-size:.68rem}.pt-release-notes-item-actions{position:relative;display:flex;align-items:flex-start;justify-content:center;width:32px;min-width:32px}.pt-release-notes-more-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-release-notes-more-color, #64748b);box-sizing:border-box;cursor:pointer;transition:background-color .15s ease,color .15s ease}.pt-release-notes-more-button:hover:not(:disabled){background:var(--pt-release-notes-more-hover-bg, #e2e8f0);color:var(--pt-release-notes-more-hover-color, #0f172a)}.pt-release-notes-more-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-release-notes-focus-shadow, rgba(63, 37, 100, .14))}.pt-release-notes-more-button:disabled{opacity:.5;cursor:not-allowed}.pt-release-notes-more-button i{font-size:.95rem;line-height:1}.pt-release-notes-action-menu{position:absolute;top:34px;right:0;width:200px;padding:5px;border:1px solid var(--pt-release-notes-action-menu-border, #e2e8f0);border-radius:10px;background:var(--pt-release-notes-action-menu-bg, #ffffff);box-shadow:var( --pt-release-notes-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10006}.pt-release-notes-action-menu-item{display:flex;align-items:center;gap:8px;width:100%;min-height:36px;padding:7px 9px;border:none;border-radius:7px;background:transparent;color:var(--pt-release-notes-action-text, #334155);box-sizing:border-box;text-align:left;cursor:pointer;font-size:.78rem;font-weight:600;transition:background-color .15s ease,color .15s ease}.pt-release-notes-action-menu-item:hover:not(:disabled){background:var(--pt-release-notes-action-hover-bg, #f1f5f9);color:var(--pt-release-notes-action-hover-text, #0f172a)}.pt-release-notes-action-menu-item:focus-visible{outline:none;box-shadow:0 0 0 2px var(--pt-release-notes-focus-shadow, rgba(63, 37, 100, .14))}.pt-release-notes-action-menu-item.danger{color:#dc2626}.pt-release-notes-action-menu-item.danger:hover:not(:disabled){background:#fef2f2;color:#b91c1c}.pt-release-notes-action-menu-item.disabled,.pt-release-notes-action-menu-item:disabled{opacity:.5;cursor:not-allowed}.pt-release-notes-action-menu-item i{width:16px;flex:0 0 16px;font-size:.82rem;text-align:center}.pt-release-notes-action-menu-item span{min-width:0;flex:1 1 auto}.pt-release-notes-unread-indicator{position:absolute;top:15px;right:7px;width:6px;height:6px;border-radius:999px;background:var(--pt-release-notes-unread-indicator, #3f2564);pointer-events:none}.pt-release-notes-load-more{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:10px 16px;color:var(--pt-release-notes-loading-text, #64748b);box-sizing:border-box;gap:8px;font-size:.78rem;font-weight:600}.pt-release-notes-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:160px;padding:25px;color:var(--pt-release-notes-empty-text, #94a3b8);box-sizing:border-box;gap:10px;text-align:center}.pt-release-notes-empty i{font-size:1.8rem}.pt-release-notes-empty span{font-size:.84rem;font-weight:600}.pt-release-notes-footer{display:flex;align-items:center;justify-content:center;width:100%;min-height:50px;padding:7px;border-top:1px solid var(--pt-release-notes-footer-border, #e2e8f0);background:var(--pt-release-notes-footer-bg, #ffffff);box-sizing:border-box}.pt-release-notes-view-all{display:flex;align-items:center;justify-content:center;width:100%;min-height:36px;padding:7px 12px;border:none;border-radius:8px;background:transparent;color:var(--pt-release-notes-view-all-text, #3f2564);box-sizing:border-box;gap:8px;cursor:pointer;font-size:.82rem;font-weight:700;transition:background-color .15s ease,color .15s ease}.pt-release-notes-view-all:hover{background:var(--pt-release-notes-view-all-hover-bg, #f3f0f8);color:var(--pt-release-notes-view-all-hover-text, #3f2564)}.pt-release-notes-view-all i{font-size:.75rem}@media(max-width:520px){.pt-release-notes-panel{position:fixed;top:60px;right:8px;left:8px;width:auto!important;min-width:0;max-width:none}.pt-release-notes-item{grid-template-columns:36px minmax(0,1fr) 30px;gap:8px;padding:12px}.pt-release-notes-item-icon-wrapper{width:36px;min-width:36px}.pt-release-notes-item-icon{width:34px;height:34px;min-width:34px}.pt-release-notes-item-title{flex-basis:140px}.pt-release-notes-action-menu{right:0;width:190px}}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
6726
6937
  }
6727
6938
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesComponent, decorators: [{
6728
6939
  type: Component,
6729
- args: [{ selector: 'pt-release-notes', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (resolvedConfig.visible) {\n <div class=\"pt-release-notes\">\n <button\n type=\"button\"\n class=\"pt-release-notes__trigger\"\n (click)=\"toggle($event)\"\n [attr.aria-label]=\"resolvedConfig.title\"\n >\n <i\n class=\"pt-release-notes__trigger-icon\"\n [ngClass]=\"resolvedConfig.icon\"\n ></i>\n\n @if (resolvedConfig.showBadge && unreadCount > 0) {\n <span class=\"pt-release-notes__badge\">\n {{ badgeValue }}\n </span>\n }\n </button>\n\n <p-popover\n #releaseNotesPanel\n styleClass=\"pt-release-notes-panel\"\n [style]=\"{\n width: resolvedConfig.width,\n }\"\n >\n <div class=\"pt-release-notes__panel\">\n <div class=\"pt-release-notes__header\">\n <div class=\"pt-release-notes__header-left\">\n <i [ngClass]=\"resolvedConfig.icon\"></i>\n\n <span class=\"pt-release-notes__title\">\n {{ resolvedConfig.title }}\n </span>\n </div>\n\n @if (resolvedConfig.showHeaderCount) {\n <span class=\"pt-release-notes__header-count\">\n {{ unreadCount }}\n </span>\n }\n </div>\n\n <div\n class=\"pt-release-notes__content\"\n [style.max-height]=\"resolvedConfig.maxHeight\"\n (scroll)=\"onScroll($event)\"\n >\n @if (releases.length === 0 && !loading) {\n <div class=\"pt-release-notes__empty\">\n <i [ngClass]=\"resolvedConfig.icon\"></i>\n\n <span>\n {{ resolvedConfig.emptyText }}\n </span>\n </div>\n }\n\n @for (release of releases; track release.id) {\n <article\n class=\"pt-release-notes__release\"\n [class.pt-release-notes__release--unread]=\"release.read !== true\"\n [class.pt-release-notes__release--disabled]=\"release.disabled\"\n [ngClass]=\"release.styleClass || ''\"\n (click)=\"onReleaseClick(release)\"\n >\n <div class=\"pt-release-notes__release-header\">\n <div class=\"pt-release-notes__version-container\">\n <span class=\"pt-release-notes__version\">\n v{{ release.version }}\n </span>\n\n @if (release.read !== true) {\n <span class=\"pt-release-notes__unread-dot\"></span>\n }\n </div>\n\n @if (release.date) {\n <span class=\"pt-release-notes__date\">\n {{ release.date | date: \"dd/MM/yyyy\" }}\n </span>\n }\n </div>\n\n <div class=\"pt-release-notes__release-title\">\n {{ release.title }}\n </div>\n\n @if (release.summary) {\n <div class=\"pt-release-notes__release-description\">\n {{ release.summary }}\n </div>\n }\n\n @if (hasCounters(release)) {\n <div class=\"pt-release-notes__stats\">\n @if (getNewCount(release) > 0) {\n <div\n class=\"pt-release-notes__stat pt-release-notes__stat--new\"\n >\n <div class=\"pt-release-notes__stat-icon\">\n <i class=\"pi pi-plus-circle\"></i>\n </div>\n\n <div class=\"pt-release-notes__stat-content\">\n <span class=\"pt-release-notes__stat-value\">\n {{ getNewCount(release) }}\n </span>\n\n <span class=\"pt-release-notes__stat-label\">\n {{ resolvedConfig.newLabel }}\n </span>\n </div>\n </div>\n }\n\n @if (getImprovementCount(release) > 0) {\n <div\n class=\"pt-release-notes__stat pt-release-notes__stat--improvement\"\n >\n <div class=\"pt-release-notes__stat-icon\">\n <i class=\"pi pi-arrow-up-right\"></i>\n </div>\n\n <div class=\"pt-release-notes__stat-content\">\n <span class=\"pt-release-notes__stat-value\">\n {{ getImprovementCount(release) }}\n </span>\n\n <span class=\"pt-release-notes__stat-label\">\n {{ resolvedConfig.improvementLabel }}\n </span>\n </div>\n </div>\n }\n\n @if (getBugFixCount(release) > 0) {\n <div\n class=\"pt-release-notes__stat pt-release-notes__stat--bug-fix\"\n >\n <div class=\"pt-release-notes__stat-icon\">\n <i class=\"pi pi-wrench\"></i>\n </div>\n\n <div class=\"pt-release-notes__stat-content\">\n <span class=\"pt-release-notes__stat-value\">\n {{ getBugFixCount(release) }}\n </span>\n\n <span class=\"pt-release-notes__stat-label\">\n {{ resolvedConfig.bugFixLabel }}\n </span>\n </div>\n </div>\n }\n </div>\n }\n\n @if (release.detailsUrl) {\n <div class=\"pt-release-notes__details-container\">\n <button\n type=\"button\"\n class=\"pt-release-notes__details\"\n [disabled]=\"release.disabled\"\n (click)=\"onDetailsClick($event, release)\"\n >\n <span>\n {{ resolvedConfig.detailsText }}\n </span>\n\n <i class=\"pi pi-arrow-right\"></i>\n </button>\n </div>\n }\n </article>\n }\n\n @if (loading) {\n <div class=\"pt-release-notes__loading\">\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ resolvedConfig.loadingText }}\n </span>\n </div>\n }\n </div>\n\n @if (resolvedConfig.showViewAll && releases.length > 0) {\n <button\n type=\"button\"\n class=\"pt-release-notes__view-all\"\n (click)=\"onViewAll()\"\n >\n <span>\n {{ resolvedConfig.viewAllText }}\n </span>\n\n <i [ngClass]=\"resolvedConfig.viewAllIcon\"></i>\n </button>\n }\n </div>\n </p-popover>\n </div>\n}\n", styles: [":host{display:inline-flex;align-items:center}.pt-release-notes{position:relative;display:inline-flex;align-items:center}.pt-release-notes__trigger{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;cursor:pointer;transition:background-color .2s ease,color .2s ease}.pt-release-notes__trigger:hover{background-color:#0000000f}.pt-release-notes__trigger:focus-visible{outline:2px solid var(--primary-color, #3b82f6);outline-offset:2px}.pt-release-notes__trigger-icon{font-size:1.15rem}.pt-release-notes__badge{position:absolute;top:-2px;right:-4px;min-width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid var(--surface-card, #ffffff);border-radius:999px;background-color:#ef4444;color:#fff;font-size:.65rem;font-weight:700;line-height:1}.pt-release-notes__panel{display:flex;flex-direction:column}.pt-release-notes__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid var(--surface-border, #e5e7eb)}.pt-release-notes__header-left{display:flex;align-items:center;gap:8px}.pt-release-notes__header-left>i{color:var(--primary-color, #3b82f6)}.pt-release-notes__title{color:var(--text-color, #1f2937);font-size:1rem;font-weight:700}.pt-release-notes__header-count{min-width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px;border-radius:999px;background-color:var(--primary-color, #3b82f6);color:var(--primary-color-text, #ffffff);font-size:.75rem;font-weight:700}.pt-release-notes__content{overflow-x:hidden;overflow-y:auto}.pt-release-notes__release{position:relative;display:flex;flex-direction:column;padding:16px 18px;border-bottom:1px solid var(--surface-border, #e5e7eb);transition:background-color .15s ease}.pt-release-notes__release:last-child{border-bottom:0}.pt-release-notes__release:hover{background-color:var(--surface-hover, #f8fafc)}.pt-release-notes__release--unread{background-color:#3b82f60d}.pt-release-notes__release--disabled{opacity:.6;pointer-events:none}.pt-release-notes__release-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.pt-release-notes__version-container{display:flex;align-items:center;gap:7px}.pt-release-notes__version{color:var(--text-color, #1f2937);font-size:.95rem;font-weight:700}.pt-release-notes__unread-dot{width:7px;height:7px;border-radius:50%;background-color:var(--primary-color, #3b82f6)}.pt-release-notes__date{color:var(--text-color-secondary, #6b7280);font-size:.75rem}.pt-release-notes__release-title{margin-bottom:5px;color:var(--text-color, #1f2937);font-size:.92rem;font-weight:700}.pt-release-notes__release-description{margin-bottom:14px;color:var(--text-color-secondary, #6b7280);font-size:.8rem;line-height:1.5}.pt-release-notes__stats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.pt-release-notes__stat{display:inline-flex;align-items:center;gap:6px;min-width:0;padding:6px 9px;border-radius:8px}.pt-release-notes__stat-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.pt-release-notes__stat-icon i{font-size:.8rem}.pt-release-notes__stat-content{display:flex;align-items:center;gap:4px;min-width:0}.pt-release-notes__stat-value{font-size:.78rem;font-weight:800}.pt-release-notes__stat-label{font-size:.7rem;font-weight:600}.pt-release-notes__stat--new{background-color:#dcfce7;color:#15803d}.pt-release-notes__stat--improvement{background-color:#dbeafe;color:#1d4ed8}.pt-release-notes__stat--bug-fix{background-color:#fee2e2;color:#b91c1c}.pt-release-notes__details{display:inline-flex;align-items:center;justify-content:flex-end;align-self:flex-end;gap:7px;padding:6px 0;border:0;background:transparent;color:var(--primary-color, #3b82f6);font-size:.78rem;font-weight:700;cursor:pointer}.pt-release-notes__details:hover{text-decoration:underline}.pt-release-notes__details:focus-visible{outline:2px solid var(--primary-color, #3b82f6);outline-offset:3px}.pt-release-notes__details i{font-size:.7rem}.pt-release-notes__empty{min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:30px;color:var(--text-color-secondary, #6b7280);text-align:center}.pt-release-notes__empty>i{font-size:2rem;opacity:.6}.pt-release-notes__loading{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;color:var(--text-color-secondary, #6b7280);font-size:.8rem}.pt-release-notes__view-all{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;border:0;border-top:1px solid var(--surface-border, #e5e7eb);background:transparent;color:var(--primary-color, #3b82f6);font-size:.82rem;font-weight:600;cursor:pointer;transition:background-color .15s ease}.pt-release-notes__view-all:hover{background-color:var(--surface-hover, #f3f4f6)}\n"] }]
6730
- }], propDecorators: { releaseNotesPanel: [{
6731
- type: ViewChild,
6732
- args: ['releaseNotesPanel']
6733
- }], releases: [{
6940
+ args: [{ selector: 'pt-release-notes', standalone: false, template: "@if (isVisible()) {\n <div class=\"pt-release-notes\">\n <button\n type=\"button\"\n class=\"pt-release-notes-trigger\"\n [attr.aria-expanded]=\"isOpen\"\n aria-label=\"Notes de version\"\n (click)=\"togglePanel($event)\"\n >\n <i [class]=\"resolvedConfig.icon\"></i>\n\n @if (showBadge()) {\n <span class=\"pt-release-notes-badge\">\n {{ getBadgeText() }}\n </span>\n }\n </button>\n\n @if (isOpen) {\n <div\n class=\"pt-release-notes-panel\"\n [ngStyle]=\"getPanelStyles()\"\n (click)=\"onPanelClick($event)\"\n >\n <div class=\"pt-release-notes-header\">\n <div class=\"pt-release-notes-header-left\">\n <div class=\"pt-release-notes-header-title\">\n {{ getTitle() }}\n </div>\n\n @if (showHeaderCount()) {\n <span class=\"pt-release-notes-header-count\">\n {{ getUnreadCount() }}\n </span>\n }\n </div>\n\n @if (showGlobalActions()) {\n <div\n class=\"pt-release-notes-global-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-release-notes-global-more-button\"\n aria-label=\"Actions globales des notes de version\"\n (click)=\"toggleGlobalActionMenu($event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isGlobalActionMenuOpen) {\n <div\n class=\"pt-release-notes-global-action-menu\"\n (click)=\"onGlobalActionMenuClick($event)\"\n >\n @for (menuAction of getGlobalActions(); track menuAction.id) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onGlobalActionClick(menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n\n @if (hasReleases()) {\n <div\n class=\"pt-release-notes-list\"\n [ngStyle]=\"getListStyles()\"\n (scroll)=\"onListScroll($event)\"\n >\n @for (release of getReleases(); track release.id) {\n <div\n [class]=\"getReleaseClasses(release)\"\n role=\"button\"\n tabindex=\"0\"\n (click)=\"onReleaseClick(release, $event)\"\n (keydown.enter)=\"onReleaseKeyboardClick(release, $event)\"\n (keydown.space)=\"onReleaseKeyboardClick(release, $event)\"\n >\n <div class=\"pt-release-notes-item-icon-wrapper\">\n <div class=\"pt-release-notes-item-icon\">\n <i class=\"pi pi-sparkles\"></i>\n </div>\n </div>\n\n <div class=\"pt-release-notes-item-content\">\n <div class=\"pt-release-notes-version-row\">\n <span class=\"pt-release-notes-version\">\n v{{ release.version }}\n </span>\n\n <span class=\"pt-release-notes-item-title\">\n {{ release.title }}\n </span>\n </div>\n\n @if (release.summary) {\n <div class=\"pt-release-notes-summary\">\n {{ release.summary }}\n </div>\n }\n\n @if (release.date) {\n <div class=\"pt-release-notes-metadata\">\n <span>\n <i class=\"pi pi-calendar\"></i>\n\n {{ release.date | date: \"dd/MM/yyyy\" }}\n </span>\n </div>\n }\n\n @if (hasCounters(release)) {\n <div class=\"pt-release-notes-stats\">\n @if (hasNewItems(release)) {\n <span class=\"pt-release-notes-stat new\">\n <i class=\"pi pi-plus-circle\"></i>\n\n <strong>\n {{ getNewCount(release) }}\n </strong>\n\n {{ resolvedConfig.newLabel }}\n </span>\n }\n\n @if (hasImprovements(release)) {\n <span class=\"pt-release-notes-stat improvement\">\n <i class=\"pi pi-arrow-up-right\"></i>\n\n <strong>\n {{ getImprovementCount(release) }}\n </strong>\n\n {{ resolvedConfig.improvementLabel }}\n </span>\n }\n\n @if (hasBugFixes(release)) {\n <span class=\"pt-release-notes-stat bug-fix\">\n <i class=\"pi pi-wrench\"></i>\n\n <strong>\n {{ getBugFixCount(release) }}\n </strong>\n\n {{ resolvedConfig.bugFixLabel }}\n </span>\n }\n </div>\n }\n </div>\n\n @if (hasActions(release)) {\n <div\n class=\"pt-release-notes-item-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-release-notes-more-button\"\n aria-label=\"Actions de la note de version\"\n [disabled]=\"release.disabled\"\n (click)=\"toggleActionMenu(release, $event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isActionMenuOpen(release)) {\n <div\n class=\"pt-release-notes-action-menu\"\n (click)=\"onActionMenuClick($event)\"\n >\n @for (\n menuAction of getActions(release);\n track menuAction.id\n ) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onActionClick(release, menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (release.read !== true) {\n <span class=\"pt-release-notes-unread-indicator\"></span>\n }\n </div>\n }\n\n @if (showInfiniteScrollLoader()) {\n <div class=\"pt-release-notes-load-more\">\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n </div>\n }\n </div>\n } @else {\n <div class=\"pt-release-notes-empty\">\n @if (loading) {\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ getLoadingText() }}\n </span>\n } @else {\n <i class=\"pi pi-sparkles\"></i>\n\n <span>\n {{ getEmptyText() }}\n </span>\n }\n </div>\n }\n\n @if (showViewAll()) {\n <div class=\"pt-release-notes-footer\">\n <button\n type=\"button\"\n class=\"pt-release-notes-view-all\"\n (click)=\"onViewAllClick($event)\"\n >\n <span>\n {{ getViewAllText() }}\n </span>\n\n <i [class]=\"getViewAllIcon()\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n}\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center}.pt-release-notes{position:relative;display:inline-flex;align-items:center;justify-content:center}.pt-release-notes-trigger{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;padding:0;border:none;border-radius:999px;background:transparent;color:var(--pt-release-notes-icon-color, #475569);box-sizing:border-box;cursor:pointer;transition:background-color .2s ease,color .2s ease}.pt-release-notes-trigger:hover{background:var(--pt-release-notes-icon-hover-bg, #f1f5f9);color:var(--pt-release-notes-icon-hover-color, #0f172a)}.pt-release-notes-trigger:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-release-notes-focus-shadow, rgba(63, 37, 100, .16))}.pt-release-notes-trigger>i{font-size:1.25rem;line-height:1}.pt-release-notes-badge{position:absolute;top:-2px;right:-4px;display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;padding:0 4px;border:2px solid var(--pt-release-notes-badge-border, #ffffff);border-radius:999px;background:var(--pt-release-notes-badge-bg, #dc2626);color:var(--pt-release-notes-badge-text, #ffffff);box-sizing:border-box;font-size:.65rem;font-weight:800;line-height:1;pointer-events:none}.pt-release-notes-panel{position:absolute;top:calc(100% + 10px);right:0;display:flex;flex-direction:column;width:min(500px,calc(100vw - 24px));min-width:360px;max-width:calc(100vw - 24px);background:var(--pt-release-notes-panel-bg, #ffffff);color:var(--pt-release-notes-panel-text, #334155);border:1px solid var(--pt-release-notes-panel-border, #e2e8f0);border-radius:14px;box-shadow:var( --pt-release-notes-panel-shadow, 0 18px 45px rgba(15, 23, 42, .16) );box-sizing:border-box;overflow:hidden;z-index:10000}.pt-release-notes-header{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;min-height:54px;padding:0 16px;border-bottom:1px solid var(--pt-release-notes-header-border, #e2e8f0);box-sizing:border-box;gap:12px}.pt-release-notes-header-left{display:flex;align-items:center;min-width:0;gap:8px}.pt-release-notes-header-title{min-width:0;color:var(--pt-release-notes-header-title, #0f172a);font-size:.95rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-release-notes-header-count{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:26px;height:26px;padding:0 7px;border-radius:999px;background:var(--pt-release-notes-header-count-bg, #f3f0f8);color:var(--pt-release-notes-header-count-text, #3f2564);box-sizing:border-box;font-size:.75rem;font-weight:800;line-height:1}.pt-release-notes-global-actions{position:relative;display:flex;align-items:center;justify-content:center;flex:0 0 auto}.pt-release-notes-global-more-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-release-notes-more-color, #64748b);box-sizing:border-box;cursor:pointer;transition:background-color .15s ease,color .15s ease}.pt-release-notes-global-more-button:hover{background:var(--pt-release-notes-more-hover-bg, #f1f5f9);color:var(--pt-release-notes-more-hover-color, #0f172a)}.pt-release-notes-global-more-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-release-notes-focus-shadow, rgba(63, 37, 100, .14))}.pt-release-notes-global-more-button i{font-size:.95rem}.pt-release-notes-global-action-menu{position:absolute;top:36px;right:0;width:210px;padding:5px;border:1px solid var(--pt-release-notes-action-menu-border, #e2e8f0);border-radius:10px;background:var(--pt-release-notes-action-menu-bg, #ffffff);box-shadow:var( --pt-release-notes-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10005}.pt-release-notes-list{display:block;width:100%;min-width:0;box-sizing:border-box;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.pt-release-notes-item{position:relative;display:grid;grid-template-columns:40px minmax(0,1fr) 32px;align-items:start;width:100%;min-width:0;gap:11px;padding:14px 16px;border-bottom:1px solid var(--pt-release-notes-item-border, #f1f5f9);background:var(--pt-release-notes-item-bg, #ffffff);box-sizing:border-box;cursor:pointer;overflow:hidden;transition:background-color .15s ease}.pt-release-notes-item:last-child{border-bottom:none}.pt-release-notes-item:hover{background:var(--pt-release-notes-item-hover-bg, #f8fafc)}.pt-release-notes-item.unread{background:var(--pt-release-notes-item-unread-bg, #faf8fd)}.pt-release-notes-item.unread:hover{background:var(--pt-release-notes-item-unread-hover-bg, #f6f2fa)}.pt-release-notes-item.disabled{opacity:.55;cursor:not-allowed}.pt-release-notes-item-icon-wrapper{display:flex;align-items:flex-start;justify-content:center;width:40px;min-width:40px}.pt-release-notes-item-icon{display:flex;align-items:center;justify-content:center;width:38px;height:38px;min-width:38px;border-radius:999px;background:var(--pt-release-notes-item-icon-bg, #f3f0f8);color:var(--pt-release-notes-item-icon-color, #3f2564);box-sizing:border-box}.pt-release-notes-item-icon i{font-size:1rem;line-height:1}.pt-release-notes-item-content{width:100%;min-width:0;max-width:100%;box-sizing:border-box;overflow:hidden}.pt-release-notes-version-row{display:flex;align-items:center;flex-wrap:wrap;width:100%;min-width:0;gap:7px}.pt-release-notes-version{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:24px;padding:3px 7px;border-radius:6px;background:var(--pt-release-notes-version-bg, #f3f0f8);color:var(--pt-release-notes-version-text, #3f2564);box-sizing:border-box;font-size:.72rem;font-weight:800;line-height:1}.pt-release-notes-item-title{flex:1 1 180px;min-width:0;max-width:100%;color:var(--pt-release-notes-item-title, #1e293b);font-size:.86rem;font-weight:700;line-height:1.35;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.pt-release-notes-item.unread .pt-release-notes-item-title{color:var(--pt-release-notes-item-unread-text, #0f172a);font-weight:800}.pt-release-notes-summary{display:block;width:100%;min-width:0;max-width:100%;margin-top:7px;color:var(--pt-release-notes-summary-text, #64748b);font-size:.78rem;line-height:1.5;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.pt-release-notes-metadata{display:flex;align-items:center;flex-wrap:wrap;width:100%;min-width:0;gap:5px 12px;margin-top:7px;color:var(--pt-release-notes-metadata-text, #94a3b8);font-size:.71rem;font-weight:500}.pt-release-notes-metadata span{display:inline-flex;align-items:center;gap:4px}.pt-release-notes-metadata i{font-size:.68rem}.pt-release-notes-stats{display:flex;align-items:center;flex-wrap:wrap;width:100%;min-width:0;gap:6px;margin-top:10px}.pt-release-notes-stat{display:inline-flex;align-items:center;gap:5px;max-width:100%;min-height:25px;padding:4px 8px;border-radius:999px;box-sizing:border-box;font-size:.68rem;font-weight:600;white-space:normal}.pt-release-notes-stat i{font-size:.7rem}.pt-release-notes-stat strong{font-weight:800}.pt-release-notes-stat.new{background:#dcfce7;color:#15803d}.pt-release-notes-stat.improvement{background:#dbeafe;color:#1d4ed8}.pt-release-notes-stat.bug-fix{background:#fee2e2;color:#b91c1c}.pt-release-notes-details-link{display:inline-flex;align-items:center;justify-content:flex-start;max-width:100%;gap:6px;margin-top:9px;padding:4px 0;border:none;background:transparent;color:var(--pt-release-notes-details-text, #3f2564);font-size:.75rem;font-weight:700;white-space:normal;cursor:pointer}.pt-release-notes-details-link:hover:not(:disabled){text-decoration:underline}.pt-release-notes-details-link:focus-visible{outline:none;text-decoration:underline}.pt-release-notes-details-link:disabled{opacity:.5;cursor:not-allowed}.pt-release-notes-details-link i{font-size:.68rem}.pt-release-notes-item-actions{position:relative;display:flex;align-items:flex-start;justify-content:center;width:32px;min-width:32px}.pt-release-notes-more-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--pt-release-notes-more-color, #64748b);box-sizing:border-box;cursor:pointer;transition:background-color .15s ease,color .15s ease}.pt-release-notes-more-button:hover:not(:disabled){background:var(--pt-release-notes-more-hover-bg, #e2e8f0);color:var(--pt-release-notes-more-hover-color, #0f172a)}.pt-release-notes-more-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-release-notes-focus-shadow, rgba(63, 37, 100, .14))}.pt-release-notes-more-button:disabled{opacity:.5;cursor:not-allowed}.pt-release-notes-more-button i{font-size:.95rem;line-height:1}.pt-release-notes-action-menu{position:absolute;top:34px;right:0;width:200px;padding:5px;border:1px solid var(--pt-release-notes-action-menu-border, #e2e8f0);border-radius:10px;background:var(--pt-release-notes-action-menu-bg, #ffffff);box-shadow:var( --pt-release-notes-action-menu-shadow, 0 12px 30px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10006}.pt-release-notes-action-menu-item{display:flex;align-items:center;gap:8px;width:100%;min-height:36px;padding:7px 9px;border:none;border-radius:7px;background:transparent;color:var(--pt-release-notes-action-text, #334155);box-sizing:border-box;text-align:left;cursor:pointer;font-size:.78rem;font-weight:600;transition:background-color .15s ease,color .15s ease}.pt-release-notes-action-menu-item:hover:not(:disabled){background:var(--pt-release-notes-action-hover-bg, #f1f5f9);color:var(--pt-release-notes-action-hover-text, #0f172a)}.pt-release-notes-action-menu-item:focus-visible{outline:none;box-shadow:0 0 0 2px var(--pt-release-notes-focus-shadow, rgba(63, 37, 100, .14))}.pt-release-notes-action-menu-item.danger{color:#dc2626}.pt-release-notes-action-menu-item.danger:hover:not(:disabled){background:#fef2f2;color:#b91c1c}.pt-release-notes-action-menu-item.disabled,.pt-release-notes-action-menu-item:disabled{opacity:.5;cursor:not-allowed}.pt-release-notes-action-menu-item i{width:16px;flex:0 0 16px;font-size:.82rem;text-align:center}.pt-release-notes-action-menu-item span{min-width:0;flex:1 1 auto}.pt-release-notes-unread-indicator{position:absolute;top:15px;right:7px;width:6px;height:6px;border-radius:999px;background:var(--pt-release-notes-unread-indicator, #3f2564);pointer-events:none}.pt-release-notes-load-more{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:10px 16px;color:var(--pt-release-notes-loading-text, #64748b);box-sizing:border-box;gap:8px;font-size:.78rem;font-weight:600}.pt-release-notes-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:160px;padding:25px;color:var(--pt-release-notes-empty-text, #94a3b8);box-sizing:border-box;gap:10px;text-align:center}.pt-release-notes-empty i{font-size:1.8rem}.pt-release-notes-empty span{font-size:.84rem;font-weight:600}.pt-release-notes-footer{display:flex;align-items:center;justify-content:center;width:100%;min-height:50px;padding:7px;border-top:1px solid var(--pt-release-notes-footer-border, #e2e8f0);background:var(--pt-release-notes-footer-bg, #ffffff);box-sizing:border-box}.pt-release-notes-view-all{display:flex;align-items:center;justify-content:center;width:100%;min-height:36px;padding:7px 12px;border:none;border-radius:8px;background:transparent;color:var(--pt-release-notes-view-all-text, #3f2564);box-sizing:border-box;gap:8px;cursor:pointer;font-size:.82rem;font-weight:700;transition:background-color .15s ease,color .15s ease}.pt-release-notes-view-all:hover{background:var(--pt-release-notes-view-all-hover-bg, #f3f0f8);color:var(--pt-release-notes-view-all-hover-text, #3f2564)}.pt-release-notes-view-all i{font-size:.75rem}@media(max-width:520px){.pt-release-notes-panel{position:fixed;top:60px;right:8px;left:8px;width:auto!important;min-width:0;max-width:none}.pt-release-notes-item{grid-template-columns:36px minmax(0,1fr) 30px;gap:8px;padding:12px}.pt-release-notes-item-icon-wrapper{width:36px;min-width:36px}.pt-release-notes-item-icon{width:34px;height:34px;min-width:34px}.pt-release-notes-item-title{flex-basis:140px}.pt-release-notes-action-menu{right:0;width:190px}}\n"] }]
6941
+ }], propDecorators: { releases: [{
6734
6942
  type: Input
6735
6943
  }], config: [{
6736
6944
  type: Input
@@ -6744,10 +6952,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
6744
6952
  type: Input
6745
6953
  }], releaseClick: [{
6746
6954
  type: Output
6955
+ }], action: [{
6956
+ type: Output
6957
+ }], globalAction: [{
6958
+ type: Output
6747
6959
  }], viewAll: [{
6748
6960
  type: Output
6749
6961
  }], loadMore: [{
6750
6962
  type: Output
6963
+ }], panelOpened: [{
6964
+ type: Output
6965
+ }], panelClosed: [{
6966
+ type: Output
6967
+ }], onDocumentClick: [{
6968
+ type: HostListener,
6969
+ args: ['document:click']
6751
6970
  }] } });
6752
6971
 
6753
6972
  class PTNavbarMenuComponent {
@@ -6773,6 +6992,8 @@ class PTNavbarMenuComponent {
6773
6992
  this.notificationViewAll = new EventEmitter();
6774
6993
  this.notificationLoadMore = new EventEmitter();
6775
6994
  this.releaseNoteClick = new EventEmitter();
6995
+ this.releaseNoteAction = new EventEmitter();
6996
+ this.releaseNoteGlobalAction = new EventEmitter();
6776
6997
  this.releaseNotesViewAll = new EventEmitter();
6777
6998
  this.releaseNotesLoadMore = new EventEmitter();
6778
6999
  this.destroy$ = new Subject();
@@ -6865,6 +7086,14 @@ class PTNavbarMenuComponent {
6865
7086
  this.isUserMenuOpen = false;
6866
7087
  this.releaseNoteClick.emit(event);
6867
7088
  }
7089
+ onReleaseNoteAction(event) {
7090
+ this.isUserMenuOpen = false;
7091
+ this.releaseNoteAction.emit(event);
7092
+ }
7093
+ onReleaseNoteGlobalAction(event) {
7094
+ this.isUserMenuOpen = false;
7095
+ this.releaseNoteGlobalAction.emit(event);
7096
+ }
6868
7097
  onReleaseNotesViewAll() {
6869
7098
  this.isUserMenuOpen = false;
6870
7099
  this.releaseNotesViewAll.emit();
@@ -7211,11 +7440,11 @@ class PTNavbarMenuComponent {
7211
7440
  };
7212
7441
  }
7213
7442
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNavbarMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7214
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTNavbarMenuComponent, isStandalone: false, selector: "pt-nav-bar-menu", inputs: { navBarMenuConfig: "navBarMenuConfig", serverDateTime: "serverDateTime", notifications: "notifications", notificationConfig: "notificationConfig", notificationTotalRecords: "notificationTotalRecords", notificationTotalUnreadRecords: "notificationTotalUnreadRecords", notificationPage: "notificationPage", notificationRows: "notificationRows", notificationLoading: "notificationLoading", releaseNotes: "releaseNotes", releaseNotesConfig: "releaseNotesConfig", releaseNotesLoading: "releaseNotesLoading", releaseNotesHasMore: "releaseNotesHasMore", releaseNotesPageSize: "releaseNotesPageSize", releaseNotesTotalUnreadRecords: "releaseNotesTotalUnreadRecords" }, outputs: { toggleSidebar: "toggleSidebar", notificationAction: "notificationAction", notificationClick: "notificationClick", notificationPanelOpened: "notificationPanelOpened", notificationPanelClosed: "notificationPanelClosed", notificationGlobalAction: "notificationGlobalAction", notificationViewAll: "notificationViewAll", notificationLoadMore: "notificationLoadMore", releaseNoteClick: "releaseNoteClick", releaseNotesViewAll: "releaseNotesViewAll", releaseNotesLoadMore: "releaseNotesLoadMore" }, host: { listeners: { "document:click": "closeUserMenu()" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <div class=\"navbar-left\">\n <a class=\"logo-link\" routerLink=\"/\">\n @if (getLogoUrl()) {\n <img\n class=\"navbar-logo\"\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n />\n }\n\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a class=\"toggle-btn\" (click)=\"toggleMenu()\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n @if (hasDateTime()) {\n <div class=\"navbar-middle\" [ngClass]=\"getDateTimePositionClass()\">\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n @if (isFixedMode()) {\n <input\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n }\n </div>\n </div>\n }\n\n <div class=\"pt-navbar-actions\">\n <pt-release-notes\n [releases]=\"releaseNotes\"\n [config]=\"releaseNotesConfig\"\n [loading]=\"releaseNotesLoading\"\n [hasMore]=\"releaseNotesHasMore\"\n [pageSize]=\"releaseNotesPageSize\"\n [totalUnreadRecords]=\"releaseNotesTotalUnreadRecords\"\n (releaseClick)=\"onReleaseNoteClick($event)\"\n (viewAll)=\"onReleaseNotesViewAll()\"\n (loadMore)=\"onReleaseNotesLoadMore($event)\"\n ></pt-release-notes>\n\n <pt-notification\n [notifications]=\"notifications\"\n [config]=\"notificationConfig\"\n [totalRecords]=\"notificationTotalRecords\"\n [totalUnreadRecords]=\"notificationTotalUnreadRecords\"\n [page]=\"notificationPage\"\n [rows]=\"notificationRows\"\n [loading]=\"notificationLoading\"\n (notificationClick)=\"onNotificationClick($event)\"\n (action)=\"onNotificationAction($event)\"\n (globalAction)=\"onNotificationGlobalAction($event)\"\n (viewAll)=\"onNotificationViewAll()\"\n (panelOpened)=\"onNotificationPanelOpened()\"\n (panelClosed)=\"onNotificationPanelClosed()\"\n (loadMore)=\"onNotificationLoadMore($event)\"\n ></pt-notification>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;align-items:center;justify-content:space-between;padding-right:10px;padding-left:10px;border-bottom:1px solid var(--pt-navbar-border, #ddd);background-color:var(--pt-navbar-bg, #fff);color:var(--pt-navbar-text, #1f2937);background-size:cover;background-position:center;gap:12px;min-width:0;width:100%;box-sizing:border-box}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit;min-width:0}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-title{color:var(--pt-navbar-title, inherit);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-middle{flex:1 1 auto;display:flex;align-items:center;min-width:0;padding:0 12px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;white-space:nowrap;max-width:100%}.pt-nav-bar-menu .navbar-datetime .dt-value{color:var(--pt-navbar-datetime-text, inherit);white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-input{height:32px;padding:0 8px;border:1px solid var(--pt-navbar-input-border, rgba(0, 0, 0, .18));border-radius:6px;background:var(--pt-navbar-input-bg, #fff);font-size:12px;color:var(--pt-navbar-input-text, #333);outline:none}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:var(--pt-navbar-input-focus-border, rgba(3, 76, 131, .7));box-shadow:0 0 0 3px var(--pt-navbar-input-focus-shadow, rgba(3, 76, 131, .12))}.pt-nav-bar-menu .navbar-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto;min-width:0}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:var(--pt-navbar-link, #333);text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:var(--pt-navbar-link-hover, #000)}.pt-nav-bar-menu pt-notification{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:var(--pt-navbar-toggle-color, #333)}.pt-nav-bar-menu .toggle-btn:hover{background-color:var(--pt-navbar-toggle-hover-bg, #f1f1f1)}.pt-nav-bar-menu .navbar-user{position:relative;display:flex;align-items:center;gap:.65rem;flex:0 0 auto}.pt-nav-bar-menu .navbar-user-profile-left{max-width:170px;color:var(--pt-navbar-user-profile-text, #334155);font-size:.82rem;font-weight:700;background:var(--pt-navbar-user-profile-bg, #eff6ff);border:1px solid var(--pt-navbar-user-profile-border, #bfdbfe);border-radius:999px;padding:.28rem .65rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-trigger{border:none;background:transparent;padding:0;cursor:pointer;display:flex;align-items:center}.pt-nav-bar-menu .navbar-user-avatar,.pt-nav-bar-menu .navbar-user-menu-avatar{width:38px;height:38px;min-width:38px;border-radius:999px;background:var(--pt-navbar-user-avatar-bg, #eff6ff);color:var(--pt-navbar-user-avatar-text, #2563eb);border:1px solid var(--pt-navbar-user-avatar-border, #bfdbfe);display:flex;align-items:center;justify-content:center;font-size:.92rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;line-height:1;box-sizing:border-box}.pt-nav-bar-menu .navbar-user-avatar i,.pt-nav-bar-menu .navbar-user-menu-avatar i{font-size:1rem}.pt-nav-bar-menu .navbar-user-menu{position:absolute;top:calc(100% + 10px);right:0;width:260px;background:var(--pt-navbar-user-menu-bg, #ffffff);color:var(--pt-navbar-user-menu-text, #334155);border:1px solid var(--pt-navbar-user-menu-border, #e5e7eb);border-radius:14px;box-shadow:var( --pt-navbar-user-menu-shadow, 0 18px 45px rgba(15, 23, 42, .16) );z-index:9999;padding:.75rem;box-sizing:border-box}.pt-nav-bar-menu .navbar-user-menu-header{display:flex;align-items:center;gap:.75rem;padding:.35rem .25rem .65rem}.pt-nav-bar-menu .navbar-user-menu-avatar{width:46px;height:46px;min-width:46px;font-size:1.05rem}.pt-nav-bar-menu .navbar-user-menu-identity{min-width:0}.pt-nav-bar-menu .navbar-user-menu-name{color:var(--pt-navbar-user-menu-name, #0f172a);font-size:.95rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-profile{margin-top:.15rem;color:var(--pt-navbar-user-menu-profile, #2563eb);font-size:.8rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-username{margin-top:.15rem;color:var(--pt-navbar-user-menu-username, #64748b);font-size:.78rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-separator{height:1px;background:var(--pt-navbar-user-menu-separator, #e5e7eb);margin:.4rem 0}.pt-nav-bar-menu .navbar-user-menu-item{width:100%;min-height:36px;border:none;background:transparent;border-radius:9px;color:var(--pt-navbar-user-menu-item-text, #334155);display:flex;align-items:center;gap:.55rem;padding:.5rem .55rem;font-size:.86rem;font-weight:600;cursor:pointer;text-align:left;box-sizing:border-box}.pt-nav-bar-menu .navbar-user-menu-item:hover{background:var(--pt-navbar-user-menu-item-hover-bg, #f1f5f9);color:var(--pt-navbar-user-menu-item-hover-text, #0f172a)}.pt-nav-bar-menu .navbar-user-menu-item.danger{color:var(--pt-navbar-user-menu-item-danger-text, #dc2626)}.pt-nav-bar-menu .navbar-user-menu-item.danger:hover{background:var(--pt-navbar-user-menu-item-danger-hover-bg, #fef2f2);color:var(--pt-navbar-user-menu-item-danger-hover-text, #b91c1c)}.pt-nav-bar-menu .navbar-user-menu-item.disabled,.pt-nav-bar-menu .navbar-user-menu-item:disabled{opacity:.55;cursor:not-allowed}@media(max-width:900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px}.pt-nav-bar-menu .navbar-left{width:100%;justify-content:space-between}.pt-nav-bar-menu .navbar-middle{width:100%;padding:0;justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-right .navbar-datetime,.pt-nav-bar-menu .navbar-middle.dt-pos-center .navbar-datetime{padding-left:0;border-left:none}.pt-nav-bar-menu .navbar-actions{width:100%;justify-content:flex-end}.pt-nav-bar-menu .navbar-user-menu{right:0}.pt-nav-bar-menu .navbar-user-profile-left{max-width:130px}}@media(max-width:520px){.pt-nav-bar-menu .navbar-datetime .dt-value,.pt-nav-bar-menu .navbar-user-profile-left{display:none}.pt-nav-bar-menu .navbar-user-menu{width:240px}.pt-nav-bar-menu .navbar-actions{gap:8px}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: PTNotificationComponent, selector: "pt-notification", inputs: ["notifications", "config", "totalRecords", "totalUnreadRecords", "page", "rows", "loading"], outputs: ["notificationClick", "action", "globalAction", "viewAll", "panelOpened", "panelClosed", "loadMore"] }, { kind: "component", type: PTReleaseNotesComponent, selector: "pt-release-notes", inputs: ["releases", "config", "loading", "hasMore", "pageSize", "totalUnreadRecords"], outputs: ["releaseClick", "viewAll", "loadMore"] }] }); }
7443
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTNavbarMenuComponent, isStandalone: false, selector: "pt-nav-bar-menu", inputs: { navBarMenuConfig: "navBarMenuConfig", serverDateTime: "serverDateTime", notifications: "notifications", notificationConfig: "notificationConfig", notificationTotalRecords: "notificationTotalRecords", notificationTotalUnreadRecords: "notificationTotalUnreadRecords", notificationPage: "notificationPage", notificationRows: "notificationRows", notificationLoading: "notificationLoading", releaseNotes: "releaseNotes", releaseNotesConfig: "releaseNotesConfig", releaseNotesLoading: "releaseNotesLoading", releaseNotesHasMore: "releaseNotesHasMore", releaseNotesPageSize: "releaseNotesPageSize", releaseNotesTotalUnreadRecords: "releaseNotesTotalUnreadRecords" }, outputs: { toggleSidebar: "toggleSidebar", notificationAction: "notificationAction", notificationClick: "notificationClick", notificationPanelOpened: "notificationPanelOpened", notificationPanelClosed: "notificationPanelClosed", notificationGlobalAction: "notificationGlobalAction", notificationViewAll: "notificationViewAll", notificationLoadMore: "notificationLoadMore", releaseNoteClick: "releaseNoteClick", releaseNoteAction: "releaseNoteAction", releaseNoteGlobalAction: "releaseNoteGlobalAction", releaseNotesViewAll: "releaseNotesViewAll", releaseNotesLoadMore: "releaseNotesLoadMore" }, host: { listeners: { "document:click": "closeUserMenu()" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <div class=\"navbar-left\">\n <a class=\"logo-link\" routerLink=\"/\">\n @if (getLogoUrl()) {\n <img\n class=\"navbar-logo\"\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n />\n }\n\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a class=\"toggle-btn\" (click)=\"toggleMenu()\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n @if (hasDateTime()) {\n <div class=\"navbar-middle\" [ngClass]=\"getDateTimePositionClass()\">\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n @if (isFixedMode()) {\n <input\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n }\n </div>\n </div>\n }\n\n <div class=\"pt-navbar-actions\">\n <pt-release-notes\n [releases]=\"releaseNotes\"\n [config]=\"releaseNotesConfig\"\n [loading]=\"releaseNotesLoading\"\n [hasMore]=\"releaseNotesHasMore\"\n [pageSize]=\"releaseNotesPageSize\"\n [totalUnreadRecords]=\"releaseNotesTotalUnreadRecords\"\n (releaseClick)=\"onReleaseNoteClick($event)\"\n (action)=\"onReleaseNoteAction($event)\"\n (globalAction)=\"onReleaseNoteGlobalAction($event)\"\n (viewAll)=\"onReleaseNotesViewAll()\"\n (loadMore)=\"onReleaseNotesLoadMore($event)\"\n ></pt-release-notes>\n\n <pt-notification\n [notifications]=\"notifications\"\n [config]=\"notificationConfig\"\n [totalRecords]=\"notificationTotalRecords\"\n [totalUnreadRecords]=\"notificationTotalUnreadRecords\"\n [page]=\"notificationPage\"\n [rows]=\"notificationRows\"\n [loading]=\"notificationLoading\"\n (notificationClick)=\"onNotificationClick($event)\"\n (action)=\"onNotificationAction($event)\"\n (globalAction)=\"onNotificationGlobalAction($event)\"\n (viewAll)=\"onNotificationViewAll()\"\n (panelOpened)=\"onNotificationPanelOpened()\"\n (panelClosed)=\"onNotificationPanelClosed()\"\n (loadMore)=\"onNotificationLoadMore($event)\"\n ></pt-notification>\n @if (hasUser()) {\n <div class=\"navbar-user\" (click)=\"$event.stopPropagation()\">\n @if (showProfileLeftOfAvatar()) {\n <div\n class=\"navbar-user-profile-left\"\n [ngStyle]=\"getUserProfileTextStyles()\"\n >\n {{ getUserProfile() }}\n </div>\n }\n\n <button\n type=\"button\"\n class=\"navbar-user-trigger\"\n (click)=\"toggleUserMenu()\"\n >\n <div class=\"navbar-user-avatar\" [ngStyle]=\"getUserAvatarStyles()\">\n @if (isInitialsAvatar()) {\n <span>\n {{ getUserInitials() }}\n </span>\n } @else {\n <i class=\"fa fa-user\"></i>\n }\n </div>\n </button>\n\n @if (isUserMenuOpen) {\n <div class=\"navbar-user-menu\">\n <div class=\"navbar-user-menu-header\">\n <div\n class=\"navbar-user-menu-avatar\"\n [ngStyle]=\"getUserAvatarStyles()\"\n >\n @if (isInitialsAvatar()) {\n <span>\n {{ getUserInitials() }}\n </span>\n } @else {\n <i class=\"fa fa-user\"></i>\n }\n </div>\n\n <div class=\"navbar-user-menu-identity\">\n <div class=\"navbar-user-menu-name\">\n {{ getUserFullName() }}\n </div>\n\n @if (showProfileInMenu()) {\n <div\n class=\"navbar-user-menu-profile\"\n [ngStyle]=\"getUserProfileTextStyles()\"\n >\n {{ getUserProfile() }}\n </div>\n }\n\n <div class=\"navbar-user-menu-username\">\n {{ getUsername() }}\n </div>\n </div>\n </div>\n\n @if (hasUserMenuItems()) {\n <div class=\"navbar-user-menu-separator\"></div>\n\n @for (item of getUserMenuItems(); track item) {\n @if (item.separatorBefore) {\n <div class=\"navbar-user-menu-separator\"></div>\n }\n\n <button\n type=\"button\"\n [class]=\"getUserMenuItemClasses(item)\"\n [disabled]=\"item.disabled\"\n (click)=\"onUserMenuItemClick(item)\"\n >\n @if (getUserMenuItemIcon(item)) {\n <i [class]=\"getUserMenuItemIcon(item)\"></i>\n }\n\n <span>\n {{ item.text }}\n </span>\n </button>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;min-width:0;box-sizing:border-box;padding-right:16px;padding-left:16px;border-bottom:1px solid var(--pt-navbar-border, #e5e7eb);background-color:var(--pt-navbar-bg, #ffffff);color:var(--pt-navbar-text, #1f2937);background-size:cover;background-position:center;gap:16px}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;min-width:0;color:inherit;text-decoration:none}.pt-nav-bar-menu .navbar-logo{display:block;margin-left:0;margin-right:16px;object-fit:contain}.pt-nav-bar-menu .navbar-title{min-width:0;color:var(--pt-navbar-title, inherit);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .toggle-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;margin-left:8px;padding:0;border-radius:10px;cursor:pointer;box-sizing:border-box;transition:background-color .15s ease}.pt-nav-bar-menu .toggle-btn:hover{background-color:var(--pt-navbar-toggle-hover-bg, #f1f5f9)}.pt-nav-bar-menu .toggle-btn>i{line-height:1}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{color:var(--pt-navbar-toggle-color, #333333);font-size:1.35rem}.pt-nav-bar-menu .navbar-middle{display:flex;align-items:center;min-width:0;flex:1 1 auto;padding:0 16px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;max-width:100%;flex:0 0 auto;white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-value{color:var(--pt-navbar-datetime-text, inherit);white-space:nowrap;line-height:1}.pt-nav-bar-menu .navbar-datetime .dt-input{height:34px;padding:0 9px;border:1px solid var(--pt-navbar-input-border, #d1d5db);border-radius:8px;background:var(--pt-navbar-input-bg, #ffffff);color:var(--pt-navbar-input-text, #333333);font-size:12px;outline:none;box-sizing:border-box}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:var(--pt-navbar-input-focus-border, rgba(3, 76, 131, .7));box-shadow:0 0 0 3px var(--pt-navbar-input-focus-shadow, rgba(3, 76, 131, .12))}.pt-nav-bar-menu .pt-navbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0;flex:0 0 auto;white-space:nowrap}.pt-nav-bar-menu pt-release-notes,.pt-nav-bar-menu pt-notification{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.pt-nav-bar-menu .navbar-user{position:relative;display:flex;align-items:center;gap:10px;margin-left:4px;flex:0 0 auto}.pt-nav-bar-menu .navbar-user-profile-left{display:inline-flex;align-items:center;justify-content:center;max-width:170px;min-height:34px;padding:0 14px;border:1px solid var(--pt-navbar-user-profile-border, #bfdbfe);border-radius:999px;background:var(--pt-navbar-user-profile-bg, #eff6ff);color:var(--pt-navbar-user-profile-text, #334155);box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.82rem;font-weight:700;line-height:1}.pt-nav-bar-menu .navbar-user-trigger{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:999px;background:transparent;cursor:pointer;box-sizing:border-box}.pt-nav-bar-menu .navbar-user-trigger:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-navbar-user-focus-shadow, rgba(37, 99, 235, .14))}.pt-nav-bar-menu .navbar-user-avatar,.pt-nav-bar-menu .navbar-user-menu-avatar{display:flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;border:1px solid var(--pt-navbar-user-avatar-border, #bfdbfe);border-radius:999px;background:var(--pt-navbar-user-avatar-bg, #eff6ff);color:var(--pt-navbar-user-avatar-text, #2563eb);box-sizing:border-box;font-size:.92rem;font-weight:800;letter-spacing:.04em;line-height:1;text-transform:uppercase}.pt-nav-bar-menu .navbar-user-avatar i,.pt-nav-bar-menu .navbar-user-menu-avatar i{font-size:1rem}.pt-nav-bar-menu .navbar-user-menu{position:absolute;top:calc(100% + 10px);right:0;width:260px;padding:.75rem;border:1px solid var(--pt-navbar-user-menu-border, #e5e7eb);border-radius:14px;background:var(--pt-navbar-user-menu-bg, #ffffff);color:var(--pt-navbar-user-menu-text, #334155);box-shadow:var( --pt-navbar-user-menu-shadow, 0 18px 45px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10005}.pt-nav-bar-menu .navbar-user-menu-header{display:flex;align-items:center;gap:.75rem;padding:.35rem .25rem .65rem}.pt-nav-bar-menu .navbar-user-menu-avatar{width:46px;height:46px;min-width:46px;font-size:1.05rem}.pt-nav-bar-menu .navbar-user-menu-identity{min-width:0;flex:1 1 auto}.pt-nav-bar-menu .navbar-user-menu-name{color:var(--pt-navbar-user-menu-name, #0f172a);font-size:.95rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-profile{margin-top:.15rem;color:var(--pt-navbar-user-menu-profile, #2563eb);font-size:.8rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-username{margin-top:.15rem;color:var(--pt-navbar-user-menu-username, #64748b);font-size:.78rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-separator{height:1px;margin:.4rem 0;background:var(--pt-navbar-user-menu-separator, #e5e7eb)}.pt-nav-bar-menu .navbar-user-menu-item{display:flex;align-items:center;gap:.55rem;width:100%;min-height:38px;padding:.5rem .55rem;border:none;border-radius:9px;background:transparent;color:var(--pt-navbar-user-menu-item-text, #334155);box-sizing:border-box;cursor:pointer;text-align:left;font-size:.86rem;font-weight:600;transition:background-color .15s ease,color .15s ease}.pt-nav-bar-menu .navbar-user-menu-item:hover:not(:disabled){background:var(--pt-navbar-user-menu-item-hover-bg, #f1f5f9);color:var(--pt-navbar-user-menu-item-hover-text, #0f172a)}.pt-nav-bar-menu .navbar-user-menu-item.danger{color:var(--pt-navbar-user-menu-item-danger-text, #dc2626)}.pt-nav-bar-menu .navbar-user-menu-item.danger:hover:not(:disabled){background:var(--pt-navbar-user-menu-item-danger-hover-bg, #fef2f2);color:var(--pt-navbar-user-menu-item-danger-hover-text, #b91c1c)}.pt-nav-bar-menu .navbar-user-menu-item.disabled,.pt-nav-bar-menu .navbar-user-menu-item:disabled{opacity:.55;cursor:not-allowed}.pt-nav-bar-menu .navbar-user-menu-item i{width:18px;flex:0 0 18px;text-align:center}@media(max-width:900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px;padding-top:8px;padding-bottom:8px}.pt-nav-bar-menu .navbar-left{flex:1 1 auto}.pt-nav-bar-menu .navbar-middle{order:3;width:100%;flex:1 0 100%;padding:4px 0 0;justify-content:center}.pt-nav-bar-menu .pt-navbar-actions{flex:0 0 auto}.pt-nav-bar-menu .navbar-user-profile-left{max-width:130px}}@media(max-width:650px){.pt-nav-bar-menu{gap:8px}.pt-nav-bar-menu .navbar-title{display:none}.pt-nav-bar-menu .toggle-btn{margin-left:0}.pt-nav-bar-menu .navbar-user-profile-left{display:none}.pt-nav-bar-menu .pt-navbar-actions{gap:4px}}@media(max-width:520px){.pt-nav-bar-menu{padding-right:8px;padding-left:8px}.pt-nav-bar-menu .navbar-datetime .dt-value{font-size:.8rem!important}.pt-nav-bar-menu .navbar-user-menu{position:fixed;top:60px;right:8px;width:240px}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: PTNotificationComponent, selector: "pt-notification", inputs: ["notifications", "config", "totalRecords", "totalUnreadRecords", "page", "rows", "loading"], outputs: ["notificationClick", "action", "globalAction", "viewAll", "panelOpened", "panelClosed", "loadMore"] }, { kind: "component", type: PTReleaseNotesComponent, selector: "pt-release-notes", inputs: ["releases", "config", "loading", "hasMore", "pageSize", "totalUnreadRecords"], outputs: ["releaseClick", "action", "globalAction", "viewAll", "loadMore", "panelOpened", "panelClosed"] }] }); }
7215
7444
  }
7216
7445
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNavbarMenuComponent, decorators: [{
7217
7446
  type: Component,
7218
- args: [{ selector: 'pt-nav-bar-menu', standalone: false, template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <div class=\"navbar-left\">\n <a class=\"logo-link\" routerLink=\"/\">\n @if (getLogoUrl()) {\n <img\n class=\"navbar-logo\"\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n />\n }\n\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a class=\"toggle-btn\" (click)=\"toggleMenu()\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n @if (hasDateTime()) {\n <div class=\"navbar-middle\" [ngClass]=\"getDateTimePositionClass()\">\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n @if (isFixedMode()) {\n <input\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n }\n </div>\n </div>\n }\n\n <div class=\"pt-navbar-actions\">\n <pt-release-notes\n [releases]=\"releaseNotes\"\n [config]=\"releaseNotesConfig\"\n [loading]=\"releaseNotesLoading\"\n [hasMore]=\"releaseNotesHasMore\"\n [pageSize]=\"releaseNotesPageSize\"\n [totalUnreadRecords]=\"releaseNotesTotalUnreadRecords\"\n (releaseClick)=\"onReleaseNoteClick($event)\"\n (viewAll)=\"onReleaseNotesViewAll()\"\n (loadMore)=\"onReleaseNotesLoadMore($event)\"\n ></pt-release-notes>\n\n <pt-notification\n [notifications]=\"notifications\"\n [config]=\"notificationConfig\"\n [totalRecords]=\"notificationTotalRecords\"\n [totalUnreadRecords]=\"notificationTotalUnreadRecords\"\n [page]=\"notificationPage\"\n [rows]=\"notificationRows\"\n [loading]=\"notificationLoading\"\n (notificationClick)=\"onNotificationClick($event)\"\n (action)=\"onNotificationAction($event)\"\n (globalAction)=\"onNotificationGlobalAction($event)\"\n (viewAll)=\"onNotificationViewAll()\"\n (panelOpened)=\"onNotificationPanelOpened()\"\n (panelClosed)=\"onNotificationPanelClosed()\"\n (loadMore)=\"onNotificationLoadMore($event)\"\n ></pt-notification>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;align-items:center;justify-content:space-between;padding-right:10px;padding-left:10px;border-bottom:1px solid var(--pt-navbar-border, #ddd);background-color:var(--pt-navbar-bg, #fff);color:var(--pt-navbar-text, #1f2937);background-size:cover;background-position:center;gap:12px;min-width:0;width:100%;box-sizing:border-box}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit;min-width:0}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-title{color:var(--pt-navbar-title, inherit);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-middle{flex:1 1 auto;display:flex;align-items:center;min-width:0;padding:0 12px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;white-space:nowrap;max-width:100%}.pt-nav-bar-menu .navbar-datetime .dt-value{color:var(--pt-navbar-datetime-text, inherit);white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-input{height:32px;padding:0 8px;border:1px solid var(--pt-navbar-input-border, rgba(0, 0, 0, .18));border-radius:6px;background:var(--pt-navbar-input-bg, #fff);font-size:12px;color:var(--pt-navbar-input-text, #333);outline:none}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:var(--pt-navbar-input-focus-border, rgba(3, 76, 131, .7));box-shadow:0 0 0 3px var(--pt-navbar-input-focus-shadow, rgba(3, 76, 131, .12))}.pt-nav-bar-menu .navbar-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto;min-width:0}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:var(--pt-navbar-link, #333);text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:var(--pt-navbar-link-hover, #000)}.pt-nav-bar-menu pt-notification{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:var(--pt-navbar-toggle-color, #333)}.pt-nav-bar-menu .toggle-btn:hover{background-color:var(--pt-navbar-toggle-hover-bg, #f1f1f1)}.pt-nav-bar-menu .navbar-user{position:relative;display:flex;align-items:center;gap:.65rem;flex:0 0 auto}.pt-nav-bar-menu .navbar-user-profile-left{max-width:170px;color:var(--pt-navbar-user-profile-text, #334155);font-size:.82rem;font-weight:700;background:var(--pt-navbar-user-profile-bg, #eff6ff);border:1px solid var(--pt-navbar-user-profile-border, #bfdbfe);border-radius:999px;padding:.28rem .65rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-trigger{border:none;background:transparent;padding:0;cursor:pointer;display:flex;align-items:center}.pt-nav-bar-menu .navbar-user-avatar,.pt-nav-bar-menu .navbar-user-menu-avatar{width:38px;height:38px;min-width:38px;border-radius:999px;background:var(--pt-navbar-user-avatar-bg, #eff6ff);color:var(--pt-navbar-user-avatar-text, #2563eb);border:1px solid var(--pt-navbar-user-avatar-border, #bfdbfe);display:flex;align-items:center;justify-content:center;font-size:.92rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;line-height:1;box-sizing:border-box}.pt-nav-bar-menu .navbar-user-avatar i,.pt-nav-bar-menu .navbar-user-menu-avatar i{font-size:1rem}.pt-nav-bar-menu .navbar-user-menu{position:absolute;top:calc(100% + 10px);right:0;width:260px;background:var(--pt-navbar-user-menu-bg, #ffffff);color:var(--pt-navbar-user-menu-text, #334155);border:1px solid var(--pt-navbar-user-menu-border, #e5e7eb);border-radius:14px;box-shadow:var( --pt-navbar-user-menu-shadow, 0 18px 45px rgba(15, 23, 42, .16) );z-index:9999;padding:.75rem;box-sizing:border-box}.pt-nav-bar-menu .navbar-user-menu-header{display:flex;align-items:center;gap:.75rem;padding:.35rem .25rem .65rem}.pt-nav-bar-menu .navbar-user-menu-avatar{width:46px;height:46px;min-width:46px;font-size:1.05rem}.pt-nav-bar-menu .navbar-user-menu-identity{min-width:0}.pt-nav-bar-menu .navbar-user-menu-name{color:var(--pt-navbar-user-menu-name, #0f172a);font-size:.95rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-profile{margin-top:.15rem;color:var(--pt-navbar-user-menu-profile, #2563eb);font-size:.8rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-username{margin-top:.15rem;color:var(--pt-navbar-user-menu-username, #64748b);font-size:.78rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-separator{height:1px;background:var(--pt-navbar-user-menu-separator, #e5e7eb);margin:.4rem 0}.pt-nav-bar-menu .navbar-user-menu-item{width:100%;min-height:36px;border:none;background:transparent;border-radius:9px;color:var(--pt-navbar-user-menu-item-text, #334155);display:flex;align-items:center;gap:.55rem;padding:.5rem .55rem;font-size:.86rem;font-weight:600;cursor:pointer;text-align:left;box-sizing:border-box}.pt-nav-bar-menu .navbar-user-menu-item:hover{background:var(--pt-navbar-user-menu-item-hover-bg, #f1f5f9);color:var(--pt-navbar-user-menu-item-hover-text, #0f172a)}.pt-nav-bar-menu .navbar-user-menu-item.danger{color:var(--pt-navbar-user-menu-item-danger-text, #dc2626)}.pt-nav-bar-menu .navbar-user-menu-item.danger:hover{background:var(--pt-navbar-user-menu-item-danger-hover-bg, #fef2f2);color:var(--pt-navbar-user-menu-item-danger-hover-text, #b91c1c)}.pt-nav-bar-menu .navbar-user-menu-item.disabled,.pt-nav-bar-menu .navbar-user-menu-item:disabled{opacity:.55;cursor:not-allowed}@media(max-width:900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px}.pt-nav-bar-menu .navbar-left{width:100%;justify-content:space-between}.pt-nav-bar-menu .navbar-middle{width:100%;padding:0;justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-right .navbar-datetime,.pt-nav-bar-menu .navbar-middle.dt-pos-center .navbar-datetime{padding-left:0;border-left:none}.pt-nav-bar-menu .navbar-actions{width:100%;justify-content:flex-end}.pt-nav-bar-menu .navbar-user-menu{right:0}.pt-nav-bar-menu .navbar-user-profile-left{max-width:130px}}@media(max-width:520px){.pt-nav-bar-menu .navbar-datetime .dt-value,.pt-nav-bar-menu .navbar-user-profile-left{display:none}.pt-nav-bar-menu .navbar-user-menu{width:240px}.pt-nav-bar-menu .navbar-actions{gap:8px}}\n"] }]
7447
+ args: [{ selector: 'pt-nav-bar-menu', standalone: false, template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <div class=\"navbar-left\">\n <a class=\"logo-link\" routerLink=\"/\">\n @if (getLogoUrl()) {\n <img\n class=\"navbar-logo\"\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n />\n }\n\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a class=\"toggle-btn\" (click)=\"toggleMenu()\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n @if (hasDateTime()) {\n <div class=\"navbar-middle\" [ngClass]=\"getDateTimePositionClass()\">\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n @if (isFixedMode()) {\n <input\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n }\n </div>\n </div>\n }\n\n <div class=\"pt-navbar-actions\">\n <pt-release-notes\n [releases]=\"releaseNotes\"\n [config]=\"releaseNotesConfig\"\n [loading]=\"releaseNotesLoading\"\n [hasMore]=\"releaseNotesHasMore\"\n [pageSize]=\"releaseNotesPageSize\"\n [totalUnreadRecords]=\"releaseNotesTotalUnreadRecords\"\n (releaseClick)=\"onReleaseNoteClick($event)\"\n (action)=\"onReleaseNoteAction($event)\"\n (globalAction)=\"onReleaseNoteGlobalAction($event)\"\n (viewAll)=\"onReleaseNotesViewAll()\"\n (loadMore)=\"onReleaseNotesLoadMore($event)\"\n ></pt-release-notes>\n\n <pt-notification\n [notifications]=\"notifications\"\n [config]=\"notificationConfig\"\n [totalRecords]=\"notificationTotalRecords\"\n [totalUnreadRecords]=\"notificationTotalUnreadRecords\"\n [page]=\"notificationPage\"\n [rows]=\"notificationRows\"\n [loading]=\"notificationLoading\"\n (notificationClick)=\"onNotificationClick($event)\"\n (action)=\"onNotificationAction($event)\"\n (globalAction)=\"onNotificationGlobalAction($event)\"\n (viewAll)=\"onNotificationViewAll()\"\n (panelOpened)=\"onNotificationPanelOpened()\"\n (panelClosed)=\"onNotificationPanelClosed()\"\n (loadMore)=\"onNotificationLoadMore($event)\"\n ></pt-notification>\n @if (hasUser()) {\n <div class=\"navbar-user\" (click)=\"$event.stopPropagation()\">\n @if (showProfileLeftOfAvatar()) {\n <div\n class=\"navbar-user-profile-left\"\n [ngStyle]=\"getUserProfileTextStyles()\"\n >\n {{ getUserProfile() }}\n </div>\n }\n\n <button\n type=\"button\"\n class=\"navbar-user-trigger\"\n (click)=\"toggleUserMenu()\"\n >\n <div class=\"navbar-user-avatar\" [ngStyle]=\"getUserAvatarStyles()\">\n @if (isInitialsAvatar()) {\n <span>\n {{ getUserInitials() }}\n </span>\n } @else {\n <i class=\"fa fa-user\"></i>\n }\n </div>\n </button>\n\n @if (isUserMenuOpen) {\n <div class=\"navbar-user-menu\">\n <div class=\"navbar-user-menu-header\">\n <div\n class=\"navbar-user-menu-avatar\"\n [ngStyle]=\"getUserAvatarStyles()\"\n >\n @if (isInitialsAvatar()) {\n <span>\n {{ getUserInitials() }}\n </span>\n } @else {\n <i class=\"fa fa-user\"></i>\n }\n </div>\n\n <div class=\"navbar-user-menu-identity\">\n <div class=\"navbar-user-menu-name\">\n {{ getUserFullName() }}\n </div>\n\n @if (showProfileInMenu()) {\n <div\n class=\"navbar-user-menu-profile\"\n [ngStyle]=\"getUserProfileTextStyles()\"\n >\n {{ getUserProfile() }}\n </div>\n }\n\n <div class=\"navbar-user-menu-username\">\n {{ getUsername() }}\n </div>\n </div>\n </div>\n\n @if (hasUserMenuItems()) {\n <div class=\"navbar-user-menu-separator\"></div>\n\n @for (item of getUserMenuItems(); track item) {\n @if (item.separatorBefore) {\n <div class=\"navbar-user-menu-separator\"></div>\n }\n\n <button\n type=\"button\"\n [class]=\"getUserMenuItemClasses(item)\"\n [disabled]=\"item.disabled\"\n (click)=\"onUserMenuItemClick(item)\"\n >\n @if (getUserMenuItemIcon(item)) {\n <i [class]=\"getUserMenuItemIcon(item)\"></i>\n }\n\n <span>\n {{ item.text }}\n </span>\n </button>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;min-width:0;box-sizing:border-box;padding-right:16px;padding-left:16px;border-bottom:1px solid var(--pt-navbar-border, #e5e7eb);background-color:var(--pt-navbar-bg, #ffffff);color:var(--pt-navbar-text, #1f2937);background-size:cover;background-position:center;gap:16px}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;min-width:0;color:inherit;text-decoration:none}.pt-nav-bar-menu .navbar-logo{display:block;margin-left:0;margin-right:16px;object-fit:contain}.pt-nav-bar-menu .navbar-title{min-width:0;color:var(--pt-navbar-title, inherit);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .toggle-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;margin-left:8px;padding:0;border-radius:10px;cursor:pointer;box-sizing:border-box;transition:background-color .15s ease}.pt-nav-bar-menu .toggle-btn:hover{background-color:var(--pt-navbar-toggle-hover-bg, #f1f5f9)}.pt-nav-bar-menu .toggle-btn>i{line-height:1}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{color:var(--pt-navbar-toggle-color, #333333);font-size:1.35rem}.pt-nav-bar-menu .navbar-middle{display:flex;align-items:center;min-width:0;flex:1 1 auto;padding:0 16px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;max-width:100%;flex:0 0 auto;white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-value{color:var(--pt-navbar-datetime-text, inherit);white-space:nowrap;line-height:1}.pt-nav-bar-menu .navbar-datetime .dt-input{height:34px;padding:0 9px;border:1px solid var(--pt-navbar-input-border, #d1d5db);border-radius:8px;background:var(--pt-navbar-input-bg, #ffffff);color:var(--pt-navbar-input-text, #333333);font-size:12px;outline:none;box-sizing:border-box}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:var(--pt-navbar-input-focus-border, rgba(3, 76, 131, .7));box-shadow:0 0 0 3px var(--pt-navbar-input-focus-shadow, rgba(3, 76, 131, .12))}.pt-nav-bar-menu .pt-navbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0;flex:0 0 auto;white-space:nowrap}.pt-nav-bar-menu pt-release-notes,.pt-nav-bar-menu pt-notification{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.pt-nav-bar-menu .navbar-user{position:relative;display:flex;align-items:center;gap:10px;margin-left:4px;flex:0 0 auto}.pt-nav-bar-menu .navbar-user-profile-left{display:inline-flex;align-items:center;justify-content:center;max-width:170px;min-height:34px;padding:0 14px;border:1px solid var(--pt-navbar-user-profile-border, #bfdbfe);border-radius:999px;background:var(--pt-navbar-user-profile-bg, #eff6ff);color:var(--pt-navbar-user-profile-text, #334155);box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.82rem;font-weight:700;line-height:1}.pt-nav-bar-menu .navbar-user-trigger{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:999px;background:transparent;cursor:pointer;box-sizing:border-box}.pt-nav-bar-menu .navbar-user-trigger:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pt-navbar-user-focus-shadow, rgba(37, 99, 235, .14))}.pt-nav-bar-menu .navbar-user-avatar,.pt-nav-bar-menu .navbar-user-menu-avatar{display:flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;border:1px solid var(--pt-navbar-user-avatar-border, #bfdbfe);border-radius:999px;background:var(--pt-navbar-user-avatar-bg, #eff6ff);color:var(--pt-navbar-user-avatar-text, #2563eb);box-sizing:border-box;font-size:.92rem;font-weight:800;letter-spacing:.04em;line-height:1;text-transform:uppercase}.pt-nav-bar-menu .navbar-user-avatar i,.pt-nav-bar-menu .navbar-user-menu-avatar i{font-size:1rem}.pt-nav-bar-menu .navbar-user-menu{position:absolute;top:calc(100% + 10px);right:0;width:260px;padding:.75rem;border:1px solid var(--pt-navbar-user-menu-border, #e5e7eb);border-radius:14px;background:var(--pt-navbar-user-menu-bg, #ffffff);color:var(--pt-navbar-user-menu-text, #334155);box-shadow:var( --pt-navbar-user-menu-shadow, 0 18px 45px rgba(15, 23, 42, .16) );box-sizing:border-box;z-index:10005}.pt-nav-bar-menu .navbar-user-menu-header{display:flex;align-items:center;gap:.75rem;padding:.35rem .25rem .65rem}.pt-nav-bar-menu .navbar-user-menu-avatar{width:46px;height:46px;min-width:46px;font-size:1.05rem}.pt-nav-bar-menu .navbar-user-menu-identity{min-width:0;flex:1 1 auto}.pt-nav-bar-menu .navbar-user-menu-name{color:var(--pt-navbar-user-menu-name, #0f172a);font-size:.95rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-profile{margin-top:.15rem;color:var(--pt-navbar-user-menu-profile, #2563eb);font-size:.8rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-username{margin-top:.15rem;color:var(--pt-navbar-user-menu-username, #64748b);font-size:.78rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-user-menu-separator{height:1px;margin:.4rem 0;background:var(--pt-navbar-user-menu-separator, #e5e7eb)}.pt-nav-bar-menu .navbar-user-menu-item{display:flex;align-items:center;gap:.55rem;width:100%;min-height:38px;padding:.5rem .55rem;border:none;border-radius:9px;background:transparent;color:var(--pt-navbar-user-menu-item-text, #334155);box-sizing:border-box;cursor:pointer;text-align:left;font-size:.86rem;font-weight:600;transition:background-color .15s ease,color .15s ease}.pt-nav-bar-menu .navbar-user-menu-item:hover:not(:disabled){background:var(--pt-navbar-user-menu-item-hover-bg, #f1f5f9);color:var(--pt-navbar-user-menu-item-hover-text, #0f172a)}.pt-nav-bar-menu .navbar-user-menu-item.danger{color:var(--pt-navbar-user-menu-item-danger-text, #dc2626)}.pt-nav-bar-menu .navbar-user-menu-item.danger:hover:not(:disabled){background:var(--pt-navbar-user-menu-item-danger-hover-bg, #fef2f2);color:var(--pt-navbar-user-menu-item-danger-hover-text, #b91c1c)}.pt-nav-bar-menu .navbar-user-menu-item.disabled,.pt-nav-bar-menu .navbar-user-menu-item:disabled{opacity:.55;cursor:not-allowed}.pt-nav-bar-menu .navbar-user-menu-item i{width:18px;flex:0 0 18px;text-align:center}@media(max-width:900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px;padding-top:8px;padding-bottom:8px}.pt-nav-bar-menu .navbar-left{flex:1 1 auto}.pt-nav-bar-menu .navbar-middle{order:3;width:100%;flex:1 0 100%;padding:4px 0 0;justify-content:center}.pt-nav-bar-menu .pt-navbar-actions{flex:0 0 auto}.pt-nav-bar-menu .navbar-user-profile-left{max-width:130px}}@media(max-width:650px){.pt-nav-bar-menu{gap:8px}.pt-nav-bar-menu .navbar-title{display:none}.pt-nav-bar-menu .toggle-btn{margin-left:0}.pt-nav-bar-menu .navbar-user-profile-left{display:none}.pt-nav-bar-menu .pt-navbar-actions{gap:4px}}@media(max-width:520px){.pt-nav-bar-menu{padding-right:8px;padding-left:8px}.pt-nav-bar-menu .navbar-datetime .dt-value{font-size:.8rem!important}.pt-nav-bar-menu .navbar-user-menu{position:fixed;top:60px;right:8px;width:240px}}\n"] }]
7219
7448
  }], propDecorators: { navBarMenuConfig: [{
7220
7449
  type: Input
7221
7450
  }], serverDateTime: [{
@@ -7264,6 +7493,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
7264
7493
  type: Output
7265
7494
  }], releaseNoteClick: [{
7266
7495
  type: Output
7496
+ }], releaseNoteAction: [{
7497
+ type: Output
7498
+ }], releaseNoteGlobalAction: [{
7499
+ type: Output
7267
7500
  }], releaseNotesViewAll: [{
7268
7501
  type: Output
7269
7502
  }], releaseNotesLoadMore: [{
@@ -7404,14 +7637,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
7404
7637
 
7405
7638
  class PTReleaseNotesModule {
7406
7639
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7407
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesModule, declarations: [PTReleaseNotesComponent], imports: [CommonModule, PopoverModule], exports: [PTReleaseNotesComponent] }); }
7408
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesModule, imports: [CommonModule, PopoverModule] }); }
7640
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesModule, declarations: [PTReleaseNotesComponent], imports: [CommonModule], exports: [PTReleaseNotesComponent] }); }
7641
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesModule, imports: [CommonModule] }); }
7409
7642
  }
7410
7643
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesModule, decorators: [{
7411
7644
  type: NgModule,
7412
7645
  args: [{
7413
7646
  declarations: [PTReleaseNotesComponent],
7414
- imports: [CommonModule, PopoverModule],
7647
+ imports: [CommonModule],
7415
7648
  exports: [PTReleaseNotesComponent],
7416
7649
  }]
7417
7650
  }] });
@@ -7898,7 +8131,7 @@ class PTBreadCrumbComponent {
7898
8131
  });
7899
8132
  }
7900
8133
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTBreadCrumbComponent, deps: [{ token: PTBreadCrumbService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
7901
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTBreadCrumbComponent, isStandalone: false, selector: "pt-bread-crumb", inputs: { breadCrumbConfig: "breadCrumbConfig" }, ngImport: i0, template: "@if (items && items.length > 0) {\n <div\n class=\"pt-bread-crumb breadcrumb-container\"\n >\n <p-breadcrumb class=\"max-w-full\" [model]=\"items\" [home]=\"home\"></p-breadcrumb>\n </div>\n}\n", styles: [".pt-bread-crumb ::ng-deep chevronrighticon.p-element.p-icon-wrapper.ng-star-inserted{margin-top:4px}.pt-bread-crumb ::ng-deep .p-breadcrumb{margin-bottom:20px}.pt-bread-crumb .breadcrumb-container{padding:10px;border-radius:5px;margin-bottom:20px}.pt-bread-crumb ::ng-deep .breadcrumb-background{background-size:cover;background-position:center;background-repeat:no-repeat}\n"], dependencies: [{ kind: "component", type: i2$2.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }] }); }
8134
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTBreadCrumbComponent, isStandalone: false, selector: "pt-bread-crumb", inputs: { breadCrumbConfig: "breadCrumbConfig" }, ngImport: i0, template: "@if (items && items.length > 0) {\n <div\n class=\"pt-bread-crumb breadcrumb-container\"\n >\n <p-breadcrumb class=\"max-w-full\" [model]=\"items\" [home]=\"home\"></p-breadcrumb>\n </div>\n}\n", styles: [".pt-bread-crumb ::ng-deep chevronrighticon.p-element.p-icon-wrapper.ng-star-inserted{margin-top:4px}.pt-bread-crumb ::ng-deep .p-breadcrumb{margin-bottom:20px}.pt-bread-crumb .breadcrumb-container{padding:10px;border-radius:5px;margin-bottom:20px}.pt-bread-crumb ::ng-deep .breadcrumb-background{background-size:cover;background-position:center;background-repeat:no-repeat}\n"], dependencies: [{ kind: "component", type: i2$1.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }] }); }
7902
8135
  }
7903
8136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTBreadCrumbComponent, decorators: [{
7904
8137
  type: Component,
@@ -7929,6 +8162,8 @@ class PTPageSkeletonComponent {
7929
8162
  this.notificationViewAll = new EventEmitter();
7930
8163
  this.notificationLoadMore = new EventEmitter();
7931
8164
  this.releaseNoteClick = new EventEmitter();
8165
+ this.releaseNoteAction = new EventEmitter();
8166
+ this.releaseNoteGlobalAction = new EventEmitter();
7932
8167
  this.releaseNotesViewAll = new EventEmitter();
7933
8168
  this.releaseNotesLoadMore = new EventEmitter();
7934
8169
  this.isSidebarVisible = true;
@@ -7965,6 +8200,12 @@ class PTPageSkeletonComponent {
7965
8200
  onReleaseNoteClick(event) {
7966
8201
  this.releaseNoteClick.emit(event);
7967
8202
  }
8203
+ onReleaseNoteAction(event) {
8204
+ this.releaseNoteAction.emit(event);
8205
+ }
8206
+ onReleaseNoteGlobalAction(event) {
8207
+ this.releaseNoteGlobalAction.emit(event);
8208
+ }
7968
8209
  onReleaseNotesViewAll() {
7969
8210
  this.releaseNotesViewAll.emit();
7970
8211
  }
@@ -8003,11 +8244,11 @@ class PTPageSkeletonComponent {
8003
8244
  };
8004
8245
  }
8005
8246
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTPageSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8006
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTPageSkeletonComponent, isStandalone: false, selector: "pt-page-skeleton", inputs: { pageSkeletonConfig: "pageSkeletonConfig", serverDateTime: "serverDateTime", notifications: "notifications", notificationConfig: "notificationConfig", notificationTotalRecords: "notificationTotalRecords", notificationTotalUnreadRecords: "notificationTotalUnreadRecords", notificationPage: "notificationPage", notificationRows: "notificationRows", notificationLoading: "notificationLoading", releaseNotes: "releaseNotes", releaseNotesConfig: "releaseNotesConfig", releaseNotesLoading: "releaseNotesLoading", releaseNotesHasMore: "releaseNotesHasMore", releaseNotesPageSize: "releaseNotesPageSize", releaseNotesTotalUnreadRecords: "releaseNotesTotalUnreadRecords" }, outputs: { toggleSidebar: "toggleSidebar", notificationAction: "notificationAction", notificationClick: "notificationClick", notificationPanelOpened: "notificationPanelOpened", notificationPanelClosed: "notificationPanelClosed", notificationGlobalAction: "notificationGlobalAction", notificationViewAll: "notificationViewAll", notificationLoadMore: "notificationLoadMore", releaseNoteClick: "releaseNoteClick", releaseNotesViewAll: "releaseNotesViewAll", releaseNotesLoadMore: "releaseNotesLoadMore" }, ngImport: i0, template: "<pt-card [config]=\"pageSkeletonConfig.backgroundCardConfig!\">\n <pt-nav-bar-menu\n [navBarMenuConfig]=\"pageSkeletonConfig.navBarMenuConfig\"\n [serverDateTime]=\"serverDateTime\"\n [notifications]=\"notifications\"\n [notificationConfig]=\"notificationConfig\"\n [notificationTotalRecords]=\"notificationTotalRecords\"\n [notificationTotalUnreadRecords]=\"notificationTotalUnreadRecords\"\n [notificationPage]=\"notificationPage\"\n [notificationRows]=\"notificationRows\"\n [notificationLoading]=\"notificationLoading\"\n [releaseNotes]=\"releaseNotes\"\n [releaseNotesConfig]=\"releaseNotesConfig\"\n [releaseNotesLoading]=\"releaseNotesLoading\"\n [releaseNotesHasMore]=\"releaseNotesHasMore\"\n [releaseNotesPageSize]=\"releaseNotesPageSize\"\n [releaseNotesTotalUnreadRecords]=\"releaseNotesTotalUnreadRecords\"\n (toggleSidebar)=\"onToggleSidebar()\"\n (notificationClick)=\"onNotificationClick($event)\"\n (notificationAction)=\"onNotificationAction($event)\"\n (notificationGlobalAction)=\"onNotificationGlobalAction($event)\"\n (notificationViewAll)=\"onNotificationViewAll()\"\n (notificationLoadMore)=\"onNotificationLoadMore($event)\"\n (notificationPanelOpened)=\"onNotificationPanelOpened()\"\n (notificationPanelClosed)=\"onNotificationPanelClosed()\"\n (releaseNoteClick)=\"onReleaseNoteClick($event)\"\n (releaseNotesViewAll)=\"onReleaseNotesViewAll()\"\n (releaseNotesLoadMore)=\"onReleaseNotesLoadMore($event)\"\n ></pt-nav-bar-menu>\n\n <div class=\"main-content\">\n @if (pageSkeletonConfig.sideMenuBarConfig) {\n <pt-side-bar-menu\n class=\"sidebar\"\n [menuConfig]=\"pageSkeletonConfig.sideMenuBarConfig\"\n [ngClass]=\"{\n hidden: !isSidebarVisible,\n }\"\n ></pt-side-bar-menu>\n }\n\n <div\n class=\"content-area\"\n [ngClass]=\"{\n 'full-width': !isSidebarVisible,\n }\"\n >\n <pt-card [config]=\"pageSkeletonConfig.contentCardConfig\">\n @if (pageSkeletonConfig.breadCrumbConfig) {\n <pt-bread-crumb\n [breadCrumbConfig]=\"pageSkeletonConfig.breadCrumbConfig\"\n class=\"bread-crumb\"\n ></pt-bread-crumb>\n }\n\n <router-outlet></router-outlet>\n </pt-card>\n </div>\n </div>\n</pt-card>\n\n@if (pageSkeletonConfig.footerConfig) {\n <pt-footer\n [footerConfig]=\"pageSkeletonConfig.footerConfig\"\n class=\"pt-footer\"\n ></pt-footer>\n}\n", styles: [".bread-crumb{margin-bottom:15px;color:var(--pt-page-skeleton-breadcrumb-text, inherit)}.app-container{display:flex;flex-direction:column;height:100vh;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.main-content{display:flex;flex-grow:1;transition:all .3s ease-in-out;background:var(--pt-page-skeleton-main-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.content-area{flex-grow:1;display:flex;justify-content:center;align-items:flex-start;transition:all .3s ease-in-out;margin-left:14px;width:100%;overflow-x:hidden;background:var(--pt-page-skeleton-content-area-bg, transparent);color:var(--pt-page-skeleton-content-text, inherit)}.sidebar{transition:all .3s ease-in-out;background:var(--pt-page-skeleton-sidebar-bg, transparent);color:var(--pt-page-skeleton-sidebar-text, inherit)}.content-area.full-width{margin-left:0;width:100%}:host{display:block;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}:host>pt-card{width:100%;min-height:100vh;max-width:100%;overflow:hidden;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.content-area>pt-card{width:100%;height:100%;max-width:100%;overflow:hidden;background:var(--pt-page-skeleton-content-bg, transparent);color:var(--pt-page-skeleton-content-text, inherit)}pt-card .card-body-scrollable{overflow-x:auto}.pt-footer{display:block;width:100%;position:relative;z-index:0;margin-top:0;background:var(--pt-page-skeleton-footer-bg, transparent);color:var(--pt-page-skeleton-footer-text, inherit)}:host ::ng-deep .pt-footer .footer-card,:host ::ng-deep .pt-footer pt-card{height:auto!important;overflow:visible!important;background:var(--pt-page-skeleton-footer-bg, transparent)!important;color:var(--pt-page-skeleton-footer-text, inherit)!important}.footer-card{width:100%;background-color:var(--pt-page-skeleton-footer-bg, transparent);color:var(--pt-page-skeleton-footer-text, inherit)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PTNavbarMenuComponent, selector: "pt-nav-bar-menu", inputs: ["navBarMenuConfig", "serverDateTime", "notifications", "notificationConfig", "notificationTotalRecords", "notificationTotalUnreadRecords", "notificationPage", "notificationRows", "notificationLoading", "releaseNotes", "releaseNotesConfig", "releaseNotesLoading", "releaseNotesHasMore", "releaseNotesPageSize", "releaseNotesTotalUnreadRecords"], outputs: ["toggleSidebar", "notificationAction", "notificationClick", "notificationPanelOpened", "notificationPanelClosed", "notificationGlobalAction", "notificationViewAll", "notificationLoadMore", "releaseNoteClick", "releaseNotesViewAll", "releaseNotesLoadMore"] }, { kind: "component", type: PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "component", type: PTSideBarMenuComponent, selector: "pt-side-bar-menu", inputs: ["menuConfig"] }, { kind: "directive", type: i1$2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: PTFooterComponent, selector: "pt-footer", inputs: ["footerConfig"] }, { kind: "component", type: PTBreadCrumbComponent, selector: "pt-bread-crumb", inputs: ["breadCrumbConfig"] }] }); }
8247
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTPageSkeletonComponent, isStandalone: false, selector: "pt-page-skeleton", inputs: { pageSkeletonConfig: "pageSkeletonConfig", serverDateTime: "serverDateTime", notifications: "notifications", notificationConfig: "notificationConfig", notificationTotalRecords: "notificationTotalRecords", notificationTotalUnreadRecords: "notificationTotalUnreadRecords", notificationPage: "notificationPage", notificationRows: "notificationRows", notificationLoading: "notificationLoading", releaseNotes: "releaseNotes", releaseNotesConfig: "releaseNotesConfig", releaseNotesLoading: "releaseNotesLoading", releaseNotesHasMore: "releaseNotesHasMore", releaseNotesPageSize: "releaseNotesPageSize", releaseNotesTotalUnreadRecords: "releaseNotesTotalUnreadRecords" }, outputs: { toggleSidebar: "toggleSidebar", notificationAction: "notificationAction", notificationClick: "notificationClick", notificationPanelOpened: "notificationPanelOpened", notificationPanelClosed: "notificationPanelClosed", notificationGlobalAction: "notificationGlobalAction", notificationViewAll: "notificationViewAll", notificationLoadMore: "notificationLoadMore", releaseNoteClick: "releaseNoteClick", releaseNoteAction: "releaseNoteAction", releaseNoteGlobalAction: "releaseNoteGlobalAction", releaseNotesViewAll: "releaseNotesViewAll", releaseNotesLoadMore: "releaseNotesLoadMore" }, ngImport: i0, template: "<pt-card [config]=\"pageSkeletonConfig.backgroundCardConfig!\">\n <pt-nav-bar-menu\n [navBarMenuConfig]=\"pageSkeletonConfig.navBarMenuConfig\"\n [serverDateTime]=\"serverDateTime\"\n [notifications]=\"notifications\"\n [notificationConfig]=\"notificationConfig\"\n [notificationTotalRecords]=\"notificationTotalRecords\"\n [notificationTotalUnreadRecords]=\"notificationTotalUnreadRecords\"\n [notificationPage]=\"notificationPage\"\n [notificationRows]=\"notificationRows\"\n [notificationLoading]=\"notificationLoading\"\n [releaseNotes]=\"releaseNotes\"\n [releaseNotesConfig]=\"releaseNotesConfig\"\n [releaseNotesLoading]=\"releaseNotesLoading\"\n [releaseNotesHasMore]=\"releaseNotesHasMore\"\n [releaseNotesPageSize]=\"releaseNotesPageSize\"\n [releaseNotesTotalUnreadRecords]=\"releaseNotesTotalUnreadRecords\"\n (toggleSidebar)=\"onToggleSidebar()\"\n (notificationClick)=\"onNotificationClick($event)\"\n (notificationAction)=\"onNotificationAction($event)\"\n (notificationGlobalAction)=\"onNotificationGlobalAction($event)\"\n (notificationViewAll)=\"onNotificationViewAll()\"\n (notificationLoadMore)=\"onNotificationLoadMore($event)\"\n (notificationPanelOpened)=\"onNotificationPanelOpened()\"\n (notificationPanelClosed)=\"onNotificationPanelClosed()\"\n (releaseNoteClick)=\"onReleaseNoteClick($event)\"\n (releaseNoteAction)=\"onReleaseNoteAction($event)\"\n (releaseNoteGlobalAction)=\"onReleaseNoteGlobalAction($event)\"\n (releaseNotesViewAll)=\"onReleaseNotesViewAll()\"\n (releaseNotesLoadMore)=\"onReleaseNotesLoadMore($event)\"\n ></pt-nav-bar-menu>\n\n <div class=\"main-content\">\n @if (pageSkeletonConfig.sideMenuBarConfig) {\n <pt-side-bar-menu\n class=\"sidebar\"\n [menuConfig]=\"pageSkeletonConfig.sideMenuBarConfig\"\n [ngClass]=\"{\n hidden: !isSidebarVisible,\n }\"\n ></pt-side-bar-menu>\n }\n\n <div\n class=\"content-area\"\n [ngClass]=\"{\n 'full-width': !isSidebarVisible,\n }\"\n >\n <pt-card [config]=\"pageSkeletonConfig.contentCardConfig\">\n @if (pageSkeletonConfig.breadCrumbConfig) {\n <pt-bread-crumb\n [breadCrumbConfig]=\"pageSkeletonConfig.breadCrumbConfig\"\n class=\"bread-crumb\"\n ></pt-bread-crumb>\n }\n\n <router-outlet></router-outlet>\n </pt-card>\n </div>\n </div>\n</pt-card>\n\n@if (pageSkeletonConfig.footerConfig) {\n <pt-footer\n [footerConfig]=\"pageSkeletonConfig.footerConfig\"\n class=\"pt-footer\"\n ></pt-footer>\n}\n", styles: [".bread-crumb{margin-bottom:15px;color:var(--pt-page-skeleton-breadcrumb-text, inherit)}.app-container{display:flex;flex-direction:column;height:100vh;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.main-content{display:flex;flex-grow:1;transition:all .3s ease-in-out;background:var(--pt-page-skeleton-main-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.content-area{flex-grow:1;display:flex;justify-content:center;align-items:flex-start;transition:all .3s ease-in-out;margin-left:14px;width:100%;overflow-x:hidden;background:var(--pt-page-skeleton-content-area-bg, transparent);color:var(--pt-page-skeleton-content-text, inherit)}.sidebar{transition:all .3s ease-in-out;background:var(--pt-page-skeleton-sidebar-bg, transparent);color:var(--pt-page-skeleton-sidebar-text, inherit)}.content-area.full-width{margin-left:0;width:100%}:host{display:block;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}:host>pt-card{width:100%;min-height:100vh;max-width:100%;overflow:hidden;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.content-area>pt-card{width:100%;height:100%;max-width:100%;overflow:hidden;background:var(--pt-page-skeleton-content-bg, transparent);color:var(--pt-page-skeleton-content-text, inherit)}pt-card .card-body-scrollable{overflow-x:auto}.pt-footer{display:block;width:100%;position:relative;z-index:0;margin-top:0;background:var(--pt-page-skeleton-footer-bg, transparent);color:var(--pt-page-skeleton-footer-text, inherit)}:host ::ng-deep .pt-footer .footer-card,:host ::ng-deep .pt-footer pt-card{height:auto!important;overflow:visible!important;background:var(--pt-page-skeleton-footer-bg, transparent)!important;color:var(--pt-page-skeleton-footer-text, inherit)!important}.footer-card{width:100%;background-color:var(--pt-page-skeleton-footer-bg, transparent);color:var(--pt-page-skeleton-footer-text, inherit)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PTNavbarMenuComponent, selector: "pt-nav-bar-menu", inputs: ["navBarMenuConfig", "serverDateTime", "notifications", "notificationConfig", "notificationTotalRecords", "notificationTotalUnreadRecords", "notificationPage", "notificationRows", "notificationLoading", "releaseNotes", "releaseNotesConfig", "releaseNotesLoading", "releaseNotesHasMore", "releaseNotesPageSize", "releaseNotesTotalUnreadRecords"], outputs: ["toggleSidebar", "notificationAction", "notificationClick", "notificationPanelOpened", "notificationPanelClosed", "notificationGlobalAction", "notificationViewAll", "notificationLoadMore", "releaseNoteClick", "releaseNoteAction", "releaseNoteGlobalAction", "releaseNotesViewAll", "releaseNotesLoadMore"] }, { kind: "component", type: PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "component", type: PTSideBarMenuComponent, selector: "pt-side-bar-menu", inputs: ["menuConfig"] }, { kind: "directive", type: i1$2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: PTFooterComponent, selector: "pt-footer", inputs: ["footerConfig"] }, { kind: "component", type: PTBreadCrumbComponent, selector: "pt-bread-crumb", inputs: ["breadCrumbConfig"] }] }); }
8007
8248
  }
8008
8249
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTPageSkeletonComponent, decorators: [{
8009
8250
  type: Component,
8010
- args: [{ selector: 'pt-page-skeleton', standalone: false, template: "<pt-card [config]=\"pageSkeletonConfig.backgroundCardConfig!\">\n <pt-nav-bar-menu\n [navBarMenuConfig]=\"pageSkeletonConfig.navBarMenuConfig\"\n [serverDateTime]=\"serverDateTime\"\n [notifications]=\"notifications\"\n [notificationConfig]=\"notificationConfig\"\n [notificationTotalRecords]=\"notificationTotalRecords\"\n [notificationTotalUnreadRecords]=\"notificationTotalUnreadRecords\"\n [notificationPage]=\"notificationPage\"\n [notificationRows]=\"notificationRows\"\n [notificationLoading]=\"notificationLoading\"\n [releaseNotes]=\"releaseNotes\"\n [releaseNotesConfig]=\"releaseNotesConfig\"\n [releaseNotesLoading]=\"releaseNotesLoading\"\n [releaseNotesHasMore]=\"releaseNotesHasMore\"\n [releaseNotesPageSize]=\"releaseNotesPageSize\"\n [releaseNotesTotalUnreadRecords]=\"releaseNotesTotalUnreadRecords\"\n (toggleSidebar)=\"onToggleSidebar()\"\n (notificationClick)=\"onNotificationClick($event)\"\n (notificationAction)=\"onNotificationAction($event)\"\n (notificationGlobalAction)=\"onNotificationGlobalAction($event)\"\n (notificationViewAll)=\"onNotificationViewAll()\"\n (notificationLoadMore)=\"onNotificationLoadMore($event)\"\n (notificationPanelOpened)=\"onNotificationPanelOpened()\"\n (notificationPanelClosed)=\"onNotificationPanelClosed()\"\n (releaseNoteClick)=\"onReleaseNoteClick($event)\"\n (releaseNotesViewAll)=\"onReleaseNotesViewAll()\"\n (releaseNotesLoadMore)=\"onReleaseNotesLoadMore($event)\"\n ></pt-nav-bar-menu>\n\n <div class=\"main-content\">\n @if (pageSkeletonConfig.sideMenuBarConfig) {\n <pt-side-bar-menu\n class=\"sidebar\"\n [menuConfig]=\"pageSkeletonConfig.sideMenuBarConfig\"\n [ngClass]=\"{\n hidden: !isSidebarVisible,\n }\"\n ></pt-side-bar-menu>\n }\n\n <div\n class=\"content-area\"\n [ngClass]=\"{\n 'full-width': !isSidebarVisible,\n }\"\n >\n <pt-card [config]=\"pageSkeletonConfig.contentCardConfig\">\n @if (pageSkeletonConfig.breadCrumbConfig) {\n <pt-bread-crumb\n [breadCrumbConfig]=\"pageSkeletonConfig.breadCrumbConfig\"\n class=\"bread-crumb\"\n ></pt-bread-crumb>\n }\n\n <router-outlet></router-outlet>\n </pt-card>\n </div>\n </div>\n</pt-card>\n\n@if (pageSkeletonConfig.footerConfig) {\n <pt-footer\n [footerConfig]=\"pageSkeletonConfig.footerConfig\"\n class=\"pt-footer\"\n ></pt-footer>\n}\n", styles: [".bread-crumb{margin-bottom:15px;color:var(--pt-page-skeleton-breadcrumb-text, inherit)}.app-container{display:flex;flex-direction:column;height:100vh;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.main-content{display:flex;flex-grow:1;transition:all .3s ease-in-out;background:var(--pt-page-skeleton-main-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.content-area{flex-grow:1;display:flex;justify-content:center;align-items:flex-start;transition:all .3s ease-in-out;margin-left:14px;width:100%;overflow-x:hidden;background:var(--pt-page-skeleton-content-area-bg, transparent);color:var(--pt-page-skeleton-content-text, inherit)}.sidebar{transition:all .3s ease-in-out;background:var(--pt-page-skeleton-sidebar-bg, transparent);color:var(--pt-page-skeleton-sidebar-text, inherit)}.content-area.full-width{margin-left:0;width:100%}:host{display:block;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}:host>pt-card{width:100%;min-height:100vh;max-width:100%;overflow:hidden;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.content-area>pt-card{width:100%;height:100%;max-width:100%;overflow:hidden;background:var(--pt-page-skeleton-content-bg, transparent);color:var(--pt-page-skeleton-content-text, inherit)}pt-card .card-body-scrollable{overflow-x:auto}.pt-footer{display:block;width:100%;position:relative;z-index:0;margin-top:0;background:var(--pt-page-skeleton-footer-bg, transparent);color:var(--pt-page-skeleton-footer-text, inherit)}:host ::ng-deep .pt-footer .footer-card,:host ::ng-deep .pt-footer pt-card{height:auto!important;overflow:visible!important;background:var(--pt-page-skeleton-footer-bg, transparent)!important;color:var(--pt-page-skeleton-footer-text, inherit)!important}.footer-card{width:100%;background-color:var(--pt-page-skeleton-footer-bg, transparent);color:var(--pt-page-skeleton-footer-text, inherit)}\n"] }]
8251
+ args: [{ selector: 'pt-page-skeleton', standalone: false, template: "<pt-card [config]=\"pageSkeletonConfig.backgroundCardConfig!\">\n <pt-nav-bar-menu\n [navBarMenuConfig]=\"pageSkeletonConfig.navBarMenuConfig\"\n [serverDateTime]=\"serverDateTime\"\n [notifications]=\"notifications\"\n [notificationConfig]=\"notificationConfig\"\n [notificationTotalRecords]=\"notificationTotalRecords\"\n [notificationTotalUnreadRecords]=\"notificationTotalUnreadRecords\"\n [notificationPage]=\"notificationPage\"\n [notificationRows]=\"notificationRows\"\n [notificationLoading]=\"notificationLoading\"\n [releaseNotes]=\"releaseNotes\"\n [releaseNotesConfig]=\"releaseNotesConfig\"\n [releaseNotesLoading]=\"releaseNotesLoading\"\n [releaseNotesHasMore]=\"releaseNotesHasMore\"\n [releaseNotesPageSize]=\"releaseNotesPageSize\"\n [releaseNotesTotalUnreadRecords]=\"releaseNotesTotalUnreadRecords\"\n (toggleSidebar)=\"onToggleSidebar()\"\n (notificationClick)=\"onNotificationClick($event)\"\n (notificationAction)=\"onNotificationAction($event)\"\n (notificationGlobalAction)=\"onNotificationGlobalAction($event)\"\n (notificationViewAll)=\"onNotificationViewAll()\"\n (notificationLoadMore)=\"onNotificationLoadMore($event)\"\n (notificationPanelOpened)=\"onNotificationPanelOpened()\"\n (notificationPanelClosed)=\"onNotificationPanelClosed()\"\n (releaseNoteClick)=\"onReleaseNoteClick($event)\"\n (releaseNoteAction)=\"onReleaseNoteAction($event)\"\n (releaseNoteGlobalAction)=\"onReleaseNoteGlobalAction($event)\"\n (releaseNotesViewAll)=\"onReleaseNotesViewAll()\"\n (releaseNotesLoadMore)=\"onReleaseNotesLoadMore($event)\"\n ></pt-nav-bar-menu>\n\n <div class=\"main-content\">\n @if (pageSkeletonConfig.sideMenuBarConfig) {\n <pt-side-bar-menu\n class=\"sidebar\"\n [menuConfig]=\"pageSkeletonConfig.sideMenuBarConfig\"\n [ngClass]=\"{\n hidden: !isSidebarVisible,\n }\"\n ></pt-side-bar-menu>\n }\n\n <div\n class=\"content-area\"\n [ngClass]=\"{\n 'full-width': !isSidebarVisible,\n }\"\n >\n <pt-card [config]=\"pageSkeletonConfig.contentCardConfig\">\n @if (pageSkeletonConfig.breadCrumbConfig) {\n <pt-bread-crumb\n [breadCrumbConfig]=\"pageSkeletonConfig.breadCrumbConfig\"\n class=\"bread-crumb\"\n ></pt-bread-crumb>\n }\n\n <router-outlet></router-outlet>\n </pt-card>\n </div>\n </div>\n</pt-card>\n\n@if (pageSkeletonConfig.footerConfig) {\n <pt-footer\n [footerConfig]=\"pageSkeletonConfig.footerConfig\"\n class=\"pt-footer\"\n ></pt-footer>\n}\n", styles: [".bread-crumb{margin-bottom:15px;color:var(--pt-page-skeleton-breadcrumb-text, inherit)}.app-container{display:flex;flex-direction:column;height:100vh;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.main-content{display:flex;flex-grow:1;transition:all .3s ease-in-out;background:var(--pt-page-skeleton-main-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.content-area{flex-grow:1;display:flex;justify-content:center;align-items:flex-start;transition:all .3s ease-in-out;margin-left:14px;width:100%;overflow-x:hidden;background:var(--pt-page-skeleton-content-area-bg, transparent);color:var(--pt-page-skeleton-content-text, inherit)}.sidebar{transition:all .3s ease-in-out;background:var(--pt-page-skeleton-sidebar-bg, transparent);color:var(--pt-page-skeleton-sidebar-text, inherit)}.content-area.full-width{margin-left:0;width:100%}:host{display:block;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}:host>pt-card{width:100%;min-height:100vh;max-width:100%;overflow:hidden;background:var(--pt-page-skeleton-bg, transparent);color:var(--pt-page-skeleton-text, inherit)}.content-area>pt-card{width:100%;height:100%;max-width:100%;overflow:hidden;background:var(--pt-page-skeleton-content-bg, transparent);color:var(--pt-page-skeleton-content-text, inherit)}pt-card .card-body-scrollable{overflow-x:auto}.pt-footer{display:block;width:100%;position:relative;z-index:0;margin-top:0;background:var(--pt-page-skeleton-footer-bg, transparent);color:var(--pt-page-skeleton-footer-text, inherit)}:host ::ng-deep .pt-footer .footer-card,:host ::ng-deep .pt-footer pt-card{height:auto!important;overflow:visible!important;background:var(--pt-page-skeleton-footer-bg, transparent)!important;color:var(--pt-page-skeleton-footer-text, inherit)!important}.footer-card{width:100%;background-color:var(--pt-page-skeleton-footer-bg, transparent);color:var(--pt-page-skeleton-footer-text, inherit)}\n"] }]
8011
8252
  }], propDecorators: { pageSkeletonConfig: [{
8012
8253
  type: Input
8013
8254
  }], serverDateTime: [{
@@ -8056,6 +8297,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
8056
8297
  type: Output
8057
8298
  }], releaseNoteClick: [{
8058
8299
  type: Output
8300
+ }], releaseNoteAction: [{
8301
+ type: Output
8302
+ }], releaseNoteGlobalAction: [{
8303
+ type: Output
8059
8304
  }], releaseNotesViewAll: [{
8060
8305
  type: Output
8061
8306
  }], releaseNotesLoadMore: [{
@@ -8774,7 +9019,7 @@ class PTToastNotifierComponent {
8774
9019
  this.messageService.clear();
8775
9020
  }
8776
9021
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTToastNotifierComponent, deps: [{ token: i1$1.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
8777
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: PTToastNotifierComponent, isStandalone: false, selector: "pt-toast-notifier", ngImport: i0, template: "<p-toast position=\"top-right\"></p-toast>\n", dependencies: [{ kind: "component", type: i2$3.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "motionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
9022
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: PTToastNotifierComponent, isStandalone: false, selector: "pt-toast-notifier", ngImport: i0, template: "<p-toast position=\"top-right\"></p-toast>\n", dependencies: [{ kind: "component", type: i2$2.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "motionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
8778
9023
  }
8779
9024
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTToastNotifierComponent, decorators: [{
8780
9025
  type: Component,
@@ -8945,7 +9190,7 @@ class PTDialogComponent {
8945
9190
  return this.removeTextUtilityClasses(this.config.headerIconClass);
8946
9191
  }
8947
9192
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8948
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTDialogComponent, isStandalone: false, selector: "pt-dialog", inputs: { config: "config", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, ngImport: i0, template: "<p-dialog\n [visible]=\"_internalVisible\"\n (visibleChange)=\"onInternalVisibleChange($event)\"\n [header]=\"config.header\"\n [modal]=\"config.modal\"\n [style]=\"config.style\"\n [breakpoints]=\"config.breakpoints\"\n [closable]=\"config.closable\"\n [draggable]=\"config.draggable && !isFullscreen\"\n [resizable]=\"config.resizable && !isFullscreen\"\n [maximizable]=\"false\"\n [dismissableMask]=\"config.dismissableMask\"\n [closeOnEscape]=\"false\"\n [blockScroll]=\"config.blockScroll\"\n [position]=\"primePosition\"\n [contentStyle]=\"config.contentStyle\"\n [styleClass]=\"dialogStyleClass\"\n >\n <ng-template pTemplate=\"header\">\n <div class=\"pt-dialog-header-inner\">\n <div class=\"pt-dialog-header-left\">\n @if (config.headerIconClass) {\n <i\n class=\"pt-dialog-header-icon\"\n [ngClass]=\"safeHeaderIconClass\"\n [ngStyle]=\"headerIconStyle\"\n ></i>\n }\n\n <ng-content select=\"[ptDialogHeader]\"></ng-content>\n\n @if (config.header) {\n <span\n class=\"pt-dialog-header-title\"\n [ngStyle]=\"headerTitleStyle\"\n >\n {{ config.header }}\n </span>\n }\n </div>\n\n <div class=\"pt-dialog-header-actions\">\n <button\n type=\"button\"\n class=\"pt-dialog-header-btn\"\n [title]=\"isFullscreen ? 'R\u00E9duire' : 'Plein \u00E9cran'\"\n (click)=\"toggleFullscreen()\"\n >\n <i\n class=\"pi\"\n [ngClass]=\"\n isFullscreen ? 'pi-window-minimize' : 'pi-window-maximize'\n \"\n ></i>\n </button>\n </div>\n </div>\n </ng-template>\n\n <div class=\"pt-dialog-body\" [ngStyle]=\"bodyStyle\">\n <div class=\"pt-dialog-body-inner\">\n <ng-content select=\"[ptDialogContent]\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (config.showFooter !== false) {\n <ng-template pTemplate=\"footer\">\n <div class=\"pt-dialog-footer-buttons\">\n <ng-content select=\"[ptDialogFooter]\"></ng-content>\n </div>\n </ng-template>\n }\n</p-dialog>\n", styles: [":host ::ng-deep .p-dialog.pt-dialog-overlay{border-radius:18px;overflow:hidden!important;box-shadow:var(--pt-dialog-shadow, 0 20px 45px rgba(15, 23, 42, .35));background:var(--pt-dialog-bg, #ffffff);color:var(--pt-dialog-text, #0f172a);z-index:1200!important}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-header{overflow:hidden!important;flex:0 0 auto;background:var(--pt-dialog-header-bg, #ffffff);color:var(--pt-dialog-header-text, #0f172a)}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-content{overflow:hidden!important;position:relative;z-index:1;background:var(--pt-dialog-bg, #ffffff);color:var(--pt-dialog-text, #0f172a)}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer{overflow:hidden!important;flex:0 0 auto}:host ::ng-deep .p-datepicker,:host ::ng-deep .p-datepicker-panel,:host ::ng-deep .p-calendar-panel{z-index:99999!important}:host ::ng-deep .p-dialog.pt-dialog-info .p-dialog-header{background-color:var(--pt-dialog-info-header-bg, #e0f2fe);border-bottom:0}:host ::ng-deep .p-dialog.pt-dialog-success .p-dialog-header{background-color:var(--pt-dialog-success-header-bg, #dcfce7);border-bottom:0}:host ::ng-deep .p-dialog.pt-dialog-warning .p-dialog-header{background-color:var(--pt-dialog-warning-header-bg, #fff4d1);border-bottom:0}:host ::ng-deep .p-dialog.pt-dialog-danger .p-dialog-header{background-color:var(--pt-dialog-danger-header-bg, #fde4e4);border-bottom:0}.pt-dialog-header-inner{width:100%;padding:1rem 1rem .75rem;display:flex;align-items:center;justify-content:space-between}.pt-dialog-header-left{min-width:0;display:flex;align-items:center}.pt-dialog-header-icon{margin-right:.5rem;flex:0 0 auto}.pt-dialog-header-title{font-weight:700;font-size:1.125rem;overflow-wrap:anywhere}.pt-dialog-header-actions{margin-left:auto;display:flex;align-items:center;gap:.5rem;flex:0 0 auto}.pt-dialog-header-btn{width:34px;height:34px;border-radius:10px;border:1px solid var(--pt-dialog-header-btn-border, rgba(148, 163, 184, .3));background:var(--pt-dialog-header-btn-bg, rgba(255, 255, 255, .65));color:var(--pt-dialog-header-btn-color, #334155);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .2s ease,border-color .2s ease,transform .2s ease}.pt-dialog-header-btn:hover{background:var(--pt-dialog-header-btn-hover-bg, rgba(255, 255, 255, .9));border-color:var( --pt-dialog-header-btn-hover-border, rgba(100, 116, 139, .5) );transform:translateY(-1px)}.pt-dialog-header-btn i{font-size:.95rem}:host ::ng-deep .p-dialog.pt-dialog-info .pt-dialog-header-title,:host ::ng-deep .p-dialog.pt-dialog-info .pt-dialog-header-icon{color:var(--pt-dialog-info-header-text, #2563eb)}:host ::ng-deep .p-dialog.pt-dialog-success .pt-dialog-header-title,:host ::ng-deep .p-dialog.pt-dialog-success .pt-dialog-header-icon{color:var(--pt-dialog-success-header-text, #15803d)}:host ::ng-deep .p-dialog.pt-dialog-warning .pt-dialog-header-title,:host ::ng-deep .p-dialog.pt-dialog-warning .pt-dialog-header-icon{color:var(--pt-dialog-warning-header-text, #b45309)}:host ::ng-deep .p-dialog.pt-dialog-danger .pt-dialog-header-title,:host ::ng-deep .p-dialog.pt-dialog-danger .pt-dialog-header-icon{color:var(--pt-dialog-danger-header-text, #b91c1c)}.pt-dialog-body{padding:1.25rem 1rem 1rem;display:flex;justify-content:center;width:100%;max-width:100%;box-sizing:border-box;overflow:auto!important;background:var(--pt-dialog-bg, #ffffff);color:var(--pt-dialog-text, #0f172a)}.pt-dialog-body-inner{width:100%;max-width:100%;min-width:0;display:flex;flex-direction:column;gap:.75rem;box-sizing:border-box;overflow:visible}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer{background:var(--pt-dialog-footer-bg, #ffffff)!important;border-top:1px solid var(--pt-dialog-footer-border, rgba(148, 163, 184, .25))!important;padding:16px 32px 22px!important}.pt-dialog-footer-buttons{display:flex;justify-content:center;gap:16px}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer .p-button{border-radius:9999px;padding:.75rem 1.8rem;font-weight:600}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer .p-button i.pi,:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer .p-button i.fa{margin-right:.5rem}:host ::ng-deep .p-dialog.pt-dialog-danger .p-dialog-footer .p-button:not(.p-button-success):not(.p-button-warning):not(.p-button-danger):not(.p-button-info):not(.p-button-secondary):not(.p-button-help){background:var(--pt-dialog-danger-button-bg, #ffffff)!important;border-color:var(--pt-dialog-danger-button-border, #dc2626)!important;color:var(--pt-dialog-danger-button-text, #dc2626)!important}:host ::ng-deep .p-dialog.pt-dialog-warning .p-dialog-footer .p-button:not(.p-button-success):not(.p-button-warning):not(.p-button-danger):not(.p-button-info):not(.p-button-secondary):not(.p-button-help){background:var(--pt-dialog-warning-button-bg, #ffffff)!important;border-color:var(--pt-dialog-warning-button-border, #d97706)!important;color:var(--pt-dialog-warning-button-text, #b45309)!important}:host ::ng-deep .p-dialog.pt-dialog-success .p-dialog-footer .p-button:not(.p-button-success):not(.p-button-warning):not(.p-button-danger):not(.p-button-info):not(.p-button-secondary):not(.p-button-help){background:var(--pt-dialog-success-button-bg, #ffffff)!important;border-color:var(--pt-dialog-success-button-border, #16a34a)!important;color:var(--pt-dialog-success-button-text, #15803d)!important}:host ::ng-deep .p-dialog.pt-dialog-info .p-dialog-footer .p-button:not(.p-button-success):not(.p-button-warning):not(.p-button-danger):not(.p-button-info):not(.p-button-secondary):not(.p-button-help){background:var(--pt-dialog-info-button-bg, #ffffff)!important;border-color:var(--pt-dialog-info-button-border, #2563eb)!important;color:var(--pt-dialog-info-button-text, #2563eb)!important}:host ::ng-deep .p-dialog.pt-dialog-info .p-dialog-footer .p-button:not(.p-button-success):not(.p-button-warning):not(.p-button-danger):not(.p-button-info):not(.p-button-secondary):not(.p-button-help):hover{background:var(--pt-dialog-info-button-hover-bg, #eff6ff)!important}:host ::ng-deep .p-dialog.pt-dialog-fullscreen{position:fixed!important;inset:1rem!important;width:auto!important;max-width:none!important;height:calc(100vh - 2rem)!important;max-height:calc(100vh - 2rem)!important;margin:0!important;transform:none!important;display:flex!important;flex-direction:column!important}:host ::ng-deep .p-dialog.pt-dialog-fullscreen .p-dialog-header{flex:0 0 auto}:host ::ng-deep .p-dialog.pt-dialog-fullscreen .p-dialog-content{flex:1 1 auto!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:hidden!important;display:flex;flex-direction:column}:host ::ng-deep .p-dialog.pt-dialog-fullscreen .pt-dialog-body{flex:1 1 auto;min-height:0;height:auto!important;max-height:none!important;overflow:auto!important}:host ::ng-deep .p-dialog.pt-dialog-fullscreen .pt-dialog-body-inner{flex:1 1 auto;min-height:0;height:auto!important;overflow:visible}:host ::ng-deep .p-dialog.pt-dialog-fullscreen .p-dialog-footer{flex:0 0 auto}@media(max-width:768px){.pt-dialog-header-inner{padding:.85rem .85rem .65rem}.pt-dialog-header-title{font-size:1rem}.pt-dialog-body{padding:.85rem}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer{padding:14px 20px 18px!important}.pt-dialog-footer-buttons{flex-wrap:wrap;gap:10px}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2$4.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "maskMotionOptions", "motionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] }); }
9193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTDialogComponent, isStandalone: false, selector: "pt-dialog", inputs: { config: "config", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, ngImport: i0, template: "<p-dialog\n [visible]=\"_internalVisible\"\n (visibleChange)=\"onInternalVisibleChange($event)\"\n [header]=\"config.header\"\n [modal]=\"config.modal\"\n [style]=\"config.style\"\n [breakpoints]=\"config.breakpoints\"\n [closable]=\"config.closable\"\n [draggable]=\"config.draggable && !isFullscreen\"\n [resizable]=\"config.resizable && !isFullscreen\"\n [maximizable]=\"false\"\n [dismissableMask]=\"config.dismissableMask\"\n [closeOnEscape]=\"false\"\n [blockScroll]=\"config.blockScroll\"\n [position]=\"primePosition\"\n [contentStyle]=\"config.contentStyle\"\n [styleClass]=\"dialogStyleClass\"\n >\n <ng-template pTemplate=\"header\">\n <div class=\"pt-dialog-header-inner\">\n <div class=\"pt-dialog-header-left\">\n @if (config.headerIconClass) {\n <i\n class=\"pt-dialog-header-icon\"\n [ngClass]=\"safeHeaderIconClass\"\n [ngStyle]=\"headerIconStyle\"\n ></i>\n }\n\n <ng-content select=\"[ptDialogHeader]\"></ng-content>\n\n @if (config.header) {\n <span\n class=\"pt-dialog-header-title\"\n [ngStyle]=\"headerTitleStyle\"\n >\n {{ config.header }}\n </span>\n }\n </div>\n\n <div class=\"pt-dialog-header-actions\">\n <button\n type=\"button\"\n class=\"pt-dialog-header-btn\"\n [title]=\"isFullscreen ? 'R\u00E9duire' : 'Plein \u00E9cran'\"\n (click)=\"toggleFullscreen()\"\n >\n <i\n class=\"pi\"\n [ngClass]=\"\n isFullscreen ? 'pi-window-minimize' : 'pi-window-maximize'\n \"\n ></i>\n </button>\n </div>\n </div>\n </ng-template>\n\n <div class=\"pt-dialog-body\" [ngStyle]=\"bodyStyle\">\n <div class=\"pt-dialog-body-inner\">\n <ng-content select=\"[ptDialogContent]\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (config.showFooter !== false) {\n <ng-template pTemplate=\"footer\">\n <div class=\"pt-dialog-footer-buttons\">\n <ng-content select=\"[ptDialogFooter]\"></ng-content>\n </div>\n </ng-template>\n }\n</p-dialog>\n", styles: [":host ::ng-deep .p-dialog.pt-dialog-overlay{border-radius:18px;overflow:hidden!important;box-shadow:var(--pt-dialog-shadow, 0 20px 45px rgba(15, 23, 42, .35));background:var(--pt-dialog-bg, #ffffff);color:var(--pt-dialog-text, #0f172a);z-index:1200!important}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-header{overflow:hidden!important;flex:0 0 auto;background:var(--pt-dialog-header-bg, #ffffff);color:var(--pt-dialog-header-text, #0f172a)}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-content{overflow:hidden!important;position:relative;z-index:1;background:var(--pt-dialog-bg, #ffffff);color:var(--pt-dialog-text, #0f172a)}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer{overflow:hidden!important;flex:0 0 auto}:host ::ng-deep .p-datepicker,:host ::ng-deep .p-datepicker-panel,:host ::ng-deep .p-calendar-panel{z-index:99999!important}:host ::ng-deep .p-dialog.pt-dialog-info .p-dialog-header{background-color:var(--pt-dialog-info-header-bg, #e0f2fe);border-bottom:0}:host ::ng-deep .p-dialog.pt-dialog-success .p-dialog-header{background-color:var(--pt-dialog-success-header-bg, #dcfce7);border-bottom:0}:host ::ng-deep .p-dialog.pt-dialog-warning .p-dialog-header{background-color:var(--pt-dialog-warning-header-bg, #fff4d1);border-bottom:0}:host ::ng-deep .p-dialog.pt-dialog-danger .p-dialog-header{background-color:var(--pt-dialog-danger-header-bg, #fde4e4);border-bottom:0}.pt-dialog-header-inner{width:100%;padding:1rem 1rem .75rem;display:flex;align-items:center;justify-content:space-between}.pt-dialog-header-left{min-width:0;display:flex;align-items:center}.pt-dialog-header-icon{margin-right:.5rem;flex:0 0 auto}.pt-dialog-header-title{font-weight:700;font-size:1.125rem;overflow-wrap:anywhere}.pt-dialog-header-actions{margin-left:auto;display:flex;align-items:center;gap:.5rem;flex:0 0 auto}.pt-dialog-header-btn{width:34px;height:34px;border-radius:10px;border:1px solid var(--pt-dialog-header-btn-border, rgba(148, 163, 184, .3));background:var(--pt-dialog-header-btn-bg, rgba(255, 255, 255, .65));color:var(--pt-dialog-header-btn-color, #334155);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .2s ease,border-color .2s ease,transform .2s ease}.pt-dialog-header-btn:hover{background:var(--pt-dialog-header-btn-hover-bg, rgba(255, 255, 255, .9));border-color:var( --pt-dialog-header-btn-hover-border, rgba(100, 116, 139, .5) );transform:translateY(-1px)}.pt-dialog-header-btn i{font-size:.95rem}:host ::ng-deep .p-dialog.pt-dialog-info .pt-dialog-header-title,:host ::ng-deep .p-dialog.pt-dialog-info .pt-dialog-header-icon{color:var(--pt-dialog-info-header-text, #2563eb)}:host ::ng-deep .p-dialog.pt-dialog-success .pt-dialog-header-title,:host ::ng-deep .p-dialog.pt-dialog-success .pt-dialog-header-icon{color:var(--pt-dialog-success-header-text, #15803d)}:host ::ng-deep .p-dialog.pt-dialog-warning .pt-dialog-header-title,:host ::ng-deep .p-dialog.pt-dialog-warning .pt-dialog-header-icon{color:var(--pt-dialog-warning-header-text, #b45309)}:host ::ng-deep .p-dialog.pt-dialog-danger .pt-dialog-header-title,:host ::ng-deep .p-dialog.pt-dialog-danger .pt-dialog-header-icon{color:var(--pt-dialog-danger-header-text, #b91c1c)}.pt-dialog-body{padding:1.25rem 1rem 1rem;display:flex;justify-content:center;width:100%;max-width:100%;box-sizing:border-box;overflow:auto!important;background:var(--pt-dialog-bg, #ffffff);color:var(--pt-dialog-text, #0f172a)}.pt-dialog-body-inner{width:100%;max-width:100%;min-width:0;display:flex;flex-direction:column;gap:.75rem;box-sizing:border-box;overflow:visible}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer{background:var(--pt-dialog-footer-bg, #ffffff)!important;border-top:1px solid var(--pt-dialog-footer-border, rgba(148, 163, 184, .25))!important;padding:16px 32px 22px!important}.pt-dialog-footer-buttons{display:flex;justify-content:center;gap:16px}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer .p-button{border-radius:9999px;padding:.75rem 1.8rem;font-weight:600}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer .p-button i.pi,:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer .p-button i.fa{margin-right:.5rem}:host ::ng-deep .p-dialog.pt-dialog-danger .p-dialog-footer .p-button:not(.p-button-success):not(.p-button-warning):not(.p-button-danger):not(.p-button-info):not(.p-button-secondary):not(.p-button-help){background:var(--pt-dialog-danger-button-bg, #ffffff)!important;border-color:var(--pt-dialog-danger-button-border, #dc2626)!important;color:var(--pt-dialog-danger-button-text, #dc2626)!important}:host ::ng-deep .p-dialog.pt-dialog-warning .p-dialog-footer .p-button:not(.p-button-success):not(.p-button-warning):not(.p-button-danger):not(.p-button-info):not(.p-button-secondary):not(.p-button-help){background:var(--pt-dialog-warning-button-bg, #ffffff)!important;border-color:var(--pt-dialog-warning-button-border, #d97706)!important;color:var(--pt-dialog-warning-button-text, #b45309)!important}:host ::ng-deep .p-dialog.pt-dialog-success .p-dialog-footer .p-button:not(.p-button-success):not(.p-button-warning):not(.p-button-danger):not(.p-button-info):not(.p-button-secondary):not(.p-button-help){background:var(--pt-dialog-success-button-bg, #ffffff)!important;border-color:var(--pt-dialog-success-button-border, #16a34a)!important;color:var(--pt-dialog-success-button-text, #15803d)!important}:host ::ng-deep .p-dialog.pt-dialog-info .p-dialog-footer .p-button:not(.p-button-success):not(.p-button-warning):not(.p-button-danger):not(.p-button-info):not(.p-button-secondary):not(.p-button-help){background:var(--pt-dialog-info-button-bg, #ffffff)!important;border-color:var(--pt-dialog-info-button-border, #2563eb)!important;color:var(--pt-dialog-info-button-text, #2563eb)!important}:host ::ng-deep .p-dialog.pt-dialog-info .p-dialog-footer .p-button:not(.p-button-success):not(.p-button-warning):not(.p-button-danger):not(.p-button-info):not(.p-button-secondary):not(.p-button-help):hover{background:var(--pt-dialog-info-button-hover-bg, #eff6ff)!important}:host ::ng-deep .p-dialog.pt-dialog-fullscreen{position:fixed!important;inset:1rem!important;width:auto!important;max-width:none!important;height:calc(100vh - 2rem)!important;max-height:calc(100vh - 2rem)!important;margin:0!important;transform:none!important;display:flex!important;flex-direction:column!important}:host ::ng-deep .p-dialog.pt-dialog-fullscreen .p-dialog-header{flex:0 0 auto}:host ::ng-deep .p-dialog.pt-dialog-fullscreen .p-dialog-content{flex:1 1 auto!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:hidden!important;display:flex;flex-direction:column}:host ::ng-deep .p-dialog.pt-dialog-fullscreen .pt-dialog-body{flex:1 1 auto;min-height:0;height:auto!important;max-height:none!important;overflow:auto!important}:host ::ng-deep .p-dialog.pt-dialog-fullscreen .pt-dialog-body-inner{flex:1 1 auto;min-height:0;height:auto!important;overflow:visible}:host ::ng-deep .p-dialog.pt-dialog-fullscreen .p-dialog-footer{flex:0 0 auto}@media(max-width:768px){.pt-dialog-header-inner{padding:.85rem .85rem .65rem}.pt-dialog-header-title{font-size:1rem}.pt-dialog-body{padding:.85rem}:host ::ng-deep .p-dialog.pt-dialog-overlay .p-dialog-footer{padding:14px 20px 18px!important}.pt-dialog-footer-buttons{flex-wrap:wrap;gap:10px}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2$3.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "maskMotionOptions", "motionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] }); }
8949
9194
  }
8950
9195
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTDialogComponent, decorators: [{
8951
9196
  type: Component,
@@ -9727,7 +9972,7 @@ class PTAccordionComponent {
9727
9972
  .filter(Boolean));
9728
9973
  }
9729
9974
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTAccordionComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
9730
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTAccordionComponent, isStandalone: false, selector: "pt-accordion", inputs: { config: "config", value: "value" }, outputs: { valueChange: "valueChange", panelOpen: "panelOpen", panelClose: "panelClose" }, queries: [{ propertyName: "panelTemplates", predicate: PTAccordionPanelDirective }], usesOnChanges: true, ngImport: i0, template: "<!-- ng-prime-tools/projects/ng-prime-tools/src/lib/pt-accordion/pt-accordion.component.html -->\n\n<p-accordion\n [value]=\"value\"\n [multiple]=\"multiple\"\n [expandIcon]=\"expandIcon\"\n [collapseIcon]=\"collapseIcon\"\n [ngClass]=\"getRootClasses()\"\n (valueChange)=\"onValueChange($event)\"\n>\n @for (panel of visiblePanels; track trackPanel($index, panel)) {\n <p-accordion-panel\n [value]=\"panel.value\"\n [disabled]=\"panel.disabled === true\"\n [ngClass]=\"getPanelClasses(panel)\"\n >\n <p-accordion-header>\n <div [ngClass]=\"getHeaderClasses(panel)\">\n <div class=\"pt-accordion-header-main\">\n @if (\n getTitleIconClass(panel) && getTitleIconPosition(panel) === \"left\"\n ) {\n <span\n class=\"pt-accordion-title-icon\"\n [ngStyle]=\"getTitleIconStyles(panel)\"\n >\n <i\n class=\"pt-accordion-title-icon-code\"\n [class]=\"getTitleIconClass(panel)\"\n ></i>\n </span>\n }\n\n <div class=\"pt-accordion-header-text\">\n <span\n class=\"pt-accordion-title\"\n [ngStyle]=\"getTitleStyles(panel)\"\n >\n {{ getTitleText(panel) }}\n </span>\n\n @if (panel.description?.text) {\n <span\n class=\"pt-accordion-description\"\n [ngStyle]=\"getDescriptionStyles(panel)\"\n >\n {{ panel.description?.text }}\n </span>\n }\n </div>\n\n @if (\n getTitleIconClass(panel) &&\n getTitleIconPosition(panel) === \"right\"\n ) {\n <span\n class=\"pt-accordion-title-icon\"\n [ngStyle]=\"getTitleIconStyles(panel)\"\n >\n <i\n class=\"pt-accordion-title-icon-code\"\n [class]=\"getTitleIconClass(panel)\"\n ></i>\n </span>\n }\n </div>\n\n @if (isTagVisible(panel)) {\n <p-tag\n [value]=\"panel.tag?.value ?? ''\"\n [icon]=\"panel.tag?.icon\"\n [severity]=\"getTagSeverity(panel)\"\n [rounded]=\"panel.tag?.rounded === true\"\n [ngClass]=\"getTagClasses(panel)\"\n ></p-tag>\n }\n </div>\n </p-accordion-header>\n\n <p-accordion-content>\n @if (shouldRenderPanelContent(panel)) {\n <div\n [ngClass]=\"getContentClasses(panel)\"\n [ngStyle]=\"getContentStyles(panel)\"\n >\n <div\n class=\"pt-accordion-content-inner\"\n [ngStyle]=\"getContentInnerStyles(panel)\"\n >\n @if (resolvePanelTemplate(panel.value); as panelTemplate) {\n <ng-container\n *ngTemplateOutlet=\"\n panelTemplate;\n context: getTemplateContext(panel)\n \"\n ></ng-container>\n } @else {\n <div class=\"pt-accordion-empty-content\">\n Aucun contenu configur\u00E9.\n </div>\n }\n </div>\n </div>\n }\n </p-accordion-content>\n </p-accordion-panel>\n }\n</p-accordion>\n", styles: [":host{display:block;width:100%;min-width:0;max-width:100%;box-sizing:border-box}:host *,:host *:before,:host *:after{box-sizing:border-box}.pt-accordion{display:block;width:100%;min-width:0;max-width:100%}.pt-accordion-header-content{display:flex;align-items:center;justify-content:space-between;flex:1 1 auto;gap:1rem;width:100%;min-width:0;max-width:100%;overflow:hidden}.pt-accordion-header-main{display:flex;align-items:center;flex:1 1 auto;gap:.85rem;min-width:0;overflow:hidden}.pt-accordion-title-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 2.5rem;width:2.5rem;height:2.5rem;overflow:hidden}.pt-accordion-title-icon-code{display:inline-flex;align-items:center;justify-content:center;line-height:1}.pt-accordion-header-text{display:flex;flex:1 1 auto;flex-direction:column;gap:.25rem;min-width:0;overflow:hidden}.pt-accordion-title,.pt-accordion-description{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-accordion-title{line-height:1.25}.pt-accordion-description{line-height:1.35}.pt-accordion-tag{flex:0 0 auto;max-width:var(--pt-accordion-tag-max-width, 14rem);overflow:hidden}.pt-accordion-content,.pt-accordion-content-viewport{display:block;width:0;min-width:100%;max-width:100%;inline-size:0;min-inline-size:100%;max-inline-size:100%;min-height:0;min-block-size:0;overflow:hidden;box-sizing:border-box;contain:inline-size}.pt-accordion-content-inner{display:block;box-sizing:border-box}.pt-accordion-content-scroll-x{overflow-x:scroll!important;overflow-y:hidden!important;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:var(--pt-accordion-scrollbar-thumb, #64748b) var(--pt-accordion-scrollbar-track, #e2e8f0)}.pt-accordion-content-scroll-y{overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:var(--pt-accordion-scrollbar-thumb, #64748b) var(--pt-accordion-scrollbar-track, #e2e8f0)}.pt-accordion-content-scroll-x.pt-accordion-content-scroll-y{overflow:auto!important;overscroll-behavior:contain}.pt-accordion-content-scroll-x::-webkit-scrollbar,.pt-accordion-content-scroll-y::-webkit-scrollbar{width:12px;height:12px}.pt-accordion-content-scroll-x::-webkit-scrollbar-track,.pt-accordion-content-scroll-y::-webkit-scrollbar-track{border-radius:999px;background:var(--pt-accordion-scrollbar-track, #e2e8f0)}.pt-accordion-content-scroll-x::-webkit-scrollbar-thumb,.pt-accordion-content-scroll-y::-webkit-scrollbar-thumb{min-width:3rem;min-height:3rem;border:2px solid var(--pt-accordion-scrollbar-track, #e2e8f0);border-radius:999px;background:var(--pt-accordion-scrollbar-thumb, #64748b)}.pt-accordion-content-scroll-x::-webkit-scrollbar-thumb:hover,.pt-accordion-content-scroll-y::-webkit-scrollbar-thumb:hover{background:var(--pt-accordion-scrollbar-thumb-hover, #475569)}.pt-accordion-empty-content{padding:1rem;color:#64748b;text-align:center}:host ::ng-deep .p-accordion{display:block;width:100%;min-width:0;max-width:100%}:host ::ng-deep .p-accordionpanel{display:block;width:100%;min-width:0;max-width:100%;overflow:hidden;border:1px solid var(--pt-accordion-border-color, #e5e7eb);border-radius:var(--pt-accordion-border-radius, 12px);background:var(--pt-accordion-panel-background, #ffffff)}:host ::ng-deep .p-accordionpanel+.p-accordionpanel{margin-top:var(--pt-accordion-panel-gap, 1rem)}:host ::ng-deep .p-accordionheader{display:flex;align-items:center;width:100%;min-width:0;max-width:100%;padding:var(--pt-accordion-header-padding, 1rem);overflow:hidden;border:0;border-radius:var(--pt-accordion-border-radius, 12px);background:var(--pt-accordion-header-background, #ffffff);color:var(--pt-accordion-header-color, inherit);transition:background-color .2s ease,color .2s ease}:host ::ng-deep .p-accordionheader:hover{background:var(--pt-accordion-header-hover-background, #f8fafc)}:host ::ng-deep .p-accordionpanel-active .p-accordionheader{border-bottom-right-radius:0;border-bottom-left-radius:0}:host ::ng-deep .p-accordionheader-link,:host ::ng-deep .p-accordionheader-button{display:flex;align-items:center;flex:1 1 auto;width:100%;min-width:0;max-width:100%;overflow:hidden}:host ::ng-deep .p-accordionheader-toggle-icon{flex:0 0 auto;margin-left:.75rem}:host ::ng-deep .p-accordioncontent{display:block;width:100%;min-width:0;max-width:100%;overflow:hidden}:host ::ng-deep .p-accordioncontent-content{display:block;width:100%;min-width:0;max-width:100%;padding:var(--pt-accordion-content-padding, 1rem);overflow:hidden;border:0;background:var(--pt-accordion-content-background, #ffffff)}:host ::ng-deep .p-accordioncontent-content>*{min-width:0;max-width:100%}:host ::ng-deep .pt-accordion-panel-disabled .p-accordionheader{cursor:not-allowed;opacity:.65}@media(max-width:768px){.pt-accordion-header-content{gap:.5rem}.pt-accordion-header-main{gap:.65rem}.pt-accordion-title-icon{flex-basis:2.25rem;width:2.25rem;height:2.25rem}.pt-accordion-description{display:none}.pt-accordion-title{font-size:var(--pt-accordion-mobile-title-font-size, .95rem)!important}.pt-accordion-tag{max-width:var(--pt-accordion-mobile-tag-max-width, 9rem)}:host ::ng-deep .p-accordionheader,:host ::ng-deep .p-accordioncontent-content{padding:var(--pt-accordion-mobile-padding, .85rem)}:host ::ng-deep .p-accordionheader-toggle-icon{margin-left:.4rem}}\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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2$5.Accordion, selector: "p-accordion", inputs: ["value", "multiple", "styleClass", "expandIcon", "collapseIcon", "selectOnFocus", "transitionOptions", "motionOptions"], outputs: ["valueChange", "onClose", "onOpen"] }, { kind: "component", type: i2$5.AccordionPanel, selector: "p-accordion-panel, p-accordionpanel", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: i2$5.AccordionHeader, selector: "p-accordion-header, p-accordionheader" }, { kind: "component", type: i2$5.AccordionContent, selector: "p-accordion-content, p-accordioncontent" }, { kind: "component", type: i10.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9975
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTAccordionComponent, isStandalone: false, selector: "pt-accordion", inputs: { config: "config", value: "value" }, outputs: { valueChange: "valueChange", panelOpen: "panelOpen", panelClose: "panelClose" }, queries: [{ propertyName: "panelTemplates", predicate: PTAccordionPanelDirective }], usesOnChanges: true, ngImport: i0, template: "<!-- ng-prime-tools/projects/ng-prime-tools/src/lib/pt-accordion/pt-accordion.component.html -->\n\n<p-accordion\n [value]=\"value\"\n [multiple]=\"multiple\"\n [expandIcon]=\"expandIcon\"\n [collapseIcon]=\"collapseIcon\"\n [ngClass]=\"getRootClasses()\"\n (valueChange)=\"onValueChange($event)\"\n>\n @for (panel of visiblePanels; track trackPanel($index, panel)) {\n <p-accordion-panel\n [value]=\"panel.value\"\n [disabled]=\"panel.disabled === true\"\n [ngClass]=\"getPanelClasses(panel)\"\n >\n <p-accordion-header>\n <div [ngClass]=\"getHeaderClasses(panel)\">\n <div class=\"pt-accordion-header-main\">\n @if (\n getTitleIconClass(panel) && getTitleIconPosition(panel) === \"left\"\n ) {\n <span\n class=\"pt-accordion-title-icon\"\n [ngStyle]=\"getTitleIconStyles(panel)\"\n >\n <i\n class=\"pt-accordion-title-icon-code\"\n [class]=\"getTitleIconClass(panel)\"\n ></i>\n </span>\n }\n\n <div class=\"pt-accordion-header-text\">\n <span\n class=\"pt-accordion-title\"\n [ngStyle]=\"getTitleStyles(panel)\"\n >\n {{ getTitleText(panel) }}\n </span>\n\n @if (panel.description?.text) {\n <span\n class=\"pt-accordion-description\"\n [ngStyle]=\"getDescriptionStyles(panel)\"\n >\n {{ panel.description?.text }}\n </span>\n }\n </div>\n\n @if (\n getTitleIconClass(panel) &&\n getTitleIconPosition(panel) === \"right\"\n ) {\n <span\n class=\"pt-accordion-title-icon\"\n [ngStyle]=\"getTitleIconStyles(panel)\"\n >\n <i\n class=\"pt-accordion-title-icon-code\"\n [class]=\"getTitleIconClass(panel)\"\n ></i>\n </span>\n }\n </div>\n\n @if (isTagVisible(panel)) {\n <p-tag\n [value]=\"panel.tag?.value ?? ''\"\n [icon]=\"panel.tag?.icon\"\n [severity]=\"getTagSeverity(panel)\"\n [rounded]=\"panel.tag?.rounded === true\"\n [ngClass]=\"getTagClasses(panel)\"\n ></p-tag>\n }\n </div>\n </p-accordion-header>\n\n <p-accordion-content>\n @if (shouldRenderPanelContent(panel)) {\n <div\n [ngClass]=\"getContentClasses(panel)\"\n [ngStyle]=\"getContentStyles(panel)\"\n >\n <div\n class=\"pt-accordion-content-inner\"\n [ngStyle]=\"getContentInnerStyles(panel)\"\n >\n @if (resolvePanelTemplate(panel.value); as panelTemplate) {\n <ng-container\n *ngTemplateOutlet=\"\n panelTemplate;\n context: getTemplateContext(panel)\n \"\n ></ng-container>\n } @else {\n <div class=\"pt-accordion-empty-content\">\n Aucun contenu configur\u00E9.\n </div>\n }\n </div>\n </div>\n }\n </p-accordion-content>\n </p-accordion-panel>\n }\n</p-accordion>\n", styles: [":host{display:block;width:100%;min-width:0;max-width:100%;box-sizing:border-box}:host *,:host *:before,:host *:after{box-sizing:border-box}.pt-accordion{display:block;width:100%;min-width:0;max-width:100%}.pt-accordion-header-content{display:flex;align-items:center;justify-content:space-between;flex:1 1 auto;gap:1rem;width:100%;min-width:0;max-width:100%;overflow:hidden}.pt-accordion-header-main{display:flex;align-items:center;flex:1 1 auto;gap:.85rem;min-width:0;overflow:hidden}.pt-accordion-title-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 2.5rem;width:2.5rem;height:2.5rem;overflow:hidden}.pt-accordion-title-icon-code{display:inline-flex;align-items:center;justify-content:center;line-height:1}.pt-accordion-header-text{display:flex;flex:1 1 auto;flex-direction:column;gap:.25rem;min-width:0;overflow:hidden}.pt-accordion-title,.pt-accordion-description{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-accordion-title{line-height:1.25}.pt-accordion-description{line-height:1.35}.pt-accordion-tag{flex:0 0 auto;max-width:var(--pt-accordion-tag-max-width, 14rem);overflow:hidden}.pt-accordion-content,.pt-accordion-content-viewport{display:block;width:0;min-width:100%;max-width:100%;inline-size:0;min-inline-size:100%;max-inline-size:100%;min-height:0;min-block-size:0;overflow:hidden;box-sizing:border-box;contain:inline-size}.pt-accordion-content-inner{display:block;box-sizing:border-box}.pt-accordion-content-scroll-x{overflow-x:scroll!important;overflow-y:hidden!important;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:var(--pt-accordion-scrollbar-thumb, #64748b) var(--pt-accordion-scrollbar-track, #e2e8f0)}.pt-accordion-content-scroll-y{overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:var(--pt-accordion-scrollbar-thumb, #64748b) var(--pt-accordion-scrollbar-track, #e2e8f0)}.pt-accordion-content-scroll-x.pt-accordion-content-scroll-y{overflow:auto!important;overscroll-behavior:contain}.pt-accordion-content-scroll-x::-webkit-scrollbar,.pt-accordion-content-scroll-y::-webkit-scrollbar{width:12px;height:12px}.pt-accordion-content-scroll-x::-webkit-scrollbar-track,.pt-accordion-content-scroll-y::-webkit-scrollbar-track{border-radius:999px;background:var(--pt-accordion-scrollbar-track, #e2e8f0)}.pt-accordion-content-scroll-x::-webkit-scrollbar-thumb,.pt-accordion-content-scroll-y::-webkit-scrollbar-thumb{min-width:3rem;min-height:3rem;border:2px solid var(--pt-accordion-scrollbar-track, #e2e8f0);border-radius:999px;background:var(--pt-accordion-scrollbar-thumb, #64748b)}.pt-accordion-content-scroll-x::-webkit-scrollbar-thumb:hover,.pt-accordion-content-scroll-y::-webkit-scrollbar-thumb:hover{background:var(--pt-accordion-scrollbar-thumb-hover, #475569)}.pt-accordion-empty-content{padding:1rem;color:#64748b;text-align:center}:host ::ng-deep .p-accordion{display:block;width:100%;min-width:0;max-width:100%}:host ::ng-deep .p-accordionpanel{display:block;width:100%;min-width:0;max-width:100%;overflow:hidden;border:1px solid var(--pt-accordion-border-color, #e5e7eb);border-radius:var(--pt-accordion-border-radius, 12px);background:var(--pt-accordion-panel-background, #ffffff)}:host ::ng-deep .p-accordionpanel+.p-accordionpanel{margin-top:var(--pt-accordion-panel-gap, 1rem)}:host ::ng-deep .p-accordionheader{display:flex;align-items:center;width:100%;min-width:0;max-width:100%;padding:var(--pt-accordion-header-padding, 1rem);overflow:hidden;border:0;border-radius:var(--pt-accordion-border-radius, 12px);background:var(--pt-accordion-header-background, #ffffff);color:var(--pt-accordion-header-color, inherit);transition:background-color .2s ease,color .2s ease}:host ::ng-deep .p-accordionheader:hover{background:var(--pt-accordion-header-hover-background, #f8fafc)}:host ::ng-deep .p-accordionpanel-active .p-accordionheader{border-bottom-right-radius:0;border-bottom-left-radius:0}:host ::ng-deep .p-accordionheader-link,:host ::ng-deep .p-accordionheader-button{display:flex;align-items:center;flex:1 1 auto;width:100%;min-width:0;max-width:100%;overflow:hidden}:host ::ng-deep .p-accordionheader-toggle-icon{flex:0 0 auto;margin-left:.75rem}:host ::ng-deep .p-accordioncontent{display:block;width:100%;min-width:0;max-width:100%;overflow:hidden}:host ::ng-deep .p-accordioncontent-content{display:block;width:100%;min-width:0;max-width:100%;padding:var(--pt-accordion-content-padding, 1rem);overflow:hidden;border:0;background:var(--pt-accordion-content-background, #ffffff)}:host ::ng-deep .p-accordioncontent-content>*{min-width:0;max-width:100%}:host ::ng-deep .pt-accordion-panel-disabled .p-accordionheader{cursor:not-allowed;opacity:.65}@media(max-width:768px){.pt-accordion-header-content{gap:.5rem}.pt-accordion-header-main{gap:.65rem}.pt-accordion-title-icon{flex-basis:2.25rem;width:2.25rem;height:2.25rem}.pt-accordion-description{display:none}.pt-accordion-title{font-size:var(--pt-accordion-mobile-title-font-size, .95rem)!important}.pt-accordion-tag{max-width:var(--pt-accordion-mobile-tag-max-width, 9rem)}:host ::ng-deep .p-accordionheader,:host ::ng-deep .p-accordioncontent-content{padding:var(--pt-accordion-mobile-padding, .85rem)}:host ::ng-deep .p-accordionheader-toggle-icon{margin-left:.4rem}}\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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2$4.Accordion, selector: "p-accordion", inputs: ["value", "multiple", "styleClass", "expandIcon", "collapseIcon", "selectOnFocus", "transitionOptions", "motionOptions"], outputs: ["valueChange", "onClose", "onOpen"] }, { kind: "component", type: i2$4.AccordionPanel, selector: "p-accordion-panel, p-accordionpanel", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: i2$4.AccordionHeader, selector: "p-accordion-header, p-accordionheader" }, { kind: "component", type: i2$4.AccordionContent, selector: "p-accordion-content, p-accordioncontent" }, { kind: "component", type: i10.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9731
9976
  }
9732
9977
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTAccordionComponent, decorators: [{
9733
9978
  type: Component,
@@ -12513,7 +12758,7 @@ class PTNotificationsPageComponent {
12513
12758
  return String(value).padStart(2, '0');
12514
12759
  }
12515
12760
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12516
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTNotificationsPageComponent, isStandalone: false, selector: "pt-notifications-page", inputs: { notifications: "notifications", totalRecords: "totalRecords", totalAllRecords: "totalAllRecords", totalUnreadRecords: "totalUnreadRecords", totalReadRecords: "totalReadRecords", page: "page", rows: "rows", config: "config" }, outputs: { notificationClick: "notificationClick", action: "action", globalAction: "globalAction", queryChange: "queryChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pt-notifications-page\" (click)=\"closeMenus()\">\n <div class=\"pt-notifications-page-header\">\n <div class=\"pt-notifications-page-heading\">\n <div class=\"pt-notifications-page-title-row\">\n <div class=\"pt-notifications-page-title-icon\">\n <i class=\"pi pi-bell\"></i>\n </div>\n\n <div>\n <h2 class=\"pt-notifications-page-title\">\n {{ getTitle() }}\n </h2>\n\n <div class=\"pt-notifications-page-subtitle\">\n {{ getSubtitle() }}\n </div>\n </div>\n </div>\n\n @if (showCounters()) {\n <div class=\"pt-notifications-page-counters\">\n <span class=\"pt-notifications-page-counter\">\n {{ getTotalCount() }}\n notification(s)\n </span>\n\n @if (getUnreadCount() > 0) {\n <span class=\"pt-notifications-page-counter unread\">\n {{ getUnreadCount() }}\n non lue(s)\n </span>\n }\n </div>\n }\n </div>\n\n @if (showGlobalActions()) {\n <div\n class=\"pt-notifications-page-global-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notifications-page-global-button\"\n aria-label=\"Actions globales\"\n (click)=\"toggleGlobalActionMenu($event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isGlobalActionMenuOpen) {\n <div\n class=\"pt-notifications-page-global-menu\"\n (click)=\"onGlobalActionMenuClick($event)\"\n >\n @for (menuAction of getGlobalActions(); track menuAction.id) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onGlobalActionClick(menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"pt-notifications-page-toolbar\">\n @if (showFilters()) {\n <div class=\"pt-notifications-page-filters\">\n <button\n type=\"button\"\n class=\"pt-notifications-page-filter\"\n [class.selected]=\"isFilterSelected('ALL')\"\n (click)=\"selectFilter('ALL')\"\n >\n {{ getAllLabel() }}\n\n <span class=\"pt-notifications-page-filter-count\">\n {{ getTotalCount() }}\n </span>\n </button>\n\n <button\n type=\"button\"\n class=\"pt-notifications-page-filter\"\n [class.selected]=\"isFilterSelected('UNREAD')\"\n (click)=\"selectFilter('UNREAD')\"\n >\n {{ getUnreadLabel() }}\n\n <span class=\"pt-notifications-page-filter-count\">\n {{ getUnreadCount() }}\n </span>\n </button>\n\n <button\n type=\"button\"\n class=\"pt-notifications-page-filter\"\n [class.selected]=\"isFilterSelected('READ')\"\n (click)=\"selectFilter('READ')\"\n >\n {{ getReadLabel() }}\n\n <span class=\"pt-notifications-page-filter-count\">\n {{ getReadCount() }}\n </span>\n </button>\n </div>\n }\n\n @if (showSearch()) {\n <div class=\"pt-notifications-page-search\">\n <i class=\"pi pi-search\"></i>\n\n <input\n type=\"text\"\n [value]=\"searchText\"\n [placeholder]=\"getSearchPlaceholder()\"\n (input)=\"onSearch($any($event.target).value)\"\n />\n\n @if (hasSearch()) {\n <button\n type=\"button\"\n class=\"pt-notifications-page-search-clear\"\n aria-label=\"Effacer la recherche\"\n (click)=\"clearSearch()\"\n >\n <i class=\"pi pi-times\"></i>\n </button>\n }\n </div>\n }\n </div>\n\n @if (hasNotifications()) {\n <div class=\"pt-notifications-page-list\">\n @for (\n notification of getDisplayedNotifications();\n track notification.id\n ) {\n <div\n [class]=\"getNotificationClasses(notification)\"\n (click)=\"onNotificationClick(notification, $event)\"\n >\n <div class=\"pt-notifications-page-item-icon-wrapper\">\n <div class=\"pt-notifications-page-item-icon\">\n <i\n [class]=\"getNotificationIcon(notification)\"\n [ngStyle]=\"getNotificationIconStyles(notification)\"\n ></i>\n </div>\n </div>\n\n <div class=\"pt-notifications-page-item-content\">\n <div class=\"pt-notifications-page-item-text\">\n {{ notification.text }}\n </div>\n\n @if (hasMetadata(notification)) {\n <div class=\"pt-notifications-page-item-metadata\">\n @if (notification.date) {\n <span>\n <i class=\"pi pi-clock\"></i>\n\n {{ getDateText(notification) }}\n </span>\n }\n\n @if (notification.sender?.trim()) {\n <span>\n <i class=\"pi pi-user\"></i>\n\n {{ notification.sender }}\n </span>\n }\n </div>\n }\n </div>\n\n @if (hasActions(notification)) {\n <div\n class=\"pt-notifications-page-item-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notifications-page-more-button\"\n aria-label=\"Actions notification\"\n [disabled]=\"notification.disabled\"\n (click)=\"toggleActionMenu(notification, $event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isActionMenuOpen(notification)) {\n <div\n class=\"pt-notifications-page-action-menu\"\n (click)=\"onActionMenuClick($event)\"\n >\n @for (\n menuAction of getActions(notification);\n track menuAction.id\n ) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onActionClick(notification, menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (notification.read !== true) {\n <span class=\"pt-notifications-page-unread-indicator\"></span>\n }\n </div>\n }\n </div>\n } @else {\n <div class=\"pt-notifications-page-empty\">\n <div class=\"pt-notifications-page-empty-icon\">\n <i [class]=\"getEmptyIcon()\"></i>\n </div>\n\n <div class=\"pt-notifications-page-empty-text\">\n @if (hasSearch()) {\n {{ getNoSearchResultText() }}\n } @else {\n {{ getEmptyText() }}\n }\n </div>\n </div>\n }\n\n @if (showPagination()) {\n <div class=\"pt-notifications-page-pagination\">\n <p-paginator\n [first]=\"getFirst()\"\n [rows]=\"rows\"\n [totalRecords]=\"totalRecords\"\n [rowsPerPageOptions]=\"getRowsPerPageOptions()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [currentPageReportTemplate]=\"getCurrentPageReportTemplate()\"\n (onPageChange)=\"onPageChange($event)\"\n ></p-paginator>\n </div>\n }\n</div>\n", styles: [":host{display:block;width:100%}.pt-notifications-page{position:relative;width:100%;background:var(--pt-notifications-page-bg, #ffffff);border:1px solid var(--pt-notifications-page-border, #e5e7eb);border-radius:14px;overflow:visible}.pt-notifications-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--pt-notifications-page-border, #e5e7eb)}.pt-notifications-page-heading{display:flex;flex-direction:column;gap:.85rem}.pt-notifications-page-title-row{display:flex;align-items:center;gap:.8rem}.pt-notifications-page-title-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--pt-notifications-page-title-icon-bg, #f3f0f8);color:var(--pt-notifications-page-title-icon-color, #3f2564);font-size:1.15rem}.pt-notifications-page-title{margin:0;color:var(--pt-notifications-page-title-color, #1f2937);font-size:1.25rem;font-weight:700}.pt-notifications-page-subtitle{margin-top:.2rem;color:var(--pt-notifications-page-subtitle-color, #6b7280);font-size:.875rem}.pt-notifications-page-counters{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.pt-notifications-page-counter{display:inline-flex;align-items:center;padding:.3rem .65rem;border-radius:999px;background:var(--pt-notifications-page-counter-bg, #f3f4f6);color:var(--pt-notifications-page-counter-color, #4b5563);font-size:.78rem;font-weight:600}.pt-notifications-page-counter.unread{background:var(--pt-notifications-page-unread-counter-bg, #f3f0f8);color:var(--pt-notifications-page-unread-counter-color, #3f2564)}.pt-notifications-page-global-actions{position:relative}.pt-notifications-page-global-button,.pt-notifications-page-more-button,.pt-notifications-page-search-clear{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;cursor:pointer;color:var(--pt-notifications-page-action-color, #6b7280)}.pt-notifications-page-global-button{width:36px;height:36px;border-radius:50%}.pt-notifications-page-global-button:hover,.pt-notifications-page-more-button:hover{background:var(--pt-notifications-page-action-hover-bg, #f3f4f6)}.pt-notifications-page-global-menu,.pt-notifications-page-action-menu{position:absolute;z-index:1000;min-width:200px;padding:.35rem;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 10px 25px #0f172a24}.pt-notifications-page-global-menu{top:calc(100% + 5px);right:0}.pt-notifications-page-action-menu{top:30px;right:0}.pt-notifications-page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;border-bottom:1px solid var(--pt-notifications-page-border, #e5e7eb)}.pt-notifications-page-filters{display:flex;align-items:center;gap:.4rem}.pt-notifications-page-filter{display:flex;align-items:center;gap:.45rem;padding:.5rem .85rem;border:1px solid var(--pt-notifications-page-filter-border, #e5e7eb);border-radius:8px;background:var(--pt-notifications-page-filter-bg, #ffffff);color:var(--pt-notifications-page-filter-color, #4b5563);font-size:.82rem;font-weight:600;cursor:pointer}.pt-notifications-page-filter:hover{background:#f9fafb}.pt-notifications-page-filter.selected{border-color:var(--pt-notifications-page-primary, #3f2564);background:var(--pt-notifications-page-selected-bg, #f3f0f8);color:var(--pt-notifications-page-primary, #3f2564)}.pt-notifications-page-filter-count{min-width:20px;padding:.1rem .35rem;border-radius:999px;background:#0000000d;text-align:center;font-size:.72rem}.pt-notifications-page-search{position:relative;display:flex;align-items:center;width:min(360px,100%)}.pt-notifications-page-search>.pi-search{position:absolute;left:.85rem;color:#9ca3af}.pt-notifications-page-search input{width:100%;padding:.65rem 2.5rem .65rem 2.4rem;border:1px solid #d1d5db;border-radius:8px;outline:none;font-size:.85rem}.pt-notifications-page-search input:focus{border-color:var(--pt-notifications-page-primary, #3f2564);box-shadow:0 0 0 2px #3f256414}.pt-notifications-page-search-clear{position:absolute;right:.6rem;width:28px;height:28px}.pt-notifications-page-list{width:100%}.pt-notifications-page-item{position:relative;display:flex;align-items:flex-start;gap:1rem;padding:1.1rem 1.5rem;border-bottom:1px solid var(--pt-notifications-page-border, #e5e7eb);background:var(--pt-notifications-page-item-bg, #ffffff);cursor:pointer;transition:background .15s ease}.pt-notifications-page-item:last-child{border-bottom:0}.pt-notifications-page-item:hover{background:var(--pt-notifications-page-item-hover-bg, #f9fafb)}.pt-notifications-page-item.unread{background:var(--pt-notifications-page-unread-bg, #faf8fd)}.pt-notifications-page-item.unread:hover{background:var(--pt-notifications-page-unread-hover-bg, #f6f2fa)}.pt-notifications-page-item.disabled{opacity:.55;cursor:default}.pt-notifications-page-item-icon-wrapper{flex:0 0 auto}.pt-notifications-page-item-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--pt-notifications-page-item-icon-bg, #f3f4f6);font-size:1rem}.pt-notifications-page-item-content{flex:1 1 auto;min-width:0}.pt-notifications-page-item-text{color:var(--pt-notifications-page-text-color, #1f2937);font-size:.9rem;line-height:1.5}.pt-notifications-page-item.unread .pt-notifications-page-item-text{font-weight:600}.pt-notifications-page-item-metadata{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;margin-top:.5rem;color:var(--pt-notifications-page-metadata-color, #6b7280);font-size:.78rem}.pt-notifications-page-item-metadata span{display:inline-flex;align-items:center;gap:.35rem}.pt-notifications-page-item-actions{position:relative;flex:0 0 auto}.pt-notifications-page-more-button{width:30px;height:30px;border-radius:50%}.pt-notifications-page-action-item{display:flex;align-items:center;gap:.6rem;width:100%;padding:.55rem .7rem;border:0;border-radius:6px;background:transparent;color:#374151;font-size:.8rem;text-align:left;cursor:pointer}.pt-notifications-page-action-item:hover{background:#f3f4f6}.pt-notifications-page-action-item.danger{color:#dc2626}.pt-notifications-page-action-item.disabled{opacity:.5;cursor:default}.pt-notifications-page-unread-indicator{position:absolute;top:50%;right:.5rem;width:7px;height:7px;border-radius:50%;background:var(--pt-notifications-page-unread-indicator, #3f2564);transform:translateY(-50%)}.pt-notifications-page-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:280px;padding:3rem;color:#6b7280;text-align:center}.pt-notifications-page-empty-icon{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin-bottom:1rem;border-radius:50%;background:#f3f4f6;color:#9ca3af;font-size:1.6rem}.pt-notifications-page-empty-text{max-width:450px;font-size:.9rem}@media(max-width:768px){.pt-notifications-page-header,.pt-notifications-page-toolbar{flex-direction:column;align-items:stretch}.pt-notifications-page-filters{overflow-x:auto}.pt-notifications-page-search{width:100%}.pt-notifications-page-item{padding:1rem 1.1rem}.pt-notifications-page-item-metadata{gap:.5rem 1rem}}.pt-notifications-page-pagination{display:flex;align-items:center;justify-content:center;width:100%;padding:.75rem 1rem;box-sizing:border-box;border-top:1px solid var(--pt-notifications-page-border, #e5e7eb);background:var(--pt-notifications-page-pagination-bg, #ffffff)}.pt-notifications-page-pagination ::ng-deep .p-paginator{width:100%;border:0;background:transparent}@media(max-width:768px){.pt-notifications-page-pagination{padding:.5rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2$6.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first", "appendTo"], outputs: ["onPageChange"] }] }); }
12761
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTNotificationsPageComponent, isStandalone: false, selector: "pt-notifications-page", inputs: { notifications: "notifications", totalRecords: "totalRecords", totalAllRecords: "totalAllRecords", totalUnreadRecords: "totalUnreadRecords", totalReadRecords: "totalReadRecords", page: "page", rows: "rows", config: "config" }, outputs: { notificationClick: "notificationClick", action: "action", globalAction: "globalAction", queryChange: "queryChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pt-notifications-page\" (click)=\"closeMenus()\">\n <div class=\"pt-notifications-page-header\">\n <div class=\"pt-notifications-page-heading\">\n <div class=\"pt-notifications-page-title-row\">\n <div class=\"pt-notifications-page-title-icon\">\n <i class=\"pi pi-bell\"></i>\n </div>\n\n <div>\n <h2 class=\"pt-notifications-page-title\">\n {{ getTitle() }}\n </h2>\n\n <div class=\"pt-notifications-page-subtitle\">\n {{ getSubtitle() }}\n </div>\n </div>\n </div>\n\n @if (showCounters()) {\n <div class=\"pt-notifications-page-counters\">\n <span class=\"pt-notifications-page-counter\">\n {{ getTotalCount() }}\n notification(s)\n </span>\n\n @if (getUnreadCount() > 0) {\n <span class=\"pt-notifications-page-counter unread\">\n {{ getUnreadCount() }}\n non lue(s)\n </span>\n }\n </div>\n }\n </div>\n\n @if (showGlobalActions()) {\n <div\n class=\"pt-notifications-page-global-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notifications-page-global-button\"\n aria-label=\"Actions globales\"\n (click)=\"toggleGlobalActionMenu($event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isGlobalActionMenuOpen) {\n <div\n class=\"pt-notifications-page-global-menu\"\n (click)=\"onGlobalActionMenuClick($event)\"\n >\n @for (menuAction of getGlobalActions(); track menuAction.id) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onGlobalActionClick(menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"pt-notifications-page-toolbar\">\n @if (showFilters()) {\n <div class=\"pt-notifications-page-filters\">\n <button\n type=\"button\"\n class=\"pt-notifications-page-filter\"\n [class.selected]=\"isFilterSelected('ALL')\"\n (click)=\"selectFilter('ALL')\"\n >\n {{ getAllLabel() }}\n\n <span class=\"pt-notifications-page-filter-count\">\n {{ getTotalCount() }}\n </span>\n </button>\n\n <button\n type=\"button\"\n class=\"pt-notifications-page-filter\"\n [class.selected]=\"isFilterSelected('UNREAD')\"\n (click)=\"selectFilter('UNREAD')\"\n >\n {{ getUnreadLabel() }}\n\n <span class=\"pt-notifications-page-filter-count\">\n {{ getUnreadCount() }}\n </span>\n </button>\n\n <button\n type=\"button\"\n class=\"pt-notifications-page-filter\"\n [class.selected]=\"isFilterSelected('READ')\"\n (click)=\"selectFilter('READ')\"\n >\n {{ getReadLabel() }}\n\n <span class=\"pt-notifications-page-filter-count\">\n {{ getReadCount() }}\n </span>\n </button>\n </div>\n }\n\n @if (showSearch()) {\n <div class=\"pt-notifications-page-search\">\n <i class=\"pi pi-search\"></i>\n\n <input\n type=\"text\"\n [value]=\"searchText\"\n [placeholder]=\"getSearchPlaceholder()\"\n (input)=\"onSearch($any($event.target).value)\"\n />\n\n @if (hasSearch()) {\n <button\n type=\"button\"\n class=\"pt-notifications-page-search-clear\"\n aria-label=\"Effacer la recherche\"\n (click)=\"clearSearch()\"\n >\n <i class=\"pi pi-times\"></i>\n </button>\n }\n </div>\n }\n </div>\n\n @if (hasNotifications()) {\n <div class=\"pt-notifications-page-list\">\n @for (\n notification of getDisplayedNotifications();\n track notification.id\n ) {\n <div\n [class]=\"getNotificationClasses(notification)\"\n (click)=\"onNotificationClick(notification, $event)\"\n >\n <div class=\"pt-notifications-page-item-icon-wrapper\">\n <div class=\"pt-notifications-page-item-icon\">\n <i\n [class]=\"getNotificationIcon(notification)\"\n [ngStyle]=\"getNotificationIconStyles(notification)\"\n ></i>\n </div>\n </div>\n\n <div class=\"pt-notifications-page-item-content\">\n <div class=\"pt-notifications-page-item-text\">\n {{ notification.text }}\n </div>\n\n @if (hasMetadata(notification)) {\n <div class=\"pt-notifications-page-item-metadata\">\n @if (notification.date) {\n <span>\n <i class=\"pi pi-clock\"></i>\n\n {{ getDateText(notification) }}\n </span>\n }\n\n @if (notification.sender?.trim()) {\n <span>\n <i class=\"pi pi-user\"></i>\n\n {{ notification.sender }}\n </span>\n }\n </div>\n }\n </div>\n\n @if (hasActions(notification)) {\n <div\n class=\"pt-notifications-page-item-actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n type=\"button\"\n class=\"pt-notifications-page-more-button\"\n aria-label=\"Actions notification\"\n [disabled]=\"notification.disabled\"\n (click)=\"toggleActionMenu(notification, $event)\"\n >\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n @if (isActionMenuOpen(notification)) {\n <div\n class=\"pt-notifications-page-action-menu\"\n (click)=\"onActionMenuClick($event)\"\n >\n @for (\n menuAction of getActions(notification);\n track menuAction.id\n ) {\n <button\n type=\"button\"\n [class]=\"getActionClasses(menuAction)\"\n [disabled]=\"menuAction.disabled\"\n (click)=\"onActionClick(notification, menuAction, $event)\"\n >\n @if (menuAction.icon) {\n <i [class]=\"menuAction.icon\"></i>\n }\n\n <span>\n {{ menuAction.label }}\n </span>\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (notification.read !== true) {\n <span class=\"pt-notifications-page-unread-indicator\"></span>\n }\n </div>\n }\n </div>\n } @else {\n <div class=\"pt-notifications-page-empty\">\n <div class=\"pt-notifications-page-empty-icon\">\n <i [class]=\"getEmptyIcon()\"></i>\n </div>\n\n <div class=\"pt-notifications-page-empty-text\">\n @if (hasSearch()) {\n {{ getNoSearchResultText() }}\n } @else {\n {{ getEmptyText() }}\n }\n </div>\n </div>\n }\n\n @if (showPagination()) {\n <div class=\"pt-notifications-page-pagination\">\n <p-paginator\n [first]=\"getFirst()\"\n [rows]=\"rows\"\n [totalRecords]=\"totalRecords\"\n [rowsPerPageOptions]=\"getRowsPerPageOptions()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [currentPageReportTemplate]=\"getCurrentPageReportTemplate()\"\n (onPageChange)=\"onPageChange($event)\"\n ></p-paginator>\n </div>\n }\n</div>\n", styles: [":host{display:block;width:100%}.pt-notifications-page{position:relative;width:100%;background:var(--pt-notifications-page-bg, #ffffff);border:1px solid var(--pt-notifications-page-border, #e5e7eb);border-radius:14px;overflow:visible}.pt-notifications-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--pt-notifications-page-border, #e5e7eb)}.pt-notifications-page-heading{display:flex;flex-direction:column;gap:.85rem}.pt-notifications-page-title-row{display:flex;align-items:center;gap:.8rem}.pt-notifications-page-title-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--pt-notifications-page-title-icon-bg, #f3f0f8);color:var(--pt-notifications-page-title-icon-color, #3f2564);font-size:1.15rem}.pt-notifications-page-title{margin:0;color:var(--pt-notifications-page-title-color, #1f2937);font-size:1.25rem;font-weight:700}.pt-notifications-page-subtitle{margin-top:.2rem;color:var(--pt-notifications-page-subtitle-color, #6b7280);font-size:.875rem}.pt-notifications-page-counters{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.pt-notifications-page-counter{display:inline-flex;align-items:center;padding:.3rem .65rem;border-radius:999px;background:var(--pt-notifications-page-counter-bg, #f3f4f6);color:var(--pt-notifications-page-counter-color, #4b5563);font-size:.78rem;font-weight:600}.pt-notifications-page-counter.unread{background:var(--pt-notifications-page-unread-counter-bg, #f3f0f8);color:var(--pt-notifications-page-unread-counter-color, #3f2564)}.pt-notifications-page-global-actions{position:relative}.pt-notifications-page-global-button,.pt-notifications-page-more-button,.pt-notifications-page-search-clear{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;cursor:pointer;color:var(--pt-notifications-page-action-color, #6b7280)}.pt-notifications-page-global-button{width:36px;height:36px;border-radius:50%}.pt-notifications-page-global-button:hover,.pt-notifications-page-more-button:hover{background:var(--pt-notifications-page-action-hover-bg, #f3f4f6)}.pt-notifications-page-global-menu,.pt-notifications-page-action-menu{position:absolute;z-index:1000;min-width:200px;padding:.35rem;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 10px 25px #0f172a24}.pt-notifications-page-global-menu{top:calc(100% + 5px);right:0}.pt-notifications-page-action-menu{top:30px;right:0}.pt-notifications-page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;border-bottom:1px solid var(--pt-notifications-page-border, #e5e7eb)}.pt-notifications-page-filters{display:flex;align-items:center;gap:.4rem}.pt-notifications-page-filter{display:flex;align-items:center;gap:.45rem;padding:.5rem .85rem;border:1px solid var(--pt-notifications-page-filter-border, #e5e7eb);border-radius:8px;background:var(--pt-notifications-page-filter-bg, #ffffff);color:var(--pt-notifications-page-filter-color, #4b5563);font-size:.82rem;font-weight:600;cursor:pointer}.pt-notifications-page-filter:hover{background:#f9fafb}.pt-notifications-page-filter.selected{border-color:var(--pt-notifications-page-primary, #3f2564);background:var(--pt-notifications-page-selected-bg, #f3f0f8);color:var(--pt-notifications-page-primary, #3f2564)}.pt-notifications-page-filter-count{min-width:20px;padding:.1rem .35rem;border-radius:999px;background:#0000000d;text-align:center;font-size:.72rem}.pt-notifications-page-search{position:relative;display:flex;align-items:center;width:min(360px,100%)}.pt-notifications-page-search>.pi-search{position:absolute;left:.85rem;color:#9ca3af}.pt-notifications-page-search input{width:100%;padding:.65rem 2.5rem .65rem 2.4rem;border:1px solid #d1d5db;border-radius:8px;outline:none;font-size:.85rem}.pt-notifications-page-search input:focus{border-color:var(--pt-notifications-page-primary, #3f2564);box-shadow:0 0 0 2px #3f256414}.pt-notifications-page-search-clear{position:absolute;right:.6rem;width:28px;height:28px}.pt-notifications-page-list{width:100%}.pt-notifications-page-item{position:relative;display:flex;align-items:flex-start;gap:1rem;padding:1.1rem 1.5rem;border-bottom:1px solid var(--pt-notifications-page-border, #e5e7eb);background:var(--pt-notifications-page-item-bg, #ffffff);cursor:pointer;transition:background .15s ease}.pt-notifications-page-item:last-child{border-bottom:0}.pt-notifications-page-item:hover{background:var(--pt-notifications-page-item-hover-bg, #f9fafb)}.pt-notifications-page-item.unread{background:var(--pt-notifications-page-unread-bg, #faf8fd)}.pt-notifications-page-item.unread:hover{background:var(--pt-notifications-page-unread-hover-bg, #f6f2fa)}.pt-notifications-page-item.disabled{opacity:.55;cursor:default}.pt-notifications-page-item-icon-wrapper{flex:0 0 auto}.pt-notifications-page-item-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--pt-notifications-page-item-icon-bg, #f3f4f6);font-size:1rem}.pt-notifications-page-item-content{flex:1 1 auto;min-width:0}.pt-notifications-page-item-text{color:var(--pt-notifications-page-text-color, #1f2937);font-size:.9rem;line-height:1.5}.pt-notifications-page-item.unread .pt-notifications-page-item-text{font-weight:600}.pt-notifications-page-item-metadata{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;margin-top:.5rem;color:var(--pt-notifications-page-metadata-color, #6b7280);font-size:.78rem}.pt-notifications-page-item-metadata span{display:inline-flex;align-items:center;gap:.35rem}.pt-notifications-page-item-actions{position:relative;flex:0 0 auto}.pt-notifications-page-more-button{width:30px;height:30px;border-radius:50%}.pt-notifications-page-action-item{display:flex;align-items:center;gap:.6rem;width:100%;padding:.55rem .7rem;border:0;border-radius:6px;background:transparent;color:#374151;font-size:.8rem;text-align:left;cursor:pointer}.pt-notifications-page-action-item:hover{background:#f3f4f6}.pt-notifications-page-action-item.danger{color:#dc2626}.pt-notifications-page-action-item.disabled{opacity:.5;cursor:default}.pt-notifications-page-unread-indicator{position:absolute;top:50%;right:.5rem;width:7px;height:7px;border-radius:50%;background:var(--pt-notifications-page-unread-indicator, #3f2564);transform:translateY(-50%)}.pt-notifications-page-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:280px;padding:3rem;color:#6b7280;text-align:center}.pt-notifications-page-empty-icon{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin-bottom:1rem;border-radius:50%;background:#f3f4f6;color:#9ca3af;font-size:1.6rem}.pt-notifications-page-empty-text{max-width:450px;font-size:.9rem}@media(max-width:768px){.pt-notifications-page-header,.pt-notifications-page-toolbar{flex-direction:column;align-items:stretch}.pt-notifications-page-filters{overflow-x:auto}.pt-notifications-page-search{width:100%}.pt-notifications-page-item{padding:1rem 1.1rem}.pt-notifications-page-item-metadata{gap:.5rem 1rem}}.pt-notifications-page-pagination{display:flex;align-items:center;justify-content:center;width:100%;padding:.75rem 1rem;box-sizing:border-box;border-top:1px solid var(--pt-notifications-page-border, #e5e7eb);background:var(--pt-notifications-page-pagination-bg, #ffffff)}.pt-notifications-page-pagination ::ng-deep .p-paginator{width:100%;border:0;background:transparent}@media(max-width:768px){.pt-notifications-page-pagination{padding:.5rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2$5.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first", "appendTo"], outputs: ["onPageChange"] }] }); }
12517
12762
  }
12518
12763
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationsPageComponent, decorators: [{
12519
12764
  type: Component,
@@ -12560,38 +12805,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
12560
12805
 
12561
12806
  class PTReleaseNotesPageComponent {
12562
12807
  constructor() {
12563
- /**
12564
- * Current server page only.
12565
- */
12566
12808
  this.releases = [];
12567
- /**
12568
- * Loading state of the current request.
12569
- */
12570
12809
  this.loading = false;
12571
- /**
12572
- * Number of records matching:
12573
- *
12574
- * search + selected filter
12575
- *
12576
- * Used by paginator.
12577
- */
12578
12810
  this.totalRecords = 0;
12579
- /**
12580
- * Number of all releases matching the search
12581
- * before applying ALL / UNREAD / READ.
12582
- */
12583
12811
  this.totalAllRecords = 0;
12584
- /**
12585
- * Current zero-based server page.
12586
- */
12587
12812
  this.page = 0;
12588
- /**
12589
- * Current server page size.
12590
- */
12591
12813
  this.rows = 10;
12592
- /**
12593
- * Available server page sizes.
12594
- */
12595
12814
  this.rowsPerPageOptions = [5, 10, 20, 50];
12596
12815
  this.config = {};
12597
12816
  this.queryChange = new EventEmitter();
@@ -12649,6 +12868,12 @@ class PTReleaseNotesPageComponent {
12649
12868
  (isFrench ? 'Afficher tous les détails' : 'Show all details'),
12650
12869
  hideDetailsText: this.config.hideDetailsText ??
12651
12870
  (isFrench ? 'Masquer les détails' : 'Hide details'),
12871
+ showActions: this.config.showActions ?? false,
12872
+ showGlobalActions: this.config.showGlobalActions ?? false,
12873
+ closeActionMenuOnAction: this.config.closeActionMenuOnAction ?? true,
12874
+ closeGlobalActionMenuOnAction: this.config.closeGlobalActionMenuOnAction ?? true,
12875
+ actions: this.config.actions ?? [],
12876
+ globalActions: this.config.globalActions ?? [],
12652
12877
  };
12653
12878
  }
12654
12879
  getReleases() {
@@ -12764,16 +12989,6 @@ class PTReleaseNotesPageComponent {
12764
12989
  this.collapseAllDetails();
12765
12990
  this.emitQueryChange();
12766
12991
  }
12767
- /**
12768
- * PrimeNG server-side pagination.
12769
- *
12770
- * Important:
12771
- * - changing only the page -> use event.page
12772
- * - changing rows per page -> reset to page 0
12773
- *
12774
- * Resetting on size change avoids keeping an offset
12775
- * calculated from the previous page size.
12776
- */
12777
12992
  onPageChange(event) {
12778
12993
  const previousRows = Math.max(1, this.rows);
12779
12994
  const nextRows = event.rows !== undefined && event.rows !== null && event.rows > 0
@@ -12970,7 +13185,7 @@ class PTReleaseNotesPageComponent {
12970
13185
  });
12971
13186
  }
12972
13187
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12973
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTReleaseNotesPageComponent, isStandalone: false, selector: "pt-release-notes-page", inputs: { releases: "releases", loading: "loading", totalRecords: "totalRecords", totalAllRecords: "totalAllRecords", totalUnreadRecords: "totalUnreadRecords", totalReadRecords: "totalReadRecords", page: "page", rows: "rows", rowsPerPageOptions: "rowsPerPageOptions", config: "config" }, outputs: { queryChange: "queryChange" }, ngImport: i0, template: "@if (resolvedConfig.visible) {\n <div class=\"pt-release-notes-page\">\n <div class=\"pt-release-notes-page-header\">\n <div class=\"pt-release-notes-page-heading\">\n <div class=\"pt-release-notes-page-title-row\">\n <div class=\"pt-release-notes-page-title-icon\">\n <i [class]=\"resolvedConfig.icon\"></i>\n </div>\n\n <div>\n <h2 class=\"pt-release-notes-page-title\">\n {{ getTitle() }}\n </h2>\n\n <div class=\"pt-release-notes-page-subtitle\">\n {{ getSubtitle() }}\n </div>\n </div>\n </div>\n\n @if (showCounters()) {\n <div class=\"pt-release-notes-page-counters\">\n <span class=\"pt-release-notes-page-counter\">\n {{ getTotalCount() }}\n version(s)\n </span>\n\n @if (getUnreadCount() > 0) {\n <span class=\"pt-release-notes-page-counter unread\">\n {{ getUnreadCount() }}\n non lue(s)\n </span>\n }\n\n @if (getReadCount() > 0) {\n <span class=\"pt-release-notes-page-counter read\">\n {{ getReadCount() }}\n lue(s)\n </span>\n }\n </div>\n }\n </div>\n </div>\n\n <div class=\"pt-release-notes-page-toolbar\">\n <div class=\"pt-release-notes-page-toolbar-left\">\n <div class=\"pt-release-notes-page-filters\">\n <button\n type=\"button\"\n class=\"pt-release-notes-page-filter\"\n [class.selected]=\"isFilterSelected('ALL')\"\n (click)=\"selectFilter('ALL')\"\n >\n {{ getAllLabel() }}\n\n <span class=\"pt-release-notes-page-filter-count\">\n {{ getTotalCount() }}\n </span>\n </button>\n\n <button\n type=\"button\"\n class=\"pt-release-notes-page-filter\"\n [class.selected]=\"isFilterSelected('UNREAD')\"\n (click)=\"selectFilter('UNREAD')\"\n >\n {{ getUnreadLabel() }}\n\n <span class=\"pt-release-notes-page-filter-count\">\n {{ getUnreadCount() }}\n </span>\n </button>\n\n <button\n type=\"button\"\n class=\"pt-release-notes-page-filter\"\n [class.selected]=\"isFilterSelected('READ')\"\n (click)=\"selectFilter('READ')\"\n >\n {{ getReadLabel() }}\n\n <span class=\"pt-release-notes-page-filter-count\">\n {{ getReadCount() }}\n </span>\n </button>\n </div>\n\n @if (hasExpandableReleases()) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-expand-all\"\n [class.expanded]=\"areAllDetailsExpanded()\"\n (click)=\"toggleAllDetails()\"\n >\n <i\n class=\"pi\"\n [ngClass]=\"\n areAllDetailsExpanded()\n ? 'pi-angle-double-up'\n : 'pi-angle-double-down'\n \"\n ></i>\n\n <span>\n {{ getToggleAllDetailsText() }}\n </span>\n </button>\n }\n </div>\n\n <div class=\"pt-release-notes-page-search\">\n <i class=\"pi pi-search\"></i>\n\n <input\n type=\"text\"\n [value]=\"searchText\"\n [placeholder]=\"getSearchPlaceholder()\"\n (input)=\"onSearch($any($event.target).value)\"\n />\n\n @if (hasSearch()) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-search-clear\"\n aria-label=\"Effacer la recherche\"\n (click)=\"clearSearch()\"\n >\n <i class=\"pi pi-times\"></i>\n </button>\n }\n </div>\n </div>\n\n @if (hasReleases()) {\n <div class=\"pt-release-notes-page-list\">\n @for (release of getDisplayedReleases(); track release.id) {\n <div [class]=\"getReleaseClasses(release)\">\n <div class=\"pt-release-notes-page-item-top\">\n <div class=\"pt-release-notes-page-item-icon-wrapper\">\n <div class=\"pt-release-notes-page-item-icon\">\n <i class=\"pi pi-sparkles\"></i>\n </div>\n </div>\n\n <div class=\"pt-release-notes-page-item-content\">\n <div class=\"pt-release-notes-page-version-row\">\n <span class=\"pt-release-notes-page-version\">\n v{{ release.version }}\n </span>\n\n <span class=\"pt-release-notes-page-item-title\">\n {{ release.title }}\n </span>\n </div>\n\n @if (release.summary) {\n <div class=\"pt-release-notes-page-summary\">\n {{ release.summary }}\n </div>\n }\n\n @if (release.date) {\n <div class=\"pt-release-notes-page-metadata\">\n <span>\n <i class=\"pi pi-calendar\"></i>\n\n {{ release.date | date: \"dd/MM/yyyy\" }}\n </span>\n </div>\n }\n\n @if (hasCounters(release)) {\n <div class=\"pt-release-notes-page-stats\">\n @if (hasNewItems(release)) {\n <span class=\"pt-release-notes-page-stat new\">\n <i class=\"pi pi-plus-circle\"></i>\n\n <strong>\n {{ getNewCount(release) }}\n </strong>\n\n {{ resolvedConfig.newLabel }}\n </span>\n }\n\n @if (hasImprovements(release)) {\n <span class=\"pt-release-notes-page-stat improvement\">\n <i class=\"pi pi-arrow-up-right\"></i>\n\n <strong>\n {{ getImprovementCount(release) }}\n </strong>\n\n {{ resolvedConfig.improvementLabel }}\n </span>\n }\n\n @if (hasBugFixes(release)) {\n <span class=\"pt-release-notes-page-stat bug-fix\">\n <i class=\"pi pi-wrench\"></i>\n\n <strong>\n {{ getBugFixCount(release) }}\n </strong>\n\n {{ resolvedConfig.bugFixLabel }}\n </span>\n }\n </div>\n }\n </div>\n\n @if (release.read !== true) {\n <span class=\"pt-release-notes-page-unread-indicator\"></span>\n }\n </div>\n\n @if (hasDetails(release) && isDetailsExpanded(release)) {\n <div class=\"pt-release-notes-page-details\">\n @if (hasDetailsByType(release, \"NEW\")) {\n <section class=\"pt-release-notes-page-detail-section new\">\n <div class=\"pt-release-notes-page-detail-section-header\">\n <div class=\"pt-release-notes-page-detail-section-title\">\n <span class=\"pt-release-notes-page-detail-section-icon\">\n <i class=\"pi pi-plus-circle\"></i>\n </span>\n\n <span>\n {{ resolvedConfig.newLabel }}\n </span>\n </div>\n\n <span class=\"pt-release-notes-page-detail-section-count\">\n {{ getDetailsByType(release, \"NEW\").length }}\n </span>\n </div>\n\n <div class=\"pt-release-notes-page-detail-section-content\">\n @for (\n detail of getDetailsByType(release, \"NEW\");\n track detail.id\n ) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-detail new\"\n [class.disabled]=\"detail.disabled\"\n [ngClass]=\"detail.styleClass || ''\"\n [disabled]=\"detail.disabled\"\n (click)=\"onDetailClick(detail, $event)\"\n >\n <div class=\"pt-release-notes-page-detail-icon\">\n <i [ngClass]=\"getDetailIcon(detail)\"></i>\n </div>\n\n <div class=\"pt-release-notes-page-detail-content\">\n <div class=\"pt-release-notes-page-detail-title\">\n {{ detail.title }}\n </div>\n\n @if (detail.description) {\n <div\n class=\"pt-release-notes-page-detail-description\"\n >\n {{ detail.description }}\n </div>\n }\n </div>\n\n @if (detail.link) {\n <i\n class=\"pi pi-arrow-right pt-release-notes-page-detail-link\"\n ></i>\n }\n </button>\n }\n </div>\n </section>\n }\n\n @if (hasDetailsByType(release, \"IMPROVEMENT\")) {\n <section\n class=\"pt-release-notes-page-detail-section improvement\"\n >\n <div class=\"pt-release-notes-page-detail-section-header\">\n <div class=\"pt-release-notes-page-detail-section-title\">\n <span class=\"pt-release-notes-page-detail-section-icon\">\n <i class=\"pi pi-arrow-up-right\"></i>\n </span>\n\n <span>\n {{ resolvedConfig.improvementLabel }}\n </span>\n </div>\n\n <span class=\"pt-release-notes-page-detail-section-count\">\n {{ getDetailsByType(release, \"IMPROVEMENT\").length }}\n </span>\n </div>\n\n <div class=\"pt-release-notes-page-detail-section-content\">\n @for (\n detail of getDetailsByType(release, \"IMPROVEMENT\");\n track detail.id\n ) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-detail improvement\"\n [class.disabled]=\"detail.disabled\"\n [ngClass]=\"detail.styleClass || ''\"\n [disabled]=\"detail.disabled\"\n (click)=\"onDetailClick(detail, $event)\"\n >\n <div class=\"pt-release-notes-page-detail-icon\">\n <i [ngClass]=\"getDetailIcon(detail)\"></i>\n </div>\n\n <div class=\"pt-release-notes-page-detail-content\">\n <div class=\"pt-release-notes-page-detail-title\">\n {{ detail.title }}\n </div>\n\n @if (detail.description) {\n <div\n class=\"pt-release-notes-page-detail-description\"\n >\n {{ detail.description }}\n </div>\n }\n </div>\n\n @if (detail.link) {\n <i\n class=\"pi pi-arrow-right pt-release-notes-page-detail-link\"\n ></i>\n }\n </button>\n }\n </div>\n </section>\n }\n\n @if (hasDetailsByType(release, \"BUG_FIX\")) {\n <section class=\"pt-release-notes-page-detail-section bug-fix\">\n <div class=\"pt-release-notes-page-detail-section-header\">\n <div class=\"pt-release-notes-page-detail-section-title\">\n <span class=\"pt-release-notes-page-detail-section-icon\">\n <i class=\"pi pi-wrench\"></i>\n </span>\n\n <span>\n {{ resolvedConfig.bugFixLabel }}\n </span>\n </div>\n\n <span class=\"pt-release-notes-page-detail-section-count\">\n {{ getDetailsByType(release, \"BUG_FIX\").length }}\n </span>\n </div>\n\n <div class=\"pt-release-notes-page-detail-section-content\">\n @for (\n detail of getDetailsByType(release, \"BUG_FIX\");\n track detail.id\n ) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-detail bug-fix\"\n [class.disabled]=\"detail.disabled\"\n [ngClass]=\"detail.styleClass || ''\"\n [disabled]=\"detail.disabled\"\n (click)=\"onDetailClick(detail, $event)\"\n >\n <div class=\"pt-release-notes-page-detail-icon\">\n <i [ngClass]=\"getDetailIcon(detail)\"></i>\n </div>\n\n <div class=\"pt-release-notes-page-detail-content\">\n <div class=\"pt-release-notes-page-detail-title\">\n {{ detail.title }}\n </div>\n\n @if (detail.description) {\n <div\n class=\"pt-release-notes-page-detail-description\"\n >\n {{ detail.description }}\n </div>\n }\n </div>\n\n @if (detail.link) {\n <i\n class=\"pi pi-arrow-right pt-release-notes-page-detail-link\"\n ></i>\n }\n </button>\n }\n </div>\n </section>\n }\n </div>\n }\n\n @if (hasDetails(release)) {\n <div class=\"pt-release-notes-page-details-action\">\n <button\n type=\"button\"\n class=\"pt-release-notes-page-details-button\"\n [disabled]=\"release.disabled\"\n (click)=\"toggleDetails(release)\"\n >\n <span>\n {{ getDetailsButtonText(release) }}\n </span>\n\n <i\n class=\"pi\"\n [ngClass]=\"\n isDetailsExpanded(release)\n ? 'pi-chevron-up'\n : 'pi-chevron-down'\n \"\n ></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n } @else if (!loading) {\n <div class=\"pt-release-notes-page-empty\">\n <div class=\"pt-release-notes-page-empty-icon\">\n <i [class]=\"getEmptyIcon()\"></i>\n </div>\n\n <div class=\"pt-release-notes-page-empty-text\">\n @if (hasSearch()) {\n {{ getNoSearchResultText() }}\n } @else {\n {{ getEmptyText() }}\n }\n </div>\n </div>\n }\n\n @if (loading) {\n <div class=\"pt-release-notes-page-loading\">\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ resolvedConfig.loadingText }}\n </span>\n </div>\n }\n\n @if (showPagination()) {\n <div class=\"pt-release-notes-page-pagination\">\n <p-paginator\n [first]=\"getFirst()\"\n [rows]=\"rows\"\n [totalRecords]=\"totalRecords\"\n [rowsPerPageOptions]=\"getRowsPerPageOptions()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [currentPageReportTemplate]=\"getCurrentPageReportTemplate()\"\n (onPageChange)=\"onPageChange($event)\"\n ></p-paginator>\n </div>\n }\n </div>\n}\n", styles: [":host{display:block;width:100%}.pt-release-notes-page{position:relative;width:100%;background:var(--pt-release-notes-page-bg, #ffffff);border:1px solid var(--pt-release-notes-page-border, #e5e7eb);border-radius:14px;overflow:visible}.pt-release-notes-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--pt-release-notes-page-border, #e5e7eb)}.pt-release-notes-page-heading{display:flex;flex-direction:column;gap:.85rem}.pt-release-notes-page-title-row{display:flex;align-items:center;gap:.8rem}.pt-release-notes-page-title-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--pt-release-notes-page-title-icon-bg, #f3f0f8);color:var(--pt-release-notes-page-title-icon-color, #3f2564);font-size:1.15rem}.pt-release-notes-page-title{margin:0;color:var(--pt-release-notes-page-title-color, #1f2937);font-size:1.25rem;font-weight:700}.pt-release-notes-page-subtitle{margin-top:.2rem;color:var(--pt-release-notes-page-subtitle-color, #6b7280);font-size:.875rem}.pt-release-notes-page-counters{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.pt-release-notes-page-counter{display:inline-flex;align-items:center;padding:.3rem .65rem;border-radius:999px;background:var(--pt-release-notes-page-counter-bg, #f3f4f6);color:var(--pt-release-notes-page-counter-color, #4b5563);font-size:.78rem;font-weight:600}.pt-release-notes-page-counter.unread{background:var(--pt-release-notes-page-unread-counter-bg, #f3f0f8);color:var(--pt-release-notes-page-unread-counter-color, #3f2564)}.pt-release-notes-page-counter.read{background:var(--pt-release-notes-page-read-counter-bg, #ecfdf5);color:var(--pt-release-notes-page-read-counter-color, #15803d)}.pt-release-notes-page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;border-bottom:1px solid var(--pt-release-notes-page-border, #e5e7eb)}.pt-release-notes-page-toolbar-left{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;min-width:0}.pt-release-notes-page-filters{display:flex;align-items:center;gap:.4rem}.pt-release-notes-page-filter{display:flex;align-items:center;gap:.45rem;padding:.5rem .85rem;border:1px solid var(--pt-release-notes-page-filter-border, #e5e7eb);border-radius:8px;background:var(--pt-release-notes-page-filter-bg, #ffffff);color:var(--pt-release-notes-page-filter-color, #4b5563);font-size:.82rem;font-weight:600;cursor:pointer}.pt-release-notes-page-filter:hover{background:#f9fafb}.pt-release-notes-page-filter.selected{border-color:var(--pt-release-notes-page-primary, #3f2564);background:var(--pt-release-notes-page-selected-bg, #f3f0f8);color:var(--pt-release-notes-page-primary, #3f2564)}.pt-release-notes-page-filter-count{min-width:20px;padding:.1rem .35rem;border-radius:999px;background:#0000000d;text-align:center;font-size:.72rem}.pt-release-notes-page-expand-all{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:34px;padding:.45rem .75rem;border:1px solid var(--pt-release-notes-page-filter-border, #e5e7eb);border-radius:8px;background:#fff;color:var(--pt-release-notes-page-primary, #3f2564);font-size:.78rem;font-weight:700;cursor:pointer;transition:background .15s ease,border-color .15s ease}.pt-release-notes-page-expand-all:hover,.pt-release-notes-page-expand-all.expanded{border-color:var(--pt-release-notes-page-primary, #3f2564);background:var(--pt-release-notes-page-selected-bg, #f3f0f8)}.pt-release-notes-page-search{position:relative;display:flex;align-items:center;width:min(360px,100%)}.pt-release-notes-page-search>.pi-search{position:absolute;left:.85rem;color:#9ca3af}.pt-release-notes-page-search input{width:100%;padding:.65rem 2.5rem .65rem 2.4rem;border:1px solid #d1d5db;border-radius:8px;outline:none;font-size:.85rem}.pt-release-notes-page-search input:focus{border-color:var(--pt-release-notes-page-primary, #3f2564);box-shadow:0 0 0 2px #3f256414}.pt-release-notes-page-search-clear{position:absolute;right:.6rem;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;background:transparent;color:#6b7280;cursor:pointer}.pt-release-notes-page-list{width:100%}.pt-release-notes-page-item{position:relative;padding:1.1rem 1.5rem;border-bottom:1px solid var(--pt-release-notes-page-border, #e5e7eb);background:var(--pt-release-notes-page-item-bg, #ffffff);transition:background .15s ease}.pt-release-notes-page-item:last-child{border-bottom:0}.pt-release-notes-page-item:hover{background:var(--pt-release-notes-page-item-hover-bg, #f9fafb)}.pt-release-notes-page-item.unread{background:var(--pt-release-notes-page-unread-bg, #faf8fd)}.pt-release-notes-page-item.unread:hover{background:var(--pt-release-notes-page-unread-hover-bg, #f6f2fa)}.pt-release-notes-page-item.disabled{opacity:.55}.pt-release-notes-page-item-top{position:relative;display:flex;align-items:flex-start;gap:1rem}.pt-release-notes-page-item-icon-wrapper{flex:0 0 auto}.pt-release-notes-page-item-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--pt-release-notes-page-item-icon-bg, #f3f0f8);color:var(--pt-release-notes-page-primary, #3f2564);font-size:1rem}.pt-release-notes-page-item-content{flex:1 1 auto;min-width:0}.pt-release-notes-page-version-row{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem}.pt-release-notes-page-version{display:inline-flex;align-items:center;padding:.25rem .55rem;border-radius:6px;background:var(--pt-release-notes-page-selected-bg, #f3f0f8);color:var(--pt-release-notes-page-primary, #3f2564);font-size:.78rem;font-weight:800}.pt-release-notes-page-item-title{color:var(--pt-release-notes-page-text-color, #1f2937);font-size:.9rem;font-weight:700}.pt-release-notes-page-summary{margin-top:.45rem;color:var(--pt-release-notes-page-metadata-color, #6b7280);font-size:.85rem;line-height:1.5}.pt-release-notes-page-metadata{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;margin-top:.5rem;color:var(--pt-release-notes-page-metadata-color, #6b7280);font-size:.78rem}.pt-release-notes-page-metadata span{display:inline-flex;align-items:center;gap:.35rem}.pt-release-notes-page-stats{display:flex;align-items:center;flex-wrap:wrap;gap:.45rem;margin-top:.8rem}.pt-release-notes-page-stat{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .6rem;border-radius:999px;font-size:.72rem;font-weight:600}.pt-release-notes-page-stat.new{background:#dcfce7;color:#15803d}.pt-release-notes-page-stat.improvement{background:#dbeafe;color:#1d4ed8}.pt-release-notes-page-stat.bug-fix{background:#fee2e2;color:#b91c1c}.pt-release-notes-page-unread-indicator{position:absolute;top:50%;right:-1rem;width:7px;height:7px;border-radius:50%;background:var(--pt-release-notes-page-unread-indicator, #3f2564);transform:translateY(-50%)}.pt-release-notes-page-details{display:flex;flex-direction:column;gap:1rem;margin-top:1rem;margin-left:58px;padding-top:1rem;border-top:1px solid var(--pt-release-notes-page-border, #e5e7eb)}.pt-release-notes-page-detail-section{overflow:hidden;border:1px solid #e5e7eb;border-radius:10px;background:#fff}.pt-release-notes-page-detail-section-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem .85rem;border-bottom:1px solid #e5e7eb}.pt-release-notes-page-detail-section-title{display:flex;align-items:center;gap:.55rem;font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.015em}.pt-release-notes-page-detail-section-icon{display:inline-flex;align-items:center;justify-content:center;width:27px;height:27px;border-radius:7px}.pt-release-notes-page-detail-section-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 .4rem;border-radius:999px;font-size:.7rem;font-weight:800}.pt-release-notes-page-detail-section.new .pt-release-notes-page-detail-section-header{background:#f0fdf4}.pt-release-notes-page-detail-section.new .pt-release-notes-page-detail-section-title{color:#15803d}.pt-release-notes-page-detail-section.new .pt-release-notes-page-detail-section-icon,.pt-release-notes-page-detail-section.new .pt-release-notes-page-detail-section-count{background:#dcfce7;color:#15803d}.pt-release-notes-page-detail-section.improvement .pt-release-notes-page-detail-section-header{background:#eff6ff}.pt-release-notes-page-detail-section.improvement .pt-release-notes-page-detail-section-title{color:#1d4ed8}.pt-release-notes-page-detail-section.improvement .pt-release-notes-page-detail-section-icon,.pt-release-notes-page-detail-section.improvement .pt-release-notes-page-detail-section-count{background:#dbeafe;color:#1d4ed8}.pt-release-notes-page-detail-section.bug-fix .pt-release-notes-page-detail-section-header{background:#fef2f2}.pt-release-notes-page-detail-section.bug-fix .pt-release-notes-page-detail-section-title{color:#b91c1c}.pt-release-notes-page-detail-section.bug-fix .pt-release-notes-page-detail-section-icon,.pt-release-notes-page-detail-section.bug-fix .pt-release-notes-page-detail-section-count{background:#fee2e2;color:#b91c1c}.pt-release-notes-page-detail-section-content{display:flex;flex-direction:column;padding:.35rem}.pt-release-notes-page-detail{display:flex;align-items:flex-start;gap:.75rem;width:100%;padding:.7rem;border:0;border-radius:8px;background:transparent;color:inherit;text-align:left;cursor:pointer}.pt-release-notes-page-detail:hover:not(:disabled){background:#f9fafb}.pt-release-notes-page-detail.disabled{opacity:.55;cursor:default}.pt-release-notes-page-detail-icon{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px}.pt-release-notes-page-detail.new .pt-release-notes-page-detail-icon{background:#dcfce7;color:#15803d}.pt-release-notes-page-detail.improvement .pt-release-notes-page-detail-icon{background:#dbeafe;color:#1d4ed8}.pt-release-notes-page-detail.bug-fix .pt-release-notes-page-detail-icon{background:#fee2e2;color:#b91c1c}.pt-release-notes-page-detail-content{flex:1;min-width:0}.pt-release-notes-page-detail-title{color:#1f2937;font-size:.84rem;font-weight:700}.pt-release-notes-page-detail-description{margin-top:.25rem;color:#6b7280;font-size:.78rem;line-height:1.5}.pt-release-notes-page-detail-link{flex:0 0 auto;align-self:center;color:#6b7280;font-size:.72rem}.pt-release-notes-page-details-action{display:flex;justify-content:center;margin-top:.8rem;margin-left:58px}.pt-release-notes-page-details-button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.45rem .75rem;border:0;border-radius:7px;background:transparent;color:var(--pt-release-notes-page-primary, #3f2564);font-size:.78rem;font-weight:700;cursor:pointer}.pt-release-notes-page-details-button:hover:not(:disabled){background:var(--pt-release-notes-page-selected-bg, #f3f0f8)}.pt-release-notes-page-details-button:disabled{opacity:.5;cursor:default}.pt-release-notes-page-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:280px;padding:3rem;color:#6b7280;text-align:center}.pt-release-notes-page-empty-icon{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin-bottom:1rem;border-radius:50%;background:#f3f4f6;color:#9ca3af;font-size:1.6rem}.pt-release-notes-page-empty-text{max-width:450px;font-size:.9rem}.pt-release-notes-page-loading{display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:100px;color:#6b7280;font-size:.85rem}.pt-release-notes-page-pagination{display:flex;align-items:center;justify-content:center;width:100%;padding:.75rem 1rem;box-sizing:border-box;border-top:1px solid var(--pt-release-notes-page-border, #e5e7eb);background:var(--pt-release-notes-page-pagination-bg, #ffffff)}.pt-release-notes-page-pagination ::ng-deep .p-paginator{width:100%;border:0;background:transparent}@media(max-width:768px){.pt-release-notes-page-header,.pt-release-notes-page-toolbar,.pt-release-notes-page-toolbar-left{flex-direction:column;align-items:stretch}.pt-release-notes-page-filters{overflow-x:auto}.pt-release-notes-page-expand-all{align-self:flex-start}.pt-release-notes-page-search{width:100%}.pt-release-notes-page-item{padding:1rem 1.1rem}.pt-release-notes-page-details,.pt-release-notes-page-details-action{margin-left:0}.pt-release-notes-page-unread-indicator{right:0}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2$6.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first", "appendTo"], outputs: ["onPageChange"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTReleaseNotesPageComponent, isStandalone: false, selector: "pt-release-notes-page", inputs: { releases: "releases", loading: "loading", totalRecords: "totalRecords", totalAllRecords: "totalAllRecords", totalUnreadRecords: "totalUnreadRecords", totalReadRecords: "totalReadRecords", page: "page", rows: "rows", rowsPerPageOptions: "rowsPerPageOptions", config: "config" }, outputs: { queryChange: "queryChange" }, ngImport: i0, template: "@if (resolvedConfig.visible) {\n <div class=\"pt-release-notes-page\">\n <div class=\"pt-release-notes-page-header\">\n <div class=\"pt-release-notes-page-heading\">\n <div class=\"pt-release-notes-page-title-row\">\n <div class=\"pt-release-notes-page-title-icon\">\n <i [class]=\"resolvedConfig.icon\"></i>\n </div>\n\n <div>\n <h2 class=\"pt-release-notes-page-title\">\n {{ getTitle() }}\n </h2>\n\n <div class=\"pt-release-notes-page-subtitle\">\n {{ getSubtitle() }}\n </div>\n </div>\n </div>\n\n @if (showCounters()) {\n <div class=\"pt-release-notes-page-counters\">\n <span class=\"pt-release-notes-page-counter\">\n {{ getTotalCount() }}\n version(s)\n </span>\n\n @if (getUnreadCount() > 0) {\n <span class=\"pt-release-notes-page-counter unread\">\n {{ getUnreadCount() }}\n non lue(s)\n </span>\n }\n\n @if (getReadCount() > 0) {\n <span class=\"pt-release-notes-page-counter read\">\n {{ getReadCount() }}\n lue(s)\n </span>\n }\n </div>\n }\n </div>\n </div>\n\n <div class=\"pt-release-notes-page-toolbar\">\n <div class=\"pt-release-notes-page-toolbar-left\">\n <div class=\"pt-release-notes-page-filters\">\n <button\n type=\"button\"\n class=\"pt-release-notes-page-filter\"\n [class.selected]=\"isFilterSelected('ALL')\"\n (click)=\"selectFilter('ALL')\"\n >\n {{ getAllLabel() }}\n\n <span class=\"pt-release-notes-page-filter-count\">\n {{ getTotalCount() }}\n </span>\n </button>\n\n <button\n type=\"button\"\n class=\"pt-release-notes-page-filter\"\n [class.selected]=\"isFilterSelected('UNREAD')\"\n (click)=\"selectFilter('UNREAD')\"\n >\n {{ getUnreadLabel() }}\n\n <span class=\"pt-release-notes-page-filter-count\">\n {{ getUnreadCount() }}\n </span>\n </button>\n\n <button\n type=\"button\"\n class=\"pt-release-notes-page-filter\"\n [class.selected]=\"isFilterSelected('READ')\"\n (click)=\"selectFilter('READ')\"\n >\n {{ getReadLabel() }}\n\n <span class=\"pt-release-notes-page-filter-count\">\n {{ getReadCount() }}\n </span>\n </button>\n </div>\n\n @if (hasExpandableReleases()) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-expand-all\"\n [class.expanded]=\"areAllDetailsExpanded()\"\n (click)=\"toggleAllDetails()\"\n >\n <i\n class=\"pi\"\n [ngClass]=\"\n areAllDetailsExpanded()\n ? 'pi-angle-double-up'\n : 'pi-angle-double-down'\n \"\n ></i>\n\n <span>\n {{ getToggleAllDetailsText() }}\n </span>\n </button>\n }\n </div>\n\n <div class=\"pt-release-notes-page-search\">\n <i class=\"pi pi-search\"></i>\n\n <input\n type=\"text\"\n [value]=\"searchText\"\n [placeholder]=\"getSearchPlaceholder()\"\n (input)=\"onSearch($any($event.target).value)\"\n />\n\n @if (hasSearch()) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-search-clear\"\n aria-label=\"Effacer la recherche\"\n (click)=\"clearSearch()\"\n >\n <i class=\"pi pi-times\"></i>\n </button>\n }\n </div>\n </div>\n\n @if (hasReleases()) {\n <div class=\"pt-release-notes-page-list\">\n @for (release of getDisplayedReleases(); track release.id) {\n <div [class]=\"getReleaseClasses(release)\">\n <div class=\"pt-release-notes-page-item-top\">\n <div class=\"pt-release-notes-page-item-icon-wrapper\">\n <div class=\"pt-release-notes-page-item-icon\">\n <i class=\"pi pi-sparkles\"></i>\n </div>\n </div>\n\n <div class=\"pt-release-notes-page-item-content\">\n <div class=\"pt-release-notes-page-version-row\">\n <span class=\"pt-release-notes-page-version\">\n v{{ release.version }}\n </span>\n\n <span class=\"pt-release-notes-page-item-title\">\n {{ release.title }}\n </span>\n </div>\n\n @if (release.summary) {\n <div class=\"pt-release-notes-page-summary\">\n {{ release.summary }}\n </div>\n }\n\n @if (release.date) {\n <div class=\"pt-release-notes-page-metadata\">\n <span>\n <i class=\"pi pi-calendar\"></i>\n\n {{ release.date | date: \"dd/MM/yyyy\" }}\n </span>\n </div>\n }\n\n @if (hasCounters(release)) {\n <div class=\"pt-release-notes-page-stats\">\n @if (hasNewItems(release)) {\n <span class=\"pt-release-notes-page-stat new\">\n <i class=\"pi pi-plus-circle\"></i>\n\n <strong>\n {{ getNewCount(release) }}\n </strong>\n\n {{ resolvedConfig.newLabel }}\n </span>\n }\n\n @if (hasImprovements(release)) {\n <span class=\"pt-release-notes-page-stat improvement\">\n <i class=\"pi pi-arrow-up-right\"></i>\n\n <strong>\n {{ getImprovementCount(release) }}\n </strong>\n\n {{ resolvedConfig.improvementLabel }}\n </span>\n }\n\n @if (hasBugFixes(release)) {\n <span class=\"pt-release-notes-page-stat bug-fix\">\n <i class=\"pi pi-wrench\"></i>\n\n <strong>\n {{ getBugFixCount(release) }}\n </strong>\n\n {{ resolvedConfig.bugFixLabel }}\n </span>\n }\n </div>\n }\n </div>\n\n @if (release.read !== true) {\n <span class=\"pt-release-notes-page-unread-indicator\"></span>\n }\n </div>\n\n @if (hasDetails(release) && isDetailsExpanded(release)) {\n <div class=\"pt-release-notes-page-details\">\n @if (hasDetailsByType(release, \"NEW\")) {\n <section class=\"pt-release-notes-page-detail-section new\">\n <div class=\"pt-release-notes-page-detail-section-header\">\n <div class=\"pt-release-notes-page-detail-section-title\">\n <span class=\"pt-release-notes-page-detail-section-icon\">\n <i class=\"pi pi-plus-circle\"></i>\n </span>\n\n <span>\n {{ resolvedConfig.newLabel }}\n </span>\n </div>\n\n <span class=\"pt-release-notes-page-detail-section-count\">\n {{ getDetailsByType(release, \"NEW\").length }}\n </span>\n </div>\n\n <div class=\"pt-release-notes-page-detail-section-content\">\n @for (\n detail of getDetailsByType(release, \"NEW\");\n track detail.id\n ) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-detail new\"\n [class.disabled]=\"detail.disabled\"\n [ngClass]=\"detail.styleClass || ''\"\n [disabled]=\"detail.disabled\"\n (click)=\"onDetailClick(detail, $event)\"\n >\n <div class=\"pt-release-notes-page-detail-icon\">\n <i [ngClass]=\"getDetailIcon(detail)\"></i>\n </div>\n\n <div class=\"pt-release-notes-page-detail-content\">\n <div class=\"pt-release-notes-page-detail-title\">\n {{ detail.title }}\n </div>\n\n @if (detail.description) {\n <div\n class=\"pt-release-notes-page-detail-description\"\n >\n {{ detail.description }}\n </div>\n }\n </div>\n\n @if (detail.link) {\n <i\n class=\"pi pi-arrow-right pt-release-notes-page-detail-link\"\n ></i>\n }\n </button>\n }\n </div>\n </section>\n }\n\n @if (hasDetailsByType(release, \"IMPROVEMENT\")) {\n <section\n class=\"pt-release-notes-page-detail-section improvement\"\n >\n <div class=\"pt-release-notes-page-detail-section-header\">\n <div class=\"pt-release-notes-page-detail-section-title\">\n <span class=\"pt-release-notes-page-detail-section-icon\">\n <i class=\"pi pi-arrow-up-right\"></i>\n </span>\n\n <span>\n {{ resolvedConfig.improvementLabel }}\n </span>\n </div>\n\n <span class=\"pt-release-notes-page-detail-section-count\">\n {{ getDetailsByType(release, \"IMPROVEMENT\").length }}\n </span>\n </div>\n\n <div class=\"pt-release-notes-page-detail-section-content\">\n @for (\n detail of getDetailsByType(release, \"IMPROVEMENT\");\n track detail.id\n ) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-detail improvement\"\n [class.disabled]=\"detail.disabled\"\n [ngClass]=\"detail.styleClass || ''\"\n [disabled]=\"detail.disabled\"\n (click)=\"onDetailClick(detail, $event)\"\n >\n <div class=\"pt-release-notes-page-detail-icon\">\n <i [ngClass]=\"getDetailIcon(detail)\"></i>\n </div>\n\n <div class=\"pt-release-notes-page-detail-content\">\n <div class=\"pt-release-notes-page-detail-title\">\n {{ detail.title }}\n </div>\n\n @if (detail.description) {\n <div\n class=\"pt-release-notes-page-detail-description\"\n >\n {{ detail.description }}\n </div>\n }\n </div>\n\n @if (detail.link) {\n <i\n class=\"pi pi-arrow-right pt-release-notes-page-detail-link\"\n ></i>\n }\n </button>\n }\n </div>\n </section>\n }\n\n @if (hasDetailsByType(release, \"BUG_FIX\")) {\n <section class=\"pt-release-notes-page-detail-section bug-fix\">\n <div class=\"pt-release-notes-page-detail-section-header\">\n <div class=\"pt-release-notes-page-detail-section-title\">\n <span class=\"pt-release-notes-page-detail-section-icon\">\n <i class=\"pi pi-wrench\"></i>\n </span>\n\n <span>\n {{ resolvedConfig.bugFixLabel }}\n </span>\n </div>\n\n <span class=\"pt-release-notes-page-detail-section-count\">\n {{ getDetailsByType(release, \"BUG_FIX\").length }}\n </span>\n </div>\n\n <div class=\"pt-release-notes-page-detail-section-content\">\n @for (\n detail of getDetailsByType(release, \"BUG_FIX\");\n track detail.id\n ) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-detail bug-fix\"\n [class.disabled]=\"detail.disabled\"\n [ngClass]=\"detail.styleClass || ''\"\n [disabled]=\"detail.disabled\"\n (click)=\"onDetailClick(detail, $event)\"\n >\n <div class=\"pt-release-notes-page-detail-icon\">\n <i [ngClass]=\"getDetailIcon(detail)\"></i>\n </div>\n\n <div class=\"pt-release-notes-page-detail-content\">\n <div class=\"pt-release-notes-page-detail-title\">\n {{ detail.title }}\n </div>\n\n @if (detail.description) {\n <div\n class=\"pt-release-notes-page-detail-description\"\n >\n {{ detail.description }}\n </div>\n }\n </div>\n\n @if (detail.link) {\n <i\n class=\"pi pi-arrow-right pt-release-notes-page-detail-link\"\n ></i>\n }\n </button>\n }\n </div>\n </section>\n }\n </div>\n }\n\n @if (hasDetails(release)) {\n <div class=\"pt-release-notes-page-details-action\">\n <button\n type=\"button\"\n class=\"pt-release-notes-page-details-button\"\n [disabled]=\"release.disabled\"\n (click)=\"toggleDetails(release)\"\n >\n <span>\n {{ getDetailsButtonText(release) }}\n </span>\n\n <i\n class=\"pi\"\n [ngClass]=\"\n isDetailsExpanded(release)\n ? 'pi-chevron-up'\n : 'pi-chevron-down'\n \"\n ></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n } @else if (!loading) {\n <div class=\"pt-release-notes-page-empty\">\n <div class=\"pt-release-notes-page-empty-icon\">\n <i [class]=\"getEmptyIcon()\"></i>\n </div>\n\n <div class=\"pt-release-notes-page-empty-text\">\n @if (hasSearch()) {\n {{ getNoSearchResultText() }}\n } @else {\n {{ getEmptyText() }}\n }\n </div>\n </div>\n }\n\n @if (loading) {\n <div class=\"pt-release-notes-page-loading\">\n <i class=\"pi pi-spin pi-spinner\"></i>\n\n <span>\n {{ resolvedConfig.loadingText }}\n </span>\n </div>\n }\n\n @if (showPagination()) {\n <div class=\"pt-release-notes-page-pagination\">\n <p-paginator\n [first]=\"getFirst()\"\n [rows]=\"rows\"\n [totalRecords]=\"totalRecords\"\n [rowsPerPageOptions]=\"getRowsPerPageOptions()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [currentPageReportTemplate]=\"getCurrentPageReportTemplate()\"\n (onPageChange)=\"onPageChange($event)\"\n ></p-paginator>\n </div>\n }\n </div>\n}\n", styles: [":host{display:block;width:100%}.pt-release-notes-page{position:relative;width:100%;background:var(--pt-release-notes-page-bg, #ffffff);border:1px solid var(--pt-release-notes-page-border, #e5e7eb);border-radius:14px;overflow:visible}.pt-release-notes-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--pt-release-notes-page-border, #e5e7eb)}.pt-release-notes-page-heading{display:flex;flex-direction:column;gap:.85rem}.pt-release-notes-page-title-row{display:flex;align-items:center;gap:.8rem}.pt-release-notes-page-title-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--pt-release-notes-page-title-icon-bg, #f3f0f8);color:var(--pt-release-notes-page-title-icon-color, #3f2564);font-size:1.15rem}.pt-release-notes-page-title{margin:0;color:var(--pt-release-notes-page-title-color, #1f2937);font-size:1.25rem;font-weight:700}.pt-release-notes-page-subtitle{margin-top:.2rem;color:var(--pt-release-notes-page-subtitle-color, #6b7280);font-size:.875rem}.pt-release-notes-page-counters{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.pt-release-notes-page-counter{display:inline-flex;align-items:center;padding:.3rem .65rem;border-radius:999px;background:var(--pt-release-notes-page-counter-bg, #f3f4f6);color:var(--pt-release-notes-page-counter-color, #4b5563);font-size:.78rem;font-weight:600}.pt-release-notes-page-counter.unread{background:var(--pt-release-notes-page-unread-counter-bg, #f3f0f8);color:var(--pt-release-notes-page-unread-counter-color, #3f2564)}.pt-release-notes-page-counter.read{background:var(--pt-release-notes-page-read-counter-bg, #ecfdf5);color:var(--pt-release-notes-page-read-counter-color, #15803d)}.pt-release-notes-page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;border-bottom:1px solid var(--pt-release-notes-page-border, #e5e7eb)}.pt-release-notes-page-toolbar-left{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;min-width:0}.pt-release-notes-page-filters{display:flex;align-items:center;gap:.4rem}.pt-release-notes-page-filter{display:flex;align-items:center;gap:.45rem;padding:.5rem .85rem;border:1px solid var(--pt-release-notes-page-filter-border, #e5e7eb);border-radius:8px;background:var(--pt-release-notes-page-filter-bg, #ffffff);color:var(--pt-release-notes-page-filter-color, #4b5563);font-size:.82rem;font-weight:600;cursor:pointer}.pt-release-notes-page-filter:hover{background:#f9fafb}.pt-release-notes-page-filter.selected{border-color:var(--pt-release-notes-page-primary, #3f2564);background:var(--pt-release-notes-page-selected-bg, #f3f0f8);color:var(--pt-release-notes-page-primary, #3f2564)}.pt-release-notes-page-filter-count{min-width:20px;padding:.1rem .35rem;border-radius:999px;background:#0000000d;text-align:center;font-size:.72rem}.pt-release-notes-page-expand-all{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:34px;padding:.45rem .75rem;border:1px solid var(--pt-release-notes-page-filter-border, #e5e7eb);border-radius:8px;background:#fff;color:var(--pt-release-notes-page-primary, #3f2564);font-size:.78rem;font-weight:700;cursor:pointer;transition:background .15s ease,border-color .15s ease}.pt-release-notes-page-expand-all:hover,.pt-release-notes-page-expand-all.expanded{border-color:var(--pt-release-notes-page-primary, #3f2564);background:var(--pt-release-notes-page-selected-bg, #f3f0f8)}.pt-release-notes-page-search{position:relative;display:flex;align-items:center;width:min(360px,100%)}.pt-release-notes-page-search>.pi-search{position:absolute;left:.85rem;color:#9ca3af}.pt-release-notes-page-search input{width:100%;padding:.65rem 2.5rem .65rem 2.4rem;border:1px solid #d1d5db;border-radius:8px;outline:none;font-size:.85rem}.pt-release-notes-page-search input:focus{border-color:var(--pt-release-notes-page-primary, #3f2564);box-shadow:0 0 0 2px #3f256414}.pt-release-notes-page-search-clear{position:absolute;right:.6rem;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;background:transparent;color:#6b7280;cursor:pointer}.pt-release-notes-page-list{width:100%}.pt-release-notes-page-item{position:relative;padding:1.1rem 1.5rem;border-bottom:1px solid var(--pt-release-notes-page-border, #e5e7eb);background:var(--pt-release-notes-page-item-bg, #ffffff);transition:background .15s ease}.pt-release-notes-page-item:last-child{border-bottom:0}.pt-release-notes-page-item:hover{background:var(--pt-release-notes-page-item-hover-bg, #f9fafb)}.pt-release-notes-page-item.unread{background:var(--pt-release-notes-page-unread-bg, #faf8fd)}.pt-release-notes-page-item.unread:hover{background:var(--pt-release-notes-page-unread-hover-bg, #f6f2fa)}.pt-release-notes-page-item.disabled{opacity:.55}.pt-release-notes-page-item-top{position:relative;display:flex;align-items:flex-start;gap:1rem}.pt-release-notes-page-item-icon-wrapper{flex:0 0 auto}.pt-release-notes-page-item-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--pt-release-notes-page-item-icon-bg, #f3f0f8);color:var(--pt-release-notes-page-primary, #3f2564);font-size:1rem}.pt-release-notes-page-item-content{flex:1 1 auto;min-width:0}.pt-release-notes-page-version-row{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem}.pt-release-notes-page-version{display:inline-flex;align-items:center;padding:.25rem .55rem;border-radius:6px;background:var(--pt-release-notes-page-selected-bg, #f3f0f8);color:var(--pt-release-notes-page-primary, #3f2564);font-size:.78rem;font-weight:800}.pt-release-notes-page-item-title{color:var(--pt-release-notes-page-text-color, #1f2937);font-size:.9rem;font-weight:700}.pt-release-notes-page-summary{margin-top:.45rem;color:var(--pt-release-notes-page-metadata-color, #6b7280);font-size:.85rem;line-height:1.5}.pt-release-notes-page-metadata{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;margin-top:.5rem;color:var(--pt-release-notes-page-metadata-color, #6b7280);font-size:.78rem}.pt-release-notes-page-metadata span{display:inline-flex;align-items:center;gap:.35rem}.pt-release-notes-page-stats{display:flex;align-items:center;flex-wrap:wrap;gap:.45rem;margin-top:.8rem}.pt-release-notes-page-stat{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .6rem;border-radius:999px;font-size:.72rem;font-weight:600}.pt-release-notes-page-stat.new{background:#dcfce7;color:#15803d}.pt-release-notes-page-stat.improvement{background:#dbeafe;color:#1d4ed8}.pt-release-notes-page-stat.bug-fix{background:#fee2e2;color:#b91c1c}.pt-release-notes-page-unread-indicator{position:absolute;top:50%;right:-1rem;width:7px;height:7px;border-radius:50%;background:var(--pt-release-notes-page-unread-indicator, #3f2564);transform:translateY(-50%)}.pt-release-notes-page-details{display:flex;flex-direction:column;gap:1rem;margin-top:1rem;margin-left:58px;padding-top:1rem;border-top:1px solid var(--pt-release-notes-page-border, #e5e7eb)}.pt-release-notes-page-detail-section{overflow:hidden;border:1px solid #e5e7eb;border-radius:10px;background:#fff}.pt-release-notes-page-detail-section-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem .85rem;border-bottom:1px solid #e5e7eb}.pt-release-notes-page-detail-section-title{display:flex;align-items:center;gap:.55rem;font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.015em}.pt-release-notes-page-detail-section-icon{display:inline-flex;align-items:center;justify-content:center;width:27px;height:27px;border-radius:7px}.pt-release-notes-page-detail-section-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 .4rem;border-radius:999px;font-size:.7rem;font-weight:800}.pt-release-notes-page-detail-section.new .pt-release-notes-page-detail-section-header{background:#f0fdf4}.pt-release-notes-page-detail-section.new .pt-release-notes-page-detail-section-title{color:#15803d}.pt-release-notes-page-detail-section.new .pt-release-notes-page-detail-section-icon,.pt-release-notes-page-detail-section.new .pt-release-notes-page-detail-section-count{background:#dcfce7;color:#15803d}.pt-release-notes-page-detail-section.improvement .pt-release-notes-page-detail-section-header{background:#eff6ff}.pt-release-notes-page-detail-section.improvement .pt-release-notes-page-detail-section-title{color:#1d4ed8}.pt-release-notes-page-detail-section.improvement .pt-release-notes-page-detail-section-icon,.pt-release-notes-page-detail-section.improvement .pt-release-notes-page-detail-section-count{background:#dbeafe;color:#1d4ed8}.pt-release-notes-page-detail-section.bug-fix .pt-release-notes-page-detail-section-header{background:#fef2f2}.pt-release-notes-page-detail-section.bug-fix .pt-release-notes-page-detail-section-title{color:#b91c1c}.pt-release-notes-page-detail-section.bug-fix .pt-release-notes-page-detail-section-icon,.pt-release-notes-page-detail-section.bug-fix .pt-release-notes-page-detail-section-count{background:#fee2e2;color:#b91c1c}.pt-release-notes-page-detail-section-content{display:flex;flex-direction:column;padding:.35rem}.pt-release-notes-page-detail{display:flex;align-items:flex-start;gap:.75rem;width:100%;padding:.7rem;border:0;border-radius:8px;background:transparent;color:inherit;text-align:left;cursor:pointer}.pt-release-notes-page-detail:hover:not(:disabled){background:#f9fafb}.pt-release-notes-page-detail.disabled{opacity:.55;cursor:default}.pt-release-notes-page-detail-icon{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px}.pt-release-notes-page-detail.new .pt-release-notes-page-detail-icon{background:#dcfce7;color:#15803d}.pt-release-notes-page-detail.improvement .pt-release-notes-page-detail-icon{background:#dbeafe;color:#1d4ed8}.pt-release-notes-page-detail.bug-fix .pt-release-notes-page-detail-icon{background:#fee2e2;color:#b91c1c}.pt-release-notes-page-detail-content{flex:1;min-width:0}.pt-release-notes-page-detail-title{color:#1f2937;font-size:.84rem;font-weight:700}.pt-release-notes-page-detail-description{margin-top:.25rem;color:#6b7280;font-size:.78rem;line-height:1.5}.pt-release-notes-page-detail-link{flex:0 0 auto;align-self:center;color:#6b7280;font-size:.72rem}.pt-release-notes-page-details-action{display:flex;justify-content:center;margin-top:.8rem;margin-left:58px}.pt-release-notes-page-details-button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.45rem .75rem;border:0;border-radius:7px;background:transparent;color:var(--pt-release-notes-page-primary, #3f2564);font-size:.78rem;font-weight:700;cursor:pointer}.pt-release-notes-page-details-button:hover:not(:disabled){background:var(--pt-release-notes-page-selected-bg, #f3f0f8)}.pt-release-notes-page-details-button:disabled{opacity:.5;cursor:default}.pt-release-notes-page-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:280px;padding:3rem;color:#6b7280;text-align:center}.pt-release-notes-page-empty-icon{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin-bottom:1rem;border-radius:50%;background:#f3f4f6;color:#9ca3af;font-size:1.6rem}.pt-release-notes-page-empty-text{max-width:450px;font-size:.9rem}.pt-release-notes-page-loading{display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:100px;color:#6b7280;font-size:.85rem}.pt-release-notes-page-pagination{display:flex;align-items:center;justify-content:center;width:100%;padding:.75rem 1rem;box-sizing:border-box;border-top:1px solid var(--pt-release-notes-page-border, #e5e7eb);background:var(--pt-release-notes-page-pagination-bg, #ffffff)}.pt-release-notes-page-pagination ::ng-deep .p-paginator{width:100%;border:0;background:transparent}@media(max-width:768px){.pt-release-notes-page-header,.pt-release-notes-page-toolbar,.pt-release-notes-page-toolbar-left{flex-direction:column;align-items:stretch}.pt-release-notes-page-filters{overflow-x:auto}.pt-release-notes-page-expand-all{align-self:flex-start}.pt-release-notes-page-search{width:100%}.pt-release-notes-page-item{padding:1rem 1.1rem}.pt-release-notes-page-details,.pt-release-notes-page-details-action{margin-left:0}.pt-release-notes-page-unread-indicator{right:0}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2$5.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first", "appendTo"], outputs: ["onPageChange"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12974
13189
  }
12975
13190
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesPageComponent, decorators: [{
12976
13191
  type: Component,