@wordpress/editor 13.27.2 → 13.28.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 (346) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/bindings/post-meta.js +1 -2
  3. package/build/bindings/post-meta.js.map +1 -1
  4. package/build/components/autocompleters/user.js +1 -2
  5. package/build/components/autocompleters/user.js.map +1 -1
  6. package/build/components/autosave-monitor/index.js +1 -2
  7. package/build/components/autosave-monitor/index.js.map +1 -1
  8. package/build/components/block-manager/category.js +1 -2
  9. package/build/components/block-manager/category.js.map +1 -1
  10. package/build/components/block-manager/checklist.js +1 -2
  11. package/build/components/block-manager/checklist.js.map +1 -1
  12. package/build/components/block-manager/index.js +1 -2
  13. package/build/components/block-manager/index.js.map +1 -1
  14. package/build/components/deprecated.js +52 -104
  15. package/build/components/deprecated.js.map +1 -1
  16. package/build/components/document-bar/index.js +5 -6
  17. package/build/components/document-bar/index.js.map +1 -1
  18. package/build/components/document-outline/check.js +1 -2
  19. package/build/components/document-outline/check.js.map +1 -1
  20. package/build/components/document-outline/index.js +1 -2
  21. package/build/components/document-outline/index.js.map +1 -1
  22. package/build/components/document-outline/item.js +1 -2
  23. package/build/components/document-outline/item.js.map +1 -1
  24. package/build/components/document-tools/index.js +1 -2
  25. package/build/components/document-tools/index.js.map +1 -1
  26. package/build/components/editor-canvas/edit-template-blocks-notification.js +11 -18
  27. package/build/components/editor-canvas/edit-template-blocks-notification.js.map +1 -1
  28. package/build/components/editor-canvas/index.js +14 -10
  29. package/build/components/editor-canvas/index.js.map +1 -1
  30. package/build/components/editor-help/add-blocks.native.js +1 -2
  31. package/build/components/editor-help/add-blocks.native.js.map +1 -1
  32. package/build/components/editor-help/customize-blocks.native.js +1 -2
  33. package/build/components/editor-help/customize-blocks.native.js.map +1 -1
  34. package/build/components/editor-help/help-detail-navigation-screen.native.js +1 -2
  35. package/build/components/editor-help/help-detail-navigation-screen.native.js.map +1 -1
  36. package/build/components/editor-help/help-get-support-button.native.js +1 -2
  37. package/build/components/editor-help/help-get-support-button.native.js.map +1 -1
  38. package/build/components/editor-help/help-section-title.native.js +1 -2
  39. package/build/components/editor-help/help-section-title.native.js.map +1 -1
  40. package/build/components/editor-help/help-topic-row.native.js +1 -2
  41. package/build/components/editor-help/help-topic-row.native.js.map +1 -1
  42. package/build/components/editor-help/icon-move-blocks.native.js +1 -2
  43. package/build/components/editor-help/icon-move-blocks.native.js.map +1 -1
  44. package/build/components/editor-help/index.native.js +1 -2
  45. package/build/components/editor-help/index.native.js.map +1 -1
  46. package/build/components/editor-help/intro-to-blocks.native.js +1 -2
  47. package/build/components/editor-help/intro-to-blocks.native.js.map +1 -1
  48. package/build/components/editor-help/move-blocks.native.js +1 -2
  49. package/build/components/editor-help/move-blocks.native.js.map +1 -1
  50. package/build/components/editor-help/remove-blocks.native.js +1 -2
  51. package/build/components/editor-help/remove-blocks.native.js.map +1 -1
  52. package/build/components/editor-history/redo.js +1 -2
  53. package/build/components/editor-history/redo.js.map +1 -1
  54. package/build/components/editor-history/undo.js +1 -2
  55. package/build/components/editor-history/undo.js.map +1 -1
  56. package/build/components/editor-notices/index.js +1 -2
  57. package/build/components/editor-notices/index.js.map +1 -1
  58. package/build/components/editor-snackbars/index.js +3 -1
  59. package/build/components/editor-snackbars/index.js.map +1 -1
  60. package/build/components/entities-saved-states/entity-record-item.js +1 -1
  61. package/build/components/entities-saved-states/entity-record-item.js.map +1 -1
  62. package/build/components/entities-saved-states/entity-type-list.js +7 -7
  63. package/build/components/entities-saved-states/entity-type-list.js.map +1 -1
  64. package/build/components/entities-saved-states/index.js +4 -1
  65. package/build/components/entities-saved-states/index.js.map +1 -1
  66. package/build/components/error-boundary/index.js +1 -2
  67. package/build/components/error-boundary/index.js.map +1 -1
  68. package/build/components/global-keyboard-shortcuts/register-shortcuts.js +1 -2
  69. package/build/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
  70. package/build/components/index.js +4 -6
  71. package/build/components/index.js.map +1 -1
  72. package/build/components/list-view-sidebar/index.js +43 -36
  73. package/build/components/list-view-sidebar/index.js.map +1 -1
  74. package/build/components/local-autosave-monitor/index.js +1 -2
  75. package/build/components/local-autosave-monitor/index.js.map +1 -1
  76. package/build/components/media-categories/index.js +1 -2
  77. package/build/components/media-categories/index.js.map +1 -1
  78. package/build/components/offline-status/index.native.js +1 -2
  79. package/build/components/offline-status/index.native.js.map +1 -1
  80. package/build/components/page-attributes/check.js +1 -2
  81. package/build/components/page-attributes/check.js.map +1 -1
  82. package/build/components/page-attributes/panel.js +1 -2
  83. package/build/components/page-attributes/panel.js.map +1 -1
  84. package/build/components/page-attributes/parent.js +1 -2
  85. package/build/components/page-attributes/parent.js.map +1 -1
  86. package/build/components/post-author/combobox.js +6 -60
  87. package/build/components/post-author/combobox.js.map +1 -1
  88. package/build/components/post-author/constants.js +7 -5
  89. package/build/components/post-author/constants.js.map +1 -1
  90. package/build/components/post-author/hook.js +72 -0
  91. package/build/components/post-author/hook.js.map +1 -0
  92. package/build/components/post-author/index.js +1 -2
  93. package/build/components/post-author/index.js.map +1 -1
  94. package/build/components/post-author/panel.js +1 -2
  95. package/build/components/post-author/panel.js.map +1 -1
  96. package/build/components/post-author/select.js +6 -24
  97. package/build/components/post-author/select.js.map +1 -1
  98. package/build/components/post-comments/index.js +1 -2
  99. package/build/components/post-comments/index.js.map +1 -1
  100. package/build/components/post-discussion/panel.js +1 -2
  101. package/build/components/post-discussion/panel.js.map +1 -1
  102. package/build/components/post-excerpt/check.js +1 -2
  103. package/build/components/post-excerpt/check.js.map +1 -1
  104. package/build/components/post-excerpt/index.js +1 -2
  105. package/build/components/post-excerpt/index.js.map +1 -1
  106. package/build/components/post-excerpt/plugin.js +1 -2
  107. package/build/components/post-excerpt/plugin.js.map +1 -1
  108. package/build/components/post-featured-image/check.js +1 -2
  109. package/build/components/post-featured-image/check.js.map +1 -1
  110. package/build/components/post-featured-image/index.js +1 -2
  111. package/build/components/post-featured-image/index.js.map +1 -1
  112. package/build/components/post-featured-image/panel.js +1 -2
  113. package/build/components/post-featured-image/panel.js.map +1 -1
  114. package/build/components/post-format/check.js +1 -2
  115. package/build/components/post-format/check.js.map +1 -1
  116. package/build/components/post-format/index.js +1 -2
  117. package/build/components/post-format/index.js.map +1 -1
  118. package/build/components/post-last-revision/check.js +1 -2
  119. package/build/components/post-last-revision/check.js.map +1 -1
  120. package/build/components/post-last-revision/index.js +6 -5
  121. package/build/components/post-last-revision/index.js.map +1 -1
  122. package/build/components/post-last-revision/panel.js +1 -2
  123. package/build/components/post-last-revision/panel.js.map +1 -1
  124. package/build/components/post-panel-row/index.js +1 -2
  125. package/build/components/post-panel-row/index.js.map +1 -1
  126. package/build/components/post-pending-status/check.js +1 -2
  127. package/build/components/post-pending-status/check.js.map +1 -1
  128. package/build/components/post-pending-status/index.js +1 -2
  129. package/build/components/post-pending-status/index.js.map +1 -1
  130. package/build/components/post-pingbacks/index.js +1 -2
  131. package/build/components/post-pingbacks/index.js.map +1 -1
  132. package/build/components/post-publish-button/index.js +1 -2
  133. package/build/components/post-publish-button/index.js.map +1 -1
  134. package/build/components/post-publish-button/label.js +1 -2
  135. package/build/components/post-publish-button/label.js.map +1 -1
  136. package/build/components/post-publish-panel/index.js +1 -2
  137. package/build/components/post-publish-panel/index.js.map +1 -1
  138. package/build/components/post-publish-panel/maybe-category-panel.js +1 -2
  139. package/build/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  140. package/build/components/post-publish-panel/maybe-tags-panel.js +22 -26
  141. package/build/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  142. package/build/components/post-publish-panel/postpublish.js +1 -2
  143. package/build/components/post-publish-panel/postpublish.js.map +1 -1
  144. package/build/components/post-publish-panel/prepublish.js +1 -2
  145. package/build/components/post-publish-panel/prepublish.js.map +1 -1
  146. package/build/components/post-schedule/index.js +0 -1
  147. package/build/components/post-schedule/index.js.map +1 -1
  148. package/build/components/post-schedule/label.js +1 -1
  149. package/build/components/post-schedule/label.js.map +1 -1
  150. package/build/components/post-schedule/panel.js +1 -0
  151. package/build/components/post-schedule/panel.js.map +1 -1
  152. package/build/components/post-slug/index.js +1 -2
  153. package/build/components/post-slug/index.js.map +1 -1
  154. package/build/components/post-switch-to-draft-button/index.js +1 -0
  155. package/build/components/post-switch-to-draft-button/index.js.map +1 -1
  156. package/build/components/post-sync-status/index.js +1 -1
  157. package/build/components/post-sync-status/index.js.map +1 -1
  158. package/build/components/post-taxonomies/check.js +8 -15
  159. package/build/components/post-taxonomies/check.js.map +1 -1
  160. package/build/components/post-taxonomies/flat-term-selector.js +1 -2
  161. package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
  162. package/build/components/post-taxonomies/hierarchical-term-selector.js +1 -2
  163. package/build/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
  164. package/build/components/post-taxonomies/index.js +14 -15
  165. package/build/components/post-taxonomies/index.js.map +1 -1
  166. package/build/components/post-taxonomies/panel.js +1 -2
  167. package/build/components/post-taxonomies/panel.js.map +1 -1
  168. package/build/components/post-template/block-theme.js +12 -11
  169. package/build/components/post-template/block-theme.js.map +1 -1
  170. package/build/components/post-template/classic-theme.js +10 -11
  171. package/build/components/post-template/classic-theme.js.map +1 -1
  172. package/build/components/post-template/create-new-template-modal.js +4 -5
  173. package/build/components/post-template/create-new-template-modal.js.map +1 -1
  174. package/build/components/post-template/panel.js +5 -1
  175. package/build/components/post-template/panel.js.map +1 -1
  176. package/build/components/post-title/constants.js +2 -4
  177. package/build/components/post-title/constants.js.map +1 -1
  178. package/build/components/post-title/index.js +2 -3
  179. package/build/components/post-title/index.js.map +1 -1
  180. package/build/components/post-title/index.native.js +1 -2
  181. package/build/components/post-title/index.native.js.map +1 -1
  182. package/build/components/post-title/post-title-raw.js +1 -2
  183. package/build/components/post-title/post-title-raw.js.map +1 -1
  184. package/build/components/post-trash/check.js +1 -2
  185. package/build/components/post-trash/check.js.map +1 -1
  186. package/build/components/post-trash/index.js +1 -0
  187. package/build/components/post-trash/index.js.map +1 -1
  188. package/build/components/post-type-support-check/index.js +1 -2
  189. package/build/components/post-type-support-check/index.js.map +1 -1
  190. package/build/components/post-url/panel.js +1 -0
  191. package/build/components/post-url/panel.js.map +1 -1
  192. package/build/components/post-visibility/utils.js +1 -2
  193. package/build/components/post-visibility/utils.js.map +1 -1
  194. package/build/components/preferences-modal/enable-panel.js +1 -2
  195. package/build/components/preferences-modal/enable-panel.js.map +1 -1
  196. package/build/components/preferences-modal/enable-plugin-document-setting-panel.js +1 -2
  197. package/build/components/preferences-modal/enable-plugin-document-setting-panel.js.map +1 -1
  198. package/build/components/preferences-modal/index.js +0 -1
  199. package/build/components/preferences-modal/index.js.map +1 -1
  200. package/build/components/provider/constants.js +1 -2
  201. package/build/components/provider/constants.js.map +1 -1
  202. package/build/components/provider/index.js +12 -6
  203. package/build/components/provider/index.js.map +1 -1
  204. package/build/components/provider/index.native.js +4 -6
  205. package/build/components/provider/index.native.js.map +1 -1
  206. package/build/components/provider/use-block-editor-settings.js +2 -3
  207. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  208. package/build/components/provider/use-block-editor-settings.native.js +1 -2
  209. package/build/components/provider/use-block-editor-settings.native.js.map +1 -1
  210. package/build/components/provider/with-registry-provider.js +1 -2
  211. package/build/components/provider/with-registry-provider.js.map +1 -1
  212. package/build/components/table-of-contents/index.js +1 -2
  213. package/build/components/table-of-contents/index.js.map +1 -1
  214. package/build/components/table-of-contents/panel.js +1 -2
  215. package/build/components/table-of-contents/panel.js.map +1 -1
  216. package/build/components/template-validation-notice/index.js +1 -2
  217. package/build/components/template-validation-notice/index.js.map +1 -1
  218. package/build/components/theme-support-check/index.js +1 -2
  219. package/build/components/theme-support-check/index.js.map +1 -1
  220. package/build/hooks/pattern-partial-syncing.js +9 -2
  221. package/build/hooks/pattern-partial-syncing.js.map +1 -1
  222. package/build/private-apis.js +1 -2
  223. package/build/private-apis.js.map +1 -1
  224. package/build/store/actions.js +31 -62
  225. package/build/store/actions.js.map +1 -1
  226. package/build/store/constants.js +7 -14
  227. package/build/store/constants.js.map +1 -1
  228. package/build/store/defaults.js +1 -2
  229. package/build/store/defaults.js.map +1 -1
  230. package/build/store/index.js +4 -6
  231. package/build/store/index.js.map +1 -1
  232. package/build/store/private-selectors.js +1 -2
  233. package/build/store/private-selectors.js.map +1 -1
  234. package/build/store/reducer.js +1 -2
  235. package/build/store/reducer.js.map +1 -1
  236. package/build/store/reducer.native.js +2 -4
  237. package/build/store/reducer.native.js.map +1 -1
  238. package/build/store/selectors.js +72 -144
  239. package/build/store/selectors.js.map +1 -1
  240. package/build/store/selectors.native.js +1 -2
  241. package/build/store/selectors.native.js.map +1 -1
  242. package/build-module/components/document-bar/index.js +5 -6
  243. package/build-module/components/document-bar/index.js.map +1 -1
  244. package/build-module/components/editor-canvas/edit-template-blocks-notification.js +11 -18
  245. package/build-module/components/editor-canvas/edit-template-blocks-notification.js.map +1 -1
  246. package/build-module/components/editor-canvas/index.js +13 -8
  247. package/build-module/components/editor-canvas/index.js.map +1 -1
  248. package/build-module/components/editor-snackbars/index.js +4 -1
  249. package/build-module/components/editor-snackbars/index.js.map +1 -1
  250. package/build-module/components/entities-saved-states/entity-record-item.js +1 -1
  251. package/build-module/components/entities-saved-states/entity-record-item.js.map +1 -1
  252. package/build-module/components/entities-saved-states/entity-type-list.js +8 -8
  253. package/build-module/components/entities-saved-states/entity-type-list.js.map +1 -1
  254. package/build-module/components/entities-saved-states/index.js +6 -3
  255. package/build-module/components/entities-saved-states/index.js.map +1 -1
  256. package/build-module/components/list-view-sidebar/index.js +44 -37
  257. package/build-module/components/list-view-sidebar/index.js.map +1 -1
  258. package/build-module/components/post-author/combobox.js +8 -61
  259. package/build-module/components/post-author/combobox.js.map +1 -1
  260. package/build-module/components/post-author/constants.js +5 -2
  261. package/build-module/components/post-author/constants.js.map +1 -1
  262. package/build-module/components/post-author/hook.js +65 -0
  263. package/build-module/components/post-author/hook.js.map +1 -0
  264. package/build-module/components/post-author/select.js +7 -24
  265. package/build-module/components/post-author/select.js.map +1 -1
  266. package/build-module/components/post-last-revision/index.js +6 -4
  267. package/build-module/components/post-last-revision/index.js.map +1 -1
  268. package/build-module/components/post-publish-panel/maybe-tags-panel.js +24 -27
  269. package/build-module/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  270. package/build-module/components/post-schedule/index.js +0 -1
  271. package/build-module/components/post-schedule/index.js.map +1 -1
  272. package/build-module/components/post-schedule/label.js +1 -1
  273. package/build-module/components/post-schedule/label.js.map +1 -1
  274. package/build-module/components/post-schedule/panel.js +1 -0
  275. package/build-module/components/post-schedule/panel.js.map +1 -1
  276. package/build-module/components/post-switch-to-draft-button/index.js +1 -0
  277. package/build-module/components/post-switch-to-draft-button/index.js.map +1 -1
  278. package/build-module/components/post-sync-status/index.js +1 -1
  279. package/build-module/components/post-sync-status/index.js.map +1 -1
  280. package/build-module/components/post-taxonomies/check.js +9 -14
  281. package/build-module/components/post-taxonomies/check.js.map +1 -1
  282. package/build-module/components/post-taxonomies/index.js +15 -15
  283. package/build-module/components/post-taxonomies/index.js.map +1 -1
  284. package/build-module/components/post-template/block-theme.js +12 -11
  285. package/build-module/components/post-template/block-theme.js.map +1 -1
  286. package/build-module/components/post-template/classic-theme.js +9 -9
  287. package/build-module/components/post-template/classic-theme.js.map +1 -1
  288. package/build-module/components/post-template/create-new-template-modal.js +4 -5
  289. package/build-module/components/post-template/create-new-template-modal.js.map +1 -1
  290. package/build-module/components/post-template/panel.js +5 -1
  291. package/build-module/components/post-template/panel.js.map +1 -1
  292. package/build-module/components/post-title/index.js +1 -2
  293. package/build-module/components/post-title/index.js.map +1 -1
  294. package/build-module/components/post-trash/index.js +1 -0
  295. package/build-module/components/post-trash/index.js.map +1 -1
  296. package/build-module/components/post-url/panel.js +1 -0
  297. package/build-module/components/post-url/panel.js.map +1 -1
  298. package/build-module/components/preferences-modal/index.js +0 -1
  299. package/build-module/components/preferences-modal/index.js.map +1 -1
  300. package/build-module/components/provider/index.js +10 -2
  301. package/build-module/components/provider/index.js.map +1 -1
  302. package/build-module/components/provider/use-block-editor-settings.js +1 -1
  303. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  304. package/build-module/components/table-of-contents/panel.js +0 -1
  305. package/build-module/components/table-of-contents/panel.js.map +1 -1
  306. package/build-module/hooks/pattern-partial-syncing.js +9 -2
  307. package/build-module/hooks/pattern-partial-syncing.js.map +1 -1
  308. package/build-style/style-rtl.css +28 -22
  309. package/build-style/style.css +28 -22
  310. package/package.json +32 -32
  311. package/src/components/document-bar/index.js +22 -17
  312. package/src/components/editor-canvas/edit-template-blocks-notification.js +31 -30
  313. package/src/components/editor-canvas/index.js +14 -4
  314. package/src/components/editor-snackbars/index.js +6 -3
  315. package/src/components/entities-saved-states/entity-record-item.js +1 -4
  316. package/src/components/entities-saved-states/entity-type-list.js +8 -8
  317. package/src/components/entities-saved-states/index.js +17 -4
  318. package/src/components/entities-saved-states/style.scss +5 -0
  319. package/src/components/list-view-sidebar/index.js +60 -47
  320. package/src/components/list-view-sidebar/style.scss +20 -20
  321. package/src/components/post-author/combobox.js +5 -61
  322. package/src/components/post-author/constants.js +6 -2
  323. package/src/components/post-author/hook.js +63 -0
  324. package/src/components/post-author/select.js +5 -25
  325. package/src/components/post-last-revision/index.js +6 -6
  326. package/src/components/post-last-revision/style.scss +3 -6
  327. package/src/components/post-panel-row/style.scss +3 -3
  328. package/src/components/post-publish-panel/maybe-tags-panel.js +27 -37
  329. package/src/components/post-publish-panel/style.scss +3 -1
  330. package/src/components/post-schedule/label.js +1 -1
  331. package/src/components/post-schedule/panel.js +1 -0
  332. package/src/components/post-schedule/test/label.js +19 -7
  333. package/src/components/post-switch-to-draft-button/index.js +1 -0
  334. package/src/components/post-sync-status/index.js +8 -2
  335. package/src/components/post-taxonomies/check.js +11 -15
  336. package/src/components/post-taxonomies/index.js +15 -22
  337. package/src/components/post-taxonomies/test/index.js +37 -51
  338. package/src/components/post-template/block-theme.js +29 -22
  339. package/src/components/post-template/classic-theme.js +10 -13
  340. package/src/components/post-template/create-new-template-modal.js +7 -9
  341. package/src/components/post-template/panel.js +5 -1
  342. package/src/components/post-trash/index.js +1 -0
  343. package/src/components/post-url/panel.js +1 -0
  344. package/src/components/provider/index.js +22 -2
  345. package/src/components/provider/use-block-editor-settings.js +1 -1
  346. package/src/hooks/pattern-partial-syncing.js +23 -4
