You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.2 KiB

4 years ago
  1. <script lang="ts">
  2. import type { IconName } from "../external/icons";
  3. import { iconNames } from "../external/icons";
  4. import Icon from "./Icon.svelte";
  5. export let value: IconName;
  6. export let disabled: boolean;
  7. </script>
  8. <div class:disabled class="icon-select">
  9. {#each iconNames as iconName (iconName)}
  10. <div class="icon-item" class:selected={value===iconName} on:click={() => {if (!disabled) { value = iconName }}}>
  11. <Icon name={iconName} />
  12. </div>
  13. {/each}
  14. </div>
  15. <style>
  16. div.icon-select {
  17. background: #222;
  18. margin: 0;
  19. padding: 0;
  20. border-radius: 0.05em;
  21. margin-bottom: 0.5em;
  22. }
  23. div.icon-select.disabled {
  24. background: #444;
  25. }
  26. div.icon-item {
  27. display: inline-block;
  28. box-sizing: border-box;
  29. width: calc(100% / 8);
  30. padding: 0.35em 0 0.25em 0;
  31. text-align: center;
  32. cursor: pointer;
  33. }
  34. div.icon-item:hover {
  35. background-color: #292929;
  36. }
  37. div.icon-item.selected {
  38. background-color: rgb(18, 63, 75);
  39. }
  40. div.icon-item.selected:hover {
  41. background-color: rgb(24, 83, 99);
  42. }
  43. div.icon-select.disabled > div.icon-item {
  44. background-color: #444;
  45. cursor: default;
  46. }
  47. div.icon-select.disabled > div.icon-item.selected {
  48. background-color: #555;
  49. }
  50. </style>