
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