From 4921bb96d94d0abf3ec43891a49081a8bde875e2 Mon Sep 17 00:00:00 2001 From: rare-magma Date: Fri, 29 Mar 2024 21:28:50 +0100 Subject: [PATCH] feat: add toggle button for item reordering Signed-off-by: rare-magma --- README.md | 2 +- src/components/TableCard/TableCard.css | 22 ++++++++++++++ src/components/TableCard/TableCard.tsx | 41 +++++++++++++++++++++++--- 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 78d07889..3498f7cd 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ Keyboard shortcuts can be triggered when no input field is selected. - Example: English (United States) browser language displays values in US Dollars. English (India) uses Indian Rupees. - It's possible to override it by selecting a different currency code based on [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). - Querying the search bar finds matching budget/expense/income names, opens the budget that contains the match and highlights it. -- The list of Revenue/Expenses can be reordered by dragging each item. +- The list of Revenue/Expenses can be reordered by dragging each item after enabling the toggle button. ## Known issues diff --git a/src/components/TableCard/TableCard.css b/src/components/TableCard/TableCard.css index 7efe79ed..8629f44b 100644 --- a/src/components/TableCard/TableCard.css +++ b/src/components/TableCard/TableCard.css @@ -31,3 +31,25 @@ .revenue-card-header { border-bottom: 1px solid var(--comment); } + +.btn-check:checked + .btn, +.btn.active, +.btn.show { + box-shadow: none !important; + background-color: var(--cyan); + border: 1px solid var(--cyan); + border-radius: 0.375rem; + color: var(--lightbgcolor); +} + +.btn-check + .btn:hover { + box-shadow: none !important; + border: 1px solid var(--cyan); +} + +.btn-check:focus-visible + .btn, +.btn-check { + box-shadow: none !important; + color: var(--cyan); + border: 1px solid var(--cyan); +} diff --git a/src/components/TableCard/TableCard.tsx b/src/components/TableCard/TableCard.tsx index ac8a11bb..b96c407a 100644 --- a/src/components/TableCard/TableCard.tsx +++ b/src/components/TableCard/TableCard.tsx @@ -1,16 +1,17 @@ import Big from "big.js"; import { Reorder } from "framer-motion"; import { produce } from "immer"; -import { useRef } from "react"; +import { useRef, useState } from "react"; import { Button, Card, Col, OverlayTrigger, Row, + ToggleButton, Tooltip, } from "react-bootstrap"; -import { BsPlusLg } from "react-icons/bs"; +import { BsArrowsVertical, BsPlusLg } from "react-icons/bs"; import { useBudget } from "../../context/BudgetContext"; import { useConfig } from "../../context/ConfigContext"; import { @@ -36,6 +37,7 @@ export function TableCard({ header: label }: TableCardProps) { const { budget, setBudget, revenuePercentage } = useBudget(); const { intlConfig } = useConfig(); const inputRef = useRef(null); + const [isDraggable, setIsDraggable] = useState(false); const isRevenue = label === "Revenue"; const isExpense = label === "Expenses"; @@ -131,7 +133,12 @@ export function TableCard({ header: label }: TableCardProps) { as="div" > {table.items?.map((item: ItemForm) => ( - + )}
-
+
{ addItemToTable(table); setTimeout(() => { @@ -177,6 +185,31 @@ export function TableCard({ header: label }: TableCardProps) { + + toggle reordering of items + + } + > + setIsDraggable(!isDraggable)} + checked={isDraggable} + > + + +