import React, { useMemo, useState, useCallback } from 'react'; import Icon from 'components/Icon'; import { Button, NavbarGroup, Classes, NavbarDivider, Popover, PopoverInteractionKind, Position, Intent, } from '@blueprintjs/core'; import classNames from 'classnames'; import { connect } from 'react-redux'; import { FormattedMessage as T } from 'react-intl'; import { If, DashboardActionViewsList } from 'components'; import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar'; import FilterDropdown from 'components/FilterDropdown'; import withDialogActions from 'containers/Dialog/withDialogActions'; import withResourceDetail from 'containers/Resources/withResourceDetails'; import withAccountsTableActions from 'containers/Accounts/withAccountsTableActions'; import withAccounts from 'containers/Accounts/withAccounts'; import { compose } from 'utils'; function AccountsActionsBar({ openDialog, accountsViews, // #withResourceDetail resourceFields, // #withAccountsActions addAccountsTableQueries, // #withAccounts accountsTableQuery, selectedRows = [], onFilterChanged, onBulkDelete, onBulkArchive, onBulkActivate, onBulkInactive, }) { const [filterCount, setFilterCount] = useState( accountsTableQuery?.filter_roles?.length || 0, ); const onClickNewAccount = () => { openDialog('account-form', {}); }; const hasSelectedRows = useMemo(() => selectedRows.length > 0, [ selectedRows, ]); const filterDropdown = FilterDropdown({ fields: resourceFields, initialConditions: accountsTableQuery.filter_roles, initialCondition: { fieldKey: 'name', comparator: 'contains', value: '', }, onFilterChange: (filterConditions) => { setFilterCount(filterConditions.length || 0); addAccountsTableQueries({ filter_roles: filterConditions || '', }); onFilterChanged && onFilterChanged(filterConditions); }, }); const handleBulkDelete = useCallback(() => { onBulkDelete && onBulkDelete(selectedRows.map((r) => r.id)); }, [onBulkDelete, selectedRows]); const handelBulkActivate = useCallback(() => { onBulkActivate && onBulkActivate(selectedRows.map((r) => r.id)); }, [onBulkActivate, selectedRows]); const handelBulkInactive = useCallback(() => { onBulkInactive && onBulkInactive(selectedRows.map((r) => r.id)); }, [onBulkInactive, selectedRows]); return (