Skip to content

Commit 23e8667

Browse files
committed
fix: resolved comment from PR 32 (issue: Add/remove members #2)
1 parent a721df0 commit 23e8667

File tree

4 files changed

+20
-22
lines changed

4 files changed

+20
-22
lines changed

src/components/button/button.tsx

+8-4
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,18 @@ export default component$(
1616
disabledBtn?: boolean;
1717
}) => {
1818
const colors: Record<typeof variant, string> = {
19-
primary: "bg-blue-500 hover:bg-blue-700",
20-
secondary: "bg-green-500 hover:bg-green-700",
21-
danger: "bg-red-500 hover:bg-red-700",
19+
primary: `bg-blue-500 ${
20+
disabledBtn ? "opacity-50" : "hover:bg-blue-700"
21+
}`,
22+
secondary: `bg-green-500 ${
23+
disabledBtn ? "opacity-50" : "hover:bg-green-700"
24+
}`,
25+
danger: `bg-red-500 ${disabledBtn ? "opacity-50" : " hover:bg-red-700"}`,
2226
};
2327
return (
2428
<button
2529
disabled={disabledBtn}
26-
class={`bg-blue-500 hover:bg-blue-700 text-white font-bold ${
30+
class={`bg-blue-500 text-white font-bold ${
2731
size === "regular" ? "py-2 px-4" : "py-4 px-8"
2832
} rounded w-auto ${colors[variant]} ${customClass}`}
2933
onClick$={onClick$}

src/components/member-data/member-data.tsx

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
import { $, component$, useComputed$ } from "@builder.io/qwik";
2-
import type { MemberDataStore, BillStore } from "~/routes/start/[...id]";
1+
import { $, component$, useComputed$, type QRL } from "@builder.io/qwik";
2+
import type { MemberDataStore } from "~/routes/start/[...id]";
33
import Button from "../button/button";
44
import { sum } from "~/utils/math";
55

66
export default component$(
77
({
88
store,
9-
billStore,
109
number,
10+
deleteMemberFn,
11+
membersLength,
1112
}: {
1213
store: MemberDataStore;
13-
billStore: BillStore;
1414
number: number;
15+
deleteMemberFn: QRL<(id: string) => void>;
16+
membersLength: number;
1517
}) => {
1618
const total = useComputed$(() =>
1719
sum(store.items.map(({ price }) => price)),
@@ -61,9 +63,9 @@ export default component$(
6163
</div>
6264
<Button onClick$={$(() => store.add())}>Add item</Button>
6365
<Button
64-
disabledBtn={billStore.members.length < 3}
66+
disabledBtn={membersLength < 3}
6567
variant="danger"
66-
onClick$={$(() => billStore.deleteMember(store.id!))}
68+
onClick$={$(() => deleteMemberFn(store.id!))}
6769
>
6870
Remove member
6971
</Button>

src/routes/index.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,15 @@ export default component$(() => {
7171
</div>
7272
<div>
7373
<label for="bill-name" class="block mb-2 text-xl font-medium">
74-
Number of members (default is 3)
74+
Number of members
7575
</label>
7676
<input
7777
type="number"
7878
id="bill-name"
7979
class="border text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5"
8080
placeholder="Enter number of members"
8181
min={2}
82+
value={billData.memberCount}
8283
onInput$={(_, el) =>
8384
(billData.memberCount = parseInt(el.value))
8485
}

src/routes/start/[...id]/index.tsx

+2-11
Original file line numberDiff line numberDiff line change
@@ -116,16 +116,6 @@ export default component$(() => {
116116
isDirty.value = false;
117117
transactions.value = await computeSplit(store.members);
118118

119-
nav(
120-
`/start/?billName=${
121-
searchParams.get("billName") || BILL_NAME_DEFAULT
122-
}&memberCount=${
123-
store.members.length ||
124-
searchParams.get("memberCount") ||
125-
MEMBER_COUNT_DEFAULT.toString()
126-
}`,
127-
);
128-
129119
const { id } = await billsStore.save({
130120
id: params.id || undefined,
131121
name: store.name,
@@ -152,7 +142,8 @@ export default component$(() => {
152142
<div class="flex flex-col gap-4 flex-1 items-center">
153143
{store.members.map((member, i) => (
154144
<MemberData
155-
billStore={store}
145+
deleteMemberFn={$(() => store.deleteMember(member.id))}
146+
membersLength={store.members.length}
156147
key={i}
157148
store={member}
158149
number={i + 1}

0 commit comments

Comments
 (0)