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

META-INF.resources.js.AddFragmentModal.js 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 {ClayCardWithInfo} from '@clayui/card';
import ClayForm, {ClayInput} from '@clayui/form';
import ClayIcon from '@clayui/icon';
import {useModal} from '@clayui/modal';
import classNames from 'classnames';
import {useId} from 'frontend-js-components-web';
import PropTypes from 'prop-types';
import React, {useState} from 'react';

import {MultiStepFormModal, MultiStepFormModalStep} from './MultiStepFormModal';
import {FieldTypeSelector} from './fragment-editor/FieldTypeSelector';

function getFieldName(namespace, fieldName) {
	return namespace.concat(fieldName);
}

export default function AddFragmentModal({
	addFragmentEntryURL,
	fieldTypes: initialFieldTypes,
	fragmentTypes,
	namespace,
}) {
	const [name, setName] = useState('');
	const [type, setType] = useState(fragmentTypes[0]);
	const [nameError, setNameError] = useState(null);
	const [selectedFieldTypes, setSelectedFieldTypes] = useState([]);
	const selectFragmentText = useId();

	const [visible, setVisible] = useState(true);
	const {observer, onClose} = useModal({
		onClose: () => setVisible(false),
	});

	const fieldTypes = initialFieldTypes.filter(
		(fieldType) =>
			fieldType.key !== 'stepper' || Liferay.FeatureFlags['LPD-10727']
	);

	return (
		visible && (
			
				
					

{Liferay.Language.get('select-fragment-type')}

{fragmentTypes.map((fragmentType) => ( ))}
setName(event.target.value)} required type="text" value={name} /> {nameError && ( {nameError} )} {type.name === 'form' && ( )}
) ); } AddFragmentModal.propTypes = { addFragmentEntryURL: PropTypes.string.isRequired, fieldTypes: PropTypes.array.isRequired, fragmentTypes: PropTypes.array.isRequired, namespace: PropTypes.string.isRequired, }; function FragmentTypeCard({active, fragmentType, onSelect}) { const {description, name, symbol, title} = fragmentType; return ( onSelect(fragmentType)} radioProps={{ 'aria-label': title, 'name': 'fragments', 'value': name, }} selectableType="radio" selected={active} stickerProps={null} symbol={symbol} title={title} truncate={false} /> ); } FragmentTypeCard.propTypes = { active: PropTypes.bool.isRequired, fragmentType: PropTypes.object.isRequired, onSelect: PropTypes.func.isRequired, };




© 2015 - 2024 Weber Informatics LLC | Privacy Policy