123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- <template>
- <!-- 基础容器 -->
- <view
-
- @click="$emit('click', $event)"
- class="sheet fulled"
- :style="[
- bgColor?{backgroundColor: bgColor }:'',
- widths?{width:widths}:'',
- heights?{height:heights}:'',
- ]"
- :class="[
- text ? 'text' : '',
- flat ? 'flat' : '',
- 'shadow-' + shadowthemeName + '-' + shadow,
- 'round-' + round,
- black_tmeme ? 'bk' : '',
- black_tmeme == 'true' || black_tmeme === true ? 'grey-darken-5' : (bgColor?'':color),
- dense === true || dense == 'true' ? 'nom' : '',
- 'mx-'+margin[0],'my-'+margin[1],
- 'px-'+padding[0],'py-'+padding[1],
- classs,
- border ? 'border-a-1' : '',
- outlined ? 'outlined' : ''
- ]"
-
- >
- <view class="fulled" v-if="showSheet">
- <slot name="default"></slot>
- </view>
- </view>
- </template>
- <script>
- /**
- * 基础容器
- * @description 基本是大部分组件的基础组件。
- * @property {String | Boolean} black = [true|false] 暗黑模式。
- * @property {String} classname = [] 自定认容器类
- * @property {String|Number} round = [] 圆角
- * @property {Array} margin = [] 外间距默认[32,32]
- * @property {Array} padding = [] 内间距默认[32,32]
- * @property {Boolean|String} dense = [] 默认false,去除内部和外部间距。
- * @property {String|Number} width = [100%|auto] 宽度数字时单位为upx.可以是百分比
- * @property {String|Number} height = [100%|auto] 宽度数字时单位为upx.可以是百分比
- * @property {String} color = [white|blue|primary] 主题颜色名称。默认:white
- * @property {String} bgColor = [] 自定义背景颜色rgb,rgba,#0000等格式。
- * @property {String|Number} shadow = [5|10] 投影大小
- * @property {Boolean|String} border = [true|false] 是否开启边线
- * @property {Boolean|String} flat = [true|false] 是否开启扁平模式。
- * @property {Boolean|String} text = [true|false] 是否开启文本模式
- * @example <tm-sheet :margin="[32,32]" >9</tm-sheet>
- */
- export default {
- props: {
- black: {
- type: String | Boolean,
- default: null
- },
- classname: {
- type: String,
- default: ''
- },
- round: {
- type: String | Number,
- default: '4'
- },
- margin:{
- type:Array,
- default:()=>{return [32,32]; }
- },
- padding:{
- type:Array,
- default:()=>{return [32,32]; }
- },
- dense: {
- type: Boolean|String,
- default: false
- },
- width: {
- type: String | Number,
- default: 'auto'
- },
- height: {
- type: String | Number,
- default: 'auto'
- },
- // 主题颜色名称。
- color: {
- type: String,
- default: 'white'
- },
- // 自定义背景色。
- bgColor: {
- type: String,
- default: ''
- },
- shadow: {
- type: String | Number,
- default: 5
- },
- border: {
- type: Boolean|String,
- default: false
- },
- outlined: {
- type: Boolean|String,
- default: false
- },
- flat: {
- type: Boolean,
- default: false
- },
- // 是否为文本模式,即减淡背景颜色。
- text: {
- type: String | Boolean,
- default: false
- }
- },
- computed: {
- // 投影的颜色名字。
- shadowthemeName: function() {
- if (!this.color) return 'none';
- return this.color.split('-')[0];
- },
- classs: function() {
- return ' ' + this.classname + ' ';
- },
- widths: function() {
- if (typeof this.width === 'string') {
- if (/([rpx|upx|rem|em|vx|vh|px|%]|auto)$/.test(this.width)) {
- return this.width;
- }
- return uni.upx2px(parseInt(this.width)) + 'px';
- }
- if (typeof this.width == 'number') return uni.upx2px(this.width) + 'px';
- },
- heights: function() {
- if (typeof this.height === 'string') {
- if (/([rpx|upx|rem|em|vx|vh|px|%]|auto)$/.test(this.height)) {
- return this.height;
- }
- return uni.upx2px(parseInt(this.height)) + 'px';
- }
- if (typeof this.height == 'number') return uni.upx2px(this.height) + 'px';
- },
- black_tmeme:function(){
- if(this.black!==null) return this.black;
- return this.$tm.vx.state().tmVuetify.black;
- }
- },
- data() {
- return {
- showSheet:true,
- };
- },
- created() {
- // #ifdef APP-VUE || APP-PLUS || MP
- this.showSheet = false;
- // #endif
- },
- mounted() {
- let t= this;
-
- // #ifdef APP-VUE || APP-PLUS || MP
- setTimeout(function() {
- t.showSheet = true;
- }, 30);
- // #endif
- }
- };
- </script>
- <style lang="scss" scoped>
- .nom{
- margin: 0 !important;
- padding: 0 !important;
- }
- </style>
|