EditUserDialog.jsx 2.0 KB

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