cbvirtua 1.0.5 → 1.0.6

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 (76) hide show
  1. package/package.json +1 -1
  2. package/v2/App.vue +56 -0
  3. package/v2/components/Dropdown.vue +28 -0
  4. package/v2/components/Menu.vue +9 -0
  5. package/{floating → v2}/components/Popper.js +1 -1
  6. package/v2/components/PopperContent.vue +270 -0
  7. package/v2/components/PopperWrapper.vue +101 -0
  8. package/v2/components/ResizeObserver.vue +151 -0
  9. package/v2/components/Tooltip.vue +22 -0
  10. package/v2/components/TooltipDirective.vue +171 -0
  11. package/v2/floating-ui/core/computeCoordsFromPlacement.js +39 -0
  12. package/v2/floating-ui/core/computePosition.js +52 -0
  13. package/v2/floating-ui/core/detectOverflow.js +36 -0
  14. package/v2/floating-ui/core/enums.js +7 -0
  15. package/v2/floating-ui/core/index.js +11 -0
  16. package/v2/floating-ui/core/middleware/arrow.js +52 -0
  17. package/v2/floating-ui/core/middleware/autoPlacement.js +84 -0
  18. package/v2/floating-ui/core/middleware/flip.js +82 -0
  19. package/v2/floating-ui/core/middleware/hide.js +36 -0
  20. package/v2/floating-ui/core/middleware/inline.js +100 -0
  21. package/v2/floating-ui/core/middleware/offset.js +26 -0
  22. package/v2/floating-ui/core/middleware/shift.js +99 -0
  23. package/v2/floating-ui/core/middleware/size.js +58 -0
  24. package/v2/floating-ui/core/types.js +11 -0
  25. package/v2/floating-ui/core/utils/expandPaddingObject.js +3 -0
  26. package/v2/floating-ui/core/utils/getAlignment.js +3 -0
  27. package/v2/floating-ui/core/utils/getAlignmentSides.js +23 -0
  28. package/v2/floating-ui/core/utils/getBasePlacement.js +3 -0
  29. package/v2/floating-ui/core/utils/getCrossAxis.js +3 -0
  30. package/v2/floating-ui/core/utils/getExpandedPlacements.js +10 -0
  31. package/v2/floating-ui/core/utils/getLengthFromAxis.js +3 -0
  32. package/v2/floating-ui/core/utils/getMainAxisFromPlacement.js +4 -0
  33. package/v2/floating-ui/core/utils/getOppositeAlignmentPlacement.js +4 -0
  34. package/v2/floating-ui/core/utils/getOppositePlacement.js +4 -0
  35. package/v2/floating-ui/core/utils/getPaddingObject.js +6 -0
  36. package/v2/floating-ui/core/utils/math.js +2 -0
  37. package/v2/floating-ui/core/utils/rectToClientRect.js +9 -0
  38. package/v2/floating-ui/core/utils/within.js +4 -0
  39. package/v2/floating-ui/dom/index.js +5 -0
  40. package/v2/floating-ui/dom/platform.js +20 -0
  41. package/v2/floating-ui/dom/utils/contains.js +22 -0
  42. package/v2/floating-ui/dom/utils/convertOffsetParentRelativeRectToViewportRelativeRect.js +35 -0
  43. package/v2/floating-ui/dom/utils/getBoundingClientRect.js +27 -0
  44. package/v2/floating-ui/dom/utils/getClippingClientRect.js +76 -0
  45. package/v2/floating-ui/dom/utils/getComputedStyle.js +4 -0
  46. package/v2/floating-ui/dom/utils/getDimensions.js +6 -0
  47. package/v2/floating-ui/dom/utils/getDocumentElement.js +4 -0
  48. package/v2/floating-ui/dom/utils/getDocumentRect.js +21 -0
  49. package/v2/floating-ui/dom/utils/getNodeName.js +4 -0
  50. package/v2/floating-ui/dom/utils/getNodeScroll.js +13 -0
  51. package/v2/floating-ui/dom/utils/getOffsetParent.js +43 -0
  52. package/v2/floating-ui/dom/utils/getParentNode.js +16 -0
  53. package/v2/floating-ui/dom/utils/getRectRelativeToOffsetParent.js +40 -0
  54. package/v2/floating-ui/dom/utils/getScrollParent.js +13 -0
  55. package/v2/floating-ui/dom/utils/getScrollParents.js +18 -0
  56. package/v2/floating-ui/dom/utils/getViewportRect.js +25 -0
  57. package/v2/floating-ui/dom/utils/getWindowScrollBarX.js +9 -0
  58. package/v2/floating-ui/dom/utils/is.js +38 -0
  59. package/v2/floating-ui/dom/utils/math.js +3 -0
  60. package/v2/floating-ui/dom/utils/window.js +13 -0
  61. package/{floating → v2}/index.js +2 -1
  62. package/floating/demo/TestDropdown.vue +0 -22
  63. package/floating/demo/TestSubMenu.vue +0 -87
  64. package/floating/demo/TestTooltip.vue +0 -19
  65. package/floating/directives/v-tooltip.spec.js +0 -28
  66. /package/{floating → v2}/components/PopperMethods.js +0 -0
  67. /package/{floating → v2}/components/ThemeClass.js +0 -0
  68. /package/{floating → v2}/config.js +0 -0
  69. /package/{floating → v2}/directives/v-close-popper.js +0 -0
  70. /package/{floating → v2}/directives/v-tooltip.js +0 -0
  71. /package/{floating → v2}/util/assign-deep.js +0 -0
  72. /package/{floating → v2}/util/env.js +0 -0
  73. /package/{floating → v2}/util/events.js +0 -0
  74. /package/{floating → v2}/util/frame.js +0 -0
  75. /package/{floating → v2}/util/lang.js +0 -0
  76. /package/{floating → v2}/util/popper.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cbvirtua",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/v2/App.vue ADDED
