diff --git a/src/modules/reader/components/settings/ReaderSettings.tsx b/src/modules/reader/components/settings/ReaderSettings.tsx index 3ca70131..17934d99 100644 --- a/src/modules/reader/components/settings/ReaderSettings.tsx +++ b/src/modules/reader/components/settings/ReaderSettings.tsx @@ -15,6 +15,7 @@ import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; import { ReaderSettingsTabs } from '@/modules/reader/components/settings/ReaderSettingsTabs.tsx'; import { ReaderSettingTab } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; import { useDisableAllHotkeysWhileMounted } from '@/modules/hotkeys/Hotkeys.utils.ts'; +import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; export const ReaderSettings = ({ isOpen, close }: { isOpen: boolean; close: () => void }) => { const { manga } = useReaderStateMangaContext(); @@ -23,6 +24,7 @@ export const ReaderSettings = ({ isOpen, close }: { isOpen: boolean; close: () = useDisableAllHotkeysWhileMounted(isOpen); const [activeTab, setActiveTab] = useState(0); + const [isTransparent, setIsTransparent] = useState(false); if (!manga) { return null; @@ -39,6 +41,11 @@ export const ReaderSettings = ({ isOpen, close }: { isOpen: boolean; close: () = fullWidth onClose={close} hideBackdrop={activeTab === ReaderSettingTab.FILTER} + sx={{ + ...applyStyles(isTransparent, { + opacity: 0.75, + }), + }} > ReaderService.updateSetting(manga, ...args)} deleteSetting={(...args) => ReaderService.deleteSetting(manga, ...args)} + setTransparent={setIsTransparent} /> diff --git a/src/modules/reader/components/settings/ReaderSettingsTabs.tsx b/src/modules/reader/components/settings/ReaderSettingsTabs.tsx index f1ba2cb5..4f390b0c 100644 --- a/src/modules/reader/components/settings/ReaderSettingsTabs.tsx +++ b/src/modules/reader/components/settings/ReaderSettingsTabs.tsx @@ -35,6 +35,7 @@ const BaseReaderSettingsTabs = ({ deleteSetting, setShowPreview, mode: overlayMode, + setTransparent, }: Pick & Pick, 'mode'> & { activeTab: number; @@ -43,6 +44,7 @@ const BaseReaderSettingsTabs = ({ updateSetting: (...args: OmitFirst>) => void; areDefaultSettings?: boolean; deleteSetting: (setting: keyof IReaderSettings) => void; + setTransparent?: (transparent: boolean) => void; }) => { const { t } = useTranslation(); const isTouchDevice = MediaQuery.useIsTouchDevice(); @@ -103,6 +105,7 @@ const BaseReaderSettingsTabs = ({ isDefaultable={!areDefaultSettings} onDefault={(...args) => deleteSetting?.(...args)} isSeriesMode + setTransparent={setTransparent} /> ); @@ -137,6 +140,7 @@ const BaseReaderSettingsTabs = ({ updateSetting={(...args) => updateSetting(...args)} isDefaultable onDefault={(...args) => deleteSetting?.(...args)} + setTransparent={setTransparent} /> ); diff --git a/src/modules/reader/components/settings/filters/ReaderFilterSettings.tsx b/src/modules/reader/components/settings/filters/ReaderFilterSettings.tsx index 755eafc1..504d9b1a 100644 --- a/src/modules/reader/components/settings/filters/ReaderFilterSettings.tsx +++ b/src/modules/reader/components/settings/filters/ReaderFilterSettings.tsx @@ -22,102 +22,105 @@ export const ReaderFilterSettings = ({ settings: { customFilter }, updateSetting, onDefault, -}: ReaderSettingsTypeProps) => ( - - - updateSetting( - 'customFilter', - { + setTransparent, +}: ReaderSettingsTypeProps) => { + const update = (value: any, commit?: boolean) => { + updateSetting('customFilter', value, commit); + setTransparent?.(commit === undefined ? false : !commit); + }; + + return ( + + + update( + { + ...customFilter, + [key]: value, + }, + commit, + ) + } + /> + + update( + { + ...customFilter, + [key]: value, + }, + commit, + ) + } + /> + + update( + { + ...customFilter, + [key]: value, + }, + commit, + ) + } + /> + + update( + { + ...customFilter, + [key]: value, + }, + commit, + ) + } + /> + + update( + { + ...customFilter, + [key]: value, + }, + commit, + ) + } + /> + + update({ ...customFilter, - [key]: value, - }, - commit, - ) - } - /> - - updateSetting( - 'customFilter', - { + sepia: value, + }) + } + /> + + update({ ...customFilter, - [key]: value, - }, - commit, - ) - } - /> - - updateSetting( - 'customFilter', - { + grayscale: value, + }) + } + /> + + update({ ...customFilter, - [key]: value, - }, - commit, - ) - } - /> - - updateSetting( - 'customFilter', - { - ...customFilter, - [key]: value, - }, - commit, - ) - } - /> - - updateSetting( - 'customFilter', - { - ...customFilter, - [key]: value, - }, - commit, - ) - } - /> - - updateSetting('customFilter', { - ...customFilter, - sepia: value, - }) - } - /> - - updateSetting('customFilter', { - ...customFilter, - grayscale: value, - }) - } - /> - - updateSetting('customFilter', { - ...customFilter, - invert: value, - }) - } - /> - - onDefault?.('customFilter')} variant="outlined" /> + invert: value, + }) + } + /> + + onDefault?.('customFilter')} variant="outlined" /> + - -); + ); +}; diff --git a/src/modules/reader/components/settings/layout/ReaderLayoutSettings.tsx b/src/modules/reader/components/settings/layout/ReaderLayoutSettings.tsx index 519caf1f..7de1fb5c 100644 --- a/src/modules/reader/components/settings/layout/ReaderLayoutSettings.tsx +++ b/src/modules/reader/components/settings/layout/ReaderLayoutSettings.tsx @@ -30,6 +30,7 @@ export const ReaderLayoutSettings = ({ isDefaultable, onDefault, isSeriesMode, + setTransparent, }: ReaderSettingsTypeProps & { setShowPreview: TReaderTapZoneContext['setShowPreview']; isSeriesMode?: boolean; @@ -104,6 +105,7 @@ export const ReaderLayoutSettings = ({ isDefaultable={isDefaultable} onDefault={() => onDefault?.('readerWidth')} updateSetting={(...args) => updateSetting(...args)} + setTransparent={setTransparent} /> {isSeriesMode && ( <> @@ -112,6 +114,7 @@ export const ReaderLayoutSettings = ({ profiles={[settings.readingMode.value]} updateSetting={updateSetting} isSeriesMode={isSeriesMode} + setTransparent={setTransparent} /> )} diff --git a/src/modules/reader/components/settings/layout/ReaderSettingWidth.tsx b/src/modules/reader/components/settings/layout/ReaderSettingWidth.tsx index 44f4dc61..ce69ac71 100644 --- a/src/modules/reader/components/settings/layout/ReaderSettingWidth.tsx +++ b/src/modules/reader/components/settings/layout/ReaderSettingWidth.tsx @@ -23,9 +23,11 @@ export const ReaderSettingWidth = ({ isDefaultable, onDefault, updateSetting, + setTransparent, }: Pick & Pick, 'isDefaultable' | 'onDefault'> & { updateSetting: (...args: OmitFirst>) => void; + setTransparent?: (transparent: boolean) => void; }) => { const { t } = useTranslation(); @@ -55,9 +57,11 @@ export const ReaderSettingWidth = ({ min: 10, max: 100, onChange: (_, value) => { + setTransparent?.(true); updateSetting('readerWidth', { ...readerWidth, value: value as number }, false); }, onChangeCommitted: (_, value) => { + setTransparent?.(false); updateSetting('readerWidth', { ...readerWidth, value: value as number }, true); }, }, diff --git a/src/modules/reader/types/Reader.types.ts b/src/modules/reader/types/Reader.types.ts index 6d033e66..6fe7227e 100644 --- a/src/modules/reader/types/Reader.types.ts +++ b/src/modules/reader/types/Reader.types.ts @@ -233,6 +233,7 @@ interface ReaderSettingsTypeBaseProps { export interface ReaderSettingsDefaultableProps { isDefaultable: boolean; onDefault: (setting: keyof IReaderSettings) => void; + setTransparent?: (transparent: boolean) => void; } interface ReaderSettingsTypeDefaultableProps extends ReaderSettingsTypeBaseProps, ReaderSettingsDefaultableProps {