@wordpress/dataviews 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE.md +788 -0
  3. package/README.md +224 -0
  4. package/build/add-filter.js +90 -0
  5. package/build/add-filter.js.map +1 -0
  6. package/build/constants.js +55 -0
  7. package/build/constants.js.map +1 -0
  8. package/build/dataviews.js +93 -0
  9. package/build/dataviews.js.map +1 -0
  10. package/build/filter-summary.js +137 -0
  11. package/build/filter-summary.js.map +1 -0
  12. package/build/filters.js +75 -0
  13. package/build/filters.js.map +1 -0
  14. package/build/index.js +21 -0
  15. package/build/index.js.map +1 -0
  16. package/build/item-actions.js +185 -0
  17. package/build/item-actions.js.map +1 -0
  18. package/build/lock-unlock.js +18 -0
  19. package/build/lock-unlock.js.map +1 -0
  20. package/build/pagination.js +123 -0
  21. package/build/pagination.js.map +1 -0
  22. package/build/reset-filters.js +33 -0
  23. package/build/reset-filters.js.map +1 -0
  24. package/build/search.js +46 -0
  25. package/build/search.js.map +1 -0
  26. package/build/view-actions.js +223 -0
  27. package/build/view-actions.js.map +1 -0
  28. package/build/view-grid.js +80 -0
  29. package/build/view-grid.js.map +1 -0
  30. package/build/view-list.js +83 -0
  31. package/build/view-list.js.map +1 -0
  32. package/build/view-table.js +286 -0
  33. package/build/view-table.js.map +1 -0
  34. package/build-module/add-filter.js +83 -0
  35. package/build-module/add-filter.js.map +1 -0
  36. package/build-module/constants.js +41 -0
  37. package/build-module/constants.js.map +1 -0
  38. package/build-module/dataviews.js +85 -0
  39. package/build-module/dataviews.js.map +1 -0
  40. package/build-module/filter-summary.js +130 -0
  41. package/build-module/filter-summary.js.map +1 -0
  42. package/build-module/filters.js +67 -0
  43. package/build-module/filters.js.map +1 -0
  44. package/build-module/index.js +3 -0
  45. package/build-module/index.js.map +1 -0
  46. package/build-module/item-actions.js +178 -0
  47. package/build-module/item-actions.js.map +1 -0
  48. package/build-module/lock-unlock.js +9 -0
  49. package/build-module/lock-unlock.js.map +1 -0
  50. package/build-module/pagination.js +115 -0
  51. package/build-module/pagination.js.map +1 -0
  52. package/build-module/reset-filters.js +26 -0
  53. package/build-module/reset-filters.js.map +1 -0
  54. package/build-module/search.js +39 -0
  55. package/build-module/search.js.map +1 -0
  56. package/build-module/view-actions.js +216 -0
  57. package/build-module/view-actions.js.map +1 -0
  58. package/build-module/view-grid.js +72 -0
  59. package/build-module/view-grid.js.map +1 -0
  60. package/build-module/view-list.js +75 -0
  61. package/build-module/view-list.js.map +1 -0
  62. package/build-module/view-table.js +277 -0
  63. package/build-module/view-table.js.map +1 -0
  64. package/build-style/style-rtl.css +325 -0
  65. package/build-style/style.css +325 -0
  66. package/package.json +49 -0
  67. package/src/add-filter.js +106 -0
  68. package/src/constants.js +50 -0
  69. package/src/dataviews.js +99 -0
  70. package/src/filter-summary.js +221 -0
  71. package/src/filters.js +84 -0
  72. package/src/index.js +2 -0
  73. package/src/item-actions.js +211 -0
  74. package/src/lock-unlock.js +10 -0
  75. package/src/pagination.js +144 -0
  76. package/src/reset-filters.js +26 -0
  77. package/src/search.js +38 -0
  78. package/src/stories/fixtures.js +126 -0
  79. package/src/stories/index.story.js +137 -0
  80. package/src/style.scss +245 -0
  81. package/src/view-actions.js +298 -0
  82. package/src/view-grid.js +100 -0
  83. package/src/view-list.js +99 -0
  84. package/src/view-table.js +425 -0
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ViewActions;
7
+ var _react = require("react");
8
+ var _components = require("@wordpress/components");
9
+ var _icons = require("@wordpress/icons");
10
+ var _i18n = require("@wordpress/i18n");
11
+ var _lockUnlock = require("./lock-unlock");
12
+ var _constants = require("./constants");
13
+ /**
14
+ * WordPress dependencies
15
+ */
16
+
17
+ /**
18
+ * Internal dependencies
19
+ */
20
+
21
+ const {
22
+ DropdownMenuV2: DropdownMenu,
23
+ DropdownMenuGroupV2: DropdownMenuGroup,
24
+ DropdownMenuItemV2: DropdownMenuItem,
25
+ DropdownSubMenuV2: DropdownSubMenu,
26
+ DropdownSubMenuTriggerV2: DropdownSubMenuTrigger
27
+ } = (0, _lockUnlock.unlock)(_components.privateApis);
28
+ function ViewTypeMenu({
29
+ view,
30
+ onChangeView,
31
+ supportedLayouts
32
+ }) {
33
+ let _availableViews = _constants.VIEW_LAYOUTS;
34
+ if (supportedLayouts) {
35
+ _availableViews = _availableViews.filter(_view => supportedLayouts.includes(_view.type));
36
+ }
37
+ if (_availableViews.length === 1) {
38
+ return null;
39
+ }
40
+ const activeView = _availableViews.find(v => view.type === v.type);
41
+ return (0, _react.createElement)(DropdownSubMenu, {
42
+ trigger: (0, _react.createElement)(DropdownSubMenuTrigger, {
43
+ suffix: (0, _react.createElement)(_react.Fragment, null, activeView.label, (0, _react.createElement)(_components.Icon, {
44
+ icon: _icons.chevronRightSmall
45
+ }))
46
+ }, (0, _i18n.__)('Layout'))
47
+ }, _availableViews.map(availableView => {
48
+ return (0, _react.createElement)(DropdownMenuItem, {
49
+ key: availableView.type,
50
+ role: "menuitemradio",
51
+ "aria-checked": availableView.id === view.type,
52
+ prefix: availableView.type === view.type && (0, _react.createElement)(_components.Icon, {
53
+ icon: _icons.check
54
+ }),
55
+ onSelect: event => {
56
+ // We need to handle this on DropDown component probably..
57
+ event.preventDefault();
58
+ onChangeView({
59
+ ...view,
60
+ type: availableView.type
61
+ });
62
+ }
63
+ }, availableView.label);
64
+ }));
65
+ }
66
+ const PAGE_SIZE_VALUES = [10, 20, 50, 100];
67
+ function PageSizeMenu({
68
+ view,
69
+ onChangeView
70
+ }) {
71
+ return (0, _react.createElement)(DropdownSubMenu, {
72
+ trigger: (0, _react.createElement)(DropdownSubMenuTrigger, {
73
+ suffix: (0, _react.createElement)(_react.Fragment, null, view.perPage, (0, _react.createElement)(_components.Icon, {
74
+ icon: _icons.chevronRightSmall
75
+ }))
76
+ }, (0, _i18n.__)('Rows per page'))
77
+ }, PAGE_SIZE_VALUES.map(size => {
78
+ return (0, _react.createElement)(DropdownMenuItem, {
79
+ key: size,
80
+ role: "menuitemradio",
81
+ "aria-checked": view.perPage === size,
82
+ prefix: view.perPage === size && (0, _react.createElement)(_components.Icon, {
83
+ icon: _icons.check
84
+ }),
85
+ onSelect: event => {
86
+ // We need to handle this on DropDown component probably..
87
+ event.preventDefault();
88
+ onChangeView({
89
+ ...view,
90
+ perPage: size,
91
+ page: 1
92
+ });
93
+ }
94
+ }, size);
95
+ }));
96
+ }
97
+ function FieldsVisibilityMenu({
98
+ view,
99
+ onChangeView,
100
+ fields
101
+ }) {
102
+ const hidableFields = fields.filter(field => field.enableHiding !== false && field.id !== view.layout.mediaField);
103
+ if (!hidableFields?.length) {
104
+ return null;
105
+ }
106
+ return (0, _react.createElement)(DropdownSubMenu, {
107
+ trigger: (0, _react.createElement)(DropdownSubMenuTrigger, {
108
+ suffix: (0, _react.createElement)(_components.Icon, {
109
+ icon: _icons.chevronRightSmall
110
+ })
111
+ }, (0, _i18n.__)('Fields'))
112
+ }, hidableFields?.map(field => {
113
+ return (0, _react.createElement)(DropdownMenuItem, {
114
+ key: field.id,
115
+ role: "menuitemcheckbox",
116
+ prefix: !view.hiddenFields?.includes(field.id) && (0, _react.createElement)(_components.Icon, {
117
+ icon: _icons.check
118
+ }),
119
+ onSelect: event => {
120
+ event.preventDefault();
121
+ onChangeView({
122
+ ...view,
123
+ hiddenFields: view.hiddenFields?.includes(field.id) ? view.hiddenFields.filter(id => id !== field.id) : [...(view.hiddenFields || []), field.id]
124
+ });
125
+ }
126
+ }, field.header);
127
+ }));
128
+ }
129
+
130
+ // This object is used to construct the sorting options per sortable field.
131
+ const sortingItemsInfo = {
132
+ asc: {
133
+ icon: _icons.arrowUp,
134
+ label: (0, _i18n.__)('Sort ascending')
135
+ },
136
+ desc: {
137
+ icon: _icons.arrowDown,
138
+ label: (0, _i18n.__)('Sort descending')
139
+ }
140
+ };
141
+ function SortMenu({
142
+ fields,
143
+ view,
144
+ onChangeView
145
+ }) {
146
+ const sortableFields = fields.filter(field => field.enableSorting !== false);
147
+ if (!sortableFields?.length) {
148
+ return null;
149
+ }
150
+ const currentSortedField = fields.find(field => field.id === view.sort?.field);
151
+ return (0, _react.createElement)(DropdownSubMenu, {
152
+ trigger: (0, _react.createElement)(DropdownSubMenuTrigger, {
153
+ suffix: (0, _react.createElement)(_react.Fragment, null, currentSortedField?.header, (0, _react.createElement)(_components.Icon, {
154
+ icon: _icons.chevronRightSmall
155
+ }))
156
+ }, (0, _i18n.__)('Sort by'))
157
+ }, sortableFields?.map(field => {
158
+ const sortedDirection = view.sort?.direction;
159
+ return (0, _react.createElement)(DropdownSubMenu, {
160
+ key: field.id,
161
+ trigger: (0, _react.createElement)(DropdownSubMenuTrigger, {
162
+ suffix: (0, _react.createElement)(_components.Icon, {
163
+ icon: _icons.chevronRightSmall
164
+ })
165
+ }, field.header),
166
+ side: "left"
167
+ }, Object.entries(sortingItemsInfo).map(([direction, info]) => {
168
+ const isActive = currentSortedField && sortedDirection === direction && field.id === currentSortedField.id;
169
+ return (0, _react.createElement)(DropdownMenuItem, {
170
+ key: direction,
171
+ role: "menuitemradio",
172
+ "aria-checked": isActive,
173
+ prefix: (0, _react.createElement)(_components.Icon, {
174
+ icon: info.icon
175
+ }),
176
+ suffix: isActive && (0, _react.createElement)(_components.Icon, {
177
+ icon: _icons.check
178
+ }),
179
+ onSelect: event => {
180
+ event.preventDefault();
181
+ onChangeView({
182
+ ...view,
183
+ sort: {
184
+ field: field.id,
185
+ direction
186
+ }
187
+ });
188
+ }
189
+ }, info.label);
190
+ }));
191
+ }));
192
+ }
193
+ function ViewActions({
194
+ fields,
195
+ view,
196
+ onChangeView,
197
+ supportedLayouts
198
+ }) {
199
+ return (0, _react.createElement)(DropdownMenu, {
200
+ trigger: (0, _react.createElement)(_components.Button, {
201
+ variant: "tertiary",
202
+ size: "compact",
203
+ icon: _constants.VIEW_LAYOUTS.find(v => v.type === view.type)?.icon || _constants.VIEW_LAYOUTS.find(v => v.type === _constants.LAYOUT_TABLE).icon,
204
+ label: (0, _i18n.__)('View options')
205
+ })
206
+ }, (0, _react.createElement)(DropdownMenuGroup, null, (0, _react.createElement)(ViewTypeMenu, {
207
+ view: view,
208
+ onChangeView: onChangeView,
209
+ supportedLayouts: supportedLayouts
210
+ }), (0, _react.createElement)(SortMenu, {
211
+ fields: fields,
212
+ view: view,
213
+ onChangeView: onChangeView
214
+ }), (0, _react.createElement)(FieldsVisibilityMenu, {
215
+ fields: fields,
216
+ view: view,
217
+ onChangeView: onChangeView
218
+ }), (0, _react.createElement)(PageSizeMenu, {
219
+ view: view,
220
+ onChangeView: onChangeView
221
+ })));
222
+ }
223
+ //# sourceMappingURL=view-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_components","require","_icons","_i18n","_lockUnlock","_constants","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownSubMenuV2","DropdownSubMenu","DropdownSubMenuTriggerV2","DropdownSubMenuTrigger","unlock","componentsPrivateApis","ViewTypeMenu","view","onChangeView","supportedLayouts","_availableViews","VIEW_LAYOUTS","filter","_view","includes","type","length","activeView","find","v","_react","createElement","trigger","suffix","Fragment","label","Icon","icon","chevronRightSmall","__","map","availableView","key","role","id","prefix","check","onSelect","event","preventDefault","PAGE_SIZE_VALUES","PageSizeMenu","perPage","size","page","FieldsVisibilityMenu","fields","hidableFields","field","enableHiding","layout","mediaField","hiddenFields","header","sortingItemsInfo","asc","arrowUp","desc","arrowDown","SortMenu","sortableFields","enableSorting","currentSortedField","sort","sortedDirection","direction","side","Object","entries","info","isActive","ViewActions","Button","variant","LAYOUT_TABLE"],"sources":["@wordpress/dataviews/src/view-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { chevronRightSmall, check, arrowUp, arrowDown } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport { VIEW_LAYOUTS, LAYOUT_TABLE } from './constants';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownSubMenuV2: DropdownSubMenu,\n\tDropdownSubMenuTriggerV2: DropdownSubMenuTrigger,\n} = unlock( componentsPrivateApis );\n\nfunction ViewTypeMenu( { view, onChangeView, supportedLayouts } ) {\n\tlet _availableViews = VIEW_LAYOUTS;\n\tif ( supportedLayouts ) {\n\t\t_availableViews = _availableViews.filter( ( _view ) =>\n\t\t\tsupportedLayouts.includes( _view.type )\n\t\t);\n\t}\n\tif ( _availableViews.length === 1 ) {\n\t\treturn null;\n\t}\n\tconst activeView = _availableViews.find( ( v ) => view.type === v.type );\n\treturn (\n\t\t<DropdownSubMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTrigger\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</DropdownSubMenuTrigger>\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<DropdownMenuItem\n\t\t\t\t\t\tkey={ availableView.type }\n\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\taria-checked={ availableView.id === view.type }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\tavailableView.type === 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( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\ttype: availableView.type,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ availableView.label }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenu>\n\t);\n}\n\nconst PAGE_SIZE_VALUES = [ 10, 20, 50, 100 ];\nfunction PageSizeMenu( { view, onChangeView } ) {\n\treturn (\n\t\t<DropdownSubMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTrigger\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</DropdownSubMenuTrigger>\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<DropdownMenuItem\n\t\t\t\t\t\tkey={ size }\n\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\taria-checked={ view.perPage === 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>\n\t\t\t\t\t\t{ size }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenu>\n\t);\n}\n\nfunction FieldsVisibilityMenu( { view, onChangeView, fields } ) {\n\tconst hidableFields = fields.filter(\n\t\t( field ) =>\n\t\t\tfield.enableHiding !== false && field.id !== view.layout.mediaField\n\t);\n\tif ( ! hidableFields?.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<DropdownSubMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTrigger\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</DropdownSubMenuTrigger>\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<DropdownMenuItem\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\trole=\"menuitemcheckbox\"\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: [\n\t\t\t\t\t\t\t\t\t\t\t...( view.hiddenFields || [] ),\n\t\t\t\t\t\t\t\t\t\t\tfield.id,\n\t\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>\n\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenu>\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<DropdownSubMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTrigger\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</DropdownSubMenuTrigger>\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<DropdownSubMenu\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t<DropdownSubMenuTrigger\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</DropdownSubMenuTrigger>\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<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\taria-checked={ isActive }\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\tonChangeView( {\n\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\tsort: {\n\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\tdirection,\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</DropdownMenuItem>\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</DropdownSubMenu>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenu>\n\t);\n}\n\nexport default function ViewActions( {\n\tfields,\n\tview,\n\tonChangeView,\n\tsupportedLayouts,\n} ) {\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\ticon={\n\t\t\t\t\t\tVIEW_LAYOUTS.find( ( v ) => v.type === view.type )\n\t\t\t\t\t\t\t?.icon ||\n\t\t\t\t\t\tVIEW_LAYOUTS.find( ( v ) => v.type === LAYOUT_TABLE )\n\t\t\t\t\t\t\t.icon\n\t\t\t\t\t}\n\t\t\t\t\tlabel={ __( 'View options' ) }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<DropdownMenuGroup>\n\t\t\t\t<ViewTypeMenu\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tsupportedLayouts={ supportedLayouts }\n\t\t\t\t/>\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</DropdownMenuGroup>\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAKA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAfA;AACA;AACA;;AASA;AACA;AACA;;AAIA,MAAM;EACLK,cAAc,EAAEC,YAAY;EAC5BC,mBAAmB,EAAEC,iBAAiB;EACtCC,kBAAkB,EAAEC,gBAAgB;EACpCC,iBAAiB,EAAEC,eAAe;EAClCC,wBAAwB,EAAEC;AAC3B,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AAEnC,SAASC,YAAYA,CAAE;EAAEC,IAAI;EAAEC,YAAY;EAAEC;AAAiB,CAAC,EAAG;EACjE,IAAIC,eAAe,GAAGC,uBAAY;EAClC,IAAKF,gBAAgB,EAAG;IACvBC,eAAe,GAAGA,eAAe,CAACE,MAAM,CAAIC,KAAK,IAChDJ,gBAAgB,CAACK,QAAQ,CAAED,KAAK,CAACE,IAAK,CACvC,CAAC;EACF;EACA,IAAKL,eAAe,CAACM,MAAM,KAAK,CAAC,EAAG;IACnC,OAAO,IAAI;EACZ;EACA,MAAMC,UAAU,GAAGP,eAAe,CAACQ,IAAI,CAAIC,CAAC,IAAMZ,IAAI,CAACQ,IAAI,KAAKI,CAAC,CAACJ,IAAK,CAAC;EACxE,OACC,IAAAK,MAAA,CAAAC,aAAA,EAACpB,eAAe;IACfqB,OAAO,EACN,IAAAF,MAAA,CAAAC,aAAA,EAAClB,sBAAsB;MACtBoB,MAAM,EACL,IAAAH,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAI,QAAA,QACGP,UAAU,CAACQ,KAAK,EAClB,IAAAL,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAsC,IAAI;QAACC,IAAI,EAAGC;MAAmB,CAAE,CACjC;IACF,GAEC,IAAAC,QAAE,EAAE,QAAS,CACQ;EACxB,GAECnB,eAAe,CAACoB,GAAG,CAAIC,aAAa,IAAM;IAC3C,OACC,IAAAX,MAAA,CAAAC,aAAA,EAACtB,gBAAgB;MAChBiC,GAAG,EAAGD,aAAa,CAAChB,IAAM;MAC1BkB,IAAI,EAAC,eAAe;MACpB,gBAAeF,aAAa,CAACG,EAAE,KAAK3B,IAAI,CAACQ,IAAM;MAC/CoB,MAAM,EACLJ,aAAa,CAAChB,IAAI,KAAKR,IAAI,CAACQ,IAAI,IAC/B,IAAAK,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAsC,IAAI;QAACC,IAAI,EAAGS;MAAO,CAAE,CAEvB;MACDC,QAAQ,EAAKC,KAAK,IAAM;QACvB;QACAA,KAAK,CAACC,cAAc,CAAC,CAAC;QACtB/B,YAAY,CAAE;UACb,GAAGD,IAAI;UACPQ,IAAI,EAAEgB,aAAa,CAAChB;QACrB,CAAE,CAAC;MACJ;IAAG,GAEDgB,aAAa,CAACN,KACC,CAAC;EAErB,CAAE,CACc,CAAC;AAEpB;AAEA,MAAMe,gBAAgB,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE;AAC5C,SAASC,YAAYA,CAAE;EAAElC,IAAI;EAAEC;AAAa,CAAC,EAAG;EAC/C,OACC,IAAAY,MAAA,CAAAC,aAAA,EAACpB,eAAe;IACfqB,OAAO,EACN,IAAAF,MAAA,CAAAC,aAAA,EAAClB,sBAAsB;MACtBoB,MAAM,EACL,IAAAH,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAI,QAAA,QACGjB,IAAI,CAACmC,OAAO,EACd,IAAAtB,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAsC,IAAI;QAACC,IAAI,EAAGC;MAAmB,CAAE,CACjC;IACF,GAGC,IAAAC,QAAE,EAAE,eAAgB,CACC;EACxB,GAECW,gBAAgB,CAACV,GAAG,CAAIa,IAAI,IAAM;IACnC,OACC,IAAAvB,MAAA,CAAAC,aAAA,EAACtB,gBAAgB;MAChBiC,GAAG,EAAGW,IAAM;MACZV,IAAI,EAAC,eAAe;MACpB,gBAAe1B,IAAI,CAACmC,OAAO,KAAKC,IAAM;MACtCR,MAAM,EACL5B,IAAI,CAACmC,OAAO,KAAKC,IAAI,IAAI,IAAAvB,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAsC,IAAI;QAACC,IAAI,EAAGS;MAAO,CAAE,CAC/C;MACDC,QAAQ,EAAKC,KAAK,IAAM;QACvB;QACAA,KAAK,CAACC,cAAc,CAAC,CAAC;QACtB/B,YAAY,CAAE;UAAE,GAAGD,IAAI;UAAEmC,OAAO,EAAEC,IAAI;UAAEC,IAAI,EAAE;QAAE,CAAE,CAAC;MACpD;IAAG,GAEDD,IACe,CAAC;EAErB,CAAE,CACc,CAAC;AAEpB;AAEA,SAASE,oBAAoBA,CAAE;EAAEtC,IAAI;EAAEC,YAAY;EAAEsC;AAAO,CAAC,EAAG;EAC/D,MAAMC,aAAa,GAAGD,MAAM,CAAClC,MAAM,CAChCoC,KAAK,IACNA,KAAK,CAACC,YAAY,KAAK,KAAK,IAAID,KAAK,CAACd,EAAE,KAAK3B,IAAI,CAAC2C,MAAM,CAACC,UAC3D,CAAC;EACD,IAAK,CAAEJ,aAAa,EAAE/B,MAAM,EAAG;IAC9B,OAAO,IAAI;EACZ;EACA,OACC,IAAAI,MAAA,CAAAC,aAAA,EAACpB,eAAe;IACfqB,OAAO,EACN,IAAAF,MAAA,CAAAC,aAAA,EAAClB,sBAAsB;MACtBoB,MAAM,EAAG,IAAAH,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAsC,IAAI;QAACC,IAAI,EAAGC;MAAmB,CAAE;IAAG,GAE5C,IAAAC,QAAE,EAAE,QAAS,CACQ;EACxB,GAECkB,aAAa,EAAEjB,GAAG,CAAIkB,KAAK,IAAM;IAClC,OACC,IAAA5B,MAAA,CAAAC,aAAA,EAACtB,gBAAgB;MAChBiC,GAAG,EAAGgB,KAAK,CAACd,EAAI;MAChBD,IAAI,EAAC,kBAAkB;MACvBE,MAAM,EACL,CAAE5B,IAAI,CAAC6C,YAAY,EAAEtC,QAAQ,CAAEkC,KAAK,CAACd,EAAG,CAAC,IACxC,IAAAd,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAsC,IAAI;QAACC,IAAI,EAAGS;MAAO,CAAE,CAEvB;MACDC,QAAQ,EAAKC,KAAK,IAAM;QACvBA,KAAK,CAACC,cAAc,CAAC,CAAC;QACtB/B,YAAY,CAAE;UACb,GAAGD,IAAI;UACP6C,YAAY,EAAE7C,IAAI,CAAC6C,YAAY,EAAEtC,QAAQ,CACxCkC,KAAK,CAACd,EACP,CAAC,GACE3B,IAAI,CAAC6C,YAAY,CAACxC,MAAM,CACtBsB,EAAE,IAAMA,EAAE,KAAKc,KAAK,CAACd,EACvB,CAAC,GACD,CACA,IAAK3B,IAAI,CAAC6C,YAAY,IAAI,EAAE,CAAE,EAC9BJ,KAAK,CAACd,EAAE;QAEZ,CAAE,CAAC;MACJ;IAAG,GAEDc,KAAK,CAACK,MACS,CAAC;EAErB,CAAE,CACc,CAAC;AAEpB;;AAEA;AACA,MAAMC,gBAAgB,GAAG;EACxBC,GAAG,EAAE;IAAE5B,IAAI,EAAE6B,cAAO;IAAE/B,KAAK,EAAE,IAAAI,QAAE,EAAE,gBAAiB;EAAE,CAAC;EACrD4B,IAAI,EAAE;IAAE9B,IAAI,EAAE+B,gBAAS;IAAEjC,KAAK,EAAE,IAAAI,QAAE,EAAE,iBAAkB;EAAE;AACzD,CAAC;AACD,SAAS8B,QAAQA,CAAE;EAAEb,MAAM;EAAEvC,IAAI;EAAEC;AAAa,CAAC,EAAG;EACnD,MAAMoD,cAAc,GAAGd,MAAM,CAAClC,MAAM,CACjCoC,KAAK,IAAMA,KAAK,CAACa,aAAa,KAAK,KACtC,CAAC;EACD,IAAK,CAAED,cAAc,EAAE5C,MAAM,EAAG;IAC/B,OAAO,IAAI;EACZ;EACA,MAAM8C,kBAAkB,GAAGhB,MAAM,CAAC5B,IAAI,CACnC8B,KAAK,IAAMA,KAAK,CAACd,EAAE,KAAK3B,IAAI,CAACwD,IAAI,EAAEf,KACtC,CAAC;EACD,OACC,IAAA5B,MAAA,CAAAC,aAAA,EAACpB,eAAe;IACfqB,OAAO,EACN,IAAAF,MAAA,CAAAC,aAAA,EAAClB,sBAAsB;MACtBoB,MAAM,EACL,IAAAH,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAI,QAAA,QACGsC,kBAAkB,EAAET,MAAM,EAC5B,IAAAjC,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAsC,IAAI;QAACC,IAAI,EAAGC;MAAmB,CAAE,CACjC;IACF,GAEC,IAAAC,QAAE,EAAE,SAAU,CACO;EACxB,GAEC+B,cAAc,EAAE9B,GAAG,CAAIkB,KAAK,IAAM;IACnC,MAAMgB,eAAe,GAAGzD,IAAI,CAACwD,IAAI,EAAEE,SAAS;IAC5C,OACC,IAAA7C,MAAA,CAAAC,aAAA,EAACpB,eAAe;MACf+B,GAAG,EAAGgB,KAAK,CAACd,EAAI;MAChBZ,OAAO,EACN,IAAAF,MAAA,CAAAC,aAAA,EAAClB,sBAAsB;QACtBoB,MAAM,EAAG,IAAAH,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAsC,IAAI;UAACC,IAAI,EAAGC;QAAmB,CAAE;MAAG,GAE5CoB,KAAK,CAACK,MACe,CACxB;MACDa,IAAI,EAAC;IAAM,GAETC,MAAM,CAACC,OAAO,CAAEd,gBAAiB,CAAC,CAACxB,GAAG,CACvC,CAAE,CAAEmC,SAAS,EAAEI,IAAI,CAAE,KAAM;MAC1B,MAAMC,QAAQ,GACbR,kBAAkB,IAClBE,eAAe,KAAKC,SAAS,IAC7BjB,KAAK,CAACd,EAAE,KAAK4B,kBAAkB,CAAC5B,EAAE;MACnC,OACC,IAAAd,MAAA,CAAAC,aAAA,EAACtB,gBAAgB;QAChBiC,GAAG,EAAGiC,SAAW;QACjBhC,IAAI,EAAC,eAAe;QACpB,gBAAeqC,QAAU;QACzBnC,MAAM,EAAG,IAAAf,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAsC,IAAI;UAACC,IAAI,EAAG0C,IAAI,CAAC1C;QAAM,CAAE,CAAG;QACtCJ,MAAM,EACL+C,QAAQ,IAAI,IAAAlD,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAsC,IAAI;UAACC,IAAI,EAAGS;QAAO,CAAE,CAClC;QACDC,QAAQ,EAAKC,KAAK,IAAM;UACvBA,KAAK,CAACC,cAAc,CAAC,CAAC;UACtB/B,YAAY,CAAE;YACb,GAAGD,IAAI;YACPwD,IAAI,EAAE;cACLf,KAAK,EAAEA,KAAK,CAACd,EAAE;cACf+B;YACD;UACD,CAAE,CAAC;QACJ;MAAG,GAEDI,IAAI,CAAC5C,KACU,CAAC;IAErB,CACD,CACgB,CAAC;EAEpB,CAAE,CACc,CAAC;AAEpB;AAEe,SAAS8C,WAAWA,CAAE;EACpCzB,MAAM;EACNvC,IAAI;EACJC,YAAY;EACZC;AACD,CAAC,EAAG;EACH,OACC,IAAAW,MAAA,CAAAC,aAAA,EAAC1B,YAAY;IACZ2B,OAAO,EACN,IAAAF,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAoF,MAAM;MACNC,OAAO,EAAC,UAAU;MAClB9B,IAAI,EAAC,SAAS;MACdhB,IAAI,EACHhB,uBAAY,CAACO,IAAI,CAAIC,CAAC,IAAMA,CAAC,CAACJ,IAAI,KAAKR,IAAI,CAACQ,IAAK,CAAC,EAC/CY,IAAI,IACPhB,uBAAY,CAACO,IAAI,CAAIC,CAAC,IAAMA,CAAC,CAACJ,IAAI,KAAK2D,uBAAa,CAAC,CACnD/C,IACF;MACDF,KAAK,EAAG,IAAAI,QAAE,EAAE,cAAe;IAAG,CAC9B;EACD,GAED,IAAAT,MAAA,CAAAC,aAAA,EAACxB,iBAAiB,QACjB,IAAAuB,MAAA,CAAAC,aAAA,EAACf,YAAY;IACZC,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA,YAAc;IAC7BC,gBAAgB,EAAGA;EAAkB,CACrC,CAAC,EACF,IAAAW,MAAA,CAAAC,aAAA,EAACsC,QAAQ;IACRb,MAAM,EAAGA,MAAQ;IACjBvC,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA;EAAc,CAC7B,CAAC,EACF,IAAAY,MAAA,CAAAC,aAAA,EAACwB,oBAAoB;IACpBC,MAAM,EAAGA,MAAQ;IACjBvC,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA;EAAc,CAC7B,CAAC,EACF,IAAAY,MAAA,CAAAC,aAAA,EAACoB,YAAY;IAAClC,IAAI,EAAGA,IAAM;IAACC,YAAY,EAAGA;EAAc,CAAE,CACzC,CACN,CAAC;AAEjB"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = ViewGrid;
8
+ var _react = require("react");
9
+ var _components = require("@wordpress/components");
10
+ var _compose = require("@wordpress/compose");
11
+ var _itemActions = _interopRequireDefault(require("./item-actions"));
12
+ /**
13
+ * WordPress dependencies
14
+ */
15
+
16
+ /**
17
+ * Internal dependencies
18
+ */
19
+
20
+ function ViewGrid({
21
+ data,
22
+ fields,
23
+ view,
24
+ actions,
25
+ getItemId,
26
+ deferredRendering
27
+ }) {
28
+ const mediaField = fields.find(field => field.id === view.layout.mediaField);
29
+ const primaryField = fields.find(field => field.id === view.layout.primaryField);
30
+ const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.mediaField, view.layout.primaryField].includes(field.id));
31
+ const shownData = (0, _compose.useAsyncList)(data, {
32
+ step: 3
33
+ });
34
+ const usedData = deferredRendering ? shownData : data;
35
+ return (0, _react.createElement)(_components.__experimentalGrid, {
36
+ gap: 8,
37
+ columns: 2,
38
+ alignment: "top",
39
+ className: "dataviews-grid-view"
40
+ }, usedData.map((item, index) => (0, _react.createElement)(_components.__experimentalVStack, {
41
+ spacing: 3,
42
+ key: getItemId?.(item) || index,
43
+ className: "dataviews-view-grid__card"
44
+ }, (0, _react.createElement)("div", {
45
+ className: "dataviews-view-grid__media"
46
+ }, mediaField?.render({
47
+ item
48
+ })), (0, _react.createElement)(_components.__experimentalHStack, {
49
+ className: "dataviews-view-grid__primary-field",
50
+ justify: "space-between"
51
+ }, (0, _react.createElement)(_components.FlexBlock, null, primaryField?.render({
52
+ item
53
+ })), (0, _react.createElement)(_itemActions.default, {
54
+ item: item,
55
+ actions: actions,
56
+ isCompact: true
57
+ })), (0, _react.createElement)(_components.__experimentalVStack, {
58
+ className: "dataviews-view-grid__fields",
59
+ spacing: 3
60
+ }, visibleFields.map(field => {
61
+ const renderedValue = field.render({
62
+ item
63
+ });
64
+ if (!renderedValue) {
65
+ return null;
66
+ }
67
+ return (0, _react.createElement)(_components.__experimentalVStack, {
68
+ className: "dataviews-view-grid__field",
69
+ key: field.id,
70
+ spacing: 1
71
+ }, (0, _react.createElement)("div", {
72
+ className: "dataviews-view-grid__field-header"
73
+ }, field.header), (0, _react.createElement)("div", {
74
+ className: "dataviews-view-grid__field-value"
75
+ }, field.render({
76
+ item
77
+ })));
78
+ })))));
79
+ }
80
+ //# sourceMappingURL=view-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_components","require","_compose","_itemActions","_interopRequireDefault","ViewGrid","data","fields","view","actions","getItemId","deferredRendering","mediaField","find","field","id","layout","primaryField","visibleFields","filter","hiddenFields","includes","shownData","useAsyncList","step","usedData","_react","createElement","__experimentalGrid","gap","columns","alignment","className","map","item","index","__experimentalVStack","spacing","key","render","__experimentalHStack","justify","FlexBlock","default","isCompact","renderedValue","header"],"sources":["@wordpress/dataviews/src/view-grid.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tFlexBlock,\n\t__experimentalGrid as Grid,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useAsyncList } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport ItemActions from './item-actions';\n\nexport default function ViewGrid( {\n\tdata,\n\tfields,\n\tview,\n\tactions,\n\tgetItemId,\n\tdeferredRendering,\n} ) {\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.mediaField, view.layout.primaryField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\tconst shownData = useAsyncList( data, { step: 3 } );\n\tconst usedData = deferredRendering ? shownData : data;\n\treturn (\n\t\t<Grid\n\t\t\tgap={ 8 }\n\t\t\tcolumns={ 2 }\n\t\t\talignment=\"top\"\n\t\t\tclassName=\"dataviews-grid-view\"\n\t\t>\n\t\t\t{ usedData.map( ( item, index ) => (\n\t\t\t\t<VStack\n\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\tkey={ getItemId?.( item ) || index }\n\t\t\t\t\tclassName=\"dataviews-view-grid__card\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-grid__media\">\n\t\t\t\t\t\t{ mediaField?.render( { item } ) }\n\t\t\t\t\t</div>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__primary-field\"\n\t\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t{ primaryField?.render( { item } ) }\n\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\tisCompact\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__fields\"\n\t\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\t\t\t\tconst renderedValue = field.render( {\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tif ( ! renderedValue ) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-grid__field-header\">\n\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-grid__field-value\">\n\t\t\t\t\t\t\t\t\t\t{ field.render( { item } ) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</VStack>\n\t\t\t\t</VStack>\n\t\t\t) ) }\n\t\t</Grid>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = ViewList;
8
+ var _react = require("react");
9
+ var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _compose = require("@wordpress/compose");
11
+ var _components = require("@wordpress/components");
12
+ var _keycodes = require("@wordpress/keycodes");
13
+ /**
14
+ * External dependencies
15
+ */
16
+
17
+ /**
18
+ * WordPress dependencies
19
+ */
20
+
21
+ function ViewList({
22
+ view,
23
+ fields,
24
+ data,
25
+ getItemId,
26
+ onSelectionChange,
27
+ selection,
28
+ deferredRendering
29
+ }) {
30
+ const shownData = (0, _compose.useAsyncList)(data, {
31
+ step: 3
32
+ });
33
+ const usedData = deferredRendering ? shownData : data;
34
+ const mediaField = fields.find(field => field.id === view.layout.mediaField);
35
+ const primaryField = fields.find(field => field.id === view.layout.primaryField);
36
+ const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.primaryField, view.layout.mediaField].includes(field.id));
37
+ const onEnter = item => event => {
38
+ const {
39
+ keyCode
40
+ } = event;
41
+ if ([_keycodes.ENTER, _keycodes.SPACE].includes(keyCode)) {
42
+ onSelectionChange([item]);
43
+ }
44
+ };
45
+ return (0, _react.createElement)("ul", {
46
+ className: "dataviews-list-view"
47
+ }, usedData.map((item, index) => {
48
+ return (0, _react.createElement)("li", {
49
+ key: getItemId?.(item) || index
50
+ }, (0, _react.createElement)("div", {
51
+ role: "button",
52
+ tabIndex: 0,
53
+ "aria-pressed": selection.includes(item.id),
54
+ onKeyDown: onEnter(item),
55
+ className: (0, _classnames.default)('dataviews-list-view__item', {
56
+ 'dataviews-list-view__item-selected': selection.includes(item.id)
57
+ }),
58
+ onClick: () => onSelectionChange([item])
59
+ }, (0, _react.createElement)(_components.__experimentalHStack, {
60
+ spacing: 3
61
+ }, (0, _react.createElement)("div", {
62
+ className: "dataviews-list-view__media-wrapper"
63
+ }, mediaField?.render({
64
+ item
65
+ }) || (0, _react.createElement)("div", {
66
+ className: "dataviews-list-view__media-placeholder"
67
+ })), (0, _react.createElement)(_components.__experimentalHStack, null, (0, _react.createElement)(_components.__experimentalVStack, {
68
+ spacing: 1
69
+ }, primaryField?.render({
70
+ item
71
+ }), (0, _react.createElement)("div", {
72
+ className: "dataviews-list-view__fields"
73
+ }, visibleFields.map(field => {
74
+ return (0, _react.createElement)("span", {
75
+ key: field.id,
76
+ className: "dataviews-list-view__field"
77
+ }, field.render({
78
+ item
79
+ }));
80
+ })))))));
81
+ }));
82
+ }
83
+ //# sourceMappingURL=view-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_compose","_components","_keycodes","ViewList","view","fields","data","getItemId","onSelectionChange","selection","deferredRendering","shownData","useAsyncList","step","usedData","mediaField","find","field","id","layout","primaryField","visibleFields","filter","hiddenFields","includes","onEnter","item","event","keyCode","ENTER","SPACE","_react","createElement","className","map","index","key","role","tabIndex","onKeyDown","classNames","onClick","__experimentalHStack","spacing","render","__experimentalVStack"],"sources":["@wordpress/dataviews/src/view-list.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useAsyncList } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\n\nexport default function ViewList( {\n\tview,\n\tfields,\n\tdata,\n\tgetItemId,\n\tonSelectionChange,\n\tselection,\n\tdeferredRendering,\n} ) {\n\tconst shownData = useAsyncList( data, { step: 3 } );\n\tconst usedData = deferredRendering ? shownData : data;\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.primaryField, view.layout.mediaField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\n\tconst onEnter = ( item ) => ( event ) => {\n\t\tconst { keyCode } = event;\n\t\tif ( [ ENTER, SPACE ].includes( keyCode ) ) {\n\t\t\tonSelectionChange( [ item ] );\n\t\t}\n\t};\n\n\treturn (\n\t\t<ul className=\"dataviews-list-view\">\n\t\t\t{ usedData.map( ( item, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<li key={ getItemId?.( item ) || index }>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\ttabIndex={ 0 }\n\t\t\t\t\t\t\taria-pressed={ selection.includes( item.id ) }\n\t\t\t\t\t\t\tonKeyDown={ onEnter( item ) }\n\t\t\t\t\t\t\tclassName={ classNames(\n\t\t\t\t\t\t\t\t'dataviews-list-view__item',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'dataviews-list-view__item-selected':\n\t\t\t\t\t\t\t\t\t\tselection.includes( item.id ),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonClick={ () => onSelectionChange( [ item ] ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<HStack spacing={ 3 }>\n\t\t\t\t\t\t\t\t<div className=\"dataviews-list-view__media-wrapper\">\n\t\t\t\t\t\t\t\t\t{ mediaField?.render( { item } ) || (\n\t\t\t\t\t\t\t\t\t\t<div className=\"dataviews-list-view__media-placeholder\"></div>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t\t\t\t\t\t{ primaryField?.render( { item } ) }\n\t\t\t\t\t\t\t\t\t\t<div className=\"dataviews-list-view__fields\">\n\t\t\t\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-list-view__field\"\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\t{ field.render( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titem,\n\t\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</span>\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</div>\n\t\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ul>\n\t);\n}\n"],"mappings":"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"}