Skip to content

Commit a1cb780

Browse files
committed
updates to mobile
1 parent 00afced commit a1cb780

4 files changed

Lines changed: 115 additions & 50 deletions

File tree

frontend/components/Bookmark/BookmarkCard.tsx

Lines changed: 91 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ReactNode, RefObject, useEffect, useRef, useState } from "react";
2-
import { Card, CloseButton } from "react-bootstrap";
2+
import { Card } from "react-bootstrap";
33
import { useTagsDispatch } from "@/contexts/TagContext";
44
import Bookmark from "@/types/Bookmarks/Bookmark";
55
import TagAction from "@/types/Bookmarks/TagAction";
@@ -46,6 +46,67 @@ async function addTagToBookmark(
4646
return action;
4747
}
4848

49+
function OverlayCard({
50+
url,
51+
currentBookmark,
52+
bookmark,
53+
inEditMode,
54+
edit,
55+
changeEditMode,
56+
}: {
57+
url: string;
58+
currentBookmark: RefObject<Bookmark>;
59+
bookmark: Bookmark;
60+
inEditMode: boolean;
61+
edit: RefObject<Bookmark>;
62+
changeEditMode: () => void;
63+
}): ReactNode {
64+
return (
65+
<Card className={style.bookmarkCard}>
66+
<div className="row g-0">
67+
<div className="col-12">
68+
<Card.Img
69+
className={`${style.cImg}`}
70+
src={url + bookmark.screenshotUrl}
71+
alt="screenshot preview"
72+
></Card.Img>
73+
</div>
74+
<div className="col-12">
75+
<PlainCard
76+
changeEditMode={changeEditMode}
77+
bookmark={bookmark}
78+
currentBookmark={currentBookmark}
79+
inEditMode={inEditMode}
80+
edit={edit}
81+
></PlainCard>
82+
</div>
83+
</div>
84+
</Card>
85+
);
86+
}
87+
function PlainCard({
88+
currentBookmark,
89+
bookmark,
90+
inEditMode,
91+
edit,
92+
changeEditMode,
93+
}: {
94+
currentBookmark: RefObject<Bookmark>;
95+
bookmark: Bookmark;
96+
inEditMode: boolean;
97+
edit: RefObject<Bookmark>;
98+
changeEditMode: () => void;
99+
}): ReactNode {
100+
return (
101+
<CardBody
102+
bookmark={currentBookmark.current}
103+
highlight={bookmark.textHighlight}
104+
inEditMode={inEditMode}
105+
edit={edit}
106+
changeEditMode={changeEditMode}
107+
/>
108+
);
109+
}
49110
export default function BookmarkCard({ bookmark }: Readonly<BookmarkProp>) {
50111
const dispatch = useTagsDispatch();
51112
const bkmkDispatch = useBookmarkDispatch();
@@ -195,20 +256,24 @@ export default function BookmarkCard({ bookmark }: Readonly<BookmarkProp>) {
195256
}
196257
}
197258

