diff --git a/packages/ui/package.json b/packages/ui/package.json index 2e906cb30e..ab5f6c451b 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -34,6 +34,8 @@ "@blueprintjs/core": "^4.16.3", "@blueprintjs/popover2": "^1.13.3", "@headlessui/react": "^1.7.17", - "react-color": "^2.19.3" + "@popperjs/core": "^2.11.8", + "react-color": "^2.19.3", + "react-popper": "^2.3.0" } } diff --git a/packages/ui/src/form-fields/input-color-picker.tsx b/packages/ui/src/form-fields/input-color-picker.tsx index 1fdcf8c5e8..738d0e0c80 100644 --- a/packages/ui/src/form-fields/input-color-picker.tsx +++ b/packages/ui/src/form-fields/input-color-picker.tsx @@ -3,6 +3,8 @@ import { Popover, Transition } from "@headlessui/react"; import { ColorResult, SketchPicker } from "react-color"; // components import { Input } from "./input"; +import { usePopper } from "react-popper"; +import { Button } from "../button"; export interface InputColorPickerProps { hasError: boolean; @@ -16,6 +18,15 @@ export interface InputColorPickerProps { export const InputColorPicker: React.FC = (props) => { const { value, hasError, onChange, name, className, placeholder } = props; + const [referenceElement, setReferenceElement] = + React.useState(null); + const [popperElement, setPopperElement] = + React.useState(null); + + const { styles, attributes } = usePopper(referenceElement, popperElement, { + placement: "auto", + }); + const handleColorChange = (newColor: ColorResult) => { const { hex } = newColor; onChange(hex); @@ -26,7 +37,7 @@ export const InputColorPicker: React.FC = (props) => { }; return ( -
+
= (props) => { onChange={handleInputChange} hasError={hasError} placeholder={placeholder} - className={className} + className={`border-none ${className}`} /> -
- - {({ open }) => ( - <> - - {value && value !== "" ? ( - - ) : ( - - - - )} - + + {({ open }) => { + if (open) { + } + return ( + <> + + + = (props) => { leaveFrom="opacity-100 translate-y-0" leaveTo="opacity-0 translate-y-1" > - - + +
+ +
- )} -
-
+ ); + }} +
); }; diff --git a/yarn.lock b/yarn.lock index 6a05e0fde6..8b32e5390d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2835,7 +2835,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@18.0.15", "@types/react@18.0.28", "@types/react@18.2.0", "@types/react@^18.2.5": +"@types/react@*", "@types/react@18.2.0": version "18.2.0" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.0.tgz#15cda145354accfc09a18d2f2305f9fc099ada21" integrity sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA== @@ -2844,6 +2844,33 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@18.0.15": + version "18.0.15" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.15.tgz#d355644c26832dc27f3e6cbf0c4f4603fc4ab7fe" + integrity sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/react@18.0.28": + version "18.0.28" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065" + integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/react@^18.2.5": + version "18.2.28" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.28.tgz#86877465c0fcf751659a36c769ecedfcfacee332" + integrity sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/reactcss@*": version "1.2.6" resolved "https://registry.yarnpkg.com/@types/reactcss/-/reactcss-1.2.6.tgz#133c1e7e896f2726370d1d5a26bf06a30a038bcc"