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 ParentNameMixin from 'ember-api-docs/mixins/parent-name' ;
6
- import FilterParams from 'ember-api-docs/mixins/filter-params' ;
5
+ import { A } from '@ember/array' ;
6
+ import { capitalize } from '@ember/string' ;
7
+ import { isEmpty } from '@ember/utils' ;
8
+ import { parentName } from '../../../utils/parent-name' ;
9
+
10
+ const filterTypes = [ 'inherited' , 'protected' , 'private' , 'deprecated' ] ;
11
+ const DEFAULT_FILTER = 'inherited' ;
12
+
13
+ export default class ClassController extends Controller {
14
+ /** @type {import('@ember/routing/router-service').default } */
15
+ @service
16
+ router ;
7
17
8
- export default class ClassController extends Controller . extend (
9
- ParentNameMixin ,
10
- FilterParams
11
- ) {
12
18
@service
13
19
filterData ;
14
20
21
+ queryParams = [ { visibilityFilter : 'show' } ] ;
22
+
15
23
@service
16
24
legacyModuleMappings ;
17
25
18
26
@service
19
27
metaStore ;
20
28
29
+ @computed (
30
+ 'filterData.{showInherited,showProtected,showPrivate,showDeprecated}'
31
+ )
32
+ get visibilityFilter ( ) {
33
+ let appliedFilters = filterTypes
34
+ . reduce ( ( filters , filter ) => {
35
+ let filterValue = get ( this , `filterData.show${ capitalize ( filter ) } ` )
36
+ ? filter
37
+ : null ;
38
+ filters . push ( filterValue ) ;
39
+ return filters ;
40
+ } , A ( ) )
41
+ . compact ( ) ;
42
+
43
+ if ( isEmpty ( appliedFilters ) ) {
44
+ return DEFAULT_FILTER ;
45
+ } else {
46
+ return appliedFilters . join ( ',' ) ;
47
+ }
48
+ }
49
+
50
+ set visibilityFilter ( value = '' ) {
51
+ let filters = A ( value . split ( ',' ) ) ;
52
+ filterTypes . forEach ( ( filter ) => {
53
+ let enabled = filters . indexOf ( filter ) > - 1 ;
54
+ set ( this , `filterData.show${ capitalize ( filter ) } ` , enabled ) ;
55
+ } ) ;
56
+ }
57
+
21
58
@computed ( 'legacyModuleMappings.mappings' , 'model.{module,name}' )
22
59
get hasImportExample ( ) {
23
60
return this . legacyModuleMappings . hasClassMapping (
@@ -41,6 +78,10 @@ export default class ClassController extends Controller.extend(
41
78
] ;
42
79
}
43
80
81
+ get parentName ( ) {
82
+ return parentName ( this . router . currentRouteName ) ;
83
+ }
84
+
44
85
@action
45
86
updateFilter ( filter ) {
46
87
this . toggleProperty ( `filterData.${ filter } ` ) ;
0 commit comments