import React from 'react'; import { Box } from '@wix/design-system'; import { CollectionPageHeaderElement } from '../../components/CollectionPageHeaderNew'; import { useCollectionPageContext } from '../../providers'; import { observer } from 'mobx-react-lite'; import { MoreActionsText } from '../../components/MoreActions/MoreActionsText'; import { useIsMobile } from '../../hooks/useIsMobile'; import { pushFactoryIfNotExistsOrAddToTopOfGroup } from './pushFactoryIfNotExistsOrAddToTopOfGroup'; import { mergeActionsForNarrowMode } from './transformSecondaryActionsToMoreActions'; import { MoreActions } from '../../components/MoreActions'; import { MoreActionItemFactory, MoreActionsPropItem, } from '../../components/MoreActions/MoreActionsBase'; import { useWixPatternsContainer } from '@wix/bex-core/react'; function withFeaturedActions( items: MoreActionsPropItem[] | MoreActionsPropItem[][] | undefined, featuredActions: MoreActionItemFactory[] | undefined, ) { if (!featuredActions) { return items; } let result = items; for (const factory of featuredActions) { result = pushFactoryIfNotExistsOrAddToTopOfGroup(result, factory); } return result; } const WideModeMoreActions = observer( ({ child }: { child: CollectionPageHeaderElement }) => { const { primaryToolbar } = useCollectionPageContext(); const featuredActions = primaryToolbar?.getPageFeaturedActions(); const forceMoreActions = featuredActions?.length ? ( ) : undefined; const moreActions = child.props.moreActions ?? forceMoreActions; if (!moreActions) { return null; } const { type: MoreActionsType, props: moreActionsProps } = moreActions; const items = withFeaturedActions(moreActionsProps.items, featuredActions); if (child.props.secondaryActions) { return ; } return ; }, ); const NarrowModeMoreActions = observer( ({ child }: { child: CollectionPageHeaderElement }) => { const { primaryToolbar } = useCollectionPageContext(); const featuredActions = primaryToolbar?.getPageFeaturedActions(); const moreActionsProps = child.props.moreActions?.props; const moreActionsItems = withFeaturedActions( moreActionsProps?.items, featuredActions, ); const items = mergeActionsForNarrowMode( child.props.secondaryActions, moreActionsItems, ); if (items.length === 0) { return null; } return ( ); }, ); export const CollectionPageActionsBar = observer( ({ child }: { child: CollectionPageHeaderElement }) => { const isMobile = useIsMobile(); const { isNarrow } = useCollectionPageContext(); const { internalExperiments } = useWixPatternsContainer(); const isNarrowMode = isNarrow && internalExperiments?.enabled('specs.cairo.CollectionPageMinWidth'); if (isMobile) { return {child.props.primaryAction}; } if (isNarrowMode) { return ( {child.props.primaryAction} ); } return ( {child.props.secondaryActions} {child.props.primaryAction} ); }, );