UNPKG

cloudhubui

Version:

Various components to use in react projects

289 lines (267 loc) 9.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _styles = require("@material-ui/styles"); var _Slider = _interopRequireDefault(require("@material-ui/core/Slider")); var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip")); var _Block = _interopRequireDefault(require("./Block")); var _ThemeContext = _interopRequireDefault(require("./theme/ThemeContext")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function ValueLabelComponent(props) { var children = props.children, open = props.open, value = props.value; return /*#__PURE__*/_react.default.createElement(_Tooltip.default, { open: open, enterTouchDelay: 0, placement: "top", title: value }, children); } ValueLabelComponent.propTypes = { children: _propTypes.default.element.isRequired, open: _propTypes.default.bool.isRequired, value: _propTypes.default.number.isRequired }; var CustomizedSlider = function CustomizedSlider(_ref) { var secondary = _ref.secondary, color = _ref.color, ios = _ref.ios, pretto = _ref.pretto, airbnb = _ref.airbnb, Min = _ref.Min, Max = _ref.Max, marks = _ref.marks, value = _ref.value, input = _ref.input, onChange = _ref.onChange, title = _ref.title, valueLabelDisplay = _ref.valueLabelDisplay, defaultValue = _ref.defaultValue, ThumbComponent = _ref.ThumbComponent, ValueLabelComponent = _ref.ValueLabelComponent, name = _ref.name, onChangeCommitted = _ref.onChangeCommitted, minHeight = _ref.minHeight, dense = _ref.dense, hideThumb = _ref.hideThumb, props = _objectWithoutProperties(_ref, ["secondary", "color", "ios", "pretto", "airbnb", "Min", "Max", "marks", "value", "input", "onChange", "title", "valueLabelDisplay", "defaultValue", "ThumbComponent", "ValueLabelComponent", "name", "onChangeCommitted", "minHeight", "dense", "hideThumb"]); var _React$useContext = _react.default.useContext(_ThemeContext.default), sizes = _React$useContext.sizes; var iOSBoxShadow = '0 3px 1px rgba(0,0,0,0.1),0 4px 8px rgba(0,0,0,0.13),0 0 0 1px rgba(0,0,0,0.02)'; var IOSSlider = (0, _styles.withStyles)(function () { return { root: { color: color || '#3880ff', height: 2, padding: '15px 0' }, thumb: { height: 28, width: 28, backgroundColor: '#fff', boxShadow: iOSBoxShadow, marginTop: -14, marginLeft: -14, '&:focus, &:hover, &$active': { boxShadow: '0 3px 1px rgba(0,0,0,0.1),0 4px 8px rgba(0,0,0,0.3),0 0 0 1px rgba(0,0,0,0.02)', // Reset on touch devices, it doesn't add specificity '@media (hover: none)': { boxShadow: iOSBoxShadow } } }, active: {}, valueLabel: { left: 'calc(-50% + 11px)', top: -22, '& *': { background: 'transparent', color: '#000' } }, track: { height: 2 }, rail: { height: 2, opacity: 0.5, backgroundColor: '#bfbfbf' }, mark: { backgroundColor: '#bfbfbf', height: 8, width: 1, marginTop: -3 }, markActive: { opacity: 1, backgroundColor: 'currentColor' } }; })(_Slider.default); var PrettoSlider = (0, _styles.withStyles)(function () { return { root: { color: color || '#52af77', height: 8 }, thumb: { height: hideThumb ? 0 : 24, width: hideThumb ? 0 : 24, backgroundColor: '#fff', border: hideThumb ? '' : '2px solid currentColor', marginTop: hideThumb ? 0 : -8, marginLeft: hideThumb ? 0 : -12, '&:focus, &:hover, &$active': { boxShadow: 'inherit' } }, active: {}, valueLabel: { left: 'calc(-50% + 4px)' }, track: { height: 8, borderRadius: 4 }, rail: { height: 8, borderRadius: 4 } }; })(_Slider.default); var AirbnbSlider = (0, _styles.withStyles)(function () { return { root: { color: color || '#3a8589', height: 3, padding: '13px 0' }, thumb: { height: 27, width: 27, backgroundColor: '#fff', border: '1px solid currentColor', marginTop: -12, marginLeft: -13, boxShadow: '#ebebeb 0px 2px 2px', '&:focus, &:hover, &$active': { boxShadow: '#ccc 0px 2px 3px 1px' }, '& .bar': { // display: inline-block !important; height: 9, width: 1, backgroundColor: 'currentColor', marginLeft: 1, marginRight: 1 } }, active: {}, valueLabel: { left: 'calc(-50% + 4px)' }, track: { height: 3 }, rail: { color: '#d8d8d8', opacity: 1, height: 3 } }; })(_Slider.default); function AirbnbThumbComponent(props) { return /*#__PURE__*/_react.default.createElement("span", props, /*#__PURE__*/_react.default.createElement("span", { className: "bar" }), /*#__PURE__*/_react.default.createElement("span", { className: "bar" }), /*#__PURE__*/_react.default.createElement("span", { className: "bar" })); } var changeValue = function changeValue(event, val) { if (input && typeof input.onChange === 'function') { input.onChange(val); } if (typeof onChange === 'function') { onChange(val); } }; return /*#__PURE__*/_react.default.createElement(_Block.default, { middle: true, style: { width: '100%', paddingTop: dense ? 0 : sizes.padding, zIndex: 0, minHeight: dense ? 'auto' : 100 } }, /*#__PURE__*/_react.default.createElement(_Block.default, null, title), /*#__PURE__*/_react.default.createElement(_Block.default, { style: { marginTop: dense ? 0 : sizes.doubleBaseMargin * 2 } }, ios && /*#__PURE__*/_react.default.createElement(IOSSlider, _extends({ name: input ? input.name : name, color: secondary ? 'secondary' : 'primary', defaultValue: defaultValue || (input ? input.value : value), min: Min || 0, max: Max || 100, marks: marks, value: value, valueLabelDisplay: valueLabelDisplay || 'auto', onChange: changeValue, onChangeCommitted: onChangeCommitted }, props)), pretto && /*#__PURE__*/_react.default.createElement(PrettoSlider, _extends({ name: input ? input.name : name, color: secondary ? 'secondary' : 'primary', min: Min || 0, max: Max || 100, defaultValue: defaultValue || (input ? input.value : value), marks: marks, value: value, valueLabelDisplay: valueLabelDisplay || 'auto', onChange: changeValue, onChangeCommitted: onChangeCommitted }, props)), airbnb && /*#__PURE__*/_react.default.createElement(AirbnbSlider, _extends({ name: input ? input.name : name, color: secondary ? 'secondary' : 'primary', ThumbComponent: AirbnbThumbComponent, defaultValue: defaultValue || (input ? input.value : value), min: Min || 0, max: Max || 100, marks: marks, value: value, valueLabelDisplay: valueLabelDisplay || 'auto', onChange: changeValue, onChangeCommitted: onChangeCommitted }, props)), !airbnb && !pretto && !ios && /*#__PURE__*/_react.default.createElement(_Slider.default, _extends({ name: input ? input.name : name, color: secondary ? 'secondary' : 'primary', min: Min || 0, max: Max || 100, marks: marks, defaultValue: defaultValue || (input ? input.value : value), value: input ? input.value : value, valueLabelDisplay: valueLabelDisplay || 'auto', onChange: changeValue, onChangeCommitted: onChangeCommitted }, props)))); }; _Slider.default.defaultProps = { onChange: function onChange() {}, input: { value: null, onChange: function onChange() {} }, onChangeCommitted: function onChangeCommitted() {} }; var _default = CustomizedSlider; exports.default = _default;