@wordpress/dataviews 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +33 -30
- package/build/add-filter.js +30 -22
- package/build/add-filter.js.map +1 -1
- package/build/bulk-actions-toolbar.js +74 -69
- package/build/bulk-actions-toolbar.js.map +1 -1
- package/build/bulk-actions.js +69 -56
- package/build/bulk-actions.js.map +1 -1
- package/build/constants.js +17 -10
- package/build/constants.js.map +1 -1
- package/build/dataviews.js +63 -56
- package/build/dataviews.js.map +1 -1
- package/build/filter-summary.js +105 -95
- package/build/filter-summary.js.map +1 -1
- package/build/filters.js +18 -17
- package/build/filters.js.map +1 -1
- package/build/index.js.map +1 -1
- package/build/item-actions.js +78 -65
- package/build/item-actions.js.map +1 -1
- package/build/layouts.js.map +1 -1
- package/build/pagination.js +60 -57
- package/build/pagination.js.map +1 -1
- package/build/reset-filters.js +9 -4
- package/build/reset-filters.js.map +1 -1
- package/build/search-widget.js +108 -89
- package/build/search-widget.js.map +1 -1
- package/build/search.js +13 -6
- package/build/search.js.map +1 -1
- package/build/single-selection-checkbox.js +2 -2
- package/build/single-selection-checkbox.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build/utils.js +3 -15
- package/build/utils.js.map +1 -1
- package/build/view-actions.js +168 -120
- package/build/view-actions.js.map +1 -1
- package/build/view-grid.js +113 -99
- package/build/view-grid.js.map +1 -1
- package/build/view-list.js +153 -132
- package/build/view-list.js.map +1 -1
- package/build/view-table.js +220 -192
- package/build/view-table.js.map +1 -1
- package/build-module/add-filter.js +30 -22
- package/build-module/add-filter.js.map +1 -1
- package/build-module/bulk-actions-toolbar.js +76 -69
- package/build-module/bulk-actions-toolbar.js.map +1 -1
- package/build-module/bulk-actions.js +71 -56
- package/build-module/bulk-actions.js.map +1 -1
- package/build-module/constants.js +16 -9
- package/build-module/constants.js.map +1 -1
- package/build-module/dataviews.js +64 -56
- package/build-module/dataviews.js.map +1 -1
- package/build-module/filter-summary.js +106 -96
- package/build-module/filter-summary.js.map +1 -1
- package/build-module/filters.js +18 -17
- package/build-module/filters.js.map +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/item-actions.js +80 -65
- package/build-module/item-actions.js.map +1 -1
- package/build-module/layouts.js.map +1 -1
- package/build-module/pagination.js +61 -58
- package/build-module/pagination.js.map +1 -1
- package/build-module/reset-filters.js +9 -4
- package/build-module/reset-filters.js.map +1 -1
- package/build-module/search-widget.js +109 -89
- package/build-module/search-widget.js.map +1 -1
- package/build-module/search.js +13 -6
- package/build-module/search.js.map +1 -1
- package/build-module/single-selection-checkbox.js +2 -3
- package/build-module/single-selection-checkbox.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-module/utils.js +2 -13
- package/build-module/utils.js.map +1 -1
- package/build-module/view-actions.js +170 -121
- package/build-module/view-actions.js.map +1 -1
- package/build-module/view-grid.js +115 -99
- package/build-module/view-grid.js.map +1 -1
- package/build-module/view-list.js +154 -132
- package/build-module/view-list.js.map +1 -1
- package/build-module/view-table.js +223 -194
- package/build-module/view-table.js.map +1 -1
- package/build-style/style-rtl.css +109 -20
- package/build-style/style.css +109 -20
- package/build-types/add-filter.d.ts +9 -6
- package/build-types/add-filter.d.ts.map +1 -1
- package/build-types/bulk-actions-toolbar.d.ts +11 -7
- package/build-types/bulk-actions-toolbar.d.ts.map +1 -1
- package/build-types/bulk-actions.d.ts.map +1 -1
- package/build-types/constants.d.ts +19 -32
- package/build-types/constants.d.ts.map +1 -1
- package/build-types/dataviews.d.ts +21 -14
- package/build-types/dataviews.d.ts.map +1 -1
- package/build-types/filter-summary.d.ts +13 -5
- package/build-types/filter-summary.d.ts.map +1 -1
- package/build-types/filters.d.ts +11 -1
- package/build-types/filters.d.ts.map +1 -1
- package/build-types/index.d.ts +3 -3
- package/build-types/index.d.ts.map +1 -1
- package/build-types/item-actions.d.ts +5 -7
- package/build-types/item-actions.d.ts.map +1 -1
- package/build-types/layouts.d.ts +8 -4
- package/build-types/layouts.d.ts.map +1 -1
- package/build-types/reset-filters.d.ts +12 -5
- package/build-types/reset-filters.d.ts.map +1 -1
- package/build-types/search-widget.d.ts +9 -1
- package/build-types/search-widget.d.ts.map +1 -1
- package/build-types/search.d.ts +11 -1
- package/build-types/search.d.ts.map +1 -1
- package/build-types/types.d.ts +78 -10
- package/build-types/types.d.ts.map +1 -1
- package/build-types/utils.d.ts +2 -1
- package/build-types/utils.d.ts.map +1 -1
- package/build-types/view-actions.d.ts +10 -1
- package/build-types/view-actions.d.ts.map +1 -1
- package/build-types/view-grid.d.ts +1 -12
- package/build-types/view-grid.d.ts.map +1 -1
- package/build-types/view-list.d.ts +2 -14
- package/build-types/view-list.d.ts.map +1 -1
- package/build-types/view-table.d.ts +3 -12
- package/build-types/view-table.d.ts.map +1 -1
- package/package.json +11 -12
- package/src/{add-filter.js → add-filter.tsx} +17 -1
- package/src/{bulk-actions-toolbar.js → bulk-actions-toolbar.tsx} +68 -40
- package/src/bulk-actions.tsx +5 -1
- package/src/constants.ts +12 -5
- package/src/{dataviews.js → dataviews.tsx} +41 -12
- package/src/{filter-summary.js → filter-summary.tsx} +35 -6
- package/src/{filters.js → filters.tsx} +18 -6
- package/src/item-actions.tsx +20 -15
- package/src/pagination.tsx +1 -1
- package/src/{reset-filters.js → reset-filters.tsx} +17 -2
- package/src/{search-widget.js → search-widget.tsx} +27 -7
- package/src/{search.js → search.tsx} +22 -5
- package/src/style.scss +97 -23
- package/src/types.ts +105 -10
- package/src/{utils.js → utils.ts} +5 -13
- package/src/{view-actions.js → view-actions.tsx} +105 -49
- package/src/view-grid.tsx +4 -20
- package/src/view-list.tsx +12 -23
- package/src/{view-table.js → view-table.tsx} +91 -32
- package/tsconfig.json +0 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/build/dropdown-menu-helper.js +0 -71
- package/build/dropdown-menu-helper.js.map +0 -1
- package/build-module/dropdown-menu-helper.js +0 -64
- package/build-module/dropdown-menu-helper.js.map +0 -1
- package/build-types/dropdown-menu-helper.d.ts +0 -6
- package/build-types/dropdown-menu-helper.d.ts.map +0 -1
- package/src/dropdown-menu-helper.js +0 -61
- /package/src/{index.js → index.ts} +0 -0
- /package/src/{layouts.js → layouts.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","useInstanceId","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","privateApis","componentsPrivateApis","Spinner","VisuallyHidden","useCallback","useEffect","useMemo","useRef","useState","__","moreVertical","unlock","ActionsDropdownMenuGroup","ActionModal","useCompositeStoreV2","useCompositeStore","CompositeV2","Composite","CompositeItemV2","CompositeItem","CompositeRowV2","CompositeRow","DropdownMenuV2","DropdownMenu","ListItem","actions","id","isSelected","item","mediaField","onSelect","primaryField","store","visibleFields","itemRef","labelId","descriptionId","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","current","scrollIntoView","behavior","block","inline","primaryAction","eligibleActions","_eligibleActions","filter","action","isEligible","_primaryActions","isPrimary","icon","isModalOpen","setIsModalOpen","createElement","ref","render","role","className","onMouseEnter","onMouseLeave","alignment","onClick","spacing","justify","map","field","key","as","header","length","style","flexShrink","width","label","isDestructive","size","items","closeModal","callback","trigger","disabled","onKeyDown","event","preventDefault","move","down","up","placement","ViewList","props","data","fields","getItemId","isLoading","onSelectionChange","selection","view","baseId","selectedItem","findLast","includes","find","layout","hiddenFields","getItemDomId","undefined","defaultActiveId","isActiveIdInList","state","some","activeId","hasData"],"sources":["@wordpress/dataviews/src/view-list.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n// Import CompositeStore type, which is not exported from @wordpress/components.\n// eslint-disable-next-line no-restricted-imports\nimport type { CompositeStore } from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport type {\n\tAction,\n\tAnyItem,\n\tNormalizedField,\n\tViewList as ViewListType,\n} from './types';\n\nimport { ActionsDropdownMenuGroup, ActionModal } from './item-actions';\n\ninterface ListViewProps< Item extends AnyItem > {\n\tactions: Action< Item >[];\n\tdata: Item[];\n\tfields: NormalizedField< Item >[];\n\tgetItemId: ( item: Item ) => string;\n\tid: string;\n\tisLoading: boolean;\n\tonSelectionChange: ( selection: Item[] ) => void;\n\tselection: string[];\n\tview: ViewListType;\n}\n\ninterface ListViewItemProps< Item extends AnyItem > {\n\tactions: Action< Item >[];\n\tid?: string;\n\tisSelected: boolean;\n\titem: Item;\n\tmediaField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\tprimaryField?: NormalizedField< Item >;\n\tstore: CompositeStore;\n\tvisibleFields: NormalizedField< Item >[];\n}\n\nconst {\n\tuseCompositeStoreV2: useCompositeStore,\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tCompositeRowV2: CompositeRow,\n\tDropdownMenuV2: DropdownMenu,\n} = unlock( componentsPrivateApis );\n\nfunction ListItem< Item extends AnyItem >( {\n\tactions,\n\tid,\n\tisSelected,\n\titem,\n\tmediaField,\n\tonSelect,\n\tprimaryField,\n\tstore,\n\tvisibleFields,\n}: ListViewItemProps< Item > ) {\n\tconst itemRef = useRef< HTMLElement >( null );\n\tconst labelId = `${ id }-label`;\n\tconst descriptionId = `${ id }-description`;\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions?.[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\treturn (\n\t\t<CompositeRow\n\t\t\tref={ itemRef }\n\t\t\trender={ <li /> }\n\t\t\trole=\"row\"\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t>\n\t\t\t<HStack\n\t\t\t\tclassName=\"dataviews-view-list__item-wrapper\"\n\t\t\t\talignment=\"top\"\n\t\t\t>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\trender={ <div /> }\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t\t\t\t\t{ mediaField?.render( { item } ) || (\n\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-placeholder\"></div>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__primary-field\"\n\t\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ primaryField?.render( { item } ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.render( { item } ) }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</CompositeItem>\n\t\t\t\t</div>\n\t\t\t\t{ actions?.length > 0 && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item-actions\"\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tflexShrink: '0',\n\t\t\t\t\t\t\twidth: 'auto',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ primaryAction && 'RenderModal' in primaryAction && (\n\t\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryAction.label }\n\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( true )\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\t\t{ isModalOpen && (\n\t\t\t\t\t\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\t\t\t\t\tcloseModal={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false )\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</CompositeItem>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ primaryAction &&\n\t\t\t\t\t\t\t! ( 'RenderModal' in primaryAction ) && (\n\t\t\t\t\t\t\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryAction.label }\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\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\tsize=\"compact\"\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\tprimaryAction.callback( [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem,\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/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={ ( event: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey: string;\n\t\t\t\t\t\t\t\t\t\t\t\t\tpreventDefault: () => void;\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\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.key ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'ArrowDown'\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// Prevent the default behaviour (open dropdown menu) and go down.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.down()\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\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.key === 'ArrowUp'\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// Prevent the default behavior (open dropdown menu) and go up.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.up()\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/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tplacement=\"bottom-end\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ActionsDropdownMenuGroup\n\t\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</CompositeRow>\n\t);\n}\n\nexport default function ViewList< Item extends AnyItem >(\n\tprops: ListViewProps< Item >\n) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonSelectionChange,\n\t\tselection,\n\t\tview,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( item.id )\n\t);\n\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.primaryField, view.layout.mediaField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\n\tconst onSelect = useCallback(\n\t\t( item: Item ) => onSelectionChange( [ item ] ),\n\t\t[ onSelectionChange ]\n\t);\n\n\tconst getItemDomId = useCallback(\n\t\t( item?: Item ) =>\n\t\t\titem ? `${ baseId }-${ getItemId( item ) }` : undefined,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst store = useCompositeStore( {\n\t\tdefaultActiveId: getItemDomId( selectedItem ),\n\t} );\n\n\t// Manage focused item, when the active one is removed from the list.\n\tconst isActiveIdInList = store.useState(\n\t\t( state: { items: any[]; activeId: any } ) =>\n\t\t\tstate.items.some(\n\t\t\t\t( item: { id: any } ) => item.id === state.activeId\n\t\t\t)\n\t);\n\tuseEffect( () => {\n\t\tif ( ! isActiveIdInList ) {\n\t\t\t// Prefer going down, except if there is no item below (last item), then go up (last item in list).\n\t\t\tif ( store.down() ) {\n\t\t\t\tstore.move( store.down() );\n\t\t\t} else if ( store.up() ) {\n\t\t\t\tstore.move( store.up() );\n\t\t\t}\n\t\t}\n\t}, [ isActiveIdInList ] );\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Composite\n\t\t\tid={ baseId }\n\t\t\trender={ <ul /> }\n\t\t\tclassName=\"dataviews-view-list\"\n\t\t\trole=\"grid\"\n\t\t\tstore={ store }\n\t\t>\n\t\t\t{ data.map( ( item ) => {\n\t\t\t\tconst id = getItemDomId( item );\n\t\t\t\treturn (\n\t\t\t\t\t<ListItem\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Composite>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;AACvB;AACA;;AAGA;AACA;AACA;AACA,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SACCC,oBAAoB,IAAIC,MAAM,EAC9BC,oBAAoB,IAAIC,MAAM,EAC9BC,MAAM,EACNC,WAAW,IAAIC,qBAAqB,EACpCC,OAAO,EACPC,cAAc,QACR,uBAAuB;AAC9B,SACCC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACF,oBAAoB;AAC3B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,QAAQ,kBAAkB;;AAE/C;AACA;AACA;AACA,SAASC,MAAM,QAAQ,eAAe;AAQtC,SAASC,wBAAwB,EAAEC,WAAW,QAAQ,gBAAgB;AA0BtE,MAAM;EACLC,mBAAmB,EAAEC,iBAAiB;EACtCC,WAAW,EAAEC,SAAS;EACtBC,eAAe,EAAEC,aAAa;EAC9BC,cAAc,EAAEC,YAAY;EAC5BC,cAAc,EAAEC;AACjB,CAAC,GAAGZ,MAAM,CAAEV,qBAAsB,CAAC;AAEnC,SAASuB,QAAQA,CAA0B;EAC1CC,OAAO;EACPC,EAAE;EACFC,UAAU;EACVC,IAAI;EACJC,UAAU;EACVC,QAAQ;EACRC,YAAY;EACZC,KAAK;EACLC;AAC0B,CAAC,EAAG;EAC9B,MAAMC,OAAO,GAAG3B,MAAM,CAAiB,IAAK,CAAC;EAC7C,MAAM4B,OAAO,GAAI,GAAGT,EAAI,QAAO;EAC/B,MAAMU,aAAa,GAAI,GAAGV,EAAI,cAAa;EAE3C,MAAM,CAAEW,SAAS,EAAEC,YAAY,CAAE,GAAG9B,QAAQ,CAAE,KAAM,CAAC;EACrD,MAAM+B,gBAAgB,GAAGA,CAAA,KAAM;IAC9BD,YAAY,CAAE,IAAK,CAAC;EACrB,CAAC;EACD,MAAME,gBAAgB,GAAGA,CAAA,KAAM;IAC9BF,YAAY,CAAE,KAAM,CAAC;EACtB,CAAC;EAEDjC,SAAS,CAAE,MAAM;IAChB,IAAKsB,UAAU,EAAG;MACjBO,OAAO,CAACO,OAAO,EAAEC,cAAc,CAAE;QAChCC,QAAQ,EAAE,MAAM;QAChBC,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACT,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,CAAElB,UAAU,CAAG,CAAC;EAEnB,MAAM;IAAEmB,aAAa;IAAEC;EAAgB,CAAC,GAAGzC,OAAO,CAAE,MAAM;IACzD;IACA;IACA,MAAM0C,gBAAgB,GAAGvB,OAAO,CAACwB,MAAM,CACpCC,MAAM,IAAM,CAAEA,MAAM,CAACC,UAAU,IAAID,MAAM,CAACC,UAAU,CAAEvB,IAAK,CAC9D,CAAC;IACD,MAAMwB,eAAe,GAAGJ,gBAAgB,CAACC,MAAM,CAC5CC,MAAM,IAAMA,MAAM,CAACG,SAAS,IAAI,CAAC,CAAEH,MAAM,CAACI,IAC7C,CAAC;IACD,OAAO;MACNR,aAAa,EAAEM,eAAe,GAAI,CAAC,CAAE;MACrCL,eAAe,EAAEC;IAClB,CAAC;EACF,CAAC,EAAE,CAAEvB,OAAO,EAAEG,IAAI,CAAG,CAAC;EAEtB,MAAM,CAAE2B,WAAW,EAAEC,cAAc,CAAE,GAAGhD,QAAQ,CAAE,KAAM,CAAC;EAEzD,OACCiD,aAAA,CAACpC,YAAY;IACZqC,GAAG,EAAGxB,OAAS;IACfyB,MAAM,EAAGF,aAAA,WAAK,CAAG;IACjBG,IAAI,EAAC,KAAK;IACVC,SAAS,EAAGpE,IAAI,CAAE;MACjB,aAAa,EAAEkC,UAAU;MACzB,YAAY,EAAEU;IACf,CAAE,CAAG;IACLyB,YAAY,EAAGvB,gBAAkB;IACjCwB,YAAY,EAAGvB;EAAkB,GAEjCiB,aAAA,CAAC7D,MAAM;IACNiE,SAAS,EAAC,mCAAmC;IAC7CG,SAAS,EAAC;EAAK,GAEfP,aAAA;IAAKG,IAAI,EAAC;EAAU,GACnBH,aAAA,CAACtC,aAAa;IACba,KAAK,EAAGA,KAAO;IACf2B,MAAM,EAAGF,aAAA,YAAM,CAAG;IAClBG,IAAI,EAAC,QAAQ;IACblC,EAAE,EAAGA,EAAI;IACT,gBAAeC,UAAY;IAC3B,mBAAkBQ,OAAS;IAC3B,oBAAmBC,aAAe;IAClCyB,SAAS,EAAC,2BAA2B;IACrCI,OAAO,EAAGA,CAAA,KAAMnC,QAAQ,CAAEF,IAAK;EAAG,GAElC6B,aAAA,CAAC7D,MAAM;IACNsE,OAAO,EAAG,CAAG;IACbC,OAAO,EAAC,OAAO;IACfH,SAAS,EAAC;EAAY,GAEtBP,aAAA;IAAKI,SAAS,EAAC;EAAoC,GAChDhC,UAAU,EAAE8B,MAAM,CAAE;IAAE/B;EAAK,CAAE,CAAC,IAC/B6B,aAAA;IAAKI,SAAS,EAAC;EAAwC,CAAM,CAE1D,CAAC,EACNJ,aAAA,CAAC3D,MAAM;IAACoE,OAAO,EAAG;EAAG,GACpBT,aAAA;IACCI,SAAS,EAAC,oCAAoC;IAC9CnC,EAAE,EAAGS;EAAS,GAEZJ,YAAY,EAAE4B,MAAM,CAAE;IAAE/B;EAAK,CAAE,CAC5B,CAAC,EACP6B,aAAA;IACCI,SAAS,EAAC,6BAA6B;IACvCnC,EAAE,EAAGU;EAAe,GAElBH,aAAa,CAACmC,GAAG,CAAIC,KAAK,IAC3BZ,aAAA;IACCa,GAAG,EAAGD,KAAK,CAAC3C,EAAI;IAChBmC,SAAS,EAAC;EAA4B,GAEtCJ,aAAA,CAACtD,cAAc;IACdoE,EAAE,EAAC,MAAM;IACTV,SAAS,EAAC;EAAkC,GAE1CQ,KAAK,CAACG,MACO,CAAC,EACjBf,aAAA;IAAMI,SAAS,EAAC;EAAkC,GAC/CQ,KAAK,CAACV,MAAM,CAAE;IAAE/B;EAAK,CAAE,CACpB,CACF,CACJ,CACE,CACE,CACD,CACM,CACX,CAAC,EACJH,OAAO,EAAEgD,MAAM,GAAG,CAAC,IACpBhB,aAAA,CAAC7D,MAAM;IACNsE,OAAO,EAAG,CAAG;IACbC,OAAO,EAAC,UAAU;IAClBN,SAAS,EAAC,mCAAmC;IAC7Ca,KAAK,EAAG;MACPC,UAAU,EAAE,GAAG;MACfC,KAAK,EAAE;IACR;EAAG,GAED9B,aAAa,IAAI,aAAa,IAAIA,aAAa,IAChDW,aAAA;IAAKG,IAAI,EAAC;EAAU,GACnBH,aAAA,CAACtC,aAAa;IACba,KAAK,EAAGA,KAAO;IACf2B,MAAM,EACLF,aAAA,CAAC1D,MAAM;MACN8E,KAAK,EAAG/B,aAAa,CAAC+B,KAAO;MAC7BvB,IAAI,EAAGR,aAAa,CAACQ,IAAM;MAC3BwB,aAAa,EACZhC,aAAa,CAACgC,aACd;MACDC,IAAI,EAAC,SAAS;MACdd,OAAO,EAAGA,CAAA,KACTT,cAAc,CAAE,IAAK;IACrB,CACD;EACD,GAECD,WAAW,IACZE,aAAA,CAAC5C,WAAW;IACXqC,MAAM,EAAGJ,aAAe;IACxBkC,KAAK,EAAG,CAAEpD,IAAI,CAAI;IAClBqD,UAAU,EAAGA,CAAA,KACZzB,cAAc,CAAE,KAAM;EACtB,CACD,CAEY,CACX,CACL,EACCV,aAAa,IACd,EAAI,aAAa,IAAIA,aAAa,CAAE,IACnCW,aAAA;IAAKG,IAAI,EAAC,UAAU;IAACU,GAAG,EAAGxB,aAAa,CAACpB;EAAI,GAC5C+B,aAAA,CAACtC,aAAa;IACba,KAAK,EAAGA,KAAO;IACf2B,MAAM,EACLF,aAAA,CAAC1D,MAAM;MACN8E,KAAK,EAAG/B,aAAa,CAAC+B,KAAO;MAC7BvB,IAAI,EAAGR,aAAa,CAACQ,IAAM;MAC3BwB,aAAa,EACZhC,aAAa,CAACgC,aACd;MACDC,IAAI,EAAC,SAAS;MACdd,OAAO,EAAGA,CAAA,KACTnB,aAAa,CAACoC,QAAQ,CAAE,CACvBtD,IAAI,CACH;IACF,CACD;EACD,CACD,CACG,CACL,EACF6B,aAAA;IAAKG,IAAI,EAAC;EAAU,GACnBH,aAAA,CAAClC,YAAY;IACZ4D,OAAO,EACN1B,aAAA,CAACtC,aAAa;MACba,KAAK,EAAGA,KAAO;MACf2B,MAAM,EACLF,aAAA,CAAC1D,MAAM;QACNgF,IAAI,EAAC,SAAS;QACdzB,IAAI,EAAG5C,YAAc;QACrBmE,KAAK,EAAGpE,EAAE,CAAE,SAAU,CAAG;QACzB2E,QAAQ,EAAG,CAAE3D,OAAO,CAACgD,MAAQ;QAC7BY,SAAS,EAAKC,KAGb,IAAM;UACN,IACCA,KAAK,CAAChB,GAAG,KACT,WAAW,EACV;YACD;YACAgB,KAAK,CAACC,cAAc,CAAC,CAAC;YACtBvD,KAAK,CAACwD,IAAI,CACTxD,KAAK,CAACyD,IAAI,CAAC,CACZ,CAAC;UACF;UACA,IACCH,KAAK,CAAChB,GAAG,KAAK,SAAS,EACtB;YACD;YACAgB,KAAK,CAACC,cAAc,CAAC,CAAC;YACtBvD,KAAK,CAACwD,IAAI,CACTxD,KAAK,CAAC0D,EAAE,CAAC,CACV,CAAC;UACF;QACD;MAAG,CACH;IACD,CACD,CACD;IACDC,SAAS,EAAC;EAAY,GAEtBlC,aAAA,CAAC7C,wBAAwB;IACxBa,OAAO,EAAGsB,eAAiB;IAC3BnB,IAAI,EAAGA;EAAM,CACb,CACY,CACV,CACE,CAEF,CACK,CAAC;AAEjB;AAEA,eAAe,SAASgE,QAAQA,CAC/BC,KAA4B,EAC3B;EACD,MAAM;IACLpE,OAAO;IACPqE,IAAI;IACJC,MAAM;IACNC,SAAS;IACTC,SAAS;IACTC,iBAAiB;IACjBC,SAAS;IACTC;EACD,CAAC,GAAGP,KAAK;EACT,MAAMQ,MAAM,GAAG3G,aAAa,CAAEkG,QAAQ,EAAE,WAAY,CAAC;EACrD,MAAMU,YAAY,GAAGR,IAAI,EAAES,QAAQ,CAAI3E,IAAI,IAC1CuE,SAAS,CAACK,QAAQ,CAAE5E,IAAI,CAACF,EAAG,CAC7B,CAAC;EAED,MAAMG,UAAU,GAAGkE,MAAM,CAACU,IAAI,CAC3BpC,KAAK,IAAMA,KAAK,CAAC3C,EAAE,KAAK0E,IAAI,CAACM,MAAM,CAAC7E,UACvC,CAAC;EACD,MAAME,YAAY,GAAGgE,MAAM,CAACU,IAAI,CAC7BpC,KAAK,IAAMA,KAAK,CAAC3C,EAAE,KAAK0E,IAAI,CAACM,MAAM,CAAC3E,YACvC,CAAC;EACD,MAAME,aAAa,GAAG8D,MAAM,CAAC9C,MAAM,CAChCoB,KAAK,IACN,CAAE+B,IAAI,CAACO,YAAY,CAACH,QAAQ,CAAEnC,KAAK,CAAC3C,EAAG,CAAC,IACxC,CAAE,CAAE0E,IAAI,CAACM,MAAM,CAAC3E,YAAY,EAAEqE,IAAI,CAACM,MAAM,CAAC7E,UAAU,CAAE,CAAC2E,QAAQ,CAC9DnC,KAAK,CAAC3C,EACP,CACF,CAAC;EAED,MAAMI,QAAQ,GAAG1B,WAAW,CACzBwB,IAAU,IAAMsE,iBAAiB,CAAE,CAAEtE,IAAI,CAAG,CAAC,EAC/C,CAAEsE,iBAAiB,CACpB,CAAC;EAED,MAAMU,YAAY,GAAGxG,WAAW,CAC7BwB,IAAW,IACZA,IAAI,GAAI,GAAGyE,MAAQ,IAAIL,SAAS,CAAEpE,IAAK,CAAG,EAAC,GAAGiF,SAAS,EACxD,CAAER,MAAM,EAAEL,SAAS,CACpB,CAAC;EAED,MAAMhE,KAAK,GAAGjB,iBAAiB,CAAE;IAChC+F,eAAe,EAAEF,YAAY,CAAEN,YAAa;EAC7C,CAAE,CAAC;;EAEH;EACA,MAAMS,gBAAgB,GAAG/E,KAAK,CAACxB,QAAQ,CACpCwG,KAAsC,IACvCA,KAAK,CAAChC,KAAK,CAACiC,IAAI,CACbrF,IAAiB,IAAMA,IAAI,CAACF,EAAE,KAAKsF,KAAK,CAACE,QAC5C,CACF,CAAC;EACD7G,SAAS,CAAE,MAAM;IAChB,IAAK,CAAE0G,gBAAgB,EAAG;MACzB;MACA,IAAK/E,KAAK,CAACyD,IAAI,CAAC,CAAC,EAAG;QACnBzD,KAAK,CAACwD,IAAI,CAAExD,KAAK,CAACyD,IAAI,CAAC,CAAE,CAAC;MAC3B,CAAC,MAAM,IAAKzD,KAAK,CAAC0D,EAAE,CAAC,CAAC,EAAG;QACxB1D,KAAK,CAACwD,IAAI,CAAExD,KAAK,CAAC0D,EAAE,CAAC,CAAE,CAAC;MACzB;IACD;EACD,CAAC,EAAE,CAAEqB,gBAAgB,CAAG,CAAC;EAEzB,MAAMI,OAAO,GAAGrB,IAAI,EAAErB,MAAM;EAC5B,IAAK,CAAE0C,OAAO,EAAG;IAChB,OACC1D,aAAA;MACCI,SAAS,EAAGpE,IAAI,CAAE;QACjB,mBAAmB,EAAEwG,SAAS;QAC9B,sBAAsB,EAAE,CAAEkB,OAAO,IAAI,CAAElB;MACxC,CAAE;IAAG,GAEH,CAAEkB,OAAO,IACV1D,aAAA,YAAKwC,SAAS,GAAGxC,aAAA,CAACvD,OAAO,MAAE,CAAC,GAAGO,EAAE,CAAE,YAAa,CAAM,CAEnD,CAAC;EAER;EAEA,OACCgD,aAAA,CAACxC,SAAS;IACTS,EAAE,EAAG2E,MAAQ;IACb1C,MAAM,EAAGF,aAAA,WAAK,CAAG;IACjBI,SAAS,EAAC,qBAAqB;IAC/BD,IAAI,EAAC,MAAM;IACX5B,KAAK,EAAGA;EAAO,GAEb8D,IAAI,CAAC1B,GAAG,CAAIxC,IAAI,IAAM;IACvB,MAAMF,EAAE,GAAGkF,YAAY,CAAEhF,IAAK,CAAC;IAC/B,OACC6B,aAAA,CAACjC,QAAQ;MACR8C,GAAG,EAAG5C,EAAI;MACVA,EAAE,EAAGA,EAAI;MACTD,OAAO,EAAGA,OAAS;MACnBG,IAAI,EAAGA,IAAM;MACbD,UAAU,EAAGC,IAAI,KAAK0E,YAAc;MACpCxE,QAAQ,EAAGA,QAAU;MACrBD,UAAU,EAAGA,UAAY;MACzBE,YAAY,EAAGA,YAAc;MAC7BC,KAAK,EAAGA,KAAO;MACfC,aAAa,EAAGA;IAAe,CAC/B,CAAC;EAEJ,CAAE,CACQ,CAAC;AAEd","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","useInstanceId","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","privateApis","componentsPrivateApis","Spinner","VisuallyHidden","useCallback","useEffect","useMemo","useRef","useState","__","moreVertical","unlock","ActionsDropdownMenuGroup","ActionModal","jsx","_jsx","jsxs","_jsxs","useCompositeStoreV2","useCompositeStore","CompositeV2","Composite","CompositeItemV2","CompositeItem","CompositeRowV2","CompositeRow","DropdownMenuV2","DropdownMenu","ListItem","actions","id","isSelected","item","mediaField","onSelect","primaryField","store","visibleFields","itemRef","labelId","descriptionId","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","current","scrollIntoView","behavior","block","inline","primaryAction","eligibleActions","_eligibleActions","filter","action","isEligible","_primaryActions","isPrimary","icon","isModalOpen","setIsModalOpen","primaryActionLabel","label","ref","render","role","className","onMouseEnter","onMouseLeave","children","alignment","spacing","onClick","justify","map","field","as","header","length","style","flexShrink","width","isDestructive","size","items","closeModal","callback","trigger","disabled","onKeyDown","event","key","preventDefault","move","down","up","placement","ViewList","props","data","fields","getItemId","isLoading","onSelectionChange","selection","view","baseId","selectedItem","findLast","includes","find","layout","hiddenFields","getItemDomId","undefined","defaultActiveId","isActiveIdInList","state","some","activeId","hasData"],"sources":["@wordpress/dataviews/src/view-list.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n// Import CompositeStore type, which is not exported from @wordpress/components.\n// eslint-disable-next-line no-restricted-imports\nimport type { CompositeStore } from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport type { Action, AnyItem, NormalizedField, ViewListProps } from './types';\n\nimport { ActionsDropdownMenuGroup, ActionModal } from './item-actions';\n\ninterface ListViewItemProps< Item extends AnyItem > {\n\tactions: Action< Item >[];\n\tid?: string;\n\tisSelected: boolean;\n\titem: Item;\n\tmediaField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\tprimaryField?: NormalizedField< Item >;\n\tstore: CompositeStore;\n\tvisibleFields: NormalizedField< Item >[];\n}\n\nconst {\n\tuseCompositeStoreV2: useCompositeStore,\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tCompositeRowV2: CompositeRow,\n\tDropdownMenuV2: DropdownMenu,\n} = unlock( componentsPrivateApis );\n\nfunction ListItem< Item extends AnyItem >( {\n\tactions,\n\tid,\n\tisSelected,\n\titem,\n\tmediaField,\n\tonSelect,\n\tprimaryField,\n\tstore,\n\tvisibleFields,\n}: ListViewItemProps< Item > ) {\n\tconst itemRef = useRef< HTMLElement >( null );\n\tconst labelId = `${ id }-label`;\n\tconst descriptionId = `${ id }-description`;\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions?.[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst primaryActionLabel =\n\t\tprimaryAction &&\n\t\t( typeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] ) );\n\n\treturn (\n\t\t<CompositeRow\n\t\t\tref={ itemRef }\n\t\t\trender={ <li /> }\n\t\t\trole=\"row\"\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t>\n\t\t\t<HStack\n\t\t\t\tclassName=\"dataviews-view-list__item-wrapper\"\n\t\t\t\talignment=\"center\"\n\t\t\t\tspacing={ 0 }\n\t\t\t>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\trender={ <div /> }\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t\t\t\t\t{ mediaField?.render( { item } ) || (\n\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-placeholder\"></div>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<VStack spacing={ 0 }>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__primary-field\"\n\t\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ primaryField?.render( { item } ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.render( { item } ) }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</CompositeItem>\n\t\t\t\t</div>\n\t\t\t\t{ actions?.length > 0 && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item-actions\"\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tflexShrink: '0',\n\t\t\t\t\t\t\twidth: 'auto',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ primaryAction && 'RenderModal' in primaryAction && (\n\t\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryActionLabel }\n\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( true )\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\t\t{ isModalOpen && (\n\t\t\t\t\t\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\t\t\t\t\tcloseModal={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false )\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</CompositeItem>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ primaryAction &&\n\t\t\t\t\t\t\t! ( 'RenderModal' in primaryAction ) && (\n\t\t\t\t\t\t\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryActionLabel }\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\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\tsize=\"compact\"\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\tprimaryAction.callback( [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem,\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/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={ ( event: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey: string;\n\t\t\t\t\t\t\t\t\t\t\t\t\tpreventDefault: () => void;\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\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.key ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'ArrowDown'\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// Prevent the default behaviour (open dropdown menu) and go down.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.down()\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\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.key === 'ArrowUp'\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// Prevent the default behavior (open dropdown menu) and go up.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.up()\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/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tplacement=\"bottom-end\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ActionsDropdownMenuGroup\n\t\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</CompositeRow>\n\t);\n}\n\nexport default function ViewList< Item extends AnyItem >(\n\tprops: ViewListProps< Item >\n) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonSelectionChange,\n\t\tselection,\n\t\tview,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( item.id )\n\t);\n\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.primaryField, view.layout.mediaField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\n\tconst onSelect = useCallback(\n\t\t( item: Item ) => onSelectionChange( [ item ] ),\n\t\t[ onSelectionChange ]\n\t);\n\n\tconst getItemDomId = useCallback(\n\t\t( item?: Item ) =>\n\t\t\titem ? `${ baseId }-${ getItemId( item ) }` : undefined,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst store = useCompositeStore( {\n\t\tdefaultActiveId: getItemDomId( selectedItem ),\n\t} );\n\n\t// Manage focused item, when the active one is removed from the list.\n\tconst isActiveIdInList = store.useState(\n\t\t( state: { items: any[]; activeId: any } ) =>\n\t\t\tstate.items.some(\n\t\t\t\t( item: { id: any } ) => item.id === state.activeId\n\t\t\t)\n\t);\n\tuseEffect( () => {\n\t\tif ( ! isActiveIdInList ) {\n\t\t\t// Prefer going down, except if there is no item below (last item), then go up (last item in list).\n\t\t\tif ( store.down() ) {\n\t\t\t\tstore.move( store.down() );\n\t\t\t} else if ( store.up() ) {\n\t\t\t\tstore.move( store.up() );\n\t\t\t}\n\t\t}\n\t}, [ isActiveIdInList ] );\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Composite\n\t\t\tid={ baseId }\n\t\t\trender={ <ul /> }\n\t\t\tclassName=\"dataviews-view-list\"\n\t\t\trole=\"grid\"\n\t\t\tstore={ store }\n\t\t>\n\t\t\t{ data.map( ( item ) => {\n\t\t\t\tconst id = getItemDomId( item );\n\t\t\t\treturn (\n\t\t\t\t\t<ListItem\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Composite>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { createElement } from "react";
|
|
2
1
|
/**
|
|
3
2
|
* External dependencies
|
|
4
3
|
*/
|
|
5
4
|
import clsx from 'clsx';
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* WordPress dependencies
|
|
9
7
|
*/
|
|
@@ -19,8 +17,11 @@ import SingleSelectionCheckbox from './single-selection-checkbox';
|
|
|
19
17
|
import { unlock } from './lock-unlock';
|
|
20
18
|
import ItemActions from './item-actions';
|
|
21
19
|
import { sanitizeOperators } from './utils';
|
|
22
|
-
import { SORTING_DIRECTIONS } from './constants';
|
|
20
|
+
import { SORTING_DIRECTIONS, sortArrows, sortLabels, sortValues } from './constants';
|
|
23
21
|
import { useSomeItemHasAPossibleBulkAction, useHasAPossibleBulkAction } from './bulk-actions';
|
|
22
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
23
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
24
25
|
const {
|
|
25
26
|
DropdownMenuV2: DropdownMenu,
|
|
26
27
|
DropdownMenuGroupV2: DropdownMenuGroup,
|
|
@@ -32,15 +33,11 @@ const {
|
|
|
32
33
|
function WithDropDownMenuSeparators({
|
|
33
34
|
children
|
|
34
35
|
}) {
|
|
35
|
-
return Children.toArray(children).filter(Boolean).map((child, i) =>
|
|
36
|
-
|
|
37
|
-
}, i
|
|
36
|
+
return Children.toArray(children).filter(Boolean).map((child, i) => /*#__PURE__*/_jsxs(Fragment, {
|
|
37
|
+
children: [i > 0 && /*#__PURE__*/_jsx(DropdownMenuSeparator, {}), child]
|
|
38
|
+
}, i));
|
|
38
39
|
}
|
|
39
|
-
const
|
|
40
|
-
asc: '↑',
|
|
41
|
-
desc: '↓'
|
|
42
|
-
};
|
|
43
|
-
const HeaderMenu = forwardRef(function HeaderMenu({
|
|
40
|
+
const _HeaderMenu = forwardRef(function HeaderMenu({
|
|
44
41
|
field,
|
|
45
42
|
view,
|
|
46
43
|
onChangeView,
|
|
@@ -59,72 +56,91 @@ const HeaderMenu = forwardRef(function HeaderMenu({
|
|
|
59
56
|
if (!isSortable && !isHidable && !canAddFilter) {
|
|
60
57
|
return field.header;
|
|
61
58
|
}
|
|
62
|
-
return
|
|
59
|
+
return /*#__PURE__*/_jsx(DropdownMenu, {
|
|
63
60
|
align: "start",
|
|
64
|
-
trigger:
|
|
61
|
+
trigger: /*#__PURE__*/_jsxs(Button, {
|
|
65
62
|
size: "compact",
|
|
66
63
|
className: "dataviews-view-table-header-button",
|
|
67
64
|
ref: ref,
|
|
68
|
-
variant: "tertiary"
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
variant: "tertiary",
|
|
66
|
+
children: [field.header, view.sort && isSorted && /*#__PURE__*/_jsx("span", {
|
|
67
|
+
"aria-hidden": "true",
|
|
68
|
+
children: sortArrows[view.sort.direction]
|
|
69
|
+
})]
|
|
70
|
+
}),
|
|
72
71
|
style: {
|
|
73
72
|
minWidth: '240px'
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
|
|
73
|
+
},
|
|
74
|
+
children: /*#__PURE__*/_jsxs(WithDropDownMenuSeparators, {
|
|
75
|
+
children: [isSortable && /*#__PURE__*/_jsx(DropdownMenuGroup, {
|
|
76
|
+
children: SORTING_DIRECTIONS.map(direction => {
|
|
77
|
+
const isChecked = view.sort && isSorted && view.sort.direction === direction;
|
|
78
|
+
const value = `${field.id}-${direction}`;
|
|
79
|
+
return /*#__PURE__*/_jsx(DropdownMenuRadioItem, {
|
|
80
|
+
// All sorting radio items share the same name, so that
|
|
81
|
+
// selecting a sorting option automatically deselects the
|
|
82
|
+
// previously selected one, even if it is displayed in
|
|
83
|
+
// another submenu. The field and direction are passed via
|
|
84
|
+
// the `value` prop.
|
|
85
|
+
name: "view-table-sorting",
|
|
86
|
+
value: value,
|
|
87
|
+
checked: isChecked,
|
|
88
|
+
onChange: () => {
|
|
89
|
+
onChangeView({
|
|
90
|
+
...view,
|
|
91
|
+
sort: {
|
|
92
|
+
field: field.id,
|
|
93
|
+
direction
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
|
|
98
|
+
children: sortLabels[direction]
|
|
99
|
+
})
|
|
100
|
+
}, value);
|
|
101
|
+
})
|
|
102
|
+
}), canAddFilter && /*#__PURE__*/_jsx(DropdownMenuGroup, {
|
|
103
|
+
children: /*#__PURE__*/_jsx(DropdownMenuItem, {
|
|
104
|
+
prefix: /*#__PURE__*/_jsx(Icon, {
|
|
105
|
+
icon: funnel
|
|
106
|
+
}),
|
|
107
|
+
onClick: () => {
|
|
108
|
+
setOpenedFilter(field.id);
|
|
109
|
+
onChangeView({
|
|
110
|
+
...view,
|
|
111
|
+
page: 1,
|
|
112
|
+
filters: [...(view.filters || []), {
|
|
113
|
+
field: field.id,
|
|
114
|
+
value: undefined,
|
|
115
|
+
operator: operators[0]
|
|
116
|
+
}]
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
|
|
120
|
+
children: __('Add filter')
|
|
121
|
+
})
|
|
122
|
+
})
|
|
123
|
+
}), isHidable && /*#__PURE__*/_jsx(DropdownMenuItem, {
|
|
124
|
+
prefix: /*#__PURE__*/_jsx(Icon, {
|
|
125
|
+
icon: unseen
|
|
126
|
+
}),
|
|
127
|
+
onClick: () => {
|
|
128
|
+
onHide(field);
|
|
129
|
+
onChangeView({
|
|
130
|
+
...view,
|
|
131
|
+
hiddenFields: view.hiddenFields.concat(field.id)
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
|
|
135
|
+
children: __('Hide')
|
|
136
|
+
})
|
|
137
|
+
})]
|
|
138
|
+
})
|
|
139
|
+
});
|
|
127
140
|
});
|
|
141
|
+
|
|
142
|
+
// @ts-expect-error Lift the `Item` type argument through the forwardRef.
|
|
143
|
+
const HeaderMenu = _HeaderMenu;
|
|
128
144
|
function BulkSelectionCheckbox({
|
|
129
145
|
selection,
|
|
130
146
|
onSelectionChange,
|
|
@@ -133,15 +149,15 @@ function BulkSelectionCheckbox({
|
|
|
133
149
|
}) {
|
|
134
150
|
const selectableItems = useMemo(() => {
|
|
135
151
|
return data.filter(item => {
|
|
136
|
-
return actions.some(action => action.supportsBulk && action.isEligible(item));
|
|
152
|
+
return actions.some(action => action.supportsBulk && (!action.isEligible || action.isEligible(item)));
|
|
137
153
|
});
|
|
138
154
|
}, [data, actions]);
|
|
139
155
|
const areAllSelected = selection.length === selectableItems.length;
|
|
140
|
-
return
|
|
156
|
+
return /*#__PURE__*/_jsx(CheckboxControl, {
|
|
141
157
|
className: "dataviews-view-table-selection-checkbox",
|
|
142
158
|
__nextHasNoMarginBottom: true,
|
|
143
159
|
checked: areAllSelected,
|
|
144
|
-
indeterminate: !areAllSelected && selection.length,
|
|
160
|
+
indeterminate: !areAllSelected && !!selection.length,
|
|
145
161
|
onChange: () => {
|
|
146
162
|
if (areAllSelected) {
|
|
147
163
|
onSelectionChange([]);
|
|
@@ -178,7 +194,7 @@ function TableRow({
|
|
|
178
194
|
// `onClick` and can be used to exclude touchscreen devices from certain
|
|
179
195
|
// behaviours.
|
|
180
196
|
const isTouchDevice = useRef(false);
|
|
181
|
-
return
|
|
197
|
+
return /*#__PURE__*/_jsxs("tr", {
|
|
182
198
|
className: clsx('dataviews-view-table__row', {
|
|
183
199
|
'is-selected': hasPossibleBulkAction && isSelected,
|
|
184
200
|
'is-hovered': isHovered,
|
|
@@ -190,7 +206,7 @@ function TableRow({
|
|
|
190
206
|
isTouchDevice.current = true;
|
|
191
207
|
},
|
|
192
208
|
onClick: () => {
|
|
193
|
-
if (!isTouchDevice.current && document.getSelection()
|
|
209
|
+
if (!isTouchDevice.current && document.getSelection()?.type !== 'Range') {
|
|
194
210
|
if (!isSelected) {
|
|
195
211
|
onSelectionChange(data.filter(_item => {
|
|
196
212
|
const itemId = getItemId?.(_item);
|
|
@@ -203,52 +219,56 @@ function TableRow({
|
|
|
203
219
|
}));
|
|
204
220
|
}
|
|
205
221
|
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
222
|
+
},
|
|
223
|
+
children: [hasBulkActions && /*#__PURE__*/_jsx("td", {
|
|
224
|
+
className: "dataviews-view-table__checkbox-column",
|
|
225
|
+
style: {
|
|
226
|
+
width: '1%'
|
|
227
|
+
},
|
|
228
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
229
|
+
className: "dataviews-view-table__cell-content-wrapper",
|
|
230
|
+
children: /*#__PURE__*/_jsx(SingleSelectionCheckbox, {
|
|
231
|
+
item: item,
|
|
232
|
+
selection: selection,
|
|
233
|
+
onSelectionChange: onSelectionChange,
|
|
234
|
+
getItemId: getItemId,
|
|
235
|
+
data: data,
|
|
236
|
+
primaryField: primaryField,
|
|
237
|
+
disabled: !hasPossibleBulkAction
|
|
238
|
+
})
|
|
239
|
+
})
|
|
240
|
+
}), visibleFields.map(field => /*#__PURE__*/_jsx("td", {
|
|
241
|
+
style: {
|
|
242
|
+
width: field.width || undefined,
|
|
243
|
+
minWidth: field.minWidth || undefined,
|
|
244
|
+
maxWidth: field.maxWidth || undefined
|
|
245
|
+
},
|
|
246
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
247
|
+
className: clsx('dataviews-view-table__cell-content-wrapper', {
|
|
248
|
+
'dataviews-view-table__primary-field': primaryField?.id === field.id
|
|
249
|
+
}),
|
|
250
|
+
children: field.render({
|
|
251
|
+
item
|
|
252
|
+
})
|
|
253
|
+
})
|
|
254
|
+
}, field.id)), !!actions?.length &&
|
|
255
|
+
/*#__PURE__*/
|
|
256
|
+
// Disable reason: we are not making the element interactive,
|
|
257
|
+
// but preventing any click events from bubbling up to the
|
|
258
|
+
// table row. This allows us to add a click handler to the row
|
|
259
|
+
// itself (to toggle row selection) without erroneously
|
|
260
|
+
// intercepting click events from ItemActions.
|
|
261
|
+
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */
|
|
262
|
+
_jsx("td", {
|
|
263
|
+
className: "dataviews-view-table__actions-column",
|
|
264
|
+
onClick: e => e.stopPropagation(),
|
|
265
|
+
children: /*#__PURE__*/_jsx(ItemActions, {
|
|
266
|
+
item: item,
|
|
267
|
+
actions: actions
|
|
268
|
+
})
|
|
233
269
|
})
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
})))), !!actions?.length &&
|
|
237
|
-
// Disable reason: we are not making the element interactive,
|
|
238
|
-
// but preventing any click events from bubbling up to the
|
|
239
|
-
// table row. This allows us to add a click handler to the row
|
|
240
|
-
// itself (to toggle row selection) without erroneously
|
|
241
|
-
// intercepting click events from ItemActions.
|
|
242
|
-
|
|
243
|
-
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */
|
|
244
|
-
createElement("td", {
|
|
245
|
-
className: "dataviews-view-table__actions-column",
|
|
246
|
-
onClick: e => e.stopPropagation()
|
|
247
|
-
}, createElement(ItemActions, {
|
|
248
|
-
item: item,
|
|
249
|
-
actions: actions
|
|
250
|
-
}))
|
|
251
|
-
/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */);
|
|
270
|
+
/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */]
|
|
271
|
+
});
|
|
252
272
|
}
|
|
253
273
|
function ViewTable({
|
|
254
274
|
actions,
|
|
@@ -279,89 +299,98 @@ function ViewTable({
|
|
|
279
299
|
// Clearing out the focus directive is necessary to make sure
|
|
280
300
|
// future renders don't cause unexpected focus jumps.
|
|
281
301
|
headerMenuToFocusRef.current = nextHeaderMenuToFocus;
|
|
282
|
-
setNextHeaderMenuToFocus();
|
|
302
|
+
setNextHeaderMenuToFocus(undefined);
|
|
283
303
|
return;
|
|
284
304
|
}
|
|
285
305
|
const onHide = field => {
|
|
286
306
|
const hidden = headerMenuRefs.current.get(field.id);
|
|
287
|
-
const fallback = headerMenuRefs.current.get(hidden.fallback);
|
|
307
|
+
const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : undefined;
|
|
288
308
|
setNextHeaderMenuToFocus(fallback?.node);
|
|
289
309
|
};
|
|
290
310
|
const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.mediaField].includes(field.id));
|
|
291
311
|
const hasData = !!data?.length;
|
|
292
|
-
const sortValues = {
|
|
293
|
-
asc: 'ascending',
|
|
294
|
-
desc: 'descending'
|
|
295
|
-
};
|
|
296
312
|
const primaryField = fields.find(field => field.id === view.layout.primaryField);
|
|
297
|
-
return
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
313
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
314
|
+
children: [/*#__PURE__*/_jsxs("table", {
|
|
315
|
+
className: "dataviews-view-table",
|
|
316
|
+
"aria-busy": isLoading,
|
|
317
|
+
"aria-describedby": tableNoticeId,
|
|
318
|
+
children: [/*#__PURE__*/_jsx("thead", {
|
|
319
|
+
children: /*#__PURE__*/_jsxs("tr", {
|
|
320
|
+
className: "dataviews-view-table__row",
|
|
321
|
+
children: [hasBulkActions && /*#__PURE__*/_jsx("th", {
|
|
322
|
+
className: "dataviews-view-table__checkbox-column",
|
|
323
|
+
style: {
|
|
324
|
+
width: '1%'
|
|
325
|
+
},
|
|
326
|
+
"data-field-id": "selection",
|
|
327
|
+
scope: "col",
|
|
328
|
+
children: /*#__PURE__*/_jsx(BulkSelectionCheckbox, {
|
|
329
|
+
selection: selection,
|
|
330
|
+
onSelectionChange: onSelectionChange,
|
|
331
|
+
data: data,
|
|
332
|
+
actions: actions
|
|
333
|
+
})
|
|
334
|
+
}), visibleFields.map((field, index) => /*#__PURE__*/_jsx("th", {
|
|
335
|
+
style: {
|
|
336
|
+
width: field.width || undefined,
|
|
337
|
+
minWidth: field.minWidth || undefined,
|
|
338
|
+
maxWidth: field.maxWidth || undefined
|
|
339
|
+
},
|
|
340
|
+
"data-field-id": field.id,
|
|
341
|
+
"aria-sort": view.sort?.field === field.id ? sortValues[view.sort.direction] : undefined,
|
|
342
|
+
scope: "col",
|
|
343
|
+
children: /*#__PURE__*/_jsx(HeaderMenu, {
|
|
344
|
+
ref: node => {
|
|
345
|
+
if (node) {
|
|
346
|
+
headerMenuRefs.current.set(field.id, {
|
|
347
|
+
node,
|
|
348
|
+
fallback: visibleFields[index > 0 ? index - 1 : 1]?.id
|
|
349
|
+
});
|
|
350
|
+
} else {
|
|
351
|
+
headerMenuRefs.current.delete(field.id);
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
field: field,
|
|
355
|
+
view: view,
|
|
356
|
+
onChangeView: onChangeView,
|
|
357
|
+
onHide: onHide,
|
|
358
|
+
setOpenedFilter: setOpenedFilter
|
|
359
|
+
})
|
|
360
|
+
}, field.id)), !!actions?.length && /*#__PURE__*/_jsx("th", {
|
|
361
|
+
"data-field-id": "actions",
|
|
362
|
+
className: "dataviews-view-table__actions-column",
|
|
363
|
+
children: /*#__PURE__*/_jsx("span", {
|
|
364
|
+
className: "dataviews-view-table-header",
|
|
365
|
+
children: __('Actions')
|
|
366
|
+
})
|
|
367
|
+
})]
|
|
368
|
+
})
|
|
369
|
+
}), /*#__PURE__*/_jsx("tbody", {
|
|
370
|
+
children: hasData && data.map((item, index) => /*#__PURE__*/_jsx(TableRow, {
|
|
371
|
+
item: item,
|
|
372
|
+
hasBulkActions: hasBulkActions,
|
|
373
|
+
actions: actions,
|
|
374
|
+
id: getItemId(item) || index.toString(),
|
|
375
|
+
visibleFields: visibleFields,
|
|
376
|
+
primaryField: primaryField,
|
|
377
|
+
selection: selection,
|
|
378
|
+
getItemId: getItemId,
|
|
379
|
+
onSelectionChange: onSelectionChange,
|
|
380
|
+
data: data
|
|
381
|
+
}, getItemId(item)))
|
|
382
|
+
})]
|
|
383
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
384
|
+
className: clsx({
|
|
385
|
+
'dataviews-loading': isLoading,
|
|
386
|
+
'dataviews-no-results': !hasData && !isLoading
|
|
387
|
+
}),
|
|
388
|
+
id: tableNoticeId,
|
|
389
|
+
children: !hasData && /*#__PURE__*/_jsx("p", {
|
|
390
|
+
children: isLoading ? /*#__PURE__*/_jsx(Spinner, {}) : __('No results')
|
|
391
|
+
})
|
|
392
|
+
})]
|
|
393
|
+
});
|
|
365
394
|
}
|
|
366
395
|
export default ViewTable;
|
|
367
396
|
//# sourceMappingURL=view-table.js.map
|