@atlaskit/editor-plugin-highlight
Version:
Highlight plugin for @atlaskit/editor-core
50 lines • 1.89 kB
JavaScript
import { useState } from 'react';
import { changeColor } from '../../editor-commands/change-color';
export const useDropdownEvents = args => {
const {
toolbarItemRef,
setIsDropdownOpen,
isDropdownOpen,
pluginInjectionApi
} = args;
const [isOpenedByKeyboard, setIsOpenedByKeyboard] = useState(false);
return {
handleClick: () => {
setIsOpenedByKeyboard(false);
setIsDropdownOpen(!isDropdownOpen);
},
handleKeyDown: event => {
if (event.key === 'Enter' || event.key === ' ') {
event.preventDefault();
setIsOpenedByKeyboard(true);
setIsDropdownOpen(!isDropdownOpen);
}
},
handleClickOutside: () => {
if (isDropdownOpen) {
setIsDropdownOpen(false);
setIsOpenedByKeyboard(false);
}
},
handleEscapeKeydown: () => {
if (isDropdownOpen) {
var _toolbarItemRef$curre;
setIsDropdownOpen(false);
setIsOpenedByKeyboard(false);
toolbarItemRef === null || toolbarItemRef === void 0 ? void 0 : (_toolbarItemRef$curre = toolbarItemRef.current) === null || _toolbarItemRef$curre === void 0 ? void 0 : _toolbarItemRef$curre.focus();
}
},
handleColorChange: ({
color,
inputMethod
}) => {
var _pluginInjectionApi$c, _pluginInjectionApi$a;
pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c = pluginInjectionApi.core) === null || _pluginInjectionApi$c === void 0 ? void 0 : _pluginInjectionApi$c.actions.execute(changeColor(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : _pluginInjectionApi$a.actions)({
color,
inputMethod
}));
setIsDropdownOpen(false);
},
isOpenedByKeyboard
};
};