@wordpress/edit-site 5.20.1 → 5.21.1-next.f8d8eceb.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 (260) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/actions/index.js +121 -0
  3. package/build/components/actions/index.js.map +1 -0
  4. package/build/components/add-new-template/add-custom-template-modal-content.js +17 -13
  5. package/build/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  6. package/build/components/block-editor/resize-handle.js +2 -1
  7. package/build/components/block-editor/resize-handle.js.map +1 -1
  8. package/build/components/block-editor/use-site-editor-settings.js +12 -4
  9. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  10. package/build/components/create-template-part-modal/index.js +10 -6
  11. package/build/components/create-template-part-modal/index.js.map +1 -1
  12. package/build/components/dataviews/context.js +15 -0
  13. package/build/components/dataviews/context.js.map +1 -0
  14. package/build/components/dataviews/dataviews.js +50 -33
  15. package/build/components/dataviews/dataviews.js.map +1 -1
  16. package/build/components/dataviews/filters.js +74 -0
  17. package/build/components/dataviews/filters.js.map +1 -0
  18. package/build/components/dataviews/in-filter.js +49 -0
  19. package/build/components/dataviews/in-filter.js.map +1 -0
  20. package/build/components/dataviews/index.js +0 -7
  21. package/build/components/dataviews/index.js.map +1 -1
  22. package/build/components/dataviews/item-actions.js +62 -0
  23. package/build/components/dataviews/item-actions.js.map +1 -0
  24. package/build/components/dataviews/pagination.js +74 -45
  25. package/build/components/dataviews/pagination.js.map +1 -1
  26. package/build/components/dataviews/{text-filter.js → search.js} +21 -15
  27. package/build/components/dataviews/search.js.map +1 -0
  28. package/build/components/dataviews/view-actions.js +94 -56
  29. package/build/components/dataviews/view-actions.js.map +1 -1
  30. package/build/components/dataviews/view-grid.js +59 -0
  31. package/build/components/dataviews/view-grid.js.map +1 -0
  32. package/build/components/dataviews/view-list.js +283 -0
  33. package/build/components/dataviews/view-list.js.map +1 -0
  34. package/build/components/editor/index.js +2 -1
  35. package/build/components/editor/index.js.map +1 -1
  36. package/build/components/global-styles/font-library-modal/context.js +16 -10
  37. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  38. package/build/components/global-styles/font-library-modal/font-collection.js +20 -6
  39. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  40. package/build/components/global-styles/screen-block.js +2 -10
  41. package/build/components/global-styles/screen-block.js.map +1 -1
  42. package/build/components/global-styles/screen-root.js +1 -2
  43. package/build/components/global-styles/screen-root.js.map +1 -1
  44. package/build/components/global-styles/ui.js +3 -4
  45. package/build/components/global-styles/ui.js.map +1 -1
  46. package/build/components/layout/index.js +10 -2
  47. package/build/components/layout/index.js.map +1 -1
  48. package/build/components/media/index.js +34 -0
  49. package/build/components/media/index.js.map +1 -0
  50. package/build/components/page-actions/index.js +0 -2
  51. package/build/components/page-actions/index.js.map +1 -1
  52. package/build/components/page-pages/default-views.js +60 -0
  53. package/build/components/page-pages/default-views.js.map +1 -0
  54. package/build/components/page-pages/index.js +174 -107
  55. package/build/components/page-pages/index.js.map +1 -1
  56. package/build/components/page-patterns/delete-category-menu-item.js +89 -0
  57. package/build/components/page-patterns/delete-category-menu-item.js.map +1 -0
  58. package/build/components/page-patterns/duplicate-menu-item.js +52 -131
  59. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
  60. package/build/components/page-patterns/grid-item.js +1 -0
  61. package/build/components/page-patterns/grid-item.js.map +1 -1
  62. package/build/components/page-patterns/header.js +25 -3
  63. package/build/components/page-patterns/header.js.map +1 -1
  64. package/build/components/page-patterns/rename-category-menu-item.js +49 -0
  65. package/build/components/page-patterns/rename-category-menu-item.js.map +1 -0
  66. package/build/components/page-patterns/rename-menu-item.js +1 -1
  67. package/build/components/page-patterns/rename-menu-item.js.map +1 -1
  68. package/build/components/page-patterns/use-patterns.js +1 -0
  69. package/build/components/page-patterns/use-patterns.js.map +1 -1
  70. package/build/components/pattern-modal/duplicate.js +65 -0
  71. package/build/components/pattern-modal/duplicate.js.map +1 -0
  72. package/build/components/pattern-modal/index.js +24 -0
  73. package/build/components/pattern-modal/index.js.map +1 -0
  74. package/build/components/pattern-modal/rename.js +42 -0
  75. package/build/components/pattern-modal/rename.js.map +1 -0
  76. package/build/components/sidebar/index.js +3 -1
  77. package/build/components/sidebar/index.js.map +1 -1
  78. package/build/components/sidebar-dataviews/index.js +72 -0
  79. package/build/components/sidebar-dataviews/index.js.map +1 -0
  80. package/build/components/sidebar-edit-mode/template-panel/last-revision.js +3 -0
  81. package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  82. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -2
  83. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  84. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -3
  85. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  86. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +29 -0
  87. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
  88. package/build/components/sidebar-navigation-screen-template/home-template-details.js +12 -1
  89. package/build/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
  90. package/build/hooks/commands/use-common-commands.js +1 -2
  91. package/build/hooks/commands/use-common-commands.js.map +1 -1
  92. package/build/hooks/commands/use-edit-mode-commands.js +50 -0
  93. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  94. package/build/lock-unlock.js +1 -1
  95. package/build/lock-unlock.js.map +1 -1
  96. package/build/store/selectors.js +4 -5
  97. package/build/store/selectors.js.map +1 -1
  98. package/build-module/components/actions/index.js +108 -0
  99. package/build-module/components/actions/index.js.map +1 -0
  100. package/build-module/components/add-new-template/add-custom-template-modal-content.js +16 -12
  101. package/build-module/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  102. package/build-module/components/block-editor/resize-handle.js +2 -1
  103. package/build-module/components/block-editor/resize-handle.js.map +1 -1
  104. package/build-module/components/block-editor/use-site-editor-settings.js +12 -4
  105. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  106. package/build-module/components/create-template-part-modal/index.js +10 -6
  107. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  108. package/build-module/components/dataviews/context.js +7 -0
  109. package/build-module/components/dataviews/context.js.map +1 -0
  110. package/build-module/components/dataviews/dataviews.js +49 -32
  111. package/build-module/components/dataviews/dataviews.js.map +1 -1
  112. package/build-module/components/dataviews/filters.js +66 -0
  113. package/build-module/components/dataviews/filters.js.map +1 -0
  114. package/build-module/components/dataviews/in-filter.js +41 -0
  115. package/build-module/components/dataviews/in-filter.js.map +1 -0
  116. package/build-module/components/dataviews/index.js +0 -1
  117. package/build-module/components/dataviews/index.js.map +1 -1
  118. package/build-module/components/dataviews/item-actions.js +55 -0
  119. package/build-module/components/dataviews/item-actions.js.map +1 -0
  120. package/build-module/components/dataviews/pagination.js +73 -46
  121. package/build-module/components/dataviews/pagination.js.map +1 -1
  122. package/build-module/components/dataviews/search.js +42 -0
  123. package/build-module/components/dataviews/search.js.map +1 -0
  124. package/build-module/components/dataviews/view-actions.js +95 -54
  125. package/build-module/components/dataviews/view-actions.js.map +1 -1
  126. package/build-module/components/dataviews/view-grid.js +51 -0
  127. package/build-module/components/dataviews/view-grid.js.map +1 -0
  128. package/build-module/components/dataviews/view-list.js +274 -0
  129. package/build-module/components/dataviews/view-list.js.map +1 -0
  130. package/build-module/components/editor/index.js +2 -1
  131. package/build-module/components/editor/index.js.map +1 -1
  132. package/build-module/components/global-styles/font-library-modal/context.js +16 -10
  133. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  134. package/build-module/components/global-styles/font-library-modal/font-collection.js +20 -6
  135. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  136. package/build-module/components/global-styles/screen-block.js +2 -10
  137. package/build-module/components/global-styles/screen-block.js.map +1 -1
  138. package/build-module/components/global-styles/screen-root.js +1 -2
  139. package/build-module/components/global-styles/screen-root.js.map +1 -1
  140. package/build-module/components/global-styles/ui.js +3 -4
  141. package/build-module/components/global-styles/ui.js.map +1 -1
  142. package/build-module/components/layout/index.js +11 -3
  143. package/build-module/components/layout/index.js.map +1 -1
  144. package/build-module/components/media/index.js +26 -0
  145. package/build-module/components/media/index.js.map +1 -0
  146. package/build-module/components/page-actions/index.js +0 -2
  147. package/build-module/components/page-actions/index.js.map +1 -1
  148. package/build-module/components/page-pages/default-views.js +53 -0
  149. package/build-module/components/page-pages/default-views.js.map +1 -0
  150. package/build-module/components/page-pages/index.js +175 -110
  151. package/build-module/components/page-pages/index.js.map +1 -1
  152. package/build-module/components/page-patterns/delete-category-menu-item.js +82 -0
  153. package/build-module/components/page-patterns/delete-category-menu-item.js.map +1 -0
  154. package/build-module/components/page-patterns/duplicate-menu-item.js +54 -133
  155. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
  156. package/build-module/components/page-patterns/grid-item.js +1 -0
  157. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  158. package/build-module/components/page-patterns/header.js +26 -4
  159. package/build-module/components/page-patterns/header.js.map +1 -1
  160. package/build-module/components/page-patterns/rename-category-menu-item.js +42 -0
  161. package/build-module/components/page-patterns/rename-category-menu-item.js.map +1 -0
  162. package/build-module/components/page-patterns/rename-menu-item.js +1 -1
  163. package/build-module/components/page-patterns/rename-menu-item.js.map +1 -1
  164. package/build-module/components/page-patterns/use-patterns.js +1 -0
  165. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  166. package/build-module/components/pattern-modal/duplicate.js +57 -0
  167. package/build-module/components/pattern-modal/duplicate.js.map +1 -0
  168. package/build-module/components/pattern-modal/index.js +14 -0
  169. package/build-module/components/pattern-modal/index.js.map +1 -0
  170. package/build-module/components/pattern-modal/rename.js +34 -0
  171. package/build-module/components/pattern-modal/rename.js.map +1 -0
  172. package/build-module/components/sidebar/index.js +3 -1
  173. package/build-module/components/sidebar/index.js.map +1 -1
  174. package/build-module/components/sidebar-dataviews/index.js +64 -0
  175. package/build-module/components/sidebar-dataviews/index.js.map +1 -0
  176. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js +3 -0
  177. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  178. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -2
  179. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  180. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -3
  181. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  182. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +22 -0
  183. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
  184. package/build-module/components/sidebar-navigation-screen-template/home-template-details.js +12 -1
  185. package/build-module/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
  186. package/build-module/hooks/commands/use-common-commands.js +1 -2
  187. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  188. package/build-module/hooks/commands/use-edit-mode-commands.js +51 -1
  189. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  190. package/build-module/lock-unlock.js +1 -1
  191. package/build-module/lock-unlock.js.map +1 -1
  192. package/build-module/store/selectors.js +4 -5
  193. package/build-module/store/selectors.js.map +1 -1
  194. package/build-style/style-rtl.css +48 -11
  195. package/build-style/style.css +48 -11
  196. package/package.json +40 -40
  197. package/src/components/actions/index.js +123 -0
  198. package/src/components/add-new-template/add-custom-template-modal-content.js +22 -17
  199. package/src/components/block-editor/resize-handle.js +1 -0
  200. package/src/components/block-editor/use-site-editor-settings.js +21 -13
  201. package/src/components/create-template-part-modal/index.js +9 -5
  202. package/src/components/dataviews/README.md +194 -0
  203. package/src/components/dataviews/context.js +7 -0
  204. package/src/components/dataviews/dataviews.js +55 -34
  205. package/src/components/dataviews/filters.js +75 -0
  206. package/src/components/dataviews/in-filter.js +45 -0
  207. package/src/components/dataviews/index.js +0 -1
  208. package/src/components/dataviews/item-actions.js +69 -0
  209. package/src/components/dataviews/pagination.js +80 -59
  210. package/src/components/dataviews/search.js +41 -0
  211. package/src/components/dataviews/style.scss +18 -3
  212. package/src/components/dataviews/view-actions.js +108 -63
  213. package/src/components/dataviews/view-grid.js +65 -0
  214. package/src/components/dataviews/view-list.js +348 -0
  215. package/src/components/editor/index.js +2 -0
  216. package/src/components/global-styles/font-library-modal/context.js +17 -11
  217. package/src/components/global-styles/font-library-modal/font-collection.js +19 -11
  218. package/src/components/global-styles/screen-block.js +2 -9
  219. package/src/components/global-styles/screen-root.js +1 -2
  220. package/src/components/global-styles/style.scss +16 -4
  221. package/src/components/global-styles/ui.js +1 -2
  222. package/src/components/layout/index.js +12 -4
  223. package/src/components/media/index.js +25 -0
  224. package/src/components/page-actions/index.js +1 -7
  225. package/src/components/page-pages/default-views.js +58 -0
  226. package/src/components/page-pages/index.js +181 -108
  227. package/src/components/page-pages/style.scss +3 -0
  228. package/src/components/page-patterns/delete-category-menu-item.js +104 -0
  229. package/src/components/page-patterns/duplicate-menu-item.js +68 -181
  230. package/src/components/page-patterns/grid-item.js +1 -0
  231. package/src/components/page-patterns/header.js +42 -6
  232. package/src/components/page-patterns/rename-category-menu-item.js +45 -0
  233. package/src/components/page-patterns/rename-menu-item.js +2 -2
  234. package/src/components/page-patterns/style.scss +8 -0
  235. package/src/components/page-patterns/use-patterns.js +5 -0
  236. package/src/components/pattern-modal/duplicate.js +53 -0
  237. package/src/components/pattern-modal/index.js +19 -0
  238. package/src/components/pattern-modal/rename.js +29 -0
  239. package/src/components/sidebar/index.js +2 -0
  240. package/src/components/sidebar-dataviews/index.js +65 -0
  241. package/src/components/sidebar-edit-mode/template-panel/last-revision.js +4 -0
  242. package/src/components/sidebar-navigation-screen/style.scss +17 -5
  243. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -7
  244. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -8
  245. package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +32 -0
  246. package/src/components/sidebar-navigation-screen-template/home-template-details.js +21 -7
  247. package/src/hooks/commands/use-common-commands.js +1 -2
  248. package/src/hooks/commands/use-edit-mode-commands.js +43 -0
  249. package/src/lock-unlock.js +1 -1
  250. package/src/store/selectors.js +9 -10
  251. package/src/style.scss +1 -0
  252. package/build/components/dataviews/list-view.js +0 -89
  253. package/build/components/dataviews/list-view.js.map +0 -1
  254. package/build/components/dataviews/text-filter.js.map +0 -1
  255. package/build-module/components/dataviews/list-view.js +0 -80
  256. package/build-module/components/dataviews/list-view.js.map +0 -1
  257. package/build-module/components/dataviews/text-filter.js +0 -36
  258. package/build-module/components/dataviews/text-filter.js.map +0 -1
  259. package/src/components/dataviews/list-view.js +0 -106
  260. package/src/components/dataviews/text-filter.js +0 -37
