diff --git a/plugins/chat/assets/javascripts/discourse/components/channels-list.hbs b/plugins/chat/assets/javascripts/discourse/components/channels-list.hbs
index 5a361c5370f..eefdc9fdcee 100644
--- a/plugins/chat/assets/javascripts/discourse/components/channels-list.hbs
+++ b/plugins/chat/assets/javascripts/discourse/components/channels-list.hbs
@@ -13,11 +13,13 @@
{{#if this.displayPublicChannels}}
diff --git a/plugins/chat/assets/javascripts/discourse/components/channels-list.js b/plugins/chat/assets/javascripts/discourse/components/channels-list.js
index 3232387e3d5..77799af89b1 100644
--- a/plugins/chat/assets/javascripts/discourse/components/channels-list.js
+++ b/plugins/chat/assets/javascripts/discourse/components/channels-list.js
@@ -3,7 +3,7 @@ import Component from "@glimmer/component";
import { action } from "@ember/object";
import { schedule } from "@ember/runloop";
import { inject as service } from "@ember/service";
-
+import { tracked } from "@glimmer/tracking";
export default class ChannelsList extends Component {
@service chat;
@service router;
@@ -13,6 +13,18 @@ export default class ChannelsList extends Component {
@service session;
@service currentUser;
+ @tracked hasScrollbar = false;
+
+ @action
+ computeHasScrollbar(element) {
+ this.hasScrollbar = element.scrollHeight > element.clientHeight;
+ }
+
+ @action
+ computeResizedEntries(entries) {
+ this.computeHasScrollbar(entries[0].target);
+ }
+
get showMobileDirectMessageButton() {
return this.site.mobileView && this.showDirectMessageChannels;
}
diff --git a/plugins/chat/assets/javascripts/discourse/components/chat-live-pane.js b/plugins/chat/assets/javascripts/discourse/components/chat-live-pane.js
index e85040f2361..ac8b494decc 100644
--- a/plugins/chat/assets/javascripts/discourse/components/chat-live-pane.js
+++ b/plugins/chat/assets/javascripts/discourse/components/chat-live-pane.js
@@ -485,7 +485,7 @@ export default class ChatLivePane extends Component {
@action
computeArrow() {
- this.needsArrow = Math.abs(this._scrollerEl.scrollTop) >= 100;
+ this.needsArrow = Math.abs(this._scrollerEl.scrollTop) >= 250;
}
@action
diff --git a/plugins/chat/assets/stylesheets/common/base-common.scss b/plugins/chat/assets/stylesheets/common/base-common.scss
index 3688c1a12f9..7f53fb6172a 100644
--- a/plugins/chat/assets/stylesheets/common/base-common.scss
+++ b/plugins/chat/assets/stylesheets/common/base-common.scss
@@ -283,31 +283,15 @@ $float-height: 530px;
flex-grow: 1;
overflow-y: scroll;
overscroll-behavior: contain;
- scrollbar-color: var(--primary-low) transparent;
- transition: scrollbar-color 0.2s ease-in-out;
display: flex;
flex-direction: column-reverse;
z-index: 1;
- margin: 0 3px 0 0;
+ margin: 0 1px 0 0;
will-change: transform;
+ overflow-x: hidden;
+ -webkit-overflow-scrolling: touch;
- &::-webkit-scrollbar {
- width: 15px;
- }
- &::-webkit-scrollbar-thumb {
- background: var(--primary-low);
- border-radius: 8px;
- border: 3px solid var(--secondary);
- }
- &::-webkit-scrollbar-track {
- background-color: transparent;
- }
- &:hover {
- scrollbar-color: var(--primary-low-mid) transparent;
- &::-webkit-scrollbar-thumb {
- background: var(--primary-low-mid);
- }
- }
+ @include chat-scrollbar();
.join-channel-btn.in-float {
position: absolute;
diff --git a/plugins/chat/assets/stylesheets/common/chat-browse.scss b/plugins/chat/assets/stylesheets/common/chat-browse.scss
index 2d6dda91607..71952b3a8cb 100644
--- a/plugins/chat/assets/stylesheets/common/chat-browse.scss
+++ b/plugins/chat/assets/stylesheets/common/chat-browse.scss
@@ -5,7 +5,8 @@
padding-bottom: 41px;
box-sizing: border-box;
overflow-y: scroll;
- @include chat-scrollbar(var(--secondary));
+
+ @include chat-scrollbar();
@include breakpoint(mobile-large) {
padding-right: 1rem; //fix for different scroll behaviour on mobile where overflow-y:scroll acts like auto
diff --git a/plugins/chat/assets/stylesheets/common/chat-channel-info.scss b/plugins/chat/assets/stylesheets/common/chat-channel-info.scss
index ca7ce1acd2a..953a39d2657 100644
--- a/plugins/chat/assets/stylesheets/common/chat-channel-info.scss
+++ b/plugins/chat/assets/stylesheets/common/chat-channel-info.scss
@@ -104,7 +104,7 @@ input.channel-members-view__search-input {
min-height: 1px;
overflow-y: auto;
height: 100%;
- @include chat-scrollbar(var(--secondary));
+ @include chat-scrollbar();
}
.channel-members-view__list-item {
diff --git a/plugins/chat/assets/stylesheets/common/chat-composer.scss b/plugins/chat/assets/stylesheets/common/chat-composer.scss
index 70b0643e46d..7cd873ec840 100644
--- a/plugins/chat/assets/stylesheets/common/chat-composer.scss
+++ b/plugins/chat/assets/stylesheets/common/chat-composer.scss
@@ -90,34 +90,19 @@
border: 0;
resize: none;
max-height: 125px;
- scrollbar-color: var(--primary-low-mid) transparent;
- transition: scrollbar-color 0.2s ease-in-out;
background: none;
margin: 0;
padding: 0.25rem 0.5rem;
text-overflow: ellipsis;
+ @include chat-scrollbar();
+
&:placeholder-shown,
&::placeholder {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
-
- &::-webkit-scrollbar-thumb {
- background-color: var(--primary-low-mid);
- border-radius: 6px;
- border: 3px solid var(--secondary);
- }
- &:hover {
- scrollbar-color: var(--primary-low-mid) transparent;
- &::-webkit-scrollbar-thumb {
- background-color: var(--primary-low-mid);
- }
- }
- &::-webkit-scrollbar {
- width: 12px;
- }
}
&__unreliable-network {
diff --git a/plugins/chat/assets/stylesheets/common/chat-index.scss b/plugins/chat/assets/stylesheets/common/chat-index.scss
index 1bee6e501c3..135be7c3906 100644
--- a/plugins/chat/assets/stylesheets/common/chat-index.scss
+++ b/plugins/chat/assets/stylesheets/common/chat-index.scss
@@ -4,7 +4,7 @@
height: 100%;
padding-bottom: env(safe-area-inset-bottom);
position: relative;
- @include chat-scrollbar(var(--secondary));
+ @include chat-scrollbar();
@include breakpoint(mobile-large) {
@include chat-scrollbar();
@@ -69,10 +69,24 @@
position: relative;
cursor: pointer;
color: var(--primary-high);
- transition: opacity 50ms ease-in;
- opacity: 1;
+
+ @media (hover: none) {
+ &:hover,
+ &:focus {
+ background: transparent;
+ }
+
+ &:active {
+ background: var(--primary-low);
+ }
+ }
@media (hover: hover) {
+ &:hover,
+ &.active {
+ background: var(--primary-very-low);
+ }
+
&.can-leave:hover {
.toggle-channel-membership-button.-leave {
display: block;
@@ -88,17 +102,8 @@
}
}
- .discourse-no-touch &:hover,
- &.active {
- background: var(--primary-low);
- }
-
&:hover,
&.active {
- &.active {
- font-weight: 600;
- }
-
.chat-channel-title {
&,
.category-chat-name,
diff --git a/plugins/chat/assets/stylesheets/desktop/chat-index-drawer.scss b/plugins/chat/assets/stylesheets/desktop/chat-index-drawer.scss
index 4fa41f81053..809821f2e31 100644
--- a/plugins/chat/assets/stylesheets/desktop/chat-index-drawer.scss
+++ b/plugins/chat/assets/stylesheets/desktop/chat-index-drawer.scss
@@ -4,10 +4,16 @@
font-size: var(--font-0);
}
+ &.has-scrollbar {
+ .chat-channel-row {
+ margin-right: 0;
+ }
+ }
+
.chat-channel-row {
height: 3.6em;
padding: 0 0.5rem;
- margin: 0 0 0 0.5rem;
+ margin: 0 0.5rem 0 0.5rem;
&:not(:last-of-type) {
border-bottom: 1px solid var(--primary-low);
diff --git a/plugins/chat/assets/stylesheets/mixins/chat-scrollbar.scss b/plugins/chat/assets/stylesheets/mixins/chat-scrollbar.scss
index 0fa99b9fb9f..c7a098060c1 100644
--- a/plugins/chat/assets/stylesheets/mixins/chat-scrollbar.scss
+++ b/plugins/chat/assets/stylesheets/mixins/chat-scrollbar.scss
@@ -1,27 +1,21 @@
-@mixin chat-scrollbar($border: var(--primary-very-low)) {
+@mixin chat-scrollbar() {
--scrollbarBg: transparent;
--scrollbarThumbBg: var(--primary-low);
- --scrollbarWidth: 1.2rem;
+ --scrollbarWidth: 10px;
scrollbar-color: transparent var(--scrollbarBg);
transition: scrollbar-color 0.25s ease-in-out;
- transition-delay: 0.5s;
&::-webkit-scrollbar-thumb {
- background-color: transparent;
+ background-color: var(--scrollbarThumbBg);
border-radius: calc(var(--scrollbarWidth) / 2);
- border: calc(var(--scrollbarWidth) / 4) solid transparent;
+ border: calc(var(--scrollbarWidth) / 4) solid var(--secondary);
}
- &:hover {
- &::-webkit-scrollbar-thumb {
- border: calc(var(--scrollbarWidth) / 4) solid $border;
- }
- scrollbar-color: var(--scrollbarThumbBg) var(--scrollbarBg);
- &::-webkit-scrollbar-thumb {
- background-color: var(--scrollbarThumbBg);
- }
- transition-delay: 0s;
+
+ &::-webkit-scrollbar-track {
+ background-color: transparent;
}
+
&::-webkit-scrollbar {
width: var(--scrollbarWidth);
}
diff --git a/plugins/chat/assets/stylesheets/mobile/chat-index.scss b/plugins/chat/assets/stylesheets/mobile/chat-index.scss
index 1ee7c146b13..da742d7a934 100644
--- a/plugins/chat/assets/stylesheets/mobile/chat-index.scss
+++ b/plugins/chat/assets/stylesheets/mobile/chat-index.scss
@@ -1,4 +1,5 @@
@import "common/foundation/mixins";
+
.full-page-chat {
overflow: hidden; //prevents double scroll
@@ -7,24 +8,14 @@
padding-bottom: 6rem;
box-sizing: border-box;
- @media (hover: none) {
- .chat-channel-row:hover {
- background: transparent;
- }
-
- .chat-channel-row:active {
- background: var(--primary-low);
- }
- }
-
.channels-list-container {
background: var(--secondary);
}
.chat-channel-row {
height: 4em;
- margin: 0 1.5rem;
- padding: 0;
+ margin: 0;
+ padding: 0 1.5rem;
border-radius: 0;
border-bottom: 1px solid var(--primary-low);