diff --git a/src/InitialPage/Sidebar/Sidebar.jsx b/src/InitialPage/Sidebar/Sidebar.jsx
index c403b04..b5d03a5 100644
--- a/src/InitialPage/Sidebar/Sidebar.jsx
+++ b/src/InitialPage/Sidebar/Sidebar.jsx
@@ -1,19 +1,16 @@
-import React, { useState } from "react";
+import { useState } from "react";
import Scrollbars from "react-custom-scrollbars-2";
-// import { useSelector } from "react-redux";
import { Link, useLocation } from "react-router-dom";
import { SidebarData } from "../../core/json/siderbar_data";
-import HorizontalSidebar from "./horizontalSidebar";
import CollapsedSidebar from "./collapsedSidebar";
+import HorizontalSidebar from "./horizontalSidebar";
+import { useSelector } from "react-redux";
const Sidebar = () => {
- // const SidebarData = useSelector((state) => state.sidebar_data);
- // console.log(sidebarData, "sidebar");
+ const { user } = useSelector((state) => state.auth);
const Location = useLocation();
- console.log("Location.pathname", Location.pathname);
-
const [subOpen, setSubopen] = useState("");
const [subsidebar, setSubsidebar] = useState("");
@@ -46,6 +43,12 @@ const Sidebar = () => {
{
className="btn btn-primary mt-2"
onClick={addVariant}
>
-
+
Add Variant
diff --git a/src/feature-module/inventory/editproduct.jsx b/src/feature-module/inventory/editproduct.jsx
index d016cf1..ac896aa 100644
--- a/src/feature-module/inventory/editproduct.jsx
+++ b/src/feature-module/inventory/editproduct.jsx
@@ -188,12 +188,19 @@ const EditProduct = () => {
}
try {
- // Prepare the data for submission
+ const isAllEmpty = variants.every(
+ (item) =>
+ item.name === "" && item.price_modifier === 0 && item.cost === 0
+ );
+
const productData = {
...formData,
- variants,
};
+ if (!isAllEmpty) {
+ productData.variants = variants;
+ }
+
// Remove empty values
const cleanData = Object.fromEntries(
Object.entries(productData).filter(([, value]) => {
diff --git a/src/feature-module/pages/login/signin.jsx b/src/feature-module/pages/login/signin.jsx
index 930436b..582dd4b 100644
--- a/src/feature-module/pages/login/signin.jsx
+++ b/src/feature-module/pages/login/signin.jsx
@@ -10,29 +10,28 @@ const Signin = () => {
const navigate = useNavigate();
// const dispatch = useDispatch();
const authState = useSelector((state) => state.auth);
-
+
const [formData, setFormData] = useState({
- email: '',
- password: ''
+ email: "",
+ password: "",
});
- const [error, setError] = useState('');
+ const [error, setError] = useState("");
const handleInputChange = (e) => {
setFormData({
...formData,
- [e.target.name]: e.target.value
+ [e.target.name]: e.target.value,
});
};
- const handleSubmit = async (e) => {
+ const handleSubmit = (e) => {
e.preventDefault();
- setError('');
-
+ setError("");
+
try {
- await authApi.login(formData);
- navigate(route.dashboard);
+ authApi.login(formData).then(() => navigate(route.dashboard));
} catch (error) {
- setError(error.message || 'Login failed');
+ setError(error.message || "Login failed");
}
};
@@ -63,12 +62,12 @@ const Signin = () => {
-
diff --git a/src/feature-module/sales/saleslist.jsx b/src/feature-module/sales/saleslist.jsx
index a002998..753584e 100644
--- a/src/feature-module/sales/saleslist.jsx
+++ b/src/feature-module/sales/saleslist.jsx
@@ -1,4 +1,4 @@
-import { DatePicker, Space, Select as AntSelect } from "antd";
+import { Select as AntSelect, DatePicker, Space } from "antd";
import {
ChevronUp,
PlusCircle,
@@ -17,7 +17,7 @@ import {
fetchOrders,
} from "../../core/redux/actions/orderActions";
import { formatRupiah } from "../../utils/currency";
-import { formatDate } from "../../utils/date";
+import { formatDate, formatInputDate } from "../../utils/date";
const SalesList = () => {
const {
@@ -35,25 +35,41 @@ const SalesList = () => {
const dataSource = apiOrders?.length > 0 ? apiOrders : [];
- const [currentPage, setCurrentPage] = useState(reduxCurrentPage || 1);
- const [pageSize, setPageSize] = useState(reduxPageSize || 10);
+ const [params, setParams] = useState({
+ page: reduxCurrentPage || 1,
+ limit: reduxPageSize || 10,
+ status: null,
+ date_from: null,
+ date_to: null,
+ });
+
const [searchTerm, setSearchTerm] = useState("");
const [debouncedSearchTerm, setDebouncedSearchTerm] = useState("");
- const [orderStatus, setOrderStatus] = useState(null);
+
+ const [selectedOrder, setSelectedOrder] = useState(null);
+
+ const handleSetParams = (key, value) => {
+ setParams({
+ ...params,
+ [key]: value,
+ });
+ };
useEffect(() => {
const loadOrders = async () => {
try {
- const searchParams = {
- page: currentPage,
- limit: pageSize,
+ const receivedParams = {
+ page: params.page,
+ limit: params.limit,
search: debouncedSearchTerm || "",
- status: orderStatus,
+ status: params.status,
+ date_from: params.date_from,
+ date_to: params.date_to,
};
// Remove empty parameters
const cleanParams = Object.fromEntries(
- Object.entries(searchParams).filter(([, value]) => value !== "")
+ Object.entries(receivedParams).filter(([, value]) => value !== "")
);
await dispatch(fetchOrders(cleanParams));
@@ -63,7 +79,7 @@ const SalesList = () => {
};
loadOrders();
- }, [dispatch, currentPage, pageSize, debouncedSearchTerm, orderStatus]);
+ }, [dispatch, params, debouncedSearchTerm]);
useEffect(() => {
const timer = setTimeout(() => {
@@ -78,30 +94,23 @@ const SalesList = () => {
const value = e.target.value;
setSearchTerm(value);
// Reset to first page when searching
- setCurrentPage(1);
- };
-
- const handleFilterStatus = (e) => {
- const value = e.target.value;
- setOrderStatus(value);
-
- setCurrentPage(1);
+ handleSetParams("page", 1);
};
// Handle pagination
const handlePageChange = (page) => {
- setCurrentPage(page);
+ handleSetParams("page", page);
};
// Handle page size change
const handlePageSizeChange = (newPageSize) => {
- setPageSize(newPageSize);
- setCurrentPage(1); // Reset to first page when changing page size
+ handleSetParams("limit", newPageSize);
+ handleSetParams("page", 1);
};
// Calculate pagination info
const totalRecords = totalOrders || dataSource.length;
- const calculatedTotalPages = Math.ceil(totalRecords / pageSize);
+ const calculatedTotalPages = Math.ceil(totalRecords / params.limit);
const actualTotalPages = totalPages || calculatedTotalPages;
// Clear error when component unmounts
@@ -141,13 +150,6 @@ const SalesList = () => {
cancelled: "danger",
};
- const options = [
- { label: "Sort By: Last 7 Days", value: "last7days" },
- { label: "Sort By: Last Month", value: "lastmonth" },
- { label: "Sort By: Ascending", value: "ascending" },
- { label: "Sort By: Descending", value: "descending" },
- ];
-
const [selectedDate, setSelectedDate] = useState(new Date());
const handleDateChange = (date) => {
setSelectedDate(date);
@@ -272,23 +274,48 @@ const SalesList = () => {
-