diff --git a/editors/editoria/src/layout/EditoriaLayout.js b/editors/editoria/src/layout/EditoriaLayout.js index fc5d0677602d43141b85f278d87715f46cf1d30f..c01a058061daf7f9e21b0113e33def786f2b6a49 100644 --- a/editors/editoria/src/layout/EditoriaLayout.js +++ b/editors/editoria/src/layout/EditoriaLayout.js @@ -127,7 +127,7 @@ const CommentTrackToolsContainer = styled.div` position: fixed; padding-top: 5px; right: 30px; - z-index: 2; + z-index: 1; background: white; padding-left: 5%; `; diff --git a/wax-prosemirror-components/src/components/Overlay.js b/wax-prosemirror-components/src/components/Overlay.js index 6d3cce46b8e6323f2d5b5c77c9a9229d668f922e..53e2a3f7732bc2597abecf1fd953c2d52af5ab48 100644 --- a/wax-prosemirror-components/src/components/Overlay.js +++ b/wax-prosemirror-components/src/components/Overlay.js @@ -1,10 +1,13 @@ -import React from "react"; -import styled from "styled-components"; +/* eslint-disable react/destructuring-assignment */ +/* eslint-disable react/jsx-props-no-spreading */ +import React from 'react'; +import styled from 'styled-components'; + const OverlayContainer = styled.div` - position: ${props => props.position.position}; left: ${props => `${props.position.left}px`}; + position: ${props => props.position.position}; top: ${props => `${props.position.top}px`}; - z-index: 999; + // z-index: 999; `; const Overlay = props => ( diff --git a/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js b/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js index b5a7677026cad23470ef649483ed8d617120186d..bdbda7c2eff4e9d3e7e09e3a568553d1ab0153a2 100644 --- a/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js +++ b/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js @@ -107,6 +107,7 @@ const AcceptRejectAllControls = styled.div` right: 207px; transform-origin: 50% 50% 0px; width: 200px; + z-index: 9999; `; const AcceptRejectAllRow = styled.div` @@ -168,38 +169,51 @@ const getComments = main => { return comments; }; -const renderTools = menuItems => { - const tools = []; - tools.push( - menuItems.map((menuItem, index) => { - return ( - <MenuButton - iconName={menuItem.icon} - key={menuItem.name} - label={menuItem.label} - /> - ); - }), - ); - return <>{tools}</>; -}; - const TrackChangeOptionsComponent = ({ groups }) => { const [isShownTrack, setIsShownTrack] = useState(false); const menuItems = groups[0].items; - const { view } = useContext(WaxContext); + const { view, activeView, activeViewId } = useContext(WaxContext); + const { dispatch, state } = view; const inlineTracks = getInlineTracks(view.main).length; const blockTracks = getTrackBlockNodes(view.main).length; const comments = getComments(view.main).length; + const renderTools = () => { + const tools = []; + tools.push( + menuItems.map((menuItem, index) => { + const isActive = !!( + menuItem.active(state, activeViewId) && + menuItem.select(state, activeViewId) + ); + + const isDisabled = !menuItem.select(state, activeViewId, activeView); + return ( + <MenuButton + active={isActive || false} + disabled={isDisabled} + iconName={menuItem.icon} + key={menuItem.name} + label={menuItem.label} + onMouseDown={e => { + e.preventDefault(); + menuItem.run(activeView.state, activeView.dispatch); + }} + /> + ); + }), + ); + return <>{tools}</>; + }; + return ( <Wrapper> <TotalSuggestions> {inlineTracks + blockTracks} SUGGESTIONS </TotalSuggestions> - <ToolsContainer>{renderTools(menuItems)}</ToolsContainer> + <ToolsContainer>{renderTools()}</ToolsContainer> <AcceptRejectAll onMouseEnter={() => setIsShownTrack(true)} onMouseLeave={() => setIsShownTrack(false)} diff --git a/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsTool.js b/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsTool.js index 162e688d1ed1cd5dcea26d1f9c08082266b584da..640597119d31a05387aca7be400334e8089b1830 100644 --- a/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsTool.js +++ b/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsTool.js @@ -27,7 +27,7 @@ const TrackChangeOptionsTool = ({ view = {}, item, groups }) => { const [isOpen, setIsOpen] = useState(false); const ref = useRef(); - useOnClickOutside(ref, () => setIsOpen(false)); + // useOnClickOutside(ref, () => setIsOpen(false)); const MemorizedDropdown = useMemo( () => ( diff --git a/wax-prosemirror-components/src/ui/buttons/MenuButton.js b/wax-prosemirror-components/src/ui/buttons/MenuButton.js index e08d2fc6bb1d0f8f689b2cf3132dc6e019ca89a9..7e5606dc0b04b90e9fca4193dc1fd524af306344 100644 --- a/wax-prosemirror-components/src/ui/buttons/MenuButton.js +++ b/wax-prosemirror-components/src/ui/buttons/MenuButton.js @@ -46,6 +46,7 @@ const Wrapper = styled.button.attrs(props => ({ outline: none; padding: 2px; transition: all 0.1s ease-in; + user-select: none; > svg { transition: all 0.1s ease-in; diff --git a/wax-prosemirror-services/src/OverlayService/OverlayComponent.js b/wax-prosemirror-services/src/OverlayService/OverlayComponent.js index c79077b364115229706b8d4e325cfbcbcabe1547..5db172c90ea808145d40e48c10de2f86caea2d06 100644 --- a/wax-prosemirror-services/src/OverlayService/OverlayComponent.js +++ b/wax-prosemirror-services/src/OverlayService/OverlayComponent.js @@ -1,21 +1,22 @@ -import React, { useMemo } from "react"; -import usePosition from "./usePosition"; -import { Overlay } from "wax-prosemirror-components"; +/* eslint-disable react/jsx-props-no-spreading */ +import React, { useMemo } from 'react'; +import { Overlay } from 'wax-prosemirror-components'; +import usePosition from './usePosition'; export default (Component, markType) => props => { const [position, setPosition, mark] = usePosition(markType); const component = useMemo( () => ( <Component - setPosition={setPosition} mark={mark} position={position} + setPosition={setPosition} {...props} /> ), - [JSON.stringify(mark), position] + [JSON.stringify(mark), position], ); - const visible = position.left ? true : false; + const visible = !!position.left; return <Overlay position={position}>{visible && component}</Overlay>; };