From d5f2a1a63475ac42bcceb80cc454d6bcc5d4b7fc Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 17 Mar 2020 18:12:09 +0100 Subject: [PATCH] :tada: Add context-menu component. Implemented on top of the dropdown component. --- .../main/ui/components/context_menu.cljs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 frontend/src/uxbox/main/ui/components/context_menu.cljs 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 000000000..d09618028 --- /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]])]]])))