UNPKG

@atlaskit/tag

Version:

A tag labels UI objects for quick recognition and navigation.

42 lines (41 loc) • 1.51 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import { useCallback, useState } from 'react'; import { defaultBeforeRemoveAction } from './default-before-remove-action'; import { TagStatus } from './tag-status'; /** * {description}. */ export function useTagRemoval(onBeforeRemoveAction) { var _useState = useState(TagStatus.Showing), _useState2 = _slicedToArray(_useState, 2), status = _useState2[0], setStatus = _useState2[1]; var handleRemoveRequest = useCallback(function () { var beforeAction = onBeforeRemoveAction !== null && onBeforeRemoveAction !== void 0 ? onBeforeRemoveAction : defaultBeforeRemoveAction; if (beforeAction()) { // Defer onAfterRemoveAction until ShrinkOut's onFinish so ExitingPersistence can run // the exit animation (e.g. in multi-select and user pickers). setStatus(TagStatus.Removed); } }, [onBeforeRemoveAction]); var onKeyPress = useCallback(function (e) { var spacebarOrEnter = e.key === ' ' || e.key === 'Enter'; if (spacebarOrEnter) { e.stopPropagation(); handleRemoveRequest(); } }, [handleRemoveRequest]); var removingTag = useCallback(function () { return setStatus(TagStatus.Removing); }, []); var showingTag = useCallback(function () { return setStatus(TagStatus.Showing); }, []); return { status: status, handleRemoveRequest: handleRemoveRequest, onKeyPress: onKeyPress, removingTag: removingTag, showingTag: showingTag }; }