edit-case at same time delete click

This commit is contained in:
JaiPandey425 2025-08-04 13:58:45 +05:30
parent 80894b0438
commit 7973f8f934
8 changed files with 45 additions and 12 deletions

11
src/assets/record.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 92 KiB

View File

@ -5,6 +5,7 @@ import ContactFormModal, { ContactData } from './ContactsFormModal';
import { Bounce, toast } from 'react-toastify'; import { Bounce, toast } from 'react-toastify';
import { IoMdAdd } from 'react-icons/io'; import { IoMdAdd } from 'react-icons/io';
import LoaderUi from '../../helper/LoaderUi'; import LoaderUi from '../../helper/LoaderUi';
import logoRecord from '../../assets/record.svg'
type ContactSchema = [{ type ContactSchema = [{
id: number, id: number,
@ -146,8 +147,16 @@ const Contacts = () => {
</tr> </tr>
) : contacts.length === 0 ? ( ) : contacts.length === 0 ? (
<tr> <tr>
<td colSpan="4" className="text-center py-4">No contacts found.</td> <td colSpan="4" className="text-center py-10 text-gray-500">
</tr> <div className="flex flex-col items-center justify-center">
<img
src={logoRecord}
alt="Record Not Found"
className="w-70 h-70 mb-4 opacity-70" // adjust size and appearance
/>
</div>
</td>
</tr>
) : ( ) : (
contacts.map((contact) => ( contacts.map((contact) => (
<tr key={contact.id} className="hover:bg-gray-50"> <tr key={contact.id} className="hover:bg-gray-50">

View File

@ -11,6 +11,7 @@ import { FiEdit, FiTrash } from "react-icons/fi";
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
interface ContactType { interface ContactType {
id: string; id: string;
email: string; email: string;

View File

@ -114,7 +114,7 @@ const SignatureManager: React.FC = () => {
<div className="max-w-[84vw] mx-auto"> <div className="max-w-[84vw] mx-auto">
<> <>
{/* Header */} {/* Header */}
<div className="flex items-center justify-between mb-8"> <div className="flex items-center justify-between mb-3">
<div> <div>
<h1 className="text-[17px] font-medium text-gray-500 mb-2">Signatures</h1> <h1 className="text-[17px] font-medium text-gray-500 mb-2">Signatures</h1>
<p className="text-gray-300 text-sm">Add or update your name and signature styles.</p> <p className="text-gray-300 text-sm">Add or update your name and signature styles.</p>
@ -126,7 +126,7 @@ const SignatureManager: React.FC = () => {
</div> </div>
{/* Table Card */} {/* Table Card */}
<div className="bg-white rounded-md shadow-md overflow-hidden border border-gray-100"> <div className="bg-white rounded-md overflow-hidden border border-gray-100">
{/* Table Header */} {/* Table Header */}
<div className="bg-gray-50 border-b border-gray-200"> <div className="bg-gray-50 border-b border-gray-200">
<div className="grid grid-cols-12 gap-4 px-6 py-4"> <div className="grid grid-cols-12 gap-4 px-6 py-4">
@ -206,7 +206,7 @@ const SignatureManager: React.FC = () => {
{/* Dropdown Menu */} {/* Dropdown Menu */}
{activeDropdown === signature.id && ( {activeDropdown === signature.id && (
<div className="absolute right-0 mt-0.5 w-28 bg-white rounded-lg shadow-xl border border-gray-200 z-10 py-1"> <div className="absolute right-0 mt-0.5 w-28 bg-white rounded-lg border border-gray-200 z-10 py-1">
<button <button
onClick={() => handleEdit(signature.id)} onClick={() => handleEdit(signature.id)}
className="w-full px-4 py-1 text-left text-gray-500 hover:bg-blue-50 hover:text-blue-700 flex items-center gap-3 text-sm transition-colors duration-150" className="w-full px-4 py-1 text-left text-gray-500 hover:bg-blue-50 hover:text-blue-700 flex items-center gap-3 text-sm transition-colors duration-150"
@ -232,7 +232,7 @@ const SignatureManager: React.FC = () => {
{/* Empty State (if no signatures) */} {/* Empty State (if no signatures) */}
{signatures.length === 0 && ( {signatures.length === 0 && (
<div className=" rounded-xl shadow-lg p-12 text-center mt-8"> <div className=" rounded-xl p-12 text-center mt-8">
<div className="text-gray-400 mb-4"> <div className="text-gray-400 mb-4">
<FiEdit3 className="w-16 h-16 mx-auto" /> <FiEdit3 className="w-16 h-16 mx-auto" />
</div> </div>

View File

@ -24,7 +24,7 @@ const UserProfile: React.FC<UserProfileProps> = ({ userData }) => {
<div className="bg-white rounded-md shadow-sm flex w-full p-6"> <div className="bg-white rounded-md shadow-sm flex w-full p-6">
{/* Profile Picture */} {/* Profile Picture */}
<div className="flex-shrink-0 text-center"> <div className="flex-shrink-0 text-center">
<div className="w-20 h-20 bg-green-800 text-white font-bold text-2xl rounded-full flex items-center justify-center shadow-lg"> <div className="w-20 h-20 bg-[var(--primary)] text-white font-bold text-2xl rounded-full flex items-center justify-center shadow-lg">
{userData.name.slice(0,2).toUpperCase()} {userData.name.slice(0,2).toUpperCase()}
</div> </div>
</div> </div>

View File

@ -7,6 +7,7 @@ import { useNavigate } from "react-router-dom";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import { FaSpinner } from "react-icons/fa"; import { FaSpinner } from "react-icons/fa";
import LoaderUi from "../../helper/LoaderUi"; import LoaderUi from "../../helper/LoaderUi";
import logoRecord from '../../assets/record.svg';
@ -85,8 +86,8 @@ const Templates = () => {
} }
const handleEditClick = (templateId: string) => { const handleEditClick = (templateId: string) => {
setShowMenu(null); setShowMenu(null);
navigate(`/process-step-one/${accountId}/template/${templateId}`); navigate(`/process-step-one/${accountId}/template/${templateId}`);
} }
return ( return (
@ -209,9 +210,16 @@ const Templates = () => {
<tbody> <tbody>
<tr> <tr>
<td colSpan="6" className="text-center py-10 text-gray-500"> <td colSpan="6" className="text-center py-10 text-gray-500">
No templates found. <div className="flex flex-col items-center justify-center">
<img
src={logoRecord}
alt="Record Not Found"
className="w-70 h-70 mb-4 opacity-70" // adjust size and appearance
/>
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
)} )}

View File

@ -79,8 +79,8 @@ const TransactionView = () => {
<div className='mt-2'> <div className='mt-2'>
{/* new Date(transactionDetails?.transaction?.lastModifiedAt * 1000) */} {/* new Date(transactionDetails?.transaction?.lastModifiedAt * 1000) */}
<p className='text-slate-600'>From <span className='text-blue-600'>{transactionDetails?.transaction.createdBy.firstName + " " + transactionDetails?.transaction.createdBy.lastName}</span></p> <p className='text-slate-600'>From <span className='text-blue-600'>{transactionDetails?.transaction.createdBy.firstName + " " + transactionDetails?.transaction.createdBy.lastName}</span></p>
<p className=''><span className='text-slate-600 font-semibold'>Last Change on</span> <span className='text-slate-400'>{new Date(transactionDetails?.transaction?.lastModifiedAt * 1000).toISOString()}</span></p> <p className=''><span className='text-slate-600 font-semibold'>Last Change on</span> <span className='text-slate-400'>{(transactionDetails?.transaction?.lastModifiedAt)}</span></p>
<p className='text-slate-600'>Created at <span>{new Date(transactionDetails?.transaction?.createdAt * 1000).toISOString()}</span></p> <p className='text-slate-600'>Created at <span>{(transactionDetails?.transaction?.createdAt)}</span></p>
</div> </div>
<p className='text-slate-600 text-[0.98rem] mt-2 font-semibold'>{transactionDetails?.transaction.status}</p> <p className='text-slate-600 text-[0.98rem] mt-2 font-semibold'>{transactionDetails?.transaction.status}</p>

4
src/types/images.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
declare module '*.png' {
const value: string;
export default value;
}