You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							47 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							47 lines
						
					
					
						
							1.0 KiB
						
					
					
				
								import { VantComponent } from '../common/component';
							 | 
						|
								VantComponent({
							 | 
						|
								  relation: {
							 | 
						|
								    name: 'collapse-item',
							 | 
						|
								    type: 'descendant',
							 | 
						|
								    current: 'collapse',
							 | 
						|
								  },
							 | 
						|
								  props: {
							 | 
						|
								    value: {
							 | 
						|
								      type: null,
							 | 
						|
								      observer: 'updateExpanded',
							 | 
						|
								    },
							 | 
						|
								    accordion: {
							 | 
						|
								      type: Boolean,
							 | 
						|
								      observer: 'updateExpanded',
							 | 
						|
								    },
							 | 
						|
								    border: {
							 | 
						|
								      type: Boolean,
							 | 
						|
								      value: true,
							 | 
						|
								    },
							 | 
						|
								  },
							 | 
						|
								  methods: {
							 | 
						|
								    updateExpanded() {
							 | 
						|
								      this.children.forEach((child) => {
							 | 
						|
								        child.updateExpanded();
							 | 
						|
								      });
							 | 
						|
								    },
							 | 
						|
								    switch(name, expanded) {
							 | 
						|
								      const { accordion, value } = this.data;
							 | 
						|
								      const changeItem = name;
							 | 
						|
								      if (!accordion) {
							 | 
						|
								        name = expanded
							 | 
						|
								          ? (value || []).concat(name)
							 | 
						|
								          : (value || []).filter((activeName) => activeName !== name);
							 | 
						|
								      } else {
							 | 
						|
								        name = expanded ? name : '';
							 | 
						|
								      }
							 | 
						|
								      if (expanded) {
							 | 
						|
								        this.$emit('open', changeItem);
							 | 
						|
								      } else {
							 | 
						|
								        this.$emit('close', changeItem);
							 | 
						|
								      }
							 | 
						|
								      this.$emit('change', name);
							 | 
						|
								      this.$emit('input', name);
							 | 
						|
								    },
							 | 
						|
								  },
							 | 
						|
								});
							 |