UNPKG

rmwc

Version:

A thin React wrapper for Material Design (Web) Components

240 lines (200 loc) 9.49 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Slider = exports.SliderFocusRing = exports.SliderThumb = exports.SliderPinValueMarker = exports.SliderPin = exports.SliderThumbContainer = exports.SliderTrackMarkerContainer = exports.SliderTrack = exports.SliderTrackContainer = exports.SliderRoot = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = require('react'); var React = _interopRequireWildcard(_react); var _mdc = require('@material/slider/dist/mdc.slider'); var _Base = require('../Base'); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var SliderRoot = exports.SliderRoot = (0, _Base.simpleTag)({ displayName: 'SliderRoot', classNames: function classNames(props) { return ['mdc-slider', { 'mdc-slider--discrete': props.discrete, 'mdc-slider--display-markers': props.displayMarkers && props.discrete }]; }, consumeProps: ['discrete', 'displayMarkers'] }); var SliderTrackContainer = exports.SliderTrackContainer = (0, _Base.simpleTag)({ displayName: 'SliderTrackContainer', classNames: 'mdc-slider__track-container' }); var SliderTrack = exports.SliderTrack = (0, _Base.simpleTag)({ displayName: 'SliderTrack', classNames: 'mdc-slider__track' }); var SliderTrackMarkerContainer = exports.SliderTrackMarkerContainer = (0, _Base.simpleTag)({ displayName: 'SliderTrackMarkerContainer', classNames: 'mdc-slider__track-marker-container' }); var SliderThumbContainer = exports.SliderThumbContainer = (0, _Base.simpleTag)({ displayName: 'SliderThumbContainer', classNames: 'mdc-slider__thumb-container' }); var SliderPin = exports.SliderPin = (0, _Base.simpleTag)({ displayName: 'SliderPin', classNames: 'mdc-slider__pin' }); var SliderPinValueMarker = exports.SliderPinValueMarker = (0, _Base.simpleTag)({ displayName: 'SliderPinValueMarker', tag: 'span', classNames: 'mdc-slider__pin-value-marker' }); var SliderThumb = exports.SliderThumb = function SliderThumb() { return React.createElement( 'svg', { className: 'mdc-slider__thumb', width: '21', height: '21' }, React.createElement('circle', { cx: '10.5', cy: '10.5', r: '7.875' }) ); }; var SliderFocusRing = exports.SliderFocusRing = (0, _Base.simpleTag)({ displayName: 'SliderFocusRing', classNames: 'mdc-slider__focus-ring' }); var Slider = exports.Slider = function (_withFoundation) { _inherits(Slider, _withFoundation); function Slider() { _classCallCheck(this, Slider); return _possibleConstructorReturn(this, (Slider.__proto__ || Object.getPrototypeOf(Slider)).apply(this, arguments)); } _createClass(Slider, [{ key: 'syncWithProps', value: function syncWithProps(nextProps) { var _this2 = this; // value (0, _Base.syncFoundationProp)(nextProps.value, this.value, function () { return _this2.value = nextProps.value; }); // max (0, _Base.syncFoundationProp)(nextProps.max, this.max, function () { return _this2.max = nextProps.max !== undefined ? +nextProps.max : _this2.max; }); // min (0, _Base.syncFoundationProp)(nextProps.min, this.min, function () { return _this2.min = nextProps.min !== undefined ? +nextProps.min : _this2.min; }); // step (0, _Base.syncFoundationProp)(nextProps.step, this.step, function () { return _this2.step = nextProps.step !== undefined ? +nextProps.step : _this2.step; }); // disabled (0, _Base.syncFoundationProp)(nextProps.disabled, this.disabled, function () { return _this2.disabled = !!nextProps.disabled; }); // discrete (0, _Base.syncFoundationProp)(nextProps.discrete, this.discrete, function () { return _this2.discrete = !!nextProps.discrete; }); //eslint-disable-next-line eqeqeq if (this.discrete && this.foundation_ && this.foundation_.getStep() == 0) { this.step = 1; } // displayMarkers (0, _Base.syncFoundationProp)(nextProps.displayMarkers, this.displayMarkers, function () { _this2.displayMarkers = !!nextProps.displayMarkers; window.requestAnimationFrame(function () { return _this2.foundation_ && _this2.foundation_.setupTrackMarker(); }); }); } }, { key: 'render', value: function render() { var _props = this.props, value = _props.value, min = _props.min, max = _props.max, discrete = _props.discrete, displayMarkers = _props.displayMarkers, step = _props.step, disabled = _props.disabled, onChange = _props.onChange, onInput = _props.onInput, className = _props.className, children = _props.children, apiRef = _props.apiRef, rest = _objectWithoutProperties(_props, ['value', 'min', 'max', 'discrete', 'displayMarkers', 'step', 'disabled', 'onChange', 'onInput', 'className', 'children', 'apiRef']); var _foundationRefs = this.foundationRefs, root_ = _foundationRefs.root_, thumbContainer_ = _foundationRefs.thumbContainer_, track_ = _foundationRefs.track_, pinValueMarker_ = _foundationRefs.pinValueMarker_, trackMarkerContainer_ = _foundationRefs.trackMarkerContainer_; if (displayMarkers && !discrete) { console.warn('The \'displayMarkers\' prop on rmwc Slider will \n only work in conjunction with the \'discrete\' prop'); } var dataStep = step ? { 'data-step': step } : {}; return React.createElement( SliderRoot, Object.assign({ tabIndex: '0' //eslint-disable-next-line jsx-a11y/role-has-required-aria-props , role: 'slider', 'aria-valuemax': max, 'aria-valuenow': value, 'aria-label': 'Select Value', elementRef: root_, discrete: discrete, displayMarkers: displayMarkers }, disabled ? { 'aria-disabled': disabled } : {}, dataStep, rest), React.createElement( SliderTrackContainer, null, React.createElement(SliderTrack, { elementRef: track_ }), displayMarkers && React.createElement(SliderTrackMarkerContainer, { elementRef: trackMarkerContainer_ }) ), React.createElement( SliderThumbContainer, { elementRef: thumbContainer_ }, discrete && React.createElement( SliderPin, null, React.createElement(SliderPinValueMarker, { elementRef: pinValueMarker_ }) ), React.createElement(SliderThumb, null), React.createElement(SliderFocusRing, null) ), children ); } }, { key: 'discrete', get: function get() { return !!(this.foundation_ && this.foundation_.isDiscrete_); }, set: function set(isDiscrete) { if (this.foundation_) { this.foundation_.isDiscrete_ = isDiscrete; } } }, { key: 'displayMarkers', get: function get() { return !!this.foundation_ && this.foundation_.hasTrackMarker_; }, set: function set(isDisplayMarkers) { if (this.foundation_) { this.foundation_.hasTrackMarker_ = isDisplayMarkers; } } }]); return Slider; }((0, _Base.withFoundation)({ constructor: _mdc.MDCSlider, refs: ['root_', 'thumbContainer_', 'track_', 'pinValueMarker_', 'trackMarkerContainer_'], adapter: {} })); Object.defineProperty(Slider, 'displayName', { enumerable: true, writable: true, value: 'Slider' }); exports.default = Slider;