Compare commits
No commits in common. "7b7d8fced50c25288b87f03d910555f6158c7a45" and "066990e8aa8df3e9cbf81307ec31952a8b9438b8" have entirely different histories.
7b7d8fced5
...
066990e8aa
|
|
@ -80,6 +80,7 @@
|
|||
&.open {
|
||||
background: #050d36 !important;
|
||||
color: #23bbff;
|
||||
border-right: 2px solid #23bbff;
|
||||
font-weight: 600;
|
||||
width: 95%;
|
||||
}
|
||||
|
|
@ -88,16 +89,14 @@
|
|||
background: #050d36 !important;
|
||||
color: #ffffff !important;
|
||||
font-weight: 600;
|
||||
border-radius: 6px 4px 4px 6px;
|
||||
border-right: 2px solid #23bbff !important;
|
||||
border-radius: 6px;
|
||||
|
||||
.pozo-menu-icon {
|
||||
color: #ffffff !important;
|
||||
color: #23bbff !important;
|
||||
}
|
||||
|
||||
.pozo-menu-label {
|
||||
color: #ffffff !important;
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
|
||||
.pozo-menu-arrow {
|
||||
|
|
@ -152,7 +151,7 @@
|
|||
flex: 1;
|
||||
color: #ffffff;
|
||||
font-size: 12px;
|
||||
font-weight: 400;
|
||||
font-weight: 500;
|
||||
word-break: break-word;
|
||||
line-height: 1.2;
|
||||
font-family: "Poppins", sans-serif !important;
|
||||
|
|
@ -404,7 +403,7 @@
|
|||
color: #fff;
|
||||
|
||||
.pozo-menu-item {
|
||||
color: #ffffffd9;
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
|
||||
&:hover {
|
||||
background: #1890ff;
|
||||
|
|
|
|||
|
|
@ -182,8 +182,7 @@ const AdminTaxForm = () => {
|
|||
setpage(current);
|
||||
};
|
||||
|
||||
const columns = useMemo(
|
||||
() => [
|
||||
const columns = useMemo(() => [
|
||||
{
|
||||
title: 'Sl.NO',
|
||||
key: 'sno',
|
||||
|
|
@ -214,8 +213,7 @@ const AdminTaxForm = () => {
|
|||
);
|
||||
},
|
||||
sorter: (a, b) => a?.TaxIdName?.localeCompare(b?.TaxIdName),
|
||||
sortOrder:
|
||||
sortedInfo.columnKey === 'TaxIdName' ? sortedInfo.order : null,
|
||||
sortOrder: sortedInfo.columnKey === 'TaxIdName' ? sortedInfo.order : null,
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
|
|
@ -225,10 +223,8 @@ const AdminTaxForm = () => {
|
|||
width: '100px',
|
||||
align: 'right',
|
||||
render: (text) => <a style={{ color: 'black' }}>{text}</a>,
|
||||
sorter: (a, b) =>
|
||||
parseFloat(a.TaxPercentage) - parseFloat(b.TaxPercentage),
|
||||
sortOrder:
|
||||
sortedInfo.columnKey === 'TaxPercentage' ? sortedInfo.order : null,
|
||||
sorter: (a, b) => parseFloat(a.TaxPercentage) - parseFloat(b.TaxPercentage),
|
||||
sortOrder: sortedInfo.columnKey === 'TaxPercentage' ? sortedInfo.order : null,
|
||||
ellipsis: true,
|
||||
},
|
||||
|
||||
|
|
@ -242,8 +238,7 @@ const AdminTaxForm = () => {
|
|||
<a style={{ color: 'black' }}>{ExtractDateFormate(text)}</a>
|
||||
),
|
||||
sorter: (a, b) => new Date(a.EffectiveFrom) - new Date(b.EffectiveFrom),
|
||||
sortOrder:
|
||||
sortedInfo.columnKey === 'EffectiveFrom' ? sortedInfo.order : null,
|
||||
sortOrder: sortedInfo.columnKey === 'EffectiveFrom' ? sortedInfo.order : null,
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
|
|
@ -254,13 +249,10 @@ const AdminTaxForm = () => {
|
|||
align: 'right',
|
||||
render: (text) => <a style={{ color: 'black' }}>{text}</a>,
|
||||
sorter: (a, b) => a?.Reference?.localeCompare(b?.Reference),
|
||||
sortOrder:
|
||||
sortedInfo.columnKey === 'Reference' ? sortedInfo.order : null,
|
||||
sortOrder: sortedInfo.columnKey === 'Reference' ? sortedInfo.order : null,
|
||||
ellipsis: true,
|
||||
},
|
||||
],
|
||||
[searchedText, sortedInfo, page]
|
||||
);
|
||||
], [searchedText, sortedInfo, page]);
|
||||
|
||||
const onComplete = useCallback(() => {
|
||||
setMessageData(null);
|
||||
|
|
@ -280,7 +272,7 @@ const AdminTaxForm = () => {
|
|||
}
|
||||
};
|
||||
return (
|
||||
<div className="userPageTable adminTaxMaster">
|
||||
<div className="userPageTable">
|
||||
<div className="userPageContent">
|
||||
<Messages
|
||||
messageType={messageType}
|
||||
|
|
@ -290,7 +282,8 @@ const AdminTaxForm = () => {
|
|||
<div className="formAddNew">
|
||||
<div>
|
||||
<FormHeader title={'Tax'} />
|
||||
<div className="searchAddDiv"></div>
|
||||
<div className="searchAddDiv">
|
||||
</div>
|
||||
</div>
|
||||
<div className="searchAddDiv">
|
||||
<div className="formSearch">
|
||||
|
|
@ -326,10 +319,10 @@ const AdminTaxForm = () => {
|
|||
placement={placement}
|
||||
title="Add Tax"
|
||||
children={
|
||||
<div className="formDiv ">
|
||||
<div className="formDiv">
|
||||
<Form className="formDivAnt" ref={formRef} onFinish={onFinish}>
|
||||
<div className="formDivS ">
|
||||
<div className="inputForm addTaxinputDrawer">
|
||||
<div className="formDivS">
|
||||
<div className="inputForm">
|
||||
<Form.Item
|
||||
name="TaxName"
|
||||
rules={[
|
||||
|
|
@ -388,21 +381,13 @@ const AdminTaxForm = () => {
|
|||
},
|
||||
]}
|
||||
>
|
||||
<div
|
||||
style={{
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
|
||||
}}
|
||||
>
|
||||
<label style={{color:"#5a5a5a", fontSize:"12px", fontFamily:"Arial",padding:"0 6px"}} htmlFor="Effective From">Effective From</label>
|
||||
<DatePic
|
||||
field="Effective From"
|
||||
name="Effective From"
|
||||
field="EffectiveFrom"
|
||||
name="EffectiveFrom"
|
||||
type="number"
|
||||
min={1}
|
||||
max={100}
|
||||
label="Effective From"
|
||||
label="EffectiveFrom"
|
||||
fieldState={true}
|
||||
fieldApi={true}
|
||||
EditData={EditData}
|
||||
|
|
@ -427,7 +412,6 @@ const AdminTaxForm = () => {
|
|||
</span>
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
|
|
@ -439,8 +423,7 @@ const AdminTaxForm = () => {
|
|||
},
|
||||
{
|
||||
max: 20,
|
||||
message:
|
||||
'Reference cannot be more than 20 characters',
|
||||
message: 'Reference cannot be more than 20 characters',
|
||||
},
|
||||
{
|
||||
validator: async (_, value) => {
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
height: 2rem;
|
||||
font-family: "Inter", ui-sans-serif, system-ui, sans-serif !important;
|
||||
|
||||
> th {
|
||||
>th {
|
||||
font-size: 10px !important;
|
||||
font-weight: 400 !important;
|
||||
-webkit-text-stroke-width: 0.2px;
|
||||
|
|
@ -1119,13 +1119,13 @@
|
|||
gap: 1rem;
|
||||
white-space: nowrap;
|
||||
|
||||
> div {
|
||||
>div {
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
font-family: "Inter", ui-sans-serif, system-ui, sans-serif !important;
|
||||
}
|
||||
|
||||
> p {
|
||||
>p {
|
||||
background-color: #fff3;
|
||||
font-size: 10px;
|
||||
padding: 1px 6px;
|
||||
|
|
@ -1165,13 +1165,13 @@
|
|||
gap: 1rem;
|
||||
white-space: nowrap;
|
||||
|
||||
> div {
|
||||
>div {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 500;
|
||||
font-family: "Inter", ui-sans-serif, system-ui, sans-serif !important;
|
||||
}
|
||||
|
||||
> p {
|
||||
>p {
|
||||
background-color: #fff3;
|
||||
font-size: small;
|
||||
padding: 1px 6px;
|
||||
|
|
@ -1187,11 +1187,11 @@
|
|||
padding: 12px 16px;
|
||||
|
||||
.ShoppingCartMain-left {
|
||||
> div {
|
||||
>div {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
> p {
|
||||
>p {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
}
|
||||
|
|
@ -1202,11 +1202,11 @@
|
|||
align-items: flex-start;
|
||||
|
||||
.ShoppingCartMain-left {
|
||||
> div {
|
||||
>div {
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
> p {
|
||||
>p {
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
}
|
||||
|
|
@ -1531,7 +1531,7 @@
|
|||
.paybutton {
|
||||
padding: 10px 12px;
|
||||
|
||||
> svg {
|
||||
>svg {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
|
@ -1587,7 +1587,7 @@
|
|||
.standard-pay-btns {
|
||||
flex: 1;
|
||||
|
||||
> button {
|
||||
>button {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ import {
|
|||
FaParking,
|
||||
} from 'react-icons/fa';
|
||||
import { CiMenuBurger } from 'react-icons/ci';
|
||||
import { IoClose, IoCloseOutline } from 'react-icons/io5';
|
||||
import { IoCloseOutline } from 'react-icons/io5';
|
||||
import { FaCalendar } from 'react-icons/fa6';
|
||||
import { RiPrinterFill } from 'react-icons/ri';
|
||||
import { GiShoppingBag } from 'react-icons/gi';
|
||||
|
|
@ -542,7 +542,6 @@ const BSNavbar3 = ({ optionNames }) => {
|
|||
{renderWithTooltip(<BSNavBarAddUser />, 'Add Customer')}
|
||||
</span>
|
||||
)}
|
||||
<IoClose className="DropDownsCustomerClose" strokeWidth={3} />
|
||||
</div>
|
||||
|
||||
{offerOption && (
|
||||
|
|
@ -719,16 +718,6 @@ const BSNavbar3 = ({ optionNames }) => {
|
|||
</div>
|
||||
)}
|
||||
</TooltipWrapper>
|
||||
|
||||
{verifyproduct && (
|
||||
<div style={{ color: 'green' }}>
|
||||
<TooltipWrapper title={'Verfied Products'} isMobile={isMobile}>
|
||||
<div>
|
||||
<VerfiedProducts />
|
||||
</div>
|
||||
</TooltipWrapper>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
{isMobile && (
|
||||
<div
|
||||
|
|
@ -739,7 +728,15 @@ const BSNavbar3 = ({ optionNames }) => {
|
|||
<BSMobilePrintSettings />
|
||||
</div>
|
||||
)}
|
||||
|
||||
{verifyproduct && (
|
||||
<div style={{ color: 'green' }}>
|
||||
<TooltipWrapper title={'Verfied Products'} isMobile={isMobile}>
|
||||
<div>
|
||||
<VerfiedProducts />
|
||||
</div>
|
||||
</TooltipWrapper>
|
||||
</div>
|
||||
)}
|
||||
<div className="userDates">
|
||||
<div className="datesNewtimedate">
|
||||
<CurrentDateDisplay />
|
||||
|
|
|
|||
|
|
@ -195,11 +195,10 @@ const VerfiedProducts = () => {
|
|||
<>
|
||||
<div>
|
||||
<RiVerifiedBadgeFill
|
||||
style={{ cursor: 'pointer', marginTop: '2px', display: 'flex' }}
|
||||
style={{ cursor: 'pointer' }}
|
||||
onClick={() => setisOpenModal((p) => !p)}
|
||||
size={22}
|
||||
size={25}
|
||||
color="#fff"
|
||||
className="RiVerifiedBadgeFill"
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -10,14 +10,6 @@
|
|||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.billing-table-header:nth-child(5){
|
||||
text-align: right !important;
|
||||
}
|
||||
.Table3-item-price,
|
||||
.Table-3_qty,
|
||||
.Table3-items {
|
||||
padding: 10px 6px !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Shopping Cart Header
|
||||
|
|
@ -147,7 +139,7 @@
|
|||
font-weight: 700;
|
||||
color: #059669;
|
||||
text-align: right;
|
||||
font-family: "Inter", sans-serif;
|
||||
font-family: 'Inter', sans-serif;
|
||||
}
|
||||
|
||||
.delete-action {
|
||||
|
|
@ -170,6 +162,7 @@
|
|||
border-radius: 4px;
|
||||
transition: background-color 0.2s;
|
||||
|
||||
|
||||
svg {
|
||||
color: #ef4444;
|
||||
font-size: 1.125rem;
|
||||
|
|
@ -201,6 +194,7 @@
|
|||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
|
||||
|
||||
svg {
|
||||
font-size: 1.25rem;
|
||||
color: #6b7280;
|
||||
|
|
@ -222,6 +216,7 @@
|
|||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
|
||||
|
||||
svg {
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
|
|
@ -264,11 +259,13 @@
|
|||
&.card-button {
|
||||
background: #8b5cf6;
|
||||
color: white;
|
||||
|
||||
}
|
||||
|
||||
&.upi-button {
|
||||
background: #0ea5e9;
|
||||
color: white;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -293,7 +290,7 @@
|
|||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
font-family: "Inter", sans-serif;
|
||||
font-family: 'Inter', sans-serif;
|
||||
|
||||
svg {
|
||||
font-size: 1.5rem;
|
||||
|
|
@ -302,6 +299,7 @@
|
|||
|
||||
// Responsive Design
|
||||
@media (max-width: 768px) {
|
||||
|
||||
.standatdTableBill3 {
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -356,11 +356,9 @@ const SalesCountForStandard = ({
|
|||
)}
|
||||
</div>
|
||||
}
|
||||
onClick={() =>
|
||||
OverAllOrderCount || (0 > 0 && setIsModalOpen(true))
|
||||
}
|
||||
onClick={() =>OverAllOrderCount || 0 >0 && setIsModalOpen(true)}
|
||||
>
|
||||
<FaChartLine color="#ffffffff" />
|
||||
<FaChartLine color="#fde047" />
|
||||
<div className="NetAmountNew">
|
||||
{isMobile ? 'Count' : 'Sales Count'} : {OverAllOrderCount}
|
||||
</div>
|
||||
|
|
@ -374,11 +372,9 @@ const SalesCountForStandard = ({
|
|||
fontSize: '0.9rem',
|
||||
cursor: 'pointer',
|
||||
}}
|
||||
onClick={() =>
|
||||
OverAllOrderCount || (0 > 0 && setIsModalOpen(true))
|
||||
}
|
||||
onClick={() => OverAllOrderCount || 0 >0 && setIsModalOpen(true)}
|
||||
>
|
||||
<FaChartLine color="#ffffffff" />
|
||||
<FaChartLine color="#fde047" />
|
||||
<div className="NetAmountNew">
|
||||
{isMobile ? 'Count' : 'Sales Count'} : {OverAllOrderCount}
|
||||
</div>
|
||||
|
|
@ -476,7 +472,7 @@ const SalesCountForStandard = ({
|
|||
onClick={() => netAmount > 0 && setIsNetAmtModalOpen(true)}
|
||||
style={{ cursor: 'pointer' }}
|
||||
>
|
||||
<FaRupeeSign color="#ffffffff" />
|
||||
<FaRupeeSign color="#fde047" />
|
||||
<div className="NetAmountNew">
|
||||
{isMobile ? 'NA' : 'Net Amount'} : ₹ {safeRound(netAmount)}
|
||||
</div>
|
||||
|
|
@ -536,6 +532,8 @@ const SalesCountForStandard = ({
|
|||
cursor: 'pointer',
|
||||
}}
|
||||
/>
|
||||
{/* <button className="BookingCloseButton"
|
||||
onClick={OpenBookingModal}>Booking Close</button> */}
|
||||
</TooltipWrapper>
|
||||
</div>
|
||||
) : (
|
||||
|
|
|
|||
|
|
@ -699,7 +699,7 @@ const EmpAccessForm = ({ formType }) => {
|
|||
</div>
|
||||
|
||||
</Form>
|
||||
<div className="reportTable empAccessreportTable">
|
||||
<div className="reportTable">
|
||||
<Tables
|
||||
columns={columns}
|
||||
data={SelectedUserData ? TableData : []}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
.other-services-container {
|
||||
background: #fff;
|
||||
// padding: 24px;
|
||||
padding: 24px;
|
||||
border-radius: 8px;
|
||||
max-width: 1100px;
|
||||
// margin: 24px auto 0 auto;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.04);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
|
||||
}
|
||||
|
||||
// .other-service-row {
|
||||
|
|
@ -21,8 +23,7 @@
|
|||
/* gap: 24px; */
|
||||
margin-bottom: 16px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
justify-content: center;}
|
||||
// .other-service-group {
|
||||
// flex: 1 1 300px;
|
||||
// min-width: 250px;
|
||||
|
|
@ -32,15 +33,13 @@
|
|||
// }
|
||||
|
||||
.other-service-group {
|
||||
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
width: 100%;
|
||||
flex-wrap: wrap;
|
||||
column-gap: 20px;
|
||||
.ant-form-item{
|
||||
margin-bottom: 10px !important;
|
||||
}
|
||||
}
|
||||
.other-service-checkbox-group {
|
||||
min-width: 180px;
|
||||
|
|
@ -59,7 +58,6 @@
|
|||
.other-service-row {
|
||||
flex-direction: column;
|
||||
gap: 0;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.other-service-group {
|
||||
min-width: 100%;
|
||||
|
|
|
|||
|
|
@ -68,8 +68,9 @@ const PublicQrCode = () => {
|
|||
|
||||
const [branchData, setBranchData] = useState([]);
|
||||
const [page, setPage] = useState(1);
|
||||
const [isPreviewModalOpen, setIsPreviewModalOpen] = useState(false);
|
||||
const [pdfPreviewUrl, setPdfPreviewUrl] = useState('');
|
||||
const qrCodeRef = useRef(null);
|
||||
const printContentRef = useRef(null);
|
||||
const CompId = getSession('CompId');
|
||||
const BranchId = getSession('BranchId');
|
||||
const AppId = getSession('AppId');
|
||||
|
|
@ -295,7 +296,7 @@ const PublicQrCode = () => {
|
|||
if (res?.data?.statusCode == 1) {
|
||||
const QrUrl = `${subDirectory}selfBooking/${res?.data?.ReferenceNo}`;
|
||||
setQrCodeUrl(QrUrl);
|
||||
setTimeout(() => window.print(), 500);
|
||||
generatePDF(true, QrUrl);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('HandleSubmit Error:', error);
|
||||
|
|
@ -304,7 +305,187 @@ const PublicQrCode = () => {
|
|||
}
|
||||
};
|
||||
|
||||
// Function to generate PDF
|
||||
const generatePDF = async (isPreview = false, encrypted) => {
|
||||
console.log('generatePDF called with:', { isPreview, encrypted });
|
||||
|
||||
if (!encrypted) {
|
||||
setMessageType('error');
|
||||
setMessageData('Please generate QR code first');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
// Get booking type name and table name for display
|
||||
const bookingTypeName =
|
||||
filtered?.find((item) => item.ConfigId === configId)?.ConfigName ||
|
||||
'Both';
|
||||
const tableName =
|
||||
Tabledata?.find((item) => item.TableId === TableId)?.TableName || '';
|
||||
|
||||
// Get branch details
|
||||
const branch = branchData?.[0] || {};
|
||||
const branchName = branch.BrName || branch.CompName || '';
|
||||
const branchMobile = branch.BrMobile || '';
|
||||
const companyLogo = branch.CompLogo || '';
|
||||
const branchAddress =
|
||||
[
|
||||
branch.Address1,
|
||||
branch.Address2,
|
||||
branch.City,
|
||||
branch.State,
|
||||
branch.Zip,
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join(', ') || '';
|
||||
|
||||
// Create a temporary div for PDF content
|
||||
const tempDiv = document.createElement('div');
|
||||
tempDiv.style.padding = '40px';
|
||||
tempDiv.style.backgroundColor = 'white';
|
||||
tempDiv.style.fontFamily = 'Arial, sans-serif';
|
||||
tempDiv.style.textAlign = 'center';
|
||||
tempDiv.style.width = '600px';
|
||||
tempDiv.style.margin = '0 auto';
|
||||
|
||||
// Add content to the temporary div
|
||||
tempDiv.innerHTML = `
|
||||
<div style="margin-bottom: 10px; border-bottom: 2px solid #eee; padding-bottom: 10px;">
|
||||
${companyLogo ? `<div style="margin-bottom: 10px;"><img id="company-logo" src="${companyLogo}" style="max-width: 120px; max-height: 80px; object-fit: contain;" crossorigin="anonymous" /></div>` : ''}
|
||||
<h1 style="color: #333; margin: 10px 0; font-size: 24px; font-weight: bold;">${branchName ? branchName : ''}</h1>
|
||||
<p style="color: #666; margin: 5px 0; font-size: 14px;">${branchAddress ? branchAddress : ''}</p>
|
||||
<p style="color: #666; margin: 5px 0; font-size: 14px;"><strong>Mobile:</strong> ${branchMobile ? branchMobile : ''}</p>
|
||||
</div>
|
||||
<div style="margin-bottom: 30px;">
|
||||
<h2 style="color: #666; margin-bottom: 20px; font-size: 20px;">Self Booking QR Code</h2>
|
||||
</div>
|
||||
<div style="margin-bottom: 30px;">
|
||||
<div style="display: inline-block; padding: 20px; background: white; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
|
||||
<div id="qr-code-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top: 20px;">
|
||||
<p style="font-size: 12px; color: #666; word-break: break-all;">URL: ${encrypted}</p>
|
||||
</div>
|
||||
`;
|
||||
|
||||
// Add the temporary div to the document
|
||||
document.body.appendChild(tempDiv);
|
||||
|
||||
// Create QR code in the container
|
||||
const qrContainer = tempDiv.querySelector('#qr-code-container');
|
||||
const qrCodeSvg = document.createElementNS(
|
||||
'http://www.w3.org/2000/svg',
|
||||
'svg'
|
||||
);
|
||||
qrCodeSvg.setAttribute('width', '200');
|
||||
qrCodeSvg.setAttribute('height', '200');
|
||||
qrCodeSvg.setAttribute('viewBox', '0 0 256 256');
|
||||
|
||||
// Use the QRCode library to generate SVG content
|
||||
const QRCodeLib = await import('qrcode');
|
||||
const qrDataUrl = await QRCodeLib.toDataURL(encrypted, {
|
||||
width: 200,
|
||||
margin: 2,
|
||||
});
|
||||
|
||||
// Create an image element for the QR code
|
||||
const qrImage = document.createElement('img');
|
||||
qrImage.src = qrDataUrl;
|
||||
qrImage.style.width = '200px';
|
||||
qrImage.style.height = '200px';
|
||||
qrContainer.appendChild(qrImage);
|
||||
|
||||
// Wait for all images to load (QR code and company logo if present)
|
||||
const imagesToLoad = [qrImage];
|
||||
const companyLogoImg = tempDiv.querySelector('#company-logo');
|
||||
if (companyLogoImg) {
|
||||
imagesToLoad.push(companyLogoImg);
|
||||
}
|
||||
|
||||
await Promise.all(
|
||||
imagesToLoad.map(
|
||||
(img) =>
|
||||
new Promise((resolve) => {
|
||||
if (img.complete) {
|
||||
resolve();
|
||||
} else {
|
||||
img.onload = resolve;
|
||||
img.onerror = resolve; // Continue even if logo fails to load
|
||||
}
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
// Generate PDF using html2canvas and jsPDF
|
||||
const canvas = await html2canvas(tempDiv, {
|
||||
scale: 2,
|
||||
useCORS: true,
|
||||
allowTaint: true,
|
||||
backgroundColor: '#ffffff',
|
||||
});
|
||||
|
||||
const imgData = canvas.toDataURL('image/png');
|
||||
const pdf = new jsPDF('p', 'mm', 'a4');
|
||||
|
||||
const imgWidth = 190;
|
||||
const pageHeight = 295;
|
||||
const imgHeight = (canvas.height * imgWidth) / canvas.width;
|
||||
let heightLeft = imgHeight;
|
||||
let position = 10;
|
||||
|
||||
pdf.addImage(imgData, 'PNG', 10, position, imgWidth, imgHeight);
|
||||
heightLeft -= pageHeight;
|
||||
|
||||
while (heightLeft >= 0) {
|
||||
position = heightLeft - imgHeight;
|
||||
pdf.addPage();
|
||||
pdf.addImage(imgData, 'PNG', 10, position, imgWidth, imgHeight);
|
||||
heightLeft -= pageHeight;
|
||||
}
|
||||
|
||||
// Clean up
|
||||
document.body.removeChild(tempDiv);
|
||||
|
||||
if (isPreview) {
|
||||
// Generate blob URL for preview
|
||||
console.log('Generating PDF preview...');
|
||||
const pdfBlob = pdf.output('blob');
|
||||
const pdfUrl = URL.createObjectURL(pdfBlob);
|
||||
console.log('PDF preview URL created:', pdfUrl);
|
||||
setPdfPreviewUrl(pdfUrl);
|
||||
setIsPreviewModalOpen(true);
|
||||
} else {
|
||||
// Download the PDF
|
||||
console.log('Downloading PDF...');
|
||||
const branch = branchData?.[0] || {};
|
||||
const branchName = (
|
||||
branch.BrName ||
|
||||
branch.CompName ||
|
||||
'Branch'
|
||||
).replace(/[^a-zA-Z0-9]/g, '_');
|
||||
const fileName = `QR_Code_${branchName}_${bookingTypeName}_${tableName}_${new Date().toISOString().split('T')[0]}.pdf`;
|
||||
console.log('PDF filename:', fileName);
|
||||
pdf.save(fileName);
|
||||
console.log('PDF download initiated');
|
||||
setMessageType('success');
|
||||
setMessageData('PDF downloaded successfully!');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error generating PDF:', error);
|
||||
console.error('Error details:', {
|
||||
message: error.message,
|
||||
stack: error.stack,
|
||||
encrypted: encrypted,
|
||||
configId: configId,
|
||||
TableId: TableId,
|
||||
});
|
||||
setMessageType('error');
|
||||
setMessageData(
|
||||
`Error generating PDF: ${error.message}. Please try again.`
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
const onComplete = useCallback(() => {
|
||||
setMessageData(null);
|
||||
|
|
@ -390,7 +571,7 @@ const PublicQrCode = () => {
|
|||
<FormHeader title={'QR Code Generator'} />
|
||||
</div>
|
||||
<div className="searchAddDiv">
|
||||
<div style={{ display: 'flex', gap: '2rem', flexWrap: 'wrap' }}>
|
||||
<div style={{ display: 'flex', gap: '1rem', flexWrap: 'wrap' }}>
|
||||
<DropDowns
|
||||
options={[
|
||||
// { value: 'All', label: 'Both' }, // Add "Select" option
|
||||
|
|
@ -492,17 +673,6 @@ const PublicQrCode = () => {
|
|||
</div>
|
||||
{qrCodeUrl && (
|
||||
<>
|
||||
<div className="productMaster-input">
|
||||
<Buttons
|
||||
buttonText="Print"
|
||||
className="tertiary_Button"
|
||||
color="28a745"
|
||||
handleSubmit={() => window.print()}
|
||||
icon={<EyeOutlined />}
|
||||
>
|
||||
PRINT
|
||||
</Buttons>
|
||||
</div>
|
||||
<div className="productMaster-input">
|
||||
<Buttons
|
||||
buttonText="Clear"
|
||||
|
|
@ -514,6 +684,8 @@ const PublicQrCode = () => {
|
|||
setTableId(null);
|
||||
setWaiterId(null);
|
||||
setTabledata([]);
|
||||
setPdfPreviewUrl('');
|
||||
setIsPreviewModalOpen(false);
|
||||
}}
|
||||
>
|
||||
CLEAR
|
||||
|
|
@ -524,7 +696,7 @@ const PublicQrCode = () => {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="reportTable no-print">
|
||||
<div className="reportTable">
|
||||
{qrCodeUrl && (
|
||||
<div
|
||||
ref={qrCodeRef}
|
||||
|
|
@ -573,79 +745,69 @@ const PublicQrCode = () => {
|
|||
<PublicQrCodeShare qrCodeUrl={qrCodeUrl} />
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Print Content - A4 Format */}
|
||||
{qrCodeUrl && (
|
||||
<div ref={printContentRef} className="print-only" style={{ display: 'none' }}>
|
||||
<div style={{ padding: '40px 30px', textAlign: 'center', fontFamily: 'Arial, sans-serif' }}>
|
||||
{branchData?.[0]?.CompLogo && (
|
||||
<div style={{ marginBottom: '20px' }}>
|
||||
<img
|
||||
src={branchData[0].CompLogo}
|
||||
alt="Company Logo"
|
||||
style={{ maxWidth: '150px', maxHeight: '100px', objectFit: 'contain' }}
|
||||
{/* PDF Preview Modal */}
|
||||
<Modal
|
||||
title="PDF Preview"
|
||||
open={isPreviewModalOpen}
|
||||
onCancel={() => {
|
||||
setIsPreviewModalOpen(false);
|
||||
if (pdfPreviewUrl) {
|
||||
URL.revokeObjectURL(pdfPreviewUrl);
|
||||
setPdfPreviewUrl('');
|
||||
}
|
||||
}}
|
||||
footer={false}
|
||||
// footer={[
|
||||
// <Buttons
|
||||
// key="download"
|
||||
// buttonText="Download PDF"
|
||||
// className="tertiary_Button"
|
||||
// color="28a745"
|
||||
// handleSubmit={() => {
|
||||
// generatePDF(false, qrCodeUrl);
|
||||
// setIsPreviewModalOpen(false);
|
||||
// if (pdfPreviewUrl) {
|
||||
// URL.revokeObjectURL(pdfPreviewUrl);
|
||||
// setPdfPreviewUrl('');
|
||||
// }
|
||||
// }}
|
||||
// icon={<DownloadOutlined />}
|
||||
// >
|
||||
// DOWNLOAD
|
||||
// </Buttons>,
|
||||
// <Buttons
|
||||
// key="close"
|
||||
// buttonText="Close"
|
||||
// className="secondary_Button"
|
||||
// color="6c757d"
|
||||
// handleSubmit={() => {
|
||||
// setIsPreviewModalOpen(false);
|
||||
// if (pdfPreviewUrl) {
|
||||
// URL.revokeObjectURL(pdfPreviewUrl);
|
||||
// setPdfPreviewUrl('');
|
||||
// }
|
||||
// }}
|
||||
// >
|
||||
// CLOSE
|
||||
// </Buttons>
|
||||
// ]}
|
||||
width={1000}
|
||||
style={{ top: 20 }}
|
||||
>
|
||||
{pdfPreviewUrl && (
|
||||
<div style={{ textAlign: 'center' }}>
|
||||
<iframe
|
||||
src={pdfPreviewUrl}
|
||||
width="100%"
|
||||
height="600px"
|
||||
style={{ border: 'none', borderRadius: '4px' }}
|
||||
title="PDF Preview"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
<h1 style={{ margin: '15px 0', fontSize: '28px', color: '#333', fontWeight: 'bold' }}>
|
||||
{branchData?.[0]?.BrName || branchData?.[0]?.CompName || ''}
|
||||
</h1>
|
||||
<p style={{ margin: '8px 0', fontSize: '14px', color: '#666' }}>
|
||||
{[branchData?.[0]?.Address1, branchData?.[0]?.Address2, branchData?.[0]?.City, branchData?.[0]?.State, branchData?.[0]?.Zip]
|
||||
.filter(Boolean)
|
||||
.join(', ')}
|
||||
</p>
|
||||
<p style={{ margin: '8px 0', fontSize: '14px', color: '#666' }}>
|
||||
<strong>Mobile:</strong> {branchData?.[0]?.BrMobile || ''}
|
||||
</p>
|
||||
<div style={{ margin: '40px 0', display: 'flex', justifyContent: 'center' }}>
|
||||
<div style={{ padding: '20px', background: 'white', display: 'inline-block', border: '2px solid #ddd' }}>
|
||||
<QRCode
|
||||
size={300}
|
||||
value={qrCodeUrl}
|
||||
viewBox={`0 0 256 256`}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<p style={{ marginTop: '30px', fontSize: '12px', color: '#666', wordBreak: 'break-all', maxWidth: '80%', margin: '30px auto 0' }}>
|
||||
<strong>URL:</strong> {qrCodeUrl}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<style>{`
|
||||
@media print {
|
||||
@page {
|
||||
size: A4 portrait;
|
||||
margin: 0;
|
||||
}
|
||||
html, body {
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
body * {
|
||||
visibility: hidden;
|
||||
}
|
||||
.print-only, .print-only * {
|
||||
visibility: visible;
|
||||
}
|
||||
.print-only {
|
||||
display: block !important;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
page-break-after: avoid;
|
||||
}
|
||||
.no-print {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
`}</style>
|
||||
</Modal>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,5 +1,5 @@
|
|||
.slot-management {
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
|
||||
|
|
@ -257,19 +257,3 @@
|
|||
.SlotManagementTable {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.slotmanagemantTable {
|
||||
.ant-table-cell {
|
||||
font-size: 12px;
|
||||
}
|
||||
.ant-table-tbody {
|
||||
font-family: "Poppins";
|
||||
}
|
||||
button{
|
||||
font-family: "Poppins";
|
||||
span{
|
||||
font-family: "Poppins";
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,32 +1,23 @@
|
|||
import { useCallback, useEffect, useState } from 'react';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
import { dateTimeFormatChange, getSession } from '../../Services/Others';
|
||||
import {
|
||||
deleteSlotManagement,
|
||||
getSlotManagement,
|
||||
GlobalSlotDetailData,
|
||||
} from '../../Features/SlotManagement/SlotManagement';
|
||||
import { Button, Modal, Table, Tag, List, Space } from 'antd';
|
||||
import {
|
||||
ClockCircleOutlined,
|
||||
CalendarOutlined,
|
||||
DeleteFilled,
|
||||
PlusOutlined,
|
||||
} from '@ant-design/icons';
|
||||
import Buttons from '../../Components/Forms/Buttons';
|
||||
import Search from '../../Components/Forms/Search';
|
||||
import FormHeader from '../PageComponents/FormHeader';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { Messages } from '../../Components/Notifications/Messages';
|
||||
import { Tables } from '../../Components/Tables/Table';
|
||||
import { changeBreadCrumb } from '../../Features/AppPage/CenterPage';
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { dateTimeFormatChange, getSession } from "../../Services/Others";
|
||||
import { deleteSlotManagement, getSlotManagement, GlobalSlotDetailData } from "../../Features/SlotManagement/SlotManagement";
|
||||
import { Button, Modal, Table, Tag, List, Space } from "antd";
|
||||
import { ClockCircleOutlined, CalendarOutlined, DeleteFilled, PlusOutlined } from "@ant-design/icons";
|
||||
import Buttons from "../../Components/Forms/Buttons";
|
||||
import Search from "../../Components/Forms/Search";
|
||||
import FormHeader from "../PageComponents/FormHeader";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { Messages } from "../../Components/Notifications/Messages";
|
||||
import { Tables } from "../../Components/Tables/Table";
|
||||
import { changeBreadCrumb } from "../../Features/AppPage/CenterPage";
|
||||
const subDirectory = import.meta.env.BASE_URL;
|
||||
|
||||
const SlotManagementList = () => {
|
||||
const CompId = getSession('CompId');
|
||||
const BranchId = getSession('BranchId');
|
||||
const AppId = getSession('AppId');
|
||||
const UserId = getSession('UserId');
|
||||
const CompId = getSession("CompId");
|
||||
const BranchId = getSession("BranchId");
|
||||
const AppId = getSession("AppId");
|
||||
const UserId = getSession("UserId");
|
||||
|
||||
const dispatch = useDispatch();
|
||||
const navigate = useNavigate();
|
||||
|
|
@ -45,6 +36,7 @@ const SlotManagementList = () => {
|
|||
const [filteredInfo, setFilteredInfo] = useState({});
|
||||
const [page, setpage] = useState(1);
|
||||
|
||||
|
||||
console.log(SloteData, 'fsafsfsdfdsfdsfdafda');
|
||||
|
||||
useEffect(() => {
|
||||
|
|
@ -60,33 +52,32 @@ const SlotManagementList = () => {
|
|||
name: 'Slot Management',
|
||||
link: `${subDirectory}setting/slot-management-list`,
|
||||
},
|
||||
];
|
||||
useEffect(() => {
|
||||
];
|
||||
useEffect(() => {
|
||||
try {
|
||||
dispatch(changeBreadCrumb({ items: items }));
|
||||
} catch (err) {
|
||||
console.log(err, 'err');
|
||||
}
|
||||
|
||||
}, []);
|
||||
|
||||
const fetchManagementHistory = async () => {
|
||||
const response = await dispatch(
|
||||
getSlotManagement({ CompId, BranchId, AppId })
|
||||
).unwrap();
|
||||
const response = await dispatch(getSlotManagement({ CompId, BranchId, AppId })).unwrap();
|
||||
const slotData = response?.data?.data;
|
||||
setSloteData(slotData || []);
|
||||
|
||||
};
|
||||
|
||||
const handleDelete = async (ExceptionId) => {
|
||||
|
||||
try {
|
||||
const deleteData = {
|
||||
ExceptionId: ExceptionId,
|
||||
UpdatedBy: UserId,
|
||||
ActiveStatus: 'D',
|
||||
ActiveStatus: "D",
|
||||
};
|
||||
const response = await dispatch(
|
||||
deleteSlotManagement(deleteData)
|
||||
).unwrap();
|
||||
const response = await dispatch(deleteSlotManagement(deleteData)).unwrap();
|
||||
if (response?.data?.statusCode == 1) {
|
||||
fetchManagementHistory();
|
||||
setMessageType('success');
|
||||
|
|
@ -94,7 +85,7 @@ const SlotManagementList = () => {
|
|||
}
|
||||
} catch (error) {
|
||||
setMessageType('success');
|
||||
setMessageData('Failed to delete slot.');
|
||||
setMessageData("Failed to delete slot.");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -103,8 +94,7 @@ const SlotManagementList = () => {
|
|||
setMessageType(null);
|
||||
}, []);
|
||||
const handleViewSlots = (record) => {
|
||||
const flattenedSlots =
|
||||
record?.SlotDetails?.flatMap((slot) =>
|
||||
const flattenedSlots = record?.SlotDetails?.flatMap((slot) =>
|
||||
slot.SlotExceptionDetails.map((exception) => ({
|
||||
...exception,
|
||||
ProdSubCatName: slot.ProdSubCatName,
|
||||
|
|
@ -150,16 +140,16 @@ const SlotManagementList = () => {
|
|||
),
|
||||
},
|
||||
{
|
||||
title: 'Slot Action',
|
||||
dataIndex: 'ExceptionType',
|
||||
key: 'ExceptionType',
|
||||
title: "Slot Action",
|
||||
dataIndex: "ExceptionType",
|
||||
key: "ExceptionType",
|
||||
render: (text) => {
|
||||
if (!text) return '-';
|
||||
if (!text) return "-";
|
||||
|
||||
const mapping = {
|
||||
block: 'Block',
|
||||
holiday: 'Holiday',
|
||||
pricechange: 'Price Change',
|
||||
block: "Block",
|
||||
holiday: "Holiday",
|
||||
pricechange: "Price Change"
|
||||
};
|
||||
|
||||
// convert value safely (case-insensitive)
|
||||
|
|
@ -168,19 +158,17 @@ const SlotManagementList = () => {
|
|||
return <span>{formattedValue}</span>;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: 'Activity Type',
|
||||
dataIndex: 'ModeOfException',
|
||||
key: 'ModeOfException',
|
||||
{ title: "Activity Type", dataIndex: "ModeOfException", key: "ModeOfException",
|
||||
render: (text) => {
|
||||
if (!text) return '-';
|
||||
if (!text) return "-";
|
||||
|
||||
const mapping = {
|
||||
subcategory: 'Sub Category',
|
||||
product: 'Facility',
|
||||
slot: 'Slot',
|
||||
full_branch: 'Full Branch',
|
||||
category: 'Category',
|
||||
subcategory: "Sub Category",
|
||||
product: "Facility",
|
||||
slot: "Slot",
|
||||
full_branch: "Full Branch",
|
||||
category: "Category",
|
||||
|
||||
};
|
||||
|
||||
// convert value safely (case-insensitive)
|
||||
|
|
@ -190,13 +178,14 @@ const SlotManagementList = () => {
|
|||
},
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
title: 'Slot Details',
|
||||
key: 'SlotDetails',
|
||||
align: 'center',
|
||||
title: "Slot Details",
|
||||
key: "SlotDetails",
|
||||
align: "center",
|
||||
render: (_, record) => (
|
||||
<Button
|
||||
icon={<ClockCircleOutlined style={{ color: '#52c41a' }} />}
|
||||
icon={<ClockCircleOutlined style={{ color: "#52c41a" }} />}
|
||||
type="link"
|
||||
onClick={() => handleViewSlots(record)}
|
||||
>
|
||||
|
|
@ -205,76 +194,63 @@ const SlotManagementList = () => {
|
|||
),
|
||||
},
|
||||
{
|
||||
title: 'Day(s)',
|
||||
key: 'DayOfWeek',
|
||||
align: 'center',
|
||||
render: (_, record) =>
|
||||
title: "Day(s)",
|
||||
key: "DayOfWeek",
|
||||
align: "center",
|
||||
render: (_, record) => (
|
||||
record?.DayOfWeek.length > 0 ? (
|
||||
<Button
|
||||
icon={<CalendarOutlined style={{ color: '#fa8c16' }} />}
|
||||
icon={<CalendarOutlined style={{ color: "#fa8c16" }} />}
|
||||
type="link"
|
||||
onClick={() => handleViewDays(record)}
|
||||
>
|
||||
View
|
||||
</Button>
|
||||
) : (
|
||||
'-'
|
||||
) :'-'
|
||||
),
|
||||
},
|
||||
{ title: 'Reason', dataIndex: 'Reason', key: 'Reason' },
|
||||
{ title: "Reason", dataIndex: "Reason", key: "Reason" },
|
||||
{
|
||||
title: 'Action',
|
||||
key: 'Action',
|
||||
dataIndex: 'Action',
|
||||
title: "Action",
|
||||
key: "Action",
|
||||
dataIndex: "Action",
|
||||
width: 100,
|
||||
align: 'center',
|
||||
align: "center",
|
||||
render: (_, record) => (
|
||||
<Space size="middle">
|
||||
<DeleteFilled
|
||||
style={{ color: '#FF4D4F', fontSize: '16px', cursor: 'pointer' }}
|
||||
style={{ color: "#FF4D4F", fontSize: "16px", cursor: "pointer" }}
|
||||
onClick={() => handleDelete(record.ExceptionId)}
|
||||
/>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
}
|
||||
];
|
||||
// Utility: check if a column has any non-null / non-empty data
|
||||
const hasDataInColumn = (data, key) => {
|
||||
return data.some(
|
||||
(item) =>
|
||||
item[key] !== null &&
|
||||
item[key] !== undefined &&
|
||||
item[key] !== '' &&
|
||||
item[key] !== 0
|
||||
);
|
||||
};
|
||||
// Utility: check if a column has any non-null / non-empty data
|
||||
const hasDataInColumn = (data, key) => {
|
||||
return data.some(item => item[key] !== null && item[key] !== undefined && item[key] !== "" && item[key] !== 0);
|
||||
};
|
||||
|
||||
const allSlotColumns = [
|
||||
{ title: 'Slot Name', dataIndex: 'SlotName', key: 'SlotName' },
|
||||
{ title: 'Facility', dataIndex: 'ProdName', key: 'ProdName' },
|
||||
{ title: "Slot Name", dataIndex: "SlotName", key: "SlotName" },
|
||||
{ title: "Facility", dataIndex: "ProdName", key: "ProdName" },
|
||||
{ title: "Sub category", dataIndex: "ProdSubCatName", key: "ProdSubCatName" },
|
||||
{
|
||||
title: 'Sub category',
|
||||
dataIndex: 'ProdSubCatName',
|
||||
key: 'ProdSubCatName',
|
||||
},
|
||||
{
|
||||
title: 'Valid From',
|
||||
dataIndex: 'ExceptionFrom',
|
||||
key: 'ExceptionFrom',
|
||||
title: "Valid From",
|
||||
dataIndex: "ExceptionFrom",
|
||||
key: "ExceptionFrom",
|
||||
render: (text) => dateTimeFormatChange(text),
|
||||
},
|
||||
{
|
||||
title: 'Valid To',
|
||||
dataIndex: 'ExceptionTo',
|
||||
key: 'ExceptionTo',
|
||||
title: "Valid To",
|
||||
dataIndex: "ExceptionTo",
|
||||
key: "ExceptionTo",
|
||||
render: (text) => dateTimeFormatChange(text),
|
||||
},
|
||||
{ title: 'New Price', dataIndex: 'NewPrice', key: 'NewPrice' },
|
||||
{ title: 'Single Price', dataIndex: 'SinglePrice', key: 'SinglePrice' },
|
||||
{ title: "New Price", dataIndex: "NewPrice", key: "NewPrice" },
|
||||
{ title: "Single Price", dataIndex: "SinglePrice", key: "SinglePrice" },
|
||||
];
|
||||
const slotColumns = allSlotColumns.filter((col) =>
|
||||
hasDataInColumn(selectedSlots, col.dataIndex)
|
||||
);
|
||||
const slotColumns = allSlotColumns.filter(col => hasDataInColumn(selectedSlots, col.dataIndex));
|
||||
const handlePageChange = (current) => {
|
||||
setpage(current);
|
||||
};
|
||||
|
|
@ -290,7 +266,7 @@ const SlotManagementList = () => {
|
|||
<div>
|
||||
<FormHeader title={'Slot Management'} />
|
||||
</div>
|
||||
<div>
|
||||
<div >
|
||||
<div className="searchAddDiv">
|
||||
<div className="formSearch">
|
||||
{/* <Search
|
||||
|
|
@ -310,7 +286,7 @@ const SlotManagementList = () => {
|
|||
</Buttons>
|
||||
</div>
|
||||
</div>
|
||||
<div className="reportTable slotmanagemantTable">
|
||||
<div className="reportTable">
|
||||
<Tables
|
||||
columns={managementColumns}
|
||||
dataSource={SloteData}
|
||||
|
|
@ -323,7 +299,7 @@ const SlotManagementList = () => {
|
|||
</div>
|
||||
{/* Slot Modal */}
|
||||
<Modal
|
||||
title={`Slot Details ${selectedProduct?.ProdName || ''}`}
|
||||
title={`Slot Details ${selectedProduct?.ProdName || ""}`}
|
||||
open={isSlotModalOpen}
|
||||
onCancel={() => setIsSlotModalOpen(false)}
|
||||
footer={null}
|
||||
|
|
@ -351,10 +327,7 @@ const SlotManagementList = () => {
|
|||
dataSource={selectedDays}
|
||||
renderItem={(day) => (
|
||||
<List.Item>
|
||||
<Tag
|
||||
color="blue"
|
||||
style={{ fontSize: '14px', padding: '4px 8px' }}
|
||||
>
|
||||
<Tag color="blue" style={{ fontSize: "14px", padding: "4px 8px" }}>
|
||||
{day.toUpperCase()}
|
||||
</Tag>
|
||||
</List.Item>
|
||||
|
|
@ -366,6 +339,7 @@ const SlotManagementList = () => {
|
|||
</Modal>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
// width: 99.9% !important;
|
||||
@media (max-width: 500px) {
|
||||
height: 95vh !important;
|
||||
height: 91vh !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -180,7 +180,7 @@
|
|||
row-gap: 0.5rem;
|
||||
gap: 2rem;
|
||||
// flex-wrap: wrap;
|
||||
@media (max-width: 768px) {
|
||||
@media (max-width:768px){
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
}
|
||||
|
|
@ -234,7 +234,7 @@
|
|||
justify-content: space-between;
|
||||
row-gap: 1rem;
|
||||
width: 100%;
|
||||
@media (max-width: 768px) {
|
||||
@media (max-width:768px){
|
||||
flex-wrap: unset !important;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@
|
|||
}
|
||||
|
||||
.CategoryHorizontalNew {
|
||||
padding: 12px 12px;
|
||||
padding: 1rem 1rem;
|
||||
font-family: 'Inter', sans-serif;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@
|
|||
color: #52c41a;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
font-family: "Gilroy";
|
||||
font-family: 'Gilroy';
|
||||
// nk
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
|
|
@ -595,7 +595,7 @@
|
|||
.qtyUomName {
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
font-family: "Gilroy";
|
||||
font-family: 'Gilroy';
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
|
@ -603,7 +603,7 @@
|
|||
.qtyUomName-itemCard {
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
font-family: "Gilroy";
|
||||
font-family: 'Gilroy';
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
|
|
@ -1010,7 +1010,7 @@
|
|||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
padding: 1rem;
|
||||
font-family: "Inter", sans-serif;
|
||||
font-family: 'Inter', sans-serif;
|
||||
letter-spacing: -0.5px;
|
||||
|
||||
@media (max-width: 500px) {
|
||||
|
|
@ -1023,7 +1023,7 @@
|
|||
line-height: 1.25rem;
|
||||
font-weight: 500;
|
||||
color: #1f2937;
|
||||
font-family: "Inter", ui-sans-serif, system-ui, sans-serif;
|
||||
font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
|
||||
|
||||
@media (max-width: 500px) {
|
||||
font-size: 0.7rem;
|
||||
|
|
@ -1036,7 +1036,7 @@
|
|||
justify-content: space-between;
|
||||
width: 100%;
|
||||
font-weight: 500;
|
||||
font-family: "Inter", ui-sans-serif, system-ui, sans-serif;
|
||||
font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
|
||||
}
|
||||
|
||||
.card4Price {
|
||||
|
|
@ -1059,7 +1059,7 @@
|
|||
padding: 0.375rem 0.75rem;
|
||||
font-weight: 500;
|
||||
border-radius: 50px;
|
||||
font-family: "Inter", ui-sans-serif, system-ui, sans-serif;
|
||||
font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1139,7 +1139,7 @@
|
|||
transition:
|
||||
background-color 0.2s ease,
|
||||
color 0.2s ease;
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
|
||||
&:hover {
|
||||
background-color: #dce7ff;
|
||||
|
|
@ -1220,7 +1220,7 @@
|
|||
row-gap: 0.5rem;
|
||||
// position: fixed;
|
||||
// bottom: 10px;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
font-size: 14px;
|
||||
color: #000;
|
||||
font-weight: 400;
|
||||
|
|
@ -1283,7 +1283,7 @@
|
|||
color: #fff;
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
|
|
@ -1324,7 +1324,7 @@
|
|||
background-color: #4caf50;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
|
@ -1338,7 +1338,7 @@
|
|||
}
|
||||
|
||||
.blukSlotTbody {
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
|
@ -1428,7 +1428,7 @@
|
|||
|
||||
.slot-price {
|
||||
font-weight: 500;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
font-size: 0.8rem;
|
||||
|
||||
> div:nth-child(1) {
|
||||
|
|
@ -1478,7 +1478,7 @@
|
|||
.bookingModalBulk {
|
||||
min-width: max-content !important;
|
||||
max-width: 90vw !important;
|
||||
font-family: "Poppins" !important;
|
||||
font-family: 'Poppins' !important;
|
||||
|
||||
.ant-modal-content {
|
||||
padding: 24px !important;
|
||||
|
|
@ -1495,9 +1495,6 @@
|
|||
min-width: 60vw;
|
||||
overflow: auto;
|
||||
max-width: 90vw;
|
||||
@media (max-width: 600px) {
|
||||
max-width: 83vw;
|
||||
}
|
||||
}
|
||||
|
||||
.bulk-submit-btn {
|
||||
|
|
@ -1510,7 +1507,7 @@
|
|||
width: max-content;
|
||||
height: max-content;
|
||||
padding: 9px 16px;
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
border-radius: 6px;
|
||||
|
|
@ -1527,10 +1524,6 @@
|
|||
align-items: center;
|
||||
display: flex;
|
||||
padding: 2px 5px;
|
||||
@media (max-width: 768px) {
|
||||
flex-wrap: wrap;
|
||||
gap: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.SportsSlotHeader1 {
|
||||
|
|
@ -1538,7 +1531,7 @@
|
|||
align-items: center;
|
||||
display: flex;
|
||||
font-size: 18px;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
font-weight: 500;
|
||||
|
||||
.CiShopIcon {
|
||||
|
|
@ -1553,7 +1546,7 @@
|
|||
}
|
||||
|
||||
p {
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
|
@ -1573,10 +1566,6 @@
|
|||
background: #ffffff;
|
||||
margin-bottom: 8px;
|
||||
gap: 2rem;
|
||||
@media (max-width: 600px) {
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.sports-slot-toggle {
|
||||
|
|
@ -1597,7 +1586,7 @@
|
|||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
min-width: 90px;
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
|
||||
&:hover {
|
||||
background: rgba(13, 110, 253, 0.1);
|
||||
|
|
@ -1667,9 +1656,6 @@
|
|||
gap: 12px;
|
||||
min-width: 300px;
|
||||
justify-content: center;
|
||||
@media (max-width: 600px) {
|
||||
min-width: 280px;
|
||||
}
|
||||
}
|
||||
|
||||
.bookingSportSlot {
|
||||
|
|
@ -1681,7 +1667,7 @@
|
|||
color: #495057;
|
||||
min-width: 120px;
|
||||
text-align: center;
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
width: 100%;
|
||||
transition: all 0.3s;
|
||||
scrollbar-width: thin;
|
||||
|
|
@ -1691,9 +1677,6 @@
|
|||
&:hover {
|
||||
border-color: #3793f5;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
padding: 2px 2px;
|
||||
}
|
||||
}
|
||||
|
||||
.slotproductName {
|
||||
|
|
@ -1725,17 +1708,13 @@
|
|||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
@media (max-width: 600px) {
|
||||
gap: 4px;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.slotTimingSelect {
|
||||
padding: 8px 8px;
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
border: 1px solid #ddd;
|
||||
text-align: center;
|
||||
width: 145px;
|
||||
|
|
@ -1744,15 +1723,16 @@
|
|||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@media (max-width: 600px) {
|
||||
width: 130px;
|
||||
height: 95px;
|
||||
}
|
||||
|
||||
&.available {
|
||||
background-color: #008000;
|
||||
color: #fff;
|
||||
border-color: #4caf50;
|
||||
|
||||
&:hover {
|
||||
background-color: #ffffff;
|
||||
color: #008000;
|
||||
}
|
||||
}
|
||||
|
||||
&.booked {
|
||||
|
|
@ -1760,6 +1740,10 @@
|
|||
color: #ffffff;
|
||||
border-color: #f44336;
|
||||
cursor: not-allowed;
|
||||
&:hover {
|
||||
color: #c90b0b;
|
||||
background-color: #ffff;
|
||||
}
|
||||
}
|
||||
|
||||
&.incart {
|
||||
|
|
@ -1772,6 +1756,10 @@
|
|||
background-color: #ffe8bf;
|
||||
color: #5f4204;
|
||||
border-color: #ff9800;
|
||||
&:hover {
|
||||
background-color: #5f4204;
|
||||
color: #ffe8bf;
|
||||
}
|
||||
}
|
||||
|
||||
&.blocked {
|
||||
|
|
@ -1779,6 +1767,10 @@
|
|||
color: #ffffff;
|
||||
border-color: #31a0f0;
|
||||
cursor: not-allowed;
|
||||
// &:hover{
|
||||
// color:#148498;
|
||||
// background-color: #fff;
|
||||
// }
|
||||
}
|
||||
|
||||
&.selected {
|
||||
|
|
@ -1928,7 +1920,7 @@
|
|||
|
||||
.booked-details-container {
|
||||
padding: 8px;
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
|
||||
.booked-details-title {
|
||||
font-size: 24px;
|
||||
|
|
@ -2059,7 +2051,7 @@
|
|||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
min-width: 70px;
|
||||
|
||||
&:disabled {
|
||||
|
|
@ -2109,7 +2101,7 @@
|
|||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
min-width: 120px;
|
||||
box-shadow: 0 2px 4px rgba(55, 147, 245, 0.3);
|
||||
|
||||
|
|
@ -2135,7 +2127,7 @@
|
|||
|
||||
.all-bookings-container {
|
||||
padding: 8px;
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
|
||||
.all-bookings-title {
|
||||
font-size: 22px;
|
||||
|
|
@ -2223,7 +2215,7 @@
|
|||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
min-width: 60px;
|
||||
|
||||
&:disabled {
|
||||
|
|
|
|||
|
|
@ -48,10 +48,6 @@
|
|||
|
||||
svg {
|
||||
display: flex;
|
||||
transition: all 0.2s ease-in-out;
|
||||
&:hover {
|
||||
color: #1292ee !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
|
|
@ -109,37 +105,13 @@
|
|||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.1rem;
|
||||
|
||||
.RiVerifiedBadgeFill {
|
||||
transition: all 0.2s ease-in-out;
|
||||
height: 37px;
|
||||
width: 37px;
|
||||
padding: 6px 4px;
|
||||
border-radius: 0.5rem;
|
||||
|
||||
&:hover {
|
||||
color: #1292ee !important;
|
||||
}
|
||||
}
|
||||
.BSBillingNavBar1-AllIcons {
|
||||
color: #ffffff !important;
|
||||
&:hover {
|
||||
color: #1292ee !important;
|
||||
}
|
||||
}
|
||||
.bs-membership__icon-btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
svg {
|
||||
transition: all 0.2s ease-in-out;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
&:hover {
|
||||
svg {
|
||||
color: #1292ee !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -183,33 +155,30 @@
|
|||
color: #6b7280 !important;
|
||||
cursor: pointer;
|
||||
// background-color: #2563eb;
|
||||
height: 40px;
|
||||
width: 40px;
|
||||
transition: all 0.2s ease-in-out;
|
||||
height: 41px;
|
||||
width: 41px;
|
||||
svg {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: #1292ee;
|
||||
svg {
|
||||
color: #1292ee !important;
|
||||
}
|
||||
background-color: #eff6ff;
|
||||
color: #2563eb;
|
||||
}
|
||||
}
|
||||
|
||||
.FaTruckIconHold {
|
||||
padding: 10px 7px;
|
||||
border-radius: 0.5rem;
|
||||
color: #ffffff;
|
||||
color: #6b7280;
|
||||
cursor: pointer;
|
||||
width: 40px !important;
|
||||
height: 40px !important;
|
||||
// background-color: #2563eb;
|
||||
transition: all 0.2s ease-in-out;
|
||||
|
||||
&:hover {
|
||||
color: #1292ee;
|
||||
background-color: #eff6ff;
|
||||
color: #2563eb;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -225,7 +194,6 @@
|
|||
// background-color: #2563eb;
|
||||
height: 41px;
|
||||
width: 41px;
|
||||
transition: all 0.2s ease-in-out;
|
||||
|
||||
.BSBillingNav-icon {
|
||||
height: 22px !important;
|
||||
|
|
@ -233,7 +201,8 @@
|
|||
}
|
||||
|
||||
&:hover {
|
||||
color: #1292ee;
|
||||
background-color: #eff6ff;
|
||||
color: #2563eb;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -276,31 +245,18 @@
|
|||
}
|
||||
|
||||
.BsNavbarUser {
|
||||
color: #ffffff;
|
||||
color: #6b7280;
|
||||
font-size: 1.3rem;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: all 0.2s ease-in-out;
|
||||
&:hover {
|
||||
color: #1292ee;
|
||||
}
|
||||
}
|
||||
|
||||
.DropDownsCustomer {
|
||||
display: flex;
|
||||
gap: 2px;
|
||||
position: relative;
|
||||
align-items: center;
|
||||
|
||||
.BSBillingNav-icon {
|
||||
color: #ffffff !important;
|
||||
transition: all 0.2s ease-in-out;
|
||||
&:hover {
|
||||
color: #1292ee !important;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-select {
|
||||
|
|
@ -316,20 +272,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
.DropDownsCustomerClose {
|
||||
color: #c2c2c2;
|
||||
position: absolute;
|
||||
right: 60px;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
color: #727272;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
right: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.DropDownsCustomer.always-visible {
|
||||
.ant-select {
|
||||
width: 7rem !important;
|
||||
|
|
@ -408,7 +350,7 @@
|
|||
}
|
||||
|
||||
svg {
|
||||
color: #ffffff !important;
|
||||
color: #6b7280;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ body {
|
|||
}
|
||||
|
||||
@media (max-width: 500px) {
|
||||
top: 2.9rem;
|
||||
top: 3.1rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -288,7 +288,7 @@ body {
|
|||
justify-content: space-between;
|
||||
// justify-content: space-between;
|
||||
width: 100%;
|
||||
padding: 8px 8px;
|
||||
padding: 0.75rem 1.5rem;
|
||||
background-color: #1e2536;
|
||||
font-family: "Inter", ui-sans-serif, system-ui, sans-serif !important;
|
||||
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@
|
|||
justify-content: center;
|
||||
border-radius: 4px;
|
||||
color: #fff;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
|
|
@ -185,7 +185,7 @@
|
|||
justify-content: center;
|
||||
border-radius: 4px;
|
||||
color: #fff;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
|
|
@ -197,7 +197,7 @@
|
|||
justify-content: center;
|
||||
border-radius: 4px;
|
||||
color: #fff;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
|
|
@ -210,11 +210,11 @@
|
|||
height: max-content;
|
||||
min-height: 8rem;
|
||||
border-radius: 8px;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
width: max-content;
|
||||
min-width: 250px;
|
||||
|
||||
> div:nth-child(1) {
|
||||
>div:nth-child(1) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
|
|
@ -256,7 +256,7 @@
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
padding: 0.7rem 1rem;
|
||||
margin: 1vw 2vh;
|
||||
background-color: #e0e0e0;
|
||||
|
|
@ -319,6 +319,7 @@
|
|||
}
|
||||
|
||||
@media (min-width: 280px) and (max-width: 499px) {
|
||||
|
||||
//srinath
|
||||
.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panels {
|
||||
width: 50vw !important;
|
||||
|
|
@ -745,7 +746,7 @@
|
|||
padding: 10px 16px;
|
||||
font-size: 16px;
|
||||
text-transform: capitalize;
|
||||
font-family: "Gilroy";
|
||||
font-family: 'Gilroy';
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
background-color: #20a720;
|
||||
|
|
@ -799,7 +800,7 @@
|
|||
|
||||
.RetailDashboard-Master {
|
||||
width: 100%;
|
||||
font-family: "Poppins" !important;
|
||||
font-family: 'Poppins' !important;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
|
|
@ -885,7 +886,7 @@
|
|||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
> div:nth-child(1) {
|
||||
>div:nth-child(1) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
|
|
@ -1076,19 +1077,19 @@
|
|||
gap: 10px;
|
||||
width: 100%;
|
||||
|
||||
> .tab:nth-child(1) {
|
||||
>.tab:nth-child(1) {
|
||||
background-color: #c2bcff;
|
||||
color: #1200d3;
|
||||
width: 33%;
|
||||
}
|
||||
|
||||
> .tab:nth-child(2) {
|
||||
>.tab:nth-child(2) {
|
||||
background-color: #fadaf5;
|
||||
color: #d100b2;
|
||||
width: 33%;
|
||||
}
|
||||
|
||||
> .tab:nth-child(3) {
|
||||
>.tab:nth-child(3) {
|
||||
background-color: #fde7b8;
|
||||
color: #af7800;
|
||||
width: 33%;
|
||||
|
|
@ -1112,8 +1113,7 @@
|
|||
}
|
||||
|
||||
.detailsProductsCard {
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
background: linear-gradient(90deg,
|
||||
rgb(255, 255, 255) 0%,
|
||||
rgba(143, 209, 142, 0.71) 4%,
|
||||
rgb(255, 255, 255) 7%,
|
||||
|
|
@ -1150,8 +1150,7 @@
|
|||
rgb(255, 255, 255) 97%,
|
||||
rgb(255, 255, 255) 97%,
|
||||
rgba(143, 209, 142, 0.71) 100%,
|
||||
rgb(76, 175, 80) 100%
|
||||
);
|
||||
rgb(76, 175, 80) 100%);
|
||||
background-color: #ffffff;
|
||||
width: 95px;
|
||||
height: 85px;
|
||||
|
|
@ -1258,7 +1257,7 @@
|
|||
width: 100%;
|
||||
gap: 10px;
|
||||
margin-top: 2rem;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
}
|
||||
|
||||
.tltExpense {
|
||||
|
|
@ -1390,7 +1389,7 @@
|
|||
cursor: pointer;
|
||||
transition: background 0.2s;
|
||||
margin-left: 8px;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
|
||||
svg {
|
||||
font-size: 18px;
|
||||
|
|
@ -1452,7 +1451,7 @@
|
|||
box-shadow 0.18s;
|
||||
// min-width: 130px;
|
||||
position: relative;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
justify-content: space-between;
|
||||
|
||||
svg {
|
||||
|
|
@ -1606,9 +1605,9 @@
|
|||
flex: 1;
|
||||
padding: 16px 2px;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-weight: 500;
|
||||
-webkit-text-stroke-width: 0.2px;
|
||||
font-size: 1.7rem;
|
||||
font-size: 1.8rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
|
@ -1628,15 +1627,15 @@
|
|||
}
|
||||
|
||||
.todaySnapshotBox.orders {
|
||||
color: #3b3b3b;
|
||||
color: #1976d2;
|
||||
}
|
||||
|
||||
.todaySnapshotBox.customers {
|
||||
color: #3b3b3b;
|
||||
color: #1976d2;
|
||||
}
|
||||
|
||||
.todaySnapshotBox.pending {
|
||||
color: #3b3b3b;
|
||||
color: #1976d2;
|
||||
}
|
||||
|
||||
.quickActionsRow {
|
||||
|
|
@ -2181,6 +2180,7 @@
|
|||
|
||||
// Responsive
|
||||
@media (max-width: 1024px) {
|
||||
|
||||
.dashboardMainGrid,
|
||||
.dashboardSecondaryGrid {
|
||||
flex-direction: column;
|
||||
|
|
@ -2465,7 +2465,7 @@
|
|||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
font-family: "Inter", sans-serif;
|
||||
font-family: 'Inter', sans-serif;
|
||||
width: 100%;
|
||||
transition: background 0.2s;
|
||||
}
|
||||
|
|
@ -2680,7 +2680,7 @@
|
|||
}
|
||||
|
||||
.ai-suggestion::before {
|
||||
content: "✨";
|
||||
content: '✨';
|
||||
font-size: 18px;
|
||||
margin-right: 8px;
|
||||
color: #f7b731;
|
||||
|
|
@ -2712,7 +2712,7 @@
|
|||
|
||||
div {
|
||||
color: #2a2a2a;
|
||||
font-family: "Inter", sans-serif;
|
||||
font-family: 'Inter', sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
text-transform: uppercase;
|
||||
|
|
@ -2726,7 +2726,7 @@
|
|||
background-color: #e53935;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
font-family: "Poppins";
|
||||
font-family: 'Poppins';
|
||||
border-radius: 6px;
|
||||
font-weight: 500;
|
||||
display: flex;
|
||||
|
|
|
|||
|
|
@ -5,28 +5,3 @@
|
|||
}
|
||||
|
||||
// .ant-checkbox .ant-checkbox-inner:after
|
||||
.empAccessreportTable {
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
// Disable all Ant Design table animations and hover effects
|
||||
.ant-table,
|
||||
.ant-table * {
|
||||
transition: none !important;
|
||||
animation: none !important;
|
||||
animation-duration: 0s !important;
|
||||
transition-duration: 0s !important;
|
||||
}
|
||||
|
||||
.ant-table-tbody > tr:hover > td,
|
||||
.ant-table-tbody > tr:hover,
|
||||
.ant-table-row:hover > td,
|
||||
.ant-table-row:hover {
|
||||
background: transparent !important;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
.ant-table-cell-row-hover {
|
||||
background: transparent !important;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
}
|
||||
|
||||
.cardpage-title {
|
||||
font-family: "Barlow Condensed", sans-serif;
|
||||
font-family: 'Barlow Condensed', sans-serif;
|
||||
font-size: 26px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
|
@ -101,7 +101,7 @@
|
|||
align-items: flex-start;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
font-family: "Manrope", sans-serif;
|
||||
font-family: 'Manrope', sans-serif;
|
||||
text-transform: capitalize;
|
||||
font-weight: 600;
|
||||
// font-size: 1rem;
|
||||
|
|
@ -217,7 +217,7 @@
|
|||
align-items: flex-start;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
font-family: "Manrope", sans-serif;
|
||||
font-family: 'Manrope', sans-serif;
|
||||
text-transform: capitalize;
|
||||
font-weight: 600;
|
||||
// font-size: 1rem;
|
||||
|
|
@ -329,7 +329,7 @@
|
|||
align-items: flex-start;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
font-family: "Manrope", sans-serif;
|
||||
font-family: 'Manrope', sans-serif;
|
||||
text-transform: capitalize;
|
||||
font-weight: 600;
|
||||
// font-size: 1rem;
|
||||
|
|
@ -360,10 +360,10 @@
|
|||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
background: #f3f3f3;
|
||||
padding: "20px";
|
||||
padding: '20px';
|
||||
height: 35px;
|
||||
align-items: center;
|
||||
cursor: "pointer";
|
||||
cursor: 'pointer';
|
||||
}
|
||||
|
||||
.ProVariantCard-dis {
|
||||
|
|
@ -371,12 +371,13 @@
|
|||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
background: #f3f3f3;
|
||||
padding: "20px";
|
||||
padding: '20px';
|
||||
height: 35px;
|
||||
align-items: center;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
|
||||
.selfBookCardBook {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
|
|
@ -412,10 +413,12 @@
|
|||
background-color: #ffebee;
|
||||
border-color: #f44336;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.ProVariantCardSports {
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
|
|
@ -425,15 +428,15 @@
|
|||
height: max-content;
|
||||
margin-top: 10px;
|
||||
border-radius: 6px;
|
||||
background-color: #008000;
|
||||
border: 1px solid #008000;
|
||||
color: #ffffff;
|
||||
background-color: #e8f5e8;
|
||||
border: 1px solid #4caf50;
|
||||
color: #26922a;
|
||||
text-align: center;
|
||||
gap: 2px;
|
||||
width: 48%;
|
||||
white-space: nowrap;
|
||||
|
||||
> div:nth-child(1) {
|
||||
>div:nth-child(1) {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
line-height: 1.1;
|
||||
|
|
@ -441,11 +444,11 @@
|
|||
}
|
||||
|
||||
.ProVariantCardSports:hover {
|
||||
background-color: #ffffff;
|
||||
background-color: #d9fcd9;
|
||||
cursor: pointer;
|
||||
color: #008000;
|
||||
}
|
||||
|
||||
|
||||
.ProVariantCardSports-dis {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -454,9 +457,9 @@
|
|||
flex-direction: column;
|
||||
margin-top: 10px;
|
||||
border-radius: 6px;
|
||||
background-color: #f02626f3;
|
||||
border: 1px solid #f02626f3;
|
||||
color: #ffffff;
|
||||
background-color: #ffebee;
|
||||
border: 1px solid #d83126;
|
||||
color: #f44336;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
gap: 2px;
|
||||
|
|
@ -469,7 +472,7 @@
|
|||
user-select: none;
|
||||
|
||||
/* prevents text selection */
|
||||
> div:nth-child(1) {
|
||||
>div:nth-child(1) {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
line-height: 1.1;
|
||||
|
|
@ -482,6 +485,7 @@
|
|||
font-family: "Poppins";
|
||||
}
|
||||
|
||||
|
||||
.KioskCard-card {
|
||||
position: relative;
|
||||
|
||||
|
|
@ -497,6 +501,7 @@
|
|||
&:hover,
|
||||
:active {
|
||||
background-color: red !important;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -541,7 +546,7 @@
|
|||
align-items: center;
|
||||
margin: 12px 0;
|
||||
|
||||
@media (max-width: 600px) {
|
||||
@media (max-width:600px) {
|
||||
flex-direction: column !important;
|
||||
align-items: flex-start;
|
||||
|
||||
|
|
@ -562,6 +567,7 @@
|
|||
font-family: "Poppins";
|
||||
position: relative;
|
||||
|
||||
|
||||
&.active {
|
||||
background: #007bff;
|
||||
color: #fff;
|
||||
|
|
@ -592,7 +598,7 @@
|
|||
flex-wrap: wrap;
|
||||
margin-top: 10px;
|
||||
|
||||
@media (max-width: 600px) {
|
||||
@media (max-width:600px) {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 5px;
|
||||
|
|
@ -606,7 +612,7 @@
|
|||
text-align: center;
|
||||
background-color: #fff;
|
||||
|
||||
@media (max-width: 600px) {
|
||||
@media (max-width:600px) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
|
@ -621,9 +627,11 @@
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
.BTNslot {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
}
|
||||
|
||||
.BookingSlotDateGroup {
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@
|
|||
@media (max-width: 500px) {
|
||||
height: max-content;
|
||||
margin-bottom: 0;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -191,6 +192,7 @@
|
|||
}
|
||||
|
||||
.address-type-section {
|
||||
|
||||
// padding: 12px;
|
||||
// background-color: #f8fafc;
|
||||
// border-radius: 8px;
|
||||
|
|
@ -544,12 +546,12 @@
|
|||
outline: none;
|
||||
}
|
||||
|
||||
> button:nth-child(1) {
|
||||
>button:nth-child(1) {
|
||||
background-color: #daecfd;
|
||||
color: #1292ee;
|
||||
}
|
||||
|
||||
> button:nth-child(2) {
|
||||
>button:nth-child(2) {
|
||||
background-color: #ffdcdc;
|
||||
color: #ee3333;
|
||||
}
|
||||
|
|
@ -568,7 +570,7 @@
|
|||
flex-direction: column;
|
||||
margin-bottom: 5px;
|
||||
|
||||
> div:nth-child(2) {
|
||||
>div:nth-child(2) {
|
||||
width: max-content;
|
||||
font-size: 12px !important;
|
||||
height: max-content;
|
||||
|
|
@ -586,6 +588,9 @@
|
|||
padding: 8px;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
|
||||
|
||||
|
||||
}
|
||||
.lowStock-SaveButton:hover {
|
||||
background-color: #13c12a;
|
||||
|
|
@ -630,14 +635,3 @@
|
|||
overflow: hidden !important;
|
||||
}
|
||||
}
|
||||
|
||||
.addTaxinputDrawer {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
gap: 2rem;
|
||||
}
|
||||
|
||||
.productlistSearchDiv {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -292,22 +292,3 @@ a {
|
|||
font-family: VAR(--PARA_FONT_FAMILY);
|
||||
color: VAR(--ERROR_COLOR);
|
||||
}
|
||||
|
||||
/* Disable all Ant Design table animations and hover effects */
|
||||
.ant-table,
|
||||
.ant-table *,
|
||||
.ant-table-wrapper * {
|
||||
transition: none !important;
|
||||
animation: none !important;
|
||||
animation-duration: 0s !important;
|
||||
transition-duration: 0s !important;
|
||||
}
|
||||
|
||||
.ant-table-tbody > tr:hover > td,
|
||||
.ant-table-tbody > tr:hover,
|
||||
.ant-table-row:hover > td,
|
||||
.ant-table-row:hover,
|
||||
.ant-table-cell-row-hover {
|
||||
background: transparent !important;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ const fetchComponent = async () => {
|
|||
sessionStore('userName', 'Karthiga');
|
||||
sessionStorage.setItem(
|
||||
'auth',
|
||||
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiOTY5ODgzODk2NiIsIlBhc3N3b3JkIjoiWkB6MTIzNCIsImF1ZCI6WyJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTMiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTIiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTQiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTMiXSwiZXhwIjoxNzYzMTQ1MzUwLCJpc3MiOiJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMDEifQ.6nO0-3OBKfiBafld-gWIccjG-7yGuYA3q-ZRxfultu8'
|
||||
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiOTY5ODgzODk2NiIsIlBhc3N3b3JkIjoiWkB6MTIzNCIsImF1ZCI6WyJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTMiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTIiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTQiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTMiXSwiZXhwIjoxNzYzMDYwNjE4LCJpc3MiOiJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMDEifQ.nN96UzT0oV1Ssn5WHIMpTwYFO1N3ifu81HLXwE-SvB8'
|
||||
);
|
||||
// sessionStore('AppId', 1);
|
||||
// sessionStore('BranchId', 121);
|
||||
|
|
@ -263,7 +263,7 @@ const fetchHomeComponent = async () => {
|
|||
sessionStore('userName', 'Karthiga');
|
||||
sessionStorage.setItem(
|
||||
'auth',
|
||||
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiOTY5ODgzODk2NiIsIlBhc3N3b3JkIjoiWkB6MTIzNCIsImF1ZCI6WyJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTMiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTIiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTQiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTMiXSwiZXhwIjoxNzYzMTQ1MzUwLCJpc3MiOiJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMDEifQ.6nO0-3OBKfiBafld-gWIccjG-7yGuYA3q-ZRxfultu8'
|
||||
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiOTY5ODgzODk2NiIsIlBhc3N3b3JkIjoiWkB6MTIzNCIsImF1ZCI6WyJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTMiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTIiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTQiLCJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMTMiXSwiZXhwIjoxNzYzMDYwNjE4LCJpc3MiOiJodHRwOi8vMTkyLjE2OC4xLjM3OjgwMDEifQ.nN96UzT0oV1Ssn5WHIMpTwYFO1N3ifu81HLXwE-SvB8'
|
||||
);
|
||||
// sessionStore('AppId', 1);
|
||||
// sessionStore('BranchId', 121);
|
||||
|
|
|
|||
Loading…
Reference in New Issue