@wordpress/dataviews 0.2.0 → 0.3.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 (87) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +30 -6
  4. package/build/add-filter.js +109 -49
  5. package/build/add-filter.js.map +1 -1
  6. package/build/constants.js +24 -2
  7. package/build/constants.js.map +1 -1
  8. package/build/dataviews.js +12 -9
  9. package/build/dataviews.js.map +1 -1
  10. package/build/dropdown-menu-helper.js +72 -0
  11. package/build/dropdown-menu-helper.js.map +1 -0
  12. package/build/filter-summary.js +43 -54
  13. package/build/filter-summary.js.map +1 -1
  14. package/build/filters.js +27 -17
  15. package/build/filters.js.map +1 -1
  16. package/build/index.js +13 -0
  17. package/build/index.js.map +1 -1
  18. package/build/item-actions.js +12 -12
  19. package/build/item-actions.js.map +1 -1
  20. package/build/pagination.js +31 -65
  21. package/build/pagination.js.map +1 -1
  22. package/build/reset-filters.js +8 -8
  23. package/build/reset-filters.js.map +1 -1
  24. package/build/search.js +8 -6
  25. package/build/search.js.map +1 -1
  26. package/build/utils.js +71 -0
  27. package/build/utils.js.map +1 -0
  28. package/build/view-actions.js +72 -95
  29. package/build/view-actions.js.map +1 -1
  30. package/build/view-grid.js +4 -6
  31. package/build/view-grid.js.map +1 -1
  32. package/build/view-list.js +26 -13
  33. package/build/view-list.js.map +1 -1
  34. package/build/view-table.js +153 -154
  35. package/build/view-table.js.map +1 -1
  36. package/build-module/add-filter.js +113 -53
  37. package/build-module/add-filter.js.map +1 -1
  38. package/build-module/constants.js +20 -0
  39. package/build-module/constants.js.map +1 -1
  40. package/build-module/dataviews.js +13 -10
  41. package/build-module/dataviews.js.map +1 -1
  42. package/build-module/dropdown-menu-helper.js +64 -0
  43. package/build-module/dropdown-menu-helper.js.map +1 -0
  44. package/build-module/filter-summary.js +45 -56
  45. package/build-module/filter-summary.js.map +1 -1
  46. package/build-module/filters.js +26 -17
  47. package/build-module/filters.js.map +1 -1
  48. package/build-module/index.js +1 -0
  49. package/build-module/index.js.map +1 -1
  50. package/build-module/item-actions.js +12 -12
  51. package/build-module/item-actions.js.map +1 -1
  52. package/build-module/pagination.js +35 -69
  53. package/build-module/pagination.js.map +1 -1
  54. package/build-module/reset-filters.js +6 -6
  55. package/build-module/reset-filters.js.map +1 -1
  56. package/build-module/search.js +7 -6
  57. package/build-module/search.js.map +1 -1
  58. package/build-module/utils.js +63 -0
  59. package/build-module/utils.js.map +1 -0
  60. package/build-module/view-actions.js +73 -97
  61. package/build-module/view-actions.js.map +1 -1
  62. package/build-module/view-grid.js +4 -6
  63. package/build-module/view-grid.js.map +1 -1
  64. package/build-module/view-list.js +27 -14
  65. package/build-module/view-list.js.map +1 -1
  66. package/build-module/view-table.js +156 -157
  67. package/build-module/view-table.js.map +1 -1
  68. package/build-style/style-rtl.css +180 -70
  69. package/build-style/style.css +180 -70
  70. package/package.json +11 -10
  71. package/src/add-filter.js +227 -68
  72. package/src/constants.js +16 -0
  73. package/src/dataviews.js +19 -12
  74. package/src/dropdown-menu-helper.js +61 -0
  75. package/src/filter-summary.js +70 -103
  76. package/src/filters.js +41 -24
  77. package/src/index.js +1 -0
  78. package/src/item-actions.js +30 -25
  79. package/src/pagination.js +75 -123
  80. package/src/reset-filters.js +5 -5
  81. package/src/search.js +8 -6
  82. package/src/style.scss +182 -48
  83. package/src/utils.js +51 -0
  84. package/src/view-actions.js +113 -114
  85. package/src/view-grid.js +4 -4
  86. package/src/view-list.js +42 -28
  87. package/src/view-table.js +280 -238
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_compose","_icons","_components","_element","_lockUnlock","_itemActions","_interopRequireDefault","_constants","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","DropdownSubMenuV2","DropdownSubMenu","DropdownSubMenuTriggerV2","DropdownSubMenuTrigger","unlock","componentsPrivateApis","sortingItemsInfo","asc","icon","arrowUp","label","__","desc","arrowDown","sortIcons","chevronUp","chevronDown","HeaderMenu","field","view","onChangeView","isSortable","enableSorting","isHidable","enableHiding","header","isSorted","sort","id","filter","filterInView","otherFilters","type","ENUMERATION_TYPE","columnOperators","filterBy","operators","Array","isArray","OPERATOR_IN","OPERATOR_NOT_IN","operator","includes","length","elements","value","undefined","isFilterable","columnFilters","filters","forEach","columnFilter","push","_react","createElement","align","trigger","Button","direction","iconPosition","text","style","padding","size","WithSeparators","Object","entries","map","info","isActive","key","role","prefix","Icon","suffix","check","onSelect","event","preventDefault","unseen","hiddenFields","concat","funnel","chevronRightSmall","element","Fragment","children","Children","toArray","Boolean","child","i","ViewTable","fields","actions","data","getItemId","isLoading","deferredRendering","visibleFields","layout","mediaField","primaryField","shownData","useAsyncList","usedData","hasData","className","sortValues","width","minWidth","maxWidth","scope","item","index","render","default","_default","exports"],"sources":["@wordpress/dataviews/src/view-table.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useAsyncList } from '@wordpress/compose';\nimport {\n\tchevronDown,\n\tchevronUp,\n\tunseen,\n\tcheck,\n\tarrowUp,\n\tarrowDown,\n\tchevronRightSmall,\n\tfunnel,\n} from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { Children, Fragment } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport ItemActions from './item-actions';\nimport { ENUMERATION_TYPE, OPERATOR_IN, OPERATOR_NOT_IN } from './constants';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n\tDropdownSubMenuV2: DropdownSubMenu,\n\tDropdownSubMenuTriggerV2: DropdownSubMenuTrigger,\n} = unlock( componentsPrivateApis );\n\nconst sortingItemsInfo = {\n\tasc: { icon: arrowUp, label: __( 'Sort ascending' ) },\n\tdesc: { icon: arrowDown, label: __( 'Sort descending' ) },\n};\nconst sortIcons = { asc: chevronUp, desc: chevronDown };\n\nfunction HeaderMenu( { field, view, onChangeView } ) {\n\tconst isSortable = field.enableSorting !== false;\n\tconst isHidable = field.enableHiding !== false;\n\tif ( ! isSortable && ! isHidable ) {\n\t\treturn field.header;\n\t}\n\tconst isSorted = view.sort?.field === field.id;\n\tlet filter, filterInView;\n\tconst otherFilters = [];\n\tif ( field.type === ENUMERATION_TYPE ) {\n\t\tlet columnOperators = field.filterBy?.operators;\n\t\tif ( ! columnOperators || ! Array.isArray( columnOperators ) ) {\n\t\t\tcolumnOperators = [ OPERATOR_IN, OPERATOR_NOT_IN ];\n\t\t}\n\t\tconst operators = columnOperators.filter( ( operator ) =>\n\t\t\t[ OPERATOR_IN, OPERATOR_NOT_IN ].includes( operator )\n\t\t);\n\t\tif ( operators.length >= 0 ) {\n\t\t\tfilter = {\n\t\t\t\tfield: field.id,\n\t\t\t\toperators,\n\t\t\t\telements: field.elements || [],\n\t\t\t};\n\t\t\tfilterInView = {\n\t\t\t\tfield: filter.field,\n\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\tvalue: undefined,\n\t\t\t};\n\t\t}\n\t}\n\tconst isFilterable = !! filter;\n\n\tif ( isFilterable ) {\n\t\tconst columnFilters = view.filters;\n\t\tcolumnFilters.forEach( ( columnFilter ) => {\n\t\t\tif ( columnFilter.field === filter.field ) {\n\t\t\t\tfilterInView = {\n\t\t\t\t\t...columnFilter,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\totherFilters.push( columnFilter );\n\t\t\t}\n\t\t} );\n\t}\n\treturn (\n\t\t<DropdownMenu\n\t\t\talign=\"start\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\ticon={ isSorted && sortIcons[ view.sort.direction ] }\n\t\t\t\t\ticonPosition=\"right\"\n\t\t\t\t\ttext={ field.header }\n\t\t\t\t\tstyle={ { padding: 0 } }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<WithSeparators>\n\t\t\t\t{ isSortable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t{ Object.entries( sortingItemsInfo ).map(\n\t\t\t\t\t\t\t( [ direction, info ] ) => {\n\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\taria-checked={ isActive }\n\t\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ info.icon } /> }\n\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\tisActive && <Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\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>\n\t\t\t\t\t\t\t\t\t\t{ info.label }\n\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\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</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t\t{ isHidable && (\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\taria-checked={ false }\n\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\thiddenFields: view.hiddenFields.concat(\n\t\t\t\t\t\t\t\t\tfield.id\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\t\t{ __( 'Hide' ) }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t) }\n\t\t\t\t{ isFilterable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t<DropdownSubMenu\n\t\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t<DropdownSubMenuTrigger\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\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\t\t{ __( 'Filter by' ) }\n\t\t\t\t\t\t\t\t</DropdownSubMenuTrigger>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<WithSeparators>\n\t\t\t\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t\t\t\t{ filter.elements.map( ( element ) => {\n\t\t\t\t\t\t\t\t\t\tlet isActive = false;\n\t\t\t\t\t\t\t\t\t\tif ( filterInView ) {\n\t\t\t\t\t\t\t\t\t\t\t// Intentionally use loose comparison, so it does type conversion.\n\t\t\t\t\t\t\t\t\t\t\t// This covers the case where a top-level filter for the same field converts a number into a string.\n\t\t\t\t\t\t\t\t\t\t\t/* eslint-disable eqeqeq */\n\t\t\t\t\t\t\t\t\t\t\tisActive =\n\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\tfilterInView.value;\n\t\t\t\t\t\t\t\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\t\taria-checked={ isActive }\n\t\t\t\t\t\t\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t\t\t\t\t\t\tisActive && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\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\tonSelect={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\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\t\tfield: filter.field,\n\t\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\t\tfilterInView?.operator,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: isActive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: element.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} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ element.label }\n\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t\t\t\t\t{ filter.operators.length > 1 && (\n\t\t\t\t\t\t\t\t\t<DropdownSubMenu\n\t\t\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t\t\t<DropdownSubMenuTrigger\n\t\t\t\t\t\t\t\t\t\t\t\tsuffix={\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\t{ filterInView.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_IN\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Is' )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Is not' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchevronRightSmall\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}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Conditions' ) }\n\t\t\t\t\t\t\t\t\t\t\t</DropdownSubMenuTrigger>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey=\"in-filter\"\n\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\taria-checked={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_IN\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_IN && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\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\tonSelect={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\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\t\tfield: filter.field,\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\tOPERATOR_IN,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: filterInView?.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} )\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\t\t{ __( 'Is' ) }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey=\"not-in-filter\"\n\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\taria-checked={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_NOT_IN\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_NOT_IN && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\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\tonSelect={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\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\t\tfield: filter.field,\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\tOPERATOR_NOT_IN,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: filterInView?.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} )\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\t\t{ __( 'Is not' ) }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t</DropdownSubMenu>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</WithSeparators>\n\t\t\t\t\t\t</DropdownSubMenu>\n\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t</WithSeparators>\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction WithSeparators( { children } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <DropdownMenuSeparator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nfunction ViewTable( {\n\tview,\n\tonChangeView,\n\tfields,\n\tactions,\n\tdata,\n\tgetItemId,\n\tisLoading = false,\n\tdeferredRendering,\n} ) {\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 );\n\tconst usedData = deferredRendering ? shownData : data;\n\tconst hasData = !! usedData?.length;\n\tif ( isLoading ) {\n\t\t// TODO:Add spinner or progress bar..\n\t\treturn (\n\t\t\t<div className=\"dataviews-loading\">\n\t\t\t\t<h3>{ __( 'Loading' ) }</h3>\n\t\t\t</div>\n\t\t);\n\t}\n\tconst sortValues = { asc: 'ascending', desc: 'descending' };\n\treturn (\n\t\t<div className=\"dataviews-table-view-wrapper\">\n\t\t\t{ hasData && (\n\t\t\t\t<table className=\"dataviews-table-view\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\t\tminWidth: field.minWidth || undefined,\n\t\t\t\t\t\t\t\t\t\tmaxWidth: field.maxWidth || undefined,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tdata-field-id={ field.id }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === field.id &&\n\t\t\t\t\t\t\t\t\t\tsortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HeaderMenu\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t\t<th data-field-id=\"actions\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t{ usedData.map( ( item, index ) => (\n\t\t\t\t\t\t\t<tr key={ getItemId?.( item ) || index }>\n\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\t\t\tminWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.minWidth || undefined,\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.maxWidth || undefined,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.render( {\n\t\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t) }\n\t\t\t{ ! hasData && (\n\t\t\t\t<div className=\"dataviews-no-results\">\n\t\t\t\t\t<p>{ __( 'No results' ) }</p>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default ViewTable;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_i18n","_compose","_icons","_components","_element","_lockUnlock","_itemActions","_constants","_dropdownMenuHelper","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","DropdownMenuItemLabelV2","DropdownMenuItemLabel","DropdownMenuItemHelpTextV2","DropdownMenuItemHelpText","unlock","componentsPrivateApis","sortArrows","asc","desc","sanitizeOperators","field","operators","filterBy","Array","isArray","Object","keys","OPERATORS","filter","operator","includes","HeaderMenu","forwardRef","view","onChangeView","onHide","ref","isHidable","enableHiding","isSortable","enableSorting","isSorted","sort","id","filterInView","activeElement","activeOperator","otherFilters","type","ENUMERATION_TYPE","length","elements","filters","find","f","element","value","isFilterable","header","_react","createElement","align","trigger","Button","size","className","variant","direction","style","minWidth","WithSeparators","entries","SORTING_DIRECTIONS","map","info","isChecked","key","name","checked","onChange","label","prefix","Icon","icon","unseen","onClick","hiddenFields","concat","__","funnel","suffix","isActive","DropdownMenuRadioItemCustom","page","undefined","description","e","target","children","Children","toArray","Boolean","child","i","Fragment","ViewTable","fields","actions","data","getItemId","isLoading","deferredRendering","headerMenuRefs","useRef","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","useState","useEffect","current","focus","asyncData","useAsyncList","tableNoticeId","useId","hidden","get","fallback","node","visibleFields","layout","mediaField","primaryField","usedData","hasData","sortValues","index","width","maxWidth","scope","set","delete","item","render","default","classNames","_default","exports"],"sources":["@wordpress/dataviews/src/view-table.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useAsyncList } from '@wordpress/compose';\nimport { unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport {\n\tChildren,\n\tFragment,\n\tforwardRef,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport ItemActions from './item-actions';\nimport { ENUMERATION_TYPE, OPERATORS, SORTING_DIRECTIONS } from './constants';\nimport { DropdownMenuRadioItemCustom } from './dropdown-menu-helper';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tDropdownMenuItemHelpTextV2: DropdownMenuItemHelpText,\n} = unlock( componentsPrivateApis );\n\nconst sortArrows = { asc: '↑', desc: '↓' };\n\nconst 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\nconst HeaderMenu = forwardRef( function HeaderMenu(\n\t{ field, view, onChangeView, onHide },\n\tref\n) {\n\tconst isHidable = field.enableHiding !== false;\n\n\tconst isSortable = field.enableSorting !== false;\n\tconst isSorted = view.sort?.field === field.id;\n\n\tlet filter, filterInView, activeElement, activeOperator, otherFilters;\n\tconst operators = sanitizeOperators( field );\n\tif ( field.type === ENUMERATION_TYPE && operators.length > 0 ) {\n\t\tfilter = {\n\t\t\tfield: field.id,\n\t\t\toperators,\n\t\t\telements: field.elements || [],\n\t\t};\n\t\tfilterInView = view.filters.find( ( f ) => f.field === filter.field );\n\t\totherFilters = view.filters.filter( ( f ) => f.field !== filter.field );\n\t\tactiveElement = filter.elements.find(\n\t\t\t( element ) => element.value === filterInView?.value\n\t\t);\n\t\tactiveOperator = filterInView?.operator || filter.operators[ 0 ];\n\t}\n\tconst isFilterable = !! filter;\n\n\tif ( ! isSortable && ! isHidable && ! isFilterable ) {\n\t\treturn field.header;\n\t}\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\talign=\"start\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tclassName=\"dataviews-view-table-header-button\"\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t>\n\t\t\t\t\t{ field.header }\n\t\t\t\t\t{ isSorted && (\n\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t{ isSorted && sortArrows[ view.sort.direction ] }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\tstyle={ { minWidth: '240px' } }\n\t\t>\n\t\t\t<WithSeparators>\n\t\t\t\t{ isSortable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t{ Object.entries( SORTING_DIRECTIONS ).map(\n\t\t\t\t\t\t\t( [ direction, info ] ) => {\n\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\n\t\t\t\t\t\t\t\tconst value = `${ field.id }-${ direction }`;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t// All sorting radio items share the same name, so that\n\t\t\t\t\t\t\t\t\t\t// selecting a sorting option automatically deselects the\n\t\t\t\t\t\t\t\t\t\t// previously selected one, even if it is displayed in\n\t\t\t\t\t\t\t\t\t\t// another submenu. The field and direction are passed via\n\t\t\t\t\t\t\t\t\t\t// the `value` prop.\n\t\t\t\t\t\t\t\t\t\tname=\"view-table-sorting\"\n\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\tchecked={ isChecked }\n\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\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>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ info.label }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t</DropdownMenuRadioItem>\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</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t\t{ isHidable && (\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonHide( field );\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\thiddenFields: view.hiddenFields.concat(\n\t\t\t\t\t\t\t\t\tfield.id\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\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t{ __( 'Hide' ) }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t) }\n\t\t\t\t{ isFilterable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\tactiveElement && (\n\t\t\t\t\t\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ activeOperator in OPERATORS &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${ OPERATORS[ activeOperator ].label } ` }\n\t\t\t\t\t\t\t\t\t\t\t\t{ activeElement?.label }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Filter by' ) }\n\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<WithSeparators>\n\t\t\t\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t\t\t\t{ filter.elements.map( ( element ) => {\n\t\t\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\t\t\tactiveElement?.value ===\n\t\t\t\t\t\t\t\t\t\t\telement.value;\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuRadioItemCustom\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\t\t\t\t\t\tname={ `view-table-${ filter.field }` }\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\tchecked={ isActive }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\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\t\tfield: filter.field,\n\t\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\t\tactiveOperator,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: isActive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: element.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} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ element.label }\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemHelpText>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ element.description }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemHelpText>\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</DropdownMenuRadioItemCustom>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t\t\t\t\t{ filter.operators.length > 1 && (\n\t\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span aria-hidden=\"true\">\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\t\tOPERATORS[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.label\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</span>\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\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Conditions' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ Object.entries( OPERATORS ).map(\n\t\t\t\t\t\t\t\t\t\t\t( [\n\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{ label, key },\n\t\t\t\t\t\t\t\t\t\t\t] ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t\t\t\t\t\t\t\tname={ `view-table-${ filter.field }-conditions` }\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={ operator }\n\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveOperator ===\n\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}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( e ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\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\t\t\tfield: filter.field,\n\t\t\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\t\t\te.target\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: filterInView?.value,\n\t\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\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>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuRadioItem>\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</DropdownMenu>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</WithSeparators>\n\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t</WithSeparators>\n\t\t</DropdownMenu>\n\t);\n} );\n\nfunction WithSeparators( { children } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <DropdownMenuSeparator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nfunction ViewTable( {\n\tview,\n\tonChangeView,\n\tfields,\n\tactions,\n\tdata,\n\tgetItemId,\n\tisLoading = false,\n\tdeferredRendering,\n} ) {\n\tconst headerMenuRefs = useRef( new Map() );\n\tconst headerMenuToFocusRef = useRef();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] = useState();\n\n\tuseEffect( () => {\n\t\tif ( headerMenuToFocusRef.current ) {\n\t\t\theaderMenuToFocusRef.current.focus();\n\t\t\theaderMenuToFocusRef.current = undefined;\n\t\t}\n\t} );\n\n\tconst asyncData = useAsyncList( data );\n\tconst tableNoticeId = useId();\n\n\tif ( nextHeaderMenuToFocus ) {\n\t\t// If we need to force focus, we short-circuit rendering here\n\t\t// to prevent any additional work while we handle that.\n\t\t// Clearing out the focus directive is necessary to make sure\n\t\t// future renders don't cause unexpected focus jumps.\n\t\theaderMenuToFocusRef.current = nextHeaderMenuToFocus;\n\t\tsetNextHeaderMenuToFocus();\n\t\treturn;\n\t}\n\n\tconst onHide = ( field ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = headerMenuRefs.current.get( hidden.fallback );\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\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 usedData = deferredRendering ? asyncData : data;\n\tconst hasData = !! usedData?.length;\n\tconst sortValues = { asc: 'ascending', desc: 'descending' };\n\n\treturn (\n\t\t<div>\n\t\t\t<table\n\t\t\t\tclassName=\"dataviews-view-table\"\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{ visibleFields.map( ( field, index ) => (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\tminWidth: field.minWidth || undefined,\n\t\t\t\t\t\t\t\t\tmaxWidth: field.maxWidth || undefined,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tdata-field-id={ field.id }\n\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\tview.sort?.field === field.id &&\n\t\t\t\t\t\t\t\t\tsortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<HeaderMenu\n\t\t\t\t\t\t\t\t\tref={ ( node ) => {\n\t\t\t\t\t\t\t\t\t\tif ( node ) {\n\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.set(\n\t\t\t\t\t\t\t\t\t\t\t\tfield.id,\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\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfallback:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvisibleFields[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex > 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? index - 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.id,\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} else {\n\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.delete(\n\t\t\t\t\t\t\t\t\t\t\t\tfield.id\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t<th data-field-id=\"actions\">\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\tusedData.map( ( item ) => (\n\t\t\t\t\t\t\t<tr key={ getItemId( item ) }>\n\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\t\t\tminWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.minWidth || undefined,\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.maxWidth || undefined,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.render( {\n\t\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) ) }\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t<div\n\t\t\t\tclassName={ classNames( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t\tid={ tableNoticeId }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? __( 'Loading…' ) : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default ViewTable;\n"],"mappings":"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"}
@@ -2,82 +2,142 @@ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { privateApis as componentsPrivateApis, Button, Icon } from '@wordpress/components';
6
- import { chevronRightSmall, plus } from '@wordpress/icons';
7
- import { __ } from '@wordpress/i18n';
5
+ import { privateApis as componentsPrivateApis, Button } from '@wordpress/components';
6
+ import { funnel } from '@wordpress/icons';
7
+ import { __, sprintf } from '@wordpress/i18n';
8
+ import { Children, Fragment } from '@wordpress/element';
8
9
 
9
10
  /**
10
11
  * Internal dependencies
11
12
  */
12
13
  import { unlock } from './lock-unlock';
13
- import { ENUMERATION_TYPE, OPERATOR_IN } from './constants';
14
+ import { LAYOUT_LIST, OPERATORS } from './constants';
15
+ import { DropdownMenuRadioItemCustom } from './dropdown-menu-helper';
14
16
  const {
15
17
  DropdownMenuV2: DropdownMenu,
16
- DropdownSubMenuV2: DropdownSubMenu,
17
- DropdownSubMenuTriggerV2: DropdownSubMenuTrigger,
18
- DropdownMenuItemV2: DropdownMenuItem
18
+ DropdownMenuGroupV2: DropdownMenuGroup,
19
+ DropdownMenuItemV2: DropdownMenuItem,
20
+ DropdownMenuRadioItemV2: DropdownMenuRadioItem,
21
+ DropdownMenuSeparatorV2: DropdownMenuSeparator,
22
+ DropdownMenuItemLabelV2: DropdownMenuItemLabel,
23
+ DropdownMenuItemHelpTextV2: DropdownMenuItemHelpText
19
24
  } = unlock(componentsPrivateApis);
25
+ function WithSeparators({
26
+ children
27
+ }) {
28
+ return Children.toArray(children).filter(Boolean).map((child, i) => createElement(Fragment, {
29
+ key: i
30
+ }, i > 0 && createElement(DropdownMenuSeparator, null), child));
31
+ }
20
32
  export default function AddFilter({
21
- fields,
33
+ filters,
22
34
  view,
23
35
  onChangeView
24
36
  }) {
25
- const filters = [];
26
- fields.forEach(field => {
27
- if (!field.type) {
28
- return;
29
- }
30
- switch (field.type) {
31
- case ENUMERATION_TYPE:
32
- filters.push({
33
- field: field.id,
34
- name: field.header,
35
- elements: field.elements || [],
36
- isVisible: view.filters.some(f => f.field === field.id)
37
- });
38
- }
39
- });
40
37
  if (filters.length === 0) {
41
38
  return null;
42
39
  }
40
+ const filterCount = view.filters.reduce((acc, filter) => {
41
+ if (filter.value !== undefined) {
42
+ return acc + 1;
43
+ }
44
+ return acc;
45
+ }, 0);
43
46
  return createElement(DropdownMenu, {
44
- label: __('Add filter'),
45
47
  trigger: createElement(Button, {
46
- disabled: filters.length === view.filters?.length,
47
48
  __experimentalIsFocusable: true,
48
- variant: "tertiary",
49
- size: "compact"
50
- }, createElement(Icon, {
51
- icon: plus,
52
- style: {
53
- flexShrink: 0
54
- }
55
- }), __('Add filter'))
56
- }, filters.map(filter => {
57
- if (filter.isVisible) {
58
- return null;
49
+ label: __('Filters'),
50
+ size: "compact",
51
+ icon: funnel,
52
+ className: "dataviews-filters-button"
53
+ }, view.type === LAYOUT_LIST && filterCount > 0 ? createElement("span", {
54
+ className: "dataviews-filters-count"
55
+ }, filterCount) : null),
56
+ style: {
57
+ minWidth: '230px'
59
58
  }
60
- return createElement(DropdownSubMenu, {
59
+ }, createElement(WithSeparators, null, createElement(DropdownMenuGroup, null, filters.map(filter => {
60
+ const filterInView = view.filters.find(f => f.field === filter.field);
61
+ const otherFilters = view.filters.filter(f => f.field !== filter.field);
62
+ const activeElement = filter.elements.find(element => element.value === filterInView?.value);
63
+ const activeOperator = filterInView?.operator || filter.operators[0];
64
+ return createElement(DropdownMenu, {
61
65
  key: filter.field,
62
- trigger: createElement(DropdownSubMenuTrigger, {
63
- suffix: createElement(Icon, {
64
- icon: chevronRightSmall
65
- })
66
- }, filter.name)
67
- }, filter.elements.map(element => createElement(DropdownMenuItem, {
68
- key: element.value,
69
- onSelect: () => {
70
- onChangeView(currentView => ({
71
- ...currentView,
66
+ trigger: createElement(DropdownMenuItem, {
67
+ suffix: activeElement && createElement("span", {
68
+ "aria-hidden": "true"
69
+ }, activeOperator in OPERATORS && `${OPERATORS[activeOperator].label} `, activeElement.label)
70
+ }, createElement(DropdownMenuItemLabel, null, filter.name)),
71
+ style: {
72
+ minWidth: '200px'
73
+ }
74
+ }, createElement(WithSeparators, null, createElement(DropdownMenuGroup, null, filter.elements.map(element => {
75
+ const isActive = activeElement?.value === element.value;
76
+ return createElement(DropdownMenuRadioItemCustom, {
77
+ key: element.value,
78
+ name: `add-filter-${filter.field}`,
79
+ value: element.value,
80
+ checked: isActive,
81
+ onChange: e => {
82
+ onChangeView({
83
+ ...view,
84
+ page: 1,
85
+ filters: [...otherFilters, {
86
+ field: filter.field,
87
+ operator: activeOperator,
88
+ value: isActive ? undefined : e.target.value
89
+ }]
90
+ });
91
+ }
92
+ }, createElement(DropdownMenuItemLabel, null, element.label), !!element.description && createElement(DropdownMenuItemHelpText, null, element.description));
93
+ })), filter.operators.length > 1 && createElement(DropdownMenu, {
94
+ trigger: createElement(DropdownMenuItem, {
95
+ suffix: createElement("span", {
96
+ "aria-hidden": "true"
97
+ }, OPERATORS[activeOperator]?.label)
98
+ }, createElement(DropdownMenuItemLabel, null, __('Conditions')))
99
+ }, Object.entries(OPERATORS).map(([operator, {
100
+ label,
101
+ key
102
+ }]) => createElement(DropdownMenuRadioItem, {
103
+ key: key,
104
+ name: `add-filter-${filter.field}-conditions`,
105
+ value: operator,
106
+ checked: activeOperator === operator,
107
+ onChange: e => {
108
+ onChangeView({
109
+ ...view,
72
110
  page: 1,
73
- filters: [...currentView.filters, {
111
+ filters: [...otherFilters, {
74
112
  field: filter.field,
75
- operator: OPERATOR_IN,
76
- value: element.value
113
+ operator: e.target.value,
114
+ value: filterInView?.value
77
115
  }]
78
- }));
116
+ });
79
117
  }
80
- }, element.label)));
81
- }));
118
+ }, createElement(DropdownMenuItemLabel, null, label)))), createElement(DropdownMenuItem, {
119
+ key: 'reset-filter-' + filter.name,
120
+ disabled: !activeElement,
121
+ hideOnClick: false,
122
+ onClick: () => {
123
+ onChangeView({
124
+ ...view,
125
+ page: 1,
126
+ filters: view.filters.filter(f => f.field !== filter.field)
127
+ });
128
+ }
129
+ }, createElement(DropdownMenuItemLabel, null, sprintf( /* translators: 1: Filter name. e.g.: "Reset Author". */
130
+ __('Reset %1$s'), filter.name.toLowerCase())))));
131
+ })), createElement(DropdownMenuItem, {
132
+ disabled: view.search === '' && view.filters?.length === 0,
133
+ hideOnClick: false,
134
+ onClick: () => {
135
+ onChangeView({
136
+ ...view,
137
+ page: 1,
138
+ filters: []
139
+ });
140
+ }
141
+ }, createElement(DropdownMenuItemLabel, null, __('Reset filters')))));
82
142
  }
83
143
  //# sourceMappingURL=add-filter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["privateApis","componentsPrivateApis","Button","Icon","chevronRightSmall","plus","__","unlock","ENUMERATION_TYPE","OPERATOR_IN","DropdownMenuV2","DropdownMenu","DropdownSubMenuV2","DropdownSubMenu","DropdownSubMenuTriggerV2","DropdownSubMenuTrigger","DropdownMenuItemV2","DropdownMenuItem","AddFilter","fields","view","onChangeView","filters","forEach","field","type","push","id","name","header","elements","isVisible","some","f","length","createElement","label","trigger","disabled","__experimentalIsFocusable","variant","size","icon","style","flexShrink","map","filter","key","suffix","element","value","onSelect","currentView","page","operator"],"sources":["@wordpress/dataviews/src/add-filter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n\tIcon,\n} from '@wordpress/components';\nimport { chevronRightSmall, plus } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport { ENUMERATION_TYPE, OPERATOR_IN } from './constants';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownSubMenuV2: DropdownSubMenu,\n\tDropdownSubMenuTriggerV2: DropdownSubMenuTrigger,\n\tDropdownMenuItemV2: DropdownMenuItem,\n} = unlock( componentsPrivateApis );\n\nexport default function AddFilter( { fields, view, onChangeView } ) {\n\tconst filters = [];\n\tfields.forEach( ( field ) => {\n\t\tif ( ! field.type ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( field.type ) {\n\t\t\tcase ENUMERATION_TYPE:\n\t\t\t\tfilters.push( {\n\t\t\t\t\tfield: field.id,\n\t\t\t\t\tname: field.header,\n\t\t\t\t\telements: field.elements || [],\n\t\t\t\t\tisVisible: view.filters.some(\n\t\t\t\t\t\t( f ) => f.field === field.id\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t}\n\t} );\n\n\tif ( filters.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tlabel={ __( 'Add filter' ) }\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tdisabled={ filters.length === view.filters?.length }\n\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={ plus } style={ { flexShrink: 0 } } />\n\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t>\n\t\t\t{ filters.map( ( filter ) => {\n\t\t\t\tif ( filter.isVisible ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownSubMenu\n\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t<DropdownSubMenuTrigger\n\t\t\t\t\t\t\t\tsuffix={ <Icon icon={ chevronRightSmall } /> }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ filter.name }\n\t\t\t\t\t\t\t</DropdownSubMenuTrigger>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ filter.elements.map( ( element ) => (\n\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\t\tonSelect={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( ( currentView ) => ( {\n\t\t\t\t\t\t\t\t\t\t...currentView,\n\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t...currentView.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: OPERATOR_IN,\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\t],\n\t\t\t\t\t\t\t\t\t} ) );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ element.label }\n\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</DropdownSubMenu>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["privateApis","componentsPrivateApis","Button","funnel","__","sprintf","Children","Fragment","unlock","LAYOUT_LIST","OPERATORS","DropdownMenuRadioItemCustom","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","DropdownMenuItemLabelV2","DropdownMenuItemLabel","DropdownMenuItemHelpTextV2","DropdownMenuItemHelpText","WithSeparators","children","toArray","filter","Boolean","map","child","i","createElement","key","AddFilter","filters","view","onChangeView","length","filterCount","reduce","acc","value","undefined","trigger","__experimentalIsFocusable","label","size","icon","className","type","style","minWidth","filterInView","find","f","field","otherFilters","activeElement","elements","element","activeOperator","operator","operators","suffix","name","isActive","checked","onChange","e","page","target","description","Object","entries","disabled","hideOnClick","onClick","toLowerCase","search"],"sources":["@wordpress/dataviews/src/add-filter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n} from '@wordpress/components';\nimport { funnel } from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Children, Fragment } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport { LAYOUT_LIST, OPERATORS } from './constants';\nimport { DropdownMenuRadioItemCustom } from './dropdown-menu-helper';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tDropdownMenuItemHelpTextV2: DropdownMenuItemHelpText,\n} = unlock( componentsPrivateApis );\n\nfunction WithSeparators( { children } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <DropdownMenuSeparator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nexport default function AddFilter( { filters, view, onChangeView } ) {\n\tif ( filters.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst filterCount = view.filters.reduce( ( acc, filter ) => {\n\t\tif ( filter.value !== undefined ) {\n\t\t\treturn acc + 1;\n\t\t}\n\t\treturn acc;\n\t}, 0 );\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\tlabel={ __( 'Filters' ) }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\ticon={ funnel }\n\t\t\t\t\tclassName=\"dataviews-filters-button\"\n\t\t\t\t>\n\t\t\t\t\t{ view.type === LAYOUT_LIST && filterCount > 0 ? (\n\t\t\t\t\t\t<span className=\"dataviews-filters-count\">\n\t\t\t\t\t\t\t{ filterCount }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) : null }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\tstyle={ {\n\t\t\t\tminWidth: '230px',\n\t\t\t} }\n\t\t>\n\t\t\t<WithSeparators>\n\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t{ filters.map( ( filter ) => {\n\t\t\t\t\t\tconst filterInView = view.filters.find(\n\t\t\t\t\t\t\t( f ) => f.field === filter.field\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst otherFilters = view.filters.filter(\n\t\t\t\t\t\t\t( f ) => f.field !== filter.field\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst activeElement = filter.elements.find(\n\t\t\t\t\t\t\t( element ) => element.value === filterInView?.value\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst activeOperator =\n\t\t\t\t\t\t\tfilterInView?.operator || filter.operators[ 0 ];\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\tactiveElement && (\n\t\t\t\t\t\t\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ activeOperator in\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATORS &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${ OPERATORS[ activeOperator ].label } ` }\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ activeElement.label }\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ filter.name }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\tminWidth: '200px',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<WithSeparators>\n\t\t\t\t\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t\t\t\t\t{ filter.elements.map( ( element ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\t\t\t\tactiveElement?.value ===\n\t\t\t\t\t\t\t\t\t\t\t\telement.value;\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<DropdownMenuRadioItemCustom\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\t\t\t\t\t\t\tname={ `add-filter-${ filter.field }` }\n\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\tchecked={ isActive }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( e ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\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\t\t\tfield: filter.field,\n\t\t\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\t\t\tactiveOperator,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: isActive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: e\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.target\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.value,\n\t\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\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>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ element.label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemHelpText>\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\t\telement.description\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</DropdownMenuItemHelpText>\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</DropdownMenuRadioItemCustom>\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</DropdownMenuGroup>\n\t\t\t\t\t\t\t\t\t{ filter.operators.length > 1 && (\n\t\t\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span aria-hidden=\"true\">\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\t\tOPERATORS[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.label\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</span>\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\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Conditions' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\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\t\t{ Object.entries( OPERATORS ).map(\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\t\toperator,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ label, key },\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\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tname={ `add-filter-${ filter.field }-conditions` }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={ operator }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveOperator ===\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}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( e ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\t\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\t\t\t\tfield: filter.field,\n\t\t\t\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\t\t\t\te\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.target\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: filterInView?.value,\n\t\t\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\t\t],\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\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuRadioItem>\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</DropdownMenu>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ 'reset-filter-' + filter.name }\n\t\t\t\t\t\t\t\t\t\tdisabled={ ! activeElement }\n\t\t\t\t\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\t\t\tfilters: view.filters.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t( f ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tf.field !== filter.field\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>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t/* translators: 1: Filter name. e.g.: \"Reset Author\". */\n\t\t\t\t\t\t\t\t\t\t\t\t__( 'Reset %1$s' ),\n\t\t\t\t\t\t\t\t\t\t\t\tfilter.name.toLowerCase()\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t</WithSeparators>\n\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t<DropdownMenuItem\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tview.search === '' && view.filters?.length === 0\n\t\t\t\t\t}\n\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\tfilters: [],\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t{ __( 'Reset filters' ) }\n\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t</WithSeparators>\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":"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"}
@@ -17,6 +17,26 @@ export const ENUMERATION_TYPE = 'enumeration';
17
17
  // Filter operators.
18
18
  export const OPERATOR_IN = 'in';
19
19
  export const OPERATOR_NOT_IN = 'notIn';
20
+ export const OPERATORS = {
21
+ [OPERATOR_IN]: {
22
+ key: 'in-filter',
23
+ label: __('Is')
24
+ },
25
+ [OPERATOR_NOT_IN]: {
26
+ key: 'not-in-filter',
27
+ label: __('Is not')
28
+ }
29
+ };
30
+
31
+ // Sorting
32
+ export const SORTING_DIRECTIONS = {
33
+ asc: {
34
+ label: __('Sort ascending')
35
+ },
36
+ desc: {
37
+ label: __('Sort descending')
38
+ }
39
+ };
20
40
 
21
41
  // View layouts.
22
42
  export const LAYOUT_TABLE = 'table';
@@ -1 +1 @@
1
- {"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","ENUMERATION_TYPE","OPERATOR_IN","OPERATOR_NOT_IN","LAYOUT_TABLE","LAYOUT_GRID","LAYOUT_LIST","VIEW_LAYOUTS","type","label","component","icon"],"sources":["@wordpress/dataviews/src/constants.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './view-table';\nimport ViewGrid from './view-grid';\nimport ViewList from './view-list';\n\n// Field types.\nexport const ENUMERATION_TYPE = 'enumeration';\n\n// Filter operators.\nexport const OPERATOR_IN = 'in';\nexport const OPERATOR_NOT_IN = 'notIn';\n\n// View layouts.\nexport const LAYOUT_TABLE = 'table';\nexport const LAYOUT_GRID = 'grid';\nexport const LAYOUT_LIST = 'list';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,KAAK,QAAQ,iBAAiB;AAC3C,SACCC,UAAU,EACVC,QAAQ,EACRC,iBAAiB,EACjBC,oBAAoB,QACd,kBAAkB;;AAEzB;AACA;AACA;AACA,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,QAAQ,MAAM,aAAa;AAClC,OAAOC,QAAQ,MAAM,aAAa;;AAElC;AACA,OAAO,MAAMC,gBAAgB,GAAG,aAAa;;AAE7C;AACA,OAAO,MAAMC,WAAW,GAAG,IAAI;AAC/B,OAAO,MAAMC,eAAe,GAAG,OAAO;;AAEtC;AACA,OAAO,MAAMC,YAAY,GAAG,OAAO;AACnC,OAAO,MAAMC,WAAW,GAAG,MAAM;AACjC,OAAO,MAAMC,WAAW,GAAG,MAAM;AAEjC,OAAO,MAAMC,YAAY,GAAG,CAC3B;EACCC,IAAI,EAAEJ,YAAY;EAClBK,KAAK,EAAEjB,EAAE,CAAE,OAAQ,CAAC;EACpBkB,SAAS,EAAEZ,SAAS;EACpBa,IAAI,EAAEjB;AACP,CAAC,EACD;EACCc,IAAI,EAAEH,WAAW;EACjBI,KAAK,EAAEjB,EAAE,CAAE,MAAO,CAAC;EACnBkB,SAAS,EAAEX,QAAQ;EACnBY,IAAI,EAAEhB;AACP,CAAC,EACD;EACCa,IAAI,EAAEF,WAAW;EACjBG,KAAK,EAAEjB,EAAE,CAAE,MAAO,CAAC;EACnBkB,SAAS,EAAEV,QAAQ;EACnBW,IAAI,EAAElB,KAAK,CAAC,CAAC,GAAGI,oBAAoB,GAAGD;AACxC,CAAC,CACD"}
1
+ {"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","ENUMERATION_TYPE","OPERATOR_IN","OPERATOR_NOT_IN","OPERATORS","key","label","SORTING_DIRECTIONS","asc","desc","LAYOUT_TABLE","LAYOUT_GRID","LAYOUT_LIST","VIEW_LAYOUTS","type","component","icon"],"sources":["@wordpress/dataviews/src/constants.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './view-table';\nimport ViewGrid from './view-grid';\nimport ViewList from './view-list';\n\n// Field types.\nexport const ENUMERATION_TYPE = 'enumeration';\n\n// Filter operators.\nexport const OPERATOR_IN = 'in';\nexport const OPERATOR_NOT_IN = 'notIn';\nexport const OPERATORS = {\n\t[ OPERATOR_IN ]: {\n\t\tkey: 'in-filter',\n\t\tlabel: __( 'Is' ),\n\t},\n\t[ OPERATOR_NOT_IN ]: {\n\t\tkey: 'not-in-filter',\n\t\tlabel: __( 'Is not' ),\n\t},\n};\n\n// Sorting\nexport const SORTING_DIRECTIONS = {\n\tasc: { label: __( 'Sort ascending' ) },\n\tdesc: { label: __( 'Sort descending' ) },\n};\n\n// View layouts.\nexport const LAYOUT_TABLE = 'table';\nexport const LAYOUT_GRID = 'grid';\nexport const LAYOUT_LIST = 'list';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,KAAK,QAAQ,iBAAiB;AAC3C,SACCC,UAAU,EACVC,QAAQ,EACRC,iBAAiB,EACjBC,oBAAoB,QACd,kBAAkB;;AAEzB;AACA;AACA;AACA,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,QAAQ,MAAM,aAAa;AAClC,OAAOC,QAAQ,MAAM,aAAa;;AAElC;AACA,OAAO,MAAMC,gBAAgB,GAAG,aAAa;;AAE7C;AACA,OAAO,MAAMC,WAAW,GAAG,IAAI;AAC/B,OAAO,MAAMC,eAAe,GAAG,OAAO;AACtC,OAAO,MAAMC,SAAS,GAAG;EACxB,CAAEF,WAAW,GAAI;IAChBG,GAAG,EAAE,WAAW;IAChBC,KAAK,EAAEd,EAAE,CAAE,IAAK;EACjB,CAAC;EACD,CAAEW,eAAe,GAAI;IACpBE,GAAG,EAAE,eAAe;IACpBC,KAAK,EAAEd,EAAE,CAAE,QAAS;EACrB;AACD,CAAC;;AAED;AACA,OAAO,MAAMe,kBAAkB,GAAG;EACjCC,GAAG,EAAE;IAAEF,KAAK,EAAEd,EAAE,CAAE,gBAAiB;EAAE,CAAC;EACtCiB,IAAI,EAAE;IAAEH,KAAK,EAAEd,EAAE,CAAE,iBAAkB;EAAE;AACxC,CAAC;;AAED;AACA,OAAO,MAAMkB,YAAY,GAAG,OAAO;AACnC,OAAO,MAAMC,WAAW,GAAG,MAAM;AACjC,OAAO,MAAMC,WAAW,GAAG,MAAM;AAEjC,OAAO,MAAMC,YAAY,GAAG,CAC3B;EACCC,IAAI,EAAEJ,YAAY;EAClBJ,KAAK,EAAEd,EAAE,CAAE,OAAQ,CAAC;EACpBuB,SAAS,EAAEjB,SAAS;EACpBkB,IAAI,EAAEtB;AACP,CAAC,EACD;EACCoB,IAAI,EAAEH,WAAW;EACjBL,KAAK,EAAEd,EAAE,CAAE,MAAO,CAAC;EACnBuB,SAAS,EAAEhB,QAAQ;EACnBiB,IAAI,EAAErB;AACP,CAAC,EACD;EACCmB,IAAI,EAAEF,WAAW;EACjBN,KAAK,EAAEd,EAAE,CAAE,MAAO,CAAC;EACnBuB,SAAS,EAAEf,QAAQ;EACnBgB,IAAI,EAAEvB,KAAK,CAAC,CAAC,GAAGI,oBAAoB,GAAGD;AACxC,CAAC,CACD"}
@@ -3,7 +3,7 @@ import { createElement } from "react";
3
3
  * WordPress dependencies
4
4
  */
5
5
  import { __experimentalVStack as VStack, __experimentalHStack as HStack } from '@wordpress/components';
6
- import { useMemo, useState } from '@wordpress/element';
6
+ import { useMemo, useState, useCallback } from '@wordpress/element';
7
7
 
8
8
  /**
9
9
  * Internal dependencies
@@ -13,6 +13,8 @@ import ViewActions from './view-actions';
13
13
  import Filters from './filters';
14
14
  import Search from './search';
15
15
  import { VIEW_LAYOUTS } from './constants';
16
+ const defaultGetItemId = item => item.id;
17
+ const defaultOnSelectionChange = () => {};
16
18
  export default function DataViews({
17
19
  view,
18
20
  onChangeView,
@@ -21,18 +23,19 @@ export default function DataViews({
21
23
  searchLabel = undefined,
22
24
  actions,
23
25
  data,
24
- getItemId,
26
+ getItemId = defaultGetItemId,
25
27
  isLoading = false,
26
28
  paginationInfo,
27
29
  supportedLayouts,
28
- onSelectionChange,
29
- deferredRendering
30
+ onSelectionChange = defaultOnSelectionChange,
31
+ onDetailsChange = null,
32
+ deferredRendering = false
30
33
  }) {
31
34
  const [selection, setSelection] = useState([]);
32
- const onSetSelection = items => {
35
+ const onSetSelection = useCallback(items => {
33
36
  setSelection(items.map(item => item.id));
34
37
  onSelectionChange(items);
35
- };
38
+ }, [setSelection, onSelectionChange]);
36
39
  const ViewComponent = VIEW_LAYOUTS.find(v => v.type === view.type).component;
37
40
  const _fields = useMemo(() => {
38
41
  return fields.map(field => ({
@@ -47,7 +50,7 @@ export default function DataViews({
47
50
  justify: "flex-start"
48
51
  }, createElement(HStack, {
49
52
  alignment: "flex-start",
50
- className: "dataviews__filters-view-actions"
53
+ className: "dataviews-filters__view-actions"
51
54
  }, createElement(HStack, {
52
55
  justify: "start",
53
56
  wrap: true
@@ -56,11 +59,11 @@ export default function DataViews({
56
59
  view: view,
57
60
  onChangeView: onChangeView
58
61
  }), createElement(Filters, {
59
- fields: fields,
62
+ fields: _fields,
60
63
  view: view,
61
64
  onChangeView: onChangeView
62
65
  })), createElement(ViewActions, {
63
- fields: fields,
66
+ fields: _fields,
64
67
  view: view,
65
68
  onChangeView: onChangeView,
66
69
  supportedLayouts: supportedLayouts
@@ -68,12 +71,12 @@ export default function DataViews({
68
71
  fields: _fields,
69
72
  view: view,
70
73
  onChangeView: onChangeView,
71
- paginationInfo: paginationInfo,
72
74
  actions: actions,
73
75
  data: data,
74
76
  getItemId: getItemId,
75
77
  isLoading: isLoading,
76
78
  onSelectionChange: onSetSelection,
79
+ onDetailsChange: onDetailsChange,
77
80
  selection: selection,
78
81
  deferredRendering: deferredRendering
79
82
  }), createElement(Pagination, {
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalVStack","VStack","__experimentalHStack","HStack","useMemo","useState","Pagination","ViewActions","Filters","Search","VIEW_LAYOUTS","DataViews","view","onChangeView","fields","search","searchLabel","undefined","actions","data","getItemId","isLoading","paginationInfo","supportedLayouts","onSelectionChange","deferredRendering","selection","setSelection","onSetSelection","items","map","item","id","ViewComponent","find","v","type","component","_fields","field","render","getValue","createElement","className","spacing","justify","alignment","wrap","label"],"sources":["@wordpress/dataviews/src/dataviews.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { useMemo, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Pagination from './pagination';\nimport ViewActions from './view-actions';\nimport Filters from './filters';\nimport Search from './search';\nimport { VIEW_LAYOUTS } from './constants';\n\nexport default function DataViews( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions,\n\tdata,\n\tgetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tsupportedLayouts,\n\tonSelectionChange,\n\tdeferredRendering,\n} ) {\n\tconst [ selection, setSelection ] = useState( [] );\n\n\tconst onSetSelection = ( items ) => {\n\t\tsetSelection( items.map( ( item ) => item.id ) );\n\t\tonSelectionChange( items );\n\t};\n\n\tconst ViewComponent = VIEW_LAYOUTS.find(\n\t\t( v ) => v.type === view.type\n\t).component;\n\tconst _fields = useMemo( () => {\n\t\treturn fields.map( ( field ) => ( {\n\t\t\t...field,\n\t\t\trender: field.render || field.getValue,\n\t\t} ) );\n\t}, [ fields ] );\n\treturn (\n\t\t<div className=\"dataviews-wrapper\">\n\t\t\t<VStack spacing={ 0 } justify=\"flex-start\">\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\tclassName=\"dataviews__filters-view-actions\"\n\t\t\t\t>\n\t\t\t\t\t<HStack justify=\"start\" wrap>\n\t\t\t\t\t\t{ search && (\n\t\t\t\t\t\t\t<Search\n\t\t\t\t\t\t\t\tlabel={ searchLabel }\n\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Filters\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<ViewActions\n\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\tsupportedLayouts={ supportedLayouts }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t<ViewComponent\n\t\t\t\t\tfields={ _fields }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\t\tactions={ actions }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\tisLoading={ isLoading }\n\t\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tdeferredRendering={ deferredRendering }\n\t\t\t\t/>\n\t\t\t\t<Pagination\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\t/>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,oBAAoB,IAAIC,MAAM,EAC9BC,oBAAoB,IAAIC,MAAM,QACxB,uBAAuB;AAC9B,SAASC,OAAO,EAAEC,QAAQ,QAAQ,oBAAoB;;AAEtD;AACA;AACA;AACA,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,OAAO,MAAM,WAAW;AAC/B,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAASC,YAAY,QAAQ,aAAa;AAE1C,eAAe,SAASC,SAASA,CAAE;EAClCC,IAAI;EACJC,YAAY;EACZC,MAAM;EACNC,MAAM,GAAG,IAAI;EACbC,WAAW,GAAGC,SAAS;EACvBC,OAAO;EACPC,IAAI;EACJC,SAAS;EACTC,SAAS,GAAG,KAAK;EACjBC,cAAc;EACdC,gBAAgB;EAChBC,iBAAiB;EACjBC;AACD,CAAC,EAAG;EACH,MAAM,CAAEC,SAAS,EAAEC,YAAY,CAAE,GAAGtB,QAAQ,CAAE,EAAG,CAAC;EAElD,MAAMuB,cAAc,GAAKC,KAAK,IAAM;IACnCF,YAAY,CAAEE,KAAK,CAACC,GAAG,CAAIC,IAAI,IAAMA,IAAI,CAACC,EAAG,CAAE,CAAC;IAChDR,iBAAiB,CAAEK,KAAM,CAAC;EAC3B,CAAC;EAED,MAAMI,aAAa,GAAGvB,YAAY,CAACwB,IAAI,CACpCC,CAAC,IAAMA,CAAC,CAACC,IAAI,KAAKxB,IAAI,CAACwB,IAC1B,CAAC,CAACC,SAAS;EACX,MAAMC,OAAO,GAAGlC,OAAO,CAAE,MAAM;IAC9B,OAAOU,MAAM,CAACgB,GAAG,CAAIS,KAAK,KAAQ;MACjC,GAAGA,KAAK;MACRC,MAAM,EAAED,KAAK,CAACC,MAAM,IAAID,KAAK,CAACE;IAC/B,CAAC,CAAG,CAAC;EACN,CAAC,EAAE,CAAE3B,MAAM,CAAG,CAAC;EACf,OACC4B,aAAA;IAAKC,SAAS,EAAC;EAAmB,GACjCD,aAAA,CAACzC,MAAM;IAAC2C,OAAO,EAAG,CAAG;IAACC,OAAO,EAAC;EAAY,GACzCH,aAAA,CAACvC,MAAM;IACN2C,SAAS,EAAC,YAAY;IACtBH,SAAS,EAAC;EAAiC,GAE3CD,aAAA,CAACvC,MAAM;IAAC0C,OAAO,EAAC,OAAO;IAACE,IAAI;EAAA,GACzBhC,MAAM,IACP2B,aAAA,CAACjC,MAAM;IACNuC,KAAK,EAAGhC,WAAa;IACrBJ,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA;EAAc,CAC7B,CACD,EACD6B,aAAA,CAAClC,OAAO;IACPM,MAAM,EAAGA,MAAQ;IACjBF,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA;EAAc,CAC7B,CACM,CAAC,EACT6B,aAAA,CAACnC,WAAW;IACXO,MAAM,EAAGA,MAAQ;IACjBF,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA,YAAc;IAC7BU,gBAAgB,EAAGA;EAAkB,CACrC,CACM,CAAC,EACTmB,aAAA,CAACT,aAAa;IACbnB,MAAM,EAAGwB,OAAS;IAClB1B,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA,YAAc;IAC7BS,cAAc,EAAGA,cAAgB;IACjCJ,OAAO,EAAGA,OAAS;IACnBC,IAAI,EAAGA,IAAM;IACbC,SAAS,EAAGA,SAAW;IACvBC,SAAS,EAAGA,SAAW;IACvBG,iBAAiB,EAAGI,cAAgB;IACpCF,SAAS,EAAGA,SAAW;IACvBD,iBAAiB,EAAGA;EAAmB,CACvC,CAAC,EACFiB,aAAA,CAACpC,UAAU;IACVM,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA,YAAc;IAC7BS,cAAc,EAAGA;EAAgB,CACjC,CACM,CACJ,CAAC;AAER"}
1
+ {"version":3,"names":["__experimentalVStack","VStack","__experimentalHStack","HStack","useMemo","useState","useCallback","Pagination","ViewActions","Filters","Search","VIEW_LAYOUTS","defaultGetItemId","item","id","defaultOnSelectionChange","DataViews","view","onChangeView","fields","search","searchLabel","undefined","actions","data","getItemId","isLoading","paginationInfo","supportedLayouts","onSelectionChange","onDetailsChange","deferredRendering","selection","setSelection","onSetSelection","items","map","ViewComponent","find","v","type","component","_fields","field","render","getValue","createElement","className","spacing","justify","alignment","wrap","label"],"sources":["@wordpress/dataviews/src/dataviews.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { useMemo, useState, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Pagination from './pagination';\nimport ViewActions from './view-actions';\nimport Filters from './filters';\nimport Search from './search';\nimport { VIEW_LAYOUTS } from './constants';\n\nconst defaultGetItemId = ( item ) => item.id;\nconst defaultOnSelectionChange = () => {};\n\nexport default function DataViews( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions,\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tsupportedLayouts,\n\tonSelectionChange = defaultOnSelectionChange,\n\tonDetailsChange = null,\n\tdeferredRendering = false,\n} ) {\n\tconst [ selection, setSelection ] = useState( [] );\n\n\tconst onSetSelection = useCallback(\n\t\t( items ) => {\n\t\t\tsetSelection( items.map( ( item ) => item.id ) );\n\t\t\tonSelectionChange( items );\n\t\t},\n\t\t[ setSelection, onSelectionChange ]\n\t);\n\n\tconst ViewComponent = VIEW_LAYOUTS.find(\n\t\t( v ) => v.type === view.type\n\t).component;\n\tconst _fields = useMemo( () => {\n\t\treturn fields.map( ( field ) => ( {\n\t\t\t...field,\n\t\t\trender: field.render || field.getValue,\n\t\t} ) );\n\t}, [ fields ] );\n\treturn (\n\t\t<div className=\"dataviews-wrapper\">\n\t\t\t<VStack spacing={ 0 } justify=\"flex-start\">\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\tclassName=\"dataviews-filters__view-actions\"\n\t\t\t\t>\n\t\t\t\t\t<HStack justify=\"start\" wrap>\n\t\t\t\t\t\t{ search && (\n\t\t\t\t\t\t\t<Search\n\t\t\t\t\t\t\t\tlabel={ searchLabel }\n\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Filters\n\t\t\t\t\t\t\tfields={ _fields }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<ViewActions\n\t\t\t\t\t\tfields={ _fields }\n\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\tsupportedLayouts={ supportedLayouts }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t<ViewComponent\n\t\t\t\t\tfields={ _fields }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tactions={ actions }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\tisLoading={ isLoading }\n\t\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\t\tonDetailsChange={ onDetailsChange }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tdeferredRendering={ deferredRendering }\n\t\t\t\t/>\n\t\t\t\t<Pagination\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\t/>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { createElement } from "react";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { Icon, privateApis as componentsPrivateApis } from '@wordpress/components';
6
+ import { forwardRef } from '@wordpress/element';
7
+ import { SVG, Circle } from '@wordpress/primitives';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { unlock } from './lock-unlock';
13
+ const {
14
+ DropdownMenuItemV2: DropdownMenuItem
15
+ } = unlock(componentsPrivateApis);
16
+ const radioCheck = createElement(SVG, {
17
+ xmlns: "http://www.w3.org/2000/svg",
18
+ viewBox: "0 0 24 24"
19
+ }, createElement(Circle, {
20
+ cx: 12,
21
+ cy: 12,
22
+ r: 3
23
+ }));
24
+
25
+ /**
26
+ * A custom implementation of a radio menu item using the standard menu item
27
+ * component, which allows deselecting selected values.
28
+ */
29
+ export const DropdownMenuRadioItemCustom = forwardRef(function DropdownMenuRadioItemCustom({
30
+ checked,
31
+ name,
32
+ value,
33
+ hideOnClick,
34
+ onChange,
35
+ onClick,
36
+ ...props
37
+ }, ref) {
38
+ const onClickHandler = e => {
39
+ onClick?.(e);
40
+ onChange?.({
41
+ ...e,
42
+ target: {
43
+ ...e.target,
44
+ value
45
+ }
46
+ });
47
+ };
48
+ return createElement(DropdownMenuItem, {
49
+ ref: ref,
50
+ role: "menuitemradio",
51
+ name: name,
52
+ "aria-checked": checked,
53
+ hideOnClick: !!hideOnClick,
54
+ prefix: checked ? createElement(Icon, {
55
+ icon: radioCheck
56
+ }) : createElement("span", {
57
+ className: "dataviews-filters__custom-menu-radio-item-prefix",
58
+ "aria-hidden": "true"
59
+ }),
60
+ onClick: onClickHandler,
61
+ ...props
62
+ });
63
+ });
64
+ //# sourceMappingURL=dropdown-menu-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Icon","privateApis","componentsPrivateApis","forwardRef","SVG","Circle","unlock","DropdownMenuItemV2","DropdownMenuItem","radioCheck","createElement","xmlns","viewBox","cx","cy","r","DropdownMenuRadioItemCustom","checked","name","value","hideOnClick","onChange","onClick","props","ref","onClickHandler","e","target","role","prefix","icon","className"],"sources":["@wordpress/dataviews/src/dropdown-menu-helper.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { forwardRef } from '@wordpress/element';\nimport { SVG, Circle } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst { DropdownMenuItemV2: DropdownMenuItem } = unlock(\n\tcomponentsPrivateApis\n);\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\n/**\n * A custom implementation of a radio menu item using the standard menu item\n * component, which allows deselecting selected values.\n */\nexport const DropdownMenuRadioItemCustom = forwardRef(\n\tfunction DropdownMenuRadioItemCustom(\n\t\t{ checked, name, value, hideOnClick, onChange, onClick, ...props },\n\t\tref\n\t) {\n\t\tconst onClickHandler = ( e ) => {\n\t\t\tonClick?.( e );\n\t\t\tonChange?.( { ...e, target: { ...e.target, value } } );\n\t\t};\n\t\treturn (\n\t\t\t<DropdownMenuItem\n\t\t\t\tref={ ref }\n\t\t\t\trole=\"menuitemradio\"\n\t\t\t\tname={ name }\n\t\t\t\taria-checked={ checked }\n\t\t\t\thideOnClick={ !! hideOnClick }\n\t\t\t\tprefix={\n\t\t\t\t\tchecked ? (\n\t\t\t\t\t\t<Icon icon={ radioCheck } />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"dataviews-filters__custom-menu-radio-item-prefix\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t></span>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tonClick={ onClickHandler }\n\t\t\t\t{ ...props }\n\t\t\t/>\n\t\t);\n\t}\n);\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,IAAI,EACJC,WAAW,IAAIC,qBAAqB,QAC9B,uBAAuB;AAC9B,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,GAAG,EAAEC,MAAM,QAAQ,uBAAuB;;AAEnD;AACA;AACA;AACA,SAASC,MAAM,QAAQ,eAAe;AAEtC,MAAM;EAAEC,kBAAkB,EAAEC;AAAiB,CAAC,GAAGF,MAAM,CACtDJ,qBACD,CAAC;AAED,MAAMO,UAAU,GACfC,aAAA,CAACN,GAAG;EAACO,KAAK,EAAC,4BAA4B;EAACC,OAAO,EAAC;AAAW,GAC1DF,aAAA,CAACL,MAAM;EAACQ,EAAE,EAAG,EAAI;EAACC,EAAE,EAAG,EAAI;EAACC,CAAC,EAAG;AAAG,CAAS,CACxC,CACL;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMC,2BAA2B,GAAGb,UAAU,CACpD,SAASa,2BAA2BA,CACnC;EAAEC,OAAO;EAAEC,IAAI;EAAEC,KAAK;EAAEC,WAAW;EAAEC,QAAQ;EAAEC,OAAO;EAAE,GAAGC;AAAM,CAAC,EAClEC,GAAG,EACF;EACD,MAAMC,cAAc,GAAKC,CAAC,IAAM;IAC/BJ,OAAO,GAAII,CAAE,CAAC;IACdL,QAAQ,GAAI;MAAE,GAAGK,CAAC;MAAEC,MAAM,EAAE;QAAE,GAAGD,CAAC,CAACC,MAAM;QAAER;MAAM;IAAE,CAAE,CAAC;EACvD,CAAC;EACD,OACCT,aAAA,CAACF,gBAAgB;IAChBgB,GAAG,EAAGA,GAAK;IACXI,IAAI,EAAC,eAAe;IACpBV,IAAI,EAAGA,IAAM;IACb,gBAAeD,OAAS;IACxBG,WAAW,EAAG,CAAC,CAAEA,WAAa;IAC9BS,MAAM,EACLZ,OAAO,GACNP,aAAA,CAACV,IAAI;MAAC8B,IAAI,EAAGrB;IAAY,CAAE,CAAC,GAE5BC,aAAA;MACCqB,SAAS,EAAC,kDAAkD;MAC5D,eAAY;IAAM,CACZ,CAER;IACDT,OAAO,EAAGG,cAAgB;IAAA,GACrBF;EAAK,CACV,CAAC;AAEJ,CACD,CAAC"}