import React, { useState, useEffect, useCallback, useMemo } from 'react'; import { Button, Popover, Menu, MenuItem, MenuDivider, Position, } from '@blueprintjs/core'; import { FormattedMessage as T, useIntl } from 'react-intl'; import DataTable from 'components/DataTable'; import Icon from 'components/Icon'; import { useUpdateEffect } from 'hooks'; import LoadingIndicator from 'components/LoadingIndicator'; import withCustomers from './withCustomers'; import { compose } from 'utils'; const CustomerTable = ({ loading, //#withCustomers customers, customersLoading, //#props onEditCustomer, onDeleteCustomer, onFetchData, onSelectedRowsChange, }) => { const { formatMessage } = useIntl(); const [initialMount, setInitialMount] = useState(false); useUpdateEffect(() => { if (!customersLoading) { setInitialMount(true); } }, [customersLoading, setInitialMount]); const handleEditCustomer = useCallback( (customer) => () => { onEditCustomer && onEditCustomer(customer); }, [onEditCustomer], ); const handleDeleteCustomer = useCallback( (customer) => () => { onDeleteCustomer && onDeleteCustomer(customer); }, [onDeleteCustomer], ); const actionMenuList = useCallback((customer) => ( } /> } onClick={handleEditCustomer(customer)} /> } onClick={handleDeleteCustomer(customer)} /> )); const columns = useMemo( () => [ { id: 'display_name', Header: formatMessage({ id: 'display_name' }), accessor: 'display_name', className: 'display_name', width: 150, }, { id: 'company_name', Header: formatMessage({ id: 'company_name' }), accessor: 'company_name', className: 'company_name', width: 150, }, { id: 'phone_number', Header: formatMessage({ id: 'phone_number' }), accessor: 'work_phone', className: 'phone_number', width: 100, }, { id: 'receivable_balance', Header: formatMessage({ id: 'receivable_balance' }), // accessor: '', className: 'receivable_balance', width: 100, }, { id: 'actions', Cell: ({ cell }) => (