@@ -2,36 +2,18 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
- import { useMemo } from '@wordpress/element';
6
- import { useSelect, useDispatch } from '@wordpress/data';
7
- import { decodeEntities } from '@wordpress/html-entities';
5
+ import { useDispatch } from '@wordpress/data';
8
6
  import { SelectControl } from '@wordpress/components';
9
- import { store as coreStore } from '@wordpress/core-data';
10
7
 
11
8
  /**
12
9
  * Internal dependencies
13
10
  */
14
11
  import { store as editorStore } from '../../store';
15
- import { AUTHORS_QUERY } from './constants';
12
+ import { useAuthorsQuery } from './hook';
16
13
 
17
- function PostAuthorSelect() {
14
+ export default function PostAuthorSelect() {
18
15
  const { editPost } = useDispatch( editorStore );
19
- const { postAuthor, authors } = useSelect( ( select ) => {
20
- return {
21
- postAuthor:
22
- select( editorStore ).getEditedPostAttribute( 'author' ),
23
- authors: select( coreStore ).getUsers( AUTHORS_QUERY ),
24
- };
25
- }, [] );
26
-
27
- const authorOptions = useMemo( () => {
28
- return ( authors ?? [] ).map( ( author ) => {
29
- return {
30
- value: author.id,
31
- label: decodeEntities( author.name ),
32
- };
33
- } );
34
- }, [ authors ] );
16
+ const { authorId, authorOptions } = useAuthorsQuery();
35
17
 
36
18
  const setAuthorId = ( value ) => {
37
19
  const author = Number( value );
@@ -46,9 +28,7 @@ function PostAuthorSelect() {
46
28
  label={ __( 'Author' ) }
47
29
  options={ authorOptions }
48
30
  onChange={ setAuthorId }
49
- value={ postAuthor }
31
+ value={ authorId }
50
32
  />
51
33
  );
52
34
  }
53
-
54
- export default PostAuthorSelect;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { sprintf, _n } from '@wordpress/i18n';
4
+ import { sprintf, __ } from '@wordpress/i18n';
5
5
  import { Button } from '@wordpress/components';
6
6
  import { useSelect } from '@wordpress/data';
7
7
  import { backup } from '@wordpress/icons';
@@ -31,13 +31,13 @@ function LastRevision() {
31
31
  } ) }
