Skip to content

Commit 31d0e6f

Browse files
committed
[PRAC/cont] Add "bootstrap-tooltips" logic
Changing from using a third-party Tippy.js lib to Bootstrap's features. Worth noting: - unsolved moment with changing the color for the "triangle/nose" of the tooltip. core: B-3 / JS-BL
1 parent d119c53 commit 31d0e6f

File tree

11 files changed

+84
-115
lines changed

11 files changed

+84
-115
lines changed

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/css/custom-tippy.css renamed to core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/css/custom-tooltips.css

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
.tippy-box[data-theme~="main"] {
1+
.tooltip {
2+
position: relative;
23
border-radius: 0;
34
padding: 5px 10px;
45
font-family: var(--open-sans), sans-serif;
@@ -10,8 +11,9 @@
1011
will-change: transform;
1112
}
1213

13-
.tippy-box[data-theme~="main"] .tippy-arrow {
14-
margin-top: -1px;
15-
margin-right: -1px;
16-
color: var(--main-purple);
14+
.tooltip .tooltip-inner {
15+
border-radius: 0;
16+
padding: 5px 10px;
17+
color: var(--white);
18+
background-color: var(--black);
1719
}

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/css/style.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
@import url("crm-output.css");
77
@import url("crm-add.css");
88
@import url("modal-add.css");
9-
@import url("custom-tippy.css");
9+
@import url("custom-tooltips.css");

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/index.html

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,10 @@
99
<link rel="stylesheet" href="css/normalize.css">
1010
<link rel="stylesheet" href="libs/bootstrap-v5.3.3/bootstrap.min.css">
1111
<link rel="stylesheet" href="libs/bootstrap-icons-v1.11.3/font/bootstrap-icons.css">
12-
<link rel="stylesheet" href="libs/tippy-v6.3.7/tippy.min.css">
13-
<link rel="stylesheet" href="libs/tippy-v6.3.7/animations/scale.css">
1412
<link rel="stylesheet" href="css/style.css">
1513
<script src="libs/jquery-v3.7.1/jquery-3.7.1.min.js" defer></script>
16-
<script src="libs/bootstrap-v5.3.3/bootstrap.min.js" defer></script>
17-
<script src="libs/tippy-v6.3.7/popper.min.js" defer></script>
18-
<script src="libs/tippy-v6.3.7/tippy.umd.min.js" defer></script>
19-
<script src="js/customTippy.js" defer></script>
14+
<script src="libs/bootstrap-v5.3.3/bootstrap.bundle.min.js" defer></script>
15+
<script src="js/bootstrapTooltips.js" defer></script>
2016
<script src="js/index.js" defer></script>
2117
</head>
2218

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
(() => {
2+
document.addEventListener('DOMContentLoaded', () => {
3+
function initBootstrapTooltip(
4+
selector,
5+
content,
6+
placement,
7+
customOptions = {}
8+
) {
9+
const element = document.querySelector(selector);
10+
if (element) {
11+
const defaultOptions = {
12+
title: content,
13+
placement: placement,
14+
trigger: 'hover', // появление по наведению мыши
15+
delay: { show: 50, hide: 0 }, // задержка появления
16+
};
17+
18+
const options = { ...defaultOptions, ...customOptions };
19+
20+
if (element.tooltipInstance) {
21+
element.tooltipInstance.dispose(); // удаление предыдущего tooltip (т.е. здесь появление, там сразу скрытие)
22+
}
23+
24+
const tooltip = new bootstrap.Tooltip(element, options); // инициализация Bootstrap tooltips
25+
26+
element.addEventListener('shown.bs.tooltip', () => {
27+
setTimeout(() => {
28+
tooltip.hide(); // автоматическое скрытие (по истечению времени)
29+
}, 1000);
30+
});
31+
32+
element.tooltipInstance = tooltip; // фиксация tooltip на элементе
33+
}
34+
}
35+
36+
// инициализация Tippy только/для #search-logo (в зависимости от ширины экрана)
37+
function initTooltipForSearchLogo() {
38+
const isSmallWidth = window.matchMedia('(max-width: 320px)').matches; // уточнение ширины
39+
const searchLogo = document.querySelector('#search-logo');
40+
41+
if (isSmallWidth && searchLogo) {
42+
initBootstrapTooltip('#search-logo', 'Показать/скрыть..!?', 'top', {
43+
offset: [0, 8],
44+
});
45+
} else if (!isSmallWidth && searchLogo && searchLogo.tooltipInstance) {
46+
searchLogo.tooltipInstance.dispose(); // исключение всплывающей подсказки, если экран больше 320px
47+
}
48+
}
49+
50+
// инициализация Tippy для/всех "остальных" элементов (без учёта ширины экрана)
51+
function initTooltipForOther() {
52+
initBootstrapTooltip('#hash-tag-title', 'сбросить сортировку', 'bottom', {
53+
offset: [0, 2],
54+
});
55+
initBootstrapTooltip('#table-th-id', 'сортировать ⇵', 'bottom', {
56+
offset: [0, 2],
57+
});
58+
initBootstrapTooltip('#table-th-fio', 'сортировать ⇵', 'bottom', {
59+
offset: [0, 2],
60+
});
61+
initBootstrapTooltip('#table-th-dt', 'сортировать ⇵', 'bottom', {
62+
offset: [0, 2],
63+
});
64+
initBootstrapTooltip('#table-th-change', 'сортировать ⇵', 'bottom', {
65+
offset: [0, 2],
66+
});
67+
}
68+
69+
initTooltipForSearchLogo();
70+
initTooltipForOther();
71+
72+
window.addEventListener('resize', initTooltipForSearchLogo); // отслеживание изменения ширины экрана (разрешения)
73+
});
74+
})();

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/js/customTippy.js

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

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/libs/tippy-v6.3.7/animations/scale.css

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

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/libs/tippy-v6.3.7/popper.min.js

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

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/libs/tippy-v6.3.7/popper.min.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/libs/tippy-v6.3.7/tippy.min.css

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

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/libs/tippy-v6.3.7/tippy.umd.min.js

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

0 commit comments

Comments
 (0)