@wordpress/edit-post 7.34.0 → 8.0.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.
Files changed (252) hide show
  1. package/CHANGELOG.md +15 -2
  2. package/build/commands/use-commands.js +56 -0
  3. package/build/commands/use-commands.js.map +1 -0
  4. package/build/components/{header/fullscreen-mode-close/index.js → back-button/fullscreen-mode-close.js} +18 -16
  5. package/build/components/back-button/fullscreen-mode-close.js.map +1 -0
  6. package/build/components/back-button/index.js +57 -0
  7. package/build/components/back-button/index.js.map +1 -0
  8. package/build/components/header/header-toolbar/index.native.js +63 -62
  9. package/build/components/header/header-toolbar/index.native.js.map +1 -1
  10. package/build/components/header/index.native.js +2 -2
  11. package/build/components/header/index.native.js.map +1 -1
  12. package/build/components/init-pattern-modal/index.js +50 -43
  13. package/build/components/init-pattern-modal/index.js.map +1 -1
  14. package/build/components/layout/index.js +134 -156
  15. package/build/components/layout/index.js.map +1 -1
  16. package/build/components/layout/index.native.js +28 -21
  17. package/build/components/layout/index.native.js.map +1 -1
  18. package/build/components/{visual-editor → layout}/use-padding-appender.js +6 -1
  19. package/build/components/layout/use-padding-appender.js.map +1 -0
  20. package/build/components/layout/use-should-iframe.js +46 -0
  21. package/build/components/layout/use-should-iframe.js.map +1 -0
  22. package/build/components/meta-boxes/index.js +10 -9
  23. package/build/components/meta-boxes/index.js.map +1 -1
  24. package/build/components/meta-boxes/meta-boxes-area/index.js +13 -13
  25. package/build/components/meta-boxes/meta-boxes-area/index.js.map +1 -1
  26. package/build/components/more-menu/index.js +49 -0
  27. package/build/components/more-menu/index.js.map +1 -0
  28. package/build/components/{header/more-menu → more-menu}/manage-patterns-menu-item.js +6 -5
  29. package/build/components/more-menu/manage-patterns-menu-item.js.map +1 -0
  30. package/build/components/{header/more-menu → more-menu}/welcome-guide-menu-item.js +2 -2
  31. package/build/components/more-menu/welcome-guide-menu-item.js.map +1 -0
  32. package/build/components/preferences-modal/enable-custom-fields.js +23 -18
  33. package/build/components/preferences-modal/enable-custom-fields.js.map +1 -1
  34. package/build/components/preferences-modal/index.js +4 -4
  35. package/build/components/preferences-modal/index.js.map +1 -1
  36. package/build/components/preferences-modal/meta-boxes-section.js +13 -13
  37. package/build/components/preferences-modal/meta-boxes-section.js.map +1 -1
  38. package/build/components/visual-editor/header.native.js +11 -10
  39. package/build/components/visual-editor/header.native.js.map +1 -1
  40. package/build/components/visual-editor/index.native.js +3 -3
  41. package/build/components/visual-editor/index.native.js.map +1 -1
  42. package/build/components/welcome-guide/default.js +50 -33
  43. package/build/components/welcome-guide/default.js.map +1 -1
  44. package/build/components/welcome-guide/image.js +13 -12
  45. package/build/components/welcome-guide/image.js.map +1 -1
  46. package/build/components/welcome-guide/index.js +2 -2
  47. package/build/components/welcome-guide/index.js.map +1 -1
  48. package/build/components/welcome-guide/template.js +12 -8
  49. package/build/components/welcome-guide/template.js.map +1 -1
  50. package/build/deprecated.js +9 -9
  51. package/build/deprecated.js.map +1 -1
  52. package/build/editor.js +16 -11
  53. package/build/editor.js.map +1 -1
  54. package/build/editor.native.js +18 -12
  55. package/build/editor.native.js.map +1 -1
  56. package/build/index.js +12 -13
  57. package/build/index.js.map +1 -1
  58. package/build/index.native.js +2 -2
  59. package/build/index.native.js.map +1 -1
  60. package/build/store/selectors.js +1 -1
  61. package/build/store/selectors.js.map +1 -1
  62. package/build-module/commands/use-commands.js +49 -0
  63. package/build-module/commands/use-commands.js.map +1 -0
  64. package/build-module/components/{header/fullscreen-mode-close/index.js → back-button/fullscreen-mode-close.js} +18 -16
  65. package/build-module/components/back-button/fullscreen-mode-close.js.map +1 -0
  66. package/build-module/components/back-button/index.js +49 -0
  67. package/build-module/components/back-button/index.js.map +1 -0
  68. package/build-module/components/header/header-toolbar/index.native.js +64 -62
  69. package/build-module/components/header/header-toolbar/index.native.js.map +1 -1
  70. package/build-module/components/header/index.native.js +2 -2
  71. package/build-module/components/header/index.native.js.map +1 -1
  72. package/build-module/components/init-pattern-modal/index.js +52 -43
  73. package/build-module/components/init-pattern-modal/index.js.map +1 -1
  74. package/build-module/components/layout/index.js +139 -159
  75. package/build-module/components/layout/index.js.map +1 -1
  76. package/build-module/components/layout/index.native.js +30 -21
  77. package/build-module/components/layout/index.native.js.map +1 -1
  78. package/build-module/components/{visual-editor → layout}/use-padding-appender.js +6 -1
  79. package/build-module/components/layout/use-padding-appender.js.map +1 -0
  80. package/build-module/components/layout/use-should-iframe.js +39 -0
  81. package/build-module/components/layout/use-should-iframe.js.map +1 -0
  82. package/build-module/components/meta-boxes/index.js +12 -9
  83. package/build-module/components/meta-boxes/index.js.map +1 -1
  84. package/build-module/components/meta-boxes/meta-boxes-area/index.js +13 -11
  85. package/build-module/components/meta-boxes/meta-boxes-area/index.js.map +1 -1
  86. package/build-module/components/more-menu/index.js +43 -0
  87. package/build-module/components/more-menu/index.js.map +1 -0
  88. package/build-module/components/{header/more-menu → more-menu}/manage-patterns-menu-item.js +6 -5
  89. package/build-module/components/more-menu/manage-patterns-menu-item.js.map +1 -0
  90. package/build-module/components/{header/more-menu → more-menu}/welcome-guide-menu-item.js +2 -2
  91. package/build-module/components/more-menu/welcome-guide-menu-item.js.map +1 -0
  92. package/build-module/components/preferences-modal/enable-custom-fields.js +25 -18
  93. package/build-module/components/preferences-modal/enable-custom-fields.js.map +1 -1
  94. package/build-module/components/preferences-modal/index.js +4 -4
  95. package/build-module/components/preferences-modal/index.js.map +1 -1
  96. package/build-module/components/preferences-modal/meta-boxes-section.js +14 -13
  97. package/build-module/components/preferences-modal/meta-boxes-section.js.map +1 -1
  98. package/build-module/components/visual-editor/header.native.js +11 -10
  99. package/build-module/components/visual-editor/header.native.js.map +1 -1
  100. package/build-module/components/visual-editor/index.native.js +3 -3
  101. package/build-module/components/visual-editor/index.native.js.map +1 -1
  102. package/build-module/components/welcome-guide/default.js +52 -33
  103. package/build-module/components/welcome-guide/default.js.map +1 -1
  104. package/build-module/components/welcome-guide/image.js +14 -12
  105. package/build-module/components/welcome-guide/image.js.map +1 -1
  106. package/build-module/components/welcome-guide/index.js +2 -2
  107. package/build-module/components/welcome-guide/index.js.map +1 -1
  108. package/build-module/components/welcome-guide/template.js +14 -8
  109. package/build-module/components/welcome-guide/template.js.map +1 -1
  110. package/build-module/deprecated.js +9 -9
  111. package/build-module/deprecated.js.map +1 -1
  112. package/build-module/editor.js +17 -11
  113. package/build-module/editor.js.map +1 -1
  114. package/build-module/editor.native.js +18 -12
  115. package/build-module/editor.native.js.map +1 -1
  116. package/build-module/index.js +10 -7
  117. package/build-module/index.js.map +1 -1
  118. package/build-module/index.native.js +2 -2
  119. package/build-module/index.native.js.map +1 -1
  120. package/build-module/store/selectors.js +1 -1
  121. package/build-module/store/selectors.js.map +1 -1
  122. package/build-style/style-rtl.css +31 -392
  123. package/build-style/style.css +31 -392
  124. package/package.json +33 -33
  125. package/src/commands/use-commands.js +48 -0
  126. package/src/components/{header/fullscreen-mode-close/index.js → back-button/fullscreen-mode-close.js} +3 -3
  127. package/src/components/back-button/index.js +34 -0
  128. package/src/components/{header/fullscreen-mode-close → back-button}/style.scss +16 -2
  129. package/src/components/{header/fullscreen-mode-close/test/index.js → back-button/test/fullscreen-mode-close.js} +1 -1
  130. package/src/components/layout/index.js +151 -207
  131. package/src/components/layout/style.scss +9 -17
  132. package/src/components/{visual-editor → layout}/use-padding-appender.js +7 -1
  133. package/src/components/layout/use-should-iframe.js +40 -0
  134. package/src/components/meta-boxes/meta-boxes-area/index.js +4 -8
  135. package/src/components/{header/more-menu → more-menu}/index.js +2 -2
  136. package/src/components/{header/more-menu → more-menu}/manage-patterns-menu-item.js +1 -1
  137. package/src/index.js +11 -6
  138. package/src/store/selectors.js +8 -5
  139. package/src/style.scss +3 -10
  140. package/src/test/__snapshots__/editor.native.js.snap +72 -0
  141. package/src/test/editor.native.js +77 -0
  142. package/build/components/header/fullscreen-mode-close/index.js.map +0 -1
  143. package/build/components/header/index.js +0 -158
  144. package/build/components/header/index.js.map +0 -1
  145. package/build/components/header/main-dashboard-button/index.js +0 -33
  146. package/build/components/header/main-dashboard-button/index.js.map +0 -1
  147. package/build/components/header/more-menu/index.js +0 -43
  148. package/build/components/header/more-menu/index.js.map +0 -1
  149. package/build/components/header/more-menu/manage-patterns-menu-item.js.map +0 -1
  150. package/build/components/header/more-menu/welcome-guide-menu-item.js.map +0 -1
  151. package/build/components/sidebar/post-format/index.js +0 -21
  152. package/build/components/sidebar/post-format/index.js.map +0 -1
  153. package/build/components/sidebar/post-pending-status/index.js +0 -26
  154. package/build/components/sidebar/post-pending-status/index.js.map +0 -1
  155. package/build/components/sidebar/post-slug/index.js +0 -21
  156. package/build/components/sidebar/post-slug/index.js.map +0 -1
  157. package/build/components/sidebar/post-status/index.js +0 -92
  158. package/build/components/sidebar/post-status/index.js.map +0 -1
  159. package/build/components/sidebar/post-sticky/index.js +0 -26
  160. package/build/components/sidebar/post-sticky/index.js.map +0 -1
  161. package/build/components/sidebar/post-trash/index.js +0 -16
  162. package/build/components/sidebar/post-trash/index.js.map +0 -1
  163. package/build/components/sidebar/post-visibility/index.js +0 -78
  164. package/build/components/sidebar/post-visibility/index.js.map +0 -1
  165. package/build/components/sidebar/settings-header/index.js +0 -53
  166. package/build/components/sidebar/settings-header/index.js.map +0 -1
  167. package/build/components/sidebar/settings-sidebar/index.js +0 -193
  168. package/build/components/sidebar/settings-sidebar/index.js.map +0 -1
  169. package/build/components/text-editor/index.js +0 -61
  170. package/build/components/text-editor/index.js.map +0 -1
  171. package/build/components/visual-editor/block-inspector-button.js +0 -55
  172. package/build/components/visual-editor/block-inspector-button.js.map +0 -1
  173. package/build/components/visual-editor/index.js +0 -92
  174. package/build/components/visual-editor/index.js.map +0 -1
  175. package/build/components/visual-editor/use-padding-appender.js.map +0 -1
  176. package/build/hooks/commands/use-common-commands.js +0 -119
  177. package/build/hooks/commands/use-common-commands.js.map +0 -1
  178. package/build/hooks/components/index.js +0 -11
  179. package/build/hooks/components/index.js.map +0 -1
  180. package/build/hooks/index.js +0 -5
  181. package/build/hooks/index.js.map +0 -1
  182. package/build/hooks/validate-multiple-use/index.js +0 -134
  183. package/build/hooks/validate-multiple-use/index.js.map +0 -1
  184. package/build-module/components/header/fullscreen-mode-close/index.js.map +0 -1
  185. package/build-module/components/header/index.js +0 -150
  186. package/build-module/components/header/index.js.map +0 -1
  187. package/build-module/components/header/main-dashboard-button/index.js +0 -26
  188. package/build-module/components/header/main-dashboard-button/index.js.map +0 -1
  189. package/build-module/components/header/more-menu/index.js +0 -35
  190. package/build-module/components/header/more-menu/index.js.map +0 -1
  191. package/build-module/components/header/more-menu/manage-patterns-menu-item.js.map +0 -1
  192. package/build-module/components/header/more-menu/welcome-guide-menu-item.js.map +0 -1
  193. package/build-module/components/sidebar/post-format/index.js +0 -13
  194. package/build-module/components/sidebar/post-format/index.js.map +0 -1
  195. package/build-module/components/sidebar/post-pending-status/index.js +0 -18
  196. package/build-module/components/sidebar/post-pending-status/index.js.map +0 -1
  197. package/build-module/components/sidebar/post-slug/index.js +0 -13
  198. package/build-module/components/sidebar/post-slug/index.js.map +0 -1
  199. package/build-module/components/sidebar/post-status/index.js +0 -84
  200. package/build-module/components/sidebar/post-status/index.js.map +0 -1
  201. package/build-module/components/sidebar/post-sticky/index.js +0 -18
  202. package/build-module/components/sidebar/post-sticky/index.js.map +0 -1
  203. package/build-module/components/sidebar/post-trash/index.js +0 -9
  204. package/build-module/components/sidebar/post-trash/index.js.map +0 -1
  205. package/build-module/components/sidebar/post-visibility/index.js +0 -70
  206. package/build-module/components/sidebar/post-visibility/index.js.map +0 -1
  207. package/build-module/components/sidebar/settings-header/index.js +0 -46
  208. package/build-module/components/sidebar/settings-header/index.js.map +0 -1
  209. package/build-module/components/sidebar/settings-sidebar/index.js +0 -185
  210. package/build-module/components/sidebar/settings-sidebar/index.js.map +0 -1
  211. package/build-module/components/text-editor/index.js +0 -54
  212. package/build-module/components/text-editor/index.js.map +0 -1
  213. package/build-module/components/visual-editor/block-inspector-button.js +0 -47
  214. package/build-module/components/visual-editor/block-inspector-button.js.map +0 -1
  215. package/build-module/components/visual-editor/index.js +0 -84
  216. package/build-module/components/visual-editor/index.js.map +0 -1
  217. package/build-module/components/visual-editor/use-padding-appender.js.map +0 -1
  218. package/build-module/hooks/commands/use-common-commands.js +0 -112
  219. package/build-module/hooks/commands/use-common-commands.js.map +0 -1
  220. package/build-module/hooks/components/index.js +0 -8
  221. package/build-module/hooks/components/index.js.map +0 -1
  222. package/build-module/hooks/index.js +0 -6
  223. package/build-module/hooks/index.js.map +0 -1
  224. package/build-module/hooks/validate-multiple-use/index.js +0 -132
  225. package/build-module/hooks/validate-multiple-use/index.js.map +0 -1
  226. package/src/components/header/index.js +0 -156
  227. package/src/components/header/main-dashboard-button/index.js +0 -28
  228. package/src/components/header/style.scss +0 -251
  229. package/src/components/sidebar/post-format/index.js +0 -20
  230. package/src/components/sidebar/post-format/style.scss +0 -5
  231. package/src/components/sidebar/post-pending-status/index.js +0 -27
  232. package/src/components/sidebar/post-slug/index.js +0 -17
  233. package/src/components/sidebar/post-slug/style.scss +0 -5
  234. package/src/components/sidebar/post-status/index.js +0 -128
  235. package/src/components/sidebar/post-sticky/index.js +0 -27
  236. package/src/components/sidebar/post-trash/index.js +0 -12
  237. package/src/components/sidebar/post-visibility/index.js +0 -88
  238. package/src/components/sidebar/post-visibility/style.scss +0 -5
  239. package/src/components/sidebar/settings-header/index.js +0 -49
  240. package/src/components/sidebar/settings-sidebar/index.js +0 -247
  241. package/src/components/sidebar/style.scss +0 -18
  242. package/src/components/text-editor/index.js +0 -63
  243. package/src/components/text-editor/style.scss +0 -71
  244. package/src/components/visual-editor/block-inspector-button.js +0 -59
  245. package/src/components/visual-editor/index.js +0 -101
  246. package/src/components/visual-editor/style.scss +0 -53
  247. package/src/hooks/commands/use-common-commands.js +0 -126
  248. package/src/hooks/components/index.js +0 -13
  249. package/src/hooks/index.js +0 -5
  250. package/src/hooks/validate-multiple-use/index.js +0 -163
  251. /package/src/components/{header/fullscreen-mode-close/test/__snapshots__/index.js.snap → back-button/test/__snapshots__/fullscreen-mode-close.js.snap} +0 -0
  252. /package/src/components/{header/more-menu → more-menu}/welcome-guide-menu-item.js +0 -0
