
META-INF.resources.js.components.ViewObjectDefinitions.ModalUnbindObjectDefinition.tsx Maven / Gradle / Ivy
The newest version!
/**
* SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
import ClayButton from '@clayui/button';
import ClayLoadingIndicator from '@clayui/loading-indicator';
import ClayModal, {useModal} from '@clayui/modal';
import {API, openToast, stringUtils} from '@liferay/object-js-components-web';
import {createResourceURL, fetch, sub} from 'frontend-js-web';
import React, {useEffect, useState} from 'react';
import './ModalUnbindObject.scss';
interface ModalUnbindObjectDefinitionProps {
baseResourceURL: string;
onVisibilityChange: () => void;
selectedObjectDefinitionToUnbind?: ObjectDefinition;
}
export function ModalUnbindObjectDefinition({
baseResourceURL,
onVisibilityChange,
selectedObjectDefinitionToUnbind,
}: ModalUnbindObjectDefinitionProps) {
const [rootObjectDefinition, setRootObjectDefinition] =
useState();
const [loading, setLoading] = useState(false);
const {observer, onClose} = useModal({
onClose: () => onVisibilityChange(),
});
const onSubmit = async () => {
const response = await fetch(
createResourceURL(baseResourceURL, {
objectDefinitionId: selectedObjectDefinitionToUnbind?.id,
p_p_resource_id: '/object_definitions/unbind_object_definition',
}).toString()
);
if (response.ok) {
openToast({
message: Liferay.Language.get(
'object-successfully-unbound-from-root'
),
type: 'success',
});
onClose();
setTimeout(() => window.location.reload(), 500);
}
};
useEffect(() => {
const makeFetch = async () => {
setLoading(true);
if (
selectedObjectDefinitionToUnbind?.rootObjectDefinitionExternalReferenceCode ===
selectedObjectDefinitionToUnbind?.externalReferenceCode
) {
setRootObjectDefinition(selectedObjectDefinitionToUnbind);
}
else if (
selectedObjectDefinitionToUnbind?.rootObjectDefinitionExternalReferenceCode
) {
const rootObjectDefinitionResponse =
await API.getObjectDefinitionByExternalReferenceCode(
selectedObjectDefinitionToUnbind?.rootObjectDefinitionExternalReferenceCode
);
setRootObjectDefinition(rootObjectDefinitionResponse);
}
setLoading(false);
};
makeFetch();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return (
{Liferay.Language.get('confirm-object-unbinding')}
{loading ? (
) : (
{selectedObjectDefinitionToUnbind?.externalReferenceCode ===
rootObjectDefinition?.externalReferenceCode
? sub(
Liferay.Language.get(
'please-confirm-before-unbinding-the-root-x'
),
[
stringUtils.getLocalizableLabel({
fallbackLabel:
rootObjectDefinition?.name,
fallbackLanguageId:
rootObjectDefinition?.defaultLanguageId as Liferay.Language.Locale,
labels: rootObjectDefinition?.label,
}),
]
)
: sub(
Liferay.Language.get(
'please-confirm-before-unbinding-the-object-x-from-the-root-x'
),
[
stringUtils.getLocalizableLabel({
fallbackLabel:
selectedObjectDefinitionToUnbind?.name,
fallbackLanguageId:
selectedObjectDefinitionToUnbind?.defaultLanguageId as Liferay.Language.Locale,
labels: selectedObjectDefinitionToUnbind?.label,
}),
stringUtils.getLocalizableLabel({
fallbackLabel:
rootObjectDefinition?.name,
fallbackLanguageId:
rootObjectDefinition?.defaultLanguageId as Liferay.Language.Locale,
labels: rootObjectDefinition?.label,
}),
]
)}
)}
onClose()}
>
{Liferay.Language.get('cancel')}
onSubmit()}
type="submit"
>
{Liferay.Language.get('confirm')}
}
/>
);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy