From 6033425ba79b5b3d9c935245bf53683e6604f656 Mon Sep 17 00:00:00 2001 From: eti Date: Thu, 10 Sep 2026 00:20:01 +0200 Subject: [PATCH] web/components/repo: open the label pickers from their pen Signed-off-by: eti --- web/src/lib/components/repo/LabelPanel.svelte | 116 +++++++++--------- 1 file changed, 60 insertions(+), 56 deletions(-) diff --git a/web/src/lib/components/repo/LabelPanel.svelte b/web/src/lib/components/repo/LabelPanel.svelte index 08a488747..be7bbcb6a 100644 --- a/web/src/lib/components/repo/LabelPanel.svelte +++ b/web/src/lib/components/repo/LabelPanel.svelte @@ -53,15 +53,14 @@ onAssigneeChange }: Props = $props(); - let editingLabels = $state(false); - let editingAssignee = $state(false); - const pickedLabels = $derived(labels.map((label) => label.name)); const labelOptions = $derived( allLabels.map((label) => ({ value: label.name, label: label.name })) ); + const labelColors = $derived(new Map(allLabels.map((label) => [label.name, label.color]))); + const assigneeChoices = $derived( assigneeOptions .filter((person) => person.did !== undefined) @@ -99,37 +98,44 @@
{@render sectionHeading(labelsHeadingId, "Labels")} {#if canEdit} -
+ onLabelsChange?.( + pickedLabels.includes(name) + ? pickedLabels.filter((picked) => picked !== name) + : [...pickedLabels, name] + )} + label="Labels" + placeholder="Select labels" + searchPlaceholder="Filter labels…" + emptyLabel="No labels" + class="w-auto" > -
+ {#snippet trigger({ props })} +
+
+ {/snippet} + {#snippet option(choice)} + + {choice.label ?? choice.value} + {/snippet} + {/if}
- {#if canEdit && editingLabels} - - onLabelsChange?.( - pickedLabels.includes(name) - ? pickedLabels.filter((picked) => picked !== name) - : [...pickedLabels, name] - )} - label="Labels" - placeholder="Select labels" - searchPlaceholder="Filter labels…" - emptyLabel="No labels" - /> - {/if}
    {#each labels as label (label.name)}
  • @@ -158,34 +164,32 @@
    {@render sectionHeading(assigneeHeadingId, "Assignee")} {#if canEdit} -
    onAssigneeChange?.(did)} + label="Assignee" + placeholder="Select an assignee" + searchPlaceholder="Filter people…" + emptyLabel="No people" + class="w-auto" > -
    + {#snippet trigger({ props })} +
    +
    + {/snippet} + {/if}
    - {#if canEdit && editingAssignee} - { - editingAssignee = false; - onAssigneeChange?.(did); - }} - label="Assignee" - placeholder="Select an assignee" - searchPlaceholder="Filter people…" - emptyLabel="No people" - /> - {/if}
      {#if assignee}