@@ -0,0 +1,56 @@
1
+ <template>
2
+ <div id="app">
3
+ <Dropdown :distance="6">
4
+ <button>Click me</button>
5
+ <template #popper>
6
+ <button v-close-popper="myBooleanProp" @click="hide">Close</button>
7
+ </template>
8
+ </Dropdown>
9
+
10
+ </div>
11
+ </template>
12
+
13
+ <script>
14
+ import {
15
+ // Directives
16
+ vTooltip,
17
+ VClosePopper,
18
+ // Components
19
+ Dropdown,
20
+ Tooltip,
21
+ Menu
22
+ } from './components/v2'
23
+ console.log(VClosePopper)
24
+ export default {
25
+ name: 'App',
26
+ data() {
27
+ return {
28
+ myBooleanProp: true
29
+ }
30
+ },
31
+ directives: {
32
+ 'close-popper': VClosePopper
33
+ },
34
+ components: {
35
+ Dropdown
36
+ },
37
+ methods: {
38
+ hide() {
39
+ console.log(123)
40
+ this.myBooleanProp = true
41
+ console.log(this.myBooleanProp)
42
+ }
43
+ }
44
+ }
45
+ </script>
46
+
47
+ <style>
48
+ #app {
49
+ font-family: Avenir, Helvetica, Arial, sans-serif;
50
+ -webkit-font-smoothing: antialiased;
51
+ -moz-osx-font-smoothing: grayscale;
52
+ text-align: center;
53
+ color: #2c3e50;
54
+ margin-top: 60px;
55
+ }
56
+ </style>
@@ -0,0 +1,28 @@
1
+ <script lang="ts">
2
+ import PopperWrapper from './PopperWrapper.vue'
3
+
4
+ export default {
5
+ ...PopperWrapper,
6
+ name: 'VDropdown',
7
+ vPopperTheme: 'dropdown',
8
+ }
9
+ </script>
10
+
11
+ <style>
12
+ .v-popper--theme-dropdown .v-popper__inner {
13
+ background: #fff;
14
+ color: black;
15
+ border-radius: 6px;
16
+ border: 1px solid #ddd;
17
+ box-shadow: 0 6px 30px rgba(0, 0, 0, .1);
18
+ }
19
+
20
+ .v-popper--theme-dropdown .v-popper__arrow-inner {
21
+ visibility: visible;
22
+ border-color: #fff;
23
+ }
24
+
25
+ .v-popper--theme-dropdown .v-popper__arrow-outer {
26
+ border-color: #ddd;
27
+ }
28
+ </style>
@@ -0,0 +1,9 @@
1
+ <script lang="ts">
2
+ import PopperWrapper from './PopperWrapper.vue'
3
+
4
+ export default {
5
+ ...PopperWrapper,
6
+ name: 'VMenu',
7
+ vPopperTheme: 'menu',
8
+ }
9
+ </script>
@@ -1,4 +1,4 @@
1
- import { autoPlacement, computePosition, offset, shift, flip, arrow, getScrollParents, size, } from '@floating-ui/dom';
1
+ import { autoPlacement, computePosition, offset, shift, flip, arrow, getScrollParents, size, } from '../floating-ui/dom/';
2
2
  import { supportsPassive, isIOS } from '../util/env';
