build_app
This commit is contained in:
		
							parent
							
								
									0e8d0b1eb5
								
							
						
					
					
						commit
						cc2d1c0466
					
				| @ -69,6 +69,9 @@ public class BuilderService { | ||||
| 		executeDump(true); | ||||
| 
 | ||||
| 		// ADD OTHER SERVICE | ||||
| addCustomMenu( "Regform",  "Transcations");  | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		System.out.println("dashboard and menu inserted..."); | ||||
| 
 | ||||
|  | ||||
| @ -0,0 +1,83 @@ | ||||
| package com.realnet.basicp1.Controllers; | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
|  import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import org.springframework.web.bind.annotation.CrossOrigin; | ||||
| import com.fasterxml.jackson.databind.JsonMappingException; | ||||
| import com.realnet.config.EmailService; | ||||
| import com.realnet.users.entity1.AppUser; | ||||
| import com.realnet.users.service1.AppUserServiceImpl; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import org.springframework.data.domain.*; | ||||
| import com.realnet.fnd.response.EntityResponse; | ||||
| import org.springframework.http.*; | ||||
| import org.springframework.beans.factory.annotation.*; | ||||
| import com.realnet.basicp1.Entity.Regform; | ||||
| import com.realnet.basicp1.Services.RegformService ; | ||||
| 
 | ||||
| 
 | ||||
| @RequestMapping(value = "/Regform") | ||||
|  @CrossOrigin("*")  | ||||
| @RestController | ||||
| public class RegformController { | ||||
| 	@Autowired | ||||
| 	private RegformService Service; | ||||
| 
 | ||||
| @Value("${projectPath}") | ||||
| 	private String projectPath; | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 	@PostMapping("/Regform") | ||||
| 		  public Regform Savedata(@RequestBody Regform data) { | ||||
| 		Regform save = Service.Savedata(data)	; | ||||
| 
 | ||||
| 		System.out.println("data saved..." + save); | ||||
| 
 | ||||
|  return save; | ||||
| 	  } | ||||
| @PutMapping("/Regform/{id}") | ||||
| 	public  Regform update(@RequestBody Regform data,@PathVariable Integer id ) { | ||||
| 		Regform update = Service.update(data,id); | ||||
| 		System.out.println("data update..." + update); | ||||
| 		return update; | ||||
| 	}	  | ||||
| //	get all with pagination | ||||
| 	@GetMapping("/Regform/getall/page") | ||||
| 	public Page<Regform> getall(@RequestParam(value = "page", required = false) Integer page, | ||||
| 			@RequestParam(value = "size", required = false) Integer size) { | ||||
| 		Pageable paging = PageRequest.of(page, size); | ||||
| 		Page<Regform> get = Service.getAllWithPagination(paging); | ||||
| 
 | ||||
| 		return get; | ||||
| 
 | ||||
| 	}	 | ||||
| 	@GetMapping("/Regform") | ||||
| 	public List<Regform> getdetails() { | ||||
| 		 List<Regform> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| // get all without authentication  | ||||
| 
 | ||||
| 	@GetMapping("/token/Regform") | ||||
| 	public List<Regform> getallwioutsec() { | ||||
| 		 List<Regform> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| @GetMapping("/Regform/{id}") | ||||
| 	public  Regform  getdetailsbyId(@PathVariable Integer id ) { | ||||
| 		Regform  get = Service.getdetailsbyId(id); | ||||
| 		return get; | ||||
| 	} | ||||
| @DeleteMapping("/Regform/{id}") | ||||
| 	public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) { | ||||
| 	Service.delete_by_id(id); | ||||
| 			return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); | ||||
| 	 | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,24 @@ | ||||
| package com.realnet.basicp1.Entity; | ||||
|  import lombok.*; | ||||
| import com.realnet.WhoColumn.Entity.Extension;  | ||||
|  import javax.persistence.*; | ||||
|  import java.time.LocalDateTime; | ||||
|  import java.util.*; | ||||
| 
 | ||||
| 
 | ||||
|  @Entity  | ||||
|  @Data | ||||
|  public class    Regform extends Extension {  | ||||
|  /** | ||||
| 	 *  | ||||
| 	 */ | ||||
| 	private static final long serialVersionUID = 1L; | ||||
| 
 | ||||
|  @Id | ||||
|  @GeneratedValue(strategy = GenerationType.IDENTITY) | ||||
|  private Integer id; | ||||
| 
 | ||||
| private String  name; | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,26 @@ | ||||
| package com.realnet.basicp1.Repository; | ||||
| 
 | ||||
| 
 | ||||
| import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.Pageable; | ||||
| import org.springframework.data.jpa.repository.JpaRepository; | ||||
| import org.springframework.data.jpa.repository.Query; | ||||
| 
 | ||||
| import org.springframework.stereotype.Repository;  | ||||
| import java.util.*; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
| import com.realnet.basicp1.Entity.Regform; | ||||
| 
 | ||||
| @Repository | ||||
| public interface  RegformRepository  extends  JpaRepository<Regform, Integer>  {  | ||||
| 
 | ||||
| @Query(value = "select * from regform where  created_by=?1", nativeQuery = true) | ||||
| 	List<Regform> findAll(Long creayedBy); | ||||
| 
 | ||||
| @Query(value = "select * from regform where  created_by=?1", nativeQuery = true) | ||||
| 	Page<Regform> findAll(Pageable page, Long creayedBy); | ||||
| } | ||||
| @ -0,0 +1,73 @@ | ||||
| package com.realnet.basicp1.Services; | ||||
| import com.realnet.basicp1.Repository.RegformRepository; | ||||
| import com.realnet.basicp1.Entity.Regform | ||||
| ;import java.util.*; | ||||
| 
 | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import com.realnet.SequenceGenerator.Service.SequenceService; | ||||
| import org.springframework.data.domain.Page; | ||||
| import com.realnet.realm.Entity.Realm; | ||||
| import com.realnet.realm.Services.RealmService; | ||||
| import org.springframework.data.domain.Pageable; | ||||
| import org.springframework.http.*; | ||||
| import com.realnet.users.service1.AppUserServiceImpl; | ||||
| import com.realnet.users.entity1.AppUser; | ||||
| 
 | ||||
| 
 | ||||
| 	import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| @Service | ||||
|  public class RegformService { | ||||
| @Autowired | ||||
| private RegformRepository Repository; | ||||
| 	@Autowired | ||||
| 	private AppUserServiceImpl userService;  | ||||
| @Autowired | ||||
| 	private RealmService realmService; | ||||
| 
 | ||||
| public Regform Savedata(Regform data) { | ||||
| 
 | ||||
| 
 | ||||
| 	data.setUpdatedBy(getUser().getUserId()); | ||||
| 		data.setCreatedBy(getUser().getUserId()); | ||||
| 		data.setAccountId(getUser().getAccount().getAccount_id()); | ||||
| Regform save = Repository.save(data); | ||||
| 				return save;	 | ||||
| 			} | ||||
| 
 | ||||
| 
 | ||||
| //	get all with pagination | ||||
| 	public Page<Regform> getAllWithPagination(Pageable page) { | ||||
| 		return Repository.findAll(page, getUser().getUserId()); | ||||
| 	}			 | ||||
| public List<Regform> getdetails() {   | ||||
| 		List<Realm> realm = realmService.findByUserId(getUser().getUserId()); | ||||
| List<Regform> all = Repository.findAll(getUser().getUserId()); | ||||
| 		 | ||||
| 		return all ;		} | ||||
| 
 | ||||
| 
 | ||||
| public Regform getdetailsbyId(Integer id) { | ||||
| 	return Repository.findById(id).get(); | ||||
| 			} | ||||
| 
 | ||||
| 
 | ||||
| 	public void delete_by_id(Integer id) { | ||||
|  Repository.deleteById(id); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| public Regform update(Regform data,Integer id) { | ||||
| 	Regform old = Repository.findById(id).get(); | ||||
| old.setName(data.getName()); | ||||
| 
 | ||||
| final Regform test = Repository.save(old); | ||||
| 		data.setUpdatedBy(getUser().getUserId()); | ||||
|   return test;}  | ||||
| 
 | ||||
| 
 | ||||
|  public AppUser getUser() { | ||||
| 		AppUser user = userService.getLoggedInUser(); | ||||
| 		return user; | ||||
| 
 | ||||
| 	}} | ||||
							
								
								
									
										2
									
								
								test010rb-da-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								test010rb-da-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,2 @@ | ||||
| CREATE TABLE da.Regform(id BIGINT NOT NULL AUTO_INCREMENT, name VARCHAR(400),  PRIMARY KEY (id)); | ||||
| 
 | ||||
| @ -1,3 +1,5 @@ | ||||
| import Regform from "./components/BuilderComponents/basicp1/Regform/Regform"; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| import React from "react"; | ||||
| @ -130,6 +132,9 @@ const App = () => { | ||||
|             <Route path="dashrunner/:id" element={<DashboardRunner/>}/> | ||||
| 
 | ||||
|              {/* buildercomponents */} | ||||
|         <Route path="/Regform" element={<Regform />} /> | ||||
| 
 | ||||
| 
 | ||||
|             | ||||
|                | ||||
|           </Route> | ||||
| @ -147,4 +152,3 @@ const App = () => { | ||||
| }; | ||||
| 
 | ||||
| export default App; | ||||
| 
 | ||||
|  | ||||
| @ -0,0 +1,390 @@ | ||||
| import React, { useEffect, useState , useRef } from "react"; | ||||
| import QRCode from "qrcode.react"; | ||||
| import Barcode from "react-barcode"; | ||||
| import html2canvas from "html2canvas"; | ||||
| import Select from "react-select"; | ||||
| import ReCAPTCHA from "react-google-recaptcha"; | ||||
| import axios from "axios"; | ||||
| import { FaTrash } from "react-icons/fa"; | ||||
| import { Modal, Button, Form, Pagination,Container, Row, Col, Image , ProgressBar , } from "react-bootstrap"; | ||||
| import { ToastContainer, toast } from "react-toastify"; | ||||
| import "react-toastify/dist/ReactToastify.css"; | ||||
| import { getToken } from '../../../../utils/tokenService';import Table from "react-bootstrap/Table"; | ||||
| const FILE_API_URL = `${process.env.REACT_APP_API_URL}/FileUpload/Uploadeddocs`;  | ||||
| const API_URL = `${process.env.REACT_APP_API_URL}/Regform/Regform`; | ||||
| const REACT_APP_API_TOKEN = localStorage.getItem("authToken") | ||||
| 
 | ||||
| const EntityTable = () => { | ||||
|   const [data, setData] = useState([]); | ||||
|   const [filteredData, setFilteredData] = useState([]); | ||||
|   const [newEntity, setNewEntity] = useState({ | ||||
|     name: "", | ||||
| 
 | ||||
|   }); | ||||
|   const [editEntity, setEditEntity] = useState(null); | ||||
|   const [showEditModal, setShowEditModal] = useState(false); | ||||
|   const [showAddModal, setShowAddModal] = useState(false); | ||||
|   const [showDeleteModal, setShowDeleteModal] = useState(false); | ||||
|   const [deleteEntityId, setDeleteEntityId] = useState(null); | ||||
|   const [currentPage, setCurrentPage] = useState(1); | ||||
|   const [itemsPerPage] = useState(5); // Adjust this value as needed
 | ||||
|   const [searchQuery, setSearchQuery] = useState(""); | ||||
|   const [loading, setLoading] = useState(true); | ||||
|   const [options, setOptions] = useState([]); | ||||
|   const [filteredOptions, setFilteredOptions] = useState([]); | ||||
|   const [error, setError] = useState(null); | ||||
|  const [uploadProgress, setUploadProgress] = useState(0); | ||||
|  const [showModal, setShowModal] = useState(false); | ||||
|   const [showValulistModal, setShowValulistModal] = useState(false); | ||||
|  const barcodeRef = useRef(null); | ||||
|   const [serverData, setServerData] = useState([]); | ||||
|   const recaptchaRef = useRef(null); | ||||
|  const editBarcodeRef = useRef(null); | ||||
|   useEffect(() => { | ||||
|     fetchData(); | ||||
| 
 | ||||
| 
 | ||||
|   }, []); | ||||
| 
 | ||||
|   useEffect(() => { | ||||
|     handleSearch(); | ||||
|   }, [searchQuery, data]); | ||||
|   const fetchData = async () => { | ||||
|     try { | ||||
| const token = getToken(); | ||||
|       const response = await axios.get(API_URL, { | ||||
|         headers: { Authorization: `Bearer ${token}` }, | ||||
|       }); | ||||
|       setData(response.data); | ||||
|     } catch (error) { | ||||
|       console.error("Error fetching data:", error); | ||||
|     } | ||||
|   }; | ||||
| 
 | ||||
|   const handleDelete = async () => { | ||||
|     try { | ||||
|  const token = getToken(); | ||||
|       await axios.delete(`${API_URL}/${deleteEntityId}`, { | ||||
|         headers: { Authorization: `Bearer ${token}` }, | ||||
|       }); | ||||
|       fetchData(); | ||||
|       toast.success("Successfully deleted!"); | ||||
|       setShowDeleteModal(false); | ||||
|     } catch (error) { | ||||
|       console.error("Error deleting data:", error); | ||||
|     } | ||||
|   }; | ||||
| 
 | ||||
|   const handleAdd = async () => { | ||||
| 
 | ||||
| 
 | ||||
|     try { | ||||
|  const token = getToken(); | ||||
|       await axios.post(API_URL, newEntity, { | ||||
| 
 | ||||
| 
 | ||||
|         headers: { Authorization: `Bearer ${token}` }, | ||||
|       }); | ||||
|       fetchData(); | ||||
|       setNewEntity({ | ||||
|     name: "", | ||||
| 
 | ||||
|       }); | ||||
|       setShowAddModal(false); | ||||
|       toast.success("Successfully added!"); | ||||
|     } catch (error) { | ||||
|       console.error("Error adding data:", error); | ||||
|     } | ||||
|   }; | ||||
| 
 | ||||
|   const handleChange = (e) => { | ||||
|     const { name, value } = e.target; | ||||
|     setNewEntity({ ...newEntity, [name]: value }); | ||||
|   }; | ||||
| 
 | ||||
|   const handleEditChange = (e) => { | ||||
|     const { name, value } = e.target; | ||||
|     setEditEntity({ ...editEntity, [name]: value }); | ||||
|   }; | ||||
| 
 | ||||
|   const handleEdit = (entity) => { | ||||
|     setEditEntity(entity); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     setShowEditModal(true); | ||||
|   }; | ||||
| 
 | ||||
|   const formatCurrency = (value) => { | ||||
|    if (value && !value.startsWith('₹')) { | ||||
|     return `₹${value}`; | ||||
|   } | ||||
|   return value; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|    const handleUpdate = async () => { | ||||
| 
 | ||||
| 
 | ||||
|     try { | ||||
| const token = getToken(); | ||||
|       await axios.put(`${API_URL}/${editEntity.id}`, editEntity, { | ||||
| 
 | ||||
| 
 | ||||
|         headers: { Authorization: `Bearer ${token}` }, | ||||
|       }); | ||||
|       fetchData(); | ||||
|       setShowEditModal(false); | ||||
|       toast.success("Successfully updated!"); | ||||
|     } catch (error) { | ||||
|       console.error("Error updating data:", error); | ||||
|     } | ||||
|   }; | ||||
| 
 | ||||
|   const handleSearch = () => { | ||||
|     const filtered = data.filter( | ||||
|       (entity) => | ||||
| 
 | ||||
|       entity.name.toLowerCase().includes(searchQuery.toLowerCase())     ); | ||||
|     setFilteredData(filtered); | ||||
|   }; | ||||
| 
 | ||||
|   const handlePageChange = (pageNumber) => { | ||||
|     setCurrentPage(pageNumber); | ||||
|   }; | ||||
| 
 | ||||
|   const generateBarcodeImage = async (ref) => { | ||||
|     if (ref.current) { | ||||
|       const canvas = await html2canvas(ref.current); | ||||
|       const imgData = canvas.toDataURL("image/png"); | ||||
|       const link = document.createElement("a"); | ||||
|       link.href = imgData; | ||||
|       link.download = "barcode.png"; | ||||
|       link.click(); | ||||
|     } | ||||
|   }; | ||||
| 
 | ||||
|   // Calculate items for current page
 | ||||
|   const indexOfLastItem = currentPage * itemsPerPage; | ||||
|   const indexOfFirstItem = indexOfLastItem - itemsPerPage; | ||||
|   const currentItems = filteredData.slice(indexOfFirstItem, indexOfLastItem); | ||||
| 
 | ||||
|   return ( | ||||
|     <div className="container mt-5"> | ||||
|       <ToastContainer /> | ||||
|       <h1 className="mb-4">Entity Table</h1> | ||||
|       <div className="d-flex justify-content-between mb-3"> | ||||
|         <Button variant="primary" onClick={() => setShowAddModal(true)}> | ||||
|           Add Entity | ||||
|         </Button> | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
|         <Form.Control | ||||
|           type="text" | ||||
|           className="w-25" | ||||
|           placeholder="Search..." | ||||
|           value={searchQuery} | ||||
|           onChange={(e) => setSearchQuery(e.target.value)} | ||||
|         /> | ||||
|       </div> | ||||
|       <Table striped bordered hover responsive variant="grey"> | ||||
|         <thead> | ||||
|           <tr> | ||||
|   <th>name</th> | ||||
| 
 | ||||
| <th>Action</th> | ||||
|           </tr> | ||||
|         </thead> | ||||
|         <tbody > | ||||
|           {currentItems.map((entity) => ( | ||||
|             <tr key={entity.id}> | ||||
| 
 | ||||
|               <td>{entity.name}</td> | ||||
| 
 | ||||
| 
 | ||||
|               <td> | ||||
|                 <Button | ||||
|                   variant="warning" | ||||
|                   size="sm" | ||||
|                   className="me-2" | ||||
|                   onClick={() => handleEdit(entity)} | ||||
|                 > | ||||
|                   Update | ||||
|                 </Button> | ||||
| 
 | ||||
| 
 | ||||
|   	 | ||||
|                 <Button | ||||
|                   variant="danger" | ||||
|                   size="sm" | ||||
|                   onClick={() => { | ||||
|                     setDeleteEntityId(entity.id); | ||||
|                     setShowDeleteModal(true); | ||||
|                   }} | ||||
|                 > | ||||
|                   Delete | ||||
|                 </Button> | ||||
|               </td> | ||||
|             </tr> | ||||
|           ))} | ||||
|         </tbody> | ||||
|       </Table> | ||||
|       <Pagination className="d-flex justify-content-center mt-4"> | ||||
|         {Array.from( | ||||
|           { length: Math.ceil(filteredData.length / itemsPerPage) }, | ||||
|           (_, index) => ( | ||||
|             <Pagination.Item | ||||
|               key={index + 1} | ||||
|               active={index + 1 === currentPage} | ||||
|               onClick={() => handlePageChange(index + 1)} | ||||
|             > | ||||
|               {index + 1} | ||||
|             </Pagination.Item> | ||||
|           ) | ||||
|         )} | ||||
|       </Pagination> | ||||
| 
 | ||||
| 
 | ||||
|        <Modal show={showEditModal} onHide={() => setShowEditModal(false)}> | ||||
|         <Modal.Header closeButton> | ||||
|           <Modal.Title>Edit Entity</Modal.Title> | ||||
|         </Modal.Header> | ||||
|         <Modal.Body> | ||||
|           {editEntity && ( | ||||
|             <Form> | ||||
| <div className="form-group"> | ||||
|   <div className="container mt-4" style={{ width: '100%' }}> | ||||
|     <div className="card p-4 shadow-sm rounded"> | ||||
|       <div className="row align-items-center"> | ||||
|         <div className="col-md-3"> | ||||
|         </div> | ||||
| <label htmlFor="name" className="form-label">Name</label> | ||||
|         | ||||
|         <div className="col-md-9"> | ||||
|           <input | ||||
|             type="text" | ||||
|             className="form-control" | ||||
|             id="name" | ||||
|             name="name" | ||||
|             value={editEntity.name} | ||||
|             onChange={handleEditChange} | ||||
|             required | ||||
|             style={{ | ||||
|               backgroundColor: '#f7f9fc', | ||||
|               border: '1px solid #ced4da', | ||||
|               borderRadius: '8px', | ||||
|               padding: '10px', | ||||
|               transition: 'border-color 0.3s ease, box-shadow 0.3s ease', | ||||
|             }} | ||||
|             onFocus={(e) => { | ||||
|               e.target.style.borderColor = '#007bff'; | ||||
|               e.target.style.boxShadow = '0 0 8px rgba(0, 123, 255, 0.25)'; | ||||
|             }} | ||||
|             onBlur={(e) => { | ||||
|               e.target.style.borderColor = '#ced4da'; | ||||
|               e.target.style.boxShadow = 'none'; | ||||
|             }} | ||||
|           /> | ||||
|         </div> | ||||
| 
 | ||||
|      | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
|           </Form> | ||||
|            | ||||
|           )} | ||||
|         </Modal.Body> | ||||
|         <Modal.Footer> | ||||
|           <Button variant="secondary" onClick={() => setShowEditModal(false)}> | ||||
|             Close | ||||
|           </Button> | ||||
|           <Button variant="primary" onClick={handleUpdate}> | ||||
|             Save changes | ||||
|           </Button> | ||||
|         </Modal.Footer> | ||||
|       </Modal> | ||||
|       <Modal show={showAddModal} onHide={() => setShowAddModal(false)}> | ||||
|         <Modal.Header closeButton> | ||||
|           <Modal.Title>Add New Entity</Modal.Title> | ||||
|         </Modal.Header> | ||||
|         <Modal.Body> | ||||
|         <Form> | ||||
|       <div className="form-group"> | ||||
|   <div className="container mt-4" style={{ width: '100%' }}> | ||||
|     <div className="card p-4 shadow-sm rounded"> | ||||
|       <div className="row align-items-center"> | ||||
|         <div className="col-md-3"> | ||||
|         </div> | ||||
| <label htmlFor="name" className="form-label">name</label> | ||||
|           | ||||
|         <div className="col-md-9"> | ||||
|           <input | ||||
|             type="text" | ||||
|             className="form-control" | ||||
|             id="name" | ||||
|             name="name" | ||||
|             value={newEntity.name} | ||||
|             onChange={handleChange} | ||||
|             required | ||||
|             style={{ | ||||
|               backgroundColor: '#f7f9fc', | ||||
|               border: '1px solid #ced4da', | ||||
|               borderRadius: '8px', | ||||
|               padding: '10px', | ||||
|               transition: 'border-color 0.3s ease, box-shadow 0.3s ease', | ||||
|             }} | ||||
|             onFocus={(e) => { | ||||
|               e.target.style.borderColor = '#007bff'; | ||||
|               e.target.style.boxShadow = '0 0 8px rgba(0, 123, 255, 0.25)'; | ||||
|             }} | ||||
|             onBlur={(e) => { | ||||
|               e.target.style.borderColor = '#ced4da'; | ||||
|               e.target.style.boxShadow = 'none'; | ||||
|             }} | ||||
|           /> | ||||
|         </div> | ||||
| 
 | ||||
|  </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| </Form> | ||||
| 
 | ||||
|         </Modal.Body> | ||||
|         <Modal.Footer> | ||||
|           <Button variant="secondary" onClick={() => setShowAddModal(false)}> | ||||
|             Close | ||||
|           </Button> | ||||
|           <Button variant="primary" onClick={handleAdd | ||||
| 
 | ||||
| }> | ||||
|             Add Entity | ||||
|           </Button> | ||||
| 
 | ||||
| 
 | ||||
|         </Modal.Footer> | ||||
|       </Modal> | ||||
|       <Modal show={showDeleteModal} onHide={() => setShowDeleteModal(false)}> | ||||
|         <Modal.Header closeButton> | ||||
|           <Modal.Title>Confirm Delete</Modal.Title> | ||||
|         </Modal.Header> | ||||
|         <Modal.Body>Are you sure you want to delete this entity?</Modal.Body> | ||||
|         <Modal.Footer> | ||||
|           <Button variant="secondary" onClick={() => setShowDeleteModal(false)}> | ||||
|             Cancel | ||||
|           </Button> | ||||
|           <Button variant="danger" onClick={handleDelete}> | ||||
|             Delete | ||||
|           </Button> | ||||
|         </Modal.Footer> | ||||
|       </Modal> | ||||
|     </div> | ||||
|   ); | ||||
| }; | ||||
| 
 | ||||
| export default EntityTable; | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user