mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-15 20:30:33 +00:00
WIP / Feature Fix _bills
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import React, { useCallback } from 'react';
|
||||
import PaymentReceiveListField from 'components/PaymentReceiveListField';
|
||||
import classNames from 'classnames';
|
||||
import { FormGroup, Classes, Intent } from '@blueprintjs/core';
|
||||
|
||||
function PaymentReceiveListFieldCell({
|
||||
column: { id },
|
||||
row: { index },
|
||||
cell: { value: initialValue },
|
||||
payload: { invoices, updateData, errors },
|
||||
}) {
|
||||
const handleInvoicesSelected = useCallback(
|
||||
(_item) => {
|
||||
updateData(index, id, _item.id);
|
||||
},
|
||||
[updateData, index, id],
|
||||
);
|
||||
|
||||
const error = errors?.[index]?.[id];
|
||||
|
||||
return (
|
||||
<FormGroup
|
||||
intent={error ? Intent.DANGER : null}
|
||||
className={classNames('form-group--selcet-list', Classes.FILL)}
|
||||
>
|
||||
<PaymentReceiveListField
|
||||
invoices={invoices}
|
||||
onInvoiceSelected={handleInvoicesSelected}
|
||||
selectedInvoiceId={initialValue}
|
||||
/>
|
||||
</FormGroup>
|
||||
);
|
||||
}
|
||||
|
||||
export default PaymentReceiveListFieldCell;
|
||||
38
client/src/components/PaymentReceiveListField.js
Normal file
38
client/src/components/PaymentReceiveListField.js
Normal file
@@ -0,0 +1,38 @@
|
||||
import React, { useCallback } from 'react';
|
||||
import { MenuItem } from '@blueprintjs/core';
|
||||
import ListSelect from 'components/ListSelect';
|
||||
import { FormattedMessage as T } from 'react-intl';
|
||||
|
||||
function PaymentReceiveListField({
|
||||
invoices,
|
||||
selectedInvoiceId,
|
||||
onInvoiceSelected,
|
||||
defaultSelectText = <T id={'select_invoice'} />,
|
||||
}) {
|
||||
const onInvoiceSelect = useCallback((_invoice) => {
|
||||
onInvoiceSelected && onInvoiceSelected(_invoice);
|
||||
});
|
||||
|
||||
const handleInvoiceRenderer = useCallback(
|
||||
(item, { handleClick }) => (
|
||||
<MenuItem id={item.id} name={item.name} onClick={handleClick} />
|
||||
),
|
||||
[],
|
||||
);
|
||||
|
||||
return (
|
||||
<ListSelect
|
||||
item={invoices}
|
||||
noResults={<MenuItem disabled={true} text="No results." />}
|
||||
itemRenderer={handleInvoiceRenderer}
|
||||
popoverProps={{ minimal: true }}
|
||||
onItemSelect={onInvoiceSelect}
|
||||
selectedItem={`${selectedInvoiceId}`}
|
||||
selectedItemProp={'id'}
|
||||
labelProp={'name'}
|
||||
defaultText={defaultSelectText}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export default PaymentReceiveListField;
|
||||
Reference in New Issue
Block a user