import React, { useEffect } from 'react' import classNames from 'classnames' import { Popover, Transition } from '@headlessui/react' import { popover } from '../../components/popover' import { AppNavigationLink, useAppNavigate } from '../../navigation/use-app-navigate' import { Square2StackIcon, TrashIcon, XMarkIcon } from '@heroicons/react/24/outline' import { ChevronDownIcon } from '@heroicons/react/20/solid' import { useQueryContext } from '../../query-context' import { useRoutelessModalsContext } from '../../navigation/routeless-modals-context' import { SavedSegment } from '../../filtering/segments' import { DashboardQuery } from '../../query' const linkClassName = classNames( popover.items.classNames.navigationLink, popover.items.classNames.selectedOption, popover.items.classNames.hoverLink ) const buttonClassName = classNames( 'text-white font-medium bg-indigo-600 hover:bg-indigo-700' ) export const useClearExpandedSegmentModeOnFilterClear = ({ expandedSegment, query }: { expandedSegment: SavedSegment | null query: DashboardQuery }) => { const navigate = useAppNavigate() useEffect(() => { // clear edit mode on clearing all filters or removing last filter if (!!expandedSegment && !query.filters.length) { navigate({ search: (s) => s, state: { expandedSegment: null }, replace: true }) } }, [query.filters, expandedSegment, navigate]) } export const SegmentMenu = () => { const { setModal } = useRoutelessModalsContext() const { expandedSegment } = useQueryContext() if (!expandedSegment) { return null } return (
s} state={{ expandedSegment }} onClick={() => { setModal('update') }} > Update segment {({ close: closeDropdown }) => ( <> s} state={{ expandedSegment }} onClick={() => { closeDropdown() setModal('create') }} >
Save as a new segment
s} state={{ expandedSegment }} onClick={() => { closeDropdown() setModal('delete') }} >
Delete segment
({ ...s, filters: [], labels: {} })} state={{ expandedSegment: null }} onClick={closeDropdown} >
Close without saving
)}
) }