feat: add transaction select.

This commit is contained in:
elforjani13
2022-06-23 21:51:34 +02:00
parent f268b8a95a
commit cd08d0ee16
4 changed files with 80 additions and 13 deletions

View File

@@ -1,5 +1,6 @@
// @ts-nocheck // @ts-nocheck
import React from 'react'; import React from 'react';
import { useHistory } from 'react-router-dom';
import { import {
Button, Button,
Classes, Classes,
@@ -13,6 +14,7 @@ import {
FormattedMessage as T, FormattedMessage as T,
DashboardRowsHeightButton, DashboardRowsHeightButton,
} from 'components'; } from 'components';
import { TransactionSelect } from './components';
import withSettings from '../../../Settings/withSettings'; import withSettings from '../../../Settings/withSettings';
import withSettingsActions from '../../../Settings/withSettingsActions'; import withSettingsActions from '../../../Settings/withSettingsActions';
import withDialogActions from 'containers/Dialog/withDialogActions'; import withDialogActions from 'containers/Dialog/withDialogActions';
@@ -33,10 +35,13 @@ function ProjectDetailActionsBar({
// #withSettingsActions // #withSettingsActions
addSetting, addSetting,
}) { }) {
const history = useHistory();
const { projectId } = useProjectDetailContext(); const { projectId } = useProjectDetailContext();
// Handle new transaction button click. // Handle new transaction button click.
const handleNewTransactionBtnClick = () => {}; const handleNewTransactionBtnClick = ({ path }) => {
history.push(`/${path}`);
};
const handleEditProjectBtnClick = () => { const handleEditProjectBtnClick = () => {
openDialog('project-form', { openDialog('project-form', {
@@ -60,11 +65,12 @@ function ProjectDetailActionsBar({
return ( return (
<DashboardActionsBar> <DashboardActionsBar>
<NavbarGroup> <NavbarGroup>
<Button <TransactionSelect
className={Classes.MINIMAL} transactions={[
icon={<Icon icon={'plus'} />} { name: 'Invoice', path: 'invoices/new' },
text={<T id={'projcet_details.action.new_transaction'} />} { name: 'Expenses', path: 'expenses/new' },
onClick={handleNewTransactionBtnClick} ]}
onItemSelect={handleNewTransactionBtnClick}
/> />
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}

View File

@@ -27,14 +27,14 @@ export const FinancialProgressBar = ({ ...rest }) => {
return <FinancialCardProgressBar animate={false} stripes={false} {...rest} />; return <FinancialCardProgressBar animate={false} stripes={false} {...rest} />;
}; };
export const FinancialSectionWrap = styled.div` const FinancialSectionWrap = styled.div`
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
margin: 20px 20px 20px; margin: 20px 20px 20px;
gap: 10px; gap: 10px;
`; `;
export const FinancialSectionCard = styled.div` const FinancialSectionCard = styled.div`
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex-shrink: 0; flex-shrink: 0;
@@ -45,27 +45,27 @@ export const FinancialSectionCard = styled.div`
border: 1px solid #c8cad0; // #000a1e33 #f0f0f0 border: 1px solid #c8cad0; // #000a1e33 #f0f0f0
`; `;
export const FinancialSectionCardContent = styled.div` const FinancialSectionCardContent = styled.div`
margin: 16px; margin: 16px;
/* flex-direction: column; */ /* flex-direction: column; */
`; `;
export const FinancialCardWrap = styled.div``; const FinancialCardWrap = styled.div``;
export const FinancialCardTitle = styled.div` const FinancialCardTitle = styled.div`
font-size: 15px; font-size: 15px;
color: #000; color: #000;
white-space: nowrap; white-space: nowrap;
font-weight: 400; font-weight: 400;
line-height: 1.5rem; line-height: 1.5rem;
`; `;
export const FinancialCardValue = styled.div` const FinancialCardValue = styled.div`
font-size: 21px; font-size: 21px;
line-height: 2rem; line-height: 2rem;
font-weight: 700; font-weight: 700;
`; `;
export const FinancialCardStatus = styled.div``; const FinancialCardStatus = styled.div``;
export const FinancialCardText = styled.div` export const FinancialCardText = styled.div`
font-size: 13px; font-size: 13px;

View File

@@ -0,0 +1,60 @@
//@ts-nocheck
import React from 'react';
import {
MenuItem,
Button,
Position,
PopoverInteractionKind,
} from '@blueprintjs/core';
import { Select } from '@blueprintjs/select';
import { Icon, FormattedMessage as T } from 'components';
/**
*
* @param {*} film
* @param {*} param1
* @returns
*/
const transactionItemRenderer = (
transaction,
{ handleClick, modifiers, query },
) => {
return (
<MenuItem
disabled={modifiers.disabled}
key={transaction.path}
onClick={handleClick}
text={transaction.name}
/>
);
};
const transactionSelectProps = {
itemRenderer: transactionItemRenderer,
filterable: false,
popoverProps: {
minimal: true,
position: Position.BOTTOM_LEFT,
interactionKind: PopoverInteractionKind.CLICK,
modifiers: {
offset: { offset: '0, 4' },
},
},
};
/**
*
* @param
* @returns
*/
export function TransactionSelect({ transactions, ...rest }) {
return (
<Select {...transactionSelectProps} items={transactions} {...rest}>
<Button
minimal={true}
icon={<Icon icon={'plus'} />}
text={<T id={'projcet_details.action.new_transaction'} />}
/>
</Select>
);
}

View File

@@ -1,2 +1,3 @@
export * from './ProjectSelect'; export * from './ProjectSelect';
export * from './TransactionSelect';
export * from './FinancialSection'; export * from './FinancialSection';