// @ts-nocheck import React from 'react'; import intl from 'react-intl-universal'; import { MenuItem, Intent } from '@blueprintjs/core'; import { formattedAmount } from '@/utils'; import { T, Icon, Choose, If, TextStatus } from '@/components'; import { RESOURCES_TYPES } from '@/constants/resourcesTypes'; import { AbilitySubject, BillAction } from '@/constants/abilityOption'; import { withDrawerActions } from '@/containers/Drawer/withDrawerActions'; import { DRAWERS } from '@/constants/drawers'; /** * Universal search bill item select action. */ function BillUniversalSearchSelectComponent({ // #ownProps resourceType, resourceId, onAction, // #withDrawerActions openDrawer, }) { if (resourceType === RESOURCES_TYPES.BILL) { openDrawer(DRAWERS.BILL_DETAILS, { billId: resourceId }); onAction && onAction(); } return null; } export const BillUniversalSearchSelect = withDrawerActions( BillUniversalSearchSelectComponent, ); /** * Status accessor. */ export function BillStatus({ bill }) { return ( {intl.get('overdue_by', { overdue: bill.overdue_days })} {intl.get('due_in', { due: bill.remaining_days })} {intl.get('day_partially_paid', { due: formattedAmount(bill.due_amount, bill.currency_code), })} ); } /** * Bill universal search item. */ export function BillUniversalSearchItem( item, { handleClick, modifiers, query }, ) { return ( {item.text} {item.reference.bill_number}{' '} {item.reference.formatted_bill_date} } label={ <> {item.reference.formatted_amount} > } onClick={handleClick} className={'universal-search__item--bill'} /> ); } const billsToSearch = (bill) => ({ id: bill.id, text: bill.vendor.display_name, reference: bill, }); export const universalSearchBillBind = () => ({ resourceType: RESOURCES_TYPES.BILL, optionItemLabel: intl.get('bills'), selectItemAction: BillUniversalSearchSelect, itemRenderer: BillUniversalSearchItem, itemSelect: billsToSearch, permission: { ability: BillAction.View, subject: AbilitySubject.Bill, }, });