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.

30 lines
861 B

  1. <script lang="ts">
  2. import type { GroupResult } from "../models/group";
  3. export let value = "";
  4. export let name = "";
  5. export let disabled = false;
  6. export let optional = false;
  7. export let optionalLabel = "None";
  8. export let group: GroupResult = null;
  9. $: {
  10. if (group != null && !group.items.find(t => t.id === value)) {
  11. if (optional) {
  12. value = "";
  13. } else {
  14. value = group.items[0]?.id || "";
  15. }
  16. }
  17. }
  18. </script>
  19. <select name={name} bind:value={value} disabled={disabled || group == null || group.items.length === 0}>
  20. {#if optional}
  21. <option value={""} selected={"" === value}>{optionalLabel}</option>
  22. {/if}
  23. {#if group != null}
  24. {#each group.items as item (item.id)}
  25. <option value={item.id} selected={item.id === value}>{item.name} ({item.groupWeight})</option>
  26. {/each}
  27. {/if}
  28. </select>