@wordpress/dataviews 0.7.0 → 0.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.
Files changed (79) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +49 -18
  3. package/build/constants.js +28 -10
  4. package/build/constants.js.map +1 -1
  5. package/build/dataviews.js +3 -7
  6. package/build/dataviews.js.map +1 -1
  7. package/build/filter-and-sort-data-view.js +147 -0
  8. package/build/filter-and-sort-data-view.js.map +1 -0
  9. package/build/filter-summary.js +33 -12
  10. package/build/filter-summary.js.map +1 -1
  11. package/build/filters.js +11 -16
  12. package/build/filters.js.map +1 -1
  13. package/build/index.js +3 -9
  14. package/build/index.js.map +1 -1
  15. package/build/item-actions.js +20 -39
  16. package/build/item-actions.js.map +1 -1
  17. package/build/normalize-fields.js +25 -0
  18. package/build/normalize-fields.js.map +1 -0
  19. package/build/pagination.js +2 -2
  20. package/build/pagination.js.map +1 -1
  21. package/build/search-widget.js +34 -10
  22. package/build/search-widget.js.map +1 -1
  23. package/build/utils.js +25 -67
  24. package/build/utils.js.map +1 -1
  25. package/build/view-grid.js +25 -12
  26. package/build/view-grid.js.map +1 -1
  27. package/build/view-list.js +122 -58
  28. package/build/view-list.js.map +1 -1
  29. package/build/view-table.js +53 -8
  30. package/build/view-table.js.map +1 -1
  31. package/build-module/constants.js +27 -9
  32. package/build-module/constants.js.map +1 -1
  33. package/build-module/dataviews.js +3 -7
  34. package/build-module/dataviews.js.map +1 -1
  35. package/build-module/filter-and-sort-data-view.js +139 -0
  36. package/build-module/filter-and-sort-data-view.js.map +1 -0
  37. package/build-module/filter-summary.js +34 -13
  38. package/build-module/filter-summary.js.map +1 -1
  39. package/build-module/filters.js +12 -17
  40. package/build-module/filters.js.map +1 -1
  41. package/build-module/index.js +1 -1
  42. package/build-module/index.js.map +1 -1
  43. package/build-module/item-actions.js +20 -39
  44. package/build-module/item-actions.js.map +1 -1
  45. package/build-module/normalize-fields.js +19 -0
  46. package/build-module/normalize-fields.js.map +1 -0
  47. package/build-module/pagination.js +2 -2
  48. package/build-module/pagination.js.map +1 -1
  49. package/build-module/search-widget.js +35 -11
  50. package/build-module/search-widget.js.map +1 -1
  51. package/build-module/utils.js +25 -66
  52. package/build-module/utils.js.map +1 -1
  53. package/build-module/view-grid.js +26 -13
  54. package/build-module/view-grid.js.map +1 -1
  55. package/build-module/view-list.js +124 -60
  56. package/build-module/view-list.js.map +1 -1
  57. package/build-module/view-table.js +55 -10
  58. package/build-module/view-table.js.map +1 -1
  59. package/build-style/style-rtl.css +41 -11
  60. package/build-style/style.css +41 -11
  61. package/package.json +11 -11
  62. package/src/constants.js +35 -9
  63. package/src/dataviews.js +3 -7
  64. package/src/filter-and-sort-data-view.js +154 -0
  65. package/src/filter-summary.js +76 -23
  66. package/src/filters.js +20 -26
  67. package/src/index.js +1 -1
  68. package/src/item-actions.js +19 -55
  69. package/src/normalize-fields.js +17 -0
  70. package/src/pagination.js +2 -2
  71. package/src/search-widget.js +63 -21
  72. package/src/stories/fixtures.js +87 -2
  73. package/src/stories/index.story.js +5 -74
  74. package/src/style.scss +53 -14
  75. package/src/test/filter-and-sort-data-view.js +276 -0
  76. package/src/utils.js +38 -56
  77. package/src/view-grid.js +36 -11
  78. package/src/view-list.js +159 -69
  79. package/src/view-table.js +71 -9
