import { createElement, Component, useState, useContext, Fragment, } from '@wordpress/element' import DraggableItems from '../DraggableItems' import { DragDropContext } from '../../../../options/options/ct-footer-builder' import cls from 'classnames' import Panel, { PanelMetaWrapper } from '../../../../options/options/ct-panel' import { getValueFromInput } from '../../../../options/helpers/get-value-from-input' import { getOriginalId, customItemsSeparator } from '../../placements/helpers' import { Slot } from '@wordpress/components' const SecondaryItems = ({ builderValue, builderValueDispatch, inlinedItemsFromBuilder, displayList = true, }) => { const { panelsState, panelsActions, currentView, isDragging } = useContext( DragDropContext ) const inlinedItemsFromAllViewsBuilder = builderValue.rows.reduce( (currentItems, { columns }) => [ ...currentItems, ...(columns || []).reduce((c, items) => [...c, ...items], []), ], [] ) const secondaryItems = ct_customizer_localizations.header_builder_data.secondary_items.footer.filter( ({ config }) => // config.devices.indexOf(currentView) > -1 && config.enabled ) const allItems = ct_customizer_localizations.header_builder_data.footer /** * Dynamic items have a : in their ID */ const allDynamicItems = Object.keys(builderValue.items).filter( (id) => id.indexOf(customItemsSeparator()) > -1 ) return ( id), ...allDynamicItems, ].sort((a, b) => { const aItemData = ct_customizer_localizations.header_builder_data[ 'footer' ].find(({ id }) => id === getOriginalId(a)) const bItemData = ct_customizer_localizations.header_builder_data[ 'footer' ].find(({ id }) => id === getOriginalId(b)) return aItemData.config.name.localeCompare( bItemData.config.name ) })} hasPointers={false} panelType="footer" displayWrapper={displayList} propsForItem={(item) => ({ renderItem: ({ item, itemData, index }) => { const itemOptions = allItems.find( ({ id }) => id === getOriginalId(item) ).options const allClonesAndOriginal = [ getOriginalId(item), ...allDynamicItems.filter( (id) => getOriginalId(id) === getOriginalId(item) ), ] const itemName = allClonesAndOriginal.length > 1 ? `${itemData.config.name} ${ allClonesAndOriginal.indexOf(item) + 1 }` : itemData.config.name const option = { label: itemName, 'inner-options': itemOptions, } const itemInBuilder = inlinedItemsFromBuilder.indexOf(item) > -1 const id = `builder_panel_${item}` return ( ( {inlinedItemsFromAllViewsBuilder.indexOf( item ) > -1 && ( { let itemValue = builderValue.items[item] if ( itemValue && Object.keys( itemValue.values ) > 5 ) { return itemValue.values } return getValueFromInput( itemOptions, itemValue ? itemValue.values : {} ) }} option={option} onChangeFor={( optionId, optionValue ) => { const currentValue = builderValue.items[item] builderValueDispatch({ type: 'ITEM_VALUE_ON_CHANGE', payload: { id: item, optionId, optionValue, values: !currentValue || (currentValue && Object.keys( currentValue.values ).length === 0) ? getValueFromInput( itemOptions, {} ) : {}, }, }) }} view="simple" /> )} {displayList && (
{ if (isDragging) { return } itemInBuilder && open() }}> {itemName}
)}
)}>
) }, })} direction="vertical" /> ) } export default SecondaryItems