tenent search component is added
This commit is contained in:
parent
ebb8093a3f
commit
33d8e733d1
@ -1,4 +1,16 @@
|
|||||||
<ucap-group-expansion-panel
|
<div>
|
||||||
[groupBuddyList]="groupBuddyList$ | async"
|
<div>
|
||||||
(selectBuddy)="onSelectBuddy($event)"
|
<ucap-organization-tenant-search
|
||||||
></ucap-group-expansion-panel>
|
[companyList]="companyList$ | async"
|
||||||
|
[companyCode]="companyCode"
|
||||||
|
(keyDownEnter)="onKeyDownEnterOrganizationTenantSearch($event)"
|
||||||
|
></ucap-organization-tenant-search>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<ucap-group-expansion-panel
|
||||||
|
[groupBuddyList]="groupBuddyList$ | async"
|
||||||
|
(selectBuddy)="onSelectBuddy($event)"
|
||||||
|
>
|
||||||
|
</ucap-group-expansion-panel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@ -11,6 +11,9 @@ import { UserInfo, GroupDetailData } from '@ucap-webmessenger/protocol-sync';
|
|||||||
import * as AppStore from '@app/store';
|
import * as AppStore from '@app/store';
|
||||||
import * as ChatStore from '@app/store/messenger/chat';
|
import * as ChatStore from '@app/store/messenger/chat';
|
||||||
import { NGXLogger } from 'ngx-logger';
|
import { NGXLogger } from 'ngx-logger';
|
||||||
|
import { Company } from '@ucap-webmessenger/api-external';
|
||||||
|
import { SessionStorageService } from '@ucap-webmessenger/web-storage';
|
||||||
|
import { LoginInfo, KEY_LOGIN_INFO } from '@app/types';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-layout-chat-left-sidenav-group',
|
selector: 'app-layout-chat-left-sidenav-group',
|
||||||
@ -22,10 +25,27 @@ export class GroupComponent implements OnInit {
|
|||||||
groupBuddyList$: Observable<
|
groupBuddyList$: Observable<
|
||||||
{ group: GroupDetailData; buddyList: UserInfo[] }[]
|
{ group: GroupDetailData; buddyList: UserInfo[] }[]
|
||||||
>;
|
>;
|
||||||
|
companyList$: Observable<Company[]>;
|
||||||
|
companyCode: string;
|
||||||
|
|
||||||
constructor(private store: Store<any>, private logger: NGXLogger) {}
|
constructor(
|
||||||
|
private store: Store<any>,
|
||||||
|
private sessionStorageService: SessionStorageService,
|
||||||
|
private logger: NGXLogger
|
||||||
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
const loginInfo = this.sessionStorageService.get<LoginInfo>(KEY_LOGIN_INFO);
|
||||||
|
this.companyCode = loginInfo.companyCode;
|
||||||
|
|
||||||
|
this.companyList$ = this.store.pipe(
|
||||||
|
select(AppStore.SettingSelector.CompanySelector.companyList),
|
||||||
|
map(list => {
|
||||||
|
this.logger.debug('list', list);
|
||||||
|
return list;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
this.groupBuddyList$ = this.store
|
this.groupBuddyList$ = this.store
|
||||||
.pipe(
|
.pipe(
|
||||||
select(AppStore.MessengerSelector.SyncSelector.groupListAndBuddyList)
|
select(AppStore.MessengerSelector.SyncSelector.groupListAndBuddyList)
|
||||||
@ -74,4 +94,11 @@ export class GroupComponent implements OnInit {
|
|||||||
onSelectBuddy(buddy: UserInfo) {
|
onSelectBuddy(buddy: UserInfo) {
|
||||||
this.store.dispatch(ChatStore.selectedRoom({ roomSeq: buddy.seq }));
|
this.store.dispatch(ChatStore.selectedRoom({ roomSeq: buddy.seq }));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onKeyDownEnterOrganizationTenantSearch(params: {
|
||||||
|
companyCode: string;
|
||||||
|
searchWord: string;
|
||||||
|
}) {
|
||||||
|
this.logger.debug('params', params);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
<mat-card class="confirm-card">
|
||||||
|
<mat-card-header cdkDrag cdkDragRootElement=".cdk-overlay-pane" cdkDragHandle>
|
||||||
|
<mat-card-title>{{ data.title }}</mat-card-title>
|
||||||
|
<!-- <mat-card-subtitle>Confirm</mat-card-subtitle> -->
|
||||||
|
</mat-card-header>
|
||||||
|
<mat-card-content>
|
||||||
|
<div #messageContainer class="notice">
|
||||||
|
{{ data.message }}
|
||||||
|
</div>
|
||||||
|
</mat-card-content>
|
||||||
|
<mat-card-actions *ngIf="!hideAction" class="button-farm flex-row">
|
||||||
|
<button
|
||||||
|
mat-stroked-button
|
||||||
|
(click)="onClickChoice(false)"
|
||||||
|
class="mat-primary"
|
||||||
|
>
|
||||||
|
No
|
||||||
|
</button>
|
||||||
|
<button mat-flat-button (click)="onClickChoice(true)" class="mat-primary">
|
||||||
|
Yes
|
||||||
|
</button>
|
||||||
|
</mat-card-actions>
|
||||||
|
</mat-card>
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { ConfirmDialogComponent } from './confirm.dialog.component';
|
||||||
|
|
||||||
|
describe('ui::ConfirmDialogComponent', () => {
|
||||||
|
let component: ConfirmDialogComponent;
|
||||||
|
let fixture: ComponentFixture<ConfirmDialogComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ConfirmDialogComponent]
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(ConfirmDialogComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,51 @@
|
|||||||
|
import {
|
||||||
|
Component,
|
||||||
|
OnInit,
|
||||||
|
Inject,
|
||||||
|
ViewChild,
|
||||||
|
ElementRef
|
||||||
|
} from '@angular/core';
|
||||||
|
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
|
||||||
|
|
||||||
|
export interface ConfirmDialogData {
|
||||||
|
title: string;
|
||||||
|
message?: string;
|
||||||
|
html?: string;
|
||||||
|
hideAction?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ConfirmDialogResult {
|
||||||
|
choice: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'ucap-ui-confirm-dialog',
|
||||||
|
templateUrl: './confirm.dialog.component.html',
|
||||||
|
styleUrls: ['./confirm.dialog.component.scss']
|
||||||
|
})
|
||||||
|
export class ConfirmDialogComponent implements OnInit {
|
||||||
|
@ViewChild('messageContainer', { static: true })
|
||||||
|
messageContainer: ElementRef;
|
||||||
|
|
||||||
|
hideAction = false;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public dialogRef: MatDialogRef<ConfirmDialogComponent, ConfirmDialogResult>,
|
||||||
|
@Inject(MAT_DIALOG_DATA) public data: ConfirmDialogData
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
if (!!this.data.html) {
|
||||||
|
this.messageContainer.nativeElement.innerHTML = this.data.html;
|
||||||
|
}
|
||||||
|
if (!!this.data.hideAction) {
|
||||||
|
this.hideAction = this.data.hideAction;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onClickChoice(choice: boolean): void {
|
||||||
|
this.dialogRef.close({
|
||||||
|
choice
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -29,6 +29,20 @@
|
|||||||
>
|
>
|
||||||
</ucap-profile-user-list-item>
|
</ucap-profile-user-list-item>
|
||||||
</div>
|
</div>
|
||||||
|
<h3>Organization</h3>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
Tenant Search
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<ucap-organization-tenant-search
|
||||||
|
[companyList]="companyList"
|
||||||
|
[companyCode]="companyCode"
|
||||||
|
></ucap-organization-tenant-search>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<h3>Chat::MessageBox</h3>
|
<h3>Chat::MessageBox</h3>
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
|
@ -9,6 +9,7 @@ import {
|
|||||||
} from '@ucap-webmessenger/protocol-status';
|
} from '@ucap-webmessenger/protocol-status';
|
||||||
import { StatusCode } from '@ucap-webmessenger/core';
|
import { StatusCode } from '@ucap-webmessenger/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
import { Company } from '@ucap-webmessenger/api-external';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-template.page',
|
selector: 'app-template.page',
|
||||||
@ -22,6 +23,10 @@ export class TemplatePageComponent implements OnInit {
|
|||||||
|
|
||||||
presence: StatusBulkInfo = status;
|
presence: StatusBulkInfo = status;
|
||||||
|
|
||||||
|
companyList: Company[] = companyList;
|
||||||
|
|
||||||
|
companyCode: string = 'GUC006';
|
||||||
|
|
||||||
constructor(private router: Router) {}
|
constructor(private router: Router) {}
|
||||||
|
|
||||||
ngOnInit() {}
|
ngOnInit() {}
|
||||||
@ -84,3 +89,182 @@ export const buddyData: UserInfo = {
|
|||||||
employeeType: EmployeeType.Regular,
|
employeeType: EmployeeType.Regular,
|
||||||
nickName: '채책임(닉)'
|
nickName: '채책임(닉)'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const companyList: Company[] = [
|
||||||
|
{
|
||||||
|
companyCode: 'GUC002',
|
||||||
|
companyName: 'LG Electronics.',
|
||||||
|
companyDomain: 'lge.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC040',
|
||||||
|
companyName: 'LGE한국영업협력사',
|
||||||
|
companyDomain: 'lgepartner.com',
|
||||||
|
companyConfAuthYn: 'Y',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC021',
|
||||||
|
companyName: 'LG이노텍',
|
||||||
|
companyDomain: 'lginnotek.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC036',
|
||||||
|
companyName: '하이프라자',
|
||||||
|
companyDomain: 'hiplaza.co.kr',
|
||||||
|
companyConfAuthYn: 'Y',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC006',
|
||||||
|
companyName: 'LG CNS',
|
||||||
|
companyDomain: 'lgcns.com',
|
||||||
|
companyConfAuthYn: 'Y',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC041',
|
||||||
|
companyName: 'LGEIL',
|
||||||
|
companyDomain: 'lgeil.com',
|
||||||
|
companyConfAuthYn: 'Y',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC100',
|
||||||
|
companyName: 'LG UCAP',
|
||||||
|
companyDomain: 'lgucap.com',
|
||||||
|
companyConfAuthYn: 'Y',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUCIM',
|
||||||
|
companyName: '아메사용회사',
|
||||||
|
companyDomain: 'test.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'N',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC005',
|
||||||
|
companyName: 'LG화학',
|
||||||
|
companyDomain: 'lgchem.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GSGAL',
|
||||||
|
companyName: 'GS칼텍스',
|
||||||
|
companyDomain: 'gscaltex.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC001',
|
||||||
|
companyName: 'LG U+',
|
||||||
|
companyDomain: 'lguplus.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC007',
|
||||||
|
companyName: 'LG Display',
|
||||||
|
companyDomain: 'lgdisplay.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'N'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC011',
|
||||||
|
companyName: 'LG인화원',
|
||||||
|
companyDomain: 'lgacademy.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC013',
|
||||||
|
companyName: 'LG MMA',
|
||||||
|
companyDomain: 'lgmma.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC015',
|
||||||
|
companyName: '(주)LG',
|
||||||
|
companyDomain: 'lg.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC016',
|
||||||
|
companyName: 'LGERI',
|
||||||
|
companyDomain: 'lgeri.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC024',
|
||||||
|
companyName: 'LG Hausys',
|
||||||
|
companyDomain: 'lghausys.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC028',
|
||||||
|
companyName: 'LG상사',
|
||||||
|
companyDomain: 'lgi.co.kr',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC032',
|
||||||
|
companyName: '코리아일레콤',
|
||||||
|
companyDomain: 'koreaelecom.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC035',
|
||||||
|
companyName: 'HLDS',
|
||||||
|
companyDomain: 'hlds.co.kr',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC038',
|
||||||
|
companyName: 'BizTech Partners',
|
||||||
|
companyDomain: 'GUC018',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
companyCode: 'GUC042',
|
||||||
|
companyName: 'Japan R&D Lab',
|
||||||
|
companyDomain: 'lgjlab.com',
|
||||||
|
companyConfAuthYn: 'N',
|
||||||
|
ucapUseYn: 'Y',
|
||||||
|
companyTimerChatAuthYn: 'Y'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
@ -7,7 +7,8 @@ import { MatButtonModule } from '@angular/material/button';
|
|||||||
|
|
||||||
import { UCapUiChatModule } from '@ucap-webmessenger/ui-chat';
|
import { UCapUiChatModule } from '@ucap-webmessenger/ui-chat';
|
||||||
import { UCapUiGroupModule } from '@ucap-webmessenger/ui-group';
|
import { UCapUiGroupModule } from '@ucap-webmessenger/ui-group';
|
||||||
import { UcapUiProfileModule } from '@ucap-webmessenger/ui-profile';
|
import { UCapUiOrganizationModule } from '@ucap-webmessenger/ui-organization';
|
||||||
|
import { UCapUiProfileModule } from '@ucap-webmessenger/ui-profile';
|
||||||
|
|
||||||
import { AppTemplateRoutingPageModule } from './template-routing.page.module';
|
import { AppTemplateRoutingPageModule } from './template-routing.page.module';
|
||||||
|
|
||||||
@ -21,7 +22,8 @@ import { COMPONENTS, MET_MODULES } from './components';
|
|||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
UCapUiChatModule,
|
UCapUiChatModule,
|
||||||
UCapUiGroupModule,
|
UCapUiGroupModule,
|
||||||
UcapUiProfileModule,
|
UCapUiOrganizationModule,
|
||||||
|
UCapUiProfileModule,
|
||||||
AppTemplateRoutingPageModule
|
AppTemplateRoutingPageModule
|
||||||
],
|
],
|
||||||
declarations: [...COMPONENTS],
|
declarations: [...COMPONENTS],
|
||||||
|
@ -39,6 +39,7 @@ import { QueryProtocolService } from '@ucap-webmessenger/protocol-query';
|
|||||||
import { OptionProtocolService } from '@ucap-webmessenger/protocol-option';
|
import { OptionProtocolService } from '@ucap-webmessenger/protocol-option';
|
||||||
|
|
||||||
import * as AppStore from '@app/store';
|
import * as AppStore from '@app/store';
|
||||||
|
import * as CompanyStore from '@app/store/setting/company';
|
||||||
import * as VersionInfoStore from '@app/store/setting/version-info';
|
import * as VersionInfoStore from '@app/store/setting/version-info';
|
||||||
import * as OptionStore from '@app/store/messenger/option';
|
import * as OptionStore from '@app/store/messenger/option';
|
||||||
import * as QueryStore from '@app/store/messenger/query';
|
import * as QueryStore from '@app/store/messenger/query';
|
||||||
@ -124,6 +125,12 @@ export class AppMessengerResolver implements Resolve<void> {
|
|||||||
);
|
);
|
||||||
this.store.dispatch(QueryStore.authSuccess({ res: authRes }));
|
this.store.dispatch(QueryStore.authSuccess({ res: authRes }));
|
||||||
|
|
||||||
|
this.store.dispatch(
|
||||||
|
CompanyStore.companyList({
|
||||||
|
companyGroupCode: 'LG'
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
// this.store.dispatch(AuthenticationStore.postLogin({ loginRes }));
|
// this.store.dispatch(AuthenticationStore.postLogin({ loginRes }));
|
||||||
}),
|
}),
|
||||||
withLatestFrom(
|
withLatestFrom(
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<mat-select [(value)]="companyCode">
|
||||||
|
<mat-option
|
||||||
|
*ngFor="let company of companyList"
|
||||||
|
[value]="company.companyCode"
|
||||||
|
>
|
||||||
|
{{ company.companyName }}
|
||||||
|
</mat-option>
|
||||||
|
</mat-select>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<input
|
||||||
|
matInput
|
||||||
|
#searchWordInput
|
||||||
|
placeholder="name"
|
||||||
|
(keydown.enter)="onKeyDownEnter(searchWordInput.value)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,12 @@
|
|||||||
|
.organization-tree {
|
||||||
|
ul,
|
||||||
|
li {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.organization-tree-node-invisible {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { TenantSearchComponent } from './tenant-search.component';
|
||||||
|
|
||||||
|
describe('Organization::TenantSearchComponent', () => {
|
||||||
|
let component: TenantSearchComponent;
|
||||||
|
let fixture: ComponentFixture<TenantSearchComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [TenantSearchComponent]
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(TenantSearchComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,30 @@
|
|||||||
|
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
|
||||||
|
import { NGXLogger } from 'ngx-logger';
|
||||||
|
import { Company } from '@ucap-webmessenger/api-external';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'ucap-organization-tenant-search',
|
||||||
|
templateUrl: './tenant-search.component.html',
|
||||||
|
styleUrls: ['./tenant-search.component.scss']
|
||||||
|
})
|
||||||
|
export class TenantSearchComponent implements OnInit {
|
||||||
|
@Input()
|
||||||
|
companyList: Company[];
|
||||||
|
|
||||||
|
@Input()
|
||||||
|
companyCode: string;
|
||||||
|
|
||||||
|
@Output()
|
||||||
|
keyDownEnter = new EventEmitter<{
|
||||||
|
companyCode: string;
|
||||||
|
searchWord: string;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
constructor(private logger: NGXLogger) {}
|
||||||
|
|
||||||
|
ngOnInit() {}
|
||||||
|
|
||||||
|
onKeyDownEnter(searchWord: string) {
|
||||||
|
this.keyDownEnter.emit({ companyCode: this.companyCode, searchWord });
|
||||||
|
}
|
||||||
|
}
|
@ -4,11 +4,14 @@ import { ReactiveFormsModule } from '@angular/forms';
|
|||||||
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
import { MatIconModule } from '@angular/material/icon';
|
||||||
|
import { MatInputModule } from '@angular/material/input';
|
||||||
|
import { MatSelectModule } from '@angular/material/select';
|
||||||
import { MatTreeModule } from '@angular/material/tree';
|
import { MatTreeModule } from '@angular/material/tree';
|
||||||
|
|
||||||
|
import { TenantSearchComponent } from './components/tenant-search.component';
|
||||||
import { TreeComponent } from './components/tree.component';
|
import { TreeComponent } from './components/tree.component';
|
||||||
|
|
||||||
const COMPONENTS = [TreeComponent];
|
const COMPONENTS = [TenantSearchComponent, TreeComponent];
|
||||||
const SERVICES = [];
|
const SERVICES = [];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
@ -17,6 +20,8 @@ const SERVICES = [];
|
|||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
|
MatInputModule,
|
||||||
|
MatSelectModule,
|
||||||
MatTreeModule
|
MatTreeModule
|
||||||
],
|
],
|
||||||
exports: [...COMPONENTS],
|
exports: [...COMPONENTS],
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Public API Surface of ucap-webmessenger-ui-organization
|
* Public API Surface of ucap-webmessenger-ui-organization
|
||||||
*/
|
*/
|
||||||
|
export * from './lib/components/tenant-search.component';
|
||||||
export * from './lib/components/tree.component';
|
export * from './lib/components/tree.component';
|
||||||
|
|
||||||
export * from './lib/ucap-ui-organization.module';
|
export * from './lib/ucap-ui-organization.module';
|
||||||
|
@ -26,10 +26,10 @@ const SERVICES = [];
|
|||||||
exports: [...COMPONENTS],
|
exports: [...COMPONENTS],
|
||||||
declarations: [...COMPONENTS]
|
declarations: [...COMPONENTS]
|
||||||
})
|
})
|
||||||
export class UcapUiProfileModule {
|
export class UCapUiProfileModule {
|
||||||
public static forRoot(): ModuleWithProviders<UcapUiProfileModule> {
|
public static forRoot(): ModuleWithProviders<UCapUiProfileModule> {
|
||||||
return {
|
return {
|
||||||
ngModule: UcapUiProfileModule,
|
ngModule: UCapUiProfileModule,
|
||||||
providers: [...SERVICES]
|
providers: [...SERVICES]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user