UNPKG

@atlaskit/editor-plugin-highlight

Version:

Highlight plugin for @atlaskit/editor-core

50 lines 1.89 kB
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 }; };