1
- import { h , VNode } from 'snabbdom' ;
1
+ import { h } from 'snabbdom' ;
2
2
import Ctrl from './ctrl' ;
3
3
import { Dimension } from './interfaces' ;
4
4
5
5
function select ( ctrl : Ctrl ) {
6
6
return function ( dimension : Dimension ) {
7
7
if ( dimension . key === 'date' ) return ;
8
8
const single = dimension . key === 'period' ;
9
- function multipleSelect ( vnode : VNode ) {
10
- $ ( vnode . elm ) . multipleSelect ( {
11
- placeholder : dimension . name ,
12
- width : '100%' ,
13
- selectAll : false ,
14
- filter : dimension . key === 'opening' ,
15
- single : single ,
16
- minimumCountSelected : 10 ,
17
- onClick : function ( view ) {
18
- const values = single ? [ view . value ] : $ ( vnode . elm ) . multipleSelect ( 'getSelects' ) ;
19
- ctrl . setFilter ( dimension . key , values ) ;
20
- } ,
21
- } ) ;
22
- }
23
9
return h (
24
10
'select' ,
25
11
{
26
12
attrs : { multiple : true } ,
27
13
hook : {
28
- insert : multipleSelect ,
29
- update : ( _oldVnode , vnode ) => {
30
- if ( ! ctrl . vm . filters [ dimension . key ] ) multipleSelect ( vnode ) ;
14
+ insert : vnode =>
15
+ $ ( vnode . elm ) . multipleSelect ( {
16
+ placeholder : dimension . name ,
17
+ width : '100%' ,
18
+ selectAll : false ,
19
+ filter : dimension . key === 'opening' ,
20
+ single : single ,
21
+ minimumCountSelected : 10 ,
22
+ onClick : function ( view ) {
23
+ const values = single ? [ view . value ] : $ ( vnode . elm ) . multipleSelect ( 'getSelects' ) ;
24
+ ctrl . setFilter ( dimension . key , values ) ;
25
+ } ,
26
+ } ) ,
27
+ postpatch : ( _oldVnode , vnode ) => {
28
+ if ( Object . keys ( ctrl . vm . filters ) . length === 0 ) $ ( vnode . elm ) . multipleSelect ( 'uncheckAll' ) ;
31
29
} ,
32
30
} ,
33
31
} ,
@@ -38,7 +36,7 @@ function select(ctrl: Ctrl) {
38
36
{
39
37
attrs : {
40
38
value : value . key ,
41
- selected : selected && selected . includes ( value . key ) ,
39
+ selected : ! ! selected && selected . includes ( value . key ) ,
42
40
} ,
43
41
} ,
44
42
value . name
0 commit comments