import React, { useMemo, useState, useCallback } from 'react'; import Icon from 'components/Icon'; import { Button, NavbarGroup, Classes, NavbarDivider, MenuItem, Menu, Popover, PopoverInteractionKind, Position, Intent, } from '@blueprintjs/core'; import classNames from 'classnames'; import { useRouteMatch, useHistory } from 'react-router-dom'; import { FormattedMessage as T } from 'react-intl'; import { connect } from 'react-redux'; import FilterDropdown from 'components/FilterDropdown'; import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar'; import withDialogActions from 'containers/Dialog/withDialogActions'; import { If } from 'components'; import withResourceDetail from 'containers/Resources/withResourceDetails'; import withManualJournals from 'containers/Accounting/withManualJournals'; import withManualJournalsActions from 'containers/Accounting/withManualJournalsActions'; import { compose } from 'utils'; function ManualJournalActionsBar({ // #withResourceDetail resourceName = 'manual_journals', resourceFields, // #withManualJournals manualJournalsViews, // #withManualJournalsActions addManualJournalsTableQueries, onFilterChanged, selectedRows = [], onBulkDelete, }) { const { path } = useRouteMatch(); const [filterCount, setFilterCount] = useState(0); const history = useHistory(); const viewsMenuItems = manualJournalsViews.map((view) => { return ( ); }); const onClickNewManualJournal = useCallback(() => { history.push('/make-journal-entry'); }, [history]); const filterDropdown = FilterDropdown({ fields: resourceFields, initialCondition: { fieldKey: 'journal_number', compatator: 'contains', value: '', }, onFilterChange: (filterConditions) => { setFilterCount(filterConditions.length || 0); addManualJournalsTableQueries({ filter_roles: filterConditions || '', }); onFilterChanged && onFilterChanged(filterConditions); }, }); const hasSelectedRows = useMemo( () => selectedRows.length > 0, [selectedRows]); // Handle delete button click. const handleBulkDelete = useCallback(() => { onBulkDelete && onBulkDelete(selectedRows.map((r) => r.id)); }, [onBulkDelete, selectedRows]); return ( {viewsMenuItems}} minimal={true} interactionKind={PopoverInteractionKind.HOVER} position={Position.BOTTOM_LEFT} >