@rolatech/angular-components 17.2.8

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 (62) hide show
  1. package/README.md +7 -0
  2. package/esm2022/index.mjs +26 -0
  3. package/esm2022/lib/angular-components.module.mjs +16 -0
  4. package/esm2022/lib/app-container/app-container.component.mjs +12 -0
  5. package/esm2022/lib/app-container-content/app-container-content.component.mjs +13 -0
  6. package/esm2022/lib/app-drawer/app-drawer.component.mjs +107 -0
  7. package/esm2022/lib/app-footer/app-footer.component.mjs +28 -0
  8. package/esm2022/lib/app-layout/app-layout.component.mjs +76 -0
  9. package/esm2022/lib/app-page/app-page.component.mjs +20 -0
  10. package/esm2022/lib/base.component.mjs +15 -0
  11. package/esm2022/lib/confirmation-dialog/confirmation-dialog.component.mjs +19 -0
  12. package/esm2022/lib/console-layout/console-layout.component.mjs +12 -0
  13. package/esm2022/lib/folder/folder.component.mjs +11 -0
  14. package/esm2022/lib/loading-spinner/loading-spinner.component.mjs +33 -0
  15. package/esm2022/lib/material.module.mjs +238 -0
  16. package/esm2022/lib/media-list/media-list.component.mjs +34 -0
  17. package/esm2022/lib/media-list-item/media-list-item.component.mjs +36 -0
  18. package/esm2022/lib/media-preview-dialog/media-preview-dialog.component.mjs +51 -0
  19. package/esm2022/lib/media-upload/media-upload.component.mjs +71 -0
  20. package/esm2022/lib/media-upload-dialog/media-upload-dialog.component.mjs +91 -0
  21. package/esm2022/lib/menu-user/menu-user.component.mjs +21 -0
  22. package/esm2022/lib/not-found/not-found.component.mjs +31 -0
  23. package/esm2022/lib/spacer/spacer.component.mjs +13 -0
  24. package/esm2022/lib/storage-bucket-create/storage-bucket-create.component.mjs +27 -0
  25. package/esm2022/lib/storage-file-upload/storage-file-upload.component.mjs +47 -0
  26. package/esm2022/lib/storage-folder-create/storage-folder-create.component.mjs +32 -0
  27. package/esm2022/lib/topbar/topbar.component.mjs +73 -0
  28. package/esm2022/lib/topbar-avatar-menu/topbar-avatar-menu.component.mjs +37 -0
  29. package/esm2022/lib/wechat-connect-dialog/wechat-connect-dialog.component.mjs +37 -0
  30. package/esm2022/rolatech-angular-components.mjs +5 -0
  31. package/fesm2022/rolatech-angular-components.mjs +1059 -0
  32. package/fesm2022/rolatech-angular-components.mjs.map +1 -0
  33. package/index.d.ts +25 -0
  34. package/lib/angular-components.module.d.ts +7 -0
  35. package/lib/app-container/app-container.component.d.ts +5 -0
  36. package/lib/app-container-content/app-container-content.component.d.ts +5 -0
  37. package/lib/app-drawer/app-drawer.component.d.ts +39 -0
  38. package/lib/app-footer/app-footer.component.d.ts +10 -0
  39. package/lib/app-layout/app-layout.component.d.ts +18 -0
  40. package/lib/app-page/app-page.component.d.ts +7 -0
  41. package/lib/base.component.d.ts +13 -0
  42. package/lib/confirmation-dialog/confirmation-dialog.component.d.ts +13 -0
  43. package/lib/console-layout/console-layout.component.d.ts +5 -0
  44. package/lib/folder/folder.component.d.ts +5 -0
  45. package/lib/loading-spinner/loading-spinner.component.d.ts +16 -0
  46. package/lib/material.module.d.ts +50 -0
  47. package/lib/media-list/media-list.component.d.ts +14 -0
  48. package/lib/media-list-item/media-list-item.component.d.ts +16 -0
  49. package/lib/media-preview-dialog/media-preview-dialog.component.d.ts +18 -0
  50. package/lib/media-upload/media-upload.component.d.ts +19 -0
  51. package/lib/media-upload-dialog/media-upload-dialog.component.d.ts +32 -0
  52. package/lib/menu-user/menu-user.component.d.ts +13 -0
  53. package/lib/not-found/not-found.component.d.ts +11 -0
  54. package/lib/spacer/spacer.component.d.ts +8 -0
  55. package/lib/storage-bucket-create/storage-bucket-create.component.d.ts +10 -0
  56. package/lib/storage-file-upload/storage-file-upload.component.d.ts +17 -0
  57. package/lib/storage-folder-create/storage-folder-create.component.d.ts +11 -0
  58. package/lib/topbar/topbar.component.d.ts +23 -0
  59. package/lib/topbar-avatar-menu/topbar-avatar-menu.component.d.ts +10 -0
  60. package/lib/wechat-connect-dialog/wechat-connect-dialog.component.d.ts +16 -0
  61. package/package.json +31 -0
  62. package/themes/_default.scss +1 -0
