From 33fcda7f0ce5b50cafa2efb671ef0d473fa1eba8 Mon Sep 17 00:00:00 2001 From: NikolaBorislavovHristov Date: Sat, 10 Aug 2019 08:05:02 +0300 Subject: [PATCH] new Popup integrated in MetaItem --- src/common/MetaItem/MetaItem.js | 45 ++++++++++++++++++++++----------- src/common/MetaItem/styles.less | 4 +-- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/src/common/MetaItem/MetaItem.js b/src/common/MetaItem/MetaItem.js index b8af7e582..5f9ad0e9a 100644 --- a/src/common/MetaItem/MetaItem.js +++ b/src/common/MetaItem/MetaItem.js @@ -15,14 +15,17 @@ const ICON_FOR_TYPE = Object.assign(Object.create(null), { }); const MetaItem = React.memo(({ className, id, type, name, posterShape = 'square', poster = '', title = '', subtitle = '', progress = 0, playIcon = false, menuOptions = [], onClick, menuOptionOnSelect }) => { - const menuRef = React.useRef(null); - const [menuOpen, onMenuOpen, onMenuClose] = useBinaryState(false); + const [menuOpen, openMenu, closeMenu, toggleMenu] = useBinaryState(false); const onContextMenu = React.useCallback((event) => { - if (!event.ctrlKey && menuRef.current !== null) { - event.preventDefault(); - menuOpen ? menuRef.current.close() : menuRef.current.open(); + if (!event.ctrlKey && Array.isArray(menuOptions) && menuOptions.length > 0) { + if (menuOpen) { + closeMenu(); + } else { + openMenu(); + event.preventDefault(); + } } - }, [menuOpen]); + }, [menuOpen, menuOptions]); return ( - - -
+ )} + renderMenu={({ ref, className, onClick }) => ( +
{menuOptions.map(({ label, type }) => ( - ))}
- - + )} + /> : null } diff --git a/src/common/MetaItem/styles.less b/src/common/MetaItem/styles.less index 16af7047c..1970bfc1a 100644 --- a/src/common/MetaItem/styles.less +++ b/src/common/MetaItem/styles.less @@ -158,12 +158,12 @@ } } -.menu-buttons-container { +.menu-container { min-width: 8rem; max-width: 12rem; background-color: var(--color-surfacelighter); - .menu-button { + .menu-item { font-size: 1.1rem; padding: 0.5rem; color: var(--color-backgrounddarker);