Now scrolls the active card into view by default. Active means first unlocked card?
This commit is contained in:
parent
0e623276b2
commit
6133aca0ef
@ -2,9 +2,16 @@ import BudgetPeriodCard from "./BudgetPeriodCard";
|
|||||||
import './BudgetCardView.scss';
|
import './BudgetCardView.scss';
|
||||||
|
|
||||||
const BudgetCardView = ({budgetPeriods}) => {
|
const BudgetCardView = ({budgetPeriods}) => {
|
||||||
|
const activePeriod = budgetPeriods.find(p => !p.locked);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="budget-card-view-tray">
|
<div className="budget-card-view-tray">
|
||||||
{budgetPeriods.map(p => { return (<BudgetPeriodCard key={p.id} periodData={p} />); })}
|
{budgetPeriods.map(p => {
|
||||||
|
|
||||||
|
return (
|
||||||
|
<BudgetPeriodCard key={p.id} periodData={p} isActive={p === activePeriod} />
|
||||||
|
);
|
||||||
|
})}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,11 +1,12 @@
|
|||||||
import { useState, useEffect } from 'react';
|
import { useState, useEffect, useRef } from 'react';
|
||||||
import BudgetPeriodTransTable from './BudgetPeriodTransTable';
|
import BudgetPeriodTransTable from './BudgetPeriodTransTable';
|
||||||
import Lock from '../resources/Lock.svg';
|
import Lock from '../resources/Lock.svg';
|
||||||
import OpenLock from '../resources/OpenLock.svg';
|
import OpenLock from '../resources/OpenLock.svg';
|
||||||
import './BudgetPeriodCard.scss';
|
import './BudgetPeriodCard.scss';
|
||||||
|
|
||||||
const BudgetPeriodCard = ({periodData}) => {
|
const BudgetPeriodCard = ({periodData, isActive}) => {
|
||||||
const [bankBalance, setBankBalance] = useState(0),
|
const cardRef = useRef(),
|
||||||
|
[bankBalance, setBankBalance] = useState(0),
|
||||||
[projectedLeftover, setProjectedLeftover] = useState(0),
|
[projectedLeftover, setProjectedLeftover] = useState(0),
|
||||||
[bills, setBills] = useState(periodData.bills),
|
[bills, setBills] = useState(periodData.bills),
|
||||||
[paidBills, setPaidBills] = useState([]),
|
[paidBills, setPaidBills] = useState([]),
|
||||||
@ -14,6 +15,12 @@ const BudgetPeriodCard = ({periodData}) => {
|
|||||||
[paidIncomes, setPaidIncomes] = useState([]),
|
[paidIncomes, setPaidIncomes] = useState([]),
|
||||||
[unpaidIncomes, setUnpaidIncomes] = useState([]);
|
[unpaidIncomes, setUnpaidIncomes] = useState([]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if(isActive) {
|
||||||
|
cardRef.current.scrollIntoView({inline: "start"});
|
||||||
|
cardRef.current.parentElement.scrollBy(-40, 0);
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
useEffect(() => { setPaidBills(bills.filter((bill) => bill.paid)); }, [bills]);
|
useEffect(() => { setPaidBills(bills.filter((bill) => bill.paid)); }, [bills]);
|
||||||
useEffect(() => { setUnpaidBills(bills.filter((bill) => !bill.paid)); }, [bills]);
|
useEffect(() => { setUnpaidBills(bills.filter((bill) => !bill.paid)); }, [bills]);
|
||||||
useEffect(() => { setPaidIncomes(incomes.filter((income) => income.paid)); }, [incomes]);
|
useEffect(() => { setPaidIncomes(incomes.filter((income) => income.paid)); }, [incomes]);
|
||||||
@ -34,7 +41,7 @@ const BudgetPeriodCard = ({periodData}) => {
|
|||||||
}, [bankBalance, unpaidBills, unpaidIncomes]);
|
}, [bankBalance, unpaidBills, unpaidIncomes]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='budget-period-card'>
|
<div ref={cardRef} className='budget-period-card'>
|
||||||
<div className='card-header'>
|
<div className='card-header'>
|
||||||
<span className={'lock'}>
|
<span className={'lock'}>
|
||||||
<img src={ periodData.locked ? Lock : OpenLock } alt="lock" />
|
<img src={ periodData.locked ? Lock : OpenLock } alt="lock" />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user