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} )} -