Make issue state button reactive to issue state

This commit is contained in:
Rūdolfs Ošiņš
2024-11-05 15:51:54 +01:00
parent 34c64809e2
commit 4428a4576c
2 changed files with 11 additions and 7 deletions
+9 -5
View File
@@ -14,10 +14,10 @@
const {
save,
...rest
issueState,
}: {
state: State;
save: (state: State) => Promise<void>;
issueState: State;
} = $props();
const actions: { caption: string; state: State }[] = [
@@ -29,10 +29,14 @@
{ caption: "Close as other", state: { status: "closed", reason: "other" } },
];
// Pick a default for the action button when the issue state changes.
let selectedAction = $state(
rest.state.status === "open" ? actions[1] : actions[0],
issueState.status === "open" ? actions[1] : actions[0],
);
// React to state changes that come from outside of this button.
$effect(() => {
selectedAction = issueState.status === "open" ? actions[1] : actions[0];
});
</script>
<style>
@@ -65,7 +69,7 @@
{#snippet popover()}
<Border variant="ghost">
<DropdownList
items={actions.filter(a => !isEqual(a.state, rest.state))}>
items={actions.filter(a => !isEqual(a.state, issueState))}>
{#snippet item(action)}
<DropdownListItem
selected={isEqual(selectedAction, action)}
+2 -2
View File
@@ -404,7 +404,7 @@
updatedTitle = issue.title;
editingTitle = !editingTitle;
}} />
<IssueStateButton state={issue.state} save={saveState} />
<IssueStateButton issueState={issue.state} save={saveState} />
</div>
</div>
{:else}
@@ -416,7 +416,7 @@
styleCursor="pointer"
name="pen"
onclick={() => (editingTitle = !editingTitle)} />
<IssueStateButton state={issue.state} save={saveState} />
<IssueStateButton issueState={issue.state} save={saveState} />
</div>
{/if}
</div>