-
-
+
))}
- {renderBanners('products')} {/* it must be section products */}
+ {renderBanners('first')} {/* it must be section products */}
Extension Materials
@@ -133,7 +136,7 @@ const LandingAcitivity = ({
View More
- {renderBanners('services')} {/* it must be section services */}
+ {renderBanners('second')} {/* it must be section services */}
Latest Blog
@@ -156,7 +159,7 @@ const LandingAcitivity = ({
View More
- {renderBanners('about')} {/* it must be section about */}
+ {renderBanners('third')} {/* it must be section about */}
Our Partners
diff --git a/src/modules/admin/BannerActivity/index.tsx b/src/modules/admin/BannerActivity/index.tsx
index 3dfaba8..7c573f2 100644
--- a/src/modules/admin/BannerActivity/index.tsx
+++ b/src/modules/admin/BannerActivity/index.tsx
@@ -70,7 +70,7 @@ const BannerActivity: React.FC = () => {
// Filter banners based on search input
const filteredBanners = React.useMemo(() => {
return banners.filter(banner =>
- banner.title.toLowerCase().includes(filterValue.toLowerCase()),
+ banner.title?.toLowerCase().includes(filterValue.toLowerCase()),
);
}, [banners, filterValue]);
diff --git a/src/modules/admin/_Partials/ManageBanners/AddBanner/index.tsx b/src/modules/admin/_Partials/ManageBanners/AddBanner/index.tsx
index dea718d..045b503 100644
--- a/src/modules/admin/_Partials/ManageBanners/AddBanner/index.tsx
+++ b/src/modules/admin/_Partials/ManageBanners/AddBanner/index.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable @next/next/no-img-element */
import React, { useState } from 'react';
import {
Dialog,
@@ -11,38 +12,43 @@ import {
MenuItem,
FormControl,
InputLabel,
- Alert
+ Alert,
} from '@mui/material';
import { CloudUpload, Close } from '@mui/icons-material';
import { useDropzone } from 'react-dropzone';
import { Banner } from 'types/types';
+import { useRouter } from 'next/router';
interface AddBannerProps {
onAdd: (banner: Banner) => void;
children: React.ReactNode;
+ allowedTypes?: string[];
}
interface FormData {
- title: string;
- url: string;
section: string;
path: string;
image: File | null;
}
const INITIAL_FORM_STATE: FormData = {
- title: '',
- url: '',
section: '',
path: '',
image: null,
};
-const sections = ['products', 'services', 'about'];
+const sections = [1, 2, 3];
-export default function AddBanner({ onAdd, children }: AddBannerProps) {
+export default function AddBanner({
+ onAdd,
+ children,
+ allowedTypes = ['image/png', 'image/jpeg', 'image/gif'],
+}: AddBannerProps) {
+ const router = useRouter();
const [open, setOpen] = useState(false);
- const [formData, setFormData] = useState(INITIAL_FORM_STATE);
+ const [formData, setFormData] = useState(
+ INITIAL_FORM_STATE,
+ );
const [isSubmitting, setIsSubmitting] = useState(false);
const [previewUrl, setPreviewUrl] = useState('');
const [error, setError] = useState('');
@@ -71,14 +77,13 @@ export default function AddBanner({ onAdd, children }: AddBannerProps) {
return;
}
- setFormData((prev) => ({ ...prev, image: file }));
+ setFormData(prev => ({ ...prev, image: file }));
setPreviewUrl(URL.createObjectURL(file));
setError('');
};
const { getRootProps, getInputProps } = useDropzone({
onDrop,
- accept: 'image/*' as any,
maxSize: 100 * 1024 * 1024, //100MB
});
@@ -88,9 +93,11 @@ export default function AddBanner({ onAdd, children }: AddBannerProps) {
setError('');
try {
- const { title, url, section, path, image } = formData;
- if (!title.trim() || !url.trim() || !section.trim() || !path.trim() || !image) {
- throw new Error('Please fill in all required fields completely');
+ const { section, path, image } = formData;
+ if (!section || !image || !path.trim()) {
+ throw new Error(
+ 'Please fill in all required fields completely',
+ );
}
const submitFormData = new FormData();
@@ -107,14 +114,19 @@ export default function AddBanner({ onAdd, children }: AddBannerProps) {
if (!response.ok) {
const errorData = await response.json();
- throw new Error(errorData.message || 'Failed to create banner');
+ throw new Error(
+ errorData.message || 'Failed to create banner',
+ );
}
const newBanner = await response.json();
- onAdd(newBanner);
+ // onAdd(newBanner);
handleClose();
+ router.reload();
} catch (err) {
- setError(err instanceof Error ? err.message : 'An error occurred');
+ setError(
+ err instanceof Error ? err.message : 'An error occurred',
+ );
} finally {
setIsSubmitting(false);
}
@@ -143,43 +155,23 @@ export default function AddBanner({ onAdd, children }: AddBannerProps) {
) : (
-
+
Drag and Drop Banner Image
@@ -276,7 +282,7 @@ export default function AddBanner({ onAdd, children }: AddBannerProps) {