diff --git a/src/components/ItemLister.js b/src/components/ItemLister.js
index 9c59b51..98ed8d8 100644
--- a/src/components/ItemLister.js
+++ b/src/components/ItemLister.js
@@ -2,6 +2,7 @@ import React, { useEffect, useState, useRef } from "react";
import styles from "./ItemLister.module.css";
import Item from "./Item";
import Switch from "react-switch";
+import { ThreeDots, ColorRing } from "react-loader-spinner";
import {
getItemQtyFromCart,
updateItemQtyInCart,
@@ -13,6 +14,7 @@ import {
updateItemType,
deleteItemType,
} from "../helpers/itemHelper.js";
+import ItemType from "./ItemType.js";
const ItemLister = ({
itemTypeId,
@@ -21,6 +23,7 @@ const ItemLister = ({
shopOwnerId,
user,
typeName,
+ typeImage,
itemList,
forCart,
forInvoice,
@@ -53,7 +56,6 @@ const ItemLister = ({
const [editedTypeName, setEditedTypeName] = useState(typeName);
const typeNameInputRef = useRef(null);
-
const handlePlusClick = (itemId) => {
const updatedItems = items.map((item) => {
if (item.itemId === itemId) {
@@ -99,11 +101,6 @@ const ItemLister = ({
const toggleEditTypeItem = () => {
setIsEditing((prev) => !prev);
- if (!isEdit) {
- setTimeout(() => {
- typeNameInputRef.current.focus();
- }, 0);
- }
};
const handleSaveType = async () => {
@@ -126,22 +123,21 @@ const ItemLister = ({
};
useEffect(() => {
- if(beingEditedType == itemTypeId)return;
-
- setOnEditItem(0);
+ if (beingEditedType == itemTypeId) return;
+
+ setOnEditItem(0);
setIsAddingNewItem(false);
- console.log(itemTypeId)
}, [beingEditedType]);
const toggleAddNewItem = () => {
+ setBeingEditedType(itemTypeId);
setIsAddingNewItem((prev) => !prev);
setOnEditItem(0);
- setBeingEditedType(itemTypeId);
};
const editItem = (itemId) => {
+ setBeingEditedType(itemTypeId);
setIsAddingNewItem(false);
setOnEditItem(itemId);
- setBeingEditedType(itemTypeId);
};
const handleChange = async (itemId) => {
// Find the item in the current items array
@@ -189,45 +185,143 @@ const ItemLister = ({
handleCreateItem(itemName, itemPrice, selectedImage, previewUrl);
setIsAddingNewItem(false);
};
-
+ console.log(getImageUrl(typeImage));
+ const [selectedImage, setSelectedImage] = useState(null);
+ const [previewUrl, setPreviewUrl] = useState("");
+ useEffect(() => {
+ if (selectedImage) {
+ setPreviewUrl(selectedImage);
+ } else {
+ setPreviewUrl(getImageUrl(typeImage));
+ }
+ }, [selectedImage]);
+ const handleImageChange = (e) => {
+ setSelectedImage(e);
+ };
return (
<>
{(items.length > 0 ||
(user && (user.cafeId == shopId || user.userId == shopOwnerId))) && (
-
+
{!raw && (
+ {isEdit && }
setEditedTypeName(e.target.value)}
disabled={!isEdit}
/>
- {isEditMode && (
- <>
-
- {isEdit && (
-
- )}
- >
- )}
+ {isEditMode && !isEdit && (
+ <>
+
+ >
+ )}
)}
+ {isEdit && (
+
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/addnew.png")}
+ />
+ {typeImage != null && !previewUrl.includes(typeImage) && (
+ handleImageChange(e)}
+ imageUrl={getImageUrl(typeImage)}
+ />
+ )}
+
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/beverage1.png")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/beverage2.png")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/beverage3.png")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/dessert1.png")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/dessert2.jpg")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/food1.png")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/food2.jpg")}
+ />
+
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/food3.png")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/packet1.png")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/packet2.png")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/snack1.png")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/snack2.png")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/snack3.png")}
+ />
+ handleImageChange(e)}
+ imageUrl={getImageUrl("uploads/snack4.png")}
+ />
+
+ )}
+
{user &&
user.roleId == 1 &&
@@ -274,8 +368,7 @@ const ItemLister = ({
)}
- {isEditMode && onEditItem != item.itemId&&
- (
+ {isEditMode && onEditItem != item.itemId && (
{isEditMode && (
handlePlusClick(item.itemId)}
onNegativeClick={() => handleNegativeClick(item.itemId)}
onRemoveClick={() => handleRemoveClick(item.itemId)}
- isBeingEdit={
- onEditItem == item.itemId
- }
+ isBeingEdit={onEditItem == item.itemId}
isAvailable={item.availability}
handleUpdateItem={(name, price, image) =>
handleUpdateItem(item.itemId, name, price, image)
@@ -332,6 +423,42 @@ const ItemLister = ({
>
)}
+ {isEdit && (
+
+
+
Pengaturan
+
+
+
+
+
+
+
setIsEditing(false)}
+ >
+ Kembali
+
+
+ )}
)}
>
diff --git a/src/components/ItemLister.module.css b/src/components/ItemLister.module.css
index 8a491f8..d0347a4 100644
--- a/src/components/ItemLister.module.css
+++ b/src/components/ItemLister.module.css
@@ -10,9 +10,30 @@
.item-lister:last-child {
margin-bottom: 50px;
}
+.fullscreen {
+ position: fixed; /* Keep the container fixed */
+ top: 0; /* Adjust the top position as needed */
+ bottom: 0; /* Occupy the full height of the viewport */
+ left: 0; /* Align to the left */
+ right: 0; /* Align to the right */
+ background-color: white; /* Background color */
+ z-index: 1000; /* Layering */
+ overflow-y: auto; /* Allow vertical scrolling */
+}
+.grid-container {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 10px;
+ /* padding: 10px; */
+ max-height: calc(3 * (25vw - 20px) + 20px);
+ overflow-y: auto;
+ height: calc(49vw - 20px);
+}
+
.title-container {
display: flex;
align-items: center;
+ justify-content: space-between;
}
.title {
@@ -78,3 +99,59 @@
align-items: center;
justify-content: center;
}
+
+.PaymentOption {
+ overflow-x: hidden;
+ background-color: white;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ font-size: calc(10px + 2vmin);
+ color: rgba(88, 55, 50, 1);
+ border-radius: 15px 15px 0 0;
+
+ position: fixed;
+ bottom: 0;
+ right: 0;
+ left: 0;
+
+ z-index: 300;
+}
+
+.TotalContainer {
+ display: flex;
+ justify-content: space-between;
+ width: 80vw;
+ margin: 0 auto;
+ font-family: "Poppins", sans-serif;
+ font-weight: 600;
+ font-style: normal;
+ font-size: 1.5em;
+ padding: 10px 0;
+ margin-bottom: 17px;
+}
+
+.PayButton {
+ font-family: "Poppins", sans-serif;
+ font-weight: 500;
+ font-style: normal;
+ font-size: 32px;
+
+ width: 80vw;
+ height: 18vw;
+ border-radius: 50px;
+ background-color: rgba(88, 55, 50, 1);
+ color: white;
+ border: none;
+ margin: 0px auto;
+ cursor: pointer;
+ margin-bottom: 23px;
+}
+
+.Pay2Button {
+ text-align: center;
+ color: rgba(88, 55, 50, 1);
+ font-size: 1em;
+ margin-bottom: 25px;
+ cursor: pointer;
+}
diff --git a/src/components/ItemType.js b/src/components/ItemType.js
index 37ad127..aa17ce4 100644
--- a/src/components/ItemType.js
+++ b/src/components/ItemType.js
@@ -91,7 +91,7 @@ export default function ItemType({
)}
- {(rectangular || !blank) && (
+ {(!rectangular && !blank) && (