slider-np
Version:
this is a range slider for positive and negative value
114 lines (106 loc) • 3.86 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
const SliderNP = ({
value,
scaleColor,
leftScaleColor,
rightScaleColor,
pointerSize,
pointerColor,
pointerColorRange,
sliderWidth,
gapBetween,
valueColorAuto
}) => {
const [hoverValue, setHoverValue] = React.useState(null); // State variable for hover value
const [sValue, setSValue] = React.useState(null); // State variable for sValue
const [textColor, setTextColor] = React.useState(null); // State variable for sValue
React.useEffect(() => {
const checkSValue = () => {
if (value === undefined || value < -10 || value > 10) {
console.log("SliderPN: Slider_value should be between -10 and 10", value);
return 50;
}
return 50 + value / 2 * 10;
};
const calculatedSValue = checkSValue();
setSValue(calculatedSValue); // Store the sValue in state
}, [value]);
React.useEffect(() => {
if (pointerColorRange) {
if (sValue === 50) {
pointerColor = "#000"; // Set black color when sValue is 50
} else {
pointerColor = sValue > 50 ? `rgb(0, ${148 + (sValue - 50) * 2}, 0)` : `rgb(${155 - (sValue - 50) * 2}, 0, 0)`;
}
}
let fontColorHover = "";
if (valueColorAuto) {
if (sValue === 50) {
fontColorHover = "#000"; // Set black color when sValue is 50
} else {
fontColorHover = sValue > 50 ? `rgb(0, ${148 + (sValue - 50) * 2}, 0)` : `rgb(${155 - (sValue - 50) * 2}, 0, 0)`;
}
}
setTextColor(fontColorHover);
const sliderPointer = document.getElementById("sliderPointer");
const scale = document.getElementById("scale");
if (sliderPointer) {
sliderPointer.style.left = `${sValue}%`;
sliderPointer.style.color = pointerColor;
sliderPointer.style.fontSize = pointerSize;
}
if (scale) {
scale.style.gap = gapBetween;
}
}, [sValue, pointerColorRange, pointerSize, scaleColor, leftScaleColor, rightScaleColor, gapBetween, pointerColor]);
const sliderPointerStyle = {
left: `${sValue}%`
};
const sliderPnCntStyle = {
width: sliderWidth
};
const leftScaleStyle = {
backgroundColor: scaleColor ? scaleColor : leftScaleColor
};
const rightScaleStyle = {
backgroundColor: scaleColor ? scaleColor : rightScaleColor
};
return /*#__PURE__*/React__default["default"].createElement("div", {
className: "slider_pn"
}, /*#__PURE__*/React__default["default"].createElement("div", {
className: "slider_pn_cnt",
style: sliderPnCntStyle
}, /*#__PURE__*/React__default["default"].createElement("div", {
className: "slider_pn_scale"
}, /*#__PURE__*/React__default["default"].createElement("div", {
id: "scale",
className: "scale"
}, /*#__PURE__*/React__default["default"].createElement("span", {
className: "left_scale",
id: "leftScale",
style: leftScaleStyle
}), /*#__PURE__*/React__default["default"].createElement("span", {
className: "right_scale",
id: "rightScale",
style: rightScaleStyle
}))), /*#__PURE__*/React__default["default"].createElement("div", {
className: "slider_pn_pointer"
}, /*#__PURE__*/React__default["default"].createElement("span", {
id: "sliderPointer",
style: sliderPointerStyle,
"data-type": "\u25B2 ",
onMouseEnter: () => setHoverValue(sValue),
onMouseLeave: () => setHoverValue(null)
}), hoverValue !== null && /*#__PURE__*/React__default["default"].createElement("article", {
className: "hover_value",
style: {
left: `${sValue}%`,
color: textColor
}
}, sValue))));
};
exports.SliderNP = SliderNP;