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 text-indent supports for paragraph block #59496

Open
wants to merge 3 commits into
base: trunk
Choose a base branch
from

Conversation

MaggieCabrera
Copy link
Contributor

@MaggieCabrera MaggieCabrera commented Mar 1, 2024

What?

Partially addresses #37462

This PR introduces the text-indent support and adds it to the paragraph block. This introduces no new UI, we can do that in a follow-up. Themes can make use of the new setting via theme.json.

Why?

More tools for the theme author's arsenal

How?

Using the style engine, following how text-transform and text-decoration are being implemented

Testing Instructions

Add to your theme:

			"core/paragraph": {
				"typography": {
					"textIndent": "3em"
				}
			},

Insert some paragraphs and check the frontend

Screenshots or screencast

Editor:

Screenshot 2024-03-01 at 11 01 15

Frontend:

Screenshot 2024-03-01 at 11 01 31

Questions:

  • Do we want to have the first paragraph indented? If not, do we allow for an extra control for the users who want all the paragraphs indented?
  • What about the margin collapsing? Do we want that, and how would the controls work out?

Copy link

github-actions bot commented Mar 1, 2024

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: MaggieCabrera <onemaggie@git.wordpress.org>
Co-authored-by: scruffian <scruffian@git.wordpress.org>
Co-authored-by: tellthemachines <isabel_brison@git.wordpress.org>
Co-authored-by: jasmussen <joen@git.wordpress.org>
Co-authored-by: draganescu <andraganescu@git.wordpress.org>
Co-authored-by: mtias <matveb@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

Copy link

github-actions bot commented Mar 1, 2024

This pull request has changed or added PHP files. Please confirm whether these changes need to be synced to WordPress Core, and therefore featured in the next release of WordPress.

If so, it is recommended to create a new Trac ticket and submit a pull request to the WordPress Core Github repository soon after this pull request is merged.

If you're unsure, you can always ask for help in the #core-editor channel in WordPress Slack.

Thank you! ❤️

View changed files
❔ lib/block-supports/typography.php
❔ lib/class-wp-theme-json-gutenberg.php
❔ lib/theme.json

Copy link

github-actions bot commented Mar 1, 2024

Size Change: -459 B (-0.03%)

Total Size: 1.75 MB

