UNPKG

fomantic-ui-react

Version:

Fomantic-UI React -- A React Component Library.

135 lines (112 loc) 4.96 kB
/** * fomantic-ui-react v0.0.1-alpha.10 * (c) 2022 FireLoong <fireloong@foxmail.com> * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var defineProperty = require('../_chunks/dep-6ab59a61.js'); var slicedToArray = require('../_chunks/dep-640599ea.js'); var objectWithoutProperties = require('../_chunks/dep-03754121.js'); var classNames = require('classnames'); var React = require('react'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames); var React__default = /*#__PURE__*/_interopDefaultLegacy(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._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; _ref.children; var props = objectWithoutProperties._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 = React.useState(percentVal(percent)), _useState2 = slicedToArray._slicedToArray(_useState, 2), percents = _useState2[0], setPercents = _useState2[1]; var _useState3 = React.useState(0), _useState4 = slicedToArray._slicedToArray(_useState3, 2), percentNum = _useState4[0], setPercentNum = _useState4[1]; var _useState5 = React.useState(0), _useState6 = slicedToArray._slicedToArray(_useState5, 2), percentBefore = _useState6[0], setPercentBefore = _useState6[1]; React.useEffect(function () { setPercentBefore(percents); setPercents(percentVal(percent)); }, [percent]); React.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__default["default"].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__default["default"].createElement("div", { className: classNames__default["default"]("progress", { centered: centered }) }, progressStr); return /*#__PURE__*/React.createElement(as, _objectSpread({ className: classNames__default["default"]("ui", { indicating: indicating }, "progress", { active: active }, { success: percentNum === 100 && autoSuccess }, className), "data-percent": percent }, props), /* @__PURE__ */React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */React__default["default"].createElement("div", { className: "bar", style: { width: percentStr } }, progressElement), labelElement)); }; Progress.displayName = "Progress"; exports["default"] = Progress; //# sourceMappingURL=Progress.js.map