From 614b086ca4e1c5550886721ae9d99385b31ca44c Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 29 Feb 2024 12:01:58 +0800 Subject: [PATCH] Better hovers for header items --- .../components/elements/icons/BrowserIcon.tsx | 10 - .../templates/homeFeed/LibraryHeader.tsx | 235 +++--------------- 2 files changed, 37 insertions(+), 208 deletions(-) diff --git a/packages/web/components/elements/icons/BrowserIcon.tsx b/packages/web/components/elements/icons/BrowserIcon.tsx index 76ac05779..33db6004f 100644 --- a/packages/web/components/elements/icons/BrowserIcon.tsx +++ b/packages/web/components/elements/icons/BrowserIcon.tsx @@ -59,13 +59,3 @@ export class BrowserIcon extends React.Component { ) } } - -// -// -// diff --git a/packages/web/components/templates/homeFeed/LibraryHeader.tsx b/packages/web/components/templates/homeFeed/LibraryHeader.tsx index 37fa0d0d1..93e97ba97 100644 --- a/packages/web/components/templates/homeFeed/LibraryHeader.tsx +++ b/packages/web/components/templates/homeFeed/LibraryHeader.tsx @@ -11,22 +11,16 @@ import { OmnivoreSmallLogo } from '../../elements/images/OmnivoreNameLogo' import { DEFAULT_HEADER_HEIGHT, HeaderSpacer } from './HeaderSpacer' import { LIBRARY_LEFT_MENU_WIDTH } from '../navMenu/LibraryMenu' import { BulkAction } from '../../../lib/networking/mutations/bulkActionMutation' -import { ConfirmationModal } from '../../patterns/ConfirmationModal' -import { AddBulkLabelsModal } from '../article/AddBulkLabelsModal' -import { Label } from '../../../lib/networking/fragments/labelFragment' -import { ArchiveIcon } from '../../elements/icons/ArchiveIcon' -import { TrashIcon } from '../../elements/icons/TrashIcon' -import { LabelIcon } from '../../elements/icons/LabelIcon' -import { HeaderCheckboxIcon } from '../../elements/icons/HeaderCheckboxIcon' import { HeaderToggleGridIcon } from '../../elements/icons/HeaderToggleGridIcon' import { HeaderToggleListIcon } from '../../elements/icons/HeaderToggleListIcon' import { HeaderToggleTLDRIcon } from '../../elements/icons/HeaderToggleTLDRIcon' import { UserBasicData } from '../../../lib/networking/queries/useGetViewerQuery' import { userHasFeature } from '../../../lib/featureFlag' +import { MultiSelectControls, CheckBoxButton } from './MultiSelectControls' export type MultiSelectMode = 'off' | 'none' | 'some' | 'visible' | 'search' -type LibraryHeaderProps = { +export type LibraryHeaderProps = { viewer: UserBasicData | undefined layout: LayoutType @@ -140,32 +134,6 @@ function LargeHeaderLayout(props: LibraryHeaderProps): JSX.Element { ) } -const CheckBoxButton = (props: LibraryHeaderProps): JSX.Element => { - const color = theme.colors.thLibraryMenuUnselected.toString() - return ( - - ) -} - const HeaderControls = (props: LibraryHeaderProps): JSX.Element => { return ( <> @@ -341,6 +309,8 @@ export function SearchBox(props: LibraryHeaderProps): JSX.Element { border: focused ? '2px solid $searchActiveOutline' : '2px solid transparent', + borderTopRightRadius: '6px', + borderBottomRightRadius: '6px', width: '100%', height: '100%', }} @@ -381,25 +351,17 @@ export function SearchBox(props: LibraryHeaderProps): JSX.Element { alignment="center" css={{ py: '15px', + mr: '10px', marginLeft: 'auto', }} > - { - event.preventDefault() + { setSearchTerm('in:inbox') props.applySearchQuery('') inputRef.current?.blur() }} - tabIndex={-1} - > - - + /> @@ -407,164 +369,41 @@ 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 +type CancelSearchButtonProps = { + onClick: () => void +} +const CancelSearchButton = (props: CancelSearchButtonProps): JSX.Element => { + const [color, setColor] = useState( + theme.colors.thTextContrast2.toString() + ) return ( - { - setHoveredOut(true) + onMouseEnter={(event) => { + setColor('white') event.preventDefault() }} + onMouseLeave={(event) => { + setColor(theme.colors.thTextContrast2.toString()) + event.preventDefault() + }} + onClick={(event) => { + event.preventDefault() + props.onClick() + }} > - { - e.preventDefault() - }} - > - - - - - - {props.numItemsSelected} items selected - - - - - {showConfirmDelete && ( - { - props.performMultiSelectAction(BulkAction.DELETE) - }} - onOpenChange={(open: boolean) => { - setShowConfirmDelete(false) - }} - /> - )} - {showLabelsModal && ( - { - const labelIds = labels.map((l) => l.id) - props.performMultiSelectAction(BulkAction.ADD_LABELS, labelIds) - }} - onOpenChange={(open: boolean) => { - setShowLabelsModal(false) - }} - /> - )} - - - - + + ) }