@wordpress/block-library 8.29.0 → 8.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/build/audio/edit.js +7 -17
- package/build/audio/edit.js.map +1 -1
- package/build/audio/edit.native.js.map +1 -1
- package/build/avatar/edit.js.map +1 -1
- package/build/block/deprecated.js +71 -11
- package/build/block/deprecated.js.map +1 -1
- package/build/block/edit.js +65 -31
- package/build/block/edit.js.map +1 -1
- package/build/button/edit.js +2 -2
- package/build/button/edit.js.map +1 -1
- package/build/buttons/edit.native.js.map +1 -1
- package/build/buttons/transforms.js +16 -2
- package/build/buttons/transforms.js.map +1 -1
- package/build/code/save.js +3 -1
- package/build/code/save.js.map +1 -1
- package/build/code/transforms.js +17 -6
- package/build/code/transforms.js.map +1 -1
- package/build/columns/edit.js +3 -2
- package/build/columns/edit.js.map +1 -1
- package/build/comment-author-avatar/edit.js +1 -1
- package/build/comment-author-avatar/edit.js.map +1 -1
- package/build/cover/edit/block-controls.js +14 -3
- package/build/cover/edit/block-controls.js.map +1 -1
- package/build/cover/edit/index.js +2 -1
- package/build/cover/edit/index.js.map +1 -1
- package/build/cover/edit/inspector-controls.js.map +1 -1
- package/build/cover/edit/resizable-cover-popover.js +0 -6
- package/build/cover/edit/resizable-cover-popover.js.map +1 -1
- package/build/cover/edit.native.js.map +1 -1
- package/build/details/edit.js +1 -0
- package/build/details/edit.js.map +1 -1
- package/build/file/deprecated.js.map +1 -1
- package/build/file/edit.js +8 -13
- package/build/file/edit.js.map +1 -1
- package/build/file/edit.native.js.map +1 -1
- package/build/file/save.js.map +1 -1
- package/build/form-input/edit.js +1 -1
- package/build/form-input/edit.js.map +1 -1
- package/build/gallery/edit.js.map +1 -1
- package/build/gallery/gallery.native.js.map +1 -1
- package/build/gallery/v1/edit.js.map +1 -1
- package/build/gallery/v1/gallery.native.js.map +1 -1
- package/build/heading/index.js +4 -3
- package/build/heading/index.js.map +1 -1
- package/build/heading/transforms.js +17 -4
- package/build/heading/transforms.js.map +1 -1
- package/build/image/edit.js +8 -4
- package/build/image/edit.js.map +1 -1
- package/build/image/edit.native.js.map +1 -1
- package/build/image/image.js +22 -8
- package/build/image/image.js.map +1 -1
- package/build/latest-posts/edit.native.js.map +1 -1
- package/build/list/ordered-list-settings.js +1 -1
- package/build/list/ordered-list-settings.js.map +1 -1
- package/build/list-item/edit.js +1 -3
- package/build/list-item/edit.js.map +1 -1
- package/build/list-item/edit.native.js.map +1 -1
- package/build/list-item/hooks/index.js +0 -7
- package/build/list-item/hooks/index.js.map +1 -1
- package/build/list-item/hooks/use-indent-list-item.js +1 -0
- package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
- package/build/list-item/hooks/use-outdent-list-item.js +1 -0
- package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
- package/build/list-item/hooks/use-space.js +16 -7
- package/build/list-item/hooks/use-space.js.map +1 -1
- package/build/list-item/index.js +4 -1
- package/build/list-item/index.js.map +1 -1
- package/build/media-text/edit.js +33 -9
- package/build/media-text/edit.js.map +1 -1
- package/build/media-text/index.js +5 -0
- package/build/media-text/index.js.map +1 -1
- package/build/media-text/media-container.js +30 -11
- package/build/media-text/media-container.js.map +1 -1
- package/build/media-text/media-container.native.js +1 -1
- package/build/media-text/media-container.native.js.map +1 -1
- package/build/media-text/save.js +2 -2
- package/build/media-text/save.js.map +1 -1
- package/build/navigation/edit/index.js +23 -29
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/navigation-menu-delete-control.js +12 -20
- package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build/navigation/edit/navigation-menu-selector.js +24 -23
- package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
- package/build/navigation/edit/placeholder/index.js +4 -4
- package/build/navigation/edit/placeholder/index.js.map +1 -1
- package/build/navigation/use-navigation-menu.js +15 -12
- package/build/navigation/use-navigation-menu.js.map +1 -1
- package/build/navigation-link/edit.js +12 -10
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-link/link-ui.js.map +1 -1
- package/build/navigation-submenu/edit.js +4 -0
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/paragraph/edit.native.js.map +1 -1
- package/build/pattern/edit.js +11 -0
- package/build/pattern/edit.js.map +1 -1
- package/build/post-author/edit.js +1 -0
- package/build/post-author/edit.js.map +1 -1
- package/build/post-excerpt/edit.js +1 -0
- package/build/post-excerpt/edit.js.map +1 -1
- package/build/post-featured-image/dimension-controls.js.map +1 -1
- package/build/post-featured-image/edit.js +12 -12
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-featured-image/index.js +6 -0
- package/build/post-featured-image/index.js.map +1 -1
- package/build/post-navigation-link/edit.js +1 -0
- package/build/post-navigation-link/edit.js.map +1 -1
- package/build/post-terms/edit.js +2 -0
- package/build/post-terms/edit.js.map +1 -1
- package/build/post-title/edit.js +2 -2
- package/build/post-title/edit.js.map +1 -1
- package/build/query/edit/pattern-selection-modal.js.map +1 -1
- package/build/query/utils.js +7 -5
- package/build/query/utils.js.map +1 -1
- package/build/query-pagination-next/edit.js.map +1 -1
- package/build/query-pagination-previous/edit.js.map +1 -1
- package/build/quote/deprecated.js +111 -12
- package/build/quote/deprecated.js.map +1 -1
- package/build/quote/edit.js +7 -7
- package/build/quote/edit.js.map +1 -1
- package/build/quote/index.js +1 -1
- package/build/quote/index.js.map +1 -1
- package/build/quote/save.js +2 -2
- package/build/quote/save.js.map +1 -1
- package/build/read-more/edit.js +1 -0
- package/build/read-more/edit.js.map +1 -1
- package/build/search/edit.js +3 -1
- package/build/search/edit.js.map +1 -1
- package/build/search/edit.native.js +2 -2
- package/build/search/edit.native.js.map +1 -1
- package/build/site-logo/edit.js +7 -2
- package/build/site-logo/edit.js.map +1 -1
- package/build/site-title/{edit/index.js → edit.js} +1 -1
- package/build/site-title/edit.js.map +1 -0
- package/build/social-link/edit.js +1 -1
- package/build/social-link/edit.js.map +1 -1
- package/build/social-link/icons/medium.js +1 -1
- package/build/social-link/icons/medium.js.map +1 -1
- package/build/social-link/icons/reddit.js +1 -1
- package/build/social-link/icons/reddit.js.map +1 -1
- package/build/social-links/edit.native.js.map +1 -1
- package/build/spacer/edit.js.map +1 -1
- package/build/table/deprecated.js +285 -175
- package/build/table/deprecated.js.map +1 -1
- package/build/table/index.js +1 -1
- package/build/table-of-contents/edit.js.map +1 -1
- package/build/template-part/edit/index.js +53 -1
- package/build/template-part/edit/index.js.map +1 -1
- package/build/template-part/edit/selection-modal.js +2 -8
- package/build/template-part/edit/selection-modal.js.map +1 -1
- package/build/template-part/edit/utils/map-template-part-to-block-pattern.js +30 -0
- package/build/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
- package/build/utils/caption.js +15 -5
- package/build/utils/caption.js.map +1 -1
- package/build/utils/get-transformed-metadata.js +57 -0
- package/build/utils/get-transformed-metadata.js.map +1 -0
- package/build/utils/hooks.js +55 -4
- package/build/utils/hooks.js.map +1 -1
- package/build/video/edit-common-settings.js.map +1 -1
- package/build/video/edit.js +7 -16
- package/build/video/edit.js.map +1 -1
- package/build/video/edit.native.js +3 -8
- package/build/video/edit.native.js.map +1 -1
- package/build-module/audio/edit.js +10 -20
- package/build-module/audio/edit.js.map +1 -1
- package/build-module/audio/edit.native.js.map +1 -1
- package/build-module/avatar/edit.js.map +1 -1
- package/build-module/block/deprecated.js +71 -11
- package/build-module/block/deprecated.js.map +1 -1
- package/build-module/block/edit.js +66 -32
- package/build-module/block/edit.js.map +1 -1
- package/build-module/button/edit.js +3 -3
- package/build-module/button/edit.js.map +1 -1
- package/build-module/buttons/edit.native.js.map +1 -1
- package/build-module/buttons/transforms.js +16 -2
- package/build-module/buttons/transforms.js.map +1 -1
- package/build-module/code/save.js +3 -1
- package/build-module/code/save.js.map +1 -1
- package/build-module/code/transforms.js +17 -6
- package/build-module/code/transforms.js.map +1 -1
- package/build-module/columns/edit.js +3 -2
- package/build-module/columns/edit.js.map +1 -1
- package/build-module/comment-author-avatar/edit.js +1 -1
- package/build-module/comment-author-avatar/edit.js.map +1 -1
- package/build-module/cover/edit/block-controls.js +15 -4
- package/build-module/cover/edit/block-controls.js.map +1 -1
- package/build-module/cover/edit/index.js +2 -1
- package/build-module/cover/edit/index.js.map +1 -1
- package/build-module/cover/edit/inspector-controls.js.map +1 -1
- package/build-module/cover/edit/resizable-cover-popover.js +1 -7
- package/build-module/cover/edit/resizable-cover-popover.js.map +1 -1
- package/build-module/cover/edit.native.js.map +1 -1
- package/build-module/details/edit.js +1 -0
- package/build-module/details/edit.js.map +1 -1
- package/build-module/file/deprecated.js.map +1 -1
- package/build-module/file/edit.js +9 -14
- package/build-module/file/edit.js.map +1 -1
- package/build-module/file/edit.native.js.map +1 -1
- package/build-module/file/save.js.map +1 -1
- package/build-module/form-input/edit.js +1 -1
- package/build-module/form-input/edit.js.map +1 -1
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/gallery.native.js.map +1 -1
- package/build-module/gallery/v1/edit.js.map +1 -1
- package/build-module/gallery/v1/gallery.native.js.map +1 -1
- package/build-module/heading/index.js +4 -3
- package/build-module/heading/index.js.map +1 -1
- package/build-module/heading/transforms.js +17 -4
- package/build-module/heading/transforms.js.map +1 -1
- package/build-module/image/edit.js +9 -5
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/edit.native.js.map +1 -1
- package/build-module/image/image.js +23 -9
- package/build-module/image/image.js.map +1 -1
- package/build-module/latest-posts/edit.native.js.map +1 -1
- package/build-module/list/ordered-list-settings.js +1 -1
- package/build-module/list/ordered-list-settings.js.map +1 -1
- package/build-module/list-item/edit.js +2 -4
- package/build-module/list-item/edit.js.map +1 -1
- package/build-module/list-item/edit.native.js.map +1 -1
- package/build-module/list-item/hooks/index.js +0 -1
- package/build-module/list-item/hooks/index.js.map +1 -1
- package/build-module/list-item/hooks/use-indent-list-item.js +1 -0
- package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
- package/build-module/list-item/hooks/use-outdent-list-item.js +1 -0
- package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
- package/build-module/list-item/hooks/use-space.js +17 -8
- package/build-module/list-item/hooks/use-space.js.map +1 -1
- package/build-module/list-item/index.js +4 -1
- package/build-module/list-item/index.js.map +1 -1
- package/build-module/media-text/edit.js +34 -10
- package/build-module/media-text/edit.js.map +1 -1
- package/build-module/media-text/index.js +5 -0
- package/build-module/media-text/index.js.map +1 -1
- package/build-module/media-text/media-container.js +31 -12
- package/build-module/media-text/media-container.js.map +1 -1
- package/build-module/media-text/media-container.native.js +1 -1
- package/build-module/media-text/media-container.native.js.map +1 -1
- package/build-module/media-text/save.js +2 -2
- package/build-module/media-text/save.js.map +1 -1
- package/build-module/navigation/edit/index.js +24 -30
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-delete-control.js +15 -23
- package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-selector.js +24 -23
- package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
- package/build-module/navigation/edit/placeholder/index.js +4 -4
- package/build-module/navigation/edit/placeholder/index.js.map +1 -1
- package/build-module/navigation/use-navigation-menu.js +15 -12
- package/build-module/navigation/use-navigation-menu.js.map +1 -1
- package/build-module/navigation-link/edit.js +13 -11
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-link/link-ui.js.map +1 -1
- package/build-module/navigation-submenu/edit.js +4 -0
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/paragraph/edit.native.js.map +1 -1
- package/build-module/pattern/edit.js +11 -0
- package/build-module/pattern/edit.js.map +1 -1
- package/build-module/post-author/edit.js +1 -0
- package/build-module/post-author/edit.js.map +1 -1
- package/build-module/post-excerpt/edit.js +1 -0
- package/build-module/post-excerpt/edit.js.map +1 -1
- package/build-module/post-featured-image/dimension-controls.js.map +1 -1
- package/build-module/post-featured-image/edit.js +13 -13
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/post-featured-image/index.js +6 -0
- package/build-module/post-featured-image/index.js.map +1 -1
- package/build-module/post-navigation-link/edit.js +1 -0
- package/build-module/post-navigation-link/edit.js.map +1 -1
- package/build-module/post-terms/edit.js +2 -0
- package/build-module/post-terms/edit.js.map +1 -1
- package/build-module/post-title/edit.js +2 -2
- package/build-module/post-title/edit.js.map +1 -1
- package/build-module/query/edit/pattern-selection-modal.js.map +1 -1
- package/build-module/query/utils.js +7 -5
- package/build-module/query/utils.js.map +1 -1
- package/build-module/query-pagination-next/edit.js.map +1 -1
- package/build-module/query-pagination-previous/edit.js.map +1 -1
- package/build-module/quote/deprecated.js +112 -13
- package/build-module/quote/deprecated.js.map +1 -1
- package/build-module/quote/edit.js +7 -7
- package/build-module/quote/edit.js.map +1 -1
- package/build-module/quote/index.js +1 -1
- package/build-module/quote/index.js.map +1 -1
- package/build-module/quote/save.js +2 -2
- package/build-module/quote/save.js.map +1 -1
- package/build-module/read-more/edit.js +1 -0
- package/build-module/read-more/edit.js.map +1 -1
- package/build-module/search/edit.js +3 -1
- package/build-module/search/edit.js.map +1 -1
- package/build-module/search/edit.native.js +2 -2
- package/build-module/search/edit.native.js.map +1 -1
- package/build-module/site-logo/edit.js +7 -2
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/site-title/{edit/index.js → edit.js} +1 -1
- package/build-module/site-title/edit.js.map +1 -0
- package/build-module/social-link/edit.js +1 -1
- package/build-module/social-link/edit.js.map +1 -1
- package/build-module/social-link/icons/medium.js +1 -1
- package/build-module/social-link/icons/medium.js.map +1 -1
- package/build-module/social-link/icons/reddit.js +1 -1
- package/build-module/social-link/icons/reddit.js.map +1 -1
- package/build-module/social-links/edit.native.js.map +1 -1
- package/build-module/spacer/edit.js.map +1 -1
- package/build-module/table/deprecated.js +286 -176
- package/build-module/table/deprecated.js.map +1 -1
- package/build-module/table/index.js +1 -1
- package/build-module/table-of-contents/edit.js.map +1 -1
- package/build-module/template-part/edit/index.js +57 -5
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/template-part/edit/selection-modal.js +2 -8
- package/build-module/template-part/edit/selection-modal.js.map +1 -1
- package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js +24 -0
- package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
- package/build-module/utils/caption.js +13 -3
- package/build-module/utils/caption.js.map +1 -1
- package/build-module/utils/get-transformed-metadata.js +51 -0
- package/build-module/utils/get-transformed-metadata.js.map +1 -0
- package/build-module/utils/hooks.js +54 -3
- package/build-module/utils/hooks.js.map +1 -1
- package/build-module/video/edit-common-settings.js.map +1 -1
- package/build-module/video/edit.js +10 -19
- package/build-module/video/edit.js.map +1 -1
- package/build-module/video/edit.native.js +3 -8
- package/build-module/video/edit.native.js.map +1 -1
- package/build-style/common-rtl.css +1 -0
- package/build-style/common.css +1 -0
- package/build-style/cover/style-rtl.css +2 -1
- package/build-style/cover/style.css +2 -1
- package/build-style/editor-rtl.css +11 -2
- package/build-style/editor.css +11 -2
- package/build-style/file/editor-rtl.css +3 -0
- package/build-style/file/editor.css +3 -0
- package/build-style/group/editor-rtl.css +1 -1
- package/build-style/group/editor.css +1 -1
- package/build-style/media-text/editor-rtl.css +7 -1
- package/build-style/media-text/editor.css +7 -1
- package/build-style/search/style-rtl.css +2 -0
- package/build-style/search/style.css +2 -0
- package/build-style/social-links/style-rtl.css +2 -2
- package/build-style/social-links/style.css +2 -2
- package/build-style/style-rtl.css +6 -3
- package/build-style/style.css +6 -3
- package/package.json +34 -34
- package/src/archives/index.php +4 -0
- package/src/audio/edit.js +9 -19
- package/src/audio/edit.native.js +3 -3
- package/src/avatar/edit.js +1 -1
- package/src/avatar/index.php +6 -0
- package/src/block/deprecated.js +76 -11
- package/src/block/edit.js +100 -32
- package/src/block/index.php +27 -12
- package/src/block/test/edit.native.js +67 -0
- package/src/button/edit.js +4 -3
- package/src/buttons/edit.native.js +1 -1
- package/src/buttons/transforms.js +14 -4
- package/src/calendar/index.php +17 -0
- package/src/categories/index.php +6 -0
- package/src/code/save.js +7 -1
- package/src/code/transforms.js +20 -5
- package/src/columns/edit.js +3 -2
- package/src/comment-author-avatar/edit.js +1 -1
- package/src/comment-author-name/index.php +4 -0
- package/src/comment-content/index.php +4 -0
- package/src/comment-date/index.php +4 -0
- package/src/comment-edit-link/index.php +4 -0
- package/src/comment-reply-link/index.php +4 -0
- package/src/comment-template/index.php +4 -0
- package/src/comments/index.php +12 -0
- package/src/comments-pagination/index.php +4 -0
- package/src/comments-pagination-next/index.php +4 -0
- package/src/comments-pagination-numbers/index.php +4 -0
- package/src/comments-pagination-previous/index.php +4 -0
- package/src/comments-title/index.php +4 -0
- package/src/cover/edit/block-controls.js +16 -2
- package/src/cover/edit/index.js +6 -3
- package/src/cover/edit/inspector-controls.js +1 -1
- package/src/cover/edit/resizable-cover-popover.js +1 -6
- package/src/cover/edit.native.js +1 -1
- package/src/cover/index.php +4 -0
- package/src/cover/style.scss +3 -2
- package/src/details/edit.js +1 -0
- package/src/file/deprecated.js +3 -3
- package/src/file/edit.js +10 -15
- package/src/file/edit.native.js +4 -4
- package/src/file/editor.scss +3 -0
- package/src/file/index.php +4 -0
- package/src/file/save.js +1 -1
- package/src/footnotes/index.php +1 -1
- package/src/form-input/edit.js +1 -1
- package/src/gallery/edit.js +3 -3
- package/src/gallery/gallery.native.js +1 -1
- package/src/gallery/index.php +6 -0
- package/src/gallery/test/index.native.js +1 -1
- package/src/gallery/v1/edit.js +2 -2
- package/src/gallery/v1/gallery.native.js +1 -1
- package/src/group/editor.scss +1 -1
- package/src/heading/index.js +4 -3
- package/src/heading/index.php +4 -0
- package/src/heading/transforms.js +27 -8
- package/src/home-link/index.php +10 -0
- package/src/image/edit.js +13 -5
- package/src/image/edit.native.js +1 -1
- package/src/image/editor.scss +1 -0
- package/src/image/image.js +34 -22
- package/src/image/index.php +12 -1
- package/src/latest-comments/index.php +4 -0
- package/src/latest-posts/edit.native.js +1 -1
- package/src/latest-posts/index.php +8 -0
- package/src/list/ordered-list-settings.js +1 -1
- package/src/list-item/edit.js +1 -2
- package/src/list-item/edit.native.js +1 -1
- package/src/list-item/hooks/index.js +0 -1
- package/src/list-item/hooks/use-indent-list-item.js +2 -0
- package/src/list-item/hooks/use-outdent-list-item.js +2 -0
- package/src/list-item/hooks/use-space.js +16 -9
- package/src/list-item/index.js +3 -0
- package/src/loginout/index.php +4 -0
- package/src/media-text/block.json +5 -0
- package/src/media-text/edit.js +70 -19
- package/src/media-text/editor.scss +7 -1
- package/src/media-text/index.php +70 -0
- package/src/media-text/media-container.js +49 -9
- package/src/media-text/media-container.native.js +5 -3
- package/src/media-text/save.js +2 -2
- package/src/media-text/test/edit.native.js +58 -0
- package/src/missing/test/edit-integration.native.js +2 -1
- package/src/navigation/edit/index.js +68 -72
- package/src/navigation/edit/navigation-menu-delete-control.js +22 -49
- package/src/navigation/edit/navigation-menu-selector.js +39 -21
- package/src/navigation/edit/placeholder/index.js +4 -4
- package/src/navigation/edit/test/navigation-menu-selector.js +77 -55
- package/src/navigation/index.php +118 -34
- package/src/navigation/test/use-navigation-menu.js +21 -21
- package/src/navigation/use-navigation-menu.js +23 -9
- package/src/navigation-link/edit.js +12 -13
- package/src/navigation-link/index.php +14 -0
- package/src/navigation-link/link-ui.js +2 -2
- package/src/navigation-submenu/edit.js +4 -0
- package/src/navigation-submenu/index.php +8 -0
- package/src/page-list/index.php +12 -0
- package/src/page-list-item/index.php +2 -0
- package/src/paragraph/edit.native.js +1 -1
- package/src/paragraph/test/edit.native.js +36 -0
- package/src/pattern/edit.js +14 -0
- package/src/pattern/index.php +2 -0
- package/src/post-author/edit.js +1 -0
- package/src/post-author/index.php +4 -0
- package/src/post-author-biography/index.php +4 -0
- package/src/post-author-name/index.php +4 -0
- package/src/post-comments-form/index.php +6 -0
- package/src/post-content/index.php +4 -0
- package/src/post-date/index.php +4 -0
- package/src/post-excerpt/edit.js +2 -1
- package/src/post-excerpt/index.php +4 -0
- package/src/post-featured-image/block.json +6 -0
- package/src/post-featured-image/dimension-controls.js +4 -4
- package/src/post-featured-image/edit.js +14 -12
- package/src/post-featured-image/index.php +15 -0
- package/src/post-navigation-link/edit.js +2 -1
- package/src/post-navigation-link/index.php +4 -0
- package/src/post-template/index.php +6 -0
- package/src/post-terms/edit.js +2 -0
- package/src/post-terms/index.php +6 -0
- package/src/post-title/edit.js +49 -43
- package/src/post-title/index.php +2 -0
- package/src/query/edit/pattern-selection-modal.js +1 -1
- package/src/query/index.php +2 -0
- package/src/query/utils.js +6 -4
- package/src/query-no-results/index.php +4 -0
- package/src/query-pagination/index.php +4 -0
- package/src/query-pagination-next/edit.js +1 -1
- package/src/query-pagination-next/index.php +4 -0
- package/src/query-pagination-numbers/index.php +4 -0
- package/src/query-pagination-previous/edit.js +1 -1
- package/src/query-pagination-previous/index.php +4 -0
- package/src/query-title/index.php +4 -0
- package/src/quote/block.json +1 -1
- package/src/quote/deprecated.js +110 -15
- package/src/quote/edit.js +16 -10
- package/src/quote/save.js +2 -2
- package/src/quote/test/__snapshots__/transforms.native.js.snap +2 -2
- package/src/read-more/edit.js +2 -1
- package/src/read-more/index.php +4 -0
- package/src/rss/index.php +4 -0
- package/src/search/edit.js +3 -1
- package/src/search/edit.native.js +6 -6
- package/src/search/index.php +20 -2
- package/src/search/style.scss +2 -0
- package/src/shortcode/index.php +4 -0
- package/src/site-logo/edit.js +11 -6
- package/src/site-logo/index.php +20 -0
- package/src/site-tagline/index.php +4 -0
- package/src/site-title/index.php +4 -0
- package/src/social-link/edit.js +2 -2
- package/src/social-link/icons/medium.js +1 -1
- package/src/social-link/icons/reddit.js +1 -1
- package/src/social-link/index.php +22 -9
- package/src/social-link/socials-with-bg.scss +1 -1
- package/src/social-link/socials-without-bg.scss +1 -1
- package/src/social-links/edit.native.js +1 -1
- package/src/spacer/edit.js +1 -1
- package/src/table/block.json +1 -1
- package/src/table/deprecated.js +308 -175
- package/src/table-of-contents/edit.js +1 -1
- package/src/tag-cloud/index.php +4 -0
- package/src/template-part/edit/index.js +91 -4
- package/src/template-part/edit/selection-modal.js +4 -8
- package/src/template-part/edit/utils/map-template-part-to-block-pattern.js +23 -0
- package/src/template-part/index.php +10 -0
- package/src/term-description/index.php +4 -0
- package/src/utils/caption.js +10 -1
- package/src/utils/get-transformed-metadata.js +65 -0
- package/src/utils/hooks.js +53 -3
- package/src/video/edit-common-settings.js +1 -1
- package/src/video/edit.js +10 -18
- package/src/video/edit.native.js +7 -8
- package/src/video/test/edit.native.js +0 -14
- package/tsconfig.json +1 -0
- package/build/list-item/hooks/use-copy.js +0 -39
- package/build/list-item/hooks/use-copy.js.map +0 -1
- package/build/site-title/edit/index.js.map +0 -1
- package/build-module/list-item/hooks/use-copy.js +0 -32
- package/build-module/list-item/hooks/use-copy.js.map +0 -1
- package/build-module/site-title/edit/index.js.map +0 -1
- package/src/list-item/hooks/use-copy.js +0 -38
- /package/src/site-title/{edit/index.js → edit.js} +0 -0
|
@@ -93,7 +93,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
93
93
|
useNavigationMenu.mockReturnValue( {
|
|
94
94
|
navigationMenus: [],
|
|
95
95
|
hasResolvedNavigationMenus: true,
|
|
96
|
-
|
|
96
|
+
canUserCreateNavigationMenus: true,
|
|
97
97
|
canSwitchNavigationMenu: true,
|
|
98
98
|
} );
|
|
99
99
|
|
|
@@ -115,7 +115,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
115
115
|
navigationMenus: [],
|
|
116
116
|
isResolvingNavigationMenus: true,
|
|
117
117
|
hasResolvedNavigationMenus: false,
|
|
118
|
-
|
|
118
|
+
canUserCreateNavigationMenus: false,
|
|
119
119
|
canSwitchNavigationMenu: true,
|
|
120
120
|
} );
|
|
121
121
|
|
|
@@ -152,7 +152,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
152
152
|
useNavigationMenu.mockReturnValue( {
|
|
153
153
|
navigationMenus: [],
|
|
154
154
|
hasResolvedNavigationMenus: true,
|
|
155
|
-
|
|
155
|
+
canUserCreateNavigationMenus: true,
|
|
156
156
|
canSwitchNavigationMenu: true,
|
|
157
157
|
} );
|
|
158
158
|
|
|
@@ -203,7 +203,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
203
203
|
useNavigationMenu.mockReturnValue( {
|
|
204
204
|
navigationMenus: [],
|
|
205
205
|
hasResolvedNavigationMenus: true,
|
|
206
|
-
|
|
206
|
+
canUserCreateNavigationMenus: false,
|
|
207
207
|
canSwitchNavigationMenu: true,
|
|
208
208
|
} );
|
|
209
209
|
|
|
@@ -226,7 +226,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
226
226
|
useNavigationMenu.mockReturnValue( {
|
|
227
227
|
navigationMenus: [],
|
|
228
228
|
hasResolvedNavigationMenus: true,
|
|
229
|
-
|
|
229
|
+
canUserCreateNavigationMenus: true,
|
|
230
230
|
canSwitchNavigationMenu: true,
|
|
231
231
|
} );
|
|
232
232
|
|
|
@@ -250,10 +250,11 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
250
250
|
const user = userEvent.setup();
|
|
251
251
|
const handler = jest.fn();
|
|
252
252
|
|
|
253
|
+
// at the start we have the menus and we're not waiting on network
|
|
253
254
|
useNavigationMenu.mockReturnValue( {
|
|
254
255
|
navigationMenus: [],
|
|
255
256
|
hasResolvedNavigationMenus: true,
|
|
256
|
-
|
|
257
|
+
canUserCreateNavigationMenus: true,
|
|
257
258
|
canSwitchNavigationMenu: true,
|
|
258
259
|
} );
|
|
259
260
|
|
|
@@ -271,6 +272,18 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
271
272
|
} )
|
|
272
273
|
);
|
|
273
274
|
|
|
275
|
+
// creating a menu is a network activity
|
|
276
|
+
// so we have to wait on it
|
|
277
|
+
useNavigationMenu.mockReturnValue( {
|
|
278
|
+
navigationMenus: [],
|
|
279
|
+
hasResolvedNavigationMenus: false,
|
|
280
|
+
isResolvingNavigationMenus: true,
|
|
281
|
+
canUserCreateNavigationMenus: true,
|
|
282
|
+
canSwitchNavigationMenu: true,
|
|
283
|
+
} );
|
|
284
|
+
|
|
285
|
+
rerender( <NavigationMenuSelector onCreateNew={ handler } /> );
|
|
286
|
+
|
|
274
287
|
// Re-open the dropdown (it's closed when the "Create menu" button is clicked).
|
|
275
288
|
await user.click( toggleButton );
|
|
276
289
|
|
|
@@ -284,11 +297,21 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
284
297
|
} )
|
|
285
298
|
).toBeDisabled();
|
|
286
299
|
|
|
300
|
+
// once the menu is created
|
|
301
|
+
// no more network activity to wait on
|
|
302
|
+
useNavigationMenu.mockReturnValue( {
|
|
303
|
+
navigationMenus: [],
|
|
304
|
+
hasResolvedNavigationMenus: true,
|
|
305
|
+
isResolvingNavigationMenus: false,
|
|
306
|
+
canUserCreateNavigationMenus: true,
|
|
307
|
+
canSwitchNavigationMenu: true,
|
|
308
|
+
} );
|
|
309
|
+
|
|
287
310
|
// Simulate the menu being created and component being re-rendered.
|
|
288
311
|
rerender(
|
|
289
312
|
<NavigationMenuSelector
|
|
290
313
|
onCreateNew={ handler }
|
|
291
|
-
createNavigationMenuIsSuccess
|
|
314
|
+
createNavigationMenuIsSuccess
|
|
292
315
|
/>
|
|
293
316
|
);
|
|
294
317
|
|
|
@@ -308,7 +331,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
308
331
|
useNavigationMenu.mockReturnValue( {
|
|
309
332
|
navigationMenus: navigationMenusFixture,
|
|
310
333
|
hasResolvedNavigationMenus: true,
|
|
311
|
-
|
|
334
|
+
canUserCreateNavigationMenus: true,
|
|
312
335
|
canSwitchNavigationMenu: false,
|
|
313
336
|
} );
|
|
314
337
|
|
|
@@ -329,7 +352,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
329
352
|
useNavigationMenu.mockReturnValue( {
|
|
330
353
|
navigationMenus: navigationMenusFixture,
|
|
331
354
|
hasResolvedNavigationMenus: true,
|
|
332
|
-
|
|
355
|
+
canUserCreateNavigationMenus: false,
|
|
333
356
|
canSwitchNavigationMenu: true,
|
|
334
357
|
} );
|
|
335
358
|
|
|
@@ -368,7 +391,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
368
391
|
useNavigationMenu.mockReturnValue( {
|
|
369
392
|
navigationMenus: menusWithNoTitle,
|
|
370
393
|
hasResolvedNavigationMenus: true,
|
|
371
|
-
|
|
394
|
+
canUserCreateNavigationMenus: true,
|
|
372
395
|
canSwitchNavigationMenu: true,
|
|
373
396
|
} );
|
|
374
397
|
|
|
@@ -402,7 +425,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
402
425
|
useNavigationMenu.mockReturnValue( {
|
|
403
426
|
navigationMenus: navigationMenusFixture,
|
|
404
427
|
hasResolvedNavigationMenus: true,
|
|
405
|
-
|
|
428
|
+
canUserCreateNavigationMenus: true,
|
|
406
429
|
canSwitchNavigationMenu: true,
|
|
407
430
|
} );
|
|
408
431
|
|
|
@@ -422,7 +445,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
422
445
|
expect( menuItem ).toBeChecked();
|
|
423
446
|
} );
|
|
424
447
|
|
|
425
|
-
it( 'should call the handler when the navigation menu is selected
|
|
448
|
+
it( 'should call the handler when the navigation menu is selected', async () => {
|
|
426
449
|
const user = userEvent.setup();
|
|
427
450
|
|
|
428
451
|
const handler = jest.fn();
|
|
@@ -430,11 +453,11 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
430
453
|
useNavigationMenu.mockReturnValue( {
|
|
431
454
|
navigationMenus: navigationMenusFixture,
|
|
432
455
|
hasResolvedNavigationMenus: true,
|
|
433
|
-
|
|
456
|
+
canUserCreateNavigationMenus: true,
|
|
434
457
|
canSwitchNavigationMenu: true,
|
|
435
458
|
} );
|
|
436
459
|
|
|
437
|
-
|
|
460
|
+
render(
|
|
438
461
|
<NavigationMenuSelector
|
|
439
462
|
onSelectNavigationMenu={ handler }
|
|
440
463
|
/>
|
|
@@ -455,42 +478,6 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
455
478
|
|
|
456
479
|
// Check the dropdown has been closed.
|
|
457
480
|
expect( screen.queryByRole( 'menu' ) ).not.toBeInTheDocument();
|
|
458
|
-
|
|
459
|
-
// Re-open the dropdown
|
|
460
|
-
await user.click( screen.getByRole( 'button' ) );
|
|
461
|
-
|
|
462
|
-
// Check the dropdown is again open and is in the "loading" state.
|
|
463
|
-
expect(
|
|
464
|
-
screen.getByRole( 'menu', {
|
|
465
|
-
name: /Loading/,
|
|
466
|
-
} )
|
|
467
|
-
).toBeInTheDocument();
|
|
468
|
-
|
|
469
|
-
// // Check all menu items are present but disabled.
|
|
470
|
-
screen.getAllByRole( 'menuitem' ).forEach( ( item ) => {
|
|
471
|
-
// // Check all menu items are present but disabled.
|
|
472
|
-
expect( item ).toBeDisabled();
|
|
473
|
-
} );
|
|
474
|
-
|
|
475
|
-
// // Simulate the menu being created and component being re-rendered.
|
|
476
|
-
rerender(
|
|
477
|
-
<NavigationMenuSelector
|
|
478
|
-
createNavigationMenuIsSuccess={ true } // classic menu import creates a Navigation menu.
|
|
479
|
-
/>
|
|
480
|
-
);
|
|
481
|
-
|
|
482
|
-
// Todo: fix bug where aria label is not updated.
|
|
483
|
-
// expect(
|
|
484
|
-
// screen.getByRole( 'menu', {
|
|
485
|
-
// name: `You are currently editing ${ navigationMenusFixture[ 0 ].title.rendered }`,
|
|
486
|
-
// } )
|
|
487
|
-
// ).toBeInTheDocument();
|
|
488
|
-
|
|
489
|
-
// Check all menu items are re-enabled.
|
|
490
|
-
screen.getAllByRole( 'menuitem' ).forEach( ( item ) => {
|
|
491
|
-
// // Check all menu items are present but disabled.
|
|
492
|
-
expect( item ).toBeEnabled();
|
|
493
|
-
} );
|
|
494
481
|
} );
|
|
495
482
|
} );
|
|
496
483
|
|
|
@@ -517,7 +504,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
517
504
|
const user = userEvent.setup();
|
|
518
505
|
|
|
519
506
|
useNavigationMenu.mockReturnValue( {
|
|
520
|
-
|
|
507
|
+
canUserCreateNavigationMenus: false,
|
|
521
508
|
} );
|
|
522
509
|
|
|
523
510
|
useNavigationEntities.mockReturnValue( {
|
|
@@ -539,7 +526,7 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
539
526
|
const user = userEvent.setup();
|
|
540
527
|
|
|
541
528
|
useNavigationMenu.mockReturnValue( {
|
|
542
|
-
|
|
529
|
+
canUserCreateNavigationMenus: true,
|
|
543
530
|
} );
|
|
544
531
|
|
|
545
532
|
useNavigationEntities.mockReturnValue( {
|
|
@@ -568,10 +555,15 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
568
555
|
|
|
569
556
|
it( 'should call the handler when the classic menu item is selected and disable all options during the import/creation process', async () => {
|
|
570
557
|
const user = userEvent.setup();
|
|
571
|
-
const handler = jest.fn();
|
|
558
|
+
const handler = jest.fn( async () => {} );
|
|
572
559
|
|
|
560
|
+
// initially we have the menus, and we're not waiting on network
|
|
573
561
|
useNavigationMenu.mockReturnValue( {
|
|
574
|
-
|
|
562
|
+
navigationMenus: [],
|
|
563
|
+
isResolvingNavigationMenus: false,
|
|
564
|
+
hasResolvedNavigationMenus: true,
|
|
565
|
+
canSwitchNavigationMenu: true,
|
|
566
|
+
canUserCreateNavigationMenus: true,
|
|
575
567
|
} );
|
|
576
568
|
|
|
577
569
|
useNavigationEntities.mockReturnValue( {
|
|
@@ -597,6 +589,23 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
597
589
|
// Check the dropdown has been closed.
|
|
598
590
|
expect( screen.queryByRole( 'menu' ) ).not.toBeInTheDocument();
|
|
599
591
|
|
|
592
|
+
// since we're importing we are doing network activity
|
|
593
|
+
// so we have to wait on it
|
|
594
|
+
useNavigationMenu.mockReturnValue( {
|
|
595
|
+
navigationMenus: [],
|
|
596
|
+
isResolvingNavigationMenus: true,
|
|
597
|
+
hasResolvedNavigationMenus: false,
|
|
598
|
+
canUserCreateNavigationMenus: true,
|
|
599
|
+
} );
|
|
600
|
+
|
|
601
|
+
useNavigationEntities.mockReturnValue( {
|
|
602
|
+
menus: classicMenusFixture,
|
|
603
|
+
} );
|
|
604
|
+
|
|
605
|
+
rerender(
|
|
606
|
+
<NavigationMenuSelector onSelectClassicMenu={ handler } />
|
|
607
|
+
);
|
|
608
|
+
|
|
600
609
|
// // Re-open the dropdown (it's closed when the "Create menu" button is clicked).
|
|
601
610
|
await user.click( screen.getByRole( 'button' ) );
|
|
602
611
|
|
|
@@ -613,10 +622,23 @@ describe( 'NavigationMenuSelector', () => {
|
|
|
613
622
|
expect( item ).toBeDisabled();
|
|
614
623
|
} );
|
|
615
624
|
|
|
625
|
+
// once the menu is imported
|
|
626
|
+
// no more network activity to wait on
|
|
627
|
+
useNavigationMenu.mockReturnValue( {
|
|
628
|
+
navigationMenus: [],
|
|
629
|
+
isResolvingNavigationMenus: false,
|
|
630
|
+
hasResolvedNavigationMenus: true,
|
|
631
|
+
canUserCreateNavigationMenus: true,
|
|
632
|
+
} );
|
|
633
|
+
|
|
634
|
+
useNavigationEntities.mockReturnValue( {
|
|
635
|
+
menus: classicMenusFixture,
|
|
636
|
+
} );
|
|
637
|
+
|
|
616
638
|
// Simulate the menu being created and component being re-rendered.
|
|
617
639
|
rerender(
|
|
618
640
|
<NavigationMenuSelector
|
|
619
|
-
createNavigationMenuIsSuccess
|
|
641
|
+
createNavigationMenuIsSuccess // classic menu import creates a Navigation menu.
|
|
620
642
|
/>
|
|
621
643
|
);
|
|
622
644
|
|
package/src/navigation/index.php
CHANGED
|
@@ -135,9 +135,9 @@ class WP_Navigation_Block_Renderer {
|
|
|
135
135
|
if ( static::does_block_need_a_list_item_wrapper( $inner_block ) ) {
|
|
136
136
|
return '<li class="wp-block-navigation-item">' . $inner_block_content . '</li>';
|
|
137
137
|
}
|
|
138
|
-
|
|
139
|
-
return $inner_block_content;
|
|
140
138
|
}
|
|
139
|
+
|
|
140
|
+
return $inner_block_content;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
/**
|
|
@@ -543,8 +543,7 @@ class WP_Navigation_Block_Renderer {
|
|
|
543
543
|
/**
|
|
544
544
|
* Gets the nav element directives.
|
|
545
545
|
*
|
|
546
|
-
* @param bool
|
|
547
|
-
* @param array $attributes The block attributes.
|
|
546
|
+
* @param bool $is_interactive Whether the block is interactive.
|
|
548
547
|
* @return string the directives for the navigation element.
|
|
549
548
|
*/
|
|
550
549
|
private static function get_nav_element_directives( $is_interactive ) {
|
|
@@ -552,16 +551,20 @@ class WP_Navigation_Block_Renderer {
|
|
|
552
551
|
return '';
|
|
553
552
|
}
|
|
554
553
|
// When adding to this array be mindful of security concerns.
|
|
555
|
-
$nav_element_context =
|
|
554
|
+
$nav_element_context = wp_interactivity_data_wp_context(
|
|
556
555
|
array(
|
|
557
|
-
'overlayOpenedBy' => array(
|
|
556
|
+
'overlayOpenedBy' => array(
|
|
557
|
+
'click' => false,
|
|
558
|
+
'hover' => false,
|
|
559
|
+
'focus' => false,
|
|
560
|
+
),
|
|
558
561
|
'type' => 'overlay',
|
|
559
562
|
'roleAttribute' => '',
|
|
560
563
|
'ariaLabel' => __( 'Menu' ),
|
|
561
564
|
)
|
|
562
565
|
);
|
|
563
566
|
$nav_element_directives = '
|
|
564
|
-
data-wp-interactive="core/navigation"'
|
|
567
|
+
data-wp-interactive="core/navigation" '
|
|
565
568
|
. $nav_element_context;
|
|
566
569
|
|
|
567
570
|
return $nav_element_directives;
|
|
@@ -673,6 +676,8 @@ if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) {
|
|
|
673
676
|
/**
|
|
674
677
|
* Returns the menu items for a WordPress menu location.
|
|
675
678
|
*
|
|
679
|
+
* @since 5.9.0
|
|
680
|
+
*
|
|
676
681
|
* @param string $location The menu location.
|
|
677
682
|
* @return array Menu items for the location.
|
|
678
683
|
*/
|
|
@@ -709,6 +714,8 @@ if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) {
|
|
|
709
714
|
* Sorts a standard array of menu items into a nested structure keyed by the
|
|
710
715
|
* id of the parent menu.
|
|
711
716
|
*
|
|
717
|
+
* @since 5.9.0
|
|
718
|
+
*
|
|
712
719
|
* @param array $menu_items Menu items to sort.
|
|
713
720
|
* @return array An array keyed by the id of the parent menu where each element
|
|
714
721
|
* is an array of menu items that belong to that parent.
|
|
@@ -731,6 +738,8 @@ if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) {
|
|
|
731
738
|
/**
|
|
732
739
|
* Gets the inner blocks for the navigation block from the unstable location attribute.
|
|
733
740
|
*
|
|
741
|
+
* @since 6.5.0
|
|
742
|
+
*
|
|
734
743
|
* @param array $attributes The block attributes.
|
|
735
744
|
* @return WP_Block_List Returns the inner blocks for the navigation block.
|
|
736
745
|
*/
|
|
@@ -750,6 +759,8 @@ if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) {
|
|
|
750
759
|
* Add Interactivity API directives to the navigation-submenu and page-list
|
|
751
760
|
* blocks markup using the Tag Processor.
|
|
752
761
|
*
|
|
762
|
+
* @since 6.3.0
|
|
763
|
+
*
|
|
753
764
|
* @param WP_HTML_Tag_Processor $tags Markup of the navigation block.
|
|
754
765
|
* @param array $block_attributes Block attributes.
|
|
755
766
|
*
|
|
@@ -764,7 +775,7 @@ function block_core_navigation_add_directives_to_submenu( $tags, $block_attribut
|
|
|
764
775
|
) ) {
|
|
765
776
|
// Add directives to the parent `<li>`.
|
|
766
777
|
$tags->set_attribute( 'data-wp-interactive', 'core/navigation' );
|
|
767
|
-
$tags->set_attribute( 'data-wp-context', '{ "submenuOpenedBy": {}, "type": "submenu" }' );
|
|
778
|
+
$tags->set_attribute( 'data-wp-context', '{ "submenuOpenedBy": { "click": false, "hover": false, "focus": false }, "type": "submenu" }' );
|
|
768
779
|
$tags->set_attribute( 'data-wp-watch', 'callbacks.initMenu' );
|
|
769
780
|
$tags->set_attribute( 'data-wp-on--focusout', 'actions.handleMenuFocusout' );
|
|
770
781
|
$tags->set_attribute( 'data-wp-on--keydown', 'actions.handleMenuKeydown' );
|
|
@@ -811,6 +822,8 @@ function block_core_navigation_add_directives_to_submenu( $tags, $block_attribut
|
|
|
811
822
|
* Build an array with CSS classes and inline styles defining the colors
|
|
812
823
|
* which will be applied to the navigation markup in the front-end.
|
|
813
824
|
*
|
|
825
|
+
* @since 5.9.0
|
|
826
|
+
*
|
|
814
827
|
* @param array $attributes Navigation block attributes.
|
|
815
828
|
*
|
|
816
829
|
* @return array Colors CSS classes and inline styles.
|
|
@@ -902,6 +915,8 @@ function block_core_navigation_build_css_colors( $attributes ) {
|
|
|
902
915
|
* Build an array with CSS classes and inline styles defining the font sizes
|
|
903
916
|
* which will be applied to the navigation markup in the front-end.
|
|
904
917
|
*
|
|
918
|
+
* @since 5.9.0
|
|
919
|
+
*
|
|
905
920
|
* @param array $attributes Navigation block attributes.
|
|
906
921
|
*
|
|
907
922
|
* @return array Font size CSS classes and inline styles.
|
|
@@ -930,6 +945,8 @@ function block_core_navigation_build_css_font_sizes( $attributes ) {
|
|
|
930
945
|
/**
|
|
931
946
|
* Returns the top-level submenu SVG chevron icon.
|
|
932
947
|
*
|
|
948
|
+
* @since 5.9.0
|
|
949
|
+
*
|
|
933
950
|
* @return string
|
|
934
951
|
*/
|
|
935
952
|
function block_core_navigation_render_submenu_icon() {
|
|
@@ -942,6 +959,8 @@ function block_core_navigation_render_submenu_icon() {
|
|
|
942
959
|
* it encounters whitespace. This is not a bug but rather how the parser
|
|
943
960
|
* is designed.
|
|
944
961
|
*
|
|
962
|
+
* @since 5.9.0
|
|
963
|
+
*
|
|
945
964
|
* @param array $parsed_blocks the parsed blocks to be normalized.
|
|
946
965
|
* @return array the normalized parsed blocks.
|
|
947
966
|
*/
|
|
@@ -960,6 +979,8 @@ function block_core_navigation_filter_out_empty_blocks( $parsed_blocks ) {
|
|
|
960
979
|
/**
|
|
961
980
|
* Returns true if the navigation block contains a nested navigation block.
|
|
962
981
|
*
|
|
982
|
+
* @since 6.2.0
|
|
983
|
+
*
|
|
963
984
|
* @param WP_Block_List $inner_blocks Inner block instance to be normalized.
|
|
964
985
|
* @return bool true if the navigation block contains a nested navigation block.
|
|
965
986
|
*/
|
|
@@ -983,6 +1004,8 @@ function block_core_navigation_block_contains_core_navigation( $inner_blocks ) {
|
|
|
983
1004
|
* This aims to mirror how the fallback mechanic for wp_nav_menu works.
|
|
984
1005
|
* See https://developer.wordpress.org/reference/functions/wp_nav_menu/#more-information.
|
|
985
1006
|
*
|
|
1007
|
+
* @since 5.9.0
|
|
1008
|
+
*
|
|
986
1009
|
* @return array the array of blocks to be used as a fallback.
|
|
987
1010
|
*/
|
|
988
1011
|
function block_core_navigation_get_fallback_blocks() {
|
|
@@ -1038,6 +1061,8 @@ function block_core_navigation_get_fallback_blocks() {
|
|
|
1038
1061
|
/**
|
|
1039
1062
|
* Iterate through all inner blocks recursively and get navigation link block's post IDs.
|
|
1040
1063
|
*
|
|
1064
|
+
* @since 6.0.0
|
|
1065
|
+
*
|
|
1041
1066
|
* @param WP_Block_List $inner_blocks Block list class instance.
|
|
1042
1067
|
*
|
|
1043
1068
|
* @return array Array of post IDs.
|
|
@@ -1050,6 +1075,8 @@ function block_core_navigation_get_post_ids( $inner_blocks ) {
|
|
|
1050
1075
|
/**
|
|
1051
1076
|
* Get post IDs from a navigation link block instance.
|
|
1052
1077
|
*
|
|
1078
|
+
* @since 6.0.0
|
|
1079
|
+
*
|
|
1053
1080
|
* @param WP_Block $block Instance of a block.
|
|
1054
1081
|
*
|
|
1055
1082
|
* @return array Array of post IDs.
|
|
@@ -1073,6 +1100,8 @@ function block_core_navigation_from_block_get_post_ids( $block ) {
|
|
|
1073
1100
|
/**
|
|
1074
1101
|
* Renders the `core/navigation` block on server.
|
|
1075
1102
|
*
|
|
1103
|
+
* @since 5.9.0
|
|
1104
|
+
*
|
|
1076
1105
|
* @param array $attributes The block attributes.
|
|
1077
1106
|
* @param string $content The saved content.
|
|
1078
1107
|
* @param WP_Block $block The parsed block.
|
|
@@ -1086,6 +1115,8 @@ function render_block_core_navigation( $attributes, $content, $block ) {
|
|
|
1086
1115
|
/**
|
|
1087
1116
|
* Register the navigation block.
|
|
1088
1117
|
*
|
|
1118
|
+
* @since 5.9.0
|
|
1119
|
+
*
|
|
1089
1120
|
* @uses render_block_core_navigation()
|
|
1090
1121
|
* @throws WP_Error An WP_Error exception parsing the block definition.
|
|
1091
1122
|
*/
|
|
@@ -1103,6 +1134,8 @@ add_action( 'init', 'register_block_core_navigation' );
|
|
|
1103
1134
|
/**
|
|
1104
1135
|
* Filter that changes the parsed attribute values of navigation blocks contain typographic presets to contain the values directly.
|
|
1105
1136
|
*
|
|
1137
|
+
* @since 5.9.0
|
|
1138
|
+
*
|
|
1106
1139
|
* @param array $parsed_block The block being rendered.
|
|
1107
1140
|
*
|
|
1108
1141
|
* @return array The block being rendered without typographic presets.
|
|
@@ -1137,6 +1170,8 @@ add_filter( 'render_block_data', 'block_core_navigation_typographic_presets_back
|
|
|
1137
1170
|
/**
|
|
1138
1171
|
* Turns menu item data into a nested array of parsed blocks
|
|
1139
1172
|
*
|
|
1173
|
+
* @since 5.9.0
|
|
1174
|
+
*
|
|
1140
1175
|
* @deprecated 6.3.0 Use WP_Navigation_Fallback::parse_blocks_from_menu_items() instead.
|
|
1141
1176
|
*
|
|
1142
1177
|
* @param array $menu_items An array of menu items that represent
|
|
@@ -1194,6 +1229,8 @@ function block_core_navigation_parse_blocks_from_menu_items( $menu_items, $menu_
|
|
|
1194
1229
|
/**
|
|
1195
1230
|
* Get the classic navigation menu to use as a fallback.
|
|
1196
1231
|
*
|
|
1232
|
+
* @since 6.2.0
|
|
1233
|
+
*
|
|
1197
1234
|
* @deprecated 6.3.0 Use WP_Navigation_Fallback::get_classic_menu_fallback() instead.
|
|
1198
1235
|
*
|
|
1199
1236
|
* @return object WP_Term The classic navigation.
|
|
@@ -1238,6 +1275,8 @@ function block_core_navigation_get_classic_menu_fallback() {
|
|
|
1238
1275
|
/**
|
|
1239
1276
|
* Converts a classic navigation to blocks.
|
|
1240
1277
|
*
|
|
1278
|
+
* @since 6.2.0
|
|
1279
|
+
*
|
|
1241
1280
|
* @deprecated 6.3.0 Use WP_Navigation_Fallback::get_classic_menu_fallback_blocks() instead.
|
|
1242
1281
|
*
|
|
1243
1282
|
* @param object $classic_nav_menu WP_Term The classic navigation object to convert.
|
|
@@ -1280,6 +1319,8 @@ function block_core_navigation_get_classic_menu_fallback_blocks( $classic_nav_me
|
|
|
1280
1319
|
/**
|
|
1281
1320
|
* If there's a classic menu then use it as a fallback.
|
|
1282
1321
|
*
|
|
1322
|
+
* @since 6.2.0
|
|
1323
|
+
*
|
|
1283
1324
|
* @deprecated 6.3.0 Use WP_Navigation_Fallback::create_classic_menu_fallback() instead.
|
|
1284
1325
|
*
|
|
1285
1326
|
* @return array the normalized parsed blocks.
|
|
@@ -1325,6 +1366,8 @@ function block_core_navigation_maybe_use_classic_menu_fallback() {
|
|
|
1325
1366
|
/**
|
|
1326
1367
|
* Finds the most recently published `wp_navigation` Post.
|
|
1327
1368
|
*
|
|
1369
|
+
* @since 6.1.0
|
|
1370
|
+
*
|
|
1328
1371
|
* @deprecated 6.3.0 Use WP_Navigation_Fallback::get_most_recently_published_navigation() instead.
|
|
1329
1372
|
*
|
|
1330
1373
|
* @return WP_Post|null the first non-empty Navigation or null.
|
|
@@ -1356,6 +1399,8 @@ function block_core_navigation_get_most_recently_published_navigation() {
|
|
|
1356
1399
|
/**
|
|
1357
1400
|
* Accepts the serialized markup of a block and its inner blocks, and returns serialized markup of the inner blocks.
|
|
1358
1401
|
*
|
|
1402
|
+
* @since 6.5.0
|
|
1403
|
+
*
|
|
1359
1404
|
* @param string $serialized_block The serialized markup of a block and its inner blocks.
|
|
1360
1405
|
* @return string
|
|
1361
1406
|
*/
|
|
@@ -1369,6 +1414,8 @@ function block_core_navigation_remove_serialized_parent_block( $serialized_block
|
|
|
1369
1414
|
* Mock a parsed block for the Navigation block given its inner blocks and the `wp_navigation` post object.
|
|
1370
1415
|
* The `wp_navigation` post's `_wp_ignored_hooked_blocks` meta is queried to add the `metadata.ignoredHookedBlocks` attribute.
|
|
1371
1416
|
*
|
|
1417
|
+
* @since 6.5.0
|
|
1418
|
+
*
|
|
1372
1419
|
* @param array $inner_blocks Parsed inner blocks of a Navigation block.
|
|
1373
1420
|
* @param WP_Post $post `wp_navigation` post object corresponding to the block.
|
|
1374
1421
|
*
|
|
@@ -1408,6 +1455,8 @@ function block_core_navigation_mock_parsed_block( $inner_blocks, $post ) {
|
|
|
1408
1455
|
* children, the `wp_navigation` post's `_wp_ignored_hooked_blocks` meta is checked to see if any
|
|
1409
1456
|
* of those hooked blocks should be exempted from insertion.
|
|
1410
1457
|
*
|
|
1458
|
+
* @since 6.5.0
|
|
1459
|
+
*
|
|
1411
1460
|
* @param array $inner_blocks Parsed inner blocks of a Navigation block.
|
|
1412
1461
|
* @param WP_Post $post `wp_navigation` post object corresponding to the block.
|
|
1413
1462
|
* @return string Serialized inner blocks in mock Navigation block wrapper, with hooked blocks inserted, if any.
|
|
@@ -1433,6 +1482,8 @@ function block_core_navigation_insert_hooked_blocks( $inner_blocks, $post ) {
|
|
|
1433
1482
|
* this function inserts ignoredHookedBlocks meta into it, and returns the serialized inner blocks in a
|
|
1434
1483
|
* mock Navigation block wrapper.
|
|
1435
1484
|
*
|
|
1485
|
+
* @since 6.5.0
|
|
1486
|
+
*
|
|
1436
1487
|
* @param array $inner_blocks Parsed inner blocks of a Navigation block.
|
|
1437
1488
|
* @param WP_Post $post `wp_navigation` post object corresponding to the block.
|
|
1438
1489
|
* @return string Serialized inner blocks in mock Navigation block wrapper, with hooked blocks inserted, if any.
|
|
@@ -1454,13 +1505,34 @@ function block_core_navigation_set_ignored_hooked_blocks_metadata( $inner_blocks
|
|
|
1454
1505
|
/**
|
|
1455
1506
|
* Updates the post meta with the list of ignored hooked blocks when the navigation is created or updated via the REST API.
|
|
1456
1507
|
*
|
|
1457
|
-
* @
|
|
1508
|
+
* @access private
|
|
1509
|
+
* @since 6.5.0
|
|
1510
|
+
*
|
|
1511
|
+
* @param stdClass $post Post object.
|
|
1512
|
+
* @return stdClass The updated post object.
|
|
1458
1513
|
*/
|
|
1459
1514
|
function block_core_navigation_update_ignore_hooked_blocks_meta( $post ) {
|
|
1460
|
-
|
|
1461
|
-
|
|
1515
|
+
/*
|
|
1516
|
+
* In this scenario the user has likely tried to create a navigation via the REST API.
|
|
1517
|
+
* In which case we won't have a post ID to work with and store meta against.
|
|
1518
|
+
*/
|
|
1519
|
+
if ( empty( $post->ID ) ) {
|
|
1520
|
+
return $post;
|
|
1521
|
+
}
|
|
1522
|
+
|
|
1523
|
+
/*
|
|
1524
|
+
* We run the Block Hooks mechanism to inject the `metadata.ignoredHookedBlocks` attribute into
|
|
1525
|
+
* all anchor blocks. For the root level, we create a mock Navigation and extract them from there.
|
|
1526
|
+
*/
|
|
1462
1527
|
$blocks = parse_blocks( $post->post_content );
|
|
1463
|
-
|
|
1528
|
+
|
|
1529
|
+
/*
|
|
1530
|
+
* Block Hooks logic requires a `WP_Post` object (rather than the `stdClass` with the updates that
|
|
1531
|
+
* we're getting from the `rest_pre_insert_wp_navigation` filter) as its second argument (to be
|
|
1532
|
+
* used as context for hooked blocks insertion).
|
|
1533
|
+
* We thus have to look it up from the DB,based on `$post->ID`.
|
|
1534
|
+
*/
|
|
1535
|
+
$markup = block_core_navigation_set_ignored_hooked_blocks_metadata( $blocks, get_post( $post->ID ) );
|
|
1464
1536
|
|
|
1465
1537
|
$root_nav_block = parse_blocks( $markup )[0];
|
|
1466
1538
|
$ignored_hooked_blocks = isset( $root_nav_block['attrs']['metadata']['ignoredHookedBlocks'] )
|
|
@@ -1476,33 +1548,41 @@ function block_core_navigation_update_ignore_hooked_blocks_meta( $post ) {
|
|
|
1476
1548
|
update_post_meta( $post->ID, '_wp_ignored_hooked_blocks', json_encode( $ignored_hooked_blocks ) );
|
|
1477
1549
|
}
|
|
1478
1550
|
|
|
1479
|
-
$
|
|
1480
|
-
|
|
1481
|
-
wp_update_post(
|
|
1482
|
-
array(
|
|
1483
|
-
'ID' => $post->ID,
|
|
1484
|
-
'post_content' => $serialized_inner_blocks,
|
|
1485
|
-
)
|
|
1486
|
-
);
|
|
1551
|
+
$post->post_content = block_core_navigation_remove_serialized_parent_block( $markup );
|
|
1552
|
+
return $post;
|
|
1487
1553
|
}
|
|
1488
1554
|
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1555
|
+
/*
|
|
1556
|
+
* Before adding our filter, we verify if it's already added in Core.
|
|
1557
|
+
* However, during the build process, Gutenberg automatically prefixes our functions with "gutenberg_".
|
|
1558
|
+
* Therefore, we concatenate the Core's function name to circumvent this prefix for our check.
|
|
1559
|
+
*/
|
|
1560
|
+
$rest_insert_wp_navigation_core_callback = 'block_core_navigation_' . 'update_ignore_hooked_blocks_meta'; // phpcs:ignore Generic.Strings.UnnecessaryStringConcat.Found
|
|
1493
1561
|
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1562
|
+
/*
|
|
1563
|
+
* Injection of hooked blocks into the Navigation block relies on some functions present in WP >= 6.5
|
|
1564
|
+
* that are not present in Gutenberg's WP 6.5 compatibility layer.
|
|
1565
|
+
*/
|
|
1566
|
+
if ( function_exists( 'set_ignored_hooked_blocks_metadata' ) && ! has_filter( 'rest_pre_insert_wp_navigation', $rest_insert_wp_navigation_core_callback ) ) {
|
|
1567
|
+
add_filter( 'rest_pre_insert_wp_navigation', 'block_core_navigation_update_ignore_hooked_blocks_meta' );
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1570
|
+
/*
|
|
1571
|
+
* Previous versions of Gutenberg were attaching the block_core_navigation_update_ignore_hooked_blocks_meta
|
|
1572
|
+
* function to the `rest_insert_wp_navigation` _action_ (rather than the `rest_pre_insert_wp_navigation` _filter_).
|
|
1573
|
+
* To avoid collisions, we need to remove the filter from that action if it's present.
|
|
1574
|
+
*/
|
|
1575
|
+
if ( has_filter( 'rest_insert_wp_navigation', $rest_insert_wp_navigation_core_callback ) ) {
|
|
1576
|
+
remove_filter( 'rest_insert_wp_navigation', $rest_insert_wp_navigation_core_callback );
|
|
1498
1577
|
}
|
|
1499
1578
|
|
|
1500
1579
|
/**
|
|
1501
1580
|
* Hooks into the REST API response for the core/navigation block and adds the first and last inner blocks.
|
|
1502
1581
|
*
|
|
1582
|
+
* @since 6.5.0
|
|
1583
|
+
*
|
|
1503
1584
|
* @param WP_REST_Response $response The response object.
|
|
1504
1585
|
* @param WP_Post $post Post object.
|
|
1505
|
-
* @param WP_REST_Request $request Request object.
|
|
1506
1586
|
* @return WP_REST_Response The response object.
|
|
1507
1587
|
*/
|
|
1508
1588
|
function block_core_navigation_insert_hooked_blocks_into_rest_response( $response, $post ) {
|
|
@@ -1521,13 +1601,17 @@ function block_core_navigation_insert_hooked_blocks_into_rest_response( $respons
|
|
|
1521
1601
|
return $response;
|
|
1522
1602
|
}
|
|
1523
1603
|
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1604
|
+
/*
|
|
1605
|
+
* Before adding our filter, we verify if it's already added in Core.
|
|
1606
|
+
* However, during the build process, Gutenberg automatically prefixes our functions with "gutenberg_".
|
|
1607
|
+
* Therefore, we concatenate the Core's function name to circumvent this prefix for our check.
|
|
1608
|
+
*/
|
|
1527
1609
|
$rest_prepare_wp_navigation_core_callback = 'block_core_navigation_' . 'insert_hooked_blocks_into_rest_response';
|
|
1528
1610
|
|
|
1529
|
-
|
|
1530
|
-
|
|
1611
|
+
/*
|
|
1612
|
+
* Injection of hooked blocks into the Navigation block relies on some functions present in WP >= 6.5
|
|
1613
|
+
* that are not present in Gutenberg's WP 6.5 compatibility layer.
|
|
1614
|
+
*/
|
|
1531
1615
|
if ( function_exists( 'set_ignored_hooked_blocks_metadata' ) && ! has_filter( 'rest_prepare_wp_navigation', $rest_prepare_wp_navigation_core_callback ) ) {
|
|
1532
1616
|
add_filter( 'rest_prepare_wp_navigation', 'block_core_navigation_insert_hooked_blocks_into_rest_response', 10, 3 );
|
|
1533
1617
|
}
|