mirror of
https://github.com/emailerfacu-spec/minix-front.git
synced 2026-04-20 16:17:32 -03:00
cocinada interfaz del dar admin
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
import Button from './ui/button/button.svelte';
|
import Button from './ui/button/button.svelte';
|
||||||
import KeyIcon from '@lucide/svelte/icons/key';
|
import KeyIcon from '@lucide/svelte/icons/key';
|
||||||
import UserPen from '@lucide/svelte/icons/user-pen';
|
import UserPen from '@lucide/svelte/icons/user-pen';
|
||||||
|
import Shield from '@lucide/svelte/icons/shield';
|
||||||
import Search from '@lucide/svelte/icons/search';
|
import Search from '@lucide/svelte/icons/search';
|
||||||
import Plus from '@lucide/svelte/icons/plus';
|
import Plus from '@lucide/svelte/icons/plus';
|
||||||
import { Tooltip } from './ui/tooltip';
|
import { Tooltip } from './ui/tooltip';
|
||||||
@@ -27,6 +28,7 @@
|
|||||||
import InputGroupAddon from './ui/input-group/input-group-addon.svelte';
|
import InputGroupAddon from './ui/input-group/input-group-addon.svelte';
|
||||||
import InputGroupInput from './ui/input-group/input-group-input.svelte';
|
import InputGroupInput from './ui/input-group/input-group-input.svelte';
|
||||||
import AgregarUsuario from './admin/AgregarUsuario.svelte';
|
import AgregarUsuario from './admin/AgregarUsuario.svelte';
|
||||||
|
import DarAdmin from './admin/DarAdmin.svelte';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
usuarios: UserResponseDto[];
|
usuarios: UserResponseDto[];
|
||||||
@@ -36,8 +38,10 @@
|
|||||||
|
|
||||||
let open = $state(false);
|
let open = $state(false);
|
||||||
let openModificarUsuario = $state(false);
|
let openModificarUsuario = $state(false);
|
||||||
|
let openDarAdmin = $state(false);
|
||||||
let openBorrar = $state(false);
|
let openBorrar = $state(false);
|
||||||
|
let opencrearUsuario = $state(false);
|
||||||
|
|
||||||
let usuarioBorrar: UserResponseDto | null = $state(null);
|
let usuarioBorrar: UserResponseDto | null = $state(null);
|
||||||
|
|
||||||
//si ponia contraseña en español quedaba muy largo el nombre
|
//si ponia contraseña en español quedaba muy largo el nombre
|
||||||
@@ -45,6 +49,8 @@
|
|||||||
|
|
||||||
let usuarioModificar: UserResponseDto | null = $state(null);
|
let usuarioModificar: UserResponseDto | null = $state(null);
|
||||||
|
|
||||||
|
let usuarioDarAdmin: UserResponseDto | null = $state(null);
|
||||||
|
|
||||||
let search = $state('');
|
let search = $state('');
|
||||||
|
|
||||||
type SortKey = 'username' | 'displayName' | 'postsCount' | 'createdAt';
|
type SortKey = 'username' | 'displayName' | 'postsCount' | 'createdAt';
|
||||||
@@ -110,7 +116,11 @@
|
|||||||
usuarioBorrar = usuario;
|
usuarioBorrar = usuario;
|
||||||
}
|
}
|
||||||
|
|
||||||
let opencrearUsuario = $state(false);
|
function handleDarAdmin(usuario: UserResponseDto) {
|
||||||
|
openDarAdmin = true;
|
||||||
|
usuarioDarAdmin = usuario;
|
||||||
|
}
|
||||||
|
|
||||||
// $inspect(usuarios);
|
// $inspect(usuarios);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -119,7 +129,11 @@ let opencrearUsuario = $state(false);
|
|||||||
<InputGroupAddon align="inline-start"><Search></Search></InputGroupAddon>
|
<InputGroupAddon align="inline-start"><Search></Search></InputGroupAddon>
|
||||||
<InputGroupInput type="text" placeholder="Buscar usuario..." bind:value={search} />
|
<InputGroupInput type="text" placeholder="Buscar usuario..." bind:value={search} />
|
||||||
</InputGroup>
|
</InputGroup>
|
||||||
<Button onclick={() =>opencrearUsuario = !opencrearUsuario} variant="secondary" class="bg-blue-500/20"><Plus /></Button>
|
<Button
|
||||||
|
onclick={() => (opencrearUsuario = !opencrearUsuario)}
|
||||||
|
variant="secondary"
|
||||||
|
class="bg-blue-500/20"><Plus /></Button
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Table>
|
<Table>
|
||||||
@@ -191,6 +205,24 @@ let opencrearUsuario = $state(false);
|
|||||||
{/if}
|
{/if}
|
||||||
</TooltipContent>
|
</TooltipContent>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|
||||||
|
<Tooltip>
|
||||||
|
<TooltipTrigger>
|
||||||
|
<Button
|
||||||
|
onclick={() => handleDarAdmin(usuario)}
|
||||||
|
variant={usuario.isAdmin ? 'destructive' : 'default'}
|
||||||
|
>
|
||||||
|
<Shield />
|
||||||
|
</Button>
|
||||||
|
</TooltipTrigger>
|
||||||
|
<TooltipContent>
|
||||||
|
{#if usuario.isAdmin}
|
||||||
|
Sacar admin
|
||||||
|
{:else}
|
||||||
|
Dar Admin
|
||||||
|
{/if}
|
||||||
|
</TooltipContent>
|
||||||
|
</Tooltip>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
{/each}
|
{/each}
|
||||||
@@ -201,3 +233,4 @@ let opencrearUsuario = $state(false);
|
|||||||
<RecuperarContraseña bind:open usuario={usuarioCambioPass} />
|
<RecuperarContraseña bind:open usuario={usuarioCambioPass} />
|
||||||
<ModificarUsuario bind:open={openModificarUsuario} bind:usuario={usuarioModificar} />
|
<ModificarUsuario bind:open={openModificarUsuario} bind:usuario={usuarioModificar} />
|
||||||
<AgregarUsuario bind:open={opencrearUsuario} />
|
<AgregarUsuario bind:open={opencrearUsuario} />
|
||||||
|
<DarAdmin bind:open={openDarAdmin} usuario={usuarioDarAdmin} />
|
||||||
|
|||||||
37
src/lib/components/admin/DarAdmin.svelte
Normal file
37
src/lib/components/admin/DarAdmin.svelte
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<script>
|
||||||
|
import Button from '../ui/button/button.svelte';
|
||||||
|
import DialogContent from '../ui/dialog/dialog-content.svelte';
|
||||||
|
import DialogHeader from '../ui/dialog/dialog-header.svelte';
|
||||||
|
import DialogTitle from '../ui/dialog/dialog-title.svelte';
|
||||||
|
import Dialog from '../ui/dialog/dialog.svelte';
|
||||||
|
|
||||||
|
let { open = $bindable(), usuario } = $props();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<Dialog {open} onOpenChange={() => (open = false)}>
|
||||||
|
<DialogContent>
|
||||||
|
<DialogHeader>
|
||||||
|
<DialogTitle>Confirmar Admin</DialogTitle>
|
||||||
|
</DialogHeader>
|
||||||
|
<form
|
||||||
|
onsubmit={(e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{#if usuario}
|
||||||
|
<p>
|
||||||
|
{usuario.isAdmin
|
||||||
|
? '¿Estás seguro que quieres sacarle acceso de administrador al usuario '
|
||||||
|
: '¿Estás seguro que quieres dar acceso de administrador al usuario '}
|
||||||
|
<strong>{usuario.displayName}</strong>
|
||||||
|
(@{usuario.username})?
|
||||||
|
</p>
|
||||||
|
{/if}
|
||||||
|
<div class="mt-4 flex justify-between gap-2">
|
||||||
|
<Button type="submit">Confirmar</Button>
|
||||||
|
<Button variant="secondary" onclick={() => (open = false)}>Cancelar</Button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</DialogContent>
|
||||||
|
</Dialog>
|
||||||
@@ -78,7 +78,6 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</Label>
|
</Label>
|
||||||
</div>
|
</div>
|
||||||
<hr class="my-2" />
|
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<Button type="submit" disabled={cargando}>
|
<Button type="submit" disabled={cargando}>
|
||||||
{#if cargando}
|
{#if cargando}
|
||||||
|
|||||||
Reference in New Issue
Block a user