Skip to content

Commit 80bd0cf

Browse files
authored
Merge pull request #992 from buildo/991-expose_formatoptions_of_numberinput
#991: Expose `formatOptions` of `NumberInput`
2 parents 6105137 + d0f135f commit 80bd0cf

File tree

4 files changed

+31
-4
lines changed

4 files changed

+31
-4
lines changed

packages/bento-design-system/src/NumberField/NumberField.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import { BaseNumberInput } from "./BaseNumberInput";
1111
type Props = FieldProps<number | undefined, number> &
1212
BaseNumberProps &
1313
FormatProps &
14-
Pick<NumberFieldStateOptions, "minValue" | "maxValue" | "step">;
14+
Pick<NumberFieldStateOptions, "minValue" | "maxValue" | "step" | "formatOptions">;
1515

1616
export function NumberField(props: Props) {
1717
const { locale } = useLocale();
18-
const formatOptions = useFormatOptions(props);
18+
const defaultFormatOptions = useFormatOptions(props);
19+
const formatOptions = props.formatOptions ?? defaultFormatOptions;
1920
const state = useNumberFieldState({ ...props, locale, formatOptions });
2021
const inputRef = useRef<HTMLInputElement>(null);
2122

packages/bento-design-system/src/NumberField/NumberInput.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ type Props = AtLeast<Pick<HTMLAttributes<HTMLInputElement>, "aria-label" | "aria
1616
BaseNumberProps & {
1717
validationState: "valid" | "invalid";
1818
} & FormatProps &
19-
Pick<NumberFieldStateOptions, "minValue" | "maxValue" | "step">;
19+
Pick<NumberFieldStateOptions, "minValue" | "maxValue" | "step" | "formatOptions">;
2020

2121
export function NumberInput(props: Props) {
2222
const { locale } = useLocale();
23-
const formatOptions = useFormatOptions(props);
23+
const defaultFormatOptions = useFormatOptions(props);
24+
const formatOptions = props.formatOptions ?? defaultFormatOptions;
2425
const state = useNumberFieldState({ ...props, locale, formatOptions });
2526
const inputRef = useRef<HTMLInputElement>(null);
2627

packages/bento-design-system/stories/Components/Inputs/NumberInput.stories.tsx

+11
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,14 @@ export const KindAndRightAccessory = {
7777
currency: "EUR",
7878
},
7979
} satisfies Story;
80+
81+
export const CustomFormatter = {
82+
args: {
83+
value: 0.123456,
84+
name: "precise-number",
85+
formatOptions: {
86+
minimumFractionDigits: 6,
87+
maximumFractionDigits: 6,
88+
},
89+
},
90+
};

packages/bento-design-system/stories/Components/NumberField.stories.tsx

+14
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,17 @@ export const KindAndRightAccessory = {
7979
currency: "EUR",
8080
},
8181
} satisfies Story;
82+
83+
export const CustomFormatter = {
84+
args: {
85+
value: 0.123456,
86+
name: "precise-number",
87+
label: "A very precise number",
88+
placeholder: "A very precise number",
89+
assistiveText: "A very precise number with 6 decimal digits",
90+
formatOptions: {
91+
minimumFractionDigits: 6,
92+
maximumFractionDigits: 6,
93+
},
94+
},
95+
};

0 commit comments

Comments
 (0)