@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
75 lines • 2.45 kB
JavaScript
import React from 'react';
import { extendPropsWithContext } from "../../../shared/component-helper.js";
import { getCurrencySymbol } from "../../number-format/NumberUtils.js";
import InputMaskedContext from "../InputMaskedContext.js";
import { isRequestingLocaleSupport, isRequestingNumberMask, handlePercentMask, handleCurrencyMask, handleNumberMask, handleThousandsSeparator, handleDecimalSeparator, fromJSON } from "../InputMaskedUtils.js";
import { useTranslation } from "./useTranslation.js";
export const useNumberMaskParams = () => {
var _currencyMask;
const {
props
} = React.useContext(InputMaskedContext);
const locale = useTranslation();
if (!isRequestingNumberMask(props)) {
return {
...fromJSON(props.maskOptions)
};
}
let {
numberMask,
currencyMask,
maskOptions
} = props;
const {
asNumber,
asPercent,
asCurrency,
value
} = props;
maskOptions = fromJSON(maskOptions);
numberMask = numberMask === true ? {} : fromJSON(numberMask);
currencyMask = currencyMask === true ? {} : fromJSON(currencyMask, {
currency: currencyMask
});
if (!((_currencyMask = currencyMask) !== null && _currencyMask !== void 0 && _currencyMask.currency)) {
delete currencyMask.currency;
}
if (isRequestingLocaleSupport(props)) {
const thousandsSeparatorSymbol = handleThousandsSeparator(locale);
const decimalSymbol = handleDecimalSeparator(locale);
if (asNumber || asPercent) {
numberMask = extendPropsWithContext(numberMask, null, {
decimalSymbol,
thousandsSeparatorSymbol
});
} else if (asCurrency) {
var _currencyMask2;
currencyMask = extendPropsWithContext(currencyMask, null, {
decimalSymbol,
thousandsSeparatorSymbol,
currency: getCurrencySymbol(locale, typeof asCurrency === 'string' ? asCurrency : null, (_currencyMask2 = currencyMask) === null || _currencyMask2 === void 0 ? void 0 : _currencyMask2.currencyDisplay, value)
});
}
}
let maskParams = null;
if (numberMask) {
maskParams = handleNumberMask({
maskOptions,
numberMask
});
if (asPercent) {
maskParams = handlePercentMask({
props,
locale,
maskParams
});
}
} else if (currencyMask) {
maskParams = handleCurrencyMask({
maskOptions,
currencyMask
});
}
return maskParams;
};
//# sourceMappingURL=useNumberMaskParams.js.map