import { jsx, jsxs } from "react/jsx-runtime"; import { B as Badge } from "./badge-J-zeQvMg.js"; import { B as Button } from "./button-CdJZJLGw.js"; import { D as DropdownMenu, a as DropdownMenuTrigger, b as DropdownMenuContent, c as DropdownMenuItem } from "./dropdown-menu-msun3TP8.js"; import { Link } from "@inertiajs/react"; import { format } from "date-fns"; import { CheckCircle, AlertCircle, Clock, MoreVertical, Eye, Pencil } from "lucide-react"; import AssignmentForm from "./assignment-form-Bs7_RhfV.js"; import "@radix-ui/react-slot"; import "class-variance-authority"; import "./utils-DLCPGU0v.js"; import "clsx"; import "tailwind-merge"; import "react"; import "@radix-ui/react-dropdown-menu"; import "./datetime-picker-BRbsgYE_.js"; import "react-day-picker"; import "./popover-Cv6Hz_y0.js"; import "@radix-ui/react-popover"; import "./select-BYx0MCUK.js"; import "@radix-ui/react-select"; import "./use-lang-44ndmTOc.js"; import "./input-error-D1JIzedA.js"; import "./loading-button-CCIxhJrY.js"; import "./checkbox--3Zj5G-w.js"; import "@radix-ui/react-checkbox"; import "./dialog-DGP_3dPQ.js"; import "@radix-ui/react-dialog"; import "./input-BsvJqbcd.js"; import "./label-0rIIfpX0.js"; import "@radix-ui/react-label"; import "./scroll-area-CDdrLubh.js"; import "@radix-ui/react-scroll-area"; import "./inertia-BtwbgBI3.js"; import "richtor"; /* empty css */ const AssignmentTableColumn = (slug, translate, enrollmentsCount) => { const { table } = translate; return [ { accessorKey: "title", header: "Assignment Details", cell: ({ row }) => { const assignment = row.original; return /* @__PURE__ */ jsxs("div", { className: "space-y-1 py-2", children: [ /* @__PURE__ */ jsx("p", { className: "text-base font-semibold", children: assignment.title }), /* @__PURE__ */ jsxs("div", { className: "text-muted-foreground flex flex-wrap items-center gap-3 text-xs", children: [ /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [ /* @__PURE__ */ jsx(CheckCircle, { className: "h-3 w-3" }), "Total: ", assignment.total_mark ] }), /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [ "Pass: ", assignment.pass_mark ] }), /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [ "Retakes: ", assignment.retake ] }) ] }) ] }); } }, { accessorKey: "deadline", header: "Deadline", cell: ({ row }) => { const deadline = row.getValue("deadline"); const isExpired = /* @__PURE__ */ new Date() > new Date(deadline); return /* @__PURE__ */ jsxs("div", { className: "py-2", children: [ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [ isExpired ? /* @__PURE__ */ jsx(AlertCircle, { className: "text-destructive h-4 w-4 flex-shrink-0" }) : /* @__PURE__ */ jsx(Clock, { className: "text-primary h-4 w-4 flex-shrink-0" }), /* @__PURE__ */ jsxs("div", { children: [ /* @__PURE__ */ jsx("p", { className: `text-sm font-medium ${isExpired ? "text-destructive" : ""}`, children: format(new Date(deadline), "MMM dd, yyyy") }), /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: format(new Date(deadline), "hh:mm a") }) ] }) ] }), isExpired && /* @__PURE__ */ jsx(Badge, { variant: "destructive", className: "mt-1 text-xs", children: "Expired" }) ] }); } }, { accessorKey: "late_submission", header: () => /* @__PURE__ */ jsx("div", { className: "text-center", children: "Late Submission" }), cell: ({ row }) => { const assignment = row.original; const lateAllowed = assignment.late_submission; return /* @__PURE__ */ jsxs("div", { className: "py-2 text-center", children: [ /* @__PURE__ */ jsx(Badge, { variant: lateAllowed ? "default" : "secondary", children: lateAllowed ? "Allowed" : "Not Allowed" }), lateAllowed && assignment.late_deadline && /* @__PURE__ */ jsxs("div", { className: "text-muted-foreground mt-1 text-xs", children: [ "Until: ", format(new Date(assignment.late_deadline), "MMM dd") ] }) ] }); } }, { accessorKey: "submissions", header: () => /* @__PURE__ */ jsx("div", { className: "text-center", children: "Submissions" }), cell: ({ row }) => { var _a, _b; const assignment = row.original; const totalSubmissions = ((_a = assignment.submissions) == null ? void 0 : _a.length) || 0; ((_b = assignment.submissions) == null ? void 0 : _b.filter((s) => s.status === "graded").length) || 0; return /* @__PURE__ */ jsxs("div", { className: "py-2 text-center", children: [ /* @__PURE__ */ jsx("span", { className: "font-semibold", children: totalSubmissions }), " of ", /* @__PURE__ */ jsx("span", { className: "font-semibold", children: enrollmentsCount }) ] }); } }, { id: "actions", header: () => /* @__PURE__ */ jsx("div", { className: "text-end", children: table.action }), cell: ({ row }) => { const assignment = row.original; return /* @__PURE__ */ jsx("div", { className: "flex justify-end py-2", children: /* @__PURE__ */ jsxs(DropdownMenu, { children: [ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { variant: "secondary", size: "sm", className: "h-8 w-8 p-0", children: [ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Open menu" }), /* @__PURE__ */ jsx(MoreVertical, { className: "h-4 w-4" }) ] }) }), /* @__PURE__ */ jsxs(DropdownMenuContent, { align: "end", className: "space-y-1", children: [ /* @__PURE__ */ jsx(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxs( Link, { href: route("courses.edit", { course: assignment.course_id, tab: slug, assignment: assignment.id }), className: "flex w-full cursor-pointer items-center gap-2", children: [ /* @__PURE__ */ jsx(Eye, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", { children: "View Submissions" }) ] } ) }), /* @__PURE__ */ jsx( AssignmentForm, { title: "Update Assignment", assignment, handler: /* @__PURE__ */ jsxs(DropdownMenuItem, { onSelect: (e) => e.preventDefault(), className: "flex w-full cursor-pointer items-center gap-2", children: [ /* @__PURE__ */ jsx(Pencil, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", { children: "Update Assignment" }) ] }) } ) ] }) ] }) }); } } ]; }; export { AssignmentTableColumn as default };