Skip to content

Commit

Permalink
Ui enhancements
Browse files Browse the repository at this point in the history
  • Loading branch information
jorgefilipecosta committed Dec 14, 2021
1 parent f1d9c6a commit 087ebb2
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
PanelBody,
Dropdown,
} from '@wordpress/components';
import { sprintf, __ } from '@wordpress/i18n';
import { sprintf, __, isRTL } from '@wordpress/i18n';

/**
* Internal dependencies
Expand Down Expand Up @@ -136,6 +136,13 @@ export const PanelColorGradientSettingsInner = ( {
</span>
);

let dropdownPosition;
let popoverProps;
if ( __experimentalIsRenderedInSidebar ) {
dropdownPosition = isRTL() ? 'bottom right' : 'bottom left';
popoverProps = { __unstableForcePosition: true };
}

return (
<PanelBody
className={ classnames(
Expand All @@ -145,26 +152,35 @@ export const PanelColorGradientSettingsInner = ( {
title={ showTitle ? titleElement : undefined }
{ ...props }
>
<ItemGroup isBordered isSeparated>
<ItemGroup
isBordered
isSeparated
className="block-editor-panel-color-gradient-settings__item-group"
>
{ settings.map( ( setting, index ) => (
<Dropdown
position={ dropdownPosition }
popoverProps={ popoverProps }
className="block-editor-panel-color-gradient-settings__dropdown"
key={ index }
contentClassName="block-editor-panel-color-gradient-settings__dropdown"
renderToggle={ ( { onToggle } ) => {
contentClassName="block-editor-panel-color-gradient-settings__dropdown-content"
renderToggle={ ( { isOpen, onToggle } ) => {
return (
<Item
onClick={ onToggle }
className="block-editor-panel-color-gradient-settings__item"
className={ classnames(
'block-editor-panel-color-gradient-settings__item',
{ 'is-open': isOpen }
) }
>
<HStack justify="flex-start">
<FlexItem>
<ColorIndicator
colorValue={
setting.gradientValue ??
setting.colorValue
}
/>
</FlexItem>
<ColorIndicator
className="block-editor-panel-color-gradient-settings__color-indicator"
colorValue={
setting.gradientValue ??
setting.colorValue
}
/>
<FlexItem>{ setting.label }</FlexItem>
</HStack>
</Item>
Expand Down
25 changes: 18 additions & 7 deletions packages/block-editor/src/components/colors-gradients/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}

11 changes: 10 additions & 1 deletion packages/components/src/color-palette/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';

/**
Expand Down Expand Up @@ -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 (
<VStack spacing={ 3 } className={ className }>
{ ! disableCustomColors && (
<CustomColorPickerDropdown
position={ dropdownPosition }
isRenderedInSidebar={ __experimentalIsRenderedInSidebar }
renderContent={ renderCustomColorPicker }
popoverProps={ popoverProps }
renderToggle={ ( { isOpen, onToggle } ) => (
<button
className="components-color-palette__custom-color"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,21 +35,36 @@ function ToggleGroupControlBackdrop( {
return;
}

const { x: parentX } = containerNode.getBoundingClientRect();
const { width: offsetWidth, x } = targetNode.getBoundingClientRect();
const borderWidth = 1;
const offsetLeft = x - parentX - borderWidth;
const computeDimensions = () => {
const {
width: offsetWidth,
x,
} = targetNode.getBoundingClientRect();

setLeft( offsetLeft );
setWidth( offsetWidth );
const { x: parentX } = containerNode.getBoundingClientRect();

let requestId: number;
const borderWidth = 1;
const offsetLeft = x - parentX - borderWidth;

setLeft( offsetLeft );
setWidth( offsetWidth );
};
// Fix to make the component appear as expected inside popovers.
// If the targetNode width is 0 it means the element was not yet rendered we should allow
// some time for the render to happen.
// requestAnimationFrame instead of setTimeout with a small time does not seems to work.
const dimensionsRequestId = window.setTimeout( computeDimensions, 100 );

let animationRequestId: number;
if ( ! canAnimate ) {
requestId = window.requestAnimationFrame( () => {
animationRequestId = window.requestAnimationFrame( () => {
setCanAnimate( true );
} );
}
return () => window.cancelAnimationFrame( requestId );
return () => {
window.clearTimeout( dimensionsRequestId );
window.cancelAnimationFrame( animationRequestId );
};
}, [ canAnimate, containerRef, containerWidth, state, isAdaptiveWidth ] );

if ( ! renderBackdrop ) {
Expand Down

0 comments on commit 087ebb2

Please sign in to comment.