EmojiSelector.svelte 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <script>
  2. export let emojis = [
  3. ...[...Array(50).keys()].map(i => ({
  4. id: `${i}`,
  5. url:
  6. "https://pbs.twimg.com/profile_images/1094633303196487687/AJ5HL3Tz_400x400.png",
  7. name: "asd"
  8. }))
  9. ];
  10. export let name = "";
  11. let selectedEmoji = "";
  12. function emojiSelected(e) {
  13. selectedEmoji = e.target.dataset.emojiId;
  14. }
  15. </script>
  16. <style>
  17. div.emoji-selector {
  18. @apply .flex .flex-wrap .bg-gray-800 .py-1 .px-1 .rounded .border .border-gray-900 w-1/3;
  19. &:focus {
  20. @apply .border-blue-500 .shadow;
  21. }
  22. & > div {
  23. @apply .rounded .mr-1 .mb-1;
  24. & > img {
  25. @apply .w-8 .h-auto;
  26. }
  27. &:hover {
  28. @apply .bg-gray-500;
  29. }
  30. &[data-selected="true"] {
  31. @apply .bg-gray-300;
  32. }
  33. }
  34. }
  35. </style>
  36. <div class="emoji-selector">
  37. <input required type="hidden" {name} value={selectedEmoji} />
  38. {#each emojis as emoji (emoji.id)}
  39. <div title={emoji.name} data-selected={selectedEmoji === emoji.id}>
  40. <img
  41. data-emoji-id={emoji.id}
  42. on:click={emojiSelected}
  43. alt="Emote {emoji.id}"
  44. src={emoji.url} />
  45. </div>
  46. {/each}
  47. </div>