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.

29 lines
797 B

4 years ago
  1. <script lang="ts">
  2. import groupStore from "../stores/group";
  3. export let value = "";
  4. export let name = "";
  5. export let disabled = false;
  6. $: {
  7. if ($groupStore.stale && !$groupStore.loading) {
  8. groupStore.load();
  9. }
  10. }
  11. $: {
  12. if (!disabled && $groupStore.groups.length > 0 && value === "") {
  13. const nonEmpty = $groupStore.groups.find(g => g.items.length > 0);
  14. if (nonEmpty != null) {
  15. value = nonEmpty.id;
  16. } else {
  17. value = $groupStore.groups[0].id;
  18. }
  19. }
  20. }
  21. </script>
  22. <select disabled={disabled || $groupStore.loading} name={name} bind:value={value}>
  23. {#each $groupStore.groups as group (group.id)}
  24. <option value={group.id} selected={group.id === value}>{group.name} ({group.items.length} items)</option>
  25. {/each}
  26. </select>