Skip to content

Commit 56f6264

Browse files
committed
feat: reverse selection for search panel
1 parent e12ea42 commit 56f6264

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

packages/devtools/src/app/components/data/SearchPanel.vue

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,27 @@ function toggleRule(rule: FilterMatchRule) {
4646
model.value.selected = null
4747
}
4848
}
49+
50+
function reverseSelect() {
51+
if (model?.value?.selected?.length === props.rules.length) {
52+
model.value.selected = null
53+
}
54+
else if (model?.value?.selected == null) {
55+
model.value.selected = []
56+
}
57+
else {
58+
model.value.selected = props.rules.map(r => r.name).filter(r => !model.value.selected?.includes(r))
59+
}
60+
}
61+
62+
function unselectToggle() {
63+
if (model?.value?.selected?.length === 0) {
64+
model.value.selected = null
65+
}
66+
else {
67+
model.value.selected = []
68+
}
69+
}
4970
</script>
5071

5172
<template>
@@ -78,6 +99,28 @@ function toggleRule(rule: FilterMatchRule) {
7899
<div :class="rule.icon" icon-catppuccin />
79100
<div text-sm>{{ rule.description || rule.name }}</div>
80101
</label>
102+
<button
103+
rounded-md px2 py1
104+
flex="~ items-center gap-1"
105+
select-none
106+
hover="bg-active"
107+
@click="reverseSelect"
108+
>
109+
<div text-xs op50>
110+
Reverse
111+
</div>
112+
</button>
113+
<button
114+
rounded-md px2 py1
115+
flex="~ items-center gap-1"
116+
select-none
117+
hover="bg-active"
118+
@click="unselectToggle"
119+
>
120+
<div text-xs op50>
121+
{{ model.selected?.length === 0 ? 'Select All' : 'Unselect All' }}
122+
</div>
123+
</button>
81124
</div>
82125
<slot />
83126
</div>

0 commit comments

Comments
 (0)