diff --git a/src/Corporation/ui/modals/BribeFactionModal.tsx b/src/Corporation/ui/modals/BribeFactionModal.tsx index a690d74bc..92a0fb6ef 100644 --- a/src/Corporation/ui/modals/BribeFactionModal.tsx +++ b/src/Corporation/ui/modals/BribeFactionModal.tsx @@ -9,7 +9,7 @@ import { useCorporation } from "../Context"; import Typography from "@mui/material/Typography"; import Button from "@mui/material/Button"; import MenuItem from "@mui/material/MenuItem"; -import TextField from "@mui/material/TextField"; +import { NumberInput } from "../../../ui/React/NumberInput"; import Box from "@mui/material/Box"; import Select, { SelectChangeEvent } from "@mui/material/Select"; @@ -27,12 +27,10 @@ export function BribeFactionModal(props: IProps): React.ReactElement { return true; }); const corp = useCorporation(); - const [money, setMoney] = useState(0); - const [stock, setStock] = useState(0); + const [money, setMoney] = useState(NaN); + const [stock, setStock] = useState(NaN); const [selectedFaction, setSelectedFaction] = useState(factions.length > 0 ? factions[0] : ""); const disabled = - money === null || - stock === null || (money === 0 && stock === 0) || isNaN(money) || isNaN(stock) || @@ -41,14 +39,6 @@ export function BribeFactionModal(props: IProps): React.ReactElement { corp.funds < money || stock > corp.numShares; - function onMoneyChange(event: React.ChangeEvent): void { - setMoney(parseFloat(event.target.value)); - } - - function onStockChange(event: React.ChangeEvent): void { - setStock(parseFloat(event.target.value)); - } - function changeFaction(event: SelectChangeEvent): void { setSelectedFaction(event.target.value); } @@ -110,8 +100,8 @@ export function BribeFactionModal(props: IProps): React.ReactElement { {getRepText(money ? money : 0, stock ? stock : 0)} - - + + diff --git a/src/Corporation/ui/modals/BuybackSharesModal.tsx b/src/Corporation/ui/modals/BuybackSharesModal.tsx index ae67656c4..def744d65 100644 --- a/src/Corporation/ui/modals/BuybackSharesModal.tsx +++ b/src/Corporation/ui/modals/BuybackSharesModal.tsx @@ -5,7 +5,7 @@ import { use } from "../../../ui/Context"; import { useCorporation } from "../Context"; import Typography from "@mui/material/Typography"; import Button from "@mui/material/Button"; -import TextField from "@mui/material/TextField"; +import { NumberInput } from "../../../ui/React/NumberInput"; import { BuyBackShares } from "../../Actions"; import { dialogBoxCreate } from "../../../ui/React/DialogBox"; import { KEY } from "../../../utils/helpers/keyCodes"; @@ -21,12 +21,7 @@ interface IProps { export function BuybackSharesModal(props: IProps): React.ReactElement { const player = use.Player(); const corp = useCorporation(); - const [shares, setShares] = useState(null); - - function changeShares(event: React.ChangeEvent): void { - if (event.target.value === "") setShares(null); - else setShares(Math.round(parseFloat(event.target.value))); - } + const [shares, setShares] = useState(NaN); const currentStockPrice = corp.sharePrice; const buybackPrice = currentStockPrice * 1.1; @@ -87,11 +82,10 @@ export function BuybackSharesModal(props: IProps): React.ReactElement {
- diff --git a/src/Corporation/ui/modals/IssueNewSharesModal.tsx b/src/Corporation/ui/modals/IssueNewSharesModal.tsx index 570bf86e5..d4a3c50c2 100644 --- a/src/Corporation/ui/modals/IssueNewSharesModal.tsx +++ b/src/Corporation/ui/modals/IssueNewSharesModal.tsx @@ -6,7 +6,7 @@ import { getRandomInt } from "../../../utils/helpers/getRandomInt"; import { CorporationConstants } from "../../data/Constants"; import { useCorporation } from "../Context"; import Typography from "@mui/material/Typography"; -import TextField from "@mui/material/TextField"; +import { NumberInput } from "../../../ui/React/NumberInput"; import Button from "@mui/material/Button"; import { KEY } from "../../../utils/helpers/keyCodes"; @@ -54,15 +54,15 @@ interface IProps { // This is created when the player clicks the "Issue New Shares" buttons in the overview panel export function IssueNewSharesModal(props: IProps): React.ReactElement { const corp = useCorporation(); - const [shares, setShares] = useState(null); + const [shares, setShares] = useState(NaN); const maxNewSharesUnrounded = Math.round(corp.totalShares * 0.2); const maxNewShares = maxNewSharesUnrounded - (maxNewSharesUnrounded % 1e6); const newShares = Math.round((shares || 0) / 10e6) * 10e6; - const disabled = shares === null || isNaN(newShares) || newShares < 10e6 || newShares > maxNewShares; + const disabled = isNaN(shares) || isNaN(newShares) || newShares < 10e6 || newShares > maxNewShares; function issueNewShares(): void { - if (shares === null) return; + if (isNaN(shares)) return; if (disabled) return; const newSharePrice = Math.round(corp.sharePrice * 0.9); @@ -97,11 +97,6 @@ export function IssueNewSharesModal(props: IProps): React.ReactElement { if (event.key === KEY.ENTER) issueNewShares(); } - function onChange(event: React.ChangeEvent): void { - if (event.target.value === "") setShares(null); - else setShares(parseFloat(event.target.value)); - } - return ( @@ -124,7 +119,7 @@ export function IssueNewSharesModal(props: IProps): React.ReactElement { you cannot buy them back. - + diff --git a/src/Corporation/ui/modals/MakeProductModal.tsx b/src/Corporation/ui/modals/MakeProductModal.tsx index 11e36375b..13e8b0da3 100644 --- a/src/Corporation/ui/modals/MakeProductModal.tsx +++ b/src/Corporation/ui/modals/MakeProductModal.tsx @@ -10,6 +10,7 @@ import Button from "@mui/material/Button"; import MenuItem from "@mui/material/MenuItem"; import Select, { SelectChangeEvent } from "@mui/material/Select"; import { KEY } from "../../../utils/helpers/keyCodes"; +import { NumberInput } from "../../../ui/React/NumberInput"; interface IProps { open: boolean; @@ -34,8 +35,8 @@ export function MakeProductModal(props: IProps): React.ReactElement { const allCities = Object.keys(division.offices).filter((cityName: string) => division.offices[cityName] !== 0); const [city, setCity] = useState(allCities.length > 0 ? allCities[0] : ""); const [name, setName] = useState(""); - const [design, setDesign] = useState(null); - const [marketing, setMarketing] = useState(null); + const [design, setDesign] = useState(NaN); + const [marketing, setMarketing] = useState(NaN); if (division.hasMaximumNumberProducts()) return <>; let createProductPopupText = <>; @@ -138,7 +139,7 @@ export function MakeProductModal(props: IProps): React.ReactElement { ); function makeProduct(): void { - if (design === null || marketing === null) return; + if (isNaN(design) || isNaN(marketing)) return; try { MakeProduct(corp, division, city, name, design, marketing); } catch (err) { @@ -155,16 +156,6 @@ export function MakeProductModal(props: IProps): React.ReactElement { setName(event.target.value); } - function onDesignChange(event: React.ChangeEvent): void { - if (event.target.value === "") setDesign(null); - else setDesign(parseFloat(event.target.value)); - } - - function onMarketingChange(event: React.ChangeEvent): void { - if (event.target.value === "") setMarketing(null); - else setMarketing(parseFloat(event.target.value)); - } - function onKeyDown(event: React.KeyboardEvent): void { if (event.key === KEY.ENTER) makeProduct(); } @@ -181,13 +172,8 @@ export function MakeProductModal(props: IProps): React.ReactElement {
- - + +
); diff --git a/src/Corporation/ui/modals/SellSharesModal.tsx b/src/Corporation/ui/modals/SellSharesModal.tsx index 688fb119b..5a414d0d7 100644 --- a/src/Corporation/ui/modals/SellSharesModal.tsx +++ b/src/Corporation/ui/modals/SellSharesModal.tsx @@ -6,11 +6,11 @@ import { use } from "../../../ui/Context"; import { useCorporation } from "../Context"; import { ICorporation } from "../../ICorporation"; import Typography from "@mui/material/Typography"; -import TextField from "@mui/material/TextField"; import Button from "@mui/material/Button"; import { Money } from "../../../ui/React/Money"; import { SellShares } from "../../Actions"; import { KEY } from "../../../utils/helpers/keyCodes"; +import { NumberInput } from "../../../ui/React/NumberInput"; interface IProps { open: boolean; onClose: () => void; @@ -22,14 +22,9 @@ interface IProps { export function SellSharesModal(props: IProps): React.ReactElement { const player = use.Player(); const corp = useCorporation(); - const [shares, setShares] = useState(null); + const [shares, setShares] = useState(NaN); - const disabled = shares === null || isNaN(shares) || shares <= 0 || shares > corp.numShares; - - function changeShares(event: React.ChangeEvent): void { - if (event.target.value === "") setShares(null); - else setShares(Math.round(parseFloat(event.target.value))); - } + const disabled = isNaN(shares) || shares <= 0 || shares > corp.numShares; function ProfitIndicator(props: { shares: number | null; corp: ICorporation }): React.ReactElement { if (props.shares === null) return <>; @@ -88,12 +83,11 @@ export function SellSharesModal(props: IProps): React.ReactElement { The current price of your company's stock is {numeralWrapper.formatMoney(corp.sharePrice)}
-