import React, { useEffect, useState } from 'react';
import { Icon, BackLink, IconButton, Dropdown, Popup, TextEllipsis, Button } from 'UI';
import { remove as deleteFunnel, fetch, fetchInsights, fetchIssuesFiltered, fetchSessionsFiltered } from 'Duck/funnels';
import { applyFilter } from 'Duck/funnelFilters';
import DateRange from 'Shared/DateRange';
import { connect } from 'react-redux';
import { confirm } from 'UI/Confirmation';
import FunnelSaveModal from 'Components/Funnels/FunnelSaveModal';
import stl from './funnelHeader.css';
const Info = ({ label = '', value = '', className = 'mx-4' }) => {
return (
{label}
{value}
)
}
const FunnelHeader = (props) => {
const { funnelFilters, funnel, insights, funnels, onBack, funnelId, showFilters = false, renameHandler } = props;
const [showSaveModal, setShowSaveModal] = useState(false)
const writeOption = (e, { name, value }) => {
props.fetch(value)
props.redirect(value)
}
useEffect(() => {
if (funnel.funnelId && funnel.funnelId !== funnelId) {
props.fetchInsights(funnel.funnelId, {})
props.fetchIssuesFiltered(funnel.funnelId, {})
props.fetchSessionsFiltered(funnel.funnelId, {})
}
}, [funnel])
const deleteFunnel = async (e, funnel) => {
e.preventDefault();
e.stopPropagation();
if (await confirm({
header: 'Delete Funnel',
confirmButton: 'Delete',
confirmation: `Are you sure you want to permanently delete "${funnel.name}"?`
})) {
props.deleteFunnel(funnel.funnelId).then(props.onBack);
} else {}
}
const onDateChange = (e) => {
props.applyFilter(e, funnel.funnelId)
}
const options = funnels.map(({ funnelId, name }) => ({ text: name, value: funnelId })).toJS();
const selectedFunnel = funnels.filter(i => i.funnelId === parseInt(funnelId)).first() || {};
return (
setShowSaveModal(false)}
/>
}
options={options}
className={ stl.dropdown }
name="funnel"
value={ parseInt(funnelId) }
icon={null}
onChange={ writeOption }
selectOnBlur={false}
icon={ }
/>
-
setShowSaveModal(true)} />}
content={ `Edit Funnel` }
size="tiny"
inverted
position="top center"
/>
deleteFunnel(e, funnel)} className="ml-2 mr-2" />}
content={ `Remove Funnel` }
size="tiny"
inverted
position="top center"
/>
)
}
export default connect(state => ({
funnelFilters: state.getIn([ 'funnelFilters', 'appliedFilter']),
}), { applyFilter, deleteFunnel, fetch, fetchInsights, fetchIssuesFiltered, fetchSessionsFiltered })(FunnelHeader)