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.
Files changed (58) hide show
  1. package/es/icon/style.css +1 -1
  2. package/es/style.css +1 -1
  3. package/es/style.min.css +1 -1
  4. package/es/text/src/text.js +66 -39
  5. package/es/text/style.css +77 -4
  6. package/es/text/style.min.css +1 -1
  7. package/es/tooltip/src/tooltip.js +81 -12
  8. package/es/tooltip/style.css +8 -5
  9. package/es/tooltip/style.min.css +1 -1
  10. package/es/ui/index.js +6 -2
  11. package/es/ui/src/log.js +1 -1
  12. package/es/vxe-text/style.css +77 -4
  13. package/es/vxe-text/style.min.css +1 -1
  14. package/es/vxe-tooltip/style.css +8 -5
  15. package/es/vxe-tooltip/style.min.css +1 -1
  16. package/lib/icon/style/style.css +1 -1
  17. package/lib/icon/style/style.min.css +1 -1
  18. package/lib/index.umd.js +167 -55
  19. package/lib/index.umd.min.js +1 -1
  20. package/lib/style.css +1 -1
  21. package/lib/style.min.css +1 -1
  22. package/lib/text/src/text.js +72 -41
  23. package/lib/text/src/text.min.js +1 -1
  24. package/lib/text/style/style.css +77 -4
  25. package/lib/text/style/style.min.css +1 -1
  26. package/lib/tooltip/src/tooltip.js +87 -11
  27. package/lib/tooltip/src/tooltip.min.js +1 -1
  28. package/lib/tooltip/style/style.css +8 -5
  29. package/lib/tooltip/style/style.min.css +1 -1
  30. package/lib/ui/index.js +6 -2
  31. package/lib/ui/index.min.js +1 -1
  32. package/lib/ui/src/log.js +1 -1
  33. package/lib/ui/src/log.min.js +1 -1
  34. package/lib/vxe-text/style/style.css +77 -4
  35. package/lib/vxe-text/style/style.min.css +1 -1
  36. package/lib/vxe-tooltip/style/style.css +8 -5
  37. package/lib/vxe-tooltip/style/style.min.css +1 -1
  38. package/package.json +1 -1
  39. package/packages/text/src/text.ts +70 -39
  40. package/packages/tooltip/src/tooltip.ts +90 -17
  41. package/packages/ui/index.ts +5 -1
  42. package/styles/components/text.scss +21 -6
  43. package/styles/components/tooltip.scss +8 -5
  44. package/types/components/table.d.ts +10 -4
  45. package/types/components/text.d.ts +12 -5
  46. package/types/components/tooltip.d.ts +12 -0
  47. /package/es/icon/{iconfont.1757125817990.ttf → iconfont.1757242939473.ttf} +0 -0
  48. /package/es/icon/{iconfont.1757125817990.woff → iconfont.1757242939473.woff} +0 -0
  49. /package/es/icon/{iconfont.1757125817990.woff2 → iconfont.1757242939473.woff2} +0 -0
  50. /package/es/{iconfont.1757125817990.ttf → iconfont.1757242939473.ttf} +0 -0
  51. /package/es/{iconfont.1757125817990.woff → iconfont.1757242939473.woff} +0 -0
  52. /package/es/{iconfont.1757125817990.woff2 → iconfont.1757242939473.woff2} +0 -0
  53. /package/lib/icon/style/{iconfont.1757125817990.ttf → iconfont.1757242939473.ttf} +0 -0
  54. /package/lib/icon/style/{iconfont.1757125817990.woff → iconfont.1757242939473.woff} +0 -0
  55. /package/lib/icon/style/{iconfont.1757125817990.woff2 → iconfont.1757242939473.woff2} +0 -0
  56. /package/lib/{iconfont.1757125817990.ttf → iconfont.1757242939473.ttf} +0 -0
  57. /package/lib/{iconfont.1757125817990.woff → iconfont.1757242939473.woff} +0 -0
  58. /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.17"}`;
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);
@@ -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.17",warnLog=exports.warnLog=_core.log.create("warn",version),errLog=exports.errLog=_core.log.create("error",version);
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
- .vxe-text.is--copy > .vxe-text--copy-icon {
23
+
24
+ .vxe-text--copy-icon {
24
25
  cursor: pointer;
25
26
  }
26
- .vxe-text.is--copy > .vxe-text--copy-icon:focus {
27
+ .vxe-text--copy-icon:focus {
27
28
  color: var(--vxe-ui-font-darken-color);
28
29
  }
29
- .vxe-text.is--copy > .vxe-text--copy-icon:hover {
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.is--copy > .vxe-text--copy-icon:active {
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.is--copy>.vxe-text--copy-icon{cursor:pointer}.vxe-text.is--copy>.vxe-text--copy-icon:focus{color:var(--vxe-ui-font-darken-color)}.vxe-text.is--copy>.vxe-text--copy-icon:hover{color:var(--vxe-ui-font-primary-lighten-color)}.vxe-text.is--copy>.vxe-text--copy-icon:active{color:var(--vxe-ui-font-primary-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)}
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: -12px;
69
+ top: -11px;
67
70
  }
68
71
  .vxe-tooltip--wrapper.placement--bottom .vxe-tooltip--arrow:before {
69
- top: -4px;
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;max-width:600px;border-radius:var(--vxe-ui-base-border-radius);padding:8px 12px;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: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{white-space:pre-line}.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:-12px}.vxe-tooltip--wrapper.placement--bottom .vxe-tooltip--arrow:before{top:-4px}.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)}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-pc-ui",
3
- "version": "4.9.17",
3
+ "version": "4.9.19",
4
4
  "description": "A vue based PC component library",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -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
- copyIcon: {
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 clickIconEvent = () => {
61
- const { content, clickToCopy } = props
62
- if (clickToCopy) {
63
- const contentEl = refContentElem.value
64
- const copyVal = (contentEl ? contentEl.textContent : '') || content
65
- if (copyVal) {
66
- if (VxeUI.clipboard.copy(copyVal)) {
67
- if (VxeUI.modal) {
68
- VxeUI.modal.message({
69
- content: getI18n('vxe.text.copySuccess'),
70
- status: 'success'
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 { copyIcon } = props
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
- onClick: clickIconEvent
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: copyIcon || getIcon().TEXT_COPY
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, copyLayout } = props
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 = copyLayout === 'right'
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, Ref, nextTick, onBeforeUnmount, onMounted, reactive, watch, PropType } from 'vue'
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() as Ref<HTMLDivElement>
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
- return h('div', {
287
- key: 1,
288
- class: 'vxe-tooltip--content'
289
- }, getSlotVNs(contentSlot({})))
290
- }
291
- if (useHTML) {
292
- return h('div', {
293
- key: 2,
294
- class: 'vxe-tooltip--content',
295
- innerHTML: tipContent
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
- class: 'vxe-tooltip--content'
301
- }, `${tipContent}`)
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) {
@@ -348,7 +348,11 @@ setConfig({
348
348
  textEllipsis: {
349
349
  underline: true
350
350
  },
351
- text: {},
351
+ text: {
352
+ copyConfig: {
353
+ showMessage: true
354
+ }
355
+ },
352
356
  textarea: {
353
357
  resize: 'none'
354
358
  },
@@ -61,21 +61,36 @@ $btnThemeList: (
61
61
  color: map.get($item, textColor);
62
62
  }
63
63
  }
64
- &.is--copy {
65
- & > .vxe-text--copy-icon {
66
- cursor: pointer;
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: var(--vxe-ui-font-darken-color);
82
+ color: map.get($item, btnDarkenColor);
69
83
  }
70
84
  &:hover {
71
- color: var(--vxe-ui-font-primary-lighten-color);
85
+ color: map.get($item, btnLightenColor);
72
86
  }
73
87
  &:active {
74
- color: var(--vxe-ui-font-primary-darken-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: -12px;
79
+ top: -11px;
77
80
  &:before {
78
- top: -4px;
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?: 'dark' | 'light' | '' | null
1367
- enterable?: boolean
1368
- enterDelay?: number
1369
- leaveDelay?: number
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[]