From 1c41772f35f3a58f7960506c2dcb318a8afb1080 Mon Sep 17 00:00:00 2001 From: yogeshbhutkar Date: Fri, 31 Jan 2025 15:10:18 +0530 Subject: [PATCH 1/4] feat: add remove button for block editor shadow panel --- .../global-styles/shadow-panel-components.js | 45 ++++++++++++++----- .../src/components/global-styles/style.scss | 22 +++++++++ 2 files changed, 55 insertions(+), 12 deletions(-) diff --git a/packages/block-editor/src/components/global-styles/shadow-panel-components.js b/packages/block-editor/src/components/global-styles/shadow-panel-components.js index 1cfdff0be286ee..f8c18af9bc420a 100644 --- a/packages/block-editor/src/components/global-styles/shadow-panel-components.js +++ b/packages/block-editor/src/components/global-styles/shadow-panel-components.js @@ -14,7 +14,7 @@ import { Tooltip, } from '@wordpress/components'; import { useMemo } from '@wordpress/element'; -import { shadow as shadowIcon, Icon, check } from '@wordpress/icons'; +import { shadow as shadowIcon, Icon, check, reset } from '@wordpress/icons'; /** * External dependencies @@ -119,7 +119,7 @@ export function ShadowPopover( { shadow, onShadowChange, settings } ) { ( { const toggleProps = { onClick: onToggle, @@ -141,17 +141,38 @@ function renderShadowToggle() { 'aria-expanded': isOpen, }; + const removeButtonProps = { + onClick: () => { + onShadowChange( undefined ); + }, + className: clsx( + 'block-editor-global-styles__shadow-editor__remove-button', + { 'is-open': isOpen } + ), + label: __( 'Remove shadow' ), + }; + return ( - + { !! shadow && ( + + ) } + ); }; } diff --git a/packages/block-editor/src/components/global-styles/style.scss b/packages/block-editor/src/components/global-styles/style.scss index c51ffa3116d9f0..69e6b80433eade 100644 --- a/packages/block-editor/src/components/global-styles/style.scss +++ b/packages/block-editor/src/components/global-styles/style.scss @@ -24,6 +24,7 @@ .block-editor-global-styles__shadow-dropdown { display: block; padding: 0; + position: relative; button { width: 100%; @@ -77,3 +78,24 @@ /*rtl:ignore*/ direction: ltr; } + +.block-editor-global-styles__shadow-editor__remove-button { + position: absolute; + right: 0; + top: $grid-unit; + margin: auto $grid-unit auto; + opacity: 0; + transition: opacity 0.1s ease-in-out; + @include reduce-motion("transition"); + + .block-editor-global-styles__shadow-dropdown:hover &, + &:focus, + &:hover { + opacity: 1; + } + + @media (hover: none) { + // Show reset button on devices that do not support hover. + opacity: 1; + } +} From 6fa7b84fbe0eb33d016af3d42d20cd9b6594ea2f Mon Sep 17 00:00:00 2001 From: yogeshbhutkar Date: Fri, 31 Jan 2025 15:48:45 +0530 Subject: [PATCH 2/4] refactor: simplify the markup --- .../global-styles/shadow-panel-components.js | 20 ++++--- .../src/components/global-styles/style.scss | 52 ++++++++++--------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/packages/block-editor/src/components/global-styles/shadow-panel-components.js b/packages/block-editor/src/components/global-styles/shadow-panel-components.js index f8c18af9bc420a..12ea2551dd7bc2 100644 --- a/packages/block-editor/src/components/global-styles/shadow-panel-components.js +++ b/packages/block-editor/src/components/global-styles/shadow-panel-components.js @@ -5,10 +5,8 @@ import { __ } from '@wordpress/i18n'; import { __experimentalVStack as VStack, __experimentalHeading as Heading, - __experimentalHStack as HStack, __experimentalDropdownContentWrapper as DropdownContentWrapper, Button, - FlexItem, Dropdown, Composite, Tooltip, @@ -143,6 +141,9 @@ function renderShadowToggle( shadow, onShadowChange ) { const removeButtonProps = { onClick: () => { + if ( isOpen ) { + onToggle(); + } onShadowChange( undefined ); }, className: clsx( @@ -154,15 +155,12 @@ function renderShadowToggle( shadow, onShadowChange ) { return ( <> - { !! shadow && ( { !! shadow && (