@@ -1 +1 @@
1
- {"version":3,"names":["Ariakit","_interopRequireWildcard","require","_removeAccents","_interopRequireDefault","_i18n","_element","_components","_icons","_primitives","_lockUnlock","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","CompositeV2","Composite","CompositeItemV2","CompositeItem","useCompositeStoreV2","useCompositeStore","unlock","componentsPrivateApis","radioCheck","_react","createElement","SVG","xmlns","viewBox","Circle","cx","cy","normalizeSearchInput","input","removeAccents","trim","toLowerCase","ListBox","view","filter","onChangeView","compositeStore","virtualFocus","focusLoop","defaultActiveId","operators","length","undefined","selectedFilter","filters","find","_filter","field","selectedValues","value","store","role","className","sprintf","__","name","onFocusVisible","getState","activeId","move","first","render","CompositeTypeahead","elements","map","element","CompositeHover","key","label","onClick","currentFilter","newFilters","operator","page","Icon","icon","description","ComboboxList","searchValue","setSearchValue","useState","deferredSearchValue","useDeferredValue","matches","useMemo","normalizedSearch","item","includes","ComboboxProvider","setSelectedValue","setValue","ComboboxLabel","VisuallyHidden","Combobox","autoSelect","placeholder","search","alwaysVisible","ComboboxItem","hideOnClick","setValueOnClick","focusOnHover","ComboboxItemValue","SearchWidget","props","Widget"],"sources":["@wordpress/dataviews/src/search-widget.js"],"sourcesContent":["/**\n * External dependencies\n */\n// eslint-disable-next-line no-restricted-imports\nimport * as Ariakit from '@ariakit/react';\nimport removeAccents from 'remove-accents';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useState, useMemo, useDeferredValue } from '@wordpress/element';\nimport {\n\tVisuallyHidden,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { search } from '@wordpress/icons';\nimport { SVG, Circle } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst {\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tuseCompositeStoreV2: useCompositeStore,\n} = unlock( componentsPrivateApis );\n\nconst radioCheck = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Circle cx={ 12 } cy={ 12 } r={ 3 }></Circle>\n\t</SVG>\n);\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nfunction ListBox( { view, filter, onChangeView } ) {\n\tconst compositeStore = useCompositeStore( {\n\t\tvirtualFocus: true,\n\t\tfocusLoop: true,\n\t\t// When we have no or just one operators, we can set the first item as active.\n\t\t// We do that by passing `undefined` to `defaultActiveId`. Otherwise, we set it to `null`,\n\t\t// so the first item is not selected, since the focus is on the operators control.\n\t\tdefaultActiveId: filter.operators?.length === 1 ? undefined : null,\n\t} );\n\tconst selectedFilter = view.filters.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst selectedValues = selectedFilter?.value;\n\treturn (\n\t\t<Composite\n\t\t\tstore={ compositeStore }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"dataviews-search-widget-listbox\"\n\t\t\taria-label={ sprintf(\n\t\t\t\t/* translators: List of items for a filter. 1: Filter name. e.g.: \"List of: Author\". */\n\t\t\t\t__( 'List of: %1$s' ),\n\t\t\t\tfilter.name\n\t\t\t) }\n\t\t\tonFocusVisible={ () => {\n\t\t\t\tif ( ! compositeStore.getState().activeId ) {\n\t\t\t\t\tcompositeStore.move( compositeStore.first() );\n\t\t\t\t}\n\t\t\t} }\n\t\t\trender={ <Ariakit.CompositeTypeahead store={ compositeStore } /> }\n\t\t>\n\t\t\t{ filter.elements.map( ( element ) => (\n\t\t\t\t<Ariakit.CompositeHover\n\t\t\t\t\tstore={ compositeStore }\n\t\t\t\t\tkey={ element.value }\n\t\t\t\t\trender={\n\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\taria-label={ element.label }\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-search-widget-listitem\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst currentFilter = view.filters.find(\n\t\t\t\t\t\t\t\t\t( _filter ) =>\n\t\t\t\t\t\t\t\t\t\t_filter.field === filter.field\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t...view.filters.map(\n\t\t\t\t\t\t\t\t\t\t\t\t( _filter ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_filter.field ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter.field\n\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: element.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn _filter;\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 ]\n\t\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t\t...view.filters,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: element.value,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t ];\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: newFilters,\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>\n\t\t\t\t\t<span className=\"dataviews-search-widget-listitem-check\">\n\t\t\t\t\t\t{ selectedValues === element.value && (\n\t\t\t\t\t\t\t<Icon icon={ radioCheck } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{ element.label }\n\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t<span className=\"dataviews-search-widget-listitem-description\">\n\t\t\t\t\t\t\t\t{ element.description }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</span>\n\t\t\t\t</Ariakit.CompositeHover>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nfunction ComboboxList( { view, filter, onChangeView } ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst deferredSearchValue = useDeferredValue( searchValue );\n\tconst selectedFilter = view.filters.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst selectedValues = selectedFilter?.value;\n\tconst matches = useMemo( () => {\n\t\tconst normalizedSearch = normalizeSearchInput( deferredSearchValue );\n\t\treturn filter.elements.filter( ( item ) =>\n\t\t\tnormalizeSearchInput( item.label ).includes( normalizedSearch )\n\t\t);\n\t}, [ filter.elements, deferredSearchValue ] );\n\treturn (\n\t\t<Ariakit.ComboboxProvider\n\t\t\tvalue={ searchValue }\n\t\t\tsetSelectedValue={ ( value ) => {\n\t\t\t\tconst currentFilter = view.filters.find(\n\t\t\t\t\t( _filter ) => _filter.field === filter.field\n\t\t\t\t);\n\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t...view.filters.map( ( _filter ) => {\n\t\t\t\t\t\t\t\tif ( _filter.field === filter.field ) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\tfilter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\tvalue,\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\treturn _filter;\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t ]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t...view.filters,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ];\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tfilters: newFilters,\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tsetValue={ setSearchValue }\n\t\t>\n\t\t\t<div className=\"dataviews-search-widget-filter-combobox__wrapper\">\n\t\t\t\t<Ariakit.ComboboxLabel render={ <VisuallyHidden /> }>\n\t\t\t\t\t{ __( 'Search items' ) }\n\t\t\t\t</Ariakit.ComboboxLabel>\n\t\t\t\t<Ariakit.Combobox\n\t\t\t\t\tautoSelect=\"always\"\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\tclassName=\"dataviews-search-widget-filter-combobox__input\"\n\t\t\t\t/>\n\t\t\t\t<div className=\"dataviews-search-widget-filter-combobox__icon\">\n\t\t\t\t\t<Icon icon={ search } />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<Ariakit.ComboboxList\n\t\t\t\tclassName=\"dataviews-search-widget-filter-combobox-list\"\n\t\t\t\talwaysVisible\n\t\t\t>\n\t\t\t\t{ matches.map( ( element ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Ariakit.ComboboxItem\n\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\tvalue={ element.value }\n\t\t\t\t\t\t\tclassName=\"dataviews-search-widget-listitem\"\n\t\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\t\tsetValueOnClick={ false }\n\t\t\t\t\t\t\tfocusOnHover\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"dataviews-search-widget-listitem-check\">\n\t\t\t\t\t\t\t\t{ selectedValues === element.value && (\n\t\t\t\t\t\t\t\t\t<Icon icon={ radioCheck } />\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<Ariakit.ComboboxItemValue\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-search-widget-filter-combobox-item-value\"\n\t\t\t\t\t\t\t\t\tvalue={ element.label }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-search-widget-listitem-description\">\n\t\t\t\t\t\t\t\t\t\t{ element.description }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Ariakit.ComboboxItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t\t{ ! matches.length && <p>{ __( 'No results found' ) }</p> }\n\t\t\t</Ariakit.ComboboxList>\n\t\t</Ariakit.ComboboxProvider>\n\t);\n}\n\nexport default function SearchWidget( props ) {\n\tconst Widget = props.filter.elements.length > 10 ? ComboboxList : ListBox;\n\treturn <Widget { ...props } />;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Ariakit","_interopRequireWildcard","require","_removeAccents","_interopRequireDefault","_i18n","_element","_components","_icons","_primitives","_lockUnlock","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","CompositeV2","Composite","CompositeItemV2","CompositeItem","useCompositeStoreV2","useCompositeStore","unlock","componentsPrivateApis","radioCheck","_react","createElement","SVG","xmlns","viewBox","Circle","cx","cy","normalizeSearchInput","input","removeAccents","trim","toLowerCase","getCurrentValue","filterDefinition","currentFilter","singleSelection","value","Array","isArray","getNewValue","includes","filter","v","ListBox","view","onChangeView","compositeStore","virtualFocus","focusLoop","defaultActiveId","operators","length","undefined","filters","find","f","field","currentValue","store","role","className","sprintf","__","name","onFocusVisible","getState","activeId","move","first","render","CompositeTypeahead","elements","map","element","CompositeHover","key","label","onClick","newFilters","_filter","operator","page","Icon","icon","check","description","ComboboxList","searchValue","setSearchValue","useState","deferredSearchValue","useDeferredValue","matches","useMemo","normalizedSearch","item","ComboboxProvider","selectedValue","setSelectedValue","setValue","ComboboxLabel","VisuallyHidden","Combobox","autoSelect","placeholder","search","alwaysVisible","ComboboxItem","hideOnClick","setValueOnClick","focusOnHover","ComboboxItemValue","SearchWidget","props","Widget"],"sources":["@wordpress/dataviews/src/search-widget.js"],"sourcesContent":["/**\n * External dependencies\n */\n// eslint-disable-next-line no-restricted-imports\nimport * as Ariakit from '@ariakit/react';\nimport removeAccents from 'remove-accents';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useState, useMemo, useDeferredValue } from '@wordpress/element';\nimport {\n\tVisuallyHidden,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { search, check } from '@wordpress/icons';\nimport { SVG, Circle } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst {\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tuseCompositeStoreV2: useCompositeStore,\n} = unlock( componentsPrivateApis );\n\nconst radioCheck = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Circle cx={ 12 } cy={ 12 } r={ 3 }></Circle>\n\t</SVG>\n);\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nconst getCurrentValue = ( filterDefinition, currentFilter ) => {\n\tif ( filterDefinition.singleSelection ) {\n\t\treturn currentFilter?.value;\n\t}\n\n\tif ( Array.isArray( currentFilter?.value ) ) {\n\t\treturn currentFilter.value;\n\t}\n\n\tif ( ! Array.isArray( currentFilter?.value ) && !! currentFilter?.value ) {\n\t\treturn [ currentFilter.value ];\n\t}\n\n\treturn [];\n};\n\nconst getNewValue = ( filterDefinition, currentFilter, value ) => {\n\tif ( filterDefinition.singleSelection ) {\n\t\treturn value;\n\t}\n\n\tif ( Array.isArray( currentFilter?.value ) ) {\n\t\treturn currentFilter.value.includes( value )\n\t\t\t? currentFilter.value.filter( ( v ) => v !== value )\n\t\t\t: [ ...currentFilter.value, value ];\n\t}\n\n\treturn [ value ];\n};\n\nfunction ListBox( { view, filter, onChangeView } ) {\n\tconst compositeStore = useCompositeStore( {\n\t\tvirtualFocus: true,\n\t\tfocusLoop: true,\n\t\t// When we have no or just one operators, we can set the first item as active.\n\t\t// We do that by passing `undefined` to `defaultActiveId`. Otherwise, we set it to `null`,\n\t\t// so the first item is not selected, since the focus is on the operators control.\n\t\tdefaultActiveId: filter.operators?.length === 1 ? undefined : null,\n\t} );\n\tconst currentFilter = view.filters.find(\n\t\t( f ) => f.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\treturn (\n\t\t<Composite\n\t\t\tstore={ compositeStore }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"dataviews-search-widget-listbox\"\n\t\t\taria-label={ sprintf(\n\t\t\t\t/* translators: List of items for a filter. 1: Filter name. e.g.: \"List of: Author\". */\n\t\t\t\t__( 'List of: %1$s' ),\n\t\t\t\tfilter.name\n\t\t\t) }\n\t\t\tonFocusVisible={ () => {\n\t\t\t\tif ( ! compositeStore.getState().activeId ) {\n\t\t\t\t\tcompositeStore.move( compositeStore.first() );\n\t\t\t\t}\n\t\t\t} }\n\t\t\trender={ <Ariakit.CompositeTypeahead store={ compositeStore } /> }\n\t\t>\n\t\t\t{ filter.elements.map( ( element ) => (\n\t\t\t\t<Ariakit.CompositeHover\n\t\t\t\t\tstore={ compositeStore }\n\t\t\t\t\tkey={ element.value }\n\t\t\t\t\trender={\n\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\taria-label={ element.label }\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-search-widget-listitem\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t...view.filters.map(\n\t\t\t\t\t\t\t\t\t\t\t\t( _filter ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_filter.field ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter.field\n\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: getNewValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement.value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\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\treturn _filter;\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 ]\n\t\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t\t...view.filters,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: getNewValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\telement.value\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 ];\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: newFilters,\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>\n\t\t\t\t\t<span className=\"dataviews-search-widget-listitem-check\">\n\t\t\t\t\t\t{ filter.singleSelection &&\n\t\t\t\t\t\t\tcurrentValue === element.value && (\n\t\t\t\t\t\t\t\t<Icon icon={ radioCheck } />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! filter.singleSelection &&\n\t\t\t\t\t\t\tcurrentValue.includes( element.value ) && (\n\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{ element.label }\n\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t<span className=\"dataviews-search-widget-listitem-description\">\n\t\t\t\t\t\t\t\t{ element.description }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</span>\n\t\t\t\t</Ariakit.CompositeHover>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nfunction ComboboxList( { view, filter, onChangeView } ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst deferredSearchValue = useDeferredValue( searchValue );\n\tconst currentFilter = view.filters.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\tconst matches = useMemo( () => {\n\t\tconst normalizedSearch = normalizeSearchInput( deferredSearchValue );\n\t\treturn filter.elements.filter( ( item ) =>\n\t\t\tnormalizeSearchInput( item.label ).includes( normalizedSearch )\n\t\t);\n\t}, [ filter.elements, deferredSearchValue ] );\n\treturn (\n\t\t<Ariakit.ComboboxProvider\n\t\t\tvalue={ searchValue }\n\t\t\tselectedValue={ currentValue }\n\t\t\tsetSelectedValue={ ( value ) => {\n\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t...view.filters.map( ( _filter ) => {\n\t\t\t\t\t\t\t\tif ( _filter.field === filter.field ) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\tfilter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\tvalue,\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\treturn _filter;\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t ]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t...view.filters,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ];\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tfilters: newFilters,\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tsetValue={ setSearchValue }\n\t\t>\n\t\t\t<div className=\"dataviews-search-widget-filter-combobox__wrapper\">\n\t\t\t\t<Ariakit.ComboboxLabel render={ <VisuallyHidden /> }>\n\t\t\t\t\t{ __( 'Search items' ) }\n\t\t\t\t</Ariakit.ComboboxLabel>\n\t\t\t\t<Ariakit.Combobox\n\t\t\t\t\tautoSelect=\"always\"\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\tclassName=\"dataviews-search-widget-filter-combobox__input\"\n\t\t\t\t/>\n\t\t\t\t<div className=\"dataviews-search-widget-filter-combobox__icon\">\n\t\t\t\t\t<Icon icon={ search } />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<Ariakit.ComboboxList\n\t\t\t\tclassName=\"dataviews-search-widget-filter-combobox-list\"\n\t\t\t\talwaysVisible\n\t\t\t>\n\t\t\t\t{ matches.map( ( element ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Ariakit.ComboboxItem\n\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\tvalue={ element.value }\n\t\t\t\t\t\t\tclassName=\"dataviews-search-widget-listitem\"\n\t\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\t\tsetValueOnClick={ false }\n\t\t\t\t\t\t\tfocusOnHover\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"dataviews-search-widget-listitem-check\">\n\t\t\t\t\t\t\t\t{ filter.singleSelection &&\n\t\t\t\t\t\t\t\t\tcurrentValue === element.value && (\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ radioCheck } />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! filter.singleSelection &&\n\t\t\t\t\t\t\t\t\tcurrentValue.includes( element.value ) && (\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<Ariakit.ComboboxItemValue\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-search-widget-filter-combobox-item-value\"\n\t\t\t\t\t\t\t\t\tvalue={ element.label }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-search-widget-listitem-description\">\n\t\t\t\t\t\t\t\t\t\t{ element.description }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Ariakit.ComboboxItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t\t{ ! matches.length && <p>{ __( 'No results found' ) }</p> }\n\t\t\t</Ariakit.ComboboxList>\n\t\t</Ariakit.ComboboxProvider>\n\t);\n}\n\nexport default function SearchWidget( props ) {\n\tconst Widget = props.filter.elements.length > 10 ? ComboboxList : ListBox;\n\treturn <Widget { ...props } />;\n}\n"],"mappings":"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"}
package/build/utils.js CHANGED
@@ -3,82 +3,40 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getPaginationResults = getPaginationResults;
7
- exports.sortByTextFields = exports.sanitizeOperators = void 0;
6
+ exports.sanitizeOperators = void 0;
8
7
  var _constants = require("./constants");
