discourse/plugins/chat/assets/stylesheets/mobile/chat-message-actions.scss
Joffrey JAFFEUX 89d7b1861d
FIX: various mobile optimizations (#22043)
* FIX: increases resize observer throttle delay
25ms is not necessary and was sometimes causing jankyness.

* FIX: removes ios momentum fix delay
Instead of a 50ms, simply use next+schedule("afterRender") to attempt to have the shortest delay possible.

* FIX: backdrop event propagation
Prevents backdrop touch to propagate to underlying channel/thread.

* UX: adds is-active class to container of active message
This change allows to keep the background on the active message while the actions menu is displayed.

* FIX: prevents skip-link to be selected on press

* UX: allows to close actions menu instantly
The backdrop should always receive events, we don't need to wait for the menu to be fully displayed.

* UI: adds spacing between last message and composer

* UI: makes backdrop less dark

* FIX: makes events passive on long-press modifier
2023-06-09 17:37:26 +02:00

173 lines
3.1 KiB
SCSS

.chat-message-actions {
position: absolute;
bottom: -100vh;
left: 0;
right: 0;
display: flex;
flex-direction: column;
border-radius: 8px 8px 0 0;
margin: 0 5px;
transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1),
visibility cubic-bezier(0.4, 0, 0.2, 1);
visibility: hidden;
box-sizing: border-box;
.selected-message-container {
padding: 0.5em 0.5em 1em 0.5em;
}
.selected-message {
display: flex;
align-items: center;
padding: 0.5em;
border: 1px solid var(--primary-low);
box-shadow: 0 0 4px rgba(0, 0, 0, 0.125);
border-radius: 8px;
.selected-message-reply {
margin-left: 5px;
&:not(.is-expanded) {
@include ellipsis;
}
&.is-expanded {
@include user-select(text);
max-height: 80px;
overflow-y: scroll;
}
}
}
.main-actions {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1em 1em 1.5em 1em;
.chat-message-reaction {
background: none;
border: 1px solid transparent;
img.emoji {
width: 30px;
height: 30px;
object-fit: contain;
}
&.reacted {
border-color: var(--tertiary-medium);
background: var(--tertiary-very-low);
color: var(--tertiary-hover);
&:hover {
background: var(--tertiary-low);
}
}
}
.react-btn {
.d-icon {
color: var(--primary-medium);
font-size: var(--font-up-4);
}
}
.chat-message-reaction,
.react-btn {
margin: 0;
}
.chat-message-reaction,
.reply-btn,
.chat-message-thread-btn,
.react-btn,
.bookmark-btn {
flex-grow: 1;
height: 42px;
&:active {
background: var(--primary-low);
}
}
.bookmark-btn,
.react-btn {
> .svg-icon-title,
> .svg-icon {
font-size: var(--font-up-4);
}
}
.reply-btn {
border-radius: 3px;
.d-icon {
font-size: var(--font-up-4);
}
}
}
.secondary-actions {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: flex-start;
padding: 0.5em;
margin: 0;
.chat-message-action-item {
border-bottom: 1px solid var(--primary-low);
width: 100%;
list-style: none;
padding: 0.25em 0;
display: flex;
&:active {
background: var(--primary-low);
}
&:last-child {
border-bottom: 0;
}
.chat-message-action {
justify-content: flex-start;
background: none;
width: 100%;
border: 0;
color: var(--primary);
&:focus,
.d-icon {
color: var(--primary);
}
}
}
}
}
.chat-message-actions-backdrop {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 100%;
width: 100%;
z-index: z("header") + 1;
transition: background-color 0.4s ease-in;
.collapse-area {
width: 100%;
height: 100%;
}
&.fade-in {
background: rgba(var(--always-black-rgb), 0.6);
.chat-message-actions {
bottom: 0px;
visibility: visible;
}
}
}