3
3
  import { placements } from '../util/popper';
4
4
  import { SHOW_EVENT_MAP, HIDE_EVENT_MAP } from '../util/events';
@@ -0,0 +1,270 @@
1
+ <template>
2
+ <div
3
+ :id="popperId"
4
+ ref="popover"
5
+ class="v-popper__popper"
6
+ :class="[
7
+ themeClass,
8
+ classes.popperClass,
9
+ {
10
+ 'v-popper__popper--shown': shown,
11
+ 'v-popper__popper--hidden': !shown,
12
+ 'v-popper__popper--show-from': classes.showFrom,
13
+ 'v-popper__popper--show-to': classes.showTo,
14
+ 'v-popper__popper--hide-from': classes.hideFrom,
15
+ 'v-popper__popper--hide-to': classes.hideTo,
16
+ 'v-popper__popper--skip-transition': skipTransition,
17
+ 'v-popper__popper--arrow-overflow': result && result.arrow.overflow,
18
+ 'v-popper__popper--no-positioning': !result,
19
+ },
20
+ ]"
21
+ :style="result ? {
22
+ position: result.strategy,
23
+ transform: `translate3d(${Math.round(result.x)}px,${Math.round(result.y)}px,0)`,
24
+ } : undefined"
25
+ :aria-hidden="shown ? 'false' : 'true'"
26
+ :tabindex="autoHide ? 0 : undefined"
27
+ :data-popper-placement="result ? result.placement : undefined"
28
+ @keyup.esc="autoHide && $emit('hide')"
29
+ >
30
+ <div
31
+ class="v-popper__backdrop"
32
+ @click="autoHide && $emit('hide')"
33
+ />
34
+ <div
35
+ class="v-popper__wrapper"
36
+ :style="result ? {
37
+ transformOrigin: result.transformOrigin,
38
+ } : undefined"
39
+ >
40
+ <div
41
+ ref="inner"
42
+ class="v-popper__inner"
43
+ >
44
+ <template v-if="mounted">
45
+ <div>
46
+ <slot />
47
+ </div>
48
+
49
+ <ResizeObserver
50
+ v-if="handleResize"
51
+ @notify="$emit('resize', $event)"
52
+ />
53
+ </template>
54
+ </div>
55
+
56
+ <div
57
+ ref="arrow"
58
+ class="v-popper__arrow-container"
59
+ :style="result ? {
60
+ left: toPx(result.arrow.x),
61
+ top: toPx(result.arrow.y),
62
+ } : undefined"
63
+ >
64
+ <div class="v-popper__arrow-outer" />
65
+ <div class="v-popper__arrow-inner" />
66
+ </div>
67
+ </div>
68
+ </div>
69
+ </template>
70
+
71
+ <script lang="ts">
72
+ import ResizeObserver from './ResizeObserver.vue'
73
+ import ThemeClass from './ThemeClass'
74
+
75
+ export default {
76
+ name: 'VPopperContent',
77
+
78
+ components: {
79
+ ResizeObserver,
80
+ },
81
+
82
+ mixins: [
83
+ ThemeClass,
84
+ ],
85
+
86
+ props: {
87
+ popperId: String,
88
+ theme: String,
89
+ shown: Boolean,
90
+ mounted: Boolean,
91
+ skipTransition: Boolean,
92
+ autoHide: Boolean,
93
+ handleResize: Boolean,
94
+ classes: Object,
95
+ result: Object,
96
+ },
97
+
98
+ methods: {
99
+ toPx (value) {
100
+ if (value != null && !isNaN(value)) {
101
+ return `${value}px`
102
+ }
103
+ return null
104
+ },
105
+ },
106
+ }
107
+ </script>
108
+
109
+ <style>
110
+ .v-popper__popper {
111
+ z-index: 10000;
112
+ top: 0;
113
+ left: 0;
114
+ outline: none;
115
+ }
116
+
117
+ .v-popper__popper.v-popper__popper--hidden {
118
+ visibility: hidden;
119
+ opacity: 0;
120
+ transition: opacity .15s, visibility .15s;
121
+ pointer-events: none;
122
+ }
123
+
124
+ .v-popper__popper.v-popper__popper--shown {
125
+ visibility: visible;
126
+ opacity: 1;
127
+ transition: opacity .15s;
128
+ }
129
+
130
+ .v-popper__popper.v-popper__popper--skip-transition,
131
+ .v-popper__popper.v-popper__popper--skip-transition > .v-popper__wrapper {
132
+ transition: none !important;
133
+ }
134
+
135
+ .v-popper__backdrop {
136
+ position: absolute;
137
+ top: 0;
138
+ left: 0;
139
+ width: 100%;
140
+ height: 100%;
141
+ display: none;
142
+ }
143
+
144
+ .v-popper__inner {
145
+ position: relative;
146
+ box-sizing: border-box;
147
+ overflow-y: auto;
148
+ }
149
+
150
+ .v-popper__inner > div {
151
+ position: relative;
152
+ z-index: 1;
153
+ max-width: inherit;
154
+ max-height: inherit;
155
+ }
156
+
157
+ .v-popper__arrow-container {
158
+ position: absolute;
159
+ width: 10px;
160
+ height: 10px;
161
+ }
162
+
163
+ .v-popper__popper--arrow-overflow .v-popper__arrow-container,
164
+ .v-popper__popper--no-positioning .v-popper__arrow-container {
165
+ display: none;
166
+ }
167
+
168
+ .v-popper__arrow-inner,
169
+ .v-popper__arrow-outer {
170
+ border-style: solid;
171
+ position: absolute;
172
+ top: 0;
173
+ left: 0;
174
+ width: 0;
175
+ height: 0;
176
+ }
177
+
178
+ .v-popper__arrow-inner {
179
+ visibility: hidden;
180
+ border-width: 7px;
181
+ }
182
+
183
+ .v-popper__arrow-outer {
184
+ border-width: 6px;
185
+ }
186
+
187
+ .v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-inner,
188
+ .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-inner {
189
+ left: -2px;
190
+ }
191
+
192
+ .v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-outer,
193
+ .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-outer {
194
+ left: -1px;
195
+ }
196
+
197
+ .v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-inner,
198
+ .v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-outer {
199
+ border-bottom-width: 0;
200
+ border-left-color: transparent !important;
201
+ border-right-color: transparent !important;
202
+ border-bottom-color: transparent !important;
203
+ }
204
+
205
+ .v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-inner {
206
+ top: -2px;
207
+ }
208
+
209
+ .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-container {
210
+ top: 0;
211
+ }
212
+
213
+ .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-inner,
214
+ .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-outer {
215
+ border-top-width: 0;
216
+ border-left-color: transparent !important;
217
+ border-right-color: transparent !important;
218
+ border-top-color: transparent !important;
219
+ }
220
+
221
+ .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-inner {
222
+ top: -4px;
223
+ }
224
+
225
+ .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-outer {
226
+ top: -6px;
227
+ }
228
+
229
+ .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-inner,
230
+ .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-inner {
231
+ top: -2px;
232
+ }
233
+
234
+ .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-outer,
235
+ .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-outer {
236
+ top: -1px;
237
+ }
238
+
239
+ .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-inner,
240
+ .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-outer {
241
+ border-left-width: 0;
242
+ border-left-color: transparent !important;
243
+ border-top-color: transparent !important;
244
+ border-bottom-color: transparent !important;
245
+ }
246
+
247
+ .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-inner {
248
+ left: -4px;
249
+ }
250
+
251
+ .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-outer {
252
+ left: -6px;
253
+ }
254
+
255
+ .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-container {
256
+ right: -10px;
257
+ }
258
+
259
+ .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-inner,
260
+ .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-outer {
261
+ border-right-width: 0;
262
+ border-top-color: transparent !important;
263
+ border-right-color: transparent !important;
264
+ border-bottom-color: transparent !important;
265
+ }
266
+
267
+ .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-inner {
268
+ left: -2px;
269
+ }
270
+ </style>
@@ -0,0 +1,101 @@
1
+ <template>
2
+ <Popper
3
+ ref="popper"
4
+ v-slot="{
5
+ popperId,
6
+ isShown,
7
+ shouldMountContent,
8
+ skipTransition,
9
+ autoHide,
10
+ show,
11
+ hide,
12
+ handleResize,
13
+ onResize,
14
+ classes,
15
+ result,
16
+ }"
17
+ v-bind="$attrs"
18
+ :theme="theme"
19
+ :target-nodes="getTargetNodes"
20
+ :reference-node="() => $refs.reference"
21
+ :popper-node="() => $refs.popperContent.$el"
22
+ v-on="$listeners"
23
+ >
24
+ <div
25
+ ref="reference"
26
+ class="v-popper"
27
+ :class="[
28
+ themeClass,
29
+ {
30
+ 'v-popper--shown': isShown,
31
+ },
32
+ ]"
33
+ >
34
+ <slot
35
+ :shown="isShown"
36
+ :show="show"
37
+ :hide="hide"
38
+ />
39
+
40
+ <PopperContent
41
+ ref="popperContent"
42
+ :popper-id="popperId"
43
+ :theme="theme"
44
+ :shown="isShown"
45
+ :mounted="shouldMountContent"
46
+ :skip-transition="skipTransition"
47
+ :auto-hide="autoHide"
48
+ :handle-resize="handleResize"
49
+ :classes="classes"
50
+ :result="result"
51
+ @hide="hide"
52
+ @resize="onResize"
53
+ >
54
+ <slot
55
+ name="popper"
56
+ :shown="isShown"
57
+ :hide="hide"
58
+ />
59
+ </PopperContent>
60
+ </div>
61
+ </Popper>
62
+ </template>
63
+
64
+ <script lang="ts">
65
+ import Popper from './Popper'
66
+ import PopperContent from './PopperContent.vue'
67
+ import PopperMethods from './PopperMethods'
68
+ import ThemeClass from './ThemeClass'
69
+
70
+ export default {
71
+ name: 'VPopperWrapper',
72
+
73
+ components: {
74
+ Popper: Popper(),
75
+ PopperContent,
76
+ },
77
+
78
+ mixins: [
79
+ PopperMethods,
80
+ ThemeClass,
81
+ ],
82
+
83
+ inheritAttrs: false,
84
+
85
+ props: {
86
+ theme: {
87
+ type: String,
88
+ default () {
89
+ return this.$options.vPopperTheme
90
+ },
91
+ },
92
+ },
93
+
94
+ methods: {
95
+ getTargetNodes () {
96
+ return Array.from(this.$refs.reference.children)
97
+ .filter(node => node !== this.$refs.popperContent.$el)
98
+ },
99
+ },
100
+ }
101
+ </script>
@@ -0,0 +1,151 @@
1
+ <template>
2
+ <div class="resize-observer" tabindex="-1" />
3
+ </template>
4
+
5
+ <script>
6
+ function getInternetExplorerVersion() {
7
+ const ua = window.navigator.userAgent
8
+
9
+ const msie = ua.indexOf('MSIE ')
10
+ if (msie > 0) {
11
+ // IE 10 or older => return version number
12
+ return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10)
13
+ }
14
+
15
+ const trident = ua.indexOf('Trident/')
16
+ if (trident > 0) {
17
+ // IE 11 => return version number
18
+ const rv = ua.indexOf('rv:')
19
+ return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10)
20
+ }
21
+
22
+ const edge = ua.indexOf('Edge/')
23
+ if (edge > 0) {
24
+ // Edge (IE 12+) => return version number
25
+ return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10)
26
+ }
27
+
28
+ // other browser
29
+ return -1
30
+ }
31
+
32
+ let isIE
33
+
34
+ function initCompat() {
35
+ if (!initCompat.init) {
36
+ initCompat.init = true
37
+ isIE = getInternetExplorerVersion() !== -1
38
+ }
39
+ }
40
+
41
+ export default {
42
+ name: 'ResizeObserver',
43
+
44
+ props: {
45
+ emitOnMount: {
46
+ type: Boolean,
47
+ default: false,
48
+ },
49
+
50
+ ignoreWidth: {
51
+ type: Boolean,
52
+ default: false,
53
+ },
54
+
55
+ ignoreHeight: {
56
+ type: Boolean,
57
+ default: false,
58
+ },
59
+ },
60
+
61
+ mounted() {
62
+ initCompat()
63
+ this.$nextTick(() => {
64
+ this._w = this.$el.offsetWidth
65
+ this._h = this.$el.offsetHeight
66
+ if (this.emitOnMount) {
67
+ this.emitSize()
68
+ }
69
+ })
70
+ const object = document.createElement('object')
71
+ this._resizeObject = object
72
+ object.setAttribute('aria-hidden', 'true')
73
+ object.setAttribute('tabindex', -1)
74
+ object.onload = this.addResizeHandlers
75
+ object.type = 'text/html'
76
+ if (isIE) {
77
+ this.$el.appendChild(object)
78
+ }
79
+ object.data = 'about:blank'
80
+ if (!isIE) {
81
+ this.$el.appendChild(object)
82
+ }
83
+ },
84
+
85
+ beforeDestroy() {
86
+ this.removeResizeHandlers()
87
+ },
88
+
89
+ methods: {
90
+ compareAndNotify() {
91
+ if ((!this.ignoreWidth && this._w !== this.$el.offsetWidth) || (!this.ignoreHeight && this._h !== this.$el.offsetHeight)) {
92
+ this._w = this.$el.offsetWidth
93
+ this._h = this.$el.offsetHeight
94
+ this.emitSize()
95
+ }
96
+ },
97
+
98
+ emitSize() {
99
+ this.$emit('notify', {
100
+ width: this._w,
101
+ height: this._h,
102
+ })
103
+ },
104
+
105
+ addResizeHandlers() {
106
+ this._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify)
107
+ this.compareAndNotify()
108
+ },
109
+
110
+ removeResizeHandlers() {
111
+ if (this._resizeObject && this._resizeObject.onload) {
112
+ if (!isIE && this._resizeObject.contentDocument) {
113
+ this._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify)
114
+ }
115
+ this.$el.removeChild(this._resizeObject)
116
+ this._resizeObject.onload = null
117
+ this._resizeObject = null
118
+ }
119
+ },
120
+ },
121
+ }
122
+ </script>
123
+
124
+ <style scoped>
125
+ .resize-observer {
126
+ position: absolute;
127
+ top: 0;
128
+ left: 0;
129
+ z-index: -1;
130
+ width: 100%;
131
+ height: 100%;
132
+ border: none;
133
+ background-color: transparent;
134
+ pointer-events: none;
135
+ display: block;
136
+ overflow: hidden;
137
+ opacity: 0;
138
+ }
139
+
140
+ .resize-observer>>>object {
141
+ display: block;
142
+ position: absolute;
143
+ top: 0;
144
+ left: 0;
145
+ height: 100%;
146
+ width: 100%;
147
+ overflow: hidden;
148
+ pointer-events: none;
149
+ z-index: -1;
150
+ }
151
+ </style>
@@ -0,0 +1,22 @@
1
+ <script lang="ts">
2
+ import PopperWrapper from './PopperWrapper.vue'
3
+
4
+ export default {
5
+ ...PopperWrapper,
6
+ name: 'VTooltip',
7
+ vPopperTheme: 'tooltip',
8
+ }
9
+ </script>
10
+
11
+ <style>
12
+ .v-popper--theme-tooltip .v-popper__inner {
13
+ background: rgba(0, 0, 0, .8);
14
+ color: white;
15
+ border-radius: 6px;
16
+ padding: 7px 12px 6px;
17
+ }
18
+
19
+ .v-popper--theme-tooltip .v-popper__arrow-outer {
20
+ border-color: rgba(0, 0, 0, .8);
21
+ }
22
+ </style>