@wordpress/block-library 6.0.20 → 6.0.26

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.
Files changed (139) hide show
  1. package/build/gallery/constants.js +5 -1
  2. package/build/gallery/constants.js.map +1 -1
  3. package/build/gallery/transforms.js +8 -2
  4. package/build/gallery/transforms.js.map +1 -1
  5. package/build/gallery/utils.js +4 -3
  6. package/build/gallery/utils.js.map +1 -1
  7. package/build/heading/edit.js +14 -2
  8. package/build/heading/edit.js.map +1 -1
  9. package/build/navigation/edit/index.js +8 -2
  10. package/build/navigation/edit/index.js.map +1 -1
  11. package/build/navigation/edit/navigation-menu-selector.js +42 -4
  12. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  13. package/build/navigation/edit/placeholder/index.js +6 -41
  14. package/build/navigation/edit/placeholder/index.js.map +1 -1
  15. package/build/navigation/use-convert-classic-menu.js +59 -0
  16. package/build/navigation/use-convert-classic-menu.js.map +1 -0
  17. package/build/page-list/edit.js +37 -10
  18. package/build/page-list/edit.js.map +1 -1
  19. package/build/post-featured-image/dimension-controls.js +50 -30
  20. package/build/post-featured-image/dimension-controls.js.map +1 -1
  21. package/build/post-featured-image/edit.js +4 -2
  22. package/build/post-featured-image/edit.js.map +1 -1
  23. package/build/site-logo/edit.js +0 -25
  24. package/build/site-logo/edit.js.map +1 -1
  25. package/build/social-links/deprecated.js +1 -62
  26. package/build/social-links/deprecated.js.map +1 -1
  27. package/build/social-links/edit.js +1 -1
  28. package/build/social-links/edit.js.map +1 -1
  29. package/build/spacer/controls.js +111 -0
  30. package/build/spacer/controls.js.map +1 -0
  31. package/build/spacer/controls.native.js +95 -0
  32. package/build/spacer/controls.native.js.map +1 -0
  33. package/build/spacer/deprecated.js +53 -0
  34. package/build/spacer/deprecated.js.map +1 -0
  35. package/build/spacer/edit.js +111 -82
  36. package/build/spacer/edit.js.map +1 -1
  37. package/build/spacer/edit.native.js +76 -0
  38. package/build/spacer/edit.native.js.map +1 -0
  39. package/build/spacer/index.js +7 -4
  40. package/build/spacer/index.js.map +1 -1
  41. package/build/spacer/save.js +6 -3
  42. package/build/spacer/save.js.map +1 -1
  43. package/build-module/gallery/constants.js +2 -0
  44. package/build-module/gallery/constants.js.map +1 -1
  45. package/build-module/gallery/transforms.js +8 -2
  46. package/build-module/gallery/transforms.js.map +1 -1
  47. package/build-module/gallery/utils.js +5 -4
  48. package/build-module/gallery/utils.js.map +1 -1
  49. package/build-module/heading/edit.js +15 -3
  50. package/build-module/heading/edit.js.map +1 -1
  51. package/build-module/navigation/edit/index.js +7 -2
  52. package/build-module/navigation/edit/index.js.map +1 -1
  53. package/build-module/navigation/edit/navigation-menu-selector.js +39 -4
  54. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  55. package/build-module/navigation/edit/placeholder/index.js +5 -41
  56. package/build-module/navigation/edit/placeholder/index.js.map +1 -1
  57. package/build-module/navigation/use-convert-classic-menu.js +47 -0
  58. package/build-module/navigation/use-convert-classic-menu.js.map +1 -0
  59. package/build-module/page-list/edit.js +38 -11
  60. package/build-module/page-list/edit.js.map +1 -1
  61. package/build-module/post-featured-image/dimension-controls.js +52 -29
  62. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  63. package/build-module/post-featured-image/edit.js +4 -2
  64. package/build-module/post-featured-image/edit.js.map +1 -1
  65. package/build-module/site-logo/edit.js +0 -25
  66. package/build-module/site-logo/edit.js.map +1 -1
  67. package/build-module/social-links/deprecated.js +1 -62
  68. package/build-module/social-links/deprecated.js.map +1 -1
  69. package/build-module/social-links/edit.js +1 -1
  70. package/build-module/social-links/edit.js.map +1 -1
  71. package/build-module/spacer/controls.js +101 -0
  72. package/build-module/spacer/controls.js.map +1 -0
  73. package/build-module/spacer/controls.native.js +82 -0
  74. package/build-module/spacer/controls.native.js.map +1 -0
  75. package/build-module/spacer/deprecated.js +44 -0
  76. package/build-module/spacer/deprecated.js.map +1 -0
  77. package/build-module/spacer/edit.js +108 -82
  78. package/build-module/spacer/edit.js.map +1 -1
  79. package/build-module/spacer/edit.native.js +61 -0
  80. package/build-module/spacer/edit.native.js.map +1 -0
  81. package/build-module/spacer/index.js +6 -4
  82. package/build-module/spacer/index.js.map +1 -1
  83. package/build-module/spacer/save.js +6 -3
  84. package/build-module/spacer/save.js.map +1 -1
  85. package/build-style/common-rtl.css +8 -0
  86. package/build-style/common.css +8 -0
  87. package/build-style/cover/style-rtl.css +60 -0
  88. package/build-style/cover/style.css +60 -0
  89. package/build-style/editor-rtl.css +8 -7
  90. package/build-style/editor.css +8 -7
  91. package/build-style/gallery/style-rtl.css +2 -1
  92. package/build-style/gallery/style.css +2 -1
  93. package/build-style/image/style-rtl.css +0 -2
  94. package/build-style/image/style.css +0 -2
  95. package/build-style/page-list/editor-rtl.css +4 -0
  96. package/build-style/page-list/editor.css +4 -0
  97. package/build-style/post-featured-image/editor-rtl.css +0 -7
  98. package/build-style/post-featured-image/editor.css +0 -7
  99. package/build-style/post-template/style-rtl.css +4 -0
  100. package/build-style/post-template/style.css +4 -0
  101. package/build-style/spacer/editor-rtl.css +4 -0
  102. package/build-style/spacer/editor.css +4 -0
  103. package/build-style/style-rtl.css +74 -3
  104. package/build-style/style.css +74 -3
  105. package/package.json +8 -8
  106. package/src/common.scss +8 -0
  107. package/src/cover/style.scss +13 -0
  108. package/src/gallery/constants.js +2 -0
  109. package/src/gallery/style.scss +4 -1
  110. package/src/gallery/transforms.js +7 -1
  111. package/src/gallery/utils.js +7 -3
  112. package/src/heading/edit.js +18 -5
  113. package/src/image/style.scss +0 -2
  114. package/src/navigation/edit/index.js +9 -1
  115. package/src/navigation/edit/navigation-menu-selector.js +65 -15
  116. package/src/navigation/edit/placeholder/index.js +9 -44
  117. package/src/navigation/use-convert-classic-menu.js +58 -0
  118. package/src/page-list/edit.js +47 -9
  119. package/src/page-list/editor.scss +4 -0
  120. package/src/page-list/index.php +5 -0
  121. package/src/post-featured-image/dimension-controls.js +75 -50
  122. package/src/post-featured-image/edit.js +6 -4
  123. package/src/post-featured-image/editor.scss +0 -8
  124. package/src/post-template/style.scss +5 -0
  125. package/src/search/index.php +6 -4
  126. package/src/site-logo/edit.js +1 -32
  127. package/src/site-logo/index.php +1 -1
  128. package/src/site-title/index.php +0 -1
  129. package/src/social-links/deprecated.js +0 -59
  130. package/src/social-links/edit.js +1 -1
  131. package/src/spacer/block.json +3 -3
  132. package/src/spacer/controls.js +108 -0
  133. package/src/spacer/controls.native.js +82 -0
  134. package/src/spacer/deprecated.js +41 -0
  135. package/src/spacer/edit.js +127 -113
  136. package/src/spacer/edit.native.js +68 -0
  137. package/src/spacer/editor.scss +6 -0
  138. package/src/spacer/index.js +2 -0
  139. package/src/spacer/save.js +5 -2
@@ -5,7 +5,6 @@ import { createElement, Fragment } from "@wordpress/element";
5
5
  */
6
6
  import { createBlock } from '@wordpress/blocks';