@@ -1 +1 @@
1
- {"version":3,"names":["_apiFetch","_interopRequireDefault","require","_url","_components","_i18n","_coreData","_htmlEntities","_element","_page","_link","_pageActions","_dataviews","EMPTY_ARRAY","PagePages","reset","setResetQuery","useState","v","globalFilter","setGlobalFilter","paginationInfo","setPaginationInfo","pageIndex","pageSize","setPagination","PAGE_SIZE_VALUES","postStatuses","setPostStatuses","useEffect","apiFetch","path","then","pagination","useMemo","sorting","setSorting","order","orderby","queryArgs","per_page","page","_embed","desc","id","search","status","records","isResolving","isLoading","useEntityRecords","addQueryArgs","_fields","method","parse","res","totalPages","parseInt","headers","get","totalItems","fields","header","__","accessorFn","title","rendered","slug","cell","props","row","original","_react","createElement","__experimentalVStack","spacing","__experimentalHeading","as","level","default","params","postId","postType","type","canvas","decodeEntities","getValue","maxWidth","sortingFn","enableHiding","_embedded","author","name","href","VisuallyHidden","onRemove","DataViews","data","options","manualSorting","manualFiltering","manualPagination","enableRowSelection","state","pageCount","onSortingChange","onGlobalFilterChange","value","onPaginationChange","meta","resetQuery"],"sources":["@wordpress/edit-site/src/components/page-pages/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\nimport {\n\tVisuallyHidden,\n\t__experimentalHeading as Heading,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, useEffect, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport Link from '../routes/link';\nimport PageActions from '../page-actions';\nimport { DataViews, PAGE_SIZE_VALUES } from '../dataviews';\n\nconst EMPTY_ARRAY = [];\n\nexport default function PagePages() {\n\tconst [ reset, setResetQuery ] = useState( ( v ) => ! v );\n\tconst [ globalFilter, setGlobalFilter ] = useState( '' );\n\tconst [ paginationInfo, setPaginationInfo ] = useState();\n\tconst [ { pageIndex, pageSize }, setPagination ] = useState( {\n\t\tpageIndex: 0,\n\t\tpageSize: PAGE_SIZE_VALUES[ 0 ],\n\t} );\n\t// Request post statuses to get the proper labels.\n\tconst [ postStatuses, setPostStatuses ] = useState( EMPTY_ARRAY );\n\tuseEffect( () => {\n\t\tapiFetch( {\n\t\t\tpath: '/wp/v2/statuses',\n\t\t} ).then( setPostStatuses );\n\t}, [] );\n\n\t// TODO: probably memo other objects passed as state(ex:https://tanstack.com/table/v8/docs/examples/react/pagination-controlled).\n\tconst pagination = useMemo(\n\t\t() => ( { pageIndex, pageSize } ),\n\t\t[ pageIndex, pageSize ]\n\t);\n\tconst [ sorting, setSorting ] = useState( [\n\t\t{ order: 'desc', orderby: 'date' },\n\t] );\n\tconst queryArgs = useMemo(\n\t\t() => ( {\n\t\t\tper_page: pageSize,\n\t\t\tpage: pageIndex + 1, // tanstack starts from zero.\n\t\t\t_embed: 'author',\n\t\t\torder: sorting[ 0 ]?.desc ? 'desc' : 'asc',\n\t\t\torderby: sorting[ 0 ]?.id,\n\t\t\tsearch: globalFilter,\n\t\t\tstatus: [ 'publish', 'draft' ],\n\t\t} ),\n\t\t[\n\t\t\tglobalFilter,\n\t\t\tsorting[ 0 ]?.id,\n\t\t\tsorting[ 0 ]?.desc,\n\t\t\tpageSize,\n\t\t\tpageIndex,\n\t\t\treset,\n\t\t]\n\t);\n\tconst { records, isResolving: isLoading } = useEntityRecords(\n\t\t'postType',\n\t\t'page',\n\t\tqueryArgs\n\t);\n\tuseEffect( () => {\n\t\t// Make extra request to handle controlled pagination.\n\t\tapiFetch( {\n\t\t\tpath: addQueryArgs( '/wp/v2/pages', {\n\t\t\t\t...queryArgs,\n\t\t\t\t_fields: 'id',\n\t\t\t} ),\n\t\t\tmethod: 'HEAD',\n\t\t\tparse: false,\n\t\t} ).then( ( res ) => {\n\t\t\tconst totalPages = parseInt( res.headers.get( 'X-WP-TotalPages' ) );\n\t\t\tconst totalItems = parseInt( res.headers.get( 'X-WP-Total' ) );\n\t\t\tsetPaginationInfo( {\n\t\t\t\ttotalPages,\n\t\t\t\ttotalItems,\n\t\t\t} );\n\t\t} );\n\t\t// Status should not make extra request if already did..\n\t}, [ globalFilter, pageSize, reset ] );\n\n\tconst fields = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\theader: __( 'Title' ),\n\t\t\t\tid: 'title',\n\t\t\t\taccessorFn: ( page ) => page.title?.rendered || page.slug,\n\t\t\t\tcell: ( props ) => {\n\t\t\t\t\tconst page = props.row.original;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t\t\t<Heading as=\"h3\" level={ 5 }>\n\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\tparams={ {\n\t\t\t\t\t\t\t\t\t\tpostId: page.id,\n\t\t\t\t\t\t\t\t\t\tpostType: page.type,\n\t\t\t\t\t\t\t\t\t\tcanvas: 'edit',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ decodeEntities( props.getValue() ) }\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tsortingFn: 'alphanumeric',\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Author' ),\n\t\t\t\tid: 'author',\n\t\t\t\taccessorFn: ( page ) => page._embedded?.author[ 0 ]?.name,\n\t\t\t\tcell: ( props ) => {\n\t\t\t\t\tconst author = props.row.original._embedded?.author[ 0 ];\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<a href={ `user-edit.php?user_id=${ author.id }` }>\n\t\t\t\t\t\t\t{ author.name }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: 'Status',\n\t\t\t\tid: 'status',\n\t\t\t\tcell: ( props ) =>\n\t\t\t\t\tpostStatuses[ props.row.original.status ]?.name,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: <VisuallyHidden>{ __( 'Actions' ) }</VisuallyHidden>,\n\t\t\t\tid: 'actions',\n\t\t\t\tcell: ( props ) => {\n\t\t\t\t\tconst page = props.row.original;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<PageActions\n\t\t\t\t\t\t\tpostId={ page.id }\n\t\t\t\t\t\t\tonRemove={ () => setResetQuery() }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t],\n\t\t[ postStatuses ]\n\t);\n\n\t// TODO: we need to handle properly `data={ data || EMPTY_ARRAY }` for when `isLoading`.\n\treturn (\n\t\t<Page title={ __( 'Pages' ) }>\n\t\t\t<DataViews\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tdata={ records || EMPTY_ARRAY }\n\t\t\t\tisLoading={ isLoading }\n\t\t\t\tfields={ fields }\n\t\t\t\toptions={ {\n\t\t\t\t\tmanualSorting: true,\n\t\t\t\t\tmanualFiltering: true,\n\t\t\t\t\tmanualPagination: true,\n\t\t\t\t\tenableRowSelection: true,\n\t\t\t\t\tstate: {\n\t\t\t\t\t\tsorting,\n\t\t\t\t\t\tglobalFilter,\n\t\t\t\t\t\tpagination,\n\t\t\t\t\t},\n\t\t\t\t\tpageCount: paginationInfo?.totalPages,\n\t\t\t\t\tonSortingChange: setSorting,\n\t\t\t\t\tonGlobalFilterChange: ( value ) => {\n\t\t\t\t\t\tsetGlobalFilter( value );\n\t\t\t\t\t\tsetPagination( { pageIndex: 0, pageSize } );\n\t\t\t\t\t},\n\t\t\t\t\t// TODO: check these callbacks and maybe reset the query when needed...\n\t\t\t\t\tonPaginationChange: setPagination,\n\t\t\t\t\tmeta: { resetQuery: setResetQuery },\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_components","require","_i18n","_coreData","_htmlEntities","_element","_date","_router","_page","_interopRequireDefault","_link","_dataviews","_defaultViews","_interopRequireWildcard","_actions","_media","_lockUnlock","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","useLocation","unlock","routerPrivateApis","EMPTY_ARRAY","defaultConfigPerViewType","list","grid","mediaField","PagePages","params","path","activeView","initialView","DEFAULT_VIEWS","find","slug","view","setView","useState","useEffect","records","statuses","useEntityRecords","defaultStatuses","useMemo","DEFAULT_STATUSES","filter","map","sort","join","filters","status","queryArgs","per_page","perPage","page","_embed","order","direction","orderby","field","search","pages","isResolving","isLoadingPages","totalItems","totalPages","authors","paginationInfo","fields","id","header","__","getValue","item","featured_media","render","currentView","_react","createElement","className","size","type","enableSorting","title","rendered","__experimentalVStack","spacing","__experimentalHeading","as","level","postId","postType","canvas","decodeEntities","maxWidth","sortingFn","enableHiding","_embedded","author","name","href","elements","value","label","_statuses$find$name","resetValue","date","formattedDate","dateI18n","getSettings","formats","datetimeAbbreviated","getDate","trashPostAction","useTrashPostAction","editPostAction","useEditPostAction","actions","viewPostAction","postRevisionsAction","onChangeView","useCallback","viewUpdater","updatedView","layout","DataViews","data","isLoading"],"sources":["@wordpress/edit-site/src/components/page-pages/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHeading as Heading,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, useMemo, useCallback, useEffect } from '@wordpress/element';\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport Link from '../routes/link';\nimport { DataViews } from '../dataviews';\nimport { DEFAULT_STATUSES, default as DEFAULT_VIEWS } from './default-views';\nimport {\n\tuseTrashPostAction,\n\tpostRevisionsAction,\n\tviewPostAction,\n\tuseEditPostAction,\n} from '../actions';\nimport Media from '../media';\nimport { unlock } from '../../lock-unlock';\nconst { useLocation } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\nconst defaultConfigPerViewType = {\n\tlist: {},\n\tgrid: {\n\t\tmediaField: 'featured-image',\n\t},\n};\n\nexport default function PagePages() {\n\tconst {\n\t\tparams: { path, activeView = 'all' },\n\t} = useLocation();\n\tconst initialView = DEFAULT_VIEWS.find(\n\t\t( { slug } ) => slug === activeView\n\t).view;\n\tconst [ view, setView ] = useState( initialView );\n\tuseEffect( () => {\n\t\tsetView(\n\t\t\tDEFAULT_VIEWS.find( ( { slug } ) => slug === activeView ).view\n\t\t);\n\t}, [ path, activeView ] );\n\t// Request post statuses to get the proper labels.\n\tconst { records: statuses } = useEntityRecords( 'root', 'status' );\n\tconst defaultStatuses = useMemo( () => {\n\t\treturn statuses === null\n\t\t\t? DEFAULT_STATUSES\n\t\t\t: statuses\n\t\t\t\t\t.filter( ( { slug } ) => slug !== 'trash' )\n\t\t\t\t\t.map( ( { slug } ) => slug )\n\t\t\t\t\t.sort()\n\t\t\t\t\t.join();\n\t}, [ statuses ] );\n\n\tuseEffect( () => {\n\t\t// Only update the view if the statuses received from the endpoint\n\t\t// are different from the DEFAULT_STATUSES provided initially.\n\t\t//\n\t\t// The pages endpoint depends on the status endpoint via the status filter.\n\t\t// Initially, this code filters the pages request by DEFAULT_STATUTES,\n\t\t// instead of using the default (publish).\n\t\t// https://developer.wordpress.org/rest-api/reference/pages/#list-pages\n\t\t//\n\t\t// By doing so, it avoids a second request to the pages endpoint\n\t\t// upon receiving the statuses when they are the same (most common scenario).\n\t\tif ( DEFAULT_STATUSES !== defaultStatuses ) {\n\t\t\tsetView( {\n\t\t\t\t...view,\n\t\t\t\tfilters: {\n\t\t\t\t\t...view.filters,\n\t\t\t\t\tstatus: defaultStatuses,\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [ defaultStatuses ] );\n\n\tconst queryArgs = useMemo(\n\t\t() => ( {\n\t\t\tper_page: view.perPage,\n\t\t\tpage: view.page,\n\t\t\t_embed: 'author',\n\t\t\torder: view.sort?.direction,\n\t\t\torderby: view.sort?.field,\n\t\t\tsearch: view.search,\n\t\t\t...view.filters,\n\t\t} ),\n\t\t[ view ]\n\t);\n\tconst {\n\t\trecords: pages,\n\t\tisResolving: isLoadingPages,\n\t\ttotalItems,\n\t\ttotalPages,\n\t} = useEntityRecords( 'postType', 'page', queryArgs );\n\n\tconst { records: authors } = useEntityRecords( 'root', 'user' );\n\n\tconst paginationInfo = useMemo(\n\t\t() => ( {\n\t\t\ttotalItems,\n\t\t\ttotalPages,\n\t\t} ),\n\t\t[ totalItems, totalPages ]\n\t);\n\n\tconst fields = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: 'featured-image',\n\t\t\t\theader: __( 'Featured Image' ),\n\t\t\t\tgetValue: ( { item } ) => item.featured_media,\n\t\t\t\trender: ( { item, view: currentView } ) =>\n\t\t\t\t\t!! item.featured_media ? (\n\t\t\t\t\t\t<Media\n\t\t\t\t\t\t\tclassName=\"edit-site-page-pages__featured-image\"\n\t\t\t\t\t\t\tid={ item.featured_media }\n\t\t\t\t\t\t\tsize={\n\t\t\t\t\t\t\t\tcurrentView.type === 'list'\n\t\t\t\t\t\t\t\t\t? [ 'thumbnail', 'medium', 'large', 'full' ]\n\t\t\t\t\t\t\t\t\t: [ 'large', 'full', 'medium', 'thumbnail' ]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : null,\n\t\t\t\tenableSorting: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Title' ),\n\t\t\t\tid: 'title',\n\t\t\t\tgetValue: ( { item } ) => item.title?.rendered || item.slug,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t\t\t<Heading as=\"h3\" level={ 5 }>\n\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\tparams={ {\n\t\t\t\t\t\t\t\t\t\tpostId: item.id,\n\t\t\t\t\t\t\t\t\t\tpostType: item.type,\n\t\t\t\t\t\t\t\t\t\tcanvas: 'edit',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ decodeEntities(\n\t\t\t\t\t\t\t\t\t\titem.title?.rendered || item.slug\n\t\t\t\t\t\t\t\t\t) || __( '(no title)' ) }\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tsortingFn: 'alphanumeric',\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Author' ),\n\t\t\t\tid: 'author',\n\t\t\t\tgetValue: ( { item } ) => item._embedded?.author[ 0 ]?.name,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\tconst author = item._embedded?.author[ 0 ];\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<a href={ `user-edit.php?user_id=${ author.id }` }>\n\t\t\t\t\t\t\t{ author.name }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tfilters: [ 'enumeration' ],\n\t\t\t\telements:\n\t\t\t\t\tauthors?.map( ( { id, name } ) => ( {\n\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t} ) ) || [],\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Status' ),\n\t\t\t\tid: 'status',\n\t\t\t\tgetValue: ( { item } ) =>\n\t\t\t\t\tstatuses?.find( ( { slug } ) => slug === item.status )\n\t\t\t\t\t\t?.name ?? item.status,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'enumeration',\n\t\t\t\t\t\tid: 'status',\n\t\t\t\t\t\tresetValue: defaultStatuses,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\telements:\n\t\t\t\t\tstatuses?.map( ( { slug, name } ) => ( {\n\t\t\t\t\t\tvalue: slug,\n\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t} ) ) || [],\n\t\t\t\tenableSorting: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Date' ),\n\t\t\t\tid: 'date',\n\t\t\t\tgetValue: ( { item } ) => item.date,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\tconst formattedDate = dateI18n(\n\t\t\t\t\t\tgetSettings().formats.datetimeAbbreviated,\n\t\t\t\t\t\tgetDate( item.date )\n\t\t\t\t\t);\n\t\t\t\t\treturn <time>{ formattedDate }</time>;\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\t[ defaultStatuses, statuses, authors ]\n\t);\n\n\tconst trashPostAction = useTrashPostAction();\n\tconst editPostAction = useEditPostAction();\n\tconst actions = useMemo(\n\t\t() => [\n\t\t\tviewPostAction,\n\t\t\ttrashPostAction,\n\t\t\teditPostAction,\n\t\t\tpostRevisionsAction,\n\t\t],\n\t\t[ trashPostAction, editPostAction ]\n\t);\n\tconst onChangeView = useCallback(\n\t\t( viewUpdater ) => {\n\t\t\tlet updatedView =\n\t\t\t\ttypeof viewUpdater === 'function'\n\t\t\t\t\t? viewUpdater( view )\n\t\t\t\t\t: viewUpdater;\n\t\t\tif ( updatedView.type !== view.type ) {\n\t\t\t\tupdatedView = {\n\t\t\t\t\t...updatedView,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...defaultConfigPerViewType[ updatedView.type ],\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tsetView( updatedView );\n\t\t},\n\t\t[ view, setView ]\n\t);\n\n\t// TODO: we need to handle properly `data={ data || EMPTY_ARRAY }` for when `isLoading`.\n\treturn (\n\t\t<Page title={ __( 'Pages' ) }>\n\t\t\t<DataViews\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tfields={ fields }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ pages || EMPTY_ARRAY }\n\t\t\t\tisLoading={ isLoadingPages }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = DeleteCategoryMenuItem;
7
+ var _react = require("react");
8
+ var _components = require("@wordpress/components");
9
+ var _coreData = require("@wordpress/core-data");
10
+ var _data = require("@wordpress/data");
11
+ var _element = require("@wordpress/element");
12
+ var _htmlEntities = require("@wordpress/html-entities");
13
+ var _i18n = require("@wordpress/i18n");
14
+ var _notices = require("@wordpress/notices");
15
+ var _router = require("@wordpress/router");
16
+ var _lockUnlock = require("../../lock-unlock");
17
+ var _constants = require("../../utils/constants");
18
+ /**
19
+ * WordPress dependencies
20
+ */
21
+
22
+ /**
23
+ * Internal dependencies
24
+ */
25
+
26
+ const {
27
+ useHistory
28
+ } = (0, _lockUnlock.unlock)(_router.privateApis);
29
+ function DeleteCategoryMenuItem({
30
+ category,
31
+ onClose
32
+ }) {
33
+ const [isModalOpen, setIsModalOpen] = (0, _element.useState)(false);
34
+ const history = useHistory();
35
+ const {
36
+ createSuccessNotice,
37
+ createErrorNotice
38
+ } = (0, _data.useDispatch)(_notices.store);
39
+ const {
40
+ deleteEntityRecord,
41
+ invalidateResolution
42
+ } = (0, _data.useDispatch)(_coreData.store);
43
+ const onDelete = async () => {
44
+ try {
45
+ await deleteEntityRecord('taxonomy', 'wp_pattern_category', category.id, {
46
+ force: true
47
+ }, {
48
+ throwOnError: true
49
+ });
50
+
51
+ // Prevent the need to refresh the page to get up-to-date categories
52
+ // and pattern categorization.
53
+ invalidateResolution('getUserPatternCategories');
54
+ invalidateResolution('getEntityRecords', ['postType', _constants.PATTERN_TYPES.user, {
55
+ per_page: -1
56
+ }]);
57
+ createSuccessNotice((0, _i18n.sprintf)( /* translators: The pattern category's name */
58
+ (0, _i18n.__)('"%s" deleted.'), category.label), {
59
+ type: 'snackbar',
60
+ id: 'pattern-category-delete'
61
+ });
62
+ onClose?.();
63
+ history.push({
64
+ path: `/patterns`,
65
+ categoryType: _constants.PATTERN_TYPES.theme,
66
+ categoryId: _constants.PATTERN_DEFAULT_CATEGORY
67
+ });
68
+ } catch (error) {
69
+ const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0, _i18n.__)('An error occurred while deleting the pattern category.');
70
+ createErrorNotice(errorMessage, {
71
+ type: 'snackbar',
72
+ id: 'pattern-category-delete'
73
+ });
74
+ }
75
+ };
76
+ return (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.MenuItem, {
77
+ isDestructive: true,
78
+ onClick: () => setIsModalOpen(true)
79
+ }, (0, _i18n.__)('Delete')), (0, _react.createElement)(_components.__experimentalConfirmDialog, {
80
+ isOpen: isModalOpen,
81
+ onConfirm: onDelete,
82
+ onCancel: () => setIsModalOpen(false),
83
+ confirmButtonText: (0, _i18n.__)('Delete'),
84
+ className: "edit-site-patterns__delete-modal"
85
+ }, (0, _i18n.sprintf)(
86
+ // translators: %s: The pattern category's name.
87
+ (0, _i18n.__)('Are you sure you want to delete the category "%s"? The patterns will not be deleted.'), (0, _htmlEntities.decodeEntities)(category.label))));
88
+ }
89
+ //# sourceMappingURL=delete-category-menu-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_components","require","_coreData","_data","_element","_htmlEntities","_i18n","_notices","_router","_lockUnlock","_constants","useHistory","unlock","routerPrivateApis","DeleteCategoryMenuItem","category","onClose","isModalOpen","setIsModalOpen","useState","history","createSuccessNotice","createErrorNotice","useDispatch","noticesStore","deleteEntityRecord","invalidateResolution","coreStore","onDelete","id","force","throwOnError","PATTERN_TYPES","user","per_page","sprintf","__","label","type","push","path","categoryType","theme","categoryId","PATTERN_DEFAULT_CATEGORY","error","errorMessage","message","code","_react","createElement","Fragment","MenuItem","isDestructive","onClick","__experimentalConfirmDialog","isOpen","onConfirm","onCancel","confirmButtonText","className","decodeEntities"],"sources":["@wordpress/edit-site/src/components/page-patterns/delete-category-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tMenuItem,\n\t__experimentalConfirmDialog as ConfirmDialog,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { PATTERN_TYPES, PATTERN_DEFAULT_CATEGORY } from '../../utils/constants';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nexport default function DeleteCategoryMenuItem( { category, onClose } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst history = useHistory();\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { deleteEntityRecord, invalidateResolution } =\n\t\tuseDispatch( coreStore );\n\n\tconst onDelete = async () => {\n\t\ttry {\n\t\t\tawait deleteEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\t'wp_pattern_category',\n\t\t\t\tcategory.id,\n\t\t\t\t{ force: true },\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Prevent the need to refresh the page to get up-to-date categories\n\t\t\t// and pattern categorization.\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\tinvalidateResolution( 'getEntityRecords', [\n\t\t\t\t'postType',\n\t\t\t\tPATTERN_TYPES.user,\n\t\t\t\t{ per_page: -1 },\n\t\t\t] );\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: The pattern category's name */\n\t\t\t\t\t__( '\"%s\" deleted.' ),\n\t\t\t\t\tcategory.label\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'pattern-category-delete' }\n\t\t\t);\n\n\t\t\tonClose?.();\n\t\t\thistory.push( {\n\t\t\t\tpath: `/patterns`,\n\t\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while deleting the pattern category.'\n\t\t\t\t\t );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-category-delete',\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem isDestructive onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Delete' ) }\n\t\t\t</MenuItem>\n\t\t\t<ConfirmDialog\n\t\t\t\tisOpen={ isModalOpen }\n\t\t\t\tonConfirm={ onDelete }\n\t\t\t\tonCancel={ () => setIsModalOpen( false ) }\n\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\tclassName=\"edit-site-patterns__delete-modal\"\n\t\t\t>\n\t\t\t\t{ sprintf(\n\t\t\t\t\t// translators: %s: The pattern category's name.\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Are you sure you want to delete the category \"%s\"? The patterns will not be deleted.'\n\t\t\t\t\t),\n\t\t\t\t\tdecodeEntities( category.label )\n\t\t\t\t) }\n\t\t\t</ConfirmDialog>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -7,15 +7,15 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = DuplicateMenuItem;
8
8
  var _react = require("react");
