mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 06:53:25 +00:00
compose: Add background and border colors for message limit.
Added colors to notify users when the message length is near the limit or has exceeded it. Used distinct colors for each case to provide clear feedback. Fixes: #32171.
This commit is contained in:
committed by
Tim Abbott
parent
569b07477b
commit
f1dd8d88c9
@@ -765,6 +765,8 @@ export function check_overflow_text($container: JQuery): number {
|
|||||||
const is_edit_container = $textarea.closest(".message_row").length > 0;
|
const is_edit_container = $textarea.closest(".message_row").length > 0;
|
||||||
|
|
||||||
if (text.length > max_length) {
|
if (text.length > max_length) {
|
||||||
|
$indicator.removeClass("textarea-approaching-limit");
|
||||||
|
$textarea.removeClass("textarea-approaching-limit");
|
||||||
$indicator.addClass("textarea-over-limit");
|
$indicator.addClass("textarea-over-limit");
|
||||||
$textarea.addClass("textarea-over-limit");
|
$textarea.addClass("textarea-over-limit");
|
||||||
$indicator.html(
|
$indicator.html(
|
||||||
@@ -780,6 +782,8 @@ export function check_overflow_text($container: JQuery): number {
|
|||||||
} else if (remaining_characters <= 900) {
|
} else if (remaining_characters <= 900) {
|
||||||
$indicator.removeClass("textarea-over-limit");
|
$indicator.removeClass("textarea-over-limit");
|
||||||
$textarea.removeClass("textarea-over-limit");
|
$textarea.removeClass("textarea-over-limit");
|
||||||
|
$indicator.addClass("textarea-approaching-limit");
|
||||||
|
$textarea.addClass("textarea-approaching-limit");
|
||||||
$indicator.html(
|
$indicator.html(
|
||||||
render_compose_limit_indicator({
|
render_compose_limit_indicator({
|
||||||
remaining_characters,
|
remaining_characters,
|
||||||
@@ -793,6 +797,7 @@ export function check_overflow_text($container: JQuery): number {
|
|||||||
} else {
|
} else {
|
||||||
$indicator.text("");
|
$indicator.text("");
|
||||||
$textarea.removeClass("textarea-over-limit");
|
$textarea.removeClass("textarea-over-limit");
|
||||||
|
$textarea.removeClass("textarea-approaching-limit");
|
||||||
|
|
||||||
if (is_edit_container) {
|
if (is_edit_container) {
|
||||||
set_message_too_long_for_edit(false, $container);
|
set_message_too_long_for_edit(false, $container);
|
||||||
|
|||||||
@@ -721,6 +721,10 @@
|
|||||||
/* Compose box colors */
|
/* Compose box colors */
|
||||||
--color-compose-box-background: hsl(232deg 30% 92%);
|
--color-compose-box-background: hsl(232deg 30% 92%);
|
||||||
--color-compose-message-content-background: hsl(0deg 0% 100%);
|
--color-compose-message-content-background: hsl(0deg 0% 100%);
|
||||||
|
--color-compose-message-content-background-over-limit: hsl(3deg 35% 90%);
|
||||||
|
--color-compose-message-content-background-approaching-limit: hsl(
|
||||||
|
50deg 75% 92%
|
||||||
|
);
|
||||||
--color-compose-send-button-icon-color: hsl(0deg 0% 100%);
|
--color-compose-send-button-icon-color: hsl(0deg 0% 100%);
|
||||||
--color-compose-send-button-background: hsl(240deg 96% 68%);
|
--color-compose-send-button-background: hsl(240deg 96% 68%);
|
||||||
--color-compose-send-button-background-interactive: hsl(240deg 41% 50%);
|
--color-compose-send-button-background-interactive: hsl(240deg 41% 50%);
|
||||||
@@ -788,6 +792,10 @@
|
|||||||
--color-message-formatting-controls-container: hsl(232deg 30% 96%);
|
--color-message-formatting-controls-container: hsl(232deg 30% 96%);
|
||||||
--color-message-content-container-border: hsl(0deg 0% 0% / 10%);
|
--color-message-content-container-border: hsl(0deg 0% 0% / 10%);
|
||||||
--color-message-content-container-border-focus: hsl(0deg 0% 57%);
|
--color-message-content-container-border-focus: hsl(0deg 0% 57%);
|
||||||
|
--color-message-content-container-border-over-limit: hsl(0deg 76% 65%);
|
||||||
|
--color-message-content-container-border-approaching-limit: hsl(
|
||||||
|
38deg 70% 50%
|
||||||
|
);
|
||||||
--color-compose-control-button-background-hover: hsl(0deg 0% 0% / 5%);
|
--color-compose-control-button-background-hover: hsl(0deg 0% 0% / 5%);
|
||||||
--color-compose-formatting-button-divider: hsl(0deg 0% 75%);
|
--color-compose-formatting-button-divider: hsl(0deg 0% 75%);
|
||||||
--color-compose-focus-ring: var(--color-outline-focus);
|
--color-compose-focus-ring: var(--color-outline-focus);
|
||||||
@@ -1634,6 +1642,10 @@
|
|||||||
var(--color-compose-box-background),
|
var(--color-compose-box-background),
|
||||||
hsl(0deg 0% 0%) 20%
|
hsl(0deg 0% 0%) 20%
|
||||||
);
|
);
|
||||||
|
--color-compose-message-content-background-over-limit: hsl(3deg 50% 12%);
|
||||||
|
--color-compose-message-content-background-approaching-limit: hsl(
|
||||||
|
50deg 75% 12%
|
||||||
|
);
|
||||||
--color-compose-send-button-focus-shadow: hsl(0deg 0% 100% / 80%);
|
--color-compose-send-button-focus-shadow: hsl(0deg 0% 100% / 80%);
|
||||||
--color-compose-send-control-button: hsl(240deg 30% 70%);
|
--color-compose-send-control-button: hsl(240deg 30% 70%);
|
||||||
--color-compose-send-control-button-background: transparent;
|
--color-compose-send-control-button-background: transparent;
|
||||||
@@ -1690,7 +1702,6 @@
|
|||||||
--color-message-formatting-controls-container: hsl(0deg 0% 0% / 8%);
|
--color-message-formatting-controls-container: hsl(0deg 0% 0% / 8%);
|
||||||
--color-message-content-container-border: hsl(0deg 0% 0% / 80%);
|
--color-message-content-container-border: hsl(0deg 0% 0% / 80%);
|
||||||
--color-message-content-container-border-focus: hsl(0deg 0% 100% / 27%);
|
--color-message-content-container-border-focus: hsl(0deg 0% 100% / 27%);
|
||||||
--color-message-content-container-border-over-limit: hsl(0deg 76% 65%);
|
|
||||||
--color-compose-control-button-background-hover: hsl(0deg 0% 100% / 5%);
|
--color-compose-control-button-background-hover: hsl(0deg 0% 100% / 5%);
|
||||||
--color-compose-formatting-button-divider: hsl(236deg 33% 90% / 25%);
|
--color-compose-formatting-button-divider: hsl(236deg 33% 90% / 25%);
|
||||||
--color-compose-focus-ring: hsl(0deg 0% 67%);
|
--color-compose-focus-ring: hsl(0deg 0% 67%);
|
||||||
|
|||||||
@@ -337,15 +337,27 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#message-content-container:has(.new_message_textarea.textarea-over-limit),
|
#message-content-container:has(.new_message_textarea.textarea-over-limit),
|
||||||
#message-content-container:has(.new_message_textarea.textarea-over-limit:focus),
|
.edit-content-container:has(.message_edit_content.textarea-over-limit) {
|
||||||
.edit-content-container:has(.message_edit_content.textarea-over-limit),
|
|
||||||
.edit-content-container:has(.message_edit_content.textarea-over-limit:focus) {
|
|
||||||
box-shadow: 0 0 0 1pt
|
box-shadow: 0 0 0 1pt
|
||||||
var(--color-message-content-container-border-over-limit);
|
var(--color-message-content-container-border-over-limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#message-content-container:has(
|
||||||
|
.new_message_textarea.textarea-approaching-limit
|
||||||
|
),
|
||||||
|
.edit-content-container:has(.message_edit_content.textarea-approaching-limit) {
|
||||||
|
box-shadow: 0 0 0 1pt
|
||||||
|
var(--color-message-content-container-border-approaching-limit);
|
||||||
|
}
|
||||||
|
|
||||||
#message-content-container:has(.new_message_textarea.textarea-over-limit.flash),
|
#message-content-container:has(.new_message_textarea.textarea-over-limit.flash),
|
||||||
.edit-content-container:has(.message_edit_content.textarea-over-limit.flash) {
|
#message-content-container:has(
|
||||||
|
.new_message_textarea.textarea-approaching-limit.flash
|
||||||
|
),
|
||||||
|
.edit-content-container:has(.message_edit_content.textarea-over-limit.flash),
|
||||||
|
.edit-content-container:has(
|
||||||
|
.message_edit_content.textarea-approaching-limit.flash
|
||||||
|
) {
|
||||||
animation: message-limit-flash 0.5s ease-in-out 3;
|
animation: message-limit-flash 0.5s ease-in-out 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -406,6 +418,18 @@
|
|||||||
padding-right: var(--composebox-buttons-width);
|
padding-right: var(--composebox-buttons-width);
|
||||||
background-color: var(--color-compose-message-content-background);
|
background-color: var(--color-compose-message-content-background);
|
||||||
color: var(--color-text-default);
|
color: var(--color-text-default);
|
||||||
|
|
||||||
|
&.textarea-over-limit {
|
||||||
|
background-color: var(
|
||||||
|
--color-compose-message-content-background-over-limit
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.textarea-approaching-limit {
|
||||||
|
background-color: var(
|
||||||
|
--color-compose-message-content-background-approaching-limit
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.surround-formatting-buttons-row {
|
.surround-formatting-buttons-row {
|
||||||
|
|||||||
@@ -669,6 +669,18 @@
|
|||||||
|
|
||||||
.message-edit-textbox {
|
.message-edit-textbox {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
|
.textarea-over-limit {
|
||||||
|
background-color: var(
|
||||||
|
--color-compose-message-content-background-over-limit
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
.textarea-approaching-limit {
|
||||||
|
background-color: var(
|
||||||
|
--color-compose-message-content-background-approaching-limit
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user