···
9
+
export const defaultFilter = {
18
+
export type Filter = typeof defaultFilter;
export default async (require: WebpackRequireType) => {
const spacepack = require("spacepack_spacepack").spacepack;
const React = require("common_react");
···
await require.el(moduleId);
const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports;
44
+
const SortMenuClasses = spacepack.findByCode("container:", "clearText:")[0]
const FilterDialogClasses = spacepack.findByCode(
···
setSelectedTags(newState);
74
+
function FilterButtonPopout({
80
+
setFilter: (filter: Filter) => void;
81
+
closePopout: () => void;
88
+
} = require("common_components");
91
+
<div className={SortMenuClasses.container}>
92
+
<Menu navId="sort-filter" hideScrollbar={true} onClose={closePopout}>
93
+
<MenuGroup label="Type">
97
+
checked={filter.core}
98
+
action={() => setFilter({ ...filter, core: !filter.core })}
103
+
checked={filter.normal}
104
+
action={() => setFilter({ ...filter, normal: !filter.normal })}
109
+
checked={filter.developer}
111
+
setFilter({ ...filter, developer: !filter.developer })
115
+
<MenuGroup label="State">
119
+
checked={filter.enabled}
120
+
action={() => setFilter({ ...filter, enabled: !filter.enabled })}
125
+
checked={filter.disabled}
127
+
setFilter({ ...filter, disabled: !filter.disabled })
131
+
<MenuGroup label="Location">
135
+
checked={filter.installed}
137
+
setFilter({ ...filter, installed: !filter.installed })
143
+
checked={filter.repository}
145
+
setFilter({ ...filter, repository: !filter.repository })
152
+
className={SortMenuClasses.clearText}
154
+
<Text variant="text-sm/medium" color="none">
159
+
setFilter({ ...defaultFilter });
function TagButtonPopout({
···
return function FilterBar({
234
+
setFilter: (filter: Filter) => void;
selectedTags: Set<string>;
setSelectedTags: (tags: Set<string>) => void;
···
className={`${FilterBarClasses.tagsContainer} ${Margins.marginBottom8}`}
163
-
size={Button.Sizes.MIN}
164
-
color={Button.Colors.CUSTOM}
165
-
className={FilterBarClasses.sortDropdown}
166
-
innerClassName={FilterBarClasses.sortDropdownInner}
275
+
renderPopout={({ closePopout }: any) => (
276
+
<FilterButtonPopout
278
+
setFilter={setFilter}
279
+
closePopout={closePopout}
168
-
<ArrowsUpDownIcon />
170
-
className={FilterBarClasses.sortDropdownText}
171
-
variant="text-sm/medium"
172
-
color="interactive-normal"
176
-
<ChevronSmallDownIcon size={20} />
285
+
{(props: any, { isShown }: { isShown: boolean }) => (
288
+
size={Button.Sizes.MIN}
289
+
color={Button.Colors.CUSTOM}
290
+
className={FilterBarClasses.sortDropdown}
291
+
innerClassName={FilterBarClasses.sortDropdownInner}
293
+
<ArrowsUpDownIcon />
295
+
className={FilterBarClasses.sortDropdownText}
296
+
variant="text-sm/medium"
297
+
color="interactive-normal"
302
+
<ChevronSmallUpIcon size={20} />
304
+
<ChevronSmallDownIcon size={20} />
<div className={FilterBarClasses.divider} />
179
-
{/* TODO: make this scrollable with a ListNavigator */}
<div className={FilterBarClasses.tagList}>
<div ref={tagListInner} className={FilterBarClasses.tagListInner}>
{Object.keys(tagNames).map((tag) => (