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

META-INF.resources.js.components.ExportSettings.js Maven / Gradle / Ivy

/**
 * 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 {ClaySelect} from '@clayui/form';
import {Col} from '@clayui/layout';
import React, {useEffect, useReducer, useRef, useState} from 'react';

import {
	CSV_FORMAT,
	DISALLOWED_CSV_ENTITY_TYPES,
	EXPORT_FILE_FORMAT_SELECTED_EVENT,
	TEMPLATE_SELECTED_EVENT,
} from '../constants';

function ExportSettings({
	externalTypeId,
	externalTypeInitialOptions,
	externalTypeLabel,
	externalTypeName,
	internalClassNameKeyId,
	internalClassNameKeyInitialOptions,
	internalClassNameKeyLabel,
	internalClassNameKeyName,
}) {
	const [selectedExternalTypeOption, setSelectedExternalTypeOption] =
		useState(externalTypeInitialOptions[0].value);
	const [
		selectedInternalClassNameKeyName,
		setSelectedInternalClassNameKeyName,
	] = useState();
	const templateRef = useRef(false);

	const [internalClassNameKeyOptions, dispatchInternalClassNameKeyOptions] =
		useReducer((state, action) => {
			if (action === 'update') {
				if (selectedExternalTypeOption === CSV_FORMAT.toUpperCase()) {
					return internalClassNameKeyInitialOptions.filter(
						(item) =>
							!DISALLOWED_CSV_ENTITY_TYPES.includes(item.value)
					);
				}
				else {
					return internalClassNameKeyInitialOptions;
				}
			}
		}, internalClassNameKeyInitialOptions);

	useEffect(() => {
		dispatchInternalClassNameKeyOptions('update');
	}, [selectedExternalTypeOption]);

	useEffect(() => {
		const handleTemplateSelectedEvent = ({template}) => {
			templateRef.current = true;
			if (
				template.internalClassNameKey !==
				selectedInternalClassNameKeyName
			) {
				templateRef.current = true;
				setSelectedInternalClassNameKeyName(
					template.internalClassNameKey
				);
			}
			dispatchInternalClassNameKeyOptions('update');
			if (template.entityType !== selectedExternalTypeOption) {
				templateRef.current = true;
				setSelectedExternalTypeOption(template.entityType);
			}
		};

		Liferay.on(TEMPLATE_SELECTED_EVENT, handleTemplateSelectedEvent);

		if (!templateRef.current) {
			Liferay.fire(EXPORT_FILE_FORMAT_SELECTED_EVENT, {
				selectedExportFileFormat: selectedExternalTypeOption,
				selectedSchema: selectedInternalClassNameKeyName,
			});
		}
		templateRef.current = false;

		return () => {
			Liferay.detach(
				TEMPLATE_SELECTED_EVENT,
				handleTemplateSelectedEvent
			);
		};
	}, [selectedExternalTypeOption, selectedInternalClassNameKeyName]);

	return (
		<>
			
				
setSelectedInternalClassNameKeyName( event.target.value ) } > {internalClassNameKeyOptions.map((item) => ( ))}
setSelectedExternalTypeOption(event.target.value) } > {externalTypeInitialOptions.map((item) => ( ))}
); } export default ExportSettings;




© 2015 - 2025 Weber Informatics LLC | Privacy Policy