From 1cfe126e14458978ef20329ae5fa6ff7bfd974ea Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Tue, 9 May 2023 05:02:08 +0000 Subject: [PATCH] Fix icon on empty notification panel (#10817) * Use custom properties for the empty panel icons on FilePanel and NotificationPanel * Create E2E test for the notification panel --- .../right-panel/notification-panel.spec.ts | 52 +++++++++++++++++++ res/css/_components.pcss | 1 + res/css/structures/_FilePanel.pcss | 2 +- res/css/structures/_NotificationPanel.pcss | 19 +++++++ res/css/structures/_RightPanel.pcss | 1 + 5 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 cypress/e2e/right-panel/notification-panel.spec.ts create mode 100644 res/css/structures/_NotificationPanel.pcss diff --git a/cypress/e2e/right-panel/notification-panel.spec.ts b/cypress/e2e/right-panel/notification-panel.spec.ts new file mode 100644 index 0000000000..4068285070 --- /dev/null +++ b/cypress/e2e/right-panel/notification-panel.spec.ts @@ -0,0 +1,52 @@ +/* +Copyright 2023 Suguru Hirahara + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/// + +import { HomeserverInstance } from "../../plugins/utils/homeserver"; + +const ROOM_NAME = "Test room"; +const NAME = "Alice"; + +describe("NotificationPanel", () => { + let homeserver: HomeserverInstance; + + beforeEach(() => { + cy.startHomeserver("default").then((data) => { + homeserver = data; + cy.initTestUser(homeserver, NAME).then(() => { + cy.createRoom({ name: ROOM_NAME }); + }); + }); + }); + + afterEach(() => { + cy.stopHomeserver(homeserver); + }); + + it("should render empty state", () => { + cy.viewRoomByName(ROOM_NAME); + cy.findByRole("button", { name: "Notifications" }).click(); + + // Wait until the information about the empty state is rendered + cy.get(".mx_NotificationPanel_empty").should("exist"); + + // Take a snapshot of RightPanel + cy.get(".mx_RightPanel").percySnapshotElement("Notification Panel - empty", { + widths: [264], // Emulate the UI. The value is based on minWidth specified on MainSplit.tsx + }); + }); +}); diff --git a/res/css/_components.pcss b/res/css/_components.pcss index 345c2cd08e..9c223d873b 100644 --- a/res/css/_components.pcss +++ b/res/css/_components.pcss @@ -69,6 +69,7 @@ @import "./structures/_MainSplit.pcss"; @import "./structures/_MatrixChat.pcss"; @import "./structures/_NonUrgentToastContainer.pcss"; +@import "./structures/_NotificationPanel.pcss"; @import "./structures/_QuickSettingsButton.pcss"; @import "./structures/_RightPanel.pcss"; @import "./structures/_RoomSearch.pcss"; diff --git a/res/css/structures/_FilePanel.pcss b/res/css/structures/_FilePanel.pcss index e3f9f2d4d9..99de3d3296 100644 --- a/res/css/structures/_FilePanel.pcss +++ b/res/css/structures/_FilePanel.pcss @@ -113,5 +113,5 @@ limitations under the License. } .mx_FilePanel_empty::before { - mask-image: url("$(res)/img/element-icons/room/files.svg"); + --maskImage: url("$(res)/img/element-icons/room/files.svg"); /* See: _RightPanel.pcss */ } diff --git a/res/css/structures/_NotificationPanel.pcss b/res/css/structures/_NotificationPanel.pcss new file mode 100644 index 0000000000..7a3ede9e50 --- /dev/null +++ b/res/css/structures/_NotificationPanel.pcss @@ -0,0 +1,19 @@ +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_NotificationPanel_empty::before { + --maskImage: url("$(res)/img/element-icons/notifications.svg"); /* See: _RightPanel.pcss */ +} diff --git a/res/css/structures/_RightPanel.pcss b/res/css/structures/_RightPanel.pcss index 78a0f71779..f76388296b 100644 --- a/res/css/structures/_RightPanel.pcss +++ b/res/css/structures/_RightPanel.pcss @@ -179,6 +179,7 @@ $pulse-color: $alert; height: 42px; width: 42px; background-color: $header-panel-text-primary-color; + mask-image: var(--maskImage); mask-repeat: no-repeat; mask-size: contain; mask-position: center;