@rolatech/angular-components 17.8.0 → 19.0.0-beta.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.
Files changed (69) hide show
  1. package/fesm2022/rolatech-angular-components.mjs +232 -328
  2. package/fesm2022/rolatech-angular-components.mjs.map +1 -1
  3. package/index.d.ts +0 -1
  4. package/package.json +33 -12
  5. package/themes/_default.scss +1 -1
  6. package/esm2022/index.mjs +0 -58
  7. package/esm2022/lib/accordion/accordion.component.mjs +0 -16
  8. package/esm2022/lib/angular-components.module.mjs +0 -16
  9. package/esm2022/lib/avatar/avatar.component.mjs +0 -23
  10. package/esm2022/lib/base.component.mjs +0 -16
  11. package/esm2022/lib/chip-bar/chip-bar.component.mjs +0 -122
  12. package/esm2022/lib/confirmation-dialog/confirmation-dialog.component.mjs +0 -19
  13. package/esm2022/lib/console-layout/console-layout.component.mjs +0 -12
  14. package/esm2022/lib/container/container.component.mjs +0 -20
  15. package/esm2022/lib/container-content/container-content.component.mjs +0 -13
  16. package/esm2022/lib/content/content.component.mjs +0 -12
  17. package/esm2022/lib/drawer/drawer-animations.mjs +0 -35
  18. package/esm2022/lib/drawer/drawer.component.mjs +0 -122
  19. package/esm2022/lib/editor/editor.component.mjs +0 -61
  20. package/esm2022/lib/empty/empty.component.mjs +0 -12
  21. package/esm2022/lib/filter/filter.component.mjs +0 -12
  22. package/esm2022/lib/folder/folder.component.mjs +0 -11
  23. package/esm2022/lib/footer/footer.component.mjs +0 -24
  24. package/esm2022/lib/icon/icon.component.mjs +0 -29
  25. package/esm2022/lib/icon-button/icon-button.component.mjs +0 -17
  26. package/esm2022/lib/image/image.component.mjs +0 -28
  27. package/esm2022/lib/image-placeholder/image-placeholder.component.mjs +0 -13
  28. package/esm2022/lib/image-preview-dialog/image-preview-dialog.component.mjs +0 -51
  29. package/esm2022/lib/input/input.component.mjs +0 -16
  30. package/esm2022/lib/layout/layout-event.service.mjs +0 -22
  31. package/esm2022/lib/layout/layout.component.mjs +0 -108
  32. package/esm2022/lib/list/list.component.mjs +0 -20
  33. package/esm2022/lib/material.module.mjs +0 -238
  34. package/esm2022/lib/media-list/media-list.component.mjs +0 -24
  35. package/esm2022/lib/media-list-item/media-list-item.component.mjs +0 -27
  36. package/esm2022/lib/media-preview/media-preview.component.mjs +0 -12
  37. package/esm2022/lib/media-preview-dialog/media-preview-dialog.component.mjs +0 -51
  38. package/esm2022/lib/media-upload/media-upload.component.mjs +0 -59
  39. package/esm2022/lib/media-upload-dialog/media-upload-dialog.component.mjs +0 -91
  40. package/esm2022/lib/menu-icon/menu-icon.component.mjs +0 -16
  41. package/esm2022/lib/menu-user/menu-user.component.mjs +0 -27
  42. package/esm2022/lib/mini-guide/mini-guide.component.mjs +0 -77
  43. package/esm2022/lib/not-found/not-found.component.mjs +0 -31
  44. package/esm2022/lib/notification-icon/notification-icon.component.mjs +0 -60
  45. package/esm2022/lib/page/page.component.mjs +0 -20
  46. package/esm2022/lib/paginator/paginator.component.mjs +0 -18
  47. package/esm2022/lib/panel/panel-animations.mjs +0 -17
  48. package/esm2022/lib/panel/panel-header.component.mjs +0 -12
  49. package/esm2022/lib/panel/panel.component.mjs +0 -52
  50. package/esm2022/lib/rich-item/rich-item.component.mjs +0 -23
  51. package/esm2022/lib/rich-view/rich-view.component.mjs +0 -73
  52. package/esm2022/lib/spinner/spinner.component.mjs +0 -31
  53. package/esm2022/lib/storage-bucket-create/storage-bucket-create.component.mjs +0 -23
  54. package/esm2022/lib/storage-file-upload/storage-file-upload.component.mjs +0 -43
  55. package/esm2022/lib/storage-folder-create/storage-folder-create.component.mjs +0 -26
  56. package/esm2022/lib/tab/tab.component.mjs +0 -23
  57. package/esm2022/lib/table/table.component.mjs +0 -21
  58. package/esm2022/lib/tabs/tabs.component.mjs +0 -64
  59. package/esm2022/lib/thumbnail/thumbnail.component.mjs +0 -46
  60. package/esm2022/lib/title/title.component.mjs +0 -19
  61. package/esm2022/lib/toolbar/toolbar.component.mjs +0 -31
  62. package/esm2022/lib/topbar/topbar.component.mjs +0 -50
  63. package/esm2022/lib/topbar-avatar-menu/topbar-avatar-menu.component.mjs +0 -33
  64. package/esm2022/lib/wechat-connect-dialog/wechat-connect-dialog.component.mjs +0 -44
  65. package/esm2022/provider.mjs +0 -12
  66. package/esm2022/rolatech-angular-components.mjs +0 -5
  67. package/lib/container-content/container-content.component.d.ts +0 -5
  68. package/lib/layout/layout-event.service.d.ts +0 -9
  69. package/lib/notification-icon/notification-icon.component.d.ts +0 -18
