munu of group is added
This commit is contained in:
parent
d0c9efaa76
commit
dd88e30c17
|
@ -45,6 +45,7 @@
|
||||||
#groupExpansionPanel
|
#groupExpansionPanel
|
||||||
[groupBuddyList]="groupBuddyList$ | async"
|
[groupBuddyList]="groupBuddyList$ | async"
|
||||||
[favoritBuddyList]="favoritBuddyList$ | async"
|
[favoritBuddyList]="favoritBuddyList$ | async"
|
||||||
|
(more)="onMoreGroup($event)"
|
||||||
>
|
>
|
||||||
<ucap-profile-user-list-item
|
<ucap-profile-user-list-item
|
||||||
*ucapGroupExpansionPanelItem="let userInfo"
|
*ucapGroupExpansionPanelItem="let userInfo"
|
||||||
|
@ -70,3 +71,19 @@
|
||||||
<button mat-menu-item>Action 2</button>
|
<button mat-menu-item>Action 2</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</mat-menu>
|
</mat-menu>
|
||||||
|
|
||||||
|
<div
|
||||||
|
style="visibility: hidden; position: fixed"
|
||||||
|
[style.left]="groupContextMenuPosition.x"
|
||||||
|
[style.top]="groupContextMenuPosition.y"
|
||||||
|
[matMenuTriggerFor]="groupContextMenu"
|
||||||
|
></div>
|
||||||
|
<mat-menu #groupContextMenu="matMenu" [overlapTrigger]="false">
|
||||||
|
<ng-template matMenuContent let-item="group">
|
||||||
|
<button mat-menu-item>그룹 대화하기</button>
|
||||||
|
<button mat-menu-item>그룹 쪽지 보내기</button>
|
||||||
|
<button mat-menu-item>그룹 이름 바꾸기</button>
|
||||||
|
<button mat-menu-item>그룹 멤버 변경</button>
|
||||||
|
<button mat-menu-item>그룹 삭제</button>
|
||||||
|
</ng-template>
|
||||||
|
</mat-menu>
|
||||||
|
|
|
@ -53,6 +53,11 @@ export class GroupComponent implements OnInit {
|
||||||
|
|
||||||
profileContextMenuPosition = { x: '0px', y: '0px' };
|
profileContextMenuPosition = { x: '0px', y: '0px' };
|
||||||
|
|
||||||
|
@ViewChild('groupContextMenu', { static: true })
|
||||||
|
groupContextMenu: MatMenu;
|
||||||
|
|
||||||
|
groupContextMenuPosition = { x: '0px', y: '0px' };
|
||||||
|
|
||||||
groupBuddyList$: Observable<
|
groupBuddyList$: Observable<
|
||||||
{ group: GroupDetailData; buddyList: UserInfo[] }[]
|
{ group: GroupDetailData; buddyList: UserInfo[] }[]
|
||||||
>;
|
>;
|
||||||
|
@ -198,12 +203,18 @@ export class GroupComponent implements OnInit {
|
||||||
event: MouseEvent;
|
event: MouseEvent;
|
||||||
userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN;
|
userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN;
|
||||||
}) {
|
}) {
|
||||||
params.event.preventDefault();
|
|
||||||
this.profileContextMenuPosition.x = params.event.clientX + 'px';
|
this.profileContextMenuPosition.x = params.event.clientX + 'px';
|
||||||
this.profileContextMenuPosition.y = params.event.clientY + 'px';
|
this.profileContextMenuPosition.y = params.event.clientY + 'px';
|
||||||
const profileContextMenuTrigger = this.menuTriggerList.toArray()[1];
|
const profileContextMenuTrigger = this.menuTriggerList.toArray()[1];
|
||||||
profileContextMenuTrigger.menu = this.profileContextMenu;
|
|
||||||
profileContextMenuTrigger.menuData = { userInfo: params.userInfo };
|
profileContextMenuTrigger.menuData = { userInfo: params.userInfo };
|
||||||
profileContextMenuTrigger.openMenu();
|
profileContextMenuTrigger.openMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMoreGroup(params: { event: MouseEvent; group: GroupDetailData }) {
|
||||||
|
this.groupContextMenuPosition.x = params.event.clientX + 'px';
|
||||||
|
this.groupContextMenuPosition.y = params.event.clientY + 'px';
|
||||||
|
const groupContextMenuTrigger = this.menuTriggerList.toArray()[2];
|
||||||
|
groupContextMenuTrigger.menuData = { group: params.group };
|
||||||
|
groupContextMenuTrigger.openMenu();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
<mat-accordion #groupAccordion="matAccordion" [multi]="true">
|
<mat-accordion #groupAccordion="matAccordion" [multi]="true">
|
||||||
<mat-expansion-panel *ngIf="favoritBuddyList.length > 0">
|
<mat-expansion-panel
|
||||||
|
*ngIf="favoritBuddyList.length > 0"
|
||||||
|
[togglePosition]="'before'"
|
||||||
|
>
|
||||||
<mat-expansion-panel-header>
|
<mat-expansion-panel-header>
|
||||||
<mat-panel-title> 즐겨찾기 </mat-panel-title>
|
<mat-panel-title> 즐겨찾기 </mat-panel-title>
|
||||||
<mat-panel-description> </mat-panel-description>
|
<mat-panel-description> </mat-panel-description>
|
||||||
|
@ -21,10 +24,22 @@
|
||||||
</ucap-profile-user-list-item> -->
|
</ucap-profile-user-list-item> -->
|
||||||
</mat-expansion-panel>
|
</mat-expansion-panel>
|
||||||
|
|
||||||
<mat-expansion-panel *ngFor="let groupBuddy of groupBuddyList">
|
<mat-expansion-panel
|
||||||
|
*ngFor="let groupBuddy of groupBuddyList"
|
||||||
|
[togglePosition]="'before'"
|
||||||
|
>
|
||||||
<mat-expansion-panel-header>
|
<mat-expansion-panel-header>
|
||||||
<mat-panel-title> {{ groupBuddy.group.name }} </mat-panel-title>
|
<mat-panel-title> {{ groupBuddy.group.name }} </mat-panel-title>
|
||||||
<mat-panel-description> </mat-panel-description>
|
<mat-panel-description>
|
||||||
|
<span class="more-spacer"></span>
|
||||||
|
<button
|
||||||
|
mat-icon-button
|
||||||
|
aria-label="group menu"
|
||||||
|
(click)="onClickMore($event, groupBuddy.group)"
|
||||||
|
>
|
||||||
|
<mat-icon>more_vert</mat-icon>
|
||||||
|
</button>
|
||||||
|
</mat-panel-description>
|
||||||
</mat-expansion-panel-header>
|
</mat-expansion-panel-header>
|
||||||
|
|
||||||
<ng-container *ngFor="let userInfo of groupBuddy.buddyList">
|
<ng-container *ngFor="let userInfo of groupBuddy.buddyList">
|
||||||
|
|
|
@ -3,50 +3,7 @@
|
||||||
flex: 1;
|
flex: 1;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.contact {
|
.more-spacer {
|
||||||
white-space: normal;
|
flex: 1 1 auto;
|
||||||
text-align: left;
|
|
||||||
letter-spacing: 0.01em;
|
|
||||||
min-height: 88px;
|
|
||||||
border-bottom: 1px solid;
|
|
||||||
padding: 16px;
|
|
||||||
font-weight: 400;
|
|
||||||
border-radius: 0;
|
|
||||||
|
|
||||||
.avatar-wrapper {
|
|
||||||
.avatar {
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.contact-name {
|
|
||||||
font-size: 16px;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contact-last-message {
|
|
||||||
line-height: normal;
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contact-last-message-time {
|
|
||||||
font-size: 12px;
|
|
||||||
margin-top: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contact-mood {
|
|
||||||
line-height: normal;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.unread-message-count {
|
|
||||||
font-size: 12px;
|
|
||||||
border-radius: 50%;
|
|
||||||
text-align: center;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
line-height: 20px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,12 @@ export class ExpansionPanelComponent implements OnInit {
|
||||||
@Input()
|
@Input()
|
||||||
favoritBuddyList: UserInfo[];
|
favoritBuddyList: UserInfo[];
|
||||||
|
|
||||||
|
@Output()
|
||||||
|
more = new EventEmitter<{
|
||||||
|
event: MouseEvent;
|
||||||
|
group: GroupDetailData;
|
||||||
|
}>();
|
||||||
|
|
||||||
@ContentChild(ExpansionPanelItemDirective, {
|
@ContentChild(ExpansionPanelItemDirective, {
|
||||||
read: TemplateRef,
|
read: TemplateRef,
|
||||||
static: true
|
static: true
|
||||||
|
@ -47,4 +53,11 @@ export class ExpansionPanelComponent implements OnInit {
|
||||||
expandLess() {
|
expandLess() {
|
||||||
this.groupAccordion.closeAll();
|
this.groupAccordion.closeAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onClickMore(event: MouseEvent, group: GroupDetailData) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
this.more.emit({ event, group });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,9 @@ import { ReactiveFormsModule } from '@angular/forms';
|
||||||
|
|
||||||
import { FlexLayoutModule } from '@angular/flex-layout';
|
import { FlexLayoutModule } from '@angular/flex-layout';
|
||||||
|
|
||||||
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
import { MatExpansionModule } from '@angular/material/expansion';
|
import { MatExpansionModule } from '@angular/material/expansion';
|
||||||
|
import { MatIconModule } from '@angular/material/icon';
|
||||||
|
|
||||||
import { ExpansionPanelComponent } from './components/expansion-panel.component';
|
import { ExpansionPanelComponent } from './components/expansion-panel.component';
|
||||||
import { ExpansionPanelItemDirective } from './directives/expansion-panel-item.directive';
|
import { ExpansionPanelItemDirective } from './directives/expansion-panel-item.directive';
|
||||||
|
@ -20,7 +22,9 @@ const SERVICES = [];
|
||||||
UCapUiProfileModule,
|
UCapUiProfileModule,
|
||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
FlexLayoutModule,
|
FlexLayoutModule,
|
||||||
MatExpansionModule
|
MatButtonModule,
|
||||||
|
MatExpansionModule,
|
||||||
|
MatIconModule
|
||||||
],
|
],
|
||||||
exports: [...COMPONENTS, ...DIRECTIVES],
|
exports: [...COMPONENTS, ...DIRECTIVES],
|
||||||
declarations: [...COMPONENTS, ...DIRECTIVES]
|
declarations: [...COMPONENTS, ...DIRECTIVES]
|
||||||
|
|
|
@ -113,6 +113,8 @@ export class UserListItemComponent implements OnInit, OnDestroy {
|
||||||
event: MouseEvent,
|
event: MouseEvent,
|
||||||
userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN
|
userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN
|
||||||
) {
|
) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
this.contextMenu.emit({ event, userInfo });
|
this.contextMenu.emit({ event, userInfo });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user