@@ -23,13 +23,15 @@ import {
2323 TimeGranularity ,
2424 tn ,
2525} from '@superset-ui/core' ;
26- import { useEffect , useMemo , useState } from 'react' ;
26+ import { useCallback , useEffect , useMemo , useState } from 'react' ;
2727import {
2828 FormItem ,
2929 type FormItemProps ,
30+ LabeledValue ,
3031 Select ,
3132 type SelectValue ,
3233} from '@superset-ui/core/components' ;
34+ import { propertyComparator } from '@superset-ui/core/components/Select/utils' ;
3335import { FilterPluginStyle , StatusMessage } from '../common' ;
3436import { PluginFilterTimeGrainProps } from './types' ;
3537
@@ -120,6 +122,20 @@ export default function PluginFilterTimegrain(
120122 } ,
121123 ) ;
122124
125+ const sortComparator = useCallback (
126+ ( a : LabeledValue , b : LabeledValue ) => {
127+ if ( formData . sortAscending === undefined ) {
128+ return 0 ;
129+ }
130+ const labelComparator = propertyComparator ( 'label' ) ;
131+ if ( formData . sortAscending ) {
132+ return labelComparator ( a , b ) ;
133+ }
134+ return labelComparator ( b , a ) ;
135+ } ,
136+ [ formData . sortAscending ] ,
137+ ) ;
138+
123139 return (
124140 < FilterPluginStyle height = { height } width = { width } >
125141 < FormItem validateStatus = { filterState . validateStatus } { ...formItemData } >
@@ -135,7 +151,7 @@ export default function PluginFilterTimegrain(
135151 ref = { inputRef }
136152 options = { options }
137153 onOpenChange = { setFilterActive }
138- sortComparator = { ( ) => 0 }
154+ sortComparator = { sortComparator }
139155 />
140156 </ div >
141157 </ FormItem >
0 commit comments