@@ -0,0 +1,91 @@
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: "17.2.4", 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: "17.2.4", type: MediaUploadDialogComponent, isStandalone: true, selector: "rolatech-media-upload-dialog", ngImport: i0, template: "<mat-dialog-content>\n <div class=\"border-dashed border-2 border-gray-400 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-gray-100 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\" />\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 (click)=\"removeImage(i)\" class=\"delete ml-auto focus:outline-none hover:bg-gray-300 p-1 rounded-md\">\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-gray-500\">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: "17.2.4", 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-gray-400 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-gray-100 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\" />\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 (click)=\"removeImage(i)\" class=\"delete ml-auto focus:outline-none hover:bg-gray-300 p-1 rounded-md\">\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-gray-500\">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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLXVwbG9hZC1kaWFsb2cvbWVkaWEtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lZGlhLXVwbG9hZC1kaWFsb2cvbWVkaWEtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUk3SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBZTNELE1BQU0sT0FBTywwQkFBMEI7SUFVNUI7SUFDeUI7SUFDeEI7SUFYVixRQUFRLENBQU07SUFDZCxhQUFhLEdBQVEsRUFBRSxDQUFDO0lBQ3hCLEtBQUssR0FBWSxFQUFFLENBQUM7SUFDcEIsUUFBUSxHQUFlLEVBQUUsQ0FBQztJQUMxQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5CLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbkIsWUFDUyxTQUFtRCxFQUMxQixJQUFTLEVBQ2pDLFlBQTBCO1FBRjNCLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDakMsQ0FBQztJQUVKLFFBQVEsS0FBVSxDQUFDO0lBRW5CLFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELFFBQVEsQ0FBQyxJQUFTO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNsQixJQUFJLENBQUMsUUFBZ0IsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTTtnQkFDbEIsR0FBRyxFQUFFLGNBQWM7Z0JBQ25CLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixVQUFVLEVBQUUsS0FBSztnQkFDakIsSUFBSSxFQUFFLElBQUk7YUFDWCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsV0FBVztRQUNULEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFRLEVBQUUsSUFBUztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2xELElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7Z0JBRXBDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixDQUFDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDcEMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBdkVVLDBCQUEwQiw4Q0FXM0IsZUFBZTsyRkFYZCwwQkFBMEIsd0ZDeEJ2Qyw2bEdBbUVBLGlORDdDWSxnQkFBZ0Isd0dBQUUsZUFBZSw0TkFBRSxPQUFPLG1GQUFFLHdCQUF3QixtT0FBRSxnQkFBZ0IsNEhBQUUsY0FBYzs7MkZBRXJHLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDRSw4QkFBOEIsY0FHNUIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLENBQUM7OzBCQWE5RyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBIdHRwRXZlbnRUeXBlLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyByZW1vdmUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWVkaWEgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5leHBvcnQgaW50ZXJmYWNlIFByZU1lZGlhIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGFsdDogc3RyaW5nO1xuICBpc1VwbG9hZGluZzogYm9vbGVhbjtcbiAgaXNVcGxvYWRlZDogYm9vbGVhbjtcbiAgZmlsZTogRmlsZTtcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLW1lZGlhLXVwbG9hZC1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lZGlhLXVwbG9hZC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdERpYWxvZ0NvbnRlbnQsIE1hdEJ1dHRvbk1vZHVsZSwgTmdDbGFzcywgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLCBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhVXBsb2FkRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZmlsZURhdGE6IGFueTtcbiAgcHJvZ3Jlc3NJbmZvczogYW55ID0gW107XG4gIG1lZGlhOiBNZWRpYVtdID0gW107XG4gIHByZU1lZGlhOiBQcmVNZWRpYVtdID0gW107XG4gIGlzRmluaXNoZWQgPSBmYWxzZTtcblxuICBpc1VwbG9hZGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE1lZGlhVXBsb2FkRGlhbG9nQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHNlbGVjdEZpbGVzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmlzRmluaXNoZWQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZXZlbnQudGFyZ2V0LmZpbGVzKSB7XG4gICAgICB0aGlzLmFkZEltYWdlKGZpbGUpO1xuICAgIH1cbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuICBhZGRJbWFnZShmaWxlOiBhbnkpIHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAodGhpcy5wcmVNZWRpYSBhcyBhbnkpLnB1c2goe1xuICAgICAgICB1cmw6IHJlYWRlci5yZXN1bHQsXG4gICAgICAgIGFsdDogJ3VwbG9hZCBpbWFnZScsXG4gICAgICAgIGlzVXBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgaXNVcGxvYWRlZDogZmFsc2UsXG4gICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICB9KTtcbiAgICB9O1xuICAgIHJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiB7fTtcbiAgfVxuICByZW1vdmVJbWFnZShpbmRleDogYW55KSB7XG4gICAgdGhpcy5wcmVNZWRpYS5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG4gIHVwbG9hZEZpbGVzKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wcmVNZWRpYS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCF0aGlzLnByZU1lZGlhW2ldLmlzVXBsb2FkZWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWQoaSwgdGhpcy5wcmVNZWRpYVtpXS5maWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdXBsb2FkKGlkeDogYW55LCBmaWxlOiBhbnkpIHtcbiAgICB0aGlzLnByb2dyZXNzSW5mb3NbaWR4XSA9IHsgdmFsdWU6IDAsIGZpbGVOYW1lOiBmaWxlLm5hbWUgfTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgIHRoaXMucHJlTWVkaWFbaWR4XS5pc1VwbG9hZGluZyA9IHRydWU7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdncm91cElkJywgdGhpcy5kYXRhLmdyb3VwSWQpO1xuXG4gICAgdGhpcy5tZWRpYVNlcnZpY2UudXBsb2FkQW5kU2F2ZShmb3JtRGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm1lZGlhLnB1c2gocmVzLmRhdGEpO1xuICAgICAgICB0aGlzLnByZU1lZGlhW2lkeF0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wcmVNZWRpYVtpZHhdLmlzVXBsb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnByb2dyZXNzSW5mb3NbaWR4XS52YWx1ZSA9IDEwMDtcblxuICAgICAgICBjb25zdCB0bXAgPSB0aGlzLnByb2dyZXNzSW5mb3MuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0udmFsdWUgIT09IDEwMCk7XG4gICAgICAgIGlmICh0bXAubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICB0aGlzLmlzRmluaXNoZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NJbmZvc1tpZHhdLnZhbHVlID0gMDtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJib3JkZXItZGFzaGVkIGJvcmRlci0yIGJvcmRlci1ncmF5LTQwMCBweS0xMiBmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiPlxuICAgIDxpbnB1dCAjZmlsZUlucHV0IG11bHRpcGxlIGNsYXNzPVwiaGlkZGVuXCIgdHlwZT1cImZpbGVcIiAoY2hhbmdlKT1cInNlbGVjdEZpbGVzKCRldmVudClcIiAvPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj7kuIrkvKDlm77niYc8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtdC00XCI+XG4gICAgPGgyIGNsYXNzPVwiXCI+6aKE6KeIPC9oMj5cbiAgICA8ZGl2PlxuICAgICAgPHVsIGlkPVwiZ2FsbGVyeVwiIGNsYXNzPVwiZmxleCBmbGV4LTEgZmxleC13cmFwIC1tLTFcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBwcmVNZWRpYTsgdHJhY2sgaXRlbS51cmw7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgPGxpIGNsYXNzPVwiYmxvY2sgcC0xIHctMS8yIHNtOnctMS8zIG1kOnctMS80IGxnOnctMS82IHhsOnctMS84IGgtMjRcIj5cbiAgICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uaXNVcGxvYWRpbmcgPyAnaXNVcGxvYWRpbmcnIDogJydcIlxuICAgICAgICAgICAgICBjbGFzcz1cImdyb3VwIGhhc0ltYWdlIHctZnVsbCBoLWZ1bGwgcm91bmRlZC1tZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6c2hhZG93LW91dGxpbmUgYmctZ3JheS0xMDAgY3Vyc29yLXBvaW50ZXIgcmVsYXRpdmUgdGV4dC10cmFuc3BhcmVudCBob3Zlcjp0ZXh0LXdoaXRlIHNoYWRvdy1zbVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLnVybFwiIGNsYXNzPVwiaW1nLXByZXZpZXcgdy1mdWxsIGgtZnVsbCBzdGlja3kgb2JqZWN0LWNvdmVyIHJvdW5kZWQtbWQgYmctZml4ZWRcIiAvPlxuICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggZmxleC1jb2wgcm91bmRlZC1tZCB0ZXh0LXhzIGJyZWFrLXdvcmRzIHctZnVsbCBoLWZ1bGwgei0yMCBhYnNvbHV0ZSB0b3AtMCBweS0yIHB4LTNcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaXNVcGxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB3LWZ1bGwgaC1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBjb2xvcj1cIndoaXRlXCIgZGlhbWV0ZXI9XCIyOFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlbW92ZUltYWdlKGkpXCIgY2xhc3M9XCJkZWxldGUgbWwtYXV0byBmb2N1czpvdXRsaW5lLW5vbmUgaG92ZXI6YmctZ3JheS0zMDAgcC0xIHJvdW5kZWQtbWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmUgZmlsbC1jdXJyZW50IHctNCBoLTQgbWwtYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zIDZsMyAxOGgxMmwzLTE4aC0xOHptMTktNHYyaC0yMHYtMmg1LjcxMWMuOSAwIDEuNjMxLTEuMDk5IDEuNjMxLTJoNS4zMTZjMCAuOTAxLjczIDIgMS42MzEgMmg1LjcxMXpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICAgIEBpZiAocHJlTWVkaWEubGVuZ3RoIDw9IDApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtMSBmbGV4LXdyYXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCB3LWZ1bGwgdGV4dC1jZW50ZXIgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgcHktNlwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbWFsbCB0ZXh0LWdyYXktNTAwXCI+Tm8gZmlsZXMgc2VsZWN0ZWQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuPG1hdC1kaWFsb2ctYWN0aW9ucyBhbGlnbj1cImVuZFwiPlxuICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT7lj5bmtog8L2J1dHRvbj5cbiAgQGlmIChwcmVNZWRpYS5sZW5ndGggPD0gMCkge1xuICAgIDxidXR0b24gbWF0LWJ1dHRvbj7nrYnlvoXpgInmi6k8L2J1dHRvbj5cbiAgfVxuICBAaWYgKCFpc0ZpbmlzaGVkICYmIHByZU1lZGlhLmxlbmd0aCA+IDApIHtcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInVwbG9hZEZpbGVzKClcIj7nq4vliLvkuIrkvKA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKGlzRmluaXNoZWQpIHtcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwibWVkaWFcIj7lrozmiJA8L2J1dHRvbj5cbiAgfVxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { MatIconModule } from '@angular/material/icon';
3
+ import { MatMenuModule } from '@angular/material/menu';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/menu";
6
+ import * as i2 from "@angular/material/icon";
7
+ export class MenuUserComponent {
8
+ user;
9
+ myaccountUrl = '';
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MenuUserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: MenuUserComponent, isStandalone: true, selector: "rolatech-menu-user", inputs: { user: "user", myaccountUrl: "myaccountUrl" }, ngImport: i0, template: "<div class=\"min-w-[256px]\">\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-orange-600\">\n @if (user?.avatar) {\n <img [src]=\"user.avatar\" class=\"w-14 h-14 object-cover rounded-full\" />\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 class=\"flex\">\n <a\n [href]=\"myaccountUrl\"\n target=\"_blank\"\n class=\"text-sm my-2 p-1 px-6 ml-24 rounded border border-gray-300 hover:bg-gray-200\"\n >\u7528\u6237\u4E2D\u5FC3</a\n >\n </div> -->\n </div>\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: [".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"] }] });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MenuUserComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ standalone: true, imports: [MatMenuModule, MatIconModule], selector: 'rolatech-menu-user', template: "<div class=\"min-w-[256px]\">\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-orange-600\">\n @if (user?.avatar) {\n <img [src]=\"user.avatar\" class=\"w-14 h-14 object-cover rounded-full\" />\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 class=\"flex\">\n <a\n [href]=\"myaccountUrl\"\n target=\"_blank\"\n class=\"text-sm my-2 p-1 px-6 ml-24 rounded border border-gray-300 hover:bg-gray-200\"\n >\u7528\u6237\u4E2D\u5FC3</a\n >\n </div> -->\n </div>\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: [".formated-string{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}\n"] }]
16
+ }], propDecorators: { user: [{
17
+ type: Input
18
+ }], myaccountUrl: [{
19
+ type: Input
20
+ }] } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS11c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvbWVudS11c2VyL21lbnUtdXNlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL21lbnUtdXNlci9tZW51LXVzZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQWN2RCxNQUFNLE9BQU8saUJBQWlCO0lBQ25CLElBQUksQ0FBa0I7SUFDdEIsWUFBWSxHQUFHLEVBQUUsQ0FBQzt1R0FGaEIsaUJBQWlCOzJGQUFqQixpQkFBaUIsc0lDaEI5Qixnc0NBbUNBLCtNRHhCWSxhQUFhLGtMQUFFLGFBQWE7OzJGQUszQixpQkFBaUI7a0JBUDdCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxZQUM3QixvQkFBb0I7OEJBS3JCLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuZXhwb3J0IGludGVyZmFjZSBNZW51VXNlciB7XG4gIG5hbWU6IHN0cmluZztcbiAgYXZhdGFyOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHVzZXJuYW1lOiBzdHJpbmc7XG59XG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdE1lbnVNb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLW1lbnUtdXNlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LXVzZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZW51LXVzZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVudVVzZXJDb21wb25lbnQge1xuICBASW5wdXQoKSB1c2VyITogTWVudVVzZXIgfCBhbnk7XG4gIEBJbnB1dCgpIG15YWNjb3VudFVybCA9ICcnO1xufVxuIiwiPGRpdiBjbGFzcz1cIm1pbi13LVsyNTZweF1cIj5cbiAgPGRpdiBjbGFzcz1cInB4LTYgcHktM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1yLTMgdy0xNCBoLTE0IHJvdW5kZWQtZnVsbCBiZy1vcmFuZ2UtNjAwXCI+XG4gICAgICAgIEBpZiAodXNlcj8uYXZhdGFyKSB7XG4gICAgICAgICAgPGltZyBbc3JjXT1cInVzZXIuYXZhdGFyXCIgY2xhc3M9XCJ3LTE0IGgtMTQgb2JqZWN0LWNvdmVyIHJvdW5kZWQtZnVsbFwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LWJvbGRcIj57eyB1c2VyPy5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1hdGVkLXN0cmluZ1wiPlxuICAgICAgICAgICAgPHNwYW4+JiM2NDt7eyB1c2VyPy51c2VybmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgPGFcbiAgICAgIFtocmVmXT1cIm15YWNjb3VudFVybFwiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgY2xhc3M9XCJ0ZXh0LXNtIG15LTIgcC0xIHB4LTYgbWwtMjQgcm91bmRlZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktMjAwXCJcbiAgICAgID7nlKjmiLfkuK3lv4M8L2FcbiAgICA+XG4gIDwvZGl2PiAtLT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICA8YSBtYXQtbWVudS1pdGVtIFtocmVmXT1cIm15YWNjb3VudFVybFwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwicHgtNlwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+IOeUqOaIt+S4reW/gyA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleFwiPiA8bWF0LWljb24+b3Blbl9pbl9uZXc8L21hdC1pY29uPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2E+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,31 @@
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: "17.2.4", ngImport: i0, type: NotFoundComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", 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: "17.2.4", 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
@@ -0,0 +1,13 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SpacerComponent {
4
+ constructor() { }
5
+ ngOnInit() { }
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: SpacerComponent, isStandalone: true, selector: "rolatech-spacer", ngImport: i0, template: "<span class=\"app-spacer\"></span>\n", styles: [":host{flex:1 1 auto}.app-spacer{flex:1 1 auto}\n"] });
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SpacerComponent, decorators: [{
10
+ type: Component,
11
+ args: [{ selector: 'rolatech-spacer', standalone: true, template: "<span class=\"app-spacer\"></span>\n", styles: [":host{flex:1 1 auto}.app-spacer{flex:1 1 auto}\n"] }]
12
+ }], ctorParameters: () => [] });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvc3BhY2VyL3NwYWNlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL3NwYWNlci9zcGFjZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFRbEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsZ0JBQWUsQ0FBQztJQUVoQixRQUFRLEtBQVUsQ0FBQzt1R0FIUixlQUFlOzJGQUFmLGVBQWUsMkVDUjVCLHNDQUNBOzsyRkRPYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLGlCQUFpQixjQUdmLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1zcGFjZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3BhY2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3BhY2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNwYWNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG59XG4iLCI8c3BhbiBjbGFzcz1cImFwcC1zcGFjZXJcIj48L3NwYW4+XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { MatInputModule } from '@angular/material/input';
4
+ import { MatFormFieldModule } from '@angular/material/form-field';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/material/form-field";
7
+ import * as i2 from "@angular/material/input";
8
+ import * as i3 from "@angular/forms";
9
+ export class StorageBucketCreateComponent {
10
+ name;
11
+ output = new EventEmitter();
12
+ ngOnInit() { }
13
+ ngDoCheck() {
14
+ this.output.emit(this.name);
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StorageBucketCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: StorageBucketCreateComponent, isStandalone: true, selector: "rolatech-storage-bucket-create", inputs: { name: "name" }, outputs: { output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field>\n <mat-label>\u540D\u79F0</mat-label>\n <input matInput placeholder=\"\u8F93\u5165\u540D\u79F0\" [(ngModel)]=\"name\" />\n </mat-form-field>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StorageBucketCreateComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'rolatech-storage-bucket-create', standalone: true, imports: [MatFormFieldModule, MatInputModule, FormsModule], template: "<div>\n <mat-form-field>\n <mat-label>\u540D\u79F0</mat-label>\n <input matInput placeholder=\"\u8F93\u5165\u540D\u79F0\" [(ngModel)]=\"name\" />\n </mat-form-field>\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
22
+ }], propDecorators: { name: [{
23
+ type: Input
24
+ }], output: [{
25
+ type: Output
26
+ }] } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1idWNrZXQtY3JlYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvc3RvcmFnZS1idWNrZXQtY3JlYXRlL3N0b3JhZ2UtYnVja2V0LWNyZWF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL3N0b3JhZ2UtYnVja2V0LWNyZWF0ZS9zdG9yYWdlLWJ1Y2tldC1jcmVhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQVNsRSxNQUFNLE9BQU8sNEJBQTRCO0lBQzlCLElBQUksQ0FBVTtJQUV2QixNQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFcEQsUUFBUSxLQUFVLENBQUM7SUFDbkIsU0FBUztRQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO3VHQVJVLDRCQUE0QjsyRkFBNUIsNEJBQTRCLG1KQ1p6Qyx5TEFNQSxxRkRJWSxrQkFBa0IsMFNBQUUsY0FBYywwV0FBRSxXQUFXOzsyRkFFOUMsNEJBQTRCO2tCQVB4QyxTQUFTOytCQUNFLGdDQUFnQyxjQUc5QixJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDOzhCQUdqRCxJQUFJO3NCQUFaLEtBQUs7Z0JBRU4sTUFBTTtzQkFETCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1zdG9yYWdlLWJ1Y2tldC1jcmVhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RvcmFnZS1idWNrZXQtY3JlYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3RvcmFnZS1idWNrZXQtY3JlYXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VCdWNrZXRDcmVhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICBASW5wdXQoKSBuYW1lITogc3RyaW5nO1xuICBAT3V0cHV0KClcbiAgb3V0cHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIHRoaXMub3V0cHV0LmVtaXQodGhpcy5uYW1lKTtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+5ZCN56ewPC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwi6L6T5YWl5ZCN56ewXCIgWyhuZ01vZGVsKV09XCJuYW1lXCIgLz5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuIl19
@@ -0,0 +1,47 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { MatIconModule } from '@angular/material/icon';
3
+ import { MatButtonModule } from '@angular/material/button';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { MatInputModule } from '@angular/material/input';
6
+ import { MatFormFieldModule } from '@angular/material/form-field';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/material/form-field";
9
+ import * as i2 from "@angular/material/input";
10
+ import * as i3 from "@angular/forms";
11
+ import * as i4 from "@angular/material/button";
12
+ import * as i5 from "@angular/material/icon";
13
+ export class StorageFileUploadComponent {
14
+ title;
15
+ output = new EventEmitter();
16
+ fileData;
17
+ progressInfos = [];
18
+ isFinished = false;
19
+ isUploaded = false;
20
+ file;
21
+ ngOnInit() { }
22
+ ngDoCheck() {
23
+ this.output.emit({
24
+ title: this.title,
25
+ file: this.file,
26
+ });
27
+ }
28
+ selectFiles(event) {
29
+ this.isFinished = false;
30
+ this.file = event.target.files[0];
31
+ event.target.value = '';
32
+ }
33
+ removeFile() {
34
+ this.file = null;
35
+ }
36
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StorageFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: StorageFileUploadComponent, isStandalone: true, selector: "rolatech-storage-file-upload", inputs: { title: "title" }, outputs: { output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field>\n <mat-label>\u6807\u9898</mat-label>\n <input matInput placeholder=\"\u8F93\u5165\u6807\u9898\" [(ngModel)]=\"title\" />\n </mat-form-field>\n\n <div class=\"mt-2\">\n <input #fileInput class=\"hidden\" type=\"file\" (change)=\"selectFiles($event)\" />\n <button mat-raised-button (click)=\"fileInput.click()\">\u9009\u62E9\u6587\u4EF6</button>\n </div>\n @if (file) {\n <div class=\"p-2 flex justify-between items-center\">\n <div>{{ file.name }}</div>\n <button matSuffix mat-icon-button (click)=\"removeFile()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n }\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StorageFileUploadComponent, decorators: [{
40
+ type: Component,
41
+ args: [{ selector: 'rolatech-storage-file-upload', standalone: true, imports: [MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule, MatIconModule], template: "<div>\n <mat-form-field>\n <mat-label>\u6807\u9898</mat-label>\n <input matInput placeholder=\"\u8F93\u5165\u6807\u9898\" [(ngModel)]=\"title\" />\n </mat-form-field>\n\n <div class=\"mt-2\">\n <input #fileInput class=\"hidden\" type=\"file\" (change)=\"selectFiles($event)\" />\n <button mat-raised-button (click)=\"fileInput.click()\">\u9009\u62E9\u6587\u4EF6</button>\n </div>\n @if (file) {\n <div class=\"p-2 flex justify-between items-center\">\n <div>{{ file.name }}</div>\n <button matSuffix mat-icon-button (click)=\"removeFile()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n }\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
42
+ }], propDecorators: { title: [{
43
+ type: Input
44
+ }], output: [{
45
+ type: Output
46
+ }] } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1maWxlLXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL3N0b3JhZ2UtZmlsZS11cGxvYWQvc3RvcmFnZS1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL3N0b3JhZ2UtZmlsZS11cGxvYWQvc3RvcmFnZS1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFXLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztBQVNsRSxNQUFNLE9BQU8sMEJBQTBCO0lBQzVCLEtBQUssQ0FBVTtJQUV4QixNQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFcEQsUUFBUSxDQUFNO0lBQ2QsYUFBYSxHQUFRLEVBQUUsQ0FBQztJQUN4QixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsSUFBSSxDQUFNO0lBRVYsUUFBUSxLQUFVLENBQUM7SUFDbkIsU0FBUztRQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO3VHQXpCVSwwQkFBMEI7MkZBQTFCLDBCQUEwQixtSkNkdkMsNm9CQW1CQSxxRkRQWSxrQkFBa0IsMmFBQUUsY0FBYywwV0FBRSxXQUFXLDhtQkFBRSxlQUFlLHdVQUFFLGFBQWE7OzJGQUU5RSwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0UsOEJBQThCLGNBRzVCLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQzs4QkFHakYsS0FBSztzQkFBYixLQUFLO2dCQUVOLE1BQU07c0JBREwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRG9DaGVjaywgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLXN0b3JhZ2UtZmlsZS11cGxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RvcmFnZS1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0b3JhZ2UtZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTdG9yYWdlRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjayB7XG4gIEBJbnB1dCgpIHRpdGxlITogc3RyaW5nO1xuICBAT3V0cHV0KClcbiAgb3V0cHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGZpbGVEYXRhOiBhbnk7XG4gIHByb2dyZXNzSW5mb3M6IGFueSA9IFtdO1xuICBpc0ZpbmlzaGVkID0gZmFsc2U7XG4gIGlzVXBsb2FkZWQgPSBmYWxzZTtcbiAgZmlsZTogYW55O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIHRoaXMub3V0cHV0LmVtaXQoe1xuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBmaWxlOiB0aGlzLmZpbGUsXG4gICAgfSk7XG4gIH1cbiAgc2VsZWN0RmlsZXMoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaXNGaW5pc2hlZCA9IGZhbHNlO1xuICAgIHRoaXMuZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuICByZW1vdmVGaWxlKCkge1xuICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsPuagh+mimDwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIui+k+WFpeagh+mimFwiIFsobmdNb2RlbCldPVwidGl0bGVcIiAvPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDxkaXYgY2xhc3M9XCJtdC0yXCI+XG4gICAgPGlucHV0ICNmaWxlSW5wdXQgY2xhc3M9XCJoaWRkZW5cIiB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwic2VsZWN0RmlsZXMoJGV2ZW50KVwiIC8+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj7pgInmi6nmlofku7Y8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIEBpZiAoZmlsZSkge1xuICAgIDxkaXYgY2xhc3M9XCJwLTIgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICA8ZGl2Pnt7IGZpbGUubmFtZSB9fTwvZGl2PlxuICAgICAgPGJ1dHRvbiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZW1vdmVGaWxlKClcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { MatCheckboxModule } from '@angular/material/checkbox';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { MatInputModule } from '@angular/material/input';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/material/form-field";
8
+ import * as i2 from "@angular/material/input";
9
+ import * as i3 from "@angular/forms";
10
+ import * as i4 from "@angular/material/checkbox";
11
+ export class StorageFolderCreateComponent {
12
+ name;
13
+ isPublic = true;
14
+ output = new EventEmitter();
15
+ ngOnInit() { }
16
+ ngDoCheck() {
17
+ this.output.emit({ name: this.name, isPublic: this.isPublic });
18
+ }
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StorageFolderCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: StorageFolderCreateComponent, isStandalone: true, selector: "rolatech-storage-folder-create", inputs: { name: "name", isPublic: "isPublic" }, outputs: { output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field>\n <mat-label>\u540D\u79F0</mat-label>\n <input matInput placeholder=\"\u8F93\u5165\u540D\u79F0\" [(ngModel)]=\"name\" />\n </mat-form-field>\n <div class=\"flex flex-col\">\n <mat-checkbox class=\"example-margin\" [(ngModel)]=\"isPublic\">\u516C\u5F00\u8D44\u6E90</mat-checkbox>\n <span class=\"text-sm text-gray-500 ml-2 mt-1\">\u6587\u4EF6\u5939\u4E3A\u56FE\u7247\u5185\u5BB9\u65F6, \u8BF7\u53D6\u6D88\u52FE\u9009\u6B64\u9879</span>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] });
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StorageFolderCreateComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: 'rolatech-storage-folder-create', standalone: true, imports: [MatFormFieldModule, MatInputModule, FormsModule, MatCheckboxModule], template: "<div>\n <mat-form-field>\n <mat-label>\u540D\u79F0</mat-label>\n <input matInput placeholder=\"\u8F93\u5165\u540D\u79F0\" [(ngModel)]=\"name\" />\n </mat-form-field>\n <div class=\"flex flex-col\">\n <mat-checkbox class=\"example-margin\" [(ngModel)]=\"isPublic\">\u516C\u5F00\u8D44\u6E90</mat-checkbox>\n <span class=\"text-sm text-gray-500 ml-2 mt-1\">\u6587\u4EF6\u5939\u4E3A\u56FE\u7247\u5185\u5BB9\u65F6, \u8BF7\u53D6\u6D88\u52FE\u9009\u6B64\u9879</span>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
25
+ }], propDecorators: { name: [{
26
+ type: Input
27
+ }], isPublic: [{
28
+ type: Input
29
+ }], output: [{
30
+ type: Output
31
+ }] } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1mb2xkZXItY3JlYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvc3RvcmFnZS1mb2xkZXItY3JlYXRlL3N0b3JhZ2UtZm9sZGVyLWNyZWF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL3N0b3JhZ2UtZm9sZGVyLWNyZWF0ZS9zdG9yYWdlLWZvbGRlci1jcmVhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFTbEUsTUFBTSxPQUFPLDRCQUE0QjtJQUM5QixJQUFJLENBQVU7SUFDZCxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2YsTUFBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRTlELFFBQVEsS0FBVSxDQUFDO0lBQ25CLFNBQVM7UUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO3VHQVJVLDRCQUE0QjsyRkFBNUIsNEJBQTRCLHlLQ2J6QyxnZkFVQSxxRkRDWSxrQkFBa0IsMFNBQUUsY0FBYywwV0FBRSxXQUFXLDhtQkFBRSxpQkFBaUI7OzJGQUVqRSw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0UsZ0NBQWdDLGNBRzlCLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLENBQUM7OEJBR3BFLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRG9DaGVjaywgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1zdG9yYWdlLWZvbGRlci1jcmVhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RvcmFnZS1mb2xkZXItY3JlYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3RvcmFnZS1mb2xkZXItY3JlYXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgTWF0Q2hlY2tib3hNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTdG9yYWdlRm9sZGVyQ3JlYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrIHtcbiAgQElucHV0KCkgbmFtZSE6IHN0cmluZztcbiAgQElucHV0KCkgaXNQdWJsaWMgPSB0cnVlO1xuICBAT3V0cHV0KCkgb3V0cHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIHRoaXMub3V0cHV0LmVtaXQoeyBuYW1lOiB0aGlzLm5hbWUsIGlzUHVibGljOiB0aGlzLmlzUHVibGljIH0pO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1sYWJlbD7lkI3np7A8L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCLovpPlhaXlkI3np7BcIiBbKG5nTW9kZWwpXT1cIm5hbWVcIiAvPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJleGFtcGxlLW1hcmdpblwiIFsobmdNb2RlbCldPVwiaXNQdWJsaWNcIj7lhazlvIDotYTmupA8L21hdC1jaGVja2JveD5cbiAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTUwMCBtbC0yIG10LTFcIj7mlofku7blpLnkuLrlm77niYflhoXlrrnml7YsIOivt+WPlua2iOWLvumAieatpOmhuTwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,73 @@
1
+ import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, PLATFORM_ID, Renderer2, ViewEncapsulation, inject, } from '@angular/core';
2
+ import { CommonModule, isPlatformBrowser } from '@angular/common';
3
+ import { RouterLink } from '@angular/router';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatIcon } from '@angular/material/icon';
6
+ import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
7
+ import { map, shareReplay } from 'rxjs';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "@angular/material/button";
11
+ export class TopbarComponent {
12
+ hostId = 'rolatech-topbar';
13
+ hasClass = true;
14
+ title = '';
15
+ subtitle = '';
16
+ persistent = false;
17
+ toggle = new EventEmitter();
18
+ el = inject(ElementRef);
19
+ renderer = inject(Renderer2);
20
+ platformId = inject(PLATFORM_ID);
21
+ breakpointObserver = inject(BreakpointObserver);
22
+ isHandset$;
23
+ constructor() {
24
+ this.isHandset$ = this.breakpointObserver.observe([Breakpoints.Small, Breakpoints.HandsetPortrait]).pipe(map((result) => result.matches), shareReplay());
25
+ }
26
+ ngOnInit() {
27
+ this.setMenuIconVisible();
28
+ }
29
+ setMenuIconVisible() {
30
+ if (this.persistent) {
31
+ return;
32
+ }
33
+ if (isPlatformBrowser(this.platformId)) {
34
+ this.breakpointObserver
35
+ .observe(Breakpoints.Handset)
36
+ .pipe(map((result) => result.matches))
37
+ .subscribe({
38
+ next: (res) => {
39
+ if (res) {
40
+ this.renderer.removeAttribute(this.el.nativeElement, 'persistent');
41
+ }
42
+ else {
43
+ this.renderer.setAttribute(this.el.nativeElement, 'persistent', '');
44
+ }
45
+ },
46
+ });
47
+ }
48
+ }
49
+ onToggle() {
50
+ this.toggle.emit();
51
+ }
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: TopbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
53
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: TopbarComponent, isStandalone: true, selector: "rolatech-topbar", inputs: { title: "title", subtitle: "subtitle", persistent: "persistent" }, outputs: { toggle: "toggle" }, host: { properties: { "id": "this.hostId", "class.rolatech-topbar": "this.hasClass" } }, ngImport: i0, template: "<div class=\"h-14 sm:h-16 px-4 flex items-center\">\n @if (persistent || (isHandset$ | async)) {\n <button id=\"topbar-menu-button\" mat-icon-button class=\"flex\" onclick=\"this.blur()\" (click)=\"onToggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n }\n\n <div class=\"cursor-pointer\" routerLink=\"/\">\n <div class=\"text-black text-lg sm:text-xl font-bold\">\n <span class=\"text-orange-600\">{{ title }}</span>\n <span>{{ subtitle }}</span>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: ["rolatech-topbar{position:fixed;top:0;width:100%;z-index:2020;transform:translateY(0);transition:transform .3s ease;background:var(--rolatech-topbar-background-color, #fff);color:var(--rolatech-topbar-color, #000)}rolatech-topbar:not(:has(#topbar-menu-button)){padding-left:16px}rolatech-app-layout rolatech-app-drawer[persistent][opened]~rolatech-topbar{margin-left:256px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: TopbarComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'rolatech-topbar', standalone: true, imports: [CommonModule, RouterLink, MatButtonModule, MatIcon], encapsulation: ViewEncapsulation.None, template: "<div class=\"h-14 sm:h-16 px-4 flex items-center\">\n @if (persistent || (isHandset$ | async)) {\n <button id=\"topbar-menu-button\" mat-icon-button class=\"flex\" onclick=\"this.blur()\" (click)=\"onToggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n }\n\n <div class=\"cursor-pointer\" routerLink=\"/\">\n <div class=\"text-black text-lg sm:text-xl font-bold\">\n <span class=\"text-orange-600\">{{ title }}</span>\n <span>{{ subtitle }}</span>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: ["rolatech-topbar{position:fixed;top:0;width:100%;z-index:2020;transform:translateY(0);transition:transform .3s ease;background:var(--rolatech-topbar-background-color, #fff);color:var(--rolatech-topbar-color, #000)}rolatech-topbar:not(:has(#topbar-menu-button)){padding-left:16px}rolatech-app-layout rolatech-app-drawer[persistent][opened]~rolatech-topbar{margin-left:256px}\n"] }]
58
+ }], ctorParameters: () => [], propDecorators: { hostId: [{
59
+ type: HostBinding,
60
+ args: ['id']
61
+ }], hasClass: [{
62
+ type: HostBinding,
63
+ args: ['class.rolatech-topbar']
64
+ }], title: [{
65
+ type: Input
66
+ }], subtitle: [{
67
+ type: Input
68
+ }], persistent: [{
69
+ type: Input
70
+ }], toggle: [{
71
+ type: Output
72
+ }] } });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvdG9wYmFyL3RvcGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL3RvcGJhci90b3BiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBYyxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBVXBELE1BQU0sT0FBTyxlQUFlO0lBQ1AsTUFBTSxHQUFHLGlCQUFpQixDQUFDO0lBQ1IsUUFBUSxHQUFHLElBQUksQ0FBQztJQUM3QyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbEIsTUFBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBQzlELEVBQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QixVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2hELFVBQVUsQ0FBc0I7SUFDaEM7UUFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEcsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQy9CLFdBQVcsRUFBRSxDQUNkLENBQUM7SUFDSixDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxrQkFBa0I7aUJBQ3BCLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO2lCQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ3JDLFNBQVMsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDWixJQUFJLEdBQUcsRUFBRSxDQUFDO3dCQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO29CQUNyRSxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN0RSxDQUFDO2dCQUNILENBQUM7YUFDRixDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7dUdBM0NVLGVBQWU7MkZBQWYsZUFBZSwrUUM3QjVCLDBoQkFlQSwrYURTWSxZQUFZLG9GQUFFLFVBQVUsbU9BQUUsZUFBZSw0SUFBRSxPQUFPOzsyRkFLakQsZUFBZTtrQkFSM0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsaUJBRzlDLGlCQUFpQixDQUFDLElBQUk7d0RBR2xCLE1BQU07c0JBQXhCLFdBQVc7dUJBQUMsSUFBSTtnQkFDcUIsUUFBUTtzQkFBN0MsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBQzNCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBSZW5kZXJlcjIsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtdG9wYmFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTGluaywgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvcGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi90b3BiYXIuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBUb3BiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASG9zdEJpbmRpbmcoJ2lkJykgaG9zdElkID0gJ3JvbGF0ZWNoLXRvcGJhcic7XG4gIEBIb3N0QmluZGluZygnY2xhc3Mucm9sYXRlY2gtdG9wYmFyJykgaGFzQ2xhc3MgPSB0cnVlO1xuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xuICBASW5wdXQoKSBzdWJ0aXRsZSA9ICcnO1xuICBASW5wdXQoKSBwZXJzaXN0ZW50ID0gZmFsc2U7XG4gIEBPdXRwdXQoKSB0b2dnbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGVsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XG4gIGlzSGFuZHNldCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNIYW5kc2V0JCA9IHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoW0JyZWFrcG9pbnRzLlNtYWxsLCBCcmVha3BvaW50cy5IYW5kc2V0UG9ydHJhaXRdKS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQpID0+IHJlc3VsdC5tYXRjaGVzKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldE1lbnVJY29uVmlzaWJsZSgpO1xuICB9XG4gIHNldE1lbnVJY29uVmlzaWJsZSgpIHtcbiAgICBpZiAodGhpcy5wZXJzaXN0ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgICAub2JzZXJ2ZShCcmVha3BvaW50cy5IYW5kc2V0KVxuICAgICAgICAucGlwZShtYXAoKHJlc3VsdCkgPT4gcmVzdWx0Lm1hdGNoZXMpKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3BlcnNpc3RlbnQnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3BlcnNpc3RlbnQnLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25Ub2dnbGUoKSB7XG4gICAgdGhpcy50b2dnbGUuZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaC0xNCBzbTpoLTE2IHB4LTQgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgQGlmIChwZXJzaXN0ZW50IHx8IChpc0hhbmRzZXQkIHwgYXN5bmMpKSB7XG4gICAgPGJ1dHRvbiBpZD1cInRvcGJhci1tZW51LWJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImZsZXhcIiBvbmNsaWNrPVwidGhpcy5ibHVyKClcIiAoY2xpY2spPVwib25Ub2dnbGUoKVwiPlxuICAgICAgPG1hdC1pY29uPm1lbnU8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICB9XG5cbiAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgcm91dGVyTGluaz1cIi9cIj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1ibGFjayB0ZXh0LWxnIHNtOnRleHQteGwgZm9udC1ib2xkXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtb3JhbmdlLTYwMFwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgICAgPHNwYW4+e3sgc3VidGl0bGUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { Component, Input, PLATFORM_ID, inject } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MatMenuModule } from '@angular/material/menu';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatListModule } from '@angular/material/list';
6
+ import { MatSidenavModule } from '@angular/material/sidenav';
7
+ import { RouterLink, RouterOutlet } from '@angular/router';
8
+ import { MenuUserComponent } from '../menu-user/menu-user.component';
9
+ import { APP_CONFIG } from '@rolatech/angular-common';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/material/menu";
12
+ export class TopbarAvatarMenuComponent {
13
+ environment = inject(APP_CONFIG);
14
+ platformId = inject(PLATFORM_ID);
15
+ menu;
16
+ user;
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: TopbarAvatarMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: TopbarAvatarMenuComponent, isStandalone: true, selector: "rolatech-topbar-avatar-menu", inputs: { menu: "menu", user: "user" }, ngImport: i0, template: "<div>\n @if (user) {\n <div class=\"flex\">\n <a\n class=\"flex justify-center items-center rounded-full overflow-hidden cursor-pointer hover:outline-gray-200 outline outline-transparent outline-4\"\n [matMenuTriggerFor]=\"menu\"\n >\n <div class=\"bg-orange-600 w-9 h-9\">\n @if (user.avatar) {\n <img class=\"w-9 h-9 object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </a>\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "directive", type: i1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] });
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: TopbarAvatarMenuComponent, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'rolatech-topbar-avatar-menu', standalone: true, imports: [
23
+ CommonModule,
24
+ MatSidenavModule,
25
+ RouterLink,
26
+ MatListModule,
27
+ MatIconModule,
28
+ MatMenuModule,
29
+ RouterOutlet,
30
+ MenuUserComponent,
31
+ ], template: "<div>\n @if (user) {\n <div class=\"flex\">\n <a\n class=\"flex justify-center items-center rounded-full overflow-hidden cursor-pointer hover:outline-gray-200 outline outline-transparent outline-4\"\n [matMenuTriggerFor]=\"menu\"\n >\n <div class=\"bg-orange-600 w-9 h-9\">\n @if (user.avatar) {\n <img class=\"w-9 h-9 object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </a>\n </div>\n }\n</div>\n" }]
32
+ }], propDecorators: { menu: [{
33
+ type: Input
34
+ }], user: [{
35
+ type: Input
36
+ }] } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLWF2YXRhci1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvdG9wYmFyLWF2YXRhci1tZW51L3RvcGJhci1hdmF0YXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL3RvcGJhci1hdmF0YXItbWVudS90b3BiYXItYXZhdGFyLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFrQnRELE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hCLElBQUksQ0FBcUI7SUFDekIsSUFBSSxDQUFPO3VHQUpULHlCQUF5QjsyRkFBekIseUJBQXlCLCtIQzFCdEMsbWVBZ0JBLHlEREZJLFlBQVksOEJBQ1osZ0JBQWdCLDhCQUVoQixhQUFhLDhCQUNiLGFBQWEsOEJBQ2IsYUFBYTs7MkZBT0oseUJBQXlCO2tCQWhCckMsU0FBUzsrQkFDRSw2QkFBNkIsY0FDM0IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osaUJBQWlCO3FCQUNsQjs4QkFPUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgUExBVEZPUk1fSUQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUsIE1hdE1lbnVQYW5lbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgUm91dGVyTGluaywgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1lbnVVc2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vbWVudS11c2VyL21lbnUtdXNlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVBQX0NPTkZJRyB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLXRvcGJhci1hdmF0YXItbWVudScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICBSb3V0ZXJMaW5rLFxuICAgIE1hdExpc3RNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIFJvdXRlck91dGxldCxcbiAgICBNZW51VXNlckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvcGJhci1hdmF0YXItbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi90b3BiYXItYXZhdGFyLW1lbnUuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBUb3BiYXJBdmF0YXJNZW51Q29tcG9uZW50IHtcbiAgZW52aXJvbm1lbnQgPSBpbmplY3QoQVBQX0NPTkZJRyk7XG4gIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBASW5wdXQoKSBtZW51ITogTWF0TWVudVBhbmVsPGFueT47XG4gIEBJbnB1dCgpIHVzZXIhOiBhbnk7XG59XG4iLCI8ZGl2PlxuICBAaWYgKHVzZXIpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgPGFcbiAgICAgICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciByb3VuZGVkLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIGN1cnNvci1wb2ludGVyIGhvdmVyOm91dGxpbmUtZ3JheS0yMDAgb3V0bGluZSBvdXRsaW5lLXRyYW5zcGFyZW50IG91dGxpbmUtNFwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJnLW9yYW5nZS02MDAgdy05IGgtOVwiPlxuICAgICAgICAgIEBpZiAodXNlci5hdmF0YXIpIHtcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTkgaC05IG9iamVjdC1jb3ZlclwiIFtzcmNdPVwidXNlci5hdmF0YXJcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
@@ -0,0 +1,37 @@
1
+ import { Component, HostListener, inject } from '@angular/core';
2
+ import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
3
+ import { DomSanitizer } from '@angular/platform-browser';
4
+ import { APP_CONFIG } from '@rolatech/angular-common';
5
+ import * as i0 from "@angular/core";
6
+ export class WechatConnectDialogComponent {
7
+ dialogRef = inject(MatDialogRef);
8
+ environment = inject(APP_CONFIG);
9
+ data = inject(MAT_DIALOG_DATA);
10
+ urlSafe;
11
+ sanitizer = inject(DomSanitizer);
12
+ baseUrl = 'https://open.weixin.qq.com/connect/qrconnect';
13
+ constructor() {
14
+ const href = 'https://cloudcache.tencent-cloud.com/open_proj/proj_qcloud_v2/gateway/login-regist/css/link-wx-login.css';
15
+ const encodedURI = encodeURI(this.data.redirect_uri);
16
+ const src = `${this.baseUrl}?appid=${this.data.appid}&response_type=code&self_redirect=true&scope=snsapi_login&href=${href}&redirect_uri=${encodedURI}&state=${this.data.state}#wechat_redirect`;
17
+ this.urlSafe = this.sanitizer.bypassSecurityTrustResourceUrl(src);
18
+ }
19
+ onNoClick() {
20
+ this.dialogRef.close();
21
+ }
22
+ onLogin(event) {
23
+ if (event.origin === this.environment.accountsUrl && event.data.code === 200) {
24
+ this.dialogRef.close();
25
+ }
26
+ }
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: WechatConnectDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: WechatConnectDialogComponent, isStandalone: true, selector: "rolatech-wechat-connect-dialog", host: { listeners: { "window:message": "onLogin($event)" } }, ngImport: i0, template: "<div class=\"flex flex-col p-3\">\n <div class=\"text-xl font-bold\">\u626B\u7801\u7ED1\u5B9A\u5FAE\u4FE1\uFF0C\u63D0\u5347\u8D26\u53F7\u5B89\u5168\u548C\u4F7F\u7528\u4FBF\u5229\u6027</div>\n <div class=\"w-[190px] h-[190px]\">\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\"></iframe>\n <div></div>\n </div>\n</div>\n", styles: ["*{margin:0;padding:0}.normalPanel .panelContent{width:188px;height:188px}.normalPanel .wrp_code{position:relative;width:188px;height:188px;margin:0}.impowerBox .title,.normalPanel .info{display:none}.impowerBox .qrcode{margin-top:0;border:0;width:188px;height:188px}#MAXIM{content:\"veg20170418191511\"}mat-mdc-dialog-content mdc-dialog__content{padding:0}\n"] });
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: WechatConnectDialogComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'rolatech-wechat-connect-dialog', standalone: true, template: "<div class=\"flex flex-col p-3\">\n <div class=\"text-xl font-bold\">\u626B\u7801\u7ED1\u5B9A\u5FAE\u4FE1\uFF0C\u63D0\u5347\u8D26\u53F7\u5B89\u5168\u548C\u4F7F\u7528\u4FBF\u5229\u6027</div>\n <div class=\"w-[190px] h-[190px]\">\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\"></iframe>\n <div></div>\n </div>\n</div>\n", styles: ["*{margin:0;padding:0}.normalPanel .panelContent{width:188px;height:188px}.normalPanel .wrp_code{position:relative;width:188px;height:188px;margin:0}.impowerBox .title,.normalPanel .info{display:none}.impowerBox .qrcode{margin-top:0;border:0;width:188px;height:188px}#MAXIM{content:\"veg20170418191511\"}mat-mdc-dialog-content mdc-dialog__content{padding:0}\n"] }]
33
+ }], ctorParameters: () => [], propDecorators: { onLogin: [{
34
+ type: HostListener,
35
+ args: ['window:message', ['$event']]
36
+ }] } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VjaGF0LWNvbm5lY3QtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvd2VjaGF0LWNvbm5lY3QtZGlhbG9nL3dlY2hhdC1jb25uZWN0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL3dlY2hhdC1jb25uZWN0LWRpYWxvZy93ZWNoYXQtY29ubmVjdC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBUXRELE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFrQjtJQUN6QixTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sR0FBRyw4Q0FBOEMsQ0FBQztJQUV6RDtRQUNFLE1BQU0sSUFBSSxHQUFHLDBHQUEwRyxDQUFDO1FBQ3hILE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JELE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssa0VBQWtFLElBQUksaUJBQWlCLFVBQVUsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssa0JBQWtCLENBQUM7UUFDak0sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBR0QsT0FBTyxDQUFDLEtBQVU7UUFDaEIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzdFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7dUdBeEJVLDRCQUE0QjsyRkFBNUIsNEJBQTRCLHdKQ1h6Qyx3WEFPQTs7MkZESWEsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNFLGdDQUFnQyxjQUc5QixJQUFJO3dEQXNCaEIsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgU2FmZVJlc291cmNlVXJsLCBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFQUF9DT05GSUcgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC13ZWNoYXQtY29ubmVjdC1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2VjaGF0LWNvbm5lY3QtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2VjaGF0LWNvbm5lY3QtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFdlY2hhdENvbm5lY3REaWFsb2dDb21wb25lbnQge1xuICBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmKTtcbiAgZW52aXJvbm1lbnQgPSBpbmplY3QoQVBQX0NPTkZJRyk7XG4gIGRhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKTtcbiAgdXJsU2FmZTogU2FmZVJlc291cmNlVXJsO1xuICBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgYmFzZVVybCA9ICdodHRwczovL29wZW4ud2VpeGluLnFxLmNvbS9jb25uZWN0L3FyY29ubmVjdCc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgaHJlZiA9ICdodHRwczovL2Nsb3VkY2FjaGUudGVuY2VudC1jbG91ZC5jb20vb3Blbl9wcm9qL3Byb2pfcWNsb3VkX3YyL2dhdGV3YXkvbG9naW4tcmVnaXN0L2Nzcy9saW5rLXd4LWxvZ2luLmNzcyc7XG4gICAgY29uc3QgZW5jb2RlZFVSSSA9IGVuY29kZVVSSSh0aGlzLmRhdGEucmVkaXJlY3RfdXJpKTtcbiAgICBjb25zdCBzcmMgPSBgJHt0aGlzLmJhc2VVcmx9P2FwcGlkPSR7dGhpcy5kYXRhLmFwcGlkfSZyZXNwb25zZV90eXBlPWNvZGUmc2VsZl9yZWRpcmVjdD10cnVlJnNjb3BlPXNuc2FwaV9sb2dpbiZocmVmPSR7aHJlZn0mcmVkaXJlY3RfdXJpPSR7ZW5jb2RlZFVSSX0mc3RhdGU9JHt0aGlzLmRhdGEuc3RhdGV9I3dlY2hhdF9yZWRpcmVjdGA7XG4gICAgdGhpcy51cmxTYWZlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHNyYyk7XG4gIH1cblxuICBvbk5vQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcbiAgb25Mb2dpbihldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gdGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybCAmJiBldmVudC5kYXRhLmNvZGUgPT09IDIwMCkge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHAtM1wiPlxuICA8ZGl2IGNsYXNzPVwidGV4dC14bCBmb250LWJvbGRcIj7miavnoIHnu5Hlrprlvq7kv6HvvIzmj5DljYfotKblj7flronlhajlkozkvb/nlKjkvr/liKnmgKc8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInctWzE5MHB4XSBoLVsxOTBweF1cIj5cbiAgICA8aWZyYW1lIFtzcmNdPVwidXJsU2FmZVwiIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBpbmxpbmVcIiBzY3JvbGxpbmc9XCJub1wiIGZyYW1lQm9yZGVyPVwibm9cIj48L2lmcmFtZT5cbiAgICA8ZGl2PjwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sYXRlY2gtYW5ndWxhci1jb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL3JvbGF0ZWNoLWFuZ3VsYXItY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==