Skip to main content

BulkAction

BulkAction

Configures a bulk action which can be performed on all selected items in a list view.

For a full example, see the registerBulkAction docs.

Signature
interface BulkAction<ItemType = any, ComponentType = any> {
location: BulkActionLocationId;
label: string;
getTranslationVars?: (
context: BulkActionFunctionContext<ItemType, ComponentType>,
) => Record<string, string | number> | Promise<Record<string, string | number>>;
icon?: string;
iconClass?: string;
onClick: (context: BulkActionClickContext<ItemType, ComponentType>) => void;
isVisible?: (context: BulkActionFunctionContext<ItemType, ComponentType>) => boolean | Promise<boolean>;
requiresPermission?: string | ((userPermissions: string[]) => boolean);
}

location

label

property
string

getTranslationVars

property
( context: BulkActionFunctionContext<ItemType, ComponentType>, ) => Record<string, string | number> | Promise<Record<string, string | number>>

An optional function that should resolve to a map of translation variables which can be used when translating the label string.

icon

property
string

A valid Clarity Icons icon shape, e.g. "cog", "user", "info-standard".

iconClass

property
string

A class to be added to the icon element. Examples:

  • is-success
  • is-danger
  • is-warning
  • is-info
  • is-highlight

onClick

property
(context: BulkActionClickContext<ItemType, ComponentType>) => void

Defines the logic that executes when the bulk action button is clicked.

isVisible

property
(context: BulkActionFunctionContext<ItemType, ComponentType>) => boolean | Promise<boolean>

A function that determines whether this bulk action item should be displayed in the menu. If not defined, the item will always be displayed.

This function will be invoked each time the selection is changed, so try to avoid expensive code running here.

Example

import { registerBulkAction, DataService } from '@vendure/admin-ui/core';

registerBulkAction({
location: 'product-list',
label: 'Assign to channel',
// Only display this action if there are multiple channels
isVisible: ({ injector }) => injector.get(DataService).client
.userStatus()
.mapSingle(({ userStatus }) => 1 < userStatus.channels.length)
.toPromise(),
// ...
});

requiresPermission

property
string | ((userPermissions: string[]) => boolean)

Control the display of this item based on the user permissions.

Example

registerBulkAction({
// Can be specified as a simple string
requiresPermission: Permission.UpdateProduct,

// Or as a function that returns a boolean if permissions are satisfied
requiresPermission: userPermissions =>
userPermissions.includes(Permission.UpdateCatalog) ||
userPermissions.includes(Permission.UpdateProduct),
// ...
})

BulkActionLocationId

A valid location of a list view that supports the bulk actions API.

Signature
type BulkActionLocationId = | 'product-list'
| 'facet-list'
| 'collection-list'
| 'customer-list'
| 'customer-group-list'
| 'customer-group-members-list'
| 'customer-group-members-picker-list'
| 'promotion-list'
| 'seller-list'
| 'channel-list'
| 'administrator-list'
| 'role-list'
| 'shipping-method-list'
| 'stock-location-list'
| 'payment-method-list'
| 'tax-category-list'
| 'tax-rate-list'
| 'zone-list'
| 'zone-members-list'
| string

BulkActionFunctionContext

This is the argument which gets passed to the getTranslationVars and isVisible functions of the BulkAction definition.

Signature
interface BulkActionFunctionContext<ItemType, ComponentType> {
selection: ItemType[];
hostComponent: ComponentType;
injector: Injector;
route: ActivatedRoute;
}

selection

property
ItemType[]

An array of the selected items from the list.

hostComponent

property
ComponentType

The component instance that is hosting the list view. For instance, ProductListComponent. This can be used to call methods on the instance, e.g. calling hostComponent.refresh() to force a list refresh after deleting the selected items.

injector

property

The Angular Injector which can be used to get service instances which might be needed in the click handler.

route

property
ActivatedRoute

BulkActionClickContext

This is the argument which gets passed to the onClick function of a BulkAction.

Signature
interface BulkActionClickContext<ItemType, ComponentType> extends BulkActionFunctionContext<ItemType, ComponentType> {
clearSelection: () => void;
event: MouseEvent;
}

clearSelection

property
() => void

Clears the selection in the active list view.

event

property
MouseEvent

The click event itself.