Skip to content

Commit 88aa4b5

Browse files
committed
Add new actions to keep track of the state of Facets and options
1 parent 1ac33c7 commit 88aa4b5

File tree

1 file changed

+49
-16
lines changed

1 file changed

+49
-16
lines changed

src/lib/components/Facets/Facets.svelte

Lines changed: 49 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,14 @@
1111
export let showAll = false;
1212
export let open = false;
1313
14-
let selected: { [key: string]: SelectedFacetGroup };
15-
let selectedItems: {
16-
[key: string]: {
17-
[key: string]: boolean;
18-
};
19-
} = {};
20-
let selectedGroups: { [key: string]: boolean } = {};
14+
export const showMore = (groupName: string) => {
15+
const group: SelectedFacetGroup = selected[groupName];
2116
22-
const dispatch = createEventDispatcher();
17+
dispatch('showMoreOpenChange', {
18+
group: group.name,
19+
open: true
20+
});
2321
24-
const modalStore = getModalStore();
25-
const showMore = (group: SelectedFacetGroup) => {
2622
modalStore.trigger({
2723
type: 'component',
2824
title: `${group.displayName}`,
@@ -37,14 +33,50 @@
3733
});
3834
};
3935
36+
let selected: { [key: string]: SelectedFacetGroup };
37+
let selectedItems: {
38+
[key: string]: {
39+
[key: string]: boolean;
40+
};
41+
} = {};
42+
let selectedGroups: { [key: string]: boolean } = {};
43+
44+
const dispatch = createEventDispatcher();
45+
46+
const modalStore = getModalStore();
47+
4048
const handleSave = (group: SelectedFacetGroup) => {
41-
Object.keys(group.children).forEach((key) => {
42-
selectedItems[group.name][key] = group.children[key].selected || false;
49+
const { name: groupName, children } = group;
50+
51+
dispatch('showMoreOpenChange', {
52+
group: groupName,
53+
open: false
4354
});
55+
56+
for (const key in children) {
57+
const selectedValue = children[key].selected || false;
58+
selectedItems[groupName][key] = selectedValue;
59+
60+
if (selected[groupName].children[key].selected !== selectedValue) {
61+
selected[groupName].children[key].selected = selectedValue;
62+
}
63+
}
64+
65+
dispatch('showMoreSelect', [
66+
{
67+
parent: groupName,
68+
selected: Object.keys(children).map((key) => children[key].selected)
69+
}
70+
]);
71+
4472
modalStore.close();
4573
};
4674
47-
const handleCancel = () => {
75+
const handleCancel = (groupName: string) => {
76+
dispatch('showMoreOpenChange', {
77+
group: groupName,
78+
open: false
79+
});
4880
modalStore.close();
4981
};
5082
@@ -75,9 +107,10 @@
75107
});
76108
}
77109
78-
changed.length && dispatch('change', changed);
110+
changed.length && dispatch('facetSelect', changed);
79111
};
80112
113+
// Keeping the sorting function, but stays unused for now
81114
const sortOptions = () => {
82115
// Sort facets in a descending order if count exits, or sort alphabetically
83116
Object.keys(selected).forEach((group) => {
@@ -139,7 +172,7 @@
139172
});
140173
141174
$: displayedGroups = structuredClone($groups);
142-
$: selectedItems, mapSelected('items'), sortOptions();
175+
$: selectedItems, mapSelected('items'); // sortOptions(); // Sorting is not used for now
143176
$: selectedGroups, mapSelected('groups');
144177
</script>
145178

@@ -177,7 +210,7 @@
177210
<!-- Trigger for the Modal to view all options -->
178211
{#if group.children.length > 5}
179212
<TreeViewItem hyphenOpacity="opacity-0">
180-
<button class="anchor" on:click={() => showMore(selected[group.name])}>more</button
213+
<button class="anchor" on:click={() => showMore(group.name)}>more</button
181214
></TreeViewItem
182215
>
183216
{/if}

0 commit comments

Comments
 (0)