diff options
| author | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-03-12 23:57:48 +0200 |
|---|---|---|
| committer | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-03-12 23:57:48 +0200 |
| commit | 7aa203150fc1a2ec79c681c13f0d486d531746eb (patch) | |
| tree | f09ba9f69ccd434e9c7fdeb41807fc8008784d8a /html/assets/js/plugins/tooltip.js | |
| parent | 221af3a2e035bd6689294509feb52f286d3bd5be (diff) | |
| download | classroom-7aa203150fc1a2ec79c681c13f0d486d531746eb.tar.gz classroom-7aa203150fc1a2ec79c681c13f0d486d531746eb.tar.bz2 classroom-7aa203150fc1a2ec79c681c13f0d486d531746eb.zip | |
error pages; js system to support back/front-end
Diffstat (limited to 'html/assets/js/plugins/tooltip.js')
| -rw-r--r-- | html/assets/js/plugins/tooltip.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/html/assets/js/plugins/tooltip.js b/html/assets/js/plugins/tooltip.js new file mode 100644 index 0000000..2326caf --- /dev/null +++ b/html/assets/js/plugins/tooltip.js @@ -0,0 +1,45 @@ +$$plugins.define('tooltip', ['throttle'], function (element, options, throttle) {
+ var openBtn = element.querySelector('.tooltip__btn'),
+ tooltipMain = element.querySelector('.tooltip__main');
+
+ openBtn.addEventListener('click', (event) => {
+ event.preventDefault();
+ if (element.classList.contains('tooltip--open')) {
+ element.classList.remove('tooltip--open');
+ } else {
+ $('.tooltip').not(element).removeClass('tooltip--open');
+ element.classList.add('tooltip--open');
+ }
+ });
+
+ document.addEventListener('click', function (event) {
+ if (element !== event.target && !element.contains(event.target) && element.classList.contains('tooltip--open')) {
+ element.classList.remove('tooltip--open');
+ }
+ });
+
+ function tooltipPosition() {
+ element.classList.remove('tooltip--bottom');
+ element.classList.remove('tooltip--right');
+ element.classList.remove('tooltip--left');
+
+ if (element.getBoundingClientRect().top < window.innerHeight / 2) {
+ element.classList.add('tooltip--bottom');
+ } else {
+ element.classList.remove('tooltip--bottom');
+ }
+
+ if (element.getBoundingClientRect().left < tooltipMain.offsetWidth / 2) {
+ element.classList.add('tooltip--right');
+ }
+
+ if (document.body.clientWidth - element.getBoundingClientRect().left < tooltipMain.offsetWidth / 2) {
+ element.classList.add('tooltip--left');
+ }
+ }
+
+ tooltipPosition();
+
+ window.addEventListener('scroll', throttle(tooltipPosition, 50));
+ window.addEventListener('resize', throttle(tooltipPosition, 200));
+});
|
