From efb5286efa646f0670899b41aedc81f43faaf085 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 29 Feb 2024 10:55:48 +0800 Subject: [PATCH] Handle switching state on first hover of button --- .../elements/icons/HeaderCheckboxIcon.tsx | 21 +++++++------------ .../templates/homeFeed/LibraryHeader.tsx | 20 +++++++++++------- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/packages/web/components/elements/icons/HeaderCheckboxIcon.tsx b/packages/web/components/elements/icons/HeaderCheckboxIcon.tsx index d98c6639f..c7cf3397c 100644 --- a/packages/web/components/elements/icons/HeaderCheckboxIcon.tsx +++ b/packages/web/components/elements/icons/HeaderCheckboxIcon.tsx @@ -6,7 +6,6 @@ import React from 'react' import { MultiSelectMode } from '../../templates/homeFeed/LibraryHeader' type HeaderCheckboxIconProps = { - color: string multiSelectMode: MultiSelectMode } @@ -16,20 +15,18 @@ export const HeaderCheckboxIcon = ( switch (props.multiSelectMode) { case 'search': case 'visible': - return + return case 'none': case 'off': - return + return case 'some': - return + return } } export class HeaderCheckboxUncheckedIcon extends React.Component { render() { const size = (this.props.size || 26).toString() - const color = this.props.color || 'white' - return ( { export class HeaderCheckboxCheckedIcon extends React.Component { render() { const size = (this.props.size || 26).toString() - const color = this.props.color || 'white' - return ( { - + { export class HeaderCheckboxHalfCheckedIcon extends React.Component { render() { const size = (this.props.size || 26).toString() - const color = this.props.color || 'white' - return ( { fill="none" xmlns="http://www.w3.org/2000/svg" > - + { e.preventDefault() }} > - + ) } @@ -413,6 +410,8 @@ export function SearchBox(props: LibraryHeaderProps): JSX.Element { function MultiSelectControls(props: LibraryHeaderProps): JSX.Element { const [showConfirmDelete, setShowConfirmDelete] = useState(false) const [showLabelsModal, setShowLabelsModal] = useState(false) + // Don't change on immediate hover, the button has to be blurred at least once + const [hoveredOut, setHoveredOut] = useState(false) const compact = false return ( @@ -426,6 +425,10 @@ function MultiSelectControls(props: LibraryHeaderProps): JSX.Element { boxShadow: '0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);', }} + onMouseLeave={(event) => { + setHoveredOut(true) + event.preventDefault() + }} >