@wordpress/dataviews 4.8.0 → 4.9.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 +7 -2
- package/README.md +206 -17
- package/build/components/dataform/index.js +20 -8
- package/build/components/dataform/index.js.map +1 -1
- package/build/components/dataform-context/index.js +33 -0
- package/build/components/dataform-context/index.js.map +1 -0
- package/build/components/dataviews/index.js +3 -7
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews-context/index.js +1 -2
- package/build/components/dataviews-context/index.js.map +1 -1
- package/build/components/dataviews-filters/index.js +49 -31
- package/build/components/dataviews-filters/index.js.map +1 -1
- package/build/components/dataviews-item-actions/index.js +46 -20
- package/build/components/dataviews-item-actions/index.js.map +1 -1
- package/build/components/dataviews-layout/index.js +1 -3
- package/build/components/dataviews-layout/index.js.map +1 -1
- package/build/components/dataviews-view-config/index.js +4 -15
- package/build/components/dataviews-view-config/index.js.map +1 -1
- package/build/dataforms-layouts/data-form-layout.js +59 -0
- package/build/dataforms-layouts/data-form-layout.js.map +1 -0
- package/build/dataforms-layouts/index.js +4 -4
- package/build/dataforms-layouts/index.js.map +1 -1
- package/build/dataforms-layouts/is-combined-field.js +14 -0
- package/build/dataforms-layouts/is-combined-field.js.map +1 -0
- package/build/dataforms-layouts/panel/index.js +157 -72
- package/build/dataforms-layouts/panel/index.js.map +1 -1
- package/build/dataforms-layouts/regular/index.js +85 -19
- package/build/dataforms-layouts/regular/index.js.map +1 -1
- package/build/dataviews-layouts/grid/index.js +9 -9
- package/build/dataviews-layouts/grid/index.js.map +1 -1
- package/build/dataviews-layouts/grid/{density-picker.js → preview-size-picker.js} +40 -24
- package/build/dataviews-layouts/grid/preview-size-picker.js.map +1 -0
- package/build/dataviews-layouts/index.js +6 -2
- package/build/dataviews-layouts/index.js.map +1 -1
- package/build/dataviews-layouts/list/index.js +3 -2
- package/build/dataviews-layouts/list/index.js.map +1 -1
- package/build/dataviews-layouts/table/density-picker.js +51 -0
- package/build/dataviews-layouts/table/density-picker.js.map +1 -0
- package/build/dataviews-layouts/table/index.js +4 -1
- package/build/dataviews-layouts/table/index.js.map +1 -1
- package/build/normalize-fields.js +0 -21
- package/build/normalize-fields.js.map +1 -1
- package/build/normalize-form-fields.js +36 -0
- package/build/normalize-form-fields.js.map +1 -0
- package/build/types.js.map +1 -1
- package/build/validation.js.map +1 -1
- package/build-module/components/dataform/index.js +20 -8
- package/build-module/components/dataform/index.js.map +1 -1
- package/build-module/components/dataform-context/index.js +25 -0
- package/build-module/components/dataform-context/index.js.map +1 -0
- package/build-module/components/dataviews/index.js +4 -8
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews-context/index.js +1 -2
- package/build-module/components/dataviews-context/index.js.map +1 -1
- package/build-module/components/dataviews-filters/index.js +50 -32
- package/build-module/components/dataviews-filters/index.js.map +1 -1
- package/build-module/components/dataviews-item-actions/index.js +46 -20
- package/build-module/components/dataviews-item-actions/index.js.map +1 -1
- package/build-module/components/dataviews-layout/index.js +1 -3
- package/build-module/components/dataviews-layout/index.js.map +1 -1
- package/build-module/components/dataviews-view-config/index.js +5 -16
- package/build-module/components/dataviews-view-config/index.js.map +1 -1
- package/build-module/dataforms-layouts/data-form-layout.js +52 -0
- package/build-module/dataforms-layouts/data-form-layout.js.map +1 -0
- package/build-module/dataforms-layouts/index.js +7 -7
- package/build-module/dataforms-layouts/index.js.map +1 -1
- package/build-module/dataforms-layouts/is-combined-field.js +8 -0
- package/build-module/dataforms-layouts/is-combined-field.js.map +1 -0
- package/build-module/dataforms-layouts/panel/index.js +157 -71
- package/build-module/dataforms-layouts/panel/index.js.map +1 -1
- package/build-module/dataforms-layouts/regular/index.js +87 -20
- package/build-module/dataforms-layouts/regular/index.js.map +1 -1
- package/build-module/dataviews-layouts/grid/index.js +9 -9
- package/build-module/dataviews-layouts/grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/grid/{density-picker.js → preview-size-picker.js} +38 -24
- package/build-module/dataviews-layouts/grid/preview-size-picker.js.map +1 -0
- package/build-module/dataviews-layouts/index.js +6 -2
- package/build-module/dataviews-layouts/index.js.map +1 -1
- package/build-module/dataviews-layouts/list/index.js +3 -2
- package/build-module/dataviews-layouts/list/index.js.map +1 -1
- package/build-module/dataviews-layouts/table/density-picker.js +43 -0
- package/build-module/dataviews-layouts/table/density-picker.js.map +1 -0
- package/build-module/dataviews-layouts/table/index.js +4 -1
- package/build-module/dataviews-layouts/table/index.js.map +1 -1
- package/build-module/normalize-fields.js +0 -20
- package/build-module/normalize-fields.js.map +1 -1
- package/build-module/normalize-form-fields.js +30 -0
- package/build-module/normalize-form-fields.js.map +1 -0
- package/build-module/types.js.map +1 -1
- package/build-module/validation.js.map +1 -1
- package/build-style/style-rtl.css +54 -13
- package/build-style/style.css +54 -13
- package/build-types/components/dataform/index.d.ts +1 -1
- package/build-types/components/dataform/index.d.ts.map +1 -1
- package/build-types/components/dataform/stories/index.story.d.ts +18 -7
- package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataform-context/index.d.ts +13 -0
- package/build-types/components/dataform-context/index.d.ts.map +1 -0
- package/build-types/components/dataviews/index.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataviews-context/index.d.ts +0 -1
- package/build-types/components/dataviews-context/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/index.d.ts +1 -1
- package/build-types/components/dataviews-filters/index.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 +1 -3
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/data-form-layout.d.ts +16 -0
- package/build-types/dataforms-layouts/data-form-layout.d.ts.map +1 -0
- package/build-types/dataforms-layouts/index.d.ts +3 -3
- package/build-types/dataforms-layouts/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/is-combined-field.d.ts +6 -0
- package/build-types/dataforms-layouts/is-combined-field.d.ts.map +1 -0
- package/build-types/dataforms-layouts/panel/index.d.ts +5 -2
- package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/regular/index.d.ts +5 -2
- package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/grid/index.d.ts +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 +3 -0
- package/build-types/dataviews-layouts/grid/preview-size-picker.d.ts.map +1 -0
- package/build-types/dataviews-layouts/index.d.ts +5 -0
- package/build-types/dataviews-layouts/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/density-picker.d.ts +2 -0
- package/build-types/dataviews-layouts/table/density-picker.d.ts.map +1 -0
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/normalize-fields.d.ts +1 -9
- package/build-types/normalize-fields.d.ts.map +1 -1
- package/build-types/normalize-form-fields.d.ts +12 -0
- package/build-types/normalize-form-fields.d.ts.map +1 -0
- package/build-types/types.d.ts +31 -22
- package/build-types/types.d.ts.map +1 -1
- package/build-types/validation.d.ts +1 -1
- package/build-types/validation.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/dataform/index.tsx +22 -5
- package/src/components/dataform/stories/index.story.tsx +88 -49
- package/src/components/dataform-context/index.tsx +30 -0
- package/src/components/dataviews/index.tsx +2 -6
- package/src/components/dataviews/stories/fixtures.tsx +1 -0
- package/src/components/dataviews/stories/index.story.tsx +16 -3
- package/src/components/dataviews-context/index.ts +0 -2
- package/src/components/dataviews-filters/index.tsx +73 -38
- package/src/components/dataviews-item-actions/index.tsx +73 -25
- package/src/components/dataviews-layout/index.tsx +0 -2
- package/src/components/dataviews-view-config/index.tsx +7 -23
- package/src/dataforms-layouts/data-form-layout.tsx +87 -0
- package/src/dataforms-layouts/index.tsx +7 -7
- package/src/dataforms-layouts/is-combined-field.ts +10 -0
- package/src/dataforms-layouts/panel/index.tsx +192 -101
- package/src/dataforms-layouts/panel/style.scss +4 -0
- package/src/dataforms-layouts/regular/index.tsx +101 -37
- package/src/dataforms-layouts/regular/style.scss +30 -0
- package/src/dataviews-layouts/grid/index.tsx +10 -8
- package/src/dataviews-layouts/grid/{density-picker.tsx → preview-size-picker.tsx} +39 -26
- package/src/dataviews-layouts/grid/style.scss +3 -1
- package/src/dataviews-layouts/index.ts +4 -0
- package/src/dataviews-layouts/list/index.tsx +31 -27
- package/src/dataviews-layouts/table/density-picker.tsx +57 -0
- package/src/dataviews-layouts/table/index.tsx +12 -2
- package/src/dataviews-layouts/table/style.scss +32 -0
- package/src/normalize-fields.ts +1 -33
- package/src/normalize-form-fields.ts +42 -0
- package/src/style.scss +1 -1
- package/src/types.ts +36 -21
- package/src/validation.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/dataform-combined-edit/index.js +0 -73
- package/build/components/dataform-combined-edit/index.js.map +0 -1
- package/build/dataforms-layouts/get-visible-fields.js +0 -21
- package/build/dataforms-layouts/get-visible-fields.js.map +0 -1
- package/build/dataviews-layouts/grid/density-picker.js.map +0 -1
- package/build-module/components/dataform-combined-edit/index.js +0 -66
- package/build-module/components/dataform-combined-edit/index.js.map +0 -1
- package/build-module/dataforms-layouts/get-visible-fields.js +0 -14
- package/build-module/dataforms-layouts/get-visible-fields.js.map +0 -1
- package/build-module/dataviews-layouts/grid/density-picker.js.map +0 -1
- package/build-types/components/dataform-combined-edit/index.d.ts +0 -7
- package/build-types/components/dataform-combined-edit/index.d.ts.map +0 -1
- package/build-types/dataforms-layouts/get-visible-fields.d.ts +0 -3
- package/build-types/dataforms-layouts/get-visible-fields.d.ts.map +0 -1
- package/build-types/dataviews-layouts/grid/density-picker.d.ts +0 -5
- package/build-types/dataviews-layouts/grid/density-picker.d.ts.map +0 -1
- package/src/components/dataform-combined-edit/index.tsx +0 -69
- package/src/components/dataform-combined-edit/style.scss +0 -16
- package/src/dataforms-layouts/get-visible-fields.ts +0 -29
|
@@ -16,6 +16,7 @@ import ItemActions from '../../components/dataviews-item-actions';
|
|
|
16
16
|
import SingleSelectionCheckbox from '../../components/dataviews-selection-checkbox';
|
|
17
17
|
import { useHasAPossibleBulkAction } from '../../components/dataviews-bulk-actions';
|
|
18
18
|
import getClickableItemProps from '../utils/get-clickable-item-props';
|
|
19
|
+
import { useUpdatedPreviewSizeOnViewportChange } from './preview-size-picker';
|
|
19
20
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
20
21
|
function GridItem({
|
|
21
22
|
selection,
|
|
@@ -70,11 +71,9 @@ function GridItem({
|
|
|
70
71
|
}), /*#__PURE__*/_jsxs(HStack, {
|
|
71
72
|
justify: "space-between",
|
|
72
73
|
className: "dataviews-view-grid__title-actions",
|
|
73
|
-
children: [/*#__PURE__*/_jsx(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
children: renderedPrimaryField
|
|
77
|
-
})
|
|
74
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
75
|
+
...clickablePrimaryItemProps,
|
|
76
|
+
children: renderedPrimaryField
|
|
78
77
|
}), /*#__PURE__*/_jsx(ItemActions, {
|
|
79
78
|
item: item,
|
|
80
79
|
actions: actions,
|
|
@@ -136,8 +135,7 @@ export default function ViewGrid({
|
|
|
136
135
|
onClickItem,
|
|
137
136
|
isItemClickable,
|
|
138
137
|
selection,
|
|
139
|
-
view
|
|
140
|
-
density
|
|
138
|
+
view
|
|
141
139
|
}) {
|
|
142
140
|
const mediaField = fields.find(field => field.id === view.layout?.mediaField);
|
|
143
141
|
const primaryField = fields.find(field => field.id === view.layout?.primaryField);
|
|
@@ -159,8 +157,10 @@ export default function ViewGrid({
|
|
|
159
157
|
badgeFields: []
|
|
160
158
|
});
|
|
161
159
|
const hasData = !!data?.length;
|
|
162
|
-
const
|
|
163
|
-
|
|
160
|
+
const updatedPreviewSize = useUpdatedPreviewSizeOnViewportChange();
|
|
161
|
+
const usedPreviewSize = updatedPreviewSize || view.layout?.previewSize;
|
|
162
|
+
const gridStyle = usedPreviewSize ? {
|
|
163
|
+
gridTemplateColumns: `repeat(${usedPreviewSize}, minmax(0, 1fr))`
|
|
164
164
|
} : {};
|
|
165
165
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
166
166
|
children: [hasData && /*#__PURE__*/_jsx(Grid, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","__experimentalGrid","Grid","__experimentalHStack","HStack","__experimentalVStack","VStack","Spinner","Flex","FlexItem","__","ItemActions","SingleSelectionCheckbox","useHasAPossibleBulkAction","getClickableItemProps","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","GridItem","selection","onChangeSelection","onClickItem","isItemClickable","getItemId","item","actions","mediaField","primaryField","visibleFields","badgeFields","columnFields","hasBulkAction","id","isSelected","includes","renderedMediaField","render","renderedPrimaryField","clickableMediaItemProps","clickablePrimaryItemProps","spacing","className","onClickCapture","event","ctrlKey","metaKey","stopPropagation","preventDefault","filter","itemId","children","disabled","justify","isCompact","length","wrap","alignment","map","field","gap","expanded","style","height","direction","header","maxHeight","ViewGrid","data","fields","isLoading","view","density","find","layout","viewFields","reduce","accumulator","key","push","hasData","gridStyle","gridTemplateColumns","columns"],"sources":["@wordpress/dataviews/src/dataviews-layouts/grid/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalGrid as Grid,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tSpinner,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ItemActions from '../../components/dataviews-item-actions';\nimport SingleSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport { useHasAPossibleBulkAction } from '../../components/dataviews-bulk-actions';\nimport type { Action, NormalizedField, ViewGridProps } from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport getClickableItemProps from '../utils/get-clickable-item-props';\n\ninterface GridItemProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\tonClickItem: ( item: Item ) => void;\n\tisItemClickable: ( item: Item ) => boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\tmediaField?: NormalizedField< Item >;\n\tprimaryField?: NormalizedField< Item >;\n\tvisibleFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\tcolumnFields?: string[];\n}\n\nfunction GridItem< Item >( {\n\tselection,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\tgetItemId,\n\titem,\n\tactions,\n\tmediaField,\n\tprimaryField,\n\tvisibleFields,\n\tbadgeFields,\n\tcolumnFields,\n}: GridItemProps< Item > ) {\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render item={ item } />\n\t) : null;\n\tconst renderedPrimaryField = primaryField?.render ? (\n\t\t<primaryField.render item={ item } />\n\t) : null;\n\n\tconst clickableMediaItemProps = getClickableItemProps(\n\t\titem,\n\t\tisItemClickable,\n\t\tonClickItem,\n\t\t'dataviews-view-grid__media'\n\t);\n\n\tconst clickablePrimaryItemProps = getClickableItemProps(\n\t\titem,\n\t\tisItemClickable,\n\t\tonClickItem,\n\t\t'dataviews-view-grid__primary-field'\n\t);\n\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 0 }\n\t\t\tkey={ id }\n\t\t\tclassName={ clsx( 'dataviews-view-grid__card', {\n\t\t\t\t'is-selected': hasBulkAction && isSelected,\n\t\t\t} ) }\n\t\t\tonClickCapture={ ( event ) => {\n\t\t\t\tif ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( ! hasBulkAction ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t<div { ...clickableMediaItemProps }>{ renderedMediaField }</div>\n\t\t\t<SingleSelectionCheckbox\n\t\t\t\titem={ item }\n\t\t\t\tselection={ selection }\n\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\tgetItemId={ getItemId }\n\t\t\t\tprimaryField={ primaryField }\n\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t/>\n\t\t\t<HStack\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews-view-grid__title-actions\"\n\t\t\t>\n\t\t\t\t<HStack>\n\t\t\t\t\t<div { ...clickablePrimaryItemProps }>\n\t\t\t\t\t\t{ renderedPrimaryField }\n\t\t\t\t\t</div>\n\t\t\t\t</HStack>\n\t\t\t\t<ItemActions item={ item } actions={ actions } isCompact />\n\t\t\t</HStack>\n\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t<HStack\n\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\twrap\n\t\t\t\t\talignment=\"top\"\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t>\n\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<field.render item={ item } />\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t{ !! visibleFields?.length && (\n\t\t\t\t<VStack className=\"dataviews-view-grid__fields\" spacing={ 1 }>\n\t\t\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-grid__field',\n\t\t\t\t\t\t\t\t\tcolumnFields?.includes( field.id )\n\t\t\t\t\t\t\t\t\t\t? 'is-column'\n\t\t\t\t\t\t\t\t\t\t: 'is-row'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\tdirection={\n\t\t\t\t\t\t\t\t\tcolumnFields?.includes( field.id )\n\t\t\t\t\t\t\t\t\t\t? 'column'\n\t\t\t\t\t\t\t\t\t\t: 'row'\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<>\n\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t>\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</FlexItem>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport default function ViewGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\tselection,\n\tview,\n\tdensity,\n}: ViewGridProps< Item > ) {\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout?.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout?.primaryField\n\t);\n\tconst viewFields = view.fields || fields.map( ( field ) => field.id );\n\tconst { visibleFields, badgeFields } = fields.reduce(\n\t\t( accumulator: Record< string, NormalizedField< Item >[] >, field ) => {\n\t\t\tif (\n\t\t\t\t! viewFields.includes( field.id ) ||\n\t\t\t\t[\n\t\t\t\t\tview.layout?.mediaField,\n\t\t\t\t\tview?.layout?.primaryField,\n\t\t\t\t].includes( field.id )\n\t\t\t) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( field.id )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'visibleFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ visibleFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst gridStyle = density\n\t\t? { gridTemplateColumns: `repeat(${ density }, minmax(0, 1fr))` }\n\t\t: {};\n\treturn (\n\t\t<>\n\t\t\t{ hasData && (\n\t\t\t\t<Grid\n\t\t\t\t\tgap={ 8 }\n\t\t\t\t\tcolumns={ 2 }\n\t\t\t\t\talignment=\"top\"\n\t\t\t\t\tclassName=\"dataviews-view-grid\"\n\t\t\t\t\tstyle={ gridStyle }\n\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t>\n\t\t\t\t\t{ data.map( ( item ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\tcolumnFields={ view.layout?.columnFields }\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</Grid>\n\t\t\t) }\n\t\t\t{ ! hasData && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","__experimentalGrid","Grid","__experimentalHStack","HStack","__experimentalVStack","VStack","Spinner","Flex","FlexItem","__","ItemActions","SingleSelectionCheckbox","useHasAPossibleBulkAction","getClickableItemProps","useUpdatedPreviewSizeOnViewportChange","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","GridItem","selection","onChangeSelection","onClickItem","isItemClickable","getItemId","item","actions","mediaField","primaryField","visibleFields","badgeFields","columnFields","hasBulkAction","id","isSelected","includes","renderedMediaField","render","renderedPrimaryField","clickableMediaItemProps","clickablePrimaryItemProps","spacing","className","onClickCapture","event","ctrlKey","metaKey","stopPropagation","preventDefault","filter","itemId","children","disabled","justify","isCompact","length","wrap","alignment","map","field","gap","expanded","style","height","direction","header","maxHeight","ViewGrid","data","fields","isLoading","view","find","layout","viewFields","reduce","accumulator","key","push","hasData","updatedPreviewSize","usedPreviewSize","previewSize","gridStyle","gridTemplateColumns","columns"],"sources":["@wordpress/dataviews/src/dataviews-layouts/grid/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalGrid as Grid,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tSpinner,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ItemActions from '../../components/dataviews-item-actions';\nimport SingleSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport { useHasAPossibleBulkAction } from '../../components/dataviews-bulk-actions';\nimport type { Action, NormalizedField, ViewGridProps } from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport getClickableItemProps from '../utils/get-clickable-item-props';\nimport { useUpdatedPreviewSizeOnViewportChange } from './preview-size-picker';\n\ninterface GridItemProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\tonClickItem: ( item: Item ) => void;\n\tisItemClickable: ( item: Item ) => boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\tmediaField?: NormalizedField< Item >;\n\tprimaryField?: NormalizedField< Item >;\n\tvisibleFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\tcolumnFields?: string[];\n}\n\nfunction GridItem< Item >( {\n\tselection,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\tgetItemId,\n\titem,\n\tactions,\n\tmediaField,\n\tprimaryField,\n\tvisibleFields,\n\tbadgeFields,\n\tcolumnFields,\n}: GridItemProps< Item > ) {\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render item={ item } />\n\t) : null;\n\tconst renderedPrimaryField = primaryField?.render ? (\n\t\t<primaryField.render item={ item } />\n\t) : null;\n\n\tconst clickableMediaItemProps = getClickableItemProps(\n\t\titem,\n\t\tisItemClickable,\n\t\tonClickItem,\n\t\t'dataviews-view-grid__media'\n\t);\n\n\tconst clickablePrimaryItemProps = getClickableItemProps(\n\t\titem,\n\t\tisItemClickable,\n\t\tonClickItem,\n\t\t'dataviews-view-grid__primary-field'\n\t);\n\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 0 }\n\t\t\tkey={ id }\n\t\t\tclassName={ clsx( 'dataviews-view-grid__card', {\n\t\t\t\t'is-selected': hasBulkAction && isSelected,\n\t\t\t} ) }\n\t\t\tonClickCapture={ ( event ) => {\n\t\t\t\tif ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( ! hasBulkAction ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t<div { ...clickableMediaItemProps }>{ renderedMediaField }</div>\n\t\t\t<SingleSelectionCheckbox\n\t\t\t\titem={ item }\n\t\t\t\tselection={ selection }\n\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\tgetItemId={ getItemId }\n\t\t\t\tprimaryField={ primaryField }\n\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t/>\n\t\t\t<HStack\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews-view-grid__title-actions\"\n\t\t\t>\n\t\t\t\t<div { ...clickablePrimaryItemProps }>\n\t\t\t\t\t{ renderedPrimaryField }\n\t\t\t\t</div>\n\t\t\t\t<ItemActions item={ item } actions={ actions } isCompact />\n\t\t\t</HStack>\n\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t<HStack\n\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\twrap\n\t\t\t\t\talignment=\"top\"\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t>\n\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<field.render item={ item } />\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t{ !! visibleFields?.length && (\n\t\t\t\t<VStack className=\"dataviews-view-grid__fields\" spacing={ 1 }>\n\t\t\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-grid__field',\n\t\t\t\t\t\t\t\t\tcolumnFields?.includes( field.id )\n\t\t\t\t\t\t\t\t\t\t? 'is-column'\n\t\t\t\t\t\t\t\t\t\t: 'is-row'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\tdirection={\n\t\t\t\t\t\t\t\t\tcolumnFields?.includes( field.id )\n\t\t\t\t\t\t\t\t\t\t? 'column'\n\t\t\t\t\t\t\t\t\t\t: 'row'\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<>\n\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t>\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</FlexItem>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport default function ViewGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\tselection,\n\tview,\n}: ViewGridProps< Item > ) {\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout?.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout?.primaryField\n\t);\n\tconst viewFields = view.fields || fields.map( ( field ) => field.id );\n\tconst { visibleFields, badgeFields } = fields.reduce(\n\t\t( accumulator: Record< string, NormalizedField< Item >[] >, field ) => {\n\t\t\tif (\n\t\t\t\t! viewFields.includes( field.id ) ||\n\t\t\t\t[\n\t\t\t\t\tview.layout?.mediaField,\n\t\t\t\t\tview?.layout?.primaryField,\n\t\t\t\t].includes( field.id )\n\t\t\t) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( field.id )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'visibleFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ visibleFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst updatedPreviewSize = useUpdatedPreviewSizeOnViewportChange();\n\tconst usedPreviewSize = updatedPreviewSize || view.layout?.previewSize;\n\tconst gridStyle = usedPreviewSize\n\t\t? {\n\t\t\t\tgridTemplateColumns: `repeat(${ usedPreviewSize }, minmax(0, 1fr))`,\n\t\t }\n\t\t: {};\n\treturn (\n\t\t<>\n\t\t\t{ hasData && (\n\t\t\t\t<Grid\n\t\t\t\t\tgap={ 8 }\n\t\t\t\t\tcolumns={ 2 }\n\t\t\t\t\talignment=\"top\"\n\t\t\t\t\tclassName=\"dataviews-view-grid\"\n\t\t\t\t\tstyle={ gridStyle }\n\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t>\n\t\t\t\t\t{ data.map( ( item ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\tcolumnFields={ view.layout?.columnFields }\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</Grid>\n\t\t\t) }\n\t\t\t{ ! hasData && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,12 @@
|
|
|
4
4
|
import { RangeControl } from '@wordpress/components';
|
|
5
5
|
import { __ } from '@wordpress/i18n';
|
|
6
6
|
import { useViewportMatch } from '@wordpress/compose';
|
|
7
|
-
import {
|
|
7
|
+
import { useMemo, useContext } from '@wordpress/element';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
import DataViewsContext from '../../components/dataviews-context';
|
|
8
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
14
|
const viewportBreaks = {
|
|
10
15
|
xhuge: {
|
|
@@ -56,28 +61,31 @@ function useViewPortBreakpoint() {
|
|
|
56
61
|
}
|
|
57
62
|
return null;
|
|
58
63
|
}
|
|
59
|
-
export
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
export function useUpdatedPreviewSizeOnViewportChange() {
|
|
65
|
+
const viewport = useViewPortBreakpoint();
|
|
66
|
+
const view = useContext(DataViewsContext).view;
|
|
67
|
+
return useMemo(() => {
|
|
68
|
+
const previewSize = view.layout?.previewSize;
|
|
69
|
+
let newPreviewSize;
|
|
70
|
+
if (!viewport || !previewSize) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const breakValues = viewportBreaks[viewport];
|
|
74
|
+
if (previewSize < breakValues.min) {
|
|
75
|
+
newPreviewSize = breakValues.min;
|
|
76
|
+
}
|
|
77
|
+
if (previewSize > breakValues.max) {
|
|
78
|
+
newPreviewSize = breakValues.max;
|
|
79
|
+
}
|
|
80
|
+
return newPreviewSize;
|
|
81
|
+
}, [viewport, view]);
|
|
82
|
+
}
|
|
83
|
+
export default function PreviewSizePicker() {
|
|
63
84
|
const viewport = useViewPortBreakpoint();
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (!viewport || !_density) {
|
|
67
|
-
return 0;
|
|
68
|
-
}
|
|
69
|
-
const breakValues = viewportBreaks[viewport];
|
|
70
|
-
if (_density < breakValues.min) {
|
|
71
|
-
return breakValues.min;
|
|
72
|
-
}
|
|
73
|
-
if (_density > breakValues.max) {
|
|
74
|
-
return breakValues.max;
|
|
75
|
-
}
|
|
76
|
-
return _density;
|
|
77
|
-
});
|
|
78
|
-
}, [setDensity, viewport]);
|
|
85
|
+
const context = useContext(DataViewsContext);
|
|
86
|
+
const view = context.view;
|
|
79
87
|
const breakValues = viewportBreaks[viewport || 'mobile'];
|
|
80
|
-
const
|
|
88
|
+
const previewSizeToUse = view.layout?.previewSize || breakValues.default;
|
|
81
89
|
const marks = useMemo(() => Array.from({
|
|
82
90
|
length: breakValues.max - breakValues.min + 1
|
|
83
91
|
}, (_, i) => {
|
|
@@ -93,15 +101,21 @@ export default function DensityPicker({
|
|
|
93
101
|
__next40pxDefaultSize: true,
|
|
94
102
|
showTooltip: false,
|
|
95
103
|
label: __('Preview size'),
|
|
96
|
-
value: breakValues.max + breakValues.min -
|
|
104
|
+
value: breakValues.max + breakValues.min - previewSizeToUse,
|
|
97
105
|
marks: marks,
|
|
98
106
|
min: breakValues.min,
|
|
99
107
|
max: breakValues.max,
|
|
100
108
|
withInputField: false,
|
|
101
109
|
onChange: (value = 0) => {
|
|
102
|
-
|
|
110
|
+
context.onChangeView({
|
|
111
|
+
...view,
|
|
112
|
+
layout: {
|
|
113
|
+
...view.layout,
|
|
114
|
+
previewSize: breakValues.max + breakValues.min - value
|
|
115
|
+
}
|
|
116
|
+
});
|
|
103
117
|
},
|
|
104
118
|
step: 1
|
|
105
119
|
});
|
|
106
120
|
}
|
|
107
|
-
//# sourceMappingURL=
|
|
121
|
+
//# sourceMappingURL=preview-size-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["RangeControl","__","useViewportMatch","useMemo","useContext","DataViewsContext","jsx","_jsx","viewportBreaks","xhuge","min","max","default","huge","xlarge","large","mobile","useViewPortBreakpoint","isXHuge","isHuge","isXlarge","isLarge","isMobile","useUpdatedPreviewSizeOnViewportChange","viewport","view","previewSize","layout","newPreviewSize","breakValues","PreviewSizePicker","context","previewSizeToUse","marks","Array","from","length","_","i","value","__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 { useViewportMatch } from '@wordpress/compose';\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\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\nfunction useViewPortBreakpoint() {\n\tconst isXHuge = useViewportMatch( 'xhuge', '>=' );\n\tconst isHuge = useViewportMatch( 'huge', '>=' );\n\tconst isXlarge = useViewportMatch( 'xlarge', '>=' );\n\tconst isLarge = useViewportMatch( 'large', '>=' );\n\tconst isMobile = useViewportMatch( 'mobile', '>=' );\n\n\tif ( isXHuge ) {\n\t\treturn 'xhuge';\n\t}\n\tif ( isHuge ) {\n\t\treturn 'huge';\n\t}\n\tif ( isXlarge ) {\n\t\treturn 'xlarge';\n\t}\n\tif ( isLarge ) {\n\t\treturn 'large';\n\t}\n\tif ( isMobile ) {\n\t\treturn 'mobile';\n\t}\n\treturn null;\n}\n\nexport function useUpdatedPreviewSizeOnViewportChange() {\n\tconst viewport = useViewPortBreakpoint();\n\tconst view = useContext( DataViewsContext ).view as ViewGrid;\n\treturn useMemo( () => {\n\t\tconst previewSize = view.layout?.previewSize;\n\t\tlet newPreviewSize;\n\t\tif ( ! viewport || ! 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 || 'mobile' ];\n\tconst previewSizeToUse = view.layout?.previewSize || breakValues.default;\n\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\n\tif ( ! viewport ) {\n\t\treturn null;\n\t}\n\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":[]}
|
|
@@ -11,16 +11,20 @@ import ViewTable from './table';
|
|
|
11
11
|
import ViewGrid from './grid';
|
|
12
12
|
import ViewList from './list';
|
|
13
13
|
import { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE } from '../constants';
|
|
14
|
+
import PreviewSizePicker from './grid/preview-size-picker';
|
|
15
|
+
import DensityPicker from './table/density-picker';
|
|
14
16
|
export const VIEW_LAYOUTS = [{
|
|
15
17
|
type: LAYOUT_TABLE,
|
|
16
18
|
label: __('Table'),
|
|
17
19
|
component: ViewTable,
|
|
18
|
-
icon: blockTable
|
|
20
|
+
icon: blockTable,
|
|
21
|
+
viewConfigOptions: DensityPicker
|
|
19
22
|
}, {
|
|
20
23
|
type: LAYOUT_GRID,
|
|
21
24
|
label: __('Grid'),
|
|
22
25
|
component: ViewGrid,
|
|
23
|
-
icon: category
|
|
26
|
+
icon: category,
|
|
27
|
+
viewConfigOptions: PreviewSizePicker
|
|
24
28
|
}, {
|
|
25
29
|
type: LAYOUT_LIST,
|
|
26
30
|
label: __('List'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","LAYOUT_GRID","LAYOUT_LIST","LAYOUT_TABLE","VIEW_LAYOUTS","type","label","component","icon","getNotHidableFieldIds","view","_view$layout$combined","layout","primaryField","concat","combinedFields","flatMap","field","children","filter","item","mediaField","getCombinedFieldIds","forEach","combination","push","getVisibleFieldIds","fields","fieldsToExclude","id","includes","visibleFields","map","getHiddenFieldIds","enableHiding"],"sources":["@wordpress/dataviews/src/dataviews-layouts/index.ts"],"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 './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE } from '../constants';\nimport type { View, Field } from '../types';\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\nexport function getNotHidableFieldIds( view: View ): string[] {\n\tif ( view.type === 'table' ) {\n\t\treturn [ view.layout?.primaryField ]\n\t\t\t.concat(\n\t\t\t\tview.layout?.combinedFields?.flatMap(\n\t\t\t\t\t( field ) => field.children\n\t\t\t\t) ?? []\n\t\t\t)\n\t\t\t.filter( ( item ): item is string => !! item );\n\t}\n\n\tif ( view.type === 'grid' ) {\n\t\treturn [ view.layout?.primaryField, view.layout?.mediaField ].filter(\n\t\t\t( item ): item is string => !! item\n\t\t);\n\t}\n\n\tif ( view.type === 'list' ) {\n\t\treturn [ view.layout?.primaryField, view.layout?.mediaField ].filter(\n\t\t\t( item ): item is string => !! item\n\t\t);\n\t}\n\n\treturn [];\n}\n\nfunction getCombinedFieldIds( view: View ): string[] {\n\tconst combinedFields: string[] = [];\n\tif ( view.type === LAYOUT_TABLE && view.layout?.combinedFields ) {\n\t\tview.layout.combinedFields.forEach( ( combination ) => {\n\t\t\tcombinedFields.push( ...combination.children );\n\t\t} );\n\t}\n\treturn combinedFields;\n}\n\nexport function getVisibleFieldIds(\n\tview: View,\n\tfields: Field< any >[]\n): string[] {\n\tconst fieldsToExclude = getCombinedFieldIds( view );\n\n\tif ( view.fields ) {\n\t\treturn view.fields.filter( ( id ) => ! fieldsToExclude.includes( id ) );\n\t}\n\n\tconst visibleFields = [];\n\tif ( view.type === LAYOUT_TABLE && view.layout?.combinedFields ) {\n\t\tvisibleFields.push(\n\t\t\t...view.layout.combinedFields.map( ( { id } ) => id )\n\t\t);\n\t}\n\tvisibleFields.push(\n\t\t...fields\n\t\t\t.filter( ( { id } ) => ! fieldsToExclude.includes( id ) )\n\t\t\t.map( ( { id } ) => id )\n\t);\n\n\treturn visibleFields;\n}\n\nexport function getHiddenFieldIds(\n\tview: View,\n\tfields: Field< any >[]\n): string[] {\n\tconst fieldsToExclude = [\n\t\t...getCombinedFieldIds( view ),\n\t\t...getVisibleFieldIds( view, fields ),\n\t];\n\n\t// The media field does not need to be in the view.fields to be displayed.\n\tif ( view.type === LAYOUT_GRID && view.layout?.mediaField ) {\n\t\tfieldsToExclude.push( view.layout?.mediaField );\n\t}\n\n\tif ( view.type === LAYOUT_LIST && view.layout?.mediaField ) {\n\t\tfieldsToExclude.push( view.layout?.mediaField );\n\t}\n\n\treturn fields\n\t\t.filter(\n\t\t\t( { id, enableHiding } ) =>\n\t\t\t\t! fieldsToExclude.includes( id ) && enableHiding\n\t\t)\n\t\t.map( ( { id } ) => id );\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,SAAS;AAC/B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,SAASC,WAAW,EAAEC,WAAW,EAAEC,YAAY,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","LAYOUT_GRID","LAYOUT_LIST","LAYOUT_TABLE","PreviewSizePicker","DensityPicker","VIEW_LAYOUTS","type","label","component","icon","viewConfigOptions","getNotHidableFieldIds","view","_view$layout$combined","layout","primaryField","concat","combinedFields","flatMap","field","children","filter","item","mediaField","getCombinedFieldIds","forEach","combination","push","getVisibleFieldIds","fields","fieldsToExclude","id","includes","visibleFields","map","getHiddenFieldIds","enableHiding"],"sources":["@wordpress/dataviews/src/dataviews-layouts/index.ts"],"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 './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE } from '../constants';\nimport type { View, Field } from '../types';\nimport PreviewSizePicker from './grid/preview-size-picker';\nimport DensityPicker from './table/density-picker';\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\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\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\nexport function getNotHidableFieldIds( view: View ): string[] {\n\tif ( view.type === 'table' ) {\n\t\treturn [ view.layout?.primaryField ]\n\t\t\t.concat(\n\t\t\t\tview.layout?.combinedFields?.flatMap(\n\t\t\t\t\t( field ) => field.children\n\t\t\t\t) ?? []\n\t\t\t)\n\t\t\t.filter( ( item ): item is string => !! item );\n\t}\n\n\tif ( view.type === 'grid' ) {\n\t\treturn [ view.layout?.primaryField, view.layout?.mediaField ].filter(\n\t\t\t( item ): item is string => !! item\n\t\t);\n\t}\n\n\tif ( view.type === 'list' ) {\n\t\treturn [ view.layout?.primaryField, view.layout?.mediaField ].filter(\n\t\t\t( item ): item is string => !! item\n\t\t);\n\t}\n\n\treturn [];\n}\n\nfunction getCombinedFieldIds( view: View ): string[] {\n\tconst combinedFields: string[] = [];\n\tif ( view.type === LAYOUT_TABLE && view.layout?.combinedFields ) {\n\t\tview.layout.combinedFields.forEach( ( combination ) => {\n\t\t\tcombinedFields.push( ...combination.children );\n\t\t} );\n\t}\n\treturn combinedFields;\n}\n\nexport function getVisibleFieldIds(\n\tview: View,\n\tfields: Field< any >[]\n): string[] {\n\tconst fieldsToExclude = getCombinedFieldIds( view );\n\n\tif ( view.fields ) {\n\t\treturn view.fields.filter( ( id ) => ! fieldsToExclude.includes( id ) );\n\t}\n\n\tconst visibleFields = [];\n\tif ( view.type === LAYOUT_TABLE && view.layout?.combinedFields ) {\n\t\tvisibleFields.push(\n\t\t\t...view.layout.combinedFields.map( ( { id } ) => id )\n\t\t);\n\t}\n\tvisibleFields.push(\n\t\t...fields\n\t\t\t.filter( ( { id } ) => ! fieldsToExclude.includes( id ) )\n\t\t\t.map( ( { id } ) => id )\n\t);\n\n\treturn visibleFields;\n}\n\nexport function getHiddenFieldIds(\n\tview: View,\n\tfields: Field< any >[]\n): string[] {\n\tconst fieldsToExclude = [\n\t\t...getCombinedFieldIds( view ),\n\t\t...getVisibleFieldIds( view, fields ),\n\t];\n\n\t// The media field does not need to be in the view.fields to be displayed.\n\tif ( view.type === LAYOUT_GRID && view.layout?.mediaField ) {\n\t\tfieldsToExclude.push( view.layout?.mediaField );\n\t}\n\n\tif ( view.type === LAYOUT_LIST && view.layout?.mediaField ) {\n\t\tfieldsToExclude.push( view.layout?.mediaField );\n\t}\n\n\treturn fields\n\t\t.filter(\n\t\t\t( { id, enableHiding } ) =>\n\t\t\t\t! fieldsToExclude.includes( id ) && enableHiding\n\t\t)\n\t\t.map( ( { id } ) => id );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -114,10 +114,11 @@ function ListItem({
|
|
|
114
114
|
const _eligibleActions = actions.filter(action => !action.isEligible || action.isEligible(item));
|
|
115
115
|
const _primaryActions = _eligibleActions.filter(action => action.isPrimary && !!action.icon);
|
|
116
116
|
return {
|
|
117
|
-
primaryAction: _primaryActions
|
|
117
|
+
primaryAction: _primaryActions[0],
|
|
118
118
|
eligibleActions: _eligibleActions
|
|
119
119
|
};
|
|
120
120
|
}, [actions, item]);
|
|
121
|
+
const hasOnlyOnePrimaryAction = primaryAction && actions.length === 1;
|
|
121
122
|
const renderedMediaField = mediaField?.render ? /*#__PURE__*/_jsx("div", {
|
|
122
123
|
className: "dataviews-view-list__media-wrapper",
|
|
123
124
|
children: /*#__PURE__*/_jsx(mediaField.render, {
|
|
@@ -134,7 +135,7 @@ function ListItem({
|
|
|
134
135
|
idPrefix: idPrefix,
|
|
135
136
|
primaryAction: primaryAction,
|
|
136
137
|
item: item
|
|
137
|
-
}), /*#__PURE__*/_jsx("div", {
|
|
138
|
+
}), !hasOnlyOnePrimaryAction && /*#__PURE__*/_jsx("div", {
|
|
138
139
|
role: "gridcell",
|
|
139
140
|
children: /*#__PURE__*/_jsx(Menu, {
|
|
140
141
|
trigger: /*#__PURE__*/_jsx(Composite.Item, {
|
|
@@ -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","actions","isSelected","mediaField","onSelect","primaryField","visibleFields","onDropdownTriggerKeyDown","itemRef","labelId","descriptionId","isHovered","setIsHovered","handleHover","type","isHover","current","scrollIntoView","behavior","block","inline","eligibleActions","_eligibleActions","filter","isEligible","_primaryActions","isPrimary","renderedMediaField","className","renderedPrimaryField","usedActions","length","spacing","trigger","accessibleWhenDisabled","disabled","onKeyDown","placement","Row","ref","onMouseEnter","onMouseLeave","justify","alignment","map","field","as","ViewList","props","data","fields","getItemId","isLoading","onChangeSelection","selection","view","baseId","selectedItem","findLast","includes","find","layout","viewFields","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 { Action, NormalizedField, ViewListProps } from '../../types';\n\ninterface ListViewItemProps< Item > {\n\tactions: Action< Item >[];\n\tidPrefix: string;\n\tisSelected: boolean;\n\titem: Item;\n\tmediaField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\tprimaryField?: NormalizedField< Item >;\n\tvisibleFields: 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\tactions,\n\tidPrefix,\n\tisSelected,\n\titem,\n\tmediaField,\n\tonSelect,\n\tprimaryField,\n\tvisibleFields,\n\tonDropdownTriggerKeyDown,\n}: ListViewItemProps< Item > ) {\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst labelId = `${ idPrefix }-label`;\n\tconst descriptionId = `${ idPrefix }-description`;\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\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 renderedMediaField = mediaField?.render ? (\n\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t<mediaField.render item={ item } />\n\t\t</div>\n\t) : null;\n\n\tconst renderedPrimaryField = primaryField?.render ? (\n\t\t<primaryField.render item={ item } />\n\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<div role=\"gridcell\">\n\t\t\t\t<Menu\n\t\t\t\t\ttrigger={\n\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\tid={ generateDropdownTriggerCompositeId(\n\t\t\t\t\t\t\t\tidPrefix\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\tonKeyDown={ onDropdownTriggerKeyDown }\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}\n\t\t\t\t\tplacement=\"bottom-end\"\n\t\t\t\t>\n\t\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t/>\n\t\t\t\t</Menu>\n\t\t\t</div>\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-view-list__primary-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{ renderedPrimaryField }\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<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{ visibleFields.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\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\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout?.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout?.primaryField\n\t);\n\tconst viewFields = view.fields || fields.map( ( field ) => field.id );\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\tviewFields.includes( field.id ) &&\n\t\t\t! [ view.layout?.primaryField, view.layout?.mediaField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\n\tconst 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\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\tprimaryField={ primaryField }\n\t\t\t\t\t\tvisibleFields={ visibleFields }\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","icon","isDestructive","size","onClick","action","items","closeModal","callback","ListItem","actions","isSelected","mediaField","onSelect","primaryField","visibleFields","onDropdownTriggerKeyDown","itemRef","labelId","descriptionId","isHovered","setIsHovered","handleHover","type","isHover","current","scrollIntoView","behavior","block","inline","eligibleActions","_eligibleActions","filter","isEligible","_primaryActions","isPrimary","hasOnlyOnePrimaryAction","length","renderedMediaField","className","renderedPrimaryField","usedActions","spacing","trigger","accessibleWhenDisabled","disabled","onKeyDown","placement","Row","ref","onMouseEnter","onMouseLeave","justify","alignment","map","field","as","ViewList","props","data","fields","getItemId","isLoading","onChangeSelection","selection","view","baseId","selectedItem","findLast","includes","find","layout","viewFields","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 { Action, NormalizedField, ViewListProps } from '../../types';\n\ninterface ListViewItemProps< Item > {\n\tactions: Action< Item >[];\n\tidPrefix: string;\n\tisSelected: boolean;\n\titem: Item;\n\tmediaField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\tprimaryField?: NormalizedField< Item >;\n\tvisibleFields: 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\tactions,\n\tidPrefix,\n\tisSelected,\n\titem,\n\tmediaField,\n\tonSelect,\n\tprimaryField,\n\tvisibleFields,\n\tonDropdownTriggerKeyDown,\n}: ListViewItemProps< Item > ) {\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst labelId = `${ idPrefix }-label`;\n\tconst descriptionId = `${ idPrefix }-description`;\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\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 = mediaField?.render ? (\n\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t<mediaField.render item={ item } />\n\t\t</div>\n\t) : null;\n\n\tconst renderedPrimaryField = primaryField?.render ? (\n\t\t<primaryField.render item={ item } />\n\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/>\n\t\t\t\t\t</Menu>\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-view-list__primary-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{ renderedPrimaryField }\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<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{ visibleFields.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\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\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout?.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout?.primaryField\n\t);\n\tconst viewFields = view.fields || fields.map( ( field ) => field.id );\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\tviewFields.includes( field.id ) &&\n\t\t\t! [ view.layout?.primaryField, view.layout?.mediaField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\n\tconst 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\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\tprimaryField={ primaryField }\n\t\t\t\t\t\tvisibleFields={ visibleFields }\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":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption } from '@wordpress/components';
|
|
5
|
+
import { __, _x } from '@wordpress/i18n';
|
|
6
|
+
import { useContext } from '@wordpress/element';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Internal dependencies
|
|
10
|
+
*/
|
|
11
|
+
import DataViewsContext from '../../components/dataviews-context';
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
export default function DensityPicker() {
|
|
14
|
+
const context = useContext(DataViewsContext);
|
|
15
|
+
const view = context.view;
|
|
16
|
+
return /*#__PURE__*/_jsxs(ToggleGroupControl, {
|
|
17
|
+
__nextHasNoMarginBottom: true,
|
|
18
|
+
size: "__unstable-large",
|
|
19
|
+
label: __('Density'),
|
|
20
|
+
value: view.layout?.density || 'balanced',
|
|
21
|
+
onChange: value => {
|
|
22
|
+
context.onChangeView({
|
|
23
|
+
...view,
|
|
24
|
+
layout: {
|
|
25
|
+
...view.layout,
|
|
26
|
+
density: value
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
isBlock: true,
|
|
31
|
+
children: [/*#__PURE__*/_jsx(ToggleGroupControlOption, {
|
|
32
|
+
value: "comfortable",
|
|
33
|
+
label: _x('Comfortable', 'Density option for DataView layout')
|
|
34
|
+
}, "comfortable"), /*#__PURE__*/_jsx(ToggleGroupControlOption, {
|
|
35
|
+
value: "balanced",
|
|
36
|
+
label: _x('Balanced', 'Density option for DataView layout')
|
|
37
|
+
}, "balanced"), /*#__PURE__*/_jsx(ToggleGroupControlOption, {
|
|
38
|
+
value: "compact",
|
|
39
|
+
label: _x('Compact', 'Density option for DataView layout')
|
|
40
|
+
}, "compact")]
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=density-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__","_x","useContext","DataViewsContext","jsx","_jsx","jsxs","_jsxs","DensityPicker","context","view","__nextHasNoMarginBottom","size","label","value","layout","density","onChange","onChangeView","isBlock","children"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/density-picker.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../components/dataviews-context';\nimport type { ViewTable, Density } from '../../types';\n\nexport default function DensityPicker() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewTable;\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\tsize=\"__unstable-large\"\n\t\t\tlabel={ __( 'Density' ) }\n\t\t\tvalue={ view.layout?.density || 'balanced' }\n\t\t\tonChange={ ( value ) => {\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\tdensity: value as Density,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tisBlock\n\t\t>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"comfortable\"\n\t\t\t\tvalue=\"comfortable\"\n\t\t\t\tlabel={ _x(\n\t\t\t\t\t'Comfortable',\n\t\t\t\t\t'Density option for DataView layout'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"balanced\"\n\t\t\t\tvalue=\"balanced\"\n\t\t\t\tlabel={ _x( 'Balanced', 'Density option for DataView layout' ) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"compact\"\n\t\t\t\tvalue=\"compact\"\n\t\t\t\tlabel={ _x( 'Compact', 'Density option for DataView layout' ) }\n\t\t\t/>\n\t\t</ToggleGroupControl>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,gCAAgC,IAAIC,kBAAkB,EACtDC,sCAAsC,IAAIC,wBAAwB,QAC5D,uBAAuB;AAC9B,SAASC,EAAE,EAAEC,EAAE,QAAQ,iBAAiB;AACxC,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,gBAAgB,MAAM,oCAAoC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGlE,eAAe,SAASC,aAAaA,CAAA,EAAG;EACvC,MAAMC,OAAO,GAAGP,UAAU,CAAEC,gBAAiB,CAAC;EAC9C,MAAMO,IAAI,GAAGD,OAAO,CAACC,IAAiB;EACtC,oBACCH,KAAA,CAACV,kBAAkB;IAClBc,uBAAuB;IACvBC,IAAI,EAAC,kBAAkB;IACvBC,KAAK,EAAGb,EAAE,CAAE,SAAU,CAAG;IACzBc,KAAK,EAAGJ,IAAI,CAACK,MAAM,EAAEC,OAAO,IAAI,UAAY;IAC5CC,QAAQ,EAAKH,KAAK,IAAM;MACvBL,OAAO,CAACS,YAAY,CAAE;QACrB,GAAGR,IAAI;QACPK,MAAM,EAAE;UACP,GAAGL,IAAI,CAACK,MAAM;UACdC,OAAO,EAAEF;QACV;MACD,CAAE,CAAC;IACJ,CAAG;IACHK,OAAO;IAAAC,QAAA,gBAEPf,IAAA,CAACN,wBAAwB;MAExBe,KAAK,EAAC,aAAa;MACnBD,KAAK,EAAGZ,EAAE,CACT,aAAa,EACb,oCACD;IAAG,GALC,aAMJ,CAAC,eACFI,IAAA,CAACN,wBAAwB;MAExBe,KAAK,EAAC,UAAU;MAChBD,KAAK,EAAGZ,EAAE,CAAE,UAAU,EAAE,oCAAqC;IAAG,GAF5D,UAGJ,CAAC,eACFI,IAAA,CAACN,wBAAwB;MAExBe,KAAK,EAAC,SAAS;MACfD,KAAK,EAAGZ,EAAE,CAAE,SAAS,EAAE,oCAAqC;IAAG,GAF3D,SAGJ,CAAC;EAAA,CACiB,CAAC;AAEvB","ignoreList":[]}
|
|
@@ -78,6 +78,7 @@ function TableColumnCombined({
|
|
|
78
78
|
if (field.direction === 'horizontal') {
|
|
79
79
|
return /*#__PURE__*/_jsx(HStack, {
|
|
80
80
|
spacing: 3,
|
|
81
|
+
justify: "flex-start",
|
|
81
82
|
children: children
|
|
82
83
|
});
|
|
83
84
|
}
|
|
@@ -237,7 +238,9 @@ function ViewTable({
|
|
|
237
238
|
const primaryField = fields.find(field => field.id === view.layout?.primaryField);
|
|
238
239
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
239
240
|
children: [/*#__PURE__*/_jsxs("table", {
|
|
240
|
-
className:
|
|
241
|
+
className: clsx('dataviews-view-table', {
|
|
242
|
+
[`has-${view.layout?.density}-density`]: view.layout?.density && ['compact', 'comfortable'].includes(view.layout.density)
|
|
243
|
+
}),
|
|
241
244
|
"aria-busy": isLoading,
|
|
242
245
|
"aria-describedby": tableNoticeId,
|
|
243
246
|
children: [/*#__PURE__*/_jsx("thead", {
|