Skip to content

Commit 2bd83fe

Browse files
committed
feat: 로그아웃 버튼 노출 아이콘 호버 시 빈공간 커서 깜빡임 수정, 타이머 이미지 업로드 시 로딩 아이콘 추가
1 parent d880058 commit 2bd83fe

File tree

4 files changed

+29
-2
lines changed

4 files changed

+29
-2
lines changed

app/admin/(components)/Sidebar.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ export default function Sidebar(props: Props) {
114114
<div className="sidebar__shop-info">
115115
<div className="sidebar__shop-info-img-box">
116116
<Image {...logoProps} className="sidebar__shop-logo" />
117+
<div />
117118
<button
118119
className="sidebar__shop-info-logout-btn"
119120
onClick={handleLogout}

app/admin/(components)/ThemeInfo/ThemeTimerImage.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Image from "next/image";
22
import React, { ChangeEvent, useEffect, useRef, useState } from "react";
3+
import Lottie from "react-lottie-player";
34

45
import Dialog from "@/components/common/Dialog-new/Image-Dialog-new/Dialog";
56
import PreviewDialog from "@/components/common/Dialog-new/Preview-Dialog-new/PreviewDialog";
@@ -11,11 +12,13 @@ import DeleteDialog from "@/components/common/Dialog-new/Timer-Image-Delete-Dial
1112
import Tooltip from "@/admin/(components)/Tooltip/Container";
1213

1314
import { getCompressImage } from "../ThemeDrawer/helpers/imageHelpers";
15+
import loaderJson from "../../../../public/lottie/loader.json";
1416

1517
export default function ThemeTimerImage() {
1618
const [selectedTheme, setSelectedTheme] = useSelectedTheme();
1719
const setTimerImage = useTimerImageWrite();
1820

21+
const [isTimerImageLoading, setIsTimerImageLoading] = useState(false);
1922
const [timerImageUrl, setTimerImageUrl] = useState<string>(defaultTimerImage);
2023
useEffect(() => {
2124
if (selectedTheme.themeImageUrl) {
@@ -52,12 +55,14 @@ export default function ThemeTimerImage() {
5255
}
5356
const file: File = e.target.files[0];
5457
if (file.size > 500 * 1024) {
58+
setIsTimerImageLoading(true);
5559
const options = {
5660
maxSizeMB: 0.5,
5761
maxWidthOrHeight: 1000,
5862
useWebWorker: true,
5963
};
6064
const compressedFile = await getCompressImage(file, options);
65+
setIsTimerImageLoading(false);
6166
setTimerImage({ timerImage: compressedFile });
6267
} else {
6368
setTimerImage({ timerImage: file });
@@ -67,6 +72,7 @@ export default function ThemeTimerImage() {
6772
open(Dialog);
6873
}
6974
fileReset();
75+
setIsTimerImageLoading(false);
7076
};
7177
const handleAddTimerImageBtnClick = () => {
7278
addImageInputRef.current?.click();
@@ -94,6 +100,16 @@ export default function ThemeTimerImage() {
94100
</div>
95101
<div className="theme-images">
96102
<div className="theme-image-box">
103+
<div className="theme-image-loader-box">
104+
{isTimerImageLoading && (
105+
<Lottie
106+
loop
107+
animationData={loaderJson}
108+
play
109+
style={{ width: 120, height: 120 }}
110+
/>
111+
)}
112+
</div>
97113
<Image {...TimerImageProps} />
98114
{selectedTheme.useTimerUrl && (
99115
<div

app/admin/(style)/admin.modules.sass

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
background-color: $color-main
1717
padding: 24px
1818
border-right: 1px solid $color-white12
19+
cursor: default
20+
1921
&__top
2022
flex-shrink: 0
2123

@@ -34,11 +36,13 @@
3436
padding-top: 1px
3537
padding-left: 1px
3638
button
37-
visibility: hidden
39+
display: none
40+
div
41+
display: none
3842

3943
&__shop-info-img-box:hover
4044
button
41-
visibility: visible
45+
display: block
4246
position: absolute
4347
top: 40px
4448
left: 0
@@ -49,6 +53,10 @@
4953
background-color: $color-sub1
5054
border: 1px solid $color-white5
5155
border-radius: 8px
56+
div
57+
display: block
58+
width: 100%
59+
height: 4px
5260

5361
&__shop-logo
5462
width: 32px

app/admin/(style)/themeInfo.modules.sass

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,3 +363,5 @@
363363
object-fit: contain
364364
border-radius: 12px
365365

366+
.theme-image-loader-box
367+
position: absolute

0 commit comments

Comments
 (0)