@wordpress/block-library 7.1.1 → 7.3.1
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 +13 -0
- package/README.md +1 -1
- package/build/archives/edit.js +21 -1
- package/build/archives/edit.js.map +1 -1
- package/build/archives/index.js +5 -1
- package/build/archives/index.js.map +1 -1
- package/build/audio/edit.native.js +0 -5
- package/build/audio/edit.native.js.map +1 -1
- package/build/avatar/edit.js +211 -0
- package/build/avatar/edit.js.map +1 -0
- package/build/avatar/hooks.js +111 -0
- package/build/avatar/hooks.js.map +1 -0
- package/build/avatar/index.js +83 -0
- package/build/avatar/index.js.map +1 -0
- package/build/avatar/user-control.js +63 -0
- package/build/avatar/user-control.js.map +1 -0
- package/build/block/edit.js +2 -1
- package/build/block/edit.js.map +1 -1
- package/build/column/index.js +3 -1
- package/build/column/index.js.map +1 -1
- package/build/comment-author-avatar/index.js +4 -3
- package/build/comment-author-avatar/index.js.map +1 -1
- package/build/comment-author-name/index.js +7 -3
- package/build/comment-author-name/index.js.map +1 -1
- package/build/comment-content/index.js +1 -1
- package/build/comment-date/edit.js +10 -25
- package/build/comment-date/edit.js.map +1 -1
- package/build/comment-date/index.js +7 -3
- package/build/comment-date/index.js.map +1 -1
- package/build/comment-edit-link/index.js +5 -1
- package/build/comment-edit-link/index.js.map +1 -1
- package/build/comment-reply-link/index.js +5 -1
- package/build/comment-reply-link/index.js.map +1 -1
- package/build/comment-template/edit.js +86 -66
- package/build/comment-template/edit.js.map +1 -1
- package/build/comment-template/hooks.js +7 -23
- package/build/comment-template/hooks.js.map +1 -1
- package/build/comment-template/index.js +2 -2
- package/build/comments-pagination-next/index.js +2 -2
- package/build/comments-pagination-numbers/index.js +1 -1
- package/build/comments-pagination-previous/index.js +1 -1
- package/build/comments-query-loop/edit/comments-inspector-controls.js +2 -69
- package/build/comments-query-loop/edit/comments-inspector-controls.js.map +1 -1
- package/build/comments-query-loop/edit.js +22 -1
- package/build/comments-query-loop/edit.js.map +1 -1
- package/build/comments-query-loop/index.js +1 -23
- package/build/comments-query-loop/index.js.map +1 -1
- package/build/cover/edit.js +58 -39
- package/build/cover/edit.js.map +1 -1
- package/build/cover/index.js +5 -0
- package/build/cover/index.js.map +1 -1
- package/build/cover/save.js +3 -2
- package/build/cover/save.js.map +1 -1
- package/build/embed/variations.js +2 -2
- package/build/embed/variations.js.map +1 -1
- package/build/gallery/edit.js +18 -5
- package/build/gallery/edit.js.map +1 -1
- package/build/gallery/gallery.js +1 -1
- package/build/gallery/gallery.js.map +1 -1
- package/build/gallery/gap-styles.js +35 -0
- package/build/gallery/gap-styles.js.map +1 -0
- package/build/gallery/index.js +18 -1
- package/build/gallery/index.js.map +1 -1
- package/build/group/edit.js +3 -1
- package/build/group/edit.js.map +1 -1
- package/build/group/index.js +1 -1
- package/build/group/variations.js +30 -9
- package/build/group/variations.js.map +1 -1
- package/build/heading/edit.js +1 -1
- package/build/heading/edit.js.map +1 -1
- package/build/html/edit.js +3 -2
- package/build/html/edit.js.map +1 -1
- package/build/image/edit.native.js +8 -10
- package/build/image/edit.native.js.map +1 -1
- package/build/image/image.js +3 -1
- package/build/image/image.js.map +1 -1
- package/build/index.js +10 -4
- package/build/index.js.map +1 -1
- package/build/list/deprecated.js +2 -2
- package/build/list/deprecated.js.map +1 -1
- package/build/list/index.js +5 -7
- package/build/list/index.js.map +1 -1
- package/build/list/v2/deprecated.js +117 -0
- package/build/list/v2/deprecated.js.map +1 -0
- package/build/list/v2/edit.js +188 -0
- package/build/list/v2/edit.js.map +1 -0
- package/build/list/v2/index.js +36 -0
- package/build/list/v2/index.js.map +1 -0
- package/build/list/v2/migrate.js +85 -0
- package/build/list/v2/migrate.js.map +1 -0
- package/build/list/v2/save.js +34 -0
- package/build/list/v2/save.js.map +1 -0
- package/build/list/v2/transforms.js +121 -0
- package/build/list/v2/transforms.js.map +1 -0
- package/build/list-item/edit.js +96 -0
- package/build/list-item/edit.js.map +1 -0
- package/build/list-item/hooks/index.js +32 -0
- package/build/list-item/hooks/index.js.map +1 -0
- package/build/list-item/hooks/use-enter.js +93 -0
- package/build/list-item/hooks/use-enter.js.map +1 -0
- package/build/list-item/hooks/use-indent-list-item.js +74 -0
- package/build/list-item/hooks/use-indent-list-item.js.map +1 -0
- package/build/list-item/hooks/use-outdent-list-item.js +77 -0
- package/build/list-item/hooks/use-outdent-list-item.js.map +1 -0
- package/build/list-item/index.js +67 -0
- package/build/list-item/index.js.map +1 -0
- package/build/list-item/save.js +23 -0
- package/build/list-item/save.js.map +1 -0
- package/build/list-item/utils.js +16 -0
- package/build/list-item/utils.js.map +1 -0
- package/build/media-text/edit.js +3 -1
- package/build/media-text/edit.js.map +1 -1
- package/build/media-text/media-container.native.js +1 -16
- package/build/media-text/media-container.native.js.map +1 -1
- package/build/navigation/edit/index.js +36 -17
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/navigation-menu-delete-control.js +1 -1
- package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build/navigation/edit/unsaved-inner-blocks.js +34 -7
- package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build/navigation/index.js +9 -1
- package/build/navigation/index.js.map +1 -1
- package/build/navigation/use-navigation-entities.js +26 -54
- package/build/navigation/use-navigation-entities.js.map +1 -1
- package/build/navigation/use-navigation-menu.js +1 -0
- package/build/navigation/use-navigation-menu.js.map +1 -1
- package/build/navigation-link/edit.js +95 -37
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-link/index.js +1 -1
- package/build/navigation-submenu/edit.js +5 -9
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/navigation-submenu/index.js +1 -1
- package/build/post-comment/edit.js +2 -2
- package/build/post-comment/edit.js.map +1 -1
- package/build/post-comments/index.js +4 -3
- package/build/post-comments/index.js.map +1 -1
- package/build/post-comments-form/edit.js +3 -2
- package/build/post-comments-form/edit.js.map +1 -1
- package/build/post-date/edit.js +31 -37
- package/build/post-date/edit.js.map +1 -1
- package/build/post-featured-image/edit.js +2 -1
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-featured-image/index.js +1 -1
- package/build/post-template/edit.js +7 -2
- package/build/post-template/edit.js.map +1 -1
- package/build/post-terms/edit.js +3 -1
- package/build/post-terms/edit.js.map +1 -1
- package/build/post-terms/variations.js +1 -1
- package/build/post-terms/variations.js.map +1 -1
- package/build/pullquote/edit.js +5 -3
- package/build/pullquote/edit.js.map +1 -1
- package/build/query/edit/index.js +84 -22
- package/build/query/edit/index.js.map +1 -1
- package/build/query/edit/query-placeholder.js +7 -14
- package/build/query/edit/query-placeholder.js.map +1 -1
- package/build/query/edit/query-toolbar.js +6 -1
- package/build/query/edit/query-toolbar.js.map +1 -1
- package/build/query/variations.js +4 -4
- package/build/query/variations.js.map +1 -1
- package/build/query-no-results/edit.js +28 -0
- package/build/query-no-results/edit.js.map +1 -0
- package/build/query-no-results/index.js +54 -0
- package/build/query-no-results/index.js.map +1 -0
- package/build/query-no-results/save.js +18 -0
- package/build/query-no-results/save.js.map +1 -0
- package/build/query-pagination/edit.js +1 -1
- package/build/query-pagination/edit.js.map +1 -1
- package/build/query-pagination-numbers/index.js +19 -1
- package/build/query-pagination-numbers/index.js.map +1 -1
- package/build/quote/index.js +15 -8
- package/build/quote/index.js.map +1 -1
- package/build/quote/v2/deprecated.js +133 -0
- package/build/quote/v2/deprecated.js.map +1 -0
- package/build/quote/v2/edit.js +131 -0
- package/build/quote/v2/edit.js.map +1 -0
- package/build/quote/v2/index.js +49 -0
- package/build/quote/v2/index.js.map +1 -0
- package/build/quote/v2/save.js +43 -0
- package/build/quote/v2/save.js.map +1 -0
- package/build/quote/v2/transforms.js +156 -0
- package/build/quote/v2/transforms.js.map +1 -0
- package/build/read-more/index.js +1 -1
- package/build/rss/edit.js +6 -1
- package/build/rss/edit.js.map +1 -1
- package/build/search/edit.js +2 -3
- package/build/search/edit.js.map +1 -1
- package/build/separator/deprecated.js +83 -0
- package/build/separator/deprecated.js.map +1 -0
- package/build/separator/edit.js +31 -23
- package/build/separator/edit.js.map +1 -1
- package/build/separator/index.js +17 -7
- package/build/separator/index.js.map +1 -1
- package/build/separator/save.js +18 -13
- package/build/separator/save.js.map +1 -1
- package/build/separator/use-deprecated-opacity.js +39 -0
- package/build/separator/use-deprecated-opacity.js.map +1 -0
- package/build/site-logo/edit.js +3 -2
- package/build/site-logo/edit.js.map +1 -1
- package/build/site-logo/index.js +1 -1
- package/build/social-links/edit.js +14 -3
- package/build/social-links/edit.js.map +1 -1
- package/build/social-links/index.js +2 -1
- package/build/social-links/index.js.map +1 -1
- package/build/spacer/controls.js +6 -16
- package/build/spacer/controls.js.map +1 -1
- package/build/spacer/controls.native.js +3 -1
- package/build/spacer/controls.native.js.map +1 -1
- package/build/spacer/edit.js +4 -5
- package/build/spacer/edit.js.map +1 -1
- package/build/table/deprecated.js +1 -1
- package/build/table/deprecated.js.map +1 -1
- package/build/tag-cloud/edit.js +58 -2
- package/build/tag-cloud/edit.js.map +1 -1
- package/build/tag-cloud/index.js +8 -0
- package/build/tag-cloud/index.js.map +1 -1
- package/build/template-part/edit/utils/hooks.js +5 -2
- package/build/template-part/edit/utils/hooks.js.map +1 -1
- package/build-module/archives/edit.js +22 -2
- package/build-module/archives/edit.js.map +1 -1
- package/build-module/archives/index.js +5 -1
- package/build-module/archives/index.js.map +1 -1
- package/build-module/audio/edit.native.js +0 -5
- package/build-module/audio/edit.native.js.map +1 -1
- package/build-module/avatar/edit.js +195 -0
- package/build-module/avatar/edit.js.map +1 -0
- package/build-module/avatar/hooks.js +99 -0
- package/build-module/avatar/hooks.js.map +1 -0
- package/build-module/avatar/index.js +70 -0
- package/build-module/avatar/index.js.map +1 -0
- package/build-module/avatar/user-control.js +52 -0
- package/build-module/avatar/user-control.js.map +1 -0
- package/build-module/block/edit.js +4 -3
- package/build-module/block/edit.js.map +1 -1
- package/build-module/column/index.js +3 -1
- package/build-module/column/index.js.map +1 -1
- package/build-module/comment-author-avatar/index.js +4 -3
- package/build-module/comment-author-avatar/index.js.map +1 -1
- package/build-module/comment-author-name/index.js +7 -3
- package/build-module/comment-author-name/index.js.map +1 -1
- package/build-module/comment-content/index.js +1 -1
- package/build-module/comment-date/edit.js +13 -30
- package/build-module/comment-date/edit.js.map +1 -1
- package/build-module/comment-date/index.js +7 -3
- package/build-module/comment-date/index.js.map +1 -1
- package/build-module/comment-edit-link/index.js +5 -1
- package/build-module/comment-edit-link/index.js.map +1 -1
- package/build-module/comment-reply-link/index.js +5 -1
- package/build-module/comment-reply-link/index.js.map +1 -1
- package/build-module/comment-template/edit.js +86 -66
- package/build-module/comment-template/edit.js.map +1 -1
- package/build-module/comment-template/hooks.js +7 -23
- package/build-module/comment-template/hooks.js.map +1 -1
- package/build-module/comment-template/index.js +2 -2
- package/build-module/comments-pagination-next/index.js +2 -2
- package/build-module/comments-pagination-numbers/index.js +1 -1
- package/build-module/comments-pagination-previous/index.js +1 -1
- package/build-module/comments-query-loop/edit/comments-inspector-controls.js +4 -70
- package/build-module/comments-query-loop/edit/comments-inspector-controls.js.map +1 -1
- package/build-module/comments-query-loop/edit.js +22 -1
- package/build-module/comments-query-loop/edit.js.map +1 -1
- package/build-module/comments-query-loop/index.js +1 -23
- package/build-module/comments-query-loop/index.js.map +1 -1
- package/build-module/cover/edit.js +58 -41
- package/build-module/cover/edit.js.map +1 -1
- package/build-module/cover/index.js +5 -0
- package/build-module/cover/index.js.map +1 -1
- package/build-module/cover/save.js +3 -2
- package/build-module/cover/save.js.map +1 -1
- package/build-module/embed/variations.js +2 -2
- package/build-module/embed/variations.js.map +1 -1
- package/build-module/gallery/edit.js +17 -5
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/gallery.js +1 -1
- package/build-module/gallery/gallery.js.map +1 -1
- package/build-module/gallery/gap-styles.js +28 -0
- package/build-module/gallery/gap-styles.js.map +1 -0
- package/build-module/gallery/index.js +18 -1
- package/build-module/gallery/index.js.map +1 -1
- package/build-module/group/edit.js +3 -1
- package/build-module/group/edit.js.map +1 -1
- package/build-module/group/index.js +1 -1
- package/build-module/group/variations.js +29 -9
- package/build-module/group/variations.js.map +1 -1
- package/build-module/heading/edit.js +1 -1
- package/build-module/heading/edit.js.map +1 -1
- package/build-module/html/edit.js +4 -3
- package/build-module/html/edit.js.map +1 -1
- package/build-module/image/edit.native.js +8 -10
- package/build-module/image/edit.native.js.map +1 -1
- package/build-module/image/image.js +3 -1
- package/build-module/image/image.js.map +1 -1
- package/build-module/index.js +7 -4
- package/build-module/index.js.map +1 -1
- package/build-module/list/deprecated.js +2 -2
- package/build-module/list/deprecated.js.map +1 -1
- package/build-module/list/index.js +5 -1
- package/build-module/list/index.js.map +1 -1
- package/build-module/list/v2/deprecated.js +104 -0
- package/build-module/list/v2/deprecated.js.map +1 -0
- package/build-module/list/v2/edit.js +168 -0
- package/build-module/list/v2/edit.js.map +1 -0
- package/build-module/list/v2/index.js +21 -0
- package/build-module/list/v2/index.js.map +1 -0
- package/build-module/list/v2/migrate.js +77 -0
- package/build-module/list/v2/migrate.js.map +1 -0
- package/build-module/list/v2/save.js +23 -0
- package/build-module/list/v2/save.js.map +1 -0
- package/build-module/list/v2/transforms.js +111 -0
- package/build-module/list/v2/transforms.js.map +1 -0
- package/build-module/list-item/edit.js +83 -0
- package/build-module/list-item/edit.js.map +1 -0
- package/build-module/list-item/hooks/index.js +4 -0
- package/build-module/list-item/hooks/index.js.map +1 -0
- package/build-module/list-item/hooks/use-enter.js +77 -0
- package/build-module/list-item/hooks/use-enter.js.map +1 -0
- package/build-module/list-item/hooks/use-indent-list-item.js +62 -0
- package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -0
- package/build-module/list-item/hooks/use-outdent-list-item.js +66 -0
- package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -0
- package/build-module/list-item/index.js +53 -0
- package/build-module/list-item/index.js.map +1 -0
- package/build-module/list-item/save.js +15 -0
- package/build-module/list-item/save.js.map +1 -0
- package/build-module/list-item/utils.js +8 -0
- package/build-module/list-item/utils.js.map +1 -0
- package/build-module/media-text/edit.js +3 -1
- package/build-module/media-text/edit.js.map +1 -1
- package/build-module/media-text/media-container.native.js +1 -14
- package/build-module/media-text/media-container.native.js.map +1 -1
- package/build-module/navigation/edit/index.js +37 -17
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-delete-control.js +1 -1
- package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js +35 -8
- package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build-module/navigation/index.js +9 -1
- package/build-module/navigation/index.js.map +1 -1
- package/build-module/navigation/use-navigation-entities.js +27 -54
- package/build-module/navigation/use-navigation-entities.js.map +1 -1
- package/build-module/navigation/use-navigation-menu.js +1 -0
- package/build-module/navigation/use-navigation-menu.js.map +1 -1
- package/build-module/navigation-link/edit.js +95 -36
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-link/index.js +1 -1
- package/build-module/navigation-submenu/edit.js +6 -10
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/navigation-submenu/index.js +1 -1
- package/build-module/post-comment/edit.js +2 -2
- package/build-module/post-comment/edit.js.map +1 -1
- package/build-module/post-comments/index.js +4 -3
- package/build-module/post-comments/index.js.map +1 -1
- package/build-module/post-comments-form/edit.js +3 -2
- package/build-module/post-comments-form/edit.js.map +1 -1
- package/build-module/post-date/edit.js +32 -43
- package/build-module/post-date/edit.js.map +1 -1
- package/build-module/post-featured-image/edit.js +2 -1
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/post-featured-image/index.js +1 -1
- package/build-module/post-template/edit.js +7 -2
- package/build-module/post-template/edit.js.map +1 -1
- package/build-module/post-terms/edit.js +4 -2
- package/build-module/post-terms/edit.js.map +1 -1
- package/build-module/post-terms/variations.js +3 -3
- package/build-module/post-terms/variations.js.map +1 -1
- package/build-module/pullquote/edit.js +6 -3
- package/build-module/pullquote/edit.js.map +1 -1
- package/build-module/query/edit/index.js +87 -26
- package/build-module/query/edit/index.js.map +1 -1
- package/build-module/query/edit/query-placeholder.js +8 -15
- package/build-module/query/edit/query-placeholder.js.map +1 -1
- package/build-module/query/edit/query-toolbar.js +6 -1
- package/build-module/query/edit/query-toolbar.js.map +1 -1
- package/build-module/query/variations.js +4 -4
- package/build-module/query/variations.js.map +1 -1
- package/build-module/query-no-results/edit.js +18 -0
- package/build-module/query-no-results/edit.js.map +1 -0
- package/build-module/query-no-results/index.js +40 -0
- package/build-module/query-no-results/index.js.map +1 -0
- package/build-module/query-no-results/save.js +10 -0
- package/build-module/query-no-results/save.js.map +1 -0
- package/build-module/query-pagination/edit.js +1 -1
- package/build-module/query-pagination/edit.js.map +1 -1
- package/build-module/query-pagination-numbers/index.js +19 -1
- package/build-module/query-pagination-numbers/index.js.map +1 -1
- package/build-module/quote/index.js +13 -1
- package/build-module/quote/index.js.map +1 -1
- package/build-module/quote/v2/deprecated.js +116 -0
- package/build-module/quote/v2/deprecated.js.map +1 -0
- package/build-module/quote/v2/edit.js +115 -0
- package/build-module/quote/v2/edit.js.map +1 -0
- package/build-module/quote/v2/index.js +33 -0
- package/build-module/quote/v2/index.js.map +1 -0
- package/build-module/quote/v2/save.js +30 -0
- package/build-module/quote/v2/save.js.map +1 -0
- package/build-module/quote/v2/transforms.js +147 -0
- package/build-module/quote/v2/transforms.js.map +1 -0
- package/build-module/read-more/index.js +1 -1
- package/build-module/rss/edit.js +5 -1
- package/build-module/rss/edit.js.map +1 -1
- package/build-module/search/edit.js +2 -3
- package/build-module/search/edit.js.map +1 -1
- package/build-module/separator/deprecated.js +70 -0
- package/build-module/separator/deprecated.js.map +1 -0
- package/build-module/separator/edit.js +31 -22
- package/build-module/separator/edit.js.map +1 -1
- package/build-module/separator/index.js +16 -7
- package/build-module/separator/index.js.map +1 -1
- package/build-module/separator/save.js +19 -14
- package/build-module/separator/save.js.map +1 -1
- package/build-module/separator/use-deprecated-opacity.js +30 -0
- package/build-module/separator/use-deprecated-opacity.js.map +1 -0
- package/build-module/site-logo/edit.js +3 -2
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/site-logo/index.js +1 -1
- package/build-module/social-links/edit.js +15 -4
- package/build-module/social-links/edit.js.map +1 -1
- package/build-module/social-links/index.js +2 -1
- package/build-module/social-links/index.js.map +1 -1
- package/build-module/spacer/controls.js +8 -19
- package/build-module/spacer/controls.js.map +1 -1
- package/build-module/spacer/controls.native.js +2 -1
- package/build-module/spacer/controls.native.js.map +1 -1
- package/build-module/spacer/edit.js +3 -3
- package/build-module/spacer/edit.js.map +1 -1
- package/build-module/table/deprecated.js +1 -1
- package/build-module/table/deprecated.js.map +1 -1
- package/build-module/tag-cloud/edit.js +60 -4
- package/build-module/tag-cloud/edit.js.map +1 -1
- package/build-module/tag-cloud/index.js +8 -0
- package/build-module/tag-cloud/index.js.map +1 -1
- package/build-module/template-part/edit/utils/hooks.js +5 -2
- package/build-module/template-part/edit/utils/hooks.js.map +1 -1
- package/build-style/avatar/editor-rtl.css +83 -0
- package/build-style/avatar/editor.css +83 -0
- package/build-style/avatar/style-rtl.css +79 -0
- package/build-style/avatar/style.css +79 -0
- package/build-style/editor-rtl.css +92 -11
- package/build-style/editor.css +92 -11
- package/build-style/gallery/editor-rtl.css +0 -1
- package/build-style/gallery/editor.css +0 -1
- package/build-style/gallery/style-rtl.css +102 -169
- package/build-style/gallery/style.css +102 -169
- package/build-style/group/editor-rtl.css +26 -0
- package/build-style/group/editor.css +26 -0
- package/build-style/heading/style-rtl.css +0 -8
- package/build-style/heading/style.css +0 -8
- package/build-style/image/style-rtl.css +2 -0
- package/build-style/image/style.css +2 -0
- package/build-style/list/style-rtl.css +1 -1
- package/build-style/list/style.css +1 -1
- package/build-style/navigation/style-rtl.css +11 -9
- package/build-style/navigation/style.css +11 -9
- package/build-style/navigation-link/editor-rtl.css +13 -0
- package/build-style/navigation-link/editor.css +13 -0
- package/build-style/navigation-link/style-rtl.css +3 -0
- package/build-style/navigation-link/style.css +3 -0
- package/build-style/paragraph/style-rtl.css +0 -4
- package/build-style/paragraph/style.css +0 -4
- package/build-style/pullquote/style-rtl.css +0 -4
- package/build-style/pullquote/style.css +0 -4
- package/build-style/query/editor-rtl.css +39 -0
- package/build-style/query/editor.css +39 -0
- package/build-style/quote/style-rtl.css +1 -0
- package/build-style/quote/style.css +1 -0
- package/build-style/reset-rtl.css +1 -1
- package/build-style/reset.css +1 -1
- package/build-style/separator/editor-rtl.css +3 -0
- package/build-style/separator/editor.css +3 -0
- package/build-style/separator/theme-rtl.css +7 -1
- package/build-style/separator/theme.css +7 -1
- package/build-style/site-logo/editor-rtl.css +3 -1
- package/build-style/site-logo/editor.css +3 -1
- package/build-style/style-rtl.css +124 -195
- package/build-style/style.css +124 -195
- package/build-style/template-part/editor-rtl.css +0 -9
- package/build-style/template-part/editor.css +0 -9
- package/build-style/theme-rtl.css +7 -1
- package/build-style/theme.css +7 -1
- package/package.json +28 -28
- package/src/archives/block.json +5 -1
- package/src/archives/edit.js +20 -2
- package/src/archives/index.php +4 -4
- package/src/audio/edit.native.js +0 -5
- package/src/avatar/block.json +53 -0
- package/src/avatar/edit.js +230 -0
- package/src/avatar/editor.scss +9 -0
- package/src/avatar/hooks.js +96 -0
- package/src/avatar/index.js +18 -0
- package/src/avatar/index.php +146 -0
- package/src/avatar/style.scss +5 -0
- package/src/avatar/user-control.js +56 -0
- package/src/block/edit.js +21 -11
- package/src/column/block.json +3 -1
- package/src/comment-author-avatar/block.json +4 -3
- package/src/comment-author-name/block.json +7 -3
- package/src/comment-author-name/index.php +3 -0
- package/src/comment-content/block.json +1 -1
- package/src/comment-date/block.json +7 -3
- package/src/comment-date/edit.js +20 -30
- package/src/comment-date/index.php +6 -1
- package/src/comment-edit-link/block.json +5 -1
- package/src/comment-edit-link/index.php +3 -0
- package/src/comment-reply-link/block.json +5 -1
- package/src/comment-reply-link/index.php +4 -1
- package/src/comment-template/block.json +2 -8
- package/src/comment-template/edit.js +77 -64
- package/src/comment-template/hooks.js +8 -24
- package/src/comment-template/index.php +1 -3
- package/src/comments-pagination-next/block.json +2 -9
- package/src/comments-pagination-numbers/block.json +2 -8
- package/src/comments-pagination-previous/block.json +2 -2
- package/src/comments-query-loop/block.json +1 -23
- package/src/comments-query-loop/edit/comments-inspector-controls.js +2 -83
- package/src/comments-query-loop/edit.js +54 -1
- package/src/cover/block.json +5 -0
- package/src/cover/edit.js +103 -60
- package/src/cover/index.php +85 -0
- package/src/cover/save.js +18 -14
- package/src/editor.scss +1 -0
- package/src/embed/variations.js +2 -2
- package/src/gallery/block.json +18 -1
- package/src/gallery/deprecated.scss +2 -2
- package/src/gallery/edit.js +15 -8
- package/src/gallery/editor.scss +0 -1
- package/src/gallery/gallery.js +8 -7
- package/src/gallery/gap-styles.js +26 -0
- package/src/gallery/index.php +43 -1
- package/src/gallery/style.scss +11 -44
- package/src/group/block.json +1 -1
- package/src/group/edit.js +4 -1
- package/src/group/editor.scss +31 -0
- package/src/group/variations.js +21 -4
- package/src/heading/edit.js +1 -1
- package/src/heading/style.scss +0 -3
- package/src/html/edit.js +22 -30
- package/src/image/edit.native.js +7 -11
- package/src/image/image.js +4 -1
- package/src/image/style.scss +3 -0
- package/src/index.js +19 -14
- package/src/list/deprecated.js +2 -2
- package/src/list/index.js +6 -1
- package/src/list/style.scss +1 -2
- package/src/list/test/migrate.js +159 -0
- package/src/list/v2/deprecated.js +89 -0
- package/src/list/v2/edit.js +186 -0
- package/src/list/v2/index.js +22 -0
- package/src/list/v2/migrate.js +87 -0
- package/src/list/v2/save.js +18 -0
- package/src/list/v2/transforms.js +116 -0
- package/src/list-item/block.json +26 -0
- package/src/list-item/edit.js +93 -0
- package/src/list-item/hooks/index.js +3 -0
- package/src/list-item/hooks/use-enter.js +94 -0
- package/src/list-item/hooks/use-indent-list-item.js +89 -0
- package/src/list-item/hooks/use-outdent-list-item.js +95 -0
- package/src/list-item/index.js +27 -0
- package/src/list-item/save.js +13 -0
- package/src/list-item/utils.js +14 -0
- package/src/media-text/edit.js +1 -1
- package/src/media-text/media-container.native.js +1 -14
- package/src/navigation/block.json +9 -1
- package/src/navigation/edit/index.js +50 -14
- package/src/navigation/edit/navigation-menu-delete-control.js +1 -1
- package/src/navigation/edit/unsaved-inner-blocks.js +57 -8
- package/src/navigation/index.php +28 -3
- package/src/navigation/style.scss +15 -13
- package/src/navigation/use-navigation-entities.js +37 -73
- package/src/navigation/use-navigation-menu.js +4 -0
- package/src/navigation-link/block.json +1 -0
- package/src/navigation-link/edit.js +156 -64
- package/src/navigation-link/editor.scss +11 -0
- package/src/navigation-link/index.php +8 -0
- package/src/navigation-link/style.scss +6 -0
- package/src/navigation-submenu/block.json +1 -0
- package/src/navigation-submenu/edit.js +7 -9
- package/src/paragraph/style.scss +0 -5
- package/src/post-author/index.php +0 -1
- package/src/post-comment/edit.js +2 -2
- package/src/post-comments/block.json +4 -3
- package/src/post-comments-form/edit.js +6 -3
- package/src/post-date/edit.js +63 -52
- package/src/post-date/index.php +1 -1
- package/src/post-date/test/edit.js +17 -0
- package/src/post-featured-image/block.json +1 -1
- package/src/post-featured-image/edit.js +9 -1
- package/src/post-featured-image/index.php +2 -1
- package/src/post-template/edit.js +7 -1
- package/src/post-terms/edit.js +4 -1
- package/src/post-terms/variations.js +3 -3
- package/src/pullquote/edit.js +4 -3
- package/src/pullquote/style.scss +0 -5
- package/src/query/edit/index.js +125 -26
- package/src/query/edit/query-placeholder.js +3 -13
- package/src/query/edit/query-toolbar.js +6 -0
- package/src/query/editor.scss +38 -0
- package/src/query/variations.js +4 -0
- package/src/query-no-results/block.json +20 -0
- package/src/query-no-results/edit.js +28 -0
- package/src/query-no-results/index.js +20 -0
- package/src/query-no-results/index.php +59 -0
- package/src/query-no-results/save.js +8 -0
- package/src/query-pagination/edit.js +1 -1
- package/src/query-pagination/index.php +9 -2
- package/src/query-pagination-numbers/block.json +19 -1
- package/src/quote/block.json +8 -0
- package/src/quote/index.js +6 -1
- package/src/quote/style.scss +1 -0
- package/src/quote/v2/deprecated.js +107 -0
- package/src/quote/v2/edit.js +136 -0
- package/src/quote/v2/index.js +36 -0
- package/src/quote/v2/save.js +26 -0
- package/src/quote/v2/test/migrate.js +92 -0
- package/src/quote/v2/transforms.js +155 -0
- package/src/read-more/block.json +1 -1
- package/src/reset.scss +1 -1
- package/src/rss/edit.js +3 -1
- package/src/rss/index.php +14 -1
- package/src/search/edit.js +1 -2
- package/src/separator/block.json +13 -6
- package/src/separator/deprecated.js +57 -0
- package/src/separator/deprecated.scss +6 -0
- package/src/separator/edit.js +36 -14
- package/src/separator/editor.scss +6 -0
- package/src/separator/index.js +2 -0
- package/src/separator/save.js +22 -14
- package/src/separator/test/edit.js +113 -0
- package/src/separator/theme.scss +7 -1
- package/src/separator/use-deprecated-opacity.js +41 -0
- package/src/site-logo/block.json +1 -1
- package/src/site-logo/edit.js +2 -1
- package/src/site-logo/editor.scss +3 -1
- package/src/site-logo/index.php +0 -4
- package/src/social-link/index.php +1 -2
- package/src/social-links/block.json +2 -1
- package/src/social-links/edit.js +15 -5
- package/src/spacer/controls.js +12 -18
- package/src/spacer/controls.native.js +2 -1
- package/src/spacer/edit.js +3 -6
- package/src/spacer/test/__snapshots__/index.native.js.snap +31 -0
- package/src/spacer/test/index.native.js +180 -0
- package/src/style.scss +1 -0
- package/src/table/deprecated.js +5 -1
- package/src/tag-cloud/block.json +8 -0
- package/src/tag-cloud/edit.js +82 -2
- package/src/tag-cloud/index.php +6 -0
- package/src/template-part/edit/utils/hooks.js +6 -1
- package/src/template-part/editor.scss +0 -10
- package/build/navigation/edit/use-list-view-modal.js +0 -73
- package/build/navigation/edit/use-list-view-modal.js.map +0 -1
- package/build/separator/separator-settings.js +0 -36
- package/build/separator/separator-settings.js.map +0 -1
- package/build-module/navigation/edit/use-list-view-modal.js +0 -63
- package/build-module/navigation/edit/use-list-view-modal.js.map +0 -1
- package/build-module/separator/separator-settings.js +0 -27
- package/build-module/separator/separator-settings.js.map +0 -1
- package/src/navigation/edit/use-list-view-modal.js +0 -72
- package/src/separator/separator-settings.js +0 -24
|
@@ -10,7 +10,7 @@ import { useInnerBlocksProps } from '@wordpress/block-editor';
|
|
|
10
10
|
import { Disabled, Spinner } from '@wordpress/components';
|
|
11
11
|
import { store as coreStore } from '@wordpress/core-data';
|
|
12
12
|
import { useSelect } from '@wordpress/data';
|
|
13
|
-
import { useContext, useEffect, useRef } from '@wordpress/element';
|
|
13
|
+
import { useContext, useEffect, useRef, useMemo } from '@wordpress/element';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Internal dependencies
|
|
@@ -25,6 +25,22 @@ const DRAFT_MENU_PARAMS = [
|
|
|
25
25
|
{ status: 'draft', per_page: -1 },
|
|
26
26
|
];
|
|
27
27
|
|
|
28
|
+
const DEFAULT_BLOCK = {
|
|
29
|
+
name: 'core/navigation-link',
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const ALLOWED_BLOCKS = [
|
|
33
|
+
'core/navigation-link',
|
|
34
|
+
'core/search',
|
|
35
|
+
'core/social-links',
|
|
36
|
+
'core/page-list',
|
|
37
|
+
'core/spacer',
|
|
38
|
+
'core/home-link',
|
|
39
|
+
'core/site-title',
|
|
40
|
+
'core/site-logo',
|
|
41
|
+
'core/navigation-submenu',
|
|
42
|
+
];
|
|
43
|
+
|
|
28
44
|
export default function UnsavedInnerBlocks( {
|
|
29
45
|
blockProps,
|
|
30
46
|
blocks,
|
|
@@ -33,6 +49,33 @@ export default function UnsavedInnerBlocks( {
|
|
|
33
49
|
onSave,
|
|
34
50
|
hasSelection,
|
|
35
51
|
} ) {
|
|
52
|
+
const originalBlocks = useRef();
|
|
53
|
+
|
|
54
|
+
useEffect( () => {
|
|
55
|
+
// Initially store the uncontrolled inner blocks for
|
|
56
|
+
// dirty state comparison.
|
|
57
|
+
if ( ! originalBlocks?.current ) {
|
|
58
|
+
originalBlocks.current = blocks;
|
|
59
|
+
}
|
|
60
|
+
}, [ blocks ] );
|
|
61
|
+
|
|
62
|
+
// If the current inner blocks object is different in any way
|
|
63
|
+
// from the original inner blocks from the post content then the
|
|
64
|
+
// user has made changes to the inner blocks. At this point the inner
|
|
65
|
+
// blocks can be considered "dirty".
|
|
66
|
+
const innerBlocksAreDirty = blocks !== originalBlocks.current;
|
|
67
|
+
|
|
68
|
+
const shouldDirectInsert = useMemo(
|
|
69
|
+
() =>
|
|
70
|
+
blocks.every(
|
|
71
|
+
( { name } ) =>
|
|
72
|
+
name === 'core/navigation-link' ||
|
|
73
|
+
name === 'core/navigation-submenu' ||
|
|
74
|
+
name === 'core/page-list'
|
|
75
|
+
),
|
|
76
|
+
[ blocks ]
|
|
77
|
+
);
|
|
78
|
+
|
|
36
79
|
// The block will be disabled in a block preview, use this as a way of
|
|
37
80
|
// avoiding the side-effects of this component for block previews.
|
|
38
81
|
const isDisabled = useContext( Disabled.Context );
|
|
@@ -40,6 +83,9 @@ export default function UnsavedInnerBlocks( {
|
|
|
40
83
|
|
|
41
84
|
const innerBlocksProps = useInnerBlocksProps( blockProps, {
|
|
42
85
|
renderAppender: hasSelection ? undefined : false,
|
|
86
|
+
allowedBlocks: ALLOWED_BLOCKS,
|
|
87
|
+
__experimentalDefaultBlock: DEFAULT_BLOCK,
|
|
88
|
+
__experimentalDirectInsert: shouldDirectInsert,
|
|
43
89
|
} );
|
|
44
90
|
|
|
45
91
|
const {
|
|
@@ -97,7 +143,8 @@ export default function UnsavedInnerBlocks( {
|
|
|
97
143
|
savingLock.current ||
|
|
98
144
|
! hasResolvedDraftNavigationMenus ||
|
|
99
145
|
! hasResolvedNavigationMenus ||
|
|
100
|
-
! hasSelection
|
|
146
|
+
! hasSelection ||
|
|
147
|
+
! innerBlocksAreDirty
|
|
101
148
|
) {
|
|
102
149
|
return;
|
|
103
150
|
}
|
|
@@ -118,19 +165,21 @@ export default function UnsavedInnerBlocks( {
|
|
|
118
165
|
blocks,
|
|
119
166
|
] );
|
|
120
167
|
|
|
168
|
+
const Wrapper = isSaving ? Disabled : 'div';
|
|
169
|
+
|
|
121
170
|
return (
|
|
122
|
-
<
|
|
123
|
-
<
|
|
171
|
+
<Wrapper className="wp-block-navigation__unsaved-changes">
|
|
172
|
+
<div
|
|
124
173
|
className={ classnames(
|
|
125
174
|
'wp-block-navigation__unsaved-changes-overlay',
|
|
126
175
|
{
|
|
127
|
-
'is-saving':
|
|
176
|
+
'is-saving': isSaving,
|
|
128
177
|
}
|
|
129
178
|
) }
|
|
130
179
|
>
|
|
131
180
|
<div { ...innerBlocksProps } />
|
|
132
|
-
</
|
|
133
|
-
{
|
|
134
|
-
</
|
|
181
|
+
</div>
|
|
182
|
+
{ isSaving && <Spinner /> }
|
|
183
|
+
</Wrapper>
|
|
135
184
|
);
|
|
136
185
|
}
|
package/src/navigation/index.php
CHANGED
|
@@ -361,10 +361,14 @@ function block_core_navigation_get_fallback_blocks() {
|
|
|
361
361
|
*/
|
|
362
362
|
function render_block_core_navigation( $attributes, $content, $block ) {
|
|
363
363
|
|
|
364
|
+
static $seen_menu_names = array();
|
|
365
|
+
|
|
364
366
|
// Flag used to indicate whether the rendered output is considered to be
|
|
365
367
|
// a fallback (i.e. the block has no menu associated with it).
|
|
366
368
|
$is_fallback = false;
|
|
367
369
|
|
|
370
|
+
$nav_menu_name = '';
|
|
371
|
+
|
|
368
372
|
/**
|
|
369
373
|
* Deprecated:
|
|
370
374
|
* The rgbTextColor and rgbBackgroundColor attributes
|
|
@@ -428,6 +432,14 @@ function render_block_core_navigation( $attributes, $content, $block ) {
|
|
|
428
432
|
return '';
|
|
429
433
|
}
|
|
430
434
|
|
|
435
|
+
$nav_menu_name = $navigation_post->post_title;
|
|
436
|
+
|
|
437
|
+
if ( isset( $seen_menu_names[ $nav_menu_name ] ) ) {
|
|
438
|
+
++$seen_menu_names[ $nav_menu_name ];
|
|
439
|
+
} else {
|
|
440
|
+
$seen_menu_names[ $nav_menu_name ] = 1;
|
|
441
|
+
}
|
|
442
|
+
|
|
431
443
|
$parsed_blocks = parse_blocks( $navigation_post->post_content );
|
|
432
444
|
|
|
433
445
|
// 'parse_blocks' includes a null block with '\n\n' as the content when
|
|
@@ -474,6 +486,10 @@ function render_block_core_navigation( $attributes, $content, $block ) {
|
|
|
474
486
|
$layout_class .= ' no-wrap';
|
|
475
487
|
}
|
|
476
488
|
|
|
489
|
+
// Manually add block support text decoration as CSS class.
|
|
490
|
+
$text_decoration = _wp_array_get( $attributes, array( 'style', 'typography', 'textDecoration' ), null );
|
|
491
|
+
$text_decoration_class = sprintf( 'has-text-decoration-%s', $text_decoration );
|
|
492
|
+
|
|
477
493
|
$colors = block_core_navigation_build_css_colors( $attributes );
|
|
478
494
|
$font_sizes = block_core_navigation_build_css_font_sizes( $attributes );
|
|
479
495
|
$classes = array_merge(
|
|
@@ -481,7 +497,8 @@ function render_block_core_navigation( $attributes, $content, $block ) {
|
|
|
481
497
|
$font_sizes['css_classes'],
|
|
482
498
|
$is_responsive_menu ? array( 'is-responsive' ) : array(),
|
|
483
499
|
$layout_class ? array( $layout_class ) : array(),
|
|
484
|
-
$is_fallback ? array( 'is-fallback' ) : array()
|
|
500
|
+
$is_fallback ? array( 'is-fallback' ) : array(),
|
|
501
|
+
$text_decoration ? array( $text_decoration_class ) : array()
|
|
485
502
|
);
|
|
486
503
|
|
|
487
504
|
$inner_blocks_html = '';
|
|
@@ -508,10 +525,18 @@ function render_block_core_navigation( $attributes, $content, $block ) {
|
|
|
508
525
|
|
|
509
526
|
$block_styles = isset( $attributes['styles'] ) ? $attributes['styles'] : '';
|
|
510
527
|
|
|
528
|
+
// If the menu name has been used previously then append an ID
|
|
529
|
+
// to the name to ensure uniqueness across a given post.
|
|
530
|
+
if ( isset( $seen_menu_names[ $nav_menu_name ] ) && $seen_menu_names[ $nav_menu_name ] > 1 ) {
|
|
531
|
+
$count = $seen_menu_names[ $nav_menu_name ];
|
|
532
|
+
$nav_menu_name = $nav_menu_name . ' ' . ( $count );
|
|
533
|
+
}
|
|
534
|
+
|
|
511
535
|
$wrapper_attributes = get_block_wrapper_attributes(
|
|
512
536
|
array(
|
|
513
|
-
'class'
|
|
514
|
-
'style'
|
|
537
|
+
'class' => implode( ' ', $classes ),
|
|
538
|
+
'style' => $block_styles . $colors['inline_styles'] . $font_sizes['inline_styles'],
|
|
539
|
+
'aria-label' => $nav_menu_name,
|
|
515
540
|
)
|
|
516
541
|
);
|
|
517
542
|
|
|
@@ -51,25 +51,27 @@ $navigation-icon-size: 24px;
|
|
|
51
51
|
padding: 0;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
//
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
// The following rules provide class based application of user selected text
|
|
55
|
+
// decoration via block supports.
|
|
56
|
+
&.has-text-decoration-underline .wp-block-navigation-item__content {
|
|
57
|
+
text-decoration: underline;
|
|
58
|
+
|
|
59
|
+
&:focus,
|
|
60
|
+
&:active {
|
|
61
|
+
text-decoration: underline;
|
|
60
62
|
}
|
|
63
|
+
}
|
|
61
64
|
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
&.has-text-decoration-line-through .wp-block-navigation-item__content {
|
|
66
|
+
text-decoration: line-through;
|
|
64
67
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
68
|
+
&:focus,
|
|
69
|
+
&:active {
|
|
70
|
+
text-decoration: line-through;
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
|
|
72
|
-
&:not([
|
|
74
|
+
&:where(:not([class*="has-text-decoration"])) {
|
|
73
75
|
a {
|
|
74
76
|
text-decoration: none;
|
|
75
77
|
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
store as coreStore,
|
|
7
|
-
__experimentalUseEntityRecords as useEntityRecords,
|
|
8
|
-
} from '@wordpress/core-data';
|
|
4
|
+
import { __experimentalUseEntityRecords as useEntityRecords } from '@wordpress/core-data';
|
|
9
5
|
|
|
10
6
|
/**
|
|
11
7
|
* @typedef {Object} NavigationEntitiesData
|
|
@@ -29,82 +25,50 @@ import {
|
|
|
29
25
|
* @return { NavigationEntitiesData } the entity data.
|
|
30
26
|
*/
|
|
31
27
|
export default function useNavigationEntities( menuId ) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
};
|
|
37
|
-
}
|
|
28
|
+
const {
|
|
29
|
+
records: menus,
|
|
30
|
+
isResolving: isResolvingMenus,
|
|
31
|
+
hasResolved: hasResolvedMenus,
|
|
32
|
+
} = useEntityRecords( 'root', 'menu', { per_page: -1, context: 'view' } );
|
|
38
33
|
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
const {
|
|
35
|
+
records: pages,
|
|
36
|
+
isResolving: isResolvingPages,
|
|
37
|
+
hasResolved: hasResolvedPages,
|
|
38
|
+
} = useEntityRecords( 'postType', 'page', {
|
|
39
|
+
parent: 0,
|
|
40
|
+
order: 'asc',
|
|
41
|
+
orderby: 'id',
|
|
42
|
+
per_page: -1,
|
|
43
|
+
context: 'view',
|
|
44
|
+
} );
|
|
45
|
+
|
|
46
|
+
const {
|
|
47
|
+
records: menuItems,
|
|
48
|
+
hasResolved: hasResolvedMenuItems,
|
|
49
|
+
} = useEntityRecords(
|
|
41
50
|
'root',
|
|
42
|
-
'
|
|
43
|
-
{
|
|
51
|
+
'menuItem',
|
|
52
|
+
{
|
|
53
|
+
menus: menuId,
|
|
54
|
+
per_page: -1,
|
|
55
|
+
context: 'view',
|
|
56
|
+
},
|
|
57
|
+
{ enabled: !! menuId }
|
|
44
58
|
);
|
|
45
59
|
|
|
46
60
|
return {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function useMenuItemEntities( menuId ) {
|
|
55
|
-
const { menuItems, hasResolvedMenuItems } = useSelect(
|
|
56
|
-
( select ) => {
|
|
57
|
-
const { getMenuItems, hasFinishedResolution } = select( coreStore );
|
|
58
|
-
|
|
59
|
-
const hasSelectedMenu = menuId !== undefined;
|
|
60
|
-
const menuItemsParameters = hasSelectedMenu
|
|
61
|
-
? [
|
|
62
|
-
{
|
|
63
|
-
menus: menuId,
|
|
64
|
-
per_page: -1,
|
|
65
|
-
context: 'view',
|
|
66
|
-
},
|
|
67
|
-
]
|
|
68
|
-
: undefined;
|
|
61
|
+
pages,
|
|
62
|
+
isResolvingPages,
|
|
63
|
+
hasResolvedPages,
|
|
64
|
+
hasPages: !! ( hasResolvedPages && pages?.length ),
|
|
69
65
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
hasResolvedMenuItems: hasSelectedMenu
|
|
75
|
-
? hasFinishedResolution(
|
|
76
|
-
'getMenuItems',
|
|
77
|
-
menuItemsParameters
|
|
78
|
-
)
|
|
79
|
-
: false,
|
|
80
|
-
};
|
|
81
|
-
},
|
|
82
|
-
[ menuId ]
|
|
83
|
-
);
|
|
66
|
+
menus,
|
|
67
|
+
isResolvingMenus,
|
|
68
|
+
hasResolvedMenus,
|
|
69
|
+
hasMenus: !! ( hasResolvedMenus && menus?.length ),
|
|
84
70
|
|
|
85
|
-
return {
|
|
86
71
|
menuItems,
|
|
87
72
|
hasResolvedMenuItems,
|
|
88
73
|
};
|
|
89
74
|
}
|
|
90
|
-
|
|
91
|
-
function usePageEntities() {
|
|
92
|
-
const { records, isResolving, hasResolved } = useEntityRecords(
|
|
93
|
-
'postType',
|
|
94
|
-
'page',
|
|
95
|
-
{
|
|
96
|
-
parent: 0,
|
|
97
|
-
order: 'asc',
|
|
98
|
-
orderby: 'id',
|
|
99
|
-
per_page: -1,
|
|
100
|
-
context: 'view',
|
|
101
|
-
}
|
|
102
|
-
);
|
|
103
|
-
|
|
104
|
-
return {
|
|
105
|
-
pages: records,
|
|
106
|
-
isResolvingPages: isResolving,
|
|
107
|
-
hasResolvedPages: hasResolved,
|
|
108
|
-
hasPages: !! ( hasResolved && records?.length ),
|
|
109
|
-
};
|
|
110
|
-
}
|
|
@@ -60,6 +60,10 @@ export default function useNavigationMenu( ref ) {
|
|
|
60
60
|
! ref ||
|
|
61
61
|
( hasResolvedNavigationMenu && ! rawNavigationMenu ),
|
|
62
62
|
canSwitchNavigationMenu,
|
|
63
|
+
isResolvingNavigationMenus: isResolving(
|
|
64
|
+
'getEntityRecords',
|
|
65
|
+
navigationMenuMultipleArgs
|
|
66
|
+
),
|
|
63
67
|
hasResolvedNavigationMenus: hasFinishedResolution(
|
|
64
68
|
'getEntityRecords',
|
|
65
69
|
navigationMenuMultipleArgs
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
ToolbarButton,
|
|
19
19
|
Tooltip,
|
|
20
20
|
ToolbarGroup,
|
|
21
|
+
KeyboardShortcuts,
|
|
21
22
|
} from '@wordpress/components';
|
|
22
23
|
import { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';
|
|
23
24
|
import { __, sprintf } from '@wordpress/i18n';
|
|
@@ -48,8 +49,6 @@ import { store as coreStore } from '@wordpress/core-data';
|
|
|
48
49
|
*/
|
|
49
50
|
import { name } from './block.json';
|
|
50
51
|
|
|
51
|
-
const MAX_NESTING = 5;
|
|
52
|
-
|
|
53
52
|
/**
|
|
54
53
|
* A React hook to determine if it's dragging within the target element.
|
|
55
54
|
*
|
|
@@ -265,6 +264,64 @@ export const updateNavigationLinkBlockAttributes = (
|
|
|
265
264
|
} );
|
|
266
265
|
};
|
|
267
266
|
|
|
267
|
+
const useIsInvalidLink = ( kind, type, id ) => {
|
|
268
|
+
const isPostType =
|
|
269
|
+
kind === 'post-type' || type === 'post' || type === 'page';
|
|
270
|
+
const hasId = Number.isInteger( id );
|
|
271
|
+
const postStatus = useSelect(
|
|
272
|
+
( select ) => {
|
|
273
|
+
if ( ! isPostType ) {
|
|
274
|
+
return null;
|
|
275
|
+
}
|
|
276
|
+
const { getEntityRecord } = select( coreStore );
|
|
277
|
+
return getEntityRecord( 'postType', type, id )?.status;
|
|
278
|
+
},
|
|
279
|
+
[ isPostType, type, id ]
|
|
280
|
+
);
|
|
281
|
+
|
|
282
|
+
// Check Navigation Link validity if:
|
|
283
|
+
// 1. Link is 'post-type'.
|
|
284
|
+
// 2. It has an id.
|
|
285
|
+
// 3. It's neither null, nor undefined, as valid items might be either of those while loading.
|
|
286
|
+
// If those conditions are met, check if
|
|
287
|
+
// 1. The post status is published.
|
|
288
|
+
// 2. The Navigation Link item has no label.
|
|
289
|
+
// If either of those is true, invalidate.
|
|
290
|
+
const isInvalid =
|
|
291
|
+
isPostType && hasId && postStatus && 'trash' === postStatus;
|
|
292
|
+
const isDraft = 'draft' === postStatus;
|
|
293
|
+
|
|
294
|
+
return [ isInvalid, isDraft ];
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
const useMissingText = ( type ) => {
|
|
298
|
+
let missingText = '';
|
|
299
|
+
|
|
300
|
+
switch ( type ) {
|
|
301
|
+
case 'post':
|
|
302
|
+
/* translators: label for missing post in navigation link block */
|
|
303
|
+
missingText = __( 'Select post' );
|
|
304
|
+
break;
|
|
305
|
+
case 'page':
|
|
306
|
+
/* translators: label for missing page in navigation link block */
|
|
307
|
+
missingText = __( 'Select page' );
|
|
308
|
+
break;
|
|
309
|
+
case 'category':
|
|
310
|
+
/* translators: label for missing category in navigation link block */
|
|
311
|
+
missingText = __( 'Select category' );
|
|
312
|
+
break;
|
|
313
|
+
case 'tag':
|
|
314
|
+
/* translators: label for missing tag in navigation link block */
|
|
315
|
+
missingText = __( 'Select tag' );
|
|
316
|
+
break;
|
|
317
|
+
default:
|
|
318
|
+
/* translators: label for missing values in navigation link block */
|
|
319
|
+
missingText = __( 'Add link' );
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
return missingText;
|
|
323
|
+
};
|
|
324
|
+
|
|
268
325
|
/**
|
|
269
326
|
* Removes HTML from a given string.
|
|
270
327
|
* Note the does not provide XSS protection or otherwise attempt
|
|
@@ -329,6 +386,7 @@ export default function NavigationLinkEdit( {
|
|
|
329
386
|
clientId,
|
|
330
387
|
} ) {
|
|
331
388
|
const {
|
|
389
|
+
id,
|
|
332
390
|
label,
|
|
333
391
|
type,
|
|
334
392
|
opensInNewTab,
|
|
@@ -339,6 +397,9 @@ export default function NavigationLinkEdit( {
|
|
|
339
397
|
kind,
|
|
340
398
|
} = attributes;
|
|
341
399
|
|
|
400
|
+
const [ isInvalid, isDraft ] = useIsInvalidLink( kind, type, id );
|
|
401
|
+
const { maxNestingLevel } = context;
|
|
402
|
+
|
|
342
403
|
const link = {
|
|
343
404
|
url,
|
|
344
405
|
opensInNewTab,
|
|
@@ -390,7 +451,7 @@ export default function NavigationLinkEdit( {
|
|
|
390
451
|
getBlockParentsByBlockName( clientId, [
|
|
391
452
|
name,
|
|
392
453
|
'core/navigation-submenu',
|
|
393
|
-
] ).length >=
|
|
454
|
+
] ).length >= maxNestingLevel,
|
|
394
455
|
isTopLevelLink:
|
|
395
456
|
getBlockName( getBlockRootClientId( clientId ) ) ===
|
|
396
457
|
'core/navigation',
|
|
@@ -589,36 +650,23 @@ export default function NavigationLinkEdit( {
|
|
|
589
650
|
onKeyDown,
|
|
590
651
|
} );
|
|
591
652
|
|
|
592
|
-
if ( ! url ) {
|
|
653
|
+
if ( ! url || isInvalid || isDraft ) {
|
|
593
654
|
blockProps.onClick = () => setIsLinkOpen( true );
|
|
594
655
|
}
|
|
595
656
|
|
|
596
657
|
const classes = classnames( 'wp-block-navigation-item__content', {
|
|
597
|
-
'wp-block-navigation-link__placeholder': ! url,
|
|
658
|
+
'wp-block-navigation-link__placeholder': ! url || isInvalid || isDraft,
|
|
598
659
|
} );
|
|
599
660
|
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
break;
|
|
610
|
-
case 'category':
|
|
611
|
-
/* translators: label for missing category in navigation link block */
|
|
612
|
-
missingText = __( 'Select category' );
|
|
613
|
-
break;
|
|
614
|
-
case 'tag':
|
|
615
|
-
/* translators: label for missing tag in navigation link block */
|
|
616
|
-
missingText = __( 'Select tag' );
|
|
617
|
-
break;
|
|
618
|
-
default:
|
|
619
|
-
/* translators: label for missing values in navigation link block */
|
|
620
|
-
missingText = __( 'Add link' );
|
|
621
|
-
}
|
|
661
|
+
const missingText = useMissingText( type, isInvalid, isDraft );
|
|
662
|
+
/* translators: Whether the navigation link is Invalid or a Draft. */
|
|
663
|
+
const placeholderText = `(${
|
|
664
|
+
isInvalid ? __( 'Invalid' ) : __( 'Draft' )
|
|
665
|
+
})`;
|
|
666
|
+
const tooltipText =
|
|
667
|
+
isInvalid || isDraft
|
|
668
|
+
? __( 'This item has been deleted, or is a draft' )
|
|
669
|
+
: __( 'This item is missing a link' );
|
|
622
670
|
|
|
623
671
|
return (
|
|
624
672
|
<Fragment>
|
|
@@ -677,46 +725,90 @@ export default function NavigationLinkEdit( {
|
|
|
677
725
|
{ /* eslint-enable */ }
|
|
678
726
|
{ ! url ? (
|
|
679
727
|
<div className="wp-block-navigation-link__placeholder-text">
|
|
680
|
-
<Tooltip
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
728
|
+
<Tooltip position="top center" text={ tooltipText }>
|
|
729
|
+
<>
|
|
730
|
+
<span>{ missingText }</span>
|
|
731
|
+
<span className="wp-block-navigation-link__missing_text-tooltip">
|
|
732
|
+
{ tooltipText }
|
|
733
|
+
</span>
|
|
734
|
+
</>
|
|
685
735
|
</Tooltip>
|
|
686
736
|
</div>
|
|
687
737
|
) : (
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
738
|
+
<>
|
|
739
|
+
{ ! isInvalid && ! isDraft && (
|
|
740
|
+
<>
|
|
741
|
+
<RichText
|
|
742
|
+
ref={ ref }
|
|
743
|
+
identifier="label"
|
|
744
|
+
className="wp-block-navigation-item__label"
|
|
745
|
+
value={ label }
|
|
746
|
+
onChange={ ( labelValue ) =>
|
|
747
|
+
setAttributes( {
|
|
748
|
+
label: labelValue,
|
|
749
|
+
} )
|
|
750
|
+
}
|
|
751
|
+
onMerge={ mergeBlocks }
|
|
752
|
+
onReplace={ onReplace }
|
|
753
|
+
__unstableOnSplitAtEnd={ () =>
|
|
754
|
+
insertBlocksAfter(
|
|
755
|
+
createBlock(
|
|
756
|
+
'core/navigation-link'
|
|
757
|
+
)
|
|
758
|
+
)
|
|
759
|
+
}
|
|
760
|
+
aria-label={ __(
|
|
761
|
+
'Navigation link text'
|
|
762
|
+
) }
|
|
763
|
+
placeholder={ itemLabelPlaceholder }
|
|
764
|
+
withoutInteractiveFormatting
|
|
765
|
+
allowedFormats={ [
|
|
766
|
+
'core/bold',
|
|
767
|
+
'core/italic',
|
|
768
|
+
'core/image',
|
|
769
|
+
'core/strikethrough',
|
|
770
|
+
] }
|
|
771
|
+
onClick={ () => {
|
|
772
|
+
if ( ! url ) {
|
|
773
|
+
setIsLinkOpen( true );
|
|
774
|
+
}
|
|
775
|
+
} }
|
|
776
|
+
/>
|
|
777
|
+
{ description && (
|
|
778
|
+
<span className="wp-block-navigation-item__description">
|
|
779
|
+
{ description }
|
|
780
|
+
</span>
|
|
781
|
+
) }
|
|
782
|
+
</>
|
|
783
|
+
) }
|
|
784
|
+
{ ( isInvalid || isDraft ) && (
|
|
785
|
+
<div className="wp-block-navigation-link__placeholder-text wp-block-navigation-link__label">
|
|
786
|
+
<KeyboardShortcuts
|
|
787
|
+
shortcuts={ {
|
|
788
|
+
enter: () =>
|
|
789
|
+
isSelected &&
|
|
790
|
+
setIsLinkOpen( true ),
|
|
791
|
+
} }
|
|
792
|
+
/>
|
|
793
|
+
<Tooltip
|
|
794
|
+
position="top center"
|
|
795
|
+
text={ tooltipText }
|
|
796
|
+
>
|
|
797
|
+
<>
|
|
798
|
+
<span>
|
|
799
|
+
{
|
|
800
|
+
/* Trim to avoid trailing white space when the placeholder text is not present */
|
|
801
|
+
`${ label } ${ placeholderText }`.trim()
|
|
802
|
+
}
|
|
803
|
+
</span>
|
|
804
|
+
<span className="wp-block-navigation-link__missing_text-tooltip">
|
|
805
|
+
{ tooltipText }
|
|
806
|
+
</span>
|
|
807
|
+
</>
|
|
808
|
+
</Tooltip>
|
|
809
|
+
</div>
|
|
810
|
+
) }
|
|
811
|
+
</>
|
|
720
812
|
) }
|
|
721
813
|
{ isLinkOpen && (
|
|
722
814
|
<Popover
|
|
@@ -55,7 +55,18 @@
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
.wp-block-navigation-link__invalid-item {
|
|
59
|
+
color: #000;
|
|
60
|
+
}
|
|
58
61
|
|
|
62
|
+
.wp-block-navigation-link__missing_text-tooltip {
|
|
63
|
+
position: absolute;
|
|
64
|
+
width: 1px;
|
|
65
|
+
height: 1px;
|
|
66
|
+
padding: 0;
|
|
67
|
+
margin: -1px;
|
|
68
|
+
overflow: hidden;
|
|
69
|
+
}
|
|
59
70
|
/**
|
|
60
71
|
* Menu item setup state. Is shown when a menu item has no URL configured.
|
|
61
72
|
*/
|