From 4e7f52cad3a0026c55f03cee6f195e3848702686 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Tue, 29 Sep 2020 21:25:05 +0300 Subject: [PATCH] headings Active --- wax-prosemirror-components/src/components/Button.js | 2 +- .../DisplayBlockLevel/HeadingService/Heading1.js | 13 +++++++++++-- .../DisplayBlockLevel/HeadingService/Heading2.js | 13 +++++++++++-- .../DisplayBlockLevel/HeadingService/Heading3.js | 13 +++++++++++-- 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/wax-prosemirror-components/src/components/Button.js b/wax-prosemirror-components/src/components/Button.js index 4db7e1c60..ed968a69a 100644 --- a/wax-prosemirror-components/src/components/Button.js +++ b/wax-prosemirror-components/src/components/Button.js @@ -19,7 +19,7 @@ const Button = ({ view = {}, item }) => { run(state, dispatch); }; - const isActive = active && active(state); + const isActive = active && active(state, activeViewId); const isDisabled = enable && !enable(state) && !(select && select(state, activeViewId)); diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js index 4fed67b7a..f1d954587 100644 --- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js +++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js @@ -19,8 +19,17 @@ class Heading1 extends Tools { } get active() { - return state => { - return Commands.blockActive(state.config.schema.nodes.heading, { + return (state, activeViewId) => { + let isActive = true; + if (activeViewId !== 'main') return false; + const { from, to } = state.selection; + state.doc.nodesBetween(from, to, (node, pos) => { + if (node.type.name === 'list_item') { + isActive = false; + } + }); + if (!isActive) return false; + return !Commands.setBlockType(state.config.schema.nodes.heading, { level: 1, })(state); }; diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js index d4979cb93..cb07816bf 100644 --- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js +++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js @@ -19,8 +19,17 @@ class Heading2 extends Tools { } get active() { - return state => { - return Commands.blockActive(state.config.schema.nodes.heading, { + return (state, activeViewId) => { + let isActive = true; + if (activeViewId !== 'main') return false; + const { from, to } = state.selection; + state.doc.nodesBetween(from, to, (node, pos) => { + if (node.type.name === 'list_item') { + isActive = false; + } + }); + if (!isActive) return false; + return !Commands.setBlockType(state.config.schema.nodes.heading, { level: 2, })(state); }; diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js index 0e198226c..a4d444810 100644 --- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js +++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js @@ -19,8 +19,17 @@ class Heading3 extends Tools { } get active() { - return state => { - return Commands.blockActive(state.config.schema.nodes.heading, { + return (state, activeViewId) => { + let isActive = true; + if (activeViewId !== 'main') return false; + const { from, to } = state.selection; + state.doc.nodesBetween(from, to, (node, pos) => { + if (node.type.name === 'list_item') { + isActive = false; + } + }); + if (!isActive) return false; + return !Commands.setBlockType(state.config.schema.nodes.heading, { level: 3, })(state); }; -- GitLab