diff --git a/frontend/src/uxbox/main/ui/components/context_menu.cljs b/frontend/src/uxbox/main/ui/components/context_menu.cljs new file mode 100644 index 0000000000..d096180282 --- /dev/null +++ b/frontend/src/uxbox/main/ui/components/context_menu.cljs @@ -0,0 +1,23 @@ +(ns uxbox.main.ui.components.context-menu + (:require + [rumext.alpha :as mf] + [goog.object :as gobj] + [uxbox.main.ui.components.dropdown :refer [dropdown-container]] + [uxbox.util.uuid :as uuid])) + +(mf/defrc context-menu + [props] + (assert (fn? (gobj/get props "on-close")) "missing `on-close` prop") + (assert (boolean? (gobj/get props "show")) "missing `show` prop") + (assert (vector? (gobj/get props "options")) "missing `options` prop") + + (let [open? (gobj/get props "show") + options (gobj/get props "options")] + (when open? + [:> dropdown-container props + [:div.context-menu {:class (when open? "is-open")} + [:ul.context-menu-items + (for [[action-name action-handler] options] + [:li.context-menu-item {:key action-name} + [:a.context-menu-action {:on-click action-handler} + action-name]])]]])))