vxe-pc-ui 4.9.17 → 4.9.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/icon/style.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/text/src/text.js +66 -39
- package/es/text/style.css +77 -4
- package/es/text/style.min.css +1 -1
- package/es/tooltip/src/tooltip.js +81 -12
- package/es/tooltip/style.css +8 -5
- package/es/tooltip/style.min.css +1 -1
- package/es/ui/index.js +6 -2
- package/es/ui/src/log.js +1 -1
- package/es/vxe-text/style.css +77 -4
- package/es/vxe-text/style.min.css +1 -1
- package/es/vxe-tooltip/style.css +8 -5
- package/es/vxe-tooltip/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +167 -55
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/text/src/text.js +72 -41
- package/lib/text/src/text.min.js +1 -1
- package/lib/text/style/style.css +77 -4
- package/lib/text/style/style.min.css +1 -1
- package/lib/tooltip/src/tooltip.js +87 -11
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/tooltip/style/style.css +8 -5
- package/lib/tooltip/style/style.min.css +1 -1
- package/lib/ui/index.js +6 -2
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-text/style/style.css +77 -4
- package/lib/vxe-text/style/style.min.css +1 -1
- package/lib/vxe-tooltip/style/style.css +8 -5
- package/lib/vxe-tooltip/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/text/src/text.ts +70 -39
- package/packages/tooltip/src/tooltip.ts +90 -17
- package/packages/ui/index.ts +5 -1
- package/styles/components/text.scss +21 -6
- package/styles/components/tooltip.scss +8 -5
- package/types/components/table.d.ts +10 -4
- package/types/components/text.d.ts +12 -5
- package/types/components/tooltip.d.ts +12 -0
- /package/es/icon/{iconfont.1757125817990.ttf → iconfont.1757242939473.ttf} +0 -0
- /package/es/icon/{iconfont.1757125817990.woff → iconfont.1757242939473.woff} +0 -0
- /package/es/icon/{iconfont.1757125817990.woff2 → iconfont.1757242939473.woff2} +0 -0
- /package/es/{iconfont.1757125817990.ttf → iconfont.1757242939473.ttf} +0 -0
- /package/es/{iconfont.1757125817990.woff → iconfont.1757242939473.woff} +0 -0
- /package/es/{iconfont.1757125817990.woff2 → iconfont.1757242939473.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1757125817990.ttf → iconfont.1757242939473.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1757125817990.woff → iconfont.1757242939473.woff} +0 -0
- /package/lib/icon/style/{iconfont.1757125817990.woff2 → iconfont.1757242939473.woff2} +0 -0
- /package/lib/{iconfont.1757125817990.ttf → iconfont.1757242939473.ttf} +0 -0
- /package/lib/{iconfont.1757125817990.woff → iconfont.1757242939473.woff} +0 -0
- /package/lib/{iconfont.1757125817990.woff2 → iconfont.1757242939473.woff2} +0 -0
package/lib/ui/src/log.js
CHANGED
|
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.warnLog = exports.errLog = void 0;
|
|
7
7
|
var _core = require("@vxe-ui/core");
|
|
8
|
-
const version = `ui v${"4.9.
|
|
8
|
+
const version = `ui v${"4.9.19"}`;
|
|
9
9
|
const warnLog = exports.warnLog = _core.log.create('warn', version);
|
|
10
10
|
const errLog = exports.errLog = _core.log.create('error', version);
|
package/lib/ui/src/log.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");const version="ui v4.9.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");const version="ui v4.9.19",warnLog=exports.warnLog=_core.log.create("warn",version),errLog=exports.errLog=_core.log.create("error",version);
|
|
@@ -20,18 +20,91 @@
|
|
|
20
20
|
.vxe-text.theme--error {
|
|
21
21
|
color: var(--vxe-ui-status-error-color);
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
|
|
24
|
+
.vxe-text--copy-icon {
|
|
24
25
|
cursor: pointer;
|
|
25
26
|
}
|
|
26
|
-
.vxe-text
|
|
27
|
+
.vxe-text--copy-icon:focus {
|
|
27
28
|
color: var(--vxe-ui-font-darken-color);
|
|
28
29
|
}
|
|
29
|
-
.vxe-text
|
|
30
|
+
.vxe-text--copy-icon:hover {
|
|
31
|
+
color: var(--vxe-ui-font-primary-lighten-color);
|
|
32
|
+
}
|
|
33
|
+
.vxe-text--copy-icon:active {
|
|
34
|
+
color: var(--vxe-ui-font-primary-darken-color);
|
|
35
|
+
}
|
|
36
|
+
.vxe-text--copy-icon.theme--primary {
|
|
37
|
+
color: var(--vxe-ui-font-primary-color);
|
|
38
|
+
}
|
|
39
|
+
.vxe-text--copy-icon.theme--primary:focus {
|
|
40
|
+
color: var(--vxe-ui-font-primary-darken-color);
|
|
41
|
+
}
|
|
42
|
+
.vxe-text--copy-icon.theme--primary:hover {
|
|
30
43
|
color: var(--vxe-ui-font-primary-lighten-color);
|
|
31
44
|
}
|
|
32
|
-
.vxe-text
|
|
45
|
+
.vxe-text--copy-icon.theme--primary:active {
|
|
33
46
|
color: var(--vxe-ui-font-primary-darken-color);
|
|
34
47
|
}
|
|
48
|
+
.vxe-text--copy-icon.theme--success {
|
|
49
|
+
color: var(--vxe-ui-status-success-color);
|
|
50
|
+
}
|
|
51
|
+
.vxe-text--copy-icon.theme--success:focus {
|
|
52
|
+
color: var(--vxe-ui-status-success-darken-color);
|
|
53
|
+
}
|
|
54
|
+
.vxe-text--copy-icon.theme--success:hover {
|
|
55
|
+
color: var(--vxe-ui-status-success-lighten-color);
|
|
56
|
+
}
|
|
57
|
+
.vxe-text--copy-icon.theme--success:active {
|
|
58
|
+
color: var(--vxe-ui-status-success-darken-color);
|
|
59
|
+
}
|
|
60
|
+
.vxe-text--copy-icon.theme--info {
|
|
61
|
+
color: var(--vxe-ui-status-info-color);
|
|
62
|
+
}
|
|
63
|
+
.vxe-text--copy-icon.theme--info:focus {
|
|
64
|
+
color: var(--vxe-ui-status-info-darken-color);
|
|
65
|
+
}
|
|
66
|
+
.vxe-text--copy-icon.theme--info:hover {
|
|
67
|
+
color: var(--vxe-ui-status-info-lighten-color);
|
|
68
|
+
}
|
|
69
|
+
.vxe-text--copy-icon.theme--info:active {
|
|
70
|
+
color: var(--vxe-ui-status-info-darken-color);
|
|
71
|
+
}
|
|
72
|
+
.vxe-text--copy-icon.theme--warning {
|
|
73
|
+
color: var(--vxe-ui-status-warning-color);
|
|
74
|
+
}
|
|
75
|
+
.vxe-text--copy-icon.theme--warning:focus {
|
|
76
|
+
color: var(--vxe-ui-status-warning-darken-color);
|
|
77
|
+
}
|
|
78
|
+
.vxe-text--copy-icon.theme--warning:hover {
|
|
79
|
+
color: var(--vxe-ui-status-warning-lighten-color);
|
|
80
|
+
}
|
|
81
|
+
.vxe-text--copy-icon.theme--warning:active {
|
|
82
|
+
color: var(--vxe-ui-status-warning-darken-color);
|
|
83
|
+
}
|
|
84
|
+
.vxe-text--copy-icon.theme--danger {
|
|
85
|
+
color: var(--vxe-ui-status-danger-color);
|
|
86
|
+
}
|
|
87
|
+
.vxe-text--copy-icon.theme--danger:focus {
|
|
88
|
+
color: var(--vxe-ui-status-danger-darken-color);
|
|
89
|
+
}
|
|
90
|
+
.vxe-text--copy-icon.theme--danger:hover {
|
|
91
|
+
color: var(--vxe-ui-status-danger-lighten-color);
|
|
92
|
+
}
|
|
93
|
+
.vxe-text--copy-icon.theme--danger:active {
|
|
94
|
+
color: var(--vxe-ui-status-danger-darken-color);
|
|
95
|
+
}
|
|
96
|
+
.vxe-text--copy-icon.theme--error {
|
|
97
|
+
color: var(--vxe-ui-status-error-color);
|
|
98
|
+
}
|
|
99
|
+
.vxe-text--copy-icon.theme--error:focus {
|
|
100
|
+
color: var(--vxe-ui-status-error-darken-color);
|
|
101
|
+
}
|
|
102
|
+
.vxe-text--copy-icon.theme--error:hover {
|
|
103
|
+
color: var(--vxe-ui-status-error-lighten-color);
|
|
104
|
+
}
|
|
105
|
+
.vxe-text--copy-icon.theme--error:active {
|
|
106
|
+
color: var(--vxe-ui-status-error-darken-color);
|
|
107
|
+
}
|
|
35
108
|
|
|
36
109
|
.vxe-text--loading,
|
|
37
110
|
.vxe-text--prefix-icon,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.vxe-text{position:relative;color:var(--vxe-ui-font-color)}.vxe-text.theme--primary{color:var(--vxe-ui-font-primary-color)}.vxe-text.theme--success{color:var(--vxe-ui-status-success-color)}.vxe-text.theme--info{color:var(--vxe-ui-status-info-color)}.vxe-text.theme--warning{color:var(--vxe-ui-status-warning-color)}.vxe-text.theme--danger{color:var(--vxe-ui-status-danger-color)}.vxe-text.theme--error{color:var(--vxe-ui-status-error-color)}.vxe-text.
|
|
1
|
+
.vxe-text{position:relative;color:var(--vxe-ui-font-color)}.vxe-text.theme--primary{color:var(--vxe-ui-font-primary-color)}.vxe-text.theme--success{color:var(--vxe-ui-status-success-color)}.vxe-text.theme--info{color:var(--vxe-ui-status-info-color)}.vxe-text.theme--warning{color:var(--vxe-ui-status-warning-color)}.vxe-text.theme--danger{color:var(--vxe-ui-status-danger-color)}.vxe-text.theme--error{color:var(--vxe-ui-status-error-color)}.vxe-text--copy-icon{cursor:pointer}.vxe-text--copy-icon:focus{color:var(--vxe-ui-font-darken-color)}.vxe-text--copy-icon:hover{color:var(--vxe-ui-font-primary-lighten-color)}.vxe-text--copy-icon:active{color:var(--vxe-ui-font-primary-darken-color)}.vxe-text--copy-icon.theme--primary{color:var(--vxe-ui-font-primary-color)}.vxe-text--copy-icon.theme--primary:focus{color:var(--vxe-ui-font-primary-darken-color)}.vxe-text--copy-icon.theme--primary:hover{color:var(--vxe-ui-font-primary-lighten-color)}.vxe-text--copy-icon.theme--primary:active{color:var(--vxe-ui-font-primary-darken-color)}.vxe-text--copy-icon.theme--success{color:var(--vxe-ui-status-success-color)}.vxe-text--copy-icon.theme--success:focus{color:var(--vxe-ui-status-success-darken-color)}.vxe-text--copy-icon.theme--success:hover{color:var(--vxe-ui-status-success-lighten-color)}.vxe-text--copy-icon.theme--success:active{color:var(--vxe-ui-status-success-darken-color)}.vxe-text--copy-icon.theme--info{color:var(--vxe-ui-status-info-color)}.vxe-text--copy-icon.theme--info:focus{color:var(--vxe-ui-status-info-darken-color)}.vxe-text--copy-icon.theme--info:hover{color:var(--vxe-ui-status-info-lighten-color)}.vxe-text--copy-icon.theme--info:active{color:var(--vxe-ui-status-info-darken-color)}.vxe-text--copy-icon.theme--warning{color:var(--vxe-ui-status-warning-color)}.vxe-text--copy-icon.theme--warning:focus{color:var(--vxe-ui-status-warning-darken-color)}.vxe-text--copy-icon.theme--warning:hover{color:var(--vxe-ui-status-warning-lighten-color)}.vxe-text--copy-icon.theme--warning:active{color:var(--vxe-ui-status-warning-darken-color)}.vxe-text--copy-icon.theme--danger{color:var(--vxe-ui-status-danger-color)}.vxe-text--copy-icon.theme--danger:focus{color:var(--vxe-ui-status-danger-darken-color)}.vxe-text--copy-icon.theme--danger:hover{color:var(--vxe-ui-status-danger-lighten-color)}.vxe-text--copy-icon.theme--danger:active{color:var(--vxe-ui-status-danger-darken-color)}.vxe-text--copy-icon.theme--error{color:var(--vxe-ui-status-error-color)}.vxe-text--copy-icon.theme--error:focus{color:var(--vxe-ui-status-error-darken-color)}.vxe-text--copy-icon.theme--error:hover{color:var(--vxe-ui-status-error-lighten-color)}.vxe-text--copy-icon.theme--error:active{color:var(--vxe-ui-status-error-darken-color)}.vxe-text--copy-icon,.vxe-text--loading,.vxe-text--prefix-icon,.vxe-text--suffix-icon{-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-text>span{padding-right:.1em}.vxe-text>span:last-child{padding-right:0}.vxe-text.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-text.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-text.size--mini{font-size:var(--vxe-ui-font-size-mini)}
|
|
@@ -4,9 +4,7 @@
|
|
|
4
4
|
top: -100%;
|
|
5
5
|
left: -100%;
|
|
6
6
|
font-size: 12px;
|
|
7
|
-
max-width: 600px;
|
|
8
7
|
border-radius: var(--vxe-ui-base-border-radius);
|
|
9
|
-
padding: 8px 12px;
|
|
10
8
|
white-space: normal;
|
|
11
9
|
word-break: break-word;
|
|
12
10
|
box-shadow: 2px 2px 4px -2px rgba(0, 0, 0, 0.2);
|
|
@@ -17,7 +15,7 @@
|
|
|
17
15
|
pointer-events: none;
|
|
18
16
|
}
|
|
19
17
|
.vxe-tooltip--wrapper.is--visible {
|
|
20
|
-
display: block;
|
|
18
|
+
display: inline-block;
|
|
21
19
|
}
|
|
22
20
|
.vxe-tooltip--wrapper.is--arrow .vxe-tooltip--arrow {
|
|
23
21
|
display: block;
|
|
@@ -31,7 +29,12 @@
|
|
|
31
29
|
background-color: transparent;
|
|
32
30
|
}
|
|
33
31
|
.vxe-tooltip--wrapper .vxe-tooltip--content {
|
|
32
|
+
padding: 8px 12px;
|
|
33
|
+
max-width: 600px;
|
|
34
|
+
max-height: 800px;
|
|
34
35
|
white-space: pre-line;
|
|
36
|
+
border-radius: var(--vxe-ui-base-border-radius);
|
|
37
|
+
overflow: auto;
|
|
35
38
|
}
|
|
36
39
|
.vxe-tooltip--wrapper .vxe-tooltip--arrow {
|
|
37
40
|
display: none;
|
|
@@ -63,10 +66,10 @@
|
|
|
63
66
|
top: -6px;
|
|
64
67
|
}
|
|
65
68
|
.vxe-tooltip--wrapper.placement--bottom .vxe-tooltip--arrow {
|
|
66
|
-
top: -
|
|
69
|
+
top: -11px;
|
|
67
70
|
}
|
|
68
71
|
.vxe-tooltip--wrapper.placement--bottom .vxe-tooltip--arrow:before {
|
|
69
|
-
top: -
|
|
72
|
+
top: -3px;
|
|
70
73
|
}
|
|
71
74
|
|
|
72
75
|
.vxe-tooltip--wrapper.theme--light {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.vxe-tooltip--wrapper{display:none;position:absolute;top:-100%;left:-100%;font-size:12px;
|
|
1
|
+
.vxe-tooltip--wrapper{display:none;position:absolute;top:-100%;left:-100%;font-size:12px;border-radius:var(--vxe-ui-base-border-radius);white-space:normal;word-break:break-word;box-shadow:2px 2px 4px -2px rgba(0,0,0,.2);color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family)}.vxe-tooltip--wrapper:not(.is--enterable){pointer-events:none}.vxe-tooltip--wrapper.is--visible{display:inline-block}.vxe-tooltip--wrapper.is--arrow .vxe-tooltip--arrow{display:block}.vxe-tooltip--wrapper.is--enterable:after{content:"";position:absolute;left:0;width:100%;height:6px;background-color:transparent}.vxe-tooltip--wrapper .vxe-tooltip--content{padding:8px 12px;max-width:600px;max-height:800px;white-space:pre-line;border-radius:var(--vxe-ui-base-border-radius);overflow:auto}.vxe-tooltip--wrapper .vxe-tooltip--arrow{display:none;position:absolute;border-color:transparent;border-width:6px;border-style:solid;left:50%;transform:translateX(-6px)}.vxe-tooltip--wrapper .vxe-tooltip--arrow:before{content:"";position:absolute;border-color:transparent;border-width:5px;border-style:solid;left:-5px}.vxe-tooltip--wrapper.placement--top.is--enterable:after{bottom:-6px}.vxe-tooltip--wrapper.placement--top .vxe-tooltip--arrow{bottom:-11px}.vxe-tooltip--wrapper.placement--top .vxe-tooltip--arrow:before{top:-7px}.vxe-tooltip--wrapper.placement--bottom.is--enterable:after{top:-6px}.vxe-tooltip--wrapper.placement--bottom .vxe-tooltip--arrow{top:-11px}.vxe-tooltip--wrapper.placement--bottom .vxe-tooltip--arrow:before{top:-3px}.vxe-tooltip--wrapper.theme--light{background-color:var(--vxe-ui-layout-background-color);border:1px solid var(--vxe-ui-input-border-color)}.vxe-tooltip--wrapper.theme--light.placement--top .vxe-tooltip--arrow{border-top-color:var(--vxe-ui-input-border-color)}.vxe-tooltip--wrapper.theme--light.placement--top .vxe-tooltip--arrow:before{border-top-color:var(--vxe-ui-layout-background-color)}.vxe-tooltip--wrapper.theme--light.placement--bottom .vxe-tooltip--arrow{border-bottom-color:var(--vxe-ui-input-border-color)}.vxe-tooltip--wrapper.theme--light.placement--bottom .vxe-tooltip--arrow:before{border-bottom-color:var(--vxe-ui-layout-background-color)}.vxe-tooltip--wrapper.theme--dark{background:var(--vxe-ui-tooltip-dark-background-color);color:var(--vxe-ui-tooltip-dark-color)}.vxe-tooltip--wrapper.theme--dark.placement--top .vxe-tooltip--arrow{border-top-color:var(--vxe-ui-tooltip-dark-background-color)}.vxe-tooltip--wrapper.theme--dark.placement--top .vxe-tooltip--arrow:before{border-top-color:var(--vxe-ui-tooltip-dark-background-color)}.vxe-tooltip--wrapper.theme--dark.placement--bottom .vxe-tooltip--arrow{border-bottom-color:var(--vxe-ui-tooltip-dark-background-color)}.vxe-tooltip--wrapper.theme--dark.placement--bottom .vxe-tooltip--arrow:before{border-bottom-color:var(--vxe-ui-tooltip-dark-background-color)}
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ref, h, reactive, PropType, VNode } from 'vue'
|
|
1
|
+
import { ref, h, reactive, PropType, VNode, computed } from 'vue'
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
3
|
import XEUtils from 'xe-utils'
|
|
4
4
|
import { VxeUI, getConfig, getIcon, getI18n, useSize, createEvent } from '../../ui'
|
|
@@ -19,14 +19,7 @@ export default defineVxeComponent({
|
|
|
19
19
|
type: Boolean as PropType<VxeTextPropTypes.ClickToCopy>,
|
|
20
20
|
default: () => getConfig().text.clickToCopy
|
|
21
21
|
},
|
|
22
|
-
|
|
23
|
-
type: String as PropType<VxeTextPropTypes.CopyIcon>,
|
|
24
|
-
default: () => getConfig().text.copyIcon
|
|
25
|
-
},
|
|
26
|
-
copyLayout: {
|
|
27
|
-
type: String as PropType<VxeTextPropTypes.CopyLayout>,
|
|
28
|
-
default: () => getConfig().text.copyLayout
|
|
29
|
-
},
|
|
22
|
+
copyConfig: Object as PropType<VxeTextPropTypes.CopyConfig>,
|
|
30
23
|
size: {
|
|
31
24
|
type: String as PropType<VxeTextPropTypes.Size>,
|
|
32
25
|
default: () => getConfig().text.size || getConfig().size
|
|
@@ -34,8 +27,11 @@ export default defineVxeComponent({
|
|
|
34
27
|
},
|
|
35
28
|
emits: [
|
|
36
29
|
'click',
|
|
30
|
+
'dblclick',
|
|
37
31
|
'prefix-click',
|
|
38
|
-
'suffix-click'
|
|
32
|
+
'suffix-click',
|
|
33
|
+
'copy-success',
|
|
34
|
+
'copy-error'
|
|
39
35
|
] as VxeTextEmits,
|
|
40
36
|
setup (props, context) {
|
|
41
37
|
const { emit, slots } = context
|
|
@@ -50,6 +46,10 @@ export default defineVxeComponent({
|
|
|
50
46
|
const reactData = reactive<TextReactData>({
|
|
51
47
|
})
|
|
52
48
|
|
|
49
|
+
const computeCopyOpts = computed(() => {
|
|
50
|
+
return Object.assign({}, getConfig().text.copyConfig, props.copyConfig)
|
|
51
|
+
})
|
|
52
|
+
|
|
53
53
|
const refMaps: TextPrivateRef = {
|
|
54
54
|
refElem
|
|
55
55
|
}
|
|
@@ -57,31 +57,49 @@ export default defineVxeComponent({
|
|
|
57
57
|
const computeMaps: VxeTextPrivateComputed = {
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
const
|
|
61
|
-
const { content
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
} else {
|
|
74
|
-
if (VxeUI.modal) {
|
|
75
|
-
VxeUI.modal.message({
|
|
76
|
-
content: getI18n('vxe.text.copyError'),
|
|
77
|
-
status: 'error'
|
|
78
|
-
})
|
|
79
|
-
}
|
|
60
|
+
const handleCopy = (evnt: MouseEvent) => {
|
|
61
|
+
const { content } = props
|
|
62
|
+
const copyOpts = computeCopyOpts.value
|
|
63
|
+
const { showMessage } = copyOpts
|
|
64
|
+
const contentEl = refContentElem.value
|
|
65
|
+
const copyVal = (contentEl ? contentEl.textContent : '') || content
|
|
66
|
+
if (copyVal) {
|
|
67
|
+
if (VxeUI.clipboard.copy(copyVal)) {
|
|
68
|
+
if (showMessage && VxeUI.modal) {
|
|
69
|
+
VxeUI.modal.message({
|
|
70
|
+
content: getI18n('vxe.text.copySuccess'),
|
|
71
|
+
status: 'success'
|
|
72
|
+
})
|
|
80
73
|
}
|
|
74
|
+
dispatchEvent('copy-success', {}, evnt)
|
|
75
|
+
} else {
|
|
76
|
+
if (showMessage && VxeUI.modal) {
|
|
77
|
+
VxeUI.modal.message({
|
|
78
|
+
content: getI18n('vxe.text.copyError'),
|
|
79
|
+
status: 'error'
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
dispatchEvent('copy-error', {}, evnt)
|
|
81
83
|
}
|
|
82
84
|
}
|
|
83
85
|
}
|
|
84
86
|
|
|
87
|
+
const clickIconEvent = (evnt: MouseEvent) => {
|
|
88
|
+
const { clickToCopy } = props
|
|
89
|
+
const copyOpts = computeCopyOpts.value
|
|
90
|
+
if (clickToCopy && copyOpts.trigger !== 'dblclick') {
|
|
91
|
+
handleCopy(evnt)
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const dblclickIconEvent = (evnt: MouseEvent) => {
|
|
96
|
+
const { clickToCopy } = props
|
|
97
|
+
const copyOpts = computeCopyOpts.value
|
|
98
|
+
if (clickToCopy && copyOpts.trigger === 'dblclick') {
|
|
99
|
+
handleCopy(evnt)
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
85
103
|
const $xeText = {
|
|
86
104
|
xID,
|
|
87
105
|
props,
|
|
@@ -107,6 +125,13 @@ export default defineVxeComponent({
|
|
|
107
125
|
}
|
|
108
126
|
}
|
|
109
127
|
|
|
128
|
+
const dblclickEvent = (evnt : MouseEvent) => {
|
|
129
|
+
const { loading } = props
|
|
130
|
+
if (!loading) {
|
|
131
|
+
dispatchEvent('dblclick', {}, evnt)
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
110
135
|
const prefixEvent = (evnt : MouseEvent) => {
|
|
111
136
|
const { loading } = props
|
|
112
137
|
if (!loading) {
|
|
@@ -127,24 +152,29 @@ export default defineVxeComponent({
|
|
|
127
152
|
Object.assign($xeText, textMethods, textPrivateMethods)
|
|
128
153
|
|
|
129
154
|
const renderCopyIcon = () => {
|
|
130
|
-
const
|
|
155
|
+
const copyOpts = computeCopyOpts.value
|
|
156
|
+
const { icon, status } = copyOpts
|
|
131
157
|
return h('span', {
|
|
132
158
|
key: 'ci',
|
|
133
|
-
class: 'vxe-text--copy-icon',
|
|
134
|
-
|
|
159
|
+
class: ['vxe-text--copy-icon', {
|
|
160
|
+
[`theme--${status}`]: status
|
|
161
|
+
}],
|
|
162
|
+
onClick: clickIconEvent,
|
|
163
|
+
onDblclick: dblclickIconEvent
|
|
135
164
|
}, [
|
|
136
165
|
h('i', {
|
|
137
|
-
class:
|
|
166
|
+
class: icon || getIcon().TEXT_COPY
|
|
138
167
|
})
|
|
139
168
|
])
|
|
140
169
|
}
|
|
141
170
|
|
|
142
171
|
const renderContent = () => {
|
|
143
|
-
const { loading, icon, prefixIcon, suffixIcon, clickToCopy, content
|
|
172
|
+
const { loading, icon, prefixIcon, suffixIcon, clickToCopy, content } = props
|
|
173
|
+
const copyOpts = computeCopyOpts.value
|
|
144
174
|
const defaultSlot = slots.default
|
|
145
175
|
const prefixIconSlot = slots.prefixIcon || slots['prefix-icon'] || slots.icon
|
|
146
176
|
const suffixIconSlot = slots.suffixIcon || slots['suffix-icon']
|
|
147
|
-
const copyToRight =
|
|
177
|
+
const copyToRight = copyOpts.layout === 'right'
|
|
148
178
|
const contVNs: VNode[] = []
|
|
149
179
|
if (loading) {
|
|
150
180
|
contVNs.push(
|
|
@@ -179,7 +209,9 @@ export default defineVxeComponent({
|
|
|
179
209
|
h('span', {
|
|
180
210
|
key: 'ct',
|
|
181
211
|
ref: refContentElem,
|
|
182
|
-
class: 'vxe-text--content'
|
|
212
|
+
class: 'vxe-text--content',
|
|
213
|
+
onClick: clickEvent,
|
|
214
|
+
onDblclick: dblclickEvent
|
|
183
215
|
}, defaultSlot ? defaultSlot({}) : XEUtils.toValueString(content))
|
|
184
216
|
)
|
|
185
217
|
if (suffixIcon) {
|
|
@@ -214,8 +246,7 @@ export default defineVxeComponent({
|
|
|
214
246
|
[`theme--${status}`]: status,
|
|
215
247
|
'is--copy': clickToCopy,
|
|
216
248
|
'is--loading': loading
|
|
217
|
-
}]
|
|
218
|
-
onClick: clickEvent
|
|
249
|
+
}]
|
|
219
250
|
}, renderContent())
|
|
220
251
|
}
|
|
221
252
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { h, ref,
|
|
1
|
+
import { h, ref, nextTick, onBeforeUnmount, onMounted, computed, reactive, watch, PropType, VNode } from 'vue'
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
3
|
import XEUtils from 'xe-utils'
|
|
4
4
|
import { getConfig, createEvent, useSize } from '../../ui'
|
|
5
5
|
import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
|
|
6
|
-
import { getAbsolutePos, getDomNode } from '../../ui/src/dom'
|
|
6
|
+
import { getAbsolutePos, getDomNode, toCssUnit } from '../../ui/src/dom'
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
8
8
|
|
|
9
|
-
import type { VxeTooltipPropTypes, VxeTooltipConstructor, VxeTooltipEmits, TooltipInternalData, TooltipReactData, TooltipMethods, TooltipPrivateRef } from '../../../types'
|
|
9
|
+
import type { VxeTooltipPropTypes, VxeTooltipConstructor, VxeTooltipEmits, TooltipInternalData, TooltipReactData, TooltipMethods, TooltipPrivateRef, VxeComponentStyleType } from '../../../types'
|
|
10
10
|
|
|
11
11
|
export default defineVxeComponent({
|
|
12
12
|
name: 'VxeTooltip',
|
|
@@ -32,6 +32,30 @@ export default defineVxeComponent({
|
|
|
32
32
|
useHTML: Boolean as PropType<VxeTooltipPropTypes.UseHTML>,
|
|
33
33
|
zIndex: [String, Number] as PropType<VxeTooltipPropTypes.ZIndex>,
|
|
34
34
|
popupClassName: [String, Function] as PropType<VxeTooltipPropTypes.PopupClassName>,
|
|
35
|
+
width: {
|
|
36
|
+
type: [String, Number] as PropType<VxeTooltipPropTypes.Width>,
|
|
37
|
+
default: () => getConfig().tooltip.Width
|
|
38
|
+
},
|
|
39
|
+
height: {
|
|
40
|
+
type: [String, Number] as PropType<VxeTooltipPropTypes.Height>,
|
|
41
|
+
default: () => getConfig().tooltip.height
|
|
42
|
+
},
|
|
43
|
+
minWidth: {
|
|
44
|
+
type: [String, Number] as PropType<VxeTooltipPropTypes.MinWidth>,
|
|
45
|
+
default: () => getConfig().tooltip.minWidth
|
|
46
|
+
},
|
|
47
|
+
minHeight: {
|
|
48
|
+
type: [String, Number] as PropType<VxeTooltipPropTypes.MinHeight>,
|
|
49
|
+
default: () => getConfig().tooltip.minHeight
|
|
50
|
+
},
|
|
51
|
+
maxWidth: {
|
|
52
|
+
type: [String, Number] as PropType<VxeTooltipPropTypes.MaxWidth>,
|
|
53
|
+
default: () => getConfig().tooltip.maxWidth
|
|
54
|
+
},
|
|
55
|
+
maxHeight: {
|
|
56
|
+
type: [String, Number] as PropType<VxeTooltipPropTypes.MaxHeight>,
|
|
57
|
+
default: () => getConfig().tooltip.maxHeight
|
|
58
|
+
},
|
|
35
59
|
isArrow: {
|
|
36
60
|
type: Boolean as PropType<VxeTooltipPropTypes.IsArrow>,
|
|
37
61
|
default: () => getConfig().tooltip.isArrow
|
|
@@ -77,7 +101,32 @@ export default defineVxeComponent({
|
|
|
77
101
|
const internalData: TooltipInternalData = {
|
|
78
102
|
}
|
|
79
103
|
|
|
80
|
-
const refElem = ref
|
|
104
|
+
const refElem = ref<HTMLDivElement>()
|
|
105
|
+
const contentWrapperfElem = ref<HTMLDivElement>()
|
|
106
|
+
|
|
107
|
+
const computeWrapperStyle = computed(() => {
|
|
108
|
+
const { width, height, minHeight, minWidth, maxHeight, maxWidth } = props
|
|
109
|
+
const stys: VxeComponentStyleType = {}
|
|
110
|
+
if (width) {
|
|
111
|
+
stys.width = toCssUnit(width)
|
|
112
|
+
}
|
|
113
|
+
if (height) {
|
|
114
|
+
stys.height = toCssUnit(height)
|
|
115
|
+
}
|
|
116
|
+
if (minWidth) {
|
|
117
|
+
stys.minWidth = toCssUnit(minWidth)
|
|
118
|
+
}
|
|
119
|
+
if (minHeight) {
|
|
120
|
+
stys.minHeight = toCssUnit(minHeight)
|
|
121
|
+
}
|
|
122
|
+
if (maxWidth) {
|
|
123
|
+
stys.maxWidth = toCssUnit(maxWidth)
|
|
124
|
+
}
|
|
125
|
+
if (maxHeight) {
|
|
126
|
+
stys.maxHeight = toCssUnit(maxHeight)
|
|
127
|
+
}
|
|
128
|
+
return stys
|
|
129
|
+
})
|
|
81
130
|
|
|
82
131
|
const refMaps: TooltipPrivateRef = {
|
|
83
132
|
refElem
|
|
@@ -100,6 +149,9 @@ export default defineVxeComponent({
|
|
|
100
149
|
const { scrollTop, scrollLeft, visibleWidth } = getDomNode()
|
|
101
150
|
const { top, left } = getAbsolutePos(tipTarget)
|
|
102
151
|
const el = refElem.value
|
|
152
|
+
if (!el) {
|
|
153
|
+
return
|
|
154
|
+
}
|
|
103
155
|
const marginSize = 6
|
|
104
156
|
const offsetHeight = el.offsetHeight
|
|
105
157
|
const offsetWidth = el.offsetWidth
|
|
@@ -276,29 +328,42 @@ export default defineVxeComponent({
|
|
|
276
328
|
}
|
|
277
329
|
}
|
|
278
330
|
|
|
331
|
+
const wheelEvent = (evnt: Event) => {
|
|
332
|
+
evnt.stopPropagation()
|
|
333
|
+
}
|
|
334
|
+
|
|
279
335
|
Object.assign($xeTooltip, tooltipMethods)
|
|
280
336
|
|
|
281
337
|
const renderContent = () => {
|
|
282
338
|
const { useHTML } = props
|
|
283
339
|
const { tipContent } = reactData
|
|
340
|
+
const wrapperStyle = computeWrapperStyle.value
|
|
284
341
|
const contentSlot = slots.content
|
|
342
|
+
const contVNs: VNode[] = []
|
|
285
343
|
if (contentSlot) {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
if (useHTML) {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
344
|
+
contVNs.push(
|
|
345
|
+
h('div', {
|
|
346
|
+
key: 1
|
|
347
|
+
}, getSlotVNs(contentSlot({})))
|
|
348
|
+
)
|
|
349
|
+
} else if (useHTML) {
|
|
350
|
+
contVNs.push(
|
|
351
|
+
h('div', {
|
|
352
|
+
key: 2,
|
|
353
|
+
innerHTML: tipContent
|
|
354
|
+
})
|
|
355
|
+
)
|
|
356
|
+
} else {
|
|
357
|
+
contVNs.push(h('span', {
|
|
358
|
+
key: 3
|
|
359
|
+
}, `${tipContent}`))
|
|
297
360
|
}
|
|
298
361
|
return h('div', {
|
|
299
362
|
key: 3,
|
|
300
|
-
|
|
301
|
-
|
|
363
|
+
ref: contentWrapperfElem,
|
|
364
|
+
class: 'vxe-tooltip--content',
|
|
365
|
+
style: wrapperStyle
|
|
366
|
+
}, contVNs)
|
|
302
367
|
}
|
|
303
368
|
|
|
304
369
|
const renderVN = () => {
|
|
@@ -355,6 +420,10 @@ export default defineVxeComponent({
|
|
|
355
420
|
})
|
|
356
421
|
|
|
357
422
|
onMounted(() => {
|
|
423
|
+
const contentWrapperfEl = contentWrapperfElem.value
|
|
424
|
+
if (contentWrapperfEl) {
|
|
425
|
+
contentWrapperfEl.addEventListener('wheel', wheelEvent, { passive: false })
|
|
426
|
+
}
|
|
358
427
|
nextTick(() => {
|
|
359
428
|
const { trigger, content } = props
|
|
360
429
|
const wrapperElem = refElem.value
|
|
@@ -397,6 +466,10 @@ export default defineVxeComponent({
|
|
|
397
466
|
target.onmouseleave = null
|
|
398
467
|
target.onclick = null
|
|
399
468
|
}
|
|
469
|
+
const contentWrapperfEl = contentWrapperfElem.value
|
|
470
|
+
if (contentWrapperfEl) {
|
|
471
|
+
contentWrapperfEl.removeEventListener('wheel', wheelEvent)
|
|
472
|
+
}
|
|
400
473
|
if (wrapperElem) {
|
|
401
474
|
const parentNode = wrapperElem.parentNode
|
|
402
475
|
if (parentNode) {
|
package/packages/ui/index.ts
CHANGED
|
@@ -61,21 +61,36 @@ $btnThemeList: (
|
|
|
61
61
|
color: map.get($item, textColor);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.vxe-text--copy-icon {
|
|
67
|
+
cursor: pointer;
|
|
68
|
+
&:focus {
|
|
69
|
+
color: var(--vxe-ui-font-darken-color);
|
|
70
|
+
}
|
|
71
|
+
&:hover {
|
|
72
|
+
color: var(--vxe-ui-font-primary-lighten-color);
|
|
73
|
+
}
|
|
74
|
+
&:active {
|
|
75
|
+
color: var(--vxe-ui-font-primary-darken-color);
|
|
76
|
+
}
|
|
77
|
+
@for $index from 0 to list.length($btnThemeList) {
|
|
78
|
+
$item: list.nth($btnThemeList, $index + 1);
|
|
79
|
+
&.theme--#{map.get($item, name)} {
|
|
80
|
+
color: map.get($item, textColor);
|
|
67
81
|
&:focus {
|
|
68
|
-
color:
|
|
82
|
+
color: map.get($item, btnDarkenColor);
|
|
69
83
|
}
|
|
70
84
|
&:hover {
|
|
71
|
-
color:
|
|
85
|
+
color: map.get($item, btnLightenColor);
|
|
72
86
|
}
|
|
73
87
|
&:active {
|
|
74
|
-
color:
|
|
88
|
+
color: map.get($item, btnDarkenColor);
|
|
75
89
|
}
|
|
76
90
|
}
|
|
77
91
|
}
|
|
78
92
|
}
|
|
93
|
+
|
|
79
94
|
.vxe-text--loading,
|
|
80
95
|
.vxe-text--prefix-icon,
|
|
81
96
|
.vxe-text--suffix-icon,
|
|
@@ -4,9 +4,7 @@
|
|
|
4
4
|
top: -100%;
|
|
5
5
|
left: -100%;
|
|
6
6
|
font-size: 12px;
|
|
7
|
-
max-width: 600px;
|
|
8
7
|
border-radius: var(--vxe-ui-base-border-radius);
|
|
9
|
-
padding: 8px 12px;
|
|
10
8
|
white-space: normal;
|
|
11
9
|
word-break: break-word;
|
|
12
10
|
box-shadow: 2px 2px 4px -2px rgba(0,0,0,.2);
|
|
@@ -16,7 +14,7 @@
|
|
|
16
14
|
pointer-events: none;
|
|
17
15
|
}
|
|
18
16
|
&.is--visible {
|
|
19
|
-
display: block;
|
|
17
|
+
display: inline-block;
|
|
20
18
|
}
|
|
21
19
|
&.is--arrow {
|
|
22
20
|
.vxe-tooltip--arrow {
|
|
@@ -34,7 +32,12 @@
|
|
|
34
32
|
}
|
|
35
33
|
}
|
|
36
34
|
.vxe-tooltip--content {
|
|
35
|
+
padding: 8px 12px;
|
|
36
|
+
max-width: 600px;
|
|
37
|
+
max-height: 800px;
|
|
37
38
|
white-space: pre-line;
|
|
39
|
+
border-radius: var(--vxe-ui-base-border-radius);
|
|
40
|
+
overflow: auto;
|
|
38
41
|
}
|
|
39
42
|
.vxe-tooltip--arrow {
|
|
40
43
|
display: none;
|
|
@@ -73,9 +76,9 @@
|
|
|
73
76
|
}
|
|
74
77
|
}
|
|
75
78
|
.vxe-tooltip--arrow {
|
|
76
|
-
top: -
|
|
79
|
+
top: -11px;
|
|
77
80
|
&:before {
|
|
78
|
-
top: -
|
|
81
|
+
top: -3px;
|
|
79
82
|
}
|
|
80
83
|
}
|
|
81
84
|
}
|
|
@@ -1363,10 +1363,16 @@ export namespace VxeTablePropTypes {
|
|
|
1363
1363
|
*/
|
|
1364
1364
|
export interface TooltipConfig<D = VxeTablePropTypes.Row> {
|
|
1365
1365
|
showAll?: boolean
|
|
1366
|
-
theme?:
|
|
1367
|
-
enterable?:
|
|
1368
|
-
enterDelay?:
|
|
1369
|
-
leaveDelay?:
|
|
1366
|
+
theme?: VxeTooltipPropTypes.Theme
|
|
1367
|
+
enterable?: VxeTooltipPropTypes.Enterable
|
|
1368
|
+
enterDelay?: VxeTooltipPropTypes.EnterDelay
|
|
1369
|
+
leaveDelay?: VxeTooltipPropTypes.LeaveDelay
|
|
1370
|
+
width?: VxeTooltipPropTypes.Width
|
|
1371
|
+
height?: VxeTooltipPropTypes.Height
|
|
1372
|
+
minWidth?: VxeTooltipPropTypes.MinWidth
|
|
1373
|
+
minHeight?: VxeTooltipPropTypes.MinHeight
|
|
1374
|
+
maxWidth?: VxeTooltipPropTypes.MaxWidth
|
|
1375
|
+
maxHeight?: VxeTooltipPropTypes.MaxHeight
|
|
1370
1376
|
contentMethod?(params: {
|
|
1371
1377
|
$table: VxeTableConstructor<D>
|
|
1372
1378
|
items: any[]
|