Navbar setting icon changes

This commit is contained in:
Your Name 2026-02-26 17:47:48 +05:30
parent deec2dbdc1
commit da28c37e3e
21 changed files with 1478 additions and 1485 deletions

View File

@ -12,7 +12,6 @@ import { useNavigate } from 'react-router-dom';
const UserRelieveManager = lazy(() => import('../../Template/RealivingUser'));
// Scss
import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar1.scss';
import NavbarSkeleton from '../../../../Components/Skeleton/NavbarSkeleton';
const subDirectory = import.meta.env.ENV_BASE_URL;
const BSNavBarUserInfo = ({

View File

@ -151,13 +151,12 @@ import PozoMenuIcon from '../UtillComponents/Pozo retail icons/PozoMenuIcon.jsx'
import TooltipWrapper from '../../../../Components/Tooltip/Tooltip';
import { IoMdClose } from 'react-icons/io';
import { CgSearchLoading } from 'react-icons/cg';
import { TbSettingsSearch } from 'react-icons/tb';
import BSNavBarUserInfo from './BSNavBarUserInfo';
import { FaParking } from 'react-icons/fa';
import { isMobile } from 'react-device-detect';
import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx';
import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar1.scss';
import NavbarSkeleton from '../../../../Components/Skeleton/NavbarSkeleton.jsx';
const subDirectory = import.meta.env.ENV_BASE_URL;
const commonUrl = import.meta.env.ENV_COMMON_BASE_URL;
@ -678,7 +677,7 @@ const BSNavbar1 = (props) => {
{/* Multiple search */}
<Tooltip title={'Multiple Search'}>
<div className="MultiSearchIconDiv">
<CgSearchLoading onClick={() => setMultiple(true)} />
<TbSettingsSearch onClick={() => setMultiple(true)} />
</div>
</Tooltip>

View File

@ -98,7 +98,7 @@ import {
getUserProfile,
userDataByUserId,
} from '../../../../Features/UserAccount/userData.js';
import { CgSearchLoading } from 'react-icons/cg';
import { TbSettingsSearch } from 'react-icons/tb';
import { FaParking } from 'react-icons/fa';
import BSNavBarUserInfo from './BSNavBarUserInfo';
import { OtherServicesCardlistdata } from '../../../../Features/OtherServices/OtherServices.js';
@ -130,7 +130,6 @@ const BSCustomerSelect = lazy(
);
// Scss
import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar2.scss';
import NavbarSkeleton from '../../../../Components/Skeleton/NavbarSkeleton.jsx';
const subDirectory = import.meta.env.ENV_BASE_URL;
const commonUrl = import.meta.env.ENV_COMMON_BASE_URL;
@ -625,12 +624,7 @@ const BSNavbar2 = () => {
</div>
)}
</div>
{/* Multiple search */}
<Tooltip title={'Multiple Search'}>
<div className="MultiSearchIconDiv2" style={{ margin: '0 6px' }}>
<CgSearchLoading onClick={() => setMultiple(true)} />
</div>
</Tooltip>
<div className="BSBillingNav2div2">
{searchOption &&
!Comboglobal &&
@ -643,6 +637,15 @@ const BSNavbar2 = () => {
}}
>
<BSNavBarSearch nosearch={true} OrderType={OrderType} />
{/* Multiple search */}
<Tooltip title={'Multiple Search'}>
<div
className="MultiSearchIconDiv2"
style={{ margin: '0 6px' }}
>
<TbSettingsSearch onClick={() => setMultiple(true)} />
</div>
</Tooltip>
</div>
)}

View File

@ -102,10 +102,9 @@ import BSNavBarWholeSale from '../UtillComponents/BSNavBarWholeSale.jsx';
import { Global_OfferStatus } from '../../../../Features/Offer/Offer.js';
import { globalholddata } from '../../../../Features/BookingScreen/HoldOption/HoldOption.js';
import BSNavBarWeightScale from '../UtillComponents/BSNavBarWeightScale.jsx';
import { CgSearchLoading } from 'react-icons/cg';
import { TbSettingsSearch } from 'react-icons/tb';
import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx';
import MultipleSearch from '../UtillComponents/MultipleSearch.jsx';
import NavbarSkeleton from '../../../../Components/Skeleton/NavbarSkeleton.jsx';
// Jsx Files
const BSNavBarFavItems = lazy(
@ -630,18 +629,18 @@ const BSNavbar3 = ({ optionNames }) => {
)}
</div>
{/* Multiple search */}
<Tooltip title={'Multiple Search'}>
<div className="MultiSearchIconDiv3">
<CgSearchLoading onClick={() => setMultiple(true)} />
</div>
</Tooltip>
{!sportsAppPreference && searchOption && (
<div
className="BsnavbarSearchMain"
onClick={() => searchInputRef.current?.focus()}
>
<BSNavbarSearchStandard inputRef={searchInputRef} />
{/* Multiple search */}
<Tooltip title={'Multiple Search'}>
<div className="MultiSearchIconDiv3">
<TbSettingsSearch onClick={() => setMultiple(true)} />
</div>
</Tooltip>
</div>
)}

