@wix/design-system
Version:
@wix/design-system
178 lines (177 loc) • 8.43 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
exports.__esModule = true;
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _system = require("@wix/wix-ui-icons-common/system");
var _wixUiIconsCommon = require("@wix/wix-ui-icons-common");
var _Tooltip = _interopRequireDefault(require("../Tooltip"));
var _CircularProgressBarSt = require("./CircularProgressBar.st.css.js");
var _constants = require("./constants");
var _CircularProgressBarCore = require("./CircularProgressBarCore");
var _ProgressLabel = require("./CircularProgressBarCore/ProgressLabel");
var _WixDesignSystemIconThemeProvider = require("../WixDesignSystemIconThemeProvider");
var _excluded = ["size", "skin", "labelPlacement", "label", "value", "dataHook", "error", "errorMessage", "className", "light"];
var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/CircularProgressBar/CircularProgressBar.jsx",
_this = void 0;
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); }
// This is a workaround for tokens to work with JS based solution, it has drawbacks:
// 1. it's not reactive (if token changes, UI won't update)
// 2. it's checking for css vars loaded on body only
var extractSizeFromCSSVariable = function extractSizeFromCSSVariable(variableName, element, fallback) {
var cssValue = getComputedStyle(element).getPropertyValue(variableName).trim();
if (cssValue) {
var numericValue = parseFloat(cssValue);
return !isNaN(numericValue) ? numericValue : fallback;
}
return fallback;
};
var CircularProgressBar = function CircularProgressBar(_ref) {
var _ref$size = _ref.size,
size = _ref$size === void 0 ? 'medium' : _ref$size,
_ref$skin = _ref.skin,
skin = _ref$skin === void 0 ? 'standard' : _ref$skin,
_ref$labelPlacement = _ref.labelPlacement,
labelPlacement = _ref$labelPlacement === void 0 ? 'bottom' : _ref$labelPlacement,
label = _ref.label,
value = _ref.value,
dataHook = _ref.dataHook,
error = _ref.error,
errorMessage = _ref.errorMessage,
className = _ref.className,
light = _ref.light,
restProps = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
var icons = (0, _WixDesignSystemIconThemeProvider.useIcons)('CircularProgressBar', {
StatusCompleteFilled: _wixUiIconsCommon.StatusCompleteFilled,
CircleLoaderCheckSmall: _system.CircleLoaderCheckSmall,
CircleLoaderCheck: _system.CircleLoaderCheck,
StatusAlertFilled: _wixUiIconsCommon.StatusAlertFilled,
FormFieldErrorSmall: _system.FormFieldErrorSmall,
FormFieldError: _system.FormFieldError
});
var sizeToSuccessIcon = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _constants.Size.tiny, icons.StatusCompleteFilled), _constants.Size.small, icons.CircleLoaderCheckSmall), _constants.Size.medium, icons.CircleLoaderCheck), _constants.Size.large, icons.CircleLoaderCheck);
var sizeToErrorIcon = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _constants.Size.tiny, /*#__PURE__*/_react["default"].createElement(icons.StatusAlertFilled, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 65,
columnNumber: 18
}
})), _constants.Size.small, /*#__PURE__*/_react["default"].createElement(icons.FormFieldErrorSmall, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 66,
columnNumber: 19
}
})), _constants.Size.medium, /*#__PURE__*/_react["default"].createElement(icons.FormFieldError, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 67,
columnNumber: 20
}
})), _constants.Size.large, /*#__PURE__*/_react["default"].createElement(icons.FormFieldError, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 68,
columnNumber: 19
}
}));
var _useState = (0, _react.useState)(_constants.sizesMap),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
dynamicSizesMap = _useState2[0],
setDynamicSizesMap = _useState2[1];
var rootRef = (0, _react.useRef)(null);
(0, _react.useLayoutEffect)(function () {
var newSizesMap = {
tiny: extractSizeFromCSSVariable('--wds-circular-progress-bar-size-tiny', rootRef.current, _constants.sizesMap.tiny),
small: extractSizeFromCSSVariable('--wds-circular-progress-bar-size-small', rootRef.current, _constants.sizesMap.small),
medium: extractSizeFromCSSVariable('--wds-circular-progress-bar-size-medium', rootRef.current, _constants.sizesMap.medium),
large: extractSizeFromCSSVariable('--wds-circular-progress-bar-size-large', rootRef.current, _constants.sizesMap.large)
};
setDynamicSizesMap(newSizesMap);
}, []);
var renderSuccessIcon = function renderSuccessIcon(size) {
var IconToRender = sizeToSuccessIcon[size];
return /*#__PURE__*/_react["default"].createElement(IconToRender, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 103,
columnNumber: 12
}
});
};
var renderProgressLabel = function renderProgressLabel() {
return /*#__PURE__*/_react["default"].createElement(_ProgressLabel.ProgressLabel, {
size: size,
value: value,
"data-skin": skin,
label: label,
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 107,
columnNumber: 5
}
});
};
var renderProgressBar = function renderProgressBar() {
return /*#__PURE__*/_react["default"].createElement(_CircularProgressBarCore.CircularProgressBarCore, (0, _extends2["default"])({
className: (0, _CircularProgressBarSt.st)(_CircularProgressBarSt.classes.progressBar, {
light: light,
size: size,
skin: skin
})
}, restProps, {
value: value,
label: label,
error: error,
errorMessage: errorMessage,
labelPlacement: labelPlacement,
"data-hook": _constants.dataHooks.circularProgressBar,
size: dynamicSizesMap[size],
"data-size": size,
"data-skin": skin,
successIcon: renderSuccessIcon(size),
errorIcon: sizeToErrorIcon[size],
renderProgressLabel: renderProgressLabel,
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 112,
columnNumber: 7
}
}));
};
return /*#__PURE__*/_react["default"].createElement("div", {
ref: rootRef,
"data-hook": dataHook,
className: (0, _CircularProgressBarSt.st)(_CircularProgressBarSt.classes.root, className),
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 132,
columnNumber: 5
}
}, error && errorMessage ? /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
className: _CircularProgressBarSt.classes.tooltip,
content: errorMessage,
dataHook: _constants.dataHooks.tooltip,
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 138,
columnNumber: 9
}
}, renderProgressBar()) : renderProgressBar());
};
CircularProgressBar.displayName = 'CircularProgressBar';
var _default = exports["default"] = CircularProgressBar;