UNPKG

fomantic-ui-react

Version:

Fomantic-UI React -- A React Component Library.

277 lines (245 loc) 10.8 kB
/** * fomantic-ui-react v0.0.1-alpha.10 * (c) 2022 FireLoong <fireloong@foxmail.com> * @license MIT */ 'use strict'; var defineProperty = require('./dep-6ab59a61.js'); var toConsumableArray = require('./dep-0fe19ac2.js'); var slicedToArray = require('./dep-640599ea.js'); var objectWithoutProperties = require('./dep-03754121.js'); var React = require('react'); var reactDom = require('react-dom'); var classNames = require('classnames'); var _ = require('lodash'); var header_index = require('../header/index.js'); var icon_index = require('../icon/index.js'); var transition_index = require('../transition/index.js'); var div_index = require('../div/index.js'); var _util_classNamesUniq = require('../_util/classNamesUniq.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames); var ___default = /*#__PURE__*/_interopDefaultLegacy(_); var _excluded$1 = ["className", "theme", "compact", "title", "message", "closeIcon", "displayTime", "id", "onCloseClick"]; function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { defineProperty._defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var Toast = /*#__PURE__*/React.forwardRef(function (_ref, ref) { var className = _ref.className, _ref$theme = _ref.theme, theme = _ref$theme === void 0 ? "neutral" : _ref$theme, _ref$compact = _ref.compact, compact = _ref$compact === void 0 ? true : _ref$compact, title = _ref.title, message = _ref.message, closeIcon = _ref.closeIcon, _ref$displayTime = _ref.displayTime, displayTime = _ref$displayTime === void 0 ? 3e3 : _ref$displayTime, id = _ref.id, onCloseClick = _ref.onCloseClick, props = objectWithoutProperties._objectWithoutProperties(_ref, _excluded$1); var _useState = React.useState(false), _useState2 = slicedToArray._slicedToArray(_useState, 2), visible = _useState2[0], setVisible = _useState2[1]; var _useState3 = React.useState(false), _useState4 = slicedToArray._slicedToArray(_useState3, 2), box = _useState4[0], setBox = _useState4[1]; React.useEffect(function () { setTimeout(function () { setBox(true); setVisible(true); }); }, []); React.useEffect(function () { var timer; if (visible) { if (displayTime > 0) { timer = setTimeout(function () { clearTimeout(timer); setVisible(false); setTimeout(function () { setBox(false); id && remove(id); }, 550); }, displayTime); } } return function () { if (timer) clearTimeout(timer); }; }, [visible]); var remove = React.useContext(ToastRemoveContext); React.useImperativeHandle(ref, function () { return { close: function close() { return id && remove(id); } }; }); return /* @__PURE__ */React__default["default"].createElement(div_index.Div, _objectSpread$1({ as: transition_index.Transition, className: _util_classNamesUniq.uniq(classNames__default["default"]("floating", { "toast-box": box, compact: compact, unclickable: closeIcon }, className)), animation: "scale", duration: 500, visible: visible, onClick: function onClick(e) { if (!closeIcon) { setVisible(false); setTimeout(function () { onCloseClick === null || onCloseClick === void 0 ? void 0 : onCloseClick({ e: e }); }, 500); } } }, props), /* @__PURE__ */React__default["default"].createElement("div", { className: classNames__default["default"]("ui", "toast", theme, { compact: compact }, "visible") }, /* @__PURE__ */React__default["default"].createElement("div", { className: "content" }, title && /* @__PURE__ */React__default["default"].createElement(header_index.Header, null, title), /* @__PURE__ */React__default["default"].createElement("div", { className: "message" }, message)), closeIcon && /* @__PURE__ */React__default["default"].createElement(icon_index.Icon, { name: "close", onClick: function onClick(e) { setVisible(false); setTimeout(function () { onCloseClick === null || onCloseClick === void 0 ? void 0 : onCloseClick({ e: e }); }, 500); } }), /* @__PURE__ */React__default["default"].createElement("span", { className: "wait progressing pausable" }))); }); Toast.displayName = "Toast"; var _excluded = ["as", "className", "position", "context", "zIndex", "newestOnTop"], _excluded2 = ["ref", "key", "onCloseClick"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { defineProperty._defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var seed = 0; var listMap = /* @__PURE__ */new Map(); var ToastRemoveContext = /*#__PURE__*/React.createContext(function () {}); var ToastContainer = /*#__PURE__*/React.forwardRef(function (_ref, ref) { var _ref$as = _ref.as, as = _ref$as === void 0 ? "div" : _ref$as, className = _ref.className, _ref$position = _ref.position, position = _ref$position === void 0 ? "top right" : _ref$position; _ref.context; var zIndex = _ref.zIndex, newestOnTop = _ref.newestOnTop, props = objectWithoutProperties._objectWithoutProperties(_ref, _excluded); var _useState = React.useState([]), _useState2 = slicedToArray._slicedToArray(_useState, 2), list = _useState2[0], setList = _useState2[1]; if (!as) { as = "div"; } var push = function push(options) { var key = String(seed += 1); var ref2 = /*#__PURE__*/React.createRef(); setList(function (oldList) { return newestOnTop ? [_objectSpread(_objectSpread({}, options), {}, { id: key, key: key, ref: ref2 })].concat(toConsumableArray._toConsumableArray(oldList)) : [].concat(toConsumableArray._toConsumableArray(oldList), [_objectSpread(_objectSpread({}, options), {}, { id: key, key: key, ref: ref2 })]); }); return Promise.resolve(ref2.current); }; var remove = function remove(key) { setList(function (oldList) { var index = oldList.findIndex(function (item) { return item.key === key; }); if (index !== -1) { var tempList = toConsumableArray._toConsumableArray(oldList); tempList.splice(index, 1); return toConsumableArray._toConsumableArray(tempList); } return oldList; }); }; var removeAll = function removeAll() { setList([]); }; React.useImperativeHandle(ref, function () { return { push: push, remove: remove, removeAll: removeAll }; }); return /* @__PURE__ */React__default["default"].createElement(ToastRemoveContext.Provider, { value: remove }, /*#__PURE__*/React.createElement(as, _objectSpread({ className: classNames__default["default"]("ui", "toast-container", position, className), style: { zIndex: zIndex } }, props), list.map(function (tProps) { var ref2 = tProps.ref, key = tProps.key, _onCloseClick = tProps.onCloseClick, sProps = objectWithoutProperties._objectWithoutProperties(tProps, _excluded2); return /* @__PURE__ */React__default["default"].createElement(Toast, _objectSpread({ ref: ref2, key: key, onCloseClick: function onCloseClick(e) { remove(key); _onCloseClick === null || _onCloseClick === void 0 ? void 0 : _onCloseClick(e); } }, sProps)); }))); }); var fetchListInstance = function fetchListInstance(containerOptions) { return new Promise(function (resolve) { var attach = function () { var parentElement = document.body; var context = containerOptions.context || "body"; if (typeof context === "string") { var element2 = document.querySelector(context); if (element2 instanceof HTMLElement) parentElement = element2; } if (context instanceof HTMLElement) parentElement = context; var containerClassName = "fomantic-toast-".concat(___default["default"].kebabCase(containerOptions.position || "top right")); var container = parentElement.querySelector(".".concat(containerClassName)); if (container && container instanceof HTMLElement) { return container; } var element = document.createElement("div"); element.setAttribute("class", containerClassName); parentElement.appendChild(element); return element; }(); var hasExec = false; reactDom.render( /* @__PURE__ */React__default["default"].createElement(ToastContainer, _objectSpread(_objectSpread({}, containerOptions), {}, { ref: function ref(instance) { if (!hasExec) { hasExec = true; listMap.set(containerOptions.position || "top right", instance); resolve(instance || void 0); } } })), attach); }); }; exports.Toast = Toast; exports.ToastRemoveContext = ToastRemoveContext; exports.fetchListInstance = fetchListInstance; exports.listMap = listMap; //# sourceMappingURL=dep-e25b313c.js.map