@wordpress/dataviews 8.0.1-next.e256d081a.0 → 9.0.1-next.6870dfe5b.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 +24 -1
- package/README.md +96 -1
- package/build/components/dataform-context/index.js +1 -0
- package/build/components/dataform-context/index.js.map +1 -1
- package/build/components/dataviews/index.js +11 -1
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews-context/index.js +1 -0
- package/build/components/dataviews-context/index.js.map +1 -1
- package/build/components/dataviews-layout/index.js +2 -1
- package/build/components/dataviews-layout/index.js.map +1 -1
- package/build/components/dataviews-picker/footer.js +145 -0
- package/build/components/dataviews-picker/footer.js.map +1 -0
- package/build/components/dataviews-picker/index.js +201 -0
- package/build/components/dataviews-picker/index.js.map +1 -0
- package/build/components/dataviews-selection-checkbox/index.js +4 -2
- package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build/components/dataviews-view-config/index.js +1 -0
- package/build/components/dataviews-view-config/index.js.map +1 -1
- package/build/constants.js +4 -1
- package/build/constants.js.map +1 -1
- package/build/dataform-controls/checkbox.js +23 -2
- package/build/dataform-controls/checkbox.js.map +1 -1
- package/build/dataform-controls/color.js +128 -0
- package/build/dataform-controls/color.js.map +1 -0
- package/build/dataform-controls/email.js +10 -45
- package/build/dataform-controls/email.js.map +1 -1
- package/build/dataform-controls/index.js +8 -2
- package/build/dataform-controls/index.js.map +1 -1
- package/build/dataform-controls/telephone.js +34 -0
- package/build/dataform-controls/telephone.js.map +1 -0
- package/build/dataform-controls/text.js +7 -48
- package/build/dataform-controls/text.js.map +1 -1
- package/build/dataform-controls/{boolean.js → toggle.js} +6 -4
- package/build/dataform-controls/toggle.js.map +1 -0
- package/build/dataform-controls/url.js +34 -0
- package/build/dataform-controls/url.js.map +1 -0
- package/build/dataform-controls/utils/validated-text.js +76 -0
- package/build/dataform-controls/utils/validated-text.js.map +1 -0
- package/build/dataforms-layouts/card/index.js +6 -7
- package/build/dataforms-layouts/card/index.js.map +1 -1
- package/build/dataforms-layouts/data-form-layout.js +16 -4
- package/build/dataforms-layouts/data-form-layout.js.map +1 -1
- package/build/dataforms-layouts/index.js +31 -1
- package/build/dataforms-layouts/index.js.map +1 -1
- package/build/dataforms-layouts/row/index.js +113 -0
- package/build/dataforms-layouts/row/index.js.map +1 -0
- package/build/dataviews-layouts/grid/index.js +16 -11
- package/build/dataviews-layouts/grid/index.js.map +1 -1
- package/build/dataviews-layouts/index.js +9 -1
- package/build/dataviews-layouts/index.js.map +1 -1
- package/build/dataviews-layouts/picker-grid/index.js +357 -0
- package/build/dataviews-layouts/picker-grid/index.js.map +1 -0
- package/build/dataviews-layouts/utils/grid-items.js +37 -0
- package/build/dataviews-layouts/utils/grid-items.js.map +1 -0
- package/build/dataviews-layouts/utils/preview-size-picker.js +81 -0
- package/build/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
- package/build/field-types/boolean.js +1 -1
- package/build/field-types/boolean.js.map +1 -1
- package/build/field-types/color.js +113 -0
- package/build/field-types/color.js.map +1 -0
- package/build/field-types/index.js +12 -0
- package/build/field-types/index.js.map +1 -1
- package/build/field-types/telephone.js +57 -0
- package/build/field-types/telephone.js.map +1 -0
- package/build/field-types/url.js +57 -0
- package/build/field-types/url.js.map +1 -0
- package/build/normalize-form-fields.js +6 -0
- package/build/normalize-form-fields.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build/validation.js +1 -1
- package/build/validation.js.map +1 -1
- package/build-module/components/dataform-context/index.js +1 -0
- package/build-module/components/dataform-context/index.js.map +1 -1
- package/build-module/components/dataviews/index.js +11 -1
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews-context/index.js +1 -0
- package/build-module/components/dataviews-context/index.js.map +1 -1
- package/build-module/components/dataviews-layout/index.js +2 -1
- package/build-module/components/dataviews-layout/index.js.map +1 -1
- package/build-module/components/dataviews-picker/footer.js +136 -0
- package/build-module/components/dataviews-picker/footer.js.map +1 -0
- package/build-module/components/dataviews-picker/index.js +191 -0
- package/build-module/components/dataviews-picker/index.js.map +1 -0
- package/build-module/components/dataviews-selection-checkbox/index.js +4 -2
- package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build-module/components/dataviews-view-config/index.js +1 -0
- package/build-module/components/dataviews-view-config/index.js.map +1 -1
- package/build-module/constants.js +3 -0
- package/build-module/constants.js.map +1 -1
- package/build-module/dataform-controls/checkbox.js +25 -3
- package/build-module/dataform-controls/checkbox.js.map +1 -1
- package/build-module/dataform-controls/color.js +122 -0
- package/build-module/dataform-controls/color.js.map +1 -0
- package/build-module/dataform-controls/email.js +9 -45
- package/build-module/dataform-controls/email.js.map +1 -1
- package/build-module/dataform-controls/index.js +8 -2
- package/build-module/dataform-controls/index.js.map +1 -1
- package/build-module/dataform-controls/telephone.js +27 -0
- package/build-module/dataform-controls/telephone.js.map +1 -0
- package/build-module/dataform-controls/text.js +6 -48
- package/build-module/dataform-controls/text.js.map +1 -1
- package/build-module/dataform-controls/{boolean.js → toggle.js} +5 -3
- package/build-module/dataform-controls/toggle.js.map +1 -0
- package/build-module/dataform-controls/url.js +27 -0
- package/build-module/dataform-controls/url.js.map +1 -0
- package/build-module/dataform-controls/utils/validated-text.js +70 -0
- package/build-module/dataform-controls/utils/validated-text.js.map +1 -0
- package/build-module/dataforms-layouts/card/index.js +6 -7
- package/build-module/dataforms-layouts/card/index.js.map +1 -1
- package/build-module/dataforms-layouts/data-form-layout.js +14 -4
- package/build-module/dataforms-layouts/data-form-layout.js.map +1 -1
- package/build-module/dataforms-layouts/index.js +32 -1
- package/build-module/dataforms-layouts/index.js.map +1 -1
- package/build-module/dataforms-layouts/row/index.js +106 -0
- package/build-module/dataforms-layouts/row/index.js.map +1 -0
- package/build-module/dataviews-layouts/grid/index.js +16 -11
- package/build-module/dataviews-layouts/grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/index.js +10 -2
- package/build-module/dataviews-layouts/index.js.map +1 -1
- package/build-module/dataviews-layouts/picker-grid/index.js +348 -0
- package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -0
- package/build-module/dataviews-layouts/utils/grid-items.js +29 -0
- package/build-module/dataviews-layouts/utils/grid-items.js.map +1 -0
- package/build-module/dataviews-layouts/utils/preview-size-picker.js +73 -0
- package/build-module/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
- package/build-module/field-types/boolean.js +1 -1
- package/build-module/field-types/boolean.js.map +1 -1
- package/build-module/field-types/color.js +107 -0
- package/build-module/field-types/color.js.map +1 -0
- package/build-module/field-types/index.js +12 -0
- package/build-module/field-types/index.js.map +1 -1
- package/build-module/field-types/telephone.js +51 -0
- package/build-module/field-types/telephone.js.map +1 -0
- package/build-module/field-types/url.js +51 -0
- package/build-module/field-types/url.js.map +1 -0
- package/build-module/normalize-form-fields.js +6 -0
- package/build-module/normalize-form-fields.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-module/validation.js +1 -1
- package/build-module/validation.js.map +1 -1
- package/build-style/style-rtl.css +252 -12
- package/build-style/style.css +252 -12
- package/build-types/components/dataform/stories/index.story.d.ts +19 -4
- package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataform-context/index.d.ts.map +1 -1
- package/build-types/components/dataviews/index.d.ts +1 -1
- package/build-types/components/dataviews/index.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 +1 -0
- package/build-types/components/dataviews-context/index.d.ts.map +1 -1
- package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
- package/build-types/components/dataviews-picker/footer.d.ts +4 -0
- package/build-types/components/dataviews-picker/footer.d.ts.map +1 -0
- package/build-types/components/dataviews-picker/index.d.ts +55 -0
- package/build-types/components/dataviews-picker/index.d.ts.map +1 -0
- package/build-types/components/dataviews-picker/stories/index.story.d.ts +42 -0
- package/build-types/components/dataviews-picker/stories/index.story.d.ts.map +1 -0
- package/build-types/components/dataviews-selection-checkbox/index.d.ts +2 -1
- package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/constants.d.ts +1 -0
- package/build-types/constants.d.ts.map +1 -1
- package/build-types/dataform-controls/checkbox.d.ts.map +1 -1
- package/build-types/dataform-controls/color.d.ts +6 -0
- package/build-types/dataform-controls/color.d.ts.map +1 -0
- package/build-types/dataform-controls/email.d.ts.map +1 -1
- package/build-types/dataform-controls/index.d.ts.map +1 -1
- package/build-types/dataform-controls/telephone.d.ts +6 -0
- package/build-types/dataform-controls/telephone.d.ts.map +1 -0
- package/build-types/dataform-controls/text.d.ts.map +1 -1
- package/build-types/dataform-controls/toggle.d.ts +6 -0
- package/build-types/dataform-controls/toggle.d.ts.map +1 -0
- package/build-types/dataform-controls/url.d.ts +6 -0
- package/build-types/dataform-controls/url.d.ts.map +1 -0
- package/build-types/dataform-controls/utils/validated-text.d.ts +16 -0
- package/build-types/dataform-controls/utils/validated-text.d.ts.map +1 -0
- package/build-types/dataforms-layouts/card/index.d.ts +0 -3
- package/build-types/dataforms-layouts/card/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/data-form-layout.d.ts +4 -1
- package/build-types/dataforms-layouts/data-form-layout.d.ts.map +1 -1
- package/build-types/dataforms-layouts/index.d.ts +10 -0
- package/build-types/dataforms-layouts/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/row/index.d.ts +6 -0
- package/build-types/dataforms-layouts/row/index.d.ts.map +1 -0
- package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/index.d.ts +12 -1
- package/build-types/dataviews-layouts/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/picker-grid/index.d.ts +4 -0
- package/build-types/dataviews-layouts/picker-grid/index.d.ts.map +1 -0
- package/build-types/dataviews-layouts/utils/grid-items.d.ts +5 -0
- package/build-types/dataviews-layouts/utils/grid-items.d.ts.map +1 -0
- package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts +2 -0
- package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts.map +1 -0
- package/build-types/field-types/color.d.ts +20 -0
- package/build-types/field-types/color.d.ts.map +1 -0
- package/build-types/field-types/index.d.ts.map +1 -1
- package/build-types/field-types/stories/index.story.d.ts +81 -0
- package/build-types/field-types/stories/index.story.d.ts.map +1 -0
- package/build-types/field-types/telephone.d.ts +20 -0
- package/build-types/field-types/telephone.d.ts.map +1 -0
- package/build-types/field-types/url.d.ts +20 -0
- package/build-types/field-types/url.d.ts.map +1 -0
- package/build-types/normalize-form-fields.d.ts.map +1 -1
- package/build-types/test/dataviews-picker.d.ts +2 -0
- package/build-types/test/dataviews-picker.d.ts.map +1 -0
- package/build-types/types.d.ts +36 -5
- package/build-types/types.d.ts.map +1 -1
- package/build-types/validation.d.ts.map +1 -1
- package/build-wp/index.js +5061 -4013
- package/package.json +16 -15
- package/src/components/dataform/stories/index.story.tsx +333 -11
- package/src/components/dataform-context/index.tsx +1 -0
- package/src/components/dataviews/index.tsx +25 -1
- package/src/components/dataviews/stories/fixtures.tsx +1 -1
- package/src/components/dataviews/stories/index.story.tsx +14 -0
- package/src/components/dataviews/style.scss +4 -2
- package/src/components/dataviews-context/index.ts +3 -0
- package/src/components/dataviews-layout/index.tsx +4 -2
- package/src/components/dataviews-picker/footer.tsx +207 -0
- package/src/components/dataviews-picker/index.tsx +284 -0
- package/src/components/dataviews-picker/stories/index.story.tsx +251 -0
- package/src/components/dataviews-picker/style.scss +10 -0
- package/src/components/dataviews-selection-checkbox/index.tsx +3 -0
- package/src/components/dataviews-view-config/index.tsx +1 -0
- package/src/constants.ts +3 -0
- package/src/dataform-controls/checkbox.tsx +33 -3
- package/src/dataform-controls/color.tsx +139 -0
- package/src/dataform-controls/email.tsx +10 -52
- package/src/dataform-controls/index.tsx +8 -2
- package/src/dataform-controls/telephone.tsx +30 -0
- package/src/dataform-controls/text.tsx +2 -57
- package/src/dataform-controls/{boolean.tsx → toggle.tsx} +3 -2
- package/src/dataform-controls/url.tsx +30 -0
- package/src/dataform-controls/utils/validated-text.tsx +96 -0
- package/src/dataforms-layouts/card/index.tsx +5 -4
- package/src/dataforms-layouts/card/style.scss +7 -0
- package/src/dataforms-layouts/data-form-layout.tsx +15 -3
- package/src/dataforms-layouts/index.tsx +35 -0
- package/src/dataforms-layouts/row/index.tsx +115 -0
- package/src/dataforms-layouts/row/style.scss +3 -0
- package/src/dataviews-layouts/grid/index.tsx +38 -33
- package/src/dataviews-layouts/grid/style.scss +42 -20
- package/src/dataviews-layouts/index.ts +16 -2
- package/src/dataviews-layouts/picker-grid/index.tsx +490 -0
- package/src/dataviews-layouts/picker-grid/style.scss +171 -0
- package/src/dataviews-layouts/utils/grid-items.scss +21 -0
- package/src/dataviews-layouts/utils/grid-items.tsx +35 -0
- package/src/dataviews-layouts/utils/preview-size-picker.tsx +87 -0
- package/src/field-types/boolean.tsx +1 -1
- package/src/field-types/color.tsx +115 -0
- package/src/field-types/index.tsx +15 -0
- package/src/field-types/stories/index.story.tsx +719 -0
- package/src/field-types/telephone.tsx +71 -0
- package/src/field-types/url.tsx +71 -0
- package/src/normalize-form-fields.ts +6 -0
- package/src/style.scss +4 -0
- package/src/test/dataform.tsx +2 -2
- package/src/test/dataviews-picker.tsx +478 -0
- package/src/test/dataviews.tsx +86 -0
- package/src/types.ts +56 -4
- package/src/validation.ts +3 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/dataform-controls/boolean.js.map +0 -1
- package/build-module/dataform-controls/boolean.js.map +0 -1
- package/build-types/components/stories/index.story.d.ts +0 -63
- package/build-types/components/stories/index.story.d.ts.map +0 -1
- package/build-types/dataform-controls/boolean.d.ts +0 -6
- package/build-types/dataform-controls/boolean.d.ts.map +0 -1
- package/src/components/stories/index.story.tsx +0 -372
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__experimentalHStack","HStack","__experimentalSpacer","Spacer","__experimentalVStack","VStack","__experimentalHeading","Heading","useContext","DataFormContext","DataFormLayout","isCombinedField","normalizeLayout","getFormFieldLayout","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Header","title","className","spacing","children","alignment","level","size","EMPTY_WRAPPER","FormRowField","data","field","onChange","hideLabelFromVision","fields","layout","type","form","map","child","id","label","as","FieldLayout","nestedField","fieldDefinition","find","f","Edit","RegularLayout","component"],"sources":["@wordpress/dataviews/src/dataforms-layouts/row/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalSpacer as Spacer,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n} from '@wordpress/components';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { FieldLayoutProps, Form, NormalizedRowLayout } from '../../types';\nimport DataFormContext from '../../components/dataform-context';\nimport { DataFormLayout } from '../data-form-layout';\nimport { isCombinedField } from '../is-combined-field';\nimport { normalizeLayout } from '../../normalize-form-fields';\nimport { getFormFieldLayout } from '..';\n\nfunction Header( { title }: { title: string } ) {\n\treturn (\n\t\t<VStack className=\"dataforms-layouts-row__header\" spacing={ 4 }>\n\t\t\t<HStack alignment=\"center\">\n\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\n\t\t\t\t<Spacer />\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nconst EMPTY_WRAPPER = ( { children }: { children: React.ReactNode } ) => (\n\t<>{ children }</>\n);\n\nexport default function FormRowField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\n\tconst layout = normalizeLayout( {\n\t\t...field.layout,\n\t\ttype: 'row',\n\t} ) as NormalizedRowLayout;\n\n\tif ( isCombinedField( field ) ) {\n\t\tconst form: Form = {\n\t\t\tfields: field.children.map( ( child ) => {\n\t\t\t\tif ( typeof child === 'string' ) {\n\t\t\t\t\treturn { id: child };\n\t\t\t\t}\n\t\t\t\treturn child;\n\t\t\t} ),\n\t\t};\n\n\t\treturn (\n\t\t\t<div className=\"dataforms-layouts-row__field\">\n\t\t\t\t{ ! hideLabelFromVision && field.label && (\n\t\t\t\t\t<Header title={ field.label } />\n\t\t\t\t) }\n\t\t\t\t<HStack alignment={ layout.alignment } spacing={ 4 }>\n\t\t\t\t\t<DataFormLayout\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tas={ EMPTY_WRAPPER }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( FieldLayout, nestedField ) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={ nestedField.id }\n\t\t\t\t\t\t\t\tclassName=\"dataforms-layouts-row__field-control\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tfield={ nestedField }\n\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DataFormLayout>\n\t\t\t\t</HStack>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst fieldDefinition = fields.find( ( f ) => f.id === field.id );\n\n\tif ( ! fieldDefinition || ! fieldDefinition.Edit ) {\n\t\treturn null;\n\t}\n\n\tconst RegularLayout = getFormFieldLayout( 'regular' )?.component;\n\tif ( ! RegularLayout ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"dataforms-layouts-row__field-control\">\n\t\t\t\t<RegularLayout\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -20,6 +20,7 @@ import DataViewsSelectionCheckbox from '../../components/dataviews-selection-che
|
|
|
20
20
|
import DataViewsContext from '../../components/dataviews-context';
|
|
21
21
|
import { useHasAPossibleBulkAction, useSomeItemHasAPossibleBulkAction } from '../../components/dataviews-bulk-actions';
|
|
22
22
|
import { ItemClickWrapper } from '../utils/item-click-wrapper';
|
|
23
|
+
import { GridItems } from '../utils/grid-items';
|
|
23
24
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
24
25
|
const {
|
|
25
26
|
Badge
|
|
@@ -62,6 +63,7 @@ function GridItem({
|
|
|
62
63
|
item: item,
|
|
63
64
|
field: titleField
|
|
64
65
|
}) : null;
|
|
66
|
+
const shouldRenderMedia = showMedia && renderedMediaField;
|
|
65
67
|
let mediaA11yProps;
|
|
66
68
|
let titleA11yProps;
|
|
67
69
|
if (isItemClickable(item) && onClickItem) {
|
|
@@ -99,7 +101,7 @@ function GridItem({
|
|
|
99
101
|
role: infiniteScrollEnabled ? 'article' : undefined,
|
|
100
102
|
"aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : undefined,
|
|
101
103
|
"aria-posinset": posinset,
|
|
102
|
-
children: [
|
|
104
|
+
children: [shouldRenderMedia && /*#__PURE__*/_jsx(ItemClickWrapper, {
|
|
103
105
|
item: item,
|
|
104
106
|
isItemClickable: isItemClickable,
|
|
105
107
|
onClickItem: onClickItem,
|
|
@@ -107,14 +109,21 @@ function GridItem({
|
|
|
107
109
|
className: "dataviews-view-grid__media",
|
|
108
110
|
...mediaA11yProps,
|
|
109
111
|
children: renderedMediaField
|
|
110
|
-
}), hasBulkActions &&
|
|
112
|
+
}), hasBulkActions && shouldRenderMedia && /*#__PURE__*/_jsx(DataViewsSelectionCheckbox, {
|
|
111
113
|
item: item,
|
|
112
114
|
selection: selection,
|
|
113
115
|
onChangeSelection: onChangeSelection,
|
|
114
116
|
getItemId: getItemId,
|
|
115
117
|
titleField: titleField,
|
|
116
118
|
disabled: !hasBulkAction
|
|
117
|
-
}), /*#__PURE__*/
|
|
119
|
+
}), !showTitle && shouldRenderMedia && !!actions?.length && /*#__PURE__*/_jsx("div", {
|
|
120
|
+
className: "dataviews-view-grid__media-actions",
|
|
121
|
+
children: /*#__PURE__*/_jsx(ItemActions, {
|
|
122
|
+
item: item,
|
|
123
|
+
actions: actions,
|
|
124
|
+
isCompact: true
|
|
125
|
+
})
|
|
126
|
+
}), showTitle && /*#__PURE__*/_jsxs(HStack, {
|
|
118
127
|
justify: "space-between",
|
|
119
128
|
className: "dataviews-view-grid__title-actions",
|
|
120
129
|
children: [/*#__PURE__*/_jsx(ItemClickWrapper, {
|
|
@@ -263,11 +272,9 @@ function ViewGrid({
|
|
|
263
272
|
children: sprintf(
|
|
264
273
|
// translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
|
|
265
274
|
__('%1$s: %2$s'), groupField.label, groupName)
|
|
266
|
-
}), /*#__PURE__*/_jsx(
|
|
275
|
+
}), /*#__PURE__*/_jsx(GridItems, {
|
|
267
276
|
className: clsx('dataviews-view-grid', className),
|
|
268
|
-
|
|
269
|
-
gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))`
|
|
270
|
-
},
|
|
277
|
+
previewSize: usedPreviewSize,
|
|
271
278
|
"aria-busy": isLoading,
|
|
272
279
|
ref: resizeObserverRef,
|
|
273
280
|
children: groupItems.map(item => {
|
|
@@ -296,11 +303,9 @@ function ViewGrid({
|
|
|
296
303
|
}, groupName))
|
|
297
304
|
}),
|
|
298
305
|
// Render a single grid with all data.
|
|
299
|
-
hasData && !dataByGroup && /*#__PURE__*/_jsx(
|
|
306
|
+
hasData && !dataByGroup && /*#__PURE__*/_jsx(GridItems, {
|
|
300
307
|
className: clsx('dataviews-view-grid', className),
|
|
301
|
-
|
|
302
|
-
gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))`
|
|
303
|
-
},
|
|
308
|
+
previewSize: usedPreviewSize,
|
|
304
309
|
"aria-busy": isLoading,
|
|
305
310
|
ref: resizeObserverRef,
|
|
306
311
|
role: isInfiniteScroll ? 'feed' : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","__experimentalHStack","HStack","__experimentalVStack","VStack","Spinner","Flex","FlexItem","Tooltip","privateApis","componentsPrivateApis","__","sprintf","useInstanceId","isAppleOS","useContext","unlock","ItemActions","DataViewsSelectionCheckbox","DataViewsContext","useHasAPossibleBulkAction","useSomeItemHasAPossibleBulkAction","ItemClickWrapper","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Badge","GridItem","view","selection","onChangeSelection","onClickItem","isItemClickable","renderItemLink","getItemId","item","actions","mediaField","titleField","descriptionField","regularFields","badgeFields","hasBulkActions","config","posinset","showTitle","showMedia","showDescription","infiniteScrollEnabled","hasBulkAction","id","instanceId","isSelected","includes","renderedMediaField","render","field","renderedTitleField","mediaA11yProps","titleA11yProps","paginationInfo","spacing","className","onClickCapture","event","metaKey","ctrlKey","stopPropagation","preventDefault","filter","itemId","role","undefined","totalItems","children","disabled","justify","length","isCompact","wrap","alignment","map","gap","expanded","style","height","direction","text","label","header","maxHeight","ViewGrid","data","fields","isLoading","empty","_view$fields","resizeObserverRef","find","otherFields","reduce","accumulator","fieldId","f","key","layout","push","hasData","usedPreviewSize","previewSize","size","groupField","groupByField","dataByGroup","groups","groupName","getValue","has","set","get","Map","isInfiniteScroll","Array","from","entries","groupItems","gridTemplateColumns","ref","sizes","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/grid/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tSpinner,\n\tFlex,\n\tFlexItem,\n\tTooltip,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport DataViewsContext from '../../components/dataviews-context';\nimport {\n\tuseHasAPossibleBulkAction,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewGrid as ViewGridType,\n\tViewGridProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nconst { Badge } = unlock( componentsPrivateApis );\n\ninterface GridItemProps< Item > {\n\tview: ViewGridType;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\thasBulkActions: boolean;\n\tconfig: {\n\t\tsizes: string;\n\t};\n\tposinset?: number;\n}\n\nfunction GridItem< Item >( {\n\tview,\n\tselection,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tgetItemId,\n\titem,\n\tactions,\n\tmediaField,\n\ttitleField,\n\tdescriptionField,\n\tregularFields,\n\tbadgeFields,\n\thasBulkActions,\n\tconfig,\n\tposinset,\n}: GridItemProps< Item > ) {\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst instanceId = useInstanceId( GridItem );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tlet mediaA11yProps;\n\tlet titleA11yProps;\n\tif ( isItemClickable( item ) && onClickItem ) {\n\t\tif ( renderedTitleField ) {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-labelledby': `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t\ttitleA11yProps = {\n\t\t\t\tid: `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t} else {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-label': __( 'Navigate to item' ),\n\t\t\t};\n\t\t}\n\t}\n\tconst { paginationInfo } = useContext( DataViewsContext );\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 ( isAppleOS() ? event.metaKey : event.ctrlKey ) {\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\trole={ infiniteScrollEnabled ? 'article' : undefined }\n\t\t\taria-setsize={\n\t\t\t\tinfiniteScrollEnabled ? paginationInfo.totalItems : undefined\n\t\t\t}\n\t\t\taria-posinset={ posinset }\n\t\t>\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__media\"\n\t\t\t\t\t{ ...mediaA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t) }\n\t\t\t{ hasBulkActions && showMedia && renderedMediaField && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t/>\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<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__title-field dataviews-title-field\"\n\t\t\t\t\t{ ...titleA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } isCompact />\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\t\twrap\n\t\t\t\t\t\talignment=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__fields\"\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Tooltip text={ field.label }>\n\t\t\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\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\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\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</VStack>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</VStack>\n\t);\n}\n\nfunction ViewGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewGridProps< Item > ) {\n\tconst { resizeObserverRef } = useContext( DataViewsContext );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\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( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\tconst usedPreviewSize = view.layout?.previewSize;\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\n\tconst groupField = view.groupByField\n\t\t? fields.find( ( f ) => f.id === view.groupByField )\n\t\t: null;\n\n\t// Group data by groupByField if specified\n\tconst dataByGroup = groupField\n\t\t? data.reduce( ( groups: Map< string, typeof data >, item ) => {\n\t\t\t\tconst groupName = groupField.getValue( { item } );\n\t\t\t\tif ( ! groups.has( groupName ) ) {\n\t\t\t\t\tgroups.set( groupName, [] );\n\t\t\t\t}\n\t\t\t\tgroups.get( groupName )?.push( item );\n\t\t\t\treturn groups;\n\t\t }, new Map< string, typeof data >() )\n\t\t: null;\n\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<VStack key={ groupName } spacing={ 2 }>\n\t\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-grid__group-header\">\n\t\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t'dataviews-view-grid',\n\t\t\t\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( 'dataviews-view-grid', className ) }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\trole={ isInfiniteScroll ? 'feed' : undefined }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\t\t\tisInfiniteScroll ? index + 1 : undefined\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</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<p>{ isLoading ? <Spinner /> : empty }</p>\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewGrid;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","__experimentalHStack","HStack","__experimentalVStack","VStack","Spinner","Flex","FlexItem","Tooltip","privateApis","componentsPrivateApis","__","sprintf","useInstanceId","isAppleOS","useContext","unlock","ItemActions","DataViewsSelectionCheckbox","DataViewsContext","useHasAPossibleBulkAction","useSomeItemHasAPossibleBulkAction","ItemClickWrapper","GridItems","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Badge","GridItem","view","selection","onChangeSelection","onClickItem","isItemClickable","renderItemLink","getItemId","item","actions","mediaField","titleField","descriptionField","regularFields","badgeFields","hasBulkActions","config","posinset","showTitle","showMedia","showDescription","infiniteScrollEnabled","hasBulkAction","id","instanceId","isSelected","includes","renderedMediaField","render","field","renderedTitleField","shouldRenderMedia","mediaA11yProps","titleA11yProps","paginationInfo","spacing","className","onClickCapture","event","metaKey","ctrlKey","stopPropagation","preventDefault","filter","itemId","role","undefined","totalItems","children","disabled","length","isCompact","justify","wrap","alignment","map","gap","expanded","style","height","direction","text","label","header","maxHeight","ViewGrid","data","fields","isLoading","empty","_view$fields","resizeObserverRef","find","otherFields","reduce","accumulator","fieldId","f","key","layout","push","hasData","usedPreviewSize","previewSize","size","groupField","groupByField","dataByGroup","groups","groupName","getValue","has","set","get","Map","isInfiniteScroll","Array","from","entries","groupItems","ref","sizes","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/grid/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tSpinner,\n\tFlex,\n\tFlexItem,\n\tTooltip,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport DataViewsContext from '../../components/dataviews-context';\nimport {\n\tuseHasAPossibleBulkAction,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewGrid as ViewGridType,\n\tViewGridProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nimport { GridItems } from '../utils/grid-items';\nconst { Badge } = unlock( componentsPrivateApis );\n\ninterface GridItemProps< Item > {\n\tview: ViewGridType;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\thasBulkActions: boolean;\n\tconfig: {\n\t\tsizes: string;\n\t};\n\tposinset?: number;\n}\n\nfunction GridItem< Item >( {\n\tview,\n\tselection,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tgetItemId,\n\titem,\n\tactions,\n\tmediaField,\n\ttitleField,\n\tdescriptionField,\n\tregularFields,\n\tbadgeFields,\n\thasBulkActions,\n\tconfig,\n\tposinset,\n}: GridItemProps< Item > ) {\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst instanceId = useInstanceId( GridItem );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\tconst shouldRenderMedia = showMedia && renderedMediaField;\n\n\tlet mediaA11yProps;\n\tlet titleA11yProps;\n\tif ( isItemClickable( item ) && onClickItem ) {\n\t\tif ( renderedTitleField ) {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-labelledby': `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t\ttitleA11yProps = {\n\t\t\t\tid: `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t} else {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-label': __( 'Navigate to item' ),\n\t\t\t};\n\t\t}\n\t}\n\tconst { paginationInfo } = useContext( DataViewsContext );\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 ( isAppleOS() ? event.metaKey : event.ctrlKey ) {\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\trole={ infiniteScrollEnabled ? 'article' : undefined }\n\t\t\taria-setsize={\n\t\t\t\tinfiniteScrollEnabled ? paginationInfo.totalItems : undefined\n\t\t\t}\n\t\t\taria-posinset={ posinset }\n\t\t>\n\t\t\t{ shouldRenderMedia && (\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__media\"\n\t\t\t\t\t{ ...mediaA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t) }\n\t\t\t{ hasBulkActions && shouldRenderMedia && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! showTitle && shouldRenderMedia && !! actions?.length && (\n\t\t\t\t<div className=\"dataviews-view-grid__media-actions\">\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } isCompact />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ showTitle && (\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\tclassName=\"dataviews-view-grid__title-actions\"\n\t\t\t\t>\n\t\t\t\t\t<ItemClickWrapper\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__title-field dataviews-title-field\"\n\t\t\t\t\t\t{ ...titleA11yProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t</ItemClickWrapper>\n\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\tisCompact\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\t\twrap\n\t\t\t\t\t\talignment=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__fields\"\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Tooltip text={ field.label }>\n\t\t\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\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\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\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</VStack>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</VStack>\n\t);\n}\n\nfunction ViewGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewGridProps< Item > ) {\n\tconst { resizeObserverRef } = useContext( DataViewsContext );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\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( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\tconst usedPreviewSize = view.layout?.previewSize;\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\n\tconst groupField = view.groupByField\n\t\t? fields.find( ( f ) => f.id === view.groupByField )\n\t\t: null;\n\n\t// Group data by groupByField if specified\n\tconst dataByGroup = groupField\n\t\t? data.reduce( ( groups: Map< string, typeof data >, item ) => {\n\t\t\t\tconst groupName = groupField.getValue( { item } );\n\t\t\t\tif ( ! groups.has( groupName ) ) {\n\t\t\t\t\tgroups.set( groupName, [] );\n\t\t\t\t}\n\t\t\t\tgroups.get( groupName )?.push( item );\n\t\t\t\treturn groups;\n\t\t }, new Map< string, typeof data >() )\n\t\t: null;\n\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<VStack key={ groupName } spacing={ 2 }>\n\t\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-grid__group-header\">\n\t\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t'dataviews-view-grid',\n\t\t\t\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</GridItems>\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<GridItems\n\t\t\t\t\t\tclassName={ clsx( 'dataviews-view-grid', className ) }\n\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\trole={ isInfiniteScroll ? 'feed' : undefined }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\t\t\tisInfiniteScroll ? index + 1 : undefined\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</GridItems>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<p>{ isLoading ? <Spinner /> : empty }</p>\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewGrid;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,8 +10,9 @@ import { blockTable, category, formatListBullets, formatListBulletsRTL } from '@
|
|
|
10
10
|
import ViewTable from './table';
|
|
11
11
|
import ViewGrid from './grid';
|
|
12
12
|
import ViewList from './list';
|
|
13
|
-
import
|
|
14
|
-
import
|
|
13
|
+
import ViewPickerGrid from './picker-grid';
|
|
14
|
+
import { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE, LAYOUT_PICKER_GRID } from '../constants';
|
|
15
|
+
import PreviewSizePicker from './utils/preview-size-picker';
|
|
15
16
|
import DensityPicker from './table/density-picker';
|
|
16
17
|
export const VIEW_LAYOUTS = [{
|
|
17
18
|
type: LAYOUT_TABLE,
|
|
@@ -30,5 +31,12 @@ export const VIEW_LAYOUTS = [{
|
|
|
30
31
|
label: __('List'),
|
|
31
32
|
component: ViewList,
|
|
32
33
|
icon: isRTL() ? formatListBulletsRTL : formatListBullets
|
|
34
|
+
}, {
|
|
35
|
+
type: LAYOUT_PICKER_GRID,
|
|
36
|
+
label: __('Grid'),
|
|
37
|
+
component: ViewPickerGrid,
|
|
38
|
+
icon: category,
|
|
39
|
+
viewConfigOptions: PreviewSizePicker,
|
|
40
|
+
isPicker: true
|
|
33
41
|
}];
|
|
34
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
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"],"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
|
|
1
|
+
{"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","ViewPickerGrid","LAYOUT_GRID","LAYOUT_LIST","LAYOUT_TABLE","LAYOUT_PICKER_GRID","PreviewSizePicker","DensityPicker","VIEW_LAYOUTS","type","label","component","icon","viewConfigOptions","isPicker"],"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 ViewPickerGrid from './picker-grid';\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_LIST,\n\tLAYOUT_TABLE,\n\tLAYOUT_PICKER_GRID,\n} from '../constants';\nimport PreviewSizePicker from './utils/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\t{\n\t\ttype: LAYOUT_PICKER_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewPickerGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t\tisPicker: true,\n\t},\n];\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,KAAK,QAAQ,iBAAiB;AAC3C,SACCC,UAAU,EACVC,QAAQ,EACRC,iBAAiB,EACjBC,oBAAoB,QACd,kBAAkB;;AAEzB;AACA;AACA;AACA,OAAOC,SAAS,MAAM,SAAS;AAC/B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,OAAOC,cAAc,MAAM,eAAe;AAC1C,SACCC,WAAW,EACXC,WAAW,EACXC,YAAY,EACZC,kBAAkB,QACZ,cAAc;AACrB,OAAOC,iBAAiB,MAAM,6BAA6B;AAC3D,OAAOC,aAAa,MAAM,wBAAwB;AAElD,OAAO,MAAMC,YAAY,GAAG,CAC3B;EACCC,IAAI,EAAEL,YAAY;EAClBM,KAAK,EAAElB,EAAE,CAAE,OAAQ,CAAC;EACpBmB,SAAS,EAAEb,SAAS;EACpBc,IAAI,EAAElB,UAAU;EAChBmB,iBAAiB,EAAEN;AACpB,CAAC,EACD;EACCE,IAAI,EAAEP,WAAW;EACjBQ,KAAK,EAAElB,EAAE,CAAE,MAAO,CAAC;EACnBmB,SAAS,EAAEZ,QAAQ;EACnBa,IAAI,EAAEjB,QAAQ;EACdkB,iBAAiB,EAAEP;AACpB,CAAC,EACD;EACCG,IAAI,EAAEN,WAAW;EACjBO,KAAK,EAAElB,EAAE,CAAE,MAAO,CAAC;EACnBmB,SAAS,EAAEX,QAAQ;EACnBY,IAAI,EAAEnB,KAAK,CAAC,CAAC,GAAGI,oBAAoB,GAAGD;AACxC,CAAC,EACD;EACCa,IAAI,EAAEJ,kBAAkB;EACxBK,KAAK,EAAElB,EAAE,CAAE,MAAO,CAAC;EACnBmB,SAAS,EAAEV,cAAc;EACzBW,IAAI,EAAEjB,QAAQ;EACdkB,iBAAiB,EAAEP,iBAAiB;EACpCQ,QAAQ,EAAE;AACX,CAAC,CACD","ignoreList":[]}
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
/**
|
|
6
|
+
* WordPress dependencies
|
|
7
|
+
*/
|
|
8
|
+
import { __experimentalHStack as HStack, __experimentalVStack as VStack, Spinner, Flex, FlexItem, privateApis as componentsPrivateApis, Composite } from '@wordpress/components';
|
|
9
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
10
|
+
import { useInstanceId } from '@wordpress/compose';
|
|
11
|
+
import { useContext } from '@wordpress/element';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Internal dependencies
|
|
15
|
+
*/
|
|
16
|
+
import { unlock } from '../../lock-unlock';
|
|
17
|
+
import DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';
|
|
18
|
+
import DataViewsContext from '../../components/dataviews-context';
|
|
19
|
+
import { useIsMultiselectPicker } from '../../components/dataviews-picker/footer';
|
|
20
|
+
import { GridItems } from '../utils/grid-items';
|
|
21
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
+
const {
|
|
23
|
+
Badge
|
|
24
|
+
} = unlock(componentsPrivateApis);
|
|
25
|
+
function GridItem({
|
|
26
|
+
view,
|
|
27
|
+
multiselect,
|
|
28
|
+
selection,
|
|
29
|
+
onChangeSelection,
|
|
30
|
+
getItemId,
|
|
31
|
+
item,
|
|
32
|
+
mediaField,
|
|
33
|
+
titleField,
|
|
34
|
+
descriptionField,
|
|
35
|
+
regularFields,
|
|
36
|
+
badgeFields,
|
|
37
|
+
config,
|
|
38
|
+
posinset,
|
|
39
|
+
setsize
|
|
40
|
+
}) {
|
|
41
|
+
const {
|
|
42
|
+
showTitle = true,
|
|
43
|
+
showMedia = true,
|
|
44
|
+
showDescription = true
|
|
45
|
+
} = view;
|
|
46
|
+
const id = getItemId(item);
|
|
47
|
+
const isSelected = selection.includes(id);
|
|
48
|
+
const renderedMediaField = mediaField?.render ? /*#__PURE__*/_jsx(mediaField.render, {
|
|
49
|
+
item: item,
|
|
50
|
+
field: mediaField,
|
|
51
|
+
config: config
|
|
52
|
+
}) : null;
|
|
53
|
+
const renderedTitleField = showTitle && titleField?.render ? /*#__PURE__*/_jsx(titleField.render, {
|
|
54
|
+
item: item,
|
|
55
|
+
field: titleField
|
|
56
|
+
}) : null;
|
|
57
|
+
return /*#__PURE__*/_jsxs(Composite.Item, {
|
|
58
|
+
render: ({
|
|
59
|
+
children,
|
|
60
|
+
...props
|
|
61
|
+
}) => /*#__PURE__*/_jsx(VStack, {
|
|
62
|
+
spacing: 0,
|
|
63
|
+
children: children,
|
|
64
|
+
...props
|
|
65
|
+
}),
|
|
66
|
+
role: "option",
|
|
67
|
+
"aria-posinset": posinset,
|
|
68
|
+
"aria-setsize": setsize,
|
|
69
|
+
className: clsx('dataviews-view-picker-grid__card', {
|
|
70
|
+
'is-selected': isSelected
|
|
71
|
+
}),
|
|
72
|
+
"aria-selected": isSelected,
|
|
73
|
+
onClick: () => {
|
|
74
|
+
if (isSelected) {
|
|
75
|
+
onChangeSelection(selection.filter(itemId => id !== itemId));
|
|
76
|
+
} else {
|
|
77
|
+
const newSelection = multiselect ? [...selection, id] : [id];
|
|
78
|
+
onChangeSelection(newSelection);
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
children: [showMedia && renderedMediaField && /*#__PURE__*/_jsx("div", {
|
|
82
|
+
className: "dataviews-view-picker-grid__media",
|
|
83
|
+
children: renderedMediaField
|
|
84
|
+
}), showMedia && renderedMediaField && /*#__PURE__*/_jsx(DataViewsSelectionCheckbox, {
|
|
85
|
+
item: item,
|
|
86
|
+
selection: selection,
|
|
87
|
+
onChangeSelection: onChangeSelection,
|
|
88
|
+
getItemId: getItemId,
|
|
89
|
+
titleField: titleField,
|
|
90
|
+
disabled: false,
|
|
91
|
+
"aria-hidden": true,
|
|
92
|
+
tabIndex: -1
|
|
93
|
+
}), /*#__PURE__*/_jsx(HStack, {
|
|
94
|
+
justify: "space-between",
|
|
95
|
+
className: "dataviews-view-picker-grid__title-actions",
|
|
96
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
97
|
+
className: "dataviews-view-picker-grid__title-field dataviews-title-field",
|
|
98
|
+
children: renderedTitleField
|
|
99
|
+
})
|
|
100
|
+
}), /*#__PURE__*/_jsxs(VStack, {
|
|
101
|
+
spacing: 1,
|
|
102
|
+
children: [showDescription && descriptionField?.render && /*#__PURE__*/_jsx(descriptionField.render, {
|
|
103
|
+
item: item,
|
|
104
|
+
field: descriptionField
|
|
105
|
+
}), !!badgeFields?.length && /*#__PURE__*/_jsx(HStack, {
|
|
106
|
+
className: "dataviews-view-picker-grid__badge-fields",
|
|
107
|
+
spacing: 2,
|
|
108
|
+
wrap: true,
|
|
109
|
+
alignment: "top",
|
|
110
|
+
justify: "flex-start",
|
|
111
|
+
children: badgeFields.map(field => {
|
|
112
|
+
return /*#__PURE__*/_jsx(Badge, {
|
|
113
|
+
className: "dataviews-view-picker-grid__field-value",
|
|
114
|
+
children: /*#__PURE__*/_jsx(field.render, {
|
|
115
|
+
item: item,
|
|
116
|
+
field: field
|
|
117
|
+
})
|
|
118
|
+
}, field.id);
|
|
119
|
+
})
|
|
120
|
+
}), !!regularFields?.length && /*#__PURE__*/_jsx(VStack, {
|
|
121
|
+
className: "dataviews-view-picker-grid__fields",
|
|
122
|
+
spacing: 1,
|
|
123
|
+
children: regularFields.map(field => {
|
|
124
|
+
return /*#__PURE__*/_jsx(Flex, {
|
|
125
|
+
className: "dataviews-view-picker-grid__field",
|
|
126
|
+
gap: 1,
|
|
127
|
+
justify: "flex-start",
|
|
128
|
+
expanded: true,
|
|
129
|
+
style: {
|
|
130
|
+
height: 'auto'
|
|
131
|
+
},
|
|
132
|
+
direction: "row",
|
|
133
|
+
children: /*#__PURE__*/_jsxs(_Fragment, {
|
|
134
|
+
children: [/*#__PURE__*/_jsx(FlexItem, {
|
|
135
|
+
className: "dataviews-view-picker-grid__field-name",
|
|
136
|
+
children: field.header
|
|
137
|
+
}), /*#__PURE__*/_jsx(FlexItem, {
|
|
138
|
+
className: "dataviews-view-picker-grid__field-value",
|
|
139
|
+
style: {
|
|
140
|
+
maxHeight: 'none'
|
|
141
|
+
},
|
|
142
|
+
children: /*#__PURE__*/_jsx(field.render, {
|
|
143
|
+
item: item,
|
|
144
|
+
field: field
|
|
145
|
+
})
|
|
146
|
+
})]
|
|
147
|
+
})
|
|
148
|
+
}, field.id);
|
|
149
|
+
})
|
|
150
|
+
})]
|
|
151
|
+
})]
|
|
152
|
+
}, id);
|
|
153
|
+
}
|
|
154
|
+
function GridGroup({
|
|
155
|
+
groupName,
|
|
156
|
+
groupField,
|
|
157
|
+
children
|
|
158
|
+
}) {
|
|
159
|
+
const headerId = useInstanceId(GridGroup, 'dataviews-view-picker-grid-group__header');
|
|
160
|
+
return /*#__PURE__*/_jsxs(VStack, {
|
|
161
|
+
spacing: 2,
|
|
162
|
+
role: "group",
|
|
163
|
+
"aria-labelledby": headerId,
|
|
164
|
+
children: [/*#__PURE__*/_jsx("h3", {
|
|
165
|
+
className: "dataviews-view-picker-grid-group__header",
|
|
166
|
+
id: headerId,
|
|
167
|
+
children: sprintf(
|
|
168
|
+
// translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
|
|
169
|
+
__('%1$s: %2$s'), groupField.label, groupName)
|
|
170
|
+
}), children]
|
|
171
|
+
}, groupName);
|
|
172
|
+
}
|
|
173
|
+
function ViewPickerGrid({
|
|
174
|
+
actions,
|
|
175
|
+
data,
|
|
176
|
+
fields,
|
|
177
|
+
getItemId,
|
|
178
|
+
isLoading,
|
|
179
|
+
onChangeSelection,
|
|
180
|
+
selection,
|
|
181
|
+
view,
|
|
182
|
+
className,
|
|
183
|
+
empty
|
|
184
|
+
}) {
|
|
185
|
+
var _view$fields, _view$page, _view$perPage;
|
|
186
|
+
const {
|
|
187
|
+
resizeObserverRef,
|
|
188
|
+
paginationInfo,
|
|
189
|
+
itemListLabel
|
|
190
|
+
} = useContext(DataViewsContext);
|
|
191
|
+
const titleField = fields.find(field => field.id === view?.titleField);
|
|
192
|
+
const mediaField = fields.find(field => field.id === view?.mediaField);
|
|
193
|
+
const descriptionField = fields.find(field => field.id === view?.descriptionField);
|
|
194
|
+
const otherFields = (_view$fields = view.fields) !== null && _view$fields !== void 0 ? _view$fields : [];
|
|
195
|
+
const {
|
|
196
|
+
regularFields,
|
|
197
|
+
badgeFields
|
|
198
|
+
} = otherFields.reduce((accumulator, fieldId) => {
|
|
199
|
+
const field = fields.find(f => f.id === fieldId);
|
|
200
|
+
if (!field) {
|
|
201
|
+
return accumulator;
|
|
202
|
+
}
|
|
203
|
+
// If the field is a badge field, add it to the badgeFields array
|
|
204
|
+
// otherwise add it to the rest visibleFields array.
|
|
205
|
+
const key = view.layout?.badgeFields?.includes(fieldId) ? 'badgeFields' : 'regularFields';
|
|
206
|
+
accumulator[key].push(field);
|
|
207
|
+
return accumulator;
|
|
208
|
+
}, {
|
|
209
|
+
regularFields: [],
|
|
210
|
+
badgeFields: []
|
|
211
|
+
});
|
|
212
|
+
const hasData = !!data?.length;
|
|
213
|
+
const usedPreviewSize = view.layout?.previewSize;
|
|
214
|
+
const isMultiselect = useIsMultiselectPicker(actions);
|
|
215
|
+
|
|
216
|
+
/*
|
|
217
|
+
* This is the maximum width that an image can achieve in the grid. The reasoning is:
|
|
218
|
+
* The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).
|
|
219
|
+
* Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.
|
|
220
|
+
* So each image will never grow past 2*430px plus a little more to account for the gaps.
|
|
221
|
+
*/
|
|
222
|
+
const size = '900px';
|
|
223
|
+
const groupField = view.groupByField ? fields.find(f => f.id === view.groupByField) : null;
|
|
224
|
+
|
|
225
|
+
// Group data by groupByField if specified
|
|
226
|
+
const dataByGroup = groupField ? data.reduce((groups, item) => {
|
|
227
|
+
const groupName = groupField.getValue({
|
|
228
|
+
item
|
|
229
|
+
});
|
|
230
|
+
if (!groups.has(groupName)) {
|
|
231
|
+
groups.set(groupName, []);
|
|
232
|
+
}
|
|
233
|
+
groups.get(groupName)?.push(item);
|
|
234
|
+
return groups;
|
|
235
|
+
}, new Map()) : null;
|
|
236
|
+
const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
|
|
237
|
+
const currentPage = (_view$page = view?.page) !== null && _view$page !== void 0 ? _view$page : 1;
|
|
238
|
+
const perPage = (_view$perPage = view?.perPage) !== null && _view$perPage !== void 0 ? _view$perPage : 0;
|
|
239
|
+
const setSize = isInfiniteScroll ? paginationInfo?.totalItems : undefined;
|
|
240
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
241
|
+
children: [
|
|
242
|
+
// Render multiple groups.
|
|
243
|
+
hasData && groupField && dataByGroup && /*#__PURE__*/_jsx(Composite, {
|
|
244
|
+
virtualFocus: true,
|
|
245
|
+
orientation: "horizontal",
|
|
246
|
+
role: "listbox",
|
|
247
|
+
"aria-multiselectable": isMultiselect,
|
|
248
|
+
className: clsx('dataviews-view-picker-grid', className),
|
|
249
|
+
"aria-label": itemListLabel,
|
|
250
|
+
render: ({
|
|
251
|
+
children,
|
|
252
|
+
...props
|
|
253
|
+
}) => /*#__PURE__*/_jsx(VStack, {
|
|
254
|
+
spacing: 4,
|
|
255
|
+
children: children,
|
|
256
|
+
...props
|
|
257
|
+
}),
|
|
258
|
+
children: Array.from(dataByGroup.entries()).map(([groupName, groupItems]) => /*#__PURE__*/_jsx(GridGroup, {
|
|
259
|
+
groupName: groupName,
|
|
260
|
+
groupField: groupField,
|
|
261
|
+
children: /*#__PURE__*/_jsx(GridItems, {
|
|
262
|
+
previewSize: usedPreviewSize,
|
|
263
|
+
style: {
|
|
264
|
+
gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))`
|
|
265
|
+
},
|
|
266
|
+
"aria-busy": isLoading,
|
|
267
|
+
ref: resizeObserverRef,
|
|
268
|
+
children: groupItems.map(item => {
|
|
269
|
+
const posInSet = (currentPage - 1) * perPage + data.indexOf(item) + 1;
|
|
270
|
+
return /*#__PURE__*/_jsx(GridItem, {
|
|
271
|
+
view: view,
|
|
272
|
+
multiselect: isMultiselect,
|
|
273
|
+
selection: selection,
|
|
274
|
+
onChangeSelection: onChangeSelection,
|
|
275
|
+
getItemId: getItemId,
|
|
276
|
+
item: item,
|
|
277
|
+
mediaField: mediaField,
|
|
278
|
+
titleField: titleField,
|
|
279
|
+
descriptionField: descriptionField,
|
|
280
|
+
regularFields: regularFields,
|
|
281
|
+
badgeFields: badgeFields,
|
|
282
|
+
config: {
|
|
283
|
+
sizes: size
|
|
284
|
+
},
|
|
285
|
+
posinset: posInSet,
|
|
286
|
+
setsize: setSize
|
|
287
|
+
}, getItemId(item));
|
|
288
|
+
})
|
|
289
|
+
})
|
|
290
|
+
}, groupName))
|
|
291
|
+
}),
|
|
292
|
+
// Render a single grid with all data.
|
|
293
|
+
hasData && !dataByGroup && /*#__PURE__*/_jsx(Composite, {
|
|
294
|
+
render: /*#__PURE__*/_jsx(GridItems, {
|
|
295
|
+
className: clsx('dataviews-view-picker-grid', className),
|
|
296
|
+
previewSize: usedPreviewSize,
|
|
297
|
+
"aria-busy": isLoading,
|
|
298
|
+
ref: resizeObserverRef
|
|
299
|
+
}),
|
|
300
|
+
virtualFocus: true,
|
|
301
|
+
orientation: "horizontal",
|
|
302
|
+
role: "listbox",
|
|
303
|
+
"aria-multiselectable": isMultiselect,
|
|
304
|
+
"aria-label": itemListLabel,
|
|
305
|
+
children: data.map((item, index) => {
|
|
306
|
+
let posinset = isInfiniteScroll ? index + 1 : undefined;
|
|
307
|
+
if (!isInfiniteScroll) {
|
|
308
|
+
// When infinite scroll isn't active, take pagination into account
|
|
309
|
+
// when calculating the posinset.
|
|
310
|
+
posinset = (currentPage - 1) * perPage + index + 1;
|
|
311
|
+
}
|
|
312
|
+
return /*#__PURE__*/_jsx(GridItem, {
|
|
313
|
+
view: view,
|
|
314
|
+
multiselect: isMultiselect,
|
|
315
|
+
selection: selection,
|
|
316
|
+
onChangeSelection: onChangeSelection,
|
|
317
|
+
getItemId: getItemId,
|
|
318
|
+
item: item,
|
|
319
|
+
mediaField: mediaField,
|
|
320
|
+
titleField: titleField,
|
|
321
|
+
descriptionField: descriptionField,
|
|
322
|
+
regularFields: regularFields,
|
|
323
|
+
badgeFields: badgeFields,
|
|
324
|
+
config: {
|
|
325
|
+
sizes: size
|
|
326
|
+
},
|
|
327
|
+
posinset: posinset,
|
|
328
|
+
setsize: setSize
|
|
329
|
+
}, getItemId(item));
|
|
330
|
+
})
|
|
331
|
+
}),
|
|
332
|
+
// Render empty state.
|
|
333
|
+
!hasData && /*#__PURE__*/_jsx("div", {
|
|
334
|
+
className: clsx({
|
|
335
|
+
'dataviews-loading': isLoading,
|
|
336
|
+
'dataviews-no-results': !isLoading
|
|
337
|
+
}),
|
|
338
|
+
children: /*#__PURE__*/_jsx("p", {
|
|
339
|
+
children: isLoading ? /*#__PURE__*/_jsx(Spinner, {}) : empty
|
|
340
|
+
})
|
|
341
|
+
}), hasData && isLoading && /*#__PURE__*/_jsx("p", {
|
|
342
|
+
className: "dataviews-loading-more",
|
|
343
|
+
children: /*#__PURE__*/_jsx(Spinner, {})
|
|
344
|
+
})]
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
export default ViewPickerGrid;
|
|
348
|
+
//# sourceMappingURL=index.js.map
|