178 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# tooltip
 | 
						||
 | 
						||
## Требования
 | 
						||
 | 
						||
-   [Floating UI](https://floating-ui.com) версии ^1.0.0
 | 
						||
 | 
						||
## Подключение и настройка
 | 
						||
 | 
						||
### HTML
 | 
						||
 | 
						||
```html
 | 
						||
<button type="button">Кнопка</button>
 | 
						||
```
 | 
						||
 | 
						||
### JS
 | 
						||
 | 
						||
#### Минимальные настройки
 | 
						||
 | 
						||
```js
 | 
						||
import { createTooltip } from '@advdominion/tooltip';
 | 
						||
 | 
						||
createTooltip(document.querySelector('button'), 'Подсказка');
 | 
						||
```
 | 
						||
 | 
						||
#### Все настройки со значениями по умолчанию
 | 
						||
 | 
						||
```js
 | 
						||
import { createTooltip } from '@advdominion/tooltip';
 | 
						||
 | 
						||
createTooltip(document.querySelector('button'), 'Подсказка', {
 | 
						||
    animation: [
 | 
						||
        [{ opacity: 0 }, { opacity: 1 }],
 | 
						||
        [{ opacity: 1 }, { opacity: 0 }],
 | 
						||
    ],
 | 
						||
    appendTo: document.body,
 | 
						||
    arrow: true,
 | 
						||
    delay: [0, 0],
 | 
						||
    duration: [0, 0],
 | 
						||
    easing: ['linear', 'linear'],
 | 
						||
    hideOnClick: true,
 | 
						||
    interactive: true,
 | 
						||
    offset: [0, 8],
 | 
						||
    placement: 'top',
 | 
						||
    shiftPadding: [8, 0],
 | 
						||
    theme: 'light',
 | 
						||
    trigger: 'mouseenter',
 | 
						||
    virtualReference: undefined,
 | 
						||
    zIndex: '',
 | 
						||
    // Callback-функции, по умолчанию не заданы
 | 
						||
    onCreate(instance) {},
 | 
						||
    onMount(instance) {},
 | 
						||
    onShow(instance) {},
 | 
						||
    onShown(instance) {},
 | 
						||
    onHide(instance) {},
 | 
						||
    onHidden(instance) {},
 | 
						||
});
 | 
						||
```
 | 
						||
 | 
						||
#### hideOnClick
 | 
						||
 | 
						||
- `true` (по умолчанию) — всплывающая подсказка скрывается при клике по любому элементу на странице (**кроме** самой всплывающей подсказки).
 | 
						||
- `'all'` — всплывающая подсказка скрывается при клике по любому элементу на странице (**включая** саму всплывающую подсказку).
 | 
						||
- `'toggle'` — всплывающая подсказка скрывается только при клике по элементу, который её вызывает.
 | 
						||
 | 
						||
##### virtualReference
 | 
						||
 | 
						||
Настройка используется для кастомного позиционирования, ожидает объект с методом `getBoundingClientRect`.
 | 
						||
 | 
						||
Например, позиционирование всплывающей подсказки относительно виртуального элемента размером 100×50, который располагается в левой верхней точке экрана:
 | 
						||
 | 
						||
```js
 | 
						||
createTooltip(document.querySelector('button'), 'Подсказка', {
 | 
						||
    virtualReference: {
 | 
						||
        getBoundingClientRect() {
 | 
						||
            return {
 | 
						||
                x: 0,
 | 
						||
                y: 0,
 | 
						||
                top: 0,
 | 
						||
                left: 0,
 | 
						||
                bottom: 50,
 | 
						||
                right: 100,
 | 
						||
                width: 100,
 | 
						||
                height: 50,
 | 
						||
            };
 | 
						||
        },
 | 
						||
    },
 | 
						||
});
 | 
						||
```
 | 
						||
 | 
						||
#### Свойства
 | 
						||
 | 
						||
#### $tooltip
 | 
						||
 | 
						||
DOM-элемент всплывающей подсказки (имеет свойство `_reference` для доступа к элементу, на котором был вызван `createTooltip`)
 | 
						||
 | 
						||
#### options
 | 
						||
 | 
						||
Текущие настройки
 | 
						||
 | 
						||
#### isVisible
 | 
						||
 | 
						||
Видимость всплывающей подсказки - `true`/`false`
 | 
						||
 | 
						||
#### Методы
 | 
						||
 | 
						||
##### show
 | 
						||
 | 
						||
```js
 | 
						||
document.querySelector('button')._tooltip.show();
 | 
						||
```
 | 
						||
 | 
						||
##### hide
 | 
						||
 | 
						||
```js
 | 
						||
document.querySelector('button')._tooltip.hide();
 | 
						||
```
 | 
						||
 | 
						||
##### setContent
 | 
						||
 | 
						||
```js
 | 
						||
document.querySelector('button')._tooltip.setContent('Новая подсказка');
 | 
						||
```
 | 
						||
 | 
						||
##### updateOptions
 | 
						||
 | 
						||
```js
 | 
						||
document.querySelector('button')._tooltip.updateOptions({ placement: 'bottom' });
 | 
						||
```
 | 
						||
 | 
						||
Настройки так же можно переназначать, используя data-атрибуты:
 | 
						||
 | 
						||
```html
 | 
						||
<button type="button" data-tooltip-placement="bottom">Кнопка</button>
 | 
						||
```
 | 
						||
 | 
						||
##### destroy
 | 
						||
 | 
						||
```js
 | 
						||
document.querySelector('button')._tooltip.destroy();
 | 
						||
```
 | 
						||
 | 
						||
### Стили
 | 
						||
 | 
						||
```scss
 | 
						||
$b: '.tooltip';
 | 
						||
 | 
						||
#{$b} {
 | 
						||
    left: 0;
 | 
						||
    max-width: calc(100vw - 32px);
 | 
						||
    position: absolute;
 | 
						||
    top: 0;
 | 
						||
    width: max-content;
 | 
						||
    z-index: 200;
 | 
						||
 | 
						||
    @media (min-width: 900px) {
 | 
						||
        max-width: 300px;
 | 
						||
    }
 | 
						||
 | 
						||
    &__root {
 | 
						||
    }
 | 
						||
 | 
						||
    &__arrow {
 | 
						||
        #{$b}_theme_light & {
 | 
						||
            background-color: white;
 | 
						||
            height: 8px;
 | 
						||
            width: 8px;
 | 
						||
        }
 | 
						||
    }
 | 
						||
 | 
						||
    &__container {
 | 
						||
        #{$b}_theme_light & {
 | 
						||
            background-color: white;
 | 
						||
            box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.2);
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 | 
						||
```
 |