feat: select default Unit for Currency field (#2996)
Closes #2347 Co-authored-by: Thais GUIGON <thaisguigon@macbook-pro.home>
This commit is contained in:
@ -0,0 +1,39 @@
|
||||
import { CurrencyCode } from '@/object-record/field/types/CurrencyCode';
|
||||
import { Select } from '@/ui/input/components/Select';
|
||||
import { CardContent } from '@/ui/layout/card/components/CardContent';
|
||||
|
||||
import { settingsFieldCurrencyCodes } from '../constants/settingsFieldCurrencyCodes';
|
||||
|
||||
export type SettingsObjectFieldCurrencyFormValues = {
|
||||
currencyCode: CurrencyCode;
|
||||
};
|
||||
|
||||
type SettingsObjectFieldCurrencyFormProps = {
|
||||
disabled?: boolean;
|
||||
onChange: (values: Partial<SettingsObjectFieldCurrencyFormValues>) => void;
|
||||
values: SettingsObjectFieldCurrencyFormValues;
|
||||
};
|
||||
|
||||
export const SettingsObjectFieldCurrencyForm = ({
|
||||
disabled,
|
||||
onChange,
|
||||
values,
|
||||
}: SettingsObjectFieldCurrencyFormProps) => (
|
||||
<CardContent>
|
||||
<Select
|
||||
fullWidth
|
||||
disabled={disabled}
|
||||
label="Unit"
|
||||
dropdownScopeId="currency-unit-select"
|
||||
value={values.currencyCode}
|
||||
options={Object.entries(settingsFieldCurrencyCodes).map(
|
||||
([value, { label, Icon }]) => ({
|
||||
label,
|
||||
value: value as CurrencyCode,
|
||||
Icon,
|
||||
}),
|
||||
)}
|
||||
onChange={(value) => onChange({ currencyCode: value })}
|
||||
/>
|
||||
</CardContent>
|
||||
);
|
||||
@ -8,6 +8,10 @@ import { Field, FieldMetadataType } from '~/generated-metadata/graphql';
|
||||
import { relationTypes } from '../constants/relationTypes';
|
||||
import { settingsFieldMetadataTypes } from '../constants/settingsFieldMetadataTypes';
|
||||
|
||||
import {
|
||||
SettingsObjectFieldCurrencyForm,
|
||||
SettingsObjectFieldCurrencyFormValues,
|
||||
} from './SettingsObjectFieldCurrencyForm';
|
||||
import {
|
||||
SettingsObjectFieldPreview,
|
||||
SettingsObjectFieldPreviewProps,
|
||||
@ -24,11 +28,13 @@ import { SettingsObjectFieldTypeCard } from './SettingsObjectFieldTypeCard';
|
||||
|
||||
export type SettingsObjectFieldTypeSelectSectionFormValues = {
|
||||
type: FieldMetadataType;
|
||||
currency: SettingsObjectFieldCurrencyFormValues;
|
||||
relation: SettingsObjectFieldRelationFormValues;
|
||||
select: SettingsObjectFieldSelectFormValues;
|
||||
};
|
||||
|
||||
type SettingsObjectFieldTypeSelectSectionProps = {
|
||||
disableCurrencyForm?: boolean;
|
||||
excludedFieldTypes?: FieldMetadataType[];
|
||||
fieldMetadata: Pick<Field, 'icon' | 'label'> & { id?: string };
|
||||
onChange: (
|
||||
@ -53,6 +59,7 @@ const StyledRelationImage = styled.img<{ flip?: boolean }>`
|
||||
`;
|
||||
|
||||
export const SettingsObjectFieldTypeSelectSection = ({
|
||||
disableCurrencyForm,
|
||||
excludedFieldTypes,
|
||||
fieldMetadata,
|
||||
objectMetadataId,
|
||||
@ -60,6 +67,7 @@ export const SettingsObjectFieldTypeSelectSection = ({
|
||||
relationFieldMetadata,
|
||||
values,
|
||||
}: SettingsObjectFieldTypeSelectSectionProps) => {
|
||||
const currencyFormConfig = values.currency;
|
||||
const relationFormConfig = values.relation;
|
||||
const selectFormConfig = values.select;
|
||||
|
||||
@ -139,7 +147,17 @@ export const SettingsObjectFieldTypeSelectSection = ({
|
||||
</>
|
||||
}
|
||||
form={
|
||||
values.type === FieldMetadataType.Relation ? (
|
||||
values.type === FieldMetadataType.Currency ? (
|
||||
<SettingsObjectFieldCurrencyForm
|
||||
disabled={disableCurrencyForm}
|
||||
values={currencyFormConfig}
|
||||
onChange={(nextValues) =>
|
||||
onChange({
|
||||
currency: { ...currencyFormConfig, ...nextValues },
|
||||
})
|
||||
}
|
||||
/>
|
||||
) : values.type === FieldMetadataType.Relation ? (
|
||||
<SettingsObjectFieldRelationForm
|
||||
disableFieldEdition={
|
||||
relationFieldMetadata && !relationFieldMetadata.isCustom
|
||||
|
||||
Reference in New Issue
Block a user