diff --git a/draft-js-buttons/src/utils/createBlockAlignmentButton.js b/draft-js-buttons/src/utils/createBlockAlignmentButton.js index e5065e36ed..88e5ef3bb0 100644 --- a/draft-js-buttons/src/utils/createBlockAlignmentButton.js +++ b/draft-js-buttons/src/utils/createBlockAlignmentButton.js @@ -6,6 +6,7 @@ export default ({ alignment, children }) => ( activate = (event) => { event.preventDefault(); + event.stopPropagation(); this.props.setAlignment({ alignment }); } diff --git a/draft-js-buttons/src/utils/createBlockStyleButton.js b/draft-js-buttons/src/utils/createBlockStyleButton.js index 76145444ad..da88cbef2b 100644 --- a/draft-js-buttons/src/utils/createBlockStyleButton.js +++ b/draft-js-buttons/src/utils/createBlockStyleButton.js @@ -7,6 +7,7 @@ export default ({ blockType, children }) => ( toggleStyle = (event) => { event.preventDefault(); + event.stopPropagation(); this.props.setEditorState( RichUtils.toggleBlockType( this.props.getEditorState(), diff --git a/draft-js-buttons/src/utils/createInlineStyleButton.js b/draft-js-buttons/src/utils/createInlineStyleButton.js index c30c1db41b..9349d131a0 100644 --- a/draft-js-buttons/src/utils/createInlineStyleButton.js +++ b/draft-js-buttons/src/utils/createInlineStyleButton.js @@ -7,6 +7,7 @@ export default ({ style, children }) => ( toggleStyle = (event) => { event.preventDefault(); + event.stopPropagation(); this.props.setEditorState( RichUtils.toggleInlineStyle( this.props.getEditorState(), diff --git a/draft-js-side-toolbar-plugin/src/components/BlockTypeSelect/index.js b/draft-js-side-toolbar-plugin/src/components/BlockTypeSelect/index.js index 827310ebb7..104daf530f 100644 --- a/draft-js-side-toolbar-plugin/src/components/BlockTypeSelect/index.js +++ b/draft-js-side-toolbar-plugin/src/components/BlockTypeSelect/index.js @@ -3,41 +3,36 @@ import React from 'react'; export default class BlockTypeSelect extends React.Component { state = { + visible: false, style: { transform: 'translate(-50%) scale(0)', + transition: 'transform 0.15s cubic-bezier(.3,1.2,.2,1)', } } - onMouseEnter = () => { - this.setState({ - style: { - transform: 'translate(-50%) scale(1)', - transition: 'transform 0.15s cubic-bezier(.3,1.2,.2,1)', - }, - }); + onClick = (e) => { + e.stopPropagation(); + return this.state.visible ? this.hide() : this.show(); } - onMouseLeave = () => { + show = () => { this.setState({ - style: { - transform: 'translate(-50%) scale(0)', - }, + visible: true, + style: { transform: 'translate(-50%) scale(1)' } }); } - onMouseDown = (clickEvent) => { - clickEvent.preventDefault(); - clickEvent.stopPropagation(); + hide = () => { + this.setState({ + visible: false, + style: { transform: 'translate(-50%) scale(0)' } + }); } render() { const { theme, getEditorState, setEditorState } = this.props; return ( -