Merge branch 'master' of https://git.loafle.net/ucap-web/next-ucap-messenger
This commit is contained in:
commit
32cb30834e
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "ucap-webmessenger",
|
"name": "ucap-webmessenger",
|
||||||
"version": "0.0.9",
|
"version": "0.0.10",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "LG CNS",
|
"name": "LG CNS",
|
||||||
"email": "lgucap@lgcns.com"
|
"email": "lgucap@lgcns.com"
|
||||||
|
|
|
@ -4,13 +4,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="app-layout-native-title-bar-title">DS Talk</div>
|
<div class="app-layout-native-title-bar-title">DS Talk</div>
|
||||||
<div class="btn-area">
|
<div class="btn-area">
|
||||||
|
<ucap-integrated-search-form (search)="onIntegratedSearch($event)" class="input-lineless integrated-search">
|
||||||
|
</ucap-integrated-search-form>
|
||||||
<div
|
<div
|
||||||
*ngIf="!!loginRes && !!weblink"
|
*ngIf="!!loginRes && !!weblink"
|
||||||
class="app-layout-native-title-bar-link"
|
class="app-layout-native-title-bar-link"
|
||||||
>
|
>
|
||||||
<ucap-integrated-search-form (search)="onIntegratedSearch($event)">
|
|
||||||
</ucap-integrated-search-form>
|
|
||||||
|
|
||||||
<ng-container *ngFor="let link of weblink" [ngSwitch]="link.key">
|
<ng-container *ngFor="let link of weblink" [ngSwitch]="link.key">
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
|
@ -147,11 +146,8 @@
|
||||||
></path>
|
></path>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
<span
|
|
||||||
*ngIf="(!!weblink && weblink.length > 0) || (updateInfo$ | async)"
|
|
||||||
class="stroke-bar"
|
|
||||||
></span>
|
|
||||||
</div>
|
</div>
|
||||||
|
<span *ngIf="(!!weblink && weblink.length > 0) || (updateInfo$ | async)" class="stroke-bar"></span>
|
||||||
<ucap-profile-my-profile-widget
|
<ucap-profile-my-profile-widget
|
||||||
[profileImageRoot]="sessionVerinfo.profileRoot"
|
[profileImageRoot]="sessionVerinfo.profileRoot"
|
||||||
[profileImageFile]="getMyProfileImageWidget()"
|
[profileImageFile]="getMyProfileImageWidget()"
|
||||||
|
|
|
@ -25,42 +25,43 @@
|
||||||
}
|
}
|
||||||
.btn-area {
|
.btn-area {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
flex-flow: row;
|
flex-flow: row;
|
||||||
justify-items: center;
|
justify-items: center;
|
||||||
width: calc(100% - 100px);
|
max-width: calc(100% - 100px);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.integrated-search {
|
||||||
|
height: 100%;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
.app-layout-native-title-bar-link {
|
.app-layout-native-title-bar-link {
|
||||||
|
-webkit-box-align: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: inline-block;
|
||||||
justify-content: flex-end;
|
min-width: 0;
|
||||||
width: calc(100% - 100px);
|
width: auto;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
transform: translateY(2px);
|
|
||||||
.stroke-bar {
|
|
||||||
width: 1px;
|
|
||||||
height: 20px;
|
|
||||||
background-color: rgba(256, 256, 256, 0.3);
|
|
||||||
margin: 0 10px 0 20px;
|
|
||||||
display: inline-flex;
|
|
||||||
}
|
|
||||||
.button {
|
.button {
|
||||||
-webkit-app-region: no-drag;
|
-webkit-app-region: no-drag;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border: none;
|
border: none;
|
||||||
height: 30px;
|
width: 28px;
|
||||||
min-width: 30px;
|
height: 28px;
|
||||||
max-width: 30px;
|
min-width: 28px;
|
||||||
padding: 3px;
|
max-width: 28px;
|
||||||
line-height: 10px;
|
line-height: 10px;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
|
@ -68,7 +69,8 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
margin-left: 16px;
|
margin-left: 10px;
|
||||||
|
transform: translateY(-2px);
|
||||||
.weblink {
|
.weblink {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
|
@ -115,7 +117,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.stroke-bar {
|
||||||
|
width: 10px;
|
||||||
|
height: 20px;
|
||||||
|
border-right: 1px solid rgba(255, 255, 255, 0.3);
|
||||||
|
margin: 0 10px 0 10px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
.myprofile-item {
|
.myprofile-item {
|
||||||
-webkit-app-region: no-drag;
|
-webkit-app-region: no-drag;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
|
@ -38,8 +38,8 @@
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="mdi"
|
class="mdi"
|
||||||
[class.mdi-greater-than]="!showLeftDrawer"
|
[class.mdi-chevron-right]="!showLeftDrawer"
|
||||||
[class.mdi-less-than]="showLeftDrawer"
|
[class.mdi-chevron-left]="showLeftDrawer"
|
||||||
></span>
|
></span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -61,7 +61,5 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
justify-items: center;
|
justify-items: center;
|
||||||
.mat-icon {
|
font-size: 1.8em;
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,6 @@ $tablet-s-width: 768px;
|
||||||
.message-row {
|
.message-row {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin-bottom: 20px;
|
|
||||||
.date-splitter {
|
.date-splitter {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -26,6 +25,7 @@ $tablet-s-width: 768px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
|
padding-bottom: 20px;
|
||||||
.profile-img {
|
.profile-img {
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
&.thumbnail-mask {
|
&.thumbnail-mask {
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
perfectScrollbar
|
perfectScrollbar
|
||||||
fxFlexFill
|
fxFlexFill
|
||||||
#psChatContent
|
#psChatContent
|
||||||
[bufferAmount]="10"
|
[bufferAmount]="5"
|
||||||
|
[compareItems]=""
|
||||||
(psScrollUp)="onScrollup($event)"
|
(psScrollUp)="onScrollup($event)"
|
||||||
(psYReachStart)="onYReachStart($event)"
|
(psYReachStart)="onYReachStart($event)"
|
||||||
(psYReachEnd)="onYReachEnd($event)"
|
(psYReachEnd)="onYReachEnd($event)"
|
||||||
|
|
|
@ -412,12 +412,12 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
preSwapScroll(useHide: boolean, useSwap: boolean) {
|
preSwapScroll(useHide: boolean, useSwap: boolean) {
|
||||||
if (useSwap && !this.swapped) {
|
// if (useSwap && !this.swapped) {
|
||||||
this.chatMessagesBuffer.nativeElement.innerHTML = this.chatMessagesContainer.nativeElement.innerHTML;
|
// this.chatMessagesBuffer.nativeElement.innerHTML = this.chatMessagesContainer.nativeElement.innerHTML;
|
||||||
this.chatMessagesBuffer.nativeElement.scrollTop = this.chatMessagesContainer.nativeElement.scrollTop;
|
// this.chatMessagesBuffer.nativeElement.scrollTop = this.chatMessagesContainer.nativeElement.scrollTop;
|
||||||
this.chatMessagesBuffer.nativeElement.classList.remove('disappear');
|
// this.chatMessagesBuffer.nativeElement.classList.remove('disappear');
|
||||||
this.swapped = true;
|
// this.swapped = true;
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (useHide && !this.hidden) {
|
if (useHide && !this.hidden) {
|
||||||
this.chatMessagesContainer.nativeElement.classList.add('hide');
|
this.chatMessagesContainer.nativeElement.classList.add('hide');
|
||||||
|
@ -426,12 +426,12 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
postSwapScroll(useHide: boolean, useSwap: boolean) {
|
postSwapScroll(useHide: boolean, useSwap: boolean) {
|
||||||
if (useSwap && this.swapped) {
|
// if (useSwap && this.swapped) {
|
||||||
this.chatMessagesBuffer.nativeElement.innerHTML = '';
|
// this.chatMessagesBuffer.nativeElement.innerHTML = '';
|
||||||
this.chatMessagesBuffer.nativeElement.scrollTop = 0;
|
// this.chatMessagesBuffer.nativeElement.scrollTop = 0;
|
||||||
this.chatMessagesBuffer.nativeElement.classList.add('disappear');
|
// this.chatMessagesBuffer.nativeElement.classList.add('disappear');
|
||||||
this.swapped = false;
|
// this.swapped = false;
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (useHide && this.hidden) {
|
if (useHide && this.hidden) {
|
||||||
this.chatMessagesContainer.nativeElement.classList.remove('hide');
|
this.chatMessagesContainer.nativeElement.classList.remove('hide');
|
||||||
|
@ -536,7 +536,7 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
if (this.scrollUpInitalized && this.eventRemained) {
|
if (this.scrollUpInitalized && this.eventRemained) {
|
||||||
this.storeScrollPosition();
|
this.storeScrollPosition();
|
||||||
|
|
||||||
this.preSwapScroll(true, true);
|
this.preSwapScroll(false, false);
|
||||||
|
|
||||||
this.moreEvent.emit(this.eventList[0].seq);
|
this.moreEvent.emit(this.eventList[0].seq);
|
||||||
|
|
||||||
|
@ -607,4 +607,10 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
trackByEvent(index: number, info: Info<EventJson>): number {
|
trackByEvent(index: number, info: Info<EventJson>): number {
|
||||||
return info.seq;
|
return info.seq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareItemsFunc = (
|
||||||
|
item1: Info<EventJson>,
|
||||||
|
item2: Info<EventJson>
|
||||||
|
// tslint:disable-next-line: semicolon
|
||||||
|
): boolean => item1.seq === item2.seq;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
<div fxFlex fxLayout="row" class="chatroom-search">
|
<div fxFlex fxLayout="row" class="chatroom-search">
|
||||||
<div fxLayout="row" fxLayoutAlign="start center" class="input search-form">
|
<div fxLayout="row" fxLayoutAlign="start center" class="input input-lineless search-form">
|
||||||
<form [formGroup]="fgSearch">
|
<form [formGroup]="fgSearch">
|
||||||
<i class="material-icons icon-search"> </i>
|
<span class="icon-img">
|
||||||
|
<i class="mid mdi-magnify"></i>
|
||||||
|
</span>
|
||||||
<mat-form-field floatLabel="never">
|
<mat-form-field floatLabel="never">
|
||||||
<input
|
<input
|
||||||
matInput
|
matInput
|
||||||
|
@ -12,14 +14,6 @@
|
||||||
formControlName="searchInput"
|
formControlName="searchInput"
|
||||||
(keydown.enter)="onKeyDownEnter($event, inputSearch.value)"
|
(keydown.enter)="onKeyDownEnter($event, inputSearch.value)"
|
||||||
/>
|
/>
|
||||||
<!-- <button
|
|
||||||
mat-button
|
|
||||||
matSuffix
|
|
||||||
mat-icon-button
|
|
||||||
aria-label="Clear"
|
|
||||||
(click)="inputSearch.value = ''; onClickSearchCancel()"
|
|
||||||
>
|
|
||||||
-->
|
|
||||||
<button
|
<button
|
||||||
mat-button
|
mat-button
|
||||||
matSuffix
|
matSuffix
|
||||||
|
@ -42,22 +36,7 @@
|
||||||
(click)="onClickSearchAndPrev()"
|
(click)="onClickSearchAndPrev()"
|
||||||
class="btn-toggle"
|
class="btn-toggle"
|
||||||
>
|
>
|
||||||
<svg
|
<i class="mid mdi-arrow-up"></i>
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="20"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="1.5"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
class="feather feather-arrow-up"
|
|
||||||
>
|
|
||||||
<path d="M3.3,9v6.7c0,0.9,0.7,1.7,1.7,1.7h10c0.9,0,1.7-0.7,1.7-1.7V9" />
|
|
||||||
<polyline class="st0" points="13.3,6 10,2.7 6.7,6 " />
|
|
||||||
<line class="st0" x1="10" y1="2.7" x2="10" y2="12.5" />
|
|
||||||
</svg>
|
|
||||||
</button>
|
</button>
|
||||||
<button class="icon-button btn-search" (click)="onClickPrevSearch()">
|
<button class="icon-button btn-search" (click)="onClickPrevSearch()">
|
||||||
<i class="mid mdi-arrow-up"></i>
|
<i class="mid mdi-arrow-up"></i>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
$tablet-l-width: 1024px;
|
$tablet-l-width: 1024px;
|
||||||
$tablet-s-width: 768px;
|
$tablet-s-width: 768px;
|
||||||
|
$search-item-color: #ffffff;
|
||||||
|
|
||||||
.chatroom-search {
|
.chatroom-search {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -18,14 +19,17 @@ $tablet-s-width: 768px;
|
||||||
}
|
}
|
||||||
form {
|
form {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
flex: 0 0 auto;
|
.icon-img {
|
||||||
width: 100%;
|
color: $search-item-color;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: #{$tablet-s-width}),
|
||||||
|
(max-height: 600px) {
|
||||||
|
.icon-img {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
.mat-form-field {
|
.mat-form-field {
|
||||||
flex-flow: row;
|
|
||||||
flex: 1 1 auto;
|
|
||||||
width: 70%;
|
width: 70%;
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
.mat-form-field-label,
|
.mat-form-field-label,
|
||||||
.mat-hint {
|
.mat-hint {
|
||||||
color: rgba(0, 0, 0, 0.54);
|
color: rgba(0, 0, 0, 0.54);
|
||||||
|
@ -46,61 +50,6 @@ $tablet-s-width: 768px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
::ng-deep .search-form {
|
|
||||||
form {
|
|
||||||
.icon-search {
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
align-self: center;
|
|
||||||
color: #ffffff;
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
@media screen and (max-width: #{$tablet-s-width}),
|
|
||||||
(max-height: 600px) {
|
|
||||||
.icon-search {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.mat-form-field-appearance-legacy {
|
|
||||||
.mat-form-field-wrapper {
|
|
||||||
color: #ffffff;
|
|
||||||
width: 100%;
|
|
||||||
padding-bottom: 0.8em;
|
|
||||||
.mat-form-field-infix {
|
|
||||||
.mat-input-element {
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.mat-form-field-suffix {
|
|
||||||
button {
|
|
||||||
position: relative;
|
|
||||||
transform: translateY(2px);
|
|
||||||
.mat-button-wrapper {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.mat-form-field-label {
|
|
||||||
color: rgba(255, 255, 255, 0.7) !important;
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
.mat-form-field-underline {
|
|
||||||
height: 0;
|
|
||||||
.mat-form-field-ripple {
|
|
||||||
top: 6px;
|
|
||||||
height: 1px;
|
|
||||||
overflow: hidden;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
::ng-deep .chat-search {
|
::ng-deep .chat-search {
|
||||||
margin: 0 4px 4px;
|
margin: 0 4px 4px;
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
|
@ -111,40 +60,12 @@ $tablet-s-width: 768px;
|
||||||
.search-form {
|
.search-form {
|
||||||
form {
|
form {
|
||||||
display: flex;
|
display: flex;
|
||||||
i {
|
icon-img {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-form {
|
|
||||||
form {
|
|
||||||
display: flex;
|
|
||||||
.mat-form-field {
|
|
||||||
.mat-form-field-wrapper {
|
|
||||||
padding: 0;
|
|
||||||
display: flex;
|
|
||||||
flex: 1 1 auto;
|
|
||||||
.mat-form-field-infix {
|
|
||||||
border: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: auto;
|
|
||||||
input {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.mat-form-field-label-wrapper {
|
|
||||||
top: 0;
|
|
||||||
.mat-form-field-label {
|
|
||||||
top: 0;
|
|
||||||
font-size: 0.9em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
::ng-deep .chatroom-search {
|
::ng-deep .chatroom-search {
|
||||||
|
@ -161,22 +82,18 @@ $tablet-s-width: 768px;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
color: #ffffff;
|
color: $search-item-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.btn-close-searchbox {
|
.btn-close-searchbox {
|
||||||
width: 36px;
|
width: 36px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
//background: #0367a6;
|
stroke: $search-item-color;
|
||||||
stroke: #ffffff;
|
|
||||||
border: none;
|
border: none;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
justify-items: center;
|
justify-items: center;
|
||||||
svg {
|
|
||||||
stroke: #ffffff;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,3 +13,89 @@ textarea {
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.input-lineless {
|
||||||
|
form {
|
||||||
|
display: flex;
|
||||||
|
flex: 0 0 auto;
|
||||||
|
width: 100%;
|
||||||
|
.mat-form-field-appearance-legacy {
|
||||||
|
.mat-form-field-wrapper {
|
||||||
|
color: #ffffff;
|
||||||
|
width: 100%;
|
||||||
|
.mat-form-field-infix {
|
||||||
|
.mat-input-element {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.mat-form-field-suffix {
|
||||||
|
button {
|
||||||
|
position: relative;
|
||||||
|
transform: translateY(2px);
|
||||||
|
.mat-button-wrapper {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.mat-form-field-label {
|
||||||
|
color: rgba(255, 255, 255, 0.7) !important;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
.mat-form-field-underline {
|
||||||
|
height: 0;
|
||||||
|
.mat-form-field-ripple {
|
||||||
|
top: 6px;
|
||||||
|
height: 1px;
|
||||||
|
overflow: hidden;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-img {
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-self: center;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-form-field {
|
||||||
|
flex-flow: row;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
width: 90%;
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
.mat-form-field-wrapper {
|
||||||
|
padding: 0;
|
||||||
|
display: flex;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
.mat-form-field-infix {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: auto;
|
||||||
|
input {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.mat-form-field-label-wrapper {
|
||||||
|
top: 0;
|
||||||
|
.mat-form-field-label {
|
||||||
|
top: 0;
|
||||||
|
color: rgba(255, 255, 255, 0.7) !important;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.mat-form-field-underline {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -25,7 +25,8 @@ mat-icon {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon-button {
|
.icon-button,
|
||||||
|
.icon-img {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
justify-items: center;
|
justify-items: center;
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
matTooltip="{{ 'common.messages.zoomReset' | translate }}"
|
matTooltip="{{ 'common.messages.zoomReset' | translate }}"
|
||||||
matTooltipPosition="below"
|
matTooltipPosition="below"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
|
(click)="onClickZoomReset()"
|
||||||
>
|
>
|
||||||
<!--<mat-icon>settings_overscan</mat-icon>-->
|
<!--<mat-icon>settings_overscan</mat-icon>-->
|
||||||
|
|
||||||
|
@ -51,6 +52,7 @@
|
||||||
matTooltip="{{ 'common.messages.zoomOut' | translate }}"
|
matTooltip="{{ 'common.messages.zoomOut' | translate }}"
|
||||||
matTooltipPosition="below"
|
matTooltipPosition="below"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
|
(click)="onClickZoomOut()"
|
||||||
>
|
>
|
||||||
<!--<mat-icon>zoom_out</mat-icon>-->
|
<!--<mat-icon>zoom_out</mat-icon>-->
|
||||||
<svg
|
<svg
|
||||||
|
@ -75,6 +77,7 @@
|
||||||
matTooltip="{{ 'common.messages.zoomIn' | translate }}"
|
matTooltip="{{ 'common.messages.zoomIn' | translate }}"
|
||||||
matTooltipPosition="below"
|
matTooltipPosition="below"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
|
(click)="onClickZoomIn()"
|
||||||
>
|
>
|
||||||
<!--<mat-icon>zoom_in</mat-icon>-->
|
<!--<mat-icon>zoom_in</mat-icon>-->
|
||||||
<svg
|
<svg
|
||||||
|
@ -162,7 +165,14 @@
|
||||||
fxFlexFill
|
fxFlexFill
|
||||||
fxLayoutAlign="center center"
|
fxLayoutAlign="center center"
|
||||||
>
|
>
|
||||||
<img *ngIf="fileDownloadUrl" [src]="fileDownloadUrl" />
|
<img
|
||||||
|
#downloadImage
|
||||||
|
*ngIf="fileDownloadUrl"
|
||||||
|
[src]="fileDownloadUrl"
|
||||||
|
[style.width]="(zoomRatio / 100) * naturalWidth + 'px'"
|
||||||
|
[style.height]="'auto'"
|
||||||
|
(load)="onLoadFileDownloadUrl(downloadImage)"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -39,11 +39,15 @@
|
||||||
height: calc(100% - 60px);
|
height: calc(100% - 60px);
|
||||||
|
|
||||||
.ucap-image-viewer-image-wrapper {
|
.ucap-image-viewer-image-wrapper {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 20px;
|
|
||||||
background-color: rgba(0, 0, 0, 0.7);
|
background-color: rgba(0, 0, 0, 0.7);
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
height: inherit;
|
position: absolute;
|
||||||
|
max-width: none !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,12 @@
|
||||||
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
|
import {
|
||||||
|
Component,
|
||||||
|
OnInit,
|
||||||
|
Input,
|
||||||
|
Output,
|
||||||
|
EventEmitter,
|
||||||
|
ElementRef,
|
||||||
|
ViewChild
|
||||||
|
} from '@angular/core';
|
||||||
import { ucapAnimations } from '../../animations';
|
import { ucapAnimations } from '../../animations';
|
||||||
import { FileEventJson } from '@ucap-webmessenger/protocol-event';
|
import { FileEventJson } from '@ucap-webmessenger/protocol-event';
|
||||||
import { FileDownloadItem } from '@ucap-webmessenger/api';
|
import { FileDownloadItem } from '@ucap-webmessenger/api';
|
||||||
|
@ -24,9 +32,17 @@ export class ImageViewerComponent implements OnInit {
|
||||||
|
|
||||||
fileDownloadItem: FileDownloadItem;
|
fileDownloadItem: FileDownloadItem;
|
||||||
|
|
||||||
|
naturalWidth = 0;
|
||||||
|
naturalHeight = 0;
|
||||||
|
|
||||||
|
zoomRatio = 100;
|
||||||
|
|
||||||
constructor() {}
|
constructor() {}
|
||||||
|
|
||||||
ngOnInit() {}
|
ngOnInit() {
|
||||||
|
this.naturalWidth = this.fileInfo.imageWidth;
|
||||||
|
this.naturalHeight = this.fileInfo.imageHeight;
|
||||||
|
}
|
||||||
|
|
||||||
onClickDownload(): void {
|
onClickDownload(): void {
|
||||||
this.fileDownloadItem = new FileDownloadItem();
|
this.fileDownloadItem = new FileDownloadItem();
|
||||||
|
@ -36,4 +52,26 @@ export class ImageViewerComponent implements OnInit {
|
||||||
onClickClose(): void {
|
onClickClose(): void {
|
||||||
this.closed.emit();
|
this.closed.emit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onLoadFileDownloadUrl(img: HTMLImageElement) {
|
||||||
|
console.log('onLoadFileDownloadUrl', img.naturalWidth, img.naturalHeight);
|
||||||
|
this.naturalWidth = img.naturalWidth;
|
||||||
|
this.naturalHeight = img.naturalHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
onClickZoomOut() {
|
||||||
|
if (60 >= this.zoomRatio) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.zoomRatio -= 10;
|
||||||
|
}
|
||||||
|
onClickZoomIn() {
|
||||||
|
if (180 <= this.zoomRatio) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.zoomRatio += 10;
|
||||||
|
}
|
||||||
|
onClickZoomReset() {
|
||||||
|
this.zoomRatio = 100;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
<div class="search-container">
|
<div class="search-container">
|
||||||
<mat-form-field appearance="outline">
|
<span class="icon-img">
|
||||||
|
<i class="mid mdi-magnify"></i>
|
||||||
|
</span>
|
||||||
|
<!--<mat-form-field appearance="outline">-->
|
||||||
|
<mat-form-field>
|
||||||
<input
|
<input
|
||||||
matInput
|
matInput
|
||||||
#searchWordInput
|
#searchWordInput
|
||||||
|
@ -7,6 +11,5 @@
|
||||||
(keydown.enter)="onKeyDownEnter(searchWordInput.value)"
|
(keydown.enter)="onKeyDownEnter(searchWordInput.value)"
|
||||||
[value]="!!searchWord ? searchWord : ''"
|
[value]="!!searchWord ? searchWord : ''"
|
||||||
/>
|
/>
|
||||||
<mat-icon matPrefix>search</mat-icon>
|
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,3 +1,13 @@
|
||||||
.search-container {
|
.search-container {
|
||||||
-webkit-app-region: no-drag;
|
-webkit-app-region: no-drag;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
align-items: center;
|
||||||
|
width: 250px;
|
||||||
|
max-width: 250px;
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 0.9em;
|
||||||
|
.icon-img {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
|
|
||||||
<div fxLayout="column" class="rightDrawer-notice">
|
<div fxLayout="column" class="rightDrawer-notice">
|
||||||
<div fxFlex="1 1 80px" class="search-area">
|
<div class="search-area">
|
||||||
<ucap-integrated-search-form
|
<ucap-integrated-search-form
|
||||||
[searchWord]="!!searchWord ? searchWord : ''"
|
[searchWord]="!!searchWord ? searchWord : ''"
|
||||||
(search)="onSearch($event)"
|
(search)="onSearch($event)"
|
||||||
|
@ -28,10 +29,7 @@
|
||||||
{{ 'search.fieldProfile' | translate }}
|
{{ 'search.fieldProfile' | translate }}
|
||||||
</th>
|
</th>
|
||||||
<td mat-cell *matCellDef="let element">
|
<td mat-cell *matCellDef="let element">
|
||||||
<div class="profile">
|
<div class="profile thumbnail-mask">
|
||||||
{{ getPresence(element, PresenceType.PC) }} /
|
|
||||||
{{ getPresence(element, PresenceType.MOBILE) }} /
|
|
||||||
{{ getWorkstatus(element) }} /
|
|
||||||
<img
|
<img
|
||||||
class="thumbnail"
|
class="thumbnail"
|
||||||
ucapImage
|
ucapImage
|
||||||
|
@ -41,6 +39,7 @@
|
||||||
(click)="onClickOpenProfile($event, element.seq)"
|
(click)="onClickOpenProfile($event, element.seq)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container matColumnDef="name">
|
<ng-container matColumnDef="name">
|
||||||
|
@ -57,6 +56,22 @@
|
||||||
<div class="name">
|
<div class="name">
|
||||||
{{ element.name }}
|
{{ element.name }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="status">
|
||||||
|
{{ getPresence(element, PresenceType.PC) }} /
|
||||||
|
{{ getPresence(element, PresenceType.MOBILE) }} /
|
||||||
|
{{ getWorkstatus(element) }}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
|
<ng-container matColumnDef="grade">
|
||||||
|
<th mat-header-cell *matHeaderCellDef #header class="grade" (mousedown)="resizeTable($event, header)">
|
||||||
|
{{ 'search.fieldGrade' | translate }}
|
||||||
|
</th>
|
||||||
|
<td mat-cell *matCellDef="let element" class="grade">
|
||||||
|
<div class="grade">
|
||||||
|
{{ element.grade }}
|
||||||
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container matColumnDef="deptName">
|
<ng-container matColumnDef="deptName">
|
||||||
|
@ -91,22 +106,7 @@
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container matColumnDef="grade">
|
|
||||||
<th
|
|
||||||
mat-header-cell
|
|
||||||
*matHeaderCellDef
|
|
||||||
#header
|
|
||||||
class="grade"
|
|
||||||
(mousedown)="resizeTable($event, header)"
|
|
||||||
>
|
|
||||||
{{ 'search.fieldGrade' | translate }}
|
|
||||||
</th>
|
|
||||||
<td mat-cell *matCellDef="let element" class="grade">
|
|
||||||
<div class="grade">
|
|
||||||
{{ element.grade }}
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</ng-container>
|
|
||||||
<ng-container matColumnDef="lineNumber">
|
<ng-container matColumnDef="lineNumber">
|
||||||
<th
|
<th
|
||||||
mat-header-cell
|
mat-header-cell
|
||||||
|
|
|
@ -1,106 +1,81 @@
|
||||||
|
@mixin ellipsis($row) {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
@if $row == 1 {
|
||||||
|
display: block;
|
||||||
|
white-space: nowrap;
|
||||||
|
word-wrap: normal;
|
||||||
|
} @else if $row >= 2 {
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: $row;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.search-scrollbar {
|
.search-scrollbar {
|
||||||
height: 550px;
|
height: 550px;
|
||||||
}
|
}
|
||||||
// .search-container {
|
|
||||||
// -webkit-app-region: no-drag;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// @mixin ellipsis($row) {
|
::ng-deep .search-area {
|
||||||
// overflow: hidden;
|
.search-container {
|
||||||
// text-overflow: ellipsis;
|
width: 100%;
|
||||||
// @if $row == 1 {
|
max-width: 100%;
|
||||||
// display: block;
|
.icon-img {
|
||||||
// white-space: nowrap;
|
color: #777777;
|
||||||
// word-wrap: normal;
|
transform: translateY(-4px);
|
||||||
// } @else if $row >= 2 {
|
}
|
||||||
// display: -webkit-box;
|
.mat-form-field {
|
||||||
// -webkit-line-clamp: $row;
|
color: #333333;
|
||||||
// -webkit-box-orient: vertical;
|
width: 100%;
|
||||||
// word-wrap: break-word;
|
margin-left: -20px;
|
||||||
// line-height: 1.2em;
|
.mat-form-field-infix {
|
||||||
// }
|
padding-left: 26px;
|
||||||
// }
|
}
|
||||||
|
&.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float
|
||||||
|
.mat-form-field-label,
|
||||||
|
.mat-form-field-appearance-legacy.mat-form-field-can-float
|
||||||
|
.mat-input-server:focus
|
||||||
|
+ .mat-form-field-label-wrapper
|
||||||
|
.mat-form-field-label {
|
||||||
|
font-size: 0.7em;
|
||||||
|
transform: translateY(-1.28125em) scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// .rightDrawer-notice {
|
.table-box {
|
||||||
// width: 100%;
|
font-size: 13px;
|
||||||
// height: calc(100% - 60px);
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
td.mat-cell {
|
||||||
|
padding: 6px;
|
||||||
|
div {
|
||||||
|
@include ellipsis(1);
|
||||||
|
&.name {
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
&.status {
|
||||||
|
font-size: 0.84em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// .table-box {
|
.thumbnail {
|
||||||
// height: calc(100% - 111.5px);
|
&-mask {
|
||||||
// overflow: auto;
|
width: 40px;
|
||||||
// }
|
height: 40px;
|
||||||
// }
|
border-radius: 50%;
|
||||||
|
overflow: hidden;
|
||||||
// .mat-table {
|
margin-right: 12px;
|
||||||
// width: 100%;
|
position: relative;
|
||||||
// position: relative;
|
img {
|
||||||
// th.infos {
|
width: 40px;
|
||||||
// padding: 10px;
|
height: auto;
|
||||||
// text-align: center;
|
background-color: #efefef;
|
||||||
// }
|
}
|
||||||
// tr.mat-row {
|
}
|
||||||
// height: 70px;
|
}
|
||||||
// .notice-info {
|
|
||||||
// padding: 16px;
|
|
||||||
// display: grid;
|
|
||||||
// height: 70px;
|
|
||||||
// .title {
|
|
||||||
// font-weight: 600;
|
|
||||||
// margin-bottom: 2px;
|
|
||||||
// width: 100%;
|
|
||||||
// @include ellipsis(2);
|
|
||||||
// display: flex;
|
|
||||||
// align-items: center;
|
|
||||||
// .important {
|
|
||||||
// color: red;
|
|
||||||
// margin-right: 6px;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .date {
|
|
||||||
// .date {
|
|
||||||
// font-size: 0.8em;
|
|
||||||
// text-align: right;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .mat-paginator-container {
|
|
||||||
// display: flex;
|
|
||||||
// flex-flow: column;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .mat-row:hover {
|
|
||||||
// background: rgba(0, 0, 0, 0.04);
|
|
||||||
// cursor: pointer;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .footer-fix {
|
|
||||||
// position: absolute;
|
|
||||||
// bottom: 0;
|
|
||||||
// flex-direction: column;
|
|
||||||
// box-sizing: border-box;
|
|
||||||
// display: flex;
|
|
||||||
// border-top: 1px solid #dddddd;
|
|
||||||
// .mat-paginator {
|
|
||||||
// .mat-paginator-container {
|
|
||||||
// justify-content: center;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .btn-box {
|
|
||||||
// height: 50px;
|
|
||||||
// padding-bottom: 10px;
|
|
||||||
// width: 100%;
|
|
||||||
// background-color: #ffffff;
|
|
||||||
// button {
|
|
||||||
// margin: 5px;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .mat-form-field-appearance-legacy {
|
|
||||||
// .mat-form-field-infix {
|
|
||||||
// padding: 6px;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user