UNPKG

@material-ui/lab

Version:

Material-UI Lab - Incubator for Material-UI React components.

119 lines (99 loc) 3.12 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.styles = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var React = _interopRequireWildcard(require("react")); var _clsx = _interopRequireDefault(require("clsx")); var _styles = require("@material-ui/core/styles"); const styles = theme => (0, _styles.createStyles)({ pointer: { width: 2, backgroundColor: theme.palette.primary.main, position: 'absolute', left: 'calc(50% - 1px)', bottom: '50%', transformOrigin: 'center bottom 0px' }, animateTransform: { transition: theme.transitions.create(['transform', 'height']) }, thumb: { width: 4, height: 4, backgroundColor: theme.palette.primary.contrastText, borderRadius: '100%', position: 'absolute', top: -21, left: -15, border: `14px solid ${theme.palette.primary.main}`, boxSizing: 'content-box' }, noPoint: { backgroundColor: theme.palette.primary.main } }); exports.styles = styles; /** * @ignore - internal component. */ class ClockPointer extends React.Component { constructor(...args) { super(...args); this.state = { toAnimateTransform: false, // eslint-disable-next-line react/no-unused-state previousType: undefined }; this.getAngleStyle = () => { const { value, isInner, type } = this.props; const max = type === 'hours' ? 12 : 60; let angle = 360 / max * value; if (type === 'hours' && value > 12) { angle -= 360; // round up angle to max 360 degrees } return { height: isInner ? '26%' : '40%', transform: `rotateZ(${angle}deg)` }; }; } render() { const _this$props = this.props, { classes, hasSelected } = _this$props, other = (0, _objectWithoutPropertiesLoose2.default)(_this$props, ["classes", "hasSelected", "isInner", "type", "value"]); return /*#__PURE__*/React.createElement("div", (0, _extends2.default)({}, other, { style: this.getAngleStyle(), className: (0, _clsx.default)(classes.pointer, this.state.toAnimateTransform && classes.animateTransform) }), /*#__PURE__*/React.createElement("div", { className: (0, _clsx.default)(classes.thumb, hasSelected && classes.noPoint) })); } } ClockPointer.getDerivedStateFromProps = (nextProps, state) => { if (nextProps.type !== state.previousType) { return { toAnimateTransform: true, previousType: nextProps.type }; } return { toAnimateTransform: false, previousType: nextProps.type }; }; var _default = (0, _styles.withStyles)(styles, { name: 'MuiClockPointer' })(ClockPointer); exports.default = _default;