feat: ability to switch currency format (#12542)
Fixes #11927 I have added 'format' in the zod schema of currency, and for using it, I am separately passing 'format' to 'currencyDisplay.' The feature is working correctly. --------- Co-authored-by: prastoin <paul@twenty.com> Co-authored-by: Paul Rastoin <45004772+prastoin@users.noreply.github.com>
This commit is contained in:
@ -1,9 +1,9 @@
|
||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||
import { FieldCurrencyValue } from '@/object-record/record-field/types/FieldMetadata';
|
||||
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||
import { convertCurrencyMicrosToCurrencyAmount } from '~/utils/convertCurrencyToCurrencyMicros';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
export const useExportProcessRecordsForCSV = (objectNameSingular: string) => {
|
||||
const { objectMetadataItem } = useObjectMetadataItem({
|
||||
|
||||
@ -2,7 +2,12 @@ import { useCurrencyFieldDisplay } from '@/object-record/record-field/meta-types
|
||||
import { CurrencyDisplay } from '@/ui/field/display/components/CurrencyDisplay';
|
||||
|
||||
export const CurrencyFieldDisplay = () => {
|
||||
const { fieldValue } = useCurrencyFieldDisplay();
|
||||
const { fieldValue, fieldDefinition } = useCurrencyFieldDisplay();
|
||||
|
||||
return <CurrencyDisplay currencyValue={fieldValue} />;
|
||||
return (
|
||||
<CurrencyDisplay
|
||||
currencyValue={fieldValue}
|
||||
fieldDefinition={fieldDefinition}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
@ -2,12 +2,21 @@ import { useContext } from 'react';
|
||||
|
||||
import { useRecordFieldValue } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext';
|
||||
|
||||
import { assertFieldMetadata } from '@/object-record/record-field/types/guards/assertFieldMetadata';
|
||||
import { isFieldCurrency } from '@/object-record/record-field/types/guards/isFieldCurrency';
|
||||
import { FieldMetadataType } from 'twenty-shared/types';
|
||||
import { FieldContext } from '../../contexts/FieldContext';
|
||||
import { FieldCurrencyValue } from '../../types/FieldMetadata';
|
||||
|
||||
export const useCurrencyFieldDisplay = () => {
|
||||
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata(
|
||||
FieldMetadataType.CURRENCY,
|
||||
isFieldCurrency,
|
||||
fieldDefinition,
|
||||
);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
const fieldValue = useRecordFieldValue<FieldCurrencyValue | undefined>(
|
||||
|
||||
@ -84,7 +84,9 @@ export type FieldLinksMetadata = BaseFieldMetadata & {
|
||||
export type FieldCurrencyMetadata = BaseFieldMetadata & {
|
||||
placeHolder: string;
|
||||
isPositive?: boolean;
|
||||
settings?: null;
|
||||
settings?: {
|
||||
format: FieldCurrencyFormat | null;
|
||||
};
|
||||
};
|
||||
|
||||
export type FieldFullNameMetadata = BaseFieldMetadata & {
|
||||
@ -211,6 +213,9 @@ export type FieldLinksValue = {
|
||||
primaryLinkUrl: string | null;
|
||||
secondaryLinks?: { label: string | null; url: string | null }[] | null;
|
||||
};
|
||||
|
||||
export const fieldMetadataCurrencyFormat = ['short', 'full'] as const;
|
||||
export type FieldCurrencyFormat = (typeof fieldMetadataCurrencyFormat)[number];
|
||||
export type FieldCurrencyValue = {
|
||||
currencyCode: CurrencyCode;
|
||||
amountMicros: number | null;
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
import { fieldMetadataCurrencyFormat } from '@/object-record/record-field/types/FieldMetadata';
|
||||
import { z } from 'zod';
|
||||
|
||||
export const currencyFieldSettingsSchema = z.object({
|
||||
format: z.enum(fieldMetadataCurrencyFormat),
|
||||
});
|
||||
@ -1,9 +1,9 @@
|
||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||
import { FieldCurrencyValue } from '@/object-record/record-field/types/FieldMetadata';
|
||||
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||
import { convertCurrencyMicrosToCurrencyAmount } from '~/utils/convertCurrencyToCurrencyMicros';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
export const useExportProcessRecordsForCSV = (objectNameSingular: string) => {
|
||||
const { objectMetadataItem } = useObjectMetadataItem({
|
||||
|
||||
Reference in New Issue
Block a user