From d3d9167de2a3368f58c56e77ed0330ed644a0721 Mon Sep 17 00:00:00 2001 From: Malini Date: Thu, 27 Nov 2025 13:28:30 +0530 Subject: [PATCH] added pdf link for products --- .../Admin/configuration/CompanyProfile.jsx | 52 +++++++- .../configuration/EditCompanyProfile.jsx | 119 +++++++++++++----- ipi-survey-platform/src/pages/Login/Login.jsx | 20 ++- 3 files changed, 155 insertions(+), 36 deletions(-) diff --git a/ipi-survey-platform/src/pages/Admin/configuration/CompanyProfile.jsx b/ipi-survey-platform/src/pages/Admin/configuration/CompanyProfile.jsx index 7f524db..5fdccf6 100644 --- a/ipi-survey-platform/src/pages/Admin/configuration/CompanyProfile.jsx +++ b/ipi-survey-platform/src/pages/Admin/configuration/CompanyProfile.jsx @@ -524,6 +524,9 @@ const CompanyProfile = () => { const [currentUser, setCurrentUser] = React.useState(null); const [products, setProducts] = React.useState([]); const [availableProducts, setAvailableProducts] = React.useState([]); + const [visibleProductCount, setVisibleProductCount] = React.useState(14); + const [isLoadingMore, setIsLoadingMore] = React.useState(false); + const productListRef = React.useRef(null); const [selectedProducts, setSelectedProducts] = React.useState([]); const [productSearchTerm, setProductSearchTerm] = React.useState(''); const [isLoadingProducts, setIsLoadingProducts] = React.useState(false); @@ -547,6 +550,30 @@ const CompanyProfile = () => { const filteredAvailableProducts = availableProducts.filter( (product) => !selectedProducts.some((sp) => sp.id === product.id) ); + + // Reset visible count when products or search term changes + React.useEffect(() => { + setVisibleProductCount(14); + }, [availableProducts.length, productSearchTerm]); + + // Handle scroll for infinite loading + const handleScroll = React.useCallback((e) => { + if (isLoadingMore || visibleProductCount >= availableProducts.length) return; + + const list = e.target; + const { scrollTop, scrollHeight, clientHeight } = list; + const isNearBottom = scrollTop + clientHeight >= scrollHeight - 100; // 100px from bottom + + if (isNearBottom) { + setIsLoadingMore(true); + // Simulate loading delay for better UX + setTimeout(() => { + setVisibleProductCount(prev => Math.min(prev + 10, availableProducts.length)); + setIsLoadingMore(false); + }, 300); + } + }, [isLoadingMore, visibleProductCount, availableProducts.length]); + // Load current user from session storage React.useEffect(() => { try { @@ -1213,7 +1240,17 @@ const CompanyProfile = () => { {productError} )} -

Products *

+
+

Products *

+ + Please click here to view the list of HS codes + +
{/* Available Products Panel */}
@@ -1241,8 +1278,12 @@ const CompanyProfile = () => {
) : availableProducts.length > 0 ? ( -