From 51f43666914ad064df6a9326e804607d2e4f6243 Mon Sep 17 00:00:00 2001 From: Marin Atanasov <8436925+tyxla@users.noreply.github.com> Date: Fri, 2 Aug 2024 19:27:42 +0300 Subject: [PATCH 1/7] Edit Site: Use structuredClone for deep cloning (#64203) Co-authored-by: tyxla Co-authored-by: jsnajdr --- .../src/hooks/push-changes-to-global-styles/index.js | 5 ++--- .../use-theme-style-variations-by-property.js | 5 ++--- packages/edit-site/src/utils/clone-deep.js | 8 -------- 3 files changed, 4 insertions(+), 14 deletions(-) delete mode 100644 packages/edit-site/src/utils/clone-deep.js diff --git a/packages/edit-site/src/hooks/push-changes-to-global-styles/index.js b/packages/edit-site/src/hooks/push-changes-to-global-styles/index.js index a4aa81e88393ad..c79ba67a1a7d74 100644 --- a/packages/edit-site/src/hooks/push-changes-to-global-styles/index.js +++ b/packages/edit-site/src/hooks/push-changes-to-global-styles/index.js @@ -26,7 +26,6 @@ import { store as coreStore } from '@wordpress/core-data'; */ import { useSupportedStyles } from '../../components/global-styles/hooks'; import { unlock } from '../../lock-unlock'; -import cloneDeep from '../../utils/clone-deep'; import setNestedValue from '../../utils/set-nested-value'; const { cleanEmptyObject, GlobalStylesContext } = unlock( @@ -259,8 +258,8 @@ function PushChangesToGlobalStylesControl( { if ( changes.length > 0 ) { const { style: blockStyles } = attributes; - const newBlockStyles = cloneDeep( blockStyles ); - const newUserConfig = cloneDeep( userConfig ); + const newBlockStyles = structuredClone( blockStyles ); + const newUserConfig = structuredClone( userConfig ); for ( const { path, value } of changes ) { setNestedValue( newBlockStyles, path, undefined ); diff --git a/packages/edit-site/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js b/packages/edit-site/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js index 9486f15f802899..e6e3a1ccc3aa6d 100644 --- a/packages/edit-site/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +++ b/packages/edit-site/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js @@ -11,7 +11,6 @@ import { __ } from '@wordpress/i18n'; /** * Internal dependencies */ -import cloneDeep from '../../utils/clone-deep'; import { unlock } from '../../lock-unlock'; const { GlobalStylesContext, areGlobalStyleConfigsEqual } = unlock( @@ -91,7 +90,7 @@ export function useCurrentMergeThemeStyleVariationsWithUserConfig( const propertiesAsString = properties.toString(); return useMemo( () => { - const clonedUserVariation = cloneDeep( userVariation ); + const clonedUserVariation = structuredClone( userVariation ); // Get user variation and remove the settings for the given property. const userVariationWithoutProperties = removePropertiesFromObject( @@ -167,7 +166,7 @@ export const filterObjectByProperties = ( object, properties ) => { */ export function isVariationWithProperties( variation, properties ) { const variationWithProperties = filterObjectByProperties( - cloneDeep( variation ), + structuredClone( variation ), properties ); diff --git a/packages/edit-site/src/utils/clone-deep.js b/packages/edit-site/src/utils/clone-deep.js deleted file mode 100644 index 149e1df2408ea7..00000000000000 --- a/packages/edit-site/src/utils/clone-deep.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Makes a copy of an object without storing any references to the original object. - * @param {Object} object - * @return {Object} The cloned object. - */ -export default function cloneDeep( object ) { - return ! object ? {} : JSON.parse( JSON.stringify( object ) ); -} From 6fdbb2ff1b2766c6cdd0904d092186ee77d97f70 Mon Sep 17 00:00:00 2001 From: Matias Ventura Date: Fri, 2 Aug 2024 13:32:26 -0300 Subject: [PATCH 2/7] Data Views: be more clear with the copy of the "hide" action (#63047) --- packages/dataviews/src/layouts/table/column-header-menu.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dataviews/src/layouts/table/column-header-menu.tsx b/packages/dataviews/src/layouts/table/column-header-menu.tsx index d0288483327258..ef1dc3e3ed2e09 100644 --- a/packages/dataviews/src/layouts/table/column-header-menu.tsx +++ b/packages/dataviews/src/layouts/table/column-header-menu.tsx @@ -249,7 +249,7 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >( } } > - { __( 'Hide' ) } + { __( 'Hide column' ) } ) } From 517fc81afe5de59281d54d0d0c4fdedd7b4198a8 Mon Sep 17 00:00:00 2001 From: Ryan Welcher Date: Fri, 2 Aug 2024 13:50:38 -0400 Subject: [PATCH 3/7] Provide a better example for the PluginSidebar slotfill. (#64206) * Add more robust example and screenshot. * Use jsx instead of js for the code example. * Update docs/reference-guides/slotfills/plugin-sidebar.md * Update the import location. Co-authored-by: ryanwelcher Co-authored-by: juanmaguitar --- docs/assets/plugin-sidebar-closed-state.png | Bin 6773 -> 0 bytes docs/assets/plugin-sidebar-open-state.png | Bin 10854 -> 27542 bytes .../slotfills/plugin-sidebar.md | 68 ++++++++++++++---- 3 files changed, 53 insertions(+), 15 deletions(-) delete mode 100644 docs/assets/plugin-sidebar-closed-state.png diff --git a/docs/assets/plugin-sidebar-closed-state.png b/docs/assets/plugin-sidebar-closed-state.png deleted file mode 100644 index 025da900ffcdd594c27a097e0b6ca23928377ec1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6773 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 GPyY`qtQ;l) literal 10854 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 D)n!^F diff --git a/docs/reference-guides/slotfills/plugin-sidebar.md b/docs/reference-guides/slotfills/plugin-sidebar.md index 8fe274414905b7..dbf1c5643d3aab 100644 --- a/docs/reference-guides/slotfills/plugin-sidebar.md +++ b/docs/reference-guides/slotfills/plugin-sidebar.md @@ -1,30 +1,68 @@ # PluginSidebar -This slot allows for adding items into the Gutenberg Toolbar. -Using this slot will add an icon to the bar that, when clicked, will open a sidebar with the content of the items wrapped in the `` component. +This slot allows adding items to the tool bar of either the Post or Site editor screens. +Using this slot will add an icon to the toolbar that, when clicked, opens a panel with containing the items wrapped in the `` component. ## Example -```js -import { registerPlugin } from '@wordpress/plugins'; +```jsx +import { __ } from '@wordpress/i18n'; import { PluginSidebar } from '@wordpress/editor'; -import { image } from '@wordpress/icons'; +import { + PanelBody, + Button, + TextControl, + SelectControl, +} from '@wordpress/components'; +import { registerPlugin } from '@wordpress/plugins'; +import { useState } from '@wordpress/element'; + +const PluginSidebarExample = () => { + const [ text, setText ] = useState( '' ); + const [ select, setSelect ] = useState( 'a' ); -const PluginSidebarTest = () => ( - -

Plugin Sidebar

-
-); + return ( + + +

+ { __( 'This is a heading for the PluginSidebar example.' ) } +

+

+ { __( + 'This is some example text for the PluginSidebar example.' + ) } +

+ setText( newText ) } + /> + setSelect( newSelect ) } + /> + +
+
+ ); +}; -registerPlugin( 'plugin-sidebar-test', { render: PluginSidebarTest } ); +// Register the plugin. +registerPlugin( 'plugin-sidebar-example', { render: PluginSidebarExample } ); ``` ## Location -### Closed State - -![Closed State](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/assets/plugin-sidebar-closed-state.png?raw=true) - ### Open State ![Open State](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/assets/plugin-sidebar-open-state.png?raw=true) From 823f474969461bb685970c569efaf83ebac78e66 Mon Sep 17 00:00:00 2001 From: Rich Tabor Date: Fri, 2 Aug 2024 16:15:41 -0400 Subject: [PATCH 4/7] Improve zoom transition (#64179) * add transition to transitioning properties * remove border and radius from tablet/mobile * zoom out a little more * scope properties * update mobile/tablet transition * move mobile/tablet up a little * use all transition * Move editor canvas and iframe sizing transitions to shared mixin --------- Co-authored-by: richtabor Co-authored-by: jeryj Co-authored-by: dereksmart Co-authored-by: stokesman Co-authored-by: jasmussen --- packages/base-styles/_animations.scss | 5 +++++ packages/block-editor/src/components/block-canvas/style.scss | 1 + packages/block-editor/src/components/iframe/content.scss | 4 ++-- packages/block-editor/src/components/iframe/index.js | 4 +--- .../block-editor/src/components/use-resize-canvas/index.js | 4 +--- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/base-styles/_animations.scss b/packages/base-styles/_animations.scss index b5e6655e660cbb..bdfd7595da8e44 100644 --- a/packages/base-styles/_animations.scss +++ b/packages/base-styles/_animations.scss @@ -3,3 +3,8 @@ animation-fill-mode: forwards; @include reduce-motion("animation"); } + +@mixin editor-canvas-resize-animation() { + transition: all 0.5s cubic-bezier(0.65, 0, 0.45, 1); + @include reduce-motion("transition"); +} diff --git a/packages/block-editor/src/components/block-canvas/style.scss b/packages/block-editor/src/components/block-canvas/style.scss index 9e924cb79bace1..1395b5c0a437d3 100644 --- a/packages/block-editor/src/components/block-canvas/style.scss +++ b/packages/block-editor/src/components/block-canvas/style.scss @@ -4,4 +4,5 @@ iframe[name="editor-canvas"] { height: 100%; display: block; background-color: transparent; + @include editor-canvas-resize-animation; } diff --git a/packages/block-editor/src/components/iframe/content.scss b/packages/block-editor/src/components/iframe/content.scss index 8c03d4224745af..90b887993bf6db 100644 --- a/packages/block-editor/src/components/iframe/content.scss +++ b/packages/block-editor/src/components/iframe/content.scss @@ -22,9 +22,9 @@ } .block-editor-iframe__html { + border: 0 solid $gray-300; transform-origin: top center; - transition: transform 0.3s; - @include reduce-motion("transition"); + @include editor-canvas-resize-animation; } .block-editor-iframe__html.is-zoomed-out { diff --git a/packages/block-editor/src/components/iframe/index.js b/packages/block-editor/src/components/iframe/index.js index 669e2fe25a9fbb..3b0bce6d56b403 100644 --- a/packages/block-editor/src/components/iframe/index.js +++ b/packages/block-editor/src/components/iframe/index.js @@ -305,7 +305,7 @@ function Iframe( { iframeDocument.documentElement.classList.add( 'is-zoomed-out' ); - const maxWidth = 800; + const maxWidth = 750; iframeDocument.documentElement.style.setProperty( '--wp-block-editor-iframe-zoom-out-scale', scale === 'default' @@ -378,10 +378,8 @@ function Iframe( {