feat: add short number formatting option to number field (#12613)

resolve #11927
Add a new 'Short Number' option that disables decimals and resets the
value to 0 when selected.


https://github.com/user-attachments/assets/d3524115-e3ec-4a07-9dbf-e19d03cf65dd



https://github.com/user-attachments/assets/2f2b46d1-06d9-4a92-8f37-0291d46accab

---------

Co-authored-by: prastoin <paul@twenty.com>
This commit is contained in:
Naifer
2025-06-16 10:48:18 +01:00
committed by GitHub
parent 929586e4a9
commit a44ba2065d
8 changed files with 67 additions and 26 deletions

View File

@ -1,6 +1,7 @@
import { useNumberFieldDisplay } from '@/object-record/record-field/meta-types/hooks/useNumberFieldDisplay';
import { NumberDisplay } from '@/ui/field/display/components/NumberDisplay';
import { isDefined } from 'twenty-shared/utils';
import { formatAmount } from '~/utils/format/formatAmount';
import { formatNumber } from '~/utils/format/number';
export const NumberFieldDisplay = () => {
@ -13,7 +14,9 @@ export const NumberFieldDisplay = () => {
const value =
type === 'percentage'
? `${formatNumber(Number(fieldValue) * 100, decimals)}%`
: formatNumber(Number(fieldValue), decimals);
: type === 'shortNumber'
? formatAmount(Number(fieldValue))
: formatNumber(Number(fieldValue), decimals);
return <NumberDisplay value={value} decimals={decimals} />;
};

View File

@ -56,7 +56,12 @@ export type FieldDateMetadata = BaseFieldMetadata & {
settings?: FieldDateMetadataSettings;
};
export type FieldNumberVariant = 'number' | 'percentage';
export const FIELD_NUMBER_VARIANT = [
'number',
'percentage',
'shortNumber',
] as const;
export type FieldNumberVariant = (typeof FIELD_NUMBER_VARIANT)[number];
export type FieldNumberMetadata = BaseFieldMetadata & {
placeHolder: string;

View File

@ -1,6 +1,7 @@
import { FIELD_NUMBER_VARIANT } from '@/object-record/record-field/types/FieldMetadata';
import { z } from 'zod';
export const numberFieldDefaultValueSchema = z.object({
decimals: z.number().nullable(),
type: z.enum(['percentage', 'number']).nullable(),
type: z.enum(FIELD_NUMBER_VARIANT).nullable(),
});