@itwin/quantity-formatting-react
Version:
React components and utilities for quantity formatting
45 lines • 2.47 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
import * as React from "react";
import { Format, FormatTraits, getTraitString } from "@itwin/core-quantity";
import { Checkbox, Label } from "@itwin/itwinui-react";
import { useTranslation } from "../../../useTranslation.js";
import "../FormatPanel.scss";
/** Component to show/edit Keep Decimal Point setting.
* @internal
*/
export function KeepDecimalPoint(props) {
const { formatProps, onChange } = props;
const { translate } = useTranslation();
const keepDecimalPointId = React.useId();
const setFormatTrait = React.useCallback((trait, setActive) => {
const traitStr = getTraitString(trait);
let formatTraits = [traitStr];
if (setActive) {
// setting trait
if (formatProps.formatTraits) {
const traits = Array.isArray(formatProps.formatTraits)
? formatProps.formatTraits
: formatProps.formatTraits.split(/,|;|\|/);
if (!traits.find((traitEntry) => traitStr === traitEntry)) {
formatTraits = [...traits, traitStr];
}
}
}
else {
// clearing trait
if (!formatProps.formatTraits)
return;
const traits = Array.isArray(formatProps.formatTraits)
? formatProps.formatTraits
: formatProps.formatTraits.split(/,|;|\|/);
formatTraits = traits.filter((traitEntry) => traitEntry !== traitStr);
}
onChange({ ...formatProps, formatTraits });
}, [formatProps, onChange]);
return (_jsxs("div", { className: "quantityFormat--formatInlineRow", children: [_jsx(Label, { displayStyle: "inline", htmlFor: keepDecimalPointId, children: translate("QuantityFormat:labels.keepDecimalPointLabel") }), _jsx(Checkbox, { id: keepDecimalPointId, checked: Format.isFormatTraitSetInProps(formatProps, FormatTraits.KeepDecimalPoint), onChange: (e) => setFormatTrait(FormatTraits.KeepDecimalPoint, e.target.checked) })] }));
}
//# sourceMappingURL=KeepDecimalPoint.js.map