// @ts-nocheck import React from 'react'; import intl from 'react-intl-universal'; import { MenuItem } from '@blueprintjs/core'; import { T, Choose, Icon } from '@/components'; import { highlightText } from '@/utils'; import { RESOURCES_TYPES } from '@/constants/resourcesTypes'; import { AbilitySubject, SaleInvoiceAction } from '@/constants/abilityOption'; import withDrawerActions from '@/containers/Drawer/withDrawerActions'; /** * Universal search invoice item select action. */ function InvoiceUniversalSearchSelectComponent({ // #ownProps resourceType, resourceId, // #withDrawerActions openDrawer, }) { if (resourceType === RESOURCES_TYPES.INVOICE) { openDrawer('invoice-detail-drawer', { invoiceId: resourceId }); } return null; } export const InvoiceUniversalSearchSelect = withDrawerActions( InvoiceUniversalSearchSelectComponent, ); /** * Invoice status. */ function InvoiceStatus({ customer }) { return ( {intl.get('overdue_by', { overdue: customer.overdue_days })} {intl.get('due_in', { due: customer.remaining_days })} ); } /** * Universal search invoice item. */ export function InvoiceUniversalSearchItem( item, { handleClick, modifiers, query }, ) { return ( {highlightText(item.text, query)} {highlightText(item.reference.invoice_no, query)}{' '} {item.reference.formatted_invoice_date} } label={ <> ${item.reference.balance} > } onClick={handleClick} className={'universal-search__item--invoice'} /> ); } /** * Transformes invoices to search. * @param {*} invoice * @returns */ const transformInvoicesToSearch = (invoice) => ({ id: invoice.id, text: invoice.customer.display_name, label: invoice.formatted_balance, reference: invoice, }); /** * Binds universal search invoice configure. */ export const universalSearchInvoiceBind = () => ({ resourceType: RESOURCES_TYPES.INVOICE, optionItemLabel: intl.get('invoices'), selectItemAction: InvoiceUniversalSearchSelect, itemRenderer: InvoiceUniversalSearchItem, itemSelect: transformInvoicesToSearch, permission: { ability: SaleInvoiceAction.View, subject: AbilitySubject.Invoice, }, });