UNPKG

wix-style-react

Version:
86 lines (80 loc) 2.89 kB
import _extends from "@babel/runtime/helpers/extends"; import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { Handle } from 'rc-slider'; import { withFocusable } from "wix-ui-core/dist/es/src/hocs/Focusable/FocusableHOC"; import { dataHooks } from './constants'; import { st, classes } from './Slider.st.css'; import Tooltip from '../Tooltip'; var SliderHandle = function SliderHandle(_ref) { var tooltipValue = _ref.tooltipValue, className = _ref.className, focusableOnFocus = _ref.focusableOnFocus, focusableOnBlur = _ref.focusableOnBlur, disabled = _ref.disabled, handleProps = _ref.handleProps, displayTooltip = _ref.displayTooltip, index = _ref.index, dataHook = _ref.dataHook, direction = _ref.direction; var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), hovered = _useState2[0], setHovered = _useState2[1]; var handleMouseEnter = function handleMouseEnter() { setHovered(true); }; var handleMouseLeave = function handleMouseLeave() { setHovered(false); }; var tooltipDataHook = dataHook ? "".concat(dataHook, "-").concat(dataHooks.sliderTooltip, "-").concat(index) : "".concat(dataHooks.sliderTooltip, "-").concat(index); return /*#__PURE__*/React.createElement("div", { className: st(classes.sliderHandleWrapper, {}, className), onBlur: focusableOnBlur }, /*#__PURE__*/React.createElement(Handle, _extends({}, handleProps, { vertical: direction === 'vertical', onFocus: focusableOnFocus, className: st(classes.sliderHandle, { disabled: disabled }), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, "data-hook": dataHooks.sliderHandle }), /*#__PURE__*/React.createElement(Tooltip, { className: classes.sliderHandleTooltip, disabled: !displayTooltip || disabled || !tooltipValue, content: tooltipValue, moveBy: { y: 3 }, dataHook: tooltipDataHook }, /*#__PURE__*/React.createElement("div", { className: st(classes.sliderThumb, { hovered: hovered }), "data-hook": dataHooks.sliderThumb })))); }; SliderHandle.propTypes = { disabled: PropTypes.bool, displayTooltip: PropTypes.bool, tooltipValue: PropTypes.string, index: PropTypes.number, dataHook: PropTypes.string, handleProps: PropTypes.shape({ ref: PropTypes.func.isRequired, offset: PropTypes.number.isRequired, min: PropTypes.number.isRequired, max: PropTypes.number.isRequired, value: PropTypes.number.isRequired, reverse: PropTypes.bool, ariaLabel: PropTypes.string }), direction: PropTypes.oneOf(['horizontal', 'vertical']) }; SliderHandle.defaultProps = { displayTooltip: true, reverse: false }; export default withFocusable(SliderHandle);