Skip to content

Commit 3ea877e

Browse files
committed
スタイリング
1 parent e45d34e commit 3ea877e

File tree

2 files changed

+74
-39
lines changed

2 files changed

+74
-39
lines changed

web/app/edit/interests/page.tsx

Lines changed: 73 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import type { InterestSubject } from "common/types";
44
import { useRouter } from "next/navigation";
55
import { useEffect, useState } from "react";
6+
import { MdAdd, MdClose } from "react-icons/md";
67
import FullScreenCircularProgress from "~/components/common/FullScreenCircularProgress";
78
import { useAlert } from "~/components/common/alert/AlertProvider";
89
import { search, update, useMyInterests } from "../../../api/subject";
@@ -36,6 +37,8 @@ export default function EditInterest() {
3637
if (searchQuery) {
3738
const result = await search(searchQuery);
3839
setSearchResult(result);
40+
} else {
41+
setSearchResult([]);
3942
}
4043
})();
4144
}, [searchQuery]);
@@ -68,48 +71,82 @@ export default function EditInterest() {
6871
) : !data ? (
6972
<p>データがありません。</p>
7073
) : (
71-
<div className="overflow-y-scroll">
72-
<div className="h-full">
73-
<ul>
74-
{draftSubjects.map((subject, index) => (
75-
<li key={subject.id}>
76-
{subject.name}
77-
<button
78-
type="button"
79-
className="btn btn-sm"
80-
onClick={() =>
81-
setDraftSubjects((prev) => {
82-
const copy = [...prev];
83-
copy.splice(index, 1);
84-
return copy;
85-
})
86-
}
74+
<div className="h-full overflow-y-scroll">
75+
<div className="mx-auto flex h-full max-w-lg flex-col px-4">
76+
<div className="flex-1">
77+
<div className="flex flex-wrap gap-2 p-2">
78+
{draftSubjects.map((subject, index) => (
79+
<span
80+
key={subject.id}
81+
className="rounded-md bg-[#F7FCFF] px-2 py-1 text-md text-primary"
8782
>
88-
x
89-
</button>
90-
</li>
91-
))}
92-
</ul>
93-
<input
94-
type="text"
95-
value={searchInput}
96-
onChange={(e) => setSearchInput(e.target.value)}
97-
/>
98-
<ul>
99-
{searchResult.map((subject) => (
100-
<li key={subject.id}>
101-
{subject.name}
83+
#{subject.name}
84+
<button
85+
type="button"
86+
className="btn btn-circle btn-xs ml-1"
87+
onClick={() =>
88+
setDraftSubjects((prev) => {
89+
const copy = [...prev];
90+
copy.splice(index, 1);
91+
return copy;
92+
})
93+
}
94+
>
95+
<MdClose className="text-xs" />
96+
</button>
97+
</span>
98+
))}
99+
</div>
100+
<div className="mt-2 w-full">
101+
<input
102+
type="text"
103+
value={searchInput}
104+
onChange={(e) => setSearchInput(e.target.value)}
105+
placeholder="興味分野タグを検索"
106+
className="input input-bordered w-full"
107+
/>
108+
</div>
109+
<ul className="mt-2">
110+
{searchResult.length !== 0 ? (
111+
searchResult
112+
.filter(
113+
(subject) =>
114+
!draftSubjects.some((draft) => draft.id === subject.id),
115+
)
116+
.map((subject) => (
117+
<li key={subject.id}>
118+
<button
119+
type="button"
120+
className="btn btn-ghost inline-flex h-full w-full justify-start p-2"
121+
onClick={() =>
122+
setDraftSubjects((prev) => [...prev, subject])
123+
}
124+
>
125+
<span className="font-normal text-lg">
126+
#{subject.name}
127+
</span>
128+
</button>
129+
</li>
130+
))
131+
) : (
132+
<li key="empty" className="p-2 text-gray-500">
133+
{searchQuery
134+
? "検索結果がありません"
135+
: "興味分野を検索してみましょう"}
136+
</li>
137+
)}
138+
<li className="flex w-full items-center justify-center py-2">
102139
<button
103140
type="button"
104-
className="btn btn-sm"
105-
onClick={() => setDraftSubjects((prev) => [...prev, subject])}
141+
className="btn btn-secondary px-6 font-normal"
106142
>
107-
+
143+
<MdAdd />
144+
タグを新規作成
108145
</button>
109146
</li>
110-
))}
111-
</ul>
112-
<div className="flex justify-between">
147+
</ul>
148+
</div>
149+
<div className="my-2 flex justify-between">
113150
<button type="button" className="btn btn-sm" onClick={handleBack}>
114151
設定画面に戻る
115152
</button>

web/app/edit/layout.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ export default function EditPageLayout({
1010
<NavigateByAuthState type="toLoginForUnauthenticated">
1111
<div className="flex h-screen flex-col">
1212
<Header title="編集/Edit" />
13-
<div className="mt-14 flex-1 overflow-y-scroll sm:mt-16">
14-
{children}
15-
</div>
13+
<div className="mt-14 flex-1 overflow-y-scroll">{children}</div>
1614
</div>
1715
</NavigateByAuthState>
1816
);

0 commit comments

Comments
 (0)