@@ -1,128 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __ } from '@wordpress/i18n';
5
- import {
6
- __experimentalHStack as HStack,
7
- __experimentalVStack as VStack,
8
- PanelBody,
9
- } from '@wordpress/components';
10
- import { useDispatch, useSelect } from '@wordpress/data';
11
- import {
12
- PluginPostStatusInfo,
13
- PostAuthorPanel,
14
- PostSchedulePanel,
15
- PostSyncStatus,
16
- PostURLPanel,
17
- PostTemplatePanel,
18
- PostFeaturedImagePanel,
19
- store as editorStore,
20
- privateApis as editorPrivateApis,
21
- } from '@wordpress/editor';
22
-
23
- /**
24
- * Internal dependencies
25
- */
26
- import PostTrash from '../post-trash';
27
- import PostSticky from '../post-sticky';
28
- import PostSlug from '../post-slug';
29
- import PostFormat from '../post-format';
30
- import { unlock } from '../../../lock-unlock';
31
-
32
- const {
33
- PostStatus: PostStatusPanel,
34
- PrivatePostExcerptPanel,
35
- PostContentInformation,
36
- PostLastEditedPanel,
37
- } = unlock( editorPrivateApis );
38
-
39
- /**
40
- * Module Constants
41
- */
42
- const PANEL_NAME = 'post-status';
43
-
44
- export default function PostStatus() {
45
- const { isOpened, isRemoved, showPostContentPanels } = useSelect(
46
- ( select ) => {
47
- // We use isEditorPanelRemoved to hide the panel if it was programatically removed. We do
48
- // not use isEditorPanelEnabled since this panel should not be disabled through the UI.
49
- const {
50
- isEditorPanelRemoved,
51
- isEditorPanelOpened,
52
- getCurrentPostType,
53
- } = select( editorStore );
54
- const postType = getCurrentPostType();
55
- return {
56
- isRemoved: isEditorPanelRemoved( PANEL_NAME ),
57
- isOpened: isEditorPanelOpened( PANEL_NAME ),
58
- // Post excerpt panel is rendered in different place depending on the post type.
59
- // So we cannot make this check inside the PostExcerpt component based on the current edited entity.
60
- showPostContentPanels: ! [
61
- 'wp_template',
62
- 'wp_template_part',
63
- 'wp_block',
64
- ].includes( postType ),
65
- };
66
- },
67
- []
68
- );
69
- const { toggleEditorPanelOpened } = useDispatch( editorStore );
70
-
71
- if ( isRemoved ) {
72
- return null;
73
- }
74
-
75
- return (
76
- <PanelBody
77
- className="edit-post-post-status"
78
- title={ __( 'Summary' ) }
79
- opened={ isOpened }
80
- onToggle={ () => toggleEditorPanelOpened( PANEL_NAME ) }
81
- >
82
- <PluginPostStatusInfo.Slot>
83
- { ( fills ) => (
84
- <>
85
- { showPostContentPanels && (
86
- <VStack
87
- spacing={ 3 }
88
- // TODO: this needs to be consolidated with the panel in site editor, when we unify them.
89
- style={ { marginBlockEnd: '24px' } }
90
- >
91
- <PostFeaturedImagePanel
92
- withPanelBody={ false }
93
- />
94
- <PrivatePostExcerptPanel />
95
- <VStack spacing={ 1 }>
96
- <PostContentInformation />
97
- <PostLastEditedPanel />
98
- </VStack>
99
- </VStack>
100
- ) }
101
- <VStack
102
- spacing={ 1 }
103
- style={ { marginBlockEnd: '12px' } }
104
- >
105
- <PostStatusPanel />
106
- <PostSchedulePanel />
107
- <PostTemplatePanel />
108
- <PostURLPanel />
109
- <PostSyncStatus />
110
- </VStack>
111
- <PostSticky />
112
- <PostFormat />
113
- <PostSlug />
114
- <PostAuthorPanel />
115
- { fills }
116
- <HStack
117
- style={ {
118
- marginTop: '16px',
119
- } }
120
- >
121
- <PostTrash />
122
- </HStack>
123
- </>
124
- ) }
125
- </PluginPostStatusInfo.Slot>
126
- </PanelBody>
127
- );
128
- }
@@ -1,27 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- PostSticky as PostStickyForm,
6
- PostStickyCheck,
7
- privateApis as editorPrivateApis,
8
- } from '@wordpress/editor';
9
-
10
- /**
11
- * Internal dependencies
12
- */
13
- import { unlock } from '../../../lock-unlock';
14
-
15
- const { PostPanelRow } = unlock( editorPrivateApis );
16
-
17
- export function PostSticky() {
18
- return (
19
- <PostStickyCheck>
20
- <PostPanelRow>
21
- <PostStickyForm />
22
- </PostPanelRow>
23
- </PostStickyCheck>
24
- );
25
- }
26
-
27
- export default PostSticky;
@@ -1,12 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { PostTrash as PostTrashLink, PostTrashCheck } from '@wordpress/editor';
5
-
6
- export default function PostTrash() {
7
- return (
8
- <PostTrashCheck>
9
- <PostTrashLink />
10
- </PostTrashCheck>
11
- );
12
- }
@@ -1,88 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __, sprintf } from '@wordpress/i18n';
5
- import { Dropdown, Button } from '@wordpress/components';
6
- import {
7
- PostVisibility as PostVisibilityForm,
8
- PostVisibilityLabel,
9
- PostVisibilityCheck,
10
- usePostVisibilityLabel,
11
- privateApis as editorPrivateApis,
12
- } from '@wordpress/editor';
13
- import { useMemo, useState } from '@wordpress/element';
14
-
15
- /**
16
- * Internal dependencies
17
- */
18
- import { unlock } from '../../../lock-unlock';
19
-
20
- const { PostPanelRow } = unlock( editorPrivateApis );
21
-
22
- export function PostVisibility() {
23
- // Use internal state instead of a ref to make sure that the component
24
- // re-renders when the popover's anchor updates.
25
- const [ popoverAnchor, setPopoverAnchor ] = useState( null );
26
- // Memoize popoverProps to avoid returning a new object every time.
27
- const popoverProps = useMemo(
28
- () => ( {
29
- // Anchor the popover to the middle of the entire row so that it doesn't
30
- // move around when the label changes.
31
- anchor: popoverAnchor,
32
- placement: 'bottom-end',
33
- } ),
34
- [ popoverAnchor ]
35
- );
36
-
37
- return (
38
- <PostVisibilityCheck
39
- render={ ( { canEdit } ) => (
40
- <PostPanelRow
41
- label={ __( 'Visibility' ) }
42
- ref={ setPopoverAnchor }
43
- >
44
- { ! canEdit && (
45
- <span>
46
- <PostVisibilityLabel />
47
- </span>
48
- ) }
49
- { canEdit && (
50
- <Dropdown
51
- contentClassName="edit-post-post-visibility__dialog"
52
- popoverProps={ popoverProps }
53
- focusOnMount
54
- renderToggle={ ( { isOpen, onToggle } ) => (
55
- <PostVisibilityToggle
56
- isOpen={ isOpen }
57
- onClick={ onToggle }
58
- />
59
- ) }
60
- renderContent={ ( { onClose } ) => (
61
- <PostVisibilityForm onClose={ onClose } />
62
- ) }
63
- />
64
- ) }
65
- </PostPanelRow>
66
- ) }
67
- />
68
- );
69
- }
70
-
71
- function PostVisibilityToggle( { isOpen, onClick } ) {
72
- const label = usePostVisibilityLabel();
73
- return (
74
- <Button
75
- __next40pxDefaultSize
76
- className="edit-post-post-visibility__toggle"
77
- variant="tertiary"
78
- aria-expanded={ isOpen }
79
- // translators: %s: Current post visibility.
80
- aria-label={ sprintf( __( 'Select visibility: %s' ), label ) }
81
- onClick={ onClick }
82
- >
83
- { label }
84
- </Button>
85
- );
86
- }
87
-
88
- export default PostVisibility;
@@ -1,5 +0,0 @@
1
- .edit-post-post-visibility__dialog .editor-post-visibility {
2
- // sidebar width - popover padding - form margin
3
- min-width: $sidebar-width - $grid-unit-20 - $grid-unit-20;
4
- margin: $grid-unit-10;
5
- }
@@ -1,49 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { privateApis as componentsPrivateApis } from '@wordpress/components';
5
- import { __, _x } from '@wordpress/i18n';
6
- import { useSelect } from '@wordpress/data';
7
- import { forwardRef } from '@wordpress/element';
8
- import { store as editorStore } from '@wordpress/editor';
9
-
10
- /**
11
- * Internal dependencies
12
- */
13
- import { unlock } from '../../../lock-unlock';
14
- import { sidebars } from '../settings-sidebar';
15
-
16
- const { Tabs } = unlock( componentsPrivateApis );
17
-
18
- const SettingsHeader = ( _, ref ) => {
19
- const { documentLabel } = useSelect( ( select ) => {
20
- const { getPostTypeLabel } = select( editorStore );
21
-
22
- return {
23
- // translators: Default label for the Document sidebar tab, not selected.
24
- documentLabel: getPostTypeLabel() || _x( 'Document', 'noun' ),
25
- };
26
- }, [] );
27
-
28
- return (
29
- <Tabs.TabList ref={ ref }>
30
- <Tabs.Tab
31
- tabId={ sidebars.document }
32
- // Used for focus management in the SettingsSidebar component.
33
- data-tab-id={ sidebars.document }
34
- >
35
- { documentLabel }
36
- </Tabs.Tab>
37
- <Tabs.Tab
38
- tabId={ sidebars.block }
39
- // Used for focus management in the SettingsSidebar component.
40
- data-tab-id={ sidebars.block }
41
- >
42
- { /* translators: Text label for the Block Settings Sidebar tab. */ }
43
- { __( 'Block' ) }
44
- </Tabs.Tab>
45
- </Tabs.TabList>
46
- );
47
- };
48
-
49
- export default forwardRef( SettingsHeader );
@@ -1,247 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- BlockInspector,
6
- store as blockEditorStore,
7
- } from '@wordpress/block-editor';
8
- import { useSelect, useDispatch } from '@wordpress/data';
9
- import {
10
- Platform,
11
- useCallback,
12
- useContext,
13
- useEffect,
14
- useRef,
15
- } from '@wordpress/element';
16
- import { isRTL, __, sprintf } from '@wordpress/i18n';
17
- import { drawerLeft, drawerRight } from '@wordpress/icons';
18
- import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
19
- import {
20
- store as editorStore,
21
- PageAttributesPanel,
22
- PluginDocumentSettingPanel,
23
- PluginSidebar,
24
- PostDiscussionPanel,
25
- PostLastRevisionPanel,
26
- PostTaxonomiesPanel,
27
- privateApis as editorPrivateApis,
28
- } from '@wordpress/editor';
29
- import { addQueryArgs } from '@wordpress/url';
30
- import { store as noticesStore } from '@wordpress/notices';
31
-
32
- /**
33
- * Internal dependencies
34
- */
35
- import SettingsHeader from '../settings-header';
36
- import PostStatus from '../post-status';
37
- import MetaBoxes from '../../meta-boxes';
38
- import { store as editPostStore } from '../../../store';
39
- import { privateApis as componentsPrivateApis } from '@wordpress/components';
40
- import { unlock } from '../../../lock-unlock';
41
-
42
- const { PostCardPanel, PostActions, interfaceStore } =
43
- unlock( editorPrivateApis );
44
- const { Tabs } = unlock( componentsPrivateApis );
45
- const { PatternOverridesPanel, useAutoSwitchEditorSidebars } =
46
- unlock( editorPrivateApis );
47
-
48
- const SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select( {
49
- web: true,
50
- native: false,
51
- } );
52
- export const sidebars = {
53
- document: 'edit-post/document',
54
- block: 'edit-post/block',
55
- };
56
-
57
- const SidebarContent = ( { tabName, keyboardShortcut, isEditingTemplate } ) => {
58
- const tabListRef = useRef( null );
59
- // Because `PluginSidebar` renders a `ComplementaryArea`, we
60
- // need to forward the `Tabs` context so it can be passed through the
61
- // underlying slot/fill.
62
- const tabsContextValue = useContext( Tabs.Context );
63
-
64
- // This effect addresses a race condition caused by tabbing from the last
65
- // block in the editor into the settings sidebar. Without this effect, the
66
- // selected tab and browser focus can become separated in an unexpected way
67
- // (e.g the "block" tab is focused, but the "post" tab is selected).
68
- useEffect( () => {
69
- const tabsElements = Array.from(
70
- tabListRef.current?.querySelectorAll( '[role="tab"]' ) || []
71
- );
72
- const selectedTabElement = tabsElements.find(
73
- // We are purposefully using a custom `data-tab-id` attribute here
74
- // because we don't want rely on any assumptions about `Tabs`
75
- // component internals.
76
- ( element ) => element.getAttribute( 'data-tab-id' ) === tabName
77
- );
78
- const activeElement = selectedTabElement?.ownerDocument.activeElement;
79
- const tabsHasFocus = tabsElements.some( ( element ) => {
80
- return activeElement && activeElement.id === element.id;
81
- } );
82
- if (
83
- tabsHasFocus &&
84
- selectedTabElement &&
85
- selectedTabElement.id !== activeElement?.id
86
- ) {
87
- selectedTabElement?.focus();
88
- }
89
- }, [ tabName ] );
90
- const { createSuccessNotice } = useDispatch( noticesStore );
91
-
92
- const onActionPerformed = useCallback(
93
- ( actionId, items ) => {
94
- switch ( actionId ) {
95
- case 'move-to-trash':
96
- {
97
- const postType = items[ 0 ].type;
98
- document.location.href = addQueryArgs( 'edit.php', {
99
- post_type: postType,
100
- } );
101
- }
102
- break;
103
- case 'duplicate-post':
104
- {
105
- const newItem = items[ 0 ];
106
- const title =
107
- typeof newItem.title === 'string'
108
- ? newItem.title
109
- : newItem.title?.rendered;
110
- createSuccessNotice(
111
- sprintf(
112
- // translators: %s: Title of the created post e.g: "Post 1".
113
- __( '"%s" successfully created.' ),
114
- title
115
- ),
116
- {
117
- type: 'snackbar',
118
- id: 'duplicate-post-action',
119
- actions: [
120
- {
121
- label: __( 'Edit' ),
122
- onClick: () => {
123
- const postId = newItem.id;
124
- document.location.href =
125
- addQueryArgs( 'post.php', {
126
- post: postId,
127
- action: 'edit',
128
- } );
129
- },
130
- },
131
- ],
132
- }
133
- );
134
- }
135
- break;
136
- }
137
- },
138
- [ createSuccessNotice ]
139
- );
140
-
141
- return (
142
- <PluginSidebar
143
- identifier={ tabName }
144
- header={
145
- <Tabs.Context.Provider value={ tabsContextValue }>
146
- <SettingsHeader ref={ tabListRef } />
147
- </Tabs.Context.Provider>
148
- }
149
- closeLabel={ __( 'Close Settings' ) }
150
- // This classname is added so we can apply a corrective negative
151
- // margin to the panel.
152
- // see https://github.com/WordPress/gutenberg/pull/55360#pullrequestreview-1737671049
153
- className="edit-post-sidebar__panel"
154
- headerClassName="edit-post-sidebar__panel-tabs"
155
- /* translators: button label text should, if possible, be under 16 characters. */
156
- title={ __( 'Settings' ) }
157
- toggleShortcut={ keyboardShortcut }
158
- icon={ isRTL() ? drawerLeft : drawerRight }
159
- isActiveByDefault={ SIDEBAR_ACTIVE_BY_DEFAULT }
160
- >
161
- <Tabs.Context.Provider value={ tabsContextValue }>
162
- <Tabs.TabPanel tabId={ sidebars.document } focusable={ false }>
163
- <PostCardPanel
164
- actions={
165
- <PostActions
166
- onActionPerformed={ onActionPerformed }
167
- />
168
- }
169
- />
170
- { ! isEditingTemplate && <PostStatus /> }
171
- <PluginDocumentSettingPanel.Slot />
172
- <PostLastRevisionPanel />
173
- <PostTaxonomiesPanel />
174
- <PostDiscussionPanel />
175
- <PageAttributesPanel />
176
- <PatternOverridesPanel />
177
- { ! isEditingTemplate && <MetaBoxes location="side" /> }
178
- </Tabs.TabPanel>
179
- <Tabs.TabPanel tabId={ sidebars.block } focusable={ false }>
180
- <BlockInspector />
181
- </Tabs.TabPanel>
182
- </Tabs.Context.Provider>
183
- </PluginSidebar>
184
- );
185
- };
186
-
187
- const SettingsSidebar = () => {
188
- useAutoSwitchEditorSidebars();
189
- const { tabName, keyboardShortcut, isEditingTemplate } = useSelect(
190
- ( select ) => {
191
- const shortcut = select(
192
- keyboardShortcutsStore
193
- ).getShortcutRepresentation( 'core/editor/toggle-sidebar' );
194
-
195
- const sidebar =
196
- select( interfaceStore ).getActiveComplementaryArea( 'core' );
197
- const _isEditorSidebarOpened = [
198
- sidebars.block,
199
- sidebars.document,
200
- ].includes( sidebar );
201
- let _tabName = sidebar;
202
- if ( ! _isEditorSidebarOpened ) {
203
- _tabName = !! select(
204
- blockEditorStore
205
- ).getBlockSelectionStart()
206
- ? sidebars.block
207
- : sidebars.document;
208
- }
209
-
210
- return {
211
- tabName: _tabName,
212
- keyboardShortcut: shortcut,
213
- isEditingTemplate:
214
- select( editorStore ).getCurrentPostType() ===
215
- 'wp_template',
216
- };
217
- },
218
- []
219
- );
220
-
221
- const { openGeneralSidebar } = useDispatch( editPostStore );
222
-
223
- const onTabSelect = useCallback(
224
- ( newSelectedTabId ) => {
225
- if ( !! newSelectedTabId ) {
226
- openGeneralSidebar( newSelectedTabId );
227
- }
228
- },
229
- [ openGeneralSidebar ]
230
- );
231
-
232
- return (
233
- <Tabs
234
- selectedTabId={ tabName }
235
- onSelect={ onTabSelect }
236
- selectOnMove={ false }
237
- >
238
- <SidebarContent
239
- tabName={ tabName }
240
- keyboardShortcut={ keyboardShortcut }
241
- isEditingTemplate={ isEditingTemplate }
242
- />
243
- </Tabs>
244
- );
245
- };
246
-
247
- export default SettingsSidebar;
@@ -1,18 +0,0 @@
1
- .components-panel__header.edit-post-sidebar__panel-tabs {
2
- padding-left: 0;
3
- padding-right: $grid-unit-20;
4
-
5
- .components-button.has-icon {
6
- padding: 0;
7
- min-width: $icon-size;
8
- height: $icon-size;
9
-
10
- @include break-medium() {
11
- display: flex;
12
- }
13
- }
14
- }
15
-
16
- .edit-post-sidebar__panel {
17
- margin-top: -1px;
18
- }
@@ -1,63 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- PostTextEditor,
6
- PostTitleRaw,
7
- store as editorStore,
8
- } from '@wordpress/editor';
9
- import { Button } from '@wordpress/components';
10
- import { useDispatch, useSelect } from '@wordpress/data';
11
- import { __ } from '@wordpress/i18n';
12
- import { displayShortcut } from '@wordpress/keycodes';
13
- import { useEffect, useRef } from '@wordpress/element';
14
-
15
- /**
16
- * Internal dependencies
17
- */
18
- import { store as editPostStore } from '../../store';
19
-
20
- export default function TextEditor() {
21
- const isRichEditingEnabled = useSelect( ( select ) => {
22
- return select( editorStore ).getEditorSettings().richEditingEnabled;
23
- }, [] );
24
- const { switchEditorMode } = useDispatch( editorStore );
25
-
26
- const { isWelcomeGuideVisible } = useSelect( ( select ) => {
27
- const { isFeatureActive } = select( editPostStore );
28
-
29
- return {
30
- isWelcomeGuideVisible: isFeatureActive( 'welcomeGuide' ),
31
- };
32
- }, [] );
33
-
34
- const titleRef = useRef();
35
-
36
- useEffect( () => {
37
- if ( isWelcomeGuideVisible ) {
38
- return;
39
- }
40
- titleRef?.current?.focus();
41
- }, [ isWelcomeGuideVisible ] );
42
-
43
- return (
44
- <div className="edit-post-text-editor">
45
- { isRichEditingEnabled && (
46
- <div className="edit-post-text-editor__toolbar">
47
- <h2>{ __( 'Editing code' ) }</h2>
48
- <Button
49
- variant="tertiary"
50
- onClick={ () => switchEditorMode( 'visual' ) }
51
- shortcut={ displayShortcut.secondary( 'm' ) }
52
- >
53
- { __( 'Exit code editor' ) }
54
- </Button>
55
- </div>
56
- ) }
57
- <div className="edit-post-text-editor__body">
58
- <PostTitleRaw ref={ titleRef } />
59
- <PostTextEditor />
60
- </div>
61
- </div>
62
- );
63
- }