Filename Size Change
build/block-directory/index.min.js 7.31 kB -7 B (-0.1%)
build/block-editor/index.min.js 252 kB +6 B (0%)
build/block-library/blocks/query/editor-rtl.css 514 B +12 B (+2.39%)
build/block-library/blocks/query/editor.css 513 B +11 B (+2.19%)
build/block-library/editor-rtl.css 11.9 kB +15 B (+0.13%)
build/block-library/editor.css 11.9 kB +16 B (+0.13%)
build/block-library/index.min.js 219 kB -110 B (-0.05%)
build/blocks/index.min.js 52.2 kB +15 B (+0.03%)
build/components/index.min.js 227 kB +73 B (+0.03%)
build/customize-widgets/index.min.js 10.9 kB -2 B (-0.02%)
build/edit-post/index.min.js 12.5 kB +5 B (+0.04%)
build/edit-site/index.min.js 208 kB +330 B (+0.16%)
build/editor/index.min.js 97.8 kB -730 B (-0.74%)
build/editor/style-rtl.css 9.1 kB -49 B (-0.54%)
build/editor/style.css 9.1 kB -50 B (-0.55%)
build/list-reusable-blocks/index.min.js 2.16 kB -6 B (-0.28%)
build/style-engine/index.min.js 2.02 kB +12 B (+0.6%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 951 B
build/annotations/index.min.js 2.26 kB
build/api-fetch/index.min.js 2.31 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 579 B
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/content-rtl.css 4.58 kB
build/block-editor/content.css 4.58 kB
build/block-editor/default-editor-styles-rtl.css 394 B
build/block-editor/default-editor-styles.css 394 B
build/block-editor/style-rtl.css 15.9 kB
build/block-editor/style.css 15.9 kB
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 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 149 B
build/block-library/blocks/audio/editor.css 151 B
build/block-library/blocks/audio/style-rtl.css 132 B
build/block-library/blocks/audio/style.css 132 B
build/block-library/blocks/audio/theme-rtl.css 134 B
build/block-library/blocks/audio/theme.css 134 B
build/block-library/blocks/avatar/editor-rtl.css 115 B
build/block-library/blocks/avatar/editor.css 115 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/button/editor-rtl.css 310 B
build/block-library/blocks/button/editor.css 310 B
build/block-library/blocks/button/style-rtl.css 538 B
build/block-library/blocks/button/style.css 538 B
build/block-library/blocks/buttons/editor-rtl.css 336 B
build/block-library/blocks/buttons/editor.css 336 B
build/block-library/blocks/buttons/style-rtl.css 328 B
build/block-library/blocks/buttons/style.css 328 B
build/block-library/blocks/calendar/style-rtl.css 240 B
build/block-library/blocks/calendar/style.css 240 B
build/block-library/blocks/categories/editor-rtl.css 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 122 B
build/block-library/blocks/code/theme.css 122 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 420 B
build/block-library/blocks/columns/style.css 420 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 124 B
build/block-library/blocks/comment-author-avatar/editor.css 124 B
build/block-library/blocks/comment-content/style-rtl.css 90 B
build/block-library/blocks/comment-content/style.css 90 B
build/block-library/blocks/comment-template/style-rtl.css 200 B
build/block-library/blocks/comment-template/style.css 199 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 221 B
build/block-library/blocks/comments-pagination/editor.css 211 B
build/block-library/blocks/comments-pagination/style-rtl.css 234 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 832 B
build/block-library/blocks/comments/editor.css 832 B
build/block-library/blocks/comments/style-rtl.css 632 B
build/block-library/blocks/comments/style.css 631 B
build/block-library/blocks/cover/editor-rtl.css 668 B
build/block-library/blocks/cover/editor.css 669 B
build/block-library/blocks/cover/style-rtl.css 1.62 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 86 B
build/block-library/blocks/details/style.css 86 B
build/block-library/blocks/embed/editor-rtl.css 314 B
build/block-library/blocks/embed/editor.css 314 B
build/block-library/blocks/embed/style-rtl.css 419 B
build/block-library/blocks/embed/style.css 419 B
build/block-library/blocks/embed/theme-rtl.css 133 B
build/block-library/blocks/embed/theme.css 133 B
build/block-library/blocks/file/editor-rtl.css 326 B
build/block-library/blocks/file/editor.css 326 B
build/block-library/blocks/file/style-rtl.css 278 B
build/block-library/blocks/file/style.css 279 B
build/block-library/blocks/file/view.min.js 324 B
build/block-library/blocks/footnotes/style-rtl.css 198 B
build/block-library/blocks/footnotes/style.css 197 B
build/block-library/blocks/form-input/editor-rtl.css 229 B
build/block-library/blocks/form-input/editor.css 229 B
build/block-library/blocks/form-input/style-rtl.css 342 B
build/block-library/blocks/form-input/style.css 342 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 344 B
build/block-library/blocks/form-submission-notification/editor.css 341 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/form/view.min.js 470 B
build/block-library/blocks/freeform/editor-rtl.css 2.6 kB
build/block-library/blocks/freeform/editor.css 2.6 kB
build/block-library/blocks/gallery/editor-rtl.css 958 B
build/block-library/blocks/gallery/editor.css 962 B
build/block-library/blocks/gallery/style-rtl.css 1.71 kB
build/block-library/blocks/gallery/style.css 1.71 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 402 B
build/block-library/blocks/group/editor.css 402 B
build/block-library/blocks/group/style-rtl.css 103 B
build/block-library/blocks/group/style.css 103 B
build/block-library/blocks/group/theme-rtl.css 79 B
build/block-library/blocks/group/theme.css 79 B
build/block-library/blocks/heading/style-rtl.css 188 B
build/block-library/blocks/heading/style.css 188 B
build/block-library/blocks/html/editor-rtl.css 346 B
build/block-library/blocks/html/editor.css 347 B
build/block-library/blocks/image/editor-rtl.css 845 B
build/block-library/blocks/image/editor.css 843 B
build/block-library/blocks/image/style-rtl.css 1.54 kB
build/block-library/blocks/image/style.css 1.54 kB
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/image/view.min.js 1.54 kB
build/block-library/blocks/latest-comments/style-rtl.css 355 B
build/block-library/blocks/latest-comments/style.css 354 B
build/block-library/blocks/latest-posts/editor-rtl.css 204 B
build/block-library/blocks/latest-posts/editor.css 204 B
build/block-library/blocks/latest-posts/style-rtl.css 509 B
build/block-library/blocks/latest-posts/style.css 510 B
build/block-library/blocks/list/style-rtl.css 104 B
build/block-library/blocks/list/style.css 104 B
build/block-library/blocks/media-text/editor-rtl.css 304 B
build/block-library/blocks/media-text/editor.css 303 B
build/block-library/blocks/media-text/style-rtl.css 516 B
build/block-library/blocks/media-text/style.css 515 B
build/block-library/blocks/more/editor-rtl.css 427 B
build/block-library/blocks/more/editor.css 427 B
build/block-library/blocks/navigation-link/editor-rtl.css 663 B
build/block-library/blocks/navigation-link/editor.css 664 B
build/block-library/blocks/navigation-link/style-rtl.css 192 B
build/block-library/blocks/navigation-link/style.css 191 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 295 B
build/block-library/blocks/navigation-submenu/editor.css 294 B
build/block-library/blocks/navigation/editor-rtl.css 2.2 kB
build/block-library/blocks/navigation/editor.css 2.21 kB
build/block-library/blocks/navigation/style-rtl.css 2.26 kB
build/block-library/blocks/navigation/style.css 2.25 kB
build/block-library/blocks/navigation/view.min.js 1.03 kB
build/block-library/blocks/nextpage/editor-rtl.css 392 B
build/block-library/blocks/nextpage/editor.css 392 B
build/block-library/blocks/page-list/editor-rtl.css 378 B
build/block-library/blocks/page-list/editor.css 378 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 236 B
build/block-library/blocks/paragraph/editor.css 236 B
build/block-library/blocks/paragraph/style-rtl.css 341 B
build/block-library/blocks/paragraph/style.css 340 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/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 506 B
build/block-library/blocks/post-comments-form/style.css 506 B
build/block-library/blocks/post-content/editor-rtl.css 74 B
build/block-library/blocks/post-content/editor.css 74 B
build/block-library/blocks/post-date/style-rtl.css 62 B
build/block-library/blocks/post-date/style.css 62 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 729 B
build/block-library/blocks/post-featured-image/editor.css 726 B
build/block-library/blocks/post-featured-image/style-rtl.css 341 B
build/block-library/blocks/post-featured-image/style.css 341 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 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 399 B
build/block-library/blocks/post-template/style.css 398 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 70 B
build/block-library/blocks/post-time-to-read/style.css 70 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 134 B
build/block-library/blocks/pullquote/editor.css 134 B
build/block-library/blocks/pullquote/style-rtl.css 342 B
build/block-library/blocks/pullquote/style.css 342 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 121 B
build/block-library/blocks/query-pagination-numbers/editor.css 118 B
build/block-library/blocks/query-pagination/editor-rtl.css 220 B
build/block-library/blocks/query-pagination/editor.css 208 B
build/block-library/blocks/query-pagination/style-rtl.css 287 B
build/block-library/blocks/query-pagination/style.css 283 B
build/block-library/blocks/query-title/style-rtl.css 64 B
build/block-library/blocks/query-title/style.css 64 B
build/block-library/blocks/query/view.min.js 958 B
build/block-library/blocks/quote/style-rtl.css 238 B
build/block-library/blocks/quote/style.css 238 B
build/block-library/blocks/quote/theme-rtl.css 221 B
build/block-library/blocks/quote/theme.css 225 B
build/block-library/blocks/read-more/style-rtl.css 138 B
build/block-library/blocks/read-more/style.css 138 B
build/block-library/blocks/rss/editor-rtl.css 101 B
build/block-library/blocks/rss/editor.css 101 B
build/block-library/blocks/rss/style-rtl.css 288 B
build/block-library/blocks/rss/style.css 287 B
build/block-library/blocks/search/editor-rtl.css 183 B
build/block-library/blocks/search/editor.css 183 B
build/block-library/blocks/search/style-rtl.css 672 B
build/block-library/blocks/search/style.css 671 B
build/block-library/blocks/search/theme-rtl.css 113 B
build/block-library/blocks/search/theme.css 113 B
build/block-library/blocks/search/view.min.js 475 B
build/block-library/blocks/separator/editor-rtl.css 100 B
build/block-library/blocks/separator/editor.css 100 B
build/block-library/blocks/separator/style-rtl.css 248 B
build/block-library/blocks/separator/style.css 248 B
build/block-library/blocks/separator/theme-rtl.css 195 B
build/block-library/blocks/separator/theme.css 195 B
build/block-library/blocks/shortcode/editor-rtl.css 286 B
build/block-library/blocks/shortcode/editor.css 286 B
build/block-library/blocks/site-logo/editor-rtl.css 806 B
build/block-library/blocks/site-logo/editor.css 803 B
build/block-library/blocks/site-logo/style-rtl.css 218 B
build/block-library/blocks/site-logo/style.css 218 B
build/block-library/blocks/site-tagline/editor-rtl.css 87 B
build/block-library/blocks/site-tagline/editor.css 87 B
build/block-library/blocks/site-title/editor-rtl.css 123 B
build/block-library/blocks/site-title/editor.css 123 B
build/block-library/blocks/site-title/style-rtl.css 71 B
build/block-library/blocks/site-title/style.css 71 B
build/block-library/blocks/social-link/editor-rtl.css 338 B
build/block-library/blocks/social-link/editor.css 338 B
build/block-library/blocks/social-links/editor-rtl.css 676 B
build/block-library/blocks/social-links/editor.css 675 B
build/block-library/blocks/social-links/style-rtl.css 1.51 kB
build/block-library/blocks/social-links/style.css 1.5 kB
build/block-library/blocks/spacer/editor-rtl.css 346 B
build/block-library/blocks/spacer/editor.css 346 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 394 B
build/block-library/blocks/table/editor.css 394 B
build/block-library/blocks/table/style-rtl.css 640 B
build/block-library/blocks/table/style.css 639 B
build/block-library/blocks/table/theme-rtl.css 152 B
build/block-library/blocks/table/theme.css 152 B
build/block-library/blocks/tag-cloud/style-rtl.css 266 B
build/block-library/blocks/tag-cloud/style.css 265 B
build/block-library/blocks/template-part/editor-rtl.css 393 B
build/block-library/blocks/template-part/editor.css 393 B
build/block-library/blocks/template-part/theme-rtl.css 113 B
build/block-library/blocks/template-part/theme.css 113 B
build/block-library/blocks/term-description/style-rtl.css 108 B
build/block-library/blocks/term-description/style.css 108 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 165 B
build/block-library/blocks/text-columns/style.css 165 B
build/block-library/blocks/verse/style-rtl.css 98 B
build/block-library/blocks/verse/style.css 98 B
build/block-library/blocks/video/editor-rtl.css 553 B
build/block-library/blocks/video/editor.css 554 B
build/block-library/blocks/video/style-rtl.css 192 B
build/block-library/blocks/video/style.css 192 B
build/block-library/blocks/video/theme-rtl.css 134 B
build/block-library/blocks/video/theme.css 134 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 14.6 kB
build/block-library/style.css 14.6 kB
build/block-library/theme-rtl.css 702 B
build/block-library/theme.css 707 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/commands/index.min.js 15.2 kB
build/commands/style-rtl.css 955 B
build/commands/style.css 952 B
build/components/style-rtl.css 12.1 kB
build/components/style.css 12.1 kB
build/compose/index.min.js 12.9 kB
build/core-commands/index.min.js 2.77 kB
build/core-data/index.min.js 72.6 kB
build/customize-widgets/style-rtl.css 1.35 kB
build/customize-widgets/style.css 1.35 kB
build/data-controls/index.min.js 641 B
build/data/index.min.js 8.98 kB
build/date/index.min.js 18 kB
build/deprecated/index.min.js 458 B
build/dom-ready/index.min.js 325 B
build/dom/index.min.js 4.65 kB
build/edit-post/classic-rtl.css 578 B
build/edit-post/classic.css 580 B
build/edit-post/style-rtl.css 2.34 kB
build/edit-post/style.css 2.33 kB
build/edit-site/posts-rtl.css 6.51 kB
build/edit-site/posts.css 6.52 kB
build/edit-site/style-rtl.css 11.7 kB
build/edit-site/style.css 11.7 kB
build/edit-widgets/index.min.js 17.6 kB
build/edit-widgets/style-rtl.css 4.18 kB
build/edit-widgets/style.css 4.18 kB
build/element/index.min.js 4.83 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 8.07 kB
build/format-library/style-rtl.css 494 B
build/format-library/style.css 493 B
build/hooks/index.min.js 1.54 kB
build/html-entities/index.min.js 445 B
build/i18n/index.min.js 3.58 kB
build/interactivity/debug.min.js 16.5 kB
build/interactivity/file.min.js 447 B
build/interactivity/image.min.js 1.68 kB
build/interactivity/index.min.js 13.4 kB
build/interactivity/navigation.min.js 1.16 kB
build/interactivity/query.min.js 742 B
build/interactivity/router.min.js 2.8 kB
build/interactivity/search.min.js 615 B
build/is-shallow-equal/index.min.js 526 B
build/keyboard-shortcuts/index.min.js 1.31 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/style-rtl.css 846 B
build/list-reusable-blocks/style.css 846 B
build/media-utils/index.min.js 2.92 kB
build/modules/importmap-polyfill.min.js 12.3 kB
build/notices/index.min.js 946 B
build/nux/index.min.js 1.58 kB
build/nux/style-rtl.css 749 B
build/nux/style.css 745 B
build/patterns/index.min.js 7.35 kB
build/patterns/style-rtl.css 687 B
build/patterns/style.css 685 B
build/plugins/index.min.js 1.81 kB
build/preferences-persistence/index.min.js 2.06 kB
build/preferences/index.min.js 2.9 kB
build/preferences/style-rtl.css 578 B
build/preferences/style.css 578 B
build/primitives/index.min.js 829 B
build/priority-queue/index.min.js 1.54 kB
build/private-apis/index.min.js 1.01 kB
build/react-i18n/index.min.js 630 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.76 kB
build/redux-routine/index.min.js 2.69 kB
build/reusable-blocks/index.min.js 2.73 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.1 kB
build/router/index.min.js 1.96 kB
build/server-side-render/index.min.js 1.94 kB
build/shortcode/index.min.js 1.4 kB
build/token-list/index.min.js 581 B
build/url/index.min.js 3.85 kB
build/vendors/react-dom.min.js 42.8 kB
build/vendors/react-jsx-runtime.min.js 560 B
build/vendors/react.min.js 2.65 kB
build/viewport/index.min.js 965 B
build/warning/index.min.js 250 B
build/widgets/index.min.js 7.19 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.03 kB

compressed-size-action

@MaggieCabrera MaggieCabrera added [Type] Feature New feature to highlight in changelogs. Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json [Block] Paragraph Affects the Paragraph Block labels Mar 1, 2024
@MaggieCabrera MaggieCabrera self-assigned this Mar 1, 2024
@@ -28,6 +28,7 @@ function gutenberg_register_typography_support( $block_type ) {
$has_line_height_support = $typography_supports['lineHeight'] ?? false;
$has_text_columns_support = $typography_supports['textColumns'] ?? false;
$has_text_decoration_support = $typography_supports['__experimentalTextDecoration'] ?? false;
$has_text_indent_support = $typography_supports['__experimentalTextIndent'] ?? false;
Copy link
Contributor

Choose a reason for hiding this comment

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

Should it still be __experimental?

@scruffian
Copy link
Contributor

This is working as expected but it has some unfortunate side effects when used with the paragraph block - for example the site-title block ends up being indented. This is an issue with the paragraph block though rather than the implementation of this PR.

My only question is whether we want to keep adding these properties as __experimental, which is probably a question for @youknowriad

@MaggieCabrera
Copy link
Contributor Author

This is working as expected but it has some unfortunate side effects when used with the paragraph block - for example the site-title block ends up being indented. This is an issue with the paragraph block though rather than the implementation of this PR.

Can you explain what's going on with the site title block?

Also, I think it's fair if this one starts as experimental at least until it lands in core?

@scruffian
Copy link
Contributor

Can you explain what's going on with the site title block?

It gets indented because it uses a p element which is what the selector for the paragraph block targets.

@tellthemachines
Copy link
Contributor

It gets indented because it uses a p element which is what the selector for the paragraph block targets.

The lack of classnames on Paragraph blocks is becoming a real nuisance. #47282 has been open for a while; might be time to get it shipped 😅

@jasmussen
Copy link
Contributor

For whatever reason I couldn't get this to work despite adding the theme.json properties. But thanks for the screenshot, I can give a little feedback based on this.

As a blanket property applied to all paragraphs, it seems like text-indent has limited utility. I could see it being useful as a non-default tool that you could indeed apply on a per-paragraph basis, or yes if you're making a particularly old-school book-style theme, to all paragraphs through a Global Styles default.

The lack of classnames on Paragraph blocks is becoming a real nuisance. #47282 has been open for a while; might be time to get it shipped 😅

I'm still personally very hesitant to add classes to every paragraph by default. The paragraph certainly sits in a unique place, since it's a block but it's largely output as an element instead. But I'd rather suggest taking the path that we did with the Button block here, where a button block exists, but you can also style the button element in Global Styles. The utility of styling just the paragraph element, though, is currently limited, as also noted above.

If we want text-indent, can we not just apply it like f.x. letter spacing is applied, as an inline style? Or even like font size is applied, as a class if it's not one of the presets?

What about the margin collapsing? Do we want that, and how would the controls work out?

How does this affect margin collapsing?

It gets indented because it uses a p element which is what the selector for the paragraph block targets.

If we do end up in a place where the p element is targeted as part of setting the text-indent on the Paragraph block (or element) in Global Styles, I'd say this text indentation also applying to the site logo is "intended", insofar as it's the CSS behavior. You'd presumably also be able to then unset it for the site logo yourself. If it becomes a problem we could explicitly unset it there by default, I'd prefer this over adding a class to the paragraph block.

@scruffian
Copy link
Contributor

scruffian commented Mar 6, 2024

I am conscious that we don't want to conflate this PR with the unanswered questions about the paragraph block. Is having a text-indent option valuable at a block level for all blocks?

@MaggieCabrera
Copy link
Contributor Author

When I mentioned margin collapsing I'm just thinking of the use cases that the original issue is referring to

@jasmussen
Copy link
Contributor

As far as next steps, as noted, I'm hesitant to add CSS classes and I don't think a blanket text-indent toggle for all paragraphs on a site is that useful. It can be useful on a per-block basis, and if we have that it shouldn't be a problem to also have a global option, but conversely there should also be a local way to un-indent. Finally there might be a conversation to have around whether there's a user expectation that indent is something that can stack, I.e. can I indent three times in one paragraph, two times in another? This is something TinyMCE does:

tinymce

I think it's risky to add that, it's easy to confuse with the Quote style, but it doesn't come with good semantics for quotes.

@draganescu
Copy link
Contributor

@jasmussen please help me understand

I don't think a blanket text-indent toggle for all paragraphs on a site is that useful.

as you said in contexts like say a theme that is like an older book this would work, wouldn't your suggestion to use it on "all paragraphs through a Global Styles default" imply this PR to land?

@jasmussen
Copy link
Contributor

wouldn't your suggestion to use it on "all paragraphs through a Global Styles default" imply this PR to land?

If you want to apply that indent on all paragraphs, you should be able to, sure! But without also being able to do it on a per-paragraph basis instead, it isn't clear it's all that useful. There's also the aspect of indentation in traditional editors not being just a boolean, but more like pressing tab, indenting a step each keypress.

It's not that I don't appreciate the effort, or that the feature doesn't have merit, it's just that we want to make sure and build it in a way that will actually be used to solve a meaningful problem.

@MaggieCabrera
Copy link
Contributor Author

As far as next steps, as noted, I'm hesitant to add CSS classes and I don't think a blanket text-indent toggle for all paragraphs on a site is that useful. It can be useful on a per-block basis, and if we have that it shouldn't be a problem to also have a global option, but conversely there should also be a local way to un-indent. Finally there might be a conversation to have around whether there's a user expectation that indent is something that can stack, I.e. can I indent three times in one paragraph, two times in another? This is something TinyMCE does:

I think it's risky to add that, it's easy to confuse with the Quote style, but it doesn't come with good semantics for quotes.

I understand that editing "inline" is probably better in this case, but you are showing the indenting of a paragraph in that video, not the first line. I don't think that's what we want here, is it?

@jasmussen
Copy link
Contributor

No, it's the first line, I'm thinking in terms of how do we set the width of the indentation? May be the wrong approach.

@MaggieCabrera
Copy link
Contributor Author

No, it's the first line, I'm thinking in terms of how do we set the width of the indentation? May be the wrong approach.

Ok that makes sense to me. I think both this PR and your suggestion have tradeoffs. Having a theme global setting would be ideal but it implies a lot to make it happen. Having it inline brings more control to the user and a theme can still provide patterns that use it, so it's worth exploring too.

@jasmussen
Copy link
Contributor

@MaggieCabrera I wanted to comment again on this issue as it recently came up in a chat with renewed interest.

Despite my initial instincts, there were quite a lot of counter instincts that supported a global text-indentation toggle, exactly as you suggested. It's an alternative to paragraphs having space between them, then the indentation serves as a marker for "new paragraph", in the typographical sense. This is counter to the previous instinct I shared, so show me a sword and I will throw myself on it!

In that sense, this text-indentation PR can be put in the same general category as justified text (#48202) and pretty text-wrapping (#55190) in that they are mostly global toggles that you flip once for your whole site.

These typography issues are also mostly similar in that they are properties that you should probably set globally, once, but rarely or never on a per-block basis. Justified text is my go-to example here, as it's a requirement in some schools and news-rooms to be applied across everything. So we wouldn't want you to have to remember to select every paragraph in a post, set it to justified, and then rinse and repeat for every post and page on your site. You should set it once.

Despite the above, I could still see benefit in a local option to set the initial indentation for just one paragraph. So the longer term, probably for all the three global typographical changes, could be to start with a global toggle, and then carefully consider whether to also enable them locally.

And in order to get this shipping, it might be good to just go ahead with the initial instinct: not too many options, just globally, and work out a good UI in global styles for how to toggle this on. Let me know what you think! And thanks for working on this.

@MaggieCabrera
Copy link
Contributor Author

Thanks for the reflections @jasmussen, it all makes a lot of sense to me. So, let's narrow it down a bit for this PR:

  • Let's keep this PR theme.json only. Worry about the UI on a follow up
  • We need to figure out a way for this not to bleed into paragraphs outside post content. Should this particular rule only be applied to paragraphs inside post-content if applied to the paragraph block? Is there any precedent of such an exception already on Global Styles?

@MaggieCabrera MaggieCabrera force-pushed the add-text-indent-supports branch from 7a19556 to e767118 Compare July 4, 2024 10:30
@mtias
Copy link
Member

mtias commented Jul 25, 2024

I think we should target the "text" element not a specific block like paragraph.

@MaggieCabrera
Copy link
Contributor Author

I think we should target the "text" element not a specific block like paragraph.

by adding the supports, we are allowing theme devs to add it to any block they want, I suppose that's ok?

The "text" element is basically targeting body, so that's an even worse bleed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Paragraph Affects the Paragraph Block Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json [Type] Feature New feature to highlight in changelogs.
Projects
Status: Next
Development

Successfully merging this pull request may close these issues.

6 participants