diff --git a/wax-prosemirror-components/src/components/Button.js b/wax-prosemirror-components/src/components/Button.js index fa2e0d6efdf838a56b2adf9ed84dd48d5d8b8276..4edf40a850e80af769f651662087cfc29de8652a 100644 --- a/wax-prosemirror-components/src/components/Button.js +++ b/wax-prosemirror-components/src/components/Button.js @@ -10,6 +10,7 @@ const Button = ({ view = {}, item }) => { const { view: { main }, activeViewId, + activeView, } = useContext(WaxContext); if (onlyOnMain) view = main; @@ -21,10 +22,9 @@ const Button = ({ view = {}, item }) => { run(editorState, dispatch); }; - const isActive = active && active(state, activeViewId); + const isActive = active(state, activeViewId) && select(state, activeViewId); - const isDisabled = - enable && !enable(state) && !(select && select(state, activeViewId)); + const isDisabled = !select(state, activeViewId, activeView); const MenuButtonComponent = useMemo( () => ( diff --git a/wax-prosemirror-components/src/components/ImageUpload.js b/wax-prosemirror-components/src/components/ImageUpload.js index b94c0a7e544cd9a2c0c8c322de878770755537f4..8a0be50407b680f36e518ff3d24c7095991b50f9 100644 --- a/wax-prosemirror-components/src/components/ImageUpload.js +++ b/wax-prosemirror-components/src/components/ImageUpload.js @@ -17,13 +17,15 @@ const ImageUpload = ({ item, fileUpload, view }) => { const inputRef = useRef(null); const handleMouseDown = () => inputRef.current.click(); + const isDisabled = !item.select(view.state, activeViewId); + const ImageUploadComponent = useMemo( () => ( <Wrapper> <label htmlFor="file-upload"> <MenuButton active={false} - disabled={!(item.select && item.select(view.state, activeViewId))} + disabled={isDisabled} iconName={item.icon} onMouseDown={handleMouseDown} title="Upload Image" @@ -38,7 +40,7 @@ const ImageUpload = ({ item, fileUpload, view }) => { </label> </Wrapper> ), - [], + [isDisabled], ); return ImageUploadComponent; diff --git a/wax-prosemirror-components/src/components/TableDropDown.js b/wax-prosemirror-components/src/components/TableDropDown.js index 1e7c6a1108ed7ff7c31a0191ef3613864f46402c..2fa2afc9b439aa75ace7b66b7fb51fdd869a3f23 100644 --- a/wax-prosemirror-components/src/components/TableDropDown.js +++ b/wax-prosemirror-components/src/components/TableDropDown.js @@ -1,7 +1,8 @@ /* eslint react/prop-types: 0 */ -import React from 'react'; +import React, { useMemo, useContext } from 'react'; import styled from 'styled-components'; import * as tablesFn from 'prosemirror-tables'; +import { WaxContext } from 'wax-prosemirror-core'; import Dropdown from 'react-dropdown'; import 'react-dropdown/style.css'; @@ -44,16 +45,24 @@ const dropDownOptions = [ ]; const TableDropDown = ({ view: { dispatch, state }, item }) => { - return ( - <DropdownStyled - options={dropDownOptions} - onChange={option => { - item.run(state, dispatch, tablesFn[option.value]); - }} - placeholder="Table Options" - select={item.select && item.select(state)} - /> + const { activeView } = useContext(WaxContext); + + const isDisabled = item.select(activeView.state); + const TableDropDownComponent = useMemo( + () => ( + <DropdownStyled + options={dropDownOptions} + onChange={option => { + item.run(state, dispatch, tablesFn[option.value]); + }} + placeholder="Table Options" + select={isDisabled} + /> + ), + [isDisabled], ); + + return TableDropDownComponent; }; export default TableDropDown; diff --git a/wax-prosemirror-components/src/components/tables/CreateTable.js b/wax-prosemirror-components/src/components/tables/CreateTable.js index f88c45dc8ecf97e2ee5ad549753edf2eae85c613..42a08ffa972278bde01cb1b1fcf79b814d0d8c09 100644 --- a/wax-prosemirror-components/src/components/tables/CreateTable.js +++ b/wax-prosemirror-components/src/components/tables/CreateTable.js @@ -46,8 +46,7 @@ const CreateTable = ({ view = {}, item }) => { setIsOpen(!isOpen); }; - const isDisabled = - enable && !enable(state) && !(select && select(state, activeViewId)); + const isDisabled = !select(state, activeViewId); useOnClickOutside(ref, () => setIsOpen(false)); diff --git a/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js b/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js index d4debc43ae838a8e90c3ae21a6e32f7ebb3efb82..1d1c1ba1c60ed5aeefb30054d8f0c8c2cf2da2e1 100644 --- a/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js +++ b/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js @@ -104,10 +104,10 @@ class AcceptTrackChange extends Tools { }; } - select = (state, activeViewId) => { + select = (state, activeViewId, activeView) => { const { selection: { from, to }, - } = state; + } = activeView.state; if (from === to && activeViewId !== 'main') return false; return true; }; diff --git a/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js b/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js index 4a7e4de3dc9928364c38d88208d38b9a65369817..bd9dfcd83761ed0b98cf0359479c828a7b0e57f7 100644 --- a/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js +++ b/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js @@ -112,10 +112,10 @@ class RejectTrackChange extends Tools { }; } - select = (state, activeViewId) => { + select = (state, activeViewId, activeView) => { const { selection: { from, to }, - } = state; + } = activeView.state; if (from === to && activeViewId !== 'main') return false; return true; }; diff --git a/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/Display.js b/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/Display.js index 60b888079cbf5c6a995142cde9d996a929f65a97..e13f376e21abab21675848bb0da8ad14af66cedc 100644 --- a/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/Display.js +++ b/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/Display.js @@ -1,22 +1,22 @@ -import React from "react"; -import { injectable, inject } from "inversify"; -import { LeftMenuTitle } from "wax-prosemirror-components"; -import ToolGroup from "../../lib/ToolGroup"; +import React from 'react'; +import { injectable, inject } from 'inversify'; +import { LeftMenuTitle } from 'wax-prosemirror-components'; +import ToolGroup from '../../lib/ToolGroup'; @injectable() class Display extends ToolGroup { tools = []; - title = <LeftMenuTitle title="Display" />; + title = (<LeftMenuTitle title="Display" />); constructor( - @inject("Author") author, - @inject("Title") title, - @inject("SubTitle") subtitle, - @inject("EpigraphProse") epigraphprose, - @inject("EpigraphPoetry") epigraphpoetry, - @inject("Heading1") heading1, - @inject("Heading2") heading2, - @inject("Heading3") heading3 + @inject('Author') author, + @inject('Title') title, + @inject('SubTitle') subtitle, + @inject('EpigraphProse') epigraphprose, + @inject('EpigraphPoetry') epigraphpoetry, + @inject('Heading1') heading1, + @inject('Heading2') heading2, + @inject('Heading3') heading3, ) { super(); this.tools = [ @@ -27,7 +27,7 @@ class Display extends ToolGroup { epigraphpoetry, heading1, heading2, - heading3 + heading3, ]; } } diff --git a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js b/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js index c09c5a0f000ca50f0f4d4a32806fbd00a53e392b..8c9629cf5c8269034553ebd2382c5855d4f1afad 100644 --- a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js +++ b/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js @@ -1,20 +1,20 @@ -import React from "react"; -import { injectable, inject } from "inversify"; -import { LeftMenuTitle } from "wax-prosemirror-components"; -import ToolGroup from "../../lib/ToolGroup"; +import React from 'react'; +import { injectable, inject } from 'inversify'; +import { LeftMenuTitle } from 'wax-prosemirror-components'; +import ToolGroup from '../../lib/ToolGroup'; @injectable() class Text extends ToolGroup { tools = []; - title = <LeftMenuTitle title="Text" />; + title = (<LeftMenuTitle title="Text" />); constructor( - @inject("Paragraph") paragraph, - @inject("ParagraphContinued") paragraphContinued, - @inject("ExtractProse") extractProse, - @inject("ExtractPoetry") extractPoetry, - @inject("SourceNote") sourceNote, - @inject("BlockQuote") blockQuote + @inject('Paragraph') paragraph, + @inject('ParagraphContinued') paragraphContinued, + @inject('ExtractProse') extractProse, + @inject('ExtractPoetry') extractPoetry, + @inject('SourceNote') sourceNote, + @inject('BlockQuote') blockQuote, ) { super(); this.tools = [ @@ -23,7 +23,7 @@ class Text extends ToolGroup { extractProse, extractPoetry, sourceNote, - blockQuote + blockQuote, ]; } }