Skip to content

Commit 5427665

Browse files
Use && for filter groups and || for group members
1 parent 9c944ac commit 5427665

File tree

1 file changed

+37
-31
lines changed

1 file changed

+37
-31
lines changed

scala3doc/resources/dotty_res/scripts/components/DocumentableList.js

Lines changed: 37 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/**
22
* @typedef { import("./Filter").Filter } Filter
33
* @typedef { { ref: Element; name: string; description: string } } ListElement
4+
* @typedef { [key: string, value: string][] } Dataset
45
*/
56

67
class DocumentableList extends Component {
@@ -132,37 +133,42 @@ class List {
132133
}
133134

134135
function areFiltersFromElementSelected() {
135-
/** @type { [key: string, value: string][] } */
136-
const dataset = Object.entries(elementData.ref.dataset)
137-
138-
const datasetWithFilterData = dataset.filter(([key]) => isFilterData(key));
139-
140-
return hasCorrespondingFilters() || haveDefaultFilters()
141-
142-
function haveDefaultFilters() {
143-
return (
144-
Object.entries(Filter.defaultFilters).some(([key, value]) => {
145-
const filterKey = getFilterKey(key)
146-
147-
return (
148-
filter.filters[filterKey] &&
149-
filter.filters[filterKey][value].selected &&
150-
!dataset.some(([k]) => k === filterKey)
151-
)
152-
}
153-
)
154-
)
155-
}
156-
157-
// check if any selected filter is on data attr
158-
function hasCorrespondingFilters() {
159-
return datasetWithFilterData
160-
.some(([filterKey, value]) =>
161-
value.split(",").some(val =>
162-
filter.filters[filterKey] && filter.filters[filterKey][val].selected
163-
)
164-
)
165-
}
136+
/** @type { Dataset } */
137+
const dataset = Object.entries(elementData.ref.dataset)
138+
139+
/** @type { Dataset } */
140+
const defaultFilters = Object.entries(Filter.defaultFilters)
141+
.filter(([key]) => !!filter.filters[getFilterKey(key)])
142+
143+
/** @type { Dataset } */
144+
const defaultFiltersForMembersWithoutDataAttribute =
145+
defaultFilters.reduce((acc, [key, value]) => {
146+
const filterKey = getFilterKey(key)
147+
const shouldAddDefaultFilter = !dataset.some(([k]) => k === filterKey)
148+
return shouldAddDefaultFilter ? [...acc, [filterKey, value]] : acc
149+
}, [])
150+
151+
/** @type { Dataset } */
152+
const datasetWithAppendedDefaultFilters = dataset
153+
.filter(([k]) => isFilterData(k))
154+
.map(([k, v]) => {
155+
const defaultFilter = defaultFilters.find(([defaultKey]) => defaultKey === k)
156+
return defaultFilter ? [k, `${v},${defaultFilter[1]}`] : [k, v]
157+
})
158+
159+
const datasetWithDefaultFilters = [
160+
...defaultFiltersForMembersWithoutDataAttribute,
161+
...datasetWithAppendedDefaultFilters
162+
]
163+
164+
const isVisible = datasetWithDefaultFilters
165+
.every(([filterKey, value]) => {
166+
const filterGroup = filter.filters[filterKey]
167+
168+
return value.split(",").some(v => filterGroup && filterGroup[v].selected)
169+
})
170+
171+
return isVisible
166172
}
167173
}
168174

0 commit comments

Comments
 (0)