EditUserDialog.jsx 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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({
  16. user,
  17. disabled = false,
  18. onUpdated,
  19. onPasswordReset,
  20. temporaryPassword,
  21. onTemporaryPasswordChange,
  22. }) {
  23. const {
  24. open,
  25. handleOpenChange,
  26. form,
  27. setPatch,
  28. error,
  29. branchesStatus,
  30. branchExistence,
  31. isSubmitting,
  32. effectiveDisabled,
  33. canSubmit,
  34. handleSubmit,
  35. } = useEditUserDialog({ user, disabled, onUpdated });
  36. // Defensive: if the row has no valid user object, do not render an action.
  37. if (!user || typeof user.id !== "string" || !user.id) return null;
  38. return (
  39. <Dialog open={open} onOpenChange={handleOpenChange}>
  40. <DialogTrigger asChild>
  41. <Button
  42. type="button"
  43. variant="outline"
  44. size="icon-sm"
  45. disabled={disabled}
  46. title="Benutzer bearbeiten"
  47. aria-label="Benutzer bearbeiten"
  48. >
  49. <Pencil className="h-4 w-4 text-amber-500 dark:text-amber-400" />
  50. </Button>
  51. </DialogTrigger>
  52. <DialogContent className="sm:max-w-xl">
  53. <DialogHeader>
  54. <DialogTitle>Benutzer bearbeiten</DialogTitle>
  55. <DialogDescription>
  56. Ändern Sie Benutzername, E-Mail, Rolle oder Niederlassung.
  57. </DialogDescription>
  58. </DialogHeader>
  59. <EditUserForm
  60. user={user}
  61. form={form}
  62. setPatch={setPatch}
  63. error={error}
  64. branchesStatus={branchesStatus}
  65. branchExistence={branchExistence}
  66. isSubmitting={isSubmitting}
  67. disabled={effectiveDisabled}
  68. canSubmit={canSubmit}
  69. temporaryPassword={temporaryPassword}
  70. onTemporaryPasswordChange={onTemporaryPasswordChange}
  71. onPasswordReset={onPasswordReset}
  72. onCancel={() => handleOpenChange(false)}
  73. onSubmit={handleSubmit}
  74. />
  75. </DialogContent>
  76. </Dialog>
  77. );
  78. }