Skip to content

Commit e952614

Browse files
committed
Feat: Added basic CTooltip and CPopover directives (removed components)
1 parent d194227 commit e952614

File tree

7 files changed

+107
-166
lines changed

7 files changed

+107
-166
lines changed

src/components/Tooltip/CTooltip.js

Lines changed: 0 additions & 159 deletions
This file was deleted.

src/components/Tooltip/index.js

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/components/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ export * from './Sidebar'
2525
export * from './Spinner'
2626
export * from './Switch'
2727
export * from './Table'
28-
export * from './Tooltip'
28+
export * from './Tabs'
2929
export * from './Widgets'

src/directives/CPopover.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import Tooltip from 'tooltip.js'
2+
export default {
3+
name: 'c-popover',
4+
inserted (el, binding) {
5+
binding.def._tooltip = new Tooltip(el, binding.def.getTooltipConfig(binding))
6+
7+
if (binding.modifiers.active) {
8+
binding.def._tooltip.show()
9+
}
10+
// console.log(binding)
11+
},
12+
// update (el, binding) {
13+
// console.log(binding.value.counter)
14+
// console.log(binding.def)
15+
// },
16+
// componentUpdated () {
17+
// console.log('componentUpdated')
18+
// },
19+
unbind (el, binding) {
20+
let tooltip = binding.def._tooltip
21+
if (tooltip) {
22+
tooltip.dispose()
23+
tooltip = null
24+
}
25+
},
26+
getTooltipConfig (binding) {
27+
const props = binding.value
28+
return {
29+
title: props.content,
30+
trigger: String(Object.keys(binding.modifiers)).replace(',',' '),
31+
// trigger: 'hover,focus',
32+
html: true,
33+
placement: props.placement || 'right',
34+
delay: props.delay || 0,
35+
offset: props.offset || 0,
36+
arrowSelector: '.arrow',
37+
innerSelector: '.popover-body',//passed by extension
38+
template: binding.def.getTemplate(props.header),//passed by extension
39+
boundariesElement: document.getElementById(props.boundaries) || props.boundaries,
40+
container: props.appendToBody ? document.body : false,
41+
popperOptions: props.popperOptions
42+
}
43+
},
44+
getTemplate (header) {
45+
return `<div class="popover bs-popover-auto fade show" role="tooltip">
46+
<div class="arrow"></div>
47+
<h3 class="popover-header">${header || 'header'}</h3>
48+
<div class="popover-body"></div>
49+
</div>`
50+
}
51+
}

src/directives/CTooltip.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import Tooltip from 'tooltip.js'
2+
export default {
3+
name: 'c-tooltip',
4+
inserted (el, binding) {
5+
binding.def._tooltip = new Tooltip(el, binding.def.getTooltipConfig(binding))
6+
if (binding.modifiers.active) {
7+
binding.def._tooltip.show()
8+
}
9+
},
10+
unbind (el, binding) {
11+
let tooltip = binding.def._tooltip
12+
if (tooltip) {
13+
tooltip.dispose()
14+
tooltip = null
15+
}
16+
},
17+
getTooltipConfig (binding) {
18+
const props = binding.value
19+
const title = typeof binding.value === 'string' ?
20+
binding.value : binding.value.content
21+
return {
22+
title,
23+
trigger: String(Object.keys(binding.modifiers)).replace(',',' '),
24+
html: true,
25+
placement: props.placement || 'top',
26+
delay: props.delay || 0,
27+
offset: props.offset || 0,
28+
arrowSelector: '.arrow',
29+
innerSelector: '.tooltip-inner',//passed by extension
30+
template: binding.def.getTemplate(),//passed by extension
31+
boundariesElement: document.getElementById(props.boundaries) || props.boundaries,
32+
container: props.appendToBody ? document.body : false,
33+
popperOptions: props.popperOptions
34+
}
35+
},
36+
getTemplate (title) {
37+
return `<div class="tooltip bs-tooltip-auto fade show" role="tooltip">
38+
<div class="arrow"></div>
39+
<div class="tooltip-inner"></div>
40+
</div>`
41+
}
42+
}

src/directives/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import CPopover from './CPopover'
2+
import CTooltip from './CTooltip'
3+
4+
export{
5+
CPopover,
6+
CTooltip
7+
}

src/index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
import * as Components from './components'
2+
import * as Directives from './directives'
23

34
const CoreuiVue = {
45
install(Vue) {
5-
for (let plugin in Components)
6+
for (let plugin in Components) {
67
Vue.component(plugin, Components[plugin])
8+
}
9+
for (let directive in Directives) {
10+
Vue.directive(directive, Directives[directive])
11+
}
712
}
813
}
914

0 commit comments

Comments
 (0)