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

META-INF.resources.js.components.ViewObjectDefinitions.ObjectFoldersSidebar.tsx Maven / Gradle / Ivy

The newest version!
/**
 * SPDX-FileCopyrightText: (c) 2023 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, {ClayButtonWithIcon} from '@clayui/button';
import {Text} from '@clayui/core';
import {ClayDropDownWithItems} from '@clayui/drop-down';
import ClayIcon from '@clayui/icon';
import ClayList from '@clayui/list';
import {stringUtils} from '@liferay/object-js-components-web';
import {createResourceURL} from 'frontend-js-web';
import React, {SetStateAction} from 'react';

import {exportObjectEntity} from '../../utils/exportObjectEntity';
import {ModalImportProperties} from './ViewObjectDefinitions';

interface ObjectFoldersSidebarProps {
	baseResourceURL: string;
	importObjectFolderURL: string;
	objectDefinitionsActions: Actions;
	objectFoldersRequestInfo?: ObjectFoldersRequestInfo;
	portletNamespace: string;
	selectedObjectFolder?: Partial;
	setModalImportProperties: (
		value: SetStateAction
	) => void;
	setSelectedObjectFolder: (
		value: SetStateAction>
	) => void;
	setShowModal: (value: SetStateAction) => void;
}

export default function ObjectFoldersSideBar({
	baseResourceURL,
	importObjectFolderURL,
	objectDefinitionsActions,
	objectFoldersRequestInfo,
	selectedObjectFolder,
	setModalImportProperties,
	setSelectedObjectFolder,
	setShowModal,
}: ObjectFoldersSidebarProps) {
	const objectFoldersKebabOptions = [];

	if (selectedObjectFolder) {
		objectFoldersKebabOptions.push({
			label: Liferay.Language.get('export-object-folder'),
			onClick: () => {
				const exportObjectFolderURL = createResourceURL(
					baseResourceURL,
					{
						objectFolderId: selectedObjectFolder.id,
						p_p_resource_id:
							'/object_definitions/export_object_folder',
					}
				).href;

				exportObjectEntity({
					exportObjectEntityURL: exportObjectFolderURL,
					objectEntityId: selectedObjectFolder.id as number,
				});
			},
			symbolLeft: 'export',
			value: 'exportObjectFolder',
		});
	}

	if (
		objectDefinitionsActions?.create &&
		objectFoldersRequestInfo?.actions.create
	) {
		objectFoldersKebabOptions.push({
			label: Liferay.Language.get('import-object-folder'),
			onClick: () => {
				setModalImportProperties({
					JSONInputId: 'objectFolderJSON',
					apiURL: '/o/object-admin/v1.0/object-folders/by-external-reference-code/',
					importURL: importObjectFolderURL,
					modalImportKey: 'objectFolder',
				});

				setShowModal((previousState: ShowObjectDefinitionsModals) => ({
					...previousState,
					importModal: true,
				}));
			},
			symbolLeft: 'import',
			value: 'importObjectFolder',
		});
	}

	return (
		
{Liferay.Language.get('object-folders').toUpperCase()} {selectedObjectFolder && objectFoldersRequestInfo && (
setShowModal( ( previousState: ShowObjectDefinitionsModals ) => ({ ...previousState, addObjectFolder: true, }) ) } > { event?.stopPropagation(); }} symbol="ellipsis-v" /> } />
)}
{objectFoldersRequestInfo && selectedObjectFolder && objectFoldersRequestInfo.items.map( (currentObjectFolder) => ( { setSelectedObjectFolder( currentObjectFolder ); const currentURL = new URL( window.location.href ); currentURL.searchParams.set( 'objectFolderName', currentObjectFolder.name ); window.history.replaceState( null, '', currentURL.href ); }} > {stringUtils.getLocalizableLabel({ fallbackLabel: currentObjectFolder.name, labels: currentObjectFolder.label, })} ) )}
); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy