diff --git a/src/app/portfolio/[slug]/(portfolio)/settings/PortfolioSettings.tsx b/src/app/portfolio/[slug]/(portfolio)/settings/PortfolioSettings.tsx index 3f1530a8..cc5081cd 100644 --- a/src/app/portfolio/[slug]/(portfolio)/settings/PortfolioSettings.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/settings/PortfolioSettings.tsx @@ -5,6 +5,8 @@ import { PortfolioSettingsType } from "../../utils"; import { Button } from "@/app/shadcn_components/ui/button"; import { Input } from "@/app/shadcn_components/ui/input"; import { useRouter } from "next/navigation"; +import { handleNumericKeyDown } from "@/app/utils"; + export default function PortfolioSettings({ portfolioId, @@ -16,6 +18,8 @@ export default function PortfolioSettings({ // Running in the client const router = useRouter(); + //Renaming functionality + const [portfolioName, setPortfolioName] = useState( portfolioSettingsData.name ); @@ -33,16 +37,42 @@ export default function PortfolioSettings({ // Last thing we'd need to do is make that update in the db + //Change budget functionality + const [portfolioBudget, setPortfolioBudget] = useState( + portfolioSettingsData.budget + ); + + function handleBudgetUpdate() { + // API call to change the budget + // apiFunction(portfolioBudget) + // Update portfolio function with budget is equal to portfolioBudget + console.log(portfolioBudget) + router.refresh(); + } + + function handlePortfolioBudgetUpdate(e: React.ChangeEvent) { + setPortfolioBudget(Number(e.target.value)); + } + return ( <>
  • - Name:{" "} - {" "} + Name: +
  • -
  • Budget: {portfolioSettingsData.budget}
  • +
  • + Budget: + {handleNumericKeyDown(e)}} + /> + +
  • Goal: {portfolioSettingsData.goal}
  • Status: {portfolioSettingsData.status}
diff --git a/src/app/utils.ts b/src/app/utils.ts index f8371c7a..319ae0ce 100644 --- a/src/app/utils.ts +++ b/src/app/utils.ts @@ -1,4 +1,16 @@ import { Rating } from "./db/schema/property"; +import { KeyboardEvent} from "react"; + + export function handleNumericKeyDown(event: KeyboardEvent) { + + /** + * Allowing: Integers | Backspace | Tab | Delete | Left & Right arrow keys + **/ + + const regex = new RegExp(/(^\d*$)|(Backspace|Tab|Delete|ArrowLeft|ArrowRight|ArrowUp|ArrowDown)/); + + return !event.key.match(regex) && event.preventDefault(); + } export function convertDaysToWorkingWeeks(days: number | null) { if (days === null) { @@ -149,3 +161,5 @@ export function roundToDecimalPlaces( const factor = 10 ** decimalPlaces; return Math.round(number * factor) / factor; } + +