|
1 | 1 | /* eslint-disable ember/no-computed-properties-in-native-classes, ember/classic-decorator-no-classic-methods */
|
2 |
| -import { action, computed } from '@ember/object'; |
| 2 | +import { action, computed, set, get } from '@ember/object'; |
3 | 3 | import { inject as service } from '@ember/service';
|
4 | 4 | import Controller from '@ember/controller';
|
| 5 | +import { A } from '@ember/array'; |
| 6 | +import { capitalize } from '@ember/string'; |
| 7 | +import { isEmpty } from '@ember/utils'; |
5 | 8 | import ParentNameMixin from 'ember-api-docs/mixins/parent-name';
|
6 |
| -import FilterParams from 'ember-api-docs/mixins/filter-params'; |
| 9 | + |
| 10 | +const filterTypes = ['inherited', 'protected', 'private', 'deprecated']; |
| 11 | +const DEFAULT_FILTER = 'inherited'; |
7 | 12 |
|
8 | 13 | export default class ClassController extends Controller.extend(
|
9 |
| - ParentNameMixin, |
10 |
| - FilterParams |
| 14 | + ParentNameMixin |
11 | 15 | ) {
|
12 | 16 | @service
|
13 | 17 | filterData;
|
14 | 18 |
|
| 19 | + queryParams = [{ visibilityFilter: 'show' }]; |
| 20 | + |
15 | 21 | @service
|
16 | 22 | legacyModuleMappings;
|
17 | 23 |
|
18 | 24 | @service
|
19 | 25 | metaStore;
|
20 | 26 |
|
| 27 | + @computed( |
| 28 | + 'filterData.{showInherited,showProtected,showPrivate,showDeprecated}' |
| 29 | + ) |
| 30 | + get visibilityFilter() { |
| 31 | + let appliedFilters = filterTypes |
| 32 | + .reduce((filters, filter) => { |
| 33 | + let filterValue = get(this, `filterData.show${capitalize(filter)}`) |
| 34 | + ? filter |
| 35 | + : null; |
| 36 | + filters.push(filterValue); |
| 37 | + return filters; |
| 38 | + }, A()) |
| 39 | + .compact(); |
| 40 | + |
| 41 | + if (isEmpty(appliedFilters)) { |
| 42 | + return DEFAULT_FILTER; |
| 43 | + } else { |
| 44 | + return appliedFilters.join(','); |
| 45 | + } |
| 46 | + } |
| 47 | + |
| 48 | + set visibilityFilter(value = '') { |
| 49 | + let filters = A(value.split(',')); |
| 50 | + filterTypes.forEach((filter) => { |
| 51 | + let enabled = filters.indexOf(filter) > -1; |
| 52 | + set(this, `filterData.show${capitalize(filter)}`, enabled); |
| 53 | + }); |
| 54 | + } |
| 55 | + |
21 | 56 | @computed('legacyModuleMappings.mappings', 'model.{module,name}')
|
22 | 57 | get hasImportExample() {
|
23 | 58 | return this.legacyModuleMappings.hasClassMapping(
|
|
0 commit comments