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
|