Enable deletion of relation fields (#5338)
In this PR 1. Enable deletion of relation fields in the product and via the api (migration part was missing in the api) 3. Change wording, only use "deactivate" and "delete" everywhere (and not a mix of the two + "disable", "erase")
This commit is contained in:
@ -54,15 +54,18 @@ export const SettingsObjectDetail = () => {
|
||||
if (!activeObjectMetadataItem) navigate(AppPath.NotFound);
|
||||
}, [activeObjectMetadataItem, navigate]);
|
||||
|
||||
const { activateMetadataField, disableMetadataField, eraseMetadataField } =
|
||||
useFieldMetadataItem();
|
||||
const {
|
||||
activateMetadataField,
|
||||
deactivateMetadataField,
|
||||
deleteMetadataField,
|
||||
} = useFieldMetadataItem();
|
||||
|
||||
if (!activeObjectMetadataItem) return null;
|
||||
|
||||
const activeMetadataFields = getActiveFieldMetadataItems(
|
||||
activeObjectMetadataItem,
|
||||
);
|
||||
const disabledMetadataFields = getDisabledFieldMetadataItems(
|
||||
const deactivatedMetadataFields = getDisabledFieldMetadataItems(
|
||||
activeObjectMetadataItem,
|
||||
);
|
||||
|
||||
@ -75,7 +78,7 @@ export const SettingsObjectDetail = () => {
|
||||
};
|
||||
|
||||
const handleDisableField = (activeFieldMetadatItem: FieldMetadataItem) => {
|
||||
disableMetadataField(activeFieldMetadatItem);
|
||||
deactivateMetadataField(activeFieldMetadatItem);
|
||||
};
|
||||
|
||||
const handleSetLabelIdentifierField = (
|
||||
@ -180,27 +183,27 @@ export const SettingsObjectDetail = () => {
|
||||
})}
|
||||
</TableSection>
|
||||
)}
|
||||
{!!disabledMetadataFields.length && (
|
||||
{!!deactivatedMetadataFields.length && (
|
||||
<TableSection isInitiallyExpanded={false} title="Inactive">
|
||||
{disabledMetadataFields.map((disabledMetadataField) => (
|
||||
{deactivatedMetadataFields.map((deactivatedMetadataField) => (
|
||||
<SettingsObjectFieldItemTableRow
|
||||
key={disabledMetadataField.id}
|
||||
key={deactivatedMetadataField.id}
|
||||
variant={
|
||||
activeObjectMetadataItem.isCustom
|
||||
? 'identifier'
|
||||
: 'field-type'
|
||||
}
|
||||
fieldMetadataItem={disabledMetadataField}
|
||||
fieldMetadataItem={deactivatedMetadataField}
|
||||
ActionIcon={
|
||||
<SettingsObjectFieldInactiveActionDropdown
|
||||
isCustomField={!!disabledMetadataField.isCustom}
|
||||
fieldType={disabledMetadataField.type}
|
||||
scopeKey={disabledMetadataField.id}
|
||||
isCustomField={!!deactivatedMetadataField.isCustom}
|
||||
fieldType={deactivatedMetadataField.type}
|
||||
scopeKey={deactivatedMetadataField.id}
|
||||
onActivate={() =>
|
||||
activateMetadataField(disabledMetadataField)
|
||||
activateMetadataField(deactivatedMetadataField)
|
||||
}
|
||||
onErase={() =>
|
||||
eraseMetadataField(disabledMetadataField)
|
||||
onDelete={() =>
|
||||
deleteMetadataField(deactivatedMetadataField)
|
||||
}
|
||||
/>
|
||||
}
|
||||
@ -218,7 +221,7 @@ export const SettingsObjectDetail = () => {
|
||||
variant="secondary"
|
||||
onClick={() =>
|
||||
navigate(
|
||||
disabledMetadataFields.length
|
||||
deactivatedMetadataFields.length
|
||||
? './new-field/step-1'
|
||||
: './new-field/step-2',
|
||||
)
|
||||
|
||||
@ -146,10 +146,10 @@ export const SettingsObjectEdit = () => {
|
||||
/>
|
||||
</Section>
|
||||
<Section>
|
||||
<H2Title title="Danger zone" description="Disable object" />
|
||||
<H2Title title="Danger zone" description="Deactivate object" />
|
||||
<Button
|
||||
Icon={IconArchive}
|
||||
title="Disable"
|
||||
title="Deactivate"
|
||||
size="small"
|
||||
onClick={handleDisable}
|
||||
/>
|
||||
|
||||
@ -64,7 +64,7 @@ export const SettingsObjectFieldEdit = () => {
|
||||
const activeObjectMetadataItem =
|
||||
findActiveObjectMetadataItemBySlug(objectSlug);
|
||||
|
||||
const { disableMetadataField } = useFieldMetadataItem();
|
||||
const { deactivateMetadataField } = useFieldMetadataItem();
|
||||
const activeMetadataField = activeObjectMetadataItem?.fields.find(
|
||||
(metadataField) =>
|
||||
metadataField.isActive && getFieldSlug(metadataField) === fieldSlug,
|
||||
@ -142,8 +142,8 @@ export const SettingsObjectFieldEdit = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const handleDisable = async () => {
|
||||
await disableMetadataField(activeMetadataField);
|
||||
const handleDeactivate = async () => {
|
||||
await deactivateMetadataField(activeMetadataField);
|
||||
navigate(`/settings/objects/${objectSlug}`);
|
||||
};
|
||||
|
||||
@ -201,12 +201,15 @@ export const SettingsObjectFieldEdit = () => {
|
||||
</Section>
|
||||
{!isLabelIdentifier && (
|
||||
<Section>
|
||||
<H2Title title="Danger zone" description="Disable this field" />
|
||||
<H2Title
|
||||
title="Danger zone"
|
||||
description="Deactivate this field"
|
||||
/>
|
||||
<Button
|
||||
Icon={IconArchive}
|
||||
title="Disable"
|
||||
title="Deactivate"
|
||||
size="small"
|
||||
onClick={handleDisable}
|
||||
onClick={handleDeactivate}
|
||||
/>
|
||||
</Section>
|
||||
)}
|
||||
|
||||
@ -44,14 +44,14 @@ export const SettingsObjectNewFieldStep1 = () => {
|
||||
const activeObjectMetadataItem =
|
||||
findActiveObjectMetadataItemBySlug(objectSlug);
|
||||
|
||||
const { activateMetadataField, disableMetadataField } =
|
||||
const { activateMetadataField, deactivateMetadataField } =
|
||||
useFieldMetadataItem();
|
||||
const [metadataFields, setMetadataFields] = useState(
|
||||
activeObjectMetadataItem?.fields ?? [],
|
||||
);
|
||||
|
||||
const activeMetadataFields = metadataFields.filter((field) => field.isActive);
|
||||
const disabledMetadataFields = metadataFields.filter(
|
||||
const deactivatedMetadataFields = metadataFields.filter(
|
||||
(field) => !field.isActive,
|
||||
);
|
||||
|
||||
@ -93,7 +93,7 @@ export const SettingsObjectNewFieldStep1 = () => {
|
||||
|
||||
return metadataField.isActive
|
||||
? activateMetadataField(metadataField)
|
||||
: disableMetadataField(metadataField);
|
||||
: deactivateMetadataField(metadataField);
|
||||
}),
|
||||
);
|
||||
|
||||
@ -124,8 +124,8 @@ export const SettingsObjectNewFieldStep1 = () => {
|
||||
</SettingsHeaderContainer>
|
||||
<StyledSection>
|
||||
<H2Title
|
||||
title="Check disabled fields"
|
||||
description="Before creating a custom field, check if it already exists in the disabled section."
|
||||
title="Check deactivated fields"
|
||||
description="Before creating a custom field, check if it already exists in the deactivated section."
|
||||
/>
|
||||
<Table>
|
||||
<StyledObjectFieldTableRow>
|
||||
@ -159,18 +159,18 @@ export const SettingsObjectNewFieldStep1 = () => {
|
||||
))}
|
||||
</TableSection>
|
||||
)}
|
||||
{!!disabledMetadataFields.length && (
|
||||
{!!deactivatedMetadataFields.length && (
|
||||
<TableSection title="Disabled">
|
||||
{disabledMetadataFields.map((disabledMetadataField) => (
|
||||
{deactivatedMetadataFields.map((deactivatedMetadataField) => (
|
||||
<SettingsObjectFieldItemTableRow
|
||||
key={disabledMetadataField.name}
|
||||
fieldMetadataItem={disabledMetadataField}
|
||||
key={deactivatedMetadataField.name}
|
||||
fieldMetadataItem={deactivatedMetadataField}
|
||||
ActionIcon={
|
||||
<LightIconButton
|
||||
Icon={IconPlus}
|
||||
accent="tertiary"
|
||||
onClick={() =>
|
||||
handleToggleField(disabledMetadataField.id)
|
||||
handleToggleField(deactivatedMetadataField.id)
|
||||
}
|
||||
/>
|
||||
}
|
||||
|
||||
@ -110,7 +110,7 @@ export const SettingsObjects = () => {
|
||||
updatePayload: { isActive: true },
|
||||
})
|
||||
}
|
||||
onErase={() =>
|
||||
onDelete={() =>
|
||||
deleteOneObjectMetadataItem(
|
||||
inactiveObjectMetadataItem.id,
|
||||
)
|
||||
|
||||
@ -33,7 +33,7 @@ export const Default: Story = {
|
||||
await canvas.findByText('Settings');
|
||||
await canvas.findByText('Objects');
|
||||
await canvas.findByText('Companies');
|
||||
await canvas.findByText('Check disabled fields');
|
||||
await canvas.findByText('Check deactivated fields');
|
||||
await canvas.findByText('Add Custom Field');
|
||||
},
|
||||
};
|
||||
|
||||
@ -191,7 +191,7 @@ export const SettingsDevelopersApiKeyDetail = () => {
|
||||
<Button
|
||||
accent="danger"
|
||||
variant="secondary"
|
||||
title="Disable"
|
||||
title="Delete"
|
||||
Icon={IconTrash}
|
||||
onClick={() => setIsDeleteApiKeyModalOpen(true)}
|
||||
/>
|
||||
|
||||
@ -64,7 +64,7 @@ export const SettingsDevelopersWebhooksDetail = () => {
|
||||
<Button
|
||||
accent="danger"
|
||||
variant="secondary"
|
||||
title="Disable"
|
||||
title="Delete"
|
||||
Icon={IconTrash}
|
||||
onClick={() => setIsDeleteWebhookModalOpen(true)}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user