32
32
  className="editor-post-last-revision__title"
33
33
  icon={ backup }
34
- >
35
- { sprintf(
36
- /* translators: %d: number of revisions */
37
- _n( '%d Revision', '%d Revisions', revisionsCount ),
34
+ iconPosition="right"
35
+ text={ sprintf(
36
+ /* translators: %s: number of revisions */
37
+ __( 'Revisions (%s)' ),
38
38
  revisionsCount
39
39
  ) }
40
- </Button>
40
+ />
41
41
  </PostLastRevisionCheck>
42
42
  );
43
43
  }
@@ -1,14 +1,11 @@
1
1
  .editor-post-last-revision__title {
2
2
  width: 100%;
3
- font-weight: 600;
4
-
5
- .dashicon {
6
- margin-right: 5px;
7
- }
3
+ font-weight: 500;
8
4
  }
9
5
 
10
- .components-button.editor-post-last-revision__title {
6
+ .editor-post-last-revision__title.components-button.has-icon {
11
7
  height: 100%;
8
+ justify-content: space-between;
12
9
 
13
10
  &:hover,
14
11
  &:active {
@@ -1,6 +1,6 @@
1
1
  .editor-post-panel__row {
2
2
  width: 100%;
3
- min-height: $button-size;
3
+ min-height: $button-size-next-default-40px;
4
4
  justify-content: flex-start !important;
5
5
  align-items: flex-start !important;
6
6
  }
@@ -8,14 +8,14 @@
8
8
  .editor-post-panel__row-label {
9
9
  width: 30%;
10
10
  flex-shrink: 0;
11
- min-height: $button-size;
11
+ min-height: $button-size-next-default-40px;
12
12
  display: flex;
13
13
  align-items: center;
14
14
  }
15
15
 
16
16
  .editor-post-panel__row-control {
17
17
  flex-grow: 1;
18
- min-height: $button-size;
18
+ min-height: $button-size-next-default-40px;
19
19
  display: flex;
20
20
  align-items: center;
21
21
  }
@@ -2,9 +2,8 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
- import { Component } from '@wordpress/element';
6
- import { compose, ifCondition } from '@wordpress/compose';
7
- import { withSelect } from '@wordpress/data';
5
+ import { useState } from '@wordpress/element';
6
+ import { useSelect } from '@wordpress/data';
8
7
  import { PanelBody } from '@wordpress/components';
9
8
  import { store as coreStore } from '@wordpress/core-data';
10
9
 
@@ -34,12 +33,26 @@ const TagsPanel = () => {
34
33
  );
35
34
  };
36
35
 
37
- class MaybeTagsPanel extends Component {
38
- constructor( props ) {
39
- super( props );
40
- this.state = {
41
- hadTagsWhenOpeningThePanel: props.hasTags,
36
+ const MaybeTagsPanel = () => {
37
+ const { hasTags, isPostTypeSupported } = useSelect( ( select ) => {
38
+ const postType = select( editorStore ).getCurrentPostType();
39
+ const tagsTaxonomy = select( coreStore ).getTaxonomy( 'post_tag' );
40
+ const _isPostTypeSupported = tagsTaxonomy?.types?.includes( postType );
41
+ const areTagsFetched = tagsTaxonomy !== undefined;
42
+ const tags =
43
+ tagsTaxonomy &&
44
+ select( editorStore ).getEditedPostAttribute(
45
+ tagsTaxonomy.rest_base
46
+ );
47
+ return {
48
+ hasTags: !! tags?.length,
49
+ isPostTypeSupported: areTagsFetched && _isPostTypeSupported,
42
50
  };
51
+ }, [] );
52
+ const [ hadTagsWhenOpeningThePanel ] = useState( hasTags );
53
+
54
+ if ( ! isPostTypeSupported ) {
55
+ return null;
43
56
  }
44
57
 
45
58
  /*
@@ -52,34 +65,11 @@ class MaybeTagsPanel extends Component {
52
65
  * hiding this panel and keeping the user from adding
53
66
  * more than one tag.
54
67
  */
55
- render() {
56
- if ( ! this.state.hadTagsWhenOpeningThePanel ) {
57
- return <TagsPanel />;
58
- }
59
-
60
- return null;
68
+ if ( ! hadTagsWhenOpeningThePanel ) {
69
+ return <TagsPanel />;
61
70
  }
62
- }
63
71
 
64
- export default compose(
65
- withSelect( ( select ) => {
66
- const postType = select( editorStore ).getCurrentPostType();
67
- const tagsTaxonomy = select( coreStore ).getTaxonomy( 'post_tag' );
68
- const tags =
69
- tagsTaxonomy &&
70
- select( editorStore ).getEditedPostAttribute(
71
- tagsTaxonomy.rest_base
72
- );
73
- return {
74
- areTagsFetched: tagsTaxonomy !== undefined,
75
- isPostTypeSupported:
76
- tagsTaxonomy &&
77
- tagsTaxonomy.types.some( ( type ) => type === postType ),
78
- hasTags: tags && tags.length,
79
- };
80
- } ),
81
- ifCondition(
82
- ( { areTagsFetched, isPostTypeSupported } ) =>
83
- isPostTypeSupported && areTagsFetched
84
- )
85
- )( MaybeTagsPanel );
72
+ return null;
73
+ };
74
+
75
+ export default MaybeTagsPanel;
@@ -152,7 +152,9 @@
152
152
  }
153
153
 
154
154
  input[readonly] {
155
- padding: $grid-unit-20;
155
+ // Do not increase top and bottom padding otherwise Firefox won't show the text overflow ellipsis.
156
+ // See https://github.com/WordPress/gutenberg/pull/57310
157
+ padding: $grid-unit-15;
156
158
  background: $gray-100;
157
159
  border-color: $gray-400;
158
160
  overflow: hidden;
@@ -102,7 +102,7 @@ function getTimezoneAbbreviation() {
102
102
  }
103
103
 
104
104
  const symbol = timezone.offset < 0 ? '' : '+';
105
- return `UTC${ symbol }${ timezone.offset }`;
105
+ return `UTC${ symbol }${ timezone.offsetFormatted }`;
106
106
  }
107
107
 
108
108
  function isTimezoneSameAsSiteTimezone( date ) {
@@ -40,6 +40,7 @@ export default function PostSchedulePanel() {
40
40
  contentClassName="editor-post-schedule__dialog"
41
41
  renderToggle={ ( { onToggle, isOpen } ) => (
42
42
  <Button
43
+ __next40pxDefaultSize
43
44
  className="editor-post-schedule__dialog-toggle"
44
45
  variant="tertiary"
45
46
  onClick={ onToggle }
@@ -23,9 +23,11 @@ describe( 'getFullPostScheduleLabel', () => {
23
23
  } );
24
24
 
25
25
  const label = getFullPostScheduleLabel( '2022-04-28T15:30:00' );
26
- expect( label ).toBe( 'April 28, 2022 3:30\xa0pm AEST' );
27
26
 
27
+ // Reset date settings before potential failure of the expectation.
28
28
  setSettings( settings );
29
+
30
+ expect( label ).toBe( 'April 28, 2022 3:30\xa0pm AEST' );
29
31
  } );
30
32
 
31
33
  it( "should show site's timezone offset", () => {
@@ -33,13 +35,15 @@ describe( 'getFullPostScheduleLabel', () => {
33
35
 
34
36
  setSettings( {
35
37
  ...settings,
36
- timezone: { offset: 10 },
38
+ timezone: { offsetFormatted: 10 },
37
39
  } );
38
40
 
39
41
  const label = getFullPostScheduleLabel( '2022-04-28T15:30:00' );
40
- expect( label ).toBe( 'April 28, 2022 3:30\xa0pm UTC+10' );
41
42
 
43
+ // Reset date settings before potential failure of the expectation.
42
44
  setSettings( settings );
45
+
46
+ expect( label ).toBe( 'April 28, 2022 3:30\xa0pm UTC+10' );
43
47
  } );
44
48
  } );
45
49
 
@@ -80,9 +84,11 @@ describe( 'getPostScheduleLabel', () => {
80
84
  );
81
85
 
82
86
  const label = getPostScheduleLabel( '2022-04-28T15:30:00', { now } );
83
- expect( label ).toBe( 'Today at 3:30\xa0pm' );
84
87
 
88
+ // Reset date settings before potential failure of the expectation.
85
89
  setSettings( settings );
90
+
91
+ expect( label ).toBe( 'Today at 3:30\xa0pm' );
86
92
  } );
87
93
 
88
94
  it( "should show tomorrow if date is same day as now + 1 day and user timezone equals site's timezone", () => {
@@ -99,9 +105,11 @@ describe( 'getPostScheduleLabel', () => {
99
105
  );
100
106
 
101
107
  const label = getPostScheduleLabel( '2022-04-29T15:30:00', { now } );
102
- expect( label ).toBe( 'Tomorrow at 3:30\xa0pm' );
103
108
 
109
+ // Reset date settings before potential failure of the expectation.
104
110
  setSettings( settings );
111
+
112
+ expect( label ).toBe( 'Tomorrow at 3:30\xa0pm' );
105
113
  } );
106
114
 
107
115
  it( "should hide year if date is same year as now and user timezone equals site's timezone", () => {
@@ -118,9 +126,11 @@ describe( 'getPostScheduleLabel', () => {
118
126
  );
119
127
 
120
128
  const label = getPostScheduleLabel( '2022-12-25T15:30:00', { now } );
121
- expect( label ).toBe( 'December 25 3:30\xa0pm' );
122
129
 
130
+ // Reset date settings before potential failure of the expectation.
123
131
  setSettings( settings );
132
+
133
+ expect( label ).toBe( 'December 25 3:30\xa0pm' );
124
134
  } );
125
135
 
126
136
  it( "should show year if date is not same year as now and user timezone equals site's timezone", () => {
@@ -137,8 +147,10 @@ describe( 'getPostScheduleLabel', () => {
137
147
  );
138
148
 
139
149
  const label = getPostScheduleLabel( '2023-04-28T15:30:00', { now } );
140
- expect( label ).toBe( 'April 28, 2023 3:30\xa0pm' );
141
150
 
151
+ // Reset date settings before potential failure of the expectation.
142
152
  setSettings( settings );
153
+
154
+ expect( label ).toBe( 'April 28, 2023 3:30\xa0pm' );
143
155
  } );
144
156
  } );
@@ -46,6 +46,7 @@ export default function PostSwitchToDraftButton() {
46
46
  return (
47
47
  <>
48
48
  <Button
49
+ __next40pxDefaultSize
49
50
  className="editor-post-switch-to-draft"
50
51
  onClick={ () => {
51
52
  if ( ! isDisabled ) {
@@ -47,8 +47,14 @@ export default function PostSyncStatus() {
47
47
  <PostPanelRow label={ __( 'Sync status' ) }>
48
48
  <div className="editor-post-sync-status__value">
49
49
  { syncStatus === 'unsynced'
50
- ? __( 'Not synced' )
51
- : __( 'Fully synced' ) }
50
+ ? _x(
51
+ 'Not synced',
52
+ 'Text that indicates that the pattern is not synchronized'
53
+ )
54
+ : _x(
55
+ 'Synced',
56
+ 'Text that indicates that the pattern is synchronized'
57
+ ) }
52
58
  </div>
53
59
  </PostPanelRow>
54
60
  );
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { compose } from '@wordpress/compose';
5
- import { withSelect } from '@wordpress/data';
4
+ import { useSelect } from '@wordpress/data';
6
5
  import { store as coreStore } from '@wordpress/core-data';
7
6
 
8
7
  /**
@@ -10,22 +9,19 @@ import { store as coreStore } from '@wordpress/core-data';
10
9
  */
11
10
  import { store as editorStore } from '../../store';
12
11
 
13
- export function PostTaxonomiesCheck( { postType, taxonomies, children } ) {
14
- const hasTaxonomies = taxonomies?.some( ( taxonomy ) =>
15
- taxonomy.types.includes( postType )
16
- );
12
+ export default function PostTaxonomiesCheck( { children } ) {
13
+ const hasTaxonomies = useSelect( ( select ) => {
14
+ const postType = select( editorStore ).getCurrentPostType();
15
+ const taxonomies = select( coreStore ).getTaxonomies( {
16
+ per_page: -1,
17
+ } );
18
+ return taxonomies?.some( ( taxonomy ) =>
19
+ taxonomy.types.includes( postType )
20
+ );
21
+ }, [] );
17
22
  if ( ! hasTaxonomies ) {
18
23
  return null;
19
24
  }
20
25
 
21
26
  return children;
22
27
  }
23
-
24
- export default compose( [
25
- withSelect( ( select ) => {
26
- return {
27
- postType: select( editorStore ).getCurrentPostType(),
28
- taxonomies: select( coreStore ).getTaxonomies( { per_page: -1 } ),
29
- };
30
- } ),
31
- ] )( PostTaxonomiesCheck );
@@ -2,8 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { Fragment } from '@wordpress/element';
5
- import { withSelect } from '@wordpress/data';
6
- import { compose } from '@wordpress/compose';
5
+ import { useSelect } from '@wordpress/data';
7
6
  import { store as coreStore } from '@wordpress/core-data';
8
7
 
9
8
  /**
@@ -15,19 +14,20 @@ import { store as editorStore } from '../../store';
15
14
 
16
15
  const identity = ( x ) => x;
17
16
 
18
- export function PostTaxonomies( {
19
- postType,
20
- taxonomies,
21
- taxonomyWrapper = identity,
22
- } ) {
23
- const availableTaxonomies = ( taxonomies ?? [] ).filter( ( taxonomy ) =>
24
- taxonomy.types.includes( postType )
25
- );
26
- const visibleTaxonomies = availableTaxonomies.filter(
27
- // In some circumstances .visibility can end up as undefined so optional chaining operator required.
28
- // https://github.com/WordPress/gutenberg/issues/40326
29
- ( taxonomy ) => taxonomy.visibility?.show_ui
17
+ export function PostTaxonomies( { taxonomyWrapper = identity } ) {
18
+ const { postType, taxonomies } = useSelect( ( select ) => {
19
+ return {
20
+ postType: select( editorStore ).getCurrentPostType(),
21
+ taxonomies: select( coreStore ).getTaxonomies( { per_page: -1 } ),
22
+ };
23
+ }, [] );
24
+ const visibleTaxonomies = ( taxonomies ?? [] ).filter(
25
+ ( taxonomy ) =>
26
+ // In some circumstances .visibility can end up as undefined so optional chaining operator required.
27
+ // https://github.com/WordPress/gutenberg/issues/40326
28
+ taxonomy.types.includes( postType ) && taxonomy.visibility?.show_ui
30
29
  );
30
+
31
31
  return visibleTaxonomies.map( ( taxonomy ) => {
32
32
  const TaxonomyComponent = taxonomy.hierarchical
33
33
  ? HierarchicalTermSelector
@@ -43,11 +43,4 @@ export function PostTaxonomies( {
43
43
  } );
44
44
  }
45
45
 
46
- export default compose( [
47
- withSelect( ( select ) => {
48
- return {
49
- postType: select( editorStore ).getCurrentPostType(),
50
- taxonomies: select( coreStore ).getTaxonomies( { per_page: -1 } ),
51
- };
52
- } ),
53
- ] )( PostTaxonomies );
46
+ export default PostTaxonomies;
@@ -13,7 +13,7 @@ import { store as coreStore } from '@wordpress/core-data';
13
13
  /**
14
14
  * Internal dependencies
15
15
  */
16
- import { PostTaxonomies } from '../';
16
+ import PostTaxonomies from '../';
17
17
 
18
18
  describe( 'PostTaxonomies', () => {
19
19
  const genresTaxonomy = {
@@ -87,20 +87,30 @@ describe( 'PostTaxonomies', () => {
87
87
  it( 'should render no children if taxonomy data not available', () => {
88
88
  const taxonomies = null;
89
89
 
90
- const { container } = render(
91
- <PostTaxonomies postType="page" taxonomies={ taxonomies } />
90
+ jest.spyOn(
91
+ select( editorStore ),
92
+ 'getCurrentPostType'
93
+ ).mockReturnValue( 'page' );
94
+ jest.spyOn( select( coreStore ), 'getTaxonomies' ).mockReturnValue(
95
+ taxonomies
92
96
  );
93
97
 
98
+ const { container } = render( <PostTaxonomies /> );
99
+
94
100
  expect( container ).toBeEmptyDOMElement();
95
101
  } );
96
102
 
97
103
  it( 'should render taxonomy components for taxonomies assigned to post type', () => {
98
- const { rerender } = render(
99
- <PostTaxonomies
100
- postType="book"
101
- taxonomies={ [ genresTaxonomy, categoriesTaxonomy ] }
102
- />
103
- );
104
+ jest.spyOn(
105
+ select( editorStore ),
106
+ 'getCurrentPostType'
107
+ ).mockReturnValue( 'book' );
108
+ jest.spyOn( select( coreStore ), 'getTaxonomies' ).mockReturnValue( [
109
+ genresTaxonomy,
110
+ categoriesTaxonomy,
111
+ ] );
112
+
113
+ render( <PostTaxonomies /> );
104
114
 
105
115
  expect( screen.getByRole( 'group', { name: 'Genres' } ) ).toBeVisible();
106
116
  expect(
@@ -112,59 +122,35 @@ describe( 'PostTaxonomies', () => {
112
122
  expect(
113
123
  screen.queryByRole( 'button', { name: 'Add new category' } )
114
124
  ).not.toBeInTheDocument();
115
-
116
- rerender(
117
- <PostTaxonomies
118
- postType="book"
119
- taxonomies={ [
120
- genresTaxonomy,
121
- {
122
- ...categoriesTaxonomy,
123
- types: [ 'post', 'page', 'book' ],
124
- },
125
- ] }
126
- />
127
- );
128
-
129
- expect( screen.getByRole( 'group', { name: 'Genres' } ) ).toBeVisible();
130
- expect(
131
- screen.getByRole( 'group', { name: 'Categories' } )
132
- ).toBeVisible();
133
- expect(
134
- screen.getByRole( 'button', { name: 'Add new genre' } )
135
- ).toBeVisible();
136
- expect(
137
- screen.getByRole( 'button', { name: 'Add new category' } )
138
- ).toBeVisible();
139
125
  } );
140
126
 
141
127
  it( 'should not render taxonomy components that hide their ui', () => {
142
- const { rerender } = render(
143
- <PostTaxonomies postType="book" taxonomies={ [ genresTaxonomy ] } />
144
- );
128
+ jest.spyOn(
129
+ select( editorStore ),
130
+ 'getCurrentPostType'
131
+ ).mockReturnValue( 'book' );
132
+ jest.spyOn( select( coreStore ), 'getTaxonomies' ).mockReturnValue( [
133
+ genresTaxonomy,
134
+ {
135
+ ...categoriesTaxonomy,
136
+ types: [ 'post', 'page', 'book' ],
137
+ visibility: {
138
+ show_ui: false,
139
+ },
140
+ },
141
+ ] );
142
+
143
+ render( <PostTaxonomies /> );
145
144
 
146
145
  expect( screen.getByRole( 'group', { name: 'Genres' } ) ).toBeVisible();
147
146
  expect(
148
147
  screen.getByRole( 'button', { name: 'Add new genre' } )
149
148
  ).toBeVisible();
150
-
151
- rerender(
152
- <PostTaxonomies
153
- postType="book"
154
- taxonomies={ [
155
- {
156
- ...genresTaxonomy,
157
- visibility: { show_ui: false },
158
- },
159
- ] }
160
- />
161
- );
162
-
163
149
  expect(
164
- screen.queryByRole( 'group', { name: 'Genres' } )
150
+ screen.queryByRole( 'group', { name: 'Categories' } )
165
151
  ).not.toBeInTheDocument();
166
152
  expect(
167
- screen.queryByRole( 'button', { name: 'Add new genre' } )
153
+ screen.queryByRole( 'button', { name: 'Add new category' } )
168
154
  ).not.toBeInTheDocument();
169
155
  } );
170
156
  } );
@@ -24,18 +24,24 @@ const POPOVER_PROPS = {
24
24
  };
25
25
 
26
26
  export default function BlockThemeControl( { id } ) {
27
- const { isTemplateHidden, getPostLinkProps, getEditorSettings, hasGoBack } =
28
- useSelect( ( select ) => {
29
- const { getRenderingMode, getEditorSettings: _getEditorSettings } =
30
- unlock( select( editorStore ) );
31
- const editorSettings = _getEditorSettings();
32
- return {
33
- isTemplateHidden: getRenderingMode() === 'post-only',
34
- getPostLinkProps: editorSettings.getPostLinkProps,
35
- getEditorSettings: _getEditorSettings,
36
- hasGoBack: editorSettings.hasOwnProperty( 'goBack' ),
37
- };
38
- }, [] );
27
+ const {
28
+ isTemplateHidden,
29
+ onNavigateToEntityRecord,
30
+ getEditorSettings,
31
+ hasGoBack,
32
+ } = useSelect( ( select ) => {
33
+ const { getRenderingMode, getEditorSettings: _getEditorSettings } =
34
+ unlock( select( editorStore ) );
35
+ const editorSettings = _getEditorSettings();
36
+ return {
37
+ isTemplateHidden: getRenderingMode() === 'post-only',
38
+ onNavigateToEntityRecord: editorSettings.onNavigateToEntityRecord,
39
+ getEditorSettings: _getEditorSettings,
40
+ hasGoBack: editorSettings.hasOwnProperty(
41
+ 'onNavigateToPreviousEntityRecord'
42
+ ),
43
+ };
44
+ }, [] );
39
45
 
40
46
  const { editedRecord: template, hasResolved } = useEntityRecord(
41
47
  'postType',
@@ -44,23 +50,19 @@ export default function BlockThemeControl( { id } ) {
44
50
  );
45
51
  const { createSuccessNotice } = useDispatch( noticesStore );
46
52
  const { setRenderingMode } = useDispatch( editorStore );
47
- const editTemplate = getPostLinkProps
48
- ? getPostLinkProps( {
49
- postId: template.id,
50
- postType: 'wp_template',
51
- } )
52
- : {};
53
53
 
54
54
  if ( ! hasResolved ) {
55
55
  return null;
56
56
  }
57
- // The site editor does not have a `goBack` setting as it uses its own routing
57
+
58
+ // The site editor does not have a `onNavigateToPreviousEntityRecord` setting as it uses its own routing
58
59
  // and assigns its own backlink to focusMode pages.
59
60
  const notificationAction = hasGoBack
60
61
  ? [
61
62
  {
62
63
  label: __( 'Go back' ),
63
- onClick: () => getEditorSettings().goBack(),
64
+ onClick: () =>
65
+ getEditorSettings().onNavigateToPreviousEntityRecord(),
64
66
  },
65
67
  ]
66
68
  : undefined;
@@ -69,6 +71,7 @@ export default function BlockThemeControl( { id } ) {
69
71
  popoverProps={ POPOVER_PROPS }
70
72
  focusOnMount
71
73
  toggleProps={ {
74
+ __next40pxDefaultSize: true,
72
75
  variant: 'tertiary',
73
76
  } }
74
77
  label={ __( 'Template options' ) }
@@ -79,8 +82,11 @@ export default function BlockThemeControl( { id } ) {
79
82
  <>
80
83
  <MenuGroup>
81
84
  <MenuItem
82
- onClick={ ( event ) => {
83
- editTemplate.onClick( event );
85
+ onClick={ () => {
86
+ onNavigateToEntityRecord( {
87
+ postId: template.id,
88
+ postType: 'wp_template',
89
+ } );
84
90
  onClose();
85
91
  createSuccessNotice(
86
92
  __(
@@ -95,6 +101,7 @@ export default function BlockThemeControl( { id } ) {
95
101
  >
96
102
  { __( 'Edit template' ) }
97
103
  </MenuItem>
104
+
98
105
  <SwapTemplateButton onClick={ onClose } />
99
106
  <ResetDefaultTemplate onClick={ onClose } />
100
107
  <CreateNewTemplate onClick={ onClose } />