Blame view

uni_modules/uview-plus/components/u-popover/u-popover.vue 2.46 KB
a2702f6d   刘淇   巡查计划
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
  <template>
  	<view class="up-popover">
  		<up-tooltip
  			ref="tooltip"
  			:text="text"
  			:color="color"
  			:bg-color="bgColor"
  			:popup-bg-color="popupBgColor"
  			:placement="placement"
  			:trigger-mode="triggerMode"
  			:show="show"
  			:z-index="zIndex"
  			:force-position="forcePosition"
  			:direction="direction"
  			@open="onOpen"
  			@close="onClose"
  			@click="onClick"
  		>
  			<template #trigger>
  				<slot name="trigger"></slot>
  			</template>
  			<template #content>
  				<view class="up-popover__content">
  					<slot name="content">
  						<text>{{text}}</text>
  					</slot>
  				</view>
  			</template>
  		</up-tooltip>
  	</view>
  </template>
  
  <script>
      import { props } from './props';
  	import { mpMixin } from '../../libs/mixin/mpMixin';
  	import { mixin } from '../../libs/mixin/mixin';
  	/**
  	 * popover 气泡弹出框
  	 * @description 基于tooltip二次封装的popover组件,用于展示更丰富的内容
  	 * @tutorial https://www.uviewui.com/components/popover.html
  	 * @property {String | Number}	text			显示的文字内容
  	 * @property {String}			color			文字颜色
  	 * @property {String}			bgColor			背景颜色
  	 * @property {String}			popupBgColor	弹出框背景颜色
  	 * @property {String}			placement		弹出框位置 (top, bottom, left, right)
  	 * @property {String}			triggerMode		触发方式 (hover, click, manual)
  	 * @property {Boolean}			show			是否显示 (manual模式下使用)
  	 * @property {Number | String}	zIndex			z-index
  	 * @property {Object}			forcePosition	强制定位 {top, left, right, bottom}
  	 * @property {String}			direction		弹出方向 (top, bottom, left, right)
  	 * @event {Function}			open			弹出框打开时触发
  	 * @event {Function}			close			弹出框关闭时触发
  	 * @event {Function}			click			点击触发器时触发
  	 * @example <up-popover text="提示内容"><template #trigger><up-button>点击</up-button></template></up-popover>
  	 */
  	export default {
  		name: 'up-popover',
  		mixins: [mpMixin, mixin, props],
  		data() {
  			return {
  				
  			}
  		},
  		methods: {
  			onOpen() {
  				this.$emit('open');
  			},
  			onClose() {
  				this.$emit('close');
  			},
  			onClick() {
  				this.$emit('click');
  			},
  			// 打开popover
  			open() {
  				this.$refs.tooltip && this.$refs.tooltip.open();
  			},
  			// 关闭popover
  			close() {
  				this.$refs.tooltip && this.$refs.tooltip.close();
  			}
  		}
  	}
  </script>
  
  <style lang="scss" scoped>	
  	.up-popover {
  		
  		&__content {
  			@include flex;
  			align-items: center;
  			padding: 12px 16px;
  		}
  	}
  </style>