ng-prime-tools 1.1.21 → 1.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Pipe, EventEmitter, ViewChild, Output, Input, Component, NgModule, Injectable, Inject, HostListener, ContentChild, Directive, ContentChildren, ChangeDetectionStrategy, HostBinding } from '@angular/core';
2
+ import { Pipe, EventEmitter, ViewChild, Output, Input, Component, NgModule, Injectable, Inject, HostListener, ChangeDetectionStrategy, ContentChild, Directive, ContentChildren, 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,19 +55,21 @@ 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/breadcrumb';
58
+ import * as i2$1 from 'primeng/popover';
59
+ import { PopoverModule } from 'primeng/popover';
60
+ import * as i2$2 from 'primeng/breadcrumb';
59
61
  import { BreadcrumbModule } from 'primeng/breadcrumb';
60
62
  import * as i3$7 from 'primeng/confirmdialog';
61
63
  import { ConfirmDialogModule } from 'primeng/confirmdialog';
62
- import * as i2$2 from 'primeng/toast';
64
+ import * as i2$3 from 'primeng/toast';
63
65
  import { ToastModule } from 'primeng/toast';
64
- import * as i2$3 from 'primeng/dialog';
66
+ import * as i2$4 from 'primeng/dialog';
65
67
  import { DialogModule } from 'primeng/dialog';
66
- import * as i2$4 from 'primeng/accordion';
68
+ import * as i2$5 from 'primeng/accordion';
67
69
  import { AccordionModule } from 'primeng/accordion';
68
70
  import * as i5$1 from 'primeng/menu';
69
71
  import { MenuModule } from 'primeng/menu';
70
- import * as i2$5 from 'primeng/paginator';
72
+ import * as i2$6 from 'primeng/paginator';
71
73
  import { PaginatorModule } from 'primeng/paginator';
72
74
 
73
75
  /**
@@ -6555,6 +6557,199 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
6555
6557
  args: ['document:click']
6556
6558
  }] } });
6557
6559
 
6560
+ class PTReleaseNotesComponent {
6561
+ constructor() {
6562
+ this.releases = [];
6563
+ this.config = {};
6564
+ this.loading = false;
6565
+ this.hasMore = false;
6566
+ this.pageSize = 10;
6567
+ this.releaseClick = new EventEmitter();
6568
+ this.viewAll = new EventEmitter();
6569
+ this.loadMore = new EventEmitter();
6570
+ this.currentPage = 0;
6571
+ this.loadMoreRequested = false;
6572
+ }
6573
+ ngOnChanges(changes) {
6574
+ if (changes['loading'] &&
6575
+ changes['loading'].previousValue === true &&
6576
+ changes['loading'].currentValue === false) {
6577
+ this.loadMoreRequested = false;
6578
+ }
6579
+ if (changes['releases'] &&
6580
+ !changes['releases'].firstChange &&
6581
+ (this.releases ?? []).length === 0) {
6582
+ this.currentPage = 0;
6583
+ this.loadMoreRequested = false;
6584
+ }
6585
+ }
6586
+ get language() {
6587
+ return this.config.language ?? 'FR';
6588
+ }
6589
+ get resolvedConfig() {
6590
+ const isFrench = this.language === 'FR';
6591
+ return {
6592
+ visible: this.config.visible ?? true,
6593
+ language: this.language,
6594
+ title: this.config.title ?? (isFrench ? 'Nouveautés' : "What's new"),
6595
+ emptyText: this.config.emptyText ??
6596
+ (isFrench
6597
+ ? 'Aucune nouveauté disponible'
6598
+ : 'No release notes available'),
6599
+ icon: this.config.icon ?? 'pi pi-sparkles',
6600
+ badgeLimit: this.config.badgeLimit ?? 99,
6601
+ width: this.config.width ?? '430px',
6602
+ maxHeight: this.config.maxHeight ?? '500px',
6603
+ showBadge: this.config.showBadge ?? true,
6604
+ showHeaderCount: this.config.showHeaderCount ?? true,
6605
+ closePanelOnReleaseClick: this.config.closePanelOnReleaseClick ?? false,
6606
+ showViewAll: this.config.showViewAll ?? false,
6607
+ viewAllText: this.config.viewAllText ??
6608
+ (isFrench ? 'Voir toutes les versions' : 'View all releases'),
6609
+ viewAllIcon: this.config.viewAllIcon ?? 'pi pi-arrow-right',
6610
+ detailsText: this.config.detailsText ??
6611
+ (isFrench ? 'Voir les détails' : 'View details'),
6612
+ newLabel: this.config.newLabel ?? (isFrench ? 'Nouveautés' : 'New'),
6613
+ improvementLabel: this.config.improvementLabel ??
6614
+ (isFrench ? 'Améliorations' : 'Improvements'),
6615
+ bugFixLabel: this.config.bugFixLabel ?? (isFrench ? 'Corrections' : 'Fixes'),
6616
+ infiniteScroll: this.config.infiniteScroll ?? false,
6617
+ infiniteScrollThreshold: this.config.infiniteScrollThreshold ?? 80,
6618
+ loadingText: this.config.loadingText ?? (isFrench ? 'Chargement...' : 'Loading...'),
6619
+ showDetailsText: this.config.showDetailsText ??
6620
+ (isFrench ? 'Afficher tous les détails' : 'Show all details'),
6621
+ hideDetailsText: this.config.hideDetailsText ??
6622
+ (isFrench ? 'Masquer les détails' : 'Hide details'),
6623
+ };
6624
+ }
6625
+ get unreadCount() {
6626
+ if (this.totalUnreadRecords !== undefined) {
6627
+ return Math.max(0, this.totalUnreadRecords);
6628
+ }
6629
+ return (this.releases ?? []).filter((release) => release.read !== true && release.disabled !== true).length;
6630
+ }
6631
+ get badgeValue() {
6632
+ const limit = this.resolvedConfig.badgeLimit;
6633
+ return this.unreadCount > limit ? `${limit}+` : `${this.unreadCount}`;
6634
+ }
6635
+ toggle(event) {
6636
+ if (!this.resolvedConfig.visible) {
6637
+ return;
6638
+ }
6639
+ this.releaseNotesPanel?.toggle(event);
6640
+ }
6641
+ hide() {
6642
+ this.releaseNotesPanel?.hide();
6643
+ }
6644
+ onReleaseClick(release) {
6645
+ if (release.disabled) {
6646
+ return;
6647
+ }
6648
+ this.releaseClick.emit({
6649
+ release,
6650
+ });
6651
+ if (this.resolvedConfig.closePanelOnReleaseClick) {
6652
+ this.hide();
6653
+ }
6654
+ }
6655
+ onDetailsClick(event, release) {
6656
+ event.stopPropagation();
6657
+ if (release.disabled) {
6658
+ return;
6659
+ }
6660
+ this.releaseClick.emit({
6661
+ release,
6662
+ });
6663
+ const detailsUrl = release.detailsUrl?.trim();
6664
+ if (!detailsUrl) {
6665
+ return;
6666
+ }
6667
+ this.navigateToUrl(detailsUrl);
6668
+ this.hide();
6669
+ }
6670
+ onViewAll() {
6671
+ this.viewAll.emit();
6672
+ this.hide();
6673
+ }
6674
+ onScroll(event) {
6675
+ if (!this.resolvedConfig.infiniteScroll ||
6676
+ this.loading ||
6677
+ !this.hasMore ||
6678
+ this.loadMoreRequested) {
6679
+ return;
6680
+ }
6681
+ const element = event.target;
6682
+ const distanceFromBottom = element.scrollHeight - element.scrollTop - element.clientHeight;
6683
+ if (distanceFromBottom > this.resolvedConfig.infiniteScrollThreshold) {
6684
+ return;
6685
+ }
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,
6692
+ });
6693
+ }
6694
+ getNewCount(release) {
6695
+ return release.newCount ?? 0;
6696
+ }
6697
+ getImprovementCount(release) {
6698
+ return release.improvementCount ?? 0;
6699
+ }
6700
+ getBugFixCount(release) {
6701
+ return release.bugFixCount ?? 0;
6702
+ }
6703
+ getTotalChangesCount(release) {
6704
+ return (this.getNewCount(release) +
6705
+ this.getImprovementCount(release) +
6706
+ this.getBugFixCount(release));
6707
+ }
6708
+ hasCounters(release) {
6709
+ return this.getTotalChangesCount(release) > 0;
6710
+ }
6711
+ hasDetails(release) {
6712
+ return (release.details ?? []).length > 0;
6713
+ }
6714
+ trackByReleaseId(index, release) {
6715
+ return release.id;
6716
+ }
6717
+ navigateToUrl(url) {
6718
+ const target = url.trim();
6719
+ if (!target) {
6720
+ return;
6721
+ }
6722
+ window.location.href = target;
6723
+ }
6724
+ 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 }); }
6726
+ }
6727
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesComponent, decorators: [{
6728
+ 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: [{
6734
+ type: Input
6735
+ }], config: [{
6736
+ type: Input
6737
+ }], loading: [{
6738
+ type: Input
6739
+ }], hasMore: [{
6740
+ type: Input
6741
+ }], pageSize: [{
6742
+ type: Input
6743
+ }], totalUnreadRecords: [{
6744
+ type: Input
6745
+ }], releaseClick: [{
6746
+ type: Output
6747
+ }], viewAll: [{
6748
+ type: Output
6749
+ }], loadMore: [{
6750
+ type: Output
6751
+ }] } });
6752
+
6558
6753
  class PTNavbarMenuComponent {
6559
6754
  constructor() {
6560
6755
  this.navBarMenuConfig = {};
@@ -6564,6 +6759,11 @@ class PTNavbarMenuComponent {
6564
6759
  this.notificationPage = 0;
6565
6760
  this.notificationRows = 10;
6566
6761
  this.notificationLoading = false;
6762
+ this.releaseNotes = [];
6763
+ this.releaseNotesConfig = {};
6764
+ this.releaseNotesLoading = false;
6765
+ this.releaseNotesHasMore = false;
6766
+ this.releaseNotesPageSize = 10;
6567
6767
  this.toggleSidebar = new EventEmitter();
6568
6768
  this.notificationAction = new EventEmitter();
6569
6769
  this.notificationClick = new EventEmitter();
@@ -6572,6 +6772,9 @@ class PTNavbarMenuComponent {
6572
6772
  this.notificationGlobalAction = new EventEmitter();
6573
6773
  this.notificationViewAll = new EventEmitter();
6574
6774
  this.notificationLoadMore = new EventEmitter();
6775
+ this.releaseNoteClick = new EventEmitter();
6776
+ this.releaseNotesViewAll = new EventEmitter();
6777
+ this.releaseNotesLoadMore = new EventEmitter();
6575
6778
  this.destroy$ = new Subject();
6576
6779
  this.dateTimeText = '';
6577
6780
  this.isUserMenuOpen = false;
@@ -6655,6 +6858,20 @@ class PTNavbarMenuComponent {
6655
6858
  onNotificationLoadMore(event) {
6656
6859
  this.notificationLoadMore.emit(event);
6657
6860
  }
6861
+ hasReleaseNotes() {
6862
+ return (this.releaseNotes ?? []).length > 0;
6863
+ }
6864
+ onReleaseNoteClick(event) {
6865
+ this.isUserMenuOpen = false;
6866
+ this.releaseNoteClick.emit(event);
6867
+ }
6868
+ onReleaseNotesViewAll() {
6869
+ this.isUserMenuOpen = false;
6870
+ this.releaseNotesViewAll.emit();
6871
+ }
6872
+ onReleaseNotesLoadMore(event) {
6873
+ this.releaseNotesLoadMore.emit(event);
6874
+ }
6658
6875
  hasDateTime() {
6659
6876
  return !!this.navBarMenuConfig.dateTime;
6660
6877
  }
@@ -6824,9 +7041,7 @@ class PTNavbarMenuComponent {
6824
7041
  };
6825
7042
  }
6826
7043
  getUserMenuItems() {
6827
- return (this.navBarMenuConfig.user?.menuItems ?? []).filter((item) => {
6828
- return item.visible !== false;
6829
- });
7044
+ return (this.navBarMenuConfig.user?.menuItems ?? []).filter((item) => item.visible !== false);
6830
7045
  }
6831
7046
  hasUserMenuItems() {
6832
7047
  return this.getUserMenuItems().length > 0;
@@ -6996,11 +7211,11 @@ class PTNavbarMenuComponent {
6996
7211
  };
6997
7212
  }
6998
7213
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNavbarMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6999
- 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" }, outputs: { toggleSidebar: "toggleSidebar", notificationAction: "notificationAction", notificationClick: "notificationClick", notificationPanelOpened: "notificationPanelOpened", notificationPanelClosed: "notificationPanelClosed", notificationGlobalAction: "notificationGlobalAction", notificationViewAll: "notificationViewAll", notificationLoadMore: "notificationLoadMore" }, 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=\"navbar-actions\">\n <div class=\"navbar-right\"></div>\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 (loadMore)=\"onNotificationLoadMore($event)\"\n (notificationClick)=\"onNotificationClick($event)\"\n (action)=\"onNotificationAction($event)\"\n (globalAction)=\"onNotificationGlobalAction($event)\"\n (viewAll)=\"onNotificationViewAll()\"\n (panelOpened)=\"onNotificationPanelOpened()\"\n (panelClosed)=\"onNotificationPanelClosed()\"\n ></pt-notification>\n\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{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"] }] }); }
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"] }] }); }
7000
7215
  }
7001
7216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNavbarMenuComponent, decorators: [{
7002
7217
  type: Component,
7003
- 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=\"navbar-actions\">\n <div class=\"navbar-right\"></div>\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 (loadMore)=\"onNotificationLoadMore($event)\"\n (notificationClick)=\"onNotificationClick($event)\"\n (action)=\"onNotificationAction($event)\"\n (globalAction)=\"onNotificationGlobalAction($event)\"\n (viewAll)=\"onNotificationViewAll()\"\n (panelOpened)=\"onNotificationPanelOpened()\"\n (panelClosed)=\"onNotificationPanelClosed()\"\n ></pt-notification>\n\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{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"] }]
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"] }]
7004
7219
  }], propDecorators: { navBarMenuConfig: [{
7005
7220
  type: Input
7006
7221
  }], serverDateTime: [{
@@ -7019,6 +7234,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
7019
7234
  type: Input
7020
7235
  }], notificationLoading: [{
7021
7236
  type: Input
7237
+ }], releaseNotes: [{
7238
+ type: Input
7239
+ }], releaseNotesConfig: [{
7240
+ type: Input
7241
+ }], releaseNotesLoading: [{
7242
+ type: Input
7243
+ }], releaseNotesHasMore: [{
7244
+ type: Input
7245
+ }], releaseNotesPageSize: [{
7246
+ type: Input
7247
+ }], releaseNotesTotalUnreadRecords: [{
7248
+ type: Input
7022
7249
  }], toggleSidebar: [{
7023
7250
  type: Output
7024
7251
  }], notificationAction: [{
@@ -7035,6 +7262,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
7035
7262
  type: Output
7036
7263
  }], notificationLoadMore: [{
7037
7264
  type: Output
7265
+ }], releaseNoteClick: [{
7266
+ type: Output
7267
+ }], releaseNotesViewAll: [{
7268
+ type: Output
7269
+ }], releaseNotesLoadMore: [{
7270
+ type: Output
7038
7271
  }], closeUserMenu: [{
7039
7272
  type: HostListener,
7040
7273
  args: ['document:click']
@@ -7169,16 +7402,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
7169
7402
  }]
7170
7403
  }] });
7171
7404
 
7405
+ class PTReleaseNotesModule {
7406
+ 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] }); }
7409
+ }
7410
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesModule, decorators: [{
7411
+ type: NgModule,
7412
+ args: [{
7413
+ declarations: [PTReleaseNotesComponent],
7414
+ imports: [CommonModule, PopoverModule],
7415
+ exports: [PTReleaseNotesComponent],
7416
+ }]
7417
+ }] });
7418
+
7172
7419
  class PTNavbarMenuModule {
7173
7420
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNavbarMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7174
7421
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: PTNavbarMenuModule, declarations: [PTNavbarMenuComponent], imports: [CommonModule,
7175
7422
  RouterModule,
7176
7423
  PTMenuFancyModule,
7177
- PTNotificationModule], exports: [PTNavbarMenuComponent] }); }
7424
+ PTNotificationModule,
7425
+ PTReleaseNotesModule], exports: [PTNavbarMenuComponent] }); }
7178
7426
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNavbarMenuModule, imports: [CommonModule,
7179
7427
  RouterModule,
7180
7428
  PTMenuFancyModule,
7181
- PTNotificationModule] }); }
7429
+ PTNotificationModule,
7430
+ PTReleaseNotesModule] }); }
7182
7431
  }
7183
7432
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNavbarMenuModule, decorators: [{
7184
7433
  type: NgModule,
@@ -7189,6 +7438,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
7189
7438
  RouterModule,
7190
7439
  PTMenuFancyModule,
7191
7440
  PTNotificationModule,
7441
+ PTReleaseNotesModule,
7192
7442
  ],
7193
7443
  exports: [PTNavbarMenuComponent],
7194
7444
  }]
@@ -7648,7 +7898,7 @@ class PTBreadCrumbComponent {
7648
7898
  });
7649
7899
  }
7650
7900
  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 }); }
7651
- 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"] }] }); }
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"] }] }); }
7652
7902
  }
7653
7903
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTBreadCrumbComponent, decorators: [{
7654
7904
  type: Component,
@@ -7665,6 +7915,11 @@ class PTPageSkeletonComponent {
7665
7915
  this.notificationPage = 0;
7666
7916
  this.notificationRows = 10;
7667
7917
  this.notificationLoading = false;
7918
+ this.releaseNotes = [];
7919
+ this.releaseNotesConfig = {};
7920
+ this.releaseNotesLoading = false;
7921
+ this.releaseNotesHasMore = false;
7922
+ this.releaseNotesPageSize = 10;
7668
7923
  this.toggleSidebar = new EventEmitter();
7669
7924
  this.notificationAction = new EventEmitter();
7670
7925
  this.notificationClick = new EventEmitter();
@@ -7673,6 +7928,9 @@ class PTPageSkeletonComponent {
7673
7928
  this.notificationGlobalAction = new EventEmitter();
7674
7929
  this.notificationViewAll = new EventEmitter();
7675
7930
  this.notificationLoadMore = new EventEmitter();
7931
+ this.releaseNoteClick = new EventEmitter();
7932
+ this.releaseNotesViewAll = new EventEmitter();
7933
+ this.releaseNotesLoadMore = new EventEmitter();
7676
7934
  this.isSidebarVisible = true;
7677
7935
  }
7678
7936
  ngOnInit() {
@@ -7704,6 +7962,15 @@ class PTPageSkeletonComponent {
7704
7962
  onNotificationLoadMore(event) {
7705
7963
  this.notificationLoadMore.emit(event);
7706
7964
  }
7965
+ onReleaseNoteClick(event) {
7966
+ this.releaseNoteClick.emit(event);
7967
+ }
7968
+ onReleaseNotesViewAll() {
7969
+ this.releaseNotesViewAll.emit();
7970
+ }
7971
+ onReleaseNotesLoadMore(event) {
7972
+ this.releaseNotesLoadMore.emit(event);
7973
+ }
7707
7974
  initializeBackgroundCardConfig() {
7708
7975
  this.pageSkeletonConfig.backgroundCardConfig = {
7709
7976
  identifier: 'pt-page-skeleton/background',
@@ -7736,11 +8003,11 @@ class PTPageSkeletonComponent {
7736
8003
  };
7737
8004
  }
7738
8005
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTPageSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7739
- 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" }, outputs: { toggleSidebar: "toggleSidebar", notificationAction: "notificationAction", notificationClick: "notificationClick", notificationPanelOpened: "notificationPanelOpened", notificationPanelClosed: "notificationPanelClosed", notificationGlobalAction: "notificationGlobalAction", notificationViewAll: "notificationViewAll", notificationLoadMore: "notificationLoadMore" }, 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 (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 ></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"], outputs: ["toggleSidebar", "notificationAction", "notificationClick", "notificationPanelOpened", "notificationPanelClosed", "notificationGlobalAction", "notificationViewAll", "notificationLoadMore"] }, { 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"] }] }); }
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"] }] }); }
7740
8007
  }
7741
8008
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTPageSkeletonComponent, decorators: [{
7742
8009
  type: Component,
7743
- 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 (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 ></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"] }]
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"] }]
7744
8011
  }], propDecorators: { pageSkeletonConfig: [{
7745
8012
  type: Input
7746
8013
  }], serverDateTime: [{
@@ -7759,6 +8026,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
7759
8026
  type: Input
7760
8027
  }], notificationLoading: [{
7761
8028
  type: Input
8029
+ }], releaseNotes: [{
8030
+ type: Input
8031
+ }], releaseNotesConfig: [{
8032
+ type: Input
8033
+ }], releaseNotesLoading: [{
8034
+ type: Input
8035
+ }], releaseNotesHasMore: [{
8036
+ type: Input
8037
+ }], releaseNotesPageSize: [{
8038
+ type: Input
8039
+ }], releaseNotesTotalUnreadRecords: [{
8040
+ type: Input
7762
8041
  }], toggleSidebar: [{
7763
8042
  type: Output
7764
8043
  }], notificationAction: [{
@@ -7775,6 +8054,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
7775
8054
  type: Output
7776
8055
  }], notificationLoadMore: [{
7777
8056
  type: Output
8057
+ }], releaseNoteClick: [{
8058
+ type: Output
8059
+ }], releaseNotesViewAll: [{
8060
+ type: Output
8061
+ }], releaseNotesLoadMore: [{
8062
+ type: Output
7778
8063
  }] } });
7779
8064
 
7780
8065
  class PTFooterModule {
@@ -8489,7 +8774,7 @@ class PTToastNotifierComponent {
8489
8774
  this.messageService.clear();
8490
8775
  }
8491
8776
  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 }); }
8492
- 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"] }] }); }
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"] }] }); }
8493
8778
  }
8494
8779
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTToastNotifierComponent, decorators: [{
8495
8780
  type: Component,
@@ -8660,7 +8945,7 @@ class PTDialogComponent {
8660
8945
  return this.removeTextUtilityClasses(this.config.headerIconClass);
8661
8946
  }
8662
8947
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8663
- 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"] }] }); }
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"] }] }); }
8664
8949
  }
8665
8950
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTDialogComponent, decorators: [{
8666
8951
  type: Component,
@@ -9442,7 +9727,7 @@ class PTAccordionComponent {
9442
9727
  .filter(Boolean));
9443
9728
  }
9444
9729
  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 }); }
9445
- 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 }); }
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 }); }
9446
9731
  }
9447
9732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTAccordionComponent, decorators: [{
9448
9733
  type: Component,
@@ -12228,7 +12513,7 @@ class PTNotificationsPageComponent {
12228
12513
  return String(value).padStart(2, '0');
12229
12514
  }
12230
12515
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12231
- 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"] }] }); }
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"] }] }); }
12232
12517
  }
12233
12518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationsPageComponent, decorators: [{
12234
12519
  type: Component,
@@ -12273,6 +12558,366 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
12273
12558
  }]
12274
12559
  }] });
12275
12560
 
12561
+ class PTReleaseNotesPageComponent {
12562
+ constructor() {
12563
+ /**
12564
+ * Current server page only.
12565
+ */
12566
+ this.releases = [];
12567
+ /**
12568
+ * Loading state of the current request.
12569
+ */
12570
+ this.loading = false;
12571
+ /**
12572
+ * Number of records matching:
12573
+ *
12574
+ * search + selected filter
12575
+ *
12576
+ * Used by paginator.
12577
+ */
12578
+ this.totalRecords = 0;
12579
+ /**
12580
+ * Number of all releases matching the search
12581
+ * before applying ALL / UNREAD / READ.
12582
+ */
12583
+ this.totalAllRecords = 0;
12584
+ /**
12585
+ * Current zero-based page.
12586
+ */
12587
+ this.page = 0;
12588
+ /**
12589
+ * Current server page size.
12590
+ */
12591
+ this.rows = 10;
12592
+ this.config = {};
12593
+ this.queryChange = new EventEmitter();
12594
+ this.searchText = '';
12595
+ this.selectedFilter = 'ALL';
12596
+ this.destroy$ = new Subject();
12597
+ this.searchSubject = new Subject();
12598
+ this.expandedReleaseIds = new Set();
12599
+ this.searchSubject
12600
+ .pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.destroy$))
12601
+ .subscribe(() => {
12602
+ this.page = 0;
12603
+ this.emitQueryChange();
12604
+ });
12605
+ }
12606
+ ngOnDestroy() {
12607
+ this.destroy$.next();
12608
+ this.destroy$.complete();
12609
+ }
12610
+ get language() {
12611
+ return this.config.language ?? 'FR';
12612
+ }
12613
+ get resolvedConfig() {
12614
+ const isFrench = this.language === 'FR';
12615
+ return {
12616
+ visible: this.config.visible ?? true,
12617
+ language: this.language,
12618
+ title: this.config.title ?? (isFrench ? 'Notes de version' : 'Release notes'),
12619
+ emptyText: this.config.emptyText ??
12620
+ (isFrench
12621
+ ? 'Aucune note de version disponible'
12622
+ : 'No release notes available'),
12623
+ icon: this.config.icon ?? 'pi pi-sparkles',
12624
+ badgeLimit: this.config.badgeLimit ?? 99,
12625
+ width: this.config.width ?? '450px',
12626
+ maxHeight: this.config.maxHeight ?? '500px',
12627
+ showBadge: this.config.showBadge ?? true,
12628
+ showHeaderCount: this.config.showHeaderCount ?? true,
12629
+ closePanelOnReleaseClick: this.config.closePanelOnReleaseClick ?? false,
12630
+ showViewAll: this.config.showViewAll ?? true,
12631
+ viewAllText: this.config.viewAllText ??
12632
+ (isFrench ? 'Voir toutes les versions' : 'View all releases'),
12633
+ viewAllIcon: this.config.viewAllIcon ?? 'pi pi-arrow-right',
12634
+ detailsText: this.config.detailsText ??
12635
+ (isFrench ? 'Voir les détails' : 'View details'),
12636
+ newLabel: this.config.newLabel ?? (isFrench ? 'Nouveautés' : 'New'),
12637
+ improvementLabel: this.config.improvementLabel ??
12638
+ (isFrench ? 'Améliorations' : 'Improvements'),
12639
+ bugFixLabel: this.config.bugFixLabel ?? (isFrench ? 'Corrections' : 'Fixes'),
12640
+ infiniteScroll: this.config.infiniteScroll ?? false,
12641
+ infiniteScrollThreshold: this.config.infiniteScrollThreshold ?? 100,
12642
+ loadingText: this.config.loadingText ?? (isFrench ? 'Chargement...' : 'Loading...'),
12643
+ showDetailsText: this.config.showDetailsText ??
12644
+ (isFrench ? 'Afficher tous les détails' : 'Show all details'),
12645
+ hideDetailsText: this.config.hideDetailsText ??
12646
+ (isFrench ? 'Masquer les détails' : 'Hide details'),
12647
+ };
12648
+ }
12649
+ getReleases() {
12650
+ return this.releases ?? [];
12651
+ }
12652
+ getDisplayedReleases() {
12653
+ return this.getReleases();
12654
+ }
12655
+ hasReleases() {
12656
+ return this.getDisplayedReleases().length > 0;
12657
+ }
12658
+ getTitle() {
12659
+ return (this.config.title?.trim() ||
12660
+ (this.language === 'FR' ? 'Notes de version' : 'Release notes'));
12661
+ }
12662
+ getSubtitle() {
12663
+ return this.language === 'FR'
12664
+ ? 'Découvrez les nouveautés, améliorations et corrections.'
12665
+ : 'Discover new features, improvements and fixes.';
12666
+ }
12667
+ getTotalCount() {
12668
+ return Math.max(0, this.totalAllRecords ?? 0);
12669
+ }
12670
+ getUnreadCount() {
12671
+ if (this.totalUnreadRecords !== undefined) {
12672
+ return Math.max(0, this.totalUnreadRecords);
12673
+ }
12674
+ return this.getReleases().filter((release) => release.read !== true).length;
12675
+ }
12676
+ getReadCount() {
12677
+ if (this.totalReadRecords !== undefined) {
12678
+ return Math.max(0, this.totalReadRecords);
12679
+ }
12680
+ return this.getReleases().filter((release) => release.read === true).length;
12681
+ }
12682
+ showCounters() {
12683
+ return this.config.showHeaderCount !== false;
12684
+ }
12685
+ showPagination() {
12686
+ return this.totalRecords > 0;
12687
+ }
12688
+ getAllLabel() {
12689
+ return this.language === 'FR' ? 'Toutes' : 'All';
12690
+ }
12691
+ getUnreadLabel() {
12692
+ return this.language === 'FR' ? 'Non lues' : 'Unread';
12693
+ }
12694
+ getReadLabel() {
12695
+ return this.language === 'FR' ? 'Lues' : 'Read';
12696
+ }
12697
+ getSearchPlaceholder() {
12698
+ return this.language === 'FR'
12699
+ ? 'Rechercher une note de version...'
12700
+ : 'Search release notes...';
12701
+ }
12702
+ getEmptyText() {
12703
+ return this.resolvedConfig.emptyText;
12704
+ }
12705
+ getNoSearchResultText() {
12706
+ return this.language === 'FR'
12707
+ ? 'Aucune note de version ne correspond à votre recherche'
12708
+ : 'No release notes match your search';
12709
+ }
12710
+ getEmptyIcon() {
12711
+ return 'pi pi-sparkles';
12712
+ }
12713
+ getRowsPerPageOptions() {
12714
+ return [5, 10, 20, 50];
12715
+ }
12716
+ showCurrentPageReport() {
12717
+ return true;
12718
+ }
12719
+ getCurrentPageReportTemplate() {
12720
+ return this.language === 'FR'
12721
+ ? '{first} - {last} sur {totalRecords}'
12722
+ : '{first} - {last} of {totalRecords}';
12723
+ }
12724
+ getFirst() {
12725
+ return Math.max(0, this.page) * Math.max(1, this.rows);
12726
+ }
12727
+ hasSearch() {
12728
+ return this.searchText.trim().length > 0;
12729
+ }
12730
+ selectFilter(filter) {
12731
+ if (this.selectedFilter === filter) {
12732
+ return;
12733
+ }
12734
+ this.selectedFilter = filter;
12735
+ this.page = 0;
12736
+ this.emitQueryChange();
12737
+ }
12738
+ isFilterSelected(filter) {
12739
+ return this.selectedFilter === filter;
12740
+ }
12741
+ onSearch(value) {
12742
+ this.searchText = value ?? '';
12743
+ this.searchSubject.next(this.searchText.trim());
12744
+ }
12745
+ clearSearch() {
12746
+ if (!this.hasSearch()) {
12747
+ return;
12748
+ }
12749
+ this.searchText = '';
12750
+ this.page = 0;
12751
+ this.emitQueryChange();
12752
+ }
12753
+ onPageChange(event) {
12754
+ const nextRows = event.rows ?? this.rows;
12755
+ const nextFirst = event.first ?? 0;
12756
+ this.rows = nextRows > 0 ? nextRows : this.rows;
12757
+ this.page = this.rows > 0 ? Math.floor(nextFirst / this.rows) : 0;
12758
+ this.emitQueryChange();
12759
+ }
12760
+ getReleaseClasses(release) {
12761
+ const classes = ['pt-release-notes-page-item'];
12762
+ if (release.read !== true) {
12763
+ classes.push('unread');
12764
+ }
12765
+ if (release.disabled) {
12766
+ classes.push('disabled');
12767
+ }
12768
+ if (release.styleClass) {
12769
+ classes.push(release.styleClass);
12770
+ }
12771
+ return classes.join(' ');
12772
+ }
12773
+ getNewCount(release) {
12774
+ return release.newCount ?? 0;
12775
+ }
12776
+ getImprovementCount(release) {
12777
+ return release.improvementCount ?? 0;
12778
+ }
12779
+ getBugFixCount(release) {
12780
+ return release.bugFixCount ?? 0;
12781
+ }
12782
+ getTotalChangesCount(release) {
12783
+ return (this.getNewCount(release) +
12784
+ this.getImprovementCount(release) +
12785
+ this.getBugFixCount(release));
12786
+ }
12787
+ hasCounters(release) {
12788
+ return this.getTotalChangesCount(release) > 0;
12789
+ }
12790
+ hasNewItems(release) {
12791
+ return this.getNewCount(release) > 0;
12792
+ }
12793
+ hasImprovements(release) {
12794
+ return this.getImprovementCount(release) > 0;
12795
+ }
12796
+ hasBugFixes(release) {
12797
+ return this.getBugFixCount(release) > 0;
12798
+ }
12799
+ hasDetails(release) {
12800
+ return (release.details ?? []).length > 0;
12801
+ }
12802
+ getDetails(release) {
12803
+ return release.details ?? [];
12804
+ }
12805
+ isDetailsExpanded(release) {
12806
+ return this.expandedReleaseIds.has(String(release.id));
12807
+ }
12808
+ toggleDetails(release) {
12809
+ if (!this.hasDetails(release) || release.disabled) {
12810
+ return;
12811
+ }
12812
+ const releaseId = String(release.id);
12813
+ if (this.expandedReleaseIds.has(releaseId)) {
12814
+ this.expandedReleaseIds.delete(releaseId);
12815
+ return;
12816
+ }
12817
+ this.expandedReleaseIds.add(releaseId);
12818
+ }
12819
+ getDetailsButtonText(release) {
12820
+ return this.isDetailsExpanded(release)
12821
+ ? this.resolvedConfig.hideDetailsText
12822
+ : this.resolvedConfig.showDetailsText;
12823
+ }
12824
+ getDetailIcon(detail) {
12825
+ if (detail.icon) {
12826
+ return detail.icon;
12827
+ }
12828
+ switch (detail.type) {
12829
+ case 'NEW':
12830
+ return 'pi pi-plus-circle';
12831
+ case 'IMPROVEMENT':
12832
+ return 'pi pi-arrow-up-right';
12833
+ case 'BUG_FIX':
12834
+ return 'pi pi-wrench';
12835
+ default:
12836
+ return 'pi pi-circle';
12837
+ }
12838
+ }
12839
+ getDetailTypeLabel(detail) {
12840
+ switch (detail.type) {
12841
+ case 'NEW':
12842
+ return this.resolvedConfig.newLabel;
12843
+ case 'IMPROVEMENT':
12844
+ return this.resolvedConfig.improvementLabel;
12845
+ case 'BUG_FIX':
12846
+ return this.resolvedConfig.bugFixLabel;
12847
+ default:
12848
+ return '';
12849
+ }
12850
+ }
12851
+ getDetailClass(detail) {
12852
+ switch (detail.type) {
12853
+ case 'NEW':
12854
+ return 'new';
12855
+ case 'IMPROVEMENT':
12856
+ return 'improvement';
12857
+ case 'BUG_FIX':
12858
+ return 'bug-fix';
12859
+ default:
12860
+ return '';
12861
+ }
12862
+ }
12863
+ onDetailClick(detail, event) {
12864
+ event.stopPropagation();
12865
+ if (detail.disabled || !detail.link?.trim()) {
12866
+ return;
12867
+ }
12868
+ window.location.href = detail.link.trim();
12869
+ }
12870
+ emitQueryChange() {
12871
+ this.queryChange.emit({
12872
+ page: Math.max(0, this.page),
12873
+ size: Math.max(1, this.rows),
12874
+ first: this.getFirst(),
12875
+ filter: this.selectedFilter,
12876
+ search: this.searchText.trim(),
12877
+ });
12878
+ }
12879
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12880
+ 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", 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-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 <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 @for (detail of getDetails(release); track detail.id) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-detail\"\n [class.disabled]=\"detail.disabled\"\n [ngClass]=\"[\n getDetailClass(detail),\n detail.styleClass || '',\n ]\"\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-type\">\n {{ getDetailTypeLabel(detail) }}\n </div>\n\n <div class=\"pt-release-notes-page-detail-title\">\n {{ detail.title }}\n </div>\n\n @if (detail.description) {\n <div class=\"pt-release-notes-page-detail-description\">\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 }\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-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-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-item.unread .pt-release-notes-page-item-title{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:.35rem;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{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-type{margin-bottom:.2rem;font-size:.68rem;font-weight:700;text-transform:uppercase}.pt-release-notes-page-detail.new .pt-release-notes-page-detail-type{color:#15803d}.pt-release-notes-page-detail.improvement .pt-release-notes-page-detail-type{color:#1d4ed8}.pt-release-notes-page-detail.bug-fix .pt-release-notes-page-detail-type{color:#b91c1c}.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{flex-direction:column;align-items:stretch}.pt-release-notes-page-filters{overflow-x:auto}.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 }); }
12881
+ }
12882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesPageComponent, decorators: [{
12883
+ type: Component,
12884
+ args: [{ selector: 'pt-release-notes-page', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, 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-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 <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 @for (detail of getDetails(release); track detail.id) {\n <button\n type=\"button\"\n class=\"pt-release-notes-page-detail\"\n [class.disabled]=\"detail.disabled\"\n [ngClass]=\"[\n getDetailClass(detail),\n detail.styleClass || '',\n ]\"\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-type\">\n {{ getDetailTypeLabel(detail) }}\n </div>\n\n <div class=\"pt-release-notes-page-detail-title\">\n {{ detail.title }}\n </div>\n\n @if (detail.description) {\n <div class=\"pt-release-notes-page-detail-description\">\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 }\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-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-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-item.unread .pt-release-notes-page-item-title{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:.35rem;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{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-type{margin-bottom:.2rem;font-size:.68rem;font-weight:700;text-transform:uppercase}.pt-release-notes-page-detail.new .pt-release-notes-page-detail-type{color:#15803d}.pt-release-notes-page-detail.improvement .pt-release-notes-page-detail-type{color:#1d4ed8}.pt-release-notes-page-detail.bug-fix .pt-release-notes-page-detail-type{color:#b91c1c}.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{flex-direction:column;align-items:stretch}.pt-release-notes-page-filters{overflow-x:auto}.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"] }]
12885
+ }], ctorParameters: () => [], propDecorators: { releases: [{
12886
+ type: Input
12887
+ }], loading: [{
12888
+ type: Input
12889
+ }], totalRecords: [{
12890
+ type: Input
12891
+ }], totalAllRecords: [{
12892
+ type: Input
12893
+ }], totalUnreadRecords: [{
12894
+ type: Input
12895
+ }], totalReadRecords: [{
12896
+ type: Input
12897
+ }], page: [{
12898
+ type: Input
12899
+ }], rows: [{
12900
+ type: Input
12901
+ }], config: [{
12902
+ type: Input
12903
+ }], queryChange: [{
12904
+ type: Output
12905
+ }] } });
12906
+
12907
+ class PTReleaseNotesPageModule {
12908
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesPageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12909
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesPageModule, declarations: [PTReleaseNotesPageComponent], imports: [CommonModule, PaginatorModule], exports: [PTReleaseNotesPageComponent] }); }
12910
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesPageModule, imports: [CommonModule, PaginatorModule] }); }
12911
+ }
12912
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTReleaseNotesPageModule, decorators: [{
12913
+ type: NgModule,
12914
+ args: [{
12915
+ declarations: [PTReleaseNotesPageComponent],
12916
+ imports: [CommonModule, PaginatorModule],
12917
+ exports: [PTReleaseNotesPageComponent],
12918
+ }]
12919
+ }] });
12920
+
12276
12921
  // projects/ng-prime-tools/src/lib/models/form-multi-select.model.ts
