1+ import { VantComponent } from '../common/component' ;
2+ VantComponent ( {
3+ classes : [ 'content-class' ] ,
4+ relation : {
5+ name : 'collapse' ,
6+ type : 'ancestor' ,
7+ linked : function linked ( parent ) {
8+ this . parent = parent ;
9+ }
10+ } ,
11+ props : {
12+ name : [ String , Number ] ,
13+ icon : String ,
14+ label : String ,
15+ title : [ String , Number ] ,
16+ value : [ String , Number ] ,
17+ disabled : Boolean ,
18+ border : {
19+ type : Boolean ,
20+ value : true
21+ } ,
22+ isLink : {
23+ type : Boolean ,
24+ value : true
25+ }
26+ } ,
27+ data : {
28+ contentHeight : 0 ,
29+ expanded : false
30+ } ,
31+ computed : {
32+ titleClass : function titleClass ( ) {
33+ var _this$data = this . data ,
34+ disabled = _this$data . disabled ,
35+ expanded = _this$data . expanded ;
36+ return this . classNames ( 'van-collapse-item__title' , {
37+ 'van-collapse-item__title--disabled' : disabled ,
38+ 'van-collapse-item__title--expanded' : expanded
39+ } ) ;
40+ }
41+ } ,
42+ methods : {
43+ updateExpanded : function updateExpanded ( ) {
44+ if ( ! this . parent ) {
45+ return null ;
46+ }
47+
48+ var _this$parent$data = this . parent . data ,
49+ value = _this$parent$data . value ,
50+ accordion = _this$parent$data . accordion ,
51+ items = _this$parent$data . items ;
52+ var name = this . data . name ;
53+ var index = items . indexOf ( this ) ;
54+ var currentName = name == null ? index : name ;
55+ var expanded = accordion ? value === currentName : value . some ( function ( name ) {
56+ return name === currentName ;
57+ } ) ;
58+
59+ if ( expanded !== this . data . expanded ) {
60+ this . updateStyle ( expanded ) ;
61+ }
62+
63+ this . setData ( {
64+ expanded : expanded
65+ } ) ;
66+ } ,
67+ updateStyle : function updateStyle ( expanded ) {
68+ var _this = this ;
69+
70+ if ( expanded ) {
71+ this . getRect ( '.van-collapse-item__content' ) . then ( function ( res ) {
72+ _this . setData ( {
73+ contentHeight : res . height ? res . height + 'px' : null
74+ } ) ;
75+ } ) ;
76+ } else {
77+ this . setData ( {
78+ contentHeight : 0
79+ } ) ;
80+ }
81+ } ,
82+ onClick : function onClick ( ) {
83+ if ( this . data . disabled ) {
84+ return ;
85+ }
86+
87+ var _this$data2 = this . data ,
88+ name = _this$data2 . name ,
89+ expanded = _this$data2 . expanded ;
90+ var index = this . parent . data . items . indexOf ( this ) ;
91+ var currentName = name == null ? index : name ;
92+ this . parent . switch ( currentName , ! expanded ) ;
93+ }
94+ }
95+ } ) ;
0 commit comments