diff --git a/src-ui/app/config_page/setting_section/setting_box/_templates/Templates.jsx b/src-ui/app/config_page/setting_section/setting_box/_templates/Templates.jsx index bb412153..09b56263 100644 --- a/src-ui/app/config_page/setting_section/setting_box/_templates/Templates.jsx +++ b/src-ui/app/config_page/setting_section/setting_box/_templates/Templates.jsx @@ -1,6 +1,7 @@ -import styles from "./Templates.module.scss"; -import { useStore_IsOpenedDropdownMenu } from "@store"; +import clsx from "clsx"; +import styles from "./Templates.module.scss"; +import { useStore_IsOpenedDropdownMenu, useStore_IsBreakPoint } from "@store"; import { LabelComponent, DropdownMenu, @@ -17,6 +18,13 @@ import { DownloadModels, } from "../_components/"; +const LabeledContainer = ({ children, label, desc, custom_class_name }) => ( +
+ + {children} +
+); + export const useOnMouseLeaveDropdownMenu = () => { const { updateIsOpenedDropdownMenu } = useStore_IsOpenedDropdownMenu(); @@ -29,7 +37,6 @@ export const useOnMouseLeaveDropdownMenu = () => { export const DropdownMenuContainer = (props) => { const { onMouseLeaveFunction } = useOnMouseLeaveDropdownMenu(); - return (
@@ -38,94 +45,67 @@ export const DropdownMenuContainer = (props) => { ); }; +const CommonContainer = ({ Component, ...props }) => { + const { currentIsBreakPoint } = useStore_IsBreakPoint(); + + const container_class = clsx(styles.container, { + [styles.is_break_point]: props.add_break_point ?? currentIsBreakPoint.data, + }); -export const SliderContainer = (props) => { return ( -
- - -
+ + + ); }; +export const SliderContainer = (props) => ( + +); -export const CheckboxContainer = (props) => { - return ( -
+export const CheckboxContainer = (props) => ( + +); + +export const SwitchBoxContainer = (props) => ( + +); + +export const EntryContainer = (props) => ( + +); + +export const RadioButtonContainer = (props) => ( + +); + +export const DeeplAuthKeyContainer = (props) => ( +
+
- +
- ); -}; + +
+); -export const SwitchBoxContainer = (props) => { - return ( -
- - -
- ); -}; +export const ActionButtonContainer = (props) => ( + +); -export const EntryContainer = (props) => { - return ( -
- - -
- ); -}; - -export const RadioButtonContainer = (props) => { - return ( -
- - -
- ); -}; - -export const DeeplAuthKeyContainer = (props) => { - return ( -
-
+export const WordFilterContainer = (props) => ( +
+
+
-
- +
- ); -}; +
+ +
+
+); -export const ActionButtonContainer = (props) => { - return ( -
- - -
- ); -}; - -export const WordFilterContainer = (props) => { - return ( -
-
-
- -
- -
-
- -
-
- ); -}; - -export const DownloadModelsContainer = (props) => { - return ( -
- - -
- ); -}; \ No newline at end of file +export const DownloadModelsContainer = (props) => ( + +); \ No newline at end of file diff --git a/src-ui/app/config_page/setting_section/setting_box/_templates/Templates.module.scss b/src-ui/app/config_page/setting_section/setting_box/_templates/Templates.module.scss index 3f06df1b..3de7a81d 100644 --- a/src-ui/app/config_page/setting_section/setting_box/_templates/Templates.module.scss +++ b/src-ui/app/config_page/setting_section/setting_box/_templates/Templates.module.scss @@ -9,6 +9,12 @@ flex-direction: column; } border-bottom: solid 0.1rem var(--dark_800_color); + + &.is_break_point { + flex-direction: column; + gap: 2rem; + align-items: start; + } } .label_only_section { diff --git a/src-ui/app/config_page/setting_section/setting_box/appearance/Appearance.jsx b/src-ui/app/config_page/setting_section/setting_box/appearance/Appearance.jsx index 2755cce9..26622941 100644 --- a/src-ui/app/config_page/setting_section/setting_box/appearance/Appearance.jsx +++ b/src-ui/app/config_page/setting_section/setting_box/appearance/Appearance.jsx @@ -4,6 +4,11 @@ import { useTranslation } from "react-i18next"; import styles from "./Appearance.module.scss"; import { ui_configs } from "@ui_configs"; import { useStore_SelectableFontFamilyList } from "@store"; + +import { + useWindow, +} from "@logics_common"; + import { useUiLanguage, useUiScaling, @@ -52,6 +57,8 @@ const UiLanguageContainer = () => { const UiScalingContainer = () => { const { t } = useTranslation(); const { currentUiScaling, setUiScaling } = useUiScaling(); + const { asyncUpdateBreakPoint } = useWindow(); + const [ui_ui_scaling, setUiUiScaling] = useState(currentUiScaling.data); const onchangeFunction = (value) => { @@ -62,6 +69,7 @@ const UiScalingContainer = () => { }; useEffect(() => { setUiUiScaling(currentUiScaling.data); + asyncUpdateBreakPoint(); }, [currentUiScaling.data]); const createMarks = (min, max) => { diff --git a/src-ui/logics/common/useWindow.js b/src-ui/logics/common/useWindow.js index 1ca764eb..7d04fd74 100644 --- a/src-ui/logics/common/useWindow.js +++ b/src-ui/logics/common/useWindow.js @@ -1,8 +1,14 @@ -import { useStdoutToPython } from "@logics/useStdoutToPython"; import { useEffect } from "react"; import { appWindow, currentMonitor, availableMonitors, LogicalPosition, LogicalSize } from "@tauri-apps/api/window"; +import { useStdoutToPython } from "@logics/useStdoutToPython"; +import { useStore_IsBreakPoint } from "@store"; +import { useUiScaling } from "@logics_configs"; + export const useWindow = () => { const { asyncStdoutToPython } = useStdoutToPython(); + const { currentUiScaling } = useUiScaling(); + const { updateIsBreakPoint } = useStore_IsBreakPoint(); + const asyncGetWindowGeometry = async () => { try { const position = await appWindow.outerPosition(); @@ -82,13 +88,23 @@ export const useWindow = () => { } }; + const asyncUpdateBreakPoint = async () => { + const size = await appWindow.innerSize(); + const dynamicBreakPoint = 800 * (currentUiScaling.data / 100); + updateIsBreakPoint(size.width <= dynamicBreakPoint); + }; const WindowGeometryController = () => { useEffect(() => { let resizeTimeout; + const asyncFunction = () => { + asyncSaveWindowGeometry(); + asyncUpdateBreakPoint(); + }; + const unlistenResize = appWindow.onResized(() => { clearTimeout(resizeTimeout); - resizeTimeout = setTimeout(asyncSaveWindowGeometry, 200); + resizeTimeout = setTimeout(asyncFunction, 200); }); return () => { @@ -115,5 +131,6 @@ export const useWindow = () => { WindowGeometryController, asyncSaveWindowGeometry, restoreWindowGeometry, + asyncUpdateBreakPoint, }; }; diff --git a/src-ui/store.js b/src-ui/store.js index 68f8ee78..404f6a13 100644 --- a/src-ui/store.js +++ b/src-ui/store.js @@ -113,6 +113,7 @@ export const { atomInstance: Atom_MainFunctionsStateMemory, useHook: useStore_Ma export const { atomInstance: Atom_OpenedQuickSetting, useHook: useStore_OpenedQuickSetting } = createAtomWithHook("", "OpenedQuickSetting"); export const { atomInstance: Atom_IsSoftwareUpdateAvailable, useHook: useStore_IsSoftwareUpdateAvailable } = createAtomWithHook(false, "IsSoftwareUpdateAvailable"); export const { atomInstance: Atom_InitProgress, useHook: useStore_InitProgress } = createAtomWithHook(0, "InitProgress"); +export const { atomInstance: Atom_IsBreakPoint, useHook: useStore_IsBreakPoint } = createAtomWithHook(false, "IsBreakPoint"); // Main Page // Functions