Skip to content
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

Add styling options to query pagination numbers #38508

Closed
wants to merge 3 commits into from

Conversation

carolinan
Copy link
Contributor

Description

Adds some basic styling to the query pagination numbers.
Closes #38386

Testing Instructions

  1. Apply the PR
  2. Create a new post or page
  3. Add a query loop with query pagination.
    4, Select the query pagination numbers block.
  4. Test the background color option, the typography options, and the block spacing.
  5. View the result, save and compare the result with the front.

Screenshots

query-pagination.mp4

Types of changes

Enhancement

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR (please manually search all *.native.js files for terms that need renaming or removal).
  • I've updated related schemas if appropriate.

@carolinan carolinan added the [Block] Query Pagination Affects the Query Pagination Block - used for pagination within the Query Loop Block label Feb 4, 2022
@carolinan carolinan added the [Type] Enhancement A suggestion for improvement. label Feb 4, 2022
@github-actions
Copy link

github-actions bot commented Feb 4, 2022

Size Change: +2.91 kB (0%)

Total Size: 1.14 MB

Filename Size Change
build/block-editor/index.min.js 142 kB +726 B (+1%)
build/block-editor/style-rtl.css 14.8 kB +230 B (+2%)
build/block-editor/style.css 14.8 kB +231 B (+2%)
build/block-library/blocks/navigation/editor-rtl.css 1.98 kB +28 B (+1%)
build/block-library/blocks/navigation/editor.css 1.99 kB +25 B (+1%)
build/block-library/editor-rtl.css 10.1 kB +22 B (0%)
build/block-library/editor.css 10.1 kB +22 B (0%)
build/block-library/index.min.js 167 kB +1.27 kB (+1%)
build/block-library/style-rtl.css 11.1 kB +38 B (0%)
build/block-library/style.css 11.1 kB +38 B (0%)
build/components/index.min.js 215 kB +117 B (0%)
build/data/index.min.js 7.44 kB -48 B (-1%)
build/edit-post/index.min.js 29.7 kB +57 B (0%)
build/edit-post/style.css 7.14 kB +1 B (0%)
build/edit-site/index.min.js 41.6 kB +64 B (0%)
build/editor/index.min.js 38.5 kB +84 B (0%)
build/nux/index.min.js 2.09 kB +9 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 960 B
build/admin-manifest/index.min.js 1.1 kB
build/annotations/index.min.js 2.75 kB
build/api-fetch/index.min.js 2.22 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.28 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 470 B
build/block-library/blocks/button/editor.css 470 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-template/style-rtl.css 127 B
build/block-library/blocks/comment-template/style.css 127 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-query-loop/editor-rtl.css 95 B
build/block-library/blocks/comments-query-loop/editor.css 95 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.4 kB
build/block-library/blocks/cover/style.css 1.4 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 322 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 965 B
build/block-library/blocks/gallery/editor.css 967 B
build/block-library/blocks/gallery/style-rtl.css 1.61 kB
build/block-library/blocks/gallery/style.css 1.61 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 810 B
build/block-library/blocks/image/editor.css 809 B
build/block-library/blocks/image/style-rtl.css 500 B
build/block-library/blocks/image/style.css 503 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 199 B
build/block-library/blocks/latest-posts/editor.css 198 B
build/block-library/blocks/latest-posts/style-rtl.css 447 B
build/block-library/blocks/latest-posts/style.css 446 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 493 B
build/block-library/blocks/media-text/style.css 490 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 649 B
build/block-library/blocks/navigation-link/editor.css 650 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/view.min.js 343 B
build/block-library/blocks/navigation/style-rtl.css 1.85 kB
build/block-library/blocks/navigation/style.css 1.84 kB
build/block-library/blocks/navigation/view.min.js 2.81 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 401 B
build/block-library/blocks/page-list/editor.css 402 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/style-rtl.css 446 B
build/block-library/blocks/post-comments-form/style.css 446 B
build/block-library/blocks/post-comments/style-rtl.css 521 B
build/block-library/blocks/post-comments/style.css 521 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 323 B
build/block-library/blocks/post-template/style.css 323 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 80 B
build/block-library/blocks/post-title/style.css 80 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 389 B
build/block-library/blocks/pullquote/style.css 388 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 201 B
build/block-library/blocks/quote/style.css 201 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 397 B
build/block-library/blocks/search/style.css 398 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 245 B
build/block-library/blocks/separator/style.css 245 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 744 B
build/block-library/blocks/site-logo/editor.css 744 B
build/block-library/blocks/site-logo/style-rtl.css 181 B
build/block-library/blocks/site-logo/style.css 181 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.37 kB
build/block-library/blocks/social-links/style.css 1.36 kB
build/block-library/blocks/spacer/editor-rtl.css 332 B
build/block-library/blocks/spacer/editor.css 332 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 214 B
build/block-library/blocks/tag-cloud/style.css 215 B
build/block-library/blocks/template-part/editor-rtl.css 560 B
build/block-library/blocks/template-part/editor.css 559 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 921 B
build/block-library/common.css 919 B
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/theme-rtl.css 672 B
build/block-library/theme.css 676 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/blocks/index.min.js 46.4 kB
build/components/style-rtl.css 15.5 kB
build/components/style.css 15.5 kB
build/compose/index.min.js 11.2 kB
build/core-data/index.min.js 13.4 kB
build/customize-widgets/index.min.js 11.4 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 631 B
build/date/index.min.js 31.9 kB
build/deprecated/index.min.js 485 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.5 kB
build/edit-navigation/index.min.js 16.2 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-post/style-rtl.css 7.15 kB
build/edit-site/style-rtl.css 7.22 kB
build/edit-site/style.css 7.21 kB
build/edit-widgets/index.min.js 16.7 kB
build/edit-widgets/style-rtl.css 4.17 kB
build/edit-widgets/style.css 4.17 kB
build/editor/style-rtl.css 3.71 kB
build/editor/style.css 3.71 kB
build/element/index.min.js 3.29 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 6.58 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.63 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.75 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.8 kB
build/keycodes/index.min.js 1.39 kB
build/list-reusable-blocks/index.min.js 1.72 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.92 kB
build/notices/index.min.js 925 B
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.95 kB
build/primitives/index.min.js 917 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.65 kB
build/reusable-blocks/index.min.js 2.22 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11 kB
build/server-side-render/index.min.js 1.58 kB
build/shortcode/index.min.js 1.49 kB
build/token-list/index.min.js 639 B
build/url/index.min.js 1.9 kB
build/viewport/index.min.js 1.05 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.15 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@carolinan carolinan marked this pull request as ready for review February 4, 2022 05:52
Copy link
Contributor

