|
11 | 11 | export let showAll = false;
|
12 | 12 | export let open = false;
|
13 | 13 |
|
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]; |
21 | 16 |
|
22 |
| - const dispatch = createEventDispatcher(); |
| 17 | + dispatch('showMoreOpenChange', { |
| 18 | + group: group.name, |
| 19 | + open: true |
| 20 | + }); |
23 | 21 |
|
24 |
| - const modalStore = getModalStore(); |
25 |
| - const showMore = (group: SelectedFacetGroup) => { |
26 | 22 | modalStore.trigger({
|
27 | 23 | type: 'component',
|
28 | 24 | title: `${group.displayName}`,
|
|
37 | 33 | });
|
38 | 34 | };
|
39 | 35 |
|
| 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 | +
|
40 | 48 | 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 |
43 | 54 | });
|
| 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 | +
|
44 | 72 | modalStore.close();
|
45 | 73 | };
|
46 | 74 |
|
47 |
| - const handleCancel = () => { |
| 75 | + const handleCancel = (groupName: string) => { |
| 76 | + dispatch('showMoreOpenChange', { |
| 77 | + group: groupName, |
| 78 | + open: false |
| 79 | + }); |
48 | 80 | modalStore.close();
|
49 | 81 | };
|
50 | 82 |
|
|
75 | 107 | });
|
76 | 108 | }
|
77 | 109 |
|
78 |
| - changed.length && dispatch('change', changed); |
| 110 | + changed.length && dispatch('facetSelect', changed); |
79 | 111 | };
|
80 | 112 |
|
| 113 | + // Keeping the sorting function, but stays unused for now |
81 | 114 | const sortOptions = () => {
|
82 | 115 | // Sort facets in a descending order if count exits, or sort alphabetically
|
83 | 116 | Object.keys(selected).forEach((group) => {
|
|
139 | 172 | });
|
140 | 173 |
|
141 | 174 | $: displayedGroups = structuredClone($groups);
|
142 |
| - $: selectedItems, mapSelected('items'), sortOptions(); |
| 175 | + $: selectedItems, mapSelected('items'); // sortOptions(); // Sorting is not used for now |
143 | 176 | $: selectedGroups, mapSelected('groups');
|
144 | 177 | </script>
|
145 | 178 |
|
|
177 | 210 | <!-- Trigger for the Modal to view all options -->
|
178 | 211 | {#if group.children.length > 5}
|
179 | 212 | <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 |
181 | 214 | ></TreeViewItem
|
182 | 215 | >
|
183 | 216 | {/if}
|
|
0 commit comments