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:
@ -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} />;
|
||||
};
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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(),
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user