feat: add quick-assign action from people list with person preselected
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
import { zodResolver } from "@hookform/resolvers/zod"
|
import { zodResolver } from "@hookform/resolvers/zod"
|
||||||
import { useRouter } from "next/navigation"
|
import { useRouter, useSearchParams } from "next/navigation"
|
||||||
import { useMemo } from "react"
|
import { useMemo } from "react"
|
||||||
import { useForm } from "react-hook-form"
|
import { useForm } from "react-hook-form"
|
||||||
import { toast } from "sonner"
|
import { toast } from "sonner"
|
||||||
@@ -37,6 +37,8 @@ export default function CreateAssignmentForm({
|
|||||||
schemaCopy,
|
schemaCopy,
|
||||||
submitButtonCopy,
|
submitButtonCopy,
|
||||||
}: Props) {
|
}: Props) {
|
||||||
|
const searchParams = useSearchParams()
|
||||||
|
const personId = searchParams.get("personId")
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
const schema = useMemo(
|
const schema = useMemo(
|
||||||
@@ -52,6 +54,9 @@ export default function CreateAssignmentForm({
|
|||||||
} = useForm<CreateAssignmentFormType>({
|
} = useForm<CreateAssignmentFormType>({
|
||||||
resolver: zodResolver(schema),
|
resolver: zodResolver(schema),
|
||||||
mode: "onSubmit",
|
mode: "onSubmit",
|
||||||
|
defaultValues: {
|
||||||
|
personId: personId ?? "",
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const itemId = watch("itemId")
|
const itemId = watch("itemId")
|
||||||
@@ -86,6 +91,7 @@ export default function CreateAssignmentForm({
|
|||||||
</label>
|
</label>
|
||||||
<select
|
<select
|
||||||
id="personId"
|
id="personId"
|
||||||
|
disabled={!!personId}
|
||||||
{...register("personId")}
|
{...register("personId")}
|
||||||
className={`w-full rounded-lg border px-4 py-2 ${
|
className={`w-full rounded-lg border px-4 py-2 ${
|
||||||
errors.personId ? "border-error" : ""
|
errors.personId ? "border-error" : ""
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Eye, Pencil } from "lucide-react"
|
import { Eye, Pencil, UserPlus } from "lucide-react"
|
||||||
import Link from "next/link"
|
import Link from "next/link"
|
||||||
|
|
||||||
import PageHeader from "@/components/common/pageheader"
|
import PageHeader from "@/components/common/pageheader"
|
||||||
@@ -130,6 +130,19 @@ export default async function PeoplePage(props: {
|
|||||||
<Pencil />
|
<Pencil />
|
||||||
</Button>
|
</Button>
|
||||||
</Link>
|
</Link>
|
||||||
|
<Link
|
||||||
|
href={`/assignments/new?personId=${person.id}`}
|
||||||
|
passHref
|
||||||
|
>
|
||||||
|
<Button
|
||||||
|
className="btn btn-primary"
|
||||||
|
variant="outline"
|
||||||
|
size="icon"
|
||||||
|
aria-label={copy.list.actions.edit}
|
||||||
|
>
|
||||||
|
<UserPlus />
|
||||||
|
</Button>
|
||||||
|
</Link>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
))}
|
))}
|
||||||
|
|||||||
Reference in New Issue
Block a user