@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
55 lines (54 loc) • 2.09 kB
JavaScript
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const jsxRuntime = require("react/jsx-runtime");
const React = require("react");
const material = require("@mui/material");
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
const icons = require("../icons.cjs");
const utils = require("../Input/utils.cjs");
const NumberInput_styles = require("./NumberInput.styles.cjs");
const Adornment = require("../FormElement/Adornment/Adornment.cjs");
const Input = require("../Input/Input.cjs");
const HvNumberInput = React.forwardRef(function HvNumberInput2(props, ref) {
const {
classes: classesProp,
className,
readOnly,
...others
} = uikitReactUtils.useDefaultProps("HvNumberInput", props);
const { classes, cx } = NumberInput_styles.useClasses(classesProp);
const inputRef = React.useRef(null);
const forkedRef = material.useForkRef(ref, inputRef);
const buttons = React.useMemo(() => {
const handleIncrease = () => {
if (inputRef.current) {
inputRef.current.stepUp();
utils.changeInputValue(inputRef.current, inputRef.current.value);
}
};
const handleDecrease = () => {
if (inputRef.current) {
inputRef.current.stepDown();
utils.changeInputValue(inputRef.current, inputRef.current.value);
}
};
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
/* @__PURE__ */ jsxRuntime.jsx(Adornment.HvAdornment, { icon: /* @__PURE__ */ jsxRuntime.jsx(icons.HvIcon, { name: "Remove" }), onClick: handleDecrease }),
/* @__PURE__ */ jsxRuntime.jsx(Adornment.HvAdornment, { icon: /* @__PURE__ */ jsxRuntime.jsx(icons.HvIcon, { name: "Add" }), onClick: handleIncrease })
] });
}, []);
return /* @__PURE__ */ jsxRuntime.jsx(
Input.HvInput,
{
ref: forkedRef,
type: "number",
className: cx(classes.root, className),
endAdornment: !readOnly && buttons,
classes,
readOnly,
disableClear: true,
...others
}
);
});
exports.HvNumberInput = HvNumberInput;