@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.
- package/CHANGELOG.md +2 -0
- package/build/components/actions/index.js +121 -0
- package/build/components/actions/index.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/block-editor/use-site-editor-settings.js +12 -4
- package/build/components/block-editor/use-site-editor-settings.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/context.js +15 -0
- package/build/components/dataviews/context.js.map +1 -0
- package/build/components/dataviews/dataviews.js +50 -33
- package/build/components/dataviews/dataviews.js.map +1 -1
- package/build/components/dataviews/filters.js +74 -0
- package/build/components/dataviews/filters.js.map +1 -0
- package/build/components/dataviews/in-filter.js +49 -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/item-actions.js +62 -0
- package/build/components/dataviews/item-actions.js.map +1 -0
- package/build/components/dataviews/pagination.js +74 -45
- package/build/components/dataviews/pagination.js.map +1 -1
- package/build/components/dataviews/{text-filter.js → search.js} +21 -15
- package/build/components/dataviews/search.js.map +1 -0
- 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 +2 -10
- 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/default-views.js +60 -0
- package/build/components/page-pages/default-views.js.map +1 -0
- package/build/components/page-pages/index.js +174 -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/index.js +3 -1
- package/build/components/sidebar/index.js.map +1 -1
- package/build/components/sidebar-dataviews/index.js +72 -0
- package/build/components/sidebar-dataviews/index.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 +50 -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/index.js +108 -0
- package/build-module/components/actions/index.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/block-editor/use-site-editor-settings.js +12 -4
- package/build-module/components/block-editor/use-site-editor-settings.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/context.js +7 -0
- package/build-module/components/dataviews/context.js.map +1 -0
- package/build-module/components/dataviews/dataviews.js +49 -32
- package/build-module/components/dataviews/dataviews.js.map +1 -1
- package/build-module/components/dataviews/filters.js +66 -0
- package/build-module/components/dataviews/filters.js.map +1 -0
- package/build-module/components/dataviews/in-filter.js +41 -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/item-actions.js +55 -0
- package/build-module/components/dataviews/item-actions.js.map +1 -0
- package/build-module/components/dataviews/pagination.js +73 -46
- package/build-module/components/dataviews/pagination.js.map +1 -1
- package/build-module/components/dataviews/search.js +42 -0
- package/build-module/components/dataviews/search.js.map +1 -0
- 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 +2 -10
- 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/default-views.js +53 -0
- package/build-module/components/page-pages/default-views.js.map +1 -0
- package/build-module/components/page-pages/index.js +175 -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/index.js +3 -1
- package/build-module/components/sidebar/index.js.map +1 -1
- package/build-module/components/sidebar-dataviews/index.js +64 -0
- package/build-module/components/sidebar-dataviews/index.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 +51 -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 +48 -11
- package/build-style/style.css +48 -11
- package/package.json +40 -40
- package/src/components/actions/index.js +123 -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/block-editor/use-site-editor-settings.js +21 -13
- package/src/components/create-template-part-modal/index.js +9 -5
- package/src/components/dataviews/README.md +194 -0
- package/src/components/dataviews/context.js +7 -0
- package/src/components/dataviews/dataviews.js +55 -34
- package/src/components/dataviews/filters.js +75 -0
- package/src/components/dataviews/in-filter.js +45 -0
- package/src/components/dataviews/index.js +0 -1
- package/src/components/dataviews/item-actions.js +69 -0
- package/src/components/dataviews/pagination.js +80 -59
- package/src/components/dataviews/search.js +41 -0
- package/src/components/dataviews/style.scss +18 -3
- package/src/components/dataviews/view-actions.js +108 -63
- package/src/components/dataviews/view-grid.js +65 -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 +19 -11
- package/src/components/global-styles/screen-block.js +2 -9
- 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/default-views.js +58 -0
- package/src/components/page-pages/index.js +181 -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/index.js +2 -0
- package/src/components/sidebar-dataviews/index.js +65 -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 +43 -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/components/dataviews/text-filter.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/build-module/components/dataviews/text-filter.js +0 -36
- package/build-module/components/dataviews/text-filter.js.map +0 -1
- package/src/components/dataviews/list-view.js +0 -106
- package/src/components/dataviews/text-filter.js +0 -37
|
@@ -2,7 +2,7 @@ import { createElement, Fragment } from "react";
|
|
|
2
2
|
/**
|
|
3
3
|
* WordPress dependencies
|
|
4
4
|
*/
|
|
5
|
-
import { Button, Icon,
|
|
5
|
+
import { Button, Icon, privateApis as componentsPrivateApis } from '@wordpress/components';
|
|
6
6
|
import { chevronRightSmall, check, blockTable, chevronDown, arrowUp, arrowDown } from '@wordpress/icons';
|
|
7
7
|
import { __ } from '@wordpress/i18n';
|
|
8
8
|
|
|
@@ -17,50 +17,69 @@ const {
|
|
|
17
17
|
DropdownSubMenuV2,
|
|
18
18
|
DropdownSubMenuTriggerV2
|
|
19
19
|
} = unlock(componentsPrivateApis);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
const availableViews = [{
|
|
21
|
+
id: 'list',
|
|
22
|
+
label: __('List')
|
|
23
|
+
}, {
|
|
24
|
+
id: 'grid',
|
|
25
|
+
label: __('Grid')
|
|
26
|
+
}];
|
|
27
|
+
function ViewTypeMenu({
|
|
28
|
+
view,
|
|
29
|
+
onChangeView
|
|
23
30
|
}) {
|
|
24
|
-
const
|
|
25
|
-
return createElement(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
31
|
+
const activeView = availableViews.find(v => view.type === v.id);
|
|
32
|
+
return createElement(DropdownSubMenuV2, {
|
|
33
|
+
trigger: createElement(DropdownSubMenuTriggerV2, {
|
|
34
|
+
suffix: createElement(Fragment, null, activeView.label, createElement(Icon, {
|
|
35
|
+
icon: chevronRightSmall
|
|
36
|
+
}))
|
|
37
|
+
}, __('Layout'))
|
|
38
|
+
}, availableViews.map(availableView => {
|
|
39
|
+
return createElement(DropdownMenuItemV2, {
|
|
40
|
+
key: availableView.id,
|
|
41
|
+
prefix: availableView.id === view.type && createElement(Icon, {
|
|
42
|
+
icon: check
|
|
43
|
+
}),
|
|
44
|
+
onSelect: event => {
|
|
45
|
+
// We need to handle this on DropDown component probably..
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
onChangeView({
|
|
48
|
+
...view,
|
|
49
|
+
type: availableView.id
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
// TODO: check about role and a11y.
|
|
53
|
+
,
|
|
54
|
+
role: "menuitemcheckbox"
|
|
55
|
+
}, availableView.label);
|
|
56
|
+
}));
|
|
43
57
|
}
|
|
58
|
+
const PAGE_SIZE_VALUES = [5, 20, 50];
|
|
44
59
|
function PageSizeMenu({
|
|
45
|
-
|
|
60
|
+
view,
|
|
61
|
+
onChangeView
|
|
46
62
|
}) {
|
|
47
|
-
const currenPageSize = dataView.getState().pagination.pageSize;
|
|
48
63
|
return createElement(DropdownSubMenuV2, {
|
|
49
64
|
trigger: createElement(DropdownSubMenuTriggerV2, {
|
|
50
|
-
suffix: createElement(Fragment, null,
|
|
65
|
+
suffix: createElement(Fragment, null, view.perPage, createElement(Icon, {
|
|
51
66
|
icon: chevronRightSmall
|
|
52
67
|
}))
|
|
53
68
|
}, __('Rows per page'))
|
|
54
69
|
}, PAGE_SIZE_VALUES.map(size => {
|
|
55
70
|
return createElement(DropdownMenuItemV2, {
|
|
56
71
|
key: size,
|
|
57
|
-
prefix:
|
|
72
|
+
prefix: view.perPage === size && createElement(Icon, {
|
|
58
73
|
icon: check
|
|
59
74
|
}),
|
|
60
75
|
onSelect: event => {
|
|
61
76
|
// We need to handle this on DropDown component probably..
|
|
62
77
|
event.preventDefault();
|
|
63
|
-
|
|
78
|
+
onChangeView({
|
|
79
|
+
...view,
|
|
80
|
+
perPage: size,
|
|
81
|
+
page: 1
|
|
82
|
+
});
|
|
64
83
|
}
|
|
65
84
|
// TODO: check about role and a11y.
|
|
66
85
|
,
|
|
@@ -69,10 +88,12 @@ function PageSizeMenu({
|
|
|
69
88
|
}));
|
|
70
89
|
}
|
|
71
90
|
function FieldsVisibilityMenu({
|
|
72
|
-
|
|
91
|
+
view,
|
|
92
|
+
onChangeView,
|
|
93
|
+
fields
|
|
73
94
|
}) {
|
|
74
|
-
const
|
|
75
|
-
if (!
|
|
95
|
+
const hidableFields = fields.filter(field => field.enableHiding !== false);
|
|
96
|
+
if (!hidableFields?.length) {
|
|
76
97
|
return null;
|
|
77
98
|
}
|
|
78
99
|
return createElement(DropdownSubMenuV2, {
|
|
@@ -81,18 +102,21 @@ function FieldsVisibilityMenu({
|
|
|
81
102
|
icon: chevronRightSmall
|
|
82
103
|
})
|
|
83
104
|
}, __('Fields'))
|
|
84
|
-
},
|
|
105
|
+
}, hidableFields?.map(field => {
|
|
85
106
|
return createElement(DropdownMenuItemV2, {
|
|
86
107
|
key: field.id,
|
|
87
|
-
prefix: field.
|
|
108
|
+
prefix: !view.hiddenFields?.includes(field.id) && createElement(Icon, {
|
|
88
109
|
icon: check
|
|
89
110
|
}),
|
|
90
111
|
onSelect: event => {
|
|
91
112
|
event.preventDefault();
|
|
92
|
-
|
|
113
|
+
onChangeView({
|
|
114
|
+
...view,
|
|
115
|
+
hiddenFields: view.hiddenFields?.includes(field.id) ? view.hiddenFields.filter(id => id !== field.id) : [...view.hiddenFields, field.id]
|
|
116
|
+
});
|
|
93
117
|
},
|
|
94
118
|
role: "menuitemcheckbox"
|
|
95
|
-
}, field.
|
|
119
|
+
}, field.header);
|
|
96
120
|
}));
|
|
97
121
|
}
|
|
98
122
|
|
|
@@ -108,47 +132,56 @@ const sortingItemsInfo = {
|
|
|
108
132
|
}
|
|
109
133
|
};
|
|
110
134
|
function SortMenu({
|
|
111
|
-
|
|
135
|
+
fields,
|
|
136
|
+
view,
|
|
137
|
+
onChangeView
|
|
112
138
|
}) {
|
|
113
|
-
const sortableFields =
|
|
139
|
+
const sortableFields = fields.filter(field => field.enableSorting !== false);
|
|
114
140
|
if (!sortableFields?.length) {
|
|
115
141
|
return null;
|
|
116
142
|
}
|
|
117
|
-
const currentSortedField =
|
|
143
|
+
const currentSortedField = fields.find(field => field.id === view.sort?.field);
|
|
118
144
|
return createElement(DropdownSubMenuV2, {
|
|
119
145
|
trigger: createElement(DropdownSubMenuTriggerV2, {
|
|
120
|
-
suffix: createElement(Fragment, null, currentSortedField?.
|
|
146
|
+
suffix: createElement(Fragment, null, currentSortedField?.header, createElement(Icon, {
|
|
121
147
|
icon: chevronRightSmall
|
|
122
148
|
}))
|
|
123
149
|
}, __('Sort by'))
|
|
124
150
|
}, sortableFields?.map(field => {
|
|
125
|
-
const sortedDirection =
|
|
151
|
+
const sortedDirection = view.sort?.direction;
|
|
126
152
|
return createElement(DropdownSubMenuV2, {
|
|
127
153
|
key: field.id,
|
|
128
154
|
trigger: createElement(DropdownSubMenuTriggerV2, {
|
|
129
155
|
suffix: createElement(Icon, {
|
|
130
156
|
icon: chevronRightSmall
|
|
131
157
|
})
|
|
132
|
-
}, field.
|
|
158
|
+
}, field.header),
|
|
133
159
|
side: "left"
|
|
134
160
|
}, Object.entries(sortingItemsInfo).map(([direction, info]) => {
|
|
161
|
+
const isActive = currentSortedField && sortedDirection === direction && field.id === currentSortedField.id;
|
|
135
162
|
return createElement(DropdownMenuItemV2, {
|
|
136
163
|
key: direction,
|
|
137
164
|
prefix: createElement(Icon, {
|
|
138
165
|
icon: info.icon
|
|
139
166
|
}),
|
|
140
|
-
suffix:
|
|
167
|
+
suffix: isActive && createElement(Icon, {
|
|
141
168
|
icon: check
|
|
142
169
|
}),
|
|
143
170
|
onSelect: event => {
|
|
144
171
|
event.preventDefault();
|
|
145
172
|
if (sortedDirection === direction) {
|
|
146
|
-
|
|
173
|
+
onChangeView({
|
|
174
|
+
...view,
|
|
175
|
+
sort: undefined
|
|
176
|
+
});
|
|
147
177
|
} else {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
178
|
+
onChangeView({
|
|
179
|
+
...view,
|
|
180
|
+
sort: {
|
|
181
|
+
field: field.id,
|
|
182
|
+
direction
|
|
183
|
+
}
|
|
184
|
+
});
|
|
152
185
|
}
|
|
153
186
|
}
|
|
154
187
|
}, info.label);
|
|
@@ -156,24 +189,32 @@ function SortMenu({
|
|
|
156
189
|
}));
|
|
157
190
|
}
|
|
158
191
|
export default function ViewActions({
|
|
159
|
-
|
|
160
|
-
|
|
192
|
+
fields,
|
|
193
|
+
view,
|
|
194
|
+
onChangeView
|
|
161
195
|
}) {
|
|
162
196
|
return createElement(DropdownMenuV2, {
|
|
163
197
|
label: __('Actions'),
|
|
164
|
-
className: className,
|
|
165
198
|
trigger: createElement(Button, {
|
|
166
199
|
variant: "tertiary",
|
|
167
200
|
icon: blockTable
|
|
168
201
|
}, __('View'), createElement(Icon, {
|
|
169
202
|
icon: chevronDown
|
|
170
203
|
}))
|
|
171
|
-
}, createElement(DropdownMenuGroupV2, null, createElement(
|
|
172
|
-
|
|
204
|
+
}, createElement(DropdownMenuGroupV2, null, createElement(ViewTypeMenu, {
|
|
205
|
+
view: view,
|
|
206
|
+
onChangeView: onChangeView
|
|
207
|
+
}), createElement(SortMenu, {
|
|
208
|
+
fields: fields,
|
|
209
|
+
view: view,
|
|
210
|
+
onChangeView: onChangeView
|
|
173
211
|
}), createElement(FieldsVisibilityMenu, {
|
|
174
|
-
|
|
212
|
+
fields: fields,
|
|
213
|
+
view: view,
|
|
214
|
+
onChangeView: onChangeView
|
|
175
215
|
}), createElement(PageSizeMenu, {
|
|
176
|
-
|
|
216
|
+
view: view,
|
|
217
|
+
onChangeView: onChangeView
|
|
177
218
|
})));
|
|
178
219
|
}
|
|
179
220
|
//# sourceMappingURL=view-actions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Button","Icon","SelectControl","privateApis","componentsPrivateApis","__experimentalInputControlPrefixWrapper","InputControlPrefixWrapper","chevronRightSmall","check","blockTable","chevronDown","arrowUp","arrowDown","__","unlock","DropdownMenuV2","DropdownMenuGroupV2","DropdownMenuItemV2","DropdownSubMenuV2","DropdownSubMenuTriggerV2","PAGE_SIZE_VALUES","PageSizeControl","dataView","label","createElement","__nextHasNoMarginBottom","hideLabelFromVision","prefix","as","className","value","getState","pagination","pageSize","options","map","onChange","setPageSize","PageSizeMenu","currenPageSize","trigger","suffix","Fragment","icon","size","key","onSelect","event","preventDefault","role","FieldsVisibilityMenu","hideableFields","getAllColumns","filter","columnn","getCanHide","length","field","id","getIsVisible","getToggleVisibilityHandler","columnDef","header","sortingItemsInfo","asc","desc","SortMenu","sortableFields","getCanSort","currentSortedField","find","getIsSorted","sortedDirection","side","Object","entries","direction","info","resetSorting","setSorting","ViewActions","variant"],"sources":["@wordpress/edit-site/src/components/dataviews/view-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tIcon,\n\tSelectControl,\n\tprivateApis as componentsPrivateApis,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport {\n\tchevronRightSmall,\n\tcheck,\n\tblockTable,\n\tchevronDown,\n\tarrowUp,\n\tarrowDown,\n} from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst {\n\tDropdownMenuV2,\n\tDropdownMenuGroupV2,\n\tDropdownMenuItemV2,\n\tDropdownSubMenuV2,\n\tDropdownSubMenuTriggerV2,\n} = unlock( componentsPrivateApis );\n\nexport const PAGE_SIZE_VALUES = [ 5, 20, 50 ];\n\nexport function PageSizeControl( { dataView } ) {\n\tconst label = __( 'Rows per page:' );\n\treturn (\n\t\t<SelectControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel={ label }\n\t\t\thideLabelFromVision\n\t\t\t// TODO: This should probably use a label based on the wanted design\n\t\t\t// and we could remove InputControlPrefixWrapper usage.\n\t\t\tprefix={\n\t\t\t\t<InputControlPrefixWrapper\n\t\t\t\t\tas=\"span\"\n\t\t\t\t\tclassName=\"dataviews__per-page-control-prefix\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t}\n\t\t\tvalue={ dataView.getState().pagination.pageSize }\n\t\t\toptions={ PAGE_SIZE_VALUES.map( ( pageSize ) => ( {\n\t\t\t\tvalue: pageSize,\n\t\t\t\tlabel: pageSize,\n\t\t\t} ) ) }\n\t\t\tonChange={ ( value ) => dataView.setPageSize( +value ) }\n\t\t/>\n\t);\n}\n\nfunction PageSizeMenu( { dataView } ) {\n\tconst currenPageSize = dataView.getState().pagination.pageSize;\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ currenPageSize }\n\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ /* TODO: probably label per view type. */ }\n\t\t\t\t\t{ __( 'Rows per page' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t}\n\t\t>\n\t\t\t{ PAGE_SIZE_VALUES.map( ( size ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemV2\n\t\t\t\t\t\tkey={ size }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\tcurrenPageSize === size && <Icon icon={ check } />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t// We need to handle this on DropDown component probably..\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tdataView.setPageSize( size );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t// TODO: check about role and a11y.\n\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ size }\n\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\nfunction FieldsVisibilityMenu( { dataView } ) {\n\tconst hideableFields = dataView\n\t\t.getAllColumns()\n\t\t.filter( ( columnn ) => columnn.getCanHide() );\n\tif ( ! hideableFields?.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={ <Icon icon={ chevronRightSmall } /> }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Fields' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t}\n\t\t>\n\t\t\t{ hideableFields?.map( ( field ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemV2\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\tfield.getIsVisible() && <Icon icon={ check } />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tfield.getToggleVisibilityHandler()( event );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ field.columnDef.header }\n\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\n// This object is used to construct the sorting options per sortable field.\nconst sortingItemsInfo = {\n\tasc: { icon: arrowUp, label: __( 'Sort ascending' ) },\n\tdesc: { icon: arrowDown, label: __( 'Sort descending' ) },\n};\nfunction SortMenu( { dataView } ) {\n\tconst sortableFields = dataView\n\t\t.getAllColumns()\n\t\t.filter( ( columnn ) => columnn.getCanSort() );\n\tif ( ! sortableFields?.length ) {\n\t\treturn null;\n\t}\n\tconst currentSortedField = sortableFields.find( ( field ) =>\n\t\tfield.getIsSorted()\n\t);\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ currentSortedField?.columnDef.header }\n\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Sort by' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t}\n\t\t>\n\t\t\t{ sortableFields?.map( ( field ) => {\n\t\t\t\tconst sortedDirection = field.getIsSorted();\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownSubMenuV2\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\t\t\t\tsuffix={ <Icon icon={ chevronRightSmall } /> }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ field.columnDef.header }\n\t\t\t\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tside=\"left\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ Object.entries( sortingItemsInfo ).map(\n\t\t\t\t\t\t\t( [ direction, info ] ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuItemV2\n\t\t\t\t\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ info.icon } /> }\n\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\tsortedDirection === direction && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tsortedDirection === direction\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tdataView.resetSorting();\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tdataView.setSorting( [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdesc:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdirection ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'desc',\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t] );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ info.label }\n\t\t\t\t\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownSubMenuV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\nexport default function ViewActions( { dataView, className } ) {\n\treturn (\n\t\t<DropdownMenuV2\n\t\t\tlabel={ __( 'Actions' ) }\n\t\t\tclassName={ className }\n\t\t\ttrigger={\n\t\t\t\t<Button variant=\"tertiary\" icon={ blockTable }>\n\t\t\t\t\t{ __( 'View' ) }\n\t\t\t\t\t<Icon icon={ chevronDown } />\n\t\t\t\t</Button>\n\t\t\t}\n\t\t>\n\t\t\t<DropdownMenuGroupV2>\n\t\t\t\t<SortMenu dataView={ dataView } />\n\t\t\t\t<FieldsVisibilityMenu dataView={ dataView } />\n\t\t\t\t<PageSizeMenu dataView={ dataView } />\n\t\t\t</DropdownMenuGroupV2>\n\t\t</DropdownMenuV2>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Button","Icon","privateApis","componentsPrivateApis","chevronRightSmall","check","blockTable","chevronDown","arrowUp","arrowDown","__","unlock","DropdownMenuV2","DropdownMenuGroupV2","DropdownMenuItemV2","DropdownSubMenuV2","DropdownSubMenuTriggerV2","availableViews","id","label","ViewTypeMenu","view","onChangeView","activeView","find","v","type","createElement","trigger","suffix","Fragment","icon","map","availableView","key","prefix","onSelect","event","preventDefault","role","PAGE_SIZE_VALUES","PageSizeMenu","perPage","size","page","FieldsVisibilityMenu","fields","hidableFields","filter","field","enableHiding","length","hiddenFields","includes","header","sortingItemsInfo","asc","desc","SortMenu","sortableFields","enableSorting","currentSortedField","sort","sortedDirection","direction","side","Object","entries","info","isActive","undefined","ViewActions","variant"],"sources":["@wordpress/edit-site/src/components/dataviews/view-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport {\n\tchevronRightSmall,\n\tcheck,\n\tblockTable,\n\tchevronDown,\n\tarrowUp,\n\tarrowDown,\n} from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst {\n\tDropdownMenuV2,\n\tDropdownMenuGroupV2,\n\tDropdownMenuItemV2,\n\tDropdownSubMenuV2,\n\tDropdownSubMenuTriggerV2,\n} = unlock( componentsPrivateApis );\n\nconst availableViews = [\n\t{\n\t\tid: 'list',\n\t\tlabel: __( 'List' ),\n\t},\n\t{\n\t\tid: 'grid',\n\t\tlabel: __( 'Grid' ),\n\t},\n];\n\nfunction ViewTypeMenu( { view, onChangeView } ) {\n\tconst activeView = availableViews.find( ( v ) => view.type === v.id );\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ activeView.label }\n\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Layout' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t}\n\t\t>\n\t\t\t{ availableViews.map( ( availableView ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemV2\n\t\t\t\t\t\tkey={ availableView.id }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\tavailableView.id === view.type && (\n\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t// We need to handle this on DropDown component probably..\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonChangeView( { ...view, type: availableView.id } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t// TODO: check about role and a11y.\n\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ availableView.label }\n\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\nconst PAGE_SIZE_VALUES = [ 5, 20, 50 ];\nfunction PageSizeMenu( { view, onChangeView } ) {\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ view.perPage }\n\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ /* TODO: probably label per view type. */ }\n\t\t\t\t\t{ __( 'Rows per page' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t}\n\t\t>\n\t\t\t{ PAGE_SIZE_VALUES.map( ( size ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemV2\n\t\t\t\t\t\tkey={ size }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\tview.perPage === size && <Icon icon={ check } />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t// We need to handle this on DropDown component probably..\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonChangeView( { ...view, perPage: size, page: 1 } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t// TODO: check about role and a11y.\n\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ size }\n\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\nfunction FieldsVisibilityMenu( { view, onChangeView, fields } ) {\n\tconst hidableFields = fields.filter(\n\t\t( field ) => field.enableHiding !== false\n\t);\n\tif ( ! hidableFields?.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={ <Icon icon={ chevronRightSmall } /> }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Fields' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t}\n\t\t>\n\t\t\t{ hidableFields?.map( ( field ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemV2\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t! view.hiddenFields?.includes( field.id ) && (\n\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\thiddenFields: view.hiddenFields?.includes(\n\t\t\t\t\t\t\t\t\tfield.id\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t? view.hiddenFields.filter(\n\t\t\t\t\t\t\t\t\t\t\t( id ) => id !== field.id\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: [ ...view.hiddenFields, field.id ],\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\n// This object is used to construct the sorting options per sortable field.\nconst sortingItemsInfo = {\n\tasc: { icon: arrowUp, label: __( 'Sort ascending' ) },\n\tdesc: { icon: arrowDown, label: __( 'Sort descending' ) },\n};\nfunction SortMenu( { fields, view, onChangeView } ) {\n\tconst sortableFields = fields.filter(\n\t\t( field ) => field.enableSorting !== false\n\t);\n\tif ( ! sortableFields?.length ) {\n\t\treturn null;\n\t}\n\tconst currentSortedField = fields.find(\n\t\t( field ) => field.id === view.sort?.field\n\t);\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ currentSortedField?.header }\n\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Sort by' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t}\n\t\t>\n\t\t\t{ sortableFields?.map( ( field ) => {\n\t\t\t\tconst sortedDirection = view.sort?.direction;\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownSubMenuV2\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\t\t\t\tsuffix={ <Icon icon={ chevronRightSmall } /> }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tside=\"left\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ Object.entries( sortingItemsInfo ).map(\n\t\t\t\t\t\t\t( [ direction, info ] ) => {\n\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\tcurrentSortedField &&\n\t\t\t\t\t\t\t\t\tsortedDirection === direction &&\n\t\t\t\t\t\t\t\t\tfield.id === currentSortedField.id;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuItemV2\n\t\t\t\t\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ info.icon } /> }\n\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\tisActive && <Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tsortedDirection === direction\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tsort: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ info.label }\n\t\t\t\t\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownSubMenuV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\nexport default function ViewActions( { fields, view, onChangeView } ) {\n\treturn (\n\t\t<DropdownMenuV2\n\t\t\tlabel={ __( 'Actions' ) }\n\t\t\ttrigger={\n\t\t\t\t<Button variant=\"tertiary\" icon={ blockTable }>\n\t\t\t\t\t{ __( 'View' ) }\n\t\t\t\t\t<Icon icon={ chevronDown } />\n\t\t\t\t</Button>\n\t\t\t}\n\t\t>\n\t\t\t<DropdownMenuGroupV2>\n\t\t\t\t<ViewTypeMenu view={ view } onChangeView={ onChangeView } />\n\t\t\t\t<SortMenu\n\t\t\t\t\tfields={ fields }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t/>\n\t\t\t\t<FieldsVisibilityMenu\n\t\t\t\t\tfields={ fields }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t/>\n\t\t\t\t<PageSizeMenu view={ view } onChangeView={ onChangeView } />\n\t\t\t</DropdownMenuGroupV2>\n\t\t</DropdownMenuV2>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { createElement } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* WordPress dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { __experimentalGrid as Grid, __experimentalHStack as HStack, __experimentalVStack as VStack, FlexBlock, Placeholder } from '@wordpress/components';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import ItemActions from './item-actions';
|
|
11
|
+
export function ViewGrid({
|
|
12
|
+
data,
|
|
13
|
+
fields,
|
|
14
|
+
view,
|
|
15
|
+
actions
|
|
16
|
+
}) {
|
|
17
|
+
const mediaField = fields.find(field => field.id === view.layout.mediaField);
|
|
18
|
+
const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && field.id !== view.layout.mediaField);
|
|
19
|
+
return createElement(Grid, {
|
|
20
|
+
gap: 8,
|
|
21
|
+
columns: 2,
|
|
22
|
+
alignment: "top"
|
|
23
|
+
}, data.map((item, index) => {
|
|
24
|
+
return createElement(VStack, {
|
|
25
|
+
key: index
|
|
26
|
+
}, createElement("div", {
|
|
27
|
+
className: "dataviews-view-grid__media"
|
|
28
|
+
}, mediaField?.render({
|
|
29
|
+
item,
|
|
30
|
+
view
|
|
31
|
+
}) || createElement(Placeholder, {
|
|
32
|
+
withIllustration: true,
|
|
33
|
+
style: {
|
|
34
|
+
width: '100%',
|
|
35
|
+
minHeight: '200px'
|
|
36
|
+
}
|
|
37
|
+
})), createElement(HStack, {
|
|
38
|
+
justify: "space-between",
|
|
39
|
+
alignment: "top"
|
|
40
|
+
}, createElement(FlexBlock, null, createElement(VStack, null, visibleFields.map(field => createElement("div", {
|
|
41
|
+
key: field.id
|
|
42
|
+
}, field.render({
|
|
43
|
+
item,
|
|
44
|
+
view
|
|
45
|
+
}))))), createElement(FlexBlock, null, createElement(ItemActions, {
|
|
46
|
+
item: item,
|
|
47
|
+
actions: actions
|
|
48
|
+
}))));
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=view-grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__experimentalGrid","Grid","__experimentalHStack","HStack","__experimentalVStack","VStack","FlexBlock","Placeholder","ItemActions","ViewGrid","data","fields","view","actions","mediaField","find","field","id","layout","visibleFields","filter","hiddenFields","includes","createElement","gap","columns","alignment","map","item","index","key","className","render","withIllustration","style","width","minHeight","justify"],"sources":["@wordpress/edit-site/src/components/dataviews/view-grid.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalGrid as Grid,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tFlexBlock,\n\tPlaceholder,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport ItemActions from './item-actions';\n\nexport function ViewGrid( { data, fields, view, actions } ) {\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout.mediaField\n\t);\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\tfield.id !== view.layout.mediaField\n\t);\n\treturn (\n\t\t<Grid gap={ 8 } columns={ 2 } alignment=\"top\">\n\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<VStack key={ index }>\n\t\t\t\t\t\t<div className=\"dataviews-view-grid__media\">\n\t\t\t\t\t\t\t{ mediaField?.render( { item, view } ) || (\n\t\t\t\t\t\t\t\t<Placeholder\n\t\t\t\t\t\t\t\t\twithIllustration\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\t\tminHeight: '200px',\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) }\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<HStack justify=\"space-between\" alignment=\"top\">\n\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t<VStack>\n\t\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t\t<div key={ field.id }>\n\t\t\t\t\t\t\t\t\t\t\t{ field.render( { item, view } ) }\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</VStack>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Grid>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,kBAAkB,IAAIC,IAAI,EAC1BC,oBAAoB,IAAIC,MAAM,EAC9BC,oBAAoB,IAAIC,MAAM,EAC9BC,SAAS,EACTC,WAAW,QACL,uBAAuB;;AAE9B;AACA;AACA;AACA,OAAOC,WAAW,MAAM,gBAAgB;AAExC,OAAO,SAASC,QAAQA,CAAE;EAAEC,IAAI;EAAEC,MAAM;EAAEC,IAAI;EAAEC;AAAQ,CAAC,EAAG;EAC3D,MAAMC,UAAU,GAAGH,MAAM,CAACI,IAAI,CAC3BC,KAAK,IAAMA,KAAK,CAACC,EAAE,KAAKL,IAAI,CAACM,MAAM,CAACJ,UACvC,CAAC;EACD,MAAMK,aAAa,GAAGR,MAAM,CAACS,MAAM,CAChCJ,KAAK,IACN,CAAEJ,IAAI,CAACS,YAAY,CAACC,QAAQ,CAAEN,KAAK,CAACC,EAAG,CAAC,IACxCD,KAAK,CAACC,EAAE,KAAKL,IAAI,CAACM,MAAM,CAACJ,UAC3B,CAAC;EACD,OACCS,aAAA,CAACtB,IAAI;IAACuB,GAAG,EAAG,CAAG;IAACC,OAAO,EAAG,CAAG;IAACC,SAAS,EAAC;EAAK,GAC1ChB,IAAI,CAACiB,GAAG,CAAE,CAAEC,IAAI,EAAEC,KAAK,KAAM;IAC9B,OACCN,aAAA,CAAClB,MAAM;MAACyB,GAAG,EAAGD;IAAO,GACpBN,aAAA;MAAKQ,SAAS,EAAC;IAA4B,GACxCjB,UAAU,EAAEkB,MAAM,CAAE;MAAEJ,IAAI;MAAEhB;IAAK,CAAE,CAAC,IACrCW,aAAA,CAAChB,WAAW;MACX0B,gBAAgB;MAChBC,KAAK,EAAG;QACPC,KAAK,EAAE,MAAM;QACbC,SAAS,EAAE;MACZ;IAAG,CACH,CAEE,CAAC,EAENb,aAAA,CAACpB,MAAM;MAACkC,OAAO,EAAC,eAAe;MAACX,SAAS,EAAC;IAAK,GAC9CH,aAAA,CAACjB,SAAS,QACTiB,aAAA,CAAClB,MAAM,QACJc,aAAa,CAACQ,GAAG,CAAIX,KAAK,IAC3BO,aAAA;MAAKO,GAAG,EAAGd,KAAK,CAACC;IAAI,GAClBD,KAAK,CAACgB,MAAM,CAAE;MAAEJ,IAAI;MAAEhB;IAAK,CAAE,CAC3B,CACJ,CACK,CACE,CAAC,EACZW,aAAA,CAACjB,SAAS,QACTiB,aAAA,CAACf,WAAW;MACXoB,IAAI,EAAGA,IAAM;MACbf,OAAO,EAAGA;IAAS,CACnB,CACS,CACJ,CACD,CAAC;EAEX,CAAE,CACG,CAAC;AAET"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { createElement } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* External dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { getCoreRowModel, getFilteredRowModel, getSortedRowModel, getPaginationRowModel, useReactTable, flexRender } from '@tanstack/react-table';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* WordPress dependencies
|
|
9
|
+
*/
|
|
10
|
+
import { __ } from '@wordpress/i18n';
|
|
11
|
+
import { chevronDown, chevronUp, unseen, check, arrowUp, arrowDown } from '@wordpress/icons';
|
|
12
|
+
import { Button, Icon, privateApis as componentsPrivateApis, VisuallyHidden } from '@wordpress/components';
|
|
13
|
+
import { useMemo, Children, Fragment } from '@wordpress/element';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Internal dependencies
|
|
17
|
+
*/
|
|
18
|
+
import { unlock } from '../../lock-unlock';
|
|
19
|
+
import ItemActions from './item-actions';
|
|
20
|
+
const {
|
|
21
|
+
DropdownMenuV2,
|
|
22
|
+
DropdownMenuGroupV2,
|
|
23
|
+
DropdownMenuItemV2,
|
|
24
|
+
DropdownMenuSeparatorV2
|
|
25
|
+
} = unlock(componentsPrivateApis);
|
|
26
|
+
const EMPTY_OBJECT = {};
|
|
27
|
+
const sortingItemsInfo = {
|
|
28
|
+
asc: {
|
|
29
|
+
icon: arrowUp,
|
|
30
|
+
label: __('Sort ascending')
|
|
31
|
+
},
|
|
32
|
+
desc: {
|
|
33
|
+
icon: arrowDown,
|
|
34
|
+
label: __('Sort descending')
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const sortIcons = {
|
|
38
|
+
asc: chevronUp,
|
|
39
|
+
desc: chevronDown
|
|
40
|
+
};
|
|
41
|
+
function HeaderMenu({
|
|
42
|
+
dataView,
|
|
43
|
+
header
|
|
44
|
+
}) {
|
|
45
|
+
if (header.isPlaceholder) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
const text = flexRender(header.column.columnDef.header, header.getContext());
|
|
49
|
+
const isSortable = !!header.column.getCanSort();
|
|
50
|
+
const isHidable = !!header.column.getCanHide();
|
|
51
|
+
if (!isSortable && !isHidable) {
|
|
52
|
+
return text;
|
|
53
|
+
}
|
|
54
|
+
const sortedDirection = header.column.getIsSorted();
|
|
55
|
+
return createElement(DropdownMenuV2, {
|
|
56
|
+
align: "start",
|
|
57
|
+
trigger: createElement(Button, {
|
|
58
|
+
icon: sortIcons[header.column.getIsSorted()],
|
|
59
|
+
iconPosition: "right",
|
|
60
|
+
text: text,
|
|
61
|
+
style: {
|
|
62
|
+
padding: 0
|
|
63
|
+
}
|
|
64
|
+
})
|
|
65
|
+
}, createElement(WithSeparators, null, isSortable && createElement(DropdownMenuGroupV2, null, Object.entries(sortingItemsInfo).map(([direction, info]) => createElement(DropdownMenuItemV2, {
|
|
66
|
+
key: direction,
|
|
67
|
+
prefix: createElement(Icon, {
|
|
68
|
+
icon: info.icon
|
|
69
|
+
}),
|
|
70
|
+
suffix: sortedDirection === direction && createElement(Icon, {
|
|
71
|
+
icon: check
|
|
72
|
+
}),
|
|
73
|
+
onSelect: event => {
|
|
74
|
+
event.preventDefault();
|
|
75
|
+
if (sortedDirection === direction) {
|
|
76
|
+
dataView.resetSorting();
|
|
77
|
+
} else {
|
|
78
|
+
dataView.setSorting([{
|
|
79
|
+
id: header.column.id,
|
|
80
|
+
desc: direction === 'desc'
|
|
81
|
+
}]);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}, info.label))), isHidable && createElement(DropdownMenuItemV2, {
|
|
85
|
+
prefix: createElement(Icon, {
|
|
86
|
+
icon: unseen
|
|
87
|
+
}),
|
|
88
|
+
onSelect: event => {
|
|
89
|
+
event.preventDefault();
|
|
90
|
+
header.column.getToggleVisibilityHandler()(event);
|
|
91
|
+
}
|
|
92
|
+
}, __('Hide'))));
|
|
93
|
+
}
|
|
94
|
+
function WithSeparators({
|
|
95
|
+
children
|
|
96
|
+
}) {
|
|
97
|
+
return Children.toArray(children).filter(Boolean).map((child, i) => createElement(Fragment, {
|
|
98
|
+
key: i
|
|
99
|
+
}, i > 0 && createElement(DropdownMenuSeparatorV2, null), child));
|
|
100
|
+
}
|
|
101
|
+
function ViewList({
|
|
102
|
+
view,
|
|
103
|
+
onChangeView,
|
|
104
|
+
fields,
|
|
105
|
+
actions,
|
|
106
|
+
data,
|
|
107
|
+
isLoading = false,
|
|
108
|
+
paginationInfo
|
|
109
|
+
}) {
|
|
110
|
+
const columns = useMemo(() => {
|
|
111
|
+
const _columns = fields.map(field => {
|
|
112
|
+
const {
|
|
113
|
+
render,
|
|
114
|
+
getValue,
|
|
115
|
+
...column
|
|
116
|
+
} = field;
|
|
117
|
+
column.cell = props => render({
|
|
118
|
+
item: props.row.original,
|
|
119
|
+
view
|
|
120
|
+
});
|
|
121
|
+
if (getValue) {
|
|
122
|
+
column.accessorFn = item => getValue({
|
|
123
|
+
item
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return column;
|
|
127
|
+
});
|
|
128
|
+
if (actions?.length) {
|
|
129
|
+
_columns.push({
|
|
130
|
+
header: createElement(VisuallyHidden, null, __('Actions')),
|
|
131
|
+
id: 'actions',
|
|
132
|
+
cell: props => {
|
|
133
|
+
return createElement(ItemActions, {
|
|
134
|
+
item: props.row.original,
|
|
135
|
+
actions: actions
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
enableHiding: false
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return _columns;
|
|
142
|
+
}, [fields, actions, view]);
|
|
143
|
+
const columnVisibility = useMemo(() => {
|
|
144
|
+
if (!view.hiddenFields?.length) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
return view.hiddenFields.reduce((accumulator, fieldId) => ({
|
|
148
|
+
...accumulator,
|
|
149
|
+
[fieldId]: false
|
|
150
|
+
}), {});
|
|
151
|
+
}, [view.hiddenFields]);
|
|
152
|
+
const dataView = useReactTable({
|
|
153
|
+
data,
|
|
154
|
+
columns,
|
|
155
|
+
manualSorting: true,
|
|
156
|
+
manualFiltering: true,
|
|
157
|
+
manualPagination: true,
|
|
158
|
+
enableRowSelection: true,
|
|
159
|
+
state: {
|
|
160
|
+
sorting: view.sort ? [{
|
|
161
|
+
id: view.sort.field,
|
|
162
|
+
desc: view.sort.direction === 'desc'
|
|
163
|
+
}] : [],
|
|
164
|
+
globalFilter: view.search,
|
|
165
|
+
pagination: {
|
|
166
|
+
pageIndex: view.page,
|
|
167
|
+
pageSize: view.perPage
|
|
168
|
+
},
|
|
169
|
+
columnVisibility: columnVisibility !== null && columnVisibility !== void 0 ? columnVisibility : EMPTY_OBJECT
|
|
170
|
+
},
|
|
171
|
+
onSortingChange: sortingUpdater => {
|
|
172
|
+
onChangeView(currentView => {
|
|
173
|
+
const sort = typeof sortingUpdater === 'function' ? sortingUpdater(currentView.sort ? [{
|
|
174
|
+
id: currentView.sort.field,
|
|
175
|
+
desc: currentView.sort.direction === 'desc'
|
|
176
|
+
}] : []) : sortingUpdater;
|
|
177
|
+
if (!sort.length) {
|
|
178
|
+
return {
|
|
179
|
+
...currentView,
|
|
180
|
+
sort: {}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
const [{
|
|
184
|
+
id,
|
|
185
|
+
desc
|
|
186
|
+
}] = sort;
|
|
187
|
+
return {
|
|
188
|
+
...currentView,
|
|
189
|
+
sort: {
|
|
190
|
+
field: id,
|
|
191
|
+
direction: desc ? 'desc' : 'asc'
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
});
|
|
195
|
+
},
|
|
196
|
+
onColumnVisibilityChange: columnVisibilityUpdater => {
|
|
197
|
+
onChangeView(currentView => {
|
|
198
|
+
const hiddenFields = Object.entries(columnVisibilityUpdater()).reduce((accumulator, [fieldId, value]) => {
|
|
199
|
+
if (value) {
|
|
200
|
+
return accumulator.filter(id => id !== fieldId);
|
|
201
|
+
}
|
|
202
|
+
return [...accumulator, fieldId];
|
|
203
|
+
}, [...(currentView.hiddenFields || [])]);
|
|
204
|
+
return {
|
|
205
|
+
...currentView,
|
|
206
|
+
hiddenFields
|
|
207
|
+
};
|
|
208
|
+
});
|
|
209
|
+
},
|
|
210
|
+
onGlobalFilterChange: value => {
|
|
211
|
+
onChangeView({
|
|
212
|
+
...view,
|
|
213
|
+
search: value,
|
|
214
|
+
page: 0
|
|
215
|
+
});
|
|
216
|
+
},
|
|
217
|
+
onPaginationChange: paginationUpdater => {
|
|
218
|
+
onChangeView(currentView => {
|
|
219
|
+
const {
|
|
220
|
+
pageIndex,
|
|
221
|
+
pageSize
|
|
222
|
+
} = paginationUpdater({
|
|
223
|
+
pageIndex: currentView.page,
|
|
224
|
+
pageSize: currentView.perPage
|
|
225
|
+
});
|
|
226
|
+
return {
|
|
227
|
+
...view,
|
|
228
|
+
page: pageIndex,
|
|
229
|
+
perPage: pageSize
|
|
230
|
+
};
|
|
231
|
+
});
|
|
232
|
+
},
|
|
233
|
+
getCoreRowModel: getCoreRowModel(),
|
|
234
|
+
getFilteredRowModel: getFilteredRowModel(),
|
|
235
|
+
getSortedRowModel: getSortedRowModel(),
|
|
236
|
+
getPaginationRowModel: getPaginationRowModel(),
|
|
237
|
+
pageCount: paginationInfo.totalPages
|
|
238
|
+
});
|
|
239
|
+
const {
|
|
240
|
+
rows
|
|
241
|
+
} = dataView.getRowModel();
|
|
242
|
+
const hasRows = !!rows?.length;
|
|
243
|
+
if (isLoading) {
|
|
244
|
+
// TODO:Add spinner or progress bar..
|
|
245
|
+
return createElement("h3", null, __('Loading'));
|
|
246
|
+
}
|
|
247
|
+
return createElement("div", {
|
|
248
|
+
className: "dataviews-list-view-wrapper"
|
|
249
|
+
}, hasRows && createElement("table", {
|
|
250
|
+
className: "dataviews-list-view"
|
|
251
|
+
}, createElement("thead", null, dataView.getHeaderGroups().map(headerGroup => createElement("tr", {
|
|
252
|
+
key: headerGroup.id
|
|
253
|
+
}, headerGroup.headers.map(header => createElement("th", {
|
|
254
|
+
key: header.id,
|
|
255
|
+
colSpan: header.colSpan,
|
|
256
|
+
style: {
|
|
257
|
+
width: header.column.columnDef.width || undefined,
|
|
258
|
+
maxWidth: header.column.columnDef.maxWidth || undefined
|
|
259
|
+
}
|
|
260
|
+
}, createElement(HeaderMenu, {
|
|
261
|
+
dataView: dataView,
|
|
262
|
+
header: header
|
|
263
|
+
})))))), createElement("tbody", null, rows.map(row => createElement("tr", {
|
|
264
|
+
key: row.id
|
|
265
|
+
}, row.getVisibleCells().map(cell => createElement("td", {
|
|
266
|
+
key: cell.id,
|
|
267
|
+
style: {
|
|
268
|
+
width: cell.column.columnDef.width || undefined,
|
|
269
|
+
maxWidth: cell.column.columnDef.maxWidth || undefined
|
|
270
|
+
}
|
|
271
|
+
}, flexRender(cell.column.columnDef.cell, cell.getContext()))))))), !hasRows && createElement("p", null, __('no results')));
|
|
272
|
+
}
|
|
273
|
+
export default ViewList;
|
|
274
|
+
//# sourceMappingURL=view-list.js.map
|