fix: require explicit business form choices
This commit is contained in:
@@ -36,7 +36,6 @@ export function OrganizationInviteDialog({
|
||||
() => roles.filter((role) => role.scope === "organization" && role.organizationId === organization.id && role.isEnabled),
|
||||
[organization.id, roles],
|
||||
);
|
||||
const defaultRoleId = organizationRoles.find((role) => role.key === "caregiver")?.id ?? organizationRoles[0]?.id ?? "";
|
||||
|
||||
function closeDialog(): void {
|
||||
if (isPending) {
|
||||
@@ -52,14 +51,20 @@ export function OrganizationInviteDialog({
|
||||
event.preventDefault();
|
||||
setMessage("");
|
||||
setLastInviteHref("");
|
||||
setIsPending(true);
|
||||
const formData = new FormData(event.currentTarget);
|
||||
const roleId = String(formData.get("roleId") ?? "");
|
||||
if (!roleId) {
|
||||
setMessage("请选择邀请角色");
|
||||
return;
|
||||
}
|
||||
|
||||
setIsPending(true);
|
||||
const response = await fetch(`/api/organizations/${organization.id}/invitations`, {
|
||||
method: "POST",
|
||||
headers: { "content-type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
email: String(formData.get("email") ?? ""),
|
||||
roleId: String(formData.get("roleId") ?? ""),
|
||||
roleId,
|
||||
}),
|
||||
});
|
||||
const result = (await response.json()) as ApiResult<{ invitation: OrganizationInvitation }>;
|
||||
@@ -94,11 +99,14 @@ export function OrganizationInviteDialog({
|
||||
<span className="font-medium">角色</span>
|
||||
<Select
|
||||
aria-label="邀请角色"
|
||||
defaultValue={defaultRoleId}
|
||||
defaultValue=""
|
||||
disabled={organizationRoles.length === 0}
|
||||
key={organization.id}
|
||||
name="roleId"
|
||||
options={organizationRoles.map((role) => ({ value: role.id, label: role.label }))}
|
||||
options={[
|
||||
{ value: "", label: "选择邀请角色", disabled: true },
|
||||
...organizationRoles.map((role) => ({ value: role.id, label: role.label })),
|
||||
]}
|
||||
required
|
||||
/>
|
||||
</label>
|
||||
@@ -125,7 +133,7 @@ export function OrganizationInviteDialog({
|
||||
<Button disabled={isPending} onClick={closeDialog} type="button" variant="outline">
|
||||
取消
|
||||
</Button>
|
||||
<Button disabled={isPending || !defaultRoleId} type="submit">
|
||||
<Button disabled={isPending || organizationRoles.length === 0} type="submit">
|
||||
<Send className="size-4" aria-hidden="true" />
|
||||
生成邀请
|
||||
</Button>
|
||||
|
||||
Reference in New Issue
Block a user