UNPKG

@atlaskit/tag

Version:

A tag labels UI objects for quick recognition and navigation.

48 lines (47 loc) • 1.86 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useTagRemoval = useTagRemoval; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _defaultBeforeRemoveAction = require("./default-before-remove-action"); var _tagStatus = require("./tag-status"); /** * {description}. */ function useTagRemoval(onBeforeRemoveAction) { var _useState = (0, _react.useState)(_tagStatus.TagStatus.Showing), _useState2 = (0, _slicedToArray2.default)(_useState, 2), status = _useState2[0], setStatus = _useState2[1]; var handleRemoveRequest = (0, _react.useCallback)(function () { var beforeAction = onBeforeRemoveAction !== null && onBeforeRemoveAction !== void 0 ? onBeforeRemoveAction : _defaultBeforeRemoveAction.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.TagStatus.Removed); } }, [onBeforeRemoveAction]); var onKeyPress = (0, _react.useCallback)(function (e) { var spacebarOrEnter = e.key === ' ' || e.key === 'Enter'; if (spacebarOrEnter) { e.stopPropagation(); handleRemoveRequest(); } }, [handleRemoveRequest]); var removingTag = (0, _react.useCallback)(function () { return setStatus(_tagStatus.TagStatus.Removing); }, []); var showingTag = (0, _react.useCallback)(function () { return setStatus(_tagStatus.TagStatus.Showing); }, []); return { status: status, handleRemoveRequest: handleRemoveRequest, onKeyPress: onKeyPress, removingTag: removingTag, showingTag: showingTag }; }