diff --git a/packages/block-editor/src/components/colors-gradients/panel-color-gradient-settings.js b/packages/block-editor/src/components/colors-gradients/panel-color-gradient-settings.js index a1435428f65fd..6b9623002f7f3 100644 --- a/packages/block-editor/src/components/colors-gradients/panel-color-gradient-settings.js +++ b/packages/block-editor/src/components/colors-gradients/panel-color-gradient-settings.js @@ -17,7 +17,7 @@ import { PanelBody, Dropdown, } from '@wordpress/components'; -import { sprintf, __ } from '@wordpress/i18n'; +import { sprintf, __, isRTL } from '@wordpress/i18n'; /** * Internal dependencies @@ -136,6 +136,13 @@ export const PanelColorGradientSettingsInner = ( { ); + let dropdownPosition; + let popoverProps; + if ( __experimentalIsRenderedInSidebar ) { + dropdownPosition = isRTL() ? 'bottom right' : 'bottom left'; + popoverProps = { __unstableForcePosition: true }; + } + return ( - + { settings.map( ( setting, index ) => ( { + contentClassName="block-editor-panel-color-gradient-settings__dropdown-content" + renderToggle={ ( { isOpen, onToggle } ) => { return ( - - - + { setting.label } diff --git a/packages/block-editor/src/components/colors-gradients/style.scss b/packages/block-editor/src/components/colors-gradients/style.scss index bc69ea351b39b..fe39ff0132182 100644 --- a/packages/block-editor/src/components/colors-gradients/style.scss +++ b/packages/block-editor/src/components/colors-gradients/style.scss @@ -39,28 +39,39 @@ margin-bottom: inherit; } - .components-dropdown { + .block-editor-panel-color-gradient-settings__dropdown { display: block; } +} - // Allow horizontal overflow so the size-increasing color indicators don't cause a scrollbar. - .components-navigator-screen { - overflow-x: visible; +.block-editor-panel-color-gradient-settings__dropdown-content .components-popover__content { + & > div { + width: $sidebar-width; } - } @include break-medium() { - .block-editor-panel-color-gradient-settings__dropdown .components-popover__content { + .block-editor-panel-color-gradient-settings__dropdown-content .components-popover__content { margin-right: #{ math.div($sidebar-width, 2) + $grid-unit-20 } !important; margin-top: #{ -($grid-unit-60 + $grid-unit-15) } !important; } } +.block-editor-panel-color-gradient-settings__dropdown:last-child > div { + border-bottom-width: 0; +} + .block-editor-panel-color-gradient-settings__item { - .component-color-indicator { + padding-top: $grid-unit-15 !important; + padding-bottom: $grid-unit-15 !important; + .block-editor-panel-color-gradient-settings__color-indicator { // Show a diagonal line (crossed out) for empty swatches. background: linear-gradient(-45deg, transparent 48%, $gray-300 48%, $gray-300 52%, transparent 52%); } + + &.is-open { + background: $gray-100; + color: var(--wp-admin-theme-color); + } } diff --git a/packages/components/src/color-palette/index.js b/packages/components/src/color-palette/index.js index 39ec5ebfc09c3..9a50a40d77457 100644 --- a/packages/components/src/color-palette/index.js +++ b/packages/components/src/color-palette/index.js @@ -10,7 +10,7 @@ import classnames from 'classnames'; /** * WordPress dependencies */ -import { __, sprintf } from '@wordpress/i18n'; +import { __, sprintf, isRTL } from '@wordpress/i18n'; import { useCallback, useMemo } from '@wordpress/element'; /** @@ -148,14 +148,23 @@ export default function ColorPalette( { /> ); + let dropdownPosition; + let popoverProps; + if ( __experimentalIsRenderedInSidebar ) { + dropdownPosition = isRTL() ? 'bottom right' : 'bottom left'; + popoverProps = { __unstableForcePosition: true }; + } + const colordColor = colord( value ); return ( { ! disableCustomColors && ( (