Skip to content

Commit d846c90

Browse files
author
raineer
committed
fix(in-house): enhance table spacing per team lead feedbackfix(in-house): improve table spacing and alignment
1 parent 4352d43 commit d846c90

2 files changed

Lines changed: 165 additions & 248 deletions

File tree

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

Lines changed: 27 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import { TableCell, TableRow } from "@codevs/ui/table";
2929

3030
import { ProjectSelect } from "../shared/ProjectSelect";
3131

32-
// Role interface for type safety
3332
export interface Role {
3433
id: number;
3534
name: string;
@@ -43,11 +42,13 @@ interface EditableRowProps {
4342
}
4443

4544
/**
46-
* ENHANCED EditableRow Component
47-
* IMPROVEMENTS:
48-
* - Consistent spacing with InHouseTable: px-3 py-2
49-
* - Removed inconsistent p-2 pb-6 padding
50-
* - Better visual alignment with read-only rows
45+
* ENHANCED EditableRow - Team Lead Feedback Applied
46+
*
47+
* CHANGES:
48+
* - Matching spacing with InHouseTable
49+
* - First 3 columns: px-6 py-3
50+
* - Email column: px-5 py-3
51+
* - Other columns: px-4 py-3
5152
*/
5253
export function EditableRow({
5354
data,
@@ -62,19 +63,14 @@ export function EditableRow({
6263
setSupabase(supabaseClient);
6364
}, []);
6465

65-
// Local edit state - clone incoming data
6666
const [editForm, setEditForm] = useState<Codev>(data);
67-
68-
// Local preview of image if user uploads a new one
6967
const [uploadedImage, setUploadedImage] = useState<string | null>(
7068
data.image_url || null,
7169
);
72-
7370
const [positions, setPositions] = useState<Position[]>([]);
7471
const [isSubmitting, setIsSubmitting] = useState(false);
7572
const [isUploading, setIsUploading] = useState(false);
7673

77-
// Fetch positions on mount
7874
useEffect(() => {
7975
if (!supabase) return;
8076

@@ -91,32 +87,27 @@ export function EditableRow({
9187
fetchPositions();
9288
}, [supabase]);
9389

94-
// Local change handler - updates editForm state
9590
const handleLocalChange = (key: keyof Codev, value: any) => {
9691
setEditForm((prev) => ({
9792
...prev,
9893
[key]: value,
9994
}));
10095
};
10196

102-
// Image upload handler
10397
const handleImageUpload = async (file: File) => {
10498
try {
10599
setIsUploading(true);
106-
// Preview
107100
const reader = new FileReader();
108101
reader.onloadend = () => {
109102
setUploadedImage(reader.result as string);
110103
};
111104
reader.readAsDataURL(file);
112105

113-
// Upload to Supabase bucket
114106
const publicUrl = await uploadImage(file, {
115107
bucket: "codebility",
116108
folder: "profileImage",
117109
});
118110

119-
// Save URL to local form
120111
handleLocalChange("image_url", publicUrl);
121112
} catch (error) {
122113
console.error("Image upload failed:", error);
@@ -126,14 +117,12 @@ export function EditableRow({
126117
}
127118
};
128119

129-
// Save changes - merges projects pivot + codev table updates
130120
const handleSave = async () => {
131121
try {
132122
setIsSubmitting(true);
133123

134124
const { id, projects, ...rest } = editForm;
135125

136-
// 1) Clear + re-insert pivot if projects changed
137126
if (projects) {
138127
const { error: deleteError } = await supabase
139128
.from("project_members")
@@ -153,7 +142,6 @@ export function EditableRow({
153142
}
154143
}
155144

156-
// 2) Build update object for codev table
157145
const allowedFields: (keyof Codev)[] = [
158146
"first_name",
159147
"last_name",
@@ -181,7 +169,6 @@ export function EditableRow({
181169
}
182170
}
183171

184-
// 3) Update codev table
185172
if (Object.keys(updateFields).length > 0) {
186173
const { error } = await supabase
187174
.from("codev")
@@ -200,7 +187,6 @@ export function EditableRow({
200187
}
201188
};
202189

203-
// Render function for each editable cell
204190
const renderCell = (key: keyof Codev) => {
205191
switch (key) {
206192
case "image_url":
@@ -382,7 +368,6 @@ export function EditableRow({
382368
);
383369

384370
default:
385-
// Text inputs: first_name, last_name, portfolio_website, etc.
386371
return (
387372
<Input
388373
value={String(editForm[key] || "")}
@@ -396,24 +381,27 @@ export function EditableRow({
396381

397382
return (
398383
<TableRow className="bg-light-200 dark:bg-dark-200 hover:bg-light-300 dark:hover:bg-dark-300">
399-
{/* ENHANCED: All cells now use consistent px-3 py-2 spacing */}
400-
<TableCell className="px-3 py-2">{renderCell("image_url")}</TableCell>
401-
<TableCell className="px-3 py-2">{renderCell("first_name")}</TableCell>
402-
<TableCell className="px-3 py-2">{renderCell("last_name")}</TableCell>
403-
<TableCell className="px-3 py-2">{renderCell("email_address")}</TableCell>
404-
<TableCell className="px-3 py-2">{renderCell("internal_status")}</TableCell>
405-
<TableCell className="px-3 py-2">{renderCell("role_id")}</TableCell>
406-
<TableCell className="px-3 py-2">{renderCell("display_position")}</TableCell>
407-
<TableCell className="px-3 py-2">{renderCell("projects")}</TableCell>
408-
<TableCell className="px-3 py-2">{renderCell("nda_status")}</TableCell>
409-
<TableCell className="px-3 py-2">{renderCell("portfolio_website")}</TableCell>
410-
<TableCell className="px-3 py-2">{renderCell("date_joined")}</TableCell>
411-
<TableCell className="px-3 py-2">{renderCell("availability_status")}</TableCell>
412-
413-
{/* Action buttons - ENHANCED spacing */}
414-
<TableCell className="px-3 py-2">
384+
{/* ENHANCED: First 3 columns px-6 py-3 */}
385+
<TableCell className="px-6 py-3">{renderCell("image_url")}</TableCell>
386+
<TableCell className="px-6 py-3">{renderCell("first_name")}</TableCell>
387+
<TableCell className="px-6 py-3">{renderCell("last_name")}</TableCell>
388+
389+
{/* ENHANCED: Email column px-5 py-3 */}
390+
<TableCell className="px-5 py-3">{renderCell("email_address")}</TableCell>
391+
392+
{/* ENHANCED: Other columns px-4 py-3 */}
393+
<TableCell className="px-4 py-3">{renderCell("internal_status")}</TableCell>
394+
<TableCell className="px-4 py-3">{renderCell("role_id")}</TableCell>
395+
<TableCell className="px-4 py-3">{renderCell("display_position")}</TableCell>
396+
<TableCell className="px-4 py-3">{renderCell("projects")}</TableCell>
397+
<TableCell className="px-4 py-3">{renderCell("nda_status")}</TableCell>
398+
<TableCell className="px-4 py-3">{renderCell("portfolio_website")}</TableCell>
399+
<TableCell className="px-4 py-3">{renderCell("date_joined")}</TableCell>
400+
<TableCell className="px-4 py-3">{renderCell("availability_status")}</TableCell>
401+
402+
{/* Actions - px-4 py-3 */}
403+
<TableCell className="px-4 py-3">
415404
<div className="flex space-x-2">
416-
{/* Save button */}
417405
<Button
418406
size="sm"
419407
onClick={handleSave}
@@ -422,7 +410,6 @@ export function EditableRow({
422410
>
423411
<Check className="text-black-100 h-4 w-4 dark:text-white" />
424412
</Button>
425-
{/* Cancel button */}
426413
<Button
427414
size="sm"
428415
variant="ghost"

0 commit comments

Comments
 (0)