@@ -9,7 +9,7 @@ import { tracked } from '@glimmer/tracking';
99import { modifier } from 'ember-modifier' ;
1010import type { WithBoundArgs } from '@glint/template' ;
1111
12- import HdsDropdown from '../dropdown/index .ts' ;
12+ import HdsTabsPanel from '../tabs/panel .ts' ;
1313
1414import HdsFilterBarCheckbox from './checkbox.ts' ;
1515import HdsFilterBarRadio from './radio.ts' ;
@@ -23,17 +23,14 @@ import type {
2323 HdsFilterBarRangeFilter ,
2424 HdsFilterBarRangeFilterSelector ,
2525} from './types.ts' ;
26- import { SELECTORS_DISPLAY_SYMBOL } from './range.ts' ;
2726
28- export interface HdsFilterBarDropdownSignature {
27+ export interface HdsFilterBarFilterOptionsSignature {
2928 Args : {
30- dropdown ?: WithBoundArgs < typeof HdsDropdown , never > ;
29+ panel ?: WithBoundArgs < typeof HdsTabsPanel , never > ;
3130 key : string ;
32- text ?: string ;
3331 type ?: HdsFilterBarFilterType ;
3432 filters : HdsFilterBarFilters ;
3533 isMultiSelect ?: boolean ;
36- isLiveFilter ?: boolean ;
3734 activeFilterableColumns ?: string [ ] ;
3835 searchEnabled ?: boolean ;
3936 onChange : ( key : string , keyFilter ?: HdsFilterBarFilter ) => void ;
@@ -43,22 +40,22 @@ export interface HdsFilterBarDropdownSignature {
4340 {
4441 Checkbox ?: WithBoundArgs <
4542 typeof HdsFilterBarCheckbox ,
46- 'checkbox' | ' keyFilter' | 'onChange'
43+ 'keyFilter' | 'onChange'
4744 > ;
4845 Radio ?: WithBoundArgs <
4946 typeof HdsFilterBarRadio ,
50- 'radio' | ' keyFilter' | 'onChange'
47+ 'keyFilter' | 'onChange'
5148 > ;
5249 } ,
5350 ] ;
5451 } ;
5552 Element : HTMLDivElement ;
5653}
5754
58- export default class HdsFilterBarDropdown extends Component < HdsFilterBarDropdownSignature > {
55+ export default class HdsFilterBarFilterOptions extends Component < HdsFilterBarFilterOptionsSignature > {
5956 @tracked internalFilters : HdsFilterBarData | undefined = [ ] ;
6057
61- private _setUpDropdown = modifier ( ( ) => {
58+ private _setUpFilterOptions = modifier ( ( ) => {
6259 if ( this . keyFilter ) {
6360 this . internalFilters = JSON . parse (
6461 JSON . stringify ( this . keyFilter )
@@ -128,11 +125,9 @@ export default class HdsFilterBarDropdown extends Component<HdsFilterBarDropdown
128125 removeFilter ( input . value ) ;
129126 }
130127
131- if ( this . args . isLiveFilter ) {
132- const { onChange } = this . args ;
133- if ( onChange && typeof onChange === 'function' ) {
134- onChange ( this . args . key , this . formattedFilters ) ;
135- }
128+ const { onChange } = this . args ;
129+ if ( onChange && typeof onChange === 'function' ) {
130+ onChange ( this . args . key , this . formattedFilters ) ;
136131 }
137132 }
138133
@@ -155,38 +150,10 @@ export default class HdsFilterBarDropdown extends Component<HdsFilterBarDropdown
155150 this . internalFilters = undefined ;
156151 }
157152
158- if ( this . args . isLiveFilter ) {
159- const { onChange } = this . args ;
160- if ( onChange && typeof onChange === 'function' ) {
161- onChange ( this . args . key , this . formattedFilters ) ;
162- }
163- }
164- }
165-
166- @action
167- onApply ( closeDropdown ?: ( ) => void ) : void {
168153 const { onChange } = this . args ;
169154 if ( onChange && typeof onChange === 'function' ) {
170155 onChange ( this . args . key , this . formattedFilters ) ;
171156 }
172-
173- if ( closeDropdown && typeof closeDropdown === 'function' ) {
174- closeDropdown ( ) ;
175- }
176- }
177-
178- @action
179- onClear ( closeDropdown ?: ( ) => void ) : void {
180- this . _clearFilters ( ) ;
181-
182- if ( closeDropdown && typeof closeDropdown === 'function' ) {
183- closeDropdown ( ) ;
184- }
185- }
186-
187- @action
188- onDismiss ( ) : void {
189- this . _clearFilters ( ) ;
190157 }
191158
192159 get formattedFilters ( ) : HdsFilterBarFilter | undefined {
@@ -202,92 +169,71 @@ export default class HdsFilterBarDropdown extends Component<HdsFilterBarDropdown
202169 } as HdsFilterBarFilter ;
203170 }
204171
205- get toggleButtonText ( ) : string {
206- const { key, filters, text } = this . args ;
207-
208- let displayText = key ;
209- if ( text && text . length > 0 ) {
210- displayText = text ;
211- }
212-
213- const keyFilter = filters [ key ] ;
214-
215- if ( ! filters || ! keyFilter || ! keyFilter . data ) {
216- return displayText ;
217- } else if ( this . args . type === 'range' ) {
218- return `${ displayText } ${ this . _rangeFilterText ( keyFilter . data ) } ` ;
219- } else if ( this . args . type === 'single-select' ) {
220- return `${ displayText } : ${ this . _singleSelectFilterText ( keyFilter . data ) } ` ;
221- } else {
222- return `${ displayText } : ${ this . _multiSelectFilterText ( keyFilter . data ) } ` ;
223- }
224- }
225-
226- private _rangeFilterText ( filterData : HdsFilterBarData ) : string {
227- if ( 'selector' in filterData && 'value' in filterData ) {
228- return `${ SELECTORS_DISPLAY_SYMBOL [ filterData . selector ] } ${ filterData . value } ` ;
229- } else {
230- return '' ;
231- }
232- }
233-
234- private _singleSelectFilterText ( filterData : HdsFilterBarData ) : string {
235- if ( 'value' in filterData ) {
236- return filterData . value as string ;
237- } else {
238- return '' ;
239- }
240- }
241-
242- private _multiSelectFilterText ( filterData : HdsFilterBarData ) : string {
243- if ( Array . isArray ( filterData ) && filterData . length > 0 ) {
244- const charMax = 10 ;
245- let filtersString = '' ;
246-
247- filtersString = filterData
248- . map ( ( filter ) => {
249- if ( 'text' in filter && typeof filter . text === 'string' ) {
250- if ( filter . text . length > charMax ) {
251- return filter . text . slice ( 0 , charMax ) + '...' ;
252- }
253- return filter . text ;
254- }
255- return '' ;
256- } )
257- . join ( ', ' ) ;
258-
259- return filtersString ;
260- } else {
261- return '' ;
262- }
263- }
172+ // get toggleButtonText(): string {
173+ // const { key, filters, text } = this.args;
174+
175+ // let displayText = key;
176+ // if (text && text.length > 0) {
177+ // displayText = text;
178+ // }
179+
180+ // const keyFilter = filters[key];
181+
182+ // if (!filters || !keyFilter || !keyFilter.data) {
183+ // return displayText;
184+ // } else if (this.args.type === 'range') {
185+ // return `${displayText} ${this._rangeFilterText(keyFilter.data)}`;
186+ // } else if (this.args.type === 'single-select') {
187+ // return `${displayText}: ${this._singleSelectFilterText(keyFilter.data)}`;
188+ // } else {
189+ // return `${displayText}: ${this._multiSelectFilterText(keyFilter.data)}`;
190+ // }
191+ // }
192+
193+ // private _rangeFilterText(filterData: HdsFilterBarData): string {
194+ // if ('selector' in filterData && 'value' in filterData) {
195+ // return `${SELECTORS_DISPLAY_SYMBOL[filterData.selector]} ${filterData.value}`;
196+ // } else {
197+ // return '';
198+ // }
199+ // }
200+
201+ // private _singleSelectFilterText(filterData: HdsFilterBarData): string {
202+ // if ('value' in filterData) {
203+ // return filterData.value as string;
204+ // } else {
205+ // return '';
206+ // }
207+ // }
208+
209+ // private _multiSelectFilterText(filterData: HdsFilterBarData): string {
210+ // if (Array.isArray(filterData) && filterData.length > 0) {
211+ // const charMax = 10;
212+ // let filtersString = '';
213+
214+ // filtersString = filterData
215+ // .map((filter) => {
216+ // if ('text' in filter && typeof filter.text === 'string') {
217+ // if (filter.text.length > charMax) {
218+ // return filter.text.slice(0, charMax) + '...';
219+ // }
220+ // return filter.text;
221+ // }
222+ // return '';
223+ // })
224+ // .join(', ');
225+
226+ // return filtersString;
227+ // } else {
228+ // return '';
229+ // }
230+ // }
264231
265232 get classNames ( ) : string {
266- const classes = [ 'hds-filter-bar__dropdown' ] ;
267-
268- // add a class based on the @align argument
269- if ( ! this . _isActiveFilterableColumn ( ) ) {
270- classes . push ( 'hds-filter-bar__dropdown--hidden' ) ;
271- }
233+ const classes = [ 'hds-filter-bar__filter-options' ] ;
272234
273235 classes . push ( `hds-filter-bar__dropdown--type-${ this . type } ` ) ;
274236
275237 return classes . join ( ' ' ) ;
276238 }
277-
278- private _isActiveFilterableColumn ( ) : boolean {
279- if ( this . args . activeFilterableColumns ) {
280- return this . args . activeFilterableColumns . includes ( this . args . key ) ;
281- }
282- return false ;
283- }
284-
285- private _clearFilters ( ) : void {
286- this . internalFilters = undefined ;
287-
288- const { onChange } = this . args ;
289- if ( onChange && typeof onChange === 'function' ) {
290- onChange ( this . args . key , undefined ) ;
291- }
292- }
293239}
0 commit comments