From c9785f8f577812d003284f168e0cf55d856b35b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Geonizeli?= Date: Sat, 28 Aug 2021 10:11:20 -0300 Subject: [PATCH 1/2] add input component --- app/javascript/src/components/Input/Input.tsx | 30 +++++++++++++++++++ app/javascript/src/components/Input/index.ts | 0 .../RemoveStakeModal/RemoveStakeModal.tsx | 8 ++--- .../Home/StakeOrderModal/StakeOrderModal.tsx | 8 ++--- .../Exchange/ExchangePanel/ExchangePanel.tsx | 10 ++----- 5 files changed, 37 insertions(+), 19 deletions(-) create mode 100644 app/javascript/src/components/Input/Input.tsx create mode 100644 app/javascript/src/components/Input/index.ts diff --git a/app/javascript/src/components/Input/Input.tsx b/app/javascript/src/components/Input/Input.tsx new file mode 100644 index 0000000..29f5b00 --- /dev/null +++ b/app/javascript/src/components/Input/Input.tsx @@ -0,0 +1,30 @@ +import type { ChangeEvent } from "react"; +import React from "react"; + +export type Props = React.DetailedHTMLProps< + React.InputHTMLAttributes, + HTMLInputElement +>; + +const baseStyles = + "rounded-lg border-transparent flex-1 appearance-none border border-gray-300 w-full py-2 px-4 bg-white text-gray-700 placeholder-gray-400 shadow-sm text-base focus:outline-none focus:ring-2 focus:ring-blue-600 focus:border-transparent mb-3"; + +const Component: React.ForwardRefRenderFunction = (props) => { + const { className = "", onChange, ...rest } = props; + + const handleChange = (e: ChangeEvent) => { + if (!onChange) return; + + onChange(e); + }; + + return ( + + ); +}; + +export const Input = React.forwardRef(Component); diff --git a/app/javascript/src/components/Input/index.ts b/app/javascript/src/components/Input/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/app/javascript/src/pages/Dashboard/Vault/RemoveStakeModal/RemoveStakeModal.tsx b/app/javascript/src/pages/Dashboard/Vault/RemoveStakeModal/RemoveStakeModal.tsx index e32a0be..bd80abb 100644 --- a/app/javascript/src/pages/Dashboard/Vault/RemoveStakeModal/RemoveStakeModal.tsx +++ b/app/javascript/src/pages/Dashboard/Vault/RemoveStakeModal/RemoveStakeModal.tsx @@ -1,14 +1,11 @@ import BigNumber from "bignumber.js"; import type { ChangeEvent, FC } from "react"; import React, { useState } from "react"; -import cx from "classnames"; import { useRelayEnvironment } from "react-relay"; import { Modal } from "../../../../components"; import { commitCreateStakeRemoveOrderMutation } from "./commitCreateStakeRemoveOrder"; - -const inputBaseStyles = - "rounded-lg border-transparent flex-1 appearance-none border border-gray-300 w-full py-2 px-4 bg-white text-gray-700 placeholder-gray-400 shadow-sm text-base focus:outline-none focus:ring-2 focus:ring-blue-600 focus:border-transparent mb-3"; +import { Input } from "../../../../components/Input/Input"; type RemoveStakeModal = { setIsOpen: React.Dispatch>; @@ -72,8 +69,7 @@ export const RemoveStakeModal: FC = ({ CAKE disponível: {stakedCake}
- = ({ poolName, balance }) => { const environment = useRelayEnvironment(); const [isOpen, setIsOpen] = useState(false); @@ -72,8 +69,7 @@ export const StakeOrderModal: FC = ({ poolName, balance }) => { CAKE disponível: {balance}
- = ({
{exchangeOption === "BUY" ? ( <> - = ({ ) : ( <> - Date: Sat, 28 Aug 2021 10:27:38 -0300 Subject: [PATCH 2/2] add button component --- .../src/components/Button/Button.tsx | 42 +++++++++++++++++++ app/javascript/src/components/Button/index.ts | 1 + app/javascript/src/components/Input/Input.tsx | 2 +- app/javascript/src/components/Input/index.ts | 1 + app/javascript/src/components/index.ts | 2 + .../RemoveStakeModal/RemoveStakeModal.tsx | 11 ++--- .../Home/StakeOrderModal/StakeOrderModal.tsx | 10 ++--- .../Exchange/ExchangePanel/ExchangePanel.tsx | 6 +-- 8 files changed, 56 insertions(+), 19 deletions(-) create mode 100644 app/javascript/src/components/Button/Button.tsx create mode 100644 app/javascript/src/components/Button/index.ts diff --git a/app/javascript/src/components/Button/Button.tsx b/app/javascript/src/components/Button/Button.tsx new file mode 100644 index 0000000..ffb7609 --- /dev/null +++ b/app/javascript/src/components/Button/Button.tsx @@ -0,0 +1,42 @@ +import type { MouseEvent } from "react"; +import React from "react"; +import cn from "classnames"; + +type Props = React.DetailedHTMLProps< + React.ButtonHTMLAttributes, + HTMLButtonElement +> & { + variant?: "primary" | "dangeour"; +}; + +const baseStyles = + "cursor-pointer py-2 px-4 disabled:opacity-50 disabled:cursor-default text-white w-full transition ease-in duration-200 text-center text-base font-semibold shadow-md focus:outline-none focus:ring-2 focus:ring-offset-2 rounded-lg"; + +const Component: React.ForwardRefRenderFunction = (props) => { + const { className = "", variant = "primary", onClick, ...rest } = props; + + const handleClick = ( + e: MouseEvent + ) => { + e.stopPropagation(); + + if (onClick) { + onClick(e); + } + }; + + const variantStyle = + variant === "primary" + ? "bg-blue-600 hover:bg-blue-700 focus:ring-blue-500 focus:ring-offset-blue-200" + : "bg-red-600 hover:bg-red-700 focus:ring-red-500 focus:ring-offset-red-200"; + + return ( + + ); diff --git a/app/javascript/src/pages/Home/StakeOrderModal/StakeOrderModal.tsx b/app/javascript/src/pages/Home/StakeOrderModal/StakeOrderModal.tsx index d71cf78..32b634d 100644 --- a/app/javascript/src/pages/Home/StakeOrderModal/StakeOrderModal.tsx +++ b/app/javascript/src/pages/Home/StakeOrderModal/StakeOrderModal.tsx @@ -3,7 +3,7 @@ import React, { useState } from "react"; import { BigNumber } from "bignumber.js"; import { useRelayEnvironment } from "react-relay"; -import { Modal } from "../../../components"; +import { Button, Modal } from "../../../components"; import { commitCreateStakeOrderMutation } from "./createStakeOrder"; import { Input } from "../../../components/Input/Input"; @@ -86,13 +86,9 @@ export const StakeOrderModal: FC = ({ poolName, balance }) => { {avaliableCake.isEqualTo(0) && ( Você não possuí saldo. )} - +
diff --git a/app/javascript/src/pages/Orders/Exchange/ExchangePanel/ExchangePanel.tsx b/app/javascript/src/pages/Orders/Exchange/ExchangePanel/ExchangePanel.tsx index 05f17bb..3bece62 100644 --- a/app/javascript/src/pages/Orders/Exchange/ExchangePanel/ExchangePanel.tsx +++ b/app/javascript/src/pages/Orders/Exchange/ExchangePanel/ExchangePanel.tsx @@ -11,7 +11,7 @@ import type { ExchangePanel_fiatBalances$key } from "./__generated__/ExchangePan import type { ExchangePanel_balances$key } from "./__generated__/ExchangePanel_balances.graphql"; import { commitCreateSellCryptoOrderMutation } from "./createSellCryptoOrder"; import { commitCreateBuyCryptoOrderMutation } from "./createBuyCryptoOrder"; -import { Input } from "../../../../components/Input/Input"; +import { Input, Button } from "../../../../components"; const tabBaseStyles = "w-full text-base font-bold text-black px-4 py-2 focus:ring-blue-500"; @@ -192,13 +192,13 @@ export const ExchangePanel: FC = ({ )}
- +
);