ng-prime-tools 1.1.18 → 1.1.19

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.
@@ -11642,6 +11642,385 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
11642
11642
  }]
11643
11643
  }] });
11644
11644
 
11645
+ class PTNotificationsPageComponent {
11646
+ constructor() {
11647
+ this.notifications = [];
11648
+ this.config = {};
11649
+ this.notificationClick = new EventEmitter();
11650
+ this.action = new EventEmitter();
11651
+ this.globalAction = new EventEmitter();
11652
+ this.searchText = '';
11653
+ this.selectedFilter = 'ALL';
11654
+ this.openedActionMenuId = null;
11655
+ this.isGlobalActionMenuOpen = false;
11656
+ this.defaultActions = [
11657
+ {
11658
+ id: 'MARK_AS_READ',
11659
+ label: 'Marquer comme lue',
11660
+ icon: 'pi pi-check',
11661
+ },
11662
+ {
11663
+ id: 'DELETE',
11664
+ label: 'Supprimer',
11665
+ icon: 'pi pi-trash',
11666
+ danger: true,
11667
+ },
11668
+ ];
11669
+ this.defaultGlobalActions = [
11670
+ {
11671
+ id: 'MARK_ALL_AS_READ',
11672
+ label: 'Tout marquer comme lu',
11673
+ icon: 'pi pi-check-circle',
11674
+ },
11675
+ ];
11676
+ }
11677
+ ngOnChanges(changes) {
11678
+ if (changes['config']?.firstChange) {
11679
+ this.selectedFilter = this.config.defaultFilter ?? 'ALL';
11680
+ }
11681
+ }
11682
+ getNotifications() {
11683
+ return this.notifications ?? [];
11684
+ }
11685
+ getFilteredNotifications() {
11686
+ const search = this.searchText.trim().toLocaleLowerCase();
11687
+ return this.getNotifications()
11688
+ .filter((notification) => this.matchesFilter(notification))
11689
+ .filter((notification) => this.matchesSearch(notification, search))
11690
+ .sort((left, right) => this.toTimestamp(right.date) - this.toTimestamp(left.date));
11691
+ }
11692
+ getTotalCount() {
11693
+ return this.getNotifications().length;
11694
+ }
11695
+ getUnreadCount() {
11696
+ return this.getNotifications().filter((notification) => notification.read !== true).length;
11697
+ }
11698
+ getReadCount() {
11699
+ return this.getNotifications().filter((notification) => notification.read === true).length;
11700
+ }
11701
+ hasNotifications() {
11702
+ return this.getNotifications().length > 0;
11703
+ }
11704
+ hasFilteredNotifications() {
11705
+ return this.getFilteredNotifications().length > 0;
11706
+ }
11707
+ hasSearch() {
11708
+ return this.searchText.trim().length > 0;
11709
+ }
11710
+ showSearch() {
11711
+ return this.config.showSearch !== false;
11712
+ }
11713
+ showFilters() {
11714
+ return this.config.showFilters !== false;
11715
+ }
11716
+ showCounters() {
11717
+ return this.config.showCounters !== false;
11718
+ }
11719
+ showGlobalActions() {
11720
+ return (this.config.showGlobalActions !== false &&
11721
+ this.getGlobalActions().length > 0);
11722
+ }
11723
+ getTitle() {
11724
+ return this.config.title?.trim() || 'Notifications';
11725
+ }
11726
+ getSubtitle() {
11727
+ return this.config.subtitle?.trim() || 'Consultez toutes vos notifications';
11728
+ }
11729
+ getEmptyText() {
11730
+ return this.config.emptyText?.trim() || 'Aucune notification';
11731
+ }
11732
+ getNoSearchResultText() {
11733
+ return (this.config.noSearchResultText?.trim() ||
11734
+ 'Aucune notification ne correspond à votre recherche');
11735
+ }
11736
+ getEmptyIcon() {
11737
+ return this.config.emptyIcon?.trim() || 'pi pi-bell-slash';
11738
+ }
11739
+ getSearchPlaceholder() {
11740
+ return (this.config.searchPlaceholder?.trim() || 'Rechercher une notification...');
11741
+ }
11742
+ getAllLabel() {
11743
+ return this.config.allLabel?.trim() || 'Toutes';
11744
+ }
11745
+ getUnreadLabel() {
11746
+ return this.config.unreadLabel?.trim() || 'Non lues';
11747
+ }
11748
+ getReadLabel() {
11749
+ return this.config.readLabel?.trim() || 'Lues';
11750
+ }
11751
+ selectFilter(filter) {
11752
+ this.selectedFilter = filter;
11753
+ }
11754
+ isFilterSelected(filter) {
11755
+ return this.selectedFilter === filter;
11756
+ }
11757
+ onSearch(value) {
11758
+ this.searchText = value ?? '';
11759
+ }
11760
+ clearSearch() {
11761
+ this.searchText = '';
11762
+ }
11763
+ onNotificationClick(notification, event) {
11764
+ event.stopPropagation();
11765
+ if (notification.disabled) {
11766
+ return;
11767
+ }
11768
+ this.closeMenus();
11769
+ this.notificationClick.emit({
11770
+ notification,
11771
+ });
11772
+ }
11773
+ toggleActionMenu(notification, event) {
11774
+ event.stopPropagation();
11775
+ if (notification.disabled) {
11776
+ return;
11777
+ }
11778
+ this.isGlobalActionMenuOpen = false;
11779
+ this.openedActionMenuId =
11780
+ this.openedActionMenuId === notification.id ? null : notification.id;
11781
+ }
11782
+ onActionMenuClick(event) {
11783
+ event.stopPropagation();
11784
+ }
11785
+ onActionClick(notification, menuAction, event) {
11786
+ event.stopPropagation();
11787
+ if (notification.disabled || menuAction.disabled) {
11788
+ return;
11789
+ }
11790
+ this.action.emit({
11791
+ notification,
11792
+ action: menuAction,
11793
+ });
11794
+ this.openedActionMenuId = null;
11795
+ }
11796
+ toggleGlobalActionMenu(event) {
11797
+ event.stopPropagation();
11798
+ this.openedActionMenuId = null;
11799
+ this.isGlobalActionMenuOpen = !this.isGlobalActionMenuOpen;
11800
+ }
11801
+ onGlobalActionMenuClick(event) {
11802
+ event.stopPropagation();
11803
+ }
11804
+ onGlobalActionClick(menuAction, event) {
11805
+ event.stopPropagation();
11806
+ if (menuAction.disabled) {
11807
+ return;
11808
+ }
11809
+ this.globalAction.emit({
11810
+ action: menuAction,
11811
+ notifications: this.getNotifications(),
11812
+ });
11813
+ this.isGlobalActionMenuOpen = false;
11814
+ }
11815
+ closeMenus() {
11816
+ this.openedActionMenuId = null;
11817
+ this.isGlobalActionMenuOpen = false;
11818
+ }
11819
+ getNotificationClasses(notification) {
11820
+ const classes = ['pt-notifications-page-item'];
11821
+ if (notification.read !== true) {
11822
+ classes.push('unread');
11823
+ }
11824
+ if (notification.disabled) {
11825
+ classes.push('disabled');
11826
+ }
11827
+ if (notification.styleClass) {
11828
+ classes.push(notification.styleClass);
11829
+ }
11830
+ return classes.join(' ');
11831
+ }
11832
+ getNotificationIcon(notification) {
11833
+ return notification.icon?.trim() || 'pi pi-bell';
11834
+ }
11835
+ getNotificationIconStyles(notification) {
11836
+ return {
11837
+ color: notification.iconColor ??
11838
+ 'var(--pt-notifications-page-icon-color, #3F2564)',
11839
+ };
11840
+ }
11841
+ getActions(notification) {
11842
+ const configuredActions = notification.actions !== undefined
11843
+ ? notification.actions
11844
+ : this.defaultActions;
11845
+ return configuredActions.filter((menuAction) => {
11846
+ if (menuAction.visible === false) {
11847
+ return false;
11848
+ }
11849
+ if (menuAction.id === 'MARK_AS_READ' && notification.read === true) {
11850
+ return false;
11851
+ }
11852
+ return true;
11853
+ });
11854
+ }
11855
+ getGlobalActions() {
11856
+ const configuredActions = this.config.globalActions !== undefined
11857
+ ? this.config.globalActions
11858
+ : this.defaultGlobalActions;
11859
+ return configuredActions.filter((menuAction) => {
11860
+ if (menuAction.visible === false) {
11861
+ return false;
11862
+ }
11863
+ if (menuAction.id === 'MARK_ALL_AS_READ' && this.getUnreadCount() === 0) {
11864
+ return false;
11865
+ }
11866
+ return true;
11867
+ });
11868
+ }
11869
+ hasActions(notification) {
11870
+ return this.getActions(notification).length > 0;
11871
+ }
11872
+ isActionMenuOpen(notification) {
11873
+ return this.openedActionMenuId === notification.id;
11874
+ }
11875
+ getActionClasses(menuAction) {
11876
+ const classes = ['pt-notifications-page-action-item'];
11877
+ if (menuAction.danger) {
11878
+ classes.push('danger');
11879
+ }
11880
+ if (menuAction.disabled) {
11881
+ classes.push('disabled');
11882
+ }
11883
+ return classes.join(' ');
11884
+ }
11885
+ hasMetadata(notification) {
11886
+ return !!(notification.date || notification.sender?.trim());
11887
+ }
11888
+ getDateText(notification) {
11889
+ if (!notification.date) {
11890
+ return '';
11891
+ }
11892
+ const date = this.toDate(notification.date);
11893
+ if (!date) {
11894
+ return String(notification.date);
11895
+ }
11896
+ return this.formatRelativeDate(date);
11897
+ }
11898
+ matchesFilter(notification) {
11899
+ switch (this.selectedFilter) {
11900
+ case 'UNREAD':
11901
+ return notification.read !== true;
11902
+ case 'READ':
11903
+ return notification.read === true;
11904
+ case 'ALL':
11905
+ default:
11906
+ return true;
11907
+ }
11908
+ }
11909
+ matchesSearch(notification, search) {
11910
+ if (!search) {
11911
+ return true;
11912
+ }
11913
+ const text = notification.text?.toLocaleLowerCase() ?? '';
11914
+ const sender = notification.sender?.toLocaleLowerCase() ?? '';
11915
+ return text.includes(search) || sender.includes(search);
11916
+ }
11917
+ formatRelativeDate(date) {
11918
+ const now = new Date();
11919
+ const differenceMs = now.getTime() - date.getTime();
11920
+ if (differenceMs < 0) {
11921
+ return this.formatAbsoluteDate(date);
11922
+ }
11923
+ const differenceSeconds = Math.floor(differenceMs / 1000);
11924
+ const differenceMinutes = Math.floor(differenceSeconds / 60);
11925
+ const differenceHours = Math.floor(differenceMinutes / 60);
11926
+ const differenceDays = this.getCalendarDayDifference(now, date);
11927
+ if (differenceSeconds < 60) {
11928
+ return "À l'instant";
11929
+ }
11930
+ if (differenceMinutes < 60) {
11931
+ return `Il y a ${differenceMinutes} min`;
11932
+ }
11933
+ if (differenceDays === 0) {
11934
+ return `Il y a ${differenceHours} h`;
11935
+ }
11936
+ if (differenceDays === 1) {
11937
+ return `Hier à ${this.formatTime(date)}`;
11938
+ }
11939
+ if (differenceDays < 7) {
11940
+ return `Il y a ${differenceDays} j`;
11941
+ }
11942
+ return this.formatAbsoluteDate(date);
11943
+ }
11944
+ getCalendarDayDifference(left, right) {
11945
+ const leftDate = new Date(left.getFullYear(), left.getMonth(), left.getDate());
11946
+ const rightDate = new Date(right.getFullYear(), right.getMonth(), right.getDate());
11947
+ const millisecondsPerDay = 24 * 60 * 60 * 1000;
11948
+ return Math.round((leftDate.getTime() - rightDate.getTime()) / millisecondsPerDay);
11949
+ }
11950
+ toDate(value) {
11951
+ if (value instanceof Date) {
11952
+ return Number.isNaN(value.getTime()) ? null : value;
11953
+ }
11954
+ const normalized = value.trim();
11955
+ if (!normalized) {
11956
+ return null;
11957
+ }
11958
+ const parsedDate = new Date(normalized);
11959
+ if (!Number.isNaN(parsedDate.getTime())) {
11960
+ return parsedDate;
11961
+ }
11962
+ const match = normalized.match(/^(\d{4})-(\d{2})-(\d{2})[T\s](\d{2}):(\d{2})(?::(\d{2}))?(?:\.(\d+))?$/);
11963
+ if (!match) {
11964
+ return null;
11965
+ }
11966
+ const [, year, month, day, hour, minute, second, fraction] = match;
11967
+ const milliseconds = fraction
11968
+ ? Number(fraction.padEnd(3, '0').substring(0, 3))
11969
+ : 0;
11970
+ const date = new Date(Number(year), Number(month) - 1, Number(day), Number(hour), Number(minute), Number(second ?? 0), milliseconds);
11971
+ return Number.isNaN(date.getTime()) ? null : date;
11972
+ }
11973
+ formatAbsoluteDate(date) {
11974
+ const day = this.pad2(date.getDate());
11975
+ const month = this.pad2(date.getMonth() + 1);
11976
+ const year = date.getFullYear();
11977
+ return `${day}/${month}/${year} ${this.formatTime(date)}`;
11978
+ }
11979
+ formatTime(date) {
11980
+ return `${this.pad2(date.getHours())}:${this.pad2(date.getMinutes())}`;
11981
+ }
11982
+ pad2(value) {
11983
+ return String(value).padStart(2, '0');
11984
+ }
11985
+ toTimestamp(value) {
11986
+ if (!value) {
11987
+ return 0;
11988
+ }
11989
+ const date = this.toDate(value);
11990
+ return date ? date.getTime() : 0;
11991
+ }
11992
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11993
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PTNotificationsPageComponent, isStandalone: false, selector: "pt-notifications-page", inputs: { notifications: "notifications", config: "config" }, outputs: { notificationClick: "notificationClick", action: "action", globalAction: "globalAction" }, 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 (hasFilteredNotifications()) {\n <div class=\"pt-notifications-page-list\">\n @for (notification of getFilteredNotifications(); track notification.id) {\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</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}}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
11994
+ }
11995
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationsPageComponent, decorators: [{
11996
+ type: Component,
11997
+ args: [{ selector: 'pt-notifications-page', standalone: false, 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 (hasFilteredNotifications()) {\n <div class=\"pt-notifications-page-list\">\n @for (notification of getFilteredNotifications(); track notification.id) {\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</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}}\n"] }]
11998
+ }], propDecorators: { notifications: [{
11999
+ type: Input
12000
+ }], config: [{
12001
+ type: Input
12002
+ }], notificationClick: [{
12003
+ type: Output
12004
+ }], action: [{
12005
+ type: Output
12006
+ }], globalAction: [{
12007
+ type: Output
12008
+ }] } });
12009
+
12010
+ class PTNotificationsPageModule {
12011
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationsPageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12012
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationsPageModule, declarations: [PTNotificationsPageComponent], imports: [CommonModule], exports: [PTNotificationsPageComponent] }); }
12013
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationsPageModule, imports: [CommonModule] }); }
12014
+ }
12015
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PTNotificationsPageModule, decorators: [{
12016
+ type: NgModule,
12017
+ args: [{
12018
+ declarations: [PTNotificationsPageComponent],
12019
+ imports: [CommonModule],
12020
+ exports: [PTNotificationsPageComponent],
12021
+ }]
12022
+ }] });
12023
+
11645
12024
  // projects/ng-prime-tools/src/lib/models/form-multi-select.model.ts
11646
12025
 
11647
12026
  // projects/ng-prime-tools/src/lib/models/pt-accordion-config.model.ts
@@ -11708,5 +12087,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
11708
12087
  * Generated bundle index. Do not edit.
11709
12088
  */
11710
12089
 
11711
- 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, PTNumberInputComponent, PTNumberInputModule, PTOtpInputComponent, PTOtpInputModule, PTOtpPageComponent, PTOtpPageModule, PTPageSkeletonComponent, PTPageSkeletonModule, PTPasswordInputComponent, PTPasswordInputModule, PTSideBarMenuComponent, PTSideBarMenuModule, PTSwitchInputComponent, PTSwitchInputModule, PTTextAreaInputComponent, PTTextAreaInputModule, PTTextInputComponent, PTTextInputModule, PTToastNotifierComponent, PTToastNotifierModule, SearchCriteriaTypeEnum, SeverityEnum, TableTypeEnum };
12090
+ 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 };
11712
12091
  //# sourceMappingURL=ng-prime-tools.mjs.map