初始化
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
|
||||
Component({
|
||||
/**
|
||||
* 组件的属性列表
|
||||
*/
|
||||
properties: {
|
||||
space: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
decode: {
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
placement: {
|
||||
type: String,
|
||||
value: 'top'
|
||||
},
|
||||
showCopyBtn: {
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
value: {
|
||||
type: String,
|
||||
value: ''
|
||||
}
|
||||
},
|
||||
observers: {
|
||||
onDocumentTap() {
|
||||
this.setData({
|
||||
showToolTip: false
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 组件的初始数据
|
||||
*/
|
||||
data: {
|
||||
showToolTip: false
|
||||
},
|
||||
|
||||
/**
|
||||
* 组件的方法列表
|
||||
*/
|
||||
methods: {
|
||||
handleLongPress() {
|
||||
if (!this.data.showCopyBtn) return
|
||||
this.setData({
|
||||
showToolTip: true,
|
||||
})
|
||||
},
|
||||
handleCopy() {
|
||||
this.setData({
|
||||
showToolTip: false
|
||||
})
|
||||
wx.setClipboardData({
|
||||
data: this.data.value,
|
||||
})
|
||||
this.triggerEvent('copy', {})
|
||||
},
|
||||
stopPropagation: function stopPropagation(e) {}
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<wxs src="./select-text.wxs" module="computed" />
|
||||
|
||||
<view
|
||||
class="weui-select-text"
|
||||
style="{{computed.containerStyle({showToolTip, showCopyBtn, activeBgColor})}}"
|
||||
catch:tap="stopPropagation"
|
||||
>
|
||||
<text
|
||||
selectable="{{!showCopyBtn}}"
|
||||
space="{{space}}"
|
||||
decode="{{decode}}"
|
||||
catch:longpress="handleLongPress"
|
||||
>{{value}}</text>
|
||||
<view
|
||||
wx:if="{{showToolTip}}"
|
||||
class="weui-tooltip weui-tooltip__{{placement}}"
|
||||
style="z-index: {{zIndex}};"
|
||||
catch:tap="handleCopy"
|
||||
>
|
||||
复制
|
||||
</view>
|
||||
</view>
|
||||
@@ -0,0 +1,10 @@
|
||||
function containerStyle(data) {
|
||||
if (data.showToolTip && data.showCopyBtn) {
|
||||
return 'background-color: ' + data.activeBgColor
|
||||
}
|
||||
return ''
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
containerStyle: containerStyle,
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
.weui-select-text {
|
||||
display: inline;
|
||||
position: relative
|
||||
}
|
||||
|
||||
.weui-tooltip {
|
||||
box-sizing: border-box;
|
||||
width: 60px;
|
||||
background-color: #000000;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
padding: 5px 0;
|
||||
border-radius: 6px;
|
||||
position: absolute;
|
||||
font-size: 14px
|
||||
}
|
||||
|
||||
.weui-tooltip__top {
|
||||
left: 50%;
|
||||
top: 0;
|
||||
transform: translate(-50%, -100%);
|
||||
margin-top: -10px
|
||||
}
|
||||
|
||||
.weui-tooltip__top::after {
|
||||
content: " ";
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, 0);
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: black transparent transparent transparent
|
||||
}
|
||||
|
||||
.weui-tooltip__bottom {
|
||||
left: 50%;
|
||||
top: 100%;
|
||||
transform: translate(-50%, 0);
|
||||
margin-top: 10px
|
||||
}
|
||||
|
||||
.weui-tooltip__bottom::after {
|
||||
content: " ";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -100%);
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: transparent transparent black transparent
|
||||
}
|
||||
|
||||
.weui-tooltip__left {
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translate(-100%, -50%);
|
||||
margin-left: -10px
|
||||
}
|
||||
|
||||
.weui-tooltip__left::after {
|
||||
content: " ";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 100%;
|
||||
transform: translate(0, -50%);
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: transparent transparent transparent black
|
||||
}
|
||||
|
||||
.weui-tooltip__right {
|
||||
left: 100%;
|
||||
top: 50%;
|
||||
transform: translate(0, -50%);
|
||||
margin-left: 10px
|
||||
}
|
||||
|
||||
.weui-tooltip__right::after {
|
||||
content: " ";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
transform: translate(-100%, -50%);
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: transparent black transparent transparent
|
||||
}
|
||||
textarea {
|
||||
height: 16px;
|
||||
}
|
||||
Reference in New Issue
Block a user