@rolatech/angular-comment 17.2.8 → 19.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/rolatech-angular-comment.mjs +30 -35
- package/fesm2022/rolatech-angular-comment.mjs.map +1 -1
- package/lib/services/comment.service.d.ts +1 -1
- package/package.json +8 -6
- package/themes/_default.scss +1 -1
- package/esm2022/index.mjs +0 -4
- package/esm2022/lib/components/comment-action/comment-action.component.mjs +0 -55
- package/esm2022/lib/components/comment-item/comment-item.component.mjs +0 -108
- package/esm2022/lib/components/comment-replies/comment-replies.component.mjs +0 -41
- package/esm2022/lib/components/comments/comments.component.mjs +0 -54
- package/esm2022/lib/components/comments-header/comments-header.component.mjs +0 -72
- package/esm2022/lib/components/index.mjs +0 -5
- package/esm2022/lib/components/reply-item/reply-item.component.mjs +0 -67
- package/esm2022/lib/interfaces/comment.interface.mjs +0 -6
- package/esm2022/lib/interfaces/index.mjs +0 -2
- package/esm2022/lib/services/comment.service.mjs +0 -206
- package/esm2022/lib/services/index.mjs +0 -2
- package/esm2022/rolatech-angular-comment.mjs +0 -5
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { Component, effect, inject, input } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
-
import { MatInputModule } from '@angular/material/input';
|
|
6
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
-
import { FormsModule } from '@angular/forms';
|
|
8
|
-
import { CommentRepliesComponent } from '../comment-replies/comment-replies.component';
|
|
9
|
-
import { CommentActionComponent } from '../comment-action/comment-action.component';
|
|
10
|
-
import { CommentService } from '../../services';
|
|
11
|
-
import { TimePipe } from '@rolatech/angular-common';
|
|
12
|
-
import { MatMenuModule } from '@angular/material/menu';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@angular/common";
|
|
15
|
-
import * as i2 from "@angular/material/icon";
|
|
16
|
-
import * as i3 from "@angular/material/menu";
|
|
17
|
-
export class CommentItemComponent {
|
|
18
|
-
constructor() {
|
|
19
|
-
this.commentService = inject(CommentService);
|
|
20
|
-
this.item = input.required();
|
|
21
|
-
this.show = false;
|
|
22
|
-
this.loading = false;
|
|
23
|
-
effect(() => {
|
|
24
|
-
this.comment = this.item();
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
ngOnInit() {
|
|
28
|
-
// this.countRepliesByCommentId(this.comment.id!);
|
|
29
|
-
}
|
|
30
|
-
onFocus(event) {
|
|
31
|
-
this.show = true;
|
|
32
|
-
}
|
|
33
|
-
onCommentReply(content) {
|
|
34
|
-
const data = {
|
|
35
|
-
content,
|
|
36
|
-
};
|
|
37
|
-
const id = this.comment.id;
|
|
38
|
-
this.commentService.reply(id, data).subscribe({
|
|
39
|
-
next: (res) => {
|
|
40
|
-
this.comment.repliesCount++;
|
|
41
|
-
this.comment.replies = this.comment.replies ? this.comment.replies : [];
|
|
42
|
-
this.comment.replies.push(res);
|
|
43
|
-
this.commentService.onCommentLoading.emit(false);
|
|
44
|
-
this.commentService.onCommentReply.emit(res);
|
|
45
|
-
},
|
|
46
|
-
error: (error) => {
|
|
47
|
-
this.commentService.onCommentLoading.emit(false);
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
countRepliesByCommentId(commentId) {
|
|
52
|
-
this.commentService.countRepliesByCommentId(commentId).subscribe({
|
|
53
|
-
next: (res) => {
|
|
54
|
-
this.comment.repliesCount = res.data;
|
|
55
|
-
},
|
|
56
|
-
error: (error) => { },
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
onFetchReplies(commentId) {
|
|
60
|
-
this.loading = true;
|
|
61
|
-
this.commentService.findRepliesByCommentId(commentId).subscribe({
|
|
62
|
-
next: (res) => {
|
|
63
|
-
this.comment.replies = res.data;
|
|
64
|
-
},
|
|
65
|
-
error: (error) => {
|
|
66
|
-
this.loading = false;
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
onThumbsUp() {
|
|
71
|
-
this.commentService.commentThumbsUp(this.comment.id).subscribe({
|
|
72
|
-
next: (res) => {
|
|
73
|
-
this.comment.thumbsUpCount = res.data.thumbsUpCount;
|
|
74
|
-
this.comment.thumbsDownCount = res.data.thumbsDownCount;
|
|
75
|
-
this.comment.like = true;
|
|
76
|
-
this.comment.dislike = false;
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
onThumbsDown() {
|
|
81
|
-
this.commentService.commentThumbsDown(this.comment.id).subscribe({
|
|
82
|
-
next: (res) => {
|
|
83
|
-
this.comment.thumbsUpCount = res.data.thumbsUpCount;
|
|
84
|
-
this.comment.thumbsDownCount = res.data.thumbsDownCount;
|
|
85
|
-
this.comment.like = false;
|
|
86
|
-
this.comment.dislike = true;
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CommentItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
91
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: CommentItemComponent, isStandalone: true, selector: "rolatech-comment-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"block w-full\">\n @if (comment) {\n <div class=\"flex group\">\n <div class=\"bg-orange-600 min-w-10 min-h-10 mr-4 h-fit rounded-full\">\n @if (comment.user && comment.user.avatar) {\n <img class=\"w-10 h-10 rounded-full\" [src]=\"comment.user.avatar\" />\n }\n </div>\n <div class=\"flex flex-col w-full\">\n <a class=\"mb-0.5\">\n @if (comment.user) {\n <span class=\"text-md font-semibold mr-1\">@{{ comment.user.username }}</span>\n }\n <span class=\"text-sm opacity-70\">{{ comment.createdAt | time }}</span>\n </a>\n\n <div [innerText]=\"comment.content\"></div>\n <rolatech-comment-action\n (reply)=\"onCommentReply($event)\"\n [data]=\"comment\"\n (thumbsUp)=\"onThumbsUp()\"\n (thumbsDown)=\"onThumbsDown()\"\n ></rolatech-comment-action>\n </div>\n <div class=\"min-w-9\">\n <button\n class=\"hover:bg-[--rt-10-percent-layer] w-9 h-9 flex items-center justify-center rounded-full group-hover:visible\"\n [ngClass]=\"memnu.menuOpen ? 'visible' : 'invisible'\"\n [matMenuTriggerFor]=\"actionMenu\"\n #memnu=\"matMenuTrigger\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n </div>\n <div>\n <rolatech-comment-replies\n [total]=\"comment.repliesCount\"\n [commentId]=\"comment.id!\"\n [replies]=\"comment.replies!\"\n (fetch)=\"onFetchReplies($event)\"\n ></rolatech-comment-replies>\n </div>\n }\n</div>\n<mat-menu #actionMenu=\"matMenu\">\n <button mat-menu-item>\n <mat-icon>flag</mat-icon>\n <span>\u4E3E\u62A5</span>\n </button>\n</mat-menu>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "component", type: CommentRepliesComponent, selector: "rolatech-comment-replies", inputs: ["total", "replies", "commentId"], outputs: ["totalChange", "repliesChange", "replied", "fetch"] }, { kind: "component", type: CommentActionComponent, selector: "rolatech-comment-action", inputs: ["placeholder", "data"], outputs: ["reply", "thumbsUp", "thumbsDown"] }, { kind: "pipe", type: TimePipe, name: "time" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
|
|
92
|
-
}
|
|
93
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CommentItemComponent, decorators: [{
|
|
94
|
-
type: Component,
|
|
95
|
-
args: [{ selector: 'rolatech-comment-item', standalone: true, imports: [
|
|
96
|
-
CommonModule,
|
|
97
|
-
MatButtonModule,
|
|
98
|
-
MatIconModule,
|
|
99
|
-
FormsModule,
|
|
100
|
-
MatFormFieldModule,
|
|
101
|
-
MatInputModule,
|
|
102
|
-
CommentRepliesComponent,
|
|
103
|
-
CommentActionComponent,
|
|
104
|
-
TimePipe,
|
|
105
|
-
MatMenuModule,
|
|
106
|
-
], template: "<div class=\"block w-full\">\n @if (comment) {\n <div class=\"flex group\">\n <div class=\"bg-orange-600 min-w-10 min-h-10 mr-4 h-fit rounded-full\">\n @if (comment.user && comment.user.avatar) {\n <img class=\"w-10 h-10 rounded-full\" [src]=\"comment.user.avatar\" />\n }\n </div>\n <div class=\"flex flex-col w-full\">\n <a class=\"mb-0.5\">\n @if (comment.user) {\n <span class=\"text-md font-semibold mr-1\">@{{ comment.user.username }}</span>\n }\n <span class=\"text-sm opacity-70\">{{ comment.createdAt | time }}</span>\n </a>\n\n <div [innerText]=\"comment.content\"></div>\n <rolatech-comment-action\n (reply)=\"onCommentReply($event)\"\n [data]=\"comment\"\n (thumbsUp)=\"onThumbsUp()\"\n (thumbsDown)=\"onThumbsDown()\"\n ></rolatech-comment-action>\n </div>\n <div class=\"min-w-9\">\n <button\n class=\"hover:bg-[--rt-10-percent-layer] w-9 h-9 flex items-center justify-center rounded-full group-hover:visible\"\n [ngClass]=\"memnu.menuOpen ? 'visible' : 'invisible'\"\n [matMenuTriggerFor]=\"actionMenu\"\n #memnu=\"matMenuTrigger\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n </div>\n <div>\n <rolatech-comment-replies\n [total]=\"comment.repliesCount\"\n [commentId]=\"comment.id!\"\n [replies]=\"comment.replies!\"\n (fetch)=\"onFetchReplies($event)\"\n ></rolatech-comment-replies>\n </div>\n }\n</div>\n<mat-menu #actionMenu=\"matMenu\">\n <button mat-menu-item>\n <mat-icon>flag</mat-icon>\n <span>\u4E3E\u62A5</span>\n </button>\n</mat-menu>\n", styles: ["mat-form-field{width:100%}\n"] }]
|
|
107
|
-
}], ctorParameters: () => [] });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21tZW50L3NyYy9saWIvY29tcG9uZW50cy9jb21tZW50LWl0ZW0vY29tbWVudC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21tZW50L3NyYy9saWIvY29tcG9uZW50cy9jb21tZW50LWl0ZW0vY29tbWVudC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFvQnZELE1BQU0sT0FBTyxvQkFBb0I7SUFNL0I7UUFMQSxtQkFBYyxH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Y0FBYzt3QkFDZCx1QkFBdUI7d0JBQ3ZCLHNCQUFzQjt3QkFDdEIsUUFBUTt3QkFDUixhQUFhO3FCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbW1lbnQsIFJlcGx5IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbWVudFJlcGxpZXNDb21wb25lbnQgfSBmcm9tICcuLi9jb21tZW50LXJlcGxpZXMvY29tbWVudC1yZXBsaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tZW50QWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbWVudC1hY3Rpb24vY29tbWVudC1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgVGltZVBpcGUgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1jb21tZW50LWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBDb21tZW50UmVwbGllc0NvbXBvbmVudCxcbiAgICBDb21tZW50QWN0aW9uQ29tcG9uZW50LFxuICAgIFRpbWVQaXBlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tZW50LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29tbWVudC1pdGVtLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ29tbWVudEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb21tZW50U2VydmljZSA9IGluamVjdChDb21tZW50U2VydmljZSk7XG4gIGl0ZW0gPSBpbnB1dC5yZXF1aXJlZDxDb21tZW50PigpO1xuICBzaG93ID0gZmFsc2U7XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgY29tbWVudCE6IENvbW1lbnQ7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbW1lbnQgPSB0aGlzLml0ZW0oKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIHRoaXMuY291bnRSZXBsaWVzQnlDb21tZW50SWQodGhpcy5jb21tZW50LmlkISk7XG4gIH1cblxuICBvbkZvY3VzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNob3cgPSB0cnVlO1xuICB9XG4gIG9uQ29tbWVudFJlcGx5KGNvbnRlbnQ6IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBjb250ZW50LFxuICAgIH07XG4gICAgY29uc3QgaWQgPSB0aGlzLmNvbW1lbnQuaWQgYXMgc3RyaW5nO1xuICAgIHRoaXMuY29tbWVudFNlcnZpY2UucmVwbHkoaWQsIGRhdGEpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuY29tbWVudC5yZXBsaWVzQ291bnQrKztcbiAgICAgICAgdGhpcy5jb21tZW50LnJlcGxpZXMgPSB0aGlzLmNvbW1lbnQucmVwbGllcyA/IHRoaXMuY29tbWVudC5yZXBsaWVzIDogW107XG4gICAgICAgIHRoaXMuY29tbWVudC5yZXBsaWVzLnB1c2gocmVzKTtcblxuICAgICAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLm9uQ29tbWVudExvYWRpbmcuZW1pdChmYWxzZSk7XG4gICAgICAgIHRoaXMuY29tbWVudFNlcnZpY2Uub25Db21tZW50UmVwbHkuZW1pdChyZXMpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5jb21tZW50U2VydmljZS5vbkNvbW1lbnRMb2FkaW5nLmVtaXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBjb3VudFJlcGxpZXNCeUNvbW1lbnRJZChjb21tZW50SWQ6IHN0cmluZykge1xuICAgIHRoaXMuY29tbWVudFNlcnZpY2UuY291bnRSZXBsaWVzQnlDb21tZW50SWQoY29tbWVudElkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmNvbW1lbnQucmVwbGllc0NvdW50ID0gcmVzLmRhdGE7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge30sXG4gICAgfSk7XG4gIH1cbiAgb25GZXRjaFJlcGxpZXMoY29tbWVudElkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY29tbWVudFNlcnZpY2UuZmluZFJlcGxpZXNCeUNvbW1lbnRJZChjb21tZW50SWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuY29tbWVudC5yZXBsaWVzID0gcmVzLmRhdGE7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgb25UaHVtYnNVcCgpIHtcbiAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLmNvbW1lbnRUaHVtYnNVcCh0aGlzLmNvbW1lbnQuaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuY29tbWVudC50aHVtYnNVcENvdW50ID0gcmVzLmRhdGEudGh1bWJzVXBDb3VudDtcbiAgICAgICAgdGhpcy5jb21tZW50LnRodW1ic0Rvd25Db3VudCA9IHJlcy5kYXRhLnRodW1ic0Rvd25Db3VudDtcbiAgICAgICAgdGhpcy5jb21tZW50Lmxpa2UgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbW1lbnQuZGlzbGlrZSA9IGZhbHNlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBvblRodW1ic0Rvd24oKSB7XG4gICAgdGhpcy5jb21tZW50U2VydmljZS5jb21tZW50VGh1bWJzRG93bih0aGlzLmNvbW1lbnQuaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuY29tbWVudC50aHVtYnNVcENvdW50ID0gcmVzLmRhdGEudGh1bWJzVXBDb3VudDtcbiAgICAgICAgdGhpcy5jb21tZW50LnRodW1ic0Rvd25Db3VudCA9IHJlcy5kYXRhLnRodW1ic0Rvd25Db3VudDtcbiAgICAgICAgdGhpcy5jb21tZW50Lmxpa2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb21tZW50LmRpc2xpa2UgPSB0cnVlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJsb2NrIHctZnVsbFwiPlxuICBAaWYgKGNvbW1lbnQpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBncm91cFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImJnLW9yYW5nZS02MDAgbWluLXctMTAgbWluLWgtMTAgbXItNCBoLWZpdCByb3VuZGVkLWZ1bGxcIj5cbiAgICAgICAgQGlmIChjb21tZW50LnVzZXIgJiYgY29tbWVudC51c2VyLmF2YXRhcikge1xuICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTEwIGgtMTAgcm91bmRlZC1mdWxsXCIgW3NyY109XCJjb21tZW50LnVzZXIuYXZhdGFyXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LWZ1bGxcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJtYi0wLjVcIj5cbiAgICAgICAgICBAaWYgKGNvbW1lbnQudXNlcikge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW1kIGZvbnQtc2VtaWJvbGQgbXItMVwiPiYjNjQ7e3sgY29tbWVudC51c2VyLnVzZXJuYW1lIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gb3BhY2l0eS03MFwiPnt7IGNvbW1lbnQuY3JlYXRlZEF0IHwgdGltZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIDxkaXYgW2lubmVyVGV4dF09XCJjb21tZW50LmNvbnRlbnRcIj48L2Rpdj5cbiAgICAgICAgPHJvbGF0ZWNoLWNvbW1lbnQtYWN0aW9uXG4gICAgICAgICAgKHJlcGx5KT1cIm9uQ29tbWVudFJlcGx5KCRldmVudClcIlxuICAgICAgICAgIFtkYXRhXT1cImNvbW1lbnRcIlxuICAgICAgICAgICh0aHVtYnNVcCk9XCJvblRodW1ic1VwKClcIlxuICAgICAgICAgICh0aHVtYnNEb3duKT1cIm9uVGh1bWJzRG93bigpXCJcbiAgICAgICAgPjwvcm9sYXRlY2gtY29tbWVudC1hY3Rpb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaW4tdy05XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImhvdmVyOmJnLVstLXJ0LTEwLXBlcmNlbnQtbGF5ZXJdIHctOSBoLTkgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGdyb3VwLWhvdmVyOnZpc2libGVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIm1lbW51Lm1lbnVPcGVuID8gJ3Zpc2libGUnIDogJ2ludmlzaWJsZSdcIlxuICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJhY3Rpb25NZW51XCJcbiAgICAgICAgICAjbWVtbnU9XCJtYXRNZW51VHJpZ2dlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPHJvbGF0ZWNoLWNvbW1lbnQtcmVwbGllc1xuICAgICAgICBbdG90YWxdPVwiY29tbWVudC5yZXBsaWVzQ291bnRcIlxuICAgICAgICBbY29tbWVudElkXT1cImNvbW1lbnQuaWQhXCJcbiAgICAgICAgW3JlcGxpZXNdPVwiY29tbWVudC5yZXBsaWVzIVwiXG4gICAgICAgIChmZXRjaCk9XCJvbkZldGNoUmVwbGllcygkZXZlbnQpXCJcbiAgICAgID48L3JvbGF0ZWNoLWNvbW1lbnQtcmVwbGllcz5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG48bWF0LW1lbnUgI2FjdGlvbk1lbnU9XCJtYXRNZW51XCI+XG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbT5cbiAgICA8bWF0LWljb24+ZmxhZzwvbWF0LWljb24+XG4gICAgPHNwYW4+5Li+5oqlPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbWF0LW1lbnU+XG4iXX0=
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Component, inject, input, model, output } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { ReplyItemComponent } from '../reply-item/reply-item.component';
|
|
4
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
-
import { CommentService } from '../../services';
|
|
7
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/material/icon";
|
|
10
|
-
import * as i2 from "@angular/material/progress-spinner";
|
|
11
|
-
export class CommentRepliesComponent {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.commentService = inject(CommentService);
|
|
14
|
-
this.total = model(0);
|
|
15
|
-
this.replies = model([]);
|
|
16
|
-
this.commentId = input.required();
|
|
17
|
-
this.replied = output();
|
|
18
|
-
this.fetch = output();
|
|
19
|
-
this.expand = false;
|
|
20
|
-
this.loading = false;
|
|
21
|
-
this.fetched = false;
|
|
22
|
-
}
|
|
23
|
-
onFetch() {
|
|
24
|
-
this.expand = !this.expand;
|
|
25
|
-
if (!this.fetched) {
|
|
26
|
-
this.fetched = true;
|
|
27
|
-
this.fetch.emit(this.commentId());
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
onItemReplied(reply) {
|
|
31
|
-
this.total.set(this.total() + 1);
|
|
32
|
-
this.replies().push(reply);
|
|
33
|
-
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CommentRepliesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: CommentRepliesComponent, isStandalone: true, selector: "rolatech-comment-replies", inputs: { total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, replies: { classPropertyName: "replies", publicName: "replies", isSignal: true, isRequired: false, transformFunction: null }, commentId: { classPropertyName: "commentId", publicName: "commentId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { total: "totalChange", replies: "repliesChange", replied: "replied", fetch: "fetch" }, ngImport: i0, template: "<div class=\"block ml-14\">\n @if (total() > 0) {\n <div>\n <button class=\"inline-flex items-center rounded-lg hover:bg-orange-200 py-1 -ml-1\" (click)=\"onFetch()\">\n <mat-icon color=\"primary\">{{ expand ? 'arrow_drop_up' : 'arrow_drop_down' }}</mat-icon>\n <span class=\"mr-2 text-sm text-orange-500\">\u56DE\u590D({{ total() || replies.length }})</span>\n </button>\n <!-- <div class=\"less-button\">\n <button (click)=\"expand = false\">222</button>\n </div> -->\n </div>\n }\n @if (loading) {\n <div class=\"flex items-center justify-center h-20\">\n <mat-spinner diameter=\"32\"></mat-spinner>\n </div>\n }\n\n @if (expand) {\n @for (item of replies(); track $index) {\n <rolatech-reply-item [commentId]=\"commentId()\" [item]=\"item\" (replied)=\"onItemReplied($event)\"></rolatech-reply-item>\n }\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: ReplyItemComponent, selector: "rolatech-reply-item", inputs: ["commentId", "item"], outputs: ["replied"] }] }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CommentRepliesComponent, decorators: [{
|
|
38
|
-
type: Component,
|
|
39
|
-
args: [{ selector: 'rolatech-comment-replies', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule, MatProgressSpinnerModule, ReplyItemComponent], template: "<div class=\"block ml-14\">\n @if (total() > 0) {\n <div>\n <button class=\"inline-flex items-center rounded-lg hover:bg-orange-200 py-1 -ml-1\" (click)=\"onFetch()\">\n <mat-icon color=\"primary\">{{ expand ? 'arrow_drop_up' : 'arrow_drop_down' }}</mat-icon>\n <span class=\"mr-2 text-sm text-orange-500\">\u56DE\u590D({{ total() || replies.length }})</span>\n </button>\n <!-- <div class=\"less-button\">\n <button (click)=\"expand = false\">222</button>\n </div> -->\n </div>\n }\n @if (loading) {\n <div class=\"flex items-center justify-center h-20\">\n <mat-spinner diameter=\"32\"></mat-spinner>\n </div>\n }\n\n @if (expand) {\n @for (item of replies(); track $index) {\n <rolatech-reply-item [commentId]=\"commentId()\" [item]=\"item\" (replied)=\"onItemReplied($event)\"></rolatech-reply-item>\n }\n }\n</div>\n" }]
|
|
40
|
-
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1yZXBsaWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21tZW50L3NyYy9saWIvY29tcG9uZW50cy9jb21tZW50LXJlcGxpZXMvY29tbWVudC1yZXBsaWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21tZW50L3NyYy9saWIvY29tcG9uZW50cy9jb21tZW50LXJlcGxpZXMvY29tbWVudC1yZXBsaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQVM5RSxNQUFNLE9BQU8sdUJBQXVCO0lBUHBDO1FBUUUsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsVUFBSyxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUN6QixZQUFPLEdBQUcsS0FBSyxDQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFFckMsWUFBTyxHQUFHLE1BQU0sRUFBUyxDQUFDO1FBQzFCLFVBQUssR0FBRyxNQUFNLEVBQVUsQ0FBQztRQUV6QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixZQUFPLEdBQUcsS0FBSyxDQUFDO0tBWWpCO0lBWEMsT0FBTztRQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFDRCxhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQXRCVSx1QkFBdUI7a0dBQXZCLHVCQUF1QiwwakJDaEJwQyxrNEJBd0JBLHlERFpZLFlBQVksOEJBQUUsZUFBZSw4QkFBRSxhQUFhLG1MQUFFLHdCQUF3QixtT0FBRSxrQkFBa0I7OzJGQUl6Rix1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIGlucHV0LCBtb2RlbCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVwbHlJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVwbHktaXRlbS9yZXBseS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXBseSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWNvbW1lbnQtcmVwbGllcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLCBSZXBseUl0ZW1Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC1yZXBsaWVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvbW1lbnQtcmVwbGllcy5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIENvbW1lbnRSZXBsaWVzQ29tcG9uZW50IHtcbiAgY29tbWVudFNlcnZpY2UgPSBpbmplY3QoQ29tbWVudFNlcnZpY2UpO1xuICB0b3RhbCA9IG1vZGVsPG51bWJlcj4oMCk7XG4gIHJlcGxpZXMgPSBtb2RlbDxSZXBseVtdPihbXSk7XG4gIGNvbW1lbnRJZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICByZXBsaWVkID0gb3V0cHV0PFJlcGx5PigpO1xuICBmZXRjaCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgZXhwYW5kID0gZmFsc2U7XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgZmV0Y2hlZCA9IGZhbHNlO1xuICBvbkZldGNoKCkge1xuICAgIHRoaXMuZXhwYW5kID0gIXRoaXMuZXhwYW5kO1xuICAgIGlmICghdGhpcy5mZXRjaGVkKSB7XG4gICAgICB0aGlzLmZldGNoZWQgPSB0cnVlO1xuICAgICAgdGhpcy5mZXRjaC5lbWl0KHRoaXMuY29tbWVudElkKCkpO1xuICAgIH1cbiAgfVxuICBvbkl0ZW1SZXBsaWVkKHJlcGx5OiBSZXBseSkge1xuICAgIHRoaXMudG90YWwuc2V0KHRoaXMudG90YWwoKSArIDEpO1xuICAgIHRoaXMucmVwbGllcygpLnB1c2gocmVwbHkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYmxvY2sgbWwtMTRcIj5cbiAgQGlmICh0b3RhbCgpID4gMCkge1xuICAgIDxkaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbGcgaG92ZXI6Ymctb3JhbmdlLTIwMCBweS0xIC1tbC0xXCIgKGNsaWNrKT1cIm9uRmV0Y2goKVwiPlxuICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+e3sgZXhwYW5kID8gJ2Fycm93X2Ryb3BfdXAnIDogJ2Fycm93X2Ryb3BfZG93bicgfX08L21hdC1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTIgdGV4dC1zbSB0ZXh0LW9yYW5nZS01MDBcIj7lm57lpI0oe3sgdG90YWwoKSB8fCByZXBsaWVzLmxlbmd0aCB9fSk8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImxlc3MtYnV0dG9uXCI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImV4cGFuZCA9IGZhbHNlXCI+MjIyPC9idXR0b24+XG4gICAgICA8L2Rpdj4gLS0+XG4gICAgPC9kaXY+XG4gIH1cbiAgQGlmIChsb2FkaW5nKSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGgtMjBcIj5cbiAgICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjMyXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIEBpZiAoZXhwYW5kKSB7XG4gICAgQGZvciAoaXRlbSBvZiByZXBsaWVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgPHJvbGF0ZWNoLXJlcGx5LWl0ZW0gW2NvbW1lbnRJZF09XCJjb21tZW50SWQoKVwiIFtpdGVtXT1cIml0ZW1cIiAocmVwbGllZCk9XCJvbkl0ZW1SZXBsaWVkKCRldmVudClcIj48L3JvbGF0ZWNoLXJlcGx5LWl0ZW0+XG4gICAgfVxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { Component, inject, input } from '@angular/core';
|
|
2
|
-
import { CommentItemComponent } from '../comment-item/comment-item.component';
|
|
3
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
-
import { AngularCommonModule } from '@rolatech/angular-common';
|
|
5
|
-
import { CommentService } from '../../services';
|
|
6
|
-
import { CommentsHeaderComponent } from '../comments-header/comments-header.component';
|
|
7
|
-
import { AuthUserService } from '@rolatech/angular-auth';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export class CommentsComponent {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.commentService = inject(CommentService);
|
|
12
|
-
this.authUserService = inject(AuthUserService);
|
|
13
|
-
this.itemId = input.required();
|
|
14
|
-
this.comments = [];
|
|
15
|
-
this.total = 0;
|
|
16
|
-
this.show = false;
|
|
17
|
-
this.content = '';
|
|
18
|
-
}
|
|
19
|
-
ngOnChanges(changes) {
|
|
20
|
-
const itemId = changes['itemId'].currentValue;
|
|
21
|
-
this.find(itemId);
|
|
22
|
-
}
|
|
23
|
-
find(itemId) {
|
|
24
|
-
this.commentService.findCommentsByItemId(itemId).subscribe({
|
|
25
|
-
next: (res) => {
|
|
26
|
-
this.total = res.meta?.pagination.count;
|
|
27
|
-
this.comments = res.data || [];
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
onComment(content) {
|
|
32
|
-
const data = {
|
|
33
|
-
itemId: this.itemId(),
|
|
34
|
-
content,
|
|
35
|
-
};
|
|
36
|
-
this.commentService.createComment(data).subscribe({
|
|
37
|
-
next: (res) => {
|
|
38
|
-
this.comments.unshift(res);
|
|
39
|
-
this.commentService.onCommentLoading.emit(false);
|
|
40
|
-
this.commentService.onComment.emit(true);
|
|
41
|
-
},
|
|
42
|
-
error: (error) => {
|
|
43
|
-
console.log(error);
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CommentsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: CommentsComponent, isStandalone: true, selector: "rolatech-comments", inputs: { itemId: { classPropertyName: "itemId", publicName: "itemId", isSignal: true, isRequired: true, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\" id=\"comment\">\n <rolatech-comments-header (comment)=\"onComment($event)\" [total]=\"total\"></rolatech-comments-header>\n @for (item of comments; track $index) {\n <rolatech-comment-item [item]=\"item\"></rolatech-comment-item>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "component", type: CommentItemComponent, selector: "rolatech-comment-item", inputs: ["item"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: CommentsHeaderComponent, selector: "rolatech-comments-header", inputs: ["placeholder", "total"], outputs: ["totalChange", "comment"] }] }); }
|
|
49
|
-
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CommentsComponent, decorators: [{
|
|
51
|
-
type: Component,
|
|
52
|
-
args: [{ standalone: true, selector: 'rolatech-comments', imports: [AngularCommonModule, CommentItemComponent, MatButtonModule, CommentsHeaderComponent], template: "<div class=\"flex flex-col gap-3\" id=\"comment\">\n <rolatech-comments-header (comment)=\"onComment($event)\" [total]=\"total\"></rolatech-comments-header>\n @for (item of comments; track $index) {\n <rolatech-comment-item [item]=\"item\"></rolatech-comment-item>\n }\n</div>\n" }]
|
|
53
|
-
}] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1lbnRzL2NvbW1lbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21tZW50L3NyYy9saWIvY29tcG9uZW50cy9jb21tZW50cy9jb21tZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE0QixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQVN6RCxNQUFNLE9BQU8saUJBQWlCO0lBUDlCO1FBUUUsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNsQyxhQUFRLEdBQWMsRUFBRSxDQUFDO1FBQ3pCLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsWUFBTyxHQUFHLEVBQUUsQ0FBQztLQTZCZDtJQTVCQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFJLENBQUMsTUFBYztRQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN6RCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxTQUFTLENBQUMsT0FBWTtRQUNwQixNQUFNLElBQUksR0FBRztZQUNYLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3JCLE9BQU87U0FDUixDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2hELElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQW5DVSxpQkFBaUI7a0dBQWpCLGlCQUFpQix3T0NoQjlCLDhSQU1BLHlERE1ZLG1CQUFtQiwrQkFBRSxvQkFBb0IsbUZBQUUsZUFBZSwrQkFBRSx1QkFBdUI7OzJGQUlsRixpQkFBaUI7a0JBUDdCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLG1CQUFtQixXQUNwQixDQUFDLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tZW50SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1lbnQtaXRlbS9jb21tZW50LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ29tbWVudHNIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21tZW50cy1oZWFkZXIvY29tbWVudHMtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoVXNlclNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1hdXRoJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtY29tbWVudHMnLFxuICBpbXBvcnRzOiBbQW5ndWxhckNvbW1vbk1vZHVsZSwgQ29tbWVudEl0ZW1Db21wb25lbnQsIE1hdEJ1dHRvbk1vZHVsZSwgQ29tbWVudHNIZWFkZXJDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29tbWVudHMuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBDb21tZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIGNvbW1lbnRTZXJ2aWNlID0gaW5qZWN0KENvbW1lbnRTZXJ2aWNlKTtcbiAgYXV0aFVzZXJTZXJ2aWNlID0gaW5qZWN0KEF1dGhVc2VyU2VydmljZSk7XG4gIGl0ZW1JZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgY29tbWVudHM6IENvbW1lbnRbXSA9IFtdO1xuICB0b3RhbCA9IDA7XG4gIHNob3cgPSBmYWxzZTtcbiAgY29udGVudCA9ICcnO1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgaXRlbUlkID0gY2hhbmdlc1snaXRlbUlkJ10uY3VycmVudFZhbHVlO1xuICAgIHRoaXMuZmluZChpdGVtSWQpO1xuICB9XG4gIGZpbmQoaXRlbUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLmZpbmRDb21tZW50c0J5SXRlbUlkKGl0ZW1JZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvdGFsID0gcmVzLm1ldGE/LnBhZ2luYXRpb24uY291bnQ7XG4gICAgICAgIHRoaXMuY29tbWVudHMgPSByZXMuZGF0YSB8fCBbXTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgb25Db21tZW50KGNvbnRlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBpdGVtSWQ6IHRoaXMuaXRlbUlkKCksXG4gICAgICBjb250ZW50LFxuICAgIH07XG4gICAgdGhpcy5jb21tZW50U2VydmljZS5jcmVhdGVDb21tZW50KGRhdGEpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuY29tbWVudHMudW5zaGlmdChyZXMpO1xuICAgICAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLm9uQ29tbWVudExvYWRpbmcuZW1pdChmYWxzZSk7XG4gICAgICAgIHRoaXMuY29tbWVudFNlcnZpY2Uub25Db21tZW50LmVtaXQodHJ1ZSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiIGlkPVwiY29tbWVudFwiPlxuICA8cm9sYXRlY2gtY29tbWVudHMtaGVhZGVyIChjb21tZW50KT1cIm9uQ29tbWVudCgkZXZlbnQpXCIgW3RvdGFsXT1cInRvdGFsXCI+PC9yb2xhdGVjaC1jb21tZW50cy1oZWFkZXI+XG4gIEBmb3IgKGl0ZW0gb2YgY29tbWVudHM7IHRyYWNrICRpbmRleCkge1xuICAgIDxyb2xhdGVjaC1jb21tZW50LWl0ZW0gW2l0ZW1dPVwiaXRlbVwiPjwvcm9sYXRlY2gtY29tbWVudC1pdGVtPlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Component, inject, input, model, output } from '@angular/core';
|
|
2
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
3
|
-
import { AngularCommonModule } from '@rolatech/angular-common';
|
|
4
|
-
import { CommentActionComponent } from '../comment-action/comment-action.component';
|
|
5
|
-
import { CommentItemComponent } from '../comment-item/comment-item.component';
|
|
6
|
-
import { CommentService } from '../../services';
|
|
7
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
8
|
-
import { MatMenuModule } from '@angular/material/menu';
|
|
9
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
10
|
-
import { MatInputModule } from '@angular/material/input';
|
|
11
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@angular/forms";
|
|
14
|
-
import * as i2 from "@angular/material/button";
|
|
15
|
-
import * as i3 from "@angular/material/icon";
|
|
16
|
-
import * as i4 from "@angular/material/menu";
|
|
17
|
-
import * as i5 from "@angular/material/form-field";
|
|
18
|
-
import * as i6 from "@angular/material/input";
|
|
19
|
-
import * as i7 from "@angular/cdk/text-field";
|
|
20
|
-
import * as i8 from "@angular/material/progress-spinner";
|
|
21
|
-
export class CommentsHeaderComponent {
|
|
22
|
-
constructor() {
|
|
23
|
-
this.commentService = inject(CommentService);
|
|
24
|
-
this.placeholder = input('请输入评论内容');
|
|
25
|
-
this.total = model(0);
|
|
26
|
-
this.comment = output();
|
|
27
|
-
this.content = '';
|
|
28
|
-
this.show = false;
|
|
29
|
-
this.loading = false;
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
this.commentService.onComment.subscribe((res) => {
|
|
33
|
-
// this.total++;
|
|
34
|
-
this.total.set(this.total() + 1);
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
onFocus(event) {
|
|
38
|
-
this.show = true;
|
|
39
|
-
}
|
|
40
|
-
onCancel() {
|
|
41
|
-
this.show = false;
|
|
42
|
-
this.content = '';
|
|
43
|
-
}
|
|
44
|
-
onComment() {
|
|
45
|
-
this.loading = true;
|
|
46
|
-
this.comment.emit(this.content);
|
|
47
|
-
this.commentService.onCommentLoading.subscribe((res) => {
|
|
48
|
-
this.loading = res;
|
|
49
|
-
this.show = false;
|
|
50
|
-
this.content = '';
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
fetchByComments() { }
|
|
54
|
-
fetchByReplies() { }
|
|
55
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CommentsHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: CommentsHeaderComponent, isStandalone: true, selector: "rolatech-comments-header", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { total: "totalChange", comment: "comment" }, ngImport: i0, template: "<div class=\"my-2\">\n <div class=\"flex items-center gap-3 py-2\">\n <span class=\"text-lg font-bold\">\u8BC4\u8BBA({{ total() }})</span>\n <button mat-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>sort</mat-icon>\n <span>\u6392\u5E8F</span>\n </button>\n </div>\n\n @if (loading) {\n <div class=\"flex items-center justify-center h-20\">\n <mat-spinner diameter=\"32\"></mat-spinner>\n </div>\n } @else {\n <div class=\"mr-3\">\n <mat-form-field>\n <textarea\n matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"8\"\n [placeholder]=\"placeholder()\"\n [(ngModel)]=\"content\"\n (focus)=\"onFocus($event)\"\n ></textarea>\n </mat-form-field>\n @if (show) {\n <div class=\"flex justify-end items-center gap-2 pr-2\">\n <button mat-button class=\"max-h-9\" (click)=\"onCancel()\">\u53D6\u6D88</button>\n <button mat-flat-button color=\"primary\" class=\"max-h-9\" (click)=\"onComment()\">\u8BC4\u8BBA</button>\n </div>\n }\n </div>\n }\n</div>\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"fetchByReplies()\">\u6700\u591A\u56DE\u590D</button>\n <button mat-menu-item (click)=\"fetchByComments()\">\u6700\u65B0\u8BC4\u8BBA</button>\n</mat-menu>\n", styles: ["mat-form-field{width:100%}textarea:focus{outline:none;box-shadow:none}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.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: "directive", type: i7.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
|
|
57
|
-
}
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CommentsHeaderComponent, decorators: [{
|
|
59
|
-
type: Component,
|
|
60
|
-
args: [{ selector: 'rolatech-comments-header', standalone: true, imports: [
|
|
61
|
-
AngularCommonModule,
|
|
62
|
-
CommentItemComponent,
|
|
63
|
-
MatButtonModule,
|
|
64
|
-
MatIconModule,
|
|
65
|
-
MatMenuModule,
|
|
66
|
-
MatFormFieldModule,
|
|
67
|
-
MatInputModule,
|
|
68
|
-
CommentActionComponent,
|
|
69
|
-
MatProgressSpinnerModule,
|
|
70
|
-
], template: "<div class=\"my-2\">\n <div class=\"flex items-center gap-3 py-2\">\n <span class=\"text-lg font-bold\">\u8BC4\u8BBA({{ total() }})</span>\n <button mat-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>sort</mat-icon>\n <span>\u6392\u5E8F</span>\n </button>\n </div>\n\n @if (loading) {\n <div class=\"flex items-center justify-center h-20\">\n <mat-spinner diameter=\"32\"></mat-spinner>\n </div>\n } @else {\n <div class=\"mr-3\">\n <mat-form-field>\n <textarea\n matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"8\"\n [placeholder]=\"placeholder()\"\n [(ngModel)]=\"content\"\n (focus)=\"onFocus($event)\"\n ></textarea>\n </mat-form-field>\n @if (show) {\n <div class=\"flex justify-end items-center gap-2 pr-2\">\n <button mat-button class=\"max-h-9\" (click)=\"onCancel()\">\u53D6\u6D88</button>\n <button mat-flat-button color=\"primary\" class=\"max-h-9\" (click)=\"onComment()\">\u8BC4\u8BBA</button>\n </div>\n }\n </div>\n }\n</div>\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"fetchByReplies()\">\u6700\u591A\u56DE\u590D</button>\n <button mat-menu-item (click)=\"fetchByComments()\">\u6700\u65B0\u8BC4\u8BBA</button>\n</mat-menu>\n", styles: ["mat-form-field{width:100%}textarea:focus{outline:none;box-shadow:none}\n"] }]
|
|
71
|
-
}] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudHMtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21tZW50L3NyYy9saWIvY29tcG9uZW50cy9jb21tZW50cy1oZWFkZXIvY29tbWVudHMtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21tZW50L3NyYy9saWIvY29tcG9uZW50cy9jb21tZW50cy1oZWFkZXIvY29tbWVudHMtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7QUFtQjlFLE1BQU0sT0FBTyx1QkFBdUI7SUFqQnBDO1FBa0JFLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsS0FBSyxDQUFTLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLFVBQUssR0FBRyxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDekIsWUFBTyxHQUFHLE1BQU0sRUFBVSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsWUFBTyxHQUFHLEtBQUssQ0FBQztLQXlCakI7SUF4QkMsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzlDLGdCQUFnQjtZQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEtBQVU7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGVBQWUsS0FBSSxDQUFDO0lBQ3BCLGNBQWMsS0FBSSxDQUFDOzhHQS9CUix1QkFBdUI7a0dBQXZCLHVCQUF1Qix5WkM3QnBDLHM0Q0F3Q0EsaUlEeEJJLG1CQUFtQiw4bUJBRW5CLGVBQWUsMk5BQ2YsYUFBYSxtTEFDYixhQUFhLDZ2QkFDYixrQkFBa0IseU9BQ2xCLGNBQWMseWtCQUVkLHdCQUF3Qjs7MkZBS2YsdUJBQXVCO2tCQWpCbkMsU0FBUzsrQkFDRSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQO3dCQUNQLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2Qsc0JBQXNCO3dCQUN0Qix3QkFBd0I7cUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCwgaW5wdXQsIG1vZGVsLCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IENvbW1lbnRBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9jb21tZW50LWFjdGlvbi9jb21tZW50LWFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbWVudEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9jb21tZW50LWl0ZW0vY29tbWVudC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtY29tbWVudHMtaGVhZGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFuZ3VsYXJDb21tb25Nb2R1bGUsXG4gICAgQ29tbWVudEl0ZW1Db21wb25lbnQsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgQ29tbWVudEFjdGlvbkNvbXBvbmVudCxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tZW50cy1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29tbWVudHMtaGVhZGVyLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ29tbWVudHNIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb21tZW50U2VydmljZSA9IGluamVjdChDb21tZW50U2VydmljZSk7XG4gIHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPign6K+36L6T5YWl6K+E6K665YaF5a65Jyk7XG4gIHRvdGFsID0gbW9kZWw8bnVtYmVyPigwKTtcbiAgY29tbWVudCA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIGNvbnRlbnQgPSAnJztcbiAgc2hvdyA9IGZhbHNlO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29tbWVudFNlcnZpY2Uub25Db21tZW50LnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAvLyB0aGlzLnRvdGFsKys7XG4gICAgICB0aGlzLnRvdGFsLnNldCh0aGlzLnRvdGFsKCkgKyAxKTtcbiAgICB9KTtcbiAgfVxuICBvbkZvY3VzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNob3cgPSB0cnVlO1xuICB9XG4gIG9uQ2FuY2VsKCkge1xuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xuICAgIHRoaXMuY29udGVudCA9ICcnO1xuICB9XG4gIG9uQ29tbWVudCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY29tbWVudC5lbWl0KHRoaXMuY29udGVudCk7XG4gICAgdGhpcy5jb21tZW50U2VydmljZS5vbkNvbW1lbnRMb2FkaW5nLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSByZXM7XG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29udGVudCA9ICcnO1xuICAgIH0pO1xuICB9XG4gIGZldGNoQnlDb21tZW50cygpIHt9XG4gIGZldGNoQnlSZXBsaWVzKCkge31cbn1cbiIsIjxkaXYgY2xhc3M9XCJteS0yXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweS0yXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZFwiPuivhOiuuih7eyB0b3RhbCgpIH19KTwvc3Bhbj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cbiAgICAgIDxtYXQtaWNvbj5zb3J0PC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuPuaOkuW6jzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgQGlmIChsb2FkaW5nKSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGgtMjBcIj5cbiAgICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjMyXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cIm1yLTNcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG4gICAgICAgICAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiMVwiXG4gICAgICAgICAgY2RrQXV0b3NpemVNYXhSb3dzPVwiOFwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFwiXG4gICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgID48L3RleHRhcmVhPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIEBpZiAoc2hvdykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHItMlwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cIm1heC1oLTlcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPuWPlua2iDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwibWF4LWgtOVwiIChjbGljayk9XCJvbkNvbW1lbnQoKVwiPuivhOiuujwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG48bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZmV0Y2hCeVJlcGxpZXMoKVwiPuacgOWkmuWbnuWkjTwvYnV0dG9uPlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImZldGNoQnlDb21tZW50cygpXCI+5pyA5paw6K+E6K66PC9idXR0b24+XG48L21hdC1tZW51PlxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { CommentsComponent } from './comments/comments.component';
|
|
2
|
-
export { CommentRepliesComponent } from './comment-replies/comment-replies.component';
|
|
3
|
-
export { CommentItemComponent } from './comment-item/comment-item.component';
|
|
4
|
-
export { ReplyItemComponent } from './reply-item/reply-item.component';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tbWVudC9zcmMvbGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDb21tZW50c0NvbXBvbmVudCB9IGZyb20gJy4vY29tbWVudHMvY29tbWVudHMuY29tcG9uZW50JztcbmV4cG9ydCB7IENvbW1lbnRSZXBsaWVzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21tZW50LXJlcGxpZXMvY29tbWVudC1yZXBsaWVzLmNvbXBvbmVudCc7XG5leHBvcnQgeyBDb21tZW50SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tbWVudC1pdGVtL2NvbW1lbnQtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0IHsgUmVwbHlJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9yZXBseS1pdGVtL3JlcGx5LWl0ZW0uY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Component, effect, inject, input, output } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
-
import { CommentActionComponent } from '../comment-action/comment-action.component';
|
|
6
|
-
import { CommentService } from '../../services';
|
|
7
|
-
import { TimePipe } from '@rolatech/angular-common';
|
|
8
|
-
import { MatMenuModule } from '@angular/material/menu';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/common";
|
|
11
|
-
import * as i2 from "@angular/material/icon";
|
|
12
|
-
import * as i3 from "@angular/material/menu";
|
|
13
|
-
export class ReplyItemComponent {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.commentService = inject(CommentService);
|
|
16
|
-
this.commentId = input.required();
|
|
17
|
-
this.item = input.required();
|
|
18
|
-
this.replied = output();
|
|
19
|
-
this.show = false;
|
|
20
|
-
effect(() => {
|
|
21
|
-
this.reply = this.item();
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
onReply(content) {
|
|
25
|
-
const data = {
|
|
26
|
-
replyId: this.reply.id,
|
|
27
|
-
content,
|
|
28
|
-
};
|
|
29
|
-
this.commentService.reply(this.commentId(), data).subscribe({
|
|
30
|
-
next: (res) => {
|
|
31
|
-
this.commentService.onCommentLoading.emit(false);
|
|
32
|
-
this.replied.emit(res);
|
|
33
|
-
},
|
|
34
|
-
error: (error) => {
|
|
35
|
-
this.commentService.onCommentLoading.emit(false);
|
|
36
|
-
console.log(error);
|
|
37
|
-
},
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
onThumbsUp() {
|
|
41
|
-
this.commentService.replyThumbsUp(this.reply.id).subscribe({
|
|
42
|
-
next: (res) => {
|
|
43
|
-
this.reply.thumbsUpCount = res.data.thumbsUpCount;
|
|
44
|
-
this.reply.thumbsDownCount = res.data.thumbsDownCount;
|
|
45
|
-
this.reply.like = true;
|
|
46
|
-
this.reply.dislike = false;
|
|
47
|
-
},
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
onThumbsDown() {
|
|
51
|
-
this.commentService.replyThumbsDown(this.reply.id).subscribe({
|
|
52
|
-
next: (res) => {
|
|
53
|
-
this.reply.thumbsUpCount = res.data.thumbsUpCount;
|
|
54
|
-
this.reply.thumbsDownCount = res.data.thumbsDownCount;
|
|
55
|
-
this.reply.like = false;
|
|
56
|
-
this.reply.dislike = true;
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ReplyItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
61
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ReplyItemComponent, isStandalone: true, selector: "rolatech-reply-item", inputs: { commentId: { classPropertyName: "commentId", publicName: "commentId", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { replied: "replied" }, ngImport: i0, template: "<div class=\"block w-full\">\n @if (reply) {\n <div class=\"flex group\">\n <div class=\"bg-orange-600 min-w-[28px] min-h-[28px] h-fit mr-3 rounded-full\">\n @if (reply.user && reply.user.avatar) {\n <img class=\"w-7 h-7 rounded-full\" [src]=\"reply.user.avatar\" />\n }\n </div>\n <div class=\"flex flex-col w-full\">\n <a class=\"mb-0.5\">\n @if (reply.user) {\n <span class=\"text-md font-semibold mr-1\">@{{ reply.user.username }}</span>\n }\n <span class=\"text-sm opacity-70\">{{ reply.createdAt | time }}</span>\n </a>\n <div [innerText]=\"reply.content\"></div>\n <rolatech-comment-action\n (reply)=\"onReply($event)\"\n [data]=\"reply\"\n (thumbsUp)=\"onThumbsUp()\"\n (thumbsDown)=\"onThumbsDown()\"\n ></rolatech-comment-action>\n </div>\n <div class=\"min-w-10\">\n <button\n class=\"hover:bg-[--rt-10-percent-layer] w-9 h-9 flex items-center justify-center rounded-full group-hover:visible\"\n [ngClass]=\"memnu.menuOpen ? 'visible' : 'invisible'\"\n [matMenuTriggerFor]=\"actionMenu\"\n #memnu=\"matMenuTrigger\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n </div>\n }\n</div>\n<mat-menu #actionMenu=\"matMenu\">\n <button mat-menu-item>\n <mat-icon>flag</mat-icon>\n <span>\u4E3E\u62A5</span>\n </button>\n</mat-menu>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: CommentActionComponent, selector: "rolatech-comment-action", inputs: ["placeholder", "data"], outputs: ["reply", "thumbsUp", "thumbsDown"] }, { kind: "pipe", type: TimePipe, name: "time" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
|
|
62
|
-
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ReplyItemComponent, decorators: [{
|
|
64
|
-
type: Component,
|
|
65
|
-
args: [{ selector: 'rolatech-reply-item', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule, CommentActionComponent, TimePipe, MatMenuModule], template: "<div class=\"block w-full\">\n @if (reply) {\n <div class=\"flex group\">\n <div class=\"bg-orange-600 min-w-[28px] min-h-[28px] h-fit mr-3 rounded-full\">\n @if (reply.user && reply.user.avatar) {\n <img class=\"w-7 h-7 rounded-full\" [src]=\"reply.user.avatar\" />\n }\n </div>\n <div class=\"flex flex-col w-full\">\n <a class=\"mb-0.5\">\n @if (reply.user) {\n <span class=\"text-md font-semibold mr-1\">@{{ reply.user.username }}</span>\n }\n <span class=\"text-sm opacity-70\">{{ reply.createdAt | time }}</span>\n </a>\n <div [innerText]=\"reply.content\"></div>\n <rolatech-comment-action\n (reply)=\"onReply($event)\"\n [data]=\"reply\"\n (thumbsUp)=\"onThumbsUp()\"\n (thumbsDown)=\"onThumbsDown()\"\n ></rolatech-comment-action>\n </div>\n <div class=\"min-w-10\">\n <button\n class=\"hover:bg-[--rt-10-percent-layer] w-9 h-9 flex items-center justify-center rounded-full group-hover:visible\"\n [ngClass]=\"memnu.menuOpen ? 'visible' : 'invisible'\"\n [matMenuTriggerFor]=\"actionMenu\"\n #memnu=\"matMenuTrigger\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n </div>\n }\n</div>\n<mat-menu #actionMenu=\"matMenu\">\n <button mat-menu-item>\n <mat-icon>flag</mat-icon>\n <span>\u4E3E\u62A5</span>\n </button>\n</mat-menu>\n" }]
|
|
66
|
-
}], ctorParameters: () => [] });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbHktaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tbWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVwbHktaXRlbS9yZXBseS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21tZW50L3NyYy9saWIvY29tcG9uZW50cy9yZXBseS1pdGVtL3JlcGx5LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBUXZELE1BQU0sT0FBTyxrQkFBa0I7SUFNN0I7UUFMQSxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QyxjQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ3JDLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFTLENBQUM7UUFDL0IsWUFBTyxHQUFHLE1BQU0sRUFBUyxDQUFDO1FBUTFCLFNBQUksR0FBRyxLQUFLLENBQUM7UUFMWCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsT0FBTyxDQUFDLE9BQWU7UUFDckIsTUFBTSxJQUFJLEdBQUc7WUFDWCxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU87U0FDUixDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMxRCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqRCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsVUFBVTtRQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3pELElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDN0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDM0QsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUM1QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FoRFUsa0JBQWtCO2tHQUFsQixrQkFBa0IsbVhDaEIvQiwyOUNBMENBLHlERDlCWSxZQUFZLDRIQUFFLGVBQWUsOEJBQUUsYUFBYSxvTEFBRSxzQkFBc0IsOElBQUUsUUFBUSw0Q0FBRSxhQUFhOzsyRkFJNUYsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlcGx5IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQ29tbWVudEFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1lbnQtYWN0aW9uL2NvbW1lbnQtYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFRpbWVQaXBlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLXJlcGx5LWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIENvbW1lbnRBY3Rpb25Db21wb25lbnQsIFRpbWVQaXBlLCBNYXRNZW51TW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcGx5LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcmVwbHktaXRlbS5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFJlcGx5SXRlbUNvbXBvbmVudCB7XG4gIGNvbW1lbnRTZXJ2aWNlID0gaW5qZWN0KENvbW1lbnRTZXJ2aWNlKTtcbiAgY29tbWVudElkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBpdGVtID0gaW5wdXQucmVxdWlyZWQ8UmVwbHk+KCk7XG4gIHJlcGxpZWQgPSBvdXRwdXQ8UmVwbHk+KCk7XG4gIHJlcGx5ITogUmVwbHk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnJlcGx5ID0gdGhpcy5pdGVtKCk7XG4gICAgfSk7XG4gIH1cblxuICBzaG93ID0gZmFsc2U7XG4gIG9uUmVwbHkoY29udGVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIHJlcGx5SWQ6IHRoaXMucmVwbHkuaWQsXG4gICAgICBjb250ZW50LFxuICAgIH07XG4gICAgdGhpcy5jb21tZW50U2VydmljZS5yZXBseSh0aGlzLmNvbW1lbnRJZCgpLCBkYXRhKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLm9uQ29tbWVudExvYWRpbmcuZW1pdChmYWxzZSk7XG4gICAgICAgIHRoaXMucmVwbGllZC5lbWl0KHJlcyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLm9uQ29tbWVudExvYWRpbmcuZW1pdChmYWxzZSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgb25UaHVtYnNVcCgpIHtcbiAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLnJlcGx5VGh1bWJzVXAodGhpcy5yZXBseS5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5yZXBseS50aHVtYnNVcENvdW50ID0gcmVzLmRhdGEudGh1bWJzVXBDb3VudDtcbiAgICAgICAgdGhpcy5yZXBseS50aHVtYnNEb3duQ291bnQgPSByZXMuZGF0YS50aHVtYnNEb3duQ291bnQ7XG4gICAgICAgIHRoaXMucmVwbHkubGlrZSA9IHRydWU7XG4gICAgICAgIHRoaXMucmVwbHkuZGlzbGlrZSA9IGZhbHNlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBvblRodW1ic0Rvd24oKSB7XG4gICAgdGhpcy5jb21tZW50U2VydmljZS5yZXBseVRodW1ic0Rvd24odGhpcy5yZXBseS5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5yZXBseS50aHVtYnNVcENvdW50ID0gcmVzLmRhdGEudGh1bWJzVXBDb3VudDtcbiAgICAgICAgdGhpcy5yZXBseS50aHVtYnNEb3duQ291bnQgPSByZXMuZGF0YS50aHVtYnNEb3duQ291bnQ7XG4gICAgICAgIHRoaXMucmVwbHkubGlrZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlcGx5LmRpc2xpa2UgPSB0cnVlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJsb2NrIHctZnVsbFwiPlxuICBAaWYgKHJlcGx5KSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZ3JvdXBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiZy1vcmFuZ2UtNjAwIG1pbi13LVsyOHB4XSBtaW4taC1bMjhweF0gaC1maXQgbXItMyByb3VuZGVkLWZ1bGxcIj5cbiAgICAgICAgQGlmIChyZXBseS51c2VyICYmIHJlcGx5LnVzZXIuYXZhdGFyKSB7XG4gICAgICAgICAgPGltZyBjbGFzcz1cInctNyBoLTcgcm91bmRlZC1mdWxsXCIgW3NyY109XCJyZXBseS51c2VyLmF2YXRhclwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgdy1mdWxsXCI+XG4gICAgICAgIDxhIGNsYXNzPVwibWItMC41XCI+XG4gICAgICAgICAgQGlmIChyZXBseS51c2VyKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbWQgZm9udC1zZW1pYm9sZCBtci0xXCI+JiM2NDt7eyByZXBseS51c2VyLnVzZXJuYW1lIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gb3BhY2l0eS03MFwiPnt7IHJlcGx5LmNyZWF0ZWRBdCB8IHRpbWUgfX08L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGRpdiBbaW5uZXJUZXh0XT1cInJlcGx5LmNvbnRlbnRcIj48L2Rpdj5cbiAgICAgICAgPHJvbGF0ZWNoLWNvbW1lbnQtYWN0aW9uXG4gICAgICAgICAgKHJlcGx5KT1cIm9uUmVwbHkoJGV2ZW50KVwiXG4gICAgICAgICAgW2RhdGFdPVwicmVwbHlcIlxuICAgICAgICAgICh0aHVtYnNVcCk9XCJvblRodW1ic1VwKClcIlxuICAgICAgICAgICh0aHVtYnNEb3duKT1cIm9uVGh1bWJzRG93bigpXCJcbiAgICAgICAgPjwvcm9sYXRlY2gtY29tbWVudC1hY3Rpb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaW4tdy0xMFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJob3ZlcjpiZy1bLS1ydC0xMC1wZXJjZW50LWxheWVyXSB3LTkgaC05IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBncm91cC1ob3Zlcjp2aXNpYmxlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJtZW1udS5tZW51T3BlbiA/ICd2aXNpYmxlJyA6ICdpbnZpc2libGUnXCJcbiAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWN0aW9uTWVudVwiXG4gICAgICAgICAgI21lbW51PVwibWF0TWVudVRyaWdnZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuPG1hdC1tZW51ICNhY3Rpb25NZW51PVwibWF0TWVudVwiPlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0+XG4gICAgPG1hdC1pY29uPmZsYWc8L21hdC1pY29uPlxuICAgIDxzcGFuPuS4vuaKpTwvc3Bhbj5cbiAgPC9idXR0b24+XG48L21hdC1tZW51PlxuIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export var ThumbStatus;
|
|
2
|
-
(function (ThumbStatus) {
|
|
3
|
-
ThumbStatus[ThumbStatus["UP"] = 'Like'] = "UP";
|
|
4
|
-
ThumbStatus[ThumbStatus["DOWN"] = 'Dislike'] = "DOWN";
|
|
5
|
-
})(ThumbStatus || (ThumbStatus = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tbWVudC9zcmMvbGliL2ludGVyZmFjZXMvY29tbWVudC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUNBLE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDckIsZ0NBQVUsTUFBTSxRQUFBLENBQUE7SUFDaEIsa0NBQVksU0FBUyxVQUFBLENBQUE7QUFDdkIsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb21tZW50IHtcbiAgaWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgaXRlbUlkOiBzdHJpbmc7XG4gIHJlcGxpZXM6IFJlcGx5W107XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1c2VyOiBDb21tZW50VXNlcjtcbiAgcmVwbGllc0NvdW50OiBudW1iZXI7XG4gIHRodW1ic1VwQ291bnQ6IG51bWJlcjtcbiAgdGh1bWJzRG93bkNvdW50OiBudW1iZXI7XG4gIGxpa2U6IGJvb2xlYW47XG4gIGRpc2xpa2U6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIFJlcGx5IHtcbiAgaWQ6IHN0cmluZztcbiAgY29tbWVudElkOiBzdHJpbmc7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgc2VuZGVySWQ6IHN0cmluZztcbiAgcmVwbHlJZD86IHN0cmluZztcbiAgcmVjaXBpZW50SWQ6IHN0cmluZztcbiAgcmVwbGllcz86IFJlcGx5W107XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1c2VyOiBDb21tZW50VXNlcjtcbiAgdGh1bWJzVXBDb3VudDogbnVtYmVyO1xuICB0aHVtYnNEb3duQ291bnQ6IG51bWJlcjtcbiAgbGlrZTogYm9vbGVhbjtcbiAgZGlzbGlrZTogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWVudFVzZXIge1xuICBpZDogc3RyaW5nO1xuICBhdmF0YXI/OiBzdHJpbmc7XG4gIHVzZXJuYW1lOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFRodW1iIHtcbiAgaWQ6IHN0cmluZztcbiAgc3RhdHVzOiBUaHVtYlN0YXR1cyB8IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG59XG5leHBvcnQgZW51bSBUaHVtYlN0YXR1cyB7XG4gIFVQID0gPGFueT4nTGlrZScsXG4gIERPV04gPSA8YW55PidEaXNsaWtlJyxcbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tbWVudC9zcmMvbGliL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvbW1lbnQsIFJlcGx5LCBDb21tZW50VXNlciB9IGZyb20gJy4vY29tbWVudC5pbnRlcmZhY2UnO1xuIl19
|