Skip to content

Popup — Cursor

The popup follows the cursor. Hover over rooms to see it in action.

Simple

Shows item.title by default. Flips automatically if it overflows the viewport edge.

popup: { placement: 'cursor' }
ts
new Svgic('#container', {
  popup: { placement: 'cursor' },
})

Custom render

Full control over popup content via a render function.

popup: { placement: 'cursor', render(item) { ... } }
ts
new Svgic('#container', {
  popup: {
    placement: 'cursor',
    render(item) {
      const el = document.createElement('div')
      const title = document.createElement('div')
      title.textContent = item.title ?? ''
      const desc = document.createElement('div')
      desc.textContent = item.description ?? ''
      el.append(title, desc)
      return el
    },
  },
})

render receives a SvgicItem and returns an HTMLElement or HTML string.

XSS

If data comes from an untrusted source, do not use innerHTML — use textContent instead, or sanitize with DOMPurify.

Options

OptionTypeDefaultDescription
placement'cursor'Follow the cursor
offset{ x: number, y: number }{ x:16, y:16 }Offset from cursor
render(item) => HTMLElement | stringCustom popup content
templatestring | HTMLTemplateElementHTML template (alternative to render)
bind(el, item) => voidBind data into template
hideDelaynumber0Delay before hiding (ms)
interactivebooleanfalseKeep popup visible when cursor moves onto it