UNPKG

fomantic-ui-react

Version:

Fomantic-UI React -- A React Component Library.

125 lines (106 loc) 4.38 kB
/** * fomantic-ui-react v0.0.1-alpha.10 * (c) 2022 FireLoong <fireloong@foxmail.com> * @license MIT */ import { _ as _defineProperty, a as _objectWithoutProperties } from '../_chunks/dep-9f1126c1.js'; import { _ as _slicedToArray } from '../_chunks/dep-dc9b74a1.js'; import classNames from 'classnames'; import React, { useState, useEffect, createElement } from 'react'; var _excluded = ["as", "indicating", "active", "progress", "centered", "className", "label", "percent", "autoSuccess", "children"]; 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(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 Progress = function Progress(_ref) { var _ref$as = _ref.as, as = _ref$as === void 0 ? "div" : _ref$as, indicating = _ref.indicating, active = _ref.active, progress = _ref.progress, centered = _ref.centered, className = _ref.className, label = _ref.label, _ref$percent = _ref.percent, percent = _ref$percent === void 0 ? 0 : _ref$percent, autoSuccess = _ref.autoSuccess, children = _ref.children, props = _objectWithoutProperties(_ref, _excluded); if (!as) { as = "div"; } var percentVal = function percentVal(per) { var value; if (per >= 0 && per <= 100) { value = per; } else if (per > 100) { value = 100; } else { value = 0; } return value; }; var _useState = useState(percentVal(percent)), _useState2 = _slicedToArray(_useState, 2), percents = _useState2[0], setPercents = _useState2[1]; var _useState3 = useState(0), _useState4 = _slicedToArray(_useState3, 2), percentNum = _useState4[0], setPercentNum = _useState4[1]; var _useState5 = useState(0), _useState6 = _slicedToArray(_useState5, 2), percentBefore = _useState6[0], setPercentBefore = _useState6[1]; useEffect(function () { setPercentBefore(percents); setPercents(percentVal(percent)); }, [percent]); useEffect(function () { var percentDiff = percents - percentBefore; var temp = percentBefore; var intervalFun = setInterval(function () { if (percentVal(percent) === temp) { clearInterval(intervalFun); } else { if (percentDiff > 0) { temp = temp + 1; } else if (percentDiff < 0) { temp = temp - 1; } setPercentNum(temp); } }, 300 / Math.abs(percentDiff)); }, [percents]); var percentStr = "".concat(percentNum, "%"); var labelElement = label && /* @__PURE__ */React.createElement("div", { className: "label" }, label.replaceAll("{percent}", percentNum.toString())); var progressStr = ""; if (progress === true) { progressStr = percentStr; } else if (typeof progress === "string") { progressStr = progress.replaceAll("{percent}", percentNum.toString()); } var progressElement = progress && /* @__PURE__ */React.createElement("div", { className: classNames("progress", { centered: centered }) }, progressStr); return /*#__PURE__*/createElement(as, _objectSpread({ className: classNames("ui", { indicating: indicating }, "progress", { active: active }, { success: percentNum === 100 && autoSuccess }, className), "data-percent": percent }, props), /* @__PURE__ */React.createElement(React.Fragment, null, /* @__PURE__ */React.createElement("div", { className: "bar", style: { width: percentStr } }, progressElement), labelElement)); }; Progress.displayName = "Progress"; export { Progress as default }; //# sourceMappingURL=Progress.js.map