@activecollab/components
Version:
ActiveCollab Components
90 lines • 3.86 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
const _excluded = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "step", "thousandSeparator", "value", "onSave", "onCancel", "className", "allowEmptyValue", "onEnterKeyPress", "onClick", "onChange", "trimDecimals", "min", "max", "invalid"];
import React, { useMemo, useRef } from "react";
import { useInputNumber } from "../../hooks";
import { numberWithSeparator, useForkRef } from "../../utils";
import { EditableContent } from "../EditableContent";
import { Tooltip } from "../Tooltip";
export const EditableCurrency = /*#__PURE__*/React.forwardRef((_ref, ref) => {
let _ref$decimalLength = _ref.decimalLength,
decimalLength = _ref$decimalLength === void 0 ? 2 : _ref$decimalLength,
_ref$decimalSeparator = _ref.decimalSeparator,
decimalSeparator = _ref$decimalSeparator === void 0 ? "." : _ref$decimalSeparator,
_ref$disableAbbreviat = _ref.disableAbbreviation,
disableAbbreviation = _ref$disableAbbreviat === void 0 ? false : _ref$disableAbbreviat,
disabled = _ref.disabled,
_ref$disableMacros = _ref.disableMacros,
disableMacros = _ref$disableMacros === void 0 ? false : _ref$disableMacros,
_ref$step = _ref.step,
step = _ref$step === void 0 ? 1 : _ref$step,
_ref$thousandSeparato = _ref.thousandSeparator,
thousandSeparator = _ref$thousandSeparato === void 0 ? "," : _ref$thousandSeparato,
defaultValue = _ref.value,
onSave = _ref.onSave,
onCancel = _ref.onCancel,
className = _ref.className,
allowEmptyValue = _ref.allowEmptyValue,
externalEnterKeyPress = _ref.onEnterKeyPress,
externalOnClick = _ref.onClick,
externalOnChange = _ref.onChange,
_ref$trimDecimals = _ref.trimDecimals,
trimDecimals = _ref$trimDecimals === void 0 ? true : _ref$trimDecimals,
min = _ref.min,
max = _ref.max,
invalid = _ref.invalid,
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
const inputRef = useRef(null);
const handleRef = useForkRef(ref, inputRef);
const _useInputNumber = useInputNumber({
decimalLength,
decimalSeparator,
disableAbbreviation,
disableMacros,
step,
thousandSeparator,
value: defaultValue,
onSave,
allowEmptyValue,
onCancel,
onChange: externalOnChange,
onEnterKeyPress: externalEnterKeyPress,
onClick: externalOnClick,
trimDecimals,
min,
max,
shortenThreshold: 10000
}, inputRef),
value = _useInputNumber.value,
onBlur = _useInputNumber.onBlur,
onKeyDown = _useInputNumber.onKeyDown,
onChange = _useInputNumber.onChange,
onClick = _useInputNumber.onClick,
onDoubleClick = _useInputNumber.onDoubleClick,
onFocus = _useInputNumber.onFocus,
focused = _useInputNumber.focused,
unformattedValue = _useInputNumber.unformattedValue;
const formattedValue = useMemo(() => {
return focused ? value : numberWithSeparator(value != null ? value : "", "", decimalSeparator);
}, [focused, value, decimalSeparator]);
return /*#__PURE__*/React.createElement(Tooltip, {
title: numberWithSeparator(unformattedValue != null ? unformattedValue : "", thousandSeparator, decimalSeparator),
disable: focused
}, /*#__PURE__*/React.createElement(EditableContent, {
disabled: disabled,
ref: handleRef,
className: className,
invalid: invalid,
inputProps: _extends({
value: formattedValue,
onBlur: onBlur,
onChange: onChange,
onKeyDown: onKeyDown,
onClick: onClick,
onFocus: onFocus,
onDoubleClick: onDoubleClick
}, rest)
}));
});
EditableCurrency.displayName = "EditableCurrency";
//# sourceMappingURL=EditableCurrency.js.map