@@ -2,7 +2,22 @@ const defaultFilterGroup = {
22 FOrdering : { Alphabetical : true } ,
33} ;
44
5+ /**
6+ * @typedef { Object } FilterItem
7+ * @prop { string } selected
8+ * @prop { number } visible
9+ */
10+
11+ /**
12+ * @typedef { Record<string, FilterItem> } Filters
13+ */
14+
515class Filter {
16+ /**
17+ * @param value { string }
18+ * @param filters { Filters }
19+ * @param elementsRefs { Element }
20+ */
621 constructor ( value , filters , elementsRefs , init = false ) {
722 this . _init = init ;
823 this . _value = value ;
@@ -23,6 +38,10 @@ class Filter {
2338 return this . _elementsRefs ;
2439 }
2540
41+ /**
42+ * @param key { string }
43+ * @param value { string }
44+ */
2645 onFilterToggle ( key , value ) {
2746 return new Filter (
2847 this . value ,
@@ -31,6 +50,10 @@ class Filter {
3150 ) ;
3251 }
3352
53+ /**
54+ * @param key { string }
55+ * @param isActive { boolean }
56+ */
3457 onGroupSelectionChange ( key , isActive ) {
3558 return new Filter (
3659 this . value ,
@@ -39,6 +62,10 @@ class Filter {
3962 ) ;
4063 }
4164
65+ /**
66+ * @param value { string }
67+ * @returns { FilterItem }
68+ */
4269 onInputValueChange ( value ) {
4370 return new Filter (
4471 value ,
@@ -47,6 +74,11 @@ class Filter {
4774 ) ;
4875 }
4976
77+ /**
78+ * @private
79+ * @param value { string }
80+ * @returns { Filters }
81+ */
5082 _generateFiltersOnTyping ( value ) {
5183 return this . elementsRefs
5284 . filter ( ( elRef ) => {
@@ -72,6 +104,10 @@ class Filter {
72104 } , this . _allFiltersAreHidden ( ) ) ;
73105 }
74106
107+ /**
108+ * @private
109+ * @returns { Filters }
110+ */
75111 _allFiltersAreHidden ( ) {
76112 return Object . entries ( this . filters ) . reduce (
77113 ( filters , [ key , filterGroup ] ) => {
@@ -87,6 +123,12 @@ class Filter {
87123 ) ;
88124 }
89125
126+ /**
127+ * @private
128+ * @param key { string }
129+ * @param isActive { boolean }
130+ * @returns { Filters }
131+ */
90132 _withNewSelectionOfGroup ( key , isActive ) {
91133 return {
92134 ...this . filters ,
@@ -103,27 +145,37 @@ class Filter {
103145 } ;
104146 }
105147
148+ /**
149+ * @private
150+ * @returns { Filters }
151+ */
106152 _withNewFilters ( ) {
107- return this . _elementsRefs . reduce ( ( filtersObject , elementRef ) => {
153+ console . log ( "this._elementsRefs" , this . _elementsRefs )
154+ const newFilters = this . _elementsRefs . reduce ( ( filtersObject , elementRef ) => {
108155 this . _getDatasetWithF ( elementRef . dataset ) . map ( ( [ key , value ] ) =>
109156 this . _splitByComma ( value ) . map ( ( val ) => {
110157 if ( ! filtersObject [ key ] ) {
111158 filtersObject [ key ] = { [ val ] : { selected : true , visible : true } } ;
112159 } else {
113160 filtersObject [ key ] = {
114161 ...filtersObject [ key ] ,
115- [ val ] : filtersObject [ key ] [ val ] ?? {
116- selected : true ,
117- visible : true ,
118- } ,
162+ [ val ] : filtersObject [ key ] [ val ] ?? { selected : true , visible : true } ,
119163 } ;
120164 }
121165 } )
122166 ) ;
123167 return filtersObject ;
124168 } , { } ) ;
169+ console . log ( "newFilters" , newFilters )
170+ return newFilters
125171 }
126172
173+ /**
174+ * @private
175+ * @param key { string }
176+ * @param value { string }
177+ * @returns { Filters }
178+ */
127179 _withToggledFilter ( key , value ) {
128180 return {
129181 ...this . filters ,
@@ -137,10 +189,16 @@ class Filter {
137189 } ;
138190 }
139191
192+ /**
193+ * @private
194+ * @param str { string }
195+ */
140196 _splitByComma = ( str ) => str . split ( "," ) ;
141197
198+ /**
199+ * @private
200+ * @param dataset { DOMStringMap }
201+ */
142202 _getDatasetWithF = ( dataset ) =>
143- Object . entries ( dataset ) . filter ( ( [ key ] ) => this . _startsWithF ( key ) ) ;
144-
145- _startsWithF = ( str ) => startsWith ( str , "f" ) ;
203+ Object . entries ( dataset ) . filter ( ( [ key ] ) => startsWith ( key , "f" ) ) ;
146204}
0 commit comments