UNPKG

@talend/react-components

Version:
91 lines (89 loc) 3.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _reactI18next = require("react-i18next"); var _constants = _interopRequireWildcard(require("../constants")); var _CircularProgressModule = _interopRequireDefault(require("./CircularProgress.module.scss")); var _translate = _interopRequireDefault(require("../translate")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (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 (const 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); } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const RADIUS = 20; const DIAMETER = 50; const CENTER_POSITION = 25; const CIRCUMFERENCE = Math.PI * (RADIUS * 2); function getCircleStyle(percent) { if (percent) { return { strokeDasharray: CIRCUMFERENCE, strokeDashoffset: (100 - percent) / 100 * CIRCUMFERENCE }; } return { strokeDasharray: CIRCUMFERENCE / 10, strokeDashoffset: 0 }; } /** * @param {object} props react props * @example <CircularProgress size="large" /> */ function CircularProgress({ size, light, percent, className, t }) { const classes = (0, _classnames.default)('tc-circular-progress', className, _CircularProgressModule.default.loader, { [_CircularProgressModule.default.loaderlight]: light, [_CircularProgressModule.default.animate]: !percent, [_CircularProgressModule.default.fixed]: percent, [_CircularProgressModule.default.small]: size === _constants.CIRCULAR_PROGRESS_SIZE.small, [_CircularProgressModule.default.default]: size === _constants.CIRCULAR_PROGRESS_SIZE.default, [_CircularProgressModule.default.large]: size === _constants.CIRCULAR_PROGRESS_SIZE.large }); const percentLabel = percent && t('CIRCULAR_PROGRESS_LOADING_PERCENT', { defaultValue: '{{percent}}%', percent }); return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", { focusable: "false", className: classes, viewBox: `0 0 ${DIAMETER} ${DIAMETER}`, "data-test": "circular-progress", "data-testid": "circular-progress", "aria-busy": "true", "aria-label": t('CIRCULAR_PROGRESS_LOADING', { defaultValue: 'Loading... {{percent}}', percent: percentLabel }), children: /*#__PURE__*/(0, _jsxRuntime.jsx)("circle", { className: _CircularProgressModule.default.path, r: RADIUS, cx: CENTER_POSITION, cy: CENTER_POSITION, fill: "none", style: getCircleStyle(percent) }) }); } CircularProgress.displayName = 'CircularProgress'; CircularProgress.propTypes = { className: _propTypes.default.string, size: _propTypes.default.oneOf(Object.keys(_constants.CIRCULAR_PROGRESS_SIZE).map(key => _constants.CIRCULAR_PROGRESS_SIZE[key])), light: _propTypes.default.bool, percent: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), t: _propTypes.default.func }; CircularProgress.defaultProps = { size: _constants.CIRCULAR_PROGRESS_SIZE.default, t: (0, _translate.default)() }; var _default = exports.default = (0, _reactI18next.withTranslation)(_constants.default)(CircularProgress); //# sourceMappingURL=CircularProgress.component.js.map