12277
12922
 
12278
12923
  // projects/ng-prime-tools/src/lib/models/pt-accordion-config.model.ts
@@ -12339,5 +12984,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
12339
12984
  * Generated bundle index. Do not edit.
12340
12985
  */
12341
12986
 
12342
- export { AlignEnum, BadgeType, BadgeTypeStyles, ButtonColorEnum, DateUtilityService, FormInputTypeEnum, InputValidationEnum, MultiSearchCriteriaComponent, MultiSearchCriteriaModule, NgPrimeToolsModule, PTAccordionComponent, PTAccordionModule, PTAccordionPanelDirective, PTAdvancedPrimeTableComponent, PTAdvancedPrimeTableModule, PTBreadCrumbComponent, PTBreadCrumbModule, PTButtonComponent, PTButtonModule, PTCardComponent, PTCardModule, PTChangePasswordPageComponent, PTChangePasswordPageModule, PTChartComparisonComponent, PTChartComparisonModule, PTChartComponent, PTChartModule, PTCheckBoxInputComponent, PTCheckBoxInputModule, PTConfirmDialogComponent, PTConfirmDialogModule, PTDateInputComponent, PTDateInputModule, PTDialogComponent, PTDialogModule, PTDropdownComponent, PTDropdownModule, PTFooterComponent, PTFooterModule, PTFormBuilderComponent, PTFormBuilderModule, PTGroupComponent, PTGroupModule, PTLineChartComponent, PTLineChartModule, PTLoginPageComponent, PTLoginPageModule, PTMenuComponent, PTMenuFancyComponent, PTMenuFancyModule, PTMenuModule, PTMetricCardComponent, PTMetricCardGroupComponent, PTMetricCardGroupModule, PTMetricCardModule, PTMetricPanelComponent, PTMetricPanelModule, PTMultiSelectComponent, PTMultiSelectModule, PTNavbarMenuComponent, PTNavbarMenuModule, PTNewsTickerComponent, PTNewsTickerDirection, PTNewsTickerModule, PTNewsTickerTrend, PTNewsTickerType, PTNotificationComponent, PTNotificationModule, PTNotificationsPageComponent, PTNotificationsPageModule, PTNumberInputComponent, PTNumberInputModule, PTOtpInputComponent, PTOtpInputModule, PTOtpPageComponent, PTOtpPageModule, PTPageSkeletonComponent, PTPageSkeletonModule, PTPasswordInputComponent, PTPasswordInputModule, PTSideBarMenuComponent, PTSideBarMenuModule, PTSwitchInputComponent, PTSwitchInputModule, PTTextAreaInputComponent, PTTextAreaInputModule, PTTextInputComponent, PTTextInputModule, PTToastNotifierComponent, PTToastNotifierModule, SearchCriteriaTypeEnum, SeverityEnum, TableTypeEnum };
12987
+ export { AlignEnum, BadgeType, BadgeTypeStyles, ButtonColorEnum, DateUtilityService, FormInputTypeEnum, InputValidationEnum, MultiSearchCriteriaComponent, MultiSearchCriteriaModule, NgPrimeToolsModule, PTAccordionComponent, PTAccordionModule, PTAccordionPanelDirective, PTAdvancedPrimeTableComponent, PTAdvancedPrimeTableModule, PTBreadCrumbComponent, PTBreadCrumbModule, PTButtonComponent, PTButtonModule, PTCardComponent, PTCardModule, PTChangePasswordPageComponent, PTChangePasswordPageModule, PTChartComparisonComponent, PTChartComparisonModule, PTChartComponent, PTChartModule, PTCheckBoxInputComponent, PTCheckBoxInputModule, PTConfirmDialogComponent, PTConfirmDialogModule, PTDateInputComponent, PTDateInputModule, PTDialogComponent, PTDialogModule, PTDropdownComponent, PTDropdownModule, PTFooterComponent, PTFooterModule, PTFormBuilderComponent, PTFormBuilderModule, PTGroupComponent, PTGroupModule, PTLineChartComponent, PTLineChartModule, PTLoginPageComponent, PTLoginPageModule, PTMenuComponent, PTMenuFancyComponent, PTMenuFancyModule, PTMenuModule, PTMetricCardComponent, PTMetricCardGroupComponent, PTMetricCardGroupModule, PTMetricCardModule, PTMetricPanelComponent, PTMetricPanelModule, PTMultiSelectComponent, PTMultiSelectModule, PTNavbarMenuComponent, PTNavbarMenuModule, PTNewsTickerComponent, PTNewsTickerDirection, PTNewsTickerModule, PTNewsTickerTrend, PTNewsTickerType, PTNotificationComponent, PTNotificationModule, PTNotificationsPageComponent, PTNotificationsPageModule, PTNumberInputComponent, PTNumberInputModule, PTOtpInputComponent, PTOtpInputModule, PTOtpPageComponent, PTOtpPageModule, PTPageSkeletonComponent, PTPageSkeletonModule, PTPasswordInputComponent, PTPasswordInputModule, PTReleaseNotesComponent, PTReleaseNotesModule, PTReleaseNotesPageComponent, PTReleaseNotesPageModule, PTSideBarMenuComponent, PTSideBarMenuModule, PTSwitchInputComponent, PTSwitchInputModule, PTTextAreaInputComponent, PTTextAreaInputModule, PTTextInputComponent, PTTextInputModule, PTToastNotifierComponent, PTToastNotifierModule, SearchCriteriaTypeEnum, SeverityEnum, TableTypeEnum };
12343
12988
  //# sourceMappingURL=ng-prime-tools.mjs.map