@helpscout/hsds-react
Version:
React component library for Help Scout's Design System
108 lines (81 loc) • 3.74 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _lodash = _interopRequireDefault(require("lodash.isnil"));
var _getValidProps = _interopRequireDefault(require("@helpscout/react-utils/dist/getValidProps"));
var _ProgressBar = require("./ProgressBar.css");
var _jsxRuntime = require("react/jsx-runtime");
var ProgressBar = /*#__PURE__*/function (_React$PureComponent) {
(0, _inheritsLoose2.default)(ProgressBar, _React$PureComponent);
function ProgressBar() {
return _React$PureComponent.apply(this, arguments) || this;
}
var _proto = ProgressBar.prototype;
_proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {
var onChange = this.props.onChange;
var value = this.getValueAsPercent(nextProps.value);
onChange(value);
};
_proto.getValue = function getValue(val) {
var value = !(0, _lodash.default)(val) ? val : this.props.value;
var barValue = parseFloat("" + value);
var normalizedBarValue = barValue > 100 ? 100 : barValue < 0 ? 0 : barValue;
return normalizedBarValue;
};
_proto.getValueAsPercent = function getValueAsPercent(val) {
return this.getValue(val) + "%";
};
_proto.render = function render() {
var _this$props = this.props,
className = _this$props.className,
description = _this$props.description,
size = _this$props.size,
value = _this$props.value,
onChange = _this$props.onChange,
rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, ["className", "description", "size", "value", "onChange"]);
var componentClassName = (0, _classnames.default)('c-ProgressBar', size && "is-" + size, className);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ProgressBar.ProgressBarUI, (0, _extends2.default)({}, (0, _getValidProps.default)(rest), {
className: componentClassName,
role: "progressbar",
"aria-valuenow": Number(value),
"aria-valuemin": 0,
"aria-valuemax": 100,
"aria-valuetext": description,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ProgressBar.BarUI, {
className: "c-ProgressBar__bar",
width: this.getValueAsPercent(value)
})
}));
};
return ProgressBar;
}(_react.default.PureComponent);
function noop() {}
ProgressBar.defaultProps = {
'data-cy': 'ProgressBar',
onChange: noop,
value: 0,
size: 'md'
};
ProgressBar.propTypes = {
/** Custom class names to be added to the component. */
className: _propTypes.default.string,
/** Description of the progress bar (for accessibility). */
description: _propTypes.default.string,
/** Callback when component value updates. Returns value as percent. */
onChange: _propTypes.default.func,
/** Determines the size of the component height (lg: 10px, md: 6px, sm: 2px) */
size: _propTypes.default.oneOf(['sm', 'md', 'lg']),
/** Progress value to visualize in component. */
value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
/** Data attr for Cypress tests. */
'data-cy': _propTypes.default.string
};
var _default = ProgressBar;
exports.default = _default;