diff --git a/CHANGES.md b/CHANGES.md index 70ac184d5..27d52286d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -43,6 +43,7 @@ - Toolbar keeps toggling on and off on spacebar press [Taiga #7654](https://github.com/penpot/penpot/pull/7654) - Fix toolbar keeps hiding when click outside workspace [Taiga #7776](https://tree.taiga.io/project/penpot/issue/7776) - Fix open overlay relative to a frame [Taiga #7563](https://tree.taiga.io/project/penpot/issue/7563) +- Workspace-palette items stay hidden when opening with keyboard-shortcut [Taiga #7489](https://tree.taiga.io/project/penpot/issue/7489) ## 2.0.3 diff --git a/frontend/playwright/ui/pages/WorkspacePage.js b/frontend/playwright/ui/pages/WorkspacePage.js index c8f0c49cc..c227f09b6 100644 --- a/frontend/playwright/ui/pages/WorkspacePage.js +++ b/frontend/playwright/ui/pages/WorkspacePage.js @@ -53,6 +53,7 @@ export class WorkspacePage extends BaseWebSocketPage { this.selectionRect = page.getByTestId("workspace-selection-rect"); this.horizontalScrollbar = page.getByTestId("horizontal-scrollbar"); this.librariesModal = page.getByTestId("libraries-modal"); + this.togglePalettesVisibility = page.getByTestId("toggle-palettes-visibility"); } async goToWorkspace({ fileId = WorkspacePage.anyFileId, pageId = WorkspacePage.anyPageId } = {}) { @@ -173,4 +174,9 @@ export class WorkspacePage extends BaseWebSocketPage { .getByRole("button", { name: "Color Palette (Alt+P)" }) .click(clickOptions); } + + async clickTogglePalettesVisibility(clickOptions = {}) { + await this.togglePalettesVisibility + .click(clickOptions); + } } diff --git a/frontend/playwright/ui/specs/workspace.spec.js b/frontend/playwright/ui/specs/workspace.spec.js index 3682ecf68..086b7de19 100644 --- a/frontend/playwright/ui/specs/workspace.spec.js +++ b/frontend/playwright/ui/specs/workspace.spec.js @@ -120,3 +120,14 @@ test("User adds a library and its automatically selected in the color palette", await expect(workspacePage.palette.getByText('There are no color styles in your library yet')).toBeVisible(); }); + +test("Bug 7489 - Workspace-palette items stay hidden when opening with keyboard-shortcut", async ({ page }) => { + const workspacePage = new WorkspacePage(page); + await workspacePage.setupEmptyFile(); + await workspacePage.goToWorkspace(); + + await workspacePage.clickTogglePalettesVisibility(); + await workspacePage.page.keyboard.press("Alt+t"); + + await expect(workspacePage.palette.getByText("There are no typography styles in your library yet")).toBeVisible(); +}); diff --git a/frontend/src/app/main/data/workspace/layout.cljs b/frontend/src/app/main/data/workspace/layout.cljs index 157de23f7..6b17a1e7f 100644 --- a/frontend/src/app/main/data/workspace/layout.cljs +++ b/frontend/src/app/main/data/workspace/layout.cljs @@ -20,6 +20,7 @@ :comments :assets :document-history + :hide-palettes :colorpalette :element-options :rulers @@ -134,7 +135,8 @@ "A map of layout flags that should be persisted in local storage; the value corresponds to the key that will be used for save the data in storage object. It should be namespace qualified." - {:colorpalette :app.main.data.workspace/show-colorpalette? + {:hide-palettes :app.main.data.workspace/hide-palettes? + :colorpalette :app.main.data.workspace/show-colorpalette? :textpalette :app.main.data.workspace/show-textpalette?}) (defn load-layout-flags diff --git a/frontend/src/app/main/data/workspace/shortcuts.cljs b/frontend/src/app/main/data/workspace/shortcuts.cljs index 45a763cca..bd0071602 100644 --- a/frontend/src/app/main/data/workspace/shortcuts.cljs +++ b/frontend/src/app/main/data/workspace/shortcuts.cljs @@ -436,14 +436,16 @@ :command (ds/a-mod "p") :subsections [:panels] :fn #(do (r/set-resize-type! :bottom) - (emit-when-no-readonly (dw/remove-layout-flag :textpalette) + (emit-when-no-readonly (dw/remove-layout-flag :hide-palettes) + (dw/remove-layout-flag :textpalette) (toggle-layout-flag :colorpalette)))} :toggle-textpalette {:tooltip (ds/alt "T") :command (ds/a-mod "t") :subsections [:panels] :fn #(do (r/set-resize-type! :bottom) - (emit-when-no-readonly (dw/remove-layout-flag :colorpalette) + (emit-when-no-readonly (dw/remove-layout-flag :hide-palettes) + (dw/remove-layout-flag :colorpalette) (toggle-layout-flag :textpalette)))} :hide-ui {:tooltip "\\" diff --git a/frontend/src/app/main/ui/workspace/palette.cljs b/frontend/src/app/main/ui/workspace/palette.cljs index b0d246a99..bf3f262ea 100644 --- a/frontend/src/app/main/ui/workspace/palette.cljs +++ b/frontend/src/app/main/ui/workspace/palette.cljs @@ -50,12 +50,12 @@ [{:keys [layout on-change-palette-size]}] (let [color-palette? (:colorpalette layout) text-palette? (:textpalette layout) + hide-palettes? (:hide-palettes layout) workspace-read-only? (mf/use-ctx ctx/workspace-read-only?) container (mf/use-ref nil) - state* (mf/use-state {:show-menu false :hide-palettes false}) + state* (mf/use-state {:show-menu false}) state (deref state*) show-menu? (:show-menu state) - hide-palettes? (:hide-palettes state) selected (h/use-shared-state mdc/colorpalette-selected-broadcast-key :recent) selected-text* (mf/use-state :file) selected-text (deref selected-text*) @@ -100,15 +100,19 @@ toggle-palettes (mf/use-callback (fn [_] - (swap! state* update :hide-palettes not))) + (r/set-resize-type! :top) + (dom/add-class! (dom/get-element-by-class "color-palette") "fade-out-down") + (st/emit! (-> (dw/toggle-layout-flag :hide-palettes) + (vary-meta assoc ::ev/origin "workspace-left-toolbar"))))) on-select-color-palette (mf/use-fn (fn [event] (let [node (dom/get-current-target event)] (r/set-resize-type! :top) - (dom/add-class! (dom/get-element-by-class "color-palette") "fade-out-down") - (ts/schedule 300 #(st/emit! (dw/remove-layout-flag :textpalette) + (dom/add-class! (dom/get-element-by-class "color-palette") "fade-out-down") + (ts/schedule 300 #(st/emit! (dw/remove-layout-flag :hide-palettes) + (dw/remove-layout-flag :textpalette) (-> (dw/toggle-layout-flag :colorpalette) (vary-meta assoc ::ev/origin "workspace-left-toolbar")))) (dom/blur! node)))) @@ -118,8 +122,9 @@ (fn [event] (let [node (dom/get-current-target event)] (r/set-resize-type! :top) - (dom/add-class! (dom/get-element-by-class "color-palette") "fade-out-down") - (ts/schedule 300 #(st/emit! (dw/remove-layout-flag :colorpalette) + (dom/add-class! (dom/get-element-by-class "color-palette") "fade-out-down") + (ts/schedule 300 #(st/emit! (dw/remove-layout-flag :hide-palettes) + (dw/remove-layout-flag :colorpalette) (-> (dw/toggle-layout-flag :textpalette) (vary-meta assoc ::ev/origin "workspace-left-toolbar")))) (dom/blur! node)))) @@ -198,5 +203,6 @@ :selected @selected :width vport-width}]])]] [:div {:class (stl/css :handler) - :on-click toggle-palettes} + :on-click toggle-palettes + :data-testid "toggle-palettes-visibility"} [:div {:class (stl/css :handler-btn)}]])])]))