Skip to content

Commit 92ecc1d

Browse files
fix: various sorting and filtering issues
1 parent 8395c5c commit 92ecc1d

File tree

9 files changed

+25
-31
lines changed

9 files changed

+25
-31
lines changed

src/components/dash/filters/AddSort.svelte

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,10 @@
77
88
let {
99
type,
10-
list,
1110
sorts = $bindable(),
12-
groupList,
1311
}: {
1412
type: "members" | "groups"
15-
list: DashList<Member | Group>
1613
sorts: Sort[]
17-
groupList: DashList<Group>
1814
} = $props()
1915
2016
let sortMode: SortMode | null = $state(null)
@@ -34,7 +30,7 @@
3430
sortOrder
3531
)
3632
37-
sorts = [...sorts, sort]
33+
sorts.push(sort)
3834
3935
sortField = ""
4036
sortMode = null

src/components/dash/filters/FilterGroupHeader.svelte

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
import { IconTrash } from "@tabler/icons-svelte"
66
77
let {
8-
group,
9-
list,
10-
groupList,
8+
group = $bindable(),
9+
list = $bindable(),
1110
}: {
1211
group: FilterGroup
1312
list: DashList<Member | Group>
@@ -37,7 +36,7 @@
3736
<button
3837
class="text-muted hover:text-error hover:scale-110 transition-all focus:text-error focus:scale-110 btn-circle btn-xs"
3938
onclick={() => {
40-
list.filters = list.filters.filter((g) => g.id !== group.id)
39+
list.filters.splice(list.filters.indexOf(group), 1)
4140
}}
4241
aria-label="Delete filter group"><IconTrash /></button
4342
>

src/components/dash/filters/FilterGroups.svelte

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import { flip } from "svelte/animate"
1111
1212
let {
13-
list,
13+
list = $bindable(),
1414
memberList,
1515
groupList,
1616
}: {
@@ -84,7 +84,7 @@
8484
{/if}
8585
</div>
8686
<ul class="flex flex-col p-2 rounded-r-lg gap-2 flex-1">
87-
<FilterGroupHeader {list} {group} {groupList} />
87+
<FilterGroupHeader bind:list bind:group={list.filters[index]} {groupList} />
8888
{#if group.filters.length === 0}
8989
<div class="text-sm text-muted">
9090
<span>No filters in this group.</span>
@@ -120,8 +120,8 @@
120120
{/if}
121121
</div>
122122
<div class="flex flex-col p-2 gap-2 flex-1">
123-
<StaticFilterHeader {list} {filter} {group} {groupList} />
124-
<FilterInfo {filter} {list} {memberList} {groupList} />
123+
<StaticFilterHeader {list} bind:filter={list.filters[index].filters[i]} bind:group={list.filters[index]} {groupList} />
124+
<FilterInfo bind:filter={list.filters[index].filters[i]} {list} {memberList} {groupList} />
125125
</div>
126126
</li>
127127
{/each}

src/components/dash/filters/FilterHeader.svelte

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@
1212
import { IconTrash } from "@tabler/icons-svelte"
1313
1414
let {
15-
filter,
16-
group,
17-
list,
18-
groupList,
15+
filter = $bindable(),
16+
group = $bindable(),
1917
}: {
2018
filter: Filter
2119
group: FilterGroup
@@ -108,7 +106,7 @@
108106
<button
109107
class="text-muted hover:text-error hover:scale-110 transition-all focus:text-error focus:scale-110 btn-circle btn-xs"
110108
onclick={() => {
111-
group.filters = group.filters.filter((f) => f.id !== filter.id)
109+
group.filters.splice(group.filters.indexOf(filter), 1)
112110
}}
113111
aria-label="Delete filter"
114112
>

src/components/dash/filters/FilterInfo.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import Svelecte from "svelecte"
1212
1313
let {
14-
filter,
14+
filter = $bindable(),
1515
list,
1616
groupList,
1717
memberList,

src/components/dash/filters/Sorts.svelte

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@
77
import { flip } from "svelte/animate"
88
99
let {
10-
list,
11-
groupList,
10+
list = $bindable(),
1211
}: {
1312
list: DashList<Member | Group>
14-
groupList: DashList<Group>
1513
} = $props()
1614
1715
const moveSort = (sort: Sort, shift: 1 | -1) => {
@@ -79,7 +77,7 @@
7977
<button
8078
class="text-muted hover:text-error hover:scale-110 transition-all focus:text-error focus:scale-110 btn-circle btn-xs"
8179
onclick={() => {
82-
list.sorts = list.sorts.filter((s) => s.id !== sort.id)
80+
list.sorts.splice(list.sorts.indexOf(sort), 1)
8381
}}
8482
aria-label="Delete sort"
8583
>

src/components/dash/groups/GroupControls.svelte

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import { ViewType } from "$lib/dash/settings.svelte"
1212
1313
let {
14-
list,
14+
list = $bindable(),
1515
memberList,
1616
privacyMode,
1717
simpleOnly = false,
@@ -33,6 +33,9 @@
3333
if (dash.settings.display?.keepOpen && list.settings.view.type === ViewType.COLLAPSE) {
3434
list.settings.viewType = ViewType.OPEN
3535
}
36+
37+
let filterGroups = $state(list.filters)
38+
let sorts = $state(list.sorts)
3639
</script>
3740

3841
<div class="flex flex-col-reverse sm:flex-row sm:justify-between">
@@ -105,16 +108,16 @@
105108
{privacyMode}
106109
groupList={list}
107110
{memberList}
108-
bind:filterGroups={list.filters}
111+
bind:filterGroups
109112
{list}
110113
type="groups"
111114
/>
112115
<FilterGroups groupList={list} {list} {memberList} />
113116
</div>
114117
<div class="flex flex-col gap-2">
115118
<h3 class="text-xl">Sort list</h3>
116-
<AddSort groupList={list} bind:sorts={list.sorts} {list} type="groups" />
117-
<Sorts groupList={list} {list} />
119+
<AddSort bind:sorts type="groups" />
120+
<Sorts bind:list />
118121
</div>
119122
</div>
120123
{/if}

src/components/dash/groups/GroupHome.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
>
1919
<div class={dash.settings.display?.forceControlsAtTop === true ? "" : "xl:w-1/3"}>
2020
<div class="box bg-base-100 h-min">
21-
<GroupControls privacyMode={dash.privacyMode} list={dash.groups} memberList={dash.members} wide={dash.settings.display?.forceControlsAtTop === true} />
21+
<GroupControls privacyMode={dash.privacyMode} bind:list={dash.groups} memberList={dash.members} wide={dash.settings.display?.forceControlsAtTop === true} />
2222
</div>
2323
{#if dash.groups.settings.filterMode === "advanced"}
2424
<CopyPermaLink tab="groups" />

src/components/dash/members/MemberControls.svelte

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,12 @@
118118
{list}
119119
type="members"
120120
/>
121-
<FilterGroups {groupList} {list} memberList={list} />
121+
<FilterGroups {groupList} bind:list memberList={list} />
122122
</div>
123123
<div class="flex flex-col gap-2">
124124
<h3 class="text-xl">Sort list</h3>
125-
<AddSort {groupList} bind:sorts {list} type="members" />
126-
<Sorts {groupList} {list} />
125+
<AddSort bind:sorts type="members" />
126+
<Sorts bind:list />
127127
</div>
128128
</div>
129129
{/if}

0 commit comments

Comments
 (0)