From de45a7f218b6bb4a022009873024ea56838498d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janis=20Daniel=20Da=CC=88hne?= <janis.daehne2@student.uni-halle.de> Date: Fri, 9 Aug 2019 13:31:15 +0200 Subject: [PATCH] - modified 404 chat styling - added auto scroll disable --- src/components/404internal/Chat404.tsx | 37 +++++++++++++++++++------- src/components/404internal/style.styl | 17 ++++++++++-- 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/src/components/404internal/Chat404.tsx b/src/components/404internal/Chat404.tsx index d8073fba..b9d81a63 100644 --- a/src/components/404internal/Chat404.tsx +++ b/src/components/404internal/Chat404.tsx @@ -51,6 +51,8 @@ type ChatMessage = ConversationUserEntered | ConversationMessage interface State { // tslint:disable-next-line readonly currentConversation: ChatMessage[] + + readonly isAutoScrollBotEnabled: boolean } const chatWrapperId = 'chat-window-wrapper' @@ -75,6 +77,7 @@ class Chat404 extends React.Component<Props, State> { this.state = { currentConversation: [], + isAutoScrollBotEnabled: true, } } @@ -148,7 +151,10 @@ class Chat404 extends React.Component<Props, State> { } as ChatMessage - this.scrollToBottom() + if (this.state.isAutoScrollBotEnabled) { + this.scrollToBottom() + } + await wait(this.getTypingTimeInMsFromMsg(message.message)) //remove old message and insert new with changed props @@ -170,7 +176,10 @@ class Chat404 extends React.Component<Props, State> { } as State }) - this.scrollToBottom() + if (this.state.isAutoScrollBotEnabled) { + this.scrollToBottom() + } + await wait(this.getReadTimeInMsFromMsg(message.message)) } @@ -192,7 +201,11 @@ class Chat404 extends React.Component<Props, State> { 404 </div> - <div className="down-button clickable" onClick={() => { + <div className={`down-button clickable${this.state.isAutoScrollBotEnabled ? ' is-enabled' : ''}`} onClick={() => { + this.setState((prevState, props) => ({ + ...prevState, + isAutoScrollBotEnabled: !prevState.isAutoScrollBotEnabled + })) this.scrollToBottom() }}> <Icon name="chevron down"/> @@ -228,7 +241,9 @@ class Chat404 extends React.Component<Props, State> { } if (value.withLoading) { - return (<div key={key} className="chat-entry foreign-message is-typing"> + return (<div key={key} className={`chat-entry foreign-message is-typing${value.name === 'Janis' + ? ' alternate' + : ''}`}> <div className={`user-name${value.name === 'Janis' ? ' alternate' : ''}`}>{value.name}</div> @@ -240,7 +255,9 @@ class Chat404 extends React.Component<Props, State> { </div>) } - return (<div key={key} className="chat-entry foreign-message"> + return (<div key={key} className={`chat-entry foreign-message${value.name === 'Janis' + ? ' alternate' + : ''}`}> <div className={`user-name${value.name === 'Janis' ? ' alternate' : ''}`}>{value.name}</div> @@ -272,11 +289,11 @@ const conversion: ReadonlyArray<ChatMessage> = [ kind: 'user-entered', message: 'Janis hat den Chat betreten' }, - { - kind: 'message', - message: '???', - withLoading: false - }, + // { + // kind: 'message', + // message: '???', + // withLoading: false + // }, { kind: 'message', name: 'Steffen', diff --git a/src/components/404internal/style.styl b/src/components/404internal/style.styl index 2840f850..f31166fd 100644 --- a/src/components/404internal/style.styl +++ b/src/components/404internal/style.styl @@ -18,12 +18,20 @@ justify-content: center; align-items: center; z-index 2 + box-shadow: 0 3px 2px -2px #c3c3c3 .icon { margin 0 } + + &.is-enabled { + opacity 1 !important + border 1px solid #099eff + border-radius 50% + } } + .watermark { pointer-events none position absolute @@ -42,6 +50,7 @@ background-clip: text; color: transparent; text-shadow: rgba(255, 255, 255, 0.5) 0px 3px 3px; + opacity 0.2 } } @@ -52,7 +61,7 @@ } .chat-window { - width 100% + width calc(100% - 3em) display flex flex-direction column padding 1em @@ -67,7 +76,7 @@ margin-bottom 1em max-width 90% padding 0.3em - box-shadow: 0px 3px 2px -2px #c3c3c3 + box-shadow: 0 3px 2px -2px #c3c3c3 &.user-entered { padding: 0.3em 7px; @@ -89,6 +98,10 @@ } } + &.foreign-message.alternate { + align-self flex-end + } + &.own-message { background-color rgb(232, 253, 203) -- GitLab