UNPKG

user-mapping-package

Version:

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).

71 lines (64 loc) 2.44 kB
import { useState, useEffect } from 'react'; import { List, Button, LoadPanel } from 'devextreme-react'; import "devextreme/dist/css/dx.light.css"; const MappedUserList = ({ mappedUsers = [], setMappedUsers, isFetching }) => { const [selectedMappedUsers, setSelectedMappedUsers] = useState([]); const [isSelectingAll, setIsSelectingAll] = useState(false); useEffect(() => { setSelectedMappedUsers([]); }, [mappedUsers]); const handleSelectionChange = (e) => { const selectedKeys = e.component.option('selectedItemKeys'); if (selectedKeys.length === mappedUsers.length && selectedKeys.length > 0) { setIsSelectingAll(true); setTimeout(() => setIsSelectingAll(false), 500); } setSelectedMappedUsers(selectedKeys); }; const handleItemDeleting = (e) => { setMappedUsers(mappedUsers.filter(user => user.Id !== e.itemData.Id)); }; const handleRemoveSelected = () => { console.log("Before removing - Selected Mapped Users:", selectedMappedUsers); const newMappedUsers = mappedUsers.filter(user => !selectedMappedUsers.includes(user.Id)); setMappedUsers(newMappedUsers); setSelectedMappedUsers([]); console.log("After removing - Selected Mapped Users:", []); }; return ( <div className="mappeduserlist w-1/2 p-4" style={{ position: 'relative' }}> <LoadPanel visible={isFetching || isSelectingAll} shading={false} position={{ of: '.mappeduserlist' }} showPane={true} container=".mappeduserlist" /> <div className="mapuserheaderlist"> <h3 className="text-lg font-semibold">Assigned User Count ({mappedUsers?.length || 0})</h3> <Button text="Remove Selected" type="danger" onClick={handleRemoveSelected} disabled={selectedMappedUsers.length === 0 || isFetching } /> </div> <List dataSource={mappedUsers || []} displayExpr="NT_UserName" keyExpr="Id" searchEnabled={true} searchExpr={["Name", "NT_UserName", "EmpId", "EmailId"]} height={450} selectionMode="all" showSelectionControls={true} selectAllMode="allPages" onSelectionChanged={handleSelectionChange} onItemDeleting={handleItemDeleting} selectedItemKeys={selectedMappedUsers} pageLoadMode="scrollBottom" /> </div> ); }; export default MappedUserList;