mirror of
https://github.com/discourse/discourse.git
synced 2024-12-05 20:33:47 +08:00
9c8043a4d2
* FEATURE: Enforce mention limits for chat messages The first part of these changes adds a new setting called `max_mentions_per_chat_message`, which skips notifications when the message contains too many mentions. It also respects the `max_users_notified_per_group_mention` setting and skips notifications if expanding a group mention would exceed it. We also include a new component to display JIT warning for these limits to the user while composing a message. * Simplify ignoring/muting filter in chat_notifier * Post-send warnings for unsent warnings * Improve pluralization * Address review feedback * Fix test * Address second feedback round * Third round of feedback Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
379 lines
6.6 KiB
SCSS
379 lines
6.6 KiB
SCSS
.chat-message-deleted,
|
|
.chat-message-hidden {
|
|
margin-left: calc(var(--message-left-width) + 0.75em);
|
|
padding: 0;
|
|
|
|
.chat-message-expand {
|
|
color: var(--primary-low-mid);
|
|
padding: 0.25em;
|
|
|
|
&:hover {
|
|
background: inherit;
|
|
color: inherit;
|
|
}
|
|
}
|
|
}
|
|
|
|
@mixin chat-reaction {
|
|
align-items: center;
|
|
display: inline-flex;
|
|
padding: 0.3em 0.6em;
|
|
margin: 1px 0.25em 1px 0;
|
|
font-size: var(--font-down-2);
|
|
border-radius: 4px;
|
|
border: 1px solid var(--primary-low);
|
|
background: transparent;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
transition: background 0.2s, border-color 0.2s;
|
|
|
|
&.reacted {
|
|
border-color: var(--tertiary-medium);
|
|
background: var(--tertiary-very-low);
|
|
color: var(--tertiary-hover);
|
|
|
|
&:hover {
|
|
background: var(--tertiary-low);
|
|
}
|
|
}
|
|
|
|
&:not(.reacted) {
|
|
&:hover {
|
|
background: var(--primary-low);
|
|
border-color: var(--primary-low-mid);
|
|
}
|
|
}
|
|
|
|
.emoji {
|
|
height: 15px;
|
|
margin-right: 4px;
|
|
width: auto;
|
|
}
|
|
}
|
|
|
|
.chat-message {
|
|
align-items: flex-start;
|
|
padding: 0.25em 0.5em 0.25em 0.75em;
|
|
background-color: var(--secondary);
|
|
display: flex;
|
|
min-width: 0;
|
|
|
|
.chat-message-reaction {
|
|
@include chat-reaction;
|
|
|
|
&:not(.show) {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
&.chat-action {
|
|
background-color: var(--highlight-medium);
|
|
}
|
|
|
|
&.errored {
|
|
color: var(--primary-medium);
|
|
}
|
|
|
|
&.deleted {
|
|
background-color: var(--danger-low);
|
|
}
|
|
|
|
.not-mobile-device &.deleted:hover {
|
|
background-color: var(--danger-hover);
|
|
}
|
|
|
|
&.transition-slow {
|
|
transition: 2s linear background-color;
|
|
}
|
|
|
|
&.user-info-hidden {
|
|
.chat-time {
|
|
color: var(--secondary-medium);
|
|
flex-shrink: 0;
|
|
font-size: var(--font-down-2);
|
|
margin-top: 0.4em;
|
|
display: none;
|
|
width: var(--message-left-width);
|
|
}
|
|
}
|
|
|
|
&.is-reply {
|
|
display: grid;
|
|
grid-template-columns: var(--message-left-width) 1fr;
|
|
grid-template-rows: 30px auto;
|
|
grid-template-areas:
|
|
"replyto replyto"
|
|
"avatar message";
|
|
|
|
.chat-user-avatar {
|
|
grid-area: avatar;
|
|
}
|
|
|
|
.chat-message-content {
|
|
grid-area: message;
|
|
}
|
|
}
|
|
|
|
.chat-message-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-grow: 1;
|
|
word-break: break-word;
|
|
overflow-wrap: break-word;
|
|
min-width: 0;
|
|
}
|
|
|
|
.chat-message-text {
|
|
min-width: 0;
|
|
width: 100%;
|
|
|
|
code {
|
|
box-sizing: border-box;
|
|
font-size: var(--font-down-1);
|
|
width: 100%;
|
|
}
|
|
|
|
.mention.highlighted {
|
|
background: var(--tertiary-low);
|
|
color: var(--primary);
|
|
}
|
|
|
|
img.ytp-thumbnail-image {
|
|
height: 100%;
|
|
max-height: unset;
|
|
|
|
&:hover {
|
|
border-radius: 0;
|
|
}
|
|
}
|
|
|
|
// Automatic aspect-ratio mapping https://developer.mozilla.org/en-US/docs/Web/Media/images/aspect_ratio_mapping
|
|
p img:not(.emoji) {
|
|
max-width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
ul,
|
|
ol {
|
|
padding-left: 1.25em;
|
|
}
|
|
}
|
|
|
|
.chat-message-edited {
|
|
display: inline-block;
|
|
color: var(--primary-medium);
|
|
font-size: var(--font-down-2);
|
|
}
|
|
|
|
.chat-message-reaction-list,
|
|
.chat-transcript-reactions {
|
|
@include unselectable;
|
|
margin-top: 0.25em;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
|
|
.reaction-users-list {
|
|
position: absolute;
|
|
top: -2px;
|
|
transform: translateY(-100%);
|
|
border: 1px solid var(--primary-low);
|
|
border-radius: 6px;
|
|
padding: 0.5em;
|
|
background: var(--primary-very-low);
|
|
max-width: 300px;
|
|
z-index: 3;
|
|
}
|
|
|
|
.chat-message-react-btn {
|
|
vertical-align: top;
|
|
padding: 0em 0.25em;
|
|
background: none;
|
|
border: none;
|
|
|
|
.d-icon {
|
|
color: var(--primary-high);
|
|
}
|
|
|
|
&:hover {
|
|
.d-icon {
|
|
color: var(--primary);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.chat-send-error {
|
|
color: var(--danger-medium);
|
|
}
|
|
|
|
.chat-message-mention-warning {
|
|
position: relative;
|
|
margin-top: 0.25em;
|
|
font-size: var(--font-down-1);
|
|
|
|
.dismiss-mention-warning {
|
|
position: absolute;
|
|
top: 15px;
|
|
right: 5px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.warning-item {
|
|
margin: 0.25em 0;
|
|
}
|
|
|
|
.invite-link {
|
|
color: var(--tertiary);
|
|
cursor: pointer;
|
|
}
|
|
}
|
|
|
|
.chat-message-avatar .chat-user-avatar .chat-user-avatar-container .avatar,
|
|
.chat-emoji-avatar .chat-emoji-avatar-container {
|
|
width: 28px;
|
|
height: 28px;
|
|
}
|
|
}
|
|
|
|
.chat-message-container.highlighted .chat-message {
|
|
background-color: var(--tertiary-low) !important;
|
|
}
|
|
|
|
.chat-messages-container {
|
|
.not-mobile-device & .chat-message:hover,
|
|
.chat-message.chat-message-selected {
|
|
background: var(--primary-very-low);
|
|
}
|
|
|
|
.chat-message.chat-message-bookmarked {
|
|
background: var(--highlight-low);
|
|
}
|
|
|
|
.not-mobile-device & .chat-message-reaction-list .chat-message-react-btn {
|
|
display: none;
|
|
}
|
|
|
|
.not-mobile-device & .chat-message:hover {
|
|
.chat-message-reaction-list .chat-message-react-btn {
|
|
display: inline-block;
|
|
}
|
|
}
|
|
}
|
|
|
|
.chat-message-flagged {
|
|
display: inline-block;
|
|
color: var(--danger);
|
|
height: 100%;
|
|
padding: 0 0.3em;
|
|
cursor: pointer;
|
|
|
|
.flag-count,
|
|
.d-icon {
|
|
color: var(--danger);
|
|
}
|
|
}
|
|
|
|
.chat-action-text {
|
|
font-style: italic;
|
|
}
|
|
|
|
.chat-message-container.is-hovered,
|
|
.chat-message.chat-message-selected {
|
|
background: var(--primary-very-low);
|
|
}
|
|
|
|
.chat-message.chat-message-bookmarked {
|
|
background: var(--highlight-low);
|
|
}
|
|
|
|
.has-full-page-chat .chat-message .onebox:not(img),
|
|
.chat-drawer-container .chat-message .onebox {
|
|
margin: 0.5em 0;
|
|
border-width: 2px;
|
|
|
|
header {
|
|
margin-bottom: 0.5em;
|
|
}
|
|
|
|
h3 a,
|
|
h4 a {
|
|
font-size: 14px;
|
|
}
|
|
|
|
pre {
|
|
display: flex;
|
|
max-height: 150px;
|
|
}
|
|
|
|
p {
|
|
overflow: hidden;
|
|
}
|
|
}
|
|
|
|
.chat-drawer-container .chat-message .onebox {
|
|
width: 85%;
|
|
border: 2px solid var(--primary-low);
|
|
|
|
header {
|
|
margin-bottom: 0.5em;
|
|
}
|
|
|
|
.onebox-body {
|
|
grid-template-rows: auto auto auto;
|
|
overflow: auto;
|
|
}
|
|
|
|
h3 {
|
|
@include line-clamp(2);
|
|
font-weight: 500;
|
|
font-size: var(--font-down-1);
|
|
}
|
|
|
|
p {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
.chat-message-reaction {
|
|
> * {
|
|
pointer-events: none;
|
|
}
|
|
}
|
|
|
|
.retry-staged-message-btn {
|
|
padding: 0.5em 0;
|
|
background: none;
|
|
|
|
&:hover,
|
|
&:focus,
|
|
&:active {
|
|
background: none !important;
|
|
}
|
|
|
|
&:focus .retry-staged-message-btn__action {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.d-icon,
|
|
&__title,
|
|
&:hover .d-icon {
|
|
color: var(--danger) !important;
|
|
font-size: var(--font-down-1);
|
|
}
|
|
|
|
.d-icon {
|
|
margin-right: 0.25em !important;
|
|
}
|
|
|
|
&__action {
|
|
color: var(--tertiary);
|
|
font-size: var(--font-down-1);
|
|
margin-left: 0.25em;
|
|
|
|
&:hover {
|
|
color: var(--tertiary-high);
|
|
text-decoration: underline;
|
|
}
|
|
}
|
|
}
|