Skip to content

Commit 8f1edd6

Browse files
author
raineer
committed
fix merge conflict
2 parents 4c714e5 + 8a73b99 commit 8f1edd6

25 files changed

Lines changed: 3032 additions & 908 deletions

‎apps/codebility/app/home/in-house/_components/EditDialog.tsx‎

Lines changed: 369 additions & 80 deletions
Large diffs are not rendered by default.

‎apps/codebility/app/home/in-house/_components/table/EditableRow.tsx‎

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,17 @@ export function EditableRow({
188188

189189
const renderCell = (key: keyof Codev) => {
190190
switch (key) {
191+
case "email_address":
192+
return (
193+
<Input
194+
type="email"
195+
value={String(editForm[key] || "")}
196+
onChange={(e) => handleLocalChange(key, e.target.value)}
197+
disabled={isSubmitting || isUploading}
198+
className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-9 w-full border px-3 text-xs text-black dark:text-white"
199+
/>
200+
);
201+
191202
case "image_url":
192203
return (
193204
<div className="relative inline-block">
@@ -247,7 +258,7 @@ export function EditableRow({
247258
}
248259
disabled={isSubmitting || isUploading}
249260
>
250-
<SelectTrigger className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-8 border text-xs text-black dark:text-white">
261+
<SelectTrigger className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-9 border text-xs text-black dark:text-white">
251262
<SelectValue placeholder="Select status" />
252263
</SelectTrigger>
253264
<SelectContent className="bg-light-800 dark:bg-dark-300 text-xs text-black dark:text-white">
@@ -269,7 +280,7 @@ export function EditableRow({
269280
}
270281
disabled={isSubmitting || isUploading}
271282
>
272-
<SelectTrigger className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-8 border text-xs text-black dark:text-white">
283+
<SelectTrigger className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-9 border text-xs text-black dark:text-white">
273284
<SelectValue placeholder="Select role" />
274285
</SelectTrigger>
275286
<SelectContent className="bg-light-800 dark:bg-dark-300 text-xs text-black dark:text-white">
@@ -291,7 +302,7 @@ export function EditableRow({
291302
}
292303
disabled={isSubmitting || isUploading}
293304
>
294-
<SelectTrigger className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-8 border text-xs text-black dark:text-white">
305+
<SelectTrigger className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-9 border text-xs text-black dark:text-white">
295306
<SelectValue placeholder="Select position" />
296307
</SelectTrigger>
297308
<SelectContent className="bg-light-800 dark:bg-dark-300 text-xs text-black dark:text-white">
@@ -325,7 +336,7 @@ export function EditableRow({
325336
}
326337
disabled={isSubmitting || isUploading}
327338
>
328-
<SelectTrigger className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-8 border text-xs text-black dark:text-white">
339+
<SelectTrigger className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-9 border text-xs text-black dark:text-white">
329340
<SelectValue placeholder="Select NDA status" />
330341
</SelectTrigger>
331342
<SelectContent className="bg-light-800 dark:bg-dark-300 text-xs text-black dark:text-white">
@@ -365,7 +376,7 @@ export function EditableRow({
365376
handleLocalChange("date_joined", dateValue);
366377
}}
367378
disabled={isSubmitting || isUploading}
368-
className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-8 border text-xs text-black dark:text-white"
379+
className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-9 border px-3 text-xs text-black dark:text-white"
369380
/>
370381
);
371382

@@ -375,7 +386,7 @@ export function EditableRow({
375386
value={String(editForm[key] || "")}
376387
onChange={(e) => handleLocalChange(key, e.target.value)}
377388
disabled={isSubmitting || isUploading}
378-
className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-8 w-full border text-xs text-black dark:text-white"
389+
className="border-light-700 dark:border-dark-200 bg-light-800 dark:bg-dark-300 h-9 w-full border px-3 text-xs text-black dark:text-white"
379390
/>
380391
);
381392
}
@@ -385,9 +396,9 @@ export function EditableRow({
385396
<TableRow className="bg-light-200 dark:bg-dark-200 hover:bg-light-300 dark:hover:bg-dark-300">
386397
{/* COMPACT: All columns px-2 py-2, constrained widths to match table */}
387398
<TableCell className="w-12 px-2 py-2">{renderCell("image_url")}</TableCell>
388-
<TableCell className="w-24 px-2 py-2">{renderCell("first_name")}</TableCell>
389-
<TableCell className="w-24 px-2 py-2">{renderCell("last_name")}</TableCell>
390-
<TableCell className="w-40 px-2 py-2">{renderCell("email_address")}</TableCell>
399+
<TableCell className="w-32 px-2 py-2">{renderCell("first_name")}</TableCell>
400+
<TableCell className="w-32 px-2 py-2">{renderCell("last_name")}</TableCell>
401+
<TableCell className="px-2 py-2">{renderCell("email_address")}</TableCell>
391402
<TableCell className="hidden w-24 px-2 py-2 2xl:table-cell">{renderCell("internal_status")}</TableCell>
392403
<TableCell className="hidden w-20 px-2 py-2 2xl:table-cell">{renderCell("role_id")}</TableCell>
393404
<TableCell className="hidden w-32 px-2 py-2 2xl:table-cell">{renderCell("display_position")}</TableCell>

‎apps/codebility/app/home/in-house/_components/table/InHouseMobileTable.tsx‎

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,13 @@ import {
1818
} from "@codevs/ui/dropdown-menu";
1919

2020
import { StatusBadge } from "../shared/StatusBadge";
21-
import { MobileEditableForm } from "./MobileEditableForm";
2221
import { TableActions } from "./TableActions";
2322

2423
interface InHouseMobileTableProps {
2524
data: Codev[];
2625
onDataChange: (updatedItem: Codev) => void;
2726
onDelete: (deletedId: string) => void;
28-
onEdit?: (id: string) => void;
27+
onEdit?: (member: Codev | null) => void;
2928
roles: { id: number; name: string }[];
3029
handleSendNdaEmail: (
3130
codevId: string,
@@ -105,27 +104,13 @@ export function InHouseMobileTable({
105104
sortConfig,
106105
onSort,
107106
}: InHouseMobileTableProps) {
108-
const [editingId, setEditingId] = useState<string | null>(null);
109-
110107
return (
111108
<div className="block space-y-2 xl:hidden">
112-
{data.map((item) =>
113-
editingId === item.id ? (
114-
<MobileEditableForm
115-
key={item.id}
116-
data={item}
117-
onSave={(updatedItem) => {
118-
onDataChange(updatedItem);
119-
setEditingId(null);
120-
}}
121-
onCancel={() => setEditingId(null)}
122-
roles={roles}
123-
/>
124-
) : (
125-
<div
126-
key={item.id}
127-
className="border-light-700 bg-light-300 dark:border-dark-200 dark:bg-dark-100 rounded-lg border p-3 shadow-sm"
128-
>
109+
{data.map((item) => (
110+
<div
111+
key={item.id}
112+
className="border-light-700 bg-light-300 dark:border-dark-200 dark:bg-dark-100 rounded-lg border p-3 shadow-sm"
113+
>
129114
{/* Compact header with photo, name, status, and actions */}
130115
<div className="mb-2 flex items-center justify-between">
131116
<div className="flex items-center gap-2">
@@ -152,7 +137,7 @@ export function InHouseMobileTable({
152137
<StatusBadge status={item.internal_status as InternalStatus} />
153138
<TableActions
154139
item={item}
155-
onEdit={() => setEditingId(item.id)}
140+
onEdit={() => onEdit?.(item)}
156141
onDelete={() => onDelete(item.id)}
157142
/>
158143
</div>
@@ -290,7 +275,7 @@ export function InHouseMobileTable({
290275
</div>
291276
)}
292277
</div>
293-
),
278+
)
294279
)}
295280
</div>
296281
);

‎apps/codebility/app/home/in-house/_components/table/InHouseTable.tsx‎

Lines changed: 88 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import {
3737

3838
import { StatusBadge } from "../shared/StatusBadge";
3939
import { columns } from "./columns";
40-
import { EditableRow, Role } from "./EditableRow";
40+
import { EditDialog, Role } from "../EditDialog";
4141
import { TableActions } from "./TableActions";
4242
import { InHouseMobileTable } from "./InHouseMobileTable";
4343
import InHousePreviewSidebar from "./InHousePreviewSidebar";
@@ -133,7 +133,7 @@ export function InHouseTable({
133133
onSort,
134134
}: InHouseTableProps) {
135135
const [supabase, setSupabase] = useState<any>(null);
136-
const [editingId, setEditingId] = useState<string | null>(null);
136+
const [editingMember, setEditingMember] = useState<Codev | null>(null);
137137
const [roles, setRoles] = useState<Role[]>([]);
138138
const [selectedMember, setSelectedMember] = useState<Codev | null>(null);
139139

@@ -353,7 +353,7 @@ export function InHouseTable({
353353
data={data}
354354
onDataChange={onDataChange}
355355
onDelete={handleDelete}
356-
onEdit={setEditingId}
356+
onEdit={setEditingMember}
357357
roles={roles}
358358
handleSendNdaEmail={handleSendNdaEmail}
359359
handleDownloadNda={handleDownloadNda}
@@ -391,15 +391,15 @@ export function InHouseTable({
391391
/* COMPACT: Name columns - medium width */
392392
<TableHead
393393
key={column.key}
394-
className="dark:text-light-900 w-24 px-2 py-2 text-xs font-bold text-black"
394+
className="dark:text-light-900 w-32 px-2 py-2 text-xs font-bold text-black"
395395
>
396396
{column.label}
397397
</TableHead>
398398
) : column.key === "email_address" ? (
399-
/* COMPACT: Email column - larger width */
399+
/* COMPACT: Email column - flexible width to fill available space */
400400
<TableHead
401401
key={column.key}
402-
className="dark:text-light-900 w-40 px-2 py-2 text-xs font-bold text-black"
402+
className="dark:text-light-900 px-2 py-2 text-xs font-bold text-black"
403403
>
404404
{column.label}
405405
</TableHead>
@@ -447,85 +447,75 @@ export function InHouseTable({
447447
</TableHeader>
448448

449449
<TableBody>
450-
{data.map((item) =>
451-
editingId === item.id ? (
452-
<EditableRow
453-
key={item.id}
454-
data={item}
455-
onSave={(updatedItem) => {
456-
onDataChange(updatedItem);
457-
setEditingId(null);
458-
}}
459-
onCancel={() => setEditingId(null)}
460-
roles={roles}
461-
/>
462-
) : (
463-
<TableRow
464-
key={item.id}
465-
onClick={() => setSelectedMember(item)}
466-
className="cursor-pointer border-light-700 dark:border-dark-200 hover:bg-light-800 dark:hover:bg-dark-300 odd:dark:bg-dark-200 odd:bg-grey-100/10 border-b"
467-
>
468-
{/* COMPACT: Avatar px-6 → px-2, h-10 w-10 → h-8 w-8 */}
469-
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
470-
<div className="h-8 w-8 overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700">
471-
<Image
472-
src={item.image_url || defaultImage}
473-
alt={`${item.first_name} avatar`}
474-
width={32}
475-
height={32}
476-
unoptimized={true}
477-
className="h-full w-full object-cover"
478-
/>
479-
</div>
480-
</TableCell>
481-
482-
{/* COMPACT: First Name px-6 → px-2, text-base → text-xs */}
483-
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
484-
{capitalize(item.first_name)}
485-
</TableCell>
486-
487-
{/* COMPACT: Last Name px-6 → px-2, text-base → text-xs */}
488-
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
489-
{capitalize(item.last_name)}
490-
</TableCell>
491-
492-
{/* COMPACT: Email px-5 → px-2, text-base → text-xs */}
493-
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
494-
{item.email_address}
495-
</TableCell>
496-
497-
{/* COMPACT: All desktop columns px-4 → px-2, py-3 → py-2, text-base → text-xs */}
498-
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
499-
{item.role_id
500-
? roles.find((role) => role.id === item.role_id)?.name ||
501-
"-"
502-
: "-"}
503-
</TableCell>
504-
505-
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
506-
{typeof item.display_position === "string"
507-
? capitalize(item.display_position)
508-
: "-"}
509-
</TableCell>
510-
511-
<TableCell className="px-2 py-2">
512-
<StatusBadge
513-
status={item.internal_status as InternalStatus}
450+
{data.map((item) => (
451+
<TableRow
452+
key={item.id}
453+
onClick={() => setSelectedMember(item)}
454+
className="cursor-pointer border-light-700 dark:border-dark-200 hover:bg-light-800 dark:hover:bg-dark-300 odd:dark:bg-dark-200 odd:bg-grey-100/10 border-b"
455+
>
456+
{/* Avatar */}
457+
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
458+
<div className="h-8 w-8 overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700">
459+
<Image
460+
src={item.image_url || defaultImage}
461+
alt={`${item.first_name} avatar`}
462+
width={32}
463+
height={32}
464+
unoptimized={true}
465+
className="h-full w-full object-cover"
514466
/>
515-
</TableCell>
516-
517-
<TableCell className="px-2 py-2">
518-
<div onClick={(e) => e.stopPropagation()}>
519-
<TableActions
520-
item={item}
521-
onEdit={() => setEditingId(item.id)}
522-
onDelete={() => handleDelete(item.id)}
523-
/>
524-
</div>
525-
</TableCell>
526-
</TableRow>
527-
),
528-
)}
467+
</div>
468+
</TableCell>
469+
470+
{/* First Name */}
471+
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
472+
{capitalize(item.first_name)}
473+
</TableCell>
474+
475+
{/* Last Name */}
476+
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
477+
{capitalize(item.last_name)}
478+
</TableCell>
479+
480+
{/* Email */}
481+
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
482+
{item.email_address}
483+
</TableCell>
484+
485+
{/* Role */}
486+
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
487+
{item.role_id
488+
? roles.find((role) => role.id === item.role_id)?.name ||
489+
"-"
490+
: "-"}
491+
</TableCell>
492+
493+
{/* Position */}
494+
<TableCell className="dark:text-light-900 px-2 py-2 text-xs text-black">
495+
{typeof item.display_position === "string"
496+
? capitalize(item.display_position)
497+
: "-"}
498+
</TableCell>
499+
500+
{/* Status Badge */}
501+
<TableCell className="px-2 py-2">
502+
<StatusBadge
503+
status={item.internal_status as InternalStatus}
504+
/>
505+
</TableCell>
506+
507+
{/* Actions */}
508+
<TableCell className="px-2 py-2">
509+
<div onClick={(e) => e.stopPropagation()}>
510+
<TableActions
511+
item={item}
512+
onEdit={() => setEditingMember(item)}
513+
onDelete={() => handleDelete(item.id)}
514+
/>
515+
</div>
516+
</TableCell>
517+
</TableRow>
518+
))}
529519
</TableBody>
530520
</Table>
531521
</div>
@@ -543,6 +533,20 @@ export function InHouseTable({
543533
)}
544534
</div>
545535
)}
536+
537+
{/* Edit Dialog */}
538+
{editingMember && (
539+
<EditDialog
540+
isOpen={!!editingMember}
541+
onClose={() => setEditingMember(null)}
542+
data={editingMember}
543+
onSave={(updatedMember) => {
544+
onDataChange(updatedMember);
545+
setEditingMember(null);
546+
}}
547+
roles={roles}
548+
/>
549+
)}
546550
</div>
547551
);
548552
}

0 commit comments

Comments
 (0)