mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-04-24 20:36:40 +07:00
dialog close button
This commit is contained in:
parent
9ee4acb1c1
commit
cfe4731ded
3 changed files with 55 additions and 6 deletions
|
@ -41,7 +41,7 @@ const EditorDialogUnconnected: FC<IProps> = ({ onRequestClose, editor }) => {
|
||||||
useCloseOnEscape(onRequestClose);
|
useCloseOnEscape(onRequestClose);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ScrollDialog buttons={buttons} width={860}>
|
<ScrollDialog buttons={buttons} width={860} onClose={onRequestClose}>
|
||||||
<div className={styles.editor}>
|
<div className={styles.editor}>
|
||||||
<ImageEditor
|
<ImageEditor
|
||||||
data={data}
|
data={data}
|
||||||
|
|
|
@ -10,12 +10,14 @@ interface IProps {
|
||||||
buttons?: JSX.Element;
|
buttons?: JSX.Element;
|
||||||
size?: "medium" | "big";
|
size?: "medium" | "big";
|
||||||
width?: number;
|
width?: number;
|
||||||
onOverlayClick?: MouseEventHandler<HTMLDivElement>;
|
|
||||||
onRefCapture?: (ref: any) => void;
|
|
||||||
error?: string;
|
error?: string;
|
||||||
|
|
||||||
top_sticky?: ReactChild;
|
top_sticky?: ReactChild;
|
||||||
top_sticky_offset?: number;
|
top_sticky_offset?: number;
|
||||||
|
|
||||||
|
onOverlayClick?: MouseEventHandler<HTMLDivElement>;
|
||||||
|
onRefCapture?: (ref: any) => void;
|
||||||
|
onClose?: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ScrollDialog: FC<IProps> = ({
|
const ScrollDialog: FC<IProps> = ({
|
||||||
|
@ -27,7 +29,8 @@ const ScrollDialog: FC<IProps> = ({
|
||||||
top_sticky_offset,
|
top_sticky_offset,
|
||||||
error,
|
error,
|
||||||
onOverlayClick,
|
onOverlayClick,
|
||||||
onRefCapture
|
onRefCapture,
|
||||||
|
onClose,
|
||||||
}) => {
|
}) => {
|
||||||
const [height, setHeight] = useState(window.innerHeight - 120);
|
const [height, setHeight] = useState(window.innerHeight - 120);
|
||||||
const [show_top_sticky, setShowTopSticky] = useState(false);
|
const [show_top_sticky, setShowTopSticky] = useState(false);
|
||||||
|
@ -74,6 +77,8 @@ const ScrollDialog: FC<IProps> = ({
|
||||||
{!!title && (
|
{!!title && (
|
||||||
<div className={styles.top}>
|
<div className={styles.top}>
|
||||||
<div className={styles.wrap} style={{ flexBasis: width }}>
|
<div className={styles.wrap} style={{ flexBasis: width }}>
|
||||||
|
{ onClose && <div className={styles.close} onClick={onClose}/> }
|
||||||
|
|
||||||
<div className={styles.pan}>
|
<div className={styles.pan}>
|
||||||
{title}
|
{title}
|
||||||
{show_top_sticky && top_sticky && (
|
{show_top_sticky && top_sticky && (
|
||||||
|
@ -87,6 +92,8 @@ const ScrollDialog: FC<IProps> = ({
|
||||||
{!title && (
|
{!title && (
|
||||||
<div className={styles.top}>
|
<div className={styles.top}>
|
||||||
<div className={styles.wrap} style={{ flexBasis: width }}>
|
<div className={styles.wrap} style={{ flexBasis: width }}>
|
||||||
|
{ onClose && <div className={styles.close} onClick={onClose}/> }
|
||||||
|
|
||||||
<div className={styles.top_cap} />
|
<div className={styles.top_cap} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 10px 0 0 0;
|
padding: 40px 0 0 0;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
flex: 1 1 800px;
|
flex: 1 1 800px;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.top {
|
.top {
|
||||||
height: 10px;
|
height: 40px;
|
||||||
top: 0;
|
top: 0;
|
||||||
|
|
||||||
&:global(.has_buttons) {
|
&:global(.has_buttons) {
|
||||||
|
@ -155,3 +155,45 @@
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes spin_1 {
|
||||||
|
0% { transform: rotate(0); }
|
||||||
|
100% { transform: rotate(45deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin_2 {
|
||||||
|
0% { transform: rotate(0); }
|
||||||
|
100% { transform: rotate(-45deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.close {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 20px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, 0);
|
||||||
|
cursor: pointer;
|
||||||
|
opacity: 0.5;
|
||||||
|
transition: opacity 0.5s, transform 0.25s;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(-50%, -4px);
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before, &::after {
|
||||||
|
content: ' ';
|
||||||
|
width: 32px;
|
||||||
|
height: 2px;
|
||||||
|
background: white;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 0;
|
||||||
|
animation: spin_1 0.5s forwards;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
animation: spin_2 0.5s forwards;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue