mirror of
https://github.com/penpot/penpot.git
synced 2025-05-18 20:16:10 +02:00
✨ Minor api improvements on dropdown component.
This commit is contained in:
parent
ec04bb4160
commit
759530ea58
2 changed files with 12 additions and 5 deletions
|
@ -2,7 +2,7 @@
|
||||||
(:require
|
(:require
|
||||||
[rumext.alpha :as mf]
|
[rumext.alpha :as mf]
|
||||||
[goog.object :as gobj]
|
[goog.object :as gobj]
|
||||||
[uxbox.main.ui.components.dropdown :refer [dropdown-container]]
|
[uxbox.main.ui.components.dropdown :refer [dropdown']]
|
||||||
[uxbox.util.uuid :as uuid]
|
[uxbox.util.uuid :as uuid]
|
||||||
[uxbox.util.data :refer [classnames]]))
|
[uxbox.util.data :refer [classnames]]))
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
is-selectable (gobj/get props "selectable")
|
is-selectable (gobj/get props "selectable")
|
||||||
selected (gobj/get props "selected")]
|
selected (gobj/get props "selected")]
|
||||||
(when open?
|
(when open?
|
||||||
[:> dropdown-container props
|
[:> dropdown' props
|
||||||
[:div.context-menu {:class (classnames :is-open open?
|
[:div.context-menu {:class (classnames :is-open open?
|
||||||
:is-selectable is-selectable)}
|
:is-selectable is-selectable)}
|
||||||
[:ul.context-menu-items
|
[:ul.context-menu-items
|
||||||
|
|
|
@ -2,20 +2,27 @@
|
||||||
(:require
|
(:require
|
||||||
[rumext.alpha :as mf]
|
[rumext.alpha :as mf]
|
||||||
[uxbox.util.uuid :as uuid]
|
[uxbox.util.uuid :as uuid]
|
||||||
|
[uxbox.util.dom :as dom]
|
||||||
[goog.events :as events]
|
[goog.events :as events]
|
||||||
[goog.object :as gobj])
|
[goog.object :as gobj])
|
||||||
(:import goog.events.EventType
|
(:import goog.events.EventType
|
||||||
goog.events.KeyCodes))
|
goog.events.KeyCodes))
|
||||||
|
|
||||||
(mf/defc dropdown-container
|
(mf/defc dropdown'
|
||||||
{::mf/wrap-props false}
|
{::mf/wrap-props false}
|
||||||
[props]
|
[props]
|
||||||
(let [children (gobj/get props "children")
|
(let [children (gobj/get props "children")
|
||||||
on-close (gobj/get props "on-close")
|
on-close (gobj/get props "on-close")
|
||||||
|
ref (gobj/get props "container")
|
||||||
|
|
||||||
on-click
|
on-click
|
||||||
(fn [event]
|
(fn [event]
|
||||||
(on-close))
|
(if ref
|
||||||
|
(let [target (dom/get-target event)
|
||||||
|
parent (mf/ref-val ref)]
|
||||||
|
(when-not (.contains parent target)
|
||||||
|
(on-close)))
|
||||||
|
(on-close)))
|
||||||
|
|
||||||
on-keyup
|
on-keyup
|
||||||
(fn [event]
|
(fn [event]
|
||||||
|
@ -40,4 +47,4 @@
|
||||||
(assert (boolean? (gobj/get props "show")) "missing `show` prop")
|
(assert (boolean? (gobj/get props "show")) "missing `show` prop")
|
||||||
|
|
||||||
(when (gobj/get props "show")
|
(when (gobj/get props "show")
|
||||||
(mf/element dropdown-container props)))
|
(mf/element dropdown' props)))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue