25 lines
1.1 KiB
Clojure
25 lines
1.1 KiB
Clojure
(ns auto-ap.ssr.components.link-dropdown
|
|
(:require [auto-ap.ssr.components :as com]
|
|
[auto-ap.ssr.hx :as hx]
|
|
[auto-ap.ssr.svg :as svg]))
|
|
|
|
(defn link-dropdown [links]
|
|
(if (> (count links) 0)
|
|
|
|
[:div {:x-data (hx/json {:popper nil
|
|
:show false})
|
|
"@click.outside" "show=false"
|
|
|
|
:x-init "popper = Popper.createPopper($refs.link, $refs.tooltip, {placement: 'bottom', strategy: 'fixed'})"}
|
|
|
|
(com/a-icon-button {:x-ref "link" "@click.prevent" "show=!show; $nextTick(() => popper.update());" :class "relative"}
|
|
svg/paperclip
|
|
(com/badge {} (count links)))
|
|
[:div.divide-y.divide-gray-200.bg-white.rounded-lg.shadow.z-50 (hx/alpine-appear {:x-ref "tooltip" :x-show "show" :data-key "show"})
|
|
[:div {:class "p-3 overflow-y-auto text-sm text-gray-700 dark:text-gray-200"}
|
|
[:div.flex.flex-col.gap-y-2
|
|
(for [l links]
|
|
[:div.flex-initial
|
|
[:a {:href (:link l)}
|
|
(com/pill {:color (or (:color l) :primary) :class "truncate block shrink grow-0"}
|
|
(:content l))]])]]]])) |