9
8
  /**
10
9
  * Internal dependencies
11
10
  */
12
11
 
13
- /**
14
- * Helper util to sort data by text fields, when sorting is done client side.
15
- *
16
- * @param {Object} params Function params.
17
- * @param {Object[]} params.data Data to sort.
18
- * @param {Object} params.view Current view object.
19
- * @param {Object[]} params.fields Array of available fields.
20
- * @param {string[]} params.textFields Array of the field ids to sort.
21
- *
22
- * @return {Object[]} Sorted data.
23
- */
24
- const sortByTextFields = ({
25
- data,
26
- view,
27
- fields,
28
- textFields
29
- }) => {
30
- const sortedData = [...data];
31
- const fieldId = view.sort.field;
32
- if (textFields.includes(fieldId)) {
33
- const fieldToSort = fields.find(field => {
34
- return field.id === fieldId;
35
- });
36
- sortedData.sort((a, b) => {
37
- var _fieldToSort$getValue, _fieldToSort$getValue2;
38
- const valueA = (_fieldToSort$getValue = fieldToSort.getValue({
39
- item: a
40
- })) !== null && _fieldToSort$getValue !== void 0 ? _fieldToSort$getValue : '';
41
- const valueB = (_fieldToSort$getValue2 = fieldToSort.getValue({
42
- item: b
43
- })) !== null && _fieldToSort$getValue2 !== void 0 ? _fieldToSort$getValue2 : '';
44
- return view.sort.direction === 'asc' ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);
45
- });
46
- }
47
- return sortedData;
48
- };
49
-
50
- /**
51
- * Helper util to get the paginated data and the paginateInfo needed,
52
- * when pagination is done client side.
53
- *
54
- * @param {Object} params Function params.
55
- * @param {Object[]} params.data Available data.
56
- * @param {Object} params.view Current view object.
57
- *
58
- * @return {Object} Paginated data and paginationInfo.
59
- */
60
- exports.sortByTextFields = sortByTextFields;
61
- function getPaginationResults({
62
- data,
63
- view
64
- }) {
65
- const start = (view.page - 1) * view.perPage;
66
- const totalItems = data?.length || 0;
67
- data = data?.slice(start, start + view.perPage);
68
- return {
69
- data,
70
- paginationInfo: {
71
- totalItems,
72
- totalPages: Math.ceil(totalItems / view.perPage)
73
- }
74
- };
75
- }
76
12
  const sanitizeOperators = field => {
77
13
  let operators = field.filterBy?.operators;
14
+
15
+ // Assign default values.
78
16
  if (!operators || !Array.isArray(operators)) {
79
- operators = Object.keys(_constants.OPERATORS);
17
+ operators = [_constants.OPERATOR_IS_ANY, _constants.OPERATOR_IS_NONE];
18
+ }
19
+
20
+ // Transform legacy in, notIn operators to is, isNot.
21
+ // To be removed in the future.
22
+ if (operators.includes('in')) {
23
+ operators = operators.filter(operator => operator !== 'is');
24
+ operators.push('is');
25
+ }
26
+ if (operators.includes('notIn')) {
27
+ operators = operators.filter(operator => operator !== 'notIn');
28
+ operators.push('isNot');
29
+ }
30
+
31
+ // Make sure only valid operators are used.
32
+ operators = operators.filter(operator => _constants.ALL_OPERATORS.includes(operator));
33
+
34
+ // Do not allow mixing single & multiselection operators.
35
+ // Remove multiselection operators if any of the single selection ones is present.
36
+ if (operators.includes(_constants.OPERATOR_IS) || operators.includes(_constants.OPERATOR_IS_NOT)) {
37
+ operators = operators.filter(operator => [_constants.OPERATOR_IS, _constants.OPERATOR_IS_NOT].includes(operator));
80
38
  }
81
- return operators.filter(operator => Object.keys(_constants.OPERATORS).includes(operator));
39
+ return operators;
82
40
  };
