Merge branch 'master' of https://git.loafle.net/ucap-web/next-ucap-messenger
This commit is contained in:
commit
fcc17a3d45
|
@ -30,6 +30,7 @@
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
border: 1px solid #cccccc;
|
border: 1px solid #cccccc;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
font-size: 0.9em;
|
||||||
.select-file {
|
.select-file {
|
||||||
color: #212121;
|
color: #212121;
|
||||||
border-bottom: 1px dotted #dddddd;
|
border-bottom: 1px dotted #dddddd;
|
||||||
|
@ -74,8 +75,7 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
width: 100px;
|
height: 90px;
|
||||||
height: 100px;
|
|
||||||
background-color: #efefef;
|
background-color: #efefef;
|
||||||
border: 1px dotted #cccccc;
|
border: 1px dotted #cccccc;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
@ -87,12 +87,10 @@
|
||||||
dd {
|
dd {
|
||||||
.btn-download {
|
.btn-download {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
|
height:40px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&:nth-child(3n + 0) {
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,14 +100,18 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: wrap;
|
flex-flow: wrap;
|
||||||
height: auto;
|
height: auto;
|
||||||
justify-content: space-between;
|
justify-content: stretch;
|
||||||
|
align-content: space-between;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
.img-item {
|
.img-item {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 130px;
|
width: 32%;
|
||||||
width: 33%;
|
margin-right: 2%;
|
||||||
|
&:nth-child(3n + 0) {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,6 +130,7 @@
|
||||||
button {
|
button {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
|
padding: 0 12px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -173,6 +173,7 @@ $listH-row2: 60px;
|
||||||
button {
|
button {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
|
padding: 0 12px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div fxLayout="column" class="list">
|
<div fxLayout="column" class="list">
|
||||||
<div class="search-list">
|
<div class="search-list">
|
||||||
<perfect-scrollbar class="album-scrollbar">
|
<perfect-scrollbar class="room-user-scrollbar">
|
||||||
<ucap-profile-user-list-item
|
<ucap-profile-user-list-item
|
||||||
*ngFor="let userInfo of userInfoList"
|
*ngFor="let userInfo of userInfoList"
|
||||||
[userInfo]="userInfo"
|
[userInfo]="userInfo"
|
||||||
|
|
|
@ -455,31 +455,40 @@
|
||||||
class="version-info-container menu-item"
|
class="version-info-container menu-item"
|
||||||
(click)="$event.stopPropagation()"
|
(click)="$event.stopPropagation()"
|
||||||
>
|
>
|
||||||
<div>
|
<div class="version-info-now">
|
||||||
<span>
|
<span class="version-info-item">
|
||||||
{{ 'information.installedVersion' | translate }}:{{ appVersion }}
|
{{ 'information.installedVersion' | translate }}:<span
|
||||||
|
class="info-content"
|
||||||
|
>{{ appVersion }}</span
|
||||||
|
>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="checkingUpdate">
|
<div *ngIf="checkingUpdate" class="version-info-newest">
|
||||||
<div *ngIf="checkingUpdateIsProcessing" style="display: flex;">
|
<div *ngIf="checkingUpdateIsProcessing">
|
||||||
|
<span class="version-info-item">
|
||||||
|
{{ 'information.checkForUpdatesInProgress' | translate }}
|
||||||
|
<span class="info-content">
|
||||||
<mat-spinner
|
<mat-spinner
|
||||||
*ngIf="checkingUpdate && checkingUpdateIsProcessing"
|
*ngIf="checkingUpdate && checkingUpdateIsProcessing"
|
||||||
diameter="20"
|
diameter="20"
|
||||||
strokeWidth="1"
|
strokeWidth="1"
|
||||||
></mat-spinner>
|
></mat-spinner>
|
||||||
{{ 'information.checkForUpdatesInProgress' | translate }}
|
</span>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="!checkingUpdateIsProcessing" style="display: flex;">
|
<div *ngIf="!checkingUpdateIsProcessing" style="display: flex;">
|
||||||
<span>
|
<span class="version-info-item">
|
||||||
{{ 'information.latestVersion' | translate }}:{{
|
{{ 'information.latestVersion' | translate }}:<span
|
||||||
checkingUpdateAppVersion
|
class="info-content"
|
||||||
}}
|
>{{ checkingUpdateAppVersion }}</span
|
||||||
|
>
|
||||||
</span>
|
</span>
|
||||||
<span>
|
<span class="version-info-button">
|
||||||
<button
|
<button
|
||||||
*ngIf="checkingUpdateIsExist"
|
*ngIf="checkingUpdateIsExist"
|
||||||
mat-button
|
mat-flat-button
|
||||||
|
class="mat-primary"
|
||||||
(click)="onClickApplyUpdate($event)"
|
(click)="onClickApplyUpdate($event)"
|
||||||
>
|
>
|
||||||
{{ 'information.applyUpdates' | translate }}
|
{{ 'information.applyUpdates' | translate }}
|
||||||
|
|
|
@ -298,5 +298,41 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.version-info-container {
|
.version-info-container {
|
||||||
width: 250px;
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
padding: 10px 20px;
|
||||||
|
.version-info-now {
|
||||||
|
.version-info-item {
|
||||||
|
display: flex;
|
||||||
|
height: 2em;
|
||||||
|
justify-items: center;
|
||||||
|
.info-content {
|
||||||
|
margin-left: auto;
|
||||||
|
text-align: end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.version-info-newest {
|
||||||
|
width: 240px;
|
||||||
|
div {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
.version-info-item {
|
||||||
|
display: flex;
|
||||||
|
height: 2em;
|
||||||
|
justify-items: center;
|
||||||
|
.info-content {
|
||||||
|
margin-left: auto;
|
||||||
|
text-align: end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.version-info-button {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
button {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,8 +60,8 @@
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
margin: 50px auto;
|
margin: 50px auto;
|
||||||
text-indent: -9999em;
|
text-indent: -9999em;
|
||||||
width: 11em;
|
width: 100px;
|
||||||
height: 11em;
|
height: 100px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
background: -moz-linear-gradient(
|
background: -moz-linear-gradient(
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
.credit {
|
.credit {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
font-size: 1.3em;
|
font-size: 1.2em;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,3 +137,13 @@
|
||||||
transform: rotate(360deg);
|
transform: rotate(360deg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1024px), (max-height: 800px) {
|
||||||
|
.load-container .loader {
|
||||||
|
width: 10vw;
|
||||||
|
height: 10vw;
|
||||||
|
}
|
||||||
|
.credit {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -17,18 +17,6 @@ $login-max-height: 800px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@include tab {
|
|
||||||
.login-form {
|
|
||||||
width: 34vw;
|
|
||||||
min-width: 34vw;
|
|
||||||
font-size: 0.9em;
|
|
||||||
}
|
|
||||||
.mat-title {
|
|
||||||
width: 14vh;
|
|
||||||
height: 14vh;
|
|
||||||
margin: 10px 0 10px 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.login-form {
|
.login-form {
|
||||||
position: relative;
|
position: relative;
|
||||||
transform: scale(1);
|
transform: scale(1);
|
||||||
|
|
|
@ -142,6 +142,7 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
readToHereEvent: Info<EventJson>;
|
readToHereEvent: Info<EventJson>;
|
||||||
swapped = false;
|
swapped = false;
|
||||||
|
hidden = false;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private logger: NGXLogger,
|
private logger: NGXLogger,
|
||||||
|
@ -384,9 +385,10 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
to: Info<EventJson>,
|
to: Info<EventJson>,
|
||||||
preCallback: () => void,
|
preCallback: () => void,
|
||||||
postCallback: () => void,
|
postCallback: () => void,
|
||||||
useSwap: boolean = true
|
useHide: boolean,
|
||||||
|
useSwap: boolean
|
||||||
) {
|
) {
|
||||||
this.preSwapScroll(useSwap);
|
this.preSwapScroll(useHide, useSwap);
|
||||||
if (!!preCallback) {
|
if (!!preCallback) {
|
||||||
preCallback();
|
preCallback();
|
||||||
}
|
}
|
||||||
|
@ -395,12 +397,12 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
if (!!postCallback) {
|
if (!!postCallback) {
|
||||||
postCallback();
|
postCallback();
|
||||||
}
|
}
|
||||||
this.postSwapScroll(useSwap);
|
this.postSwapScroll(useHide, useSwap);
|
||||||
}, 100);
|
}, 100);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
preSwapScroll(useSwap: boolean = true) {
|
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;
|
||||||
|
@ -408,10 +410,13 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
this.swapped = true;
|
this.swapped = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (useHide && !this.hidden) {
|
||||||
this.chatMessagesContainer.nativeElement.classList.add('hide');
|
this.chatMessagesContainer.nativeElement.classList.add('hide');
|
||||||
|
this.hidden = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
postSwapScroll(useSwap: boolean = true) {
|
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;
|
||||||
|
@ -419,7 +424,10 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
this.swapped = false;
|
this.swapped = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (useHide && this.hidden) {
|
||||||
this.chatMessagesContainer.nativeElement.classList.remove('hide');
|
this.chatMessagesContainer.nativeElement.classList.remove('hide');
|
||||||
|
this.hidden = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ready(): void {
|
ready(): void {
|
||||||
|
@ -434,7 +442,9 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
() => {},
|
() => {},
|
||||||
() => {
|
() => {
|
||||||
this.firstCheckReadHere = false;
|
this.firstCheckReadHere = false;
|
||||||
}
|
},
|
||||||
|
true,
|
||||||
|
true
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
this.swapScroll(
|
this.swapScroll(
|
||||||
|
@ -442,7 +452,9 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
() => {},
|
() => {},
|
||||||
() => {
|
() => {
|
||||||
this.storedScrollItem = undefined;
|
this.storedScrollItem = undefined;
|
||||||
}
|
},
|
||||||
|
true,
|
||||||
|
true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else if (this.scrollUpInitalized) {
|
} else if (this.scrollUpInitalized) {
|
||||||
|
@ -460,18 +472,34 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
() => {},
|
() => {},
|
||||||
() => {
|
() => {
|
||||||
this.firstCheckReadHere = false;
|
this.firstCheckReadHere = false;
|
||||||
}
|
},
|
||||||
|
true,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
if (
|
||||||
|
this.virtualScroller.viewPortInfo.endIndex ===
|
||||||
|
this.eventList.length - 2
|
||||||
|
) {
|
||||||
|
this.swapScroll(
|
||||||
|
this.eventList[this.eventList.length - 1],
|
||||||
|
() => {},
|
||||||
|
() => {},
|
||||||
|
false,
|
||||||
|
false
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
this.swapScroll(
|
this.swapScroll(
|
||||||
this.eventList[this.eventList.length - 1],
|
this.eventList[this.eventList.length - 1],
|
||||||
() => {},
|
() => {},
|
||||||
() => {},
|
() => {},
|
||||||
|
true,
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
initEventMore() {
|
initEventMore() {
|
||||||
// 방정보가 바뀌면 이전대화 보기 관련 값들을 초기화 한다.
|
// 방정보가 바뀌면 이전대화 보기 관련 값들을 초기화 한다.
|
||||||
|
@ -499,7 +527,7 @@ export class MessagesComponent implements OnInit, OnDestroy {
|
||||||
if (this.scrollUpInitalized && this.eventRemained) {
|
if (this.scrollUpInitalized && this.eventRemained) {
|
||||||
this.storeScrollPosition();
|
this.storeScrollPosition();
|
||||||
|
|
||||||
this.preSwapScroll();
|
this.preSwapScroll(true, true);
|
||||||
|
|
||||||
this.moreEvent.emit(this.eventList[0].seq);
|
this.moreEvent.emit(this.eventList[0].seq);
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ $thumbnail-msize: 40px;
|
||||||
|
|
||||||
.room-info {
|
.room-info {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
width: calc(100% - 80px);
|
width: calc(100% - 60px);
|
||||||
.detail {
|
.detail {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
color: $font-dark;
|
color: $font-dark;
|
||||||
|
@ -118,12 +118,12 @@ $thumbnail-msize: 40px;
|
||||||
}
|
}
|
||||||
.date {
|
.date {
|
||||||
float: right;
|
float: right;
|
||||||
width: 70px;
|
width: 60px;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
margin-left: 10px;
|
|
||||||
color: $font-mid;
|
color: $font-mid;
|
||||||
align-items: flex-start;
|
align-items: flex-end;
|
||||||
margin-top: -2px;
|
margin-top: -2px;
|
||||||
|
margin-left: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ $line-basic: 1px solid #dddddd;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin-right: 16px;
|
margin-right: 12px;
|
||||||
position: relative;
|
position: relative;
|
||||||
img {
|
img {
|
||||||
width: 40px;
|
width: 40px;
|
||||||
|
|
|
@ -1,13 +1,21 @@
|
||||||
.sticker-selector {
|
::ng-deep .sticker-selector {
|
||||||
height: 220px;
|
height: 220px;
|
||||||
border-top: 1px solid #cccccc;
|
border-top: 1px solid #cccccc;
|
||||||
|
.mat-tab-header {
|
||||||
|
.mat-tab-label {
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.mat-tab-body-wrapper {
|
||||||
|
height: 180px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.sticker-item-box {
|
.sticker-item-box {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
padding: 20px 20px 0;
|
padding: 20px 20px 0;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.sticker-item {
|
.sticker-item {
|
||||||
width: 60px;
|
width: 60px;
|
||||||
|
@ -15,6 +23,7 @@
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.selected-sticker {
|
.selected-sticker {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user