@ntsekouras ntsekouras left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR Carolina!

const paginationNumbers = previewPaginationNumbers();
return <div { ...useBlockProps() }>{ paginationNumbers }</div>;
return (
<div { ...blockProps } style={ { ...blockProps.style, gap: blockGap } }>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That threw me off a bit... It seems that blockGap support is used only in layout abstraction and that's why this code is needed. Do you think this would be the proper handling of such cases? --cc @ramonjd @andrewserong @aaronrobertshaw @youknowriad

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ntsekouras yes, I think if we're going to use blockGap here, it'd also make sense to opt-in to the __experimentalLayout support to handle generating the styles, and also server-rendering the flex display. E.g. something like the following:

		"__experimentalLayout": {
			"allowInheriting": false,
			"allowSwitching": false,
			"default": {
				"type": "flex"
			}
		}

If we do that for this block, though, the justification controls that get exposed in the UI might not make much sense in this context. So, there's possibly an opportunity here to optionally hide justification controls when opting in to that layout?

@@ -19,7 +19,13 @@ const previewPaginationNumbers = () => (
</>
);

export default function QueryPaginationNumbersEdit() {
export default function QueryPaginationNumbersEdit( attributes ) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be renamed to props.

Copy link
Contributor

@andrewserong andrewserong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for updating this block @carolinan! I've added a couple of questions about the color supports, and to the discussion on blockGap.

I think this opens up an interesting discussion surrounding how blockGap works — it's currently designed to work with blocks that opt-in to the __experimentalLayout support, where the rendering of display: flex, etc, is already handled. That'd be my preference for how to use it, rather than adding in ad hoc server-rendering within the block directly, so that the block can also support a gap value set via theme.json. It might be slightly more complex to get that working correctly, though, since I'm not sure we've opted in to the blockGap support yet for any blocks that don't also have innerBlocks. But, it could be a good opportunity for us to explore how the layout support can work for this use case?

One option, if exploring blockGap gets a bit more complex, could be to split out that change to a separate PR so that you can get the typography and color support in sooner, so that it doesn't hold up those immediately useful features.

"html": false
"html": false,
"color": {
"gradients": true,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding a background color without any additional controls (padding, border, etc) felt a bit limited to me when I was playing around with this, though it did seem nice being able to style the background gradient:

image

I think I'd lean toward either also including padding (but possibly not have it one of the default controls), or leave background color to the group block.

"html": false,
"color": {
"gradients": true,
"text": false
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason we don't want folks to also be able to adjust the text color? I could imagine someone wanting to create high contrast pagination buttons with a black background and white text, perhaps. I imagine if we opt in to text color, we'd need link color, too, though, so that the current page and non current page can have different colors.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To answer both these questions, I used the same settings as the query pagination next and previous page inner blocks, for consistency.
We can add padding, but it would need to be added to the other two blocks as well, in my opinion.
The text and link color settings are on the parent "query pagination" block. (which does not have any text of its own...)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optionally, if I need to remove blockgap, place the padding on the numbers and dots, but then there won't be padding around the container, the set of numbers, where the background is applied.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I used the same settings as the query pagination next and previous page inner blocks, for consistency.

Ah, good point, I see now. Thanks! I think it'd be good for all three to be able to adjust padding and individual color controls, but that could totally be something we explore in a different PR. For now, going with consistency with the other blocks sounds good to me.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason we don't want folks to also be able to adjust the text color?

Actually there is. These two blocks prev/next have no wrapper and are always a link(a element), but the way color supports work is to apply css rules for the children elements. For example if we added the link color support would try to target innner a elements from the block, which do not exist 😄

Now we have kept the color support to the parent Query Pagination block which can contain both links and text(in Pagination Numbers) and users can control this in one place.

const paginationNumbers = previewPaginationNumbers();
return <div { ...useBlockProps() }>{ paginationNumbers }</div>;
return (
<div { ...blockProps } style={ { ...blockProps.style, gap: blockGap } }>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ntsekouras yes, I think if we're going to use blockGap here, it'd also make sense to opt-in to the __experimentalLayout support to handle generating the styles, and also server-rendering the flex display. E.g. something like the following:

		"__experimentalLayout": {
			"allowInheriting": false,
			"allowSwitching": false,
			"default": {
				"type": "flex"
			}
		}

If we do that for this block, though, the justification controls that get exposed in the UI might not make much sense in this context. So, there's possibly an opportunity here to optionally hide justification controls when opting in to that layout?


$wrapper_attributes = get_block_wrapper_attributes();
$content = '';
if ( $blockgap ) {
$wrapper_attributes = get_block_wrapper_attributes( array( 'style' => "gap:{$blockgap};display:flex;" ) );
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we stick with the server-rendering here, should we add an esc_attr before concatenating into style attribute?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did I add it in the correct place?

@carolinan
Copy link
Contributor Author

To me the blockgap and block spacing control is ideal for the wanted end result which is to add a flexible spacing between the numbers.
But it is an interesting problem since:

  • The numbers are not inner blocks.
  • While flex should be used, the flex layout options should not be enabled because the justifications are already on the parent query pagination block.
  • The default block gap, set in theme.json or elsewhere, should not be used because it is too big to look good as a default for spacing the numbers.

@@ -19,7 +19,13 @@ const previewPaginationNumbers = () => (
</>
);

export default function QueryPaginationNumbersEdit() {
export default function QueryPaginationNumbersEdit( attributes ) {
const blockProps = useBlockProps();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not mandatory, but it's also possible to pass the gap style to useBlockProps so we don't have to destructure the styles inline.

export default function QueryPaginationNumbersEdit( { attributes } ) {
	const blockProps = useBlockProps( {
		style: {
			gap: attributes?.style?.spacing?.blockGap,
		},
	} );
	return <div { ...blockProps }>{ previewPaginationNumbers() }</div>;
}

@ramonjd
Copy link
Member

ramonjd commented Feb 8, 2022

While flex should be used, the flex layout options should not be enabled because the justifications are already on the parent query pagination block.

I've tested things out by enabling layout support on the pagination numbers but settings the following:

"allowEditing": false,

This hides the layout controls, e.g.,

Screen Shot 2022-02-08 at 12 47 59 pm

		"__experimentalLayout": {
			"allowSwitching": false,
			"allowInheriting": false,
			"allowEditing": false,
			"default": {
				"type": "flex"
			}
		}

Maybe this addresses some of @andrewserong's concerns above?

@andrewserong
Copy link
Contributor

andrewserong commented Feb 8, 2022

Thanks for testing @ramonjd — from the sounds of it, that gets us half way there. I wonder if it's worth us looking into adding a setting under "default" for a default block gap value that we can render as the fallback gap to address the other issue? (I'm happy to have a go at that in a separate PR)

Edit: on second thoughts, even if we can override the 0.5em fallback, the --wp--style--block-gap value will still be used via global styles (I think?), so that might not solve our problem 🤔

@youknowriad
Copy link
Contributor

youknowriad commented Feb 8, 2022

The numbers are not inner blocks.

I've tried reading here and from my understanding, I think that's the root thing here. Since the numbers are not inner blocks, should we be allowed or not to use "blockGap".

From the name of the property "blockGap", it's clearly about separating blocks, that said, I can see the convenience of having the same UI... for a spacing property to space items in a block that are not block gap. So maybe it's fine to use that way for some adhoc use-cases? Maybe it's what __experimentalSkipSerialization is for, for other block supports?

@carolinan
Copy link
Contributor Author

I added the __experimentalLayout set it to flex and false.

Question: I did run npm run docs:build, but it did not update the block reference 🤔 Did I miss a step? I thought the layout would be added to it, but as false.

"blockGap": true
}
},
"__experimentalLayout": {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we should be adding this unless the block uses inner blocks. The current behavior of the layout block support (apply to the wrapper of blocks) is not the right one and need to be moved to the inner blocks wrapper at some point which would break this since this block doesn't have inner blocks.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And I think we agree that the numbers should not be inner blocks?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think so, it's not clear what that would bring.

@MaggieCabrera
Copy link
Contributor

MaggieCabrera commented Mar 28, 2022

Hi @carolinan should we separate the typography/color supports from the spacing on another PR? since that seems to need a bit more discussion but the rest is more straightforward and would make all 3 blocks more consistent together.

@carolinan
Copy link
Contributor Author

I agree but I haven't had time to do it. Feel free to continue (and close this).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Query Pagination Affects the Query Pagination Block - used for pagination within the Query Loop Block [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Pagination] Allow users to customize page numbers
6 participants