fix order banner

This commit is contained in:
hamid zarghami
2025-11-09 11:08:15 +03:30
parent 43d60ef163
commit f8f5e5bf0f
2 changed files with 23 additions and 19 deletions
+10 -9
View File
@@ -13,11 +13,8 @@ const Banners3: FC = () => {
const { desktopBanners, mobileBanners } = useMemo(() => {
const allBanners = data?.results?.banners ?? []
const sortByOrder = (items: IBanner[]) =>
[...items].sort((firstBanner, secondBanner) => firstBanner.order - secondBanner.order)
const groupByDisplayLocation = (displayLocation: IBanner['displayLocation']) =>
sortByOrder(allBanners.filter((banner) => banner.displayLocation === displayLocation))
allBanners.filter((banner) => banner.displayLocation === displayLocation)
return {
desktopBanners: groupByDisplayLocation('desktop'),
@@ -26,9 +23,9 @@ const Banners3: FC = () => {
}, [data?.results?.banners])
const renderLayout = (banners: IBanner[]) => {
if (banners.length < 3) return null
const [firstBanner, secondBanner, thirdBanner] = banners
const firstBanner = banners.find((banner) => banner.order === 1)
const secondBanner = banners.find((banner) => banner.order === 2)
const thirdBanner = banners.find((banner) => banner.order === 3)
if (!firstBanner?.imageUrl || !secondBanner?.imageUrl || !thirdBanner?.imageUrl) return null
@@ -75,8 +72,12 @@ const Banners3: FC = () => {
return (
<>
<div className='hidden lg:block'>{renderLayout(desktopBanners)}</div>
<div className='lg:hidden'>{renderLayout(mobileBanners)}</div>
{desktopBanners.length > 0 && (
<div className='hidden lg:block'>{renderLayout(desktopBanners)}</div>
)}
{mobileBanners.length > 0 && (
<div className='lg:hidden'>{renderLayout(mobileBanners)}</div>
)}
</>
)
}
+13 -10
View File
@@ -12,11 +12,8 @@ const Banners4: FC = () => {
const { desktopBanners, mobileBanners } = useMemo(() => {
const allBanners = data?.results?.banners ?? []
const sortByOrder = (items: IBanner[]) =>
[...items].sort((firstBanner, secondBanner) => firstBanner.order - secondBanner.order)
const groupByDisplayLocation = (displayLocation: IBanner['displayLocation']) =>
sortByOrder(allBanners.filter((banner) => banner.displayLocation === displayLocation))
allBanners.filter((banner) => banner.displayLocation === displayLocation)
return {
desktopBanners: groupByDisplayLocation('desktop'),
@@ -25,17 +22,19 @@ const Banners4: FC = () => {
}, [data?.results?.banners])
const renderLayout = (banners: IBanner[]) => {
if (banners.length < 4) return null
const [firstBanner, secondBanner, thirdBanner, fourthBanner] = banners
const firstBanner = banners.find((banner) => banner.order === 4)
const secondBanner = banners.find((banner) => banner.order === 5)
const thirdBanner = banners.find((banner) => banner.order === 6)
const fourthBanner = banners.find((banner) => banner.order === 7)
if (
!firstBanner?.imageUrl ||
!secondBanner?.imageUrl ||
!thirdBanner?.imageUrl ||
!fourthBanner?.imageUrl
)
) {
return null
}
return (
<div className='flex lg:flex-row flex-col gap-6'>
@@ -93,8 +92,12 @@ const Banners4: FC = () => {
return (
<>
<div className='hidden lg:block'>{renderLayout(desktopBanners)}</div>
<div className='lg:hidden'>{renderLayout(mobileBanners)}</div>
{desktopBanners.length > 0 && (
<div className='hidden lg:block'>{renderLayout(desktopBanners)}</div>
)}
{mobileBanners.length > 0 && (
<div className='lg:hidden'>{renderLayout(mobileBanners)}</div>
)}
</>
)
}