diff --git a/frontend/app/Router.js b/frontend/app/Router.js
index e3250f892..cc31ea640 100644
--- a/frontend/app/Router.js
+++ b/frontend/app/Router.js
@@ -17,7 +17,7 @@ const AssistPure = lazy(() => import('Components/Assist'));
const BugFinderPure = lazy(() => import('Components/BugFinder/BugFinder'));
const DashboardPure = lazy(() => import('Components/Dashboard/NewDashboard'));
const ErrorsPure = lazy(() => import('Components/Errors/Errors'));
-const FunnelDetails = lazy(() => import('Components/Funnels/FunnelDetails'));
+const FunnelDetailsPure = lazy(() => import('Components/Funnels/FunnelDetails'));
const FunnelIssueDetails = lazy(() => import('Components/Funnels/FunnelIssueDetails'));
const FunnelPagePure = lazy(() => import('Components/Funnels/FunnelPage'));
import WidgetViewPure from 'Components/Dashboard/components/WidgetView';
@@ -49,7 +49,7 @@ const Client = withSiteIdUpdater(ClientPure);
const Onboarding = withSiteIdUpdater(OnboardingPure);
const Errors = withSiteIdUpdater(ErrorsPure);
const FunnelPage = withSiteIdUpdater(FunnelPagePure);
-const Funnels = withSiteIdUpdater(FunnelDetails);
+const FunnelsDetails = withSiteIdUpdater(FunnelDetailsPure);
const FunnelIssue = withSiteIdUpdater(FunnelIssueDetails);
const withSiteId = routes.withSiteId;
const withObTab = routes.withObTab;
@@ -68,7 +68,7 @@ const ASSIST_PATH = routes.assist();
const ERRORS_PATH = routes.errors();
const ERROR_PATH = routes.error();
const FUNNEL_PATH = routes.funnels();
-// const FUNNEL_DETAIL_PATH = routes.funnel();
+const FUNNEL_CREATE_PATH = routes.funnelsCreate();
const FUNNEL_ISSUE_PATH = routes.funnelIssue();
const SESSION_PATH = routes.session();
const LIVE_SESSION_PATH = routes.liveSession();
@@ -216,6 +216,7 @@ class Router extends React.Component {
+
{/* */}
diff --git a/frontend/app/components/Funnels/FunnelDetails/FunnelDetails.js b/frontend/app/components/Funnels/FunnelDetails/FunnelDetails.js__
similarity index 100%
rename from frontend/app/components/Funnels/FunnelDetails/FunnelDetails.js
rename to frontend/app/components/Funnels/FunnelDetails/FunnelDetails.js__
diff --git a/frontend/app/components/Funnels/FunnelDetails/FunnelDetails.tsx b/frontend/app/components/Funnels/FunnelDetails/FunnelDetails.tsx
new file mode 100644
index 000000000..0bbc2fe5c
--- /dev/null
+++ b/frontend/app/components/Funnels/FunnelDetails/FunnelDetails.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { withRouter } from 'react-router-dom';
+
+interface Props {
+
+}
+function FunnelDetails(props: Props) {
+ return (
+
+ Create View/Detail View
+
+ );
+}
+
+export default withRouter(FunnelDetails);
\ No newline at end of file
diff --git a/frontend/app/components/Funnels/FunnelList/FunnelList.tsx b/frontend/app/components/Funnels/FunnelList/FunnelList.tsx
index b73b643c2..ca18a3c81 100644
--- a/frontend/app/components/Funnels/FunnelList/FunnelList.tsx
+++ b/frontend/app/components/Funnels/FunnelList/FunnelList.tsx
@@ -4,6 +4,7 @@ import { useObserver } from 'mobx-react-lite';
import React, { useEffect } from 'react';
import { sliceListPerPage } from 'App/utils';
import FunnelItem from '../FunnelItem/FunnelItem';
+import FunnelSearch from '../FunnelSearch';
function FunnelList(props) {
const { funnelStore } = useStore()
@@ -19,8 +20,13 @@ function FunnelList(props) {
return (
-
-
+
+
+
+
Funnels make it easy to uncover the most significant issues that impacted conversions.
diff --git a/frontend/app/components/Funnels/FunnelPage/FunnelPage.tsx b/frontend/app/components/Funnels/FunnelPage/FunnelPage.tsx
index f4b3da812..57e2c7fe0 100644
--- a/frontend/app/components/Funnels/FunnelPage/FunnelPage.tsx
+++ b/frontend/app/components/Funnels/FunnelPage/FunnelPage.tsx
@@ -1,5 +1,6 @@
import React from 'react';
import { Switch, Route } from 'react-router';
+import FunnelDetails from '../FunnelDetails/FunnelDetails';
import FunnelList from '../FunnelList';
function FunnelPage(props) {
@@ -9,6 +10,14 @@ function FunnelPage(props) {
+
+
+
+
+
+ {/*
+
+ */}
);
diff --git a/frontend/app/components/Funnels/FunnelSearch/FunnelSearch.tsx b/frontend/app/components/Funnels/FunnelSearch/FunnelSearch.tsx
new file mode 100644
index 000000000..ba36b7d9e
--- /dev/null
+++ b/frontend/app/components/Funnels/FunnelSearch/FunnelSearch.tsx
@@ -0,0 +1,34 @@
+import { useObserver } from 'mobx-react-lite';
+import React, { useEffect, useState } from 'react';
+import { useStore } from 'App/mstore';
+import { Icon } from 'UI';
+import { debounce } from 'App/utils';
+
+let debounceUpdate: any = () => {}
+function FunnelSearch(props) {
+ const { funnelStore } = useStore();
+ const [query, setQuery] = useState(funnelStore.search);
+ useEffect(() => {
+ debounceUpdate = debounce((key, value) => funnelStore.updateKey(key, value), 500);
+ }, [])
+
+ const write = ({ target: { name, value } }) => {
+ setQuery(value);
+ debounceUpdate('metricsSearch', value);
+ }
+
+ return useObserver(() => (
+
+
+
+
+ ));
+}
+
+export default FunnelSearch;
\ No newline at end of file
diff --git a/frontend/app/components/Funnels/FunnelSearch/index.ts b/frontend/app/components/Funnels/FunnelSearch/index.ts
new file mode 100644
index 000000000..2db683671
--- /dev/null
+++ b/frontend/app/components/Funnels/FunnelSearch/index.ts
@@ -0,0 +1 @@
+export { default } from './FunnelSearch';
\ No newline at end of file
diff --git a/frontend/app/mstore/funnelStore.ts b/frontend/app/mstore/funnelStore.ts
index 721adeb6b..1913b2506 100644
--- a/frontend/app/mstore/funnelStore.ts
+++ b/frontend/app/mstore/funnelStore.ts
@@ -9,6 +9,7 @@ export default class FunnelStore {
list: IFunnel[] = []
instance: IFunnel | null = null
period: Period = Period({ rangeName: LAST_7_DAYS })
+ search: string = ''
page: number = 1
pageSize: number = 10
diff --git a/frontend/app/routes.js b/frontend/app/routes.js
index da458f46b..fd8859935 100644
--- a/frontend/app/routes.js
+++ b/frontend/app/routes.js
@@ -92,6 +92,7 @@ export const errors = params => queried('/errors', params);
export const error = (id = ':errorId', hash) => hashed(`/errors/${ id }`, hash);
export const funnels = params => queried('/funnels', params)
+export const funnelsCreate = () => `/funnels/create`;
export const funnel = (id = ':funnelId', hash) => hashed(`/funnels/${ id }`, hash);
export const funnelIssue = (id = ':funnelId', issueId = ':issueId', hash) => hashed(`/funnels/${ id }/${ issueId}`, hash);
@@ -135,6 +136,7 @@ const REQUIRED_SITE_ID_ROUTES = [
errors(),
onboarding(''),
funnels(''),
+ funnelsCreate(''),
funnel(''),
funnelIssue(''),
];