View File

@ -2,8 +2,9 @@ import React, { useState } from 'react';
import { List, Typography, Tooltip } from 'antd';
import { FaKeyboard } from 'react-icons/fa';
import { DefaultModal } from '../../../../Components/Modal/DefaultModal';
import '../../../../Styles/OverAllStyle/OverAllStyle.scss';
const { Title, Text } = Typography;
const ShortcutKeyHelper = ({ }) => {
const ShortcutKeyHelper = ({}) => {
const [isModalOpen, setIsModalOpen] = useState(false);
const shortcuts = [
@ -55,11 +56,28 @@ const ShortcutKeyHelper = ({ }) => {
width={500}
>
<List
className="Shot-KeyBoard"
dataSource={shortcuts}
renderItem={(item) => (
<List.Item>
<div style={{ display: 'flex', justifyContent: 'space-between', width: '100%' }}>
<Text strong style={{ fontFamily: 'monospace', backgroundColor: '#f5f5f5', padding: '2px 6px', borderRadius: '3px' }}>
<div
className="KBwithKey"
style={{
display: 'flex',
justifyContent: 'space-between',
width: '100%',
}}
>
<Text
className="KBwithKey"
strong
style={{
fontFamily: 'monospace',
backgroundColor: '#f5f5f5',
padding: '2px 6px',
borderRadius: '3px',
}}
>
{item.key}
</Text>
<Text>{item.description}</Text>

View File

@ -111,7 +111,6 @@ const SalesCountForStandard = lazy(
);
import BsBookingitemCard from '../../Components/BSItemCards/BsBookingitemCard.jsx';
import LayoutSubCategoryFetcher from '../../LayoutSubCategoryFetcher.jsx';
import NavbarSkeleton from '../../../../Components/Skeleton/NavbarSkeleton.jsx';
import CardSkeleton from '../../../../Components/Skeleton/CardSkeleton.jsx';
const ListOfSalesInvoices = lazy(
() =>

View File

@ -85,9 +85,11 @@ const AllSalesPageSettings = lazy(
// Scss
import '../../../Styles/BookingScreen/Template/BSLayout2/BSLayout2.scss';
import useWhyDidYouUpdate from '../../../Services/findrerender.js';
import React from 'react';
import { SalesDetailsModal, SalesNetAmountModal } from '../Components/UtillComponents/SalesDetailsNetAmountModal.jsx';
import {
SalesDetailsModal,
SalesNetAmountModal,
} from '../Components/UtillComponents/SalesDetailsNetAmountModal.jsx';
const SalesCountForStandard = React.memo(() => {
const dispatch = useDispatch();
@ -484,10 +486,10 @@ const SalesCountForStandard = React.memo(() => {
return (
DineInAccess?.SettingValue === 'Y' &&
DineInOrderCount +
TakeAwayOrderCount +
SelfTakeAwayOrderCount +
SelfDineInOrderCount >
0 &&
TakeAwayOrderCount +
SelfTakeAwayOrderCount +
SelfDineInOrderCount >
0 &&
(takeAwayPreference || dinePreference)
);
}, [DineInAccess, sales, dinePreference, takeAwayPreference]);
@ -644,7 +646,7 @@ const SalesCountForStandard = React.memo(() => {
{DineInAccess?.SettingValue === 'Y' &&
takeAwayPreference &&
(TakeAwayOrderCount || SelfTakeAwayOrderCount || PreOrderAmount) >
0 && (
0 && (
<Tooltip
className="standardTooltipDineIN"
title={renderBreakdown([
@ -744,13 +746,15 @@ const SalesCountForStandard = React.memo(() => {
Stock
</button>
)}
{preferenceshortcutkey && (
<div className="KeyshortCutNav3">
<ShortcutKeyHelper />
</div>
)}
<AllSalesPageSettings />
<div style={{ display: 'flex', alignItems: 'center' }}>
<div className="navb3SalesCounticons">
{preferenceshortcutkey && (
<div className="KeyshortCutNav3">
<ShortcutKeyHelper />
</div>
)}
<AllSalesPageSettings />
{Customisebillno && <CustomisedInvoiceChange />}
{SessionData?.FeatureAddonData?.FeatureDtls?.find(
(item) => item?.FeatureAddonName?.toLowerCase() === 'kiosk sales'

File diff suppressed because it is too large Load Diff

View File

@ -21,7 +21,7 @@ import { getSession, validateSafeInput } from '../../Services/Others';
import { postshift, putshift } from '../../Features/ShiftMaster/ShiftMaster.js';
import './ShiftMaster.scss';
import { FaPlus } from 'react-icons/fa6';
import "../../Styles/OverAllStyle/OverAllStyle.scss";
import '../../Styles/OverAllStyle/OverAllStyle.scss';
const subDirectory = import.meta.env.BASE_URL;
@ -103,13 +103,15 @@ const ShiftForm = ({ formType }) => {
const isValidBreak = shiftEnd.isBefore(shiftStart)
? (breakStart.isAfter(shiftStart) || breakStart.isBefore(shiftEnd)) &&
(breakEnd.isAfter(shiftStart) || breakEnd.isBefore(shiftEnd))
(breakEnd.isAfter(shiftStart) || breakEnd.isBefore(shiftEnd))
: breakStart.isBetween(shiftStart, shiftEnd, null, '[]') &&
breakEnd.isBetween(shiftStart, shiftEnd, null, '[]');
breakEnd.isBetween(shiftStart, shiftEnd, null, '[]');
if (!isValidBreak) {
setMessageType('error');
setMessageData(`Break "${breakItem.BreakName}" is not within shift time range`);
setMessageData(
`Break "${breakItem.BreakName}" is not within shift time range`
);
return;
}
}
@ -167,8 +169,10 @@ const ShiftForm = ({ formType }) => {
}
// parse safely (allow formats like "HH:mm" or "HH:mm:ss")
const fromParts = (fromTime || '').split(':').map(s => parseInt(s, 10) || 0);
const toParts = (toTime || '').split(':').map(s => parseInt(s, 10) || 0);
const fromParts = (fromTime || '')
.split(':')
.map((s) => parseInt(s, 10) || 0);
const toParts = (toTime || '').split(':').map((s) => parseInt(s, 10) || 0);
const [fromHour = 0, fromMinute = 0] = fromParts;
const [toHour = 0, toMinute = 0] = toParts;
@ -417,9 +421,9 @@ const ShiftForm = ({ formType }) => {
// Validate break time fields before adding
await formRef.current?.validateFields([
'BreakName',
'BreakStartTime',
'BreakEndTime'
]);
'BreakStartTime',
'BreakEndTime',
]);
const Formdata = formRef.current?.getFieldsValue();
const alreadyExists = Tabledata.some(
@ -753,16 +757,16 @@ const ShiftForm = ({ formType }) => {
<div
className="Quotation-tables Quotation-tablesShift"
style={{ maxwidth: '500px', overflowX: 'scroll' }}
style={{
maxwidth: '500px',
overflowX: 'auto',
scrollbarWidth: 'thin',
}}
>
<Table
bordered
// components={components}
// rowClassName="editable-row"
columns={Columns}
dataSource={Tabledata}
// pagination={handlePageChange}
// onChange={handleChange}
/>
</div>
</div>

View File

@ -2,7 +2,7 @@ import React, { useState } from 'react';
import { Tooltip } from 'antd';
import { IoSettingsOutline } from 'react-icons/io5';
import { DefaultModal } from '../../Components/Modal/DefaultModal.jsx';
import '../../Styles/OverAllStyle/OverAllStyle.scss';
const SettingsIconWithModal = ({
tooltipTitle = 'Add Fields',
@ -18,8 +18,7 @@ const SettingsIconWithModal = ({
// map labels values
const mappedFields = selectedAdditionalColumn
.map(
(col) =>
tableFieldPreferences.find((pref) => pref.label === col)?.value
(col) => tableFieldPreferences.find((pref) => pref.label === col)?.value
)
.filter(Boolean);
@ -47,7 +46,7 @@ const SettingsIconWithModal = ({
{/* ⚙️ ICON ONLY */}
<Tooltip title={tooltipTitle} placement="top">
<IoSettingsOutline
style={{ cursor: 'pointer', fontSize: '15px' }}
style={{ cursor: 'pointer', fontSize: '20px' }}
onClick={handleIconClick}
/>
</Tooltip>
@ -62,7 +61,7 @@ const SettingsIconWithModal = ({
handleSubmit={handleApply}
handleCancel={handleCancel}
>
<div style={{ padding: '20px' }}>
<div className="addFiledInProRec">
{tableFieldPreferences.map((option) => (
<div key={option.value} className="Customized_QuickAdd">
<label>

View File

@ -229,8 +229,7 @@ const StoreRecipeform = ({ formType }) => {
let RecipeProdName = `${RecipeproductFilter?.ProdName} (${RecipeproductFilter?.Size} ${RecipeproductFilter?.UomName})`;
let existsData = Tabledata?.filter(
(item) =>
item.ProdId === formData.ProdId
(item) => item.ProdId === formData.ProdId
);
if (existsData?.length == 0) {
@ -337,12 +336,12 @@ const StoreRecipeform = ({ formType }) => {
Postdata['RecProdId'] = state.RecProdId;
Postdata['RecipeName'] = ProdName;
// Postdata["RecipeQty"] = 1;
(Postdata['ProductDetails'] = Tabledata.map((item) => ({
((Postdata['ProductDetails'] = Tabledata.map((item) => ({
ProdId: item?.ProdId,
ProdName: item?.ProdName,
// "ProdQty": item?.ProdQty
}))),
(Postdata['CreatedBy'] = UserId);
(Postdata['CreatedBy'] = UserId));
let response = {};
if (formType === 'add') {
response = await dispatch(StoreProductCreationpost(Postdata)).unwrap();
@ -475,34 +474,6 @@ const StoreRecipeform = ({ formType }) => {
/>
</Form.Item>
{/* <Form.Item
name="ProdQty"
rules={[
{
required: true,
message: "Please Enter Quantity"
},
{
validator: async (_, value) => {
await validateSafeInput(value);
if (parseInt(value) === 0 && value.length <= 10) {
return Promise.reject("Please enter valid Qty");
}
// if (value.length > 10) {
// return Promise.reject("Quantity cannot exceed 10 characters.");
// }
// return Promise.resolve();
},
},
]}
>
<InputField
label={<label class="required">Prod Qty</label>}
autocomplete="off"
isOnChange={!editDataval ? true : false}
/>
</Form.Item> */}
<div style={{ fontSize: '25px' }}>
<Tooltip title="Add Products" placement="top">
<PlusCircleOutlined
@ -517,7 +488,11 @@ const StoreRecipeform = ({ formType }) => {
<div
className="Quotation-tables"
style={{ maxwidth: '500px', overflowX: 'scroll' }}
style={{
maxwidth: '500px',
overflowX: 'auto',
scrollbarWidth: 'thin',
}}
>
<Table
bordered

View File

@ -70,7 +70,7 @@ const StoreKitchenform = ({ formType }) => {
const [index, setindex] = useState();
const tableRef = useRef(null);
const formData = formRef?.current?.getFieldsValue();
console.log(editingKey, "editingKey")
console.log(editingKey, 'editingKey');
const remainingQty = ReqQty - totalEnteredQty;
const isQtyMatched = totalEnteredQty === ReqQty;
@ -105,9 +105,9 @@ const StoreKitchenform = ({ formType }) => {
}, []);
useEffect(() => {
let totalqty = getTotalEnteredQty()
setTotalEnteredQty(totalqty)
}, [ProductVarientdata])
let totalqty = getTotalEnteredQty();
setTotalEnteredQty(totalqty);
}, [ProductVarientdata]);
useEffect(() => {
const handleClickOutside = (event) => {
@ -264,7 +264,7 @@ const StoreKitchenform = ({ formType }) => {
onChange={(e) => handleMrpchange(e, record, index)}
onBlur={(e) => handleMrpchange(e, record, index)}
inputMode="decimal"
placeholder='Enter Qty'
placeholder="Enter Qty"
onInput={(e) => {
let cleanedValue = e.target.value.replace(/[^0-9.]/g, ''); // Remove invalid characters
const parts = cleanedValue.split('.');
@ -411,7 +411,7 @@ const StoreKitchenform = ({ formType }) => {
if (Reqqty < 1) {
setMessageType('error');
setMessageData('Please Enter Qty');
return
return;
}
setReqQty(Reqqty);
@ -442,7 +442,7 @@ const StoreKitchenform = ({ formType }) => {
return {
...variant,
StockDetails: updatedStockDetails,
StockAvailable: record?.StockAvailable
StockAvailable: record?.StockAvailable,
};
});
@ -463,7 +463,7 @@ const StoreKitchenform = ({ formType }) => {
}, [ProductVarientdata]);
const validateConsumption = (data, consumedStock) => {
console.log(data, "datadata", consumedStock);
console.log(data, 'datadata', consumedStock);
const errors = [];
@ -478,7 +478,7 @@ const StoreKitchenform = ({ formType }) => {
prodName: product.ProdName || 'Unknown Product',
message: 'No stock consumption recorded for this product',
expected: product.ProdQty,
actual: 0
actual: 0,
});
return;
}
@ -491,39 +491,42 @@ const StoreKitchenform = ({ formType }) => {
if (totalConsumedQty !== product?.ProdQty) {
errors.push({
prodId: product.ProdId,
prodName: product.ProdName || consumedProduct.ProdName || 'Unknown Product',
message: totalConsumedQty < product.ProdQty
? 'Insufficient stock consumed'
: 'Excess stock consumed',
prodName:
product.ProdName || consumedProduct.ProdName || 'Unknown Product',
message:
totalConsumedQty < product.ProdQty
? 'Insufficient stock consumed'
: 'Excess stock consumed',
expected: product.ProdQty,
actual: totalConsumedQty,
difference: Math.abs(totalConsumedQty - product.ProdQty)
difference: Math.abs(totalConsumedQty - product.ProdQty),
});
}
});
return {
isValid: errors.length === 0,
errors
errors,
};
};
const onFinish = async () => {
if (Tabledata?.length === 0) {
setMessageType('error');
setMessageData('No products found');
return
return;
}
const validation = validateConsumption(Tabledata, UpdatedStockData);
console.log(validation, "validation")
console.log(validation, 'validation');
if (!validation.isValid) {
const error = validation.errors?.[0];
console.error('Validation failed:');
setMessageType('error');
setMessageData(`${error?.prodName}: ${error?.message}. Expected: ${error?.expected}, Actual: ${error?.actual}`);
return
setMessageData(
`${error?.prodName}: ${error?.message}. Expected: ${error?.expected}, Actual: ${error?.actual}`
);
return;
}
const formData = formRef?.current?.getFieldsValue();
@ -583,12 +586,17 @@ const StoreKitchenform = ({ formType }) => {
key: String(variantIndex),
// label: `${variant?.ProdVariantName} - <span> Total Available Qty </span>: ${variant?.OverAllQty ?? 0} `,
label: (
<span style={{ display: 'flex', gap: '10px', alignItems: 'center', justifyContent: 'space-between' }}>
<span
style={{
display: 'flex',
gap: '10px',
alignItems: 'center',
justifyContent: 'space-between',
}}
>
<span>{variant?.ProdVariantName}</span>
<span style={{ fontWeight: 500, color: "#d46b08" }}>
Total Available Qty :
{" "}
{variant?.OverAllQty ?? 0}
<span style={{ fontWeight: 500, color: '#d46b08' }}>
Total Available Qty : {variant?.OverAllQty ?? 0}
</span>
</span>
),
@ -614,7 +622,10 @@ const StoreKitchenform = ({ formType }) => {
<p>
<strong>Balance Qty : </strong> {stock?.BalanceQty}
</p>
<div style={{ display: 'flex', alignItems: 'center', gap: '10px' }} className='stockqtyDiv'>
<div
style={{ display: 'flex', alignItems: 'center', gap: '10px' }}
className="stockqtyDiv"
>
<strong>Stock Qty : </strong>{' '}
<Input
type="number"
@ -645,7 +656,7 @@ const StoreKitchenform = ({ formType }) => {
value,
balanceQty
) => {
const numericValue = parseInt((value || 0), 10);
const numericValue = parseInt(value || 0, 10);
if (isNaN(numericValue) || numericValue < 0) return;
@ -661,9 +672,7 @@ const StoreKitchenform = ({ formType }) => {
}
if (newTotal > ReqQty) {
message.error(
`Total quantity cannot exceed required qty (${ReqQty}).`
);
message.error(`Total quantity cannot exceed required qty (${ReqQty}).`);
// Reset all TakenQty to 0
const resetData = ProductVarientdata.map((variant) => ({
@ -673,11 +682,11 @@ const StoreKitchenform = ({ formType }) => {
return {
...stock,
TakenQty: 0,
}
};
} else {
return {
...stock
}
...stock,
};
}
}),
}));
@ -844,7 +853,7 @@ const StoreKitchenform = ({ formType }) => {
const handleMrpchange = (e, record, index) => {
const value = e?.target?.value;
if (value === "") {
if (value === '') {
return;
}
@ -856,7 +865,7 @@ const StoreKitchenform = ({ formType }) => {
const ProdQty = parseFloat(value);
const totalAvailableQty = record?.ProdVariantDetails?.[0]?.OverAllQty || 0;
const valid = ((ProdQty > totalAvailableQty) && record?.StockAvailable === 'Y')
const valid = ProdQty > totalAvailableQty && record?.StockAvailable === 'Y';
const newData = Tabledata?.map((item, index1) => {
if (index1 === index) {
return {
@ -875,7 +884,7 @@ const StoreKitchenform = ({ formType }) => {
formRef.current?.setFieldsValue({
[`ProdQty${index}`]: valid ? 0 : ProdQty,
})
});
if (valid) {
setMessageType('error');
@ -887,7 +896,7 @@ const StoreKitchenform = ({ formType }) => {
// Build updatedStockItems array
const updatedStockItems = newData
.map(item => {
.map((item) => {
if (item?.StockAvailable !== 'N') return null;
if (item?.ProdQty === 0 || item?.ProdQty === '') return null;
@ -912,14 +921,12 @@ const StoreKitchenform = ({ formType }) => {
})
.filter(Boolean);
setUpdatedStockData((prev) => {
const prevData = Array.isArray(prev) ? prev : [];
const filteredData = prevData.filter(
item =>
item?.StockAvailable !== 'N' &&
item?.ProdId !== record?.ProdId
(item) =>
item?.StockAvailable !== 'N' && item?.ProdId !== record?.ProdId
);
return [...filteredData, ...updatedStockItems];
@ -994,24 +1001,6 @@ const StoreKitchenform = ({ formType }) => {
/>
</Form.Item>
{/* <Form.Item
name="SellingPrice"
rules={[
{
required: true,
pattern: /^(?!\s*$).+/,
message: `Please Enter SellingPrice`,
},
]}
>
<InputField
label={<label className="required">Selling Price</label>}
autoComplete="off"
disabled={editstate ? true : false}
isOnChange={editstate ? true : false}
/>
</Form.Item> */}
<Form.Item
name="EmpID"
rules={[
@ -1036,11 +1025,17 @@ const StoreKitchenform = ({ formType }) => {
/>
</Form.Item>
</div>
<div style={{ fontFamily: 'Poppins', fontStyle: 'italic' }}>Note : Click on the quantity to edit.</div>
<div style={{ fontFamily: 'Poppins', fontStyle: 'italic' }}>
Note : Click on the quantity to edit.
</div>
<div
ref={tableRef}
className="Quotation-tables StoreKitchen-tables"
style={{ maxwidth: '500px', overflowX: 'scroll' }}
style={{
maxwidth: '500px',
overflowX: 'auto',
scrollbarWidth: 'thin',
}}
>
<Table
bordered
@ -1078,7 +1073,7 @@ const StoreKitchenform = ({ formType }) => {
width={1000}
handleSubmit={() => StockSelected()}
footer={false}
className='combo-variant-modal'
className="combo-variant-modal"
children={
<>
<div className="product-variants-container">
@ -1116,8 +1111,9 @@ const StoreKitchenform = ({ formType }) => {
<span>
<Buttons
buttonText={
isQtyMatched || ProductVarientdata?.[0]?.StockDetails?.[0]?.StockAvailable ===
'N'
isQtyMatched ||
ProductVarientdata?.[0]?.StockDetails?.[0]
?.StockAvailable === 'N'
? 'SUBMIT'
: `ALLOCATE ${remainingQty} MORE`
}
@ -1125,8 +1121,8 @@ const StoreKitchenform = ({ formType }) => {
icon={<ArrowRightOutlined />}
handleSubmit={StockSelected}
disabled={
ProductVarientdata?.[0]?.StockAvailable ===
'Y' && !isQtyMatched
ProductVarientdata?.[0]?.StockAvailable === 'Y' &&
!isQtyMatched
}
/>
</span>

View File

@ -444,27 +444,6 @@
pointer-events: none;
}
.MultiSearchIconDiv {
background-color: #1292ee;
color: #fff !important;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
width: 35px !important;
height: 33px;
padding: 6px;
svg {
font-size: 22px;
width: 35px !important;
height: 35px;
display: flex;
}
}
.salesUserProfile {
display: flex;
align-items: center;
@ -523,4 +502,23 @@
width: 20px;
}
}
.MultiSearchIconDiv {
color: #1292ee !important;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
width: 27px !important;
height: 27px;
position: absolute;
z-index: 10;
left: 6px;
}
.custom-input {
padding: 10px 30px 10px 30px;
}
.search-icon {
top: 53%;
}
}

View File

@ -32,6 +32,36 @@
display: flex;
height: 32px;
border-radius: 50px;
position: relative;
.custom-input {
padding: 10px 35px 10px 40px;
}
.search-icon {
top: 50%;
}
.search-input {
bottom: 3px;
}
.MultiSearchIconDiv2 {
color: #1292ee !important;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
width: 20px !important;
height: 20px;
position: absolute;
left: 5px;
top: 5px;
svg {
font-size: 22px;
width: 32px !important;
height: 32px;
display: flex;
}
}
}
.favItem-SearchBar {
@ -374,24 +404,3 @@
left: 11px;
top: 10px;
}
.MultiSearchIconDiv2 {
background-color: #1292ee;
color: #ffffff !important;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
width: 32px !important;
height: 32px;
padding: 4px;
svg {
font-size: 22px;
width: 32px !important;
height: 32px;
display: flex;
}
}

View File

@ -84,6 +84,12 @@
.BsnavbarSearchMain {
width: 25vw;
position: relative;
.MultiSearchIconDiv3 {
position: absolute;
right: 10px;
top: 5px;
z-index: 100;
}
.BarCodeScanMaster {
position: absolute;
right: 0;
@ -117,7 +123,7 @@
.ant-input {
margin-top: 0 !important;
padding-top: 4px !important;
padding-top: 3px !important;
}
}
}
@ -663,12 +669,6 @@
}
}
// .BSCategory2New {
// // position: absolute;
// // bottom: -50%;
// // height: 0 !important;
// }
.ant-tooltip {
display: none !important;
}
@ -720,15 +720,14 @@
}
.MultiSearchIconDiv3 {
background-color: #ffffff;
color: #1292ee !important;
border-radius: 4px;
// background-color: #ffffff;
color: #aaaaaa !important;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
width: 32px !important;
height: 32px;
width: 30px !important;
height: 30px;
padding: 4px;
svg {

View File

@ -10,7 +10,8 @@
.Re-Print-table {
height: 300px;
overflow: scroll;
overflow: auto;
scrollbar-width: thin;
}
.Re-Print-table .ant-pagination {
@ -66,9 +67,7 @@
}
.Re-Print-table .ant-table-wrapper .ant-table-thead > tr > th {
// color: black !important;
font-weight: 600 !important;
// font-size: 14px;
}
.Re-Print-table .ant-table-row > td {
@ -77,102 +76,6 @@
font-size: 14px;
}
// .BSReprint tbody td {
// color: black;
// font-weight: 600;
// font-size: 16px;
// }
// .BSReprint thead {
// // position: -webkit-sticky;
// position: sticky;
// top: 0;
// background-color: rgb(234, 249, 255); /* Set a background color if needed */
// z-index: 1;
// }
// .BSReprint{
// width: 100vw;
// }
// .Re-print-bold{
// font-weight: 600;
// font-family: initial;
// letter-spacing: 1px;
// }
// .Re-print-bold{
// font-weight: 600;
// font-family: initial;
// letter-spacing: 1px;
// color: #000;
// }
// .Re-print-top {
// display: flex;
// flex-direction: column;
// align-items: center;
// width: 100%;
// }
// .Re-print-Table {
// width: 100%;
// }
// .Re-print-Table ,.Re-print-th ,.Re-print-td {
// border: 1px solid black;
// border-collapse: collapse;
// font-family: initial;
// }
// .Re-print-Table1
// {
// border-collapse: collapse;
// border-top: 1px solid #BAD4F9;
// border-left:1px solid #BAD4F9;
// border-right:1px solid #BAD4F9;
//}
// .Re-print-td1{
// border: 1px solid black;
// border-collapse: collapse;
// font-family: initial;
// }
// .Re-print-thtd1
// {
// padding: 10px 0px;
// }
// .Re-print-th1
// {
// background-color: #BAD4F9;
// z-index: 1;
// }
// .Re-print-body-Tr {
// text-align: center;
// font-family: initial;
// }
// .Re-print-title {
// font-size: 20px;
// font-weight: 600;
// font-family: initial;
// }
// .Re-print-Add {
// width: 100px;
// font-family: initial;
// }
// .Re-print-GST {
// font-family: initial;
// }
// .Re-print-top2 {
// display: flex;
// width: 100%;
// font-family: initial;
// justify-content: space-between;
// }
.bsreprintmodaltable {
width: 100%;
height: 70vh;
@ -269,15 +172,12 @@
.loader {
border: 4px solid #f3f3f3;
/* Light grey */
border-top: 4px solid #3498db;
/* Blue */
border-radius: 50%;
width: 32px;
height: 32px;
animation: spin 1s linear infinite;
margin: auto;
/* center if inside flex/centered container */
}
@keyframes spin {

View File

@ -246,6 +246,9 @@ body {
color: #fff !important;
filter: invert(2);
}
.KeyshortCutNav3 > div:nth-child(1) {
padding: 3.5px 10px !important;
}
@media (max-width: 500px) {
padding: 0.55rem 0.5rem !important;
@ -481,3 +484,9 @@ body {
font-family: "Poppins" !important;
}
}
.navb3SalesCounticons {
display: flex;
align-items: center;
gap: 8px;
}

View File

@ -1575,7 +1575,7 @@
position: relative;
height: max-content;
max-height: 14vh;
overflow: scroll;
overflow: auto;
border: 1px solid #eeeeee;
scrollbar-width: thin;
}
@ -1772,7 +1772,7 @@
.creditListCardMain {
min-width: 220px;
height: 25.5vh;
height: 27.5vh;
flex: 0.7;
overflow: scroll;
border-radius: 8px;

View File

@ -1651,3 +1651,40 @@ table {
background-color: #2c88ee !important;
}
}
.addFiledInProRec {
padding: 12px;
height: max-content;
max-height: 70vh;
overflow: auto;
scrollbar-width: thin;
background-color: #f4f4f4;
border-radius: 8px;
.Customized_QuickAdd {
margin-bottom: 6px;
font-family: "Poppins";
font-weight: 400;
label {
display: flex;
align-items: center;
}
}
input {
width: 18px !important;
height: 20px !important;
}
}
.Shot-KeyBoard {
.KBwithKey,
.ant-typography {
font-family: "Poppins" !important ;
font-weight: 400 !important;
strong {
font-weight: 500 !important;
}
}
.ant-list-item {
padding: 10px 0 !important;
}
}

View File

@ -31,3 +31,40 @@
flex-direction: row;
column-gap: 0.5rem;
}
.defaultandCustomisedTheme {
display: flex;
align-items: center;
gap: 6px;
font-family: "Poppins";
margin: 0 0 10px 0;
background-color: #e1e1e1;
padding: 4px 4px;
width: max-content;
border-radius: 4px;
}
.defaultandCustomisedTheme > div {
font-weight: 500;
font-size: 20px;
padding: 2px 8px;
cursor: pointer;
transition: background-color 0.3s ease;
border: none;
display: flex;
align-items: center;
gap: 4px;
}
.defaultandCustomisedTheme > div:hover {
background-color: #f2f2f2;
}
.defaultandCustomisedTheme > div.selected {
background-color: #ffffff;
font-weight: 500;
border-radius: 4px;
svg {
color: #008b00 !important;
}
}

View File

@ -7,7 +7,6 @@
.OBamountOwner {
display: flex;
// align-items: center;
align-items: flex-start;
height: max-content;
gap: 10px;
@ -22,9 +21,6 @@
.amountreceivedDate {
height: 50px !important;
}
// .openingbalanceInput2 {
// height: 70px !important;
// }
.openingbalanceInput {
width: 100%;