Create Color Picker Component
This commit is contained in:
parent
43de491616
commit
b861b8fb50
|
|
@ -0,0 +1,130 @@
|
|||
import { Modal } from "antd";
|
||||
import { CloseOutlined, PlusOutlined } from "@ant-design/icons";
|
||||
import { SwatchesPicker } from "react-color";
|
||||
import { useEffect, useState } from "react";
|
||||
import Buttons from "../../../../Components/Forms/Buttons";
|
||||
|
||||
const ColorsSelected = ({ open, onClose, onSave, initial = {} }) => {
|
||||
const [colorType, setColorType] = useState("background");
|
||||
const [bgColor, setBgColor] = useState(initial.background || "#ffffff");
|
||||
const [fontColor, setFontColor] = useState(initial.font || "#000000" );
|
||||
|
||||
// reset when modal is opened with different initial colors
|
||||
useEffect(() => {
|
||||
if (initial.background) setBgColor(initial.background);
|
||||
if (initial.font) setFontColor(initial.font);
|
||||
}, [initial, open]);
|
||||
|
||||
const handleColorChange = (color) => {
|
||||
if (colorType === "background") {
|
||||
setBgColor(color.hex);
|
||||
} else {
|
||||
setFontColor(color.hex);
|
||||
}
|
||||
};
|
||||
|
||||
const handleSave = () => {
|
||||
onSave({
|
||||
background: bgColor,
|
||||
font: fontColor,
|
||||
});
|
||||
onClose();
|
||||
};
|
||||
|
||||
return (
|
||||
<Modal
|
||||
open={open}
|
||||
title="Colors"
|
||||
onCancel={onClose}
|
||||
closeIcon={<CloseOutlined />}
|
||||
footer={null}
|
||||
width={400}
|
||||
>
|
||||
|
||||
|
||||
{/* ✅ Selected Color Preview */}
|
||||
<div
|
||||
style={{
|
||||
display: "flex",
|
||||
justifyContent: "space-between",
|
||||
border: "1px solid #ccc",
|
||||
padding: "10px",
|
||||
borderRadius: "8px",
|
||||
marginBottom: "15px",
|
||||
}}
|
||||
>
|
||||
<div
|
||||
style={{
|
||||
display: "flex",
|
||||
justifyContent: "space-between",
|
||||
gap:'10px',
|
||||
}}
|
||||
>
|
||||
{/* Background Preview */}
|
||||
<div
|
||||
onClick={() => setColorType("background")}
|
||||
style={{
|
||||
cursor: "pointer",
|
||||
padding: "5px",
|
||||
borderRadius: "6px",
|
||||
border:
|
||||
colorType === "background"
|
||||
? "2px solid #901D77"
|
||||
: "1px solid transparent",
|
||||
}}
|
||||
>
|
||||
<p style={{ fontSize: 12, fontWeight: 600 }}>
|
||||
Background
|
||||
</p>
|
||||
<div
|
||||
style={{
|
||||
|
||||
width: 40,
|
||||
height: 25,
|
||||
backgroundColor: bgColor,
|
||||
borderRadius: 5,
|
||||
border: "1px solid #000",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Font Preview */}
|
||||
<div
|
||||
onClick={() => setColorType("font")}
|
||||
style={{
|
||||
cursor: "pointer",
|
||||
padding: "5px",
|
||||
borderRadius: "6px",
|
||||
border:
|
||||
colorType === "font"
|
||||
? "2px solid #901D77"
|
||||
: "1px solid transparent",
|
||||
}}
|
||||
>
|
||||
<p style={{ fontSize: 12, fontWeight: 600 }}>
|
||||
Font
|
||||
</p>
|
||||
<div
|
||||
style={{
|
||||
width: 40,
|
||||
height: 25,
|
||||
backgroundColor: fontColor,
|
||||
borderRadius: 5,
|
||||
border: "1px solid #000",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Color Picker */}
|
||||
<SwatchesPicker onChange={handleColorChange} />
|
||||
|
||||
<button className="colorBtn" onClick={handleSave}>
|
||||
SAVE
|
||||
</button>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
export default ColorsSelected;
|
||||
Loading…
Reference in New Issue