import React, { useCallback, useState } from 'react'; import { get } from 'lodash'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import pluginId from '../../pluginId'; import useDataManager from '../../hooks/useDataManager'; import DynamicComponentCard from '../DynamicComponentCard'; import FieldComponent from '../FieldComponent'; import Button from './Button'; import ComponentsPicker from './ComponentsPicker'; import ComponentWrapper from './ComponentWrapper'; import Label from './Label'; import RoundCTA from './RoundCTA'; import Wrapper from './Wrapper'; const DynamicZone = ({ name }) => { const [isOpen, setIsOpen] = useState(false); const [isOver, setIsOver] = useState(false); const { addComponentToDynamicZone, // allLayoutData, layout, modifiedData, moveComponentUp, moveComponentDown, removeComponentFromDynamicZone, } = useDataManager(); const getDynamicDisplayedComponents = useCallback(() => { return get(modifiedData, [name], []).map(data => data.__component); }, [modifiedData, name]); // const getDynamicComponentSchemaData = useCallback( // compoUid => { // return get(allLayoutData, ['components', compoUid], {}); // }, // [allLayoutData] // ); const dynamicZoneAvailableComponents = get( layout, ['schema', 'attributes', name, 'components'], [] ); const displayInfo = isOver && !isOpen; const handleMouseEvent = () => setIsOver(prev => !prev); const metas = get(layout, ['metadatas', name, 'edit'], {}); const dynamicDisplayedComponentsLength = getDynamicDisplayedComponents() .length; return ( <> {getDynamicDisplayedComponents().length > 0 && ( )} {getDynamicDisplayedComponents().map((componentUid, index) => { // TODO when available // const icon = getDynamicComponentSchemaData(componentUid); const showDownIcon = dynamicDisplayedComponentsLength > 0 && index < dynamicDisplayedComponentsLength - 1; const showUpIcon = dynamicDisplayedComponentsLength > 0 && index > 0; return ( (TEMP: {componentUid}) {showDownIcon && ( moveComponentDown(name, index)} > )} {showUpIcon && ( moveComponentUp(name, index)} > )} removeComponentFromDynamicZone(name, index)} > ); })}