Merge branch 'ui' into for_webui

This commit is contained in:
Sakamoto Shiina
2024-12-28 10:16:54 +09:00
10 changed files with 45 additions and 11 deletions

View File

@@ -2,14 +2,22 @@ import { useRef, useLayoutEffect, useEffect } from "react";
import styles from "./SettingSection.module.scss"; import styles from "./SettingSection.module.scss";
import { SettingBox } from "./setting_box/SettingBox"; import { SettingBox } from "./setting_box/SettingBox";
import { store } from "@store"; import { store, useStore_SelectedConfigTabId } from "@store";
import { useSettingBoxScrollPosition } from "@logics_configs";
export const SettingSection = () => { export const SettingSection = () => {
const { currentSelectedConfigTabId } = useStore_SelectedConfigTabId();
const { resetScrollPosition } = useSettingBoxScrollPosition();
const scrollContainerRef = useRef(null); const scrollContainerRef = useRef(null);
useLayoutEffect(() => { useLayoutEffect(() => {
store.setting_box_scroll_container = scrollContainerRef; store.setting_box_scroll_container = scrollContainerRef;
}, []); }, []);
useEffect(() => {
resetScrollPosition();
}, [currentSelectedConfigTabId.data]);
return ( return (
<div ref={scrollContainerRef} className={styles.scroll_container}> <div ref={scrollContainerRef} className={styles.scroll_container}>
<div className={styles.container}> <div className={styles.container}>

View File

@@ -4,6 +4,7 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
gap: 1rem; gap: 1rem;
flex-shrink: 0;
} }
.entry_section_wrapper { .entry_section_wrapper {
@@ -72,13 +73,14 @@
} }
.open_webpage_button { .open_webpage_button {
padding: 0.6rem 3.2rem; padding: 0.6rem 2.8rem;
display: flex; display: flex;
gap: 1rem; gap: 1rem;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
border-radius: 0.4rem; border-radius: 0.4rem;
cursor: pointer; cursor: pointer;
flex-shrink: 0;
&:hover { &:hover {
background-color: var(--dark_825_color); background-color: var(--dark_825_color);
} }
@@ -95,4 +97,5 @@
.external_link_svg { .external_link_svg {
color: var(--dark_500_color); color: var(--dark_500_color);
width: 1.6rem; width: 1.6rem;
flex-shrink: 0;
} }

View File

@@ -10,6 +10,7 @@
font-weight: 400; font-weight: 400;
color: var(--dark_basic_text_color); color: var(--dark_basic_text_color);
white-space: nowrap; white-space: nowrap;
width: max-content;
} }
.desc { .desc {

View File

@@ -5,7 +5,7 @@ import { clsx } from "clsx";
export const Slider = (props) => { export const Slider = (props) => {
return ( return (
<div className={clsx(styles.container, props.className)}> <div className={clsx(styles.container, props.className, {[styles.no_padding]: props.no_padding || props.is_break_point})}>
<MUI_Slider <MUI_Slider
aria-label="Default" aria-label="Default"
valueLabelDisplay="auto" valueLabelDisplay="auto"

View File

@@ -4,4 +4,8 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
width: 100%; width: 100%;
padding-left: 4rem;
&.no_padding {
padding-left: 0;
}
} }

View File

@@ -54,7 +54,7 @@ const CommonContainer = ({ Component, ...props }) => {
return ( return (
<LabeledContainer label={props.label} desc={props.desc} custom_class_name={container_class}> <LabeledContainer label={props.label} desc={props.desc} custom_class_name={container_class}>
<Component {...props} /> <Component {...props} is_break_point={currentIsBreakPoint.data} />
</LabeledContainer> </LabeledContainer>
); );
}; };

View File

@@ -4,7 +4,7 @@
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
padding: 2rem; padding: 2rem;
gap: 10rem; gap: 2rem;
&.flex_column { &.flex_column {
flex-direction: column; flex-direction: column;
} }

View File

@@ -199,6 +199,7 @@ const PositionControls = ({settings, onchangeFunction, selectFunction, ui_config
</p> </p>
<Slider <Slider
className={styles.x_position_slider} className={styles.x_position_slider}
no_padding={true}
variable={settings.x_pos} variable={settings.x_pos}
step={ui_configs.x_pos.step} step={ui_configs.x_pos.step}
min={ui_configs.x_pos.min} min={ui_configs.x_pos.min}
@@ -213,6 +214,7 @@ const PositionControls = ({settings, onchangeFunction, selectFunction, ui_config
</p> </p>
<Slider <Slider
className={styles.y_position_slider} className={styles.y_position_slider}
no_padding={true}
variable={settings.y_pos} variable={settings.y_pos}
step={ui_configs.y_pos.step} step={ui_configs.y_pos.step}
min={ui_configs.y_pos.min} min={ui_configs.y_pos.min}
@@ -228,6 +230,7 @@ const PositionControls = ({settings, onchangeFunction, selectFunction, ui_config
</p> </p>
<Slider <Slider
className={styles.z_position_slider} className={styles.z_position_slider}
no_padding={true}
variable={settings.z_pos} variable={settings.z_pos}
step={ui_configs.z_pos.step} step={ui_configs.z_pos.step}
min={ui_configs.z_pos.min} min={ui_configs.z_pos.min}
@@ -252,6 +255,7 @@ const RotationControls = ({settings, onchangeFunction, selectFunction, default_u
</p> </p>
<Slider <Slider
className={styles.x_rotation_slider} className={styles.x_rotation_slider}
no_padding={true}
variable={-settings.x_rotation} variable={-settings.x_rotation}
valueLabelFormat={settings.x_rotation} valueLabelFormat={settings.x_rotation}
step={5} step={5}
@@ -268,6 +272,7 @@ const RotationControls = ({settings, onchangeFunction, selectFunction, default_u
</p> </p>
<Slider <Slider
className={styles.y_rotation_slider} className={styles.y_rotation_slider}
no_padding={true}
variable={settings.y_rotation} variable={settings.y_rotation}
step={5} step={5}
min={-180} min={-180}
@@ -282,6 +287,7 @@ const RotationControls = ({settings, onchangeFunction, selectFunction, default_u
</p> </p>
<Slider <Slider
className={styles.z_rotation_slider} className={styles.z_rotation_slider}
no_padding={true}
variable={settings.z_rotation} variable={settings.z_rotation}
step={5} step={5}
min={-180} min={-180}
@@ -308,6 +314,7 @@ const OtherControls = ({settings, onchangeFunction, ui_configs}) => {
</p> </p>
<Slider <Slider
className={clsx(styles.other_controls_slider, styles.opacity_slider)} className={clsx(styles.other_controls_slider, styles.opacity_slider)}
no_padding={true}
variable={settings.opacity * 100} variable={settings.opacity * 100}
valueLabelFormat={`${ui_variable_opacity}%`} valueLabelFormat={`${ui_variable_opacity}%`}
step={5} step={5}
@@ -322,6 +329,7 @@ const OtherControls = ({settings, onchangeFunction, ui_configs}) => {
</p> </p>
<Slider <Slider
className={clsx(styles.other_controls_slider, styles.ui_scaling_slider)} className={clsx(styles.other_controls_slider, styles.ui_scaling_slider)}
no_padding={true}
variable={settings.ui_scaling * 100} variable={settings.ui_scaling * 100}
valueLabelFormat={`${ui_variable_ui_scaling}%`} valueLabelFormat={`${ui_variable_ui_scaling}%`}
step={ui_configs.ui_scaling.step} step={ui_configs.ui_scaling.step}
@@ -334,6 +342,7 @@ const OtherControls = ({settings, onchangeFunction, ui_configs}) => {
<p className={clsx(styles.other_controls_slider_label, styles.display_duration_label)}>{t("config_page.vr.display_duration")}</p> <p className={clsx(styles.other_controls_slider_label, styles.display_duration_label)}>{t("config_page.vr.display_duration")}</p>
<Slider <Slider
className={clsx(styles.other_controls_slider, styles.display_duration_slider)} className={clsx(styles.other_controls_slider, styles.display_duration_slider)}
no_padding={true}
variable={settings.display_duration} variable={settings.display_duration}
valueLabelFormat={`${settings.display_duration} second(s)`} valueLabelFormat={`${settings.display_duration} second(s)`}
step={1} step={1}
@@ -346,6 +355,7 @@ const OtherControls = ({settings, onchangeFunction, ui_configs}) => {
<p className={clsx(styles.other_controls_slider_label, styles.fadeout_duration_label)}>{t("config_page.vr.fadeout_duration")}</p> <p className={clsx(styles.other_controls_slider_label, styles.fadeout_duration_label)}>{t("config_page.vr.fadeout_duration")}</p>
<Slider <Slider
className={clsx(styles.other_controls_slider, styles.fadeout_duration_slider)} className={clsx(styles.other_controls_slider, styles.fadeout_duration_slider)}
no_padding={true}
variable={settings.fadeout_duration} variable={settings.fadeout_duration}
valueLabelFormat={`${settings.fadeout_duration} second(s)`} valueLabelFormat={`${settings.fadeout_duration} second(s)`}
step={1} step={1}

View File

@@ -256,18 +256,20 @@
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: center; justify-content: space-between;
width: 100%; width: 100%;
position: relative; position: relative;
} }
.other_controls_slider { .other_controls_slider {
margin-left: 18rem; // margin-left: 18rem;
// width: 60%;
} }
.other_controls_slider_label { .other_controls_slider_label {
position: absolute; // position: absolute;
font-size: 1.6rem; font-size: 1.6rem;
width: 100%; flex-shrink: 0;
width: 30%;
} }
.common_container { .common_container {

View File

@@ -9,19 +9,25 @@ export const useSettingBoxScrollPosition = () => {
} }
}; };
const restoreScrollPosition = () => { const restoreScrollPosition = () => {
if (store.setting_box_scroll_container.current) { if (store.setting_box_scroll_container.current) {
updateSettingBoxScrollPosition((pre) => { updateSettingBoxScrollPosition((pre) => {
store.setting_box_scroll_container.current.scrollTop = pre.data; store.setting_box_scroll_container.current.scrollTop = pre.data;
return pre.data; return pre.data;
}) })
} }
}; };
const resetScrollPosition = () => {
if (store.setting_box_scroll_container.current) {
store.setting_box_scroll_container.current.scrollTop = 0;
updateSettingBoxScrollPosition(0);
}
}
return { return {
saveScrollPosition, saveScrollPosition,
restoreScrollPosition, restoreScrollPosition,
resetScrollPosition,
currentSettingBoxScrollPosition, currentSettingBoxScrollPosition,
updateSettingBoxScrollPosition, updateSettingBoxScrollPosition,
}; };