You've already forked matrix-react-sdk
							
							
				mirror of
				https://github.com/matrix-org/matrix-react-sdk.git
				synced 2025-11-03 00:33:22 +03:00 
			
		
		
		
	Align info EventTile and normal EventTile on IRC layout (#10197)
* fixes alignment issue in IRC layout * adds cypress test for alignment --------- Contributed-by: Suguru Hirahara <luixxiul@users.noreply.github.com> Signed-off-by: Alun Turner <alunturner@users.noreply.github.com>
This commit is contained in:
		@@ -179,10 +179,11 @@ describe("Timeline", () => {
 | 
				
			|||||||
            // Check the event line has margin instead of inset property
 | 
					            // Check the event line has margin instead of inset property
 | 
				
			||||||
            // cf. _EventTile.pcss
 | 
					            // cf. _EventTile.pcss
 | 
				
			||||||
            //  --EventTile_irc_line_info-margin-inline-start
 | 
					            //  --EventTile_irc_line_info-margin-inline-start
 | 
				
			||||||
            //  = calc(var(--name-width) + 10px + var(--icon-width))
 | 
					            //  = calc(var(--name-width) + var(--icon-width) + 1 * var(--right-padding))
 | 
				
			||||||
            //  = 80 + 10 + 14 = 104px
 | 
					            //  = 80 + 14 + 5 = 99px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            cy.get(".mx_EventTile[data-layout=irc].mx_EventTile_info:first-of-type .mx_EventTile_line")
 | 
					            cy.get(".mx_EventTile[data-layout=irc].mx_EventTile_info:first-of-type .mx_EventTile_line")
 | 
				
			||||||
                .should("have.css", "margin-inline-start", "104px")
 | 
					                .should("have.css", "margin-inline-start", "99px")
 | 
				
			||||||
                .should("have.css", "inset-inline-start", "0px");
 | 
					                .should("have.css", "inset-inline-start", "0px");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Exclude timestamp and read marker from snapshot
 | 
					            // Exclude timestamp and read marker from snapshot
 | 
				
			||||||
@@ -193,6 +194,113 @@ describe("Timeline", () => {
 | 
				
			|||||||
            cy.checkA11y();
 | 
					            cy.checkA11y();
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        it("should align generic event list summary with messages and emote on IRC layout", () => {
 | 
				
			||||||
 | 
					            // This test aims to check:
 | 
				
			||||||
 | 
					            // 1. Alignment of collapsed GELS (generic event list summary) and messages
 | 
				
			||||||
 | 
					            // 2. Alignment of expanded GELS and messages
 | 
				
			||||||
 | 
					            // 3. Alignment of expanded GELS and placeholder of deleted message
 | 
				
			||||||
 | 
					            // 4. Alignment of expanded GELS, placeholder of deleted message, and emote
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Exclude timestamp from snapshot of mx_MainSplit
 | 
				
			||||||
 | 
					            const percyCSS = ".mx_MainSplit .mx_MessageTimestamp { visibility: hidden !important; }";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            cy.visit("/#/room/" + roomId);
 | 
				
			||||||
 | 
					            cy.setSettingValue("layout", null, SettingLevel.DEVICE, Layout.IRC);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Wait until configuration is finished
 | 
				
			||||||
 | 
					            cy.contains(
 | 
				
			||||||
 | 
					                ".mx_RoomView_body .mx_GenericEventListSummary .mx_GenericEventListSummary_summary",
 | 
				
			||||||
 | 
					                "created and configured the room.",
 | 
				
			||||||
 | 
					            ).should("exist");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Send messages
 | 
				
			||||||
 | 
					            cy.get(".mx_RoomView_body .mx_BasicMessageComposer_input").type("Hello Mr. Bot{enter}");
 | 
				
			||||||
 | 
					            cy.get(".mx_RoomView_body .mx_BasicMessageComposer_input").type("Hello again, Mr. Bot{enter}");
 | 
				
			||||||
 | 
					            // Make sure the second message was sent
 | 
				
			||||||
 | 
					            cy.get(".mx_RoomView_MessageList > .mx_EventTile_last .mx_EventTile_receiptSent").should("be.visible");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // 1. Alignment of collapsed GELS (generic event list summary) and messages
 | 
				
			||||||
 | 
					            // Check inline start spacing of collapsed GELS
 | 
				
			||||||
 | 
					            // See: _EventTile.pcss
 | 
				
			||||||
 | 
					            // .mx_GenericEventListSummary[data-layout="irc"] > .mx_EventTile_line
 | 
				
			||||||
 | 
					            //  = var(--name-width) + var(--icon-width) + $MessageTimestamp_width + 2 * var(--right-padding)
 | 
				
			||||||
 | 
					            //  = 80 + 14 + 46 + 2 * 5
 | 
				
			||||||
 | 
					            //  = 150px
 | 
				
			||||||
 | 
					            cy.get(".mx_GenericEventListSummary[data-layout=irc] > .mx_EventTile_line").should(
 | 
				
			||||||
 | 
					                "have.css",
 | 
				
			||||||
 | 
					                "padding-inline-start",
 | 
				
			||||||
 | 
					                "150px",
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					            // Check width and spacing values of elements in .mx_EventTile, which should be equal to 150px
 | 
				
			||||||
 | 
					            // --right-padding should be applied
 | 
				
			||||||
 | 
					            cy.get(".mx_EventTile > *").should("have.css", "margin-right", "5px");
 | 
				
			||||||
 | 
					            // --name-width width zero inline end margin should be applied
 | 
				
			||||||
 | 
					            cy.get(".mx_EventTile .mx_DisambiguatedProfile")
 | 
				
			||||||
 | 
					                .should("have.css", "width", "80px")
 | 
				
			||||||
 | 
					                .should("have.css", "margin-inline-end", "0px");
 | 
				
			||||||
 | 
					            // --icon-width should be applied
 | 
				
			||||||
 | 
					            cy.get(".mx_EventTile .mx_EventTile_avatar > .mx_BaseAvatar").should("have.css", "width", "14px");
 | 
				
			||||||
 | 
					            // $MessageTimestamp_width should be applied
 | 
				
			||||||
 | 
					            cy.get(".mx_EventTile > a").should("have.css", "min-width", "46px");
 | 
				
			||||||
 | 
					            // Record alignment of collapsed GELS and messages on messagePanel
 | 
				
			||||||
 | 
					            cy.get(".mx_MainSplit").percySnapshotElement("Collapsed GELS and messages on IRC layout", { percyCSS });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // 2. Alignment of expanded GELS and messages
 | 
				
			||||||
 | 
					            // Click "expand" link button
 | 
				
			||||||
 | 
					            cy.get(".mx_GenericEventListSummary_toggle[aria-expanded=false]").click();
 | 
				
			||||||
 | 
					            // Check inline start spacing of info line on expanded GELS
 | 
				
			||||||
 | 
					            cy.get(".mx_EventTile[data-layout=irc].mx_EventTile_info:first-of-type .mx_EventTile_line")
 | 
				
			||||||
 | 
					                // See: _EventTile.pcss
 | 
				
			||||||
 | 
					                // --EventTile_irc_line_info-margin-inline-start
 | 
				
			||||||
 | 
					                // = 80 + 14 + 1 * 5
 | 
				
			||||||
 | 
					                .should("have.css", "margin-inline-start", "99px");
 | 
				
			||||||
 | 
					            // Record alignment of expanded GELS and messages on messagePanel
 | 
				
			||||||
 | 
					            cy.get(".mx_MainSplit").percySnapshotElement("Expanded GELS and messages on IRC layout", { percyCSS });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // 3. Alignment of expanded GELS and placeholder of deleted message
 | 
				
			||||||
 | 
					            // Delete the second (last) message
 | 
				
			||||||
 | 
					            cy.get(".mx_RoomView_MessageList > .mx_EventTile_last").realHover();
 | 
				
			||||||
 | 
					            cy.get(".mx_RoomView_MessageList > .mx_EventTile_last .mx_MessageActionBar_optionsButton", {
 | 
				
			||||||
 | 
					                timeout: 1000,
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					                .should("exist")
 | 
				
			||||||
 | 
					                .realHover()
 | 
				
			||||||
 | 
					                .click({ force: false });
 | 
				
			||||||
 | 
					            cy.get(".mx_IconizedContextMenu_item[aria-label=Remove]").should("be.visible").click({ force: false });
 | 
				
			||||||
 | 
					            // Confirm deletion
 | 
				
			||||||
 | 
					            cy.get(".mx_Dialog_buttons button[data-testid=dialog-primary-button]")
 | 
				
			||||||
 | 
					                .should("have.text", "Remove")
 | 
				
			||||||
 | 
					                .click({ force: false });
 | 
				
			||||||
 | 
					            // Make sure the dialog was closed and the second (last) message was redacted
 | 
				
			||||||
 | 
					            cy.get(".mx_Dialog").should("not.exist");
 | 
				
			||||||
 | 
					            cy.get(".mx_GenericEventListSummary .mx_EventTile_last .mx_RedactedBody").should("be.visible");
 | 
				
			||||||
 | 
					            cy.get(".mx_GenericEventListSummary .mx_EventTile_last .mx_EventTile_receiptSent").should("be.visible");
 | 
				
			||||||
 | 
					            // Record alignment of expanded GELS and placeholder of deleted message on messagePanel
 | 
				
			||||||
 | 
					            cy.get(".mx_MainSplit").percySnapshotElement("Expanded GELS and with placeholder of deleted message", {
 | 
				
			||||||
 | 
					                percyCSS,
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // 4. Alignment of expanded GELS, placeholder of deleted message, and emote
 | 
				
			||||||
 | 
					            // Send a emote
 | 
				
			||||||
 | 
					            cy.get(".mx_RoomView_body .mx_BasicMessageComposer_input").type("/me says hello to Mr. Bot{enter}");
 | 
				
			||||||
 | 
					            // Check inline start margin of its avatar
 | 
				
			||||||
 | 
					            // Here --right-padding is for the avatar on the message line
 | 
				
			||||||
 | 
					            // See: _IRCLayout.pcss
 | 
				
			||||||
 | 
					            // .mx_IRCLayout .mx_EventTile_emote .mx_EventTile_avatar
 | 
				
			||||||
 | 
					            // = calc(var(--name-width) + var(--icon-width) + 1 * var(--right-padding))
 | 
				
			||||||
 | 
					            // = 80 + 14 + 1 * 5
 | 
				
			||||||
 | 
					            cy.get(".mx_EventTile_emote .mx_EventTile_avatar").should("have.css", "margin-left", "99px");
 | 
				
			||||||
 | 
					            // Make sure emote was sent
 | 
				
			||||||
 | 
					            cy.get(".mx_EventTile_last.mx_EventTile_emote .mx_EventTile_receiptSent").should("be.visible");
 | 
				
			||||||
 | 
					            // Record alignment of expanded GELS, placeholder of deleted message, and emote
 | 
				
			||||||
 | 
					            cy.get(".mx_MainSplit").percySnapshotElement(
 | 
				
			||||||
 | 
					                "Expanded GELS and with emote and placeholder of deleted message",
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    percyCSS,
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        it("should set inline start padding to a hidden event line", () => {
 | 
					        it("should set inline start padding to a hidden event line", () => {
 | 
				
			||||||
            sendEvent(roomId);
 | 
					            sendEvent(roomId);
 | 
				
			||||||
            cy.visit("/#/room/" + roomId);
 | 
					            cy.visit("/#/room/" + roomId);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -270,7 +270,11 @@ $left-gutter: 64px;
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    &[data-layout="irc"] {
 | 
					    &[data-layout="irc"] {
 | 
				
			||||||
        --EventTile_irc_line_info-margin-inline-start: calc(var(--name-width) + 10px + var(--icon-width));
 | 
					        /* add --right-padding value of MessageTimestamp only */
 | 
				
			||||||
 | 
					        /* stylelint-disable-next-line declaration-colon-space-after */
 | 
				
			||||||
 | 
					        --EventTile_irc_line_info-margin-inline-start: calc(
 | 
				
			||||||
 | 
					            var(--name-width) + var(--icon-width) + 1 * var(--right-padding)
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        .mx_EventTile_msgOption {
 | 
					        .mx_EventTile_msgOption {
 | 
				
			||||||
            .mx_ReadReceiptGroup {
 | 
					            .mx_ReadReceiptGroup {
 | 
				
			||||||
@@ -483,20 +487,12 @@ $left-gutter: 64px;
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    &[data-layout="irc"] {
 | 
					    &[data-layout="irc"] {
 | 
				
			||||||
        .mx_EventTile_line .mx_RedactedBody {
 | 
					 | 
				
			||||||
            padding-left: 24px; /* 25px - 1px */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            &::before {
 | 
					 | 
				
			||||||
                left: var(--right-padding);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /* Apply only collapsed events block */
 | 
					        /* Apply only collapsed events block */
 | 
				
			||||||
        > .mx_EventTile_line {
 | 
					        > .mx_EventTile_line {
 | 
				
			||||||
            /* 15 px of padding */
 | 
					            /* add --right-padding value of MessageTimestamp and avatar only */
 | 
				
			||||||
            /* stylelint-disable-next-line declaration-colon-space-after */
 | 
					            /* stylelint-disable-next-line declaration-colon-space-after */
 | 
				
			||||||
            padding-left: calc(
 | 
					            padding-left: calc(
 | 
				
			||||||
                var(--name-width) + var(--icon-width) + $MessageTimestamp_width + 3 * var(--right-padding)
 | 
					                var(--name-width) + var(--icon-width) + $MessageTimestamp_width + 2 * var(--right-padding)
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -159,7 +159,8 @@ $irc-line-height: $font-18px;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    .mx_EventTile_emote {
 | 
					    .mx_EventTile_emote {
 | 
				
			||||||
        .mx_EventTile_avatar {
 | 
					        .mx_EventTile_avatar {
 | 
				
			||||||
            margin-left: calc(var(--name-width) + var(--icon-width) + var(--right-padding));
 | 
					            /* add --right-padding value of MessageTimestamp only */
 | 
				
			||||||
 | 
					            margin-left: calc(var(--name-width) + var(--icon-width) + 1 * var(--right-padding));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user