All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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