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

META-INF.resources.js.components.ObjectDetails.ScopeContainer.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 {Option} from '@clayui/core';
import ClayDropDown from '@clayui/drop-down';
import {FormError, SingleSelect} from '@liferay/object-js-components-web';
import React, {useEffect, useState} from 'react';

import {Scope} from './EditObjectDetails';

const SCOPE_OPTIONS = [
	{
		label: Liferay.Language.get('company'),
		value: 'company',
	},
	{
		label: Liferay.Language.get('site'),
		value: 'site',
	},
];

interface ScopeContainerProps {
	className?: string;
	companies: Scope[];
	errors: FormError;
	hasUpdateObjectDefinitionPermission: boolean;
	isApproved: boolean;
	isLinkedObjectDefinition?: boolean;
	isRootDescendantNode: boolean;
	onSubmit?: (editedObjectDefinition?: Partial) => void;
	setValues: (values: Partial) => void;
	sites: Scope[];
	values: Partial;
}

export function ScopeContainer({
	className,
	companies,
	errors,
	hasUpdateObjectDefinitionPermission,
	isApproved,
	isLinkedObjectDefinition,
	isRootDescendantNode,
	onSubmit,
	setValues,
	sites,
	values,
}: ScopeContainerProps) {
	const [selectedPanelCategoryValue, setSelectedPanelCategoryValue] =
		useState('');

	const setPanelCategoryKey = (
		sites: Scope[],
		panelCategoryValue: string
	) => {
		let selectedPanelCategory: string = '';

		sites.find(({items}) =>
			items.find(({value}) => {
				if (value === panelCategoryValue) {
					selectedPanelCategory = value;

					return true;
				}
			})
		);

		setSelectedPanelCategoryValue(selectedPanelCategory);
	};

	useEffect(() => {
		setPanelCategoryKey(
			values.scope === 'company' ? companies : sites,
			values.panelCategoryKey as string
		);

		// eslint-disable-next-line react-hooks/exhaustive-deps
	}, [values.id, values.scope, companies, sites]);

	return (
		<>
			
				className={className}
				disabled={
					isApproved ||
					!hasUpdateObjectDefinitionPermission ||
					values.storageType === 'salesforce' ||
					isRootDescendantNode ||
					isLinkedObjectDefinition
				}
				error={errors.titleObjectFieldId}
				id="lfr-objects__object-scope-container-scope"
				items={SCOPE_OPTIONS}
				label={Liferay.Language.get('scope')}
				onSelectionChange={(value) => {
					setValues({
						panelCategoryKey: '',
						scope: value as string,
					});

					if (onSubmit) {
						onSubmit({
							...values,
							panelCategoryKey: '',
							scope: value as string,
						});
					}

					setSelectedPanelCategoryValue('');
				}}
				selectedKey={values.scope}
			/>

			 {
					setValues({
						panelCategoryKey: value as string,
					});

					if (onSubmit) {
						onSubmit({
							...values,
							panelCategoryKey: value as string,
						});
					}

					setSelectedPanelCategoryValue(value as string);
				}}
				selectedKey={selectedPanelCategoryValue}
			>
				{(group) => (
					
						{(item) => (
							
						)}
					
				)}
			
		
	);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy