1) Handle blank space in menu bar
2) Breadcrum "Home" link to "Dashboard" on pages where it was missing
This commit is contained in:
parent
6860ba3dff
commit
0bd1cea703
@ -99,7 +99,7 @@ const MenuItem = (item) => {
|
|||||||
className={`menu-link ${hasSubmenu ? "menu-toggle" : ""}`}
|
className={`menu-link ${hasSubmenu ? "menu-toggle" : ""}`}
|
||||||
target={item.link?.includes("http") ? "_blank" : undefined}
|
target={item.link?.includes("http") ? "_blank" : undefined}
|
||||||
>
|
>
|
||||||
<i className={`menu-icon tf-icons ${item.icon}`}></i>
|
{item.icon && <i className={`menu-icon tf-icons ${item.icon}`}></i>}
|
||||||
<div>{item.name}</div>
|
<div>{item.name}</div>
|
||||||
{item.available === false && (
|
{item.available === false && (
|
||||||
<div className="badge bg-label-primary fs-tiny rounded-pill ms-auto">
|
<div className="badge bg-label-primary fs-tiny rounded-pill ms-auto">
|
||||||
|
|||||||
@ -40,13 +40,12 @@ const AdvancePaymentPage = () => {
|
|||||||
});
|
});
|
||||||
}, [reset]);
|
}, [reset]);
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AdvancePaymentContext.Provider value={{ setBalance }}>
|
<AdvancePaymentContext.Provider value={{ setBalance }}>
|
||||||
<div className="container-fluid">
|
<div className="container-fluid">
|
||||||
<Breadcrumb
|
<Breadcrumb
|
||||||
data={[
|
data={[
|
||||||
{ label: "Home", link: "/" },
|
{ label: "Home", link: "/dashboard" },
|
||||||
{ label: "Finance", link: "/advance-payment" },
|
{ label: "Finance", link: "/advance-payment" },
|
||||||
{ label: "Advance Payment" },
|
{ label: "Advance Payment" },
|
||||||
]}
|
]}
|
||||||
@ -73,7 +72,12 @@ const AdvancePaymentPage = () => {
|
|||||||
balance > 0 ? "text-success" : "text-danger"
|
balance > 0 ? "text-success" : "text-danger"
|
||||||
} fs-5 fw-bold ms-1`}
|
} fs-5 fw-bold ms-1`}
|
||||||
>
|
>
|
||||||
{ balance > 0 ? <i className="bx bx-plus b-sm"></i> : <i className="bx bx-minus b-sm"></i>} {formatFigure(balance, {
|
{balance > 0 ? (
|
||||||
|
<i className="bx bx-plus b-sm"></i>
|
||||||
|
) : (
|
||||||
|
<i className="bx bx-minus b-sm"></i>
|
||||||
|
)}{" "}
|
||||||
|
{formatFigure(balance, {
|
||||||
type: "currency",
|
type: "currency",
|
||||||
currency: "INR",
|
currency: "INR",
|
||||||
})}
|
})}
|
||||||
@ -85,8 +89,6 @@ const AdvancePaymentPage = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<AdvancePaymentList employeeId={selectedEmployeeId} />
|
<AdvancePaymentList employeeId={selectedEmployeeId} />
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</AdvancePaymentContext.Provider>
|
</AdvancePaymentContext.Provider>
|
||||||
|
|||||||
@ -1,4 +1,10 @@
|
|||||||
import React, { createContext, useContext, useState, useEffect, useRef } from "react";
|
import React, {
|
||||||
|
createContext,
|
||||||
|
useContext,
|
||||||
|
useState,
|
||||||
|
useEffect,
|
||||||
|
useRef,
|
||||||
|
} from "react";
|
||||||
import { useForm, useFormContext } from "react-hook-form";
|
import { useForm, useFormContext } from "react-hook-form";
|
||||||
import { zodResolver } from "@hookform/resolvers/zod";
|
import { zodResolver } from "@hookform/resolvers/zod";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
@ -19,7 +25,10 @@ import {
|
|||||||
VIEW_SELF_EXPENSE,
|
VIEW_SELF_EXPENSE,
|
||||||
} from "../../utils/constants";
|
} from "../../utils/constants";
|
||||||
|
|
||||||
import { defaultFilter, SearchSchema } from "../../components/Expenses/ExpenseSchema";
|
import {
|
||||||
|
defaultFilter,
|
||||||
|
SearchSchema,
|
||||||
|
} from "../../components/Expenses/ExpenseSchema";
|
||||||
import PreviewDocument from "../../components/Expenses/PreviewDocument";
|
import PreviewDocument from "../../components/Expenses/PreviewDocument";
|
||||||
|
|
||||||
// Context
|
// Context
|
||||||
@ -102,14 +111,14 @@ const ExpensePage = () => {
|
|||||||
setManageExpenseModal,
|
setManageExpenseModal,
|
||||||
setDocumentView,
|
setDocumentView,
|
||||||
filterData,
|
filterData,
|
||||||
removeFilterChip
|
removeFilterChip,
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ExpenseContext.Provider value={contextValue}>
|
<ExpenseContext.Provider value={contextValue}>
|
||||||
<div className="container-fluid">
|
<div className="container-fluid">
|
||||||
<Breadcrumb
|
<Breadcrumb
|
||||||
data={[{ label: "Home", link: "/" }, { label: "Expense" }]}
|
data={[{ label: "Home", link: "/dashboard" }, { label: "Expense" }]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{IsViewAll || IsViewSelf || IsCreatedAble ? (
|
{IsViewAll || IsViewSelf || IsCreatedAble ? (
|
||||||
@ -128,7 +137,6 @@ const ExpensePage = () => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="col-6 text-end mt-2 mt-sm-0">
|
<div className="col-6 text-end mt-2 mt-sm-0">
|
||||||
|
|
||||||
{IsCreatedAble && (
|
{IsCreatedAble && (
|
||||||
<button
|
<button
|
||||||
className="btn btn-sm btn-primary"
|
className="btn btn-sm btn-primary"
|
||||||
@ -151,8 +159,6 @@ const ExpensePage = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<ExpenseList
|
<ExpenseList
|
||||||
filters={filters}
|
filters={filters}
|
||||||
groupBy={groupBy}
|
groupBy={groupBy}
|
||||||
|
|||||||
@ -36,11 +36,10 @@ export const useGalleryContext = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const ImageGalleryPage = () => {
|
const ImageGalleryPage = () => {
|
||||||
const [filter,setFilter] = useState()
|
const [filter, setFilter] = useState();
|
||||||
const selectedProjectId = useSelectedProject();
|
const selectedProjectId = useSelectedProject();
|
||||||
const { projectNames } = useProjectName();
|
const { projectNames } = useProjectName();
|
||||||
|
|
||||||
|
|
||||||
const [openGallery, setOpenGallery] = useState({ isOpen: false, data: null });
|
const [openGallery, setOpenGallery] = useState({ isOpen: false, data: null });
|
||||||
|
|
||||||
const { data: assignedServices = [], isLoading } =
|
const { data: assignedServices = [], isLoading } =
|
||||||
@ -60,20 +59,22 @@ const ImageGalleryPage = () => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setShowTrigger(true);
|
setShowTrigger(true);
|
||||||
setOffcanvasContent("Gallery Filter",<GalleryFilterPanel onApply={setFilter}/>);
|
setOffcanvasContent(
|
||||||
|
"Gallery Filter",
|
||||||
|
<GalleryFilterPanel onApply={setFilter} />
|
||||||
|
);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
setOffcanvasContent("",null)
|
setOffcanvasContent("", null);
|
||||||
setShowTrigger(false);
|
setShowTrigger(false);
|
||||||
}
|
};
|
||||||
},[])
|
}, []);
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<GalleryContext.Provider value={contextMessager}>
|
<GalleryContext.Provider value={contextMessager}>
|
||||||
<div className="container-fluid">
|
<div className="container-fluid">
|
||||||
<Breadcrumb
|
<Breadcrumb
|
||||||
data={[{ label: "Home", link: "/" }, { label: "Gallery" }]}
|
data={[{ label: "Home", link: "/dashboard" }, { label: "Gallery" }]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div className="card page-min-h p-2">
|
<div className="card page-min-h p-2">
|
||||||
|
|||||||
@ -6,12 +6,15 @@ import OrganizationsList from "../../components/Organization/OrganizationsList";
|
|||||||
const OrganizationPage = () => {
|
const OrganizationPage = () => {
|
||||||
const { isOpen, orgData, startStep, onOpen, flowType } =
|
const { isOpen, orgData, startStep, onOpen, flowType } =
|
||||||
useOrganizationModal();
|
useOrganizationModal();
|
||||||
const [searchText, setSearchText] = useState("")
|
const [searchText, setSearchText] = useState("");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="container-fluid">
|
<div className="container-fluid">
|
||||||
<Breadcrumb
|
<Breadcrumb
|
||||||
data={[{ label: "Home", link: "/" }, { label: "Organizations" }]}
|
data={[
|
||||||
|
{ label: "Home", link: "/dashboard" },
|
||||||
|
{ label: "Organizations" },
|
||||||
|
]}
|
||||||
/>
|
/>
|
||||||
<div className="card my-3 px-sm-4 px-0">
|
<div className="card my-3 px-sm-4 px-0">
|
||||||
<div className="card-body py-2 px-3">
|
<div className="card-body py-2 px-3">
|
||||||
@ -42,14 +45,11 @@ const OrganizationPage = () => {
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="card page-min-h px-sm-4">
|
<div className="card page-min-h px-sm-4">
|
||||||
<OrganizationsList searchText={searchText} />
|
<OrganizationsList searchText={searchText} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -6,7 +6,10 @@ import ExpenseFilterPanel from "../../components/Expenses/ExpenseFilterPanel";
|
|||||||
import { useFab } from "../../Context/FabContext";
|
import { useFab } from "../../Context/FabContext";
|
||||||
import PaymentRequestList from "../../components/PaymentRequest/PaymentRequestList";
|
import PaymentRequestList from "../../components/PaymentRequest/PaymentRequestList";
|
||||||
import PaymentRequestFilterPanel from "../../components/PaymentRequest/PaymentRequestFilterPanel";
|
import PaymentRequestFilterPanel from "../../components/PaymentRequest/PaymentRequestFilterPanel";
|
||||||
import { defaultPaymentRequestFilter,SearchPaymentRequestSchema } from "../../components/PaymentRequest/PaymentRequestSchema";
|
import {
|
||||||
|
defaultPaymentRequestFilter,
|
||||||
|
SearchPaymentRequestSchema,
|
||||||
|
} from "../../components/PaymentRequest/PaymentRequestSchema";
|
||||||
import ViewPaymentRequest from "../../components/PaymentRequest/ViewPaymentRequest";
|
import ViewPaymentRequest from "../../components/PaymentRequest/ViewPaymentRequest";
|
||||||
import PreviewDocument from "../../components/Expenses/PreviewDocument";
|
import PreviewDocument from "../../components/Expenses/PreviewDocument";
|
||||||
import MakeExpense from "../../components/PaymentRequest/MakeExpense";
|
import MakeExpense from "../../components/PaymentRequest/MakeExpense";
|
||||||
@ -15,7 +18,9 @@ export const PaymentRequestContext = createContext();
|
|||||||
export const usePaymentRequestContext = () => {
|
export const usePaymentRequestContext = () => {
|
||||||
const context = useContext(PaymentRequestContext);
|
const context = useContext(PaymentRequestContext);
|
||||||
if (!context) {
|
if (!context) {
|
||||||
throw new Error("usePaymentRequestContext must be used within an ExpenseProvider");
|
throw new Error(
|
||||||
|
"usePaymentRequestContext must be used within an ExpenseProvider"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return context;
|
return context;
|
||||||
};
|
};
|
||||||
@ -24,16 +29,21 @@ const PaymentRequestPage = () => {
|
|||||||
IsOpen: null,
|
IsOpen: null,
|
||||||
RequestId: null,
|
RequestId: null,
|
||||||
});
|
});
|
||||||
const [ViewRequest,setVieRequest] = useState({view:false,requestId:null})
|
const [ViewRequest, setVieRequest] = useState({
|
||||||
|
view: false,
|
||||||
|
requestId: null,
|
||||||
|
});
|
||||||
const { setOffcanvasContent, setShowTrigger } = useFab();
|
const { setOffcanvasContent, setShowTrigger } = useFab();
|
||||||
const [filters, setFilters] = useState(defaultPaymentRequestFilter);
|
const [filters, setFilters] = useState(defaultPaymentRequestFilter);
|
||||||
const [ViewDocument, setDocumentView] = useState({
|
const [ViewDocument, setDocumentView] = useState({
|
||||||
IsOpen: false,
|
IsOpen: false,
|
||||||
Image: null,
|
Image: null,
|
||||||
});
|
});
|
||||||
const [isExpenseGenerate,setIsExpenseGenerate] = useState({IsOpen: null,
|
const [isExpenseGenerate, setIsExpenseGenerate] = useState({
|
||||||
RequestId: null,})
|
IsOpen: null,
|
||||||
const [modalSize,setModalSize] = useState("md")
|
RequestId: null,
|
||||||
|
});
|
||||||
|
const [modalSize, setModalSize] = useState("md");
|
||||||
const [search, setSearch] = useState("");
|
const [search, setSearch] = useState("");
|
||||||
|
|
||||||
const contextValue = {
|
const contextValue = {
|
||||||
@ -42,11 +52,10 @@ const PaymentRequestPage = () => {
|
|||||||
setDocumentView,
|
setDocumentView,
|
||||||
setModalSize,
|
setModalSize,
|
||||||
setIsExpenseGenerate,
|
setIsExpenseGenerate,
|
||||||
isExpenseGenerate
|
isExpenseGenerate,
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
||||||
setShowTrigger(true);
|
setShowTrigger(true);
|
||||||
setOffcanvasContent(
|
setOffcanvasContent(
|
||||||
"Payment Request Filters",
|
"Payment Request Filters",
|
||||||
@ -65,7 +74,7 @@ const PaymentRequestPage = () => {
|
|||||||
{/* Breadcrumb */}
|
{/* Breadcrumb */}
|
||||||
<Breadcrumb
|
<Breadcrumb
|
||||||
data={[
|
data={[
|
||||||
{ label: "Home", link: "/" },
|
{ label: "Home", link: "/dashboard" },
|
||||||
{ label: "Finance", link: "/Payment Request" },
|
{ label: "Finance", link: "/Payment Request" },
|
||||||
{ label: "Payment Request" },
|
{ label: "Payment Request" },
|
||||||
]}
|
]}
|
||||||
@ -106,10 +115,7 @@ const PaymentRequestPage = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<PaymentRequestList
|
<PaymentRequestList search={search} filters={filters} />
|
||||||
search={search}
|
|
||||||
filters={filters}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{/* Add/Edit Modal */}
|
{/* Add/Edit Modal */}
|
||||||
{ManageRequest.IsOpen && (
|
{ManageRequest.IsOpen && (
|
||||||
@ -144,10 +150,16 @@ const PaymentRequestPage = () => {
|
|||||||
<GlobalModel
|
<GlobalModel
|
||||||
isOpen
|
isOpen
|
||||||
size="md"
|
size="md"
|
||||||
closeModal={() => setIsExpenseGenerate({IsOpen:false, requestId: null})}
|
closeModal={() =>
|
||||||
|
setIsExpenseGenerate({ IsOpen: false, requestId: null })
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<MakeExpe
|
<MakeExpe
|
||||||
nse onClose={() => setIsExpenseGenerate({IsOpen:false, requestId: null})} />
|
nse
|
||||||
|
onClose={() =>
|
||||||
|
setIsExpenseGenerate({ IsOpen: false, requestId: null })
|
||||||
|
}
|
||||||
|
/>
|
||||||
</GlobalModel>
|
</GlobalModel>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
@ -161,7 +173,6 @@ const PaymentRequestPage = () => {
|
|||||||
<PreviewDocument imageUrl={ViewDocument.Image} />
|
<PreviewDocument imageUrl={ViewDocument.Image} />
|
||||||
</GlobalModel>
|
</GlobalModel>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</PaymentRequestContext.Provider>
|
</PaymentRequestContext.Provider>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -101,7 +101,7 @@ const CollectionPage = () => {
|
|||||||
) {
|
) {
|
||||||
return (
|
return (
|
||||||
<AccessDenied
|
<AccessDenied
|
||||||
data={[{ label: "Home", link: "/" }, { label: "Collection" }]}
|
data={[{ label: "Home", link: "/dashboard" }, { label: "Collection" }]}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -109,7 +109,10 @@ const CollectionPage = () => {
|
|||||||
<CollectionContext.Provider value={contextMassager}>
|
<CollectionContext.Provider value={contextMassager}>
|
||||||
<div className="container-fluid">
|
<div className="container-fluid">
|
||||||
<Breadcrumb
|
<Breadcrumb
|
||||||
data={[{ label: "Home", link: "/" }, { label: "Collection" }]}
|
data={[
|
||||||
|
{ label: "Home", link: "/dashboard" },
|
||||||
|
{ label: "Collection" },
|
||||||
|
]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div className="card my-3 py-2 px-sm-4 px-2">
|
<div className="card my-3 py-2 px-sm-4 px-2">
|
||||||
@ -152,16 +155,18 @@ const CollectionPage = () => {
|
|||||||
<button
|
<button
|
||||||
className="btn btn-sm btn-primary"
|
className="btn btn-sm btn-primary"
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => setCollection({ isOpen: true, invoiceId: null })}
|
onClick={() =>
|
||||||
|
setCollection({ isOpen: true, invoiceId: null })
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<i className="bx bx-plus-circle me-2"></i>
|
<i className="bx bx-plus-circle me-2"></i>
|
||||||
<span className="d-none d-md-inline-block">Add New Collection</span>
|
<span className="d-none d-md-inline-block">
|
||||||
|
Add New Collection
|
||||||
|
</span>
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<CollectionList
|
<CollectionList
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user