@wordpress/dataviews 4.10.0 → 4.11.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 +19 -9
- package/LICENSE.md +1 -1
- package/README.md +309 -175
- package/build/components/dataviews/index.js +12 -1
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews-context/index.js +2 -1
- package/build/components/dataviews-context/index.js.map +1 -1
- package/build/components/dataviews-filters/add-filter.js +35 -30
- package/build/components/dataviews-filters/add-filter.js.map +1 -1
- package/build/components/dataviews-filters/index.js +3 -1
- package/build/components/dataviews-filters/index.js.map +1 -1
- package/build/components/dataviews-item-actions/index.js +24 -19
- package/build/components/dataviews-item-actions/index.js.map +1 -1
- package/build/components/dataviews-layout/index.js +2 -0
- package/build/components/dataviews-layout/index.js.map +1 -1
- package/build/components/dataviews-view-config/index.js +48 -43
- package/build/components/dataviews-view-config/index.js.map +1 -1
- package/build/dataviews-layouts/grid/index.js +12 -5
- package/build/dataviews-layouts/grid/index.js.map +1 -1
- package/build/dataviews-layouts/grid/preview-size-picker.js +22 -25
- package/build/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
- package/build/dataviews-layouts/list/index.js +27 -20
- package/build/dataviews-layouts/list/index.js.map +1 -1
- package/build/dataviews-layouts/table/column-header-menu.js +102 -99
- package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build/dataviews-layouts/table/column-primary.js +7 -3
- package/build/dataviews-layouts/table/column-primary.js.map +1 -1
- package/build/dataviews-layouts/table/index.js +4 -0
- package/build/dataviews-layouts/table/index.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build-module/components/dataviews/index.js +12 -1
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews-context/index.js +2 -1
- package/build-module/components/dataviews-context/index.js.map +1 -1
- package/build-module/components/dataviews-filters/add-filter.js +36 -31
- package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
- package/build-module/components/dataviews-filters/index.js +3 -1
- package/build-module/components/dataviews-filters/index.js.map +1 -1
- package/build-module/components/dataviews-item-actions/index.js +24 -19
- package/build-module/components/dataviews-item-actions/index.js.map +1 -1
- package/build-module/components/dataviews-layout/index.js +2 -0
- package/build-module/components/dataviews-layout/index.js.map +1 -1
- package/build-module/components/dataviews-view-config/index.js +49 -44
- package/build-module/components/dataviews-view-config/index.js.map +1 -1
- package/build-module/dataviews-layouts/grid/index.js +14 -7
- package/build-module/dataviews-layouts/grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/grid/preview-size-picker.js +22 -25
- package/build-module/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
- package/build-module/dataviews-layouts/list/index.js +27 -20
- package/build-module/dataviews-layouts/list/index.js.map +1 -1
- package/build-module/dataviews-layouts/table/column-header-menu.js +102 -99
- package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build-module/dataviews-layouts/table/column-primary.js +7 -3
- package/build-module/dataviews-layouts/table/column-primary.js.map +1 -1
- package/build-module/dataviews-layouts/table/index.js +4 -0
- package/build-module/dataviews-layouts/table/index.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-style/style-rtl.css +45 -55
- package/build-style/style.css +45 -55
- package/build-types/components/dataviews/index.d.ts +2 -1
- package/build-types/components/dataviews/index.d.ts.map +1 -1
- package/build-types/components/dataviews-context/index.d.ts +2 -0
- package/build-types/components/dataviews-context/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/add-filter.d.ts +3 -2
- package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
- package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
- package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/grid/preview-size-picker.d.ts.map +1 -1
- package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/column-primary.d.ts +2 -1
- package/build-types/dataviews-layouts/table/column-primary.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/index.d.ts +1 -1
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/test/dataform.d.ts +2 -0
- package/build-types/test/dataform.d.ts.map +1 -0
- package/build-types/test/dataviews.d.ts +2 -0
- package/build-types/test/dataviews.d.ts.map +1 -0
- package/build-types/test/normalize-fields.d.ts +2 -0
- package/build-types/test/normalize-fields.d.ts.map +1 -0
- package/build-types/test/validation.d.ts +2 -0
- package/build-types/test/validation.d.ts.map +1 -0
- package/build-types/types.d.ts +5 -0
- package/build-types/types.d.ts.map +1 -1
- package/build-wp/index.js +1209 -999
- package/package.json +13 -12
- package/src/components/dataviews/index.tsx +15 -1
- package/src/components/dataviews/style.scss +0 -1
- package/src/components/dataviews-context/index.ts +3 -0
- package/src/components/dataviews-filters/add-filter.tsx +43 -39
- package/src/components/dataviews-filters/index.tsx +1 -1
- package/src/components/dataviews-footer/style.scss +0 -3
- package/src/components/dataviews-item-actions/index.tsx +25 -27
- package/src/components/dataviews-layout/index.tsx +2 -0
- package/src/components/dataviews-view-config/index.tsx +52 -43
- package/src/components/dataviews-view-config/style.scss +0 -1
- package/src/dataviews-layouts/grid/index.tsx +17 -5
- package/src/dataviews-layouts/grid/preview-size-picker.tsx +25 -30
- package/src/dataviews-layouts/grid/style.scss +24 -33
- package/src/dataviews-layouts/list/index.tsx +35 -27
- package/src/dataviews-layouts/list/style.scss +5 -5
- package/src/dataviews-layouts/table/column-header-menu.tsx +152 -148
- package/src/dataviews-layouts/table/column-primary.tsx +7 -0
- package/src/dataviews-layouts/table/index.tsx +10 -0
- package/src/dataviews-layouts/table/style.scss +0 -1
- package/src/test/dataform.tsx +348 -0
- package/src/test/dataviews.tsx +380 -0
- package/src/types.ts +6 -0
- package/tsconfig.json +14 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/form-field-visibility/index.js +0 -32
- package/build/components/form-field-visibility/index.js.map +0 -1
- package/build-module/components/form-field-visibility/index.js +0 -26
- package/build-module/components/form-field-visibility/index.js.map +0 -1
- package/build-types/components/form-field-visibility/index.d.ts +0 -11
- package/build-types/components/form-field-visibility/index.d.ts.map +0 -1
- package/src/components/form-field-visibility/index.tsx +0 -32
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { RangeControl } from '@wordpress/components';
|
|
5
5
|
import { __ } from '@wordpress/i18n';
|
|
6
|
-
import { useViewportMatch } from '@wordpress/compose';
|
|
7
6
|
import { useMemo, useContext } from '@wordpress/element';
|
|
8
7
|
|
|
9
8
|
/**
|
|
@@ -38,36 +37,34 @@ const viewportBreaks = {
|
|
|
38
37
|
default: 2
|
|
39
38
|
}
|
|
40
39
|
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Breakpoints were adjusted from media queries breakpoints to account for
|
|
43
|
+
* the sidebar width. This was done to match the existing styles we had.
|
|
44
|
+
*/
|
|
45
|
+
const BREAKPOINTS = {
|
|
46
|
+
xhuge: 1520,
|
|
47
|
+
huge: 1140,
|
|
48
|
+
xlarge: 780,
|
|
49
|
+
large: 480,
|
|
50
|
+
mobile: 0
|
|
51
|
+
};
|
|
41
52
|
function useViewPortBreakpoint() {
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (isXHuge) {
|
|
48
|
-
return 'xhuge';
|
|
49
|
-
}
|
|
50
|
-
if (isHuge) {
|
|
51
|
-
return 'huge';
|
|
52
|
-
}
|
|
53
|
-
if (isXlarge) {
|
|
54
|
-
return 'xlarge';
|
|
55
|
-
}
|
|
56
|
-
if (isLarge) {
|
|
57
|
-
return 'large';
|
|
58
|
-
}
|
|
59
|
-
if (isMobile) {
|
|
60
|
-
return 'mobile';
|
|
53
|
+
const containerWidth = useContext(DataViewsContext).containerWidth;
|
|
54
|
+
for (const [key, value] of Object.entries(BREAKPOINTS)) {
|
|
55
|
+
if (containerWidth >= value) {
|
|
56
|
+
return key;
|
|
57
|
+
}
|
|
61
58
|
}
|
|
62
|
-
return
|
|
59
|
+
return 'mobile';
|
|
63
60
|
}
|
|
64
61
|
export function useUpdatedPreviewSizeOnViewportChange() {
|
|
65
|
-
const viewport = useViewPortBreakpoint();
|
|
66
62
|
const view = useContext(DataViewsContext).view;
|
|
63
|
+
const viewport = useViewPortBreakpoint();
|
|
67
64
|
return useMemo(() => {
|
|
68
65
|
const previewSize = view.layout?.previewSize;
|
|
69
66
|
let newPreviewSize;
|
|
70
|
-
if (!
|
|
67
|
+
if (!previewSize) {
|
|
71
68
|
return;
|
|
72
69
|
}
|
|
73
70
|
const breakValues = viewportBreaks[viewport];
|
|
@@ -84,7 +81,7 @@ export default function PreviewSizePicker() {
|
|
|
84
81
|
const viewport = useViewPortBreakpoint();
|
|
85
82
|
const context = useContext(DataViewsContext);
|
|
86
83
|
const view = context.view;
|
|
87
|
-
const breakValues = viewportBreaks[viewport
|
|
84
|
+
const breakValues = viewportBreaks[viewport];
|
|
88
85
|
const previewSizeToUse = view.layout?.previewSize || breakValues.default;
|
|
89
86
|
const marks = useMemo(() => Array.from({
|
|
90
87
|
length: breakValues.max - breakValues.min + 1
|
|
@@ -93,7 +90,7 @@ export default function PreviewSizePicker() {
|
|
|
93
90
|
value: breakValues.min + i
|
|
94
91
|
};
|
|
95
92
|
}), [breakValues]);
|
|
96
|
-
if (
|
|
93
|
+
if (viewport === 'mobile') {
|
|
97
94
|
return null;
|
|
98
95
|
}
|
|
99
96
|
return /*#__PURE__*/_jsx(RangeControl, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RangeControl","__","
|
|
1
|
+
{"version":3,"names":["RangeControl","__","useMemo","useContext","DataViewsContext","jsx","_jsx","viewportBreaks","xhuge","min","max","default","huge","xlarge","large","mobile","BREAKPOINTS","useViewPortBreakpoint","containerWidth","key","value","Object","entries","useUpdatedPreviewSizeOnViewportChange","view","viewport","previewSize","layout","newPreviewSize","breakValues","PreviewSizePicker","context","previewSizeToUse","marks","Array","from","length","_","i","__nextHasNoMarginBottom","__next40pxDefaultSize","showTooltip","label","withInputField","onChange","onChangeView","step"],"sources":["@wordpress/dataviews/src/dataviews-layouts/grid/preview-size-picker.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RangeControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../components/dataviews-context';\nimport type { ViewGrid } from '../../types';\n\nconst viewportBreaks: {\n\t[ key: string ]: { min: number; max: number; default: number };\n} = {\n\txhuge: { min: 3, max: 6, default: 5 },\n\thuge: { min: 2, max: 4, default: 4 },\n\txlarge: { min: 2, max: 3, default: 3 },\n\tlarge: { min: 1, max: 2, default: 2 },\n\tmobile: { min: 1, max: 2, default: 2 },\n};\n\n/**\n * Breakpoints were adjusted from media queries breakpoints to account for\n * the sidebar width. This was done to match the existing styles we had.\n */\nconst BREAKPOINTS = {\n\txhuge: 1520,\n\thuge: 1140,\n\txlarge: 780,\n\tlarge: 480,\n\tmobile: 0,\n};\n\nfunction useViewPortBreakpoint() {\n\tconst containerWidth = useContext( DataViewsContext ).containerWidth;\n\tfor ( const [ key, value ] of Object.entries( BREAKPOINTS ) ) {\n\t\tif ( containerWidth >= value ) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn 'mobile';\n}\n\nexport function useUpdatedPreviewSizeOnViewportChange() {\n\tconst view = useContext( DataViewsContext ).view as ViewGrid;\n\tconst viewport = useViewPortBreakpoint();\n\treturn useMemo( () => {\n\t\tconst previewSize = view.layout?.previewSize;\n\t\tlet newPreviewSize;\n\t\tif ( ! previewSize ) {\n\t\t\treturn;\n\t\t}\n\t\tconst breakValues = viewportBreaks[ viewport ];\n\t\tif ( previewSize < breakValues.min ) {\n\t\t\tnewPreviewSize = breakValues.min;\n\t\t}\n\t\tif ( previewSize > breakValues.max ) {\n\t\t\tnewPreviewSize = breakValues.max;\n\t\t}\n\t\treturn newPreviewSize;\n\t}, [ viewport, view ] );\n}\n\nexport default function PreviewSizePicker() {\n\tconst viewport = useViewPortBreakpoint();\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewGrid;\n\tconst breakValues = viewportBreaks[ viewport ];\n\tconst previewSizeToUse = view.layout?.previewSize || breakValues.default;\n\tconst marks = useMemo(\n\t\t() =>\n\t\t\tArray.from(\n\t\t\t\t{ length: breakValues.max - breakValues.min + 1 },\n\t\t\t\t( _, i ) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: breakValues.min + i,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t),\n\t\t[ breakValues ]\n\t);\n\tif ( viewport === 'mobile' ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<RangeControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\t__next40pxDefaultSize\n\t\t\tshowTooltip={ false }\n\t\t\tlabel={ __( 'Preview size' ) }\n\t\t\tvalue={ breakValues.max + breakValues.min - previewSizeToUse }\n\t\t\tmarks={ marks }\n\t\t\tmin={ breakValues.min }\n\t\t\tmax={ breakValues.max }\n\t\t\twithInputField={ false }\n\t\t\tonChange={ ( value = 0 ) => {\n\t\t\t\tcontext.onChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...view.layout,\n\t\t\t\t\t\tpreviewSize: breakValues.max + breakValues.min - value,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tstep={ 1 }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -47,6 +47,8 @@ function PrimaryActionGridCell({
|
|
|
47
47
|
id: compositeItemId,
|
|
48
48
|
render: /*#__PURE__*/_jsx(Button, {
|
|
49
49
|
label: label,
|
|
50
|
+
disabled: !!primaryAction.disabled,
|
|
51
|
+
accessibleWhenDisabled: true,
|
|
50
52
|
icon: primaryAction.icon,
|
|
51
53
|
isDestructive: primaryAction.isDestructive,
|
|
52
54
|
size: "small",
|
|
@@ -64,6 +66,8 @@ function PrimaryActionGridCell({
|
|
|
64
66
|
id: compositeItemId,
|
|
65
67
|
render: /*#__PURE__*/_jsx(Button, {
|
|
66
68
|
label: label,
|
|
69
|
+
disabled: !!primaryAction.disabled,
|
|
70
|
+
accessibleWhenDisabled: true,
|
|
67
71
|
icon: primaryAction.icon,
|
|
68
72
|
isDestructive: primaryAction.isDestructive,
|
|
69
73
|
size: "small",
|
|
@@ -147,25 +151,28 @@ function ListItem({
|
|
|
147
151
|
item: item
|
|
148
152
|
}), !hasOnlyOnePrimaryAction && /*#__PURE__*/_jsxs("div", {
|
|
149
153
|
role: "gridcell",
|
|
150
|
-
children: [/*#__PURE__*/
|
|
151
|
-
trigger: /*#__PURE__*/_jsx(Composite.Item, {
|
|
152
|
-
id: generateDropdownTriggerCompositeId(idPrefix),
|
|
153
|
-
render: /*#__PURE__*/_jsx(Button, {
|
|
154
|
-
size: "small",
|
|
155
|
-
icon: moreVertical,
|
|
156
|
-
label: __('Actions'),
|
|
157
|
-
accessibleWhenDisabled: true,
|
|
158
|
-
disabled: !actions.length,
|
|
159
|
-
onKeyDown: onDropdownTriggerKeyDown
|
|
160
|
-
})
|
|
161
|
-
}),
|
|
154
|
+
children: [/*#__PURE__*/_jsxs(Menu, {
|
|
162
155
|
placement: "bottom-end",
|
|
163
|
-
children: /*#__PURE__*/_jsx(
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
156
|
+
children: [/*#__PURE__*/_jsx(Menu.TriggerButton, {
|
|
157
|
+
render: /*#__PURE__*/_jsx(Composite.Item, {
|
|
158
|
+
id: generateDropdownTriggerCompositeId(idPrefix),
|
|
159
|
+
render: /*#__PURE__*/_jsx(Button, {
|
|
160
|
+
size: "small",
|
|
161
|
+
icon: moreVertical,
|
|
162
|
+
label: __('Actions'),
|
|
163
|
+
accessibleWhenDisabled: true,
|
|
164
|
+
disabled: !actions.length,
|
|
165
|
+
onKeyDown: onDropdownTriggerKeyDown
|
|
166
|
+
})
|
|
167
|
+
})
|
|
168
|
+
}), /*#__PURE__*/_jsx(Menu.Popover, {
|
|
169
|
+
children: /*#__PURE__*/_jsx(ActionsMenuGroup, {
|
|
170
|
+
actions: eligibleActions,
|
|
171
|
+
item: item,
|
|
172
|
+
registry: registry,
|
|
173
|
+
setActiveModalAction: setActiveModalAction
|
|
174
|
+
})
|
|
175
|
+
})]
|
|
169
176
|
}), !!activeModalAction && /*#__PURE__*/_jsx(ActionModal, {
|
|
170
177
|
action: activeModalAction,
|
|
171
178
|
items: [item],
|
|
@@ -175,7 +182,7 @@ function ListItem({
|
|
|
175
182
|
});
|
|
176
183
|
return /*#__PURE__*/_jsx(Composite.Row, {
|
|
177
184
|
ref: itemRef,
|
|
178
|
-
render: /*#__PURE__*/_jsx("
|
|
185
|
+
render: /*#__PURE__*/_jsx("div", {}),
|
|
179
186
|
role: "row",
|
|
180
187
|
className: clsx({
|
|
181
188
|
'is-selected': isSelected,
|
|
@@ -331,7 +338,7 @@ export default function ViewList(props) {
|
|
|
331
338
|
}
|
|
332
339
|
return /*#__PURE__*/_jsx(Composite, {
|
|
333
340
|
id: baseId,
|
|
334
|
-
render: /*#__PURE__*/_jsx("
|
|
341
|
+
render: /*#__PURE__*/_jsx("div", {}),
|
|
335
342
|
className: "dataviews-view-list",
|
|
336
343
|
role: "grid",
|
|
337
344
|
activeId: activeCompositeId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","useInstanceId","usePrevious","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","privateApis","componentsPrivateApis","Spinner","VisuallyHidden","Composite","useCallback","useEffect","useMemo","useRef","useState","__","moreVertical","useRegistry","unlock","ActionsMenuGroup","ActionModal","jsx","_jsx","jsxs","_jsxs","Menu","generateItemWrapperCompositeId","idPrefix","generatePrimaryActionCompositeId","primaryActionId","generateDropdownTriggerCompositeId","PrimaryActionGridCell","primaryAction","item","registry","isModalOpen","setIsModalOpen","compositeItemId","id","label","role","children","Item","render","icon","isDestructive","size","onClick","action","items","closeModal","callback","ListItem","view","actions","isSelected","titleField","mediaField","descriptionField","onSelect","otherFields","onDropdownTriggerKeyDown","showTitle","showMedia","showDescription","itemRef","labelId","descriptionId","isHovered","setIsHovered","activeModalAction","setActiveModalAction","handleHover","type","isHover","current","scrollIntoView","behavior","block","inline","eligibleActions","_eligibleActions","filter","isEligible","_primaryActions","isPrimary","hasOnlyOnePrimaryAction","length","renderedMediaField","className","renderedTitleField","usedActions","spacing","trigger","accessibleWhenDisabled","disabled","onKeyDown","placement","Row","ref","onMouseEnter","onMouseLeave","justify","alignment","map","field","as","isDefined","ViewList","props","_view$fields","data","fields","getItemId","isLoading","onChangeSelection","selection","baseId","selectedItem","findLast","includes","find","fieldId","f","generateCompositeItemIdPrefix","isActiveCompositeItem","idToCheck","startsWith","activeCompositeId","setActiveCompositeId","undefined","activeItemIndex","findIndex","previousActiveItemIndex","isActiveIdInList","selectCompositeItem","targetIndex","generateCompositeId","clampedIndex","Math","min","max","itemIdPrefix","targetCompositeItemId","document","getElementById","focus","wasActiveIdInList","event","key","preventDefault","hasData","activeId","setActiveId"],"sources":["@wordpress/dataviews/src/dataviews-layouts/list/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId, usePrevious } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n\tComposite,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport {\n\tActionsMenuGroup,\n\tActionModal,\n} from '../../components/dataviews-item-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewList as ViewListType,\n\tViewListProps,\n\tActionModal as ActionModalType,\n} from '../../types';\n\ninterface ListViewItemProps< Item > {\n\tview: ViewListType;\n\tactions: Action< Item >[];\n\tidPrefix: string;\n\tisSelected: boolean;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\totherFields: NormalizedField< Item >[];\n\tonDropdownTriggerKeyDown: React.KeyboardEventHandler< HTMLButtonElement >;\n}\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nfunction generateItemWrapperCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-item-wrapper`;\n}\nfunction generatePrimaryActionCompositeId(\n\tidPrefix: string,\n\tprimaryActionId: string\n) {\n\treturn `${ idPrefix }-primary-action-${ primaryActionId }`;\n}\nfunction generateDropdownTriggerCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-dropdown`;\n}\n\nfunction PrimaryActionGridCell< Item >( {\n\tidPrefix,\n\tprimaryAction,\n\titem,\n}: {\n\tidPrefix: string;\n\tprimaryAction: Action< Item >;\n\titem: Item;\n} ) {\n\tconst registry = useRegistry();\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\tconst compositeItemId = generatePrimaryActionCompositeId(\n\t\tidPrefix,\n\t\tprimaryAction.id\n\t);\n\n\tconst label =\n\t\ttypeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] );\n\n\treturn 'RenderModal' in primaryAction ? (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\taction={ primaryAction }\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) }\n\t\t\t</Composite.Item>\n\t\t</div>\n\t) : (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tprimaryAction.callback( [ item ], { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction ListItem< Item >( {\n\tview,\n\tactions,\n\tidPrefix,\n\tisSelected,\n\titem,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tonSelect,\n\totherFields,\n\tonDropdownTriggerKeyDown,\n}: ListViewItemProps< Item > ) {\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst labelId = `${ idPrefix }-label`;\n\tconst descriptionId = `${ idPrefix }-description`;\n\n\tconst registry = useRegistry();\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ activeModalAction, setActiveModalAction ] = useState(\n\t\tnull as ActionModalType< Item > | null\n\t);\n\tconst handleHover: React.MouseEventHandler = ( { type } ) => {\n\t\tconst isHover = type === 'mouseenter';\n\t\tsetIsHovered( isHover );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, 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\tprimaryAction: _primaryActions[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst hasOnlyOnePrimaryAction = primaryAction && actions.length === 1;\n\n\tconst renderedMediaField =\n\t\tshowMedia && mediaField?.render ? (\n\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t<mediaField.render item={ item } />\n\t\t\t</div>\n\t\t) : null;\n\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } />\n\t\t) : null;\n\n\tconst usedActions = eligibleActions?.length > 0 && (\n\t\t<HStack spacing={ 3 } className=\"dataviews-view-list__item-actions\">\n\t\t\t{ primaryAction && (\n\t\t\t\t<PrimaryActionGridCell\n\t\t\t\t\tidPrefix={ idPrefix }\n\t\t\t\t\tprimaryAction={ primaryAction }\n\t\t\t\t\titem={ item }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! hasOnlyOnePrimaryAction && (\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Menu\n\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\tid={ generateDropdownTriggerCompositeId(\n\t\t\t\t\t\t\t\t\tidPrefix\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\tonKeyDown={ onDropdownTriggerKeyDown }\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}\n\t\t\t\t\t\tplacement=\"bottom-end\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Menu>\n\t\t\t\t\t{ !! activeModalAction && (\n\t\t\t\t\t\t<ActionModal\n\t\t\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</HStack>\n\t);\n\n\treturn (\n\t\t<Composite.Row\n\t\t\tref={ itemRef }\n\t\t\trender={ <li /> }\n\t\t\trole=\"row\"\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleHover }\n\t\t\tonMouseLeave={ handleHover }\n\t\t>\n\t\t\t<HStack className=\"dataviews-view-list__item-wrapper\" spacing={ 0 }>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\tid={ generateItemWrapperCompositeId( idPrefix ) }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<HStack spacing={ 3 } justify=\"start\" alignment=\"flex-start\">\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__field-wrapper\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack spacing={ 0 }>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"dataviews-title-field\"\n\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ usedActions }\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__field\">\n\t\t\t\t\t\t\t\t<descriptionField.render item={ item } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ otherFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t<field.render item={ item } />\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</VStack>\n\t\t\t\t</HStack>\n\t\t\t</HStack>\n\t\t</Composite.Row>\n\t);\n}\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport default function ViewList< Item >( props: ViewListProps< Item > ) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonChangeSelection,\n\t\tselection,\n\t\tview,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( getItemId( item ) )\n\t);\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst otherFields = ( view?.fields ?? [] )\n\t\t.map( ( fieldId ) => fields.find( ( f ) => fieldId === f.id ) )\n\t\t.filter( isDefined );\n\n\tconst onSelect = ( item: Item ) =>\n\t\tonChangeSelection( [ getItemId( item ) ] );\n\n\tconst generateCompositeItemIdPrefix = useCallback(\n\t\t( item: Item ) => `${ baseId }-${ getItemId( item ) }`,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst isActiveCompositeItem = useCallback(\n\t\t( item: Item, idToCheck: string ) => {\n\t\t\t// All composite items use the same prefix in their IDs.\n\t\t\treturn idToCheck.startsWith(\n\t\t\t\tgenerateCompositeItemIdPrefix( item )\n\t\t\t);\n\t\t},\n\t\t[ generateCompositeItemIdPrefix ]\n\t);\n\n\t// Controlled state for the active composite item.\n\tconst [ activeCompositeId, setActiveCompositeId ] = useState<\n\t\tstring | null | undefined\n\t>( undefined );\n\n\t// Update the active composite item when the selected item changes.\n\tuseEffect( () => {\n\t\tif ( selectedItem ) {\n\t\t\tsetActiveCompositeId(\n\t\t\t\tgenerateItemWrapperCompositeId(\n\t\t\t\t\tgenerateCompositeItemIdPrefix( selectedItem )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selectedItem, generateCompositeItemIdPrefix ] );\n\n\tconst activeItemIndex = data.findIndex( ( item ) =>\n\t\tisActiveCompositeItem( item, activeCompositeId ?? '' )\n\t);\n\tconst previousActiveItemIndex = usePrevious( activeItemIndex );\n\tconst isActiveIdInList = activeItemIndex !== -1;\n\n\tconst selectCompositeItem = useCallback(\n\t\t(\n\t\t\ttargetIndex: number,\n\t\t\t// Allows invokers to specify a custom function to generate the\n\t\t\t// target composite item ID\n\t\t\tgenerateCompositeId: ( idPrefix: string ) => string\n\t\t) => {\n\t\t\t// Clamping between 0 and data.length - 1 to avoid out of bounds.\n\t\t\tconst clampedIndex = Math.min(\n\t\t\t\tdata.length - 1,\n\t\t\t\tMath.max( 0, targetIndex )\n\t\t\t);\n\t\t\tif ( ! data[ clampedIndex ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst itemIdPrefix = generateCompositeItemIdPrefix(\n\t\t\t\tdata[ clampedIndex ]\n\t\t\t);\n\t\t\tconst targetCompositeItemId = generateCompositeId( itemIdPrefix );\n\n\t\t\tsetActiveCompositeId( targetCompositeItemId );\n\t\t\tdocument.getElementById( targetCompositeItemId )?.focus();\n\t\t},\n\t\t[ data, generateCompositeItemIdPrefix ]\n\t);\n\n\t// Select a new active composite item when the current active item\n\t// is removed from the list.\n\tuseEffect( () => {\n\t\tconst wasActiveIdInList =\n\t\t\tpreviousActiveItemIndex !== undefined &&\n\t\t\tpreviousActiveItemIndex !== -1;\n\t\tif ( ! isActiveIdInList && wasActiveIdInList ) {\n\t\t\t// By picking `previousActiveItemIndex` as the next item index, we are\n\t\t\t// basically picking the item that would have been after the deleted one.\n\t\t\t// If the previously active (and removed) item was the last of the list,\n\t\t\t// we will select the item before it — which is the new last item.\n\t\t\tselectCompositeItem(\n\t\t\t\tpreviousActiveItemIndex,\n\t\t\t\tgenerateItemWrapperCompositeId\n\t\t\t);\n\t\t}\n\t}, [ isActiveIdInList, selectCompositeItem, previousActiveItemIndex ] );\n\n\t// Prevent the default behavior (open dropdown menu) and instead select the\n\t// dropdown menu trigger on the previous/next row.\n\t// https://github.com/ariakit/ariakit/issues/3768\n\tconst onDropdownTriggerKeyDown = useCallback(\n\t\t( event: React.KeyboardEvent< HTMLButtonElement > ) => {\n\t\t\tif ( event.key === 'ArrowDown' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the next row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex + 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ( event.key === 'ArrowUp' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the previous row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex - 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ selectCompositeItem, activeItemIndex ]\n\t);\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Composite\n\t\t\tid={ baseId }\n\t\t\trender={ <ul /> }\n\t\t\tclassName=\"dataviews-view-list\"\n\t\t\trole=\"grid\"\n\t\t\tactiveId={ activeCompositeId }\n\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t>\n\t\t\t{ data.map( ( item ) => {\n\t\t\t\tconst id = generateCompositeItemIdPrefix( item );\n\t\t\t\treturn (\n\t\t\t\t\t<ListItem\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\tonDropdownTriggerKeyDown={ onDropdownTriggerKeyDown }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Composite>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","useInstanceId","usePrevious","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","privateApis","componentsPrivateApis","Spinner","VisuallyHidden","Composite","useCallback","useEffect","useMemo","useRef","useState","__","moreVertical","useRegistry","unlock","ActionsMenuGroup","ActionModal","jsx","_jsx","jsxs","_jsxs","Menu","generateItemWrapperCompositeId","idPrefix","generatePrimaryActionCompositeId","primaryActionId","generateDropdownTriggerCompositeId","PrimaryActionGridCell","primaryAction","item","registry","isModalOpen","setIsModalOpen","compositeItemId","id","label","role","children","Item","render","disabled","accessibleWhenDisabled","icon","isDestructive","size","onClick","action","items","closeModal","callback","ListItem","view","actions","isSelected","titleField","mediaField","descriptionField","onSelect","otherFields","onDropdownTriggerKeyDown","showTitle","showMedia","showDescription","itemRef","labelId","descriptionId","isHovered","setIsHovered","activeModalAction","setActiveModalAction","handleHover","type","isHover","current","scrollIntoView","behavior","block","inline","eligibleActions","_eligibleActions","filter","isEligible","_primaryActions","isPrimary","hasOnlyOnePrimaryAction","length","renderedMediaField","className","renderedTitleField","usedActions","spacing","placement","TriggerButton","onKeyDown","Popover","Row","ref","onMouseEnter","onMouseLeave","justify","alignment","map","field","as","isDefined","ViewList","props","_view$fields","data","fields","getItemId","isLoading","onChangeSelection","selection","baseId","selectedItem","findLast","includes","find","fieldId","f","generateCompositeItemIdPrefix","isActiveCompositeItem","idToCheck","startsWith","activeCompositeId","setActiveCompositeId","undefined","activeItemIndex","findIndex","previousActiveItemIndex","isActiveIdInList","selectCompositeItem","targetIndex","generateCompositeId","clampedIndex","Math","min","max","itemIdPrefix","targetCompositeItemId","document","getElementById","focus","wasActiveIdInList","event","key","preventDefault","hasData","activeId","setActiveId"],"sources":["@wordpress/dataviews/src/dataviews-layouts/list/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId, usePrevious } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n\tComposite,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport {\n\tActionsMenuGroup,\n\tActionModal,\n} from '../../components/dataviews-item-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewList as ViewListType,\n\tViewListProps,\n\tActionModal as ActionModalType,\n} from '../../types';\n\ninterface ListViewItemProps< Item > {\n\tview: ViewListType;\n\tactions: Action< Item >[];\n\tidPrefix: string;\n\tisSelected: boolean;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\totherFields: NormalizedField< Item >[];\n\tonDropdownTriggerKeyDown: React.KeyboardEventHandler< HTMLButtonElement >;\n}\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nfunction generateItemWrapperCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-item-wrapper`;\n}\nfunction generatePrimaryActionCompositeId(\n\tidPrefix: string,\n\tprimaryActionId: string\n) {\n\treturn `${ idPrefix }-primary-action-${ primaryActionId }`;\n}\nfunction generateDropdownTriggerCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-dropdown`;\n}\n\nfunction PrimaryActionGridCell< Item >( {\n\tidPrefix,\n\tprimaryAction,\n\titem,\n}: {\n\tidPrefix: string;\n\tprimaryAction: Action< Item >;\n\titem: Item;\n} ) {\n\tconst registry = useRegistry();\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\tconst compositeItemId = generatePrimaryActionCompositeId(\n\t\tidPrefix,\n\t\tprimaryAction.id\n\t);\n\n\tconst label =\n\t\ttypeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] );\n\n\treturn 'RenderModal' in primaryAction ? (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\taction={ primaryAction }\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) }\n\t\t\t</Composite.Item>\n\t\t</div>\n\t) : (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tprimaryAction.callback( [ item ], { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction ListItem< Item >( {\n\tview,\n\tactions,\n\tidPrefix,\n\tisSelected,\n\titem,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tonSelect,\n\totherFields,\n\tonDropdownTriggerKeyDown,\n}: ListViewItemProps< Item > ) {\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst labelId = `${ idPrefix }-label`;\n\tconst descriptionId = `${ idPrefix }-description`;\n\n\tconst registry = useRegistry();\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ activeModalAction, setActiveModalAction ] = useState(\n\t\tnull as ActionModalType< Item > | null\n\t);\n\tconst handleHover: React.MouseEventHandler = ( { type } ) => {\n\t\tconst isHover = type === 'mouseenter';\n\t\tsetIsHovered( isHover );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, 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\tprimaryAction: _primaryActions[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst hasOnlyOnePrimaryAction = primaryAction && actions.length === 1;\n\n\tconst renderedMediaField =\n\t\tshowMedia && mediaField?.render ? (\n\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t<mediaField.render item={ item } />\n\t\t\t</div>\n\t\t) : null;\n\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } />\n\t\t) : null;\n\n\tconst usedActions = eligibleActions?.length > 0 && (\n\t\t<HStack spacing={ 3 } className=\"dataviews-view-list__item-actions\">\n\t\t\t{ primaryAction && (\n\t\t\t\t<PrimaryActionGridCell\n\t\t\t\t\tidPrefix={ idPrefix }\n\t\t\t\t\tprimaryAction={ primaryAction }\n\t\t\t\t\titem={ item }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! hasOnlyOnePrimaryAction && (\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Menu placement=\"bottom-end\">\n\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\tid={ generateDropdownTriggerCompositeId(\n\t\t\t\t\t\t\t\t\t\tidPrefix\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\tonKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\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/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t</Menu>\n\t\t\t\t\t{ !! activeModalAction && (\n\t\t\t\t\t\t<ActionModal\n\t\t\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</HStack>\n\t);\n\n\treturn (\n\t\t<Composite.Row\n\t\t\tref={ itemRef }\n\t\t\trender={ <div /> }\n\t\t\trole=\"row\"\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleHover }\n\t\t\tonMouseLeave={ handleHover }\n\t\t>\n\t\t\t<HStack className=\"dataviews-view-list__item-wrapper\" spacing={ 0 }>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\tid={ generateItemWrapperCompositeId( idPrefix ) }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<HStack spacing={ 3 } justify=\"start\" alignment=\"flex-start\">\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__field-wrapper\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack spacing={ 0 }>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"dataviews-title-field\"\n\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ usedActions }\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__field\">\n\t\t\t\t\t\t\t\t<descriptionField.render item={ item } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ otherFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t<field.render item={ item } />\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</VStack>\n\t\t\t\t</HStack>\n\t\t\t</HStack>\n\t\t</Composite.Row>\n\t);\n}\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport default function ViewList< Item >( props: ViewListProps< Item > ) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonChangeSelection,\n\t\tselection,\n\t\tview,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( getItemId( item ) )\n\t);\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst otherFields = ( view?.fields ?? [] )\n\t\t.map( ( fieldId ) => fields.find( ( f ) => fieldId === f.id ) )\n\t\t.filter( isDefined );\n\n\tconst onSelect = ( item: Item ) =>\n\t\tonChangeSelection( [ getItemId( item ) ] );\n\n\tconst generateCompositeItemIdPrefix = useCallback(\n\t\t( item: Item ) => `${ baseId }-${ getItemId( item ) }`,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst isActiveCompositeItem = useCallback(\n\t\t( item: Item, idToCheck: string ) => {\n\t\t\t// All composite items use the same prefix in their IDs.\n\t\t\treturn idToCheck.startsWith(\n\t\t\t\tgenerateCompositeItemIdPrefix( item )\n\t\t\t);\n\t\t},\n\t\t[ generateCompositeItemIdPrefix ]\n\t);\n\n\t// Controlled state for the active composite item.\n\tconst [ activeCompositeId, setActiveCompositeId ] = useState<\n\t\tstring | null | undefined\n\t>( undefined );\n\n\t// Update the active composite item when the selected item changes.\n\tuseEffect( () => {\n\t\tif ( selectedItem ) {\n\t\t\tsetActiveCompositeId(\n\t\t\t\tgenerateItemWrapperCompositeId(\n\t\t\t\t\tgenerateCompositeItemIdPrefix( selectedItem )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selectedItem, generateCompositeItemIdPrefix ] );\n\n\tconst activeItemIndex = data.findIndex( ( item ) =>\n\t\tisActiveCompositeItem( item, activeCompositeId ?? '' )\n\t);\n\tconst previousActiveItemIndex = usePrevious( activeItemIndex );\n\tconst isActiveIdInList = activeItemIndex !== -1;\n\n\tconst selectCompositeItem = useCallback(\n\t\t(\n\t\t\ttargetIndex: number,\n\t\t\t// Allows invokers to specify a custom function to generate the\n\t\t\t// target composite item ID\n\t\t\tgenerateCompositeId: ( idPrefix: string ) => string\n\t\t) => {\n\t\t\t// Clamping between 0 and data.length - 1 to avoid out of bounds.\n\t\t\tconst clampedIndex = Math.min(\n\t\t\t\tdata.length - 1,\n\t\t\t\tMath.max( 0, targetIndex )\n\t\t\t);\n\t\t\tif ( ! data[ clampedIndex ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst itemIdPrefix = generateCompositeItemIdPrefix(\n\t\t\t\tdata[ clampedIndex ]\n\t\t\t);\n\t\t\tconst targetCompositeItemId = generateCompositeId( itemIdPrefix );\n\n\t\t\tsetActiveCompositeId( targetCompositeItemId );\n\t\t\tdocument.getElementById( targetCompositeItemId )?.focus();\n\t\t},\n\t\t[ data, generateCompositeItemIdPrefix ]\n\t);\n\n\t// Select a new active composite item when the current active item\n\t// is removed from the list.\n\tuseEffect( () => {\n\t\tconst wasActiveIdInList =\n\t\t\tpreviousActiveItemIndex !== undefined &&\n\t\t\tpreviousActiveItemIndex !== -1;\n\t\tif ( ! isActiveIdInList && wasActiveIdInList ) {\n\t\t\t// By picking `previousActiveItemIndex` as the next item index, we are\n\t\t\t// basically picking the item that would have been after the deleted one.\n\t\t\t// If the previously active (and removed) item was the last of the list,\n\t\t\t// we will select the item before it — which is the new last item.\n\t\t\tselectCompositeItem(\n\t\t\t\tpreviousActiveItemIndex,\n\t\t\t\tgenerateItemWrapperCompositeId\n\t\t\t);\n\t\t}\n\t}, [ isActiveIdInList, selectCompositeItem, previousActiveItemIndex ] );\n\n\t// Prevent the default behavior (open dropdown menu) and instead select the\n\t// dropdown menu trigger on the previous/next row.\n\t// https://github.com/ariakit/ariakit/issues/3768\n\tconst onDropdownTriggerKeyDown = useCallback(\n\t\t( event: React.KeyboardEvent< HTMLButtonElement > ) => {\n\t\t\tif ( event.key === 'ArrowDown' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the next row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex + 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ( event.key === 'ArrowUp' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the previous row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex - 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ selectCompositeItem, activeItemIndex ]\n\t);\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Composite\n\t\t\tid={ baseId }\n\t\t\trender={ <div /> }\n\t\t\tclassName=\"dataviews-view-list\"\n\t\t\trole=\"grid\"\n\t\t\tactiveId={ activeCompositeId }\n\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t>\n\t\t\t{ data.map( ( item ) => {\n\t\t\t\tconst id = generateCompositeItemIdPrefix( item );\n\t\t\t\treturn (\n\t\t\t\t\t<ListItem\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\tonDropdownTriggerKeyDown={ onDropdownTriggerKeyDown }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Composite>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -59,118 +59,121 @@ const _HeaderMenu = forwardRef(function HeaderMenu({
|
|
|
59
59
|
// 2. If the field meets the type and operator requirements.
|
|
60
60
|
// 3. If it's not primary. If it is, it should be already visible.
|
|
61
61
|
canAddFilter = !view.filters?.some(_filter => fieldId === _filter.field) && !!field.elements?.length && !!operators.length && !field.filterBy?.isPrimary;
|
|
62
|
-
return /*#__PURE__*/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
return /*#__PURE__*/_jsxs(Menu, {
|
|
63
|
+
children: [/*#__PURE__*/_jsxs(Menu.TriggerButton, {
|
|
64
|
+
render: /*#__PURE__*/_jsx(Button, {
|
|
65
|
+
size: "compact",
|
|
66
|
+
className: "dataviews-view-table-header-button",
|
|
67
|
+
ref: ref,
|
|
68
|
+
variant: "tertiary"
|
|
69
|
+
}),
|
|
69
70
|
children: [header, view.sort && isSorted && /*#__PURE__*/_jsx("span", {
|
|
70
71
|
"aria-hidden": "true",
|
|
71
72
|
children: sortArrows[view.sort.direction]
|
|
72
73
|
})]
|
|
73
|
-
}),
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
74
|
+
}), /*#__PURE__*/_jsx(Menu.Popover, {
|
|
75
|
+
style: {
|
|
76
|
+
minWidth: '240px'
|
|
77
|
+
},
|
|
78
|
+
children: /*#__PURE__*/_jsxs(WithMenuSeparators, {
|
|
79
|
+
children: [isSortable && /*#__PURE__*/_jsx(Menu.Group, {
|
|
80
|
+
children: SORTING_DIRECTIONS.map(direction => {
|
|
81
|
+
const isChecked = view.sort && isSorted && view.sort.direction === direction;
|
|
82
|
+
const value = `${fieldId}-${direction}`;
|
|
83
|
+
return /*#__PURE__*/_jsx(Menu.RadioItem, {
|
|
84
|
+
// All sorting radio items share the same name, so that
|
|
85
|
+
// selecting a sorting option automatically deselects the
|
|
86
|
+
// previously selected one, even if it is displayed in
|
|
87
|
+
// another submenu. The field and direction are passed via
|
|
88
|
+
// the `value` prop.
|
|
89
|
+
name: "view-table-sorting",
|
|
90
|
+
value: value,
|
|
91
|
+
checked: isChecked,
|
|
92
|
+
onChange: () => {
|
|
93
|
+
onChangeView({
|
|
94
|
+
...view,
|
|
95
|
+
sort: {
|
|
96
|
+
field: fieldId,
|
|
97
|
+
direction
|
|
98
|
+
},
|
|
99
|
+
showLevels: false
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
|
|
103
|
+
children: sortLabels[direction]
|
|
104
|
+
})
|
|
105
|
+
}, value);
|
|
106
|
+
})
|
|
107
|
+
}), canAddFilter && /*#__PURE__*/_jsx(Menu.Group, {
|
|
108
|
+
children: /*#__PURE__*/_jsx(Menu.Item, {
|
|
109
|
+
prefix: /*#__PURE__*/_jsx(Icon, {
|
|
110
|
+
icon: funnel
|
|
111
|
+
}),
|
|
112
|
+
onClick: () => {
|
|
113
|
+
setOpenedFilter(fieldId);
|
|
92
114
|
onChangeView({
|
|
93
115
|
...view,
|
|
94
|
-
|
|
116
|
+
page: 1,
|
|
117
|
+
filters: [...(view.filters || []), {
|
|
95
118
|
field: fieldId,
|
|
96
|
-
|
|
97
|
-
|
|
119
|
+
value: undefined,
|
|
120
|
+
operator: operators[0]
|
|
121
|
+
}]
|
|
98
122
|
});
|
|
99
123
|
},
|
|
100
124
|
children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
|
|
101
|
-
children:
|
|
125
|
+
children: __('Add filter')
|
|
102
126
|
})
|
|
103
|
-
}, value);
|
|
104
|
-
})
|
|
105
|
-
}), canAddFilter && /*#__PURE__*/_jsx(Menu.Group, {
|
|
106
|
-
children: /*#__PURE__*/_jsx(Menu.Item, {
|
|
107
|
-
prefix: /*#__PURE__*/_jsx(Icon, {
|
|
108
|
-
icon: funnel
|
|
109
|
-
}),
|
|
110
|
-
onClick: () => {
|
|
111
|
-
setOpenedFilter(fieldId);
|
|
112
|
-
onChangeView({
|
|
113
|
-
...view,
|
|
114
|
-
page: 1,
|
|
115
|
-
filters: [...(view.filters || []), {
|
|
116
|
-
field: fieldId,
|
|
117
|
-
value: undefined,
|
|
118
|
-
operator: operators[0]
|
|
119
|
-
}]
|
|
120
|
-
});
|
|
121
|
-
},
|
|
122
|
-
children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
|
|
123
|
-
children: __('Add filter')
|
|
124
|
-
})
|
|
125
|
-
})
|
|
126
|
-
}), (canMove || isHidable) && field && /*#__PURE__*/_jsxs(Menu.Group, {
|
|
127
|
-
children: [canMove && /*#__PURE__*/_jsx(Menu.Item, {
|
|
128
|
-
prefix: /*#__PURE__*/_jsx(Icon, {
|
|
129
|
-
icon: arrowLeft
|
|
130
|
-
}),
|
|
131
|
-
disabled: index < 1,
|
|
132
|
-
onClick: () => {
|
|
133
|
-
var _visibleFieldIds$slic;
|
|
134
|
-
onChangeView({
|
|
135
|
-
...view,
|
|
136
|
-
fields: [...((_visibleFieldIds$slic = visibleFieldIds.slice(0, index - 1)) !== null && _visibleFieldIds$slic !== void 0 ? _visibleFieldIds$slic : []), fieldId, visibleFieldIds[index - 1], ...visibleFieldIds.slice(index + 1)]
|
|
137
|
-
});
|
|
138
|
-
},
|
|
139
|
-
children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
|
|
140
|
-
children: __('Move left')
|
|
141
|
-
})
|
|
142
|
-
}), canMove && /*#__PURE__*/_jsx(Menu.Item, {
|
|
143
|
-
prefix: /*#__PURE__*/_jsx(Icon, {
|
|
144
|
-
icon: arrowRight
|
|
145
|
-
}),
|
|
146
|
-
disabled: index >= visibleFieldIds.length - 1,
|
|
147
|
-
onClick: () => {
|
|
148
|
-
var _visibleFieldIds$slic2;
|
|
149
|
-
onChangeView({
|
|
150
|
-
...view,
|
|
151
|
-
fields: [...((_visibleFieldIds$slic2 = visibleFieldIds.slice(0, index)) !== null && _visibleFieldIds$slic2 !== void 0 ? _visibleFieldIds$slic2 : []), visibleFieldIds[index + 1], fieldId, ...visibleFieldIds.slice(index + 2)]
|
|
152
|
-
});
|
|
153
|
-
},
|
|
154
|
-
children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
|
|
155
|
-
children: __('Move right')
|
|
156
|
-
})
|
|
157
|
-
}), isHidable && field && /*#__PURE__*/_jsx(Menu.Item, {
|
|
158
|
-
prefix: /*#__PURE__*/_jsx(Icon, {
|
|
159
|
-
icon: unseen
|
|
160
|
-
}),
|
|
161
|
-
onClick: () => {
|
|
162
|
-
onHide(field);
|
|
163
|
-
onChangeView({
|
|
164
|
-
...view,
|
|
165
|
-
fields: visibleFieldIds.filter(id => id !== fieldId)
|
|
166
|
-
});
|
|
167
|
-
},
|
|
168
|
-
children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
|
|
169
|
-
children: __('Hide column')
|
|
170
127
|
})
|
|
128
|
+
}), (canMove || isHidable) && field && /*#__PURE__*/_jsxs(Menu.Group, {
|
|
129
|
+
children: [canMove && /*#__PURE__*/_jsx(Menu.Item, {
|
|
130
|
+
prefix: /*#__PURE__*/_jsx(Icon, {
|
|
131
|
+
icon: arrowLeft
|
|
132
|
+
}),
|
|
133
|
+
disabled: index < 1,
|
|
134
|
+
onClick: () => {
|
|
135
|
+
var _visibleFieldIds$slic;
|
|
136
|
+
onChangeView({
|
|
137
|
+
...view,
|
|
138
|
+
fields: [...((_visibleFieldIds$slic = visibleFieldIds.slice(0, index - 1)) !== null && _visibleFieldIds$slic !== void 0 ? _visibleFieldIds$slic : []), fieldId, visibleFieldIds[index - 1], ...visibleFieldIds.slice(index + 1)]
|
|
139
|
+
});
|
|
140
|
+
},
|
|
141
|
+
children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
|
|
142
|
+
children: __('Move left')
|
|
143
|
+
})
|
|
144
|
+
}), canMove && /*#__PURE__*/_jsx(Menu.Item, {
|
|
145
|
+
prefix: /*#__PURE__*/_jsx(Icon, {
|
|
146
|
+
icon: arrowRight
|
|
147
|
+
}),
|
|
148
|
+
disabled: index >= visibleFieldIds.length - 1,
|
|
149
|
+
onClick: () => {
|
|
150
|
+
var _visibleFieldIds$slic2;
|
|
151
|
+
onChangeView({
|
|
152
|
+
...view,
|
|
153
|
+
fields: [...((_visibleFieldIds$slic2 = visibleFieldIds.slice(0, index)) !== null && _visibleFieldIds$slic2 !== void 0 ? _visibleFieldIds$slic2 : []), visibleFieldIds[index + 1], fieldId, ...visibleFieldIds.slice(index + 2)]
|
|
154
|
+
});
|
|
155
|
+
},
|
|
156
|
+
children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
|
|
157
|
+
children: __('Move right')
|
|
158
|
+
})
|
|
159
|
+
}), isHidable && field && /*#__PURE__*/_jsx(Menu.Item, {
|
|
160
|
+
prefix: /*#__PURE__*/_jsx(Icon, {
|
|
161
|
+
icon: unseen
|
|
162
|
+
}),
|
|
163
|
+
onClick: () => {
|
|
164
|
+
onHide(field);
|
|
165
|
+
onChangeView({
|
|
166
|
+
...view,
|
|
167
|
+
fields: visibleFieldIds.filter(id => id !== fieldId)
|
|
168
|
+
});
|
|
169
|
+
},
|
|
170
|
+
children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
|
|
171
|
+
children: __('Hide column')
|
|
172
|
+
})
|
|
173
|
+
})]
|
|
171
174
|
})]
|
|
172
|
-
})
|
|
173
|
-
})
|
|
175
|
+
})
|
|
176
|
+
})]
|
|
174
177
|
});
|
|
175
178
|
});
|
|
176
179
|
|