FIX: Clean up (anchorOrigin/transformOrigin) logic

This commit is contained in:
Nicolás Hatcher
2025-03-21 11:19:22 +01:00
committed by Nicolás Hatcher Andrés
parent 475c3e9d49
commit 5683d02b93
3 changed files with 16 additions and 17 deletions

View File

@@ -14,8 +14,8 @@ type ColorPickerProps = {
onChange: (color: string) => void; onChange: (color: string) => void;
onClose: () => void; onClose: () => void;
anchorEl: React.RefObject<HTMLElement | null>; anchorEl: React.RefObject<HTMLElement | null>;
anchorOrigin?: PopoverOrigin; anchorOrigin: PopoverOrigin;
transformOrigin?: PopoverOrigin; transformOrigin: PopoverOrigin;
open: boolean; open: boolean;
}; };
@@ -35,7 +35,6 @@ const ColorPicker = ({
}: ColorPickerProps) => { }: ColorPickerProps) => {
const [selectedColor, setSelectedColor] = useState<string>(color); const [selectedColor, setSelectedColor] = useState<string>(color);
const [isPickerOpen, setPickerOpen] = useState(false); const [isPickerOpen, setPickerOpen] = useState(false);
const [isMenuOpen, setMenuOpen] = useState(open && !isPickerOpen);
const recentColors = useRef<string[]>([]); const recentColors = useRef<string[]>([]);
const { t } = useTranslation(); const { t } = useTranslation();
@@ -43,10 +42,6 @@ const ColorPicker = ({
setSelectedColor(color); setSelectedColor(color);
}, [color]); }, [color]);
useEffect(() => {
setMenuOpen(open && !isPickerOpen);
}, [open, isPickerOpen]);
const handleColorSelect = (color: string) => { const handleColorSelect = (color: string) => {
if (!recentColors.current.includes(color)) { if (!recentColors.current.includes(color)) {
const maxRecentColors = 14; const maxRecentColors = 14;
@@ -62,7 +57,7 @@ const ColorPicker = ({
const handleClose = () => { const handleClose = () => {
setPickerOpen(false); setPickerOpen(false);
if (onClose) onClose(); onClose();
}; };
// Colors definitions // Colors definitions
@@ -120,17 +115,13 @@ const ColorPicker = ({
// Render color picker or menu // Render color picker or menu
return ( return (
<> <>
{isPickerOpen ? ( {isPickerOpen && open ? (
<StylePopover <StylePopover
open={isPickerOpen} open={isPickerOpen}
onClose={handleClose} onClose={handleClose}
anchorEl={anchorEl.current} anchorEl={anchorEl.current}
anchorOrigin={ anchorOrigin={anchorOrigin}
anchorOrigin || { vertical: "bottom", horizontal: "left" } transformOrigin={transformOrigin}
}
transformOrigin={
transformOrigin || { vertical: "top", horizontal: "left" }
}
> >
<ColorPickerDialog> <ColorPickerDialog>
<HexColorPicker <HexColorPicker
@@ -158,7 +149,7 @@ const ColorPicker = ({
</ColorPickerInput> </ColorPickerInput>
<HorizontalDivider /> <HorizontalDivider />
<Buttons> <Buttons>
<CancelButton onClick={handleClose}> <CancelButton onClick={() => setPickerOpen(false)}>
{t("color_picker.cancel")} {t("color_picker.cancel")}
</CancelButton> </CancelButton>
<StyledButton <StyledButton
@@ -176,8 +167,10 @@ const ColorPicker = ({
) : ( ) : (
<StyledMenu <StyledMenu
anchorEl={anchorEl.current} anchorEl={anchorEl.current}
open={isMenuOpen} open={open && !isPickerOpen}
onClose={handleClose} onClose={handleClose}
anchorOrigin={anchorOrigin}
transformOrigin={transformOrigin}
> >
<MenuItemWrapper onClick={() => handleColorSelect(defaultColor)}> <MenuItemWrapper onClick={() => handleColorSelect(defaultColor)}>
<MenuItemSquare style={{ backgroundColor: defaultColor }} /> <MenuItemSquare style={{ backgroundColor: defaultColor }} />

View File

@@ -149,6 +149,8 @@ function SheetTab(props: SheetTabProps) {
}} }}
anchorEl={colorButton} anchorEl={colorButton}
open={colorPickerOpen} open={colorPickerOpen}
anchorOrigin={{ vertical: "bottom", horizontal: "right" }}
transformOrigin={{ vertical: "bottom", horizontal: "left" }}
/> />
<SheetDeleteDialog <SheetDeleteDialog
open={deleteDialogOpen} open={deleteDialogOpen}

View File

@@ -454,6 +454,8 @@ function Toolbar(properties: ToolbarProperties) {
}} }}
anchorEl={fontColorButton} anchorEl={fontColorButton}
open={fontColorPickerOpen} open={fontColorPickerOpen}
anchorOrigin={{ vertical: "bottom", horizontal: "left" }}
transformOrigin={{ vertical: "top", horizontal: "left" }}
/> />
<ColorPicker <ColorPicker
color={properties.fillColor} color={properties.fillColor}
@@ -470,6 +472,8 @@ function Toolbar(properties: ToolbarProperties) {
}} }}
anchorEl={fillColorButton} anchorEl={fillColorButton}
open={fillColorPickerOpen} open={fillColorPickerOpen}
anchorOrigin={{ vertical: "bottom", horizontal: "left" }}
transformOrigin={{ vertical: "top", horizontal: "left" }}
/> />
<BorderPicker <BorderPicker
onChange={(border): void => { onChange={(border): void => {