UX: fix topic cards layout for messages with has-replies class (#183)

The `grid-template-areas` were not correct on the messages page

---------

Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
Co-authored-by: Martin Brennan <martin@discourse.org>
This commit is contained in:
chapoi
2025-06-18 05:34:26 +02:00
committed by GitHub
parent 2bcd04d4f4
commit 6d8415579e
6 changed files with 26 additions and 21 deletions
@@ -1,6 +1,5 @@
import Component from "@glimmer/component"; import Component from "@glimmer/component";
import concatClass from "discourse/helpers/concat-class"; import concatClass from "discourse/helpers/concat-class";
import icon from "discourse/helpers/d-icon";
import formatDate from "discourse/helpers/format-date"; import formatDate from "discourse/helpers/format-date";
export default class TopicActivityColumn extends Component { export default class TopicActivityColumn extends Component {
@@ -30,7 +30,9 @@ export default class TopicStatusColumn extends Component {
{{#if this.badge}} {{#if this.badge}}
<span class="topic-status-card {{this.badge.className}}">{{icon <span class="topic-status-card {{this.badge.className}}">{{icon
this.badge.icon this.badge.icon
}}<p class="topic-status-card__name">{{i18n (themePrefix this.badge.text)}}</p></span> }}<p class="topic-status-card__name">{{i18n
(themePrefix this.badge.text)
}}</p></span>
{{/if}} {{/if}}
</template> </template>
} }
+16 -12
View File
@@ -22,12 +22,12 @@
flex-direction: column; flex-direction: column;
gap: 1.25em; gap: 1.25em;
@include breakpoint(medium) { @include viewport.until(lg) {
gap: 0.5em; gap: 0.5em;
padding: 0 0.5em; padding: 0 0.5em;
} }
@include breakpoint(mobile-extra-large) { @include viewport.until(sm) {
gap: 0; gap: 0;
padding: 0; padding: 0;
} }
@@ -90,6 +90,12 @@
grid-template-areas: grid-template-areas:
"bulk-select creator title title title status" "bulk-select creator title title title status"
"bulk-select category category activity likes-replies likes-replies"; "bulk-select category category activity likes-replies likes-replies";
@include viewport.until(sm) {
grid-template-areas:
"bulk-select creator title title title status"
"bulk-select . category likes-replies activity . ";
}
} }
@include viewport.until(sm) { @include viewport.until(sm) {
@@ -98,14 +104,6 @@
"bulk-select creator title title title status" "bulk-select creator title title title status"
"bulk-select . category activity activity . "; "bulk-select . category activity activity . ";
} }
&.has-replies {
@include viewport.until(sm) {
grid-template-areas:
"bulk-select creator title title title status"
"bulk-select . category likes-replies activity . ";
}
}
} }
&:hover { &:hover {
@@ -204,7 +202,7 @@
oklch(from var(--category-badge-color) 45% calc(c * 0.5) h) oklch(from var(--category-badge-color) 45% calc(c * 0.5) h)
); );
@include breakpoint(tablet) { @include viewport.until(md) {
padding: 0.25em 0.5rem; padding: 0.25em 0.5rem;
font-size: var(--font-down-2); font-size: var(--font-down-2);
} }
@@ -308,6 +306,7 @@
align-items: center; align-items: center;
padding: 0.2em 0.5rem; padding: 0.2em 0.5rem;
font-size: var(--font-down-2); font-size: var(--font-down-2);
@include viewport.from(lg) { @include viewport.from(lg) {
font-size: var(--font-down-3); font-size: var(--font-down-3);
} }
@@ -340,6 +339,7 @@
svg { svg {
color: var(--status-color); color: var(--status-color);
@include viewport.from(lg) { @include viewport.from(lg) {
font-size: var(--font-down-1); font-size: var(--font-down-1);
} }
@@ -461,7 +461,6 @@
.topic-status-data { .topic-status-data {
display: none; display: none;
} }
grid-template-areas: grid-template-areas:
"creator title title title dropdown" "creator title title title dropdown"
". category activity activity ."; ". category activity activity .";
@@ -529,6 +528,7 @@
grid-template-areas: grid-template-areas:
"creator title title title dropdown" "creator title title title dropdown"
"category category activity metadata . "; "category category activity metadata . ";
@include viewport.until(sm) { @include viewport.until(sm) {
grid-template-areas: grid-template-areas:
"metadata metadata metadata metadata dropdown" "metadata metadata metadata metadata dropdown"
@@ -653,6 +653,10 @@ body.user-messages-page {
grid-template-columns: auto auto; grid-template-columns: auto auto;
grid-template-rows: auto auto; grid-template-rows: auto auto;
&.has-replies {
grid-template-areas: "title activity" "posters .";
}
&:hover { &:hover {
.discourse-no-touch & { .discourse-no-touch & {
background-color: var(--primary-low); background-color: var(--primary-low);
+1 -3
View File
@@ -36,9 +36,7 @@ describe "Horizon theme | High level", type: :system do
expect(topic_item.all("td").map { |el| el["class"] }).to eq( expect(topic_item.all("td").map { |el| el["class"] }).to eq(
[ [
"main-link topic-list-data", "main-link topic-list-data",
"topic-status-data",
"topic-category-data", "topic-category-data",
"topic-likes-replies-data",
"topic-creator-data", "topic-creator-data",
"topic-activity-data", "topic-activity-data",
], ],
@@ -50,7 +48,7 @@ describe "Horizon theme | High level", type: :system do
# Can change site colors from the sidebar palette, which are remembered # Can change site colors from the sidebar palette, which are remembered
# across page reloads. # across page reloads.
marigold_palette = ColorScheme.find_by(name: "Marigold") marigold_palette = theme.color_schemes.find_by(name: "Marigold")
palette_selector.open_palette_menu palette_selector.open_palette_menu
palette_selector.click_palette_menu_item(marigold_palette.name) palette_selector.click_palette_menu_item(marigold_palette.name)
expect(palette_selector).to have_no_palette_menu expect(palette_selector).to have_no_palette_menu
@@ -26,7 +26,9 @@ module PageObjects
end end
def has_selected_palette?(palette) def has_selected_palette?(palette)
has_css?(".user-color-palette-selector[data-selected-color-palette-id='#{palette.id}']") has_css?(
".user-color-palette-selector-trigger[data-selected-color-palette-id=\"#{palette.id}\"]",
)
end end
def has_loaded_css? def has_loaded_css?
@@ -6,7 +6,7 @@ describe "Horizon theme | User color palette selector", type: :system do
let(:set_theme_as_default) { true } let(:set_theme_as_default) { true }
let!(:theme) do let!(:theme) do
horizon_theme = upload_theme(set_theme_as_default: set_theme_as_default) horizon_theme = upload_theme(set_theme_as_default: set_theme_as_default)
ColorScheme.where(theme_id: horizon_theme.id).update_all(user_selectable: true) horizon_theme.color_schemes.update_all(user_selectable: true)
horizon_theme horizon_theme
end end
fab!(:current_user) { Fabricate(:user) } fab!(:current_user) { Fabricate(:user) }
@@ -16,8 +16,8 @@ describe "Horizon theme | User color palette selector", type: :system do
let(:interface_color_selector) do let(:interface_color_selector) do
PageObjects::Components::InterfaceColorSelector.new(".sidebar-footer-actions") PageObjects::Components::InterfaceColorSelector.new(".sidebar-footer-actions")
end end
let(:marigold_palette) { ColorScheme.find_by(name: "Marigold") } let(:marigold_palette) { theme.color_schemes.find_by(name: "Marigold") }
let(:marigold_palette_dark) { ColorScheme.find_by(name: "Marigold Dark") } let(:marigold_palette_dark) { theme.color_schemes.find_by(name: "Marigold Dark") }
before { SiteSetting.interface_color_selector = "sidebar_footer" } before { SiteSetting.interface_color_selector = "sidebar_footer" }