@wordpress/dataviews 2.0.2 → 2.0.3

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.
@@ -145,19 +145,21 @@ function BulkSelectionCheckbox({
145
145
  selection,
146
146
  onSelectionChange,
147
147
  data,
148
- actions
148
+ actions,
149
+ getItemId
149
150
  }) {
150
151
  const selectableItems = useMemo(() => {
151
152
  return data.filter(item => {
152
153
  return actions.some(action => action.supportsBulk && (!action.isEligible || action.isEligible(item)));
153
154
  });
154
155
  }, [data, actions]);
155
- const areAllSelected = selection.length === selectableItems.length;
156
+ const selectedItems = data.filter(item => selection.includes(getItemId(item)) && selectableItems.includes(item));
157
+ const areAllSelected = selectedItems.length === selectableItems.length;
156
158
  return /*#__PURE__*/_jsx(CheckboxControl, {
157
159
  className: "dataviews-view-table-selection-checkbox",
158
160
  __nextHasNoMarginBottom: true,
159
161
  checked: areAllSelected,
160
- indeterminate: !areAllSelected && !!selection.length,
162
+ indeterminate: !areAllSelected && !!selectedItems.length,
161
163
  onChange: () => {
162
164
  if (areAllSelected) {
163
165
  onSelectionChange([]);
@@ -181,7 +183,7 @@ function TableRow({
181
183
  data
182
184
  }) {
183
185
  const hasPossibleBulkAction = useHasAPossibleBulkAction(actions, item);
184
- const isSelected = selection.includes(id);
186
+ const isSelected = hasPossibleBulkAction && selection.includes(id);
185
187
  const [isHovered, setIsHovered] = useState(false);
186
188
  const handleMouseEnter = () => {
187
189
  setIsHovered(true);
@@ -206,6 +208,9 @@ function TableRow({
206
208
  isTouchDevice.current = true;
207
209
  },
208
210
  onClick: () => {
211
+ if (!hasPossibleBulkAction) {
212
+ return;
213
+ }
209
214
  if (!isTouchDevice.current && document.getSelection()?.type !== 'Range') {
210
215
  if (!isSelected) {
211
216
  onSelectionChange(data.filter(_item => {
@@ -329,7 +334,8 @@ function ViewTable({
329
334
  selection: selection,
330
335
  onSelectionChange: onSelectionChange,
331
336
  data: data,
332
- actions: actions
337
+ actions: actions,
338
+ getItemId: getItemId
333
339
  })
334
340
  }), visibleFields.map((field, index) => /*#__PURE__*/_jsx("th", {
335
341
  style: {
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__","unseen","funnel","Button","Icon","privateApis","componentsPrivateApis","CheckboxControl","Spinner","forwardRef","useEffect","useId","useRef","useState","useMemo","Children","Fragment","SingleSelectionCheckbox","unlock","ItemActions","sanitizeOperators","SORTING_DIRECTIONS","sortArrows","sortLabels","sortValues","useSomeItemHasAPossibleBulkAction","useHasAPossibleBulkAction","jsx","_jsx","jsxs","_jsxs","_Fragment","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","DropdownMenuSeparatorV2","DropdownMenuSeparator","WithDropDownMenuSeparators","children","toArray","filter","Boolean","map","child","i","_HeaderMenu","HeaderMenu","field","view","onChangeView","onHide","setOpenedFilter","ref","isHidable","enableHiding","isSortable","enableSorting","isSorted","sort","id","operators","canAddFilter","filters","some","_filter","elements","length","filterBy","isPrimary","header","align","trigger","size","className","variant","direction","style","minWidth","isChecked","value","name","checked","onChange","prefix","icon","onClick","page","undefined","operator","hiddenFields","concat","BulkSelectionCheckbox","selection","onSelectionChange","data","actions","selectableItems","item","action","supportsBulk","isEligible","areAllSelected","__nextHasNoMarginBottom","indeterminate","TableRow","hasBulkActions","visibleFields","primaryField","getItemId","hasPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","isTouchDevice","onMouseEnter","onMouseLeave","onTouchStart","current","document","getSelection","type","_item","itemId","width","disabled","maxWidth","render","e","stopPropagation","ViewTable","fields","isLoading","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","focus","tableNoticeId","hidden","get","fallback","node","layout","mediaField","hasData","find","scope","index","set","delete","toString"],"sources":["@wordpress/dataviews/src/view-table.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ReactNode, Ref, PropsWithoutRef, RefAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n\tCheckboxControl,\n\tSpinner,\n} from '@wordpress/components';\nimport {\n\tforwardRef,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n\tuseMemo,\n\tChildren,\n\tFragment,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SingleSelectionCheckbox from './single-selection-checkbox';\nimport { unlock } from './lock-unlock';\nimport ItemActions from './item-actions';\nimport { sanitizeOperators } from './utils';\nimport {\n\tSORTING_DIRECTIONS,\n\tsortArrows,\n\tsortLabels,\n\tsortValues,\n} from './constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n} from './bulk-actions';\nimport type {\n\tAction,\n\tAnyItem,\n\tNormalizedField,\n\tSortDirection,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n} from './types';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n} = unlock( componentsPrivateApis );\n\ninterface HeaderMenuProps< Item extends AnyItem > {\n\tfield: NormalizedField< Item >;\n\tview: ViewTableType;\n\tonChangeView: ( view: ViewTableType ) => void;\n\tonHide: ( field: NormalizedField< Item > ) => void;\n\tsetOpenedFilter: ( fieldId: string ) => void;\n}\n\ninterface BulkSelectionCheckboxProps< Item extends AnyItem > {\n\tselection: string[];\n\tonSelectionChange: ( items: Item[] ) => void;\n\tdata: Item[];\n\tactions: Action< Item >[];\n}\n\ninterface TableRowProps< Item extends AnyItem > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\tid: string;\n\tvisibleFields: NormalizedField< Item >[];\n\tprimaryField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonSelectionChange: ( items: Item[] ) => void;\n\tdata: Item[];\n}\n\nfunction WithDropDownMenuSeparators( { children }: { children: ReactNode } ) {\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\nconst _HeaderMenu = forwardRef( function HeaderMenu< Item extends AnyItem >(\n\t{\n\t\tfield,\n\t\tview,\n\t\tonChangeView,\n\t\tonHide,\n\t\tsetOpenedFilter,\n\t}: HeaderMenuProps< Item >,\n\tref: Ref< HTMLButtonElement >\n) {\n\tconst isHidable = field.enableHiding !== false;\n\tconst isSortable = field.enableSorting !== false;\n\tconst isSorted = view.sort?.field === field.id;\n\tconst operators = sanitizeOperators( field );\n\t// Filter can be added:\n\t// 1. If the field is not already part of a view's filters.\n\t// 2. If the field meets the type and operator requirements.\n\t// 3. If it's not primary. If it is, it should be already visible.\n\tconst canAddFilter =\n\t\t! view.filters?.some( ( _filter ) => field.id === _filter.field ) &&\n\t\t!! field.elements?.length &&\n\t\t!! operators.length &&\n\t\t! field.filterBy?.isPrimary;\n\tif ( ! isSortable && ! isHidable && ! canAddFilter ) {\n\t\treturn field.header;\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\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{ view.sort && isSorted && (\n\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t{ 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<WithDropDownMenuSeparators>\n\t\t\t\t{ isSortable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t{ SORTING_DIRECTIONS.map(\n\t\t\t\t\t\t\t( direction: SortDirection ) => {\n\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\tview.sort &&\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{ sortLabels[ direction ] }\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{ canAddFilter && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetOpenedFilter( field.id );\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\toperator: operators[ 0 ],\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>\n\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t</DropdownMenuItem>\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</WithDropDownMenuSeparators>\n\t\t</DropdownMenu>\n\t);\n} );\n\n// @ts-expect-error Lift the `Item` type argument through the forwardRef.\nconst HeaderMenu: < Item extends AnyItem >(\n\tprops: PropsWithoutRef< HeaderMenuProps< Item > > &\n\t\tRefAttributes< HTMLButtonElement >\n) => ReturnType< typeof _HeaderMenu > = _HeaderMenu;\n\nfunction BulkSelectionCheckbox< Item extends AnyItem >( {\n\tselection,\n\tonSelectionChange,\n\tdata,\n\tactions,\n}: BulkSelectionCheckboxProps< Item > ) {\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn actions.some(\n\t\t\t\t( action ) =>\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ data, actions ] );\n\tconst areAllSelected = selection.length === selectableItems.length;\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-view-table-selection-checkbox\"\n\t\t\t__nextHasNoMarginBottom\n\t\t\tchecked={ areAllSelected }\n\t\t\tindeterminate={ ! areAllSelected && !! selection.length }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( areAllSelected ) {\n\t\t\t\t\tonSelectionChange( [] );\n\t\t\t\t} else {\n\t\t\t\t\tonSelectionChange( selectableItems );\n\t\t\t\t}\n\t\t\t} }\n\t\t\taria-label={\n\t\t\t\tareAllSelected ? __( 'Deselect all' ) : __( 'Select all' )\n\t\t\t}\n\t\t/>\n\t);\n}\n\nfunction TableRow< Item extends AnyItem >( {\n\thasBulkActions,\n\titem,\n\tactions,\n\tid,\n\tvisibleFields,\n\tprimaryField,\n\tselection,\n\tgetItemId,\n\tonSelectionChange,\n\tdata,\n}: TableRowProps< Item > ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = selection.includes( id );\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\t// Will be set to true if `onTouchStart` fires. This happens before\n\t// `onClick` and can be used to exclude touchscreen devices from certain\n\t// behaviours.\n\tconst isTouchDevice = useRef( false );\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ clsx( 'dataviews-view-table__row', {\n\t\t\t\t'is-selected': hasPossibleBulkAction && isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t'has-bulk-actions': hasPossibleBulkAction,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t\tonTouchStart={ () => {\n\t\t\t\tisTouchDevice.current = true;\n\t\t\t} }\n\t\t\tonClick={ () => {\n\t\t\t\tif (\n\t\t\t\t\t! isTouchDevice.current &&\n\t\t\t\t\tdocument.getSelection()?.type !== 'Range'\n\t\t\t\t) {\n\t\t\t\t\tif ( ! isSelected ) {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId === id ||\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId !== id &&\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ hasBulkActions && (\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<SingleSelectionCheckbox\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t<td\n\t\t\t\t\tkey={ field.id }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\tminWidth: field.minWidth || undefined,\n\t\t\t\t\t\tmaxWidth: field.maxWidth || undefined,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'dataviews-view-table__cell-content-wrapper',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'dataviews-view-table__primary-field':\n\t\t\t\t\t\t\t\t\tprimaryField?.id === field.id,\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{ field.render( {\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) ) }\n\t\t\t{ !! actions?.length && (\n\t\t\t\t// Disable reason: we are not making the element interactive,\n\t\t\t\t// but preventing any click events from bubbling up to the\n\t\t\t\t// table row. This allows us to add a click handler to the row\n\t\t\t\t// itself (to toggle row selection) without erroneously\n\t\t\t\t// intercepting click events from ItemActions.\n\n\t\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__actions-column\"\n\t\t\t\t\tonClick={ ( e ) => e.stopPropagation() }\n\t\t\t\t>\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t) }\n\t\t</tr>\n\t);\n}\n\nfunction ViewTable< Item extends AnyItem >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading = false,\n\tonChangeView,\n\tonSelectionChange,\n\tselection,\n\tsetOpenedFilter,\n\tview,\n}: ViewTableProps< Item > ) {\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\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 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( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\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 ].includes( field.id )\n\t);\n\tconst hasData = !! data?.length;\n\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\n\treturn (\n\t\t<>\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 className=\"dataviews-view-table__row\">\n\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tdata-field-id=\"selection\"\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<BulkSelectionCheckbox\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tactions={ actions }\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{ 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\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t: undefined\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\tsetOpenedFilter={ setOpenedFilter }\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\n\t\t\t\t\t\t\t\tdata-field-id=\"actions\"\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__actions-column\"\n\t\t\t\t\t\t\t>\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\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t/>\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={ 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\tid={ tableNoticeId }\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\nexport default ViewTable;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","__","unseen","funnel","Button","Icon","privateApis","componentsPrivateApis","CheckboxControl","Spinner","forwardRef","useEffect","useId","useRef","useState","useMemo","Children","Fragment","SingleSelectionCheckbox","unlock","ItemActions","sanitizeOperators","SORTING_DIRECTIONS","sortArrows","sortLabels","sortValues","useSomeItemHasAPossibleBulkAction","useHasAPossibleBulkAction","jsx","_jsx","jsxs","_jsxs","_Fragment","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","DropdownMenuSeparatorV2","DropdownMenuSeparator","WithDropDownMenuSeparators","children","toArray","filter","Boolean","map","child","i","_HeaderMenu","HeaderMenu","field","view","onChangeView","onHide","setOpenedFilter","ref","isHidable","enableHiding","isSortable","enableSorting","isSorted","sort","id","operators","canAddFilter","filters","some","_filter","elements","length","filterBy","isPrimary","header","align","trigger","size","className","variant","direction","style","minWidth","isChecked","value","name","checked","onChange","prefix","icon","onClick","page","undefined","operator","hiddenFields","concat","BulkSelectionCheckbox","selection","onSelectionChange","data","actions","getItemId","selectableItems","item","action","supportsBulk","isEligible","selectedItems","includes","areAllSelected","__nextHasNoMarginBottom","indeterminate","TableRow","hasBulkActions","visibleFields","primaryField","hasPossibleBulkAction","isSelected","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","isTouchDevice","onMouseEnter","onMouseLeave","onTouchStart","current","document","getSelection","type","_item","itemId","width","disabled","maxWidth","render","e","stopPropagation","ViewTable","fields","isLoading","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","focus","tableNoticeId","hidden","get","fallback","node","layout","mediaField","hasData","find","scope","index","set","delete","toString"],"sources":["@wordpress/dataviews/src/view-table.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ReactNode, Ref, PropsWithoutRef, RefAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n\tCheckboxControl,\n\tSpinner,\n} from '@wordpress/components';\nimport {\n\tforwardRef,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n\tuseMemo,\n\tChildren,\n\tFragment,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SingleSelectionCheckbox from './single-selection-checkbox';\nimport { unlock } from './lock-unlock';\nimport ItemActions from './item-actions';\nimport { sanitizeOperators } from './utils';\nimport {\n\tSORTING_DIRECTIONS,\n\tsortArrows,\n\tsortLabels,\n\tsortValues,\n} from './constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n} from './bulk-actions';\nimport type {\n\tAction,\n\tAnyItem,\n\tNormalizedField,\n\tSortDirection,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n} from './types';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n} = unlock( componentsPrivateApis );\n\ninterface HeaderMenuProps< Item extends AnyItem > {\n\tfield: NormalizedField< Item >;\n\tview: ViewTableType;\n\tonChangeView: ( view: ViewTableType ) => void;\n\tonHide: ( field: NormalizedField< Item > ) => void;\n\tsetOpenedFilter: ( fieldId: string ) => void;\n}\n\ninterface BulkSelectionCheckboxProps< Item extends AnyItem > {\n\tselection: string[];\n\tonSelectionChange: ( items: Item[] ) => void;\n\tdata: Item[];\n\tactions: Action< Item >[];\n\tgetItemId: ( item: Item ) => string;\n}\n\ninterface TableRowProps< Item extends AnyItem > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\tid: string;\n\tvisibleFields: NormalizedField< Item >[];\n\tprimaryField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonSelectionChange: ( items: Item[] ) => void;\n\tdata: Item[];\n}\n\nfunction WithDropDownMenuSeparators( { children }: { children: ReactNode } ) {\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\nconst _HeaderMenu = forwardRef( function HeaderMenu< Item extends AnyItem >(\n\t{\n\t\tfield,\n\t\tview,\n\t\tonChangeView,\n\t\tonHide,\n\t\tsetOpenedFilter,\n\t}: HeaderMenuProps< Item >,\n\tref: Ref< HTMLButtonElement >\n) {\n\tconst isHidable = field.enableHiding !== false;\n\tconst isSortable = field.enableSorting !== false;\n\tconst isSorted = view.sort?.field === field.id;\n\tconst operators = sanitizeOperators( field );\n\t// Filter can be added:\n\t// 1. If the field is not already part of a view's filters.\n\t// 2. If the field meets the type and operator requirements.\n\t// 3. If it's not primary. If it is, it should be already visible.\n\tconst canAddFilter =\n\t\t! view.filters?.some( ( _filter ) => field.id === _filter.field ) &&\n\t\t!! field.elements?.length &&\n\t\t!! operators.length &&\n\t\t! field.filterBy?.isPrimary;\n\tif ( ! isSortable && ! isHidable && ! canAddFilter ) {\n\t\treturn field.header;\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\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{ view.sort && isSorted && (\n\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t{ 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<WithDropDownMenuSeparators>\n\t\t\t\t{ isSortable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t{ SORTING_DIRECTIONS.map(\n\t\t\t\t\t\t\t( direction: SortDirection ) => {\n\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\tview.sort &&\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{ sortLabels[ direction ] }\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{ canAddFilter && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetOpenedFilter( field.id );\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\toperator: operators[ 0 ],\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>\n\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t</DropdownMenuItem>\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</WithDropDownMenuSeparators>\n\t\t</DropdownMenu>\n\t);\n} );\n\n// @ts-expect-error Lift the `Item` type argument through the forwardRef.\nconst HeaderMenu: < Item extends AnyItem >(\n\tprops: PropsWithoutRef< HeaderMenuProps< Item > > &\n\t\tRefAttributes< HTMLButtonElement >\n) => ReturnType< typeof _HeaderMenu > = _HeaderMenu;\n\nfunction BulkSelectionCheckbox< Item extends AnyItem >( {\n\tselection,\n\tonSelectionChange,\n\tdata,\n\tactions,\n\tgetItemId,\n}: BulkSelectionCheckboxProps< Item > ) {\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn actions.some(\n\t\t\t\t( action ) =>\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ data, actions ] );\n\tconst selectedItems = data.filter(\n\t\t( item ) =>\n\t\t\tselection.includes( getItemId( item ) ) &&\n\t\t\tselectableItems.includes( item )\n\t);\n\tconst areAllSelected = selectedItems.length === selectableItems.length;\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-view-table-selection-checkbox\"\n\t\t\t__nextHasNoMarginBottom\n\t\t\tchecked={ areAllSelected }\n\t\t\tindeterminate={ ! areAllSelected && !! selectedItems.length }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( areAllSelected ) {\n\t\t\t\t\tonSelectionChange( [] );\n\t\t\t\t} else {\n\t\t\t\t\tonSelectionChange( selectableItems );\n\t\t\t\t}\n\t\t\t} }\n\t\t\taria-label={\n\t\t\t\tareAllSelected ? __( 'Deselect all' ) : __( 'Select all' )\n\t\t\t}\n\t\t/>\n\t);\n}\n\nfunction TableRow< Item extends AnyItem >( {\n\thasBulkActions,\n\titem,\n\tactions,\n\tid,\n\tvisibleFields,\n\tprimaryField,\n\tselection,\n\tgetItemId,\n\tonSelectionChange,\n\tdata,\n}: TableRowProps< Item > ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = hasPossibleBulkAction && selection.includes( id );\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\t// Will be set to true if `onTouchStart` fires. This happens before\n\t// `onClick` and can be used to exclude touchscreen devices from certain\n\t// behaviours.\n\tconst isTouchDevice = useRef( false );\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ clsx( 'dataviews-view-table__row', {\n\t\t\t\t'is-selected': hasPossibleBulkAction && isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t'has-bulk-actions': hasPossibleBulkAction,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t\tonTouchStart={ () => {\n\t\t\t\tisTouchDevice.current = true;\n\t\t\t} }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( ! hasPossibleBulkAction ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t! isTouchDevice.current &&\n\t\t\t\t\tdocument.getSelection()?.type !== 'Range'\n\t\t\t\t) {\n\t\t\t\t\tif ( ! isSelected ) {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId === id ||\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId !== id &&\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ hasBulkActions && (\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<SingleSelectionCheckbox\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t<td\n\t\t\t\t\tkey={ field.id }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\tminWidth: field.minWidth || undefined,\n\t\t\t\t\t\tmaxWidth: field.maxWidth || undefined,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'dataviews-view-table__cell-content-wrapper',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'dataviews-view-table__primary-field':\n\t\t\t\t\t\t\t\t\tprimaryField?.id === field.id,\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{ field.render( {\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) ) }\n\t\t\t{ !! actions?.length && (\n\t\t\t\t// Disable reason: we are not making the element interactive,\n\t\t\t\t// but preventing any click events from bubbling up to the\n\t\t\t\t// table row. This allows us to add a click handler to the row\n\t\t\t\t// itself (to toggle row selection) without erroneously\n\t\t\t\t// intercepting click events from ItemActions.\n\n\t\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__actions-column\"\n\t\t\t\t\tonClick={ ( e ) => e.stopPropagation() }\n\t\t\t\t>\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t) }\n\t\t</tr>\n\t);\n}\n\nfunction ViewTable< Item extends AnyItem >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading = false,\n\tonChangeView,\n\tonSelectionChange,\n\tselection,\n\tsetOpenedFilter,\n\tview,\n}: ViewTableProps< Item > ) {\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\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 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( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\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 ].includes( field.id )\n\t);\n\tconst hasData = !! data?.length;\n\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\n\treturn (\n\t\t<>\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 className=\"dataviews-view-table__row\">\n\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tdata-field-id=\"selection\"\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<BulkSelectionCheckbox\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\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{ 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\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t: undefined\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\tsetOpenedFilter={ setOpenedFilter }\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\n\t\t\t\t\t\t\t\tdata-field-id=\"actions\"\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__actions-column\"\n\t\t\t\t\t\t\t>\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\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t/>\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={ 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\tid={ tableNoticeId }\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\nexport default ViewTable;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"bulk-actions.d.ts","sourceRoot":"","sources":["../src/bulk-actions.tsx"],"names":[],"mappings":";AAeA,OAAO,KAAK,EAAE,MAAM,EAAe,OAAO,EAAE,MAAM,SAAS,CAAC;AA4B5D,UAAU,gBAAgB,CAAE,IAAI,SAAS,OAAO;IAC/C,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,OAAO,EAAE,MAAM,CAAE,IAAI,CAAE,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iBAAiB,EAAE,CAAE,SAAS,EAAE,IAAI,EAAE,KAAM,IAAI,CAAC;IACjD,SAAS,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,MAAM,CAAC;CACpC;AAED,wBAAgB,yBAAyB,CAAE,IAAI,SAAS,OAAO,EAC9D,OAAO,EAAE,MAAM,CAAE,IAAI,CAAE,EAAE,EACzB,IAAI,EAAE,IAAI,WAUV;AAED,wBAAgB,iCAAiC,CAAE,IAAI,SAAS,OAAO,EACtE,OAAO,EAAE,MAAM,CAAE,IAAI,CAAE,EAAE,EACzB,IAAI,EAAE,IAAI,EAAE,WAYZ;AA6FD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,IAAI,SAAS,OAAO,EAAI,EAC5D,IAAI,EACJ,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,SAAS,GACT,EAAE,gBAAgB,CAAE,IAAI,CAAE,sCAsH1B"}
1
+ {"version":3,"file":"bulk-actions.d.ts","sourceRoot":"","sources":["../src/bulk-actions.tsx"],"names":[],"mappings":";AAeA,OAAO,KAAK,EAAE,MAAM,EAAe,OAAO,EAAE,MAAM,SAAS,CAAC;AA4B5D,UAAU,gBAAgB,CAAE,IAAI,SAAS,OAAO;IAC/C,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,OAAO,EAAE,MAAM,CAAE,IAAI,CAAE,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iBAAiB,EAAE,CAAE,SAAS,EAAE,IAAI,EAAE,KAAM,IAAI,CAAC;IACjD,SAAS,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,MAAM,CAAC;CACpC;AAED,wBAAgB,yBAAyB,CAAE,IAAI,SAAS,OAAO,EAC9D,OAAO,EAAE,MAAM,CAAE,IAAI,CAAE,EAAE,EACzB,IAAI,EAAE,IAAI,WAUV;AAED,wBAAgB,iCAAiC,CAAE,IAAI,SAAS,OAAO,EACtE,OAAO,EAAE,MAAM,CAAE,IAAI,CAAE,EAAE,EACzB,IAAI,EAAE,IAAI,EAAE,WAYZ;AA6FD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,IAAI,SAAS,OAAO,EAAI,EAC5D,IAAI,EACJ,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,SAAS,GACT,EAAE,gBAAgB,CAAE,IAAI,CAAE,sCAiG1B"}
@@ -15,8 +15,10 @@ interface DataViewsProps<Item extends AnyItem> {
15
15
  totalPages: number;
16
16
  };
17
17
  supportedLayouts: string[];
18
+ selection?: string[];
19
+ setSelection?: (selection: string[]) => void;
18
20
  onSelectionChange?: (items: Item[]) => void;
19
21
  }
20
- export default function DataViews<Item extends AnyItem>({ view, onChangeView, fields, search, searchLabel, actions, data, getItemId, isLoading, paginationInfo, supportedLayouts, onSelectionChange, }: DataViewsProps<Item>): import("react").JSX.Element;
22
+ export default function DataViews<Item extends AnyItem>({ view, onChangeView, fields, search, searchLabel, actions, data, getItemId, isLoading, paginationInfo, supportedLayouts, selection: selectionProperty, setSelection: setSelectionProperty, onSelectionChange, }: DataViewsProps<Item>): import("react").JSX.Element;
21
23
  export {};
22
24
  //# sourceMappingURL=dataviews.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataviews.d.ts","sourceRoot":"","sources":["../src/dataviews.tsx"],"names":[],"mappings":";AAuBA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAiB,MAAM,SAAS,CAAC;AAE3E,UAAU,cAAc,CAAE,IAAI,SAAS,OAAO;IAC7C,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,IAAI,CAAC;IACrC,MAAM,EAAE,KAAK,CAAE,IAAI,CAAE,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAE,IAAI,CAAE,EAAE,CAAC;IAC3B,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,SAAS,CAAC,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,MAAM,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAE,KAAK,EAAE,IAAI,EAAE,KAAM,IAAI,CAAC;CAC9C;AAqBD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAE,IAAI,SAAS,OAAO,EAAI,EAC1D,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,MAAa,EACb,WAAuB,EACvB,OAAY,EACZ,IAAI,EACJ,SAA4B,EAC5B,SAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAA4C,GAC5C,EAAE,cAAc,CAAE,IAAI,CAAE,+BAgHxB"}
1
+ {"version":3,"file":"dataviews.d.ts","sourceRoot":"","sources":["../src/dataviews.tsx"],"names":[],"mappings":";AAuBA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAiB,MAAM,SAAS,CAAC;AAE3E,UAAU,cAAc,CAAE,IAAI,SAAS,OAAO;IAC7C,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,IAAI,CAAC;IACrC,MAAM,EAAE,KAAK,CAAE,IAAI,CAAE,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAE,IAAI,CAAE,EAAE,CAAC;IAC3B,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,SAAS,CAAC,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,MAAM,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,CAAE,SAAS,EAAE,MAAM,EAAE,KAAM,IAAI,CAAC;IAC/C,iBAAiB,CAAC,EAAE,CAAE,KAAK,EAAE,IAAI,EAAE,KAAM,IAAI,CAAC;CAC9C;AAqBD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAE,IAAI,SAAS,OAAO,EAAI,EAC1D,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,MAAa,EACb,WAAuB,EACvB,OAAY,EACZ,IAAI,EACJ,SAA4B,EAC5B,SAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,oBAAoB,EAClC,iBAA4C,GAC5C,EAAE,cAAc,CAAE,IAAI,CAAE,+BA6GxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"view-table.d.ts","sourceRoot":"","sources":["../src/view-table.tsx"],"names":[],"mappings":";AA8CA,OAAO,KAAK,EAEX,OAAO,EAIP,cAAc,EACd,MAAM,SAAS,CAAC;AA4WjB,iBAAS,SAAS,CAAE,IAAI,SAAS,OAAO,EAAI,EAC3C,OAAO,EACP,IAAI,EACJ,MAAM,EACN,SAAS,EACT,SAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,IAAI,GACJ,EAAE,cAAc,CAAE,IAAI,CAAE,2CAiKxB;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"view-table.d.ts","sourceRoot":"","sources":["../src/view-table.tsx"],"names":[],"mappings":";AA8CA,OAAO,KAAK,EAEX,OAAO,EAIP,cAAc,EACd,MAAM,SAAS,CAAC;AAsXjB,iBAAS,SAAS,CAAE,IAAI,SAAS,OAAO,EAAI,EAC3C,OAAO,EACP,IAAI,EACJ,MAAM,EACN,SAAS,EACT,SAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,IAAI,GACJ,EAAE,cAAc,CAAE,IAAI,CAAE,2CAkKxB;AAED,eAAe,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/dataviews",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "DataViews is a component that provides an API to render datasets using different types of layouts (table, grid, list, etc.).",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -30,11 +30,11 @@
30
30
  "dependencies": {
31
31
  "@ariakit/react": "^0.3.12",
32
32
  "@babel/runtime": "^7.16.0",
33
- "@wordpress/components": "^28.0.2",
33
+ "@wordpress/components": "^28.0.3",
34
34
  "@wordpress/compose": "^7.0.1",
35
35
  "@wordpress/element": "^6.0.1",
36
36
  "@wordpress/i18n": "^5.0.1",
37
- "@wordpress/icons": "^10.0.1",
37
+ "@wordpress/icons": "^10.0.2",
38
38
  "@wordpress/primitives": "^4.0.1",
39
39
  "@wordpress/private-apis": "^1.0.2",
40
40
  "clsx": "^2.1.1",
@@ -46,5 +46,5 @@
46
46
  "publishConfig": {
47
47
  "access": "public"
48
48
  },
49
- "gitHead": "a68c6b5ef53956cccf4961d53d79b6af7e00ae60"
49
+ "gitHead": "9dd5f8dcfa4fc7242e5d48be20ee789ad087b432"
50
50
  }
@@ -7,7 +7,7 @@ import {
7
7
  Modal,
8
8
  } from '@wordpress/components';
9
9
  import { __, sprintf, _n } from '@wordpress/i18n';
10
- import { useMemo, useState, useCallback, useEffect } from '@wordpress/element';
10
+ import { useMemo, useState, useCallback } from '@wordpress/element';
11
11
 
12
12
  /**
13
13
  * Internal dependencies
@@ -194,37 +194,16 @@ export default function BulkActions< Item extends AnyItem >( {
194
194
  }, [ data, bulkActions ] );
195
195
 
196
196
  const numberSelectableItems = selectableItems.length;
197
- const areAllSelected =
198
- selection && selection.length === numberSelectableItems;
199
197
 
200
198
  const selectedItems = useMemo( () => {
201
- return data.filter( ( item ) =>
202
- selection.includes( getItemId( item ) )
199
+ return data.filter(
200
+ ( item ) =>
201
+ selection.includes( getItemId( item ) ) &&
202
+ selectableItems.includes( item )
203
203
  );
204
- }, [ selection, data, getItemId ] );
204
+ }, [ selection, data, getItemId, selectableItems ] );
205
205
 
206
- const hasNonSelectableItemSelected = useMemo( () => {
207
- return selectedItems.some( ( item ) => {
208
- return ! selectableItems.includes( item );
209
- } );
210
- }, [ selectedItems, selectableItems ] );
211
- useEffect( () => {
212
- if ( hasNonSelectableItemSelected ) {
213
- onSelectionChange(
214
- selectedItems.filter( ( selectedItem ) => {
215
- return selectableItems.some( ( item ) => {
216
- return getItemId( selectedItem ) === getItemId( item );
217
- } );
218
- } )
219
- );
220
- }
221
- }, [
222
- hasNonSelectableItemSelected,
223
- selectedItems,
224
- selectableItems,
225
- getItemId,
226
- onSelectionChange,
227
- ] );
206
+ const areAllSelected = selectedItems.length === numberSelectableItems;
228
207
 
229
208
  if ( bulkActions.length === 0 ) {
230
209
  return null;
@@ -243,15 +222,15 @@ export default function BulkActions< Item extends AnyItem >( {
243
222
  variant="tertiary"
244
223
  size="compact"
245
224
  >
246
- { selection.length
225
+ { selectedItems.length
247
226
  ? sprintf(
248
227
  /* translators: %d: Number of items. */
249
228
  _n(
250
229
  'Edit %d item',
251
230
  'Edit %d items',
252
- selection.length
231
+ selectedItems.length
253
232
  ),
254
- selection.length
233
+ selectedItems.length
255
234
  )
256
235
  : __( 'Bulk edit' ) }
257
236
  </Button>
package/src/dataviews.tsx CHANGED
@@ -7,7 +7,7 @@ import type { ComponentType } from 'react';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { __experimentalHStack as HStack } from '@wordpress/components';
10
- import { useMemo, useState, useCallback, useEffect } from '@wordpress/element';
10
+ import { useMemo, useState, useCallback } from '@wordpress/element';
11
11
 
12
12
  /**
13
13
  * Internal dependencies
@@ -38,6 +38,8 @@ interface DataViewsProps< Item extends AnyItem > {
38
38
  totalPages: number;
39
39
  };
40
40
  supportedLayouts: string[];
41
+ selection?: string[];
42
+ setSelection?: ( selection: string[] ) => void;
41
43
  onSelectionChange?: ( items: Item[] ) => void;
42
44
  }
43
45
 
@@ -72,30 +74,24 @@ export default function DataViews< Item extends AnyItem >( {
72
74
  isLoading = false,
73
75
  paginationInfo,
74
76
  supportedLayouts,
77
+ selection: selectionProperty,
78
+ setSelection: setSelectionProperty,
75
79
  onSelectionChange = defaultOnSelectionChange,
76
80
  }: DataViewsProps< Item > ) {
77
- const [ selection, setSelection ] = useState< string[] >( [] );
81
+ const [ selectionState, setSelectionState ] = useState< string[] >( [] );
82
+ let selection, setSelection;
83
+ if (
84
+ selectionProperty !== undefined &&
85
+ setSelectionProperty !== undefined
86
+ ) {
87
+ selection = selectionProperty;
88
+ setSelection = setSelectionProperty;
89
+ } else {
90
+ selection = selectionState;
91
+ setSelection = setSelectionState;
92
+ }
78
93
  const [ openedFilter, setOpenedFilter ] = useState< string | null >( null );
79
94
 
80
- useEffect( () => {
81
- if (
82
- selection.length > 0 &&
83
- selection.some(
84
- ( id ) => ! data.some( ( item ) => getItemId( item ) === id )
85
- )
86
- ) {
87
- const newSelection = selection.filter( ( id ) =>
88
- data.some( ( item ) => getItemId( item ) === id )
89
- );
90
- setSelection( newSelection );
91
- onSelectionChange(
92
- data.filter( ( item ) =>
93
- newSelection.includes( getItemId( item ) )
94
- )
95
- );
96
- }
97
- }, [ selection, data, getItemId, onSelectionChange ] );
98
-
99
95
  const onSetSelection = useCallback(
100
96
  ( items: Item[] ) => {
101
97
  setSelection( items.map( ( item ) => getItemId( item ) ) );
@@ -112,6 +108,11 @@ export default function DataViews< Item extends AnyItem >( {
112
108
  actions,
113
109
  data
114
110
  );
111
+ const _selection = useMemo( () => {
112
+ return selection.filter( ( id ) =>
113
+ data.some( ( item ) => getItemId( item ) === id )
114
+ );
115
+ }, [ selection, data, getItemId ] );
115
116
  return (
116
117
  <div className="dataviews-wrapper">
117
118
  <HStack
@@ -145,7 +146,7 @@ export default function DataViews< Item extends AnyItem >( {
145
146
  actions={ actions }
146
147
  data={ data }
147
148
  onSelectionChange={ onSetSelection }
148
- selection={ selection }
149
+ selection={ _selection }
149
150
  getItemId={ getItemId }
150
151
  />
151
152
  ) }
@@ -164,7 +165,7 @@ export default function DataViews< Item extends AnyItem >( {
164
165
  isLoading={ isLoading }
165
166
  onChangeView={ onChangeView }
166
167
  onSelectionChange={ onSetSelection }
167
- selection={ selection }
168
+ selection={ _selection }
168
169
  setOpenedFilter={ setOpenedFilter }
169
170
  view={ view }
170
171
  />
@@ -178,7 +179,7 @@ export default function DataViews< Item extends AnyItem >( {
178
179
  <BulkActionsToolbar
179
180
  data={ data }
180
181
  actions={ actions }
181
- selection={ selection }
182
+ selection={ _selection }
182
183
  onSelectionChange={ onSetSelection }
183
184
  getItemId={ getItemId }
184
185
  />
@@ -29,7 +29,7 @@ export default function SingleSelectionCheckbox< Item extends AnyItem >( {
29
29
  disabled,
30
30
  }: SingleSelectionCheckboxProps< Item > ) {
31
31
  const id = getItemId( item );
32
- const isSelected = selection.includes( id );
32
+ const isSelected = ! disabled && selection.includes( id );
33
33
  let selectionLabel;
34
34
  if ( primaryField?.getValue && item ) {
35
35
  // eslint-disable-next-line @wordpress/valid-sprintf
package/src/view-list.tsx CHANGED
@@ -182,7 +182,7 @@ function ListItem< Item extends AnyItem >( {
182
182
  </HStack>
183
183
  </CompositeItem>
184
184
  </div>
185
- { actions?.length > 0 && (
185
+ { eligibleActions?.length > 0 && (
186
186
  <HStack
187
187
  spacing={ 1 }
188
188
  justify="flex-end"
@@ -315,7 +315,7 @@ export default function ViewList< Item extends AnyItem >(
315
315
  } = props;
316
316
  const baseId = useInstanceId( ViewList, 'view-list' );
317
317
  const selectedItem = data?.findLast( ( item ) =>
318
- selection.includes( item.id )
318
+ selection.includes( getItemId( item ) )
319
319
  );
320
320
 
321
321
  const mediaField = fields.find(
@@ -75,6 +75,7 @@ interface BulkSelectionCheckboxProps< Item extends AnyItem > {
75
75
  onSelectionChange: ( items: Item[] ) => void;
76
76
  data: Item[];
77
77
  actions: Action< Item >[];
78
+ getItemId: ( item: Item ) => string;
78
79
  }
79
80
 
80
81
  interface TableRowProps< Item extends AnyItem > {
@@ -249,6 +250,7 @@ function BulkSelectionCheckbox< Item extends AnyItem >( {
249
250
  onSelectionChange,
250
251
  data,
251
252
  actions,
253
+ getItemId,
252
254
  }: BulkSelectionCheckboxProps< Item > ) {
253
255
  const selectableItems = useMemo( () => {
254
256
  return data.filter( ( item ) => {
@@ -259,13 +261,18 @@ function BulkSelectionCheckbox< Item extends AnyItem >( {
259
261
  );
260
262
  } );
261
263
  }, [ data, actions ] );
262
- const areAllSelected = selection.length === selectableItems.length;
264
+ const selectedItems = data.filter(
265
+ ( item ) =>
266
+ selection.includes( getItemId( item ) ) &&
267
+ selectableItems.includes( item )
268
+ );
269
+ const areAllSelected = selectedItems.length === selectableItems.length;
263
270
  return (
264
271
  <CheckboxControl
265
272
  className="dataviews-view-table-selection-checkbox"
266
273
  __nextHasNoMarginBottom
267
274
  checked={ areAllSelected }
268
- indeterminate={ ! areAllSelected && !! selection.length }
275
+ indeterminate={ ! areAllSelected && !! selectedItems.length }
269
276
  onChange={ () => {
270
277
  if ( areAllSelected ) {
271
278
  onSelectionChange( [] );
@@ -293,7 +300,7 @@ function TableRow< Item extends AnyItem >( {
293
300
  data,
294
301
  }: TableRowProps< Item > ) {
295
302
  const hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );
296
- const isSelected = selection.includes( id );
303
+ const isSelected = hasPossibleBulkAction && selection.includes( id );
297
304
 
298
305
  const [ isHovered, setIsHovered ] = useState( false );
299
306
 
@@ -323,6 +330,9 @@ function TableRow< Item extends AnyItem >( {
323
330
  isTouchDevice.current = true;
324
331
  } }
325
332
  onClick={ () => {
333
+ if ( ! hasPossibleBulkAction ) {
334
+ return;
335
+ }
326
336
  if (
327
337
  ! isTouchDevice.current &&
328
338
  document.getSelection()?.type !== 'Range'
@@ -495,6 +505,7 @@ function ViewTable< Item extends AnyItem >( {
495
505
  onSelectionChange={ onSelectionChange }
496
506
  data={ data }
497
507
  actions={ actions }
508
+ getItemId={ getItemId }
498
509
  />
499
510
  </th>
500
511
  ) }