HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/quadcode.com/src/components/popover/Popover.svelte
<script lang="ts">
import { createPopper } from '@popperjs/core';
import type { Instance } from '@popperjs/core';
import { onMount } from 'svelte';
import clickOutside from '$utils/outsideClick';

export let trigger: HTMLElement;
let tooltip: HTMLElement;
let popperInstance: Instance;
let popoverShowed: boolean = false;

onMount(() => {
  popperInstance = createPopper(trigger, tooltip, {
    modifiers: [
      {
        name: 'offset',
        options: {
          offset: [0, 8],
        },
      },
    ],
  });
  trigger.addEventListener('click', () => {
    toggleHandle();
  })
  clickOutside(trigger, () => {hide()});
});


function show() {
  popoverShowed = false;
  tooltip.setAttribute('data-show', '');
  popperInstance.update();
}

function hide() {
  popoverShowed = true;
  tooltip.removeAttribute('data-show');
}

const toggleHandle = () => {
  if (popoverShowed) {
    show();
  }
  else {
    hide();
  }
}

</script>
<div id="tooltip" role="tooltip" bind:this={tooltip}>
  <slot />
</div>
<style lang="scss">

#tooltip {
  background: transparent;
  color: white;
  font-weight: bold;
  padding: 4px 8px;
  font-size: 13px;
  border-radius: 4px;
  z-index: 100;
  display: none;
}

:global(#tooltip[data-show]) {
  display: block;
}
</style>