Skip to content

Commit

Permalink
OrderItemView 切り出し
Browse files Browse the repository at this point in the history
  • Loading branch information
toririm committed Sep 30, 2024
1 parent 8df9bbb commit 6577bfa
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 23 deletions.
50 changes: 50 additions & 0 deletions app/components/organisms/OrderItemView.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import type { WithId } from "~/lib/typeguard";
import type { ItemEntity } from "~/models/item";
import type { OrderEntity } from "~/models/order";
import { ItemAssign } from "./ItemAssign";

type props = {
order: OrderEntity;
setOrderItems: React.Dispatch<React.SetStateAction<WithId<ItemEntity>[]>>;
inputStatus: "items" | "discount" | "received" | "description" | "submit";
itemFocus: number;
setItemFocus: React.Dispatch<React.SetStateAction<number>>;
discountOrder: boolean;
};

const OrderItemView = ({
inputStatus,
discountOrder,
setOrderItems,
itemFocus,
order,
}: props) => {
return (
<>
{inputStatus === "items" && (
<>
<p>商品を追加: キーボードの a, s, d, f, g, h, j, k, l, ;</p>
<p>↑・↓でアイテムのフォーカスを移動</p>
<p>Enterで指名の入力欄を開く</p>
</>
)}
{order.items.map((item, idx) => (
<ItemAssign
key={`${idx}-${item.id}`}
item={item}
idx={idx}
setOrderItems={setOrderItems}
focus={idx === itemFocus}
/>
))}
{discountOrder && (
<div className="grid grid-cols-2">
<p className="font-bold text-lg">割引</p>
<div>-&yen;{order.discountInfo.discount}</div>
</div>
)}
</>
);
};

export { OrderItemView };
32 changes: 9 additions & 23 deletions app/routes/cashier-v2.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import useSWRSubscription from "swr/subscription";
import { z } from "zod";
import { DiscountInput } from "~/components/organisms/DiscountInput";
import { ItemAssign } from "~/components/organisms/ItemAssign";
import { OrderAlertDialog } from "~/components/organisms/OrderAlertDialog";
import { OrderItemView } from "~/components/organisms/OrderItemView";
import { Button } from "~/components/ui/button";
import { Input } from "~/components/ui/input";
import { itemConverter, orderConverter } from "~/firebase/converter";
Expand Down Expand Up @@ -265,28 +265,14 @@ export default function Cashier() {
</div>
<div>
<p>入力ステータス: {inputStatus}</p>
{inputStatus === "items" && (
<>
<p>商品を追加: キーボードの a, s, d, f, g, h, j, k, l, ;</p>
<p>↑・↓でアイテムのフォーカスを移動</p>
<p>Enterで指名の入力欄を開く</p>
</>
)}
{orderItems.map((item, idx) => (
<ItemAssign
key={`${idx}-${item.id}`}
item={item}
idx={idx}
setOrderItems={setOrderItems}
focus={idx === itemFocus}
/>
))}
{discountOrder && (
<div className="grid grid-cols-2">
<p className="font-bold text-lg">割引</p>
<div>-&yen;{newOrder.discountInfo.discount}</div>
</div>
)}
<OrderItemView
order={newOrder}
setOrderItems={setOrderItems}
inputStatus={inputStatus}
itemFocus={itemFocus}
setItemFocus={setItemFocus}
discountOrder={Boolean(discountOrder)}
/>
</div>
</div>
<OrderAlertDialog
Expand Down

0 comments on commit 6577bfa

Please sign in to comment.