From 6e3833951af89e752138b8f8c21efad5735f807e Mon Sep 17 00:00:00 2001 From: madhusudhand Date: Mon, 6 May 2024 17:08:53 +0530 Subject: [PATCH] add option to reset default and theme shadows --- .../components/global-styles/shadows-panel.js | 96 ++++++++++++++++--- 1 file changed, 84 insertions(+), 12 deletions(-) diff --git a/packages/edit-site/src/components/global-styles/shadows-panel.js b/packages/edit-site/src/components/global-styles/shadows-panel.js index 5c4176e10e8a2d..aa47ec74baea97 100644 --- a/packages/edit-site/src/components/global-styles/shadows-panel.js +++ b/packages/edit-site/src/components/global-styles/shadows-panel.js @@ -7,10 +7,16 @@ import { __experimentalItemGroup as ItemGroup, Button, FlexItem, + privateApis as componentsPrivateApis, } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor'; -import { Icon, plus, shadow as shadowIcon } from '@wordpress/icons'; +import { + Icon, + plus, + shadow as shadowIcon, + moreVertical, +} from '@wordpress/icons'; /** * Internal dependencies @@ -21,12 +27,35 @@ import { NavigationButtonAsItem } from './navigation-button'; import ScreenHeader from './header'; const { useGlobalSetting } = unlock( blockEditorPrivateApis ); +const { + DropdownMenuV2: DropdownMenu, + DropdownMenuItemV2: DropdownMenuItem, + DropdownMenuItemLabelV2: DropdownMenuItemLabel, +} = unlock( componentsPrivateApis ); export const defaultShadow = '6px 6px #000'; export default function ShadowsPanel() { - const [ defaultShadows ] = useGlobalSetting( 'shadow.presets.default' ); - const [ themeShadows ] = useGlobalSetting( 'shadow.presets.theme' ); + const [ defaultShadows, setDefaultShadows ] = useGlobalSetting( + 'shadow.presets.default' + ); + const [ baseDefaultShadows ] = useGlobalSetting( + 'shadow.presets.default', + undefined, + 'base' + ); + const [ defaultShadowsEnabled ] = useGlobalSetting( + 'shadow.defaultPresets' + ); + + const [ themeShadows, setThemeShadows ] = useGlobalSetting( + 'shadow.presets.theme' + ); + const [ baseThemeShadows ] = useGlobalSetting( + 'shadow.presets.theme', + undefined, + 'base' + ); const [ customShadows, setCustomShadows ] = useGlobalSetting( 'shadow.presets.custom' ); @@ -35,6 +64,14 @@ export default function ShadowsPanel() { setCustomShadows( [ ...( customShadows || [] ), shadow ] ); }; + const onResetShadows = ( shadowCategory ) => { + if ( shadowCategory === 'default' ) { + setDefaultShadows( baseDefaultShadows ); + } else if ( shadowCategory === 'theme' ) { + setThemeShadows( baseThemeShadows ); + } + }; + return ( <> - + { defaultShadowsEnabled && ( + onResetShadows( 'default' ) } + /> + ) } { themeShadows && themeShadows.length > 0 && ( onResetShadows( 'theme' ) } /> ) } @@ -72,7 +116,15 @@ export default function ShadowsPanel() { ); } -function ShadowList( { label, shadows, category, onCreate } ) { +function ShadowList( { + label, + shadows, + category, + canCreate, + onCreate, + canReset, + onReset, +} ) { const handleAddShadow = () => { onCreate( { name: `Shadow ${ shadows.length + 1 }`, @@ -88,7 +140,7 @@ function ShadowList( { label, shadows, category, onCreate } ) { { label } - { category === 'custom' && ( + { canCreate ? (