198-
function resolveCardType(): ReactNode {
199-
return bookmark.screenshotUrl ? overlayCard() : plainCard();
200-
}
201-
202-
function overlayCard(): ReactNode {
203-
return (
204-
<Card className={style.bookmarkCard}>
205-
<img
206-
className="card-img-top"
207-
src={imgApi + bookmark.screenshotUrl}
208-
alt="screenshot preview"
209-
/>
210-
{plainCard()}
211-
</Card>
259+
function Content(): ReactNode {
260+
return bookmark.screenshotUrl ? (
261+
<OverlayCard
262+
url={imgApi}
263+
changeEditMode={changeEditMode}
264+
bookmark={bookmark}
265+
currentBookmark={currentBookmark}
266+
inEditMode={inEditMode}
267+
edit={edit}
268+
/>
269+
) : (
270+
<PlainCard
271+
changeEditMode={changeEditMode}
272+
bookmark={bookmark}
273+
currentBookmark={currentBookmark}
274+
inEditMode={inEditMode}
275+
edit={edit}
276+
></PlainCard>
212277
);
213278
}
214279

@@ -217,24 +282,17 @@ export default function BookmarkCard({ bookmark }: Readonly<BookmarkProp>) {
217282
handleEdits(!inEditMode);
218283
}
219284

220-
function plainCard(): ReactNode {
221-
return (
222-
<CardBody
223-
bookmark={currentBookmark.current}
224-
highlight={bookmark.textHighlight}
225-
inEditMode={inEditMode}
226-
edit={edit}
227-
changeEditMode={changeEditMode}
228-
/>
229-
);
230-
}
231-
232285
return (
233-
<div data-testid={`bookmark-${bookmark.title}`} className={style.main}>
286+
<div
287+
data-testid={`bookmark-${bookmark.title}`}
288+
className={`${style.cardRoot}`}
289+
>
234290
<div className={`card ${style.bookmarkCard}`}>
235291
<div className={style.cardHeader}>
236-
<CloseButton
237-
className={style.deleteBookmarkIcon}
292+
<button
293+
type="button"
294+
aria-label="Close"
295+
className={`${style.deleteBookmarkIcon} btn-close`}
238296
onClick={handleShow}
239297
data-testid={`bk-id-${bookmark.id}-deleteBtn`}
240298
/>
@@ -251,8 +309,8 @@ export default function BookmarkCard({ bookmark }: Readonly<BookmarkProp>) {
251309
handleClose={handleClose}
252310
deleteBkmk={deleteBkmk}
253311
/>
254-
{resolveCardType()}
255-
<Card.Footer className={style.cardFooter}>
312+
<Content />
313+
<div className={`card-footer ${style.cardFooter}`}>
256314
<div className={style.container}>
257315
{strTags.map((tag) => (
258316
<button
@@ -280,7 +338,7 @@ export default function BookmarkCard({ bookmark }: Readonly<BookmarkProp>) {
280338
onChange={onChange}
281339
/>
282340
</div>
283-
</Card.Footer>
341+
</div>
284342
</div>
285343
</div>
286344
);

frontend/components/Bookmark/CardBody.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { RefObject, useState } from "react";
33
import Bookmark from "@type/Bookmarks/Bookmark";
44
import EditableField from "./EditableField";
55
import { ScrapableBookmarkToggle } from "./ScrapableToggle";
6+
import style from "./bookmarkCard.module.scss";
67

78
interface CardBodyProp {
89
bookmark: Readonly<Bookmark>;
@@ -22,8 +23,8 @@ export default function CardBody({
2223
const [isScrapable, setIsScrapable] = useState(bookmark.scrapable);
2324

2425
return (
25-
<Card.Body>
26-
<Card.Title>
26+
<Card.Body className={``}>
27+
<Card.Title className={`${style.cTitle}`}>
2728
{inEditMode ? (
2829
<EditableField
2930
fieldValue={bookmark.title}

frontend/components/Bookmark/bookmarkCard.module.scss

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,11 @@
1-
.main {
1+
.cardRoot {
22
margin-left: 0.5rem; /* 8px */
33
margin-right: 0.5rem; /* 8px */
4+
}
45

6+
.cTitle {
57
@media screen and (max-width: 700px) {
6-
.title {
7-
font-size: 12px;
8-
}
9-
p {
10-
font-size: 20px;
11-
}
12-
.card-title {
13-
font-size: 15px;
14-
}
15-
.card-footer {
16-
font-size: 12px;
17-
}
8+
font-size: 19px;
189
}
1910
}
2011

@@ -27,6 +18,10 @@
2718
border: none;
2819
border-top: 1px solid;
2920
background-color: unset;
21+
22+
@media screen and (max-width: 700px) {
23+
min-height: 50px;
24+
}
3025
}
3126

3227
.pillButton {
@@ -51,6 +46,11 @@
5146
&:disabled {
5247
background-color: grey !important;
5348
}
49+
50+
@media screen and (max-width: 700px) {
51+
margin: 5px;
52+
height: 35px;
53+
}
5454
}
5555

5656
.formButton {
@@ -139,10 +139,16 @@
139139
float: right;
140140
}
141141

142+
.cImg {
143+
border-top-left-radius: 0px;
144+
border-top-right-radius: 0px;
145+
}
146+
142147
.bookmarkCard {
143-
min-height: 250px;
148+
// min-height: 250px;
144149
margin-bottom: 20px;
145150
background-color: var(--card-bg);
151+
border: 0px;
146152
}
147153

148154
.newBookmarkCard {

frontend/components/CardView/BookmarkCardsView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export default function BookmarkCardsView() {
5555
return (
5656
<div
5757
key={b.id}
58-
className="col-xs-12 col-sm-6 col-md-6 col-lg-4 col-xl-3 col-xxl-2"
58+
className="col-12 col-sm-6 col-md-6 col-lg-4 col-xl-3 col-xxl-2"
5959
>
6060
<BookmarkCard bookmark={b} />
6161
</div>

0 commit comments

Comments
 (0)