From 741489ad49d2c97e9d6937e6b52a508af7c8cd72 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Fri, 26 Apr 2024 12:53:31 +0200 Subject: [PATCH] Adjust missed styling for rtl direction --- src/components/menu/NestedMenuItem.tsx | 8 +++++--- src/components/navbar/DefaultNavBar.tsx | 4 +++- src/components/navbar/ReaderNavBar.tsx | 21 ++++++++++++++------- src/components/tracker/TrackerSearch.tsx | 4 +++- src/theme.ts | 3 +++ 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/components/menu/NestedMenuItem.tsx b/src/components/menu/NestedMenuItem.tsx index 4d8b9eb2..2b7a7c31 100644 --- a/src/components/menu/NestedMenuItem.tsx +++ b/src/components/menu/NestedMenuItem.tsx @@ -29,12 +29,14 @@ import { Ref, } from 'react'; import ChevronRightIcon from '@mui/icons-material/ChevronRight'; +import ChevronLeftIcon from '@mui/icons-material/ChevronLeft'; import Box from '@mui/material/Box'; import { OverridableComponent } from '@mui/material/OverridableComponent'; import { SvgIconTypeMap } from '@mui/material/SvgIcon'; import { isMobile } from 'react-device-detect'; import { IconMenuItem } from '@/components/menu/IconMenuItem.tsx'; +import { getOptionForDirection } from '@/theme.ts'; export type NestedMenuItemProps = Omit & { parentMenuOpen: boolean; @@ -57,7 +59,7 @@ const NestedMenuItem = forwardRef((pr parentMenuOpen, label, renderLabel, - RightIcon = ChevronRightIcon, + RightIcon = getOptionForDirection(ChevronRightIcon, ChevronLeftIcon), LeftIcon, children, className, @@ -191,11 +193,11 @@ const NestedMenuItem = forwardRef((pr style={{ pointerEvents: 'none' }} anchorEl={menuItemRef.current} anchorOrigin={{ - horizontal: 'right', + horizontal: getOptionForDirection('right', 'left'), vertical: 'top', }} transformOrigin={{ - horizontal: 'left', + horizontal: getOptionForDirection('left', 'right'), vertical: 'top', }} open={open} diff --git a/src/components/navbar/DefaultNavBar.tsx b/src/components/navbar/DefaultNavBar.tsx index ca37e433..0ab0aab2 100644 --- a/src/components/navbar/DefaultNavBar.tsx +++ b/src/components/navbar/DefaultNavBar.tsx @@ -26,11 +26,13 @@ import SettingsIcon from '@mui/icons-material/Settings'; import ArrowBack from '@mui/icons-material/ArrowBack'; import { useLocation } from 'react-router-dom'; import { createPortal } from 'react-dom'; +import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; import { NavbarItem } from '@/typings'; import { NavBarContext } from '@/components/context/NavbarContext'; import { DesktopSideBar } from '@/components/navbar/navigation/DesktopSideBar'; import { MobileBottomBar } from '@/components/navbar/navigation/MobileBottomBar'; import { useBackButton } from '@/util/useBackButton.ts'; +import { getOptionForDirection } from '@/theme.ts'; const navbarItems: Array = [ { @@ -107,7 +109,7 @@ export function DefaultNavBar() { size="large" onClick={handleBack} > - + {getOptionForDirection(, )} )} - + updateDrawer(false)} size="large" > - + {getOptionForDirection(, )} )} @@ -310,7 +317,7 @@ export function ReaderNavBar(props: IProps) { disabled={disableChapterNavButtons || chapter.sourceOrder <= 1} onClick={() => openNextChapter(ChapterOffset.PREV)} > - {theme.direction === 'ltr' ? : } + {getOptionForDirection(, )} openNextChapter(ChapterOffset.NEXT)} > - {theme.direction === 'ltr' ? : } + {getOptionForDirection(, )} @@ -368,7 +375,7 @@ export function ReaderNavBar(props: IProps) { onClick={() => updateDrawer(true)} size="large" > - + {getOptionForDirection(, )} diff --git a/src/components/tracker/TrackerSearch.tsx b/src/components/tracker/TrackerSearch.tsx index c1e0d3e9..da66b01b 100644 --- a/src/components/tracker/TrackerSearch.tsx +++ b/src/components/tracker/TrackerSearch.tsx @@ -13,6 +13,7 @@ import Stack from '@mui/material/Stack'; import { useEffect, useMemo, useState } from 'react'; import IconButton from '@mui/material/IconButton'; import ArrowBack from '@mui/icons-material/ArrowBack'; +import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; import DialogContent from '@mui/material/DialogContent'; import DialogTitle from '@mui/material/DialogTitle'; import { requestManager } from '@/lib/requests/RequestManager.ts'; @@ -23,6 +24,7 @@ import { SearchTextField } from '@/components/atoms/SearchTextField.tsx'; import { makeToast } from '@/components/util/Toast.tsx'; import { TrackerMangaCard } from '@/components/tracker/TrackerMangaCard.tsx'; import { DIALOG_PADDING } from '@/components/tracker/constants.ts'; +import { getOptionForDirection } from '@/theme.ts'; export const TrackerSearch = ({ mangaId, @@ -87,7 +89,7 @@ export const TrackerSearch = ({ - + {getOptionForDirection(, )} { return suwayomiTheme; }; + +export const getOptionForDirection = (ltrOption: T, rtlOption: T): T => + (theme?.direction ?? 'ltr') === 'ltr' ? ltrOption : rtlOption;