<template> <view> <view class="tm-grouplist overflow " :class="['ma-' + margin, ' round-' + round, 'shadow-' + shadow, black_tmeme ? 'bk' : '']"> <view v-if="title&&title!='true'" class="px-32 py-16 text-weight-b " :class="[`text-size-${fontSize}`,titleTheme, black_tmeme ? 'bk' : '']"> <slot name="title" :title="title">{{ title }}</slot> </view> <view > <slot></slot> </view> </view> </view> </template> <script> /** * 列表组 * @description (可嵌套使用)需要配合tm-listitem使用 * @property {Boolean} black = [true|false] 默认:null,暗黑模式 * @property {Number} margin = [] 默认:32,单位upx,外间距。 * @property {Number} shadow = [] 默认:10,单位upx,投影 * @property {Number} round = [] 默认:4,单位upx, 外部圆角 * @property {String} title = [] 默认:'',标题。 * @property {String} font-size = [xxs|xs|s|n|g|lg|xl] 默认:'n',标题大小,注意是css库中的xxs,xs,s,n,g,lg,xl * @property {Boolean} border-bottom = [] 默认:true ,是否显示底边线。 * @property {String} title-theme = [] 默认:primary,标题的主题色彩名。 * @property {Function} change 点击了列表那一个元素。并返回Index * @example <tm-grouplist title="配置"> <tm-listitem title="应用栏" v-for="(item,index) in 4" :key="index"></tm-listitem> </tm-grouplist> */ export default { name: 'tm-grouplist', props: { black: { type: String | Boolean, default: null }, borderBottom: { type: String | Boolean, default: true }, // 单位upx margin: { type: String | Number, default: 32 }, // 外部圆角 round: { type: String | Number, default: 3 }, // 投影 shadow: { type: String | Number, default: 4 }, // 组标题。 title: { type: String, default: '' }, // 标题的主题色彩名。 titleTheme: { type: String, default: 'primary' }, fontSize:{ type:String, default:'n' } }, computed:{ black_tmeme:function(){ if(this.black!==null) return this.black; return this.$tm.vx.state().tmVuetify.black; } }, provide(){ let t = this; return { GroupListStyles:()=>{ return { margin: [0,0], padding: [32,24], shadow: 0, round: 0, borderBottom: true } } } }, data() { return { targ:'tm-grouplist', chuliWsok:false,//处理完宽度计算信息再进行显示内部内容。 }; }, created() { // #ifdef H5 this.chuliWsok = true; // #endif }, mounted() { this.inits(); }, watch:{ }, updated(){ this.inits(); }, methods: { inits(){ }, // 事件一定是子项目tm-listitem为group模式时,才会触发。 change(vue_uid) { // 具体点了哪一个项目,并展开了。 let t = this; let ch = this.$children; // #ifdef H5 ch = this.$children[0].$children[0].$children; ch = ch[1].$children; // #endif // 在H5下无法找到$children。因此始终是-1 let index = ch.findIndex(item => { return vue_uid == item._uid; }); this.$emit('change', index); } } }; </script> <style lang="scss" > </style>