carbon-components
Version:
Carbon Components is a component library for IBM Cloud
156 lines (116 loc) • 6.11 kB
Markdown
### JavaScript (Applied *only* to click-to-open tooltip)
#### Getting component class reference
##### ES2015
```javascript
import { Tooltip } from 'carbon-components';
```
##### With pre-build bundle (`carbon-components.min.js`)
```javascript
var Tooltip = CarbonComponents.Tooltip;
```
#### Instantiating
```javascript
// `#my-tooltip-trigger` is an element with `[data-tooltip-trigger]` attribute
Tooltip.create(document.getElementById('my-tooltip-trigger'));
```
#### Attributes
| Name | Param | Description |
|------------------------|-----------------------------|--------------------------------------------------------------------------------------|
| data-tooltip-target | Any unique CSS selector | The selector, typically an id, to find the tooltip corresponding to the trigger. |
| data-tooltip-direction | Left, top, right, or bottom | Setting this attribute overrides the directions set by this.options.tooltipDirection |
#### Public Methods
| Name | Params | Description |
|---------|--------|------------------------------------------------------------|
| show | | Shows the tooltip. |
| hide | | Hides the tooltip. |
| release | | Deletes the instance and removes document event listeners. |
##### Example - Showing tooltip
```javascript
// `#my-tooltip-trigger` is an element with `[data-tooltip-trigger]` attribute
var tooltipInstance = Tooltip.create(document.getElementById('my-tooltip-trigger'));
tooltipInstance.show();
```
#### Options
| Option | Default Selector | Description |
|--------------------------|---------------------------------|----------------------------------------------------------------------------------------|
| `selectorInit` | `[data-tooltip-trigger]` | The CSS selector to find the tooltip.
| `objMenuOffset` | `{ top: 10, left: 0 }` | An object containing the top and left offset values in px
##### Example - Changing menu position by 8 pixels vertically
```javascript
// `#my-tooltip-trigger` is an element with `[data-tooltip-trigger]` attribute
Tooltip.create(document.getElementById('my-tooltip-trigger'), {
objMenuOffset(menuBody, direction) {
const { objMenuOffset: offset } = Tooltip.options;
const { top, left } = typeof offset !== 'function' ? offset:
offset(menuBody, direction);
return {
top: top + 8,
left,
};
},
});
```
#### Events
| Event Name | Description |
|-----------------------------|-----------------------------------------------------|
| 'floating-menu-beingshown' | The custom event fired before the menu gets open. |
| 'floating-menu-shown' | The custom event fired after the menu gets open. |
| 'floating-menu-beinghidden' | The custom event fired before the menu gets closed. |
| 'floating-menu-hidden' | The custom event fired after the menu gets closed. |
##### Example - Preventing click-to-open tooltip from being closed in a certain condition
```javascript
document.addEventListener('floating-menu-beinghidden', function (evt) {
if (myApplication.shouldTooltipKeptOpen(evt.target)) {
evt.preventDefault();
}
});
```
##### Example - Notifying events of all click-to-open tooltips being hidden to an analytics library
```javascript
document.addEventListener('floating-menu-hidden', function (evt) {
myAnalyticsLibrary.send({
action: 'Tooltip hidden',
id: evt.target.id,
});
});
```
### Interactive tooltip
| Selector | Description |
|------------------------------|------------------------------------|
| .bx--tooltip__trigger--bold | Modifier class to make label bold. |
#### HTML
By default, the tooltip (`.bx--tooltip`) goes right under `<body>`. You can change the behavior by adding `data-floating-menu-container` to one of the DOM ancestors of the tooltip's original location. For example, if you have HTML structure like below, the menu body will go under the second `<div>`:
```html
<body>
<div>
<div data-floating-menu-container>
<div>
<div class="bx--tooltip__label" ...>
Tooltip label
<div tabindex="0" data-tooltip-trigger data-tooltip-target="#unique-tooltip" class="bx--tooltip__trigger" ...>
...
</div>
</div>
<div id="unique-tooltip" data-floating-menu-direction="bottom" class="bx--tooltip" ...>
<span class="bx--tooltip__caret"></span>
...
</div>
</div>
</div>
</div>
</body>
```
### Definition tooltip
This tooltip variation does not use any JavaScript and should be used to define a word. For anything more advanced please use the main variation.
| Selector | Description |
|---------------------------------|--------------------------------------------------------|
| .bx--tooltip--definition__top | A simple tooltip that is displayed above the trigger. |
| .bx--tooltip--definition__bottom | A simple tooltip that is displayed below the trigger. |
### Icon tooltip
This tooltip variation does not use any JavaScript and is good for short single line of text describing an icon. No label should be added to this variation.
| Selector | Description |
|------------------------------|-------------------------------------------------------|
| .bx--tooltip--icon__top | A simple tooltip that is displayed above the trigger. |
| .bx--tooltip--icon__bottom | A simple tooltip that is displayed below the trigger. |
### Links & Resources
- [Tooltips & Toggletips](https://inclusive-components.design/tooltips-toggletips/)