@wordpress/block-library 7.0.2 → 7.1.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 +2 -0
- package/build/audio/edit.js +4 -4
- package/build/audio/edit.js.map +1 -1
- package/build/audio/edit.native.js +4 -4
- package/build/audio/edit.native.js.map +1 -1
- package/build/audio/transforms.js +1 -1
- package/build/audio/transforms.js.map +1 -1
- package/build/block/edit.js +3 -9
- package/build/block/edit.js.map +1 -1
- package/build/button/edit.js +3 -2
- package/build/button/edit.js.map +1 -1
- package/build/button/edit.native.js +2 -2
- package/build/button/edit.native.js.map +1 -1
- package/build/buttons/transforms.js +8 -8
- package/build/buttons/transforms.js.map +1 -1
- package/build/categories/edit.js +15 -26
- package/build/categories/edit.js.map +1 -1
- package/build/code/index.js +0 -1
- package/build/code/index.js.map +1 -1
- package/build/columns/columnCalculations.native.js +1 -1
- package/build/columns/columnCalculations.native.js.map +1 -1
- package/build/columns/edit.js +1 -1
- package/build/columns/edit.js.map +1 -1
- package/build/columns/edit.native.js +3 -3
- package/build/columns/edit.native.js.map +1 -1
- package/build/cover/controls.native.js +5 -5
- package/build/cover/controls.native.js.map +1 -1
- package/build/cover/deprecated.js +188 -17
- package/build/cover/deprecated.js.map +1 -1
- package/build/cover/edit.js +8 -11
- package/build/cover/edit.js.map +1 -1
- package/build/cover/edit.native.js +8 -8
- package/build/cover/edit.native.js.map +1 -1
- package/build/cover/overlay-color-settings.native.js +3 -3
- package/build/cover/overlay-color-settings.native.js.map +1 -1
- package/build/cover/save.js +1 -1
- package/build/cover/save.js.map +1 -1
- package/build/cover/shared.js +2 -2
- package/build/cover/shared.js.map +1 -1
- package/build/embed/edit.js +1 -1
- package/build/embed/edit.js.map +1 -1
- package/build/embed/edit.native.js +1 -1
- package/build/embed/edit.native.js.map +1 -1
- package/build/embed/util.js +2 -2
- package/build/embed/util.js.map +1 -1
- package/build/embed/variations.js +1 -1
- package/build/embed/variations.js.map +1 -1
- package/build/file/edit.js +20 -17
- package/build/file/edit.js.map +1 -1
- package/build/file/edit.native.js +1 -1
- package/build/file/edit.native.js.map +1 -1
- package/build/file/save.js +7 -3
- package/build/file/save.js.map +1 -1
- package/build/freeform/edit.js +2 -2
- package/build/freeform/edit.js.map +1 -1
- package/build/gallery/edit.js +1 -1
- package/build/gallery/edit.js.map +1 -1
- package/build/gallery/gallery.native.js +1 -1
- package/build/gallery/gallery.native.js.map +1 -1
- package/build/gallery/v1/edit.js +3 -3
- package/build/gallery/v1/edit.js.map +1 -1
- package/build/gallery/v1/gallery-image.native.js +3 -3
- package/build/gallery/v1/gallery-image.native.js.map +1 -1
- package/build/gallery/v1/gallery.native.js +2 -2
- package/build/gallery/v1/gallery.native.js.map +1 -1
- package/build/group/index.js +3 -37
- package/build/group/index.js.map +1 -1
- package/build/group/transforms.js +45 -0
- package/build/group/transforms.js.map +1 -0
- package/build/home-link/edit.js +1 -1
- package/build/home-link/edit.js.map +1 -1
- package/build/image/edit.js +7 -6
- package/build/image/edit.js.map +1 -1
- package/build/image/edit.native.js +25 -10
- package/build/image/edit.native.js.map +1 -1
- package/build/image/transforms.js +1 -1
- package/build/image/transforms.js.map +1 -1
- package/build/index.js +3 -4
- package/build/index.js.map +1 -1
- package/build/index.native.js +2 -2
- package/build/index.native.js.map +1 -1
- package/build/media-text/edit.js +21 -2
- package/build/media-text/edit.js.map +1 -1
- package/build/media-text/edit.native.js +2 -2
- package/build/media-text/edit.native.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/missing/edit.native.js +1 -1
- package/build/missing/edit.native.js.map +1 -1
- package/build/more/transforms.js +2 -2
- package/build/more/transforms.js.map +1 -1
- package/build/navigation/edit/index.js +134 -60
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/inner-blocks.js +8 -3
- package/build/navigation/edit/inner-blocks.js.map +1 -1
- package/build/navigation/edit/navigation-menu-selector.js +66 -53
- package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
- package/build/navigation/edit/placeholder/index.js +31 -46
- package/build/navigation/edit/placeholder/index.js.map +1 -1
- package/build/navigation/edit/placeholder/placeholder-preview.js +3 -12
- package/build/navigation/edit/placeholder/placeholder-preview.js.map +1 -1
- package/build/navigation/edit/unsaved-inner-blocks.js +3 -1
- package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +120 -0
- package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -0
- package/build/navigation/edit/use-create-navigation-menu.js +53 -4
- package/build/navigation/edit/use-create-navigation-menu.js.map +1 -1
- package/build/navigation/edit/use-navigation-notice.js +3 -3
- package/build/navigation/edit/use-navigation-notice.js.map +1 -1
- package/build/navigation/menu-items-to-blocks.js +1 -1
- package/build/navigation/menu-items-to-blocks.js.map +1 -1
- package/build/navigation/use-navigation-entities.js +25 -49
- package/build/navigation/use-navigation-entities.js.map +1 -1
- package/build/navigation/use-navigation-menu.js +2 -0
- package/build/navigation/use-navigation-menu.js.map +1 -1
- package/build/navigation-link/fallback-variations.js +1 -1
- package/build/navigation-link/fallback-variations.js.map +1 -1
- package/build/navigation-link/hooks.js +2 -2
- package/build/navigation-link/hooks.js.map +1 -1
- package/build/navigation-submenu/edit.js +2 -2
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/page-list/convert-to-links-modal.js +13 -23
- package/build/page-list/convert-to-links-modal.js.map +1 -1
- package/build/page-list/edit.js +8 -22
- package/build/page-list/edit.js.map +1 -1
- package/build/post-author-name/edit.js +2 -1
- package/build/post-author-name/edit.js.map +1 -1
- package/build/post-comments-form/edit.js +3 -1
- package/build/post-comments-form/edit.js.map +1 -1
- package/build/post-excerpt/edit.js +7 -4
- package/build/post-excerpt/edit.js.map +1 -1
- package/build/post-terms/edit.js +3 -1
- package/build/post-terms/edit.js.map +1 -1
- package/build/query-title/edit.js +0 -1
- package/build/query-title/edit.js.map +1 -1
- package/build/search/edit.js +4 -1
- package/build/search/edit.js.map +1 -1
- package/build/search/edit.native.js +1 -1
- package/build/search/edit.native.js.map +1 -1
- package/build/separator/save.js +4 -4
- package/build/separator/save.js.map +1 -1
- package/build/separator/separator-settings.native.js +1 -1
- package/build/separator/separator-settings.native.js.map +1 -1
- package/build/site-logo/edit.js +1 -1
- package/build/site-logo/edit.js.map +1 -1
- package/build/social-link/edit.native.js +11 -3
- package/build/social-link/edit.native.js.map +1 -1
- package/build/spacer/controls.js +5 -5
- package/build/spacer/controls.js.map +1 -1
- package/build/spacer/controls.native.js +5 -5
- package/build/spacer/controls.native.js.map +1 -1
- package/build/table/edit.js +2 -2
- package/build/table/edit.js.map +1 -1
- package/build/video/edit.js +4 -4
- package/build/video/edit.js.map +1 -1
- package/build/video/edit.native.js +3 -3
- package/build/video/edit.native.js.map +1 -1
- package/build-module/audio/edit.js +4 -4
- package/build-module/audio/edit.js.map +1 -1
- package/build-module/audio/edit.native.js +4 -4
- package/build-module/audio/edit.native.js.map +1 -1
- package/build-module/audio/transforms.js +1 -1
- package/build-module/audio/transforms.js.map +1 -1
- package/build-module/block/edit.js +5 -11
- package/build-module/block/edit.js.map +1 -1
- package/build-module/button/edit.js +3 -2
- package/build-module/button/edit.js.map +1 -1
- package/build-module/button/edit.native.js +2 -2
- package/build-module/button/edit.native.js.map +1 -1
- package/build-module/buttons/transforms.js +8 -8
- package/build-module/buttons/transforms.js.map +1 -1
- package/build-module/categories/edit.js +15 -25
- package/build-module/categories/edit.js.map +1 -1
- package/build-module/code/index.js +0 -1
- package/build-module/code/index.js.map +1 -1
- package/build-module/columns/columnCalculations.native.js +1 -1
- package/build-module/columns/columnCalculations.native.js.map +1 -1
- package/build-module/columns/edit.js +1 -1
- package/build-module/columns/edit.js.map +1 -1
- package/build-module/columns/edit.native.js +3 -3
- package/build-module/columns/edit.native.js.map +1 -1
- package/build-module/cover/controls.native.js +5 -5
- package/build-module/cover/controls.native.js.map +1 -1
- package/build-module/cover/deprecated.js +190 -17
- package/build-module/cover/deprecated.js.map +1 -1
- package/build-module/cover/edit.js +8 -11
- package/build-module/cover/edit.js.map +1 -1
- package/build-module/cover/edit.native.js +8 -8
- package/build-module/cover/edit.native.js.map +1 -1
- package/build-module/cover/overlay-color-settings.native.js +3 -3
- package/build-module/cover/overlay-color-settings.native.js.map +1 -1
- package/build-module/cover/save.js +1 -1
- package/build-module/cover/save.js.map +1 -1
- package/build-module/cover/shared.js +2 -2
- package/build-module/cover/shared.js.map +1 -1
- package/build-module/embed/edit.js +1 -1
- package/build-module/embed/edit.js.map +1 -1
- package/build-module/embed/edit.native.js +1 -1
- package/build-module/embed/edit.native.js.map +1 -1
- package/build-module/embed/util.js +2 -2
- package/build-module/embed/util.js.map +1 -1
- package/build-module/embed/variations.js +1 -1
- package/build-module/embed/variations.js.map +1 -1
- package/build-module/file/edit.js +21 -18
- package/build-module/file/edit.js.map +1 -1
- package/build-module/file/edit.native.js +1 -1
- package/build-module/file/edit.native.js.map +1 -1
- package/build-module/file/save.js +7 -3
- package/build-module/file/save.js.map +1 -1
- package/build-module/freeform/edit.js +2 -2
- package/build-module/freeform/edit.js.map +1 -1
- package/build-module/gallery/edit.js +1 -1
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/gallery.native.js +1 -1
- package/build-module/gallery/gallery.native.js.map +1 -1
- package/build-module/gallery/v1/edit.js +3 -3
- package/build-module/gallery/v1/edit.js.map +1 -1
- package/build-module/gallery/v1/gallery-image.native.js +3 -3
- package/build-module/gallery/v1/gallery-image.native.js.map +1 -1
- package/build-module/gallery/v1/gallery.native.js +2 -2
- package/build-module/gallery/v1/gallery.native.js.map +1 -1
- package/build-module/group/index.js +2 -36
- package/build-module/group/index.js.map +1 -1
- package/build-module/group/transforms.js +36 -0
- package/build-module/group/transforms.js.map +1 -0
- package/build-module/home-link/edit.js +1 -1
- package/build-module/home-link/edit.js.map +1 -1
- package/build-module/image/edit.js +7 -6
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/edit.native.js +25 -10
- package/build-module/image/edit.native.js.map +1 -1
- package/build-module/image/transforms.js +1 -1
- package/build-module/image/transforms.js.map +1 -1
- package/build-module/index.js +4 -5
- package/build-module/index.js.map +1 -1
- package/build-module/index.native.js +2 -2
- package/build-module/index.native.js.map +1 -1
- package/build-module/media-text/edit.js +20 -2
- package/build-module/media-text/edit.js.map +1 -1
- package/build-module/media-text/edit.native.js +2 -2
- package/build-module/media-text/edit.native.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/missing/edit.native.js +1 -1
- package/build-module/missing/edit.native.js.map +1 -1
- package/build-module/more/transforms.js +2 -2
- package/build-module/more/transforms.js.map +1 -1
- package/build-module/navigation/edit/index.js +128 -60
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/inner-blocks.js +8 -3
- package/build-module/navigation/edit/inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-selector.js +66 -50
- package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
- package/build-module/navigation/edit/placeholder/index.js +32 -45
- package/build-module/navigation/edit/placeholder/index.js.map +1 -1
- package/build-module/navigation/edit/placeholder/placeholder-preview.js +3 -9
- package/build-module/navigation/edit/placeholder/placeholder-preview.js.map +1 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js +3 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +100 -0
- package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -0
- package/build-module/navigation/edit/use-create-navigation-menu.js +48 -5
- package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -1
- package/build-module/navigation/edit/use-navigation-notice.js +3 -3
- package/build-module/navigation/edit/use-navigation-notice.js.map +1 -1
- package/build-module/navigation/menu-items-to-blocks.js +1 -1
- package/build-module/navigation/menu-items-to-blocks.js.map +1 -1
- package/build-module/navigation/use-navigation-entities.js +26 -50
- package/build-module/navigation/use-navigation-entities.js.map +1 -1
- package/build-module/navigation/use-navigation-menu.js +2 -0
- package/build-module/navigation/use-navigation-menu.js.map +1 -1
- package/build-module/navigation-link/fallback-variations.js +1 -1
- package/build-module/navigation-link/fallback-variations.js.map +1 -1
- package/build-module/navigation-link/hooks.js +2 -2
- package/build-module/navigation-link/hooks.js.map +1 -1
- package/build-module/navigation-submenu/edit.js +2 -2
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/page-list/convert-to-links-modal.js +15 -25
- package/build-module/page-list/convert-to-links-modal.js.map +1 -1
- package/build-module/page-list/edit.js +9 -23
- package/build-module/page-list/edit.js.map +1 -1
- package/build-module/post-author-name/edit.js +2 -1
- package/build-module/post-author-name/edit.js.map +1 -1
- package/build-module/post-comments-form/edit.js +4 -2
- package/build-module/post-comments-form/edit.js.map +1 -1
- package/build-module/post-excerpt/edit.js +9 -6
- package/build-module/post-excerpt/edit.js.map +1 -1
- package/build-module/post-terms/edit.js +2 -1
- package/build-module/post-terms/edit.js.map +1 -1
- package/build-module/query-title/edit.js +0 -1
- package/build-module/query-title/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 +1 -1
- package/build-module/search/edit.native.js.map +1 -1
- package/build-module/separator/save.js +4 -4
- package/build-module/separator/save.js.map +1 -1
- package/build-module/separator/separator-settings.native.js +1 -1
- package/build-module/separator/separator-settings.native.js.map +1 -1
- package/build-module/site-logo/edit.js +1 -1
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/social-link/edit.native.js +11 -3
- package/build-module/social-link/edit.native.js.map +1 -1
- package/build-module/spacer/controls.js +5 -5
- package/build-module/spacer/controls.js.map +1 -1
- package/build-module/spacer/controls.native.js +5 -5
- package/build-module/spacer/controls.native.js.map +1 -1
- package/build-module/table/edit.js +2 -2
- package/build-module/table/edit.js.map +1 -1
- package/build-module/video/edit.js +4 -4
- package/build-module/video/edit.js.map +1 -1
- package/build-module/video/edit.native.js +3 -3
- package/build-module/video/edit.native.js.map +1 -1
- package/build-style/button/editor-rtl.css +0 -3
- package/build-style/button/editor.css +0 -3
- package/build-style/code/style-rtl.css +2 -1
- package/build-style/code/style.css +2 -1
- package/build-style/code/theme-rtl.css +0 -3
- package/build-style/code/theme.css +0 -3
- package/build-style/common-rtl.css +1 -1
- package/build-style/common.css +1 -1
- package/build-style/cover/style-rtl.css +1 -5
- package/build-style/cover/style.css +1 -5
- package/build-style/editor-rtl.css +16 -3
- package/build-style/editor.css +16 -3
- package/build-style/image/style-rtl.css +2 -1
- package/build-style/image/style.css +2 -1
- package/build-style/navigation/editor-rtl.css +16 -0
- package/build-style/navigation/editor.css +16 -0
- package/build-style/style-rtl.css +12 -10
- package/build-style/style.css +12 -10
- package/build-style/tag-cloud/style-rtl.css +6 -2
- package/build-style/tag-cloud/style.css +6 -2
- package/build-style/theme-rtl.css +0 -3
- package/build-style/theme.css +0 -3
- package/package.json +32 -28
- package/src/audio/edit.js +4 -4
- package/src/audio/edit.native.js +4 -4
- package/src/audio/transforms.js +1 -1
- package/src/block/edit.js +7 -22
- package/src/block/test/edit.native.js +9 -9
- package/src/button/edit.js +2 -1
- package/src/button/edit.native.js +2 -2
- package/src/button/editor.scss +0 -5
- package/src/buttons/test/edit.native.js +3 -3
- package/src/buttons/transforms.js +8 -8
- package/src/categories/edit.js +12 -22
- package/src/code/block.json +0 -1
- package/src/code/style.scss +4 -2
- package/src/code/theme.scss +0 -3
- package/src/columns/columnCalculations.native.js +1 -1
- package/src/columns/edit.js +1 -1
- package/src/columns/edit.native.js +3 -3
- package/src/comments-pagination-numbers/index.php +1 -1
- package/src/common.scss +1 -1
- package/src/cover/controls.native.js +1 -1
- package/src/cover/deprecated.js +214 -1
- package/src/cover/edit.js +6 -8
- package/src/cover/edit.native.js +8 -8
- package/src/cover/overlay-color-settings.native.js +3 -3
- package/src/cover/save.js +4 -3
- package/src/cover/shared.js +2 -2
- package/src/cover/style.scss +1 -3
- package/src/cover/test/edit.native.js +39 -39
- package/src/embed/edit.js +1 -1
- package/src/embed/edit.native.js +1 -1
- package/src/embed/test/index.native.js +105 -105
- package/src/embed/util.js +2 -2
- package/src/embed/variations.js +1 -1
- package/src/file/edit.js +19 -17
- package/src/file/edit.native.js +1 -1
- package/src/file/save.js +9 -3
- package/src/file/style.native.scss +1 -0
- package/src/freeform/edit.js +2 -2
- package/src/gallery/edit.js +1 -1
- package/src/gallery/gallery.native.js +1 -1
- package/src/gallery/test/__snapshots__/index.native.js.snap +164 -0
- package/src/gallery/test/helpers.native.js +293 -0
- package/src/gallery/test/index.native.js +583 -65
- package/src/gallery/v1/edit.js +3 -4
- package/src/gallery/v1/gallery-image.native.js +3 -3
- package/src/gallery/v1/gallery.native.js +2 -2
- package/src/group/index.js +2 -54
- package/src/group/transforms.js +52 -0
- package/src/home-link/edit.js +1 -1
- package/src/image/edit.js +7 -6
- package/src/image/edit.native.js +25 -8
- package/src/image/style.scss +2 -1
- package/src/image/test/edit.native.js +1 -1
- package/src/image/transforms.js +1 -1
- package/src/index.js +2 -3
- package/src/index.native.js +2 -2
- package/src/media-text/edit.js +20 -2
- package/src/media-text/edit.native.js +2 -2
- package/src/media-text/media-container.native.js +1 -1
- package/src/media-text/style.native.scss +1 -0
- package/src/missing/edit.native.js +1 -1
- package/src/missing/test/edit-integration.native.js +4 -4
- package/src/missing/test/edit.native.js +2 -2
- package/src/more/transforms.js +2 -2
- package/src/navigation/edit/index.js +194 -69
- package/src/navigation/edit/inner-blocks.js +11 -4
- package/src/navigation/edit/navigation-menu-selector.js +97 -79
- package/src/navigation/edit/placeholder/index.js +61 -84
- package/src/navigation/edit/placeholder/placeholder-preview.js +3 -10
- package/src/navigation/edit/unsaved-inner-blocks.js +3 -1
- package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +137 -0
- package/src/navigation/edit/use-create-navigation-menu.js +59 -8
- package/src/navigation/edit/use-navigation-notice.js +3 -3
- package/src/navigation/editor.scss +23 -1
- package/src/navigation/menu-items-to-blocks.js +1 -1
- package/src/navigation/test/menu-items-to-blocks.js +1 -1
- package/src/navigation/use-navigation-entities.js +26 -60
- package/src/navigation/use-navigation-menu.js +5 -0
- package/src/navigation-link/fallback-variations.js +1 -1
- package/src/navigation-link/hooks.js +2 -2
- package/src/navigation-link/test/edit.js +5 -5
- package/src/navigation-submenu/edit.js +2 -2
- package/src/page-list/convert-to-links-modal.js +17 -31
- package/src/page-list/edit.js +14 -23
- package/src/post-author-name/edit.js +1 -0
- package/src/post-author-name/index.php +1 -1
- package/src/post-comments-form/edit.js +7 -3
- package/src/post-excerpt/edit.js +9 -12
- package/src/post-terms/edit.js +2 -1
- package/src/query-title/edit.js +0 -1
- package/src/search/edit.js +6 -0
- package/src/search/edit.native.js +1 -1
- package/src/search/index.php +3 -2
- package/src/search/test/edit.native.js +0 -1
- package/src/separator/save.js +4 -4
- package/src/separator/separator-settings.native.js +1 -1
- package/src/site-logo/edit.js +1 -1
- package/src/social-link/edit.native.js +17 -8
- package/src/social-link/test/index.native.js +138 -0
- package/src/spacer/controls.js +1 -1
- package/src/spacer/controls.native.js +1 -1
- package/src/table/edit.js +2 -2
- package/src/tag-cloud/style.scss +12 -7
- package/src/video/edit.js +4 -4
- package/src/video/edit.native.js +3 -3
- package/src/video/style.native.scss +1 -0
- package/build/navigation/use-convert-classic-menu.js +0 -59
- package/build/navigation/use-convert-classic-menu.js.map +0 -1
- package/build-module/navigation/use-convert-classic-menu.js +0 -47
- package/build-module/navigation/use-convert-classic-menu.js.map +0 -1
- package/src/navigation/use-convert-classic-menu.js +0 -58
|
@@ -1,117 +1,94 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { Placeholder, Button,
|
|
4
|
+
import { Placeholder, Button, Spinner } from '@wordpress/components';
|
|
5
5
|
import { __ } from '@wordpress/i18n';
|
|
6
6
|
import { navigation, Icon } from '@wordpress/icons';
|
|
7
|
+
import { speak } from '@wordpress/a11y';
|
|
8
|
+
import { useEffect } from '@wordpress/element';
|
|
7
9
|
|
|
8
10
|
/**
|
|
9
11
|
* Internal dependencies
|
|
10
12
|
*/
|
|
11
|
-
|
|
12
13
|
import useNavigationEntities from '../../use-navigation-entities';
|
|
13
14
|
import PlaceholderPreview from './placeholder-preview';
|
|
14
|
-
import useNavigationMenu from '../../use-navigation-menu';
|
|
15
|
-
import useCreateNavigationMenu from '../use-create-navigation-menu';
|
|
16
15
|
import NavigationMenuSelector from '../navigation-menu-selector';
|
|
17
16
|
|
|
18
17
|
export default function NavigationPlaceholder( {
|
|
18
|
+
isSelected,
|
|
19
|
+
currentMenuId,
|
|
19
20
|
clientId,
|
|
20
|
-
onFinish,
|
|
21
|
-
canSwitchNavigationMenu,
|
|
22
|
-
hasResolvedNavigationMenus,
|
|
23
21
|
canUserCreateNavigationMenu = false,
|
|
22
|
+
isResolvingCanUserCreateNavigationMenu,
|
|
23
|
+
onFinish,
|
|
24
|
+
onCreateEmpty,
|
|
24
25
|
} ) {
|
|
25
|
-
const
|
|
26
|
+
const { isResolvingMenus, hasResolvedMenus } = useNavigationEntities();
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
navigationMenuTitle = null
|
|
30
|
-
) => {
|
|
31
|
-
if ( ! canUserCreateNavigationMenu ) {
|
|
28
|
+
useEffect( () => {
|
|
29
|
+
if ( ! isSelected ) {
|
|
32
30
|
return;
|
|
33
31
|
}
|
|
34
32
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
);
|
|
39
|
-
onFinish( navigationMenu, blocks );
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const {
|
|
43
|
-
isResolvingPages,
|
|
44
|
-
isResolvingMenus,
|
|
45
|
-
hasMenus,
|
|
46
|
-
} = useNavigationEntities();
|
|
47
|
-
|
|
48
|
-
const isStillLoading = isResolvingPages || isResolvingMenus;
|
|
49
|
-
|
|
50
|
-
const onCreateEmptyMenu = () => {
|
|
51
|
-
onFinishMenuCreation( [] );
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
const { navigationMenus } = useNavigationMenu();
|
|
33
|
+
if ( isResolvingMenus ) {
|
|
34
|
+
speak( __( 'Loading Navigation block setup options.' ) );
|
|
35
|
+
}
|
|
55
36
|
|
|
56
|
-
|
|
37
|
+
if ( hasResolvedMenus ) {
|
|
38
|
+
speak( __( 'Navigation block setup options ready.' ) );
|
|
39
|
+
}
|
|
40
|
+
}, [ isResolvingMenus, isSelected ] );
|
|
57
41
|
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
( hasNavigationMenus || hasMenus );
|
|
42
|
+
const isResolvingActions =
|
|
43
|
+
isResolvingMenus && isResolvingCanUserCreateNavigationMenu;
|
|
61
44
|
|
|
62
45
|
return (
|
|
63
46
|
<>
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
47
|
+
<Placeholder className="wp-block-navigation-placeholder">
|
|
48
|
+
{
|
|
49
|
+
// The <PlaceholderPreview> component is displayed conditionally via CSS depending on
|
|
50
|
+
// whether the block is selected or not. This is achieved via CSS to avoid
|
|
51
|
+
// component re-renders
|
|
52
|
+
}
|
|
53
|
+
<PlaceholderPreview isVisible={ ! isSelected } />
|
|
54
|
+
<div
|
|
55
|
+
aria-hidden={ ! isSelected ? true : undefined }
|
|
56
|
+
className="wp-block-navigation-placeholder__controls"
|
|
57
|
+
>
|
|
58
|
+
<div className="wp-block-navigation-placeholder__actions">
|
|
59
|
+
<div className="wp-block-navigation-placeholder__actions__indicator">
|
|
60
|
+
<Icon icon={ navigation } /> { __( 'Navigation' ) }
|
|
61
|
+
</div>
|
|
76
62
|
|
|
77
|
-
|
|
63
|
+
<hr />
|
|
78
64
|
|
|
79
|
-
|
|
80
|
-
<>
|
|
81
|
-
<DropdownMenu
|
|
82
|
-
text={ __( 'Select menu' ) }
|
|
83
|
-
icon={ null }
|
|
84
|
-
toggleProps={ {
|
|
85
|
-
variant: 'tertiary',
|
|
86
|
-
iconPosition: 'right',
|
|
87
|
-
className:
|
|
88
|
-
'wp-block-navigation-placeholder__actions__dropdown',
|
|
89
|
-
} }
|
|
90
|
-
popoverProps={ { isAlternate: true } }
|
|
91
|
-
>
|
|
92
|
-
{ () => (
|
|
93
|
-
<NavigationMenuSelector
|
|
94
|
-
clientId={ clientId }
|
|
95
|
-
onSelect={ onFinish }
|
|
96
|
-
/>
|
|
97
|
-
) }
|
|
98
|
-
</DropdownMenu>
|
|
99
|
-
<hr />
|
|
100
|
-
</>
|
|
101
|
-
) : undefined }
|
|
65
|
+
{ isResolvingActions && <Spinner /> }
|
|
102
66
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
67
|
+
<NavigationMenuSelector
|
|
68
|
+
currentMenuId={ currentMenuId }
|
|
69
|
+
clientId={ clientId }
|
|
70
|
+
onSelect={ onFinish }
|
|
71
|
+
toggleProps={ {
|
|
72
|
+
variant: 'tertiary',
|
|
73
|
+
iconPosition: 'right',
|
|
74
|
+
className:
|
|
75
|
+
'wp-block-navigation-placeholder__actions__dropdown',
|
|
76
|
+
} }
|
|
77
|
+
/>
|
|
78
|
+
|
|
79
|
+
<hr />
|
|
80
|
+
|
|
81
|
+
{ canUserCreateNavigationMenu && (
|
|
82
|
+
<Button
|
|
83
|
+
variant="tertiary"
|
|
84
|
+
onClick={ onCreateEmpty }
|
|
85
|
+
>
|
|
86
|
+
{ __( 'Start empty' ) }
|
|
87
|
+
</Button>
|
|
88
|
+
) }
|
|
112
89
|
</div>
|
|
113
|
-
</
|
|
114
|
-
|
|
90
|
+
</div>
|
|
91
|
+
</Placeholder>
|
|
115
92
|
</>
|
|
116
93
|
);
|
|
117
94
|
}
|
|
@@ -1,21 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import classnames from 'classnames';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
9
4
|
import { Icon, navigation } from '@wordpress/icons';
|
|
10
5
|
import { __ } from '@wordpress/i18n';
|
|
11
6
|
|
|
12
|
-
const PlaceholderPreview = ( {
|
|
7
|
+
const PlaceholderPreview = ( { isVisible = true } ) => {
|
|
13
8
|
return (
|
|
14
9
|
<div
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
{ 'is-loading': isLoading }
|
|
18
|
-
) }
|
|
10
|
+
aria-hidden={ ! isVisible ? true : undefined }
|
|
11
|
+
className="wp-block-navigation-placeholder__preview"
|
|
19
12
|
>
|
|
20
13
|
<div className="wp-block-navigation-placeholder__actions__indicator">
|
|
21
14
|
<Icon icon={ navigation } />
|
|
@@ -72,7 +72,9 @@ export default function UnsavedInnerBlocks( {
|
|
|
72
72
|
|
|
73
73
|
const { hasResolvedNavigationMenus, navigationMenus } = useNavigationMenu();
|
|
74
74
|
|
|
75
|
-
const createNavigationMenu = useCreateNavigationMenu(
|
|
75
|
+
const { create: createNavigationMenu } = useCreateNavigationMenu(
|
|
76
|
+
clientId
|
|
77
|
+
);
|
|
76
78
|
|
|
77
79
|
// Automatically save the uncontrolled blocks.
|
|
78
80
|
useEffect( async () => {
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useRegistry } from '@wordpress/data';
|
|
5
|
+
import { store as coreStore } from '@wordpress/core-data';
|
|
6
|
+
import { useState, useCallback } from '@wordpress/element';
|
|
7
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
import useCreateNavigationMenu from './use-create-navigation-menu';
|
|
13
|
+
import menuItemsToBlocks from '../menu-items-to-blocks';
|
|
14
|
+
|
|
15
|
+
export const CLASSIC_MENU_CONVERSION_SUCCESS = 'success';
|
|
16
|
+
export const CLASSIC_MENU_CONVERSION_ERROR = 'error';
|
|
17
|
+
export const CLASSIC_MENU_CONVERSION_PENDING = 'pending';
|
|
18
|
+
export const CLASSIC_MENU_CONVERSION_IDLE = 'idle';
|
|
19
|
+
|
|
20
|
+
function useConvertClassicToBlockMenu( clientId ) {
|
|
21
|
+
const { create: createNavigationMenu } = useCreateNavigationMenu(
|
|
22
|
+
clientId
|
|
23
|
+
);
|
|
24
|
+
const registry = useRegistry();
|
|
25
|
+
|
|
26
|
+
const [ status, setStatus ] = useState( CLASSIC_MENU_CONVERSION_IDLE );
|
|
27
|
+
const [ value, setValue ] = useState( null );
|
|
28
|
+
const [ error, setError ] = useState( null );
|
|
29
|
+
|
|
30
|
+
async function convertClassicMenuToBlockMenu( menuId, menuName ) {
|
|
31
|
+
let navigationMenu;
|
|
32
|
+
let classicMenuItems;
|
|
33
|
+
|
|
34
|
+
// 1. Fetch the classic Menu items.
|
|
35
|
+
try {
|
|
36
|
+
classicMenuItems = await registry
|
|
37
|
+
.resolveSelect( coreStore )
|
|
38
|
+
.getMenuItems( {
|
|
39
|
+
menus: menuId,
|
|
40
|
+
per_page: -1,
|
|
41
|
+
context: 'view',
|
|
42
|
+
} );
|
|
43
|
+
} catch ( err ) {
|
|
44
|
+
throw new Error(
|
|
45
|
+
sprintf(
|
|
46
|
+
// translators: %s: the name of a menu (e.g. Header navigation).
|
|
47
|
+
__( `Unable to fetch classic menu "%s" from API.` ),
|
|
48
|
+
menuName
|
|
49
|
+
),
|
|
50
|
+
{
|
|
51
|
+
cause: err,
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Handle offline response which resolves to `null`.
|
|
57
|
+
if ( classicMenuItems === null ) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
sprintf(
|
|
60
|
+
// translators: %s: the name of a menu (e.g. Header navigation).
|
|
61
|
+
__( `Unable to fetch classic menu "%s" from API.` ),
|
|
62
|
+
menuName
|
|
63
|
+
)
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// 2. Convert the classic items into blocks.
|
|
68
|
+
const { innerBlocks } = menuItemsToBlocks( classicMenuItems );
|
|
69
|
+
|
|
70
|
+
// 3. Create the `wp_navigation` Post with the blocks.
|
|
71
|
+
try {
|
|
72
|
+
navigationMenu = await createNavigationMenu(
|
|
73
|
+
menuName,
|
|
74
|
+
innerBlocks
|
|
75
|
+
);
|
|
76
|
+
} catch ( err ) {
|
|
77
|
+
throw new Error(
|
|
78
|
+
sprintf(
|
|
79
|
+
// translators: %s: the name of a menu (e.g. Header navigation).
|
|
80
|
+
__( `Unable to create Navigation Menu "%s".` ),
|
|
81
|
+
menuName
|
|
82
|
+
),
|
|
83
|
+
{
|
|
84
|
+
cause: err,
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return navigationMenu;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const convert = useCallback(
|
|
93
|
+
( menuId, menuName ) => {
|
|
94
|
+
if ( ! menuId || ! menuName ) {
|
|
95
|
+
setError( 'Unable to convert menu. Missing menu details.' );
|
|
96
|
+
setStatus( CLASSIC_MENU_CONVERSION_ERROR );
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
setStatus( CLASSIC_MENU_CONVERSION_PENDING );
|
|
101
|
+
setValue( null );
|
|
102
|
+
setError( null );
|
|
103
|
+
|
|
104
|
+
convertClassicMenuToBlockMenu( menuId, menuName )
|
|
105
|
+
.then( ( navMenu ) => {
|
|
106
|
+
setValue( navMenu );
|
|
107
|
+
setStatus( CLASSIC_MENU_CONVERSION_SUCCESS );
|
|
108
|
+
} )
|
|
109
|
+
.catch( ( err ) => {
|
|
110
|
+
setError( err?.message );
|
|
111
|
+
setStatus( CLASSIC_MENU_CONVERSION_ERROR );
|
|
112
|
+
|
|
113
|
+
// Rethrow error for debugging.
|
|
114
|
+
throw new Error(
|
|
115
|
+
sprintf(
|
|
116
|
+
// translators: %s: the name of a menu (e.g. Header navigation).
|
|
117
|
+
__( `Unable to create Navigation Menu "%s".` ),
|
|
118
|
+
menuName
|
|
119
|
+
),
|
|
120
|
+
{
|
|
121
|
+
cause: err,
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
} );
|
|
125
|
+
},
|
|
126
|
+
[ clientId ]
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
return {
|
|
130
|
+
convert,
|
|
131
|
+
status,
|
|
132
|
+
value,
|
|
133
|
+
error,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export default useConvertClassicToBlockMenu;
|
|
@@ -4,23 +4,58 @@
|
|
|
4
4
|
import { serialize } from '@wordpress/blocks';
|
|
5
5
|
import { store as coreStore } from '@wordpress/core-data';
|
|
6
6
|
import { useDispatch } from '@wordpress/data';
|
|
7
|
-
import { useCallback } from '@wordpress/element';
|
|
7
|
+
import { useState, useCallback } from '@wordpress/element';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Internal dependencies
|
|
11
11
|
*/
|
|
12
12
|
import useGenerateDefaultNavigationTitle from './use-generate-default-navigation-title';
|
|
13
13
|
|
|
14
|
+
export const CREATE_NAVIGATION_MENU_SUCCESS = 'success';
|
|
15
|
+
export const CREATE_NAVIGATION_MENU_ERROR = 'error';
|
|
16
|
+
export const CREATE_NAVIGATION_MENU_PENDING = 'pending';
|
|
17
|
+
export const CREATE_NAVIGATION_MENU_IDLE = 'idle';
|
|
18
|
+
|
|
14
19
|
export default function useCreateNavigationMenu( clientId ) {
|
|
20
|
+
const [ status, setStatus ] = useState( CREATE_NAVIGATION_MENU_IDLE );
|
|
21
|
+
const [ value, setValue ] = useState( null );
|
|
22
|
+
const [ error, setError ] = useState( null );
|
|
23
|
+
|
|
15
24
|
const { saveEntityRecord } = useDispatch( coreStore );
|
|
16
25
|
const generateDefaultTitle = useGenerateDefaultNavigationTitle( clientId );
|
|
17
26
|
|
|
18
27
|
// This callback uses data from the two placeholder steps and only creates
|
|
19
28
|
// a new navigation menu when the user completes the final step.
|
|
20
|
-
|
|
29
|
+
const create = useCallback(
|
|
21
30
|
async ( title = null, blocks = [] ) => {
|
|
31
|
+
// Guard against creating Navigations without a title.
|
|
32
|
+
// Note you can pass no title, but if one is passed it must be
|
|
33
|
+
// a string otherwise the title may end up being empty.
|
|
34
|
+
if ( title && typeof title !== 'string' ) {
|
|
35
|
+
setError(
|
|
36
|
+
'Invalid title supplied when creating Navigation Menu.'
|
|
37
|
+
);
|
|
38
|
+
setStatus( CREATE_NAVIGATION_MENU_ERROR );
|
|
39
|
+
throw new Error(
|
|
40
|
+
`Value of supplied title argument was not a string.`
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
setStatus( CREATE_NAVIGATION_MENU_PENDING );
|
|
45
|
+
setValue( null );
|
|
46
|
+
setError( null );
|
|
47
|
+
|
|
22
48
|
if ( ! title ) {
|
|
23
|
-
title = await generateDefaultTitle()
|
|
49
|
+
title = await generateDefaultTitle().catch( ( err ) => {
|
|
50
|
+
setError( err?.message );
|
|
51
|
+
setStatus( CREATE_NAVIGATION_MENU_ERROR );
|
|
52
|
+
throw new Error(
|
|
53
|
+
'Failed to create title when saving new Navigation Menu.',
|
|
54
|
+
{
|
|
55
|
+
cause: err,
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
} );
|
|
24
59
|
}
|
|
25
60
|
const record = {
|
|
26
61
|
title,
|
|
@@ -28,12 +63,28 @@ export default function useCreateNavigationMenu( clientId ) {
|
|
|
28
63
|
status: 'publish',
|
|
29
64
|
};
|
|
30
65
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
66
|
+
// Return affords ability to await on this function directly
|
|
67
|
+
return saveEntityRecord( 'postType', 'wp_navigation', record )
|
|
68
|
+
.then( ( response ) => {
|
|
69
|
+
setValue( response );
|
|
70
|
+
setStatus( CREATE_NAVIGATION_MENU_SUCCESS );
|
|
71
|
+
return response;
|
|
72
|
+
} )
|
|
73
|
+
.catch( ( err ) => {
|
|
74
|
+
setError( err?.message );
|
|
75
|
+
setStatus( CREATE_NAVIGATION_MENU_ERROR );
|
|
76
|
+
throw new Error( 'Unable to save new Navigation Menu', {
|
|
77
|
+
cause: err,
|
|
78
|
+
} );
|
|
79
|
+
} );
|
|
36
80
|
},
|
|
37
81
|
[ serialize, saveEntityRecord ]
|
|
38
82
|
);
|
|
83
|
+
|
|
84
|
+
return {
|
|
85
|
+
create,
|
|
86
|
+
status,
|
|
87
|
+
value,
|
|
88
|
+
error,
|
|
89
|
+
};
|
|
39
90
|
}
|
|
@@ -5,19 +5,19 @@ import { useRef } from '@wordpress/element';
|
|
|
5
5
|
import { useDispatch } from '@wordpress/data';
|
|
6
6
|
import { store as noticeStore } from '@wordpress/notices';
|
|
7
7
|
|
|
8
|
-
function useNavigationNotice( { name, message } = {} ) {
|
|
8
|
+
function useNavigationNotice( { name, message = '' } = {} ) {
|
|
9
9
|
const noticeRef = useRef();
|
|
10
10
|
|
|
11
11
|
const { createWarningNotice, removeNotice } = useDispatch( noticeStore );
|
|
12
12
|
|
|
13
|
-
const showNotice = () => {
|
|
13
|
+
const showNotice = ( customMsg ) => {
|
|
14
14
|
if ( noticeRef.current ) {
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
noticeRef.current = name;
|
|
19
19
|
|
|
20
|
-
createWarningNotice( message, {
|
|
20
|
+
createWarningNotice( customMsg || message, {
|
|
21
21
|
id: noticeRef.current,
|
|
22
22
|
type: 'snackbar',
|
|
23
23
|
} );
|
|
@@ -119,7 +119,6 @@
|
|
|
119
119
|
display: none;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
|
|
123
122
|
/**
|
|
124
123
|
* Colors Selector component
|
|
125
124
|
*/
|
|
@@ -262,6 +261,10 @@ $color-control-label-height: 20px;
|
|
|
262
261
|
}
|
|
263
262
|
}
|
|
264
263
|
|
|
264
|
+
.wp-block-navigation-placeholder .components-spinner {
|
|
265
|
+
margin-top: 0;
|
|
266
|
+
}
|
|
267
|
+
|
|
265
268
|
// Unselected state.
|
|
266
269
|
.wp-block-navigation-placeholder__preview {
|
|
267
270
|
display: flex;
|
|
@@ -558,6 +561,12 @@ body.editor-styles-wrapper
|
|
|
558
561
|
}
|
|
559
562
|
}
|
|
560
563
|
|
|
564
|
+
// Space spinner to give it breathing
|
|
565
|
+
// room when block is selected and has focus outline.
|
|
566
|
+
.wp-block-navigation .components-spinner {
|
|
567
|
+
padding: $grid-unit-10 $grid-unit-15;
|
|
568
|
+
}
|
|
569
|
+
|
|
561
570
|
.wp-block-navigation__unsaved-changes {
|
|
562
571
|
position: relative;
|
|
563
572
|
|
|
@@ -608,3 +617,16 @@ body.editor-styles-wrapper
|
|
|
608
617
|
background-color: $white;
|
|
609
618
|
}
|
|
610
619
|
}
|
|
620
|
+
|
|
621
|
+
// Temp - hide toolbar component when Nav Menu Selector is empty.
|
|
622
|
+
// TODO - extract state to common hook or parent component to avoid render.
|
|
623
|
+
.wp-block-navigation__toolbar-menu-selector.components-toolbar-group:empty {
|
|
624
|
+
display: none;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
// Temp - hide adjacent <hr>s when Nav Menu Selector is empty.
|
|
628
|
+
// TODO - extract state to common hook or parent component to avoid render of <hr>.
|
|
629
|
+
.wp-block-navigation-placeholder__actions hr + hr {
|
|
630
|
+
display: none;
|
|
631
|
+
}
|
|
632
|
+
|
|
@@ -78,7 +78,7 @@ function mapMenuItemsToBlocks( menuItems ) {
|
|
|
78
78
|
// Create block with nested "innerBlocks".
|
|
79
79
|
const block = createBlock( blockType, attributes, nestedBlocks );
|
|
80
80
|
|
|
81
|
-
// Create mapping for menuItem -> block
|
|
81
|
+
// Create mapping for menuItem -> block.
|
|
82
82
|
mapping[ menuItem.id ] = block.clientId;
|
|
83
83
|
|
|
84
84
|
return block;
|
|
@@ -320,7 +320,7 @@ describe( 'converting menu items to blocks', () => {
|
|
|
320
320
|
type_label: 'Custom Link',
|
|
321
321
|
object: 'custom',
|
|
322
322
|
parent: 0,
|
|
323
|
-
menu_order: 0, //
|
|
323
|
+
menu_order: 0, // Capturing 0 edge case.
|
|
324
324
|
target: '',
|
|
325
325
|
classes: [ '' ],
|
|
326
326
|
xfn: [ '' ],
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { useSelect } from '@wordpress/data';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
store as coreStore,
|
|
7
|
+
__experimentalUseEntityRecords as useEntityRecords,
|
|
8
|
+
} from '@wordpress/core-data';
|
|
6
9
|
|
|
7
10
|
/**
|
|
8
11
|
* @typedef {Object} NavigationEntitiesData
|
|
@@ -34,31 +37,17 @@ export default function useNavigationEntities( menuId ) {
|
|
|
34
37
|
}
|
|
35
38
|
|
|
36
39
|
function useMenuEntities() {
|
|
37
|
-
const {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
const menusParameters = [ { per_page: -1, context: 'view' } ];
|
|
44
|
-
|
|
45
|
-
return {
|
|
46
|
-
menus: getMenus( ...menusParameters ),
|
|
47
|
-
isResolvingMenus: isResolving( 'getMenus', menusParameters ),
|
|
48
|
-
hasResolvedMenus: hasFinishedResolution(
|
|
49
|
-
'getMenus',
|
|
50
|
-
menusParameters
|
|
51
|
-
),
|
|
52
|
-
};
|
|
53
|
-
},
|
|
54
|
-
[]
|
|
40
|
+
const { records, isResolving, hasResolved } = useEntityRecords(
|
|
41
|
+
'root',
|
|
42
|
+
'menu',
|
|
43
|
+
{ per_page: -1, context: 'view' }
|
|
55
44
|
);
|
|
56
45
|
|
|
57
46
|
return {
|
|
58
|
-
menus,
|
|
59
|
-
isResolvingMenus,
|
|
60
|
-
hasResolvedMenus,
|
|
61
|
-
hasMenus: !! (
|
|
47
|
+
menus: records,
|
|
48
|
+
isResolvingMenus: isResolving,
|
|
49
|
+
hasResolvedMenus: hasResolved,
|
|
50
|
+
hasMenus: !! ( hasResolved && records?.length ),
|
|
62
51
|
};
|
|
63
52
|
}
|
|
64
53
|
|
|
@@ -100,45 +89,22 @@ function useMenuItemEntities( menuId ) {
|
|
|
100
89
|
}
|
|
101
90
|
|
|
102
91
|
function usePageEntities() {
|
|
103
|
-
const {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
'page',
|
|
114
|
-
{
|
|
115
|
-
parent: 0,
|
|
116
|
-
order: 'asc',
|
|
117
|
-
orderby: 'id',
|
|
118
|
-
per_page: -1,
|
|
119
|
-
context: 'view',
|
|
120
|
-
},
|
|
121
|
-
];
|
|
122
|
-
|
|
123
|
-
return {
|
|
124
|
-
pages: getEntityRecords( ...pagesParameters ) || null,
|
|
125
|
-
isResolvingPages: isResolving(
|
|
126
|
-
'getEntityRecords',
|
|
127
|
-
pagesParameters
|
|
128
|
-
),
|
|
129
|
-
hasResolvedPages: hasFinishedResolution(
|
|
130
|
-
'getEntityRecords',
|
|
131
|
-
pagesParameters
|
|
132
|
-
),
|
|
133
|
-
};
|
|
134
|
-
},
|
|
135
|
-
[]
|
|
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
|
+
}
|
|
136
102
|
);
|
|
137
103
|
|
|
138
104
|
return {
|
|
139
|
-
pages,
|
|
140
|
-
isResolvingPages,
|
|
141
|
-
hasResolvedPages,
|
|
142
|
-
hasPages: !! (
|
|
105
|
+
pages: records,
|
|
106
|
+
isResolvingPages: isResolving,
|
|
107
|
+
hasResolvedPages: hasResolved,
|
|
108
|
+
hasPages: !! ( hasResolved && records?.length ),
|
|
143
109
|
};
|
|
144
110
|
}
|
|
@@ -12,6 +12,7 @@ export default function useNavigationMenu( ref ) {
|
|
|
12
12
|
getEditedEntityRecord,
|
|
13
13
|
getEntityRecords,
|
|
14
14
|
hasFinishedResolution,
|
|
15
|
+
isResolving,
|
|
15
16
|
canUser,
|
|
16
17
|
} = select( coreStore );
|
|
17
18
|
|
|
@@ -80,6 +81,10 @@ export default function useNavigationMenu( ref ) {
|
|
|
80
81
|
[ 'delete', 'navigation', ref ]
|
|
81
82
|
),
|
|
82
83
|
canUserCreateNavigationMenu: canUser( 'create', 'navigation' ),
|
|
84
|
+
isResolvingCanUserCreateNavigationMenu: isResolving(
|
|
85
|
+
'canUser',
|
|
86
|
+
[ 'create', 'navigation' ]
|
|
87
|
+
),
|
|
83
88
|
hasResolvedCanUserCreateNavigationMenu: hasFinishedResolution(
|
|
84
89
|
'canUser',
|
|
85
90
|
[ 'create', 'navigation' ]
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
// FALLBACK: this is only used when the server does not understand the variations property in the
|
|
13
13
|
// register_block_type call. see navigation-link/index.php.
|
|
14
14
|
// Delete this file when supported WP ranges understand the `variations` property when passed to
|
|
15
|
-
// register_block_type in index.php
|
|
15
|
+
// register_block_type in index.php.
|
|
16
16
|
const fallbackVariations = [
|
|
17
17
|
{
|
|
18
18
|
name: 'link',
|