@@ -1,12 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import * as i0 from "@angular/core";
4
- export class MediaPreviewComponent {
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MediaPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: MediaPreviewComponent, isStandalone: true, selector: "rolatech-media-preview", ngImport: i0, template: "<p>media-preview works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
7
- }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MediaPreviewComponent, decorators: [{
9
- type: Component,
10
- args: [{ selector: 'rolatech-media-preview', standalone: true, imports: [CommonModule], template: "<p>media-preview works!</p>\n" }]
11
- }] });
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLXByZXZpZXcvbWVkaWEtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLXByZXZpZXcvbWVkaWEtcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFTL0MsTUFBTSxPQUFPLHFCQUFxQjt1R0FBckIscUJBQXFCOzJGQUFyQixxQkFBcUIsa0ZDVmxDLCtCQUNBLHlEREtZLFlBQVk7OzJGQUlYLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1tZWRpYS1wcmV2aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWRpYS1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21lZGlhLXByZXZpZXcuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBNZWRpYVByZXZpZXdDb21wb25lbnQge31cbiIsIjxwPm1lZGlhLXByZXZpZXcgd29ya3MhPC9wPlxuIl19
@@ -1,51 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
- import { MatButtonModule } from '@angular/material/button';
4
- import { MatDividerModule } from '@angular/material/divider';
5
- import { MatIconModule } from '@angular/material/icon';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/material/dialog";
8
- import * as i2 from "@angular/material/icon";
9
- import * as i3 from "@angular/material/divider";
10
- import * as i4 from "@angular/material/button";
11
- export class MediaPreviewDialogComponent {
12
- data;
13
- dialogRef;
14
- selected;
15
- index = 0;
16
- prevDisabled = false;
17
- nextDisabled = false;
18
- constructor(data, dialogRef) {
19
- this.data = data;
20
- this.dialogRef = dialogRef;
21
- this.data.title = '图片预览';
22
- }
23
- ngOnInit() {
24
- this.selected = this.data.selected;
25
- this.prevDisabled = this.selected === 0;
26
- this.nextDisabled = this.selected === this.data.media.length - 1;
27
- }
28
- close() {
29
- this.dialogRef.close();
30
- }
31
- prev() {
32
- this.selected--;
33
- this.prevDisabled = this.selected === 0;
34
- this.nextDisabled = this.selected === this.data.media.length - 1;
35
- }
36
- next() {
37
- this.selected++;
38
- this.prevDisabled = this.selected === 0;
39
- this.nextDisabled = this.selected === this.data.media.length - 1;
40
- }
41
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MediaPreviewDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
42
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: MediaPreviewDialogComponent, isStandalone: true, selector: "rolatech-media-preview-dialog", ngImport: i0, template: "<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden overflow-y-auto\">\n <div class=\"p-3 flex justify-center items-center\">\n <img class=\"object-cover\" [src]=\"data.media[selected].url\" alt />\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-between items-center px-5\">\n <button mat-flat-button [disabled]=\"prevDisabled\" (click)=\"prev()\">Prev</button>\n <div>{{ selected + 1 }} / {{ data.media.length }}</div>\n <button mat-flat-button [disabled]=\"nextDisabled\" (click)=\"next()\">Next</button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] });
43
- }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MediaPreviewDialogComponent, decorators: [{
45
- type: Component,
46
- args: [{ selector: 'rolatech-media-preview-dialog', standalone: true, imports: [MatIconModule, MatDividerModule, MatButtonModule], template: "<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden overflow-y-auto\">\n <div class=\"p-3 flex justify-center items-center\">\n <img class=\"object-cover\" [src]=\"data.media[selected].url\" alt />\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-between items-center px-5\">\n <button mat-flat-button [disabled]=\"prevDisabled\" (click)=\"prev()\">Prev</button>\n <div>{{ selected + 1 }} / {{ data.media.length }}</div>\n <button mat-flat-button [disabled]=\"nextDisabled\" (click)=\"next()\">Next</button>\n </div>\n</div>\n" }]
47
- }], ctorParameters: () => [{ type: undefined, decorators: [{
48
- type: Inject,
49
- args: [MAT_DIALOG_DATA]
50
- }] }, { type: i1.MatDialogRef }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcHJldmlldy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9tZWRpYS1wcmV2aWV3LWRpYWxvZy9tZWRpYS1wcmV2aWV3LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLXByZXZpZXctZGlhbG9nL21lZGlhLXByZXZpZXctZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBU3ZELE1BQU0sT0FBTywyQkFBMkI7SUFNSjtJQUN4QjtJQU5WLFFBQVEsQ0FBTTtJQUNkLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDVixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsWUFDa0MsSUFBUyxFQUNqQyxTQUFvRDtRQUQ1QixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQTJDO1FBRTVELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUk7UUFDRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBSTtRQUNGLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7dUdBN0JVLDJCQUEyQixrQkFNNUIsZUFBZTsyRkFOZCwyQkFBMkIseUZDYnhDLDQ2QkFzQkEseUREWFksYUFBYSxtTEFBRSxnQkFBZ0Isa0lBQUUsZUFBZTs7MkZBRS9DLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSwrQkFBK0IsY0FHN0IsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsQ0FBQzs7MEJBUXhELE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLW1lZGlhLXByZXZpZXctZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lZGlhLXByZXZpZXctZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVkaWEtcHJldmlldy1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIE1hdERpdmlkZXJNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhUHJldmlld0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNlbGVjdGVkOiBhbnk7XG4gIGluZGV4ID0gMDtcbiAgcHJldkRpc2FibGVkID0gZmFsc2U7XG4gIG5leHREaXNhYmxlZCA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE1lZGlhUHJldmlld0RpYWxvZ0NvbXBvbmVudD4sXG4gICkge1xuICAgIHRoaXMuZGF0YS50aXRsZSA9ICflm77niYfpooTop4gnO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuZGF0YS5zZWxlY3RlZDtcbiAgICB0aGlzLnByZXZEaXNhYmxlZCA9IHRoaXMuc2VsZWN0ZWQgPT09IDA7XG4gICAgdGhpcy5uZXh0RGlzYWJsZWQgPSB0aGlzLnNlbGVjdGVkID09PSB0aGlzLmRhdGEubWVkaWEubGVuZ3RoIC0gMTtcbiAgfVxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9XG4gIHByZXYoKSB7XG4gICAgdGhpcy5zZWxlY3RlZC0tO1xuICAgIHRoaXMucHJldkRpc2FibGVkID0gdGhpcy5zZWxlY3RlZCA9PT0gMDtcbiAgICB0aGlzLm5leHREaXNhYmxlZCA9IHRoaXMuc2VsZWN0ZWQgPT09IHRoaXMuZGF0YS5tZWRpYS5sZW5ndGggLSAxO1xuICB9XG4gIG5leHQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCsrO1xuICAgIHRoaXMucHJldkRpc2FibGVkID0gdGhpcy5zZWxlY3RlZCA9PT0gMDtcbiAgICB0aGlzLm5leHREaXNhYmxlZCA9IHRoaXMuc2VsZWN0ZWQgPT09IHRoaXMuZGF0YS5tZWRpYS5sZW5ndGggLSAxO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBoLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDxkaXYgY2xhc3M9XCJoLTE2IGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBweC01XCI+XG4gICAgQGlmIChkYXRhLnRpdGxlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBmb250LW1lZGl1bVwiPnt7IGRhdGEudGl0bGUgfX08L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIDxtYXQtaWNvbiBmb250SWNvbj1cImNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8ZGl2IGNsYXNzPVwiZmxleC0xIG92ZXJmbG93LWhpZGRlbiBvdmVyZmxvdy15LWF1dG9cIj5cbiAgICA8ZGl2IGNsYXNzPVwicC0zIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW1nIGNsYXNzPVwib2JqZWN0LWNvdmVyXCIgW3NyY109XCJkYXRhLm1lZGlhW3NlbGVjdGVkXS51cmxcIiBhbHQgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8ZGl2IGNsYXNzPVwiaC0xNiBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcHgtNVwiPlxuICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIFtkaXNhYmxlZF09XCJwcmV2RGlzYWJsZWRcIiAoY2xpY2spPVwicHJldigpXCI+UHJldjwvYnV0dG9uPlxuICAgIDxkaXY+e3sgc2VsZWN0ZWQgKyAxIH19IC8ge3sgZGF0YS5tZWRpYS5sZW5ndGggfX08L2Rpdj5cbiAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBbZGlzYWJsZWRdPVwibmV4dERpc2FibGVkXCIgKGNsaWNrKT1cIm5leHQoKVwiPk5leHQ8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,59 +0,0 @@
1
- import { Component, inject, input, output } from '@angular/core';
2
- import { MatDialog } from '@angular/material/dialog';
3
- import { AngularCommonModule } from '@rolatech/angular-common';
4
- import { MediaPreviewDialogComponent } from '../media-preview-dialog/media-preview-dialog.component';
5
- import { AngularComponentsModule } from '../angular-components.module';
6
- import { SpinnerComponent } from '../spinner/spinner.component';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/material/button";
9
- import * as i2 from "@angular/material/icon";
10
- export class MediaUploadComponent {
11
- title = input('上传图片');
12
- subtitle = input('文件大小');
13
- description = input('不能超过5MB');
14
- isUploading = input(false);
15
- mediaItemClick = output();
16
- upload = output();
17
- media = [];
18
- dialog = inject(MatDialog);
19
- onMediaItemClick(item) {
20
- this.mediaItemClick.emit(item);
21
- }
22
- onMediaClick(i) {
23
- const dialogRef = this.dialog.open(MediaPreviewDialogComponent, {
24
- maxWidth: '80vw',
25
- maxHeight: '80vh',
26
- height: '80%',
27
- width: '80%',
28
- panelClass: 'full-screen-modal',
29
- data: {
30
- media: this.media,
31
- selected: i,
32
- },
33
- });
34
- dialogRef.afterClosed().subscribe((result) => { });
35
- }
36
- onUpload(event) {
37
- const file = event.target.files[0];
38
- if (file) {
39
- const reader = new FileReader();
40
- reader.readAsDataURL(file);
41
- reader.onload = () => {
42
- this.media.push({
43
- url: reader.result,
44
- alt: 'upload image',
45
- });
46
- const formData = new FormData();
47
- formData.append('file', file);
48
- this.upload.emit(formData);
49
- };
50
- }
51
- }
52
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MediaUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
53
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: MediaUploadComponent, isStandalone: true, selector: "rolatech-media-upload", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, isUploading: { classPropertyName: "isUploading", publicName: "isUploading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mediaItemClick: "mediaItemClick", upload: "upload" }, ngImport: i0, template: "<div class=\"bg-[--rt-raised-background] rounded p-6 min-h-[320px] flex items-center justify-center\">\n @if (isUploading()) {\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"p-3\">\n <mat-icon>upload</mat-icon>\n </div>\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"font-lg font-bold py-3\">{{ title() }}</div>\n <div class=\"font-sm text-[--rt-text-secondary]\">{{ subtitle() }}</div>\n <div class=\"font-sm text-[--rt-text-secondary]\">{{ description() }}</div>\n </div>\n <div class=\"py-2\">\n <input style=\"display: none\" type=\"file\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button color=\"primary\" (click)=\"fileInput.click()\">\u4E0A\u4F20\u56FE\u7247</button>\n </div>\n </div>\n } @else {\n <rolatech-spinner title=\"\u4E0A\u4F20\u4E2D\"></rolatech-spinner>\n }\n</div>\n<div class=\"flex flex-row\">\n @for (media of media; track $index) {\n <div (click)=\"onMediaClick($index)\" class=\"inline-flex flex-row mt-3 mr-3 cursor-pointer rounded-md\">\n <img class=\"rounded-md aspect-video object-cover w-32\" [src]=\"media.url\" alt />\n </div>\n }\n</div>\n", styles: [".mat-icon{transform:scale(2)}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }] });
54
- }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MediaUploadComponent, decorators: [{
56
- type: Component,
57
- args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule, SpinnerComponent], selector: 'rolatech-media-upload', template: "<div class=\"bg-[--rt-raised-background] rounded p-6 min-h-[320px] flex items-center justify-center\">\n @if (isUploading()) {\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"p-3\">\n <mat-icon>upload</mat-icon>\n </div>\n <div class=\"flex flex-col items-center justify-center\">\n <div class=\"font-lg font-bold py-3\">{{ title() }}</div>\n <div class=\"font-sm text-[--rt-text-secondary]\">{{ subtitle() }}</div>\n <div class=\"font-sm text-[--rt-text-secondary]\">{{ description() }}</div>\n </div>\n <div class=\"py-2\">\n <input style=\"display: none\" type=\"file\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button color=\"primary\" (click)=\"fileInput.click()\">\u4E0A\u4F20\u56FE\u7247</button>\n </div>\n </div>\n } @else {\n <rolatech-spinner title=\"\u4E0A\u4F20\u4E2D\"></rolatech-spinner>\n }\n</div>\n<div class=\"flex flex-row\">\n @for (media of media; track $index) {\n <div (click)=\"onMediaClick($index)\" class=\"inline-flex flex-row mt-3 mr-3 cursor-pointer rounded-md\">\n <img class=\"rounded-md aspect-video object-cover w-32\" [src]=\"media.url\" alt />\n </div>\n }\n</div>\n", styles: [".mat-icon{transform:scale(2)}\n"] }]
58
- }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvbWVkaWEtdXBsb2FkL21lZGlhLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLXVwbG9hZC9tZWRpYS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFTLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDckcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFTaEUsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixLQUFLLEdBQUcsS0FBSyxDQUFTLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLFFBQVEsR0FBRyxLQUFLLENBQVMsTUFBTSxDQUFDLENBQUM7SUFDakMsV0FBVyxHQUFHLEtBQUssQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUN2QyxXQUFXLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRXBDLGNBQWMsR0FBRyxNQUFNLEVBQVMsQ0FBQztJQUNqQyxNQUFNLEdBQUcsTUFBTSxFQUFtQixDQUFDO0lBRW5DLEtBQUssR0FBWSxFQUFFLENBQUM7SUFDcEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUzQixnQkFBZ0IsQ0FBQyxJQUFXO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxZQUFZLENBQUMsQ0FBTTtRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUM5RCxRQUFRLEVBQUUsTUFBTTtZQUNoQixTQUFTLEVBQUUsTUFBTTtZQUNqQixNQUFNLEVBQUUsS0FBSztZQUNiLEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixJQUFJLEVBQUU7Z0JBQ0osS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixRQUFRLEVBQUUsQ0FBQzthQUNaO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxLQUFhLENBQUMsSUFBSSxDQUFDO29CQUN2QixHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU07b0JBQ2xCLEdBQUcsRUFBRSxjQUFjO2lCQUNwQixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO3VHQTVDVSxvQkFBb0I7MkZBQXBCLG9CQUFvQiwycUJDZGpDLGl1Q0EyQkEsd0ZEbEJZLG1CQUFtQiw4QkFBRSx1QkFBdUIsaVhBQUUsZ0JBQWdCOzsyRkFLN0Qsb0JBQW9CO2tCQVBoQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixDQUFDLFlBQy9ELHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQW5ndWxhckNvbW1vbk1vZHVsZSwgTWVkaWEgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgTWVkaWFQcmV2aWV3RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vbWVkaWEtcHJldmlldy1kaWFsb2cvbWVkaWEtcHJldmlldy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlIH0gZnJvbSAnLi4vYW5ndWxhci1jb21wb25lbnRzLm1vZHVsZSc7XG5pbXBvcnQgeyBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQW5ndWxhckNvbW1vbk1vZHVsZSwgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsIFNwaW5uZXJDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLW1lZGlhLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWRpYS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZWRpYS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVkaWFVcGxvYWRDb21wb25lbnQge1xuICB0aXRsZSA9IGlucHV0PHN0cmluZz4oJ+S4iuS8oOWbvueJhycpO1xuICBzdWJ0aXRsZSA9IGlucHV0PHN0cmluZz4oJ+aWh+S7tuWkp+WwjycpO1xuICBkZXNjcmlwdGlvbiA9IGlucHV0PHN0cmluZz4oJ+S4jeiDvei2hei/hzVNQicpO1xuICBpc1VwbG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBtZWRpYUl0ZW1DbGljayA9IG91dHB1dDxNZWRpYT4oKTtcbiAgdXBsb2FkID0gb3V0cHV0PEZvcm1EYXRhIHwgbnVsbD4oKTtcblxuICBtZWRpYTogTWVkaWFbXSA9IFtdO1xuICBkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcblxuICBvbk1lZGlhSXRlbUNsaWNrKGl0ZW06IE1lZGlhKSB7XG4gICAgdGhpcy5tZWRpYUl0ZW1DbGljay5lbWl0KGl0ZW0pO1xuICB9XG4gIG9uTWVkaWFDbGljayhpOiBhbnkpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE1lZGlhUHJldmlld0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgbWF4V2lkdGg6ICc4MHZ3JyxcbiAgICAgIG1heEhlaWdodDogJzgwdmgnLFxuICAgICAgaGVpZ2h0OiAnODAlJyxcbiAgICAgIHdpZHRoOiAnODAlJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdmdWxsLXNjcmVlbi1tb2RhbCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIG1lZGlhOiB0aGlzLm1lZGlhLFxuICAgICAgICBzZWxlY3RlZDogaSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHt9KTtcbiAgfVxuICBvblVwbG9hZChldmVudDogYW55KSB7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgKHRoaXMubWVkaWEgYXMgYW55KS5wdXNoKHtcbiAgICAgICAgICB1cmw6IHJlYWRlci5yZXN1bHQsXG4gICAgICAgICAgYWx0OiAndXBsb2FkIGltYWdlJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgICAgICB0aGlzLnVwbG9hZC5lbWl0KGZvcm1EYXRhKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYmctWy0tcnQtcmFpc2VkLWJhY2tncm91bmRdIHJvdW5kZWQgcC02IG1pbi1oLVszMjBweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgQGlmIChpc1VwbG9hZGluZygpKSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XG4gICAgICAgIDxtYXQtaWNvbj51cGxvYWQ8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtbGcgZm9udC1ib2xkIHB5LTNcIj57eyB0aXRsZSgpIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNtIHRleHQtWy0tcnQtdGV4dC1zZWNvbmRhcnldXCI+e3sgc3VidGl0bGUoKSB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zbSB0ZXh0LVstLXJ0LXRleHQtc2Vjb25kYXJ5XVwiPnt7IGRlc2NyaXB0aW9uKCkgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInB5LTJcIj5cbiAgICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJvblVwbG9hZCgkZXZlbnQpXCIgI2ZpbGVJbnB1dCAvPlxuICAgICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj7kuIrkvKDlm77niYc8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgICA8cm9sYXRlY2gtc3Bpbm5lciB0aXRsZT1cIuS4iuS8oOS4rVwiPjwvcm9sYXRlY2gtc3Bpbm5lcj5cbiAgfVxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICBAZm9yIChtZWRpYSBvZiBtZWRpYTsgdHJhY2sgJGluZGV4KSB7XG4gICAgPGRpdiAoY2xpY2spPVwib25NZWRpYUNsaWNrKCRpbmRleClcIiBjbGFzcz1cImlubGluZS1mbGV4IGZsZXgtcm93IG10LTMgbXItMyBjdXJzb3ItcG9pbnRlciByb3VuZGVkLW1kXCI+XG4gICAgICA8aW1nIGNsYXNzPVwicm91bmRlZC1tZCBhc3BlY3QtdmlkZW8gb2JqZWN0LWNvdmVyIHctMzJcIiBbc3JjXT1cIm1lZGlhLnVybFwiIGFsdCAvPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -1,91 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MatDialogRef, MAT_DIALOG_DATA, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';
3
- import { MediaService } from '@rolatech/angular-services';
4
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
5
- import { NgClass } from '@angular/common';
6
- import { MatButtonModule } from '@angular/material/button';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/material/dialog";
9
- import * as i2 from "@rolatech/angular-services";
10
- import * as i3 from "@angular/material/button";
11
- import * as i4 from "@angular/material/progress-spinner";
12
- export class MediaUploadDialogComponent {
13
- dialogRef;
14
- data;
15
- mediaService;
16
- fileData;
17
- progressInfos = [];
18
- media = [];
19
- preMedia = [];
20
- isFinished = false;
21
- isUploaded = false;
22
- constructor(dialogRef, data, mediaService) {
23
- this.dialogRef = dialogRef;
24
- this.data = data;
25
- this.mediaService = mediaService;
26
- }
27
- ngOnInit() { }
28
- selectFiles(event) {
29
- this.isFinished = false;
30
- for (const file of event.target.files) {
31
- this.addImage(file);
32
- }
33
- event.target.value = '';
34
- }
35
- addImage(file) {
36
- const reader = new FileReader();
37
- reader.readAsDataURL(file);
38
- reader.onload = () => {
39
- this.preMedia.push({
40
- url: reader.result,
41
- alt: 'upload image',
42
- isUploading: false,
43
- isUploaded: false,
44
- file: file,
45
- });
46
- };
47
- reader.onerror = (error) => { };
48
- }
49
- removeImage(index) {
50
- this.preMedia.splice(index, 1);
51
- }
52
- uploadFiles() {
53
- for (let i = 0; i < this.preMedia.length; i++) {
54
- if (!this.preMedia[i].isUploaded) {
55
- this.upload(i, this.preMedia[i].file);
56
- }
57
- }
58
- }
59
- upload(idx, file) {
60
- this.progressInfos[idx] = { value: 0, fileName: file.name };
61
- const formData = new FormData();
62
- formData.append('file', file);
63
- this.preMedia[idx].isUploading = true;
64
- formData.append('groupId', this.data.groupId);
65
- this.mediaService.uploadAndSave(formData).subscribe({
66
- next: (res) => {
67
- this.media.push(res.data);
68
- this.preMedia[idx].isUploading = false;
69
- this.preMedia[idx].isUploaded = true;
70
- this.progressInfos[idx].value = 100;
71
- const tmp = this.progressInfos.filter((item) => item.value !== 100);
72
- if (tmp.length <= 0) {
73
- this.isFinished = true;
74
- }
75
- },
76
- error: (error) => {
77
- this.progressInfos[idx].value = 0;
78
- },
79
- });
80
- }
81
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MediaUploadDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.MediaService }], target: i0.ɵɵFactoryTarget.Component });
82
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: MediaUploadDialogComponent, isStandalone: true, selector: "rolatech-media-upload-dialog", ngImport: i0, template: "<mat-dialog-content>\n <div class=\"border-dashed border-2 border-[--rt-border-color] py-12 flex flex-col justify-center items-center\">\n <input #fileInput multiple class=\"hidden\" type=\"file\" (change)=\"selectFiles($event)\" />\n <button mat-button (click)=\"fileInput.click()\">\u4E0A\u4F20\u56FE\u7247</button>\n </div>\n <div class=\"mt-4\">\n <h2 class=\"\">\u9884\u89C8</h2>\n <div>\n <ul id=\"gallery\" class=\"flex flex-1 flex-wrap -m-1\">\n @for (item of preMedia; track item.url; let i = $index) {\n <li class=\"block p-1 w-1/2 sm:w-1/3 md:w-1/4 lg:w-1/6 xl:w-1/8 h-24\">\n <article\n tabindex=\"0\"\n [ngClass]=\"item.isUploading ? 'isUploading' : ''\"\n class=\"group hasImage w-full h-full rounded-md focus:outline-none focus:shadow-outline bg-[--rt-raised-background] cursor-pointer relative text-transparent hover:text-white shadow-sm\"\n >\n <img [src]=\"item.url\" class=\"img-preview w-full h-full sticky object-cover rounded-md bg-fixed\" alt />\n <section class=\"flex flex-col rounded-md text-xs break-words w-full h-full z-20 absolute top-0 py-2 px-3\">\n @if (item.isUploading) {\n <div class=\"flex justify-center items-center w-full h-full\">\n <mat-spinner color=\"white\" diameter=\"28\"></mat-spinner>\n </div>\n } @else {\n <div class=\"flex\">\n <button\n (click)=\"removeImage(i)\"\n class=\"delete ml-auto focus:outline-none hover:bg-[--rt-base-background] p-1 rounded-md\"\n >\n <svg\n class=\"pointer-events-none fill-current w-4 h-4 ml-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n class=\"pointer-events-none\"\n d=\"M3 6l3 18h12l3-18h-18zm19-4v2h-20v-2h5.711c.9 0 1.631-1.099 1.631-2h5.316c0 .901.73 2 1.631 2h5.711z\"\n />\n </svg>\n </button>\n </div>\n }\n </section>\n </article>\n </li>\n }\n </ul>\n </div>\n @if (preMedia.length <= 0) {\n <div class=\"flex flex-1 flex-wrap\">\n <div class=\"h-full w-full text-center flex flex-col justify-center items-center py-6\">\n <span class=\"text-small text-[--rt-text-secondary]\">No files selected</span>\n </div>\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close>\u53D6\u6D88</button>\n @if (preMedia.length <= 0) {\n <button mat-button>\u7B49\u5F85\u9009\u62E9</button>\n }\n @if (!isFinished && preMedia.length > 0) {\n <button mat-button (click)=\"uploadFiles()\">\u7ACB\u523B\u4E0A\u4F20</button>\n }\n @if (isFinished) {\n <button mat-button [mat-dialog-close]=\"media\">\u5B8C\u6210</button>\n }\n</mat-dialog-actions>\n", styles: [".hasImage:hover section{background-color:#05050566}.hasImage:hover button:hover{background:#05050573}.isUploading section{background-color:#05050566}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
83
- }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MediaUploadDialogComponent, decorators: [{
85
- type: Component,
86
- args: [{ selector: 'rolatech-media-upload-dialog', standalone: true, imports: [MatDialogContent, MatButtonModule, NgClass, MatProgressSpinnerModule, MatDialogActions, MatDialogClose], template: "<mat-dialog-content>\n <div class=\"border-dashed border-2 border-[--rt-border-color] py-12 flex flex-col justify-center items-center\">\n <input #fileInput multiple class=\"hidden\" type=\"file\" (change)=\"selectFiles($event)\" />\n <button mat-button (click)=\"fileInput.click()\">\u4E0A\u4F20\u56FE\u7247</button>\n </div>\n <div class=\"mt-4\">\n <h2 class=\"\">\u9884\u89C8</h2>\n <div>\n <ul id=\"gallery\" class=\"flex flex-1 flex-wrap -m-1\">\n @for (item of preMedia; track item.url; let i = $index) {\n <li class=\"block p-1 w-1/2 sm:w-1/3 md:w-1/4 lg:w-1/6 xl:w-1/8 h-24\">\n <article\n tabindex=\"0\"\n [ngClass]=\"item.isUploading ? 'isUploading' : ''\"\n class=\"group hasImage w-full h-full rounded-md focus:outline-none focus:shadow-outline bg-[--rt-raised-background] cursor-pointer relative text-transparent hover:text-white shadow-sm\"\n >\n <img [src]=\"item.url\" class=\"img-preview w-full h-full sticky object-cover rounded-md bg-fixed\" alt />\n <section class=\"flex flex-col rounded-md text-xs break-words w-full h-full z-20 absolute top-0 py-2 px-3\">\n @if (item.isUploading) {\n <div class=\"flex justify-center items-center w-full h-full\">\n <mat-spinner color=\"white\" diameter=\"28\"></mat-spinner>\n </div>\n } @else {\n <div class=\"flex\">\n <button\n (click)=\"removeImage(i)\"\n class=\"delete ml-auto focus:outline-none hover:bg-[--rt-base-background] p-1 rounded-md\"\n >\n <svg\n class=\"pointer-events-none fill-current w-4 h-4 ml-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n class=\"pointer-events-none\"\n d=\"M3 6l3 18h12l3-18h-18zm19-4v2h-20v-2h5.711c.9 0 1.631-1.099 1.631-2h5.316c0 .901.73 2 1.631 2h5.711z\"\n />\n </svg>\n </button>\n </div>\n }\n </section>\n </article>\n </li>\n }\n </ul>\n </div>\n @if (preMedia.length <= 0) {\n <div class=\"flex flex-1 flex-wrap\">\n <div class=\"h-full w-full text-center flex flex-col justify-center items-center py-6\">\n <span class=\"text-small text-[--rt-text-secondary]\">No files selected</span>\n </div>\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close>\u53D6\u6D88</button>\n @if (preMedia.length <= 0) {\n <button mat-button>\u7B49\u5F85\u9009\u62E9</button>\n }\n @if (!isFinished && preMedia.length > 0) {\n <button mat-button (click)=\"uploadFiles()\">\u7ACB\u523B\u4E0A\u4F20</button>\n }\n @if (isFinished) {\n <button mat-button [mat-dialog-close]=\"media\">\u5B8C\u6210</button>\n }\n</mat-dialog-actions>\n", styles: [".hasImage:hover section{background-color:#05050566}.hasImage:hover button:hover{background:#05050573}.isUploading section{background-color:#05050566}\n"] }]
87
- }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
88
- type: Inject,
89
- args: [MAT_DIALOG_DATA]
90
- }] }, { type: i2.MediaService }] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLXVwbG9hZC1kaWFsb2cvbWVkaWEtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLXVwbG9hZC1kaWFsb2cvbWVkaWEtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUk3SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBZTNELE1BQU0sT0FBTywwQkFBMEI7SUFVNUI7SUFDeUI7SUFDeEI7SUFYVixRQUFRLENBQU07SUFDZCxhQUFhLEdBQVEsRUFBRSxDQUFDO0lBQ3hCLEtBQUssR0FBWSxFQUFFLENBQUM7SUFDcEIsUUFBUSxHQUFlLEVBQUUsQ0FBQztJQUMxQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5CLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbkIsWUFDUyxTQUFtRCxFQUMxQixJQUFTLEVBQ2pDLFlBQTBCO1FBRjNCLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBQzFCLFNBQUksR0FB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Q0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixDQUFDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDcEMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBdkVVLDBCQUEwQiw4Q0FXM0IsZUFBZTsyRkFYZCwwQkFBMEIsd0ZDeEJ2QywydEdBc0VBLGlORGhEWSxnQkFBZ0Isd0dBQUUsZUFBZSw0TkFBRSxPQUFPLG1GQUFFLHdCQUF3QixtT0FBRSxnQkFBZ0IsNEhBQUUsY0FBYzs7MkZBRXJHLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDRSw4QkFBOEIsY0FHNUIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLENBQUM7OzBCQWE5RyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBIdHRwRXZlbnRUeXBlLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyByZW1vdmUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWVkaWEgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5leHBvcnQgaW50ZXJmYWNlIFByZU1lZGlhIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGFsdDogc3RyaW5nO1xuICBpc1VwbG9hZGluZzogYm9vbGVhbjtcbiAgaXNVcGxvYWRlZDogYm9vbGVhbjtcbiAgZmlsZTogRmlsZTtcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLW1lZGlhLXVwbG9hZC1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lZGlhLXVwbG9hZC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdERpYWxvZ0NvbnRlbnQsIE1hdEJ1dHRvbk1vZHVsZSwgTmdDbGFzcywgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLCBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhVXBsb2FkRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZmlsZURhdGE6IGFueTtcbiAgcHJvZ3Jlc3NJbmZvczogYW55ID0gW107XG4gIG1lZGlhOiBNZWRpYVtdID0gW107XG4gIHByZU1lZGlhOiBQcmVNZWRpYVtdID0gW107XG4gIGlzRmluaXNoZWQgPSBmYWxzZTtcblxuICBpc1VwbG9hZGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE1lZGlhVXBsb2FkRGlhbG9nQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHNlbGVjdEZpbGVzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmlzRmluaXNoZWQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZXZlbnQudGFyZ2V0LmZpbGVzKSB7XG4gICAgICB0aGlzLmFkZEltYWdlKGZpbGUpO1xuICAgIH1cbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuICBhZGRJbWFnZShmaWxlOiBhbnkpIHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAodGhpcy5wcmVNZWRpYSBhcyBhbnkpLnB1c2goe1xuICAgICAgICB1cmw6IHJlYWRlci5yZXN1bHQsXG4gICAgICAgIGFsdDogJ3VwbG9hZCBpbWFnZScsXG4gICAgICAgIGlzVXBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgaXNVcGxvYWRlZDogZmFsc2UsXG4gICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICB9KTtcbiAgICB9O1xuICAgIHJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiB7fTtcbiAgfVxuICByZW1vdmVJbWFnZShpbmRleDogYW55KSB7XG4gICAgdGhpcy5wcmVNZWRpYS5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG4gIHVwbG9hZEZpbGVzKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wcmVNZWRpYS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCF0aGlzLnByZU1lZGlhW2ldLmlzVXBsb2FkZWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWQoaSwgdGhpcy5wcmVNZWRpYVtpXS5maWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdXBsb2FkKGlkeDogYW55LCBmaWxlOiBhbnkpIHtcbiAgICB0aGlzLnByb2dyZXNzSW5mb3NbaWR4XSA9IHsgdmFsdWU6IDAsIGZpbGVOYW1lOiBmaWxlLm5hbWUgfTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgIHRoaXMucHJlTWVkaWFbaWR4XS5pc1VwbG9hZGluZyA9IHRydWU7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdncm91cElkJywgdGhpcy5kYXRhLmdyb3VwSWQpO1xuXG4gICAgdGhpcy5tZWRpYVNlcnZpY2UudXBsb2FkQW5kU2F2ZShmb3JtRGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm1lZGlhLnB1c2gocmVzLmRhdGEpO1xuICAgICAgICB0aGlzLnByZU1lZGlhW2lkeF0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wcmVNZWRpYVtpZHhdLmlzVXBsb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnByb2dyZXNzSW5mb3NbaWR4XS52YWx1ZSA9IDEwMDtcblxuICAgICAgICBjb25zdCB0bXAgPSB0aGlzLnByb2dyZXNzSW5mb3MuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0udmFsdWUgIT09IDEwMCk7XG4gICAgICAgIGlmICh0bXAubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICB0aGlzLmlzRmluaXNoZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NJbmZvc1tpZHhdLnZhbHVlID0gMDtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJib3JkZXItZGFzaGVkIGJvcmRlci0yIGJvcmRlci1bLS1ydC1ib3JkZXItY29sb3JdIHB5LTEyIGZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gICAgPGlucHV0ICNmaWxlSW5wdXQgbXVsdGlwbGUgY2xhc3M9XCJoaWRkZW5cIiB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwic2VsZWN0RmlsZXMoJGV2ZW50KVwiIC8+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPuS4iuS8oOWbvueJhzwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm10LTRcIj5cbiAgICA8aDIgY2xhc3M9XCJcIj7pooTop4g8L2gyPlxuICAgIDxkaXY+XG4gICAgICA8dWwgaWQ9XCJnYWxsZXJ5XCIgY2xhc3M9XCJmbGV4IGZsZXgtMSBmbGV4LXdyYXAgLW0tMVwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIHByZU1lZGlhOyB0cmFjayBpdGVtLnVybDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICA8bGkgY2xhc3M9XCJibG9jayBwLTEgdy0xLzIgc206dy0xLzMgbWQ6dy0xLzQgbGc6dy0xLzYgeGw6dy0xLzggaC0yNFwiPlxuICAgICAgICAgICAgPGFydGljbGVcbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5pc1VwbG9hZGluZyA/ICdpc1VwbG9hZGluZycgOiAnJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAgaGFzSW1hZ2Ugdy1mdWxsIGgtZnVsbCByb3VuZGVkLW1kIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpzaGFkb3ctb3V0bGluZSBiZy1bLS1ydC1yYWlzZWQtYmFja2dyb3VuZF0gY3Vyc29yLXBvaW50ZXIgcmVsYXRpdmUgdGV4dC10cmFuc3BhcmVudCBob3Zlcjp0ZXh0LXdoaXRlIHNoYWRvdy1zbVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLnVybFwiIGNsYXNzPVwiaW1nLXByZXZpZXcgdy1mdWxsIGgtZnVsbCBzdGlja3kgb2JqZWN0LWNvdmVyIHJvdW5kZWQtbWQgYmctZml4ZWRcIiBhbHQgLz5cbiAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJvdW5kZWQtbWQgdGV4dC14cyBicmVhay13b3JkcyB3LWZ1bGwgaC1mdWxsIHotMjAgYWJzb2x1dGUgdG9wLTAgcHktMiBweC0zXCI+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLmlzVXBsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdy1mdWxsIGgtZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgY29sb3I9XCJ3aGl0ZVwiIGRpYW1ldGVyPVwiMjhcIj48L21hdC1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUltYWdlKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRlbGV0ZSBtbC1hdXRvIGZvY3VzOm91dGxpbmUtbm9uZSBob3ZlcjpiZy1bLS1ydC1iYXNlLWJhY2tncm91bmRdIHAtMSByb3VuZGVkLW1kXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9pbnRlci1ldmVudHMtbm9uZSBmaWxsLWN1cnJlbnQgdy00IGgtNCBtbC1hdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNmwzIDE4aDEybDMtMThoLTE4em0xOS00djJoLTIwdi0yaDUuNzExYy45IDAgMS42MzEtMS4wOTkgMS42MzEtMmg1LjMxNmMwIC45MDEuNzMgMiAxLjYzMSAyaDUuNzExelwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gICAgQGlmIChwcmVNZWRpYS5sZW5ndGggPD0gMCkge1xuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC0xIGZsZXgtd3JhcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctZnVsbCB0ZXh0LWNlbnRlciBmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBweS02XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtYWxsIHRleHQtWy0tcnQtdGV4dC1zZWNvbmRhcnldXCI+Tm8gZmlsZXMgc2VsZWN0ZWQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuPG1hdC1kaWFsb2ctYWN0aW9ucyBhbGlnbj1cImVuZFwiPlxuICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT7lj5bmtog8L2J1dHRvbj5cbiAgQGlmIChwcmVNZWRpYS5sZW5ndGggPD0gMCkge1xuICAgIDxidXR0b24gbWF0LWJ1dHRvbj7nrYnlvoXpgInmi6k8L2J1dHRvbj5cbiAgfVxuICBAaWYgKCFpc0ZpbmlzaGVkICYmIHByZU1lZGlhLmxlbmd0aCA+IDApIHtcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInVwbG9hZEZpbGVzKClcIj7nq4vliLvkuIrkvKA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKGlzRmluaXNoZWQpIHtcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwibWVkaWFcIj7lrozmiJA8L2J1dHRvbj5cbiAgfVxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
@@ -1,16 +0,0 @@
1
- import { Component, HostBinding, ViewEncapsulation } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import * as i0 from "@angular/core";
4
- export class MenuIconComponent {
5
- hasClass = true;
6
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MenuIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: MenuIconComponent, isStandalone: true, selector: "rolatech-menu-icon", host: { properties: { "class.rolatech-icon-button": "this.hasClass" } }, ngImport: i0, template: "<button\n id=\"button\"\n class=\"w-10 h-10 p-2 inline-block relative cursor-pointer hover:bg-[--rt-10-percent-layer] rounded-full rolatech-icon-button\"\n onclick=\"this.blur()\"\n>\n <div style=\"width: 100%; height: 100%; display: block; fill: currentcolor\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n focusable=\"false\"\n style=\"pointer-events: none; display: inherit; width: 100%; height: 100%\"\n >\n <path d=\"M21 6H3V5h18v1zm0 5H3v1h18v-1zm0 6H3v1h18v-1z\"></path>\n </svg>\n </div>\n</button>\n", styles: ["rolatech-menu-icon{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MenuIconComponent, decorators: [{
10
- type: Component,
11
- args: [{ selector: 'rolatech-menu-icon', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<button\n id=\"button\"\n class=\"w-10 h-10 p-2 inline-block relative cursor-pointer hover:bg-[--rt-10-percent-layer] rounded-full rolatech-icon-button\"\n onclick=\"this.blur()\"\n>\n <div style=\"width: 100%; height: 100%; display: block; fill: currentcolor\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n focusable=\"false\"\n style=\"pointer-events: none; display: inherit; width: 100%; height: 100%\"\n >\n <path d=\"M21 6H3V5h18v1zm0 5H3v1h18v-1zm0 6H3v1h18v-1z\"></path>\n </svg>\n </div>\n</button>\n", styles: ["rolatech-menu-icon{display:block}\n"] }]
12
- }], propDecorators: { hasClass: [{
13
- type: HostBinding,
14
- args: ['class.rolatech-icon-button']
15
- }] } });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pY29uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvbWVudS1pY29uL21lbnUtaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lbnUtaWNvbi9tZW51LWljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVUvQyxNQUFNLE9BQU8saUJBQWlCO0lBQ2UsUUFBUSxHQUFHLElBQUksQ0FBQzt1R0FEaEQsaUJBQWlCOzJGQUFqQixpQkFBaUIsdUpDWDlCLHltQkFrQkEsNEZEWlksWUFBWTs7MkZBS1gsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsaUJBR1IsaUJBQWlCLENBQUMsSUFBSTs4QkFHTSxRQUFRO3NCQUFsRCxXQUFXO3VCQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1tZW51LWljb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUtaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9tZW51LWljb24uY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNZW51SWNvbkNvbXBvbmVudCB7XG4gIEBIb3N0QmluZGluZygnY2xhc3Mucm9sYXRlY2gtaWNvbi1idXR0b24nKSBoYXNDbGFzcyA9IHRydWU7XG59XG4iLCI8YnV0dG9uXG4gIGlkPVwiYnV0dG9uXCJcbiAgY2xhc3M9XCJ3LTEwIGgtMTAgcC0yIGlubGluZS1ibG9jayByZWxhdGl2ZSBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1bLS1ydC0xMC1wZXJjZW50LWxheWVyXSByb3VuZGVkLWZ1bGwgcm9sYXRlY2gtaWNvbi1idXR0b25cIlxuICBvbmNsaWNrPVwidGhpcy5ibHVyKClcIlxuPlxuICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgZGlzcGxheTogYmxvY2s7IGZpbGw6IGN1cnJlbnRjb2xvclwiPlxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICB3aWR0aD1cIjI0XCJcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmU7IGRpc3BsYXk6IGluaGVyaXQ7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMjEgNkgzVjVoMTh2MXptMCA1SDN2MWgxOHYtMXptMCA2SDN2MWgxOHYtMXpcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gIDwvZGl2PlxuPC9idXR0b24+XG4iXX0=
@@ -1,27 +0,0 @@
1
- import { Component, ViewEncapsulation, computed, inject, input } from '@angular/core';
2
- import { MatIconModule } from '@angular/material/icon';
3
- import { MatMenuModule } from '@angular/material/menu';
4
- import { APP_CONFIG } from '@rolatech/angular-common';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/menu";
7
- import * as i2 from "@angular/material/icon";
8
- export class MenuUserComponent {
9
- environment = inject(APP_CONFIG);
10
- myaccountUrl = this.environment.myaccountUrl;
11
- user = input();
12
- avatar = computed(() => {
13
- return this.user().avatar;
14
- });
15
- constructor() {
16
- // effect(() => {
17
- // this.data = this.user();
18
- // });
19
- }
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MenuUserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: MenuUserComponent, isStandalone: true, selector: "rolatech-menu-user", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"min-w-[256px]\">\n @if (user()) {\n <div class=\"px-6 py-3\">\n <div class=\"flex flex-row items-center\">\n <div class=\"mr-3 w-14 h-14 rounded-full bg-[--rt-brand-color]\">\n @if (user().avatar) {\n <img [src]=\"user().avatar\" class=\"w-14 h-14 object-cover rounded-full\" alt />\n }\n </div>\n <div class=\"flex flex-col\">\n <div>\n <div class=\"text-lg font-bold\">{{ user().name }}</div>\n <div class=\"formated-string\">\n <span>&#64;{{ user().username }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <div class=\"flex justify-between items-center\">\n <a mat-menu-item [href]=\"myaccountUrl\" target=\"_blank\" class=\"px-6\">\n <span class=\"flex justify-between items-center\">\n <span class=\"pl-2\"> \u7528\u6237\u4E2D\u5FC3 </span>\n <span class=\"flex\"> <mat-icon>open_in_new</mat-icon></span>\n </span>\n </a>\n </div>\n</div>\n", styles: ["rolatech-menu-user{background-color:var(--rt-menu-background, #fff);color:var(--rt-text-primary, #000)}.formated-string{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MenuUserComponent, decorators: [{
24
- type: Component,
25
- args: [{ standalone: true, imports: [MatMenuModule, MatIconModule], selector: 'rolatech-menu-user', encapsulation: ViewEncapsulation.None, template: "<div class=\"min-w-[256px]\">\n @if (user()) {\n <div class=\"px-6 py-3\">\n <div class=\"flex flex-row items-center\">\n <div class=\"mr-3 w-14 h-14 rounded-full bg-[--rt-brand-color]\">\n @if (user().avatar) {\n <img [src]=\"user().avatar\" class=\"w-14 h-14 object-cover rounded-full\" alt />\n }\n </div>\n <div class=\"flex flex-col\">\n <div>\n <div class=\"text-lg font-bold\">{{ user().name }}</div>\n <div class=\"formated-string\">\n <span>&#64;{{ user().username }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <div class=\"flex justify-between items-center\">\n <a mat-menu-item [href]=\"myaccountUrl\" target=\"_blank\" class=\"px-6\">\n <span class=\"flex justify-between items-center\">\n <span class=\"pl-2\"> \u7528\u6237\u4E2D\u5FC3 </span>\n <span class=\"flex\"> <mat-icon>open_in_new</mat-icon></span>\n </span>\n </a>\n </div>\n</div>\n", styles: ["rolatech-menu-user{background-color:var(--rt-menu-background, #fff);color:var(--rt-text-primary, #000)}.formated-string{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}\n"] }]
26
- }], ctorParameters: () => [] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS11c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvbWVudS11c2VyL21lbnUtdXNlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lbnUtdXNlci9tZW51LXVzZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQWV0RCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDO0lBQzdDLElBQUksR0FBRyxLQUFLLEVBQWtCLENBQUM7SUFDL0IsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0g7UUFDRSxpQkFBaUI7UUFDakIsNkJBQTZCO1FBQzdCLE1BQU07SUFDUixDQUFDO3VHQVhVLGlCQUFpQjsyRkFBakIsaUJBQWlCLCtNQ2xCOUIsc2hDQThCQSxzVERsQlksYUFBYSxrTEFBRSxhQUFhOzsyRkFNM0IsaUJBQWlCO2tCQVI3QixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsWUFDN0Isb0JBQW9CLGlCQUdmLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBtb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgQVBQX0NPTkZJRyB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5leHBvcnQgaW50ZXJmYWNlIE1lbnVVc2VyIHtcbiAgbmFtZTogc3RyaW5nO1xuICBhdmF0YXI6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgdXNlcm5hbWU6IHN0cmluZztcbn1cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTWF0TWVudU1vZHVsZSwgTWF0SWNvbk1vZHVsZV0sXG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtbWVudS11c2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUtdXNlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lbnUtdXNlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNZW51VXNlckNvbXBvbmVudCB7XG4gIGVudmlyb25tZW50ID0gaW5qZWN0KEFQUF9DT05GSUcpO1xuICBteWFjY291bnRVcmwgPSB0aGlzLmVudmlyb25tZW50Lm15YWNjb3VudFVybDtcbiAgdXNlciA9IGlucHV0PE1lbnVVc2VyIHwgYW55PigpO1xuICBhdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMudXNlcigpLmF2YXRhcjtcbiAgfSk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIGVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICB0aGlzLmRhdGEgPSB0aGlzLnVzZXIoKTtcbiAgICAvLyB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1pbi13LVsyNTZweF1cIj5cbiAgQGlmICh1c2VyKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwicHgtNiBweS0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yLTMgdy0xNCBoLTE0IHJvdW5kZWQtZnVsbCBiZy1bLS1ydC1icmFuZC1jb2xvcl1cIj5cbiAgICAgICAgICBAaWYgKHVzZXIoKS5hdmF0YXIpIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJ1c2VyKCkuYXZhdGFyXCIgY2xhc3M9XCJ3LTE0IGgtMTQgb2JqZWN0LWNvdmVyIHJvdW5kZWQtZnVsbFwiIGFsdCAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZFwiPnt7IHVzZXIoKS5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybWF0ZWQtc3RyaW5nXCI+XG4gICAgICAgICAgICAgIDxzcGFuPiYjNjQ7e3sgdXNlcigpLnVzZXJuYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cblxuICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgPGEgbWF0LW1lbnUtaXRlbSBbaHJlZl09XCJteWFjY291bnRVcmxcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInB4LTZcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPiDnlKjmiLfkuK3lv4MgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXhcIj4gPG1hdC1pY29uPm9wZW5faW5fbmV3PC9tYXQtaWNvbj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,77 +0,0 @@
1
- import { Component, ElementRef, PLATFORM_ID, Renderer2, ViewEncapsulation, inject, input } from '@angular/core';
2
- import { CommonModule, isPlatformBrowser } from '@angular/common';
3
- import { IconButtonComponent } from '../icon-button/icon-button.component';
4
- import { IconComponent } from '../icon/icon.component';
5
- import { RouterLink, RouterLinkActive } from '@angular/router';
6
- import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
7
- import * as i0 from "@angular/core";
8
- export class MiniGuideComponent {
9
- el = inject(ElementRef);
10
- renderer = inject(Renderer2);
11
- platformId = inject(PLATFORM_ID);
12
- breakpointObserver = inject(BreakpointObserver);
13
- items = input();
14
- title = input(true);
15
- opened = false;
16
- disableToggle = false;
17
- breakpoint$ = this.breakpointObserver.observe([Breakpoints.Large, Breakpoints.Medium, '(max-width: 768px)']);
18
- ngOnInit() {
19
- if (isPlatformBrowser(this.platformId)) {
20
- this.renderer.setAttribute(this.el.nativeElement, 'hidden', '');
21
- this.breakpoint$.subscribe(() => this.breakpointChanged());
22
- }
23
- }
24
- breakpointChanged() {
25
- if (this.breakpointObserver.isMatched(Breakpoints.Large)) {
26
- this.disableToggle = false;
27
- // this.renderer.removeAttribute(this.el.nativeElement, 'mini-guide-visible');
28
- // this.renderer.setAttribute(this.el.nativeElement, 'hidden', '');
29
- }
30
- else if (this.breakpointObserver.isMatched(Breakpoints.Medium)) {
31
- // this.renderer.setAttribute(this.el.nativeElement, 'mini-guide-visible', '');
32
- // this.renderer.removeAttribute(this.el.nativeElement, 'hidden');
33
- }
34
- else if (this.breakpointObserver.isMatched('(max-width: 768px)')) {
35
- this.renderer.removeAttribute(this.el.nativeElement, 'mini-guide-visible');
36
- this.renderer.setAttribute(this.el.nativeElement, 'hidden', '');
37
- this.disableToggle = true;
38
- }
39
- else {
40
- this.disableToggle = false;
41
- // this.renderer.setAttribute(this.el.nativeElement, 'mini-guide-visible', '');
42
- // this.renderer.removeAttribute(this.el.nativeElement, 'hidden');
43
- }
44
- }
45
- open() {
46
- this.opened = true;
47
- this.renderer.setAttribute(this.el.nativeElement, 'mini-guide-visible', '');
48
- this.renderer.removeAttribute(this.el.nativeElement, 'hidden');
49
- }
50
- close() {
51
- this.opened = false;
52
- this.renderer.removeAttribute(this.el.nativeElement, 'mini-guide-visible');
53
- this.renderer.setAttribute(this.el.nativeElement, 'hidden', '');
54
- }
55
- toggle() {
56
- if (this.disableToggle) {
57
- this.close();
58
- return;
59
- }
60
- if (this.opened) {
61
- this.close();
62
- }
63
- else {
64
- this.open();
65
- }
66
- }
67
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MiniGuideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: MiniGuideComponent, isStandalone: true, selector: "rolatech-mini-guide", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "id": "rolatech-mini-guide" }, classAttribute: "rolatech-mini-guide" }, ngImport: i0, template: "<div id=\"items\" class=\"w-16 mt-[6px]\" style=\"transition-duration: 200ms\">\n @for (item of items(); track $index) {\n <div>\n <a\n id=\"min-guide-endpoint\"\n [routerLink]=\"item.link\"\n routerLinkActive=\"min-guide-active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n #routerLink=\"routerLinkActive\"\n class=\"flex flex-col justify-center items-center py-3 rt-guide-entry\"\n >\n <rolatech-icon [filled]=\"routerLink.isActive\">{{ item.icon }}</rolatech-icon>\n @if (title()) {\n <span class=\"text-xs mt-1 max-w-full truncate\">{{ item.title }}</span>\n }\n </a>\n </div>\n }\n</div>\n", styles: ["rolatech-mini-guide{position:fixed;left:0;top:var(--rt-toolbar-height, 56px);bottom:0;width:var(--rt-mini-guide-width, 72px);box-sizing:border-box;display:inline-block;background-color:var(--rt-base-background, #fff);color:var(--rt-text-primary, #000);z-index:2028;padding:0 4px;scrollbar-width:none;overflow:scroll}.min-guide-active{background-color:#0000000d;border-radius:8px;font-weight:500}#min-guide-endpoint.rt-guide-entry:hover{background-color:var(--rt-drawer-active-background-color);border-radius:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IconComponent, selector: "rolatech-icon", inputs: ["filled"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
69
- }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MiniGuideComponent, decorators: [{
71
- type: Component,
72
- args: [{ selector: 'rolatech-mini-guide', standalone: true, imports: [CommonModule, IconButtonComponent, IconComponent, RouterLink, RouterLinkActive], encapsulation: ViewEncapsulation.None, host: {
73
- id: 'rolatech-mini-guide',
74
- class: 'rolatech-mini-guide',
75
- }, template: "<div id=\"items\" class=\"w-16 mt-[6px]\" style=\"transition-duration: 200ms\">\n @for (item of items(); track $index) {\n <div>\n <a\n id=\"min-guide-endpoint\"\n [routerLink]=\"item.link\"\n routerLinkActive=\"min-guide-active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n #routerLink=\"routerLinkActive\"\n class=\"flex flex-col justify-center items-center py-3 rt-guide-entry\"\n >\n <rolatech-icon [filled]=\"routerLink.isActive\">{{ item.icon }}</rolatech-icon>\n @if (title()) {\n <span class=\"text-xs mt-1 max-w-full truncate\">{{ item.title }}</span>\n }\n </a>\n </div>\n }\n</div>\n", styles: ["rolatech-mini-guide{position:fixed;left:0;top:var(--rt-toolbar-height, 56px);bottom:0;width:var(--rt-mini-guide-width, 72px);box-sizing:border-box;display:inline-block;background-color:var(--rt-base-background, #fff);color:var(--rt-text-primary, #000);z-index:2028;padding:0 4px;scrollbar-width:none;overflow:scroll}.min-guide-active{background-color:#0000000d;border-radius:8px;font-weight:500}#min-guide-endpoint.rt-guide-entry:hover{background-color:var(--rt-drawer-active-background-color);border-radius:10px}\n"] }]
76
- }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaS1ndWlkZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21pbmktZ3VpZGUvbWluaS1ndWlkZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21pbmktZ3VpZGUvbWluaS1ndWlkZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQW9CdEUsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixFQUFFLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0IsVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNoRCxLQUFLLEdBQUcsS0FBSyxFQUFlLENBQUM7SUFDN0IsS0FBSyxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUM3QixN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SFksWUFBWSwrQkFBdUIsYUFBYSw4RUFBRSxVQUFVLG9PQUFFLGdCQUFnQjs7MkZBUzdFLGtCQUFrQjtrQkFaOUIsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsaUJBRzFFLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osRUFBRSxFQUFFLHFCQUFxQjt3QkFDekIsS0FBSyxFQUFFLHFCQUFxQjtxQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiwgVmlld0VuY2Fwc3VsYXRpb24sIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcblxuZXhwb3J0IGludGVyZmFjZSBNaW5pR3VpZGUge1xuICB0aXRsZTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGxpbms6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtbWluaS1ndWlkZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEljb25CdXR0b25Db21wb25lbnQsIEljb25Db21wb25lbnQsIFJvdXRlckxpbmssIFJvdXRlckxpbmtBY3RpdmVdLFxuICB0ZW1wbGF0ZVVybDogJy4vbWluaS1ndWlkZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9taW5pLWd1aWRlLmNvbXBvbmVudC5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGlkOiAncm9sYXRlY2gtbWluaS1ndWlkZScsXG4gICAgY2xhc3M6ICdyb2xhdGVjaC1taW5pLWd1aWRlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTWluaUd1aWRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcbiAgaXRlbXMgPSBpbnB1dDxNaW5pR3VpZGVbXT4oKTtcbiAgdGl0bGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgb3BlbmVkID0gZmFsc2U7XG4gIGRpc2FibGVUb2dnbGUgPSBmYWxzZTtcbiAgcmVhZG9ubHkgYnJlYWtwb2ludCQgPSB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKFtCcmVha3BvaW50cy5MYXJnZSwgQnJlYWtwb2ludHMuTWVkaXVtLCAnKG1heC13aWR0aDogNzY4cHgpJ10pO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdoaWRkZW4nLCAnJyk7XG4gICAgICB0aGlzLmJyZWFrcG9pbnQkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmJyZWFrcG9pbnRDaGFuZ2VkKCkpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGJyZWFrcG9pbnRDaGFuZ2VkKCkge1xuICAgIGlmICh0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuTGFyZ2UpKSB7XG4gICAgICB0aGlzLmRpc2FibGVUb2dnbGUgPSBmYWxzZTtcbiAgICAgIC8vIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ21pbmktZ3VpZGUtdmlzaWJsZScpO1xuICAgICAgLy8gdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnaGlkZGVuJywgJycpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLk1lZGl1bSkpIHtcbiAgICAgIC8vIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ21pbmktZ3VpZGUtdmlzaWJsZScsICcnKTtcbiAgICAgIC8vIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2hpZGRlbicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKCcobWF4LXdpZHRoOiA3NjhweCknKSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnbWluaS1ndWlkZS12aXNpYmxlJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdoaWRkZW4nLCAnJyk7XG4gICAgICB0aGlzLmRpc2FibGVUb2dnbGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc2FibGVUb2dnbGUgPSBmYWxzZTtcbiAgICAgIC8vIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ21pbmktZ3VpZGUtdmlzaWJsZScsICcnKTtcbiAgICAgIC8vIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2hpZGRlbicpO1xuICAgIH1cbiAgfVxuICBvcGVuKCkge1xuICAgIHRoaXMub3BlbmVkID0gdHJ1ZTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdtaW5pLWd1aWRlLXZpc2libGUnLCAnJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnaGlkZGVuJyk7XG4gIH1cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdtaW5pLWd1aWRlLXZpc2libGUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdoaWRkZW4nLCAnJyk7XG4gIH1cbiAgdG9nZ2xlKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVUb2dnbGUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlbmVkKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBpZD1cIml0ZW1zXCIgY2xhc3M9XCJ3LTE2IG10LVs2cHhdXCIgc3R5bGU9XCJ0cmFuc2l0aW9uLWR1cmF0aW9uOiAyMDBtc1wiPlxuICBAZm9yIChpdGVtIG9mIGl0ZW1zKCk7IHRyYWNrICRpbmRleCkge1xuICAgIDxkaXY+XG4gICAgICA8YVxuICAgICAgICBpZD1cIm1pbi1ndWlkZS1lbmRwb2ludFwiXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ubGlua1wiXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJtaW4tZ3VpZGUtYWN0aXZlXCJcbiAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInsgZXhhY3Q6IHRydWUgfVwiXG4gICAgICAgICNyb3V0ZXJMaW5rPVwicm91dGVyTGlua0FjdGl2ZVwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgcHktMyBydC1ndWlkZS1lbnRyeVwiXG4gICAgICA+XG4gICAgICAgIDxyb2xhdGVjaC1pY29uIFtmaWxsZWRdPVwicm91dGVyTGluay5pc0FjdGl2ZVwiPnt7IGl0ZW0uaWNvbiB9fTwvcm9sYXRlY2gtaWNvbj5cbiAgICAgICAgQGlmICh0aXRsZSgpKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIG10LTEgbWF4LXctZnVsbCB0cnVuY2F0ZVwiPnt7IGl0ZW0udGl0bGUgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -1,31 +0,0 @@
1
- import { Router, RouterEvent, NavigationEnd } from '@angular/router';
2
- import { Component } from '@angular/core';
3
- import { filter } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/router";
6
- export class NotFoundComponent {
7
- router;
8
- url;
9
- constructor(router) {
10
- this.router = router;
11
- router.events.pipe(filter((e) => e instanceof RouterEvent)).subscribe((e) => {
12
- if (e instanceof NavigationEnd) {
13
- this.url = e.url;
14
- }
15
- });
16
- }
17
- ngOnInit() {
18
- this.router.events.pipe(filter((e) => e instanceof RouterEvent)).subscribe((e) => {
19
- if (e instanceof NavigationEnd) {
20
- this.url = e.url;
21
- }
22
- });
23
- }
24
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: NotFoundComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
25
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: NotFoundComponent, isStandalone: true, selector: "rolatech-not-found", ngImport: i0, template: "<div class=\"not-found-content\">\n <p>\n <b>404.</b>\n <ins>That\u2019s an error.</ins>\n </p>\n <p>\n The requested URL <code>{{ url }}</code> not found on this server.\n </p>\n <a href=\"/\">return home</a>\n</div>\n", styles: [":host{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}.not-found-content{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}\n"] });
26
- }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: NotFoundComponent, decorators: [{
28
- type: Component,
29
- args: [{ selector: 'rolatech-not-found', standalone: true, template: "<div class=\"not-found-content\">\n <p>\n <b>404.</b>\n <ins>That\u2019s an error.</ins>\n </p>\n <p>\n The requested URL <code>{{ url }}</code> not found on this server.\n </p>\n <a href=\"/\">return home</a>\n</div>\n", styles: [":host{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}.not-found-content{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}\n"] }]
30
- }], ctorParameters: () => [{ type: i1.Router }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90LWZvdW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvbm90LWZvdW5kL25vdC1mb3VuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL25vdC1mb3VuZC9ub3QtZm91bmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFROUIsTUFBTSxPQUFPLGlCQUFpQjtJQUVSO0lBRHBCLEdBQUcsQ0FBVTtJQUNiLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDakYsSUFBSSxDQUFDLFlBQVksYUFBYSxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RGLElBQUksQ0FBQyxZQUFZLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0FoQlUsaUJBQWlCOzJGQUFqQixpQkFBaUIsOEVDVjlCLDJPQVVBOzsyRkRBYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0Usb0JBQW9CLGNBR2xCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXIsIFJvdXRlckV2ZW50LCBOYXZpZ2F0aW9uRW5kLCBFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLW5vdC1mb3VuZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3QtZm91bmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub3QtZm91bmQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTm90Rm91bmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB1cmwhOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICByb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChlOiBFdmVudCkgPT4gZSBpbnN0YW5jZW9mIFJvdXRlckV2ZW50KSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgdGhpcy51cmwgPSBlLnVybDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcigoZTogRXZlbnQpID0+IGUgaW5zdGFuY2VvZiBSb3V0ZXJFdmVudCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIHRoaXMudXJsID0gZS51cmw7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJub3QtZm91bmQtY29udGVudFwiPlxuICA8cD5cbiAgICA8Yj40MDQuPC9iPlxuICAgIDxpbnM+VGhhdOKAmXMgYW4gZXJyb3IuPC9pbnM+XG4gIDwvcD5cbiAgPHA+XG4gICAgVGhlIHJlcXVlc3RlZCBVUkwgPGNvZGU+e3sgdXJsIH19PC9jb2RlPiBub3QgZm91bmQgb24gdGhpcyBzZXJ2ZXIuXG4gIDwvcD5cbiAgPGEgaHJlZj1cIi9cIj5yZXR1cm4gaG9tZTwvYT5cbjwvZGl2PlxuIl19
@@ -1,60 +0,0 @@
1
- import { Component, ViewEncapsulation, inject, input } from '@angular/core';
2
- import { AngularCommonModule } from '@rolatech/angular-common';
3
- import { NotificationService, NotificationStore } from '@rolatech/angular-services';
4
- import { AngularComponentsModule } from '../angular-components.module';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/router";
7
- import * as i2 from "@angular/material/badge";
8
- import * as i3 from "@angular/material/button";
9
- import * as i4 from "@angular/material/icon";
10
- import * as i5 from "@angular/material/menu";
11
- export class NotificationIconComponent {
12
- router = input('/notifications');
13
- notifications = [];
14
- notificationService = inject(NotificationService);
15
- storeService = inject(NotificationStore);
16
- count = 0;
17
- countSubscription;
18
- ngOnInit() {
19
- this.countNotificationByStatus();
20
- this.storeService.$count.subscribe((data) => {
21
- this.count = data;
22
- });
23
- }
24
- ngOnDestroy() {
25
- if (this.countSubscription)
26
- this.countSubscription.unsubscribe();
27
- }
28
- countNotificationByStatus() {
29
- this.notificationService.countByStatus('UNREAD').subscribe({
30
- next: (res) => {
31
- this.loadUnreadNotifications();
32
- },
33
- });
34
- }
35
- loadUnreadNotifications() {
36
- const options = {
37
- filter: 'status:UNREAD',
38
- sort: 'createdAt desc',
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: "18.2.8", ngImport: i0, type: NotificationIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
54
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: NotificationIconComponent, isStandalone: true, selector: "rolatech-notification-icon", inputs: { router: { classPropertyName: "router", publicName: "router", isSignal: true, isRequired: false, transformFunction: null } }, 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()\" aria-hidden=\"true\">\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-[--rt-raised-background]\" [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-[--rt-raised-background]\" [routerLink]=\"router()\">\n <a class=\"flex justify-center items-center\">\n <span class=\"text-sm text-[--rt-brand-color]\"> \u901A\u77E5\u4E2D\u5FC3 </span>\n </a>\n </div>\n </div>\n</mat-menu>\n", styles: ["rolatech-notification-icon{color:var(--rt-text-primary, #000)}.custom-menu{color:var(--rt-text-primary, #000)}\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"] }], encapsulation: i0.ViewEncapsulation.None });
55
- }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: NotificationIconComponent, decorators: [{
57
- type: Component,
58
- args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-notification-icon', encapsulation: ViewEncapsulation.None, 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()\" aria-hidden=\"true\">\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-[--rt-raised-background]\" [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-[--rt-raised-background]\" [routerLink]=\"router()\">\n <a class=\"flex justify-center items-center\">\n <span class=\"text-sm text-[--rt-brand-color]\"> \u901A\u77E5\u4E2D\u5FC3 </span>\n </a>\n </div>\n </div>\n</mat-menu>\n", styles: ["rolatech-notification-icon{color:var(--rt-text-primary, #000)}.custom-menu{color:var(--rt-text-primary, #000)}\n"] }]
59
- }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9ub3RpZmljYXRpb24taWNvbi9ub3RpZmljYXRpb24taWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL25vdGlmaWNhdGlvbi1pY29uL25vdGlmaWNhdGlvbi1pY29uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7QUFVdkUsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxNQUFNLEdBQUcsS0FBSyxDQUFTLGdCQUFnQixDQUFDLENBQUM7SUFDekMsYUFBYSxHQUFRLEVBQUUsQ0FBQztJQUN4QixtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNsRCxZQUFZLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFekMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNGLGlCQUFpQixDQUFnQjtJQUN6QyxRQUFRO1FBQ04sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGlCQUFpQjtZQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3pELElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2pDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsdUJBQXVCO1FBQ3JCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTSxFQUFFLGVBQWU7WUFDdkIsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDN0MsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ2hDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTztRQUNMLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDM0MsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDMUIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBMUNVLHlCQUF5QjsyRkFBekIseUJBQXlCLDZOQ2R0Qyx1b0RBc0NBLHlLRDlCWSxtQkFBbUIsK1FBQUUsdUJBQXVCOzsyRkFNM0MseUJBQXlCO2tCQVJyQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLFlBQzdDLDRCQUE0QixpQkFHdkIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuZ3VsYXJDb21tb25Nb2R1bGUgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSwgTm90aWZpY2F0aW9uU3RvcmUgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJy4uL2FuZ3VsYXItY29tcG9uZW50cy5tb2R1bGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FuZ3VsYXJDb21tb25Nb2R1bGUsIEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1ub3RpZmljYXRpb24taWNvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb24taWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vdGlmaWNhdGlvbi1pY29uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkljb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHJvdXRlciA9IGlucHV0PHN0cmluZz4oJy9ub3RpZmljYXRpb25zJyk7XG4gIG5vdGlmaWNhdGlvbnM6IGFueSA9IFtdO1xuICBub3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuICBzdG9yZVNlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uU3RvcmUpO1xuXG4gIGNvdW50ID0gMDtcbiAgcHJpdmF0ZSBjb3VudFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb3VudE5vdGlmaWNhdGlvbkJ5U3RhdHVzKCk7XG4gICAgdGhpcy5zdG9yZVNlcnZpY2UuJGNvdW50LnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5jb3VudCA9IGRhdGE7XG4gICAgfSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY291bnRTdWJzY3JpcHRpb24pIHRoaXMuY291bnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNvdW50Tm90aWZpY2F0aW9uQnlTdGF0dXMoKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmNvdW50QnlTdGF0dXMoJ1VOUkVBRCcpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZFVucmVhZE5vdGlmaWNhdGlvbnMoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgbG9hZFVucmVhZE5vdGlmaWNhdGlvbnMoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGZpbHRlcjogJ3N0YXR1czpVTlJFQUQnLFxuICAgICAgc29ydDogJ2NyZWF0ZWRBdCBkZXNjJyxcbiAgICB9O1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5tZShvcHRpb25zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSByZXMuZGF0YTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgcmVhZEFsbCgpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UucmVhZEFsbCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IFtdO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInB4LTJcIj5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJmbGV4XCIgb25jbGljaz1cInRoaXMuYmx1cigpXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm5vdGlmaWNhdGlvbnNNZW51XCI+XG4gICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiBbbWF0QmFkZ2VdPVwiY291bnRcIiBbbWF0QmFkZ2VIaWRkZW5dPVwiY291bnQgPT09IDBcIj5ub3RpZmljYXRpb25zPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbjxtYXQtbWVudSAjbm90aWZpY2F0aW9uc01lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJjdXN0b20tbWVudVwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBkaXZpZGUteSBtaW4tdy1bMjU2cHhdXCI+XG4gICAgPGRpdiBjbGFzcz1cImgtMTEgcHgtMyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj7pgJrnn6Xmtojmga88L3NwYW4+XG4gICAgICBAaWYgKGNvdW50KSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bSBjdXJzb3ItcG9pbnRlciBob3Zlcjp1bmRlcmxpbmVcIiAoY2xpY2spPVwicmVhZEFsbCgpXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+5YWo6YOo5bey6K+7PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICBAaWYgKG5vdGlmaWNhdGlvbnMgJiYgbm90aWZpY2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGUteVwiPlxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygbm90aWZpY2F0aW9uczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1bLS1ydC1yYWlzZWQtYmFja2dyb3VuZF1cIiBbcm91dGVyTGlua109XCJbcm91dGVyKCksIGl0ZW0uaWRdXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc21cIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLmNvbnRlbnQgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTMyIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+5pqC5peg6YCa55+lPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImgtMTEgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctWy0tcnQtcmFpc2VkLWJhY2tncm91bmRdXCIgW3JvdXRlckxpbmtdPVwicm91dGVyKClcIj5cbiAgICAgIDxhIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIHRleHQtWy0tcnQtYnJhbmQtY29sb3JdXCI+IOmAmuefpeS4reW/gyA8L3NwYW4+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtbWVudT5cbiJdfQ==