edit-name-input.svelte 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <script lang="ts">
  2. import { PersonResponseDto, api } from '@api';
  3. import { createEventDispatcher } from 'svelte';
  4. import ImageThumbnail from '../assets/thumbnail/image-thumbnail.svelte';
  5. import Button from '../elements/buttons/button.svelte';
  6. export let person: PersonResponseDto;
  7. export let name: string;
  8. export let suggestedPeople = false;
  9. const dispatch = createEventDispatcher<{
  10. change: string;
  11. cancel: void;
  12. }>();
  13. </script>
  14. <div
  15. class="flex w-full place-items-center {suggestedPeople
  16. ? 'rounded-t-lg border-b dark:border-immich-dark-gray'
  17. : 'rounded-lg'} bg-gray-100 p-2 dark:bg-gray-700"
  18. >
  19. <ImageThumbnail
  20. circle
  21. shadow
  22. url={api.getPeopleThumbnailUrl(person.id)}
  23. altText={person.name}
  24. widthStyle="2rem"
  25. heightStyle="2rem"
  26. />
  27. <form
  28. class="ml-4 flex w-full justify-between gap-16"
  29. autocomplete="off"
  30. on:submit|preventDefault={() => dispatch('change', name)}
  31. >
  32. <!-- svelte-ignore a11y-autofocus -->
  33. <input
  34. autofocus
  35. class="w-full gap-2 bg-gray-100 dark:bg-gray-700 dark:text-white"
  36. type="text"
  37. placeholder="New name or nickname"
  38. bind:value={name}
  39. />
  40. <Button size="sm" type="submit">Done</Button>
  41. </form>
  42. </div>