Skip to content

Commit bbd10ac

Browse files
committed
chore: small changes, documentation for CTooltip and CPopover directives
1 parent 5866c4d commit bbd10ac

File tree

4 files changed

+102
-25
lines changed

4 files changed

+102
-25
lines changed

src/directives/CPopover.js

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,14 @@
11
import Tooltip from 'tooltip.js'
2+
23
export default {
34
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)
5+
tooltip: null,
6+
inserted (el, binding, vnode) {
7+
const tooltip = new Tooltip(el, binding.def.getTooltipConfig(binding))
8+
binding.def._tooltip = tooltip
9+
if (binding.value.active)
10+
tooltip.show()
1111
},
12-
// update (el, binding) {
13-
// console.log(binding.value.counter)
14-
// console.log(binding.def)
15-
// },
16-
// componentUpdated () {
17-
// console.log('componentUpdated')
18-
// },
1912
unbind (el, binding) {
2013
let tooltip = binding.def._tooltip
2114
if (tooltip) {
@@ -25,11 +18,14 @@ export default {
2518
},
2619
getTooltipConfig (binding) {
2720
const props = binding.value
21+
const title = props.content || 'content'
22+
const modifiersTriggers = String(Object.keys(binding.modifiers)).replace(',',' ')
23+
const closeOnClickOutside = props.closeOnClickOutside === false ? false : true
24+
const html = props.html === false ? false : true
2825
return {
29-
title: props.content,
30-
trigger: String(Object.keys(binding.modifiers)).replace(',',' '),
31-
// trigger: 'hover,focus',
32-
html: true,
26+
title,
27+
trigger: modifiersTriggers || props.trigger || 'hover',
28+
html,
3329
placement: props.placement || 'right',
3430
delay: props.delay || 0,
3531
offset: props.offset || 0,
@@ -38,6 +34,7 @@ export default {
3834
template: binding.def.getTemplate(props.header),//passed by extension
3935
boundariesElement: document.getElementById(props.boundaries) || props.boundaries,
4036
container: props.appendToBody ? document.body : false,
37+
closeOnClickOutside,
4138
popperOptions: props.popperOptions
4239
}
4340
},

src/directives/CTooltip.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ export default {
33
name: 'c-tooltip',
44
inserted (el, binding) {
55
binding.def._tooltip = new Tooltip(el, binding.def.getTooltipConfig(binding))
6-
if (binding.modifiers.active) {
6+
if (binding.value.active)
77
binding.def._tooltip.show()
8-
}
98
},
109
unbind (el, binding) {
1110
let tooltip = binding.def._tooltip
@@ -16,20 +15,22 @@ export default {
1615
},
1716
getTooltipConfig (binding) {
1817
const props = binding.value
19-
const title = typeof binding.value === 'string' ?
20-
binding.value : binding.value.content
18+
const title = props.content || props
19+
const modifiersTriggers = String(Object.keys(binding.modifiers)).replace(',',' ')
20+
const closeOnClickOutside = props.closeOnClickOutside === false ? false : true
2121
return {
2222
title,
23-
trigger: String(Object.keys(binding.modifiers)).replace(',',' '),
23+
trigger: modifiersTriggers || props.trigger || 'hover',
2424
html: true,
2525
placement: props.placement || 'top',
2626
delay: props.delay || 0,
2727
offset: props.offset || 0,
2828
arrowSelector: '.arrow',
29-
innerSelector: '.tooltip-inner',//passed by extension
30-
template: binding.def.getTemplate(),//passed by extension
29+
innerSelector: '.tooltip-inner',
30+
template: binding.def.getTemplate(),
3131
boundariesElement: document.getElementById(props.boundaries) || props.boundaries,
3232
container: props.appendToBody ? document.body : false,
33+
closeOnClickOutside,
3334
popperOptions: props.popperOptions
3435
}
3536
},

src/directives/docs/CPopover.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
### CPopover directive
2+
3+
CPopover is directive which display Popover on element built on top of tooltip.js (popper.js) library.
4+
5+
All directive props are passed by object in directive value. (you can pass trigger prop as modifier also).
6+
7+
prop | default | valid values
8+
--- | --- | ---
9+
header | `'header'` | HtmlString
10+
content | `'content'` | HtmlString
11+
trigger | `'hover'` | String / separated by space e.g. 'hover click'
12+
html | `true` | Boolean
13+
placement | `'right'` | String
14+
delay | `0` | Number
15+
offset | `0` | Number
16+
boundariesElement | `'scrollParent'` | 'scrollParent', 'window', 'viewport' / HTMLELement
17+
appendToBody | `false` | Boolean
18+
closeOnClickOutside | `false` | Boolean
19+
popperOptions | `null` | Object
20+
21+
Example usage
22+
```html
23+
<CButton
24+
v-c-popover="{
25+
header: 'Popover!',
26+
trigger: 'click hover',
27+
content: 'I start <strong>open</strong>'
28+
}"
29+
text="Hover me"
30+
/>
31+
```
32+
33+
Example setting trigger prop by modifiers
34+
```html
35+
<CButton
36+
v-c-popover.click.hover="{
37+
header: 'Popover!',
38+
content: 'I start <strong>open</strong>'
39+
}"
40+
text="Hover me"
41+
/>
42+
```

src/directives/docs/CTooltip.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
### CTooltip directive
2+
3+
CTooltip is directive, which display tooltip over element, built on top of tooltip.js (popper.js) library.
4+
5+
All directive props are passed by object or string in directive value. (you can pass trigger prop as modifier also).
6+
7+
prop | default | valid values
8+
--- | --- | ---
9+
content | `'content'` | HtmlString
10+
trigger | `'hover'` | String / separated by space e.g. 'hover click'
11+
html | `true` | Boolean
12+
placement | `'top'` | String
13+
delay | `0` | Number
14+
offset | `0` | Number
15+
boundariesElement | `'scrollParent'` | 'scrollParent', 'window', 'viewport' / HTMLELement
16+
appendToBody | `false` | Boolean
17+
closeOnClickOutside | `false` | Boolean
18+
popperOptions | `null` | Object
19+
20+
Example usage
21+
```html
22+
<CButton
23+
v-c-tooltip="I am a tooltip!"
24+
text="Hover me"
25+
/>
26+
```
27+
28+
Example setting trigger prop by modifiers
29+
```html
30+
<CButton
31+
v-c-hover.click="{
32+
content: 'I start <strong>open</strong>'
33+
active: true
34+
}"
35+
text="Hover me"
36+
/>
37+
```

0 commit comments

Comments
 (0)