9
9
  var _components = require("@wordpress/components");
10
- var _coreData = require("@wordpress/core-data");
11
10
  var _data = require("@wordpress/data");
11
+ var _element = require("@wordpress/element");
12
12
  var _i18n = require("@wordpress/i18n");
13
13
  var _notices = require("@wordpress/notices");
14
+ var _patterns = require("@wordpress/patterns");
14
15
  var _router = require("@wordpress/router");
15
16
  var _constants = require("../../utils/constants");
16
- var _templatePartCreate = require("../../utils/template-part-create");
17
17
  var _lockUnlock = require("../../lock-unlock");
18
- var _usePatternCategories = _interopRequireDefault(require("../sidebar-navigation-screen-patterns/use-pattern-categories"));
18
+ var _createTemplatePartModal = _interopRequireDefault(require("../create-template-part-modal"));
19
19
  /**
20
20
  * WordPress dependencies
21
21
  */
@@ -24,22 +24,12 @@ var _usePatternCategories = _interopRequireDefault(require("../sidebar-navigatio
24
24
  * Internal dependencies
25
25
  */
26
26
 
27
+ const {
28
+ DuplicatePatternModal
29
+ } = (0, _lockUnlock.unlock)(_patterns.privateApis);
27
30
  const {
28
31
  useHistory
29
32
  } = (0, _lockUnlock.unlock)(_router.privateApis);
30
- function getPatternMeta(item) {
31
- if (item.type === _constants.PATTERN_TYPES.theme) {
32
- return {
33
- wp_pattern_sync_status: _constants.PATTERN_SYNC_TYPES.unsynced
34
- };
35
- }
36
- const syncStatus = item.patternBlock.wp_pattern_sync_status;
37
- const isUnsynced = syncStatus === _constants.PATTERN_SYNC_TYPES.unsynced;
38
- return {
39
- ...item.patternBlock.meta,
40
- wp_pattern_sync_status: isUnsynced ? syncStatus : undefined
41
- };
42
- }
43
33
  function DuplicateMenuItem({
44
34
  categoryId,
45
35
  item,
@@ -47,126 +37,57 @@ function DuplicateMenuItem({
47
37
  onClose
48
38
  }) {
49
39
  const {
50
- saveEntityRecord,
51
- invalidateResolution
52
- } = (0, _data.useDispatch)(_coreData.store);
53
- const {
54
- createErrorNotice,
55
40
  createSuccessNotice
56
41
  } = (0, _data.useDispatch)(_notices.store);
42
+ const [isModalOpen, setIsModalOpen] = (0, _element.useState)(false);
57
43
  const history = useHistory();
58
- const existingTemplateParts = (0, _templatePartCreate.useExistingTemplateParts)();
59
- const {
60
- patternCategories
61
- } = (0, _usePatternCategories.default)();
62
- async function createTemplatePart() {
63
- try {
64
- const copiedTitle = (0, _i18n.sprintf)( /* translators: %s: Existing template part title */
65
- (0, _i18n.__)('%s (Copy)'), item.title);
66
- const title = (0, _templatePartCreate.getUniqueTemplatePartTitle)(copiedTitle, existingTemplateParts);
67
- const slug = (0, _templatePartCreate.getCleanTemplatePartSlug)(title);
68
- const {
69
- area,
70
- content
71
- } = item.templatePart;
72
- const result = await saveEntityRecord('postType', _constants.TEMPLATE_PART_POST_TYPE, {
73
- slug,
74
- title,
75
- content,
76
- area
77
- }, {
78
- throwOnError: true
79
- });
80
- createSuccessNotice((0, _i18n.sprintf)(
81
- // translators: %s: The new template part's title e.g. 'Call to action (copy)'.
82
- (0, _i18n.__)('"%s" duplicated.'), item.title), {
83
- type: 'snackbar',
84
- id: 'edit-site-patterns-success'
85
- });
86
- history.push({
87
- postType: _constants.TEMPLATE_PART_POST_TYPE,
88
- postId: result?.id,
89
- categoryType: _constants.TEMPLATE_PART_POST_TYPE,
90
- categoryId
91
- });
92
- onClose();
93
- } catch (error) {
94
- const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0, _i18n.__)('An error occurred while creating the template part.');
95
- createErrorNotice(errorMessage, {
96
- type: 'snackbar',
97
- id: 'edit-site-patterns-error'
98
- });
99
- onClose();
100
- }
101
- }
102
- async function findOrCreateTerm(term) {
103
- try {
104
- const newTerm = await saveEntityRecord('taxonomy', 'wp_pattern_category', {
105
- name: term.label,
106
- slug: term.name,
107
- description: term.description
108
- }, {
109
- throwOnError: true
110
- });
111
- invalidateResolution('getUserPatternCategories');
112
- return newTerm.id;
113
- } catch (error) {
114
- if (error.code !== 'term_exists') {
115
- throw error;
116
- }
117
- return error.data.term_id;
118
- }
119
- }
120
- async function getCategories(categories) {
121
- const terms = categories.map(category => {
122
- const fullCategory = patternCategories.find(cat => cat.name === category);
123
- if (fullCategory.id) {
124
- return fullCategory.id;
125
- }
126
- return findOrCreateTerm(fullCategory);
44
+ const closeModal = () => setIsModalOpen(false);
45
+ const isTemplatePart = item.type === _constants.TEMPLATE_PART_POST_TYPE;
46
+ const isThemePattern = item.type === _constants.PATTERN_TYPES.theme;
47
+ async function onTemplatePartSuccess(templatePart) {
48
+ createSuccessNotice((0, _i18n.sprintf)(
49
+ // translators: %s: The new template part's title e.g. 'Call to action (copy)'.
50
+ (0, _i18n.__)('"%s" duplicated.'), item.title), {
51
+ type: 'snackbar',
52
+ id: 'edit-site-patterns-success'
127
53
  });
128
- return Promise.all(terms);
54
+ history.push({
55
+ postType: _constants.TEMPLATE_PART_POST_TYPE,
56
+ postId: templatePart?.id,
57
+ categoryType: _constants.TEMPLATE_PART_POST_TYPE,
58
+ categoryId
59
+ });
60
+ onClose();
129
61
  }
130
- async function createPattern() {
131
- try {
132
- const isThemePattern = item.type === _constants.PATTERN_TYPES.theme;
133
- const title = (0, _i18n.sprintf)( /* translators: %s: Existing pattern title */
134
- (0, _i18n.__)('%s (Copy)'), item.title || item.name);
135
- const categories = await getCategories(item.categories || []);
136
- const result = await saveEntityRecord('postType', _constants.PATTERN_TYPES.user, {
137
- content: isThemePattern ? item.content : item.patternBlock.content,
138
- meta: getPatternMeta(item),
139
- status: 'publish',
140
- title,
141
- wp_pattern_category: categories
142
- }, {
143
- throwOnError: true
144
- });
145
- createSuccessNotice((0, _i18n.sprintf)(
146
- // translators: %s: The new pattern's title e.g. 'Call to action (copy)'.
147
- (0, _i18n.__)('"%s" duplicated.'), item.title || item.name), {
148
- type: 'snackbar',
149
- id: 'edit-site-patterns-success'
150
- });
151
- history.push({
152
- categoryType: _constants.PATTERN_TYPES.theme,
153
- categoryId,
154
- postType: _constants.PATTERN_TYPES.user,
155
- postId: result?.id
156
- });
157
- onClose();
158
- } catch (error) {
159
- const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0, _i18n.__)('An error occurred while creating the pattern.');
160
- createErrorNotice(errorMessage, {
161
- type: 'snackbar',
162
- id: 'edit-site-patterns-error'
163
- });
164
- onClose();
165
- }
62
+ function onPatternSuccess({
63
+ pattern
64
+ }) {
65
+ history.push({
66
+ categoryType: _constants.PATTERN_TYPES.theme,
67
+ categoryId,
68
+ postType: _constants.PATTERN_TYPES.user,
69
+ postId: pattern.id
70
+ });
71
+ onClose();
166
72
  }
167
- const createItem = item.type === _constants.TEMPLATE_PART_POST_TYPE ? createTemplatePart : createPattern;
168
- return (0, _react.createElement)(_components.MenuItem, {
169
- onClick: createItem
170
- }, label);
73
+ return (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.MenuItem, {
74
+ onClick: () => setIsModalOpen(true),
75
+ "aria-expanded": isModalOpen,
76
+ "aria-haspopup": "dialog"
77
+ }, label), isModalOpen && !isTemplatePart && (0, _react.createElement)(DuplicatePatternModal, {
78
+ onClose: closeModal,
79
+ onSuccess: onPatternSuccess,
80
+ pattern: isThemePattern ? item : item.patternBlock
81
+ }), isModalOpen && isTemplatePart && (0, _react.createElement)(_createTemplatePartModal.default, {
82
+ blocks: item.blocks,
83
+ closeModal: closeModal,
84
+ confirmLabel: (0, _i18n.__)('Duplicate'),
85
+ defaultArea: item.templatePart.area,
86
+ defaultTitle: (0, _i18n.sprintf)( /* translators: %s: Existing template part title */
87
+ (0, _i18n.__)('%s (Copy)'), item.title),
88
+ modalTitle: (0, _i18n.__)('Duplicate template part'),
89
+ onCreate: onTemplatePartSuccess,
90
+ onError: closeModal
91
+ }));
171
92
  }
172
93
  //# sourceMappingURL=duplicate-menu-item.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_coreData","_data","_i18n","_notices","_router","_constants","_templatePartCreate","_lockUnlock","_usePatternCategories","_interopRequireDefault","useHistory","unlock","routerPrivateApis","getPatternMeta","item","type","PATTERN_TYPES","theme","wp_pattern_sync_status","PATTERN_SYNC_TYPES","unsynced","syncStatus","patternBlock","isUnsynced","meta","undefined","DuplicateMenuItem","categoryId","label","__","onClose","saveEntityRecord","invalidateResolution","useDispatch","coreStore","createErrorNotice","createSuccessNotice","noticesStore","history","existingTemplateParts","useExistingTemplateParts","patternCategories","usePatternCategories","createTemplatePart","copiedTitle","sprintf","title","getUniqueTemplatePartTitle","slug","getCleanTemplatePartSlug","area","content","templatePart","result","TEMPLATE_PART_POST_TYPE","throwOnError","id","push","postType","postId","categoryType","error","errorMessage","message","code","findOrCreateTerm","term","newTerm","name","description","data","term_id","getCategories","categories","terms","map","category","fullCategory","find","cat","Promise","all","createPattern","isThemePattern","user","status","wp_pattern_category","createItem","_react","createElement","MenuItem","onClick"],"sources":["@wordpress/edit-site/src/components/page-patterns/duplicate-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport {\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_TYPES,\n\tPATTERN_SYNC_TYPES,\n} from '../../utils/constants';\nimport {\n\tuseExistingTemplateParts,\n\tgetUniqueTemplatePartTitle,\n\tgetCleanTemplatePartSlug,\n} from '../../utils/template-part-create';\nimport { unlock } from '../../lock-unlock';\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nfunction getPatternMeta( item ) {\n\tif ( item.type === PATTERN_TYPES.theme ) {\n\t\treturn { wp_pattern_sync_status: PATTERN_SYNC_TYPES.unsynced };\n\t}\n\n\tconst syncStatus = item.patternBlock.wp_pattern_sync_status;\n\tconst isUnsynced = syncStatus === PATTERN_SYNC_TYPES.unsynced;\n\n\treturn {\n\t\t...item.patternBlock.meta,\n\t\twp_pattern_sync_status: isUnsynced ? syncStatus : undefined,\n\t};\n}\n\nexport default function DuplicateMenuItem( {\n\tcategoryId,\n\titem,\n\tlabel = __( 'Duplicate' ),\n\tonClose,\n} ) {\n\tconst { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst history = useHistory();\n\tconst existingTemplateParts = useExistingTemplateParts();\n\tconst { patternCategories } = usePatternCategories();\n\n\tasync function createTemplatePart() {\n\t\ttry {\n\t\t\tconst copiedTitle = sprintf(\n\t\t\t\t/* translators: %s: Existing template part title */\n\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\titem.title\n\t\t\t);\n\t\t\tconst title = getUniqueTemplatePartTitle(\n\t\t\t\tcopiedTitle,\n\t\t\t\texistingTemplateParts\n\t\t\t);\n\t\t\tconst slug = getCleanTemplatePartSlug( title );\n\t\t\tconst { area, content } = item.templatePart;\n\n\t\t\tconst result = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t\t{ slug, title, content, area },\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new template part's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t__( '\"%s\" duplicated.' ),\n\t\t\t\t\titem.title\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'edit-site-patterns-success',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\thistory.push( {\n\t\t\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\t\t\tpostId: result?.id,\n\t\t\t\tcategoryType: TEMPLATE_PART_POST_TYPE,\n\t\t\t\tcategoryId,\n\t\t\t} );\n\n\t\t\tonClose();\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while creating the template part.'\n\t\t\t\t\t );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t} );\n\t\t\tonClose();\n\t\t}\n\t}\n\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst newTerm = await saveEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\t'wp_pattern_category',\n\t\t\t\t{\n\t\t\t\t\tname: term.label,\n\t\t\t\t\tslug: term.name,\n\t\t\t\t\tdescription: term.description,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t}\n\t\t\t);\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\treturn newTerm.id;\n\t\t} catch ( error ) {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn error.data.term_id;\n\t\t}\n\t}\n\n\tasync function getCategories( categories ) {\n\t\tconst terms = categories.map( ( category ) => {\n\t\t\tconst fullCategory = patternCategories.find(\n\t\t\t\t( cat ) => cat.name === category\n\t\t\t);\n\t\t\tif ( fullCategory.id ) {\n\t\t\t\treturn fullCategory.id;\n\t\t\t}\n\t\t\treturn findOrCreateTerm( fullCategory );\n\t\t} );\n\n\t\treturn Promise.all( terms );\n\t}\n\n\tasync function createPattern() {\n\t\ttry {\n\t\t\tconst isThemePattern = item.type === PATTERN_TYPES.theme;\n\t\t\tconst title = sprintf(\n\t\t\t\t/* translators: %s: Existing pattern title */\n\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\titem.title || item.name\n\t\t\t);\n\t\t\tconst categories = await getCategories( item.categories || [] );\n\n\t\t\tconst result = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tPATTERN_TYPES.user,\n\t\t\t\t{\n\t\t\t\t\tcontent: isThemePattern\n\t\t\t\t\t\t? item.content\n\t\t\t\t\t\t: item.patternBlock.content,\n\t\t\t\t\tmeta: getPatternMeta( item ),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t\twp_pattern_category: categories,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new pattern's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t__( '\"%s\" duplicated.' ),\n\t\t\t\t\titem.title || item.name\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'edit-site-patterns-success',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\thistory.push( {\n\t\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\t\tcategoryId,\n\t\t\t\tpostType: PATTERN_TYPES.user,\n\t\t\t\tpostId: result?.id,\n\t\t\t} );\n\n\t\t\tonClose();\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the pattern.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t} );\n\t\t\tonClose();\n\t\t}\n\t}\n\n\tconst createItem =\n\t\titem.type === TEMPLATE_PART_POST_TYPE\n\t\t\t? createTemplatePart\n\t\t\t: createPattern;\n\n\treturn <MenuItem onClick={ createItem }>{ label }</MenuItem>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_components","require","_data","_element","_i18n","_notices","_patterns","_router","_constants","_lockUnlock","_createTemplatePartModal","_interopRequireDefault","DuplicatePatternModal","unlock","patternsPrivateApis","useHistory","routerPrivateApis","DuplicateMenuItem","categoryId","item","label","__","onClose","createSuccessNotice","useDispatch","noticesStore","isModalOpen","setIsModalOpen","useState","history","closeModal","isTemplatePart","type","TEMPLATE_PART_POST_TYPE","isThemePattern","PATTERN_TYPES","theme","onTemplatePartSuccess","templatePart","sprintf","title","id","push","postType","postId","categoryType","onPatternSuccess","pattern","user","_react","createElement","Fragment","MenuItem","onClick","onSuccess","patternBlock","default","blocks","confirmLabel","defaultArea","area","defaultTitle","modalTitle","onCreate","onError"],"sources":["@wordpress/edit-site/src/components/page-patterns/duplicate-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_PART_POST_TYPE, PATTERN_TYPES } from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\nimport CreateTemplatePartModal from '../create-template-part-modal';\n\nconst { DuplicatePatternModal } = unlock( patternsPrivateApis );\nconst { useHistory } = unlock( routerPrivateApis );\n\nexport default function DuplicateMenuItem( {\n\tcategoryId,\n\titem,\n\tlabel = __( 'Duplicate' ),\n\tonClose,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst history = useHistory();\n\n\tconst closeModal = () => setIsModalOpen( false );\n\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tconst isThemePattern = item.type === PATTERN_TYPES.theme;\n\n\tasync function onTemplatePartSuccess( templatePart ) {\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t// translators: %s: The new template part's title e.g. 'Call to action (copy)'.\n\t\t\t\t__( '\"%s\" duplicated.' ),\n\t\t\t\titem.title\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-success',\n\t\t\t}\n\t\t);\n\n\t\thistory.push( {\n\t\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\t\tpostId: templatePart?.id,\n\t\t\tcategoryType: TEMPLATE_PART_POST_TYPE,\n\t\t\tcategoryId,\n\t\t} );\n\n\t\tonClose();\n\t}\n\n\tfunction onPatternSuccess( { pattern } ) {\n\t\thistory.push( {\n\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\tcategoryId,\n\t\t\tpostType: PATTERN_TYPES.user,\n\t\t\tpostId: pattern.id,\n\t\t} );\n\n\t\tonClose();\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\taria-expanded={ isModalOpen }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t>\n\t\t\t\t{ label }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && ! isTemplatePart && (\n\t\t\t\t<DuplicatePatternModal\n\t\t\t\t\tonClose={ closeModal }\n\t\t\t\t\tonSuccess={ onPatternSuccess }\n\t\t\t\t\tpattern={ isThemePattern ? item : item.patternBlock }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isModalOpen && isTemplatePart && (\n\t\t\t\t<CreateTemplatePartModal\n\t\t\t\t\tblocks={ item.blocks }\n\t\t\t\t\tcloseModal={ closeModal }\n\t\t\t\t\tconfirmLabel={ __( 'Duplicate' ) }\n\t\t\t\t\tdefaultArea={ item.templatePart.area }\n\t\t\t\t\tdefaultTitle={ sprintf(\n\t\t\t\t\t\t/* translators: %s: Existing template part title */\n\t\t\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\t\t\titem.title\n\t\t\t\t\t) }\n\t\t\t\t\tmodalTitle={ __( 'Duplicate template part' ) }\n\t\t\t\t\tonCreate={ onTemplatePartSuccess }\n\t\t\t\t\tonError={ closeModal }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -141,6 +141,7 @@ function GridItem({
141
141
  // @see https://reakit.io/docs/composite/#performance.
142
142
  ,
143
143
  id: `edit-site-patterns-${item.name}`,
144
+ type: "button",
144
145
  ...props,
145
146
  onClick: item.type !== _constants.PATTERN_TYPES.theme ? onClick : undefined,
146
147
  "aria-disabled": item.type !== _constants.PATTERN_TYPES.theme ? 'false' : 'true',
@@ -1 +1 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_downloadjs","_changeCase","_blockEditor","_components","_data","_element","_i18n","_icons","_notices","_reusableBlocks","_renameMenuItem","_duplicateMenuItem","_constants","_store","_link","_lockUnlock","useGlobalStyle","unlock","blockEditorPrivateApis","templatePartIcons","header","footer","uncategorized","GridItem","categoryId","item","props","descriptionId","useId","isDeleteDialogOpen","setIsDeleteDialogOpen","useState","backgroundColor","removeTemplate","useDispatch","editSiteStore","__experimentalDeleteReusableBlock","reusableBlocksStore","createErrorNotice","createSuccessNotice","noticesStore","isUserPattern","type","PATTERN_TYPES","user","isNonUserPattern","theme","isTemplatePart","TEMPLATE_PART_POST_TYPE","onClick","useLink","postType","postId","id","name","categoryType","isEmpty","blocks","length","patternClassNames","classnames","previewClassNames","deletePattern","sprintf","__","title","error","errorMessage","message","code","deleteItem","exportAsJSON","json","__file","content","patternBlock","raw","syncStatus","wp_pattern_sync_status","downloadjs","JSON","stringify","kebabCase","isCustomPattern","isCustom","hasThemeFile","templatePart","has_theme_file","ariaDescriptions","push","description","itemIcon","PATTERN_SYNC_TYPES","full","symbol","undefined","confirmButtonText","confirmPrompt","additionalStyles","css","_react","createElement","className","map","_","index","join","BlockPreview","ariaDescription","key","hidden","__experimentalHStack","justify","alignment","spacing","Tooltip","placement","text","Icon","icon","Flex","as","gap","__experimentalHeading","level","Button","variant","tabIndex","lockSmall","size","DropdownMenu","moreVertical","label","popoverProps","toggleProps","describedBy","onClose","MenuGroup","default","MenuItem","isDestructive","__experimentalConfirmDialog","onConfirm","onCancel","_default","memo","exports"],"sources":["@wordpress/edit-site/src/components/page-patterns/grid-item.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport downloadjs from 'downloadjs';\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport {\n\tButton,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalHeading as Heading,\n\t__experimentalHStack as HStack,\n\tTooltip,\n\tFlex,\n} from '@wordpress/components';\nimport { useDispatch } from '@wordpress/data';\nimport { useState, useId, memo } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tIcon,\n\theader,\n\tfooter,\n\tsymbolFilled as uncategorized,\n\tsymbol,\n\tmoreVertical,\n\tlockSmall,\n} from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\n\n/**\n * Internal dependencies\n */\nimport RenameMenuItem from './rename-menu-item';\nimport DuplicateMenuItem from './duplicate-menu-item';\nimport {\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_SYNC_TYPES,\n} from '../../utils/constants';\nimport { store as editSiteStore } from '../../store';\nimport { useLink } from '../routes/link';\nimport { unlock } from '../../lock-unlock';\n\nconst { useGlobalStyle } = unlock( blockEditorPrivateApis );\n\nconst templatePartIcons = { header, footer, uncategorized };\n\nfunction GridItem( { categoryId, item, ...props } ) {\n\tconst descriptionId = useId();\n\tconst [ isDeleteDialogOpen, setIsDeleteDialogOpen ] = useState( false );\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\n\tconst { removeTemplate } = useDispatch( editSiteStore );\n\tconst { __experimentalDeleteReusableBlock } =\n\t\tuseDispatch( reusableBlocksStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\tconst isNonUserPattern = item.type === PATTERN_TYPES.theme;\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern ? item.id : item.name,\n\t\tcategoryId,\n\t\tcategoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,\n\t} );\n\n\tconst isEmpty = ! item.blocks?.length;\n\tconst patternClassNames = classnames( 'edit-site-patterns__pattern', {\n\t\t'is-placeholder': isEmpty,\n\t} );\n\tconst previewClassNames = classnames( 'edit-site-patterns__preview', {\n\t\t'is-inactive': isNonUserPattern,\n\t} );\n\n\tconst deletePattern = async () => {\n\t\ttry {\n\t\t\tawait __experimentalDeleteReusableBlock( item.id );\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The pattern's title e.g. 'Call to action'.\n\t\t\t\t\t__( '\"%s\" deleted.' ),\n\t\t\t\t\titem.title\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'edit-site-patterns-success' }\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while deleting the pattern.' );\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t} );\n\t\t}\n\t};\n\tconst deleteItem = () =>\n\t\tisTemplatePart ? removeTemplate( item ) : deletePattern();\n\tconst exportAsJSON = () => {\n\t\tconst json = {\n\t\t\t__file: item.type,\n\t\t\ttitle: item.title || item.name,\n\t\t\tcontent: item.patternBlock.content.raw,\n\t\t\tsyncStatus: item.patternBlock.wp_pattern_sync_status,\n\t\t};\n\n\t\treturn downloadjs(\n\t\t\tJSON.stringify( json, null, 2 ),\n\t\t\t`${ kebabCase( item.title || item.name ) }.json`,\n\t\t\t'application/json'\n\t\t);\n\t};\n\n\t// Only custom patterns or custom template parts can be renamed or deleted.\n\tconst isCustomPattern =\n\t\tisUserPattern || ( isTemplatePart && item.isCustom );\n\tconst hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;\n\tconst ariaDescriptions = [];\n\n\tif ( isCustomPattern ) {\n\t\t// User patterns don't have descriptions, but can be edited and deleted, so include some help text.\n\t\tariaDescriptions.push(\n\t\t\t__( 'Press Enter to edit, or Delete to delete the pattern.' )\n\t\t);\n\t} else if ( item.description ) {\n\t\tariaDescriptions.push( item.description );\n\t}\n\n\tif ( isNonUserPattern ) {\n\t\tariaDescriptions.push(\n\t\t\t__( 'Theme & plugin patterns cannot be edited.' )\n\t\t);\n\t}\n\n\tlet itemIcon;\n\tif ( ! isUserPattern && templatePartIcons[ categoryId ] ) {\n\t\titemIcon = templatePartIcons[ categoryId ];\n\t} else {\n\t\titemIcon =\n\t\t\titem.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;\n\t}\n\n\tconst confirmButtonText = hasThemeFile ? __( 'Clear' ) : __( 'Delete' );\n\tconst confirmPrompt = hasThemeFile\n\t\t? __( 'Are you sure you want to clear these customizations?' )\n\t\t: sprintf(\n\t\t\t\t// translators: %s: The pattern or template part's title e.g. 'Call to action'.\n\t\t\t\t__( 'Are you sure you want to delete \"%s\"?' ),\n\t\t\t\titem.title || item.name\n\t\t );\n\n\tconst additionalStyles = ! backgroundColor\n\t\t? [ { css: 'body { background: #fff; }' } ]\n\t\t: undefined;\n\n\treturn (\n\t\t<li className={ patternClassNames }>\n\t\t\t<button\n\t\t\t\tclassName={ previewClassNames }\n\t\t\t\t// Even though still incomplete, passing ids helps performance.\n\t\t\t\t// @see https://reakit.io/docs/composite/#performance.\n\t\t\t\tid={ `edit-site-patterns-${ item.name }` }\n\t\t\t\t{ ...props }\n\t\t\t\tonClick={\n\t\t\t\t\titem.type !== PATTERN_TYPES.theme ? onClick : undefined\n\t\t\t\t}\n\t\t\t\taria-disabled={\n\t\t\t\t\titem.type !== PATTERN_TYPES.theme ? 'false' : 'true'\n\t\t\t\t}\n\t\t\t\taria-label={ item.title }\n\t\t\t\taria-describedby={\n\t\t\t\t\tariaDescriptions.length\n\t\t\t\t\t\t? ariaDescriptions\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( _, index ) =>\n\t\t\t\t\t\t\t\t\t\t`${ descriptionId }-${ index }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isEmpty && isTemplatePart && __( 'Empty template part' ) }\n\t\t\t\t{ isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }\n\t\t\t\t{ ! isEmpty && (\n\t\t\t\t\t<BlockPreview\n\t\t\t\t\t\tblocks={ item.blocks }\n\t\t\t\t\t\tadditionalStyles={ additionalStyles }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</button>\n\t\t\t{ ariaDescriptions.map( ( ariaDescription, index ) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={ index }\n\t\t\t\t\thidden\n\t\t\t\t\tid={ `${ descriptionId }-${ index }` }\n\t\t\t\t>\n\t\t\t\t\t{ ariaDescription }\n\t\t\t\t</div>\n\t\t\t) ) }\n\t\t\t<HStack\n\t\t\t\tclassName=\"edit-site-patterns__footer\"\n\t\t\t\tjustify=\"space-between\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tjustify=\"left\"\n\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\tclassName=\"edit-site-patterns__pattern-title\"\n\t\t\t\t>\n\t\t\t\t\t{ itemIcon && ! isNonUserPattern && (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\ttext={ __(\n\t\t\t\t\t\t\t\t'Editing this pattern will also update anywhere it is used'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-icon\"\n\t\t\t\t\t\t\t\ticon={ itemIcon }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t\t<Flex as=\"span\" gap={ 0 } justify=\"left\">\n\t\t\t\t\t\t{ item.type === PATTERN_TYPES.theme ? (\n\t\t\t\t\t\t\titem.title\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Heading level={ 5 }>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\t\t\t\t// Required for the grid's roving tab index system.\n\t\t\t\t\t\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.\n\t\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ item.title || item.name }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ item.type === PATTERN_TYPES.theme && (\n\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\ttext={ __( 'This pattern cannot be edited.' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-lock-icon\"\n\t\t\t\t\t\t\t\t\ticon={ lockSmall }\n\t\t\t\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Flex>\n\t\t\t\t</HStack>\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\tclassName=\"edit-site-patterns__dropdown\"\n\t\t\t\t\tpopoverProps={ { placement: 'bottom-end' } }\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tclassName: 'edit-site-patterns__button',\n\t\t\t\t\t\tdescribedBy: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: pattern name */\n\t\t\t\t\t\t\t__( 'Action menu for %s pattern' ),\n\t\t\t\t\t\t\titem.title\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t{ isCustomPattern && ! hasThemeFile && (\n\t\t\t\t\t\t\t\t<RenameMenuItem\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<DuplicateMenuItem\n\t\t\t\t\t\t\t\tcategoryId={ categoryId }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tlabel={ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ item.type === PATTERN_TYPES.user && (\n\t\t\t\t\t\t\t\t<MenuItem onClick={ () => exportAsJSON() }>\n\t\t\t\t\t\t\t\t\t{ __( 'Export as JSON' ) }\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t\t{ isCustomPattern && (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tisDestructive={ ! hasThemeFile }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetIsDeleteDialogOpen( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ hasThemeFile\n\t\t\t\t\t\t\t\t\t\t? __( 'Clear customizations' )\n\t\t\t\t\t\t\t\t\t\t: __( 'Delete' ) }\n\t\t\t\t\t\t\t\t</MenuItem>\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</DropdownMenu>\n\t\t\t</HStack>\n\n\t\t\t{ isDeleteDialogOpen && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tconfirmButtonText={ confirmButtonText }\n\t\t\t\t\tonConfirm={ deleteItem }\n\t\t\t\t\tonCancel={ () => setIsDeleteDialogOpen( false ) }\n\t\t\t\t>\n\t\t\t\t\t{ confirmPrompt }\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</li>\n\t);\n}\n\nexport default memo( GridItem );\n"],"mappings":"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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_downloadjs","_changeCase","_blockEditor","_components","_data","_element","_i18n","_icons","_notices","_reusableBlocks","_renameMenuItem","_duplicateMenuItem","_constants","_store","_link","_lockUnlock","useGlobalStyle","unlock","blockEditorPrivateApis","templatePartIcons","header","footer","uncategorized","GridItem","categoryId","item","props","descriptionId","useId","isDeleteDialogOpen","setIsDeleteDialogOpen","useState","backgroundColor","removeTemplate","useDispatch","editSiteStore","__experimentalDeleteReusableBlock","reusableBlocksStore","createErrorNotice","createSuccessNotice","noticesStore","isUserPattern","type","PATTERN_TYPES","user","isNonUserPattern","theme","isTemplatePart","TEMPLATE_PART_POST_TYPE","onClick","useLink","postType","postId","id","name","categoryType","isEmpty","blocks","length","patternClassNames","classnames","previewClassNames","deletePattern","sprintf","__","title","error","errorMessage","message","code","deleteItem","exportAsJSON","json","__file","content","patternBlock","raw","syncStatus","wp_pattern_sync_status","downloadjs","JSON","stringify","kebabCase","isCustomPattern","isCustom","hasThemeFile","templatePart","has_theme_file","ariaDescriptions","push","description","itemIcon","PATTERN_SYNC_TYPES","full","symbol","undefined","confirmButtonText","confirmPrompt","additionalStyles","css","_react","createElement","className","map","_","index","join","BlockPreview","ariaDescription","key","hidden","__experimentalHStack","justify","alignment","spacing","Tooltip","placement","text","Icon","icon","Flex","as","gap","__experimentalHeading","level","Button","variant","tabIndex","lockSmall","size","DropdownMenu","moreVertical","label","popoverProps","toggleProps","describedBy","onClose","MenuGroup","default","MenuItem","isDestructive","__experimentalConfirmDialog","onConfirm","onCancel","_default","memo","exports"],"sources":["@wordpress/edit-site/src/components/page-patterns/grid-item.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport downloadjs from 'downloadjs';\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport {\n\tButton,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalHeading as Heading,\n\t__experimentalHStack as HStack,\n\tTooltip,\n\tFlex,\n} from '@wordpress/components';\nimport { useDispatch } from '@wordpress/data';\nimport { useState, useId, memo } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tIcon,\n\theader,\n\tfooter,\n\tsymbolFilled as uncategorized,\n\tsymbol,\n\tmoreVertical,\n\tlockSmall,\n} from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\n\n/**\n * Internal dependencies\n */\nimport RenameMenuItem from './rename-menu-item';\nimport DuplicateMenuItem from './duplicate-menu-item';\nimport {\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_SYNC_TYPES,\n} from '../../utils/constants';\nimport { store as editSiteStore } from '../../store';\nimport { useLink } from '../routes/link';\nimport { unlock } from '../../lock-unlock';\n\nconst { useGlobalStyle } = unlock( blockEditorPrivateApis );\n\nconst templatePartIcons = { header, footer, uncategorized };\n\nfunction GridItem( { categoryId, item, ...props } ) {\n\tconst descriptionId = useId();\n\tconst [ isDeleteDialogOpen, setIsDeleteDialogOpen ] = useState( false );\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\n\tconst { removeTemplate } = useDispatch( editSiteStore );\n\tconst { __experimentalDeleteReusableBlock } =\n\t\tuseDispatch( reusableBlocksStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\tconst isNonUserPattern = item.type === PATTERN_TYPES.theme;\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern ? item.id : item.name,\n\t\tcategoryId,\n\t\tcategoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,\n\t} );\n\n\tconst isEmpty = ! item.blocks?.length;\n\tconst patternClassNames = classnames( 'edit-site-patterns__pattern', {\n\t\t'is-placeholder': isEmpty,\n\t} );\n\tconst previewClassNames = classnames( 'edit-site-patterns__preview', {\n\t\t'is-inactive': isNonUserPattern,\n\t} );\n\n\tconst deletePattern = async () => {\n\t\ttry {\n\t\t\tawait __experimentalDeleteReusableBlock( item.id );\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The pattern's title e.g. 'Call to action'.\n\t\t\t\t\t__( '\"%s\" deleted.' ),\n\t\t\t\t\titem.title\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'edit-site-patterns-success' }\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while deleting the pattern.' );\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t} );\n\t\t}\n\t};\n\tconst deleteItem = () =>\n\t\tisTemplatePart ? removeTemplate( item ) : deletePattern();\n\tconst exportAsJSON = () => {\n\t\tconst json = {\n\t\t\t__file: item.type,\n\t\t\ttitle: item.title || item.name,\n\t\t\tcontent: item.patternBlock.content.raw,\n\t\t\tsyncStatus: item.patternBlock.wp_pattern_sync_status,\n\t\t};\n\n\t\treturn downloadjs(\n\t\t\tJSON.stringify( json, null, 2 ),\n\t\t\t`${ kebabCase( item.title || item.name ) }.json`,\n\t\t\t'application/json'\n\t\t);\n\t};\n\n\t// Only custom patterns or custom template parts can be renamed or deleted.\n\tconst isCustomPattern =\n\t\tisUserPattern || ( isTemplatePart && item.isCustom );\n\tconst hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;\n\tconst ariaDescriptions = [];\n\n\tif ( isCustomPattern ) {\n\t\t// User patterns don't have descriptions, but can be edited and deleted, so include some help text.\n\t\tariaDescriptions.push(\n\t\t\t__( 'Press Enter to edit, or Delete to delete the pattern.' )\n\t\t);\n\t} else if ( item.description ) {\n\t\tariaDescriptions.push( item.description );\n\t}\n\n\tif ( isNonUserPattern ) {\n\t\tariaDescriptions.push(\n\t\t\t__( 'Theme & plugin patterns cannot be edited.' )\n\t\t);\n\t}\n\n\tlet itemIcon;\n\tif ( ! isUserPattern && templatePartIcons[ categoryId ] ) {\n\t\titemIcon = templatePartIcons[ categoryId ];\n\t} else {\n\t\titemIcon =\n\t\t\titem.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;\n\t}\n\n\tconst confirmButtonText = hasThemeFile ? __( 'Clear' ) : __( 'Delete' );\n\tconst confirmPrompt = hasThemeFile\n\t\t? __( 'Are you sure you want to clear these customizations?' )\n\t\t: sprintf(\n\t\t\t\t// translators: %s: The pattern or template part's title e.g. 'Call to action'.\n\t\t\t\t__( 'Are you sure you want to delete \"%s\"?' ),\n\t\t\t\titem.title || item.name\n\t\t );\n\n\tconst additionalStyles = ! backgroundColor\n\t\t? [ { css: 'body { background: #fff; }' } ]\n\t\t: undefined;\n\n\treturn (\n\t\t<li className={ patternClassNames }>\n\t\t\t<button\n\t\t\t\tclassName={ previewClassNames }\n\t\t\t\t// Even though still incomplete, passing ids helps performance.\n\t\t\t\t// @see https://reakit.io/docs/composite/#performance.\n\t\t\t\tid={ `edit-site-patterns-${ item.name }` }\n\t\t\t\ttype=\"button\"\n\t\t\t\t{ ...props }\n\t\t\t\tonClick={\n\t\t\t\t\titem.type !== PATTERN_TYPES.theme ? onClick : undefined\n\t\t\t\t}\n\t\t\t\taria-disabled={\n\t\t\t\t\titem.type !== PATTERN_TYPES.theme ? 'false' : 'true'\n\t\t\t\t}\n\t\t\t\taria-label={ item.title }\n\t\t\t\taria-describedby={\n\t\t\t\t\tariaDescriptions.length\n\t\t\t\t\t\t? ariaDescriptions\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( _, index ) =>\n\t\t\t\t\t\t\t\t\t\t`${ descriptionId }-${ index }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isEmpty && isTemplatePart && __( 'Empty template part' ) }\n\t\t\t\t{ isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }\n\t\t\t\t{ ! isEmpty && (\n\t\t\t\t\t<BlockPreview\n\t\t\t\t\t\tblocks={ item.blocks }\n\t\t\t\t\t\tadditionalStyles={ additionalStyles }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</button>\n\t\t\t{ ariaDescriptions.map( ( ariaDescription, index ) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={ index }\n\t\t\t\t\thidden\n\t\t\t\t\tid={ `${ descriptionId }-${ index }` }\n\t\t\t\t>\n\t\t\t\t\t{ ariaDescription }\n\t\t\t\t</div>\n\t\t\t) ) }\n\t\t\t<HStack\n\t\t\t\tclassName=\"edit-site-patterns__footer\"\n\t\t\t\tjustify=\"space-between\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tjustify=\"left\"\n\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\tclassName=\"edit-site-patterns__pattern-title\"\n\t\t\t\t>\n\t\t\t\t\t{ itemIcon && ! isNonUserPattern && (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\ttext={ __(\n\t\t\t\t\t\t\t\t'Editing this pattern will also update anywhere it is used'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-icon\"\n\t\t\t\t\t\t\t\ticon={ itemIcon }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t\t<Flex as=\"span\" gap={ 0 } justify=\"left\">\n\t\t\t\t\t\t{ item.type === PATTERN_TYPES.theme ? (\n\t\t\t\t\t\t\titem.title\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Heading level={ 5 }>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\t\t\t\t// Required for the grid's roving tab index system.\n\t\t\t\t\t\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.\n\t\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ item.title || item.name }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ item.type === PATTERN_TYPES.theme && (\n\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\ttext={ __( 'This pattern cannot be edited.' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-lock-icon\"\n\t\t\t\t\t\t\t\t\ticon={ lockSmall }\n\t\t\t\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Flex>\n\t\t\t\t</HStack>\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\tclassName=\"edit-site-patterns__dropdown\"\n\t\t\t\t\tpopoverProps={ { placement: 'bottom-end' } }\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tclassName: 'edit-site-patterns__button',\n\t\t\t\t\t\tdescribedBy: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: pattern name */\n\t\t\t\t\t\t\t__( 'Action menu for %s pattern' ),\n\t\t\t\t\t\t\titem.title\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t{ isCustomPattern && ! hasThemeFile && (\n\t\t\t\t\t\t\t\t<RenameMenuItem\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<DuplicateMenuItem\n\t\t\t\t\t\t\t\tcategoryId={ categoryId }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tlabel={ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ item.type === PATTERN_TYPES.user && (\n\t\t\t\t\t\t\t\t<MenuItem onClick={ () => exportAsJSON() }>\n\t\t\t\t\t\t\t\t\t{ __( 'Export as JSON' ) }\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t\t{ isCustomPattern && (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tisDestructive={ ! hasThemeFile }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetIsDeleteDialogOpen( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ hasThemeFile\n\t\t\t\t\t\t\t\t\t\t? __( 'Clear customizations' )\n\t\t\t\t\t\t\t\t\t\t: __( 'Delete' ) }\n\t\t\t\t\t\t\t\t</MenuItem>\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</DropdownMenu>\n\t\t\t</HStack>\n\n\t\t\t{ isDeleteDialogOpen && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tconfirmButtonText={ confirmButtonText }\n\t\t\t\t\tonConfirm={ deleteItem }\n\t\t\t\t\tonCancel={ () => setIsDeleteDialogOpen( false ) }\n\t\t\t\t>\n\t\t\t\t\t{ confirmPrompt }\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</li>\n\t);\n}\n\nexport default memo( GridItem );\n"],"mappings":"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"}
@@ -9,6 +9,10 @@ var _react = require("react");
9
9
  var _components = require("@wordpress/components");
10
10
  var _editor = require("@wordpress/editor");
11
11
  var _data = require("@wordpress/data");
12
+ var _i18n = require("@wordpress/i18n");
13
+ var _icons = require("@wordpress/icons");
14
+ var _renameCategoryMenuItem = _interopRequireDefault(require("./rename-category-menu-item"));
15
+ var _deleteCategoryMenuItem = _interopRequireDefault(require("./delete-category-menu-item"));
12
16
  var _usePatternCategories = _interopRequireDefault(require("../sidebar-navigation-screen-patterns/use-pattern-categories"));
13
17
  var _constants = require("../../utils/constants");
14
18
  /**
@@ -29,24 +33,42 @@ function PatternsHeader({
29
33
  patternCategories
30
34
  } = (0, _usePatternCategories.default)();
31
35
  const templatePartAreas = (0, _data.useSelect)(select => select(_editor.store).__experimentalGetDefaultTemplatePartAreas(), []);
32
- let title, description;
36
+ let title, description, patternCategory;
33
37
  if (type === _constants.TEMPLATE_PART_POST_TYPE) {
34
38
  const templatePartArea = templatePartAreas.find(area => area.area === categoryId);
35
39
  title = templatePartArea?.label;
36
40
  description = templatePartArea?.description;
37
41
  } else if (type === _constants.PATTERN_TYPES.theme) {
38
- const patternCategory = patternCategories.find(category => category.name === categoryId);
42
+ patternCategory = patternCategories.find(category => category.name === categoryId);
39
43
  title = patternCategory?.label;
40
44
  description = patternCategory?.description;
41
45
  }
42
46
  if (!title) return null;
43
47
  return (0, _react.createElement)(_components.__experimentalVStack, {
44
48
  className: "edit-site-patterns__section-header"
49
+ }, (0, _react.createElement)(_components.__experimentalHStack, {
50
+ justify: "space-between"
45
51
  }, (0, _react.createElement)(_components.__experimentalHeading, {
46
52
  as: "h2",
47
53
  level: 4,
48
54
  id: titleId
49
- }, title), description ? (0, _react.createElement)(_components.__experimentalText, {
55
+ }, title), !!patternCategory?.id && (0, _react.createElement)(_components.DropdownMenu, {
56
+ icon: _icons.moreVertical,
57
+ label: (0, _i18n.__)('Actions'),
58
+ toggleProps: {
59
+ className: 'edit-site-patterns__button',
60
+ describedBy: (0, _i18n.sprintf)( /* translators: %s: pattern category name */
61
+ (0, _i18n.__)('Action menu for %s pattern category'), title)
62
+ }
63
+ }, ({
64
+ onClose
65
+ }) => (0, _react.createElement)(_components.MenuGroup, null, (0, _react.createElement)(_renameCategoryMenuItem.default, {
66
+ category: patternCategory,
67
+ onClose: onClose
68
+ }), (0, _react.createElement)(_deleteCategoryMenuItem.default, {
69
+ category: patternCategory,
70
+ onClose: onClose
71
+ })))), description ? (0, _react.createElement)(_components.__experimentalText, {
50
72
  variant: "muted",
51
73
  as: "p",
52
74
  id: descriptionId