@wordpress/edit-site 5.20.1 → 5.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/components/actions/trash-post.js +48 -0
- package/build/components/actions/trash-post.js.map +1 -0
- package/build/components/add-new-template/add-custom-template-modal-content.js +17 -13
- package/build/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
- package/build/components/block-editor/resize-handle.js +2 -1
- package/build/components/block-editor/resize-handle.js.map +1 -1
- package/build/components/create-template-part-modal/index.js +10 -6
- package/build/components/create-template-part-modal/index.js.map +1 -1
- package/build/components/dataviews/dataviews.js +41 -32
- package/build/components/dataviews/dataviews.js.map +1 -1
- package/build/components/dataviews/field-actions.js +30 -0
- package/build/components/dataviews/field-actions.js.map +1 -0
- package/build/components/dataviews/filters.js +61 -0
- package/build/components/dataviews/filters.js.map +1 -0
- package/build/components/dataviews/in-filter.js +51 -0
- package/build/components/dataviews/in-filter.js.map +1 -0
- package/build/components/dataviews/index.js +0 -7
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews/pagination.js +75 -27
- package/build/components/dataviews/pagination.js.map +1 -1
- package/build/components/dataviews/text-filter.js +18 -12
- package/build/components/dataviews/text-filter.js.map +1 -1
- package/build/components/dataviews/view-actions.js +94 -56
- package/build/components/dataviews/view-actions.js.map +1 -1
- package/build/components/dataviews/view-grid.js +59 -0
- package/build/components/dataviews/view-grid.js.map +1 -0
- package/build/components/dataviews/view-list.js +283 -0
- package/build/components/dataviews/view-list.js.map +1 -0
- package/build/components/editor/index.js +2 -1
- package/build/components/editor/index.js.map +1 -1
- package/build/components/global-styles/font-library-modal/context.js +16 -10
- package/build/components/global-styles/font-library-modal/context.js.map +1 -1
- package/build/components/global-styles/font-library-modal/font-collection.js +20 -6
- package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build/components/global-styles/screen-block.js +1 -2
- package/build/components/global-styles/screen-block.js.map +1 -1
- package/build/components/global-styles/screen-root.js +1 -2
- package/build/components/global-styles/screen-root.js.map +1 -1
- package/build/components/global-styles/ui.js +3 -4
- package/build/components/global-styles/ui.js.map +1 -1
- package/build/components/layout/index.js +10 -2
- package/build/components/layout/index.js.map +1 -1
- package/build/components/media/index.js +34 -0
- package/build/components/media/index.js.map +1 -0
- package/build/components/page-actions/index.js +0 -2
- package/build/components/page-actions/index.js.map +1 -1
- package/build/components/page-pages/index.js +153 -107
- package/build/components/page-pages/index.js.map +1 -1
- package/build/components/page-patterns/delete-category-menu-item.js +89 -0
- package/build/components/page-patterns/delete-category-menu-item.js.map +1 -0
- package/build/components/page-patterns/duplicate-menu-item.js +52 -131
- package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
- package/build/components/page-patterns/grid-item.js +1 -0
- package/build/components/page-patterns/grid-item.js.map +1 -1
- package/build/components/page-patterns/header.js +25 -3
- package/build/components/page-patterns/header.js.map +1 -1
- package/build/components/page-patterns/rename-category-menu-item.js +49 -0
- package/build/components/page-patterns/rename-category-menu-item.js.map +1 -0
- package/build/components/page-patterns/rename-menu-item.js +1 -1
- package/build/components/page-patterns/rename-menu-item.js.map +1 -1
- package/build/components/page-patterns/use-patterns.js +1 -0
- package/build/components/page-patterns/use-patterns.js.map +1 -1
- package/build/components/pattern-modal/duplicate.js +65 -0
- package/build/components/pattern-modal/duplicate.js.map +1 -0
- package/build/components/pattern-modal/index.js +24 -0
- package/build/components/pattern-modal/index.js.map +1 -0
- package/build/components/pattern-modal/rename.js +42 -0
- package/build/components/pattern-modal/rename.js.map +1 -0
- package/build/components/sidebar-edit-mode/template-panel/last-revision.js +3 -0
- package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -2
- package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -3
- package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +29 -0
- package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
- package/build/components/sidebar-navigation-screen-template/home-template-details.js +12 -1
- package/build/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
- package/build/hooks/commands/use-common-commands.js +1 -2
- package/build/hooks/commands/use-common-commands.js.map +1 -1
- package/build/hooks/commands/use-edit-mode-commands.js +49 -0
- package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
- package/build/lock-unlock.js +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/store/selectors.js +4 -5
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/actions/trash-post.js +41 -0
- package/build-module/components/actions/trash-post.js.map +1 -0
- package/build-module/components/add-new-template/add-custom-template-modal-content.js +16 -12
- package/build-module/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
- package/build-module/components/block-editor/resize-handle.js +2 -1
- package/build-module/components/block-editor/resize-handle.js.map +1 -1
- package/build-module/components/create-template-part-modal/index.js +10 -6
- package/build-module/components/create-template-part-modal/index.js.map +1 -1
- package/build-module/components/dataviews/dataviews.js +40 -31
- package/build-module/components/dataviews/dataviews.js.map +1 -1
- package/build-module/components/dataviews/field-actions.js +22 -0
- package/build-module/components/dataviews/field-actions.js.map +1 -0
- package/build-module/components/dataviews/filters.js +53 -0
- package/build-module/components/dataviews/filters.js.map +1 -0
- package/build-module/components/dataviews/in-filter.js +43 -0
- package/build-module/components/dataviews/in-filter.js.map +1 -0
- package/build-module/components/dataviews/index.js +0 -1
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews/pagination.js +74 -28
- package/build-module/components/dataviews/pagination.js.map +1 -1
- package/build-module/components/dataviews/text-filter.js +19 -13
- package/build-module/components/dataviews/text-filter.js.map +1 -1
- package/build-module/components/dataviews/view-actions.js +95 -54
- package/build-module/components/dataviews/view-actions.js.map +1 -1
- package/build-module/components/dataviews/view-grid.js +51 -0
- package/build-module/components/dataviews/view-grid.js.map +1 -0
- package/build-module/components/dataviews/view-list.js +274 -0
- package/build-module/components/dataviews/view-list.js.map +1 -0
- package/build-module/components/editor/index.js +2 -1
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/context.js +16 -10
- package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/font-collection.js +20 -6
- package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build-module/components/global-styles/screen-block.js +1 -2
- package/build-module/components/global-styles/screen-block.js.map +1 -1
- package/build-module/components/global-styles/screen-root.js +1 -2
- package/build-module/components/global-styles/screen-root.js.map +1 -1
- package/build-module/components/global-styles/ui.js +3 -4
- package/build-module/components/global-styles/ui.js.map +1 -1
- package/build-module/components/layout/index.js +11 -3
- package/build-module/components/layout/index.js.map +1 -1
- package/build-module/components/media/index.js +26 -0
- package/build-module/components/media/index.js.map +1 -0
- package/build-module/components/page-actions/index.js +0 -2
- package/build-module/components/page-actions/index.js.map +1 -1
- package/build-module/components/page-pages/index.js +156 -110
- package/build-module/components/page-pages/index.js.map +1 -1
- package/build-module/components/page-patterns/delete-category-menu-item.js +82 -0
- package/build-module/components/page-patterns/delete-category-menu-item.js.map +1 -0
- package/build-module/components/page-patterns/duplicate-menu-item.js +54 -133
- package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
- package/build-module/components/page-patterns/grid-item.js +1 -0
- package/build-module/components/page-patterns/grid-item.js.map +1 -1
- package/build-module/components/page-patterns/header.js +26 -4
- package/build-module/components/page-patterns/header.js.map +1 -1
- package/build-module/components/page-patterns/rename-category-menu-item.js +42 -0
- package/build-module/components/page-patterns/rename-category-menu-item.js.map +1 -0
- package/build-module/components/page-patterns/rename-menu-item.js +1 -1
- package/build-module/components/page-patterns/rename-menu-item.js.map +1 -1
- package/build-module/components/page-patterns/use-patterns.js +1 -0
- package/build-module/components/page-patterns/use-patterns.js.map +1 -1
- package/build-module/components/pattern-modal/duplicate.js +57 -0
- package/build-module/components/pattern-modal/duplicate.js.map +1 -0
- package/build-module/components/pattern-modal/index.js +14 -0
- package/build-module/components/pattern-modal/index.js.map +1 -0
- package/build-module/components/pattern-modal/rename.js +34 -0
- package/build-module/components/pattern-modal/rename.js.map +1 -0
- package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js +3 -0
- package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -2
- package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -3
- package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +22 -0
- package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
- package/build-module/components/sidebar-navigation-screen-template/home-template-details.js +12 -1
- package/build-module/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
- package/build-module/hooks/commands/use-common-commands.js +1 -2
- package/build-module/hooks/commands/use-common-commands.js.map +1 -1
- package/build-module/hooks/commands/use-edit-mode-commands.js +50 -1
- package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
- package/build-module/lock-unlock.js +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/store/selectors.js +4 -5
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +42 -9
- package/build-style/style.css +42 -9
- package/package.json +40 -40
- package/src/components/actions/trash-post.js +55 -0
- package/src/components/add-new-template/add-custom-template-modal-content.js +22 -17
- package/src/components/block-editor/resize-handle.js +1 -0
- package/src/components/create-template-part-modal/index.js +9 -5
- package/src/components/dataviews/README.md +107 -0
- package/src/components/dataviews/dataviews.js +44 -33
- package/src/components/dataviews/field-actions.js +28 -0
- package/src/components/dataviews/filters.js +57 -0
- package/src/components/dataviews/in-filter.js +47 -0
- package/src/components/dataviews/index.js +0 -1
- package/src/components/dataviews/pagination.js +71 -29
- package/src/components/dataviews/style.scss +11 -1
- package/src/components/dataviews/text-filter.js +19 -15
- package/src/components/dataviews/view-actions.js +108 -63
- package/src/components/dataviews/view-grid.js +60 -0
- package/src/components/dataviews/view-list.js +348 -0
- package/src/components/editor/index.js +2 -0
- package/src/components/global-styles/font-library-modal/context.js +17 -11
- package/src/components/global-styles/font-library-modal/font-collection.js +18 -10
- package/src/components/global-styles/screen-block.js +1 -2
- package/src/components/global-styles/screen-root.js +1 -2
- package/src/components/global-styles/style.scss +16 -4
- package/src/components/global-styles/ui.js +1 -2
- package/src/components/layout/index.js +12 -4
- package/src/components/media/index.js +25 -0
- package/src/components/page-actions/index.js +1 -7
- package/src/components/page-pages/index.js +156 -108
- package/src/components/page-pages/style.scss +3 -0
- package/src/components/page-patterns/delete-category-menu-item.js +104 -0
- package/src/components/page-patterns/duplicate-menu-item.js +68 -181
- package/src/components/page-patterns/grid-item.js +1 -0
- package/src/components/page-patterns/header.js +42 -6
- package/src/components/page-patterns/rename-category-menu-item.js +45 -0
- package/src/components/page-patterns/rename-menu-item.js +2 -2
- package/src/components/page-patterns/style.scss +8 -0
- package/src/components/page-patterns/use-patterns.js +5 -0
- package/src/components/pattern-modal/duplicate.js +53 -0
- package/src/components/pattern-modal/index.js +19 -0
- package/src/components/pattern-modal/rename.js +29 -0
- package/src/components/sidebar-edit-mode/template-panel/last-revision.js +4 -0
- package/src/components/sidebar-navigation-screen/style.scss +17 -5
- package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -7
- package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -8
- package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +32 -0
- package/src/components/sidebar-navigation-screen-template/home-template-details.js +21 -7
- package/src/hooks/commands/use-common-commands.js +1 -2
- package/src/hooks/commands/use-edit-mode-commands.js +41 -0
- package/src/lock-unlock.js +1 -1
- package/src/store/selectors.js +9 -10
- package/src/style.scss +1 -0
- package/build/components/dataviews/list-view.js +0 -89
- package/build/components/dataviews/list-view.js.map +0 -1
- package/build-module/components/dataviews/list-view.js +0 -80
- package/build-module/components/dataviews/list-view.js.map +0 -1
- package/src/components/dataviews/list-view.js +0 -106
|
@@ -2,89 +2,103 @@ import { createElement } from "react";
|
|
|
2
2
|
/**
|
|
3
3
|
* WordPress dependencies
|
|
4
4
|
*/
|
|
5
|
-
import
|
|
6
|
-
import { addQueryArgs } from '@wordpress/url';
|
|
7
|
-
import { VisuallyHidden, __experimentalHeading as Heading, __experimentalVStack as VStack } from '@wordpress/components';
|
|
5
|
+
import { __experimentalHeading as Heading, __experimentalVStack as VStack } from '@wordpress/components';
|
|
8
6
|
import { __ } from '@wordpress/i18n';
|
|
9
7
|
import { useEntityRecords } from '@wordpress/core-data';
|
|
10
8
|
import { decodeEntities } from '@wordpress/html-entities';
|
|
11
|
-
import { useState,
|
|
9
|
+
import { useState, useMemo, useCallback } from '@wordpress/element';
|
|
10
|
+
import { dateI18n, getDate, getSettings } from '@wordpress/date';
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Internal dependencies
|
|
15
14
|
*/
|
|
16
15
|
import Page from '../page';
|
|
17
16
|
import Link from '../routes/link';
|
|
18
|
-
import
|
|
19
|
-
import
|
|
17
|
+
import { DataViews } from '../dataviews';
|
|
18
|
+
import useTrashPostAction from '../actions/trash-post';
|
|
19
|
+
import Media from '../media';
|
|
20
20
|
const EMPTY_ARRAY = [];
|
|
21
|
+
const EMPTY_OBJECT = {};
|
|
22
|
+
const defaultConfigPerViewType = {
|
|
23
|
+
list: {},
|
|
24
|
+
grid: {
|
|
25
|
+
mediaField: 'featured-image'
|
|
26
|
+
}
|
|
27
|
+
};
|
|
21
28
|
export default function PagePages() {
|
|
22
|
-
const [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
const [view, setView] = useState({
|
|
30
|
+
type: 'list',
|
|
31
|
+
filters: {
|
|
32
|
+
search: '',
|
|
33
|
+
status: 'publish, draft'
|
|
34
|
+
},
|
|
35
|
+
page: 1,
|
|
36
|
+
perPage: 5,
|
|
37
|
+
sort: {
|
|
38
|
+
field: 'date',
|
|
39
|
+
direction: 'desc'
|
|
40
|
+
},
|
|
41
|
+
visibleFilters: ['search', 'author', 'status'],
|
|
42
|
+
// All fields are visible by default, so it's
|
|
43
|
+
// better to keep track of the hidden ones.
|
|
44
|
+
hiddenFields: ['date', 'featured-image'],
|
|
45
|
+
layout: {}
|
|
31
46
|
});
|
|
32
47
|
// Request post statuses to get the proper labels.
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// TODO: probably memo other objects passed as state(ex:https://tanstack.com/table/v8/docs/examples/react/pagination-controlled).
|
|
41
|
-
const pagination = useMemo(() => ({
|
|
42
|
-
pageIndex,
|
|
43
|
-
pageSize
|
|
44
|
-
}), [pageIndex, pageSize]);
|
|
45
|
-
const [sorting, setSorting] = useState([{
|
|
46
|
-
order: 'desc',
|
|
47
|
-
orderby: 'date'
|
|
48
|
-
}]);
|
|
48
|
+
const {
|
|
49
|
+
records: statuses
|
|
50
|
+
} = useEntityRecords('root', 'status');
|
|
51
|
+
const postStatuses = useMemo(() => statuses === null ? EMPTY_OBJECT : Object.fromEntries(statuses.map(({
|
|
52
|
+
slug,
|
|
53
|
+
name
|
|
54
|
+
}) => [slug, name])), [statuses]);
|
|
49
55
|
const queryArgs = useMemo(() => ({
|
|
50
|
-
per_page:
|
|
51
|
-
page:
|
|
52
|
-
// tanstack starts from zero.
|
|
56
|
+
per_page: view.perPage,
|
|
57
|
+
page: view.page,
|
|
53
58
|
_embed: 'author',
|
|
54
|
-
order:
|
|
55
|
-
orderby:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}), [globalFilter, sorting[0]?.id, sorting[0]?.desc, pageSize, pageIndex, reset]);
|
|
59
|
+
order: view.sort?.direction,
|
|
60
|
+
orderby: view.sort?.field,
|
|
61
|
+
...view.filters
|
|
62
|
+
}), [view]);
|
|
59
63
|
const {
|
|
60
|
-
records,
|
|
61
|
-
isResolving:
|
|
64
|
+
records: pages,
|
|
65
|
+
isResolving: isLoadingPages,
|
|
66
|
+
totalItems,
|
|
67
|
+
totalPages
|
|
62
68
|
} = useEntityRecords('postType', 'page', queryArgs);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}).then(res => {
|
|
73
|
-
const totalPages = parseInt(res.headers.get('X-WP-TotalPages'));
|
|
74
|
-
const totalItems = parseInt(res.headers.get('X-WP-Total'));
|
|
75
|
-
setPaginationInfo({
|
|
76
|
-
totalPages,
|
|
77
|
-
totalItems
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
// Status should not make extra request if already did..
|
|
81
|
-
}, [globalFilter, pageSize, reset]);
|
|
69
|
+
const {
|
|
70
|
+
records: authors
|
|
71
|
+
} = useEntityRecords('root', 'user', {
|
|
72
|
+
who: 'authors'
|
|
73
|
+
});
|
|
74
|
+
const paginationInfo = useMemo(() => ({
|
|
75
|
+
totalItems,
|
|
76
|
+
totalPages
|
|
77
|
+
}), [totalItems, totalPages]);
|
|
82
78
|
const fields = useMemo(() => [{
|
|
79
|
+
id: 'featured-image',
|
|
80
|
+
header: __('Featured Image'),
|
|
81
|
+
getValue: ({
|
|
82
|
+
item
|
|
83
|
+
}) => item.featured_media,
|
|
84
|
+
render: ({
|
|
85
|
+
item,
|
|
86
|
+
view: currentView
|
|
87
|
+
}) => !!item.featured_media ? createElement(Media, {
|
|
88
|
+
className: "edit-site-page-pages__featured-image",
|
|
89
|
+
id: item.featured_media,
|
|
90
|
+
size: currentView.type === 'list' ? ['thumbnail', 'medium', 'large', 'full'] : ['large', 'full', 'medium', 'thumbnail']
|
|
91
|
+
}) : null,
|
|
92
|
+
enableSorting: false
|
|
93
|
+
}, {
|
|
83
94
|
header: __('Title'),
|
|
84
95
|
id: 'title',
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
96
|
+
getValue: ({
|
|
97
|
+
item
|
|
98
|
+
}) => item.title?.rendered || item.slug,
|
|
99
|
+
render: ({
|
|
100
|
+
item
|
|
101
|
+
}) => {
|
|
88
102
|
return createElement(VStack, {
|
|
89
103
|
spacing: 1
|
|
90
104
|
}, createElement(Heading, {
|
|
@@ -92,75 +106,107 @@ export default function PagePages() {
|
|
|
92
106
|
level: 5
|
|
93
107
|
}, createElement(Link, {
|
|
94
108
|
params: {
|
|
95
|
-
postId:
|
|
96
|
-
postType:
|
|
109
|
+
postId: item.id,
|
|
110
|
+
postType: item.type,
|
|
97
111
|
canvas: 'edit'
|
|
98
112
|
}
|
|
99
|
-
}, decodeEntities(
|
|
113
|
+
}, decodeEntities(item.title?.rendered || item.slug) || __('(no title)'))));
|
|
100
114
|
},
|
|
115
|
+
filters: [{
|
|
116
|
+
id: 'search',
|
|
117
|
+
type: 'search'
|
|
118
|
+
}],
|
|
101
119
|
maxWidth: 400,
|
|
102
120
|
sortingFn: 'alphanumeric',
|
|
103
121
|
enableHiding: false
|
|
104
122
|
}, {
|
|
105
123
|
header: __('Author'),
|
|
106
124
|
id: 'author',
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
125
|
+
getValue: ({
|
|
126
|
+
item
|
|
127
|
+
}) => item._embedded?.author[0]?.name,
|
|
128
|
+
render: ({
|
|
129
|
+
item
|
|
130
|
+
}) => {
|
|
131
|
+
const author = item._embedded?.author[0];
|
|
110
132
|
return createElement("a", {
|
|
111
133
|
href: `user-edit.php?user_id=${author.id}`
|
|
112
134
|
}, author.name);
|
|
113
|
-
}
|
|
135
|
+
},
|
|
136
|
+
filters: [{
|
|
137
|
+
id: 'author',
|
|
138
|
+
type: 'enumeration'
|
|
139
|
+
}],
|
|
140
|
+
elements: [{
|
|
141
|
+
value: '',
|
|
142
|
+
label: __('All')
|
|
143
|
+
}, ...(authors?.map(({
|
|
144
|
+
id,
|
|
145
|
+
name
|
|
146
|
+
}) => ({
|
|
147
|
+
value: id,
|
|
148
|
+
label: name
|
|
149
|
+
})) || [])]
|
|
114
150
|
}, {
|
|
115
|
-
header: 'Status',
|
|
151
|
+
header: __('Status'),
|
|
116
152
|
id: 'status',
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const page = props.row.original;
|
|
123
|
-
return createElement(PageActions, {
|
|
124
|
-
postId: page.id,
|
|
125
|
-
onRemove: () => setResetQuery()
|
|
126
|
-
});
|
|
153
|
+
getValue: ({
|
|
154
|
+
item
|
|
155
|
+
}) => {
|
|
156
|
+
var _postStatuses$item$st;
|
|
157
|
+
return (_postStatuses$item$st = postStatuses[item.status]) !== null && _postStatuses$item$st !== void 0 ? _postStatuses$item$st : item.status;
|
|
127
158
|
},
|
|
128
|
-
|
|
129
|
-
|
|
159
|
+
filters: [{
|
|
160
|
+
type: 'enumeration',
|
|
161
|
+
id: 'status'
|
|
162
|
+
}],
|
|
163
|
+
elements: [{
|
|
164
|
+
label: __('All'),
|
|
165
|
+
value: 'publish,draft'
|
|
166
|
+
}, ...(postStatuses && Object.entries(postStatuses).filter(([slug]) => ['publish', 'draft'].includes(slug)).map(([slug, name]) => ({
|
|
167
|
+
value: slug,
|
|
168
|
+
label: name
|
|
169
|
+
})) || [])],
|
|
170
|
+
enableSorting: false
|
|
171
|
+
}, {
|
|
172
|
+
header: __('Date'),
|
|
173
|
+
id: 'date',
|
|
174
|
+
getValue: ({
|
|
175
|
+
item
|
|
176
|
+
}) => item.date,
|
|
177
|
+
render: ({
|
|
178
|
+
item
|
|
179
|
+
}) => {
|
|
180
|
+
const formattedDate = dateI18n(getSettings().formats.datetimeAbbreviated, getDate(item.date));
|
|
181
|
+
return createElement("time", null, formattedDate);
|
|
182
|
+
}
|
|
183
|
+
}], [postStatuses, authors]);
|
|
184
|
+
const trashPostAction = useTrashPostAction();
|
|
185
|
+
const actions = useMemo(() => [trashPostAction], [trashPostAction]);
|
|
186
|
+
const onChangeView = useCallback(viewUpdater => {
|
|
187
|
+
let updatedView = typeof viewUpdater === 'function' ? viewUpdater(view) : viewUpdater;
|
|
188
|
+
if (updatedView.type !== view.type) {
|
|
189
|
+
updatedView = {
|
|
190
|
+
...updatedView,
|
|
191
|
+
layout: {
|
|
192
|
+
...defaultConfigPerViewType[updatedView.type]
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
setView(updatedView);
|
|
197
|
+
}, [view]);
|
|
130
198
|
|
|
131
199
|
// TODO: we need to handle properly `data={ data || EMPTY_ARRAY }` for when `isLoading`.
|
|
132
200
|
return createElement(Page, {
|
|
133
201
|
title: __('Pages')
|
|
134
202
|
}, createElement(DataViews, {
|
|
135
203
|
paginationInfo: paginationInfo,
|
|
136
|
-
data: records || EMPTY_ARRAY,
|
|
137
|
-
isLoading: isLoading,
|
|
138
204
|
fields: fields,
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
state: {
|
|
145
|
-
sorting,
|
|
146
|
-
globalFilter,
|
|
147
|
-
pagination
|
|
148
|
-
},
|
|
149
|
-
pageCount: paginationInfo?.totalPages,
|
|
150
|
-
onSortingChange: setSorting,
|
|
151
|
-
onGlobalFilterChange: value => {
|
|
152
|
-
setGlobalFilter(value);
|
|
153
|
-
setPagination({
|
|
154
|
-
pageIndex: 0,
|
|
155
|
-
pageSize
|
|
156
|
-
});
|
|
157
|
-
},
|
|
158
|
-
// TODO: check these callbacks and maybe reset the query when needed...
|
|
159
|
-
onPaginationChange: setPagination,
|
|
160
|
-
meta: {
|
|
161
|
-
resetQuery: setResetQuery
|
|
162
|
-
}
|
|
163
|
-
}
|
|
205
|
+
actions: actions,
|
|
206
|
+
data: pages || EMPTY_ARRAY,
|
|
207
|
+
isLoading: isLoadingPages,
|
|
208
|
+
view: view,
|
|
209
|
+
onChangeView: onChangeView
|
|
164
210
|
}));
|
|
165
211
|
}
|
|
166
212
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["apiFetch","addQueryArgs","VisuallyHidden","__experimentalHeading","Heading","__experimentalVStack","VStack","__","useEntityRecords","decodeEntities","useState","useEffect","useMemo","Page","Link","PageActions","DataViews","PAGE_SIZE_VALUES","EMPTY_ARRAY","PagePages","reset","setResetQuery","v","globalFilter","setGlobalFilter","paginationInfo","setPaginationInfo","pageIndex","pageSize","setPagination","postStatuses","setPostStatuses","path","then","pagination","sorting","setSorting","order","orderby","queryArgs","per_page","page","_embed","desc","id","search","status","records","isResolving","isLoading","_fields","method","parse","res","totalPages","parseInt","headers","get","totalItems","fields","header","accessorFn","title","rendered","slug","cell","props","row","original","createElement","spacing","as","level","params","postId","postType","type","canvas","getValue","maxWidth","sortingFn","enableHiding","_embedded","author","name","href","onRemove","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":["__experimentalHeading","Heading","__experimentalVStack","VStack","__","useEntityRecords","decodeEntities","useState","useMemo","useCallback","dateI18n","getDate","getSettings","Page","Link","DataViews","useTrashPostAction","Media","EMPTY_ARRAY","EMPTY_OBJECT","defaultConfigPerViewType","list","grid","mediaField","PagePages","view","setView","type","filters","search","status","page","perPage","sort","field","direction","visibleFilters","hiddenFields","layout","records","statuses","postStatuses","Object","fromEntries","map","slug","name","queryArgs","per_page","_embed","order","orderby","pages","isResolving","isLoadingPages","totalItems","totalPages","authors","who","paginationInfo","fields","id","header","getValue","item","featured_media","render","currentView","createElement","className","size","enableSorting","title","rendered","spacing","as","level","params","postId","postType","canvas","maxWidth","sortingFn","enableHiding","_embedded","author","href","elements","value","label","_postStatuses$item$st","entries","filter","includes","date","formattedDate","formats","datetimeAbbreviated","trashPostAction","actions","onChangeView","viewUpdater","updatedView","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 } from '@wordpress/element';\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport Link from '../routes/link';\nimport { DataViews } from '../dataviews';\nimport useTrashPostAction from '../actions/trash-post';\nimport Media from '../media';\n\nconst EMPTY_ARRAY = [];\nconst EMPTY_OBJECT = {};\nconst defaultConfigPerViewType = {\n\tlist: {},\n\tgrid: {\n\t\tmediaField: 'featured-image',\n\t},\n};\n\nexport default function PagePages() {\n\tconst [ view, setView ] = useState( {\n\t\ttype: 'list',\n\t\tfilters: {\n\t\t\tsearch: '',\n\t\t\tstatus: 'publish, draft',\n\t\t},\n\t\tpage: 1,\n\t\tperPage: 5,\n\t\tsort: {\n\t\t\tfield: 'date',\n\t\t\tdirection: 'desc',\n\t\t},\n\t\tvisibleFilters: [ 'search', 'author', 'status' ],\n\t\t// All fields are visible by default, so it's\n\t\t// better to keep track of the hidden ones.\n\t\thiddenFields: [ 'date', 'featured-image' ],\n\t\tlayout: {},\n\t} );\n\t// Request post statuses to get the proper labels.\n\tconst { records: statuses } = useEntityRecords( 'root', 'status' );\n\tconst postStatuses = useMemo(\n\t\t() =>\n\t\t\tstatuses === null\n\t\t\t\t? EMPTY_OBJECT\n\t\t\t\t: Object.fromEntries(\n\t\t\t\t\t\tstatuses.map( ( { slug, name } ) => [ slug, name ] )\n\t\t\t\t ),\n\t\t[ statuses ]\n\t);\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\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\t\twho: 'authors',\n\t} );\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\tfilters: [ { id: 'search', type: 'search' } ],\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: [ { id: 'author', type: 'enumeration' } ],\n\t\t\t\telements: [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: '',\n\t\t\t\t\t\tlabel: __( 'All' ),\n\t\t\t\t\t},\n\t\t\t\t\t...( authors?.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\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\tpostStatuses[ item.status ] ?? item.status,\n\t\t\t\tfilters: [ { type: 'enumeration', id: 'status' } ],\n\t\t\t\telements: [\n\t\t\t\t\t{ label: __( 'All' ), value: 'publish,draft' },\n\t\t\t\t\t...( ( postStatuses &&\n\t\t\t\t\t\tObject.entries( postStatuses )\n\t\t\t\t\t\t\t.filter( ( [ slug ] ) =>\n\t\t\t\t\t\t\t\t[ 'publish', 'draft' ].includes( slug )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.map( ( [ slug, name ] ) => ( {\n\t\t\t\t\t\t\t\tvalue: slug,\n\t\t\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t\t\t} ) ) ) ||\n\t\t\t\t\t\t[] ),\n\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[ postStatuses, authors ]\n\t);\n\n\tconst trashPostAction = useTrashPostAction();\n\tconst actions = useMemo( () => [ trashPostAction ], [ trashPostAction ] );\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 ]\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,82 @@
|
|
|
1
|
+
import { createElement, Fragment } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* WordPress dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { MenuItem, __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';
|
|
6
|
+
import { store as coreStore } from '@wordpress/core-data';
|
|
7
|
+
import { useDispatch } from '@wordpress/data';
|
|
8
|
+
import { useState } from '@wordpress/element';
|
|
9
|
+
import { decodeEntities } from '@wordpress/html-entities';
|
|
10
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
11
|
+
import { store as noticesStore } from '@wordpress/notices';
|
|
12
|
+
import { privateApis as routerPrivateApis } from '@wordpress/router';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Internal dependencies
|
|
16
|
+
*/
|
|
17
|
+
import { unlock } from '../../lock-unlock';
|
|
18
|
+
import { PATTERN_TYPES, PATTERN_DEFAULT_CATEGORY } from '../../utils/constants';
|
|
19
|
+
const {
|
|
20
|
+
useHistory
|
|
21
|
+
} = unlock(routerPrivateApis);
|
|
22
|
+
export default function DeleteCategoryMenuItem({
|
|
23
|
+
category,
|
|
24
|
+
onClose
|
|
25
|
+
}) {
|
|
26
|
+
const [isModalOpen, setIsModalOpen] = useState(false);
|
|
27
|
+
const history = useHistory();
|
|
28
|
+
const {
|
|
29
|
+
createSuccessNotice,
|
|
30
|
+
createErrorNotice
|
|
31
|
+
} = useDispatch(noticesStore);
|
|
32
|
+
const {
|
|
33
|
+
deleteEntityRecord,
|
|
34
|
+
invalidateResolution
|
|
35
|
+
} = useDispatch(coreStore);
|
|
36
|
+
const onDelete = async () => {
|
|
37
|
+
try {
|
|
38
|
+
await deleteEntityRecord('taxonomy', 'wp_pattern_category', category.id, {
|
|
39
|
+
force: true
|
|
40
|
+
}, {
|
|
41
|
+
throwOnError: true
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// Prevent the need to refresh the page to get up-to-date categories
|
|
45
|
+
// and pattern categorization.
|
|
46
|
+
invalidateResolution('getUserPatternCategories');
|
|
47
|
+
invalidateResolution('getEntityRecords', ['postType', PATTERN_TYPES.user, {
|
|
48
|
+
per_page: -1
|
|
49
|
+
}]);
|
|
50
|
+
createSuccessNotice(sprintf( /* translators: The pattern category's name */
|
|
51
|
+
__('"%s" deleted.'), category.label), {
|
|
52
|
+
type: 'snackbar',
|
|
53
|
+
id: 'pattern-category-delete'
|
|
54
|
+
});
|
|
55
|
+
onClose?.();
|
|
56
|
+
history.push({
|
|
57
|
+
path: `/patterns`,
|
|
58
|
+
categoryType: PATTERN_TYPES.theme,
|
|
59
|
+
categoryId: PATTERN_DEFAULT_CATEGORY
|
|
60
|
+
});
|
|
61
|
+
} catch (error) {
|
|
62
|
+
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : __('An error occurred while deleting the pattern category.');
|
|
63
|
+
createErrorNotice(errorMessage, {
|
|
64
|
+
type: 'snackbar',
|
|
65
|
+
id: 'pattern-category-delete'
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
return createElement(Fragment, null, createElement(MenuItem, {
|
|
70
|
+
isDestructive: true,
|
|
71
|
+
onClick: () => setIsModalOpen(true)
|
|
72
|
+
}, __('Delete')), createElement(ConfirmDialog, {
|
|
73
|
+
isOpen: isModalOpen,
|
|
74
|
+
onConfirm: onDelete,
|
|
75
|
+
onCancel: () => setIsModalOpen(false),
|
|
76
|
+
confirmButtonText: __('Delete'),
|
|
77
|
+
className: "edit-site-patterns__delete-modal"
|
|
78
|
+
}, sprintf(
|
|
79
|
+
// translators: %s: The pattern category's name.
|
|
80
|
+
__('Are you sure you want to delete the category "%s"? The patterns will not be deleted.'), decodeEntities(category.label))));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=delete-category-menu-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MenuItem","__experimentalConfirmDialog","ConfirmDialog","store","coreStore","useDispatch","useState","decodeEntities","__","sprintf","noticesStore","privateApis","routerPrivateApis","unlock","PATTERN_TYPES","PATTERN_DEFAULT_CATEGORY","useHistory","DeleteCategoryMenuItem","category","onClose","isModalOpen","setIsModalOpen","history","createSuccessNotice","createErrorNotice","deleteEntityRecord","invalidateResolution","onDelete","id","force","throwOnError","user","per_page","label","type","push","path","categoryType","theme","categoryId","error","errorMessage","message","code","createElement","Fragment","isDestructive","onClick","isOpen","onConfirm","onCancel","confirmButtonText","className"],"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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"}
|