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.
|
|
<template> <view class="u-collapse"> <slot /> </view> </template>
<script> /** * collapse 手风琴 * @description 通过折叠面板收纳内容区域 * @tutorial https://www.uviewui.com/components/collapse.html
* @property {Boolean} accordion 是否手风琴模式(默认true) * @property {Boolean} arrow 是否显示标题右侧的箭头(默认true) * @property {String} arrow-color 标题右侧箭头的颜色(默认#909399) * @property {Object} head-style 标题自定义样式,对象形式 * @property {Object} body-style 主体自定义样式,对象形式 * @property {String} hover-class 样式类名,按下时有效(默认u-hover-class) * @event {Function} change 当前激活面板展开时触发(如果是手风琴模式,参数activeNames类型为String,否则为Array) * @example <u-collapse></u-collapse> */ export default { name:"u-collapse", props: { // 是否手风琴模式
accordion: { type: Boolean, default: true }, // 头部的样式
headStyle: { type: Object, default () { return {} } }, // 主体的样式
bodyStyle: { type: Object, default () { return {} } }, // 每一个item的样式
itemStyle: { type: Object, default () { return {} } }, // 是否显示右侧的箭头
arrow: { type: Boolean, default: true }, // 箭头的颜色
arrowColor: { type: String, default: '#909399' }, // 标题部分按压时的样式类,"none"为无效果
hoverClass: { type: String, default: 'u-hover-class' } }, created() { this.childrens = [] }, data() { return {
} }, methods: { // 重新初始化一次内部的所有子元素的高度计算,用于异步获取数据渲染的情况
init() { this.childrens.forEach((vm, index) => { vm.init(); }) }, // collapse item被点击,由collapse item调用父组件方法
onChange() { let activeItem = []; this.childrens.forEach((vm, index) => { if (vm.isShow) { activeItem.push(vm.nameSync); } }) // 如果是手风琴模式,只有一个匹配结果,也即activeItem长度为1,将其转为字符串
if (this.accordion) activeItem = activeItem.join(''); this.$emit('change', activeItem); } } } </script>
<style lang="scss" scoped> @import "../../libs/css/style.components.scss"; </style>
|