New room list: fix spacing and padding (#29607)

* fix(menu): reduce gap between button and button size

* fix(notification decoration): increase gap between icons

* fix(room list item): different right padding depending on the menu, notification decoration and the regular case

* test: update snapshots

* test(e2e): update snapshots
This commit is contained in:
Florian Duros
2025-03-28 11:21:31 +01:00
committed by GitHub
parent fac982811c
commit 6ae11dab52
16 changed files with 49 additions and 25 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -19,6 +19,10 @@
&:hover { &:hover {
background-color: var(--cpd-color-bg-action-secondary-hovered); background-color: var(--cpd-color-bg-action-secondary-hovered);
.mx_RoomListItemView_content {
padding-right: var(--cpd-space-1-5x);
}
} }
.mx_RoomListItemView_container { .mx_RoomListItemView_container {
@@ -27,7 +31,6 @@
height: 100%; height: 100%;
.mx_RoomListItemView_content { .mx_RoomListItemView_content {
padding-right: var(--cpd-space-3x);
height: 100%; height: 100%;
flex: 1; flex: 1;
/* The border is only under the room name and the future hover menu */ /* The border is only under the room name and the future hover menu */
@@ -46,8 +49,24 @@
.mx_RoomListItemView_menu_open { .mx_RoomListItemView_menu_open {
background-color: var(--cpd-color-bg-action-secondary-hovered); background-color: var(--cpd-color-bg-action-secondary-hovered);
.mx_RoomListItemView_content {
padding-right: var(--cpd-space-1-5x);
}
} }
.mx_RoomListItemView_selected { .mx_RoomListItemView_selected {
background-color: var(--cpd-color-bg-action-secondary-pressed); background-color: var(--cpd-color-bg-action-secondary-pressed);
} }
.mx_RoomListItemView_notification_decoration {
.mx_RoomListItemView_content {
padding-right: var(--cpd-space-2x);
}
}
.mx_RoomListItemView_empty {
.mx_RoomListItemView_content {
padding-right: var(--cpd-space-3x);
}
}

View File

@@ -44,7 +44,7 @@ export function NotificationDecoration({
<Flex <Flex
align="center" align="center"
justify="center" justify="center"
gap="var(--cpd-space-1x)" gap="var(--cpd-space-1-5x)"
{...props} {...props}
data-testid="notification-decoration" data-testid="notification-decoration"
> >

View File

@@ -43,7 +43,7 @@ export function RoomListItemMenuView({ room, setMenuOpen }: RoomListItemMenuView
const vm = useRoomListItemMenuViewModel(room); const vm = useRoomListItemMenuViewModel(room);
return ( return (
<Flex className="mx_RoomListItemMenuView" align="center" gap="var(--cpd-space-1x)"> <Flex className="mx_RoomListItemMenuView" align="center" gap="var(--cpd-space-0-5x)">
{vm.showMoreOptionsMenu && <MoreOptionsMenu setMenuOpen={setMenuOpen} vm={vm} />} {vm.showMoreOptionsMenu && <MoreOptionsMenu setMenuOpen={setMenuOpen} vm={vm} />}
</Flex> </Flex>
); );
@@ -77,7 +77,7 @@ function MoreOptionsMenu({ vm, setMenuOpen }: MoreOptionsMenuProps): JSX.Element
title={_t("room_list|room|more_options")} title={_t("room_list|room|more_options")}
showTitle={false} showTitle={false}
align="start" align="start"
trigger={<MoreOptionsButton />} trigger={<MoreOptionsButton size="24px" />}
> >
{vm.canMarkAsRead && ( {vm.canMarkAsRead && (
<MenuItem <MenuItem

View File

@@ -38,9 +38,14 @@ export function RoomListItemView({ room, isSelected, ...props }: RoomListItemVie
// Using display: none; and then display:flex when hovered in CSS causes the menu to be misaligned // Using display: none; and then display:flex when hovered in CSS causes the menu to be misaligned
const showHoverDecoration = (isMenuOpen || isHover) && vm.showHoverMenu; const showHoverDecoration = (isMenuOpen || isHover) && vm.showHoverMenu;
const isNotificationDecorationVisible =
!showHoverDecoration && (vm.notificationState.hasAnyNotificationOrActivity || vm.notificationState.muted);
return ( return (
<button <button
className={classNames("mx_RoomListItemView", { className={classNames("mx_RoomListItemView", {
mx_RoomListItemView_empty: !isNotificationDecorationVisible && !showHoverDecoration,
mx_RoomListItemView_notification_decoration: isNotificationDecorationVisible,
mx_RoomListItemView_menu_open: showHoverDecoration, mx_RoomListItemView_menu_open: showHoverDecoration,
mx_RoomListItemView_selected: isSelected, mx_RoomListItemView_selected: isSelected,
})} })}

View File

@@ -25,7 +25,7 @@ exports[`<RoomList /> should render a room list 1`] = `
<button <button
aria-label="Open room room0" aria-label="Open room room0"
aria-selected="false" aria-selected="false"
class="mx_RoomListItemView" class="mx_RoomListItemView mx_RoomListItemView_empty"
role="gridcell" role="gridcell"
style="height: 48px; left: 0px; position: absolute; top: 0px; width: 100%;" style="height: 48px; left: 0px; position: absolute; top: 0px; width: 100%;"
type="button" type="button"
@@ -72,7 +72,7 @@ exports[`<RoomList /> should render a room list 1`] = `
<button <button
aria-label="Open room room1" aria-label="Open room room1"
aria-selected="false" aria-selected="false"
class="mx_RoomListItemView" class="mx_RoomListItemView mx_RoomListItemView_empty"
role="gridcell" role="gridcell"
style="height: 48px; left: 0px; position: absolute; top: 48px; width: 100%;" style="height: 48px; left: 0px; position: absolute; top: 48px; width: 100%;"
type="button" type="button"
@@ -119,7 +119,7 @@ exports[`<RoomList /> should render a room list 1`] = `
<button <button
aria-label="Open room room2" aria-label="Open room room2"
aria-selected="false" aria-selected="false"
class="mx_RoomListItemView" class="mx_RoomListItemView mx_RoomListItemView_empty"
role="gridcell" role="gridcell"
style="height: 48px; left: 0px; position: absolute; top: 96px; width: 100%;" style="height: 48px; left: 0px; position: absolute; top: 96px; width: 100%;"
type="button" type="button"
@@ -166,7 +166,7 @@ exports[`<RoomList /> should render a room list 1`] = `
<button <button
aria-label="Open room room3" aria-label="Open room room3"
aria-selected="false" aria-selected="false"
class="mx_RoomListItemView" class="mx_RoomListItemView mx_RoomListItemView_empty"
role="gridcell" role="gridcell"
style="height: 48px; left: 0px; position: absolute; top: 144px; width: 100%;" style="height: 48px; left: 0px; position: absolute; top: 144px; width: 100%;"
type="button" type="button"
@@ -213,7 +213,7 @@ exports[`<RoomList /> should render a room list 1`] = `
<button <button
aria-label="Open room room4" aria-label="Open room room4"
aria-selected="false" aria-selected="false"
class="mx_RoomListItemView" class="mx_RoomListItemView mx_RoomListItemView_empty"
role="gridcell" role="gridcell"
style="height: 48px; left: 0px; position: absolute; top: 192px; width: 100%;" style="height: 48px; left: 0px; position: absolute; top: 192px; width: 100%;"
type="button" type="button"
@@ -260,7 +260,7 @@ exports[`<RoomList /> should render a room list 1`] = `
<button <button
aria-label="Open room room5" aria-label="Open room room5"
aria-selected="false" aria-selected="false"
class="mx_RoomListItemView" class="mx_RoomListItemView mx_RoomListItemView_empty"
role="gridcell" role="gridcell"
style="height: 48px; left: 0px; position: absolute; top: 240px; width: 100%;" style="height: 48px; left: 0px; position: absolute; top: 240px; width: 100%;"
type="button" type="button"
@@ -307,7 +307,7 @@ exports[`<RoomList /> should render a room list 1`] = `
<button <button
aria-label="Open room room6" aria-label="Open room room6"
aria-selected="false" aria-selected="false"
class="mx_RoomListItemView" class="mx_RoomListItemView mx_RoomListItemView_empty"
role="gridcell" role="gridcell"
style="height: 48px; left: 0px; position: absolute; top: 288px; width: 100%;" style="height: 48px; left: 0px; position: absolute; top: 288px; width: 100%;"
type="button" type="button"
@@ -354,7 +354,7 @@ exports[`<RoomList /> should render a room list 1`] = `
<button <button
aria-label="Open room room7" aria-label="Open room room7"
aria-selected="false" aria-selected="false"
class="mx_RoomListItemView" class="mx_RoomListItemView mx_RoomListItemView_empty"
role="gridcell" role="gridcell"
style="height: 48px; left: 0px; position: absolute; top: 336px; width: 100%;" style="height: 48px; left: 0px; position: absolute; top: 336px; width: 100%;"
type="button" type="button"
@@ -401,7 +401,7 @@ exports[`<RoomList /> should render a room list 1`] = `
<button <button
aria-label="Open room room8" aria-label="Open room room8"
aria-selected="false" aria-selected="false"
class="mx_RoomListItemView" class="mx_RoomListItemView mx_RoomListItemView_empty"
role="gridcell" role="gridcell"
style="height: 48px; left: 0px; position: absolute; top: 384px; width: 100%;" style="height: 48px; left: 0px; position: absolute; top: 384px; width: 100%;"
type="button" type="button"
@@ -448,7 +448,7 @@ exports[`<RoomList /> should render a room list 1`] = `
<button <button
aria-label="Open room room9" aria-label="Open room room9"
aria-selected="false" aria-selected="false"
class="mx_RoomListItemView" class="mx_RoomListItemView mx_RoomListItemView_empty"
role="gridcell" role="gridcell"
style="height: 48px; left: 0px; position: absolute; top: 432px; width: 100%;" style="height: 48px; left: 0px; position: absolute; top: 432px; width: 100%;"
type="button" type="button"

View File

@@ -4,7 +4,7 @@ exports[`<RoomListItemMenuView /> should render the more options menu 1`] = `
<DocumentFragment> <DocumentFragment>
<div <div
class="mx_Flex mx_RoomListItemMenuView" class="mx_Flex mx_RoomListItemMenuView"
style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: start; --mx-flex-gap: var(--cpd-space-1x); --mx-flex-wrap: nowrap;" style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: start; --mx-flex-gap: var(--cpd-space-0-5x); --mx-flex-wrap: nowrap;"
> >
<button <button
aria-disabled="false" aria-disabled="false"
@@ -16,7 +16,7 @@ exports[`<RoomListItemMenuView /> should render the more options menu 1`] = `
data-state="closed" data-state="closed"
id="radix-:r0:" id="radix-:r0:"
role="button" role="button"
style="--cpd-icon-button-size: 32px;" style="--cpd-icon-button-size: 24px;"
tabindex="0" tabindex="0"
type="button" type="button"
> >

View File

@@ -5,7 +5,7 @@ exports[`<RoomListItemView /> should be selected if isSelected=true 1`] = `
<button <button
aria-label="Open room room1" aria-label="Open room room1"
aria-selected="true" aria-selected="true"
class="mx_RoomListItemView mx_RoomListItemView_selected" class="mx_RoomListItemView mx_RoomListItemView_empty mx_RoomListItemView_selected"
type="button" type="button"
> >
<div <div
@@ -55,7 +55,7 @@ exports[`<RoomListItemView /> should render a room item 1`] = `
<button <button
aria-label="Open room room1" aria-label="Open room room1"
aria-selected="false" aria-selected="false"
class="mx_RoomListItemView" class="mx_RoomListItemView mx_RoomListItemView_empty"
type="button" type="button"
> >
<div <div

View File

@@ -5,7 +5,7 @@ exports[`<NotificationDecoration /> should render the activity decoration 1`] =
<div <div
class="mx_Flex" class="mx_Flex"
data-testid="notification-decoration" data-testid="notification-decoration"
style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1x); --mx-flex-wrap: nowrap;" style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1-5x); --mx-flex-wrap: nowrap;"
> >
<div <div
class="_unread_1k06b_8" class="_unread_1k06b_8"
@@ -21,7 +21,7 @@ exports[`<NotificationDecoration /> should render the invitation decoration 1`]
<div <div
class="mx_Flex" class="mx_Flex"
data-testid="notification-decoration" data-testid="notification-decoration"
style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1x); --mx-flex-wrap: nowrap;" style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1-5x); --mx-flex-wrap: nowrap;"
> >
<span <span
class="_unread-counter_1ibqq_8" class="_unread-counter_1ibqq_8"
@@ -37,7 +37,7 @@ exports[`<NotificationDecoration /> should render the mention decoration 1`] = `
<div <div
class="mx_Flex" class="mx_Flex"
data-testid="notification-decoration" data-testid="notification-decoration"
style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1x); --mx-flex-wrap: nowrap;" style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1-5x); --mx-flex-wrap: nowrap;"
> >
<svg <svg
fill="var(--cpd-color-icon-accent-primary)" fill="var(--cpd-color-icon-accent-primary)"
@@ -64,7 +64,7 @@ exports[`<NotificationDecoration /> should render the muted decoration 1`] = `
<div <div
class="mx_Flex" class="mx_Flex"
data-testid="notification-decoration" data-testid="notification-decoration"
style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1x); --mx-flex-wrap: nowrap;" style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1-5x); --mx-flex-wrap: nowrap;"
> >
<svg <svg
fill="var(--cpd-color-icon-tertiary)" fill="var(--cpd-color-icon-tertiary)"
@@ -89,7 +89,7 @@ exports[`<NotificationDecoration /> should render the notification decoration 1`
<div <div
class="mx_Flex" class="mx_Flex"
data-testid="notification-decoration" data-testid="notification-decoration"
style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1x); --mx-flex-wrap: nowrap;" style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1-5x); --mx-flex-wrap: nowrap;"
> >
<span <span
class="_unread-counter_1ibqq_8" class="_unread-counter_1ibqq_8"
@@ -105,7 +105,7 @@ exports[`<NotificationDecoration /> should render the notification decoration wi
<div <div
class="mx_Flex" class="mx_Flex"
data-testid="notification-decoration" data-testid="notification-decoration"
style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1x); --mx-flex-wrap: nowrap;" style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1-5x); --mx-flex-wrap: nowrap;"
> >
<div <div
class="_unread-counter_1ibqq_8" class="_unread-counter_1ibqq_8"
@@ -119,7 +119,7 @@ exports[`<NotificationDecoration /> should render the unset message decoration 1
<div <div
class="mx_Flex" class="mx_Flex"
data-testid="notification-decoration" data-testid="notification-decoration"
style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1x); --mx-flex-wrap: nowrap;" style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-1-5x); --mx-flex-wrap: nowrap;"
> >
<svg <svg
fill="var(--cpd-color-icon-critical-primary)" fill="var(--cpd-color-icon-critical-primary)"