-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RNMobile] Buttons block: Fix content justification attribute #37887
Changes from all commits
6b7b94a
05d2688
98eb9b4
1fc638e
0bc7111
0219e5b
1131588
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,23 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* WordPress dependencies | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { removeFilter } from '@wordpress/hooks'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* Internal dependencies | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import './layout.js'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// This filter is removed because layout styles shouldn't be added | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// until layout types are supported in the native version. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
removeFilter( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'editor.BlockListBlock', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'core/editor/layout/with-layout-styles' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// This filter is removed because the layout controls shouldn't be | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// enabled until layout types are supported in the native version. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
removeFilter( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'editor.BlockEdit', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'core/editor/layout/with-inspector-controls' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+18
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Here you can see the logic related to this hook: gutenberg/packages/block-editor/src/hooks/layout.js Lines 160 to 181 in 29ec9e0
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In the Buttons block, regarding the justification content controls, instead of using the one provided by the layout logic: gutenberg/packages/block-editor/src/layouts/flex.js Lines 69 to 86 in 29ec9e0
We define it within the block render: gutenberg/packages/block-library/src/buttons/edit.native.js Lines 126 to 138 in 29ec9e0
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not suggesting a change here, but I'm wondering whether there is an opportunity to extract some of what is in the web implementation. Certainly not a blocker for this PR, just thinking about a possibility where There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah though the gutenberg/packages/block-editor/src/hooks/layout.js Lines 238 to 242 in 43f9ad7
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,7 +13,7 @@ import { | |
JustifyContentControl, | ||
store as blockEditorStore, | ||
} from '@wordpress/block-editor'; | ||
import { createBlock } from '@wordpress/blocks'; | ||
import { createBlock, getBlockSupport } from '@wordpress/blocks'; | ||
import { useResizeObserver } from '@wordpress/compose'; | ||
import { useDispatch, useSelect } from '@wordpress/data'; | ||
import { useState, useEffect, useRef, useCallback } from '@wordpress/element'; | ||
|
@@ -30,16 +30,23 @@ const ALLOWED_BLOCKS = [ buttonBlockName ]; | |
const layoutProp = { type: 'default', alignments: [] }; | ||
|
||
export default function ButtonsEdit( { | ||
attributes: { contentJustification, align }, | ||
attributes: { layout, align }, | ||
clientId, | ||
isSelected, | ||
setAttributes, | ||
blockWidth, | ||
name, | ||
} ) { | ||
const [ resizeObserver, sizes ] = useResizeObserver(); | ||
const [ maxWidth, setMaxWidth ] = useState( 0 ); | ||
const { marginLeft: spacing } = styles.spacing; | ||
|
||
// Extract attributes from block layout | ||
const layoutBlockSupport = getBlockSupport( name, '__experimentalLayout' ); | ||
const defaultBlockLayout = layoutBlockSupport?.default; | ||
const usedLayout = layout || defaultBlockLayout || {}; | ||
Comment on lines
+45
to
+47
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is based on how the layout panel fetches the layout object to be used in the inspector controls (reference). There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thank you for providing all of these explanations! 😃 |
||
const { justifyContent } = usedLayout; | ||
|
||
const { isInnerButtonSelected, shouldDelete } = useSelect( | ||
( select ) => { | ||
const { | ||
|
@@ -126,9 +133,14 @@ export default function ButtonsEdit( { | |
<BlockControls group="block"> | ||
<JustifyContentControl | ||
allowedControls={ justifyControls } | ||
value={ contentJustification } | ||
value={ justifyContent } | ||
onChange={ ( value ) => | ||
setAttributes( { contentJustification: value } ) | ||
setAttributes( { | ||
layout: { | ||
...usedLayout, | ||
justifyContent: value, | ||
}, | ||
} ) | ||
} | ||
popoverProps={ { | ||
position: 'bottom right', | ||
|
@@ -154,7 +166,7 @@ export default function ButtonsEdit( { | |
shouldRenderFooterAppender && renderFooterAppender.current | ||
} | ||
orientation="horizontal" | ||
horizontalAlignment={ contentJustification } | ||
horizontalAlignment={ justifyContent } | ||
onDeleteBlock={ shouldDelete ? remove : undefined } | ||
onAddBlock={ onAddNextButton } | ||
parentWidth={ maxWidth } // This value controls the width of that the buttons are able to expand to. | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
// Jest Snapshot v1, https://goo.gl/fbAQLP | ||
|
||
exports[`Buttons block justify content sets Justify items center option 1`] = ` | ||
"<!-- wp:buttons {\\"layout\\":{\\"type\\":\\"flex\\",\\"justifyContent\\":\\"center\\"}} --> | ||
<div class=\\"wp-block-buttons\\"><!-- wp:button /--></div> | ||
<!-- /wp:buttons -->" | ||
`; | ||
|
||
exports[`Buttons block justify content sets Justify items left option 1`] = ` | ||
"<!-- wp:buttons {\\"layout\\":{\\"type\\":\\"flex\\",\\"justifyContent\\":\\"left\\"}} --> | ||
<div class=\\"wp-block-buttons\\"><!-- wp:button /--></div> | ||
<!-- /wp:buttons -->" | ||
`; | ||
|
||
exports[`Buttons block justify content sets Justify items right option 1`] = ` | ||
"<!-- wp:buttons {\\"layout\\":{\\"type\\":\\"flex\\",\\"justifyContent\\":\\"right\\"}} --> | ||
<div class=\\"wp-block-buttons\\"><!-- wp:button /--></div> | ||
<!-- /wp:buttons -->" | ||
`; | ||
|
||
exports[`Buttons block when a button is shown adjusts the border radius 1`] = ` | ||
"<!-- wp:buttons --> | ||
<div class=\\"wp-block-buttons\\"><!-- wp:button {\\"style\\":{\\"border\\":{\\"radius\\":\\"6px\\"}}} --> | ||
<div class=\\"wp-block-button\\"><a class=\\"wp-block-button__link\\" href=\\"\\" style=\\"border-radius:6px\\">Hello</a></div> | ||
<!-- /wp:button --></div> | ||
<!-- /wp:buttons -->" | ||
`; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here you can see the logic related to this hook:
gutenberg/packages/block-editor/src/hooks/layout.js
Lines 183 to 226 in 29ec9e0