diff --git a/src/webview/css/css.js b/src/webview/css/css.js index c054e92c9b9..6ba9b100e0d 100644 --- a/src/webview/css/css.js +++ b/src/webview/css/css.js @@ -74,7 +74,7 @@ hr { display: flex; flex-direction: row; justify-content: space-between; - margin-bottom: 4px; + margin-bottom: 6px; } .timerow { text-align: center; @@ -95,20 +95,40 @@ hr { .timerow-right { background: -webkit-linear-gradient(left, #999 0%, transparent 90%); } -.timestamp { - color: #999; - font-size: 0.9rem; - white-space: nowrap; -} .message, .loading { display: flex; word-wrap: break-word; padding: 16px; + -webkit-tap-highlight-color: transparent; } .message-brief { padding: 0 16px 16px 64px; } +.time-container { + position: absolute; + right: 0; + width: 7em; + height: 2em; + overflow: hidden; + pointer-events: none; +} +.timestamp { + color: hsla(0, 0%, 0%, 0.65); + background: hsl(0, 0%, 92%); + box-shadow: -1px 1px 2px 0 hsla(0, 0%, 0%, 0.3), -2px 2px 4px 0 hsla(0, 0%, 0%, 0.3); + border-radius: 3px; + padding: 0.125em 0; + margin: 0 1.5em; + font-size: 0.9rem; + text-align: center; + white-space: nowrap; + transition: transform 0.2s; + transform: translateX(125%); +} +.timestamp.show { + transform: translateX(15%); +} .message p + p { margin-top: 16px; } @@ -152,7 +172,8 @@ hr { justify-content: space-between; } .avatar, -.header-wrapper { +.header-wrapper, +.message { cursor: pointer; } .stream-header { diff --git a/src/webview/css/cssNight.js b/src/webview/css/cssNight.js index cca8a2ab4de..dd136cb6ba7 100644 --- a/src/webview/css/cssNight.js +++ b/src/webview/css/cssNight.js @@ -8,6 +8,10 @@ body { .topic-header { background: #54606E; } +.timestamp { + color: hsla(0, 0%, 100%, 0.5); + background: hsl(213, 14%, 34%); +} .highlight { background-color: hsla(51, 100%, 64%, 0.42); } diff --git a/src/webview/html/htmlBody.js b/src/webview/html/htmlBody.js index e0b8a968af7..b70c7b86162 100644 --- a/src/webview/html/htmlBody.js +++ b/src/webview/html/htmlBody.js @@ -7,7 +7,7 @@ const messageLoadingHtml = template`
-
+
diff --git a/src/webview/html/messageAsHtml.js b/src/webview/html/messageAsHtml.js index 6cc1f1dc340..b3c64478bc9 100644 --- a/src/webview/html/messageAsHtml.js +++ b/src/webview/html/messageAsHtml.js @@ -81,7 +81,7 @@ export const flagsStateToStringList = (flags: FlagsState, id: number): string[] Object.keys(flags).filter(key => flags[key][id]); export default (backgroundData: BackgroundData, message: Message | Outbox, isBrief: boolean) => { - const { id } = message; + const { id, timestamp } = message; const flagStrings = flagsStateToStringList(backgroundData.flags, id); const divOpenHtml = template`
template`data-${flag}="true" `).join('')} >`; + const timestampHtml = (showOnRender: boolean) => template` +
+
+ ${shortTime(new Date(timestamp * 1000), backgroundData.twentyFourHourTime)} +
+
+`; const bodyHtml = message.submessages && message.submessages.length > 0 ? widgetBody(message) @@ -100,22 +107,21 @@ export default (backgroundData: BackgroundData, message: Message | Outbox, isBri return template` $!${divOpenHtml}
+ $!${timestampHtml(false)} $!${bodyHtml}
`; } - const { sender_full_name, sender_email, timestamp } = message; + const { sender_full_name, sender_email } = message; const avatarUrl = getAvatarFromMessage(message, backgroundData.auth.realm); const subheaderHtml = template`
${sender_full_name}
-
- ${shortTime(new Date(timestamp * 1000), backgroundData.twentyFourHourTime)} -
+ $!${timestampHtml(true)}
`; diff --git a/src/webview/js/generatedEs3.js b/src/webview/js/generatedEs3.js index 2866d45e3d9..78277a14030 100644 --- a/src/webview/js/generatedEs3.js +++ b/src/webview/js/generatedEs3.js @@ -527,6 +527,13 @@ documentBody.addEventListener('click', function (e) { }); return; } + + var messageElement = target.closest('.message'); + + if (messageElement) { + messageElement.getElementsByClassName('timestamp')[0].classList.toggle('show'); + return; + } }); var handleLongPress = function handleLongPress(target) { diff --git a/src/webview/js/js.js b/src/webview/js/js.js index 0117aee9ee3..cc9065e9d92 100644 --- a/src/webview/js/js.js +++ b/src/webview/js/js.js @@ -684,6 +684,12 @@ documentBody.addEventListener('click', (e: MouseEvent) => { }); return; } + + const messageElement = target.closest('.message'); + if (messageElement) { + messageElement.getElementsByClassName('timestamp')[0].classList.toggle('show'); + return; + } }); const handleLongPress = (target: Element) => {