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

META-INF.resources.js.components.ObjectRelationship.EditObjectRelationship.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 {
	API,
	Card,
	SidePanelForm,
	openToast,
	saveAndReload,
} from '@liferay/object-js-components-web';
import {ILearnResourceContext} from 'frontend-js-components-web';
import React, {FormEvent, useState} from 'react';

import {EditObjectRelationshipContent} from './EditObjectRelationshipContent';
import {useObjectRelationshipForm} from './useObjectRelationshipForm';

interface EditObjectRelationshipProps {
	baseResourceURL: string;
	hasUpdateObjectDefinitionPermission: boolean;
	learnResources: ILearnResourceContext;
	objectDefinitionExternalReferenceCode: string;
	objectRelationship: ObjectRelationship;
	objectRelationshipDeletionTypes: LabelValueObject[];
	parameterRequired: boolean;
	restContextPath: string;
}

export default function EditObjectRelationship({
	baseResourceURL,
	hasUpdateObjectDefinitionPermission,
	learnResources,
	objectDefinitionExternalReferenceCode,
	objectRelationship: initialValues,
	objectRelationshipDeletionTypes,
	parameterRequired,
	restContextPath,
}: EditObjectRelationshipProps) {
	const [submitError, setSubmitError] = useState(null);

	const {errors, handleChange, handleValidate, setValues, values} =
		useObjectRelationshipForm({
			initialValues,
			onSubmit: () => {},
			parameterRequired,
		});

	const onSubmit = async (
		objectRelationship: Partial = values
	) => {
		try {
			await API.putObjectRelationship(objectRelationship);
			saveAndReload();

			openToast({
				message: Liferay.Language.get(
					'the-object-relationship-was-updated-successfully'
				),
			});
		}
		catch (error: unknown) {
			const {message} = error as Error;

			if (!Liferay.FeatureFlags['LPD-34594']) {
				openToast({message, type: 'danger'});
			}
			else {
				setSubmitError(message);
			}
		}
	};

	const handleSubmit = (event: FormEvent) => {
		event.preventDefault();

		const validationErrors = handleValidate();

		if (!Object.keys(validationErrors).length) {
			onSubmit(values);
		}
	};

	const readOnly =
		!hasUpdateObjectDefinitionPermission ||
		values.reverse ||
		initialValues.system;

	const handleInheritanceCheckboxChange = ({
		target,
	}: React.ChangeEvent) => {
		if (target.checked) {
			setValues({
				...values,
				edge: true,
			});
		}
		else {
			const parentWindow = Liferay.Util.getOpener();

			parentWindow.Liferay.fire('openModalDisableInheritance', {
				handleDisable: async () => {
					setValues({
						...values,
						edge: false,
					});
				},
			});
		}
	};

	return (
		
			
		
	);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy