fomantic-ui-react
Version:
Fomantic-UI React -- A React Component Library.
277 lines (245 loc) • 10.8 kB
JavaScript
/**
* fomantic-ui-react v0.0.1-alpha.10
* (c) 2022 FireLoong <fireloong@foxmail.com>
* @license MIT
*/
;
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