1
- import { Instance , types } from 'mobx-state-tree' ;
1
+ import { addDisposer , getParent , getRoot , Instance , types } from 'mobx-state-tree' ;
2
2
import { FilterBaseSelectConfigMeta } from './select-base' ;
3
3
import { shallowToJS } from '~/utils/shallow-to-js' ;
4
+ import { reaction , toJS } from 'mobx' ;
4
5
5
6
export const FilterSelectConfigMeta = types
6
7
. compose (
@@ -32,6 +33,15 @@ export const FilterSelectConfigMeta = types
32
33
getSelectOption ( value : string ) {
33
34
return self . options . find ( ( o ) => o . value === value ) ;
34
35
} ,
36
+ get default_selection ( ) {
37
+ if ( ! self . usingQuery ) {
38
+ return self . default_value ;
39
+ }
40
+ if ( self . default_selection_count > 0 && self . options . length > 0 ) {
41
+ return self . options [ 0 ] . value ;
42
+ }
43
+ return '' ;
44
+ } ,
35
45
} ) )
36
46
. actions ( ( self ) => ( {
37
47
setRequired ( required : boolean ) {
@@ -43,6 +53,24 @@ export const FilterSelectConfigMeta = types
43
53
setWidth ( v : string ) {
44
54
self . width = v ;
45
55
} ,
56
+ setDefaultSelection ( ) {
57
+ // @ts -expect-error getRoot type
58
+ const filters = getRoot ( self ) . content . filters ;
59
+ // @ts -expect-error Property 'key' does not exist on type 'IStateTreeNode<IAnyStateTreeNode>
60
+ const key = getParent ( self ) . key ;
61
+ filters . setValueByKey ( key , self . default_selection ) ;
62
+ } ,
63
+ } ) )
64
+ . actions ( ( self ) => ( {
65
+ afterCreate ( ) {
66
+ addDisposer (
67
+ self ,
68
+ reaction ( ( ) => toJS ( self . default_selection ) , self . setDefaultSelection , {
69
+ fireImmediately : true ,
70
+ delay : 0 ,
71
+ } ) ,
72
+ ) ;
73
+ } ,
46
74
} ) ) ;
47
75
48
76
export type FilterSelectConfigInstance = Instance < typeof FilterSelectConfigMeta > ;
0 commit comments