83
41
  exports.sanitizeOperators = sanitizeOperators;
84
42
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","sortByTextFields","data","view","fields","textFields","sortedData","fieldId","sort","field","includes","fieldToSort","find","id","a","b","_fieldToSort$getValue","_fieldToSort$getValue2","valueA","getValue","item","valueB","direction","localeCompare","exports","getPaginationResults","start","page","perPage","totalItems","length","slice","paginationInfo","totalPages","Math","ceil","sanitizeOperators","operators","filterBy","Array","isArray","Object","keys","OPERATORS","filter","operator"],"sources":["@wordpress/dataviews/src/utils.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { OPERATORS } from './constants';\n\n/**\n * Helper util to sort data by text fields, when sorting is done client side.\n *\n * @param {Object} params Function params.\n * @param {Object[]} params.data Data to sort.\n * @param {Object} params.view Current view object.\n * @param {Object[]} params.fields Array of available fields.\n * @param {string[]} params.textFields Array of the field ids to sort.\n *\n * @return {Object[]} Sorted data.\n */\nexport const sortByTextFields = ( { data, view, fields, textFields } ) => {\n\tconst sortedData = [ ...data ];\n\tconst fieldId = view.sort.field;\n\tif ( textFields.includes( fieldId ) ) {\n\t\tconst fieldToSort = fields.find( ( field ) => {\n\t\t\treturn field.id === fieldId;\n\t\t} );\n\t\tsortedData.sort( ( a, b ) => {\n\t\t\tconst valueA = fieldToSort.getValue( { item: a } ) ?? '';\n\t\t\tconst valueB = fieldToSort.getValue( { item: b } ) ?? '';\n\t\t\treturn view.sort.direction === 'asc'\n\t\t\t\t? valueA.localeCompare( valueB )\n\t\t\t\t: valueB.localeCompare( valueA );\n\t\t} );\n\t}\n\treturn sortedData;\n};\n\n/**\n * Helper util to get the paginated data and the paginateInfo needed,\n * when pagination is done client side.\n *\n * @param {Object} params Function params.\n * @param {Object[]} params.data Available data.\n * @param {Object} params.view Current view object.\n *\n * @return {Object} Paginated data and paginationInfo.\n */\nexport function getPaginationResults( { data, view } ) {\n\tconst start = ( view.page - 1 ) * view.perPage;\n\tconst totalItems = data?.length || 0;\n\tdata = data?.slice( start, start + view.perPage );\n\treturn {\n\t\tdata,\n\t\tpaginationInfo: {\n\t\t\ttotalItems,\n\t\t\ttotalPages: Math.ceil( totalItems / view.perPage ),\n\t\t},\n\t};\n}\n\nexport const sanitizeOperators = ( field ) => {\n\tlet operators = field.filterBy?.operators;\n\tif ( ! operators || ! Array.isArray( operators ) ) {\n\t\toperators = Object.keys( OPERATORS );\n\t}\n\treturn operators.filter( ( operator ) =>\n\t\tObject.keys( OPERATORS ).includes( operator )\n\t);\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,gBAAgB,GAAGA,CAAE;EAAEC,IAAI;EAAEC,IAAI;EAAEC,MAAM;EAAEC;AAAW,CAAC,KAAM;EACzE,MAAMC,UAAU,GAAG,CAAE,GAAGJ,IAAI,CAAE;EAC9B,MAAMK,OAAO,GAAGJ,IAAI,CAACK,IAAI,CAACC,KAAK;EAC/B,IAAKJ,UAAU,CAACK,QAAQ,CAAEH,OAAQ,CAAC,EAAG;IACrC,MAAMI,WAAW,GAAGP,MAAM,CAACQ,IAAI,CAAIH,KAAK,IAAM;MAC7C,OAAOA,KAAK,CAACI,EAAE,KAAKN,OAAO;IAC5B,CAAE,CAAC;IACHD,UAAU,CAACE,IAAI,CAAE,CAAEM,CAAC,EAAEC,CAAC,KAAM;MAAA,IAAAC,qBAAA,EAAAC,sBAAA;MAC5B,MAAMC,MAAM,IAAAF,qBAAA,GAAGL,WAAW,CAACQ,QAAQ,CAAE;QAAEC,IAAI,EAAEN;MAAE,CAAE,CAAC,cAAAE,qBAAA,cAAAA,qBAAA,GAAI,EAAE;MACxD,MAAMK,MAAM,IAAAJ,sBAAA,GAAGN,WAAW,CAACQ,QAAQ,CAAE;QAAEC,IAAI,EAAEL;MAAE,CAAE,CAAC,cAAAE,sBAAA,cAAAA,sBAAA,GAAI,EAAE;MACxD,OAAOd,IAAI,CAACK,IAAI,CAACc,SAAS,KAAK,KAAK,GACjCJ,MAAM,CAACK,aAAa,CAAEF,MAAO,CAAC,GAC9BA,MAAM,CAACE,aAAa,CAAEL,MAAO,CAAC;IAClC,CAAE,CAAC;EACJ;EACA,OAAOZ,UAAU;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATAkB,OAAA,CAAAvB,gBAAA,GAAAA,gBAAA;AAUO,SAASwB,oBAAoBA,CAAE;EAAEvB,IAAI;EAAEC;AAAK,CAAC,EAAG;EACtD,MAAMuB,KAAK,GAAG,CAAEvB,IAAI,CAACwB,IAAI,GAAG,CAAC,IAAKxB,IAAI,CAACyB,OAAO;EAC9C,MAAMC,UAAU,GAAG3B,IAAI,EAAE4B,MAAM,IAAI,CAAC;EACpC5B,IAAI,GAAGA,IAAI,EAAE6B,KAAK,CAAEL,KAAK,EAAEA,KAAK,GAAGvB,IAAI,CAACyB,OAAQ,CAAC;EACjD,OAAO;IACN1B,IAAI;IACJ8B,cAAc,EAAE;MACfH,UAAU;MACVI,UAAU,EAAEC,IAAI,CAACC,IAAI,CAAEN,UAAU,GAAG1B,IAAI,CAACyB,OAAQ;IAClD;EACD,CAAC;AACF;AAEO,MAAMQ,iBAAiB,GAAK3B,KAAK,IAAM;EAC7C,IAAI4B,SAAS,GAAG5B,KAAK,CAAC6B,QAAQ,EAAED,SAAS;EACzC,IAAK,CAAEA,SAAS,IAAI,CAAEE,KAAK,CAACC,OAAO,CAAEH,SAAU,CAAC,EAAG;IAClDA,SAAS,GAAGI,MAAM,CAACC,IAAI,CAAEC,oBAAU,CAAC;EACrC;EACA,OAAON,SAAS,CAACO,MAAM,CAAIC,QAAQ,IAClCJ,MAAM,CAACC,IAAI,CAAEC,oBAAU,CAAC,CAACjC,QAAQ,CAAEmC,QAAS,CAC7C,CAAC;AACF,CAAC;AAACrB,OAAA,CAAAY,iBAAA,GAAAA,iBAAA"}
1
+ {"version":3,"names":["_constants","require","sanitizeOperators","field","operators","filterBy","Array","isArray","OPERATOR_IS_ANY","OPERATOR_IS_NONE","includes","filter","operator","push","ALL_OPERATORS","OPERATOR_IS","OPERATOR_IS_NOT","exports"],"sources":["@wordpress/dataviews/src/utils.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tALL_OPERATORS,\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n} from './constants';\n\nexport const sanitizeOperators = ( field ) => {\n\tlet operators = field.filterBy?.operators;\n\n\t// Assign default values.\n\tif ( ! operators || ! Array.isArray( operators ) ) {\n\t\toperators = [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ];\n\t}\n\n\t// Transform legacy in, notIn operators to is, isNot.\n\t// To be removed in the future.\n\tif ( operators.includes( 'in' ) ) {\n\t\toperators = operators.filter( ( operator ) => operator !== 'is' );\n\t\toperators.push( 'is' );\n\t}\n\tif ( operators.includes( 'notIn' ) ) {\n\t\toperators = operators.filter( ( operator ) => operator !== 'notIn' );\n\t\toperators.push( 'isNot' );\n\t}\n\n\t// Make sure only valid operators are used.\n\toperators = operators.filter( ( operator ) =>\n\t\tALL_OPERATORS.includes( operator )\n\t);\n\n\t// Do not allow mixing single & multiselection operators.\n\t// Remove multiselection operators if any of the single selection ones is present.\n\tif (\n\t\toperators.includes( OPERATOR_IS ) ||\n\t\toperators.includes( OPERATOR_IS_NOT )\n\t) {\n\t\toperators = operators.filter( ( operator ) =>\n\t\t\t[ OPERATOR_IS, OPERATOR_IS_NOT ].includes( operator )\n\t\t);\n\t}\n\n\treturn operators;\n};\n"],"mappings":";;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AASO,MAAMC,iBAAiB,GAAKC,KAAK,IAAM;EAC7C,IAAIC,SAAS,GAAGD,KAAK,CAACE,QAAQ,EAAED,SAAS;;EAEzC;EACA,IAAK,CAAEA,SAAS,IAAI,CAAEE,KAAK,CAACC,OAAO,CAAEH,SAAU,CAAC,EAAG;IAClDA,SAAS,GAAG,CAAEI,0BAAe,EAAEC,2BAAgB,CAAE;EAClD;;EAEA;EACA;EACA,IAAKL,SAAS,CAACM,QAAQ,CAAE,IAAK,CAAC,EAAG;IACjCN,SAAS,GAAGA,SAAS,CAACO,MAAM,CAAIC,QAAQ,IAAMA,QAAQ,KAAK,IAAK,CAAC;IACjER,SAAS,CAACS,IAAI,CAAE,IAAK,CAAC;EACvB;EACA,IAAKT,SAAS,CAACM,QAAQ,CAAE,OAAQ,CAAC,EAAG;IACpCN,SAAS,GAAGA,SAAS,CAACO,MAAM,CAAIC,QAAQ,IAAMA,QAAQ,KAAK,OAAQ,CAAC;IACpER,SAAS,CAACS,IAAI,CAAE,OAAQ,CAAC;EAC1B;;EAEA;EACAT,SAAS,GAAGA,SAAS,CAACO,MAAM,CAAIC,QAAQ,IACvCE,wBAAa,CAACJ,QAAQ,CAAEE,QAAS,CAClC,CAAC;;EAED;EACA;EACA,IACCR,SAAS,CAACM,QAAQ,CAAEK,sBAAY,CAAC,IACjCX,SAAS,CAACM,QAAQ,CAAEM,0BAAgB,CAAC,EACpC;IACDZ,SAAS,GAAGA,SAAS,CAACO,MAAM,CAAIC,QAAQ,IACvC,CAAEG,sBAAW,EAAEC,0BAAe,CAAE,CAACN,QAAQ,CAAEE,QAAS,CACrD,CAAC;EACF;EAEA,OAAOR,SAAS;AACjB,CAAC;AAACa,OAAA,CAAAf,iBAAA,GAAAA,iBAAA"}
@@ -34,7 +34,8 @@ function GridItem({
34
34
  actions,
35
35
  mediaField,
36
36
  primaryField,
37
- visibleFields
37
+ visibleFields,
38
+ displayAsColumnFields
38
39
  }) {
39
40
  const hasBulkAction = (0, _bulkActions.useHasAPossibleBulkAction)(actions, item);
40
41
  const id = getItemId(item);
@@ -46,9 +47,12 @@ function GridItem({
46
47
  'is-selected': hasBulkAction && isSelected
47
48
  }),
48
49
  onClickCapture: event => {
49
- if (hasBulkAction && (event.ctrlKey || event.metaKey)) {
50
+ if (event.ctrlKey || event.metaKey) {
50
51
  event.stopPropagation();
51
52
  event.preventDefault();
53
+ if (!hasBulkAction) {
54
+ return;
55
+ }
52
56
  if (!isSelected) {
53
57
  onSelectionChange(data.filter(_item => {
54
58
  const itemId = getItemId?.(_item);
@@ -96,16 +100,24 @@ function GridItem({
96
100
  if (!renderedValue) {
97
101
  return null;
98
102
  }
99
- return (0, _react.createElement)(_components.__experimentalVStack, {
100
- className: "dataviews-view-grid__field",
103
+ return (0, _react.createElement)(_components.Flex, {
104
+ className: (0, _classnames.default)('dataviews-view-grid__field', displayAsColumnFields?.includes(field.id) ? 'is-column' : 'is-row'),
101
105
  key: field.id,
102
- spacing: 1
103
- }, (0, _react.createElement)(_components.Tooltip, {
104
- text: field.header,
105
- placement: "left"
106
- }, (0, _react.createElement)("div", {
107
- className: "dataviews-view-grid__field-value"
108
- }, renderedValue)));
106
+ gap: 1,
107
+ justify: "flex-start",
108
+ expanded: true,
109
+ style: {
110
+ height: 'auto'
111
+ },
112
+ direction: displayAsColumnFields?.includes(field.id) ? 'column' : 'row'
113
+ }, (0, _react.createElement)(_components.FlexItem, {
114
+ className: "dataviews-view-grid__field-name"
115
+ }, field.header), (0, _react.createElement)(_components.FlexItem, {
116
+ className: "dataviews-view-grid__field-value",
117
+ style: {
118
+ maxHeight: 'none'
119
+ }
120
+ }, renderedValue));
109
121
  })));
110
122
  }
111
123
  function ViewGrid({
@@ -144,7 +156,8 @@ function ViewGrid({
144
156
  actions: actions,
145
157
  mediaField: mediaField,
146
158
  primaryField: primaryField,
147
- visibleFields: visibleFields
159
+ visibleFields: visibleFields,
160
+ displayAsColumnFields: view.layout.displayAsColumnFields
148
161
  });
149
162
  })), !hasData && (0, _react.createElement)("div", {
150
163
  className: (0, _classnames.default)({
@@ -1 +1 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_components","_i18n","_compose","_itemActions","_singleSelectionCheckbox","_bulkActions","GridItem","selection","data","onSelectionChange","getItemId","item","actions","mediaField","primaryField","visibleFields","hasBulkAction","useHasAPossibleBulkAction","id","isSelected","includes","_react","createElement","__experimentalVStack","spacing","key","className","classnames","onClickCapture","event","ctrlKey","metaKey","stopPropagation","preventDefault","filter","_item","itemId","render","__experimentalHStack","justify","default","disabled","isCompact","map","field","renderedValue","Tooltip","text","header","placement","ViewGrid","fields","view","isLoading","deferredRendering","find","layout","hiddenFields","shownData","useAsyncList","step","usedData","hasData","length","Fragment","__experimentalGrid","gap","columns","alignment","Spinner","__"],"sources":["@wordpress/dataviews/src/view-grid.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalGrid as Grid,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tTooltip,\n\tSpinner,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useAsyncList } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport ItemActions from './item-actions';\nimport SingleSelectionCheckbox from './single-selection-checkbox';\n\nimport { useHasAPossibleBulkAction } from './bulk-actions';\n\nfunction GridItem( {\n\tselection,\n\tdata,\n\tonSelectionChange,\n\tgetItemId,\n\titem,\n\tactions,\n\tmediaField,\n\tprimaryField,\n\tvisibleFields,\n} ) {\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst isSelected = selection.includes( id );\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 0 }\n\t\t\tkey={ id }\n\t\t\tclassName={ classnames( '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 ( hasBulkAction && ( event.ctrlKey || event.metaKey ) ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( ! isSelected ) {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId === id ||\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\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} else {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId !== id &&\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\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}\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-view-grid__media\">\n\t\t\t\t{ mediaField?.render( { item } ) }\n\t\t\t</div>\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<SingleSelectionCheckbox\n\t\t\t\t\tid={ id }\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t/>\n\t\t\t\t<HStack className=\"dataviews-view-grid__primary-field\">\n\t\t\t\t\t{ primaryField?.render( { item } ) }\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<VStack className=\"dataviews-view-grid__fields\" spacing={ 3 }>\n\t\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\t\tconst renderedValue = field.render( {\n\t\t\t\t\t\titem,\n\t\t\t\t\t} );\n\t\t\t\t\tif ( ! renderedValue ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Tooltip text={ field.header } placement=\"left\">\n\t\t\t\t\t\t\t\t<div className=\"dataviews-view-grid__field-value\">\n\t\t\t\t\t\t\t\t\t{ renderedValue }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</VStack>\n\t\t</VStack>\n\t);\n}\n\nexport default function ViewGrid( {\n\tdata,\n\tfields,\n\tview,\n\tactions,\n\tisLoading,\n\tgetItemId,\n\tdeferredRendering,\n\tselection,\n\tonSelectionChange,\n} ) {\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.mediaField, view.layout.primaryField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\tconst shownData = useAsyncList( data, { step: 3 } );\n\tconst usedData = deferredRendering ? shownData : data;\n\tconst hasData = !! usedData?.length;\n\treturn (\n\t\t<>\n\t\t\t{ hasData && (\n\t\t\t\t<Grid\n\t\t\t\t\tgap={ 6 }\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\taria-busy={ isLoading }\n\t\t\t\t>\n\t\t\t\t\t{ usedData.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\tdata={ data }\n\t\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\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/>\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={ classnames( {\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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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_components","_i18n","_compose","_itemActions","_singleSelectionCheckbox","_bulkActions","GridItem","selection","data","onSelectionChange","getItemId","item","actions","mediaField","primaryField","visibleFields","displayAsColumnFields","hasBulkAction","useHasAPossibleBulkAction","id","isSelected","includes","_react","createElement","__experimentalVStack","spacing","key","className","classnames","onClickCapture","event","ctrlKey","metaKey","stopPropagation","preventDefault","filter","_item","itemId","render","__experimentalHStack","justify","default","disabled","isCompact","map","field","renderedValue","Flex","gap","expanded","style","height","direction","FlexItem","header","maxHeight","ViewGrid","fields","view","isLoading","deferredRendering","find","layout","hiddenFields","shownData","useAsyncList","step","usedData","hasData","length","Fragment","__experimentalGrid","columns","alignment","Spinner","__"],"sources":["@wordpress/dataviews/src/view-grid.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\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';\nimport { useAsyncList } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport ItemActions from './item-actions';\nimport SingleSelectionCheckbox from './single-selection-checkbox';\n\nimport { useHasAPossibleBulkAction } from './bulk-actions';\n\nfunction GridItem( {\n\tselection,\n\tdata,\n\tonSelectionChange,\n\tgetItemId,\n\titem,\n\tactions,\n\tmediaField,\n\tprimaryField,\n\tvisibleFields,\n\tdisplayAsColumnFields,\n} ) {\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst isSelected = selection.includes( id );\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 0 }\n\t\t\tkey={ id }\n\t\t\tclassName={ classnames( '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\tif ( ! isSelected ) {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId === id ||\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\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} else {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId !== id &&\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\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}\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-view-grid__media\">\n\t\t\t\t{ mediaField?.render( { item } ) }\n\t\t\t</div>\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<SingleSelectionCheckbox\n\t\t\t\t\tid={ id }\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t/>\n\t\t\t\t<HStack className=\"dataviews-view-grid__primary-field\">\n\t\t\t\t\t{ primaryField?.render( { item } ) }\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<VStack className=\"dataviews-view-grid__fields\" spacing={ 3 }>\n\t\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\t\tconst renderedValue = field.render( {\n\t\t\t\t\t\titem,\n\t\t\t\t\t} );\n\t\t\t\t\tif ( ! renderedValue ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'dataviews-view-grid__field',\n\t\t\t\t\t\t\t\tdisplayAsColumnFields?.includes( field.id )\n\t\t\t\t\t\t\t\t\t? 'is-column'\n\t\t\t\t\t\t\t\t\t: 'is-row'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\tdirection={\n\t\t\t\t\t\t\t\tdisplayAsColumnFields?.includes( field.id )\n\t\t\t\t\t\t\t\t\t? 'column'\n\t\t\t\t\t\t\t\t\t: 'row'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-grid__field-name\">\n\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ renderedValue }\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</VStack>\n\t\t</VStack>\n\t);\n}\n\nexport default function ViewGrid( {\n\tdata,\n\tfields,\n\tview,\n\tactions,\n\tisLoading,\n\tgetItemId,\n\tdeferredRendering,\n\tselection,\n\tonSelectionChange,\n} ) {\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.mediaField, view.layout.primaryField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\tconst shownData = useAsyncList( data, { step: 3 } );\n\tconst usedData = deferredRendering ? shownData : data;\n\tconst hasData = !! usedData?.length;\n\treturn (\n\t\t<>\n\t\t\t{ hasData && (\n\t\t\t\t<Grid\n\t\t\t\t\tgap={ 6 }\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\taria-busy={ isLoading }\n\t\t\t\t>\n\t\t\t\t\t{ usedData.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\tdata={ data }\n\t\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\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\tdisplayAsColumnFields={\n\t\t\t\t\t\t\t\t\tview.layout.displayAsColumnFields\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</Grid>\n\t\t\t) }\n\t\t\t{ ! hasData && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ classnames( {\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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"}
@@ -9,9 +9,10 @@ var _react = require("react");
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
10
  var _compose = require("@wordpress/compose");
11
11
  var _components = require("@wordpress/components");
12
- var _keycodes = require("@wordpress/keycodes");
12
+ var _element = require("@wordpress/element");
13
13
  var _icons = require("@wordpress/icons");
14
14
  var _i18n = require("@wordpress/i18n");
15
+ var _lockUnlock = require("./lock-unlock");
15
16
  /**
16
17
  * External dependencies
17
18
  */
@@ -20,6 +21,99 @@ var _i18n = require("@wordpress/i18n");
20
21
  * WordPress dependencies
21
22
  */
22
23
 
24
+ /**
25
+ * Internal dependencies
26
+ */
27
+
28
+ const {
29
+ useCompositeStoreV2: useCompositeStore,
30
+ CompositeV2: Composite,
31
+ CompositeItemV2: CompositeItem,
32
+ CompositeRowV2: CompositeRow
33
+ } = (0, _lockUnlock.unlock)(_components.privateApis);
34
+ function ListItem({
35
+ id,
36
+ item,
37
+ isSelected,
38
+ onSelect,
39
+ onDetailsChange,
40
+ mediaField,
41
+ primaryField,
42
+ visibleFields
43
+ }) {
44
+ const itemRef = (0, _element.useRef)(null);
45
+ const labelId = `${id}-label`;
46
+ const descriptionId = `${id}-description`;
47
+ (0, _element.useEffect)(() => {
48
+ if (isSelected) {
49
+ itemRef.current?.scrollIntoView({
50
+ behavior: 'auto',
51
+ block: 'nearest',
52
+ inline: 'nearest'
53
+ });
54
+ }
55
+ }, [isSelected]);
56
+ return (0, _react.createElement)(CompositeRow, {
57
+ ref: itemRef,
58
+ render: (0, _react.createElement)("li", null),
59
+ role: "row",
60
+ className: (0, _classnames.default)({
61
+ 'is-selected': isSelected
62
+ })
63
+ }, (0, _react.createElement)(_components.__experimentalHStack, {
64
+ className: "dataviews-view-list__item-wrapper"
65
+ }, (0, _react.createElement)("div", {
66
+ role: "gridcell"
67
+ }, (0, _react.createElement)(CompositeItem, {
68
+ render: (0, _react.createElement)("div", null),
69
+ role: "button",
70
+ id: id,
71
+ "aria-pressed": isSelected,
72
+ "aria-labelledby": labelId,
73
+ "aria-describedby": descriptionId,
74
+ className: "dataviews-view-list__item",
75
+ onClick: () => onSelect(item)
76
+ }, (0, _react.createElement)(_components.__experimentalHStack, {
77
+ spacing: 3,
78
+ justify: "start",
79
+ alignment: "flex-start"
80
+ }, (0, _react.createElement)("div", {
81
+ className: "dataviews-view-list__media-wrapper"
82
+ }, mediaField?.render({
83
+ item
84
+ }) || (0, _react.createElement)("div", {
85
+ className: "dataviews-view-list__media-placeholder"
86
+ })), (0, _react.createElement)(_components.__experimentalVStack, {
87
+ spacing: 1
88
+ }, (0, _react.createElement)("span", {
89
+ className: "dataviews-view-list__primary-field",
90
+ id: labelId
91
+ }, primaryField?.render({
92
+ item
93
+ })), (0, _react.createElement)("div", {
94
+ className: "dataviews-view-list__fields",
95
+ id: descriptionId
96
+ }, visibleFields.map(field => (0, _react.createElement)("div", {
97
+ key: field.id,
98
+ className: "dataviews-view-list__field"
99
+ }, (0, _react.createElement)(_components.VisuallyHidden, {
100
+ as: "span",
101
+ className: "dataviews-view-list__field-label"
102
+ }, field.header), (0, _react.createElement)("span", {
103
+ className: "dataviews-view-list__field-value"
104
+ }, field.render({
105
+ item
106
+ }))))))))), onDetailsChange && (0, _react.createElement)("div", {
107
+ role: "gridcell"
108
+ }, (0, _react.createElement)(CompositeItem, {
109
+ render: (0, _react.createElement)(_components.Button, null),
110
+ className: "dataviews-view-list__details-button",
111
+ onClick: () => onDetailsChange([item]),
112
+ icon: _icons.info,
113
+ label: (0, _i18n.__)('View details'),
114
+ size: "compact"
115
+ }))));
116
+ }
23
117
  function ViewList({
24
118
  view,
25
119
  fields,
@@ -29,23 +123,23 @@ function ViewList({
29
123
  onSelectionChange,
30
124
  onDetailsChange,
31
125
  selection,
32
- deferredRendering
126
+ deferredRendering,
127
+ id: preferredId
33
128
  }) {
129
+ const baseId = (0, _compose.useInstanceId)(ViewList, 'view-list', preferredId);
34
130
  const shownData = (0, _compose.useAsyncList)(data, {
35
131
  step: 3
36
132
  });
37
133
  const usedData = deferredRendering ? shownData : data;
134
+ const selectedItem = usedData?.findLast(item => selection.includes(item.id));
38
135
  const mediaField = fields.find(field => field.id === view.layout.mediaField);
39
136
  const primaryField = fields.find(field => field.id === view.layout.primaryField);
40
137
  const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.primaryField, view.layout.mediaField].includes(field.id));
41
- const onEnter = item => event => {
42
- const {
43
- keyCode
44
- } = event;
45
- if ([_keycodes.ENTER, _keycodes.SPACE].includes(keyCode)) {
46
- onSelectionChange([item]);
47
- }
48
- };
138
+ const onSelect = (0, _element.useCallback)(item => onSelectionChange([item]), [onSelectionChange]);
139
+ const getItemDomId = (0, _element.useCallback)(item => item ? `${baseId}-${getItemId(item)}` : undefined, [baseId, getItemId]);
140
+ const store = useCompositeStore({
141
+ defaultActiveId: getItemDomId(selectedItem)
142
+ });
49
143
  const hasData = usedData?.length;
50
144
  if (!hasData) {
51
145
  return (0, _react.createElement)("div", {
@@ -55,55 +149,25 @@ function ViewList({
55
149
  })
56
150
  }, !hasData && (0, _react.createElement)("p", null, isLoading ? (0, _react.createElement)(_components.Spinner, null) : (0, _i18n.__)('No results')));
57
151
  }
58
- return (0, _react.createElement)("ul", {
59
- className: "dataviews-view-list"
152
+ return (0, _react.createElement)(Composite, {
153
+ id: baseId,
154
+ render: (0, _react.createElement)("ul", null),
155
+ className: "dataviews-view-list",
156
+ role: "grid",
157
+ store: store
60
158
  }, usedData.map(item => {
61
- return (0, _react.createElement)("li", {
62
- key: getItemId(item),
63
- className: (0, _classnames.default)({
64
- 'is-selected': selection.includes(item.id)
65
- })
66
- }, (0, _react.createElement)(_components.__experimentalHStack, {
67
- className: "dataviews-view-list__item-wrapper"
68
- }, (0, _react.createElement)("div", {
69
- role: "button",
70
- tabIndex: 0,
71
- "aria-pressed": selection.includes(item.id),
72
- onKeyDown: onEnter(item),
73
- className: "dataviews-view-list__item",
74
- onClick: () => onSelectionChange([item])
75
- }, (0, _react.createElement)(_components.__experimentalHStack, {
76
- spacing: 3,
77
- justify: "start",
78
- alignment: "flex-start"
79
- }, (0, _react.createElement)("div", {
80
- className: "dataviews-view-list__media-wrapper"
81
- }, mediaField?.render({
82
- item
83
- }) || (0, _react.createElement)("div", {
84
- className: "dataviews-view-list__media-placeholder"
85
- })), (0, _react.createElement)(_components.__experimentalVStack, {
86
- spacing: 1
87
- }, (0, _react.createElement)("span", {
88
- className: "dataviews-view-list__primary-field"
89
- }, primaryField?.render({
90
- item
91
- })), (0, _react.createElement)("div", {
92
- className: "dataviews-view-list__fields"
93
- }, visibleFields.map(field => {
94
- return (0, _react.createElement)("span", {
95
- key: field.id,
96
- className: "dataviews-view-list__field"
97
- }, field.render({
98
- item
99
- }));
100
- }))))), onDetailsChange && (0, _react.createElement)(_components.Button, {
101
- className: "dataviews-view-list__details-button",
102
- onClick: () => onDetailsChange([item]),
103
- icon: _icons.info,
104
- label: (0, _i18n.__)('View details'),
105
- size: "compact"
106
- })));
159
+ const id = getItemDomId(item);
160
+ return (0, _react.createElement)(ListItem, {
161
+ key: id,
162
+ id: id,
163
+ item: item,
164
+ isSelected: item === selectedItem,
165
+ onSelect: onSelect,
166
+ onDetailsChange: onDetailsChange,
167
+ mediaField: mediaField,
168
+ primaryField: primaryField,
169
+ visibleFields: visibleFields
170
+ });
107
171
  }));
108
172
  }
109
173
  //# sourceMappingURL=view-list.js.map