mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-04-25 04:46:40 +07:00
added profile cover for profile sidebar
This commit is contained in:
parent
b3d8090320
commit
fc10dd686b
2 changed files with 18 additions and 4 deletions
|
@ -2,6 +2,7 @@ import React, { useCallback, useEffect, useMemo, VFC } from "react";
|
||||||
|
|
||||||
import { isNil } from "ramda";
|
import { isNil } from "ramda";
|
||||||
|
|
||||||
|
import { CoverBackdrop } from "~/components/containers/CoverBackdrop";
|
||||||
import { ProfileSidebarNotes } from "~/components/profile/ProfileSidebarNotes";
|
import { ProfileSidebarNotes } from "~/components/profile/ProfileSidebarNotes";
|
||||||
import { ProfileSidebarSettings } from "~/components/profile/ProfileSidebarSettings";
|
import { ProfileSidebarSettings } from "~/components/profile/ProfileSidebarSettings";
|
||||||
import { SidebarStack } from "~/components/sidebar/SidebarStack";
|
import { SidebarStack } from "~/components/sidebar/SidebarStack";
|
||||||
|
@ -11,6 +12,7 @@ import { ProfileSidebarMenu } from "~/containers/profile/ProfileSidebarMenu";
|
||||||
import { SidebarWrapper } from "~/containers/sidebars/SidebarWrapper";
|
import { SidebarWrapper } from "~/containers/sidebars/SidebarWrapper";
|
||||||
import { useAuth } from "~/hooks/auth/useAuth";
|
import { useAuth } from "~/hooks/auth/useAuth";
|
||||||
import type { SidebarComponentProps } from "~/types/sidebar";
|
import type { SidebarComponentProps } from "~/types/sidebar";
|
||||||
|
import { useUser } from "~/hooks/auth/useUser";
|
||||||
|
|
||||||
const tabs = ["profile", "bookmarks"] as const;
|
const tabs = ["profile", "bookmarks"] as const;
|
||||||
type TabName = typeof tabs[number];
|
type TabName = typeof tabs[number];
|
||||||
|
@ -26,6 +28,7 @@ const ProfileSidebar: VFC<ProfileSidebarProps> = ({
|
||||||
openSidebar,
|
openSidebar,
|
||||||
}) => {
|
}) => {
|
||||||
const { isUser } = useAuth();
|
const { isUser } = useAuth();
|
||||||
|
const { user: { cover }} = useUser();
|
||||||
|
|
||||||
const tab = useMemo(
|
const tab = useMemo(
|
||||||
() => (page ? Math.max(tabs.indexOf(page), 0) : undefined),
|
() => (page ? Math.max(tabs.indexOf(page), 0) : undefined),
|
||||||
|
@ -52,7 +55,7 @@ const ProfileSidebar: VFC<ProfileSidebarProps> = ({
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SidebarWrapper onClose={onRequestClose}>
|
<SidebarWrapper onClose={onRequestClose} backdrop={cover && <CoverBackdrop cover={cover} />}>
|
||||||
<SidebarStack tab={tab} onTabChange={onTabChange}>
|
<SidebarStack tab={tab} onTabChange={onTabChange}>
|
||||||
<SidebarStackCard
|
<SidebarStackCard
|
||||||
headerFeature="close"
|
headerFeature="close"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import React, { FC, useEffect, useRef } from 'react';
|
import React, { FC, ReactNode, useEffect, useRef } from 'react';
|
||||||
|
|
||||||
import { clearAllBodyScrollLocks, disableBodyScroll } from 'body-scroll-lock';
|
import { clearAllBodyScrollLocks, disableBodyScroll } from 'body-scroll-lock';
|
||||||
|
|
||||||
|
@ -9,9 +9,15 @@ import styles from './styles.module.scss';
|
||||||
interface IProps {
|
interface IProps {
|
||||||
onClose?: () => void;
|
onClose?: () => void;
|
||||||
closeOnBackdropClick?: boolean;
|
closeOnBackdropClick?: boolean;
|
||||||
|
backdrop?: ReactNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
const SidebarWrapper: FC<IProps> = ({ children, onClose, closeOnBackdropClick = true }) => {
|
const SidebarWrapper: FC<IProps> = ({
|
||||||
|
children,
|
||||||
|
onClose,
|
||||||
|
closeOnBackdropClick = true,
|
||||||
|
backdrop,
|
||||||
|
}) => {
|
||||||
const ref = useRef<HTMLDivElement>(null);
|
const ref = useRef<HTMLDivElement>(null);
|
||||||
|
|
||||||
useCloseOnEscape(onClose);
|
useCloseOnEscape(onClose);
|
||||||
|
@ -25,7 +31,12 @@ const SidebarWrapper: FC<IProps> = ({ children, onClose, closeOnBackdropClick =
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.wrapper} ref={ref}>
|
<div className={styles.wrapper} ref={ref}>
|
||||||
{closeOnBackdropClick && <div className={styles.backdrop} onClick={onClose} />}
|
{(closeOnBackdropClick || backdrop) && (
|
||||||
|
<div className={styles.backdrop} onClick={onClose}>
|
||||||
|
{backdrop}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
{children}
|
{children}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue