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

META-INF.resources.js.components.ObjectView.ViewBuilderScreen.ViewBuilderScreen.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 {useModal} from '@clayui/modal';
import {
	BuilderScreen,
	Card,
	stringUtils,
} from '@liferay/object-js-components-web';
import React, {useState} from 'react';

import {ModalEditViewColumn} from '../ModalEditViewColumn/ModalEditViewColumn';
import {TYPES, useViewContext} from '../objectViewContext';

const ViewBuilderScreen: React.FC<
	{children?: React.ReactNode | undefined} & {}
> = () => {
	const [visibleEditModal, setVisibleEditModal] = useState(false);
	const [editingObjectFieldName, setEditingObjectFieldName] = useState('');

	const {observer, onClose} = useModal({
		onClose: () => setVisibleEditModal(false),
	});

	const [
		{
			creationLanguageId,
			objectFields,
			objectView: {objectViewColumns},
		},
		dispatch,
	] = useViewContext();

	const selected = objectViewColumns.map((objectViewColumn) => {
		return objectFields.find(
			(objectField) =>
				objectViewColumn.objectFieldName === objectField.name
		);
	});

	const handleAddColumns = () => {
		const parentWindow = Liferay.Util.getOpener();

		parentWindow.Liferay.fire('openModalSelectObjectFields', {
			getName: ({label, name}: ObjectField) =>
				stringUtils.getLocalizableLabel({
					fallbackLabel: name,
					fallbackLanguageId: creationLanguageId,
					labels: label,
				}),
			header: Liferay.Language.get('add-columns'),
			items: objectFields.map((objectField) => {
				return {
					...objectField,
					disableCheckbox: false,
				};
			}),
			onSave: (selectedObjectFields: ObjectField[]) =>
				dispatch({
					payload: {
						creationLanguageId,
						selectedObjectFields,
					},
					type: TYPES.ADD_OBJECT_VIEW_COLUMN,
				}),
			selected,
			showModal: true,
			title: Liferay.Language.get('select-the-columns'),
		});
	};

	const handleChangeColumnOrder = (
		draggedIndex: number,
		targetIndex: number
	) => {
		dispatch({
			payload: {draggedIndex, targetIndex},
			type: TYPES.CHANGE_OBJECT_VIEW_COLUMN_ORDER,
		});
	};

	const handleDeleteColumn = (objectFieldName: string) => {
		dispatch({
			payload: {objectFieldName},
			type: TYPES.DELETE_OBJECT_VIEW_COLUMN,
		});

		dispatch({
			payload: {objectFieldName},
			type: TYPES.DELETE_OBJECT_VIEW_SORT_COLUMN,
		});
	};

	return (
		<>
			
				
			

			{visibleEditModal && (
				
			)}
		
	);
};

export default ViewBuilderScreen;




© 2015 - 2025 Weber Informatics LLC | Privacy Policy