@wordpress/dataviews 0.6.0 → 0.8.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 +9 -0
- package/README.md +48 -15
- package/build/add-filter.js +0 -2
- package/build/add-filter.js.map +1 -1
- package/build/bulk-actions.js +41 -3
- package/build/bulk-actions.js.map +1 -1
- package/build/constants.js +28 -7
- package/build/constants.js.map +1 -1
- package/build/dataviews.js +34 -21
- package/build/dataviews.js.map +1 -1
- package/build/filter-summary.js +33 -12
- package/build/filter-summary.js.map +1 -1
- package/build/filters.js +10 -2
- package/build/filters.js.map +1 -1
- package/build/item-actions.js +20 -39
- package/build/item-actions.js.map +1 -1
- package/build/pagination.js +4 -3
- package/build/pagination.js.map +1 -1
- package/build/reset-filters.js +2 -1
- package/build/reset-filters.js.map +1 -1
- package/build/search-widget.js +117 -8
- package/build/search-widget.js.map +1 -1
- package/build/single-selection-checkbox.js +7 -2
- package/build/single-selection-checkbox.js.map +1 -1
- package/build/utils.js +24 -2
- package/build/utils.js.map +1 -1
- package/build/view-actions.js.map +1 -1
- package/build/view-grid.js +12 -13
- package/build/view-grid.js.map +1 -1
- package/build/view-list.js +1 -1
- package/build/view-list.js.map +1 -1
- package/build/view-table.js +111 -47
- package/build/view-table.js.map +1 -1
- package/build-module/add-filter.js +0 -2
- package/build-module/add-filter.js.map +1 -1
- package/build-module/bulk-actions.js +40 -4
- package/build-module/bulk-actions.js.map +1 -1
- package/build-module/constants.js +27 -6
- package/build-module/constants.js.map +1 -1
- package/build-module/dataviews.js +35 -22
- package/build-module/dataviews.js.map +1 -1
- package/build-module/filter-summary.js +34 -13
- package/build-module/filter-summary.js.map +1 -1
- package/build-module/filters.js +11 -3
- package/build-module/filters.js.map +1 -1
- package/build-module/item-actions.js +20 -39
- package/build-module/item-actions.js.map +1 -1
- package/build-module/pagination.js +4 -3
- package/build-module/pagination.js.map +1 -1
- package/build-module/reset-filters.js +2 -1
- package/build-module/reset-filters.js.map +1 -1
- package/build-module/search-widget.js +120 -11
- package/build-module/search-widget.js.map +1 -1
- package/build-module/single-selection-checkbox.js +7 -2
- package/build-module/single-selection-checkbox.js.map +1 -1
- package/build-module/utils.js +25 -3
- package/build-module/utils.js.map +1 -1
- package/build-module/view-actions.js.map +1 -1
- package/build-module/view-grid.js +13 -14
- package/build-module/view-grid.js.map +1 -1
- package/build-module/view-list.js +2 -2
- package/build-module/view-list.js.map +1 -1
- package/build-module/view-table.js +113 -49
- package/build-module/view-table.js.map +1 -1
- package/build-style/style-rtl.css +76 -46
- package/build-style/style.css +76 -46
- package/package.json +11 -11
- package/src/add-filter.js +0 -2
- package/src/bulk-actions.js +54 -4
- package/src/constants.js +35 -6
- package/src/dataviews.js +66 -49
- package/src/filter-summary.js +76 -23
- package/src/filters.js +16 -5
- package/src/item-actions.js +19 -55
- package/src/pagination.js +8 -3
- package/src/reset-filters.js +2 -1
- package/src/search-widget.js +182 -15
- package/src/single-selection-checkbox.js +7 -1
- package/src/stories/fixtures.js +12 -1
- package/src/stories/index.story.js +43 -4
- package/src/style.scss +108 -73
- package/src/utils.js +38 -4
- package/src/view-actions.js +1 -1
- package/src/view-grid.js +13 -12
- package/src/view-list.js +2 -1
- package/src/view-table.js +162 -81
|
@@ -15,16 +15,37 @@ import ViewList from './view-list';
|
|
|
15
15
|
export const ENUMERATION_TYPE = 'enumeration';
|
|
16
16
|
|
|
17
17
|
// Filter operators.
|
|
18
|
-
export const
|
|
19
|
-
export const
|
|
18
|
+
export const OPERATOR_IS = 'is';
|
|
19
|
+
export const OPERATOR_IS_NOT = 'isNot';
|
|
20
|
+
export const OPERATOR_IS_ANY = 'isAny';
|
|
21
|
+
export const OPERATOR_IS_NONE = 'isNone';
|
|
22
|
+
export const OPERATOR_IS_ALL = 'isAll';
|
|
23
|
+
export const OPERATOR_IS_NOT_ALL = 'isNotAll';
|
|
24
|
+
export const ALL_OPERATORS = [OPERATOR_IS, OPERATOR_IS_NOT, OPERATOR_IS_ANY, OPERATOR_IS_NONE, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL];
|
|
20
25
|
export const OPERATORS = {
|
|
21
|
-
[
|
|
22
|
-
key: '
|
|
26
|
+
[OPERATOR_IS]: {
|
|
27
|
+
key: 'is-filter',
|
|
23
28
|
label: __('Is')
|
|
24
29
|
},
|
|
25
|
-
[
|
|
26
|
-
key: 'not-
|
|
30
|
+
[OPERATOR_IS_NOT]: {
|
|
31
|
+
key: 'is-not-filter',
|
|
27
32
|
label: __('Is not')
|
|
33
|
+
},
|
|
34
|
+
[OPERATOR_IS_ANY]: {
|
|
35
|
+
key: 'is-any-filter',
|
|
36
|
+
label: __('Is any')
|
|
37
|
+
},
|
|
38
|
+
[OPERATOR_IS_NONE]: {
|
|
39
|
+
key: 'is-none-filter',
|
|
40
|
+
label: __('Is none')
|
|
41
|
+
},
|
|
42
|
+
[OPERATOR_IS_ALL]: {
|
|
43
|
+
key: 'is-all-filter',
|
|
44
|
+
label: __('Is all')
|
|
45
|
+
},
|
|
46
|
+
[OPERATOR_IS_NOT_ALL]: {
|
|
47
|
+
key: 'is-not-all-filter',
|
|
48
|
+
label: __('Is not all')
|
|
28
49
|
}
|
|
29
50
|
};
|
|
30
51
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","ENUMERATION_TYPE","
|
|
1
|
+
{"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","ENUMERATION_TYPE","OPERATOR_IS","OPERATOR_IS_NOT","OPERATOR_IS_ANY","OPERATOR_IS_NONE","OPERATOR_IS_ALL","OPERATOR_IS_NOT_ALL","ALL_OPERATORS","OPERATORS","key","label","SORTING_DIRECTIONS","asc","desc","LAYOUT_TABLE","LAYOUT_GRID","LAYOUT_LIST","VIEW_LAYOUTS","type","component","icon"],"sources":["@wordpress/dataviews/src/constants.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './view-table';\nimport ViewGrid from './view-grid';\nimport ViewList from './view-list';\n\n// Field types.\nexport const ENUMERATION_TYPE = 'enumeration';\n\n// Filter operators.\nexport const OPERATOR_IS = 'is';\nexport const OPERATOR_IS_NOT = 'isNot';\nexport const OPERATOR_IS_ANY = 'isAny';\nexport const OPERATOR_IS_NONE = 'isNone';\nexport const OPERATOR_IS_ALL = 'isAll';\nexport const OPERATOR_IS_NOT_ALL = 'isNotAll';\n\nexport const ALL_OPERATORS = [\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n];\nexport const OPERATORS = {\n\t[ OPERATOR_IS ]: {\n\t\tkey: 'is-filter',\n\t\tlabel: __( 'Is' ),\n\t},\n\t[ OPERATOR_IS_NOT ]: {\n\t\tkey: 'is-not-filter',\n\t\tlabel: __( 'Is not' ),\n\t},\n\t[ OPERATOR_IS_ANY ]: {\n\t\tkey: 'is-any-filter',\n\t\tlabel: __( 'Is any' ),\n\t},\n\t[ OPERATOR_IS_NONE ]: {\n\t\tkey: 'is-none-filter',\n\t\tlabel: __( 'Is none' ),\n\t},\n\t[ OPERATOR_IS_ALL ]: {\n\t\tkey: 'is-all-filter',\n\t\tlabel: __( 'Is all' ),\n\t},\n\t[ OPERATOR_IS_NOT_ALL ]: {\n\t\tkey: 'is-not-all-filter',\n\t\tlabel: __( 'Is not all' ),\n\t},\n};\n\n// Sorting\nexport const SORTING_DIRECTIONS = {\n\tasc: { label: __( 'Sort ascending' ) },\n\tdesc: { label: __( 'Sort descending' ) },\n};\n\n// View layouts.\nexport const LAYOUT_TABLE = 'table';\nexport const LAYOUT_GRID = 'grid';\nexport const LAYOUT_LIST = 'list';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,KAAK,QAAQ,iBAAiB;AAC3C,SACCC,UAAU,EACVC,QAAQ,EACRC,iBAAiB,EACjBC,oBAAoB,QACd,kBAAkB;;AAEzB;AACA;AACA;AACA,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,QAAQ,MAAM,aAAa;AAClC,OAAOC,QAAQ,MAAM,aAAa;;AAElC;AACA,OAAO,MAAMC,gBAAgB,GAAG,aAAa;;AAE7C;AACA,OAAO,MAAMC,WAAW,GAAG,IAAI;AAC/B,OAAO,MAAMC,eAAe,GAAG,OAAO;AACtC,OAAO,MAAMC,eAAe,GAAG,OAAO;AACtC,OAAO,MAAMC,gBAAgB,GAAG,QAAQ;AACxC,OAAO,MAAMC,eAAe,GAAG,OAAO;AACtC,OAAO,MAAMC,mBAAmB,GAAG,UAAU;AAE7C,OAAO,MAAMC,aAAa,GAAG,CAC5BN,WAAW,EACXC,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,eAAe,EACfC,mBAAmB,CACnB;AACD,OAAO,MAAME,SAAS,GAAG;EACxB,CAAEP,WAAW,GAAI;IAChBQ,GAAG,EAAE,WAAW;IAChBC,KAAK,EAAEnB,EAAE,CAAE,IAAK;EACjB,CAAC;EACD,CAAEW,eAAe,GAAI;IACpBO,GAAG,EAAE,eAAe;IACpBC,KAAK,EAAEnB,EAAE,CAAE,QAAS;EACrB,CAAC;EACD,CAAEY,eAAe,GAAI;IACpBM,GAAG,EAAE,eAAe;IACpBC,KAAK,EAAEnB,EAAE,CAAE,QAAS;EACrB,CAAC;EACD,CAAEa,gBAAgB,GAAI;IACrBK,GAAG,EAAE,gBAAgB;IACrBC,KAAK,EAAEnB,EAAE,CAAE,SAAU;EACtB,CAAC;EACD,CAAEc,eAAe,GAAI;IACpBI,GAAG,EAAE,eAAe;IACpBC,KAAK,EAAEnB,EAAE,CAAE,QAAS;EACrB,CAAC;EACD,CAAEe,mBAAmB,GAAI;IACxBG,GAAG,EAAE,mBAAmB;IACxBC,KAAK,EAAEnB,EAAE,CAAE,YAAa;EACzB;AACD,CAAC;;AAED;AACA,OAAO,MAAMoB,kBAAkB,GAAG;EACjCC,GAAG,EAAE;IAAEF,KAAK,EAAEnB,EAAE,CAAE,gBAAiB;EAAE,CAAC;EACtCsB,IAAI,EAAE;IAAEH,KAAK,EAAEnB,EAAE,CAAE,iBAAkB;EAAE;AACxC,CAAC;;AAED;AACA,OAAO,MAAMuB,YAAY,GAAG,OAAO;AACnC,OAAO,MAAMC,WAAW,GAAG,MAAM;AACjC,OAAO,MAAMC,WAAW,GAAG,MAAM;AAEjC,OAAO,MAAMC,YAAY,GAAG,CAC3B;EACCC,IAAI,EAAEJ,YAAY;EAClBJ,KAAK,EAAEnB,EAAE,CAAE,OAAQ,CAAC;EACpB4B,SAAS,EAAEtB,SAAS;EACpBuB,IAAI,EAAE3B;AACP,CAAC,EACD;EACCyB,IAAI,EAAEH,WAAW;EACjBL,KAAK,EAAEnB,EAAE,CAAE,MAAO,CAAC;EACnB4B,SAAS,EAAErB,QAAQ;EACnBsB,IAAI,EAAE1B;AACP,CAAC,EACD;EACCwB,IAAI,EAAEF,WAAW;EACjBN,KAAK,EAAEnB,EAAE,CAAE,MAAO,CAAC;EACnB4B,SAAS,EAAEpB,QAAQ;EACnBqB,IAAI,EAAE5B,KAAK,CAAC,CAAC,GAAGI,oBAAoB,GAAGD;AACxC,CAAC,CACD"}
|
|
@@ -2,7 +2,7 @@ import { createElement } from "react";
|
|
|
2
2
|
/**
|
|
3
3
|
* WordPress dependencies
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { __experimentalHStack as HStack } from '@wordpress/components';
|
|
6
6
|
import { useMemo, useState, useCallback, useEffect } from '@wordpress/element';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -16,13 +16,22 @@ import { VIEW_LAYOUTS, LAYOUT_TABLE, LAYOUT_GRID } from './constants';
|
|
|
16
16
|
import BulkActions from './bulk-actions';
|
|
17
17
|
const defaultGetItemId = item => item.id;
|
|
18
18
|
const defaultOnSelectionChange = () => {};
|
|
19
|
+
function useSomeItemHasAPossibleBulkAction(actions, data) {
|
|
20
|
+
return useMemo(() => {
|
|
21
|
+
return data.some(item => {
|
|
22
|
+
return actions.some(action => {
|
|
23
|
+
return action.supportsBulk && action.isEligible(item);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}, [actions, data]);
|
|
27
|
+
}
|
|
19
28
|
export default function DataViews({
|
|
20
29
|
view,
|
|
21
30
|
onChangeView,
|
|
22
31
|
fields,
|
|
23
32
|
search = true,
|
|
24
33
|
searchLabel = undefined,
|
|
25
|
-
actions,
|
|
34
|
+
actions = [],
|
|
26
35
|
data,
|
|
27
36
|
getItemId = defaultGetItemId,
|
|
28
37
|
isLoading = false,
|
|
@@ -47,25 +56,39 @@ export default function DataViews({
|
|
|
47
56
|
}, [setSelection, getItemId, onSelectionChange]);
|
|
48
57
|
const ViewComponent = VIEW_LAYOUTS.find(v => v.type === view.type).component;
|
|
49
58
|
const _fields = useMemo(() => {
|
|
50
|
-
return fields.map(field =>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
return fields.map(field => {
|
|
60
|
+
const getValue = field.getValue || (({
|
|
61
|
+
item
|
|
62
|
+
}) => item[field.id]);
|
|
63
|
+
return {
|
|
64
|
+
...field,
|
|
65
|
+
getValue,
|
|
66
|
+
render: field.render || getValue
|
|
67
|
+
};
|
|
68
|
+
});
|
|
54
69
|
}, [fields]);
|
|
70
|
+
const hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(actions, data);
|
|
55
71
|
return createElement("div", {
|
|
56
72
|
className: "dataviews-wrapper"
|
|
57
|
-
}, createElement(VStack, {
|
|
58
|
-
spacing: 3,
|
|
59
|
-
justify: "flex-start"
|
|
60
73
|
}, createElement(HStack, {
|
|
61
|
-
alignment: "
|
|
74
|
+
alignment: "top",
|
|
62
75
|
justify: "start",
|
|
63
76
|
className: "dataviews-filters__view-actions"
|
|
77
|
+
}, createElement(HStack, {
|
|
78
|
+
justify: "start",
|
|
79
|
+
className: "dataviews-filters__container",
|
|
80
|
+
wrap: true
|
|
64
81
|
}, search && createElement(Search, {
|
|
65
82
|
label: searchLabel,
|
|
66
83
|
view: view,
|
|
67
84
|
onChangeView: onChangeView
|
|
68
|
-
}),
|
|
85
|
+
}), createElement(Filters, {
|
|
86
|
+
fields: _fields,
|
|
87
|
+
view: view,
|
|
88
|
+
onChangeView: onChangeView,
|
|
89
|
+
openedFilter: openedFilter,
|
|
90
|
+
setOpenedFilter: setOpenedFilter
|
|
91
|
+
})), [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type) && hasPossibleBulkAction && createElement(BulkActions, {
|
|
69
92
|
actions: actions,
|
|
70
93
|
data: data,
|
|
71
94
|
onSelectionChange: onSetSelection,
|
|
@@ -76,16 +99,6 @@ export default function DataViews({
|
|
|
76
99
|
view: view,
|
|
77
100
|
onChangeView: onChangeView,
|
|
78
101
|
supportedLayouts: supportedLayouts
|
|
79
|
-
})), createElement(HStack, {
|
|
80
|
-
justify: "start",
|
|
81
|
-
className: "dataviews-filters__container",
|
|
82
|
-
wrap: true
|
|
83
|
-
}, createElement(Filters, {
|
|
84
|
-
fields: _fields,
|
|
85
|
-
view: view,
|
|
86
|
-
onChangeView: onChangeView,
|
|
87
|
-
openedFilter: openedFilter,
|
|
88
|
-
setOpenedFilter: setOpenedFilter
|
|
89
102
|
})), createElement(ViewComponent, {
|
|
90
103
|
fields: _fields,
|
|
91
104
|
view: view,
|
|
@@ -103,6 +116,6 @@ export default function DataViews({
|
|
|
103
116
|
view: view,
|
|
104
117
|
onChangeView: onChangeView,
|
|
105
118
|
paginationInfo: paginationInfo
|
|
106
|
-
}))
|
|
119
|
+
}));
|
|
107
120
|
}
|
|
108
121
|
//# sourceMappingURL=dataviews.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["__experimentalHStack","HStack","useMemo","useState","useCallback","useEffect","Pagination","ViewActions","Filters","Search","VIEW_LAYOUTS","LAYOUT_TABLE","LAYOUT_GRID","BulkActions","defaultGetItemId","item","id","defaultOnSelectionChange","useSomeItemHasAPossibleBulkAction","actions","data","some","action","supportsBulk","isEligible","DataViews","view","onChangeView","fields","search","searchLabel","undefined","getItemId","isLoading","paginationInfo","supportedLayouts","onSelectionChange","onDetailsChange","deferredRendering","selection","setSelection","openedFilter","setOpenedFilter","length","newSelection","filter","includes","onSetSelection","items","map","ViewComponent","find","v","type","component","_fields","field","getValue","render","hasPossibleBulkAction","createElement","className","alignment","justify","wrap","label"],"sources":["@wordpress/dataviews/src/dataviews.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { useMemo, useState, useCallback, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Pagination from './pagination';\nimport ViewActions from './view-actions';\nimport Filters from './filters';\nimport Search from './search';\nimport { VIEW_LAYOUTS, LAYOUT_TABLE, LAYOUT_GRID } from './constants';\nimport BulkActions from './bulk-actions';\n\nconst defaultGetItemId = ( item ) => item.id;\nconst defaultOnSelectionChange = () => {};\n\nfunction useSomeItemHasAPossibleBulkAction( actions, data ) {\n\treturn useMemo( () => {\n\t\treturn data.some( ( item ) => {\n\t\t\treturn actions.some( ( action ) => {\n\t\t\t\treturn action.supportsBulk && action.isEligible( item );\n\t\t\t} );\n\t\t} );\n\t}, [ actions, data ] );\n}\n\nexport default function DataViews( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = [],\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tsupportedLayouts,\n\tonSelectionChange = defaultOnSelectionChange,\n\tonDetailsChange = null,\n\tdeferredRendering = false,\n} ) {\n\tconst [ selection, setSelection ] = useState( [] );\n\tconst [ openedFilter, setOpenedFilter ] = useState( null );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\tselection.length > 0 &&\n\t\t\tselection.some(\n\t\t\t\t( id ) => ! data.some( ( item ) => getItemId( item ) === id )\n\t\t\t)\n\t\t) {\n\t\t\tconst newSelection = selection.filter( ( id ) =>\n\t\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t\t);\n\t\t\tsetSelection( newSelection );\n\t\t\tonSelectionChange(\n\t\t\t\tdata.filter( ( item ) =>\n\t\t\t\t\tnewSelection.includes( getItemId( item ) )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selection, data, getItemId, onSelectionChange ] );\n\n\tconst onSetSelection = useCallback(\n\t\t( items ) => {\n\t\t\tsetSelection( items.map( ( item ) => getItemId( item ) ) );\n\t\t\tonSelectionChange( items );\n\t\t},\n\t\t[ setSelection, getItemId, onSelectionChange ]\n\t);\n\n\tconst ViewComponent = VIEW_LAYOUTS.find(\n\t\t( v ) => v.type === view.type\n\t).component;\n\tconst _fields = useMemo( () => {\n\t\treturn fields.map( ( field ) => {\n\t\t\tconst getValue =\n\t\t\t\tfield.getValue || ( ( { item } ) => item[ field.id ] );\n\n\t\t\treturn {\n\t\t\t\t...field,\n\t\t\t\tgetValue,\n\t\t\t\trender: field.render || getValue,\n\t\t\t};\n\t\t} );\n\t}, [ fields ] );\n\n\tconst hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(\n\t\tactions,\n\t\tdata\n\t);\n\treturn (\n\t\t<div className=\"dataviews-wrapper\">\n\t\t\t<HStack\n\t\t\t\talignment=\"top\"\n\t\t\t\tjustify=\"start\"\n\t\t\t\tclassName=\"dataviews-filters__view-actions\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\tclassName=\"dataviews-filters__container\"\n\t\t\t\t\twrap\n\t\t\t\t>\n\t\t\t\t\t{ search && (\n\t\t\t\t\t\t<Search\n\t\t\t\t\t\t\tlabel={ searchLabel }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<Filters\n\t\t\t\t\t\tfields={ _fields }\n\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ [ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type ) &&\n\t\t\t\t\thasPossibleBulkAction && (\n\t\t\t\t\t\t<BulkActions\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t<ViewActions\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\tsupportedLayouts={ supportedLayouts }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t\t<ViewComponent\n\t\t\t\tfields={ _fields }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tgetItemId={ getItemId }\n\t\t\t\tisLoading={ isLoading }\n\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\tonDetailsChange={ onDetailsChange }\n\t\t\t\tselection={ selection }\n\t\t\t\tdeferredRendering={ deferredRendering }\n\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t/>\n\t\t\t<Pagination\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -17,30 +17,46 @@ import { ENTER, SPACE } from '@wordpress/keycodes';
|
|
|
17
17
|
* Internal dependencies
|
|
18
18
|
*/
|
|
19
19
|
import SearchWidget from './search-widget';
|
|
20
|
-
import {
|
|
20
|
+
import { OPERATORS, OPERATOR_IS, OPERATOR_IS_NOT, OPERATOR_IS_ANY, OPERATOR_IS_NONE, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL } from './constants';
|
|
21
21
|
const FilterText = ({
|
|
22
|
-
|
|
22
|
+
activeElements,
|
|
23
23
|
filterInView,
|
|
24
24
|
filter
|
|
25
25
|
}) => {
|
|
26
|
-
if (
|
|
26
|
+
if (activeElements === undefined || activeElements.length === 0) {
|
|
27
27
|
return filter.name;
|
|
28
28
|
}
|
|
29
29
|
const filterTextWrappers = {
|
|
30
|
-
|
|
30
|
+
Name: createElement("span", {
|
|
31
31
|
className: "dataviews-filter-summary__filter-text-name"
|
|
32
32
|
}),
|
|
33
|
-
|
|
33
|
+
Value: createElement("span", {
|
|
34
34
|
className: "dataviews-filter-summary__filter-text-value"
|
|
35
35
|
})
|
|
36
36
|
};
|
|
37
|
-
if (
|
|
38
|
-
return createInterpolateElement(sprintf( /* translators: 1: Filter name.
|
|
39
|
-
__('<
|
|
37
|
+
if (filterInView?.operator === OPERATOR_IS_ANY) {
|
|
38
|
+
return createInterpolateElement(sprintf( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is any: Admin, Editor". */
|
|
39
|
+
__('<Name>%1$s is any: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
|
|
40
40
|
}
|
|
41
|
-
if (
|
|
42
|
-
return createInterpolateElement(sprintf( /* translators: 1: Filter name.
|
|
43
|
-
__('<
|
|
41
|
+
if (filterInView?.operator === OPERATOR_IS_NONE) {
|
|
42
|
+
return createInterpolateElement(sprintf( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is none: Admin, Editor". */
|
|
43
|
+
__('<Name>%1$s is none: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
|
|
44
|
+
}
|
|
45
|
+
if (filterInView?.operator === OPERATOR_IS_ALL) {
|
|
46
|
+
return createInterpolateElement(sprintf( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is all: Admin, Editor". */
|
|
47
|
+
__('<Name>%1$s is all: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
|
|
48
|
+
}
|
|
49
|
+
if (filterInView?.operator === OPERATOR_IS_NOT_ALL) {
|
|
50
|
+
return createInterpolateElement(sprintf( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not all: Admin, Editor". */
|
|
51
|
+
__('<Name>%1$s is not all: </Name><Value>%2$s</Value>'), filter.name, activeElements.map(element => element.label).join(', ')), filterTextWrappers);
|
|
52
|
+
}
|
|
53
|
+
if (filterInView?.operator === OPERATOR_IS) {
|
|
54
|
+
return createInterpolateElement(sprintf( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is: Admin". */
|
|
55
|
+
__('<Name>%1$s is: </Name><Value>%2$s</Value>'), filter.name, activeElements[0].label), filterTextWrappers);
|
|
56
|
+
}
|
|
57
|
+
if (filterInView?.operator === OPERATOR_IS_NOT) {
|
|
58
|
+
return createInterpolateElement(sprintf( /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not: Admin". */
|
|
59
|
+
__('<Name>%1$s is not: </Name><Value>%2$s</Value>'), filter.name, activeElements[0].label), filterTextWrappers);
|
|
44
60
|
}
|
|
45
61
|
return sprintf( /* translators: 1: Filter name e.g.: "Unknown status for Author". */
|
|
46
62
|
__('Unknown status for %1$s'), filter.name);
|
|
@@ -102,7 +118,12 @@ export default function FilterSummary({
|
|
|
102
118
|
onChangeView
|
|
103
119
|
} = commonProps;
|
|
104
120
|
const filterInView = view.filters.find(f => f.field === filter.field);
|
|
105
|
-
const
|
|
121
|
+
const activeElements = filter.elements.filter(element => {
|
|
122
|
+
if (filter.singleSelection) {
|
|
123
|
+
return element.value === filterInView?.value;
|
|
124
|
+
}
|
|
125
|
+
return filterInView?.value?.includes(element.value);
|
|
126
|
+
});
|
|
106
127
|
const isPrimary = filter.isPrimary;
|
|
107
128
|
const hasValues = filterInView?.value !== undefined;
|
|
108
129
|
const canResetOrRemove = !isPrimary || hasValues;
|
|
@@ -143,7 +164,7 @@ export default function FilterSummary({
|
|
|
143
164
|
"aria-expanded": isOpen,
|
|
144
165
|
ref: toggleRef
|
|
145
166
|
}, createElement(FilterText, {
|
|
146
|
-
|
|
167
|
+
activeElements: activeElements,
|
|
147
168
|
filterInView: filterInView,
|
|
148
169
|
filter: filter
|
|
149
170
|
}))), canResetOrRemove && createElement(Tooltip, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","Dropdown","__experimentalVStack","VStack","__experimentalHStack","HStack","FlexItem","SelectControl","Tooltip","Icon","__","sprintf","useRef","createInterpolateElement","closeSmall","ENTER","SPACE","SearchWidget","OPERATOR_IN","OPERATOR_NOT_IN","OPERATORS","FilterText","activeElement","filterInView","filter","undefined","name","filterTextWrappers","Span1","createElement","className","Span2","operator","label","OperatorSelector","view","onChangeView","operatorOptions","operators","map","value","currentFilter","filters","find","_filter","field","length","spacing","justify","options","onChange","newValue","newFilters","page","size","__nextHasNoMarginBottom","hideLabelFromVision","FilterSummary","addFilterRef","openedFilter","commonProps","toggleRef","f","elements","element","isPrimary","hasValues","canResetOrRemove","defaultOpen","contentClassName","popoverProps","placement","role","onClose","current","focus","renderToggle","isOpen","onToggle","text","toLowerCase","tabIndex","onClick","onKeyDown","event","includes","keyCode","preventDefault","ref","icon","renderContent"],"sources":["@wordpress/dataviews/src/filter-summary.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDropdown,\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\tFlexItem,\n\tSelectControl,\n\tTooltip,\n\tIcon,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useRef, createInterpolateElement } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport SearchWidget from './search-widget';\nimport { OPERATOR_IN, OPERATOR_NOT_IN, OPERATORS } from './constants';\n\nconst FilterText = ( { activeElement, filterInView, filter } ) => {\n\tif ( activeElement === undefined ) {\n\t\treturn filter.name;\n\t}\n\n\tconst filterTextWrappers = {\n\t\tSpan1: <span className=\"dataviews-filter-summary__filter-text-name\" />,\n\t\tSpan2: <span className=\"dataviews-filter-summary__filter-text-value\" />,\n\t};\n\n\tif (\n\t\tactiveElement !== undefined &&\n\t\tfilterInView?.operator === OPERATOR_IN\n\t) {\n\t\treturn createInterpolateElement(\n\t\t\tsprintf(\n\t\t\t\t/* translators: 1: Filter name. 2: Filter value. e.g.: \"Author is Admin\". */\n\t\t\t\t__( '<Span1>%1$s </Span1><Span2>is %2$s</Span2>' ),\n\t\t\t\tfilter.name,\n\t\t\t\tactiveElement.label\n\t\t\t),\n\t\t\tfilterTextWrappers\n\t\t);\n\t}\n\n\tif (\n\t\tactiveElement !== undefined &&\n\t\tfilterInView?.operator === OPERATOR_NOT_IN\n\t) {\n\t\treturn createInterpolateElement(\n\t\t\tsprintf(\n\t\t\t\t/* translators: 1: Filter name. 2: Filter value. e.g.: \"Author is not Admin\". */\n\t\t\t\t__( '<Span1>%1$s </Span1><Span2>is not %2$s</Span2>' ),\n\t\t\t\tfilter.name,\n\t\t\t\tactiveElement.label\n\t\t\t),\n\t\t\tfilterTextWrappers\n\t\t);\n\t}\n\n\treturn sprintf(\n\t\t/* translators: 1: Filter name e.g.: \"Unknown status for Author\". */\n\t\t__( 'Unknown status for %1$s' ),\n\t\tfilter.name\n\t);\n};\n\nfunction OperatorSelector( { filter, view, onChangeView } ) {\n\tconst operatorOptions = filter.operators?.map( ( operator ) => ( {\n\t\tvalue: operator,\n\t\tlabel: OPERATORS[ operator ]?.label,\n\t} ) );\n\tconst currentFilter = view.filters.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst value = currentFilter?.operator || filter.operators[ 0 ];\n\treturn (\n\t\toperatorOptions.length > 1 && (\n\t\t\t<HStack\n\t\t\t\tspacing={ 2 }\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tclassName=\"dataviews-filter-summary__operators-container\"\n\t\t\t>\n\t\t\t\t<FlexItem className=\"dataviews-filter-summary__operators-filter-name\">\n\t\t\t\t\t{ filter.name }\n\t\t\t\t</FlexItem>\n\n\t\t\t\t<SelectControl\n\t\t\t\t\tlabel={ __( 'Conditions' ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\toptions={ operatorOptions }\n\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t...view.filters.map( ( _filter ) => {\n\t\t\t\t\t\t\t\t\t\tif ( _filter.field === filter.field ) {\n\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: newValue,\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\treturn _filter;\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\t: [\n\t\t\t\t\t\t\t\t\t...view.filters,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\toperator: newValue,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t ];\n\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\tfilters: newFilters,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t)\n\t);\n}\n\nexport default function FilterSummary( {\n\taddFilterRef,\n\topenedFilter,\n\t...commonProps\n} ) {\n\tconst toggleRef = useRef();\n\tconst { filter, view, onChangeView } = commonProps;\n\tconst filterInView = view.filters.find( ( f ) => f.field === filter.field );\n\tconst activeElement = filter.elements.find(\n\t\t( element ) => element.value === filterInView?.value\n\t);\n\tconst isPrimary = filter.isPrimary;\n\tconst hasValues = filterInView?.value !== undefined;\n\tconst canResetOrRemove = ! isPrimary || hasValues;\n\treturn (\n\t\t<Dropdown\n\t\t\tdefaultOpen={ openedFilter === filter.field }\n\t\t\tcontentClassName=\"dataviews-filter-summary__popover\"\n\t\t\tpopoverProps={ { placement: 'bottom-start', role: 'dialog' } }\n\t\t\tonClose={ () => {\n\t\t\t\ttoggleRef.current?.focus();\n\t\t\t} }\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<div className=\"dataviews-filter-summary__chip-container\">\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\ttext={ sprintf(\n\t\t\t\t\t\t\t/* translators: 1: Filter name. */\n\t\t\t\t\t\t\t__( 'Filter by: %1$s' ),\n\t\t\t\t\t\t\tfilter.name.toLowerCase()\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'dataviews-filter-summary__chip',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'has-reset': canResetOrRemove,\n\t\t\t\t\t\t\t\t\t'has-values': hasValues,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\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\tonClick={ onToggle }\n\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t[ ENTER, SPACE ].includes( event.keyCode )\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\taria-pressed={ isOpen }\n\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\tref={ toggleRef }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FilterText\n\t\t\t\t\t\t\t\tactiveElement={ activeElement }\n\t\t\t\t\t\t\t\tfilterInView={ filterInView }\n\t\t\t\t\t\t\t\tfilter={ filter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t\t{ canResetOrRemove && (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\ttext={ isPrimary ? __( 'Reset' ) : __( 'Remove' ) }\n\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'dataviews-filter-summary__chip-remove',\n\t\t\t\t\t\t\t\t\t{ 'has-values': hasValues }\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\tfilters: view.filters.filter(\n\t\t\t\t\t\t\t\t\t\t\t( _filter ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t_filter.field !== filter.field\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// If the filter is not primary and can be removed, it will be added\n\t\t\t\t\t\t\t\t\t// back to the available filters from `Add filter` component.\n\t\t\t\t\t\t\t\t\tif ( ! isPrimary ) {\n\t\t\t\t\t\t\t\t\t\taddFilterRef.current?.focus();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// If is primary, focus the toggle button.\n\t\t\t\t\t\t\t\t\t\ttoggleRef.current?.focus();\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\t\t<Icon icon={ closeSmall } />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\trenderContent={ () => {\n\t\t\t\treturn (\n\t\t\t\t\t<VStack spacing={ 0 } justify=\"flex-start\">\n\t\t\t\t\t\t<OperatorSelector { ...commonProps } />\n\t\t\t\t\t\t<SearchWidget { ...commonProps } />\n\t\t\t\t\t</VStack>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SACCC,QAAQ,EACRC,oBAAoB,IAAIC,MAAM,EAC9BC,oBAAoB,IAAIC,MAAM,EAC9BC,QAAQ,EACRC,aAAa,EACbC,OAAO,EACPC,IAAI,QACE,uBAAuB;AAC9B,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,MAAM,EAAEC,wBAAwB,QAAQ,oBAAoB;AACrE,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,KAAK,EAAEC,KAAK,QAAQ,qBAAqB;;AAElD;AACA;AACA;AACA,OAAOC,YAAY,MAAM,iBAAiB;AAC1C,SAASC,WAAW,EAAEC,eAAe,EAAEC,SAAS,QAAQ,aAAa;AAErE,MAAMC,UAAU,GAAGA,CAAE;EAAEC,aAAa;EAAEC,YAAY;EAAEC;AAAO,CAAC,KAAM;EACjE,IAAKF,aAAa,KAAKG,SAAS,EAAG;IAClC,OAAOD,MAAM,CAACE,IAAI;EACnB;EAEA,MAAMC,kBAAkB,GAAG;IAC1BC,KAAK,EAAEC,aAAA;MAAMC,SAAS,EAAC;IAA4C,CAAE,CAAC;IACtEC,KAAK,EAAEF,aAAA;MAAMC,SAAS,EAAC;IAA6C,CAAE;EACvE,CAAC;EAED,IACCR,aAAa,KAAKG,SAAS,IAC3BF,YAAY,EAAES,QAAQ,KAAKd,WAAW,EACrC;IACD,OAAOL,wBAAwB,CAC9BF,OAAO,EACN;IACAD,EAAE,CAAE,4CAA6C,CAAC,EAClDc,MAAM,CAACE,IAAI,EACXJ,aAAa,CAACW,KACf,CAAC,EACDN,kBACD,CAAC;EACF;EAEA,IACCL,aAAa,KAAKG,SAAS,IAC3BF,YAAY,EAAES,QAAQ,KAAKb,eAAe,EACzC;IACD,OAAON,wBAAwB,CAC9BF,OAAO,EACN;IACAD,EAAE,CAAE,gDAAiD,CAAC,EACtDc,MAAM,CAACE,IAAI,EACXJ,aAAa,CAACW,KACf,CAAC,EACDN,kBACD,CAAC;EACF;EAEA,OAAOhB,OAAO,EACb;EACAD,EAAE,CAAE,yBAA0B,CAAC,EAC/Bc,MAAM,CAACE,IACR,CAAC;AACF,CAAC;AAED,SAASQ,gBAAgBA,CAAE;EAAEV,MAAM;EAAEW,IAAI;EAAEC;AAAa,CAAC,EAAG;EAC3D,MAAMC,eAAe,GAAGb,MAAM,CAACc,SAAS,EAAEC,GAAG,CAAIP,QAAQ,KAAQ;IAChEQ,KAAK,EAAER,QAAQ;IACfC,KAAK,EAAEb,SAAS,CAAEY,QAAQ,CAAE,EAAEC;EAC/B,CAAC,CAAG,CAAC;EACL,MAAMQ,aAAa,GAAGN,IAAI,CAACO,OAAO,CAACC,IAAI,CACpCC,OAAO,IAAMA,OAAO,CAACC,KAAK,KAAKrB,MAAM,CAACqB,KACzC,CAAC;EACD,MAAML,KAAK,GAAGC,aAAa,EAAET,QAAQ,IAAIR,MAAM,CAACc,SAAS,CAAE,CAAC,CAAE;EAC9D,OACCD,eAAe,CAACS,MAAM,GAAG,CAAC,IACzBjB,aAAA,CAACxB,MAAM;IACN0C,OAAO,EAAG,CAAG;IACbC,OAAO,EAAC,YAAY;IACpBlB,SAAS,EAAC;EAA+C,GAEzDD,aAAA,CAACvB,QAAQ;IAACwB,SAAS,EAAC;EAAiD,GAClEN,MAAM,CAACE,IACA,CAAC,EAEXG,aAAA,CAACtB,aAAa;IACb0B,KAAK,EAAGvB,EAAE,CAAE,YAAa,CAAG;IAC5B8B,KAAK,EAAGA,KAAO;IACfS,OAAO,EAAGZ,eAAiB;IAC3Ba,QAAQ,EAAKC,QAAQ,IAAM;MAC1B,MAAMC,UAAU,GAAGX,aAAa,GAC7B,CACA,GAAGN,IAAI,CAACO,OAAO,CAACH,GAAG,CAAIK,OAAO,IAAM;QACnC,IAAKA,OAAO,CAACC,KAAK,KAAKrB,MAAM,CAACqB,KAAK,EAAG;UACrC,OAAO;YACN,GAAGD,OAAO;YACVZ,QAAQ,EAAEmB;UACX,CAAC;QACF;QACA,OAAOP,OAAO;MACf,CAAE,CAAC,CACF,GACD,CACA,GAAGT,IAAI,CAACO,OAAO,EACf;QACCG,KAAK,EAAErB,MAAM,CAACqB,KAAK;QACnBb,QAAQ,EAAEmB;MACX,CAAC,CACA;MACJf,YAAY,CAAE;QACb,GAAGD,IAAI;QACPkB,IAAI,EAAE,CAAC;QACPX,OAAO,EAAEU;MACV,CAAE,CAAC;IACJ,CAAG;IACHE,IAAI,EAAC,OAAO;IACZC,uBAAuB;IACvBC,mBAAmB;EAAA,CACnB,CACM,CACR;AAEH;AAEA,eAAe,SAASC,aAAaA,CAAE;EACtCC,YAAY;EACZC,YAAY;EACZ,GAAGC;AACJ,CAAC,EAAG;EACH,MAAMC,SAAS,GAAGjD,MAAM,CAAC,CAAC;EAC1B,MAAM;IAAEY,MAAM;IAAEW,IAAI;IAAEC;EAAa,CAAC,GAAGwB,WAAW;EAClD,MAAMrC,YAAY,GAAGY,IAAI,CAACO,OAAO,CAACC,IAAI,CAAImB,CAAC,IAAMA,CAAC,CAACjB,KAAK,KAAKrB,MAAM,CAACqB,KAAM,CAAC;EAC3E,MAAMvB,aAAa,GAAGE,MAAM,CAACuC,QAAQ,CAACpB,IAAI,CACvCqB,OAAO,IAAMA,OAAO,CAACxB,KAAK,KAAKjB,YAAY,EAAEiB,KAChD,CAAC;EACD,MAAMyB,SAAS,GAAGzC,MAAM,CAACyC,SAAS;EAClC,MAAMC,SAAS,GAAG3C,YAAY,EAAEiB,KAAK,KAAKf,SAAS;EACnD,MAAM0C,gBAAgB,GAAG,CAAEF,SAAS,IAAIC,SAAS;EACjD,OACCrC,aAAA,CAAC5B,QAAQ;IACRmE,WAAW,EAAGT,YAAY,KAAKnC,MAAM,CAACqB,KAAO;IAC7CwB,gBAAgB,EAAC,mCAAmC;IACpDC,YAAY,EAAG;MAAEC,SAAS,EAAE,cAAc;MAAEC,IAAI,EAAE;IAAS,CAAG;IAC9DC,OAAO,EAAGA,CAAA,KAAM;MACfZ,SAAS,CAACa,OAAO,EAAEC,KAAK,CAAC,CAAC;IAC3B,CAAG;IACHC,YAAY,EAAGA,CAAE;MAAEC,MAAM;MAAEC;IAAS,CAAC,KACpCjD,aAAA;MAAKC,SAAS,EAAC;IAA0C,GACxDD,aAAA,CAACrB,OAAO;MACPuE,IAAI,EAAGpE,OAAO,EACb;MACAD,EAAE,CAAE,iBAAkB,CAAC,EACvBc,MAAM,CAACE,IAAI,CAACsD,WAAW,CAAC,CACzB,CAAG;MACHT,SAAS,EAAC;IAAK,GAEf1C,aAAA;MACCC,SAAS,EAAG9B,UAAU,CACrB,gCAAgC,EAChC;QACC,WAAW,EAAEmE,gBAAgB;QAC7B,YAAY,EAAED;MACf,CACD,CAAG;MACHM,IAAI,EAAC,QAAQ;MACbS,QAAQ,EAAG,CAAG;MACdC,OAAO,EAAGJ,QAAU;MACpBK,SAAS,EAAKC,KAAK,IAAM;QACxB,IACC,CAAErE,KAAK,EAAEC,KAAK,CAAE,CAACqE,QAAQ,CAAED,KAAK,CAACE,OAAQ,CAAC,EACzC;UACDR,QAAQ,CAAC,CAAC;UACVM,KAAK,CAACG,cAAc,CAAC,CAAC;QACvB;MACD,CAAG;MACH,gBAAeV,MAAQ;MACvB,iBAAgBA,MAAQ;MACxBW,GAAG,EAAG3B;IAAW,GAEjBhC,aAAA,CAACR,UAAU;MACVC,aAAa,EAAGA,aAAe;MAC/BC,YAAY,EAAGA,YAAc;MAC7BC,MAAM,EAAGA;IAAQ,CACjB,CACG,CACG,CAAC,EACR2C,gBAAgB,IACjBtC,aAAA,CAACrB,OAAO;MACPuE,IAAI,EAAGd,SAAS,GAAGvD,EAAE,CAAE,OAAQ,CAAC,GAAGA,EAAE,CAAE,QAAS,CAAG;MACnD6D,SAAS,EAAC;IAAK,GAEf1C,aAAA;MACCC,SAAS,EAAG9B,UAAU,CACrB,uCAAuC,EACvC;QAAE,YAAY,EAAEkE;MAAU,CAC3B,CAAG;MACHgB,OAAO,EAAGA,CAAA,KAAM;QACf9C,YAAY,CAAE;UACb,GAAGD,IAAI;UACPkB,IAAI,EAAE,CAAC;UACPX,OAAO,EAAEP,IAAI,CAACO,OAAO,CAAClB,MAAM,CACzBoB,OAAO,IACRA,OAAO,CAACC,KAAK,KAAKrB,MAAM,CAACqB,KAC3B;QACD,CAAE,CAAC;QACH;QACA;QACA,IAAK,CAAEoB,SAAS,EAAG;UAClBP,YAAY,CAACgB,OAAO,EAAEC,KAAK,CAAC,CAAC;QAC9B,CAAC,MAAM;UACN;UACAd,SAAS,CAACa,OAAO,EAAEC,KAAK,CAAC,CAAC;QAC3B;MACD;IAAG,GAEH9C,aAAA,CAACpB,IAAI;MAACgF,IAAI,EAAG3E;IAAY,CAAE,CACpB,CACA,CAEN,CACH;IACH4E,aAAa,EAAGA,CAAA,KAAM;MACrB,OACC7D,aAAA,CAAC1B,MAAM;QAAC4C,OAAO,EAAG,CAAG;QAACC,OAAO,EAAC;MAAY,GACzCnB,aAAA,CAACK,gBAAgB;QAAA,GAAM0B;MAAW,CAAI,CAAC,EACvC/B,aAAA,CAACZ,YAAY;QAAA,GAAM2C;MAAW,CAAI,CAC3B,CAAC;IAEX;EAAG,CACH,CAAC;AAEJ"}
|
|
1
|
+
{"version":3,"names":["classnames","Dropdown","__experimentalVStack","VStack","__experimentalHStack","HStack","FlexItem","SelectControl","Tooltip","Icon","__","sprintf","useRef","createInterpolateElement","closeSmall","ENTER","SPACE","SearchWidget","OPERATORS","OPERATOR_IS","OPERATOR_IS_NOT","OPERATOR_IS_ANY","OPERATOR_IS_NONE","OPERATOR_IS_ALL","OPERATOR_IS_NOT_ALL","FilterText","activeElements","filterInView","filter","undefined","length","name","filterTextWrappers","Name","createElement","className","Value","operator","map","element","label","join","OperatorSelector","view","onChangeView","operatorOptions","operators","value","currentFilter","filters","find","_filter","field","spacing","justify","options","onChange","newValue","newFilters","page","size","__nextHasNoMarginBottom","hideLabelFromVision","FilterSummary","addFilterRef","openedFilter","commonProps","toggleRef","f","elements","singleSelection","includes","isPrimary","hasValues","canResetOrRemove","defaultOpen","contentClassName","popoverProps","placement","role","onClose","current","focus","renderToggle","isOpen","onToggle","text","toLowerCase","tabIndex","onClick","onKeyDown","event","keyCode","preventDefault","ref","icon","renderContent"],"sources":["@wordpress/dataviews/src/filter-summary.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDropdown,\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\tFlexItem,\n\tSelectControl,\n\tTooltip,\n\tIcon,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useRef, createInterpolateElement } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport SearchWidget from './search-widget';\nimport {\n\tOPERATORS,\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n} from './constants';\n\nconst FilterText = ( { activeElements, filterInView, filter } ) => {\n\tif ( activeElements === undefined || activeElements.length === 0 ) {\n\t\treturn filter.name;\n\t}\n\n\tconst filterTextWrappers = {\n\t\tName: <span className=\"dataviews-filter-summary__filter-text-name\" />,\n\t\tValue: <span className=\"dataviews-filter-summary__filter-text-value\" />,\n\t};\n\n\tif ( filterInView?.operator === OPERATOR_IS_ANY ) {\n\t\treturn createInterpolateElement(\n\t\t\tsprintf(\n\t\t\t\t/* translators: 1: Filter name. 3: Filter value. e.g.: \"Author is any: Admin, Editor\". */\n\t\t\t\t__( '<Name>%1$s is any: </Name><Value>%2$s</Value>' ),\n\t\t\t\tfilter.name,\n\t\t\t\tactiveElements.map( ( element ) => element.label ).join( ', ' )\n\t\t\t),\n\t\t\tfilterTextWrappers\n\t\t);\n\t}\n\n\tif ( filterInView?.operator === OPERATOR_IS_NONE ) {\n\t\treturn createInterpolateElement(\n\t\t\tsprintf(\n\t\t\t\t/* translators: 1: Filter name. 3: Filter value. e.g.: \"Author is none: Admin, Editor\". */\n\t\t\t\t__( '<Name>%1$s is none: </Name><Value>%2$s</Value>' ),\n\t\t\t\tfilter.name,\n\t\t\t\tactiveElements.map( ( element ) => element.label ).join( ', ' )\n\t\t\t),\n\t\t\tfilterTextWrappers\n\t\t);\n\t}\n\n\tif ( filterInView?.operator === OPERATOR_IS_ALL ) {\n\t\treturn createInterpolateElement(\n\t\t\tsprintf(\n\t\t\t\t/* translators: 1: Filter name. 3: Filter value. e.g.: \"Author is all: Admin, Editor\". */\n\t\t\t\t__( '<Name>%1$s is all: </Name><Value>%2$s</Value>' ),\n\t\t\t\tfilter.name,\n\t\t\t\tactiveElements.map( ( element ) => element.label ).join( ', ' )\n\t\t\t),\n\t\t\tfilterTextWrappers\n\t\t);\n\t}\n\n\tif ( filterInView?.operator === OPERATOR_IS_NOT_ALL ) {\n\t\treturn createInterpolateElement(\n\t\t\tsprintf(\n\t\t\t\t/* translators: 1: Filter name. 3: Filter value. e.g.: \"Author is not all: Admin, Editor\". */\n\t\t\t\t__( '<Name>%1$s is not all: </Name><Value>%2$s</Value>' ),\n\t\t\t\tfilter.name,\n\t\t\t\tactiveElements.map( ( element ) => element.label ).join( ', ' )\n\t\t\t),\n\t\t\tfilterTextWrappers\n\t\t);\n\t}\n\n\tif ( filterInView?.operator === OPERATOR_IS ) {\n\t\treturn createInterpolateElement(\n\t\t\tsprintf(\n\t\t\t\t/* translators: 1: Filter name. 3: Filter value. e.g.: \"Author is: Admin\". */\n\t\t\t\t__( '<Name>%1$s is: </Name><Value>%2$s</Value>' ),\n\t\t\t\tfilter.name,\n\t\t\t\tactiveElements[ 0 ].label\n\t\t\t),\n\t\t\tfilterTextWrappers\n\t\t);\n\t}\n\n\tif ( filterInView?.operator === OPERATOR_IS_NOT ) {\n\t\treturn createInterpolateElement(\n\t\t\tsprintf(\n\t\t\t\t/* translators: 1: Filter name. 3: Filter value. e.g.: \"Author is not: Admin\". */\n\t\t\t\t__( '<Name>%1$s is not: </Name><Value>%2$s</Value>' ),\n\t\t\t\tfilter.name,\n\t\t\t\tactiveElements[ 0 ].label\n\t\t\t),\n\t\t\tfilterTextWrappers\n\t\t);\n\t}\n\n\treturn sprintf(\n\t\t/* translators: 1: Filter name e.g.: \"Unknown status for Author\". */\n\t\t__( 'Unknown status for %1$s' ),\n\t\tfilter.name\n\t);\n};\n\nfunction OperatorSelector( { filter, view, onChangeView } ) {\n\tconst operatorOptions = filter.operators?.map( ( operator ) => ( {\n\t\tvalue: operator,\n\t\tlabel: OPERATORS[ operator ]?.label,\n\t} ) );\n\tconst currentFilter = view.filters.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst value = currentFilter?.operator || filter.operators[ 0 ];\n\treturn (\n\t\toperatorOptions.length > 1 && (\n\t\t\t<HStack\n\t\t\t\tspacing={ 2 }\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tclassName=\"dataviews-filter-summary__operators-container\"\n\t\t\t>\n\t\t\t\t<FlexItem className=\"dataviews-filter-summary__operators-filter-name\">\n\t\t\t\t\t{ filter.name }\n\t\t\t\t</FlexItem>\n\n\t\t\t\t<SelectControl\n\t\t\t\t\tlabel={ __( 'Conditions' ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\toptions={ operatorOptions }\n\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t...view.filters.map( ( _filter ) => {\n\t\t\t\t\t\t\t\t\t\tif ( _filter.field === filter.field ) {\n\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: newValue,\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\treturn _filter;\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\t: [\n\t\t\t\t\t\t\t\t\t...view.filters,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\toperator: newValue,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t ];\n\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\tfilters: newFilters,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t)\n\t);\n}\n\nexport default function FilterSummary( {\n\taddFilterRef,\n\topenedFilter,\n\t...commonProps\n} ) {\n\tconst toggleRef = useRef();\n\tconst { filter, view, onChangeView } = commonProps;\n\tconst filterInView = view.filters.find( ( f ) => f.field === filter.field );\n\tconst activeElements = filter.elements.filter( ( element ) => {\n\t\tif ( filter.singleSelection ) {\n\t\t\treturn element.value === filterInView?.value;\n\t\t}\n\t\treturn filterInView?.value?.includes( element.value );\n\t} );\n\tconst isPrimary = filter.isPrimary;\n\tconst hasValues = filterInView?.value !== undefined;\n\tconst canResetOrRemove = ! isPrimary || hasValues;\n\treturn (\n\t\t<Dropdown\n\t\t\tdefaultOpen={ openedFilter === filter.field }\n\t\t\tcontentClassName=\"dataviews-filter-summary__popover\"\n\t\t\tpopoverProps={ { placement: 'bottom-start', role: 'dialog' } }\n\t\t\tonClose={ () => {\n\t\t\t\ttoggleRef.current?.focus();\n\t\t\t} }\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<div className=\"dataviews-filter-summary__chip-container\">\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\ttext={ sprintf(\n\t\t\t\t\t\t\t/* translators: 1: Filter name. */\n\t\t\t\t\t\t\t__( 'Filter by: %1$s' ),\n\t\t\t\t\t\t\tfilter.name.toLowerCase()\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'dataviews-filter-summary__chip',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'has-reset': canResetOrRemove,\n\t\t\t\t\t\t\t\t\t'has-values': hasValues,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\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\tonClick={ onToggle }\n\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t[ ENTER, SPACE ].includes( event.keyCode )\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\taria-pressed={ isOpen }\n\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\tref={ toggleRef }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FilterText\n\t\t\t\t\t\t\t\tactiveElements={ activeElements }\n\t\t\t\t\t\t\t\tfilterInView={ filterInView }\n\t\t\t\t\t\t\t\tfilter={ filter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t\t{ canResetOrRemove && (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\ttext={ isPrimary ? __( 'Reset' ) : __( 'Remove' ) }\n\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'dataviews-filter-summary__chip-remove',\n\t\t\t\t\t\t\t\t\t{ 'has-values': hasValues }\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\tfilters: view.filters.filter(\n\t\t\t\t\t\t\t\t\t\t\t( _filter ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t_filter.field !== filter.field\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// If the filter is not primary and can be removed, it will be added\n\t\t\t\t\t\t\t\t\t// back to the available filters from `Add filter` component.\n\t\t\t\t\t\t\t\t\tif ( ! isPrimary ) {\n\t\t\t\t\t\t\t\t\t\taddFilterRef.current?.focus();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// If is primary, focus the toggle button.\n\t\t\t\t\t\t\t\t\t\ttoggleRef.current?.focus();\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\t\t<Icon icon={ closeSmall } />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\trenderContent={ () => {\n\t\t\t\treturn (\n\t\t\t\t\t<VStack spacing={ 0 } justify=\"flex-start\">\n\t\t\t\t\t\t<OperatorSelector { ...commonProps } />\n\t\t\t\t\t\t<SearchWidget { ...commonProps } />\n\t\t\t\t\t</VStack>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|
package/build-module/filters.js
CHANGED
|
@@ -11,7 +11,8 @@ import FilterSummary from './filter-summary';
|
|
|
11
11
|
import AddFilter from './add-filter';
|
|
12
12
|
import ResetFilters from './reset-filters';
|
|
13
13
|
import { sanitizeOperators } from './utils';
|
|
14
|
-
import { ENUMERATION_TYPE,
|
|
14
|
+
import { ENUMERATION_TYPE, ALL_OPERATORS, OPERATOR_IS, OPERATOR_IS_NOT } from './constants';
|
|
15
|
+
import { __experimentalHStack as HStack } from '@wordpress/components';
|
|
15
16
|
const Filters = memo(function Filters({
|
|
16
17
|
fields,
|
|
17
18
|
view,
|
|
@@ -39,8 +40,9 @@ const Filters = memo(function Filters({
|
|
|
39
40
|
field: field.id,
|
|
40
41
|
name: field.header,
|
|
41
42
|
elements: field.elements,
|
|
43
|
+
singleSelection: operators.some(op => [OPERATOR_IS, OPERATOR_IS_NOT].includes(op)),
|
|
42
44
|
operators,
|
|
43
|
-
isVisible: isPrimary || view.filters.some(f => f.field === field.id &&
|
|
45
|
+
isVisible: isPrimary || view.filters.some(f => f.field === field.id && ALL_OPERATORS.includes(f.operator)),
|
|
44
46
|
isPrimary
|
|
45
47
|
});
|
|
46
48
|
}
|
|
@@ -85,7 +87,13 @@ const Filters = memo(function Filters({
|
|
|
85
87
|
onChangeView: onChangeView
|
|
86
88
|
}));
|
|
87
89
|
}
|
|
88
|
-
return
|
|
90
|
+
return createElement(HStack, {
|
|
91
|
+
justify: "flex-start",
|
|
92
|
+
style: {
|
|
93
|
+
width: 'fit-content'
|
|
94
|
+
},
|
|
95
|
+
wrap: true
|
|
96
|
+
}, filterComponents);
|
|
89
97
|
});
|
|
90
98
|
export default Filters;
|
|
91
99
|
//# sourceMappingURL=filters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","useRef","FilterSummary","AddFilter","ResetFilters","sanitizeOperators","ENUMERATION_TYPE","
|
|
1
|
+
{"version":3,"names":["memo","useRef","FilterSummary","AddFilter","ResetFilters","sanitizeOperators","ENUMERATION_TYPE","ALL_OPERATORS","OPERATOR_IS","OPERATOR_IS_NOT","__experimentalHStack","HStack","Filters","fields","view","onChangeView","openedFilter","setOpenedFilter","addFilterRef","filters","forEach","field","type","operators","length","elements","isPrimary","filterBy","push","id","name","header","singleSelection","some","op","includes","isVisible","f","operator","sort","a","b","localeCompare","addFilter","createElement","key","ref","filterComponents","map","filter","justify","style","width","wrap"],"sources":["@wordpress/dataviews/src/filters.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { memo, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport FilterSummary from './filter-summary';\nimport AddFilter from './add-filter';\nimport ResetFilters from './reset-filters';\nimport { sanitizeOperators } from './utils';\nimport {\n\tENUMERATION_TYPE,\n\tALL_OPERATORS,\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n} from './constants';\nimport { __experimentalHStack as HStack } from '@wordpress/components';\n\nconst Filters = memo( function Filters( {\n\tfields,\n\tview,\n\tonChangeView,\n\topenedFilter,\n\tsetOpenedFilter,\n} ) {\n\tconst addFilterRef = useRef();\n\tconst filters = [];\n\tfields.forEach( ( field ) => {\n\t\tif ( ! field.type ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst operators = sanitizeOperators( field );\n\t\tif ( operators.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( field.type ) {\n\t\t\tcase ENUMERATION_TYPE:\n\t\t\t\tif ( ! field.elements?.length ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isPrimary = !! field.filterBy?.isPrimary;\n\t\t\t\tfilters.push( {\n\t\t\t\t\tfield: field.id,\n\t\t\t\t\tname: field.header,\n\t\t\t\t\telements: field.elements,\n\t\t\t\t\tsingleSelection: operators.some( ( op ) =>\n\t\t\t\t\t\t[ OPERATOR_IS, OPERATOR_IS_NOT ].includes( op )\n\t\t\t\t\t),\n\t\t\t\t\toperators,\n\t\t\t\t\tisVisible:\n\t\t\t\t\t\tisPrimary ||\n\t\t\t\t\t\tview.filters.some(\n\t\t\t\t\t\t\t( f ) =>\n\t\t\t\t\t\t\t\tf.field === field.id &&\n\t\t\t\t\t\t\t\tALL_OPERATORS.includes( f.operator )\n\t\t\t\t\t\t),\n\t\t\t\t\tisPrimary,\n\t\t\t\t} );\n\t\t}\n\t} );\n\t// Sort filters by primary property. We need the primary filters to be first.\n\t// Then we sort by name.\n\tfilters.sort( ( a, b ) => {\n\t\tif ( a.isPrimary && ! b.isPrimary ) {\n\t\t\treturn -1;\n\t\t}\n\t\tif ( ! a.isPrimary && b.isPrimary ) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn a.name.localeCompare( b.name );\n\t} );\n\tconst addFilter = (\n\t\t<AddFilter\n\t\t\tkey=\"add-filter\"\n\t\t\tfilters={ filters }\n\t\t\tview={ view }\n\t\t\tonChangeView={ onChangeView }\n\t\t\tref={ addFilterRef }\n\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t/>\n\t);\n\tconst filterComponents = [\n\t\t...filters.map( ( filter ) => {\n\t\t\tif ( ! filter.isVisible ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<FilterSummary\n\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\tfilter={ filter }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\taddFilterRef={ addFilterRef }\n\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t/>\n\t\t\t);\n\t\t} ),\n\t\taddFilter,\n\t];\n\n\tif ( filterComponents.length > 1 ) {\n\t\tfilterComponents.push(\n\t\t\t<ResetFilters\n\t\t\t\tkey=\"reset-filters\"\n\t\t\t\tfilters={ filters }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<HStack justify=\"flex-start\" style={ { width: 'fit-content' } } wrap>\n\t\t\t{ filterComponents }\n\t\t</HStack>\n\t);\n} );\n\nexport default Filters;\n"],"mappings":"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"}
|
|
@@ -94,35 +94,27 @@ export default function ItemActions({
|
|
|
94
94
|
}) {
|
|
95
95
|
const {
|
|
96
96
|
primaryActions,
|
|
97
|
-
|
|
97
|
+
eligibleActions
|
|
98
98
|
} = useMemo(() => {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
} else {
|
|
108
|
-
accumulator.secondaryActions.push(action);
|
|
109
|
-
}
|
|
110
|
-
return accumulator;
|
|
111
|
-
}, {
|
|
112
|
-
primaryActions: [],
|
|
113
|
-
secondaryActions: []
|
|
114
|
-
});
|
|
99
|
+
// If an action is eligible for all items, doesn't need
|
|
100
|
+
// to provide the `isEligible` function.
|
|
101
|
+
const _eligibleActions = actions.filter(action => !action.isEligible || action.isEligible(item));
|
|
102
|
+
const _primaryActions = _eligibleActions.filter(action => action.isPrimary && !!action.icon);
|
|
103
|
+
return {
|
|
104
|
+
primaryActions: _primaryActions,
|
|
105
|
+
eligibleActions: _eligibleActions
|
|
106
|
+
};
|
|
115
107
|
}, [actions, item]);
|
|
116
108
|
if (isCompact) {
|
|
117
109
|
return createElement(CompactItemActions, {
|
|
118
110
|
item: item,
|
|
119
|
-
|
|
120
|
-
secondaryActions: secondaryActions
|
|
111
|
+
actions: eligibleActions
|
|
121
112
|
});
|
|
122
113
|
}
|
|
123
114
|
return createElement(HStack, {
|
|
124
115
|
spacing: 1,
|
|
125
116
|
justify: "flex-end",
|
|
117
|
+
className: "dataviews-item-actions",
|
|
126
118
|
style: {
|
|
127
119
|
flexShrink: '0',
|
|
128
120
|
width: 'auto'
|
|
@@ -141,37 +133,26 @@ export default function ItemActions({
|
|
|
141
133
|
action: action,
|
|
142
134
|
onClick: () => action.callback([item])
|
|
143
135
|
});
|
|
144
|
-
}), createElement(
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
label: __('Actions'),
|
|
149
|
-
disabled: !secondaryActions.length
|
|
150
|
-
}),
|
|
151
|
-
placement: "bottom-end"
|
|
152
|
-
}, createElement(ActionsDropdownMenuGroup, {
|
|
153
|
-
actions: secondaryActions,
|
|
154
|
-
item: item
|
|
155
|
-
})));
|
|
136
|
+
}), createElement(CompactItemActions, {
|
|
137
|
+
item: item,
|
|
138
|
+
actions: eligibleActions
|
|
139
|
+
}));
|
|
156
140
|
}
|
|
157
141
|
function CompactItemActions({
|
|
158
142
|
item,
|
|
159
|
-
|
|
160
|
-
secondaryActions
|
|
143
|
+
actions
|
|
161
144
|
}) {
|
|
162
145
|
return createElement(DropdownMenu, {
|
|
163
146
|
trigger: createElement(Button, {
|
|
164
147
|
size: "compact",
|
|
165
148
|
icon: moreVertical,
|
|
166
149
|
label: __('Actions'),
|
|
167
|
-
disabled: !
|
|
150
|
+
disabled: !actions.length,
|
|
151
|
+
className: "dataviews-all-actions-button"
|
|
168
152
|
}),
|
|
169
153
|
placement: "bottom-end"
|
|
170
|
-
},
|
|
171
|
-
actions:
|
|
172
|
-
item: item
|
|
173
|
-
}), !!secondaryActions.length && createElement(ActionsDropdownMenuGroup, {
|
|
174
|
-
actions: secondaryActions,
|
|
154
|
+
}, createElement(ActionsDropdownMenuGroup, {
|
|
155
|
+
actions: actions,
|
|
175
156
|
item: item
|
|
176
157
|
}));
|
|
177
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Button","Modal","__experimentalHStack","HStack","privateApis","componentsPrivateApis","__","useMemo","useState","moreVertical","unlock","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","kebabCase","ButtonTrigger","action","onClick","createElement","label","icon","isDestructive","size","DropdownMenuItemTrigger","hideOnClick","RenderModal","ActionWithModal","item","ActionTrigger","isModalOpen","setIsModalOpen","actionTriggerProps","hideModalHeader","Fragment","title","modalHeader","__experimentalHideHeader","onRequestClose","overlayClassName","id","items","closeModal","ActionsDropdownMenuGroup","actions","map","key","callback","ItemActions","isCompact","primaryActions","secondaryActions","reduce","accumulator","isEligible","isPrimary","push","CompactItemActions","spacing","justify","style","flexShrink","width","length","trigger","disabled","placement"],"sources":["@wordpress/dataviews/src/item-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalHStack as HStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { moreVertical } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tkebabCase,\n} = unlock( componentsPrivateApis );\n\nfunction ButtonTrigger( { action, onClick } ) {\n\treturn (\n\t\t<Button\n\t\t\tlabel={ action.label }\n\t\t\ticon={ action.icon }\n\t\t\tisDestructive={ action.isDestructive }\n\t\t\tsize=\"compact\"\n\t\t\tonClick={ onClick }\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuItemTrigger( { action, onClick } ) {\n\treturn (\n\t\t<DropdownMenuItem\n\t\t\tonClick={ onClick }\n\t\t\thideOnClick={ ! action.RenderModal }\n\t\t>\n\t\t\t<DropdownMenuItemLabel>{ action.label }</DropdownMenuItemLabel>\n\t\t</DropdownMenuItem>\n\t);\n}\n\nfunction ActionWithModal( { action, item, ActionTrigger } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst actionTriggerProps = {\n\t\taction,\n\t\tonClick: () => setIsModalOpen( true ),\n\t};\n\tconst { RenderModal, hideModalHeader } = action;\n\treturn (\n\t\t<>\n\t\t\t<ActionTrigger { ...actionTriggerProps } />\n\t\t\t{ isModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ action.modalHeader || action.label }\n\t\t\t\t\t__experimentalHideHeader={ !! hideModalHeader }\n\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t\toverlayClassName={ `dataviews-action-modal dataviews-action-modal__${ kebabCase(\n\t\t\t\t\t\taction.id\n\t\t\t\t\t) }` }\n\t\t\t\t>\n\t\t\t\t\t<RenderModal\n\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction ActionsDropdownMenuGroup( { actions, item } ) {\n\treturn (\n\t\t<DropdownMenuGroup>\n\t\t\t{ actions.map( ( action ) => {\n\t\t\t\tif ( !! action.RenderModal ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ActionWithModal\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tActionTrigger={ DropdownMenuItemTrigger }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemTrigger\n\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\tonClick={ () => action.callback( [ item ] ) }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenuGroup>\n\t);\n}\n\nexport default function ItemActions( { item, actions, isCompact } ) {\n\tconst { primaryActions, secondaryActions } = useMemo( () => {\n\t\treturn actions.reduce(\n\t\t\t( accumulator, action ) => {\n\t\t\t\t// If an action is eligible for all items, doesn't need\n\t\t\t\t// to provide the `isEligible` function.\n\t\t\t\tif ( action.isEligible && ! action.isEligible( item ) ) {\n\t\t\t\t\treturn accumulator;\n\t\t\t\t}\n\t\t\t\tif ( action.isPrimary && !! action.icon ) {\n\t\t\t\t\taccumulator.primaryActions.push( action );\n\t\t\t\t} else {\n\t\t\t\t\taccumulator.secondaryActions.push( action );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{ primaryActions: [], secondaryActions: [] }\n\t\t);\n\t}, [ actions, item ] );\n\tif ( isCompact ) {\n\t\treturn (\n\t\t\t<CompactItemActions\n\t\t\t\titem={ item }\n\t\t\t\tprimaryActions={ primaryActions }\n\t\t\t\tsecondaryActions={ secondaryActions }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<HStack\n\t\t\tspacing={ 1 }\n\t\t\tjustify=\"flex-end\"\n\t\t\tstyle={ {\n\t\t\t\tflexShrink: '0',\n\t\t\t\twidth: 'auto',\n\t\t\t} }\n\t\t>\n\t\t\t{ !! primaryActions.length &&\n\t\t\t\tprimaryActions.map( ( action ) => {\n\t\t\t\t\tif ( !! action.RenderModal ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ActionWithModal\n\t\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tActionTrigger={ ButtonTrigger }\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\treturn (\n\t\t\t\t\t\t<ButtonTrigger\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\tonClick={ () => action.callback( [ item ] ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t<DropdownMenu\n\t\t\t\ttrigger={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\tdisabled={ ! secondaryActions.length }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tplacement=\"bottom-end\"\n\t\t\t>\n\t\t\t\t<ActionsDropdownMenuGroup\n\t\t\t\t\tactions={ secondaryActions }\n\t\t\t\t\titem={ item }\n\t\t\t\t/>\n\t\t\t</DropdownMenu>\n\t\t</HStack>\n\t);\n}\n\nfunction CompactItemActions( { item, primaryActions, secondaryActions } ) {\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\t! primaryActions.length && ! secondaryActions.length\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t\tplacement=\"bottom-end\"\n\t\t>\n\t\t\t{ !! primaryActions.length && (\n\t\t\t\t<ActionsDropdownMenuGroup\n\t\t\t\t\tactions={ primaryActions }\n\t\t\t\t\titem={ item }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ !! secondaryActions.length && (\n\t\t\t\t<ActionsDropdownMenuGroup\n\t\t\t\t\tactions={ secondaryActions }\n\t\t\t\t\titem={ item }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Button","Modal","__experimentalHStack","HStack","privateApis","componentsPrivateApis","__","useMemo","useState","moreVertical","unlock","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","kebabCase","ButtonTrigger","action","onClick","createElement","label","icon","isDestructive","size","DropdownMenuItemTrigger","hideOnClick","RenderModal","ActionWithModal","item","ActionTrigger","isModalOpen","setIsModalOpen","actionTriggerProps","hideModalHeader","Fragment","title","modalHeader","__experimentalHideHeader","onRequestClose","overlayClassName","id","items","closeModal","ActionsDropdownMenuGroup","actions","map","key","callback","ItemActions","isCompact","primaryActions","eligibleActions","_eligibleActions","filter","isEligible","_primaryActions","isPrimary","CompactItemActions","spacing","justify","className","style","flexShrink","width","length","trigger","disabled","placement"],"sources":["@wordpress/dataviews/src/item-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalHStack as HStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { moreVertical } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tkebabCase,\n} = unlock( componentsPrivateApis );\n\nfunction ButtonTrigger( { action, onClick } ) {\n\treturn (\n\t\t<Button\n\t\t\tlabel={ action.label }\n\t\t\ticon={ action.icon }\n\t\t\tisDestructive={ action.isDestructive }\n\t\t\tsize=\"compact\"\n\t\t\tonClick={ onClick }\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuItemTrigger( { action, onClick } ) {\n\treturn (\n\t\t<DropdownMenuItem\n\t\t\tonClick={ onClick }\n\t\t\thideOnClick={ ! action.RenderModal }\n\t\t>\n\t\t\t<DropdownMenuItemLabel>{ action.label }</DropdownMenuItemLabel>\n\t\t</DropdownMenuItem>\n\t);\n}\n\nfunction ActionWithModal( { action, item, ActionTrigger } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst actionTriggerProps = {\n\t\taction,\n\t\tonClick: () => setIsModalOpen( true ),\n\t};\n\tconst { RenderModal, hideModalHeader } = action;\n\treturn (\n\t\t<>\n\t\t\t<ActionTrigger { ...actionTriggerProps } />\n\t\t\t{ isModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ action.modalHeader || action.label }\n\t\t\t\t\t__experimentalHideHeader={ !! hideModalHeader }\n\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t\toverlayClassName={ `dataviews-action-modal dataviews-action-modal__${ kebabCase(\n\t\t\t\t\t\taction.id\n\t\t\t\t\t) }` }\n\t\t\t\t>\n\t\t\t\t\t<RenderModal\n\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction ActionsDropdownMenuGroup( { actions, item } ) {\n\treturn (\n\t\t<DropdownMenuGroup>\n\t\t\t{ actions.map( ( action ) => {\n\t\t\t\tif ( !! action.RenderModal ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ActionWithModal\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tActionTrigger={ DropdownMenuItemTrigger }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemTrigger\n\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\tonClick={ () => action.callback( [ item ] ) }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenuGroup>\n\t);\n}\n\nexport default function ItemActions( { item, actions, isCompact } ) {\n\tconst { primaryActions, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryActions: _primaryActions,\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\tif ( isCompact ) {\n\t\treturn <CompactItemActions item={ item } actions={ eligibleActions } />;\n\t}\n\treturn (\n\t\t<HStack\n\t\t\tspacing={ 1 }\n\t\t\tjustify=\"flex-end\"\n\t\t\tclassName=\"dataviews-item-actions\"\n\t\t\tstyle={ {\n\t\t\t\tflexShrink: '0',\n\t\t\t\twidth: 'auto',\n\t\t\t} }\n\t\t>\n\t\t\t{ !! primaryActions.length &&\n\t\t\t\tprimaryActions.map( ( action ) => {\n\t\t\t\t\tif ( !! action.RenderModal ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ActionWithModal\n\t\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tActionTrigger={ ButtonTrigger }\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\treturn (\n\t\t\t\t\t\t<ButtonTrigger\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\tonClick={ () => action.callback( [ item ] ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t<CompactItemActions item={ item } actions={ eligibleActions } />\n\t\t</HStack>\n\t);\n}\n\nfunction CompactItemActions( { item, actions } ) {\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\tclassName=\"dataviews-all-actions-button\"\n\t\t\t\t/>\n\t\t\t}\n\t\t\tplacement=\"bottom-end\"\n\t\t>\n\t\t\t<ActionsDropdownMenuGroup actions={ actions } item={ item } />\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":"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"}
|