@rolatech/angular-notification 17.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/esm2022/index.mjs +9 -0
- package/esm2022/lib/components/notification-detail/notification-detail.component.mjs +28 -0
- package/esm2022/lib/components/notification-icon/notification-icon.component.mjs +62 -0
- package/esm2022/lib/components/notification-index/notification-index.component.mjs +105 -0
- package/esm2022/lib/components/notification-item/notification-item.component.mjs +55 -0
- package/esm2022/lib/components/notification-layout/notification-layout.component.mjs +29 -0
- package/esm2022/lib/interfaces/notification.mjs +6 -0
- package/esm2022/lib/notification.routes.mjs +12 -0
- package/esm2022/lib/services/index.mjs +5 -0
- package/esm2022/lib/services/notification-template.service.mjs +74 -0
- package/esm2022/lib/services/notification.service.mjs +111 -0
- package/esm2022/lib/state/store.mjs +18 -0
- package/esm2022/provider.mjs +13 -0
- package/esm2022/rolatech-angular-notification.mjs +5 -0
- package/fesm2022/rolatech-angular-notification.mjs +482 -0
- package/fesm2022/rolatech-angular-notification.mjs.map +1 -0
- package/index.d.ts +8 -0
- package/lib/components/notification-detail/notification-detail.component.d.ts +15 -0
- package/lib/components/notification-icon/notification-icon.component.d.ts +19 -0
- package/lib/components/notification-index/notification-index.component.d.ts +38 -0
- package/lib/components/notification-item/notification-item.component.d.ts +13 -0
- package/lib/components/notification-layout/notification-layout.component.d.ts +10 -0
- package/lib/interfaces/notification.d.ts +13 -0
- package/lib/notification.routes.d.ts +2 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/notification-template.service.d.ts +14 -0
- package/lib/services/notification.service.d.ts +19 -0
- package/lib/state/store.d.ts +8 -0
- package/package.json +31 -0
- package/provider.d.ts +2 -0
- package/themes/_default.scss +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { NotificationIconComponent } from './lib/components/notification-icon/notification-icon.component';
|
|
2
|
+
export { NotificationDetailComponent } from './lib/components/notification-detail/notification-detail.component';
|
|
3
|
+
export { NotificationIndexComponent } from './lib/components/notification-index/notification-index.component';
|
|
4
|
+
export { NotificationItemComponent } from './lib/components/notification-item/notification-item.component';
|
|
5
|
+
export { NotificationLayoutComponent } from './lib/components/notification-layout/notification-layout.component';
|
|
6
|
+
export { NotificationService, NotificationTemplateService } from './lib/services';
|
|
7
|
+
export * from './provider';
|
|
8
|
+
export * from './lib/notification.routes';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItbm90aWZpY2F0aW9uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNqSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM5RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNqSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTm90aWZpY2F0aW9uSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWljb24vbm90aWZpY2F0aW9uLWljb24uY29tcG9uZW50JztcbmV4cG9ydCB7IE5vdGlmaWNhdGlvbkRldGFpbENvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWRldGFpbC9ub3RpZmljYXRpb24tZGV0YWlsLmNvbXBvbmVudCc7XG5leHBvcnQgeyBOb3RpZmljYXRpb25JbmRleENvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWluZGV4L25vdGlmaWNhdGlvbi1pbmRleC5jb21wb25lbnQnO1xuZXhwb3J0IHsgTm90aWZpY2F0aW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWl0ZW0vbm90aWZpY2F0aW9uLWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCB7IE5vdGlmaWNhdGlvbkxheW91dENvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWxheW91dC9ub3RpZmljYXRpb24tbGF5b3V0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlLCBOb3RpZmljYXRpb25UZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25vdGlmaWNhdGlvbi5yb3V0ZXMnO1xuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
3
|
+
import { NotificationService } from '../../services';
|
|
4
|
+
import { BaseComponent } from '@rolatech/angular-components';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class NotificationDetailComponent extends BaseComponent {
|
|
7
|
+
notificationService = inject(NotificationService);
|
|
8
|
+
snackBar = inject(MatSnackBar);
|
|
9
|
+
notification;
|
|
10
|
+
ngOnInit() {
|
|
11
|
+
this.get();
|
|
12
|
+
}
|
|
13
|
+
get() {
|
|
14
|
+
this.notificationService.get(this.id).subscribe({
|
|
15
|
+
next: (res) => {
|
|
16
|
+
this.notification = res.data;
|
|
17
|
+
this.titleService.setTitle(`通知 | ${this.notification.title}`);
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: NotificationDetailComponent, isStandalone: true, selector: "rolatech-notification-detail", usesInheritance: true, ngImport: i0, template: "@if (notification) {\n <div class=\"p-3\">\n <div class=\"text-xl\">{{ notification.title }}</div>\n <div class=\"text-md\">\n {{ notification.content }}\n </div>\n </div>\n}\n", styles: [""] });
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationDetailComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{ selector: 'rolatech-notification-detail', standalone: true, imports: [], template: "@if (notification) {\n <div class=\"p-3\">\n <div class=\"text-xl\">{{ notification.title }}</div>\n <div class=\"text-md\">\n {{ notification.content }}\n </div>\n </div>\n}\n" }]
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItbm90aWZpY2F0aW9uL3NyYy9saWIvY29tcG9uZW50cy9ub3RpZmljYXRpb24tZGV0YWlsL25vdGlmaWNhdGlvbi1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLW5vdGlmaWNhdGlvbi9zcmMvbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWRldGFpbC9ub3RpZmljYXRpb24tZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBUzdELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxhQUFhO0lBQzVELG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0IsWUFBWSxDQUFpQjtJQUM3QixRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUNELEdBQUc7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDOUMsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDaEUsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBZFUsMkJBQTJCOzJGQUEzQiwyQkFBMkIsK0dDYnhDLGtNQVFBOzsyRkRLYSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsOEJBQThCLGNBRzVCLElBQUksV0FDUCxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbm90aWZpY2F0aW9uJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLW5vdGlmaWNhdGlvbi1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vdGlmaWNhdGlvbi1kZXRhaWwuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkRldGFpbENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBub3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuICBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG4gIG5vdGlmaWNhdGlvbiE6IElOb3RpZmljYXRpb247XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0KCk7XG4gIH1cbiAgZ2V0KCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5nZXQodGhpcy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZShg6YCa55+lIHwgJHt0aGlzLm5vdGlmaWNhdGlvbi50aXRsZX1gKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIkBpZiAobm90aWZpY2F0aW9uKSB7XG4gIDxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC14bFwiPnt7IG5vdGlmaWNhdGlvbi50aXRsZSB9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kXCI+XG4gICAgICB7eyBub3RpZmljYXRpb24uY29udGVudCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Component, Input, inject } from '@angular/core';
|
|
2
|
+
import { NotificationService } from '../../services';
|
|
3
|
+
import { StoreService } from '../../state/store';
|
|
4
|
+
import { AngularCommonModule } from '@rolatech/angular-common';
|
|
5
|
+
import { AngularComponentsModule } from '@rolatech/angular-components';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/router";
|
|
8
|
+
import * as i2 from "@angular/material/badge";
|
|
9
|
+
import * as i3 from "@angular/material/button";
|
|
10
|
+
import * as i4 from "@angular/material/icon";
|
|
11
|
+
import * as i5 from "@angular/material/menu";
|
|
12
|
+
export class NotificationIconComponent {
|
|
13
|
+
router = '/notifications';
|
|
14
|
+
notifications = [];
|
|
15
|
+
notificationService = inject(NotificationService);
|
|
16
|
+
storeService = inject(StoreService);
|
|
17
|
+
count = 0;
|
|
18
|
+
countSubscription;
|
|
19
|
+
ngOnInit() {
|
|
20
|
+
this.countNotificationByStatus();
|
|
21
|
+
this.storeService.$count.subscribe((data) => {
|
|
22
|
+
this.count = data;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
ngOnDestroy() {
|
|
26
|
+
if (this.countSubscription)
|
|
27
|
+
this.countSubscription.unsubscribe();
|
|
28
|
+
}
|
|
29
|
+
countNotificationByStatus() {
|
|
30
|
+
this.notificationService.countByStatus('UNREAD').subscribe({
|
|
31
|
+
next: (res) => {
|
|
32
|
+
this.loadUnreadNotifications();
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
loadUnreadNotifications() {
|
|
37
|
+
const options = {
|
|
38
|
+
filter: 'status:UNREAD',
|
|
39
|
+
};
|
|
40
|
+
this.notificationService.me(options).subscribe({
|
|
41
|
+
next: (res) => {
|
|
42
|
+
this.notifications = res.data;
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
readAll() {
|
|
47
|
+
this.notificationService.readAll().subscribe({
|
|
48
|
+
next: (res) => {
|
|
49
|
+
this.notifications = [];
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: NotificationIconComponent, isStandalone: true, selector: "rolatech-notification-icon", inputs: { router: "router" }, ngImport: i0, template: "<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" onclick=\"this.blur()\" [matMenuTriggerFor]=\"notificationsMenu\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">notifications</mat-icon>\n </button>\n</div>\n<mat-menu #notificationsMenu=\"matMenu\" class=\"custom-menu\">\n <div class=\"flex flex-col divide-y min-w-[256px]\">\n <div class=\"h-11 px-3 flex justify-between items-center\">\n <span class=\"font-medium\">\u901A\u77E5\u6D88\u606F</span>\n @if (count) {\n <span class=\"text-sm font-medium cursor-pointer hover:underline\" (click)=\"readAll()\">\u5168\u90E8\u5DF2\u8BFB</span>\n }\n </div>\n <div>\n @if (notifications && notifications.length > 0) {\n <div class=\"divide-y\">\n @for (item of notifications; track item) {\n <div class=\"p-2 cursor-pointer hover:bg-gray-100\" [routerLink]=\"[router, item.id]\">\n <div>\n {{ item.title }}\n </div>\n <div class=\"text-sm\">\n {{ item.content }}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"h-32 flex justify-center items-center\">\u6682\u65E0\u901A\u77E5</div>\n }\n </div>\n <div class=\"h-11 flex justify-center items-center cursor-pointer hover:bg-gray-100\" [routerLink]=\"router\">\n <a class=\"flex justify-center items-center\">\n <span class=\"text-sm text-orange-600\"> \u901A\u77E5\u4E2D\u5FC3 </span>\n </a>\n </div>\n </div>\n</mat-menu>\n", styles: [":host .custom-menu>.mat-mdc-menu-content{padding:0!important}:host .mat-mdc-menu-content{padding:0!important}.mat-mdc-menu-content{padding:0!important}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "directive", type: i2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] });
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationIconComponent, decorators: [{
|
|
57
|
+
type: Component,
|
|
58
|
+
args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-notification-icon', template: "<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" onclick=\"this.blur()\" [matMenuTriggerFor]=\"notificationsMenu\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">notifications</mat-icon>\n </button>\n</div>\n<mat-menu #notificationsMenu=\"matMenu\" class=\"custom-menu\">\n <div class=\"flex flex-col divide-y min-w-[256px]\">\n <div class=\"h-11 px-3 flex justify-between items-center\">\n <span class=\"font-medium\">\u901A\u77E5\u6D88\u606F</span>\n @if (count) {\n <span class=\"text-sm font-medium cursor-pointer hover:underline\" (click)=\"readAll()\">\u5168\u90E8\u5DF2\u8BFB</span>\n }\n </div>\n <div>\n @if (notifications && notifications.length > 0) {\n <div class=\"divide-y\">\n @for (item of notifications; track item) {\n <div class=\"p-2 cursor-pointer hover:bg-gray-100\" [routerLink]=\"[router, item.id]\">\n <div>\n {{ item.title }}\n </div>\n <div class=\"text-sm\">\n {{ item.content }}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"h-32 flex justify-center items-center\">\u6682\u65E0\u901A\u77E5</div>\n }\n </div>\n <div class=\"h-11 flex justify-center items-center cursor-pointer hover:bg-gray-100\" [routerLink]=\"router\">\n <a class=\"flex justify-center items-center\">\n <span class=\"text-sm text-orange-600\"> \u901A\u77E5\u4E2D\u5FC3 </span>\n </a>\n </div>\n </div>\n</mat-menu>\n", styles: [":host .custom-menu>.mat-mdc-menu-content{padding:0!important}:host .mat-mdc-menu-content{padding:0!important}.mat-mdc-menu-content{padding:0!important}\n"] }]
|
|
59
|
+
}], propDecorators: { router: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}] } });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLW5vdGlmaWNhdGlvbi9zcmMvbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWljb24vbm90aWZpY2F0aW9uLWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLW5vdGlmaWNhdGlvbi9zcmMvbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWljb24vbm90aWZpY2F0aW9uLWljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7QUFTdkUsTUFBTSxPQUFPLHlCQUF5QjtJQUVwQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUM7SUFDMUIsYUFBYSxHQUFRLEVBQUUsQ0FBQztJQUN4QixtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNsRCxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXBDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDRixpQkFBaUIsQ0FBZ0I7SUFDekMsUUFBUTtRQUNOLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxpQkFBaUI7WUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkUsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN6RCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELHVCQUF1QjtRQUNyQixNQUFNLE9BQU8sR0FBRztZQUNkLE1BQU0sRUFBRSxlQUFlO1NBQ3hCLENBQUM7UUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM3QyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDaEMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUMzQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUMxQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0ExQ1UseUJBQXlCOzJGQUF6Qix5QkFBeUIsb0hDZnRDLHNrREFzQ0Esa05ENUJZLG1CQUFtQiwrUUFBRSx1QkFBdUI7OzJGQUszQyx5QkFBeUI7a0JBUHJDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUMsWUFDN0MsNEJBQTRCOzhCQU10QyxNQUFNO3NCQURMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zdGF0ZS9zdG9yZSc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FuZ3VsYXJDb21tb25Nb2R1bGUsIEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1ub3RpZmljYXRpb24taWNvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb24taWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vdGlmaWNhdGlvbi1pY29uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkljb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHJvdXRlciA9ICcvbm90aWZpY2F0aW9ucyc7XG4gIG5vdGlmaWNhdGlvbnM6IGFueSA9IFtdO1xuICBub3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuICBzdG9yZVNlcnZpY2UgPSBpbmplY3QoU3RvcmVTZXJ2aWNlKTtcblxuICBjb3VudCA9IDA7XG4gIHByaXZhdGUgY291bnRTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY291bnROb3RpZmljYXRpb25CeVN0YXR1cygpO1xuICAgIHRoaXMuc3RvcmVTZXJ2aWNlLiRjb3VudC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuY291bnQgPSBkYXRhO1xuICAgIH0pO1xuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmNvdW50U3Vic2NyaXB0aW9uKSB0aGlzLmNvdW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBjb3VudE5vdGlmaWNhdGlvbkJ5U3RhdHVzKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5jb3VudEJ5U3RhdHVzKCdVTlJFQUQnKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmxvYWRVbnJlYWROb3RpZmljYXRpb25zKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGxvYWRVbnJlYWROb3RpZmljYXRpb25zKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBmaWx0ZXI6ICdzdGF0dXM6VU5SRUFEJyxcbiAgICB9O1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5tZShvcHRpb25zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSByZXMuZGF0YTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgcmVhZEFsbCgpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UucmVhZEFsbCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IFtdO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInB4LTJcIj5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJmbGV4XCIgb25jbGljaz1cInRoaXMuYmx1cigpXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm5vdGlmaWNhdGlvbnNNZW51XCI+XG4gICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiBbbWF0QmFkZ2VdPVwiY291bnRcIiBbbWF0QmFkZ2VIaWRkZW5dPVwiY291bnQgPT09IDBcIj5ub3RpZmljYXRpb25zPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbjxtYXQtbWVudSAjbm90aWZpY2F0aW9uc01lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJjdXN0b20tbWVudVwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBkaXZpZGUteSBtaW4tdy1bMjU2cHhdXCI+XG4gICAgPGRpdiBjbGFzcz1cImgtMTEgcHgtMyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj7pgJrnn6Xmtojmga88L3NwYW4+XG4gICAgICBAaWYgKGNvdW50KSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bSBjdXJzb3ItcG9pbnRlciBob3Zlcjp1bmRlcmxpbmVcIiAoY2xpY2spPVwicmVhZEFsbCgpXCI+5YWo6YOo5bey6K+7PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICBAaWYgKG5vdGlmaWNhdGlvbnMgJiYgbm90aWZpY2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGUteVwiPlxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygbm90aWZpY2F0aW9uczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1ncmF5LTEwMFwiIFtyb3V0ZXJMaW5rXT1cIltyb3V0ZXIsIGl0ZW0uaWRdXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc21cIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLmNvbnRlbnQgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTMyIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+5pqC5peg6YCa55+lPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImgtMTEgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctZ3JheS0xMDBcIiBbcm91dGVyTGlua109XCJyb3V0ZXJcIj5cbiAgICAgIDxhIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIHRleHQtb3JhbmdlLTYwMFwiPiDpgJrnn6XkuK3lv4MgPC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG4iXX0=
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Component, ViewChild, inject } from '@angular/core';
|
|
2
|
+
import { NotificationService } from '../../services';
|
|
3
|
+
import { NotificationStatus } from '../../interfaces/notification';
|
|
4
|
+
import { MatPaginator } from '@angular/material/paginator';
|
|
5
|
+
import { MatTableDataSource } from '@angular/material/table';
|
|
6
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
7
|
+
import { NotificationIconComponent } from '../notification-icon/notification-icon.component';
|
|
8
|
+
import { NotificationItemComponent } from '../notification-item/notification-item.component';
|
|
9
|
+
import { AngularCommonModule } from '@rolatech/angular-common';
|
|
10
|
+
import { AngularComponentsModule } from '@rolatech/angular-components';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/material/paginator";
|
|
13
|
+
export class NotificationIndexComponent {
|
|
14
|
+
notificationService = inject(NotificationService);
|
|
15
|
+
snackBar = inject(MatSnackBar);
|
|
16
|
+
notifications = [];
|
|
17
|
+
filter = '';
|
|
18
|
+
pageEvent;
|
|
19
|
+
length = 100;
|
|
20
|
+
pageSize = 15;
|
|
21
|
+
pageSizeOptions = [5, 10, 25, 100];
|
|
22
|
+
isLoading = false;
|
|
23
|
+
isSearch = false;
|
|
24
|
+
selectedId = '';
|
|
25
|
+
notificationIconComponent = NotificationIconComponent;
|
|
26
|
+
displayedColumns = ['title', 'status', 'createdAt', 'actions'];
|
|
27
|
+
paginator;
|
|
28
|
+
orderOptions = [
|
|
29
|
+
{
|
|
30
|
+
key: 'createdAt',
|
|
31
|
+
value: '创建时间',
|
|
32
|
+
icon: 'arrow_upward',
|
|
33
|
+
sort: 'asc',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
key: 'createdAt',
|
|
37
|
+
value: '创建时间',
|
|
38
|
+
icon: 'arrow_downward',
|
|
39
|
+
sort: 'desc',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
key: 'status',
|
|
43
|
+
value: '状态',
|
|
44
|
+
icon: 'arrow_upward',
|
|
45
|
+
sort: 'asc',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
key: 'status',
|
|
49
|
+
value: '状态',
|
|
50
|
+
icon: 'arrow_downward',
|
|
51
|
+
sort: 'desc',
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
status = NotificationStatus;
|
|
55
|
+
orderString = 'createdAt desc';
|
|
56
|
+
dataSource = new MatTableDataSource();
|
|
57
|
+
ngOnInit() {
|
|
58
|
+
this.find(null);
|
|
59
|
+
}
|
|
60
|
+
find(event) {
|
|
61
|
+
this.isLoading = true;
|
|
62
|
+
const page = event ? event.pageIndex + 1 : 1;
|
|
63
|
+
const limit = event ? event.pageSize : 15;
|
|
64
|
+
const sort = this.orderString;
|
|
65
|
+
const options = {
|
|
66
|
+
page,
|
|
67
|
+
limit,
|
|
68
|
+
sort,
|
|
69
|
+
filter: this.filter,
|
|
70
|
+
};
|
|
71
|
+
this.notificationService.me(options).subscribe({
|
|
72
|
+
next: (res) => {
|
|
73
|
+
this.notifications = res.data;
|
|
74
|
+
this.dataSource.data = this.notifications;
|
|
75
|
+
this.length = res.meta.pagination.count;
|
|
76
|
+
this.isLoading = false;
|
|
77
|
+
},
|
|
78
|
+
error: (e) => {
|
|
79
|
+
this.isLoading = false;
|
|
80
|
+
this.snackBar.open(e.message);
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
read(item) {
|
|
85
|
+
this.selectedId = item.id;
|
|
86
|
+
if (item.status === 'READ') {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this.notificationService.update(item.id).subscribe({
|
|
90
|
+
next: (res) => {
|
|
91
|
+
item.status = 'READ';
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
96
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: NotificationIndexComponent, isStandalone: true, selector: "rolatech-notification-index", viewQueries: [{ propertyName: "paginator", first: true, predicate: ["paginator"], descendants: true }], ngImport: i0, template: "@if (isLoading) {\n <div style=\"height: 80%\">\n <!-- <app-loading-spinner></app-loading-spinner> -->\n </div>\n} @else {\n @for (item of notifications; track $index) {\n <div class=\"divide-y\">\n <rolatech-notification-item\n [notification]=\"item\"\n (toggle)=\"read(item)\"\n [expand]=\"item.id === selectedId\"\n ></rolatech-notification-item>\n </div>\n }\n}\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = find($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: [""], dependencies: [{ kind: "component", type: NotificationItemComponent, selector: "rolatech-notification-item", inputs: ["notification", "expand"], outputs: ["toggle"] }, { kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }] });
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationIndexComponent, decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{ selector: 'rolatech-notification-index', standalone: true, imports: [NotificationItemComponent, AngularCommonModule, AngularComponentsModule], template: "@if (isLoading) {\n <div style=\"height: 80%\">\n <!-- <app-loading-spinner></app-loading-spinner> -->\n </div>\n} @else {\n @for (item of notifications; track $index) {\n <div class=\"divide-y\">\n <rolatech-notification-item\n [notification]=\"item\"\n (toggle)=\"read(item)\"\n [expand]=\"item.id === selectedId\"\n ></rolatech-notification-item>\n </div>\n }\n}\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = find($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n" }]
|
|
101
|
+
}], propDecorators: { paginator: [{
|
|
102
|
+
type: ViewChild,
|
|
103
|
+
args: ['paginator']
|
|
104
|
+
}] } });
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWluZGV4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1ub3RpZmljYXRpb24vc3JjL2xpYi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi1pbmRleC9ub3RpZmljYXRpb24taW5kZXguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLW5vdGlmaWNhdGlvbi9zcmMvbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWluZGV4L25vdGlmaWNhdGlvbi1pbmRleC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFpQixrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVN2RSxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0IsYUFBYSxHQUFvQixFQUFFLENBQUM7SUFDcEMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNaLFNBQVMsQ0FBYTtJQUN0QixNQUFNLEdBQUcsR0FBRyxDQUFDO0lBQ2IsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLGVBQWUsR0FBYSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRTdDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBRWhCLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO0lBRXRELGdCQUFnQixHQUFhLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFekUsU0FBUyxDQUFnQjtJQUV6QixZQUFZLEdBQUc7UUFDYjtZQUNFLEdBQUcsRUFBRSxXQUFXO1lBQ2hCLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLEtBQUs7U0FDWjtRQUNEO1lBQ0UsR0FBRyxFQUFFLFdBQVc7WUFDaEIsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLElBQUksRUFBRSxNQUFNO1NBQ2I7UUFDRDtZQUNFLEdBQUcsRUFBRSxRQUFRO1lBQ2IsS0FBSyxFQUFFLElBQUk7WUFDWCxJQUFJLEVBQUUsY0FBYztZQUNwQixJQUFJLEVBQUUsS0FBSztTQUNaO1FBQ0Q7WUFDRSxHQUFHLEVBQUUsUUFBUTtZQUNiLEtBQUssRUFBRSxJQUFJO1lBQ1gsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixJQUFJLEVBQUUsTUFBTTtTQUNiO0tBQ0YsQ0FBQztJQUNGLE1BQU0sR0FBUSxrQkFBa0IsQ0FBQztJQUNqQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7SUFDL0IsVUFBVSxHQUFHLElBQUksa0JBQWtCLEVBQWlCLENBQUM7SUFDckQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksQ0FBQyxLQUF3QjtRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRztZQUNkLElBQUk7WUFDSixLQUFLO1lBQ0wsSUFBSTtZQUNKLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDN0MsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUFJLENBQUMsSUFBUztRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDM0IsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakQsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDdkIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBdkZVLDBCQUEwQjsyRkFBMUIsMEJBQTBCLCtMQ2xCdkMsMG5CQXlCQSwwRERUWSx5QkFBeUIsK0hBQUUsbUJBQW1CLDhCQUFFLHVCQUF1Qjs7MkZBRXRFLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDRSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQLENBQUMseUJBQXlCLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUM7OEJBb0JsRixTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IElOb3RpZmljYXRpb24sIE5vdGlmaWNhdGlvblN0YXR1cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbm90aWZpY2F0aW9uJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciwgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkljb25Db21wb25lbnQgfSBmcm9tICcuLi9ub3RpZmljYXRpb24taWNvbi9ub3RpZmljYXRpb24taWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi1pdGVtL25vdGlmaWNhdGlvbi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLW5vdGlmaWNhdGlvbi1pbmRleCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb24taW5kZXguY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb24taW5kZXguY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05vdGlmaWNhdGlvbkl0ZW1Db21wb25lbnQsIEFuZ3VsYXJDb21tb25Nb2R1bGUsIEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uSW5kZXhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBub3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuICBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG4gIG5vdGlmaWNhdGlvbnM6IElOb3RpZmljYXRpb25bXSA9IFtdO1xuICBmaWx0ZXIgPSAnJztcbiAgcGFnZUV2ZW50ITogUGFnZUV2ZW50O1xuICBsZW5ndGggPSAxMDA7XG4gIHBhZ2VTaXplID0gMTU7XG4gIHBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBbNSwgMTAsIDI1LCAxMDBdO1xuXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBpc1NlYXJjaCA9IGZhbHNlO1xuICBzZWxlY3RlZElkID0gJyc7XG5cbiAgbm90aWZpY2F0aW9uSWNvbkNvbXBvbmVudCA9IE5vdGlmaWNhdGlvbkljb25Db21wb25lbnQ7XG5cbiAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbJ3RpdGxlJywgJ3N0YXR1cycsICdjcmVhdGVkQXQnLCAnYWN0aW9ucyddO1xuICBAVmlld0NoaWxkKCdwYWdpbmF0b3InKVxuICBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XG5cbiAgb3JkZXJPcHRpb25zID0gW1xuICAgIHtcbiAgICAgIGtleTogJ2NyZWF0ZWRBdCcsXG4gICAgICB2YWx1ZTogJ+WIm+W7uuaXtumXtCcsXG4gICAgICBpY29uOiAnYXJyb3dfdXB3YXJkJyxcbiAgICAgIHNvcnQ6ICdhc2MnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY3JlYXRlZEF0JyxcbiAgICAgIHZhbHVlOiAn5Yib5bu65pe26Ze0JyxcbiAgICAgIGljb246ICdhcnJvd19kb3dud2FyZCcsXG4gICAgICBzb3J0OiAnZGVzYycsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdzdGF0dXMnLFxuICAgICAgdmFsdWU6ICfnirbmgIEnLFxuICAgICAgaWNvbjogJ2Fycm93X3Vwd2FyZCcsXG4gICAgICBzb3J0OiAnYXNjJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3N0YXR1cycsXG4gICAgICB2YWx1ZTogJ+eKtuaAgScsXG4gICAgICBpY29uOiAnYXJyb3dfZG93bndhcmQnLFxuICAgICAgc29ydDogJ2Rlc2MnLFxuICAgIH0sXG4gIF07XG4gIHN0YXR1czogYW55ID0gTm90aWZpY2F0aW9uU3RhdHVzO1xuICBvcmRlclN0cmluZyA9ICdjcmVhdGVkQXQgZGVzYyc7XG4gIGRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPElOb3RpZmljYXRpb24+KCk7XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmluZChudWxsKTtcbiAgfVxuXG4gIGZpbmQoZXZlbnQ/OiBQYWdlRXZlbnQgfCBudWxsKTogYW55IHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgcGFnZSA9IGV2ZW50ID8gZXZlbnQucGFnZUluZGV4ICsgMSA6IDE7XG4gICAgY29uc3QgbGltaXQgPSBldmVudCA/IGV2ZW50LnBhZ2VTaXplIDogMTU7XG4gICAgY29uc3Qgc29ydCA9IHRoaXMub3JkZXJTdHJpbmc7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHBhZ2UsXG4gICAgICBsaW1pdCxcbiAgICAgIHNvcnQsXG4gICAgICBmaWx0ZXI6IHRoaXMuZmlsdGVyLFxuICAgIH07XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLm1lKG9wdGlvbnMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMubm90aWZpY2F0aW9ucztcbiAgICAgICAgdGhpcy5sZW5ndGggPSByZXMubWV0YS5wYWdpbmF0aW9uLmNvdW50O1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oZS5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgcmVhZChpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkSWQgPSBpdGVtLmlkO1xuICAgIGlmIChpdGVtLnN0YXR1cyA9PT0gJ1JFQUQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS51cGRhdGUoaXRlbS5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgaXRlbS5zdGF0dXMgPSAnUkVBRCc7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iLCJAaWYgKGlzTG9hZGluZykge1xuICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiA4MCVcIj5cbiAgICA8IS0tIDxhcHAtbG9hZGluZy1zcGlubmVyPjwvYXBwLWxvYWRpbmctc3Bpbm5lcj4gLS0+XG4gIDwvZGl2PlxufSBAZWxzZSB7XG4gIEBmb3IgKGl0ZW0gb2Ygbm90aWZpY2F0aW9uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgPGRpdiBjbGFzcz1cImRpdmlkZS15XCI+XG4gICAgICA8cm9sYXRlY2gtbm90aWZpY2F0aW9uLWl0ZW1cbiAgICAgICAgW25vdGlmaWNhdGlvbl09XCJpdGVtXCJcbiAgICAgICAgKHRvZ2dsZSk9XCJyZWFkKGl0ZW0pXCJcbiAgICAgICAgW2V4cGFuZF09XCJpdGVtLmlkID09PSBzZWxlY3RlZElkXCJcbiAgICAgID48L3JvbGF0ZWNoLW5vdGlmaWNhdGlvbi1pdGVtPlxuICAgIDwvZGl2PlxuICB9XG59XG48bWF0LXBhZ2luYXRvclxuICAjcGFnaW5hdG9yXG4gIFtsZW5ndGhdPVwibGVuZ3RoXCJcbiAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxuICAocGFnZSk9XCJwYWdlRXZlbnQgPSBmaW5kKCRldmVudClcIlxuICBoaWRlUGFnZVNpemVcbiAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnNcbj5cbjwvbWF0LXBhZ2luYXRvcj5cbiJdfQ==
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
import { NgClass, DatePipe } from '@angular/common';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/icon";
|
|
7
|
+
export class NotificationItemComponent {
|
|
8
|
+
notification;
|
|
9
|
+
isContentHidden = true;
|
|
10
|
+
expand = false;
|
|
11
|
+
toggle = new EventEmitter();
|
|
12
|
+
toggleContent() {
|
|
13
|
+
this.isContentHidden = !this.isContentHidden;
|
|
14
|
+
}
|
|
15
|
+
onToggle(item) {
|
|
16
|
+
this.toggle.emit(item);
|
|
17
|
+
}
|
|
18
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: NotificationItemComponent, isStandalone: true, selector: "rolatech-notification-item", inputs: { notification: "notification", expand: "expand" }, outputs: { toggle: "toggle" }, ngImport: i0, template: "<div class=\"border-b\" [ngClass]=\"expand ? 'shadow shadow-light-400' : ''\">\n <div\n class=\"flex justify-between items-center h-16 cursor-pointer px-3\"\n [ngClass]=\"notification.status === 'READ' ? 'text-gray-400' : ''\"\n (click)=\"onToggle(notification)\"\n >\n <div>{{ notification.title }}</div>\n <div class=\"flex items-center opacity-60\">\n <div class=\"text-sm mr-3\">{{ notification.createdAt | date }}</div>\n <mat-icon>{{ expand ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}</mat-icon>\n </div>\n </div>\n <div\n [class.hidden]=\"!expand\"\n [@contentAnimation]=\"expand\"\n class=\"p-3\"\n [ngClass]=\"notification.status === 'READ' ? 'text-gray-400' : ''\"\n >\n {{ notification.content }}\n </div>\n <div class=\"divide\"></div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: DatePipe, name: "date" }], animations: [
|
|
20
|
+
trigger('contentAnimation', [
|
|
21
|
+
state('hidden', style({
|
|
22
|
+
height: '0',
|
|
23
|
+
opacity: 0,
|
|
24
|
+
})),
|
|
25
|
+
state('visible', style({
|
|
26
|
+
height: '*',
|
|
27
|
+
opacity: 1,
|
|
28
|
+
})),
|
|
29
|
+
transition('hidden <=> visible', animate('300ms ease-in-out')),
|
|
30
|
+
]),
|
|
31
|
+
] });
|
|
32
|
+
}
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationItemComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{ selector: 'rolatech-notification-item', animations: [
|
|
36
|
+
trigger('contentAnimation', [
|
|
37
|
+
state('hidden', style({
|
|
38
|
+
height: '0',
|
|
39
|
+
opacity: 0,
|
|
40
|
+
})),
|
|
41
|
+
state('visible', style({
|
|
42
|
+
height: '*',
|
|
43
|
+
opacity: 1,
|
|
44
|
+
})),
|
|
45
|
+
transition('hidden <=> visible', animate('300ms ease-in-out')),
|
|
46
|
+
]),
|
|
47
|
+
], standalone: true, imports: [NgClass, MatIconModule, DatePipe], template: "<div class=\"border-b\" [ngClass]=\"expand ? 'shadow shadow-light-400' : ''\">\n <div\n class=\"flex justify-between items-center h-16 cursor-pointer px-3\"\n [ngClass]=\"notification.status === 'READ' ? 'text-gray-400' : ''\"\n (click)=\"onToggle(notification)\"\n >\n <div>{{ notification.title }}</div>\n <div class=\"flex items-center opacity-60\">\n <div class=\"text-sm mr-3\">{{ notification.createdAt | date }}</div>\n <mat-icon>{{ expand ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}</mat-icon>\n </div>\n </div>\n <div\n [class.hidden]=\"!expand\"\n [@contentAnimation]=\"expand\"\n class=\"p-3\"\n [ngClass]=\"notification.status === 'READ' ? 'text-gray-400' : ''\"\n >\n {{ notification.content }}\n </div>\n <div class=\"divide\"></div>\n</div>\n" }]
|
|
48
|
+
}], propDecorators: { notification: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], expand: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], toggle: [{
|
|
53
|
+
type: Output
|
|
54
|
+
}] } });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLW5vdGlmaWNhdGlvbi9zcmMvbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWl0ZW0vbm90aWZpY2F0aW9uLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLW5vdGlmaWNhdGlvbi9zcmMvbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWl0ZW0vbm90aWZpY2F0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUE0QnBELE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsWUFBWSxDQUFpQjtJQUM3QixlQUFlLEdBQUcsSUFBSSxDQUFDO0lBRXZCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDTCxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFFckQsYUFBYTtRQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQy9DLENBQUM7SUFDRCxRQUFRLENBQUMsSUFBbUI7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQzt1R0FiVSx5QkFBeUI7MkZBQXpCLHlCQUF5QixpTENoQ3RDLDh5QkFzQkEsMEREUVksT0FBTyxtRkFBRSxhQUFhLCtLQUFFLFFBQVEsK0JBcEI5QjtZQUNWLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtnQkFDMUIsS0FBSyxDQUNILFFBQVEsRUFDUixLQUFLLENBQUM7b0JBQ0osTUFBTSxFQUFFLEdBQUc7b0JBQ1gsT0FBTyxFQUFFLENBQUM7aUJBQ1gsQ0FBQyxDQUNIO2dCQUNELEtBQUssQ0FDSCxTQUFTLEVBQ1QsS0FBSyxDQUFDO29CQUNKLE1BQU0sRUFBRSxHQUFHO29CQUNYLE9BQU8sRUFBRSxDQUFDO2lCQUNYLENBQUMsQ0FDSDtnQkFDRCxVQUFVLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDL0QsQ0FBQztTQUNIOzsyRkFJVSx5QkFBeUI7a0JBMUJyQyxTQUFTOytCQUNFLDRCQUE0QixjQUcxQjt3QkFDVixPQUFPLENBQUMsa0JBQWtCLEVBQUU7NEJBQzFCLEtBQUssQ0FDSCxRQUFRLEVBQ1IsS0FBSyxDQUFDO2dDQUNKLE1BQU0sRUFBRSxHQUFHO2dDQUNYLE9BQU8sRUFBRSxDQUFDOzZCQUNYLENBQUMsQ0FDSDs0QkFDRCxLQUFLLENBQ0gsU0FBUyxFQUNULEtBQUssQ0FBQztnQ0FDSixNQUFNLEVBQUUsR0FBRztnQ0FDWCxPQUFPLEVBQUUsQ0FBQzs2QkFDWCxDQUFDLENBQ0g7NEJBQ0QsVUFBVSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3lCQUMvRCxDQUFDO3FCQUNILGNBQ1csSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUM7OEJBSTNDLFlBQVk7c0JBRFgsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ub3RpZmljYXRpb24nO1xuaW1wb3J0IHsgdHJpZ2dlciwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCBhbmltYXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBOZ0NsYXNzLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLW5vdGlmaWNhdGlvbi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9uLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2NvbnRlbnRBbmltYXRpb24nLCBbXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgaGVpZ2h0OiAnKicsXG4gICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgdHJhbnNpdGlvbignaGlkZGVuIDw9PiB2aXNpYmxlJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbi1vdXQnKSksXG4gICAgXSksXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0NsYXNzLCBNYXRJY29uTW9kdWxlLCBEYXRlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkl0ZW1Db21wb25lbnQge1xuICBASW5wdXQoKVxuICBub3RpZmljYXRpb24hOiBJTm90aWZpY2F0aW9uO1xuICBpc0NvbnRlbnRIaWRkZW4gPSB0cnVlO1xuICBASW5wdXQoKVxuICBleHBhbmQgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8SU5vdGlmaWNhdGlvbj4oKTtcblxuICB0b2dnbGVDb250ZW50KCkge1xuICAgIHRoaXMuaXNDb250ZW50SGlkZGVuID0gIXRoaXMuaXNDb250ZW50SGlkZGVuO1xuICB9XG4gIG9uVG9nZ2xlKGl0ZW06IElOb3RpZmljYXRpb24pIHtcbiAgICB0aGlzLnRvZ2dsZS5lbWl0KGl0ZW0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYm9yZGVyLWJcIiBbbmdDbGFzc109XCJleHBhbmQgPyAnc2hhZG93IHNoYWRvdy1saWdodC00MDAnIDogJydcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGgtMTYgY3Vyc29yLXBvaW50ZXIgcHgtM1wiXG4gICAgW25nQ2xhc3NdPVwibm90aWZpY2F0aW9uLnN0YXR1cyA9PT0gJ1JFQUQnID8gJ3RleHQtZ3JheS00MDAnIDogJydcIlxuICAgIChjbGljayk9XCJvblRvZ2dsZShub3RpZmljYXRpb24pXCJcbiAgPlxuICAgIDxkaXY+e3sgbm90aWZpY2F0aW9uLnRpdGxlIH19PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG9wYWNpdHktNjBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIG1yLTNcIj57eyBub3RpZmljYXRpb24uY3JlYXRlZEF0IHwgZGF0ZSB9fTwvZGl2PlxuICAgICAgPG1hdC1pY29uPnt7IGV4cGFuZCA/ICdrZXlib2FyZF9hcnJvd191cCcgOiAna2V5Ym9hcmRfYXJyb3dfZG93bicgfX08L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIFtjbGFzcy5oaWRkZW5dPVwiIWV4cGFuZFwiXG4gICAgW0Bjb250ZW50QW5pbWF0aW9uXT1cImV4cGFuZFwiXG4gICAgY2xhc3M9XCJwLTNcIlxuICAgIFtuZ0NsYXNzXT1cIm5vdGlmaWNhdGlvbi5zdGF0dXMgPT09ICdSRUFEJyA/ICd0ZXh0LWdyYXktNDAwJyA6ICcnXCJcbiAgPlxuICAgIHt7IG5vdGlmaWNhdGlvbi5jb250ZW50IH19XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGl2aWRlXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { RouterLinkActive, RouterLink, RouterOutlet } from '@angular/router';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class NotificationLayoutComponent {
|
|
5
|
+
links = [
|
|
6
|
+
{
|
|
7
|
+
name: '全部',
|
|
8
|
+
icon: 'dashboard',
|
|
9
|
+
link: '.',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
name: '课程',
|
|
13
|
+
icon: 'category',
|
|
14
|
+
link: 'course',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: '订单',
|
|
18
|
+
icon: 'category',
|
|
19
|
+
link: 'order',
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: NotificationLayoutComponent, isStandalone: true, selector: "rolatech-notification-layout", ngImport: i0, template: "<div class=\"p-3 max-w-[1120px] m-auto\">\n <div class=\"text-3xl font-medium p-2\">\u901A\u77E5\u4E2D\u5FC3</div>\n <div class=\"flex gap-3 items-center mb-2 p-2\">\n @for (item of links; track $index) {\n <div class=\"font-medium\">\n <a\n class=\"text-gray-600 py-2\"\n [routerLink]=\"item.link\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >{{ item.name }}</a\n >\n </div>\n }\n </div>\n <div>\n <router-outlet></router-outlet>\n </div>\n</div>\n", styles: [".active{color:#000;border-bottom:4px solid #ff6600}\n"], dependencies: [{ kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationLayoutComponent, decorators: [{
|
|
26
|
+
type: Component,
|
|
27
|
+
args: [{ selector: 'rolatech-notification-layout', standalone: true, imports: [RouterLinkActive, RouterLink, RouterOutlet], template: "<div class=\"p-3 max-w-[1120px] m-auto\">\n <div class=\"text-3xl font-medium p-2\">\u901A\u77E5\u4E2D\u5FC3</div>\n <div class=\"flex gap-3 items-center mb-2 p-2\">\n @for (item of links; track $index) {\n <div class=\"font-medium\">\n <a\n class=\"text-gray-600 py-2\"\n [routerLink]=\"item.link\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >{{ item.name }}</a\n >\n </div>\n }\n </div>\n <div>\n <router-outlet></router-outlet>\n </div>\n</div>\n", styles: [".active{color:#000;border-bottom:4px solid #ff6600}\n"] }]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItbm90aWZpY2F0aW9uL3NyYy9saWIvY29tcG9uZW50cy9ub3RpZmljYXRpb24tbGF5b3V0L25vdGlmaWNhdGlvbi1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLW5vdGlmaWNhdGlvbi9zcmMvbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWxheW91dC9ub3RpZmljYXRpb24tbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFTN0UsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxLQUFLLEdBQUc7UUFDTjtZQUNFLElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLEdBQUc7U0FDVjtRQUNEO1lBQ0UsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsVUFBVTtZQUNoQixJQUFJLEVBQUUsUUFBUTtTQUNmO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxVQUFVO1lBQ2hCLElBQUksRUFBRSxPQUFPO1NBQ2Q7S0FDRixDQUFDO3VHQWpCUywyQkFBMkI7MkZBQTNCLDJCQUEyQix3RkNWeEMsMmpCQW1CQSwrR0RYWSxnQkFBZ0IsOE1BQUUsVUFBVSxvT0FBRSxZQUFZOzsyRkFFekMsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLDhCQUE4QixjQUc1QixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rQWN0aXZlLCBSb3V0ZXJMaW5rLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1ub3RpZmljYXRpb24tbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbi1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb24tbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtSb3V0ZXJMaW5rQWN0aXZlLCBSb3V0ZXJMaW5rLCBSb3V0ZXJPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25MYXlvdXRDb21wb25lbnQge1xuICBsaW5rcyA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAn5YWo6YOoJyxcbiAgICAgIGljb246ICdkYXNoYm9hcmQnLFxuICAgICAgbGluazogJy4nLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ+ivvueoiycsXG4gICAgICBpY29uOiAnY2F0ZWdvcnknLFxuICAgICAgbGluazogJ2NvdXJzZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAn6K6i5Y2VJyxcbiAgICAgIGljb246ICdjYXRlZ29yeScsXG4gICAgICBsaW5rOiAnb3JkZXInLFxuICAgIH0sXG4gIF07XG59XG4iLCI8ZGl2IGNsYXNzPVwicC0zIG1heC13LVsxMTIwcHhdIG0tYXV0b1wiPlxuICA8ZGl2IGNsYXNzPVwidGV4dC0zeGwgZm9udC1tZWRpdW0gcC0yXCI+6YCa55+l5Lit5b+DPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0zIGl0ZW1zLWNlbnRlciBtYi0yIHAtMlwiPlxuICAgIEBmb3IgKGl0ZW0gb2YgbGlua3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgPGRpdiBjbGFzcz1cImZvbnQtbWVkaXVtXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWdyYXktNjAwIHB5LTJcIlxuICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ubGlua1wiXG4gICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInsgZXhhY3Q6IHRydWUgfVwiXG4gICAgICAgICAgPnt7IGl0ZW0ubmFtZSB9fTwvYVxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2PlxuICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export var NotificationStatus;
|
|
2
|
+
(function (NotificationStatus) {
|
|
3
|
+
NotificationStatus[NotificationStatus["UNREAD"] = '未读'] = "UNREAD";
|
|
4
|
+
NotificationStatus[NotificationStatus["READ"] = '已读'] = "READ";
|
|
5
|
+
})(NotificationStatus || (NotificationStatus = {}));
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLW5vdGlmaWNhdGlvbi9zcmMvbGliL2ludGVyZmFjZXMvbm90aWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sQ0FBTixJQUFZLGtCQUdYO0FBSEQsV0FBWSxrQkFBa0I7SUFDNUIsa0RBQWMsSUFBSSxZQUFBLENBQUE7SUFDbEIsZ0RBQVksSUFBSSxVQUFBLENBQUE7QUFDbEIsQ0FBQyxFQUhXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFHN0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElOb3RpZmljYXRpb24ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBzdGF0dXM6IE5vdGlmaWNhdGlvblN0YXR1cyB8IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuZXhwb3J0IGVudW0gTm90aWZpY2F0aW9uU3RhdHVzIHtcbiAgVU5SRUFEID0gPGFueT4n5pyq6K+7JyxcbiAgUkVBRCA9IDxhbnk+J+W3suivuycsXG59XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NotificationIndexComponent } from './components/notification-index/notification-index.component';
|
|
2
|
+
import { NotificationDetailComponent } from './components/notification-detail/notification-detail.component';
|
|
3
|
+
import { NotificationLayoutComponent } from './components/notification-layout/notification-layout.component';
|
|
4
|
+
export const notificationRoutes = [
|
|
5
|
+
{
|
|
6
|
+
path: '',
|
|
7
|
+
component: NotificationLayoutComponent,
|
|
8
|
+
children: [{ path: '', component: NotificationIndexComponent }],
|
|
9
|
+
},
|
|
10
|
+
{ path: ':id', component: NotificationDetailComponent },
|
|
11
|
+
];
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1ub3RpZmljYXRpb24vc3JjL2xpYi9ub3RpZmljYXRpb24ucm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBRTdHLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFXO0lBQ3hDO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUsMkJBQTJCO1FBQ3RDLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQztLQUNoRTtJQUNELEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsMkJBQTJCLEVBQUU7Q0FDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25JbmRleENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9ub3RpZmljYXRpb24taW5kZXgvbm90aWZpY2F0aW9uLWluZGV4LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25EZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWRldGFpbC9ub3RpZmljYXRpb24tZGV0YWlsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWxheW91dC9ub3RpZmljYXRpb24tbGF5b3V0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBub3RpZmljYXRpb25Sb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICcnLFxuICAgIGNvbXBvbmVudDogTm90aWZpY2F0aW9uTGF5b3V0Q29tcG9uZW50LFxuICAgIGNoaWxkcmVuOiBbeyBwYXRoOiAnJywgY29tcG9uZW50OiBOb3RpZmljYXRpb25JbmRleENvbXBvbmVudCB9XSxcbiAgfSxcbiAgeyBwYXRoOiAnOmlkJywgY29tcG9uZW50OiBOb3RpZmljYXRpb25EZXRhaWxDb21wb25lbnQgfSxcbl07XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { NotificationTemplateService } from './notification-template.service';
|
|
2
|
+
import { NotificationService } from './notification.service';
|
|
3
|
+
export { NotificationService, NotificationTemplateService };
|
|
4
|
+
export const services = [NotificationService, NotificationTemplateService];
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItbm90aWZpY2F0aW9uL3NyYy9saWIvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFVLENBQUMsbUJBQW1CLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdGlmaWNhdGlvblRlbXBsYXRlU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXRlbXBsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlLCBOb3RpZmljYXRpb25UZW1wbGF0ZVNlcnZpY2UgfTtcbmV4cG9ydCBjb25zdCBzZXJ2aWNlczogYW55W10gPSBbTm90aWZpY2F0aW9uU2VydmljZSwgTm90aWZpY2F0aW9uVGVtcGxhdGVTZXJ2aWNlXTtcbiJdfQ==
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Injectable, inject } from '@angular/core';
|
|
3
|
+
import { APP_CONFIG } from '@rolatech/angular-common';
|
|
4
|
+
import { catchError } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class NotificationTemplateService {
|
|
7
|
+
environment = inject(APP_CONFIG);
|
|
8
|
+
http = inject(HttpClient);
|
|
9
|
+
find(options) {
|
|
10
|
+
return this.http
|
|
11
|
+
.get(`${this.environment.baseUrl}/notifications`, {
|
|
12
|
+
params: options,
|
|
13
|
+
withCredentials: true,
|
|
14
|
+
})
|
|
15
|
+
.pipe(catchError((error) => {
|
|
16
|
+
throw error;
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
me(options) {
|
|
20
|
+
return this.http
|
|
21
|
+
.get(`${this.environment.baseUrl}/notifications/me`, {
|
|
22
|
+
params: options,
|
|
23
|
+
withCredentials: true,
|
|
24
|
+
})
|
|
25
|
+
.pipe(catchError((error) => {
|
|
26
|
+
throw error;
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
get(id) {
|
|
30
|
+
return this.http
|
|
31
|
+
.get(`${this.environment.baseUrl}/notifications/${id}`, {
|
|
32
|
+
withCredentials: true,
|
|
33
|
+
})
|
|
34
|
+
.pipe(catchError((error) => {
|
|
35
|
+
throw error;
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
read(ids) {
|
|
39
|
+
return this.http
|
|
40
|
+
.get(`${this.environment.baseUrl}/notifications/${ids}`, {
|
|
41
|
+
withCredentials: true,
|
|
42
|
+
})
|
|
43
|
+
.pipe(catchError((error) => {
|
|
44
|
+
throw error;
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
delete(id) {
|
|
48
|
+
return this.http
|
|
49
|
+
.get(`${this.environment.baseUrl}/notifications/${id}`, {
|
|
50
|
+
withCredentials: true,
|
|
51
|
+
})
|
|
52
|
+
.pipe(catchError((error) => {
|
|
53
|
+
throw error;
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
findByUserId(userId) {
|
|
57
|
+
return this.http
|
|
58
|
+
.get(`${this.environment.baseUrl}/notifications/by?userId=${userId}`, {
|
|
59
|
+
withCredentials: true,
|
|
60
|
+
})
|
|
61
|
+
.pipe(catchError((error) => {
|
|
62
|
+
throw error;
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationTemplateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
66
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationTemplateService, providedIn: 'root' });
|
|
67
|
+
}
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NotificationTemplateService, decorators: [{
|
|
69
|
+
type: Injectable,
|
|
70
|
+
args: [{
|
|
71
|
+
providedIn: 'root',
|
|
72
|
+
}]
|
|
73
|
+
}] });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXRlbXBsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItbm90aWZpY2F0aW9uL3NyYy9saWIvc2VydmljZXMvbm90aWZpY2F0aW9uLXRlbXBsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUtsQyxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxQixJQUFJLENBQUMsT0FBWTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sZ0JBQWdCLEVBQUU7WUFDckQsTUFBTSxFQUFFLE9BQU87WUFDZixlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO2FBQ0QsSUFBSSxDQUNILFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFDRCxFQUFFLENBQUMsT0FBWTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sbUJBQW1CLEVBQUU7WUFDeEQsTUFBTSxFQUFFLE9BQU87WUFDZixlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO2FBQ0QsSUFBSSxDQUNILFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFDRCxHQUFHLENBQUMsRUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sa0JBQWtCLEVBQUUsRUFBRSxFQUFFO1lBQzNELGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUM7YUFDRCxJQUFJLENBQ0gsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUNELElBQUksQ0FBQyxHQUFrQjtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLGtCQUFrQixHQUFHLEVBQUUsRUFBRTtZQUM1RCxlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO2FBQ0QsSUFBSSxDQUNILFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFDRCxNQUFNLENBQUMsRUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sa0JBQWtCLEVBQUUsRUFBRSxFQUFFO1lBQzNELGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUM7YUFDRCxJQUFJLENBQ0gsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUNELFlBQVksQ0FBQyxNQUFjO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sNEJBQTRCLE1BQU0sRUFBRSxFQUFFO1lBQ3pFLGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUM7YUFDRCxJQUFJLENBQ0gsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQzt1R0F2RVUsMkJBQTJCOzJHQUEzQiwyQkFBMkIsY0FGMUIsTUFBTTs7MkZBRVAsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFQUF9DT05GSUcgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uVGVtcGxhdGVTZXJ2aWNlIHtcbiAgZW52aXJvbm1lbnQgPSBpbmplY3QoQVBQX0NPTkZJRyk7XG4gIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgZmluZChvcHRpb25zOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueT4oYCR7dGhpcy5lbnZpcm9ubWVudC5iYXNlVXJsfS9ub3RpZmljYXRpb25zYCwge1xuICAgICAgICBwYXJhbXM6IG9wdGlvbnMsXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cbiAgbWUob3B0aW9uczogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnk+KGAke3RoaXMuZW52aXJvbm1lbnQuYmFzZVVybH0vbm90aWZpY2F0aW9ucy9tZWAsIHtcbiAgICAgICAgcGFyYW1zOiBvcHRpb25zLFxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG4gIGdldChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnk+KGAke3RoaXMuZW52aXJvbm1lbnQuYmFzZVVybH0vbm90aWZpY2F0aW9ucy8ke2lkfWAsIHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuICByZWFkKGlkczogQXJyYXk8c3RyaW5nPikge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55PihgJHt0aGlzLmVudmlyb25tZW50LmJhc2VVcmx9L25vdGlmaWNhdGlvbnMvJHtpZHN9YCwge1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG4gIGRlbGV0ZShpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnk+KGAke3RoaXMuZW52aXJvbm1lbnQuYmFzZVVybH0vbm90aWZpY2F0aW9ucy8ke2lkfWAsIHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuICBmaW5kQnlVc2VySWQodXNlcklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueT4oYCR7dGhpcy5lbnZpcm9ubWVudC5iYXNlVXJsfS9ub3RpZmljYXRpb25zL2J5P3VzZXJJZD0ke3VzZXJJZH1gLCB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
|