feat(ChatNavigation): Adjust navigation position based on topic settings
This reverts commit aa75f902942ce8a56669bae03ff840a119e242cb.
This commit is contained in:
parent
abecb74135
commit
1de54caa7e
@ -11,12 +11,11 @@ interface ChatNavigationProps {
|
|||||||
|
|
||||||
const ChatNavigation: FC<ChatNavigationProps> = ({ containerId }) => {
|
const ChatNavigation: FC<ChatNavigationProps> = ({ containerId }) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { showTopics, topicPosition } = useSettings()
|
|
||||||
const [isVisible, setIsVisible] = useState(false)
|
const [isVisible, setIsVisible] = useState(false)
|
||||||
const [hideTimer, setHideTimer] = useState<NodeJS.Timeout | null>(null)
|
const [hideTimer, setHideTimer] = useState<NodeJS.Timeout | null>(null)
|
||||||
|
const { topicPosition, showTopics } = useSettings()
|
||||||
// 计算导航按钮的位置
|
const showRightTopics = topicPosition === 'right' && showTopics
|
||||||
const navigationPosition = showTopics && topicPosition === 'right' ? 'var(--assistants-width)' : '0'
|
const right = showRightTopics ? 'calc(var(--topic-list-width) + 16px)' : '16px'
|
||||||
|
|
||||||
const resetHideTimer = useCallback(() => {
|
const resetHideTimer = useCallback(() => {
|
||||||
if (hideTimer) {
|
if (hideTimer) {
|
||||||
@ -176,12 +175,8 @@ const ChatNavigation: FC<ChatNavigationProps> = ({ containerId }) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<TriggerArea
|
<TriggerArea $right={right} onMouseEnter={() => setIsVisible(true)} onMouseLeave={() => resetHideTimer()} />
|
||||||
onMouseEnter={() => setIsVisible(true)}
|
<NavigationContainer $isVisible={isVisible} $right={right}>
|
||||||
onMouseLeave={() => resetHideTimer()}
|
|
||||||
$position={navigationPosition}
|
|
||||||
/>
|
|
||||||
<NavigationContainer $isVisible={isVisible} $position={navigationPosition}>
|
|
||||||
<ButtonGroup>
|
<ButtonGroup>
|
||||||
<Tooltip title={t('chat.navigation.prev')} placement="left">
|
<Tooltip title={t('chat.navigation.prev')} placement="left">
|
||||||
<NavigationButton
|
<NavigationButton
|
||||||
@ -208,27 +203,23 @@ const ChatNavigation: FC<ChatNavigationProps> = ({ containerId }) => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PositionProps {
|
const TriggerArea = styled.div<{ $right: string }>`
|
||||||
$position: string
|
|
||||||
}
|
|
||||||
|
|
||||||
const TriggerArea = styled.div<PositionProps>`
|
|
||||||
position: fixed;
|
position: fixed;
|
||||||
right: calc(${(props) => props.$position} + 0px);
|
right: ${(props) => props.$right};
|
||||||
top: 40%;
|
top: 40%;
|
||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20%;
|
height: 20%;
|
||||||
z-index: 998;
|
z-index: 998;
|
||||||
background: transparent;
|
|
||||||
`
|
`
|
||||||
|
|
||||||
interface NavigationContainerProps extends PositionProps {
|
interface NavigationContainerProps {
|
||||||
$isVisible: boolean
|
$isVisible: boolean
|
||||||
|
$right: string
|
||||||
}
|
}
|
||||||
|
|
||||||
const NavigationContainer = styled.div<NavigationContainerProps>`
|
const NavigationContainer = styled.div<NavigationContainerProps>`
|
||||||
position: fixed;
|
position: fixed;
|
||||||
right: calc(${(props) => props.$position} + 16px);
|
right: ${(props) => props.$right};
|
||||||
top: 50%;
|
top: 50%;
|
||||||
transform: translateY(-50%) translateX(${(props) => (props.$isVisible ? 0 : '100%')});
|
transform: translateY(-50%) translateX(${(props) => (props.$isVisible ? 0 : '100%')});
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user