EditUserDialog.jsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. "use client";
  2. import React from "react";
  3. import { Pencil } from "lucide-react";
  4. import {
  5. Dialog,
  6. DialogContent,
  7. DialogDescription,
  8. DialogHeader,
  9. DialogTitle,
  10. DialogTrigger,
  11. } from "@/components/ui/dialog";
  12. import { Button } from "@/components/ui/button";
  13. import EditUserForm from "@/components/admin/users/edit-user/EditUserForm";
  14. import { useEditUserDialog } from "@/components/admin/users/edit-user/useEditUserDialog";
  15. export default function EditUserDialog({ user, disabled = false, onUpdated }) {
  16. const {
  17. open,
  18. handleOpenChange,
  19. form,
  20. setPatch,
  21. error,
  22. branchesStatus,
  23. branchExistence,
  24. isSubmitting,
  25. effectiveDisabled,
  26. canSubmit,
  27. handleSubmit,
  28. } = useEditUserDialog({ user, disabled, onUpdated });
  29. // Defensive: if the row has no valid user object, do not render an action.
  30. if (!user || typeof user.id !== "string" || !user.id) return null;
  31. return (
  32. <Dialog open={open} onOpenChange={handleOpenChange}>
  33. <DialogTrigger asChild>
  34. <Button
  35. type="button"
  36. variant="outline"
  37. size="icon-sm"
  38. disabled={disabled}
  39. title="Benutzer bearbeiten"
  40. aria-label="Benutzer bearbeiten"
  41. >
  42. <Pencil className="h-4 w-4 text-amber-500 dark:text-amber-400" />
  43. </Button>
  44. </DialogTrigger>
  45. <DialogContent className="sm:max-w-xl">
  46. <DialogHeader>
  47. <DialogTitle>Benutzer bearbeiten</DialogTitle>
  48. <DialogDescription>
  49. Ändern Sie Benutzername, E-Mail, Rolle oder Niederlassung.
  50. </DialogDescription>
  51. </DialogHeader>
  52. <EditUserForm
  53. user={user}
  54. form={form}
  55. setPatch={setPatch}
  56. error={error}
  57. branchesStatus={branchesStatus}
  58. branchExistence={branchExistence}
  59. isSubmitting={isSubmitting}
  60. disabled={effectiveDisabled}
  61. canSubmit={canSubmit}
  62. onCancel={() => handleOpenChange(false)}
  63. onSubmit={handleSubmit}
  64. />
  65. </DialogContent>
  66. </Dialog>
  67. );
  68. }