navbar code optimization

This commit is contained in:
mohan 2026-03-10 15:16:13 +05:30
parent 5b2367fe73
commit a9092e27bb
10 changed files with 55 additions and 89 deletions

View File

@ -0,0 +1,30 @@
import { useState } from 'react';
export const useNavbarCommon = () => {
const [isFullscreen, setIsFullscreen] = useState(false);
const handleFullscreen = async () => {
if (!isFullscreen) {
try {
await document.documentElement.requestFullscreen();
setIsFullscreen(true);
} catch (error) {
console.error('Fullscreen error:', error);
}
} else {
try {
if (document.fullscreenElement) {
await document.exitFullscreen();
}
setIsFullscreen(false);
} catch (error) {
console.error('Exit fullscreen error:', error);
}
}
};
return {
handleFullscreen,
isFullscreen,
};
};

View File

@ -1,4 +1,4 @@
import React, { useCallback, useEffect, useRef, useState, lazy } from 'react'; import { useCallback, useEffect, useRef, useState, lazy } from 'react';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { Badge, Popconfirm, Popover, Tooltip } from 'antd'; import { Badge, Popconfirm, Popover, Tooltip } from 'antd';
@ -8,7 +8,6 @@ import {
PreferenceData, PreferenceData,
GlobalCombosearch, GlobalCombosearch,
getPreferenceData, getPreferenceData,
GlobalOrderCardDetails,
changeEstimateBooking, changeEstimateBooking,
GlobalOrderStatus, GlobalOrderStatus,
GlobalEstimateBooking, GlobalEstimateBooking,
@ -158,11 +157,14 @@ import { isMobile } from 'react-device-detect';
import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx'; import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx';
import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar1.scss'; import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar1.scss';
import { RiFullscreenExitFill, RiFullscreenFill } from 'react-icons/ri'; import { RiFullscreenExitFill, RiFullscreenFill } from 'react-icons/ri';
import { useNavbarCommon } from './BSNavBarCommon.js';
const subDirectory = import.meta.env.ENV_BASE_URL; const subDirectory = import.meta.env.ENV_BASE_URL;
const commonUrl = import.meta.env.ENV_COMMON_BASE_URL; const commonUrl = import.meta.env.ENV_COMMON_BASE_URL;
const BSNavbar1 = (props) => { const BSNavbar1 = (props) => {
console.log(props?.BookingNavbar,"propspropspropspropspropspropspropsprops")
const dispatch = useDispatch(); const dispatch = useDispatch();
const navigate = useNavigate(); const navigate = useNavigate();
const [Navmenu, setNavmenu] = useState(false); const [Navmenu, setNavmenu] = useState(false);
@ -264,30 +266,14 @@ const BSNavbar1 = (props) => {
setAccIsOpen(false); setAccIsOpen(false);
} }
}; };
const [isFullscreen, setIsFullscreen] = useState(false);
const {
handleFullscreen,
isFullscreen,
} = useNavbarCommon();
const handleFullscreen = useCallback(async () => {
if (!isFullscreen) {
try {
await document.documentElement.requestFullscreen();
setIsFullscreen(true);
} catch (error) {
console.error('Fullscreen error:', error);
}
} else {
try {
if (document.fullscreenElement) {
await document.exitFullscreen();
}
setIsFullscreen(false);
} catch (error) {
console.error('Exit fullscreen error:', error);
}
}
}, [isFullscreen]);
useEffect(() => { useEffect(() => {
if (!FeatureAddonData?.FeatureDtls?.length) return; if (!FeatureAddonData?.FeatureDtls?.length) return;

View File

@ -130,6 +130,7 @@ const BSCustomerSelect = lazy(
); );
import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar2.scss'; import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar2.scss';
import { RiFullscreenExitFill, RiFullscreenFill } from 'react-icons/ri'; import { RiFullscreenExitFill, RiFullscreenFill } from 'react-icons/ri';
import { useNavbarCommon } from './BSNavBarCommon.js';
const subDirectory = import.meta.env.ENV_BASE_URL; const subDirectory = import.meta.env.ENV_BASE_URL;
const commonUrl = import.meta.env.ENV_COMMON_BASE_URL; const commonUrl = import.meta.env.ENV_COMMON_BASE_URL;
@ -238,27 +239,12 @@ const BSNavbar2 = () => {
(item) => (item) =>
item.SettingIdName === 'VerifyProduct' && item?.SettingValue === 'Y' item.SettingIdName === 'VerifyProduct' && item?.SettingValue === 'Y'
); );
const {
handleFullscreen,
isFullscreen,
} = useNavbarCommon();
const [isFullscreen, setIsFullscreen] = useState(false);
const handleFullscreen = useCallback(async () => {
if (!isFullscreen) {
try {
await document.documentElement.requestFullscreen();
setIsFullscreen(true);
} catch (error) {
console.error('Fullscreen error:', error);
}
} else {
try {
if (document.fullscreenElement) {
await document.exitFullscreen();
}
setIsFullscreen(false);
} catch (error) {
console.error('Exit fullscreen error:', error);
}
}
}, [isFullscreen]);
useEffect(() => { useEffect(() => {
if (!FeatureAddonData?.FeatureDtls?.length) return; if (!FeatureAddonData?.FeatureDtls?.length) return;

View File

@ -38,14 +38,7 @@ import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar3.scss';
// UI Imports // UI Imports
import { Badge, Popconfirm, Tooltip } from 'antd'; import { Badge, Popconfirm, Tooltip } from 'antd';
import { AiFillHome } from 'react-icons/ai'; import { AiFillHome } from 'react-icons/ai';
import { import { FaPlus, FaHandPaper, FaUserAlt, FaParking } from 'react-icons/fa';
FaPlus,
FaHandPaper,
FaHeart,
FaUserAlt,
FaPhoneAlt,
FaParking,
} from 'react-icons/fa';
import { CiMenuBurger } from 'react-icons/ci'; import { CiMenuBurger } from 'react-icons/ci';
import { IoCloseOutline } from 'react-icons/io5'; import { IoCloseOutline } from 'react-icons/io5';
import { import {
@ -105,6 +98,7 @@ import BSNavBarWeightScale from '../UtillComponents/BSNavBarWeightScale.jsx';
import { TbSettingsSearch } from 'react-icons/tb'; import { TbSettingsSearch } from 'react-icons/tb';
import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx'; import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx';
import MultipleSearch from '../UtillComponents/MultipleSearch.jsx'; import MultipleSearch from '../UtillComponents/MultipleSearch.jsx';
import { useNavbarCommon } from './BSNavBarCommon.js';
// Jsx Files // Jsx Files
const BSNavBarFavItems = lazy( const BSNavBarFavItems = lazy(
@ -180,7 +174,6 @@ const BSNavbar3 = ({ optionNames }) => {
const [quickAdd, setQuickAdd] = useState(false); const [quickAdd, setQuickAdd] = useState(false);
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
const [isFullscreen, setIsFullscreen] = useState(false);
const [multiple, setMultiple] = useState(false); const [multiple, setMultiple] = useState(false);
const GlobEstBooking = useSelector(GlobalEstimateBooking); const GlobEstBooking = useSelector(GlobalEstimateBooking);
const compBranchData = useSelector(GlobalCompBranchData); const compBranchData = useSelector(GlobalCompBranchData);
@ -408,25 +401,7 @@ const BSNavbar3 = ({ optionNames }) => {
const handleHomePageNavigate = () => navigate(`${subDirectory}app-page/home`); const handleHomePageNavigate = () => navigate(`${subDirectory}app-page/home`);
const handleMobileMenuToggle = () => setIsMobileMenuOpen((prev) => !prev); const handleMobileMenuToggle = () => setIsMobileMenuOpen((prev) => !prev);
const handleFullscreen = async () => { const { handleFullscreen, isFullscreen } = useNavbarCommon();
if (!isFullscreen) {
try {
await document.documentElement.requestFullscreen();
setIsFullscreen(true);
} catch (error) {
console.error('Fullscreen error:', error);
}
} else {
try {
if (document.fullscreenElement) {
await document.exitFullscreen();
}
setIsFullscreen(false);
} catch (error) {
console.error('Exit fullscreen error:', error);
}
}
};
const renderWithTooltip = (element, title, placement = 'bottom') => ( const renderWithTooltip = (element, title, placement = 'bottom') => (
<Tooltip title={title} placement={placement}> <Tooltip title={title} placement={placement}>

View File

@ -338,9 +338,8 @@ const BSLayout1 = () => {
style={{ height: containerHeight, overflow: 'hidden' }} style={{ height: containerHeight, overflow: 'hidden' }}
> >
<div className="BSLayout1-NavBar"> <div className="BSLayout1-NavBar">
{BookingNavbar == 'Navbar1' && <BSNavbar1 />} <BSNavbar1 BookingNavbar={BookingNavbar}/>
{BookingNavbar == 'Navbar2' && <BSNavbar2 />}
{BookingNavbar == 'Navbar3' && <BSNavbar3 />}
</div> </div>
<div <div
className={ className={

View File

@ -348,9 +348,7 @@ const BSLayout2 = () => {
style={{ height: containerHeight, overflow: 'hidden' }} style={{ height: containerHeight, overflow: 'hidden' }}
> >
<div className="BSLayout2-NavBar"> <div className="BSLayout2-NavBar">
{BookingNavbar == 'Navbar1' && <BSNavbar1 />} <BSNavbar1 BookingNavbar={BookingNavbar}/>
{BookingNavbar == 'Navbar2' && <BSNavbar2 />}
{BookingNavbar == 'Navbar3' && <BSNavbar3 />}
</div> </div>
<div <div

View File

@ -321,9 +321,7 @@ const BSLayout3 = () => {
style={{ height: containerHeight, overflow: 'hidden' }} style={{ height: containerHeight, overflow: 'hidden' }}
> >
<div className="BSLayout3-NavBar"> <div className="BSLayout3-NavBar">
{BookingNavbar == 'Navbar1' && <BSNavbar1 />} <BSNavbar1 BookingNavbar={BookingNavbar}/>
{BookingNavbar == 'Navbar2' && <BSNavbar2 />}
{BookingNavbar == 'Navbar3' && <BSNavbar3 />}
</div> </div>
<div <div
className={ className={

View File

@ -337,9 +337,7 @@ const BSLayout4 = () => {
style={{ height: containerHeight, overflow: 'hidden' }} style={{ height: containerHeight, overflow: 'hidden' }}
> >
<div className="Bslayout4_navbar"> <div className="Bslayout4_navbar">
{BookingNavbar == 'Navbar1' && <BSNavbar1 />} <BSNavbar1 BookingNavbar={BookingNavbar}/>
{BookingNavbar == 'Navbar2' && <BSNavbar2 />}
{BookingNavbar == 'Navbar3' && <BSNavbar3 />}
</div> </div>
{BookingNavbar != 'Navbar3' ? ( {BookingNavbar != 'Navbar3' ? (
<div className="Layout-bill-container" style={{ margin: '0' }}> <div className="Layout-bill-container" style={{ margin: '0' }}>

View File

@ -325,9 +325,7 @@ const BSLayout5 = () => {
style={{ height: containerHeight, overflow: 'hidden' }} style={{ height: containerHeight, overflow: 'hidden' }}
> >
<div className="BSLayout5-NavBar"> <div className="BSLayout5-NavBar">
{BSLayout5Data?.BookingNavbar?.[0] == 'Navbar1' && <BSNavbar1 />} <BSNavbar1 BookingNavbar={BookingNavbar}/>
{BSLayout5Data?.BookingNavbar?.[0] == 'Navbar2' && <BSNavbar2 />}
{BSLayout5Data?.BookingNavbar?.[0] == 'Navbar3' && <BSNavbar3 />}
</div> </div>
<div <div

View File

@ -336,9 +336,7 @@ const BSLayout6 = () => {
> >
<div className="BSLayout6-fullnav"> <div className="BSLayout6-fullnav">
<div className="BSLayout6-Navbar"> <div className="BSLayout6-Navbar">
{BookingNavbar == 'Navbar1' && <BSNavbar1 />} <BSNavbar1 BookingNavbar={BookingNavbar}/>
{BookingNavbar == 'Navbar2' && <BSNavbar2 />}
{BookingNavbar == 'Navbar3' && <BSNavbar3 />}
</div> </div>
{BookingNavbar != 'Navbar3' ? ( {BookingNavbar != 'Navbar3' ? (
<div className="Layout-bill-container"> <div className="Layout-bill-container">