7
7
  import { Placeholder, Button, DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
8
- import { useCallback, useState, useEffect } from '@wordpress/element';
9
8
  import { __ } from '@wordpress/i18n';
10
9
  import { navigation, Icon } from '@wordpress/icons';
11
10
  import { decodeEntities } from '@wordpress/html-entities';
@@ -15,15 +14,14 @@ import { decodeEntities } from '@wordpress/html-entities';
15
14
 
16
15
  import useNavigationEntities from '../../use-navigation-entities';
17
16
  import PlaceholderPreview from './placeholder-preview';
18
- import menuItemsToBlocks from '../../menu-items-to-blocks';
19
17
  import useNavigationMenu from '../../use-navigation-menu';
20
18
  import useCreateNavigationMenu from '../use-create-navigation-menu';
19
+ import useConvertClassicMenu from '../../use-convert-classic-menu';
21
20
 
22
21
  const ExistingMenusDropdown = _ref => {
23
22
  let {
24
23
  canSwitchNavigationMenu,
25
24
  navigationMenus,
26
- setSelectedMenu,
27
25
  onFinish,
28
26
  menus,
29
27
  onCreateFromMenu,
@@ -50,7 +48,6 @@ const ExistingMenusDropdown = _ref => {
50
48
  }, canSwitchNavigationMenu && (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.map(menu => {
51
49
  return createElement(MenuItem, {
52
50
  onClick: () => {
53
- setSelectedMenu(menu.id);
54
51
  onFinish(menu);
55
52
  },
56
53
  onClose: onClose,
@@ -61,8 +58,7 @@ const ExistingMenusDropdown = _ref => {
61
58
  }, menus === null || menus === void 0 ? void 0 : menus.map(menu => {
62
59
  return createElement(MenuItem, {
63
60
  onClick: () => {
64
- setSelectedMenu(menu.id);
65
- onCreateFromMenu(menu.name);
61
+ onCreateFromMenu(menu.id, menu.name);
66
62
  },
67
63
  onClose: onClose,
68
64
  key: menu.id
@@ -79,9 +75,6 @@ export default function NavigationPlaceholder(_ref3) {
79
75
  hasResolvedNavigationMenus,
80
76
  canUserCreateNavigation = false
81
77
  } = _ref3;
82
- const [selectedMenu, setSelectedMenu] = useState();
83
- const [isCreatingFromMenu, setIsCreatingFromMenu] = useState(false);
84
- const [menuName, setMenuName] = useState('');
85
78
  const createNavigationMenu = useCreateNavigationMenu(clientId);
86
79
 
87
80
  const onFinishMenuCreation = async function (blocks) {
@@ -95,35 +88,15 @@ export default function NavigationPlaceholder(_ref3) {
95
88
  onFinish(navigationMenu, blocks);
96
89
  };
97
90
 
91
+ const convertClassicMenu = useConvertClassicMenu(onFinishMenuCreation);
98
92
  const {
99
93
  isResolvingPages,
100
94
  menus,
101
95
  isResolvingMenus,
102
- menuItems,
103
- hasResolvedMenuItems,
104
96
  hasPages,
105
97
  hasMenus
106
- } = useNavigationEntities(selectedMenu);
98
+ } = useNavigationEntities();
107
99
  const isStillLoading = isResolvingPages || isResolvingMenus;
108
- const createFromMenu = useCallback(name => {
109
- const {
110
- innerBlocks: blocks
111
- } = menuItemsToBlocks(menuItems);
112
- onFinishMenuCreation(blocks, name);
113
- }, [menuItems, menuItemsToBlocks, onFinish]);
114
-
115
- const onCreateFromMenu = name => {
116
- // If we have menu items, create the block right away.
117
- if (hasResolvedMenuItems) {
118
- createFromMenu(name);
119
- return;
120
- } // Otherwise, create the block when resolution finishes.
121
-
122
-
123
- setIsCreatingFromMenu(true); // Store the name to use later.
124
-
125
- setMenuName(name);
126
- };
127
100
 
128
101
  const onCreateEmptyMenu = () => {
129
102
  onFinishMenuCreation([]);
@@ -134,14 +107,6 @@ export default function NavigationPlaceholder(_ref3) {
134
107
  onFinishMenuCreation(block);
135
108
  };
136
109
 
137
- useEffect(() => {
138
- // If the user selected a menu but we had to wait for menu items to
139
- // finish resolving, then create the block once resolution finishes.
140
- if (isCreatingFromMenu && hasResolvedMenuItems) {
141
- createFromMenu(menuName);
142
- setIsCreatingFromMenu(false);
143
- }
144
- }, [isCreatingFromMenu, hasResolvedMenuItems, menuName]);
145
110
  const {
146
111
  navigationMenus
147
112
  } = useNavigationMenu();
@@ -160,10 +125,9 @@ export default function NavigationPlaceholder(_ref3) {
160
125
  }), ' ', __('Navigation')), createElement("hr", null), hasMenus || navigationMenus !== null && navigationMenus !== void 0 && navigationMenus.length ? createElement(Fragment, null, createElement(ExistingMenusDropdown, {
161
126
  canSwitchNavigationMenu: canSwitchNavigationMenu,
162
127
  navigationMenus: navigationMenus,
163
- setSelectedMenu: setSelectedMenu,
164
128
  onFinish: onFinish,
165
129
  menus: menus,
166
- onCreateFromMenu: onCreateFromMenu,
130
+ onCreateFromMenu: convertClassicMenu,
167
131
  showClassicMenus: canUserCreateNavigation
168
132
  }), createElement("hr", null)) : undefined, canUserCreateNavigation && hasPages ? createElement(Fragment, null, createElement(Button, {
169
133
  variant: "tertiary",
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/placeholder/index.js"],"names":["createBlock","Placeholder","Button","DropdownMenu","MenuGroup","MenuItem","useCallback","useState","useEffect","__","navigation","Icon","decodeEntities","useNavigationEntities","PlaceholderPreview","menuItemsToBlocks","useNavigationMenu","useCreateNavigationMenu","ExistingMenusDropdown","canSwitchNavigationMenu","navigationMenus","setSelectedMenu","onFinish","menus","onCreateFromMenu","showClassicMenus","toggleProps","variant","iconPosition","className","isAlternate","onClose","map","menu","id","title","rendered","name","NavigationPlaceholder","clientId","hasResolvedNavigationMenus","canUserCreateNavigation","selectedMenu","isCreatingFromMenu","setIsCreatingFromMenu","menuName","setMenuName","createNavigationMenu","onFinishMenuCreation","blocks","navigationMenuTitle","navigationMenu","isResolvingPages","isResolvingMenus","menuItems","hasResolvedMenuItems","hasPages","hasMenus","isStillLoading","createFromMenu","innerBlocks","onCreateEmptyMenu","onCreateAllPages","block","length","undefined"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tPlaceholder,\n\tButton,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n} from '@wordpress/components';\nimport { useCallback, useState, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { navigation, Icon } from '@wordpress/icons';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\n\nimport useNavigationEntities from '../../use-navigation-entities';\nimport PlaceholderPreview from './placeholder-preview';\nimport menuItemsToBlocks from '../../menu-items-to-blocks';\nimport useNavigationMenu from '../../use-navigation-menu';\nimport useCreateNavigationMenu from '../use-create-navigation-menu';\n\nconst ExistingMenusDropdown = ( {\n\tcanSwitchNavigationMenu,\n\tnavigationMenus,\n\tsetSelectedMenu,\n\tonFinish,\n\tmenus,\n\tonCreateFromMenu,\n\tshowClassicMenus = false,\n} ) => {\n\tconst toggleProps = {\n\t\tvariant: 'tertiary',\n\t\ticonPosition: 'right',\n\t\tclassName: 'wp-block-navigation-placeholder__actions__dropdown',\n\t};\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttext={ __( 'Select menu' ) }\n\t\t\ticon={ null }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tpopoverProps={ { isAlternate: true } }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup label={ __( 'Menus' ) }>\n\t\t\t\t\t\t{ canSwitchNavigationMenu &&\n\t\t\t\t\t\t\tnavigationMenus?.map( ( menu ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetSelectedMenu( menu.id );\n\t\t\t\t\t\t\t\t\t\t\tonFinish( menu );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t\t\tkey={ menu.id }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ decodeEntities(\n\t\t\t\t\t\t\t\t\t\t\tmenu.title.rendered\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t{ showClassicMenus && (\n\t\t\t\t\t\t<MenuGroup label={ __( 'Classic Menus' ) }>\n\t\t\t\t\t\t\t{ menus?.map( ( menu ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetSelectedMenu( menu.id );\n\t\t\t\t\t\t\t\t\t\t\tonCreateFromMenu( menu.name );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t\t\tkey={ menu.id }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ decodeEntities( menu.name ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n};\n\nexport default function NavigationPlaceholder( {\n\tclientId,\n\tonFinish,\n\tcanSwitchNavigationMenu,\n\thasResolvedNavigationMenus,\n\tcanUserCreateNavigation = false,\n} ) {\n\tconst [ selectedMenu, setSelectedMenu ] = useState();\n\tconst [ isCreatingFromMenu, setIsCreatingFromMenu ] = useState( false );\n\tconst [ menuName, setMenuName ] = useState( '' );\n\tconst createNavigationMenu = useCreateNavigationMenu( clientId );\n\n\tconst onFinishMenuCreation = async (\n\t\tblocks,\n\t\tnavigationMenuTitle = null\n\t) => {\n\t\tif ( ! canUserCreateNavigation ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst navigationMenu = await createNavigationMenu(\n\t\t\tnavigationMenuTitle,\n\t\t\tblocks\n\t\t);\n\t\tonFinish( navigationMenu, blocks );\n\t};\n\n\tconst {\n\t\tisResolvingPages,\n\t\tmenus,\n\t\tisResolvingMenus,\n\t\tmenuItems,\n\t\thasResolvedMenuItems,\n\t\thasPages,\n\t\thasMenus,\n\t} = useNavigationEntities( selectedMenu );\n\n\tconst isStillLoading = isResolvingPages || isResolvingMenus;\n\n\tconst createFromMenu = useCallback(\n\t\t( name ) => {\n\t\t\tconst { innerBlocks: blocks } = menuItemsToBlocks( menuItems );\n\t\t\tonFinishMenuCreation( blocks, name );\n\t\t},\n\t\t[ menuItems, menuItemsToBlocks, onFinish ]\n\t);\n\n\tconst onCreateFromMenu = ( name ) => {\n\t\t// If we have menu items, create the block right away.\n\t\tif ( hasResolvedMenuItems ) {\n\t\t\tcreateFromMenu( name );\n\t\t\treturn;\n\t\t}\n\n\t\t// Otherwise, create the block when resolution finishes.\n\t\tsetIsCreatingFromMenu( true );\n\t\t// Store the name to use later.\n\t\tsetMenuName( name );\n\t};\n\n\tconst onCreateEmptyMenu = () => {\n\t\tonFinishMenuCreation( [] );\n\t};\n\n\tconst onCreateAllPages = () => {\n\t\tconst block = [ createBlock( 'core/page-list' ) ];\n\t\tonFinishMenuCreation( block );\n\t};\n\n\tuseEffect( () => {\n\t\t// If the user selected a menu but we had to wait for menu items to\n\t\t// finish resolving, then create the block once resolution finishes.\n\t\tif ( isCreatingFromMenu && hasResolvedMenuItems ) {\n\t\t\tcreateFromMenu( menuName );\n\t\t\tsetIsCreatingFromMenu( false );\n\t\t}\n\t}, [ isCreatingFromMenu, hasResolvedMenuItems, menuName ] );\n\n\tconst { navigationMenus } = useNavigationMenu();\n\n\treturn (\n\t\t<>\n\t\t\t{ ( ! hasResolvedNavigationMenus || isStillLoading ) && (\n\t\t\t\t<PlaceholderPreview isLoading />\n\t\t\t) }\n\t\t\t{ hasResolvedNavigationMenus && ! isStillLoading && (\n\t\t\t\t<Placeholder className=\"wp-block-navigation-placeholder\">\n\t\t\t\t\t<PlaceholderPreview />\n\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__controls\">\n\t\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__actions\">\n\t\t\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__actions__indicator\">\n\t\t\t\t\t\t\t\t<Icon icon={ navigation } />{ ' ' }\n\t\t\t\t\t\t\t\t{ __( 'Navigation' ) }\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<hr />\n\n\t\t\t\t\t\t\t{ hasMenus || navigationMenus?.length ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<ExistingMenusDropdown\n\t\t\t\t\t\t\t\t\t\tcanSwitchNavigationMenu={\n\t\t\t\t\t\t\t\t\t\t\tcanSwitchNavigationMenu\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tnavigationMenus={ navigationMenus }\n\t\t\t\t\t\t\t\t\t\tsetSelectedMenu={ setSelectedMenu }\n\t\t\t\t\t\t\t\t\t\tonFinish={ onFinish }\n\t\t\t\t\t\t\t\t\t\tmenus={ menus }\n\t\t\t\t\t\t\t\t\t\tonCreateFromMenu={ onCreateFromMenu }\n\t\t\t\t\t\t\t\t\t\tshowClassicMenus={\n\t\t\t\t\t\t\t\t\t\t\tcanUserCreateNavigation\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) : undefined }\n\t\t\t\t\t\t\t{ canUserCreateNavigation && hasPages ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\tonClick={ onCreateAllPages }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Add all pages' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) : undefined }\n\n\t\t\t\t\t\t\t{ canUserCreateNavigation && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tonClick={ onCreateEmptyMenu }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Start empty' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</Placeholder>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/placeholder/index.js"],"names":["createBlock","Placeholder","Button","DropdownMenu","MenuGroup","MenuItem","__","navigation","Icon","decodeEntities","useNavigationEntities","PlaceholderPreview","useNavigationMenu","useCreateNavigationMenu","useConvertClassicMenu","ExistingMenusDropdown","canSwitchNavigationMenu","navigationMenus","onFinish","menus","onCreateFromMenu","showClassicMenus","toggleProps","variant","iconPosition","className","isAlternate","onClose","map","menu","id","title","rendered","name","NavigationPlaceholder","clientId","hasResolvedNavigationMenus","canUserCreateNavigation","createNavigationMenu","onFinishMenuCreation","blocks","navigationMenuTitle","navigationMenu","convertClassicMenu","isResolvingPages","isResolvingMenus","hasPages","hasMenus","isStillLoading","onCreateEmptyMenu","onCreateAllPages","block","length","undefined"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tPlaceholder,\n\tButton,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { navigation, Icon } from '@wordpress/icons';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\n\nimport useNavigationEntities from '../../use-navigation-entities';\nimport PlaceholderPreview from './placeholder-preview';\nimport useNavigationMenu from '../../use-navigation-menu';\nimport useCreateNavigationMenu from '../use-create-navigation-menu';\nimport useConvertClassicMenu from '../../use-convert-classic-menu';\n\nconst ExistingMenusDropdown = ( {\n\tcanSwitchNavigationMenu,\n\tnavigationMenus,\n\tonFinish,\n\tmenus,\n\tonCreateFromMenu,\n\tshowClassicMenus = false,\n} ) => {\n\tconst toggleProps = {\n\t\tvariant: 'tertiary',\n\t\ticonPosition: 'right',\n\t\tclassName: 'wp-block-navigation-placeholder__actions__dropdown',\n\t};\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttext={ __( 'Select menu' ) }\n\t\t\ticon={ null }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tpopoverProps={ { isAlternate: true } }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup label={ __( 'Menus' ) }>\n\t\t\t\t\t\t{ canSwitchNavigationMenu &&\n\t\t\t\t\t\t\tnavigationMenus?.map( ( menu ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonFinish( menu );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t\t\tkey={ menu.id }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ decodeEntities(\n\t\t\t\t\t\t\t\t\t\t\tmenu.title.rendered\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t{ showClassicMenus && (\n\t\t\t\t\t\t<MenuGroup label={ __( 'Classic Menus' ) }>\n\t\t\t\t\t\t\t{ menus?.map( ( menu ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonCreateFromMenu(\n\t\t\t\t\t\t\t\t\t\t\t\tmenu.id,\n\t\t\t\t\t\t\t\t\t\t\t\tmenu.name\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t\t\tkey={ menu.id }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ decodeEntities( menu.name ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n};\n\nexport default function NavigationPlaceholder( {\n\tclientId,\n\tonFinish,\n\tcanSwitchNavigationMenu,\n\thasResolvedNavigationMenus,\n\tcanUserCreateNavigation = false,\n} ) {\n\tconst createNavigationMenu = useCreateNavigationMenu( clientId );\n\n\tconst onFinishMenuCreation = async (\n\t\tblocks,\n\t\tnavigationMenuTitle = null\n\t) => {\n\t\tif ( ! canUserCreateNavigation ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst navigationMenu = await createNavigationMenu(\n\t\t\tnavigationMenuTitle,\n\t\t\tblocks\n\t\t);\n\t\tonFinish( navigationMenu, blocks );\n\t};\n\n\tconst convertClassicMenu = useConvertClassicMenu( onFinishMenuCreation );\n\n\tconst {\n\t\tisResolvingPages,\n\t\tmenus,\n\t\tisResolvingMenus,\n\t\thasPages,\n\t\thasMenus,\n\t} = useNavigationEntities();\n\n\tconst isStillLoading = isResolvingPages || isResolvingMenus;\n\n\tconst onCreateEmptyMenu = () => {\n\t\tonFinishMenuCreation( [] );\n\t};\n\n\tconst onCreateAllPages = () => {\n\t\tconst block = [ createBlock( 'core/page-list' ) ];\n\t\tonFinishMenuCreation( block );\n\t};\n\n\tconst { navigationMenus } = useNavigationMenu();\n\n\treturn (\n\t\t<>\n\t\t\t{ ( ! hasResolvedNavigationMenus || isStillLoading ) && (\n\t\t\t\t<PlaceholderPreview isLoading />\n\t\t\t) }\n\t\t\t{ hasResolvedNavigationMenus && ! isStillLoading && (\n\t\t\t\t<Placeholder className=\"wp-block-navigation-placeholder\">\n\t\t\t\t\t<PlaceholderPreview />\n\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__controls\">\n\t\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__actions\">\n\t\t\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__actions__indicator\">\n\t\t\t\t\t\t\t\t<Icon icon={ navigation } />{ ' ' }\n\t\t\t\t\t\t\t\t{ __( 'Navigation' ) }\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<hr />\n\n\t\t\t\t\t\t\t{ hasMenus || navigationMenus?.length ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<ExistingMenusDropdown\n\t\t\t\t\t\t\t\t\t\tcanSwitchNavigationMenu={\n\t\t\t\t\t\t\t\t\t\t\tcanSwitchNavigationMenu\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tnavigationMenus={ navigationMenus }\n\t\t\t\t\t\t\t\t\t\tonFinish={ onFinish }\n\t\t\t\t\t\t\t\t\t\tmenus={ menus }\n\t\t\t\t\t\t\t\t\t\tonCreateFromMenu={ convertClassicMenu }\n\t\t\t\t\t\t\t\t\t\tshowClassicMenus={\n\t\t\t\t\t\t\t\t\t\t\tcanUserCreateNavigation\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) : undefined }\n\t\t\t\t\t\t\t{ canUserCreateNavigation && hasPages ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\tonClick={ onCreateAllPages }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Add all pages' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) : undefined }\n\n\t\t\t\t\t\t\t{ canUserCreateNavigation && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tonClick={ onCreateEmptyMenu }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Start empty' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</Placeholder>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useCallback, useState, useEffect } from '@wordpress/element';
5
+ /**
6
+ * Internal dependencies
7
+ */
8
+
9
+ import useNavigationEntities from './use-navigation-entities';
10
+ import menuItemsToBlocks from './menu-items-to-blocks';
11
+ export default function useConvertClassicMenu(onFinish) {
12
+ const [selectedMenu, setSelectedMenu] = useState();
13
+ const [isAwaitingMenuItemResolution, setIsAwaitingMenuItemResolution] = useState(false);
14
+ const [menuName, setMenuName] = useState('');
15
+ const {
16
+ menuItems,
17
+ hasResolvedMenuItems
18
+ } = useNavigationEntities(selectedMenu);
19
+ const createFromMenu = useCallback(name => {
20
+ const {
21
+ innerBlocks: blocks
22
+ } = menuItemsToBlocks(menuItems);
23
+ onFinish(blocks, name);
24
+ }, [menuItems, menuItemsToBlocks, onFinish]);
25
+ useEffect(() => {
26
+ // If the user selected a menu but we had to wait for menu items to
27
+ // finish resolving, then create the block once resolution finishes.
28
+ if (isAwaitingMenuItemResolution && hasResolvedMenuItems) {
29
+ createFromMenu(menuName);
30
+ setIsAwaitingMenuItemResolution(false);
31
+ }
32
+ }, [isAwaitingMenuItemResolution, hasResolvedMenuItems, menuName]);
33
+ return useCallback((id, name) => {
34
+ setSelectedMenu(id); // If we have menu items, create the block right away.
35
+
36
+ if (hasResolvedMenuItems) {
37
+ createFromMenu(name);
38
+ return;
39
+ } // Otherwise, create the block when resolution finishes.
40
+
41
+
42
+ setIsAwaitingMenuItemResolution(true); // Store the name to use later.
43
+
44
+ setMenuName(name);
45
+ }, [hasResolvedMenuItems, createFromMenu]);
46
+ }
47
+ //# sourceMappingURL=use-convert-classic-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/use-convert-classic-menu.js"],"names":["useCallback","useState","useEffect","useNavigationEntities","menuItemsToBlocks","useConvertClassicMenu","onFinish","selectedMenu","setSelectedMenu","isAwaitingMenuItemResolution","setIsAwaitingMenuItemResolution","menuName","setMenuName","menuItems","hasResolvedMenuItems","createFromMenu","name","innerBlocks","blocks","id"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAT,EAAsBC,QAAtB,EAAgCC,SAAhC,QAAiD,oBAAjD;AAEA;AACA;AACA;;AACA,OAAOC,qBAAP,MAAkC,2BAAlC;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AAEA,eAAe,SAASC,qBAAT,CAAgCC,QAAhC,EAA2C;AACzD,QAAM,CAAEC,YAAF,EAAgBC,eAAhB,IAAoCP,QAAQ,EAAlD;AACA,QAAM,CACLQ,4BADK,EAELC,+BAFK,IAGFT,QAAQ,CAAE,KAAF,CAHZ;AAIA,QAAM,CAAEU,QAAF,EAAYC,WAAZ,IAA4BX,QAAQ,CAAE,EAAF,CAA1C;AAEA,QAAM;AAAEY,IAAAA,SAAF;AAAaC,IAAAA;AAAb,MAAsCX,qBAAqB,CAChEI,YADgE,CAAjE;AAIA,QAAMQ,cAAc,GAAGf,WAAW,CAC/BgB,IAAF,IAAY;AACX,UAAM;AAAEC,MAAAA,WAAW,EAAEC;AAAf,QAA0Bd,iBAAiB,CAAES,SAAF,CAAjD;AACAP,IAAAA,QAAQ,CAAEY,MAAF,EAAUF,IAAV,CAAR;AACA,GAJgC,EAKjC,CAAEH,SAAF,EAAaT,iBAAb,EAAgCE,QAAhC,CALiC,CAAlC;AAQAJ,EAAAA,SAAS,CAAE,MAAM;AAChB;AACA;AACA,QAAKO,4BAA4B,IAAIK,oBAArC,EAA4D;AAC3DC,MAAAA,cAAc,CAAEJ,QAAF,CAAd;AACAD,MAAAA,+BAA+B,CAAE,KAAF,CAA/B;AACA;AACD,GAPQ,EAON,CAAED,4BAAF,EAAgCK,oBAAhC,EAAsDH,QAAtD,CAPM,CAAT;AASA,SAAOX,WAAW,CACjB,CAAEmB,EAAF,EAAMH,IAAN,KAAgB;AACfR,IAAAA,eAAe,CAAEW,EAAF,CAAf,CADe,CAGf;;AACA,QAAKL,oBAAL,EAA4B;AAC3BC,MAAAA,cAAc,CAAEC,IAAF,CAAd;AACA;AACA,KAPc,CASf;;;AACAN,IAAAA,+BAA+B,CAAE,IAAF,CAA/B,CAVe,CAWf;;AACAE,IAAAA,WAAW,CAAEI,IAAF,CAAX;AACA,GAdgB,EAejB,CAAEF,oBAAF,EAAwBC,cAAxB,CAfiB,CAAlB;AAiBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useNavigationEntities from './use-navigation-entities';\nimport menuItemsToBlocks from './menu-items-to-blocks';\n\nexport default function useConvertClassicMenu( onFinish ) {\n\tconst [ selectedMenu, setSelectedMenu ] = useState();\n\tconst [\n\t\tisAwaitingMenuItemResolution,\n\t\tsetIsAwaitingMenuItemResolution,\n\t] = useState( false );\n\tconst [ menuName, setMenuName ] = useState( '' );\n\n\tconst { menuItems, hasResolvedMenuItems } = useNavigationEntities(\n\t\tselectedMenu\n\t);\n\n\tconst createFromMenu = useCallback(\n\t\t( name ) => {\n\t\t\tconst { innerBlocks: blocks } = menuItemsToBlocks( menuItems );\n\t\t\tonFinish( blocks, name );\n\t\t},\n\t\t[ menuItems, menuItemsToBlocks, onFinish ]\n\t);\n\n\tuseEffect( () => {\n\t\t// If the user selected a menu but we had to wait for menu items to\n\t\t// finish resolving, then create the block once resolution finishes.\n\t\tif ( isAwaitingMenuItemResolution && hasResolvedMenuItems ) {\n\t\t\tcreateFromMenu( menuName );\n\t\t\tsetIsAwaitingMenuItemResolution( false );\n\t\t}\n\t}, [ isAwaitingMenuItemResolution, hasResolvedMenuItems, menuName ] );\n\n\treturn useCallback(\n\t\t( id, name ) => {\n\t\t\tsetSelectedMenu( id );\n\n\t\t\t// If we have menu items, create the block right away.\n\t\t\tif ( hasResolvedMenuItems ) {\n\t\t\t\tcreateFromMenu( name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Otherwise, create the block when resolution finishes.\n\t\t\tsetIsAwaitingMenuItemResolution( true );\n\t\t\t// Store the name to use later.\n\t\t\tsetMenuName( name );\n\t\t},\n\t\t[ hasResolvedMenuItems, createFromMenu ]\n\t);\n}\n"]}
@@ -10,7 +10,7 @@ import { sortBy } from 'lodash';
10
10
  */
11
11
 
12
12
  import { BlockControls, useBlockProps, getColorClassName } from '@wordpress/block-editor';
13
- import { ToolbarButton, Placeholder, Spinner } from '@wordpress/components';
13
+ import { ToolbarButton, Placeholder, Spinner, Notice } from '@wordpress/components';
14
14
  import { __ } from '@wordpress/i18n';
15
15
  import { useMemo, useState, memo } from '@wordpress/element';
16
16
  import { useSelect } from '@wordpress/data';
@@ -33,8 +33,9 @@ export default function PageListEdit(_ref) {
33
33
  } = _ref;
34
34
  const {
35
35
  pagesByParentId,
36
- totalPages
37
- } = usePagesByParentId();
36
+ totalPages,
37
+ hasResolvedPages
38
+ } = usePageData();
38
39
  const isNavigationChild = ('showSubmenuIcon' in context);
39
40
  const allowConvertToLinks = isNavigationChild && totalPages <= MAX_PAGE_COUNT;
40
41
  const [isOpen, setOpen] = useState(false);
@@ -61,18 +62,33 @@ export default function PageListEdit(_ref) {
61
62
  }, __('Edit'))), allowConvertToLinks && isOpen && createElement(ConvertToLinksModal, {
62
63
  onClose: closeModal,
63
64
  clientId: clientId
64
- }), totalPages === undefined && createElement("div", blockProps, createElement(Placeholder, null, createElement(Spinner, null))), totalPages === 0 && createElement("div", blockProps, createElement("span", null, __('Page List: No pages to show.'))), totalPages > 0 && createElement("ul", blockProps, createElement(PageItems, {
65
+ }), !hasResolvedPages && createElement("div", blockProps, createElement(Placeholder, null, createElement(Spinner, null))), hasResolvedPages && totalPages === null && createElement("div", blockProps, createElement("div", blockProps, createElement(Notice, {
66
+ status: 'warning',
67
+ isDismissible: false
68
+ }, __('Page List: Cannot retrieve Pages.')))), totalPages === 0 && createElement("div", blockProps, createElement(Notice, {
69
+ status: 'info',
70
+ isDismissible: false
71
+ }, __('Page List: Cannot retrieve Pages.'))), totalPages > 0 && createElement("ul", blockProps, createElement(PageItems, {
65
72
  context: context,
66
73
  pagesByParentId: pagesByParentId
67
74
  })));
68
75
  }
69
76
 
70
- function usePagesByParentId() {
77
+ function useFrontPageId() {
78
+ return useSelect(select => {
79
+ const site = select(coreStore).getEntityRecord('root', 'site');
80
+ return (site === null || site === void 0 ? void 0 : site.show_on_front) === 'page' && (site === null || site === void 0 ? void 0 : site.page_on_front);
81
+ }, []);
82
+ }
83
+
84
+ function usePageData() {
71
85
  const {
72
- pages
86
+ pages,
87
+ hasResolvedPages
73
88
  } = useSelect(select => {
74
89
  const {
75
- getEntityRecords
90
+ getEntityRecords,
91
+ hasFinishedResolution
76
92
  } = select(coreStore);
77
93
  return {
78
94
  pages: getEntityRecords('postType', 'page', {
@@ -80,10 +96,18 @@ function usePagesByParentId() {
80
96
  order: 'asc',
81
97
  _fields: ['id', 'link', 'parent', 'title', 'menu_order'],
82
98
  per_page: -1
83
- })
99
+ }),
100
+ hasResolvedPages: hasFinishedResolution('getEntityRecords', ['postType', 'page', {
101
+ orderby: 'menu_order',
102
+ order: 'asc',
103
+ _fields: ['id', 'link', 'parent', 'title', 'menu_order'],
104
+ per_page: -1
105
+ }])
84
106
  };
85
107
  }, []);
86
108
  return useMemo(() => {
109
+ var _pages$length;
110
+
87
111
  // TODO: Once the REST API supports passing multiple values to
88
112
  // 'orderby', this can be removed.
89
113
  // https://core.trac.wordpress.org/ticket/39037
@@ -103,9 +127,10 @@ function usePagesByParentId() {
103
127
  }, new Map());
104
128
  return {
105
129
  pagesByParentId,
106
- totalPages: pages === null || pages === void 0 ? void 0 : pages.length
130
+ hasResolvedPages,
131
+ totalPages: (_pages$length = pages === null || pages === void 0 ? void 0 : pages.length) !== null && _pages$length !== void 0 ? _pages$length : null
107
132
  };
108
- }, [pages]);
133
+ }, [pages, hasResolvedPages]);
109
134
  }
110
135
 
111
136
  const PageItems = memo(function PageItems(_ref2) {
@@ -116,6 +141,7 @@ const PageItems = memo(function PageItems(_ref2) {
116
141
  depth = 0
117
142
  } = _ref2;
118
143
  const pages = pagesByParentId.get(parentId);
144
+ const frontPageId = useFrontPageId();
119
145
 
120
146
  if (!(pages !== null && pages !== void 0 && pages.length)) {
121
147
  return [];
@@ -132,7 +158,8 @@ const PageItems = memo(function PageItems(_ref2) {
132
158
  'has-child': hasChildren,
133
159
  'wp-block-navigation-item': isNavigationChild,
134
160
  'open-on-click': context.openSubmenusOnClick,
135
- 'open-on-hover-click': !context.openSubmenusOnClick && context.showSubmenuIcon
161
+ 'open-on-hover-click': !context.openSubmenusOnClick && context.showSubmenuIcon,
162
+ 'menu-item-home': page.id === frontPageId
136
163
  })
137
164
  }, hasChildren && context.openSubmenusOnClick ? createElement(ItemSubmenuToggle, {
138
165
  title: (_page$title = page.title) === null || _page$title === void 0 ? void 0 : _page$title.rendered
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/page-list/edit.js"],"names":["classnames","sortBy","BlockControls","useBlockProps","getColorClassName","ToolbarButton","Placeholder","Spinner","__","useMemo","useState","memo","useSelect","store","coreStore","ConvertToLinksModal","ItemSubmenuIcon","MAX_PAGE_COUNT","PageListEdit","context","clientId","pagesByParentId","totalPages","usePagesByParentId","isNavigationChild","allowConvertToLinks","isOpen","setOpen","openModal","closeModal","blockProps","className","textColor","backgroundColor","style","color","undefined","pages","select","getEntityRecords","orderby","order","_fields","per_page","sortedPages","reduce","accumulator","page","parent","has","get","push","set","Map","length","PageItems","parentId","depth","map","hasChildren","id","openSubmenusOnClick","showSubmenuIcon","title","rendered","link","ItemSubmenuToggle"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { sortBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tuseBlockProps,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, Placeholder, Spinner } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState, memo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport ConvertToLinksModal from './convert-to-links-modal';\nimport { ItemSubmenuIcon } from '../navigation-link/icons';\n\n// We only show the edit option when page count is <= MAX_PAGE_COUNT\n// Performance of Navigation Links is not good past this value.\nconst MAX_PAGE_COUNT = 100;\n\nexport default function PageListEdit( { context, clientId } ) {\n\tconst { pagesByParentId, totalPages } = usePagesByParentId();\n\n\tconst isNavigationChild = 'showSubmenuIcon' in context;\n\tconst allowConvertToLinks =\n\t\tisNavigationChild && totalPages <= MAX_PAGE_COUNT;\n\n\tconst [ isOpen, setOpen ] = useState( false );\n\tconst openModal = () => setOpen( true );\n\tconst closeModal = () => setOpen( false );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( 'wp-block-page-list', {\n\t\t\t'has-text-color': !! context.textColor,\n\t\t\t[ getColorClassName(\n\t\t\t\t'color',\n\t\t\t\tcontext.textColor\n\t\t\t) ]: !! context.textColor,\n\t\t\t'has-background': !! context.backgroundColor,\n\t\t\t[ getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tcontext.backgroundColor\n\t\t\t) ]: !! context.backgroundColor,\n\t\t} ),\n\t\tstyle: { ...context.style?.color },\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t{ allowConvertToLinks && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<ToolbarButton title={ __( 'Edit' ) } onClick={ openModal }>\n\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ allowConvertToLinks && isOpen && (\n\t\t\t\t<ConvertToLinksModal\n\t\t\t\t\tonClose={ closeModal }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ totalPages === undefined && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Placeholder>\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</Placeholder>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ totalPages === 0 && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<span>{ __( 'Page List: No pages to show.' ) }</span>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ totalPages > 0 && (\n\t\t\t\t<ul { ...blockProps }>\n\t\t\t\t\t<PageItems\n\t\t\t\t\t\tcontext={ context }\n\t\t\t\t\t\tpagesByParentId={ pagesByParentId }\n\t\t\t\t\t/>\n\t\t\t\t</ul>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction usePagesByParentId() {\n\tconst { pages } = useSelect( ( select ) => {\n\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\treturn {\n\t\t\tpages: getEntityRecords( 'postType', 'page', {\n\t\t\t\torderby: 'menu_order',\n\t\t\t\torder: 'asc',\n\t\t\t\t_fields: [ 'id', 'link', 'parent', 'title', 'menu_order' ],\n\t\t\t\tper_page: -1,\n\t\t\t} ),\n\t\t};\n\t}, [] );\n\n\treturn useMemo( () => {\n\t\t// TODO: Once the REST API supports passing multiple values to\n\t\t// 'orderby', this can be removed.\n\t\t// https://core.trac.wordpress.org/ticket/39037\n\t\tconst sortedPages = sortBy( pages, [ 'menu_order', 'title.rendered' ] );\n\t\tconst pagesByParentId = sortedPages.reduce( ( accumulator, page ) => {\n\t\t\tconst { parent } = page;\n\t\t\tif ( accumulator.has( parent ) ) {\n\t\t\t\taccumulator.get( parent ).push( page );\n\t\t\t} else {\n\t\t\t\taccumulator.set( parent, [ page ] );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t}, new Map() );\n\n\t\treturn {\n\t\t\tpagesByParentId,\n\t\t\ttotalPages: pages?.length,\n\t\t};\n\t}, [ pages ] );\n}\n\nconst PageItems = memo( function PageItems( {\n\tcontext,\n\tpagesByParentId,\n\tparentId = 0,\n\tdepth = 0,\n} ) {\n\tconst pages = pagesByParentId.get( parentId );\n\n\tif ( ! pages?.length ) {\n\t\treturn [];\n\t}\n\n\treturn pages.map( ( page ) => {\n\t\tconst hasChildren = pagesByParentId.has( page.id );\n\t\tconst isNavigationChild = 'showSubmenuIcon' in context;\n\t\treturn (\n\t\t\t<li\n\t\t\t\tkey={ page.id }\n\t\t\t\tclassName={ classnames( 'wp-block-pages-list__item', {\n\t\t\t\t\t'has-child': hasChildren,\n\t\t\t\t\t'wp-block-navigation-item': isNavigationChild,\n\t\t\t\t\t'open-on-click': context.openSubmenusOnClick,\n\t\t\t\t\t'open-on-hover-click':\n\t\t\t\t\t\t! context.openSubmenusOnClick &&\n\t\t\t\t\t\tcontext.showSubmenuIcon,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ hasChildren && context.openSubmenusOnClick ? (\n\t\t\t\t\t<ItemSubmenuToggle title={ page.title?.rendered } />\n\t\t\t\t) : (\n\t\t\t\t\t<a\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-pages-list__item__link',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'wp-block-navigation-item__content': isNavigationChild,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\thref={ page.link }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ page.title?.rendered }\n\t\t\t\t\t</a>\n\t\t\t\t) }\n\t\t\t\t{ hasChildren && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ ! context.openSubmenusOnClick &&\n\t\t\t\t\t\t\tcontext.showSubmenuIcon && <ItemSubmenuToggle /> }\n\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\tclassName={ classnames( 'submenu-container', {\n\t\t\t\t\t\t\t\t'wp-block-navigation__submenu-container': isNavigationChild,\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PageItems\n\t\t\t\t\t\t\t\tcontext={ context }\n\t\t\t\t\t\t\t\tpagesByParentId={ pagesByParentId }\n\t\t\t\t\t\t\t\tparentId={ page.id }\n\t\t\t\t\t\t\t\tdepth={ depth + 1 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</li>\n\t\t);\n\t} );\n} );\n\nfunction ItemSubmenuToggle( { title } ) {\n\treturn (\n\t\t<button\n\t\t\tclassName=\"wp-block-navigation-item__content wp-block-navigation-submenu__toggle\"\n\t\t\taria-expanded=\"false\"\n\t\t>\n\t\t\t{ title }\n\t\t\t<span className=\"wp-block-page-list__submenu-icon wp-block-navigation__submenu-icon\">\n\t\t\t\t<ItemSubmenuIcon />\n\t\t\t</span>\n\t\t</button>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/page-list/edit.js"],"names":["classnames","sortBy","BlockControls","useBlockProps","getColorClassName","ToolbarButton","Placeholder","Spinner","Notice","__","useMemo","useState","memo","useSelect","store","coreStore","ConvertToLinksModal","ItemSubmenuIcon","MAX_PAGE_COUNT","PageListEdit","context","clientId","pagesByParentId","totalPages","hasResolvedPages","usePageData","isNavigationChild","allowConvertToLinks","isOpen","setOpen","openModal","closeModal","blockProps","className","textColor","backgroundColor","style","color","useFrontPageId","select","site","getEntityRecord","show_on_front","page_on_front","pages","getEntityRecords","hasFinishedResolution","orderby","order","_fields","per_page","sortedPages","reduce","accumulator","page","parent","has","get","push","set","Map","length","PageItems","parentId","depth","frontPageId","map","hasChildren","id","openSubmenusOnClick","showSubmenuIcon","title","rendered","link","ItemSubmenuToggle"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { sortBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tuseBlockProps,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport {\n\tToolbarButton,\n\tPlaceholder,\n\tSpinner,\n\tNotice,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState, memo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport ConvertToLinksModal from './convert-to-links-modal';\nimport { ItemSubmenuIcon } from '../navigation-link/icons';\n\n// We only show the edit option when page count is <= MAX_PAGE_COUNT\n// Performance of Navigation Links is not good past this value.\nconst MAX_PAGE_COUNT = 100;\n\nexport default function PageListEdit( { context, clientId } ) {\n\tconst { pagesByParentId, totalPages, hasResolvedPages } = usePageData();\n\n\tconst isNavigationChild = 'showSubmenuIcon' in context;\n\tconst allowConvertToLinks =\n\t\tisNavigationChild && totalPages <= MAX_PAGE_COUNT;\n\n\tconst [ isOpen, setOpen ] = useState( false );\n\tconst openModal = () => setOpen( true );\n\tconst closeModal = () => setOpen( false );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( 'wp-block-page-list', {\n\t\t\t'has-text-color': !! context.textColor,\n\t\t\t[ getColorClassName(\n\t\t\t\t'color',\n\t\t\t\tcontext.textColor\n\t\t\t) ]: !! context.textColor,\n\t\t\t'has-background': !! context.backgroundColor,\n\t\t\t[ getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tcontext.backgroundColor\n\t\t\t) ]: !! context.backgroundColor,\n\t\t} ),\n\t\tstyle: { ...context.style?.color },\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t{ allowConvertToLinks && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<ToolbarButton title={ __( 'Edit' ) } onClick={ openModal }>\n\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ allowConvertToLinks && isOpen && (\n\t\t\t\t<ConvertToLinksModal\n\t\t\t\t\tonClose={ closeModal }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! hasResolvedPages && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Placeholder>\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</Placeholder>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ hasResolvedPages && totalPages === null && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t\t<Notice status={ 'warning' } isDismissible={ false }>\n\t\t\t\t\t\t\t{ __( 'Page List: Cannot retrieve Pages.' ) }\n\t\t\t\t\t\t</Notice>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ totalPages === 0 && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Notice status={ 'info' } isDismissible={ false }>\n\t\t\t\t\t\t{ __( 'Page List: Cannot retrieve Pages.' ) }\n\t\t\t\t\t</Notice>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ totalPages > 0 && (\n\t\t\t\t<ul { ...blockProps }>\n\t\t\t\t\t<PageItems\n\t\t\t\t\t\tcontext={ context }\n\t\t\t\t\t\tpagesByParentId={ pagesByParentId }\n\t\t\t\t\t/>\n\t\t\t\t</ul>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction useFrontPageId() {\n\treturn useSelect( ( select ) => {\n\t\tconst site = select( coreStore ).getEntityRecord( 'root', 'site' );\n\t\treturn site?.show_on_front === 'page' && site?.page_on_front;\n\t}, [] );\n}\n\nfunction usePageData() {\n\tconst { pages, hasResolvedPages } = useSelect( ( select ) => {\n\t\tconst { getEntityRecords, hasFinishedResolution } = select( coreStore );\n\n\t\treturn {\n\t\t\tpages: getEntityRecords( 'postType', 'page', {\n\t\t\t\torderby: 'menu_order',\n\t\t\t\torder: 'asc',\n\t\t\t\t_fields: [ 'id', 'link', 'parent', 'title', 'menu_order' ],\n\t\t\t\tper_page: -1,\n\t\t\t} ),\n\t\t\thasResolvedPages: hasFinishedResolution( 'getEntityRecords', [\n\t\t\t\t'postType',\n\t\t\t\t'page',\n\t\t\t\t{\n\t\t\t\t\torderby: 'menu_order',\n\t\t\t\t\torder: 'asc',\n\t\t\t\t\t_fields: [ 'id', 'link', 'parent', 'title', 'menu_order' ],\n\t\t\t\t\tper_page: -1,\n\t\t\t\t},\n\t\t\t] ),\n\t\t};\n\t}, [] );\n\n\treturn useMemo( () => {\n\t\t// TODO: Once the REST API supports passing multiple values to\n\t\t// 'orderby', this can be removed.\n\t\t// https://core.trac.wordpress.org/ticket/39037\n\t\tconst sortedPages = sortBy( pages, [ 'menu_order', 'title.rendered' ] );\n\t\tconst pagesByParentId = sortedPages.reduce( ( accumulator, page ) => {\n\t\t\tconst { parent } = page;\n\t\t\tif ( accumulator.has( parent ) ) {\n\t\t\t\taccumulator.get( parent ).push( page );\n\t\t\t} else {\n\t\t\t\taccumulator.set( parent, [ page ] );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t}, new Map() );\n\n\t\treturn {\n\t\t\tpagesByParentId,\n\t\t\thasResolvedPages,\n\t\t\ttotalPages: pages?.length ?? null,\n\t\t};\n\t}, [ pages, hasResolvedPages ] );\n}\n\nconst PageItems = memo( function PageItems( {\n\tcontext,\n\tpagesByParentId,\n\tparentId = 0,\n\tdepth = 0,\n} ) {\n\tconst pages = pagesByParentId.get( parentId );\n\tconst frontPageId = useFrontPageId();\n\n\tif ( ! pages?.length ) {\n\t\treturn [];\n\t}\n\n\treturn pages.map( ( page ) => {\n\t\tconst hasChildren = pagesByParentId.has( page.id );\n\t\tconst isNavigationChild = 'showSubmenuIcon' in context;\n\t\treturn (\n\t\t\t<li\n\t\t\t\tkey={ page.id }\n\t\t\t\tclassName={ classnames( 'wp-block-pages-list__item', {\n\t\t\t\t\t'has-child': hasChildren,\n\t\t\t\t\t'wp-block-navigation-item': isNavigationChild,\n\t\t\t\t\t'open-on-click': context.openSubmenusOnClick,\n\t\t\t\t\t'open-on-hover-click':\n\t\t\t\t\t\t! context.openSubmenusOnClick &&\n\t\t\t\t\t\tcontext.showSubmenuIcon,\n\t\t\t\t\t'menu-item-home': page.id === frontPageId,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ hasChildren && context.openSubmenusOnClick ? (\n\t\t\t\t\t<ItemSubmenuToggle title={ page.title?.rendered } />\n\t\t\t\t) : (\n\t\t\t\t\t<a\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-pages-list__item__link',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'wp-block-navigation-item__content': isNavigationChild,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\thref={ page.link }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ page.title?.rendered }\n\t\t\t\t\t</a>\n\t\t\t\t) }\n\t\t\t\t{ hasChildren && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ ! context.openSubmenusOnClick &&\n\t\t\t\t\t\t\tcontext.showSubmenuIcon && <ItemSubmenuToggle /> }\n\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\tclassName={ classnames( 'submenu-container', {\n\t\t\t\t\t\t\t\t'wp-block-navigation__submenu-container': isNavigationChild,\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PageItems\n\t\t\t\t\t\t\t\tcontext={ context }\n\t\t\t\t\t\t\t\tpagesByParentId={ pagesByParentId }\n\t\t\t\t\t\t\t\tparentId={ page.id }\n\t\t\t\t\t\t\t\tdepth={ depth + 1 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</li>\n\t\t);\n\t} );\n} );\n\nfunction ItemSubmenuToggle( { title } ) {\n\treturn (\n\t\t<button\n\t\t\tclassName=\"wp-block-navigation-item__content wp-block-navigation-submenu__toggle\"\n\t\t\taria-expanded=\"false\"\n\t\t>\n\t\t\t{ title }\n\t\t\t<span className=\"wp-block-page-list__submenu-icon wp-block-navigation__submenu-icon\">\n\t\t\t\t<ItemSubmenuIcon />\n\t\t\t</span>\n\t\t</button>\n\t);\n}\n"]}
@@ -1,16 +1,11 @@
1
1
  import { createElement, Fragment } from "@wordpress/element";
2
2
 
3
- /**
4
- * External dependencies
5
- */
6
- import classNames from 'classnames';
7
3
  /**
8
4
  * WordPress dependencies
9
5
  */
10
-
11
6
  import { __, _x } from '@wordpress/i18n';
12
- import { PanelBody, __experimentalUnitControl as UnitControl, Flex, FlexItem, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalUseCustomUnits as useCustomUnits } from '@wordpress/components';
13
- import { useSetting } from '@wordpress/block-editor';
7
+ import { __experimentalUnitControl as UnitControl, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalUseCustomUnits as useCustomUnits, __experimentalToolsPanelItem as ToolsPanelItem } from '@wordpress/components';
8
+ import { InspectorControls, useSetting } from '@wordpress/block-editor';
14
9
  const SCALE_OPTIONS = createElement(Fragment, null, createElement(ToggleGroupControlOption, {
15
10
  value: "cover",
16
11
  label: _x('Cover', 'Scale option for Image dimension control')
@@ -21,6 +16,7 @@ const SCALE_OPTIONS = createElement(Fragment, null, createElement(ToggleGroupCon
21
16
  value: "fill",
22
17
  label: _x('Fill', 'Scale option for Image dimension control')
23
18
  }));
19
+ const DEFAULT_SCALE = 'cover';
24
20
  const scaleHelp = {
25
21
  cover: __('Image is scaled and cropped to fill the entire space without being distorted.'),
26
22
  contain: __('Image is scaled to fill the space without clipping nor distorting.'),
@@ -29,6 +25,7 @@ const scaleHelp = {
29
25
 
30
26
  const DimensionControls = _ref => {
31
27
  let {
28
+ clientId,
32
29
  attributes: {
33
30
  width,
34
31
  height,
@@ -57,40 +54,66 @@ const DimensionControls = _ref => {
57
54
 
58
55
  const scaleLabel = _x('Scale', 'Image scaling options');
59
56
 
60
- return createElement(PanelBody, {
61
- title: __('Dimensions')
62
- }, createElement(Flex, {
63
- justify: "space-between",
64
- className: classNames('block-library-post-featured-image-dimension-controls', {
65
- 'scale-control-is-visible': !!height
66
- })
67
- }, createElement(FlexItem, null, createElement(UnitControl, {
57
+ return createElement(InspectorControls, {
58
+ __experimentalGroup: "dimensions"
59
+ }, createElement(ToolsPanelItem, {
60
+ className: "single-column",
61
+ hasValue: () => !!height,
62
+ label: __('Height'),
63
+ onDeselect: () => setAttributes({
64
+ height: undefined
65
+ }),
66
+ resetAllFilter: () => ({
67
+ height: undefined
68
+ }),
69
+ isShownByDefault: true,
70
+ panelId: clientId
71
+ }, createElement(UnitControl, {
68
72
  label: __('Height'),
69
73
  labelPosition: "top",
70
74
  value: height || '',
71
- onChange: nextHeight => {
72
- onDimensionChange('height', nextHeight);
73
- },
75
+ min: 0,
76
+ onChange: nextHeight => onDimensionChange('height', nextHeight),
74
77
  units: units
75
- })), createElement(FlexItem, null, createElement(UnitControl, {
78
+ })), createElement(ToolsPanelItem, {
79
+ className: "single-column",
80
+ hasValue: () => !!width,
81
+ label: __('Width'),
82
+ onDeselect: () => setAttributes({
83
+ width: undefined
84
+ }),
85
+ resetAllFilter: () => ({
86
+ width: undefined
87
+ }),
88
+ isShownByDefault: true,
89
+ panelId: clientId
90
+ }, createElement(UnitControl, {
76
91
  label: __('Width'),
77
92
  labelPosition: "top",
78
93
  value: width || '',
79
- onChange: nextWidth => {
80
- onDimensionChange('width', nextWidth);
81
- },
94
+ min: 0,
95
+ onChange: nextWidth => onDimensionChange('width', nextWidth),
82
96
  units: units
83
- }))), !!height && createElement(ToggleGroupControl, {
97
+ })), !!height && createElement(ToolsPanelItem, {
98
+ hasValue: () => !!scale && scale !== DEFAULT_SCALE,
99
+ label: scaleLabel,
100
+ onDeselect: () => setAttributes({
101
+ scale: DEFAULT_SCALE
102
+ }),
103
+ resetAllFilter: () => ({
104
+ scale: DEFAULT_SCALE
105
+ }),
106
+ isShownByDefault: true,
107
+ panelId: clientId
108
+ }, createElement(ToggleGroupControl, {
84
109
  label: scaleLabel,
85
110
  value: scale,
86
111
  help: scaleHelp[scale],
87
- onChange: value => {
88
- setAttributes({
89
- scale: value
90
- });
91
- },
112
+ onChange: value => setAttributes({
113
+ scale: value
114
+ }),
92
115
  isBlock: true
93
- }, SCALE_OPTIONS));
116
+ }, SCALE_OPTIONS)));
94
117
  };
95
118
 
96
119
  export default DimensionControls;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/post-featured-image/dimension-controls.js"],"names":["classNames","__","_x","PanelBody","__experimentalUnitControl","UnitControl","Flex","FlexItem","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUseCustomUnits","useCustomUnits","useSetting","SCALE_OPTIONS","scaleHelp","cover","contain","fill","DimensionControls","attributes","width","height","scale","setAttributes","defaultUnits","units","availableUnits","onDimensionChange","dimension","nextValue","parsedValue","parseFloat","isNaN","scaleLabel","nextHeight","nextWidth","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tPanelBody,\n\t__experimentalUnitControl as UnitControl,\n\tFlex,\n\tFlexItem,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUseCustomUnits as useCustomUnits,\n} from '@wordpress/components';\nimport { useSetting } from '@wordpress/block-editor';\n\nconst SCALE_OPTIONS = (\n\t<>\n\t\t<ToggleGroupControlOption\n\t\t\tvalue=\"cover\"\n\t\t\tlabel={ _x( 'Cover', 'Scale option for Image dimension control' ) }\n\t\t/>\n\t\t<ToggleGroupControlOption\n\t\t\tvalue=\"contain\"\n\t\t\tlabel={ _x(\n\t\t\t\t'Contain',\n\t\t\t\t'Scale option for Image dimension control'\n\t\t\t) }\n\t\t/>\n\t\t<ToggleGroupControlOption\n\t\t\tvalue=\"fill\"\n\t\t\tlabel={ _x( 'Fill', 'Scale option for Image dimension control' ) }\n\t\t/>\n\t</>\n);\n\nconst scaleHelp = {\n\tcover: __(\n\t\t'Image is scaled and cropped to fill the entire space without being distorted.'\n\t),\n\tcontain: __(\n\t\t'Image is scaled to fill the space without clipping nor distorting.'\n\t),\n\tfill: __(\n\t\t'Image will be stretched and distorted to completely fill the space.'\n\t),\n};\n\nconst DimensionControls = ( {\n\tattributes: { width, height, scale },\n\tsetAttributes,\n} ) => {\n\tconst defaultUnits = [ 'px', '%', 'vw', 'em', 'rem' ];\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || defaultUnits,\n\t} );\n\tconst onDimensionChange = ( dimension, nextValue ) => {\n\t\tconst parsedValue = parseFloat( nextValue );\n\t\t/**\n\t\t * If we have no value set and we change the unit,\n\t\t * we don't want to set the attribute, as it would\n\t\t * end up having the unit as value without any number.\n\t\t */\n\t\tif ( isNaN( parsedValue ) && nextValue ) return;\n\t\tsetAttributes( {\n\t\t\t[ dimension ]: parsedValue < 0 ? '0' : nextValue,\n\t\t} );\n\t};\n\tconst scaleLabel = _x( 'Scale', 'Image scaling options' );\n\treturn (\n\t\t<PanelBody title={ __( 'Dimensions' ) }>\n\t\t\t<Flex\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName={ classNames(\n\t\t\t\t\t'block-library-post-featured-image-dimension-controls',\n\t\t\t\t\t{ 'scale-control-is-visible': !! height }\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ height || '' }\n\t\t\t\t\t\tonChange={ ( nextHeight ) => {\n\t\t\t\t\t\t\tonDimensionChange( 'height', nextHeight );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ width || '' }\n\t\t\t\t\t\tonChange={ ( nextWidth ) => {\n\t\t\t\t\t\t\tonDimensionChange( 'width', nextWidth );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t\t{ !! height && (\n\t\t\t\t<ToggleGroupControl\n\t\t\t\t\tlabel={ scaleLabel }\n\t\t\t\t\tvalue={ scale }\n\t\t\t\t\thelp={ scaleHelp[ scale ] }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tscale: value,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tisBlock\n\t\t\t\t>\n\t\t\t\t\t{ SCALE_OPTIONS }\n\t\t\t\t</ToggleGroupControl>\n\t\t\t) }\n\t\t</PanelBody>\n\t);\n};\n\nexport default DimensionControls;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/post-featured-image/dimension-controls.js"],"names":["__","_x","__experimentalUnitControl","UnitControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUseCustomUnits","useCustomUnits","__experimentalToolsPanelItem","ToolsPanelItem","InspectorControls","useSetting","SCALE_OPTIONS","DEFAULT_SCALE","scaleHelp","cover","contain","fill","DimensionControls","clientId","attributes","width","height","scale","setAttributes","defaultUnits","units","availableUnits","onDimensionChange","dimension","nextValue","parsedValue","parseFloat","isNaN","scaleLabel","undefined","nextHeight","nextWidth","value"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { InspectorControls, useSetting } from '@wordpress/block-editor';\n\nconst SCALE_OPTIONS = (\n\t<>\n\t\t<ToggleGroupControlOption\n\t\t\tvalue=\"cover\"\n\t\t\tlabel={ _x( 'Cover', 'Scale option for Image dimension control' ) }\n\t\t/>\n\t\t<ToggleGroupControlOption\n\t\t\tvalue=\"contain\"\n\t\t\tlabel={ _x(\n\t\t\t\t'Contain',\n\t\t\t\t'Scale option for Image dimension control'\n\t\t\t) }\n\t\t/>\n\t\t<ToggleGroupControlOption\n\t\t\tvalue=\"fill\"\n\t\t\tlabel={ _x( 'Fill', 'Scale option for Image dimension control' ) }\n\t\t/>\n\t</>\n);\n\nconst DEFAULT_SCALE = 'cover';\n\nconst scaleHelp = {\n\tcover: __(\n\t\t'Image is scaled and cropped to fill the entire space without being distorted.'\n\t),\n\tcontain: __(\n\t\t'Image is scaled to fill the space without clipping nor distorting.'\n\t),\n\tfill: __(\n\t\t'Image will be stretched and distorted to completely fill the space.'\n\t),\n};\n\nconst DimensionControls = ( {\n\tclientId,\n\tattributes: { width, height, scale },\n\tsetAttributes,\n} ) => {\n\tconst defaultUnits = [ 'px', '%', 'vw', 'em', 'rem' ];\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || defaultUnits,\n\t} );\n\tconst onDimensionChange = ( dimension, nextValue ) => {\n\t\tconst parsedValue = parseFloat( nextValue );\n\t\t/**\n\t\t * If we have no value set and we change the unit,\n\t\t * we don't want to set the attribute, as it would\n\t\t * end up having the unit as value without any number.\n\t\t */\n\t\tif ( isNaN( parsedValue ) && nextValue ) return;\n\t\tsetAttributes( {\n\t\t\t[ dimension ]: parsedValue < 0 ? '0' : nextValue,\n\t\t} );\n\t};\n\tconst scaleLabel = _x( 'Scale', 'Image scaling options' );\n\treturn (\n\t\t<InspectorControls __experimentalGroup=\"dimensions\">\n\t\t\t<ToolsPanelItem\n\t\t\t\tclassName=\"single-column\"\n\t\t\t\thasValue={ () => !! height }\n\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\tonDeselect={ () => setAttributes( { height: undefined } ) }\n\t\t\t\tresetAllFilter={ () => ( {\n\t\t\t\t\theight: undefined,\n\t\t\t\t} ) }\n\t\t\t\tisShownByDefault={ true }\n\t\t\t\tpanelId={ clientId }\n\t\t\t>\n\t\t\t\t<UnitControl\n\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\tvalue={ height || '' }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tonChange={ ( nextHeight ) =>\n\t\t\t\t\t\tonDimensionChange( 'height', nextHeight )\n\t\t\t\t\t}\n\t\t\t\t\tunits={ units }\n\t\t\t\t/>\n\t\t\t</ToolsPanelItem>\n\t\t\t<ToolsPanelItem\n\t\t\t\tclassName=\"single-column\"\n\t\t\t\thasValue={ () => !! width }\n\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\tonDeselect={ () => setAttributes( { width: undefined } ) }\n\t\t\t\tresetAllFilter={ () => ( {\n\t\t\t\t\twidth: undefined,\n\t\t\t\t} ) }\n\t\t\t\tisShownByDefault={ true }\n\t\t\t\tpanelId={ clientId }\n\t\t\t>\n\t\t\t\t<UnitControl\n\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\tvalue={ width || '' }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tonChange={ ( nextWidth ) =>\n\t\t\t\t\t\tonDimensionChange( 'width', nextWidth )\n\t\t\t\t\t}\n\t\t\t\t\tunits={ units }\n\t\t\t\t/>\n\t\t\t</ToolsPanelItem>\n\t\t\t{ !! height && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => !! scale && scale !== DEFAULT_SCALE }\n\t\t\t\t\tlabel={ scaleLabel }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tscale: DEFAULT_SCALE,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tresetAllFilter={ () => ( {\n\t\t\t\t\t\tscale: DEFAULT_SCALE,\n\t\t\t\t\t} ) }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t>\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\tlabel={ scaleLabel }\n\t\t\t\t\t\tvalue={ scale }\n\t\t\t\t\t\thelp={ scaleHelp[ scale ] }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tscale: value,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t>\n\t\t\t\t\t\t{ SCALE_OPTIONS }\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</InspectorControls>\n\t);\n};\n\nexport default DimensionControls;\n"]}
@@ -33,6 +33,7 @@ const placeholderChip = createElement("div", {
33
33
 
34
34
  function PostFeaturedImageDisplay(_ref) {
35
35
  let {
36
+ clientId,
36
37
  attributes,
37
38
  setAttributes,
38
39
  context: {
@@ -124,10 +125,11 @@ function PostFeaturedImageDisplay(_ref) {
124
125
  });
125
126
  }
126
127
 
127
- return createElement(Fragment, null, createElement(InspectorControls, null, createElement(DimensionControls, {
128
+ return createElement(Fragment, null, createElement(DimensionControls, {
129
+ clientId: clientId,
128
130
  attributes: attributes,
129
131
  setAttributes: setAttributes
130
- }), createElement(PanelBody, {
132
+ }), createElement(InspectorControls, null, createElement(PanelBody, {
131
133
  title: __('Link settings')
132
134
  }, createElement(ToggleControl, {
133
135
  label: sprintf( // translators: %s: Name of the post type e.g: "post".