-
Joel Jeremy Marquez authored
* Balance menu modal enhancement * Release notes * Fix typecheck error
Joel Jeremy Marquez authored* Balance menu modal enhancement * Release notes * Fix typecheck error
RolloverBalanceMenuModal.tsx 2.13 KiB
import React, { type ComponentPropsWithoutRef } from 'react';
import { rolloverBudget } from 'loot-core/client/queries';
import { useCategory } from '../../hooks/useCategory';
import { type CSSProperties, theme, styles } from '../../style';
import { BalanceWithCarryover } from '../budget/BalanceWithCarryover';
import { BalanceMenu } from '../budget/rollover/BalanceMenu';
import { Modal } from '../common/Modal';
import { View } from '../common/View';
import { type CommonModalProps } from '../Modals';
type RolloverBalanceMenuModalProps = ComponentPropsWithoutRef<
typeof BalanceMenu
> & {
modalProps: CommonModalProps;
};
export function RolloverBalanceMenuModal({
modalProps,
categoryId,
onCarryover,
onTransfer,
onCover,
}: RolloverBalanceMenuModalProps) {
const defaultMenuItemStyle: CSSProperties = {
...styles.mobileMenuItem,
color: theme.menuItemText,
borderRadius: 0,
borderTop: `1px solid ${theme.pillBorder}`,
};
const category = useCategory(categoryId);
if (!category) {
return null;
}
return (
<Modal
title={`Balance: ${category.name}`}
showHeader
focusAfterClose={false}
{...modalProps}
padding={0}
style={{
flex: 1,
padding: '0 10px',
paddingBottom: 10,
borderRadius: '6px',
}}
>
<View
style={{
justifyContent: 'center',
alignItems: 'center',
marginBottom: 20,
}}
>
<BalanceWithCarryover
disabled
balanceStyle={{
textAlign: 'center',
...styles.veryLargeText,
}}
carryoverStyle={{ right: -20, width: 15, height: 15 }}
carryover={rolloverBudget.catCarryover(categoryId)}
balance={rolloverBudget.catBalance(categoryId)}
goal={rolloverBudget.catGoal(categoryId)}
budgeted={rolloverBudget.catBudgeted(categoryId)}
/>
</View>
<BalanceMenu
categoryId={categoryId}
getItemStyle={() => defaultMenuItemStyle}
onCarryover={onCarryover}
onTransfer={onTransfer}
onCover={onCover}
/>
</Modal>
);
}