UNPKG

@atlaskit/flag

Version:

A flag is used for confirmations, alerts, and acknowledgments that require minimal user interaction, often displayed using a flag group.

83 lines (81 loc) 4.19 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.AUTO_DISMISS_SECONDS = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _usePlatformLeafEventHandler = require("@atlaskit/analytics-next/usePlatformLeafEventHandler"); var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop")); var _flag = _interopRequireDefault(require("./flag")); var _useFlagGroup2 = require("./internal/use-flag-group"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var packageName = "@atlaskit/flag"; var packageVersion = "18.5.5"; var AUTO_DISMISS_SECONDS = exports.AUTO_DISMISS_SECONDS = 8; /** * __Auto dismiss flag__ * * An auto dismiss flag is dismissed automatically after eight seconds. * * - [Examples](https://atlassian.design/components/flag/auto-dismiss-flag/examples) * - [Code](https://atlassian.design/components/flag/auto-dismiss-flag/code) */ var AutoDismissFlag = function AutoDismissFlag(props) { var id = props.id, analyticsContext = props.analyticsContext, _props$onDismissed = props.onDismissed, onDismissedProp = _props$onDismissed === void 0 ? _noop.default : _props$onDismissed, _props$autoDismissSec = props.autoDismissSeconds, autoDismissSeconds = _props$autoDismissSec === void 0 ? AUTO_DISMISS_SECONDS : _props$autoDismissSec; var autoDismissTimer = (0, _react.useRef)(null); var _useFlagGroup = (0, _useFlagGroup2.useFlagGroup)(), onDismissedFromFlagGroup = _useFlagGroup.onDismissed, isDismissAllowed = _useFlagGroup.isDismissAllowed; var onDismissed = (0, _react.useCallback)(function (id, analyticsEvent) { onDismissedProp(id, analyticsEvent); onDismissedFromFlagGroup(id, analyticsEvent); }, [onDismissedProp, onDismissedFromFlagGroup]); var onDismissedAnalytics = (0, _usePlatformLeafEventHandler.usePlatformLeafEventHandler)({ fn: onDismissed, action: 'dismissed', analyticsData: analyticsContext, componentName: 'flag', packageName: packageName, packageVersion: packageVersion }); var isAutoDismissAllowed = isDismissAllowed && onDismissed; var dismissFlag = (0, _react.useCallback)(function () { if (isAutoDismissAllowed) { onDismissedAnalytics(id); } }, [id, onDismissedAnalytics, isAutoDismissAllowed]); var stopAutoDismissTimer = (0, _react.useCallback)(function () { if (autoDismissTimer.current) { clearTimeout(autoDismissTimer.current); autoDismissTimer.current = null; } }, []); var startAutoDismissTimer = (0, _react.useCallback)(function () { if (!isAutoDismissAllowed) { return; } stopAutoDismissTimer(); autoDismissTimer.current = window.setTimeout(dismissFlag, autoDismissSeconds * 1000); }, [dismissFlag, stopAutoDismissTimer, isAutoDismissAllowed, autoDismissSeconds]); (0, _react.useEffect)(function () { startAutoDismissTimer(); return stopAutoDismissTimer; }, [startAutoDismissTimer, stopAutoDismissTimer]); return /*#__PURE__*/_react.default.createElement(_flag.default // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props , (0, _extends2.default)({}, props, { onMouseOver: stopAutoDismissTimer, onFocus: stopAutoDismissTimer, onMouseOut: startAutoDismissTimer, onBlur: startAutoDismissTimer })); }; var _default = exports.default = AutoDismissFlag;