@@ -37,32 +37,32 @@ function getKey(data: OptionData | OptionGroupData, index: number) {
37
37
* We use `optionOnly` here is aim to avoid user use nested option group.
38
38
* Here is simply set `key` to the index if not provided.
39
39
*/
40
- export function flattenOptions (
41
- options : SelectOptionsType ,
42
- rootFlattenList ?: FlattenOptionData [ ] ,
43
- ) : FlattenOptionData [ ] {
44
- const flattenList : FlattenOptionData [ ] = rootFlattenList || [ ] ;
45
- const isGroupOption = ! ! rootFlattenList ;
46
-
47
- options . forEach ( data => {
48
- if ( isGroupOption || ! ( 'options' in data ) ) {
49
- // Option
50
- flattenList . push ( {
51
- key : getKey ( data , flattenList . length ) ,
52
- groupOption : isGroupOption ,
53
- data,
54
- } ) ;
55
- } else {
56
- // Option Group
57
- flattenList . push ( {
58
- key : getKey ( data , flattenList . length ) ,
59
- group : true ,
60
- data,
61
- } ) ;
40
+ export function flattenOptions ( options : SelectOptionsType ) : FlattenOptionData [ ] {
41
+ const flattenList : FlattenOptionData [ ] = [ ] ;
42
+
43
+ function dig ( list : SelectOptionsType , isGroupOption : boolean ) {
44
+ list . forEach ( data => {
45
+ if ( isGroupOption || ! ( 'options' in data ) ) {
46
+ // Option
47
+ flattenList . push ( {
48
+ key : getKey ( data , flattenList . length ) ,
49
+ groupOption : isGroupOption ,
50
+ data,
51
+ } ) ;
52
+ } else {
53
+ // Option Group
54
+ flattenList . push ( {
55
+ key : getKey ( data , flattenList . length ) ,
56
+ group : true ,
57
+ data,
58
+ } ) ;
59
+
60
+ dig ( data . options , true ) ;
61
+ }
62
+ } ) ;
63
+ }
62
64
63
- flattenOptions ( data . options , flattenList ) ;
64
- }
65
- } ) ;
65
+ dig ( options , false ) ;
66
66
67
67
return flattenList ;
68
68
}
0 commit comments