{"componentChunkName":"component---src-templates-post-js","path":"/create-booking-forms-part-one","result":{"data":{"markdownRemark":{"html":"<p>In this three part section we will create the booking booking forms as well us hook up our local resolvers to the forms.</p>\n<p>First up create a <code class=\"language-text\">booking</code> folder in the pages directory, and create an <code class=\"language-text\">index.js</code> with the following:</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> React<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span> useState <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\"react\"</span>\n<span class=\"token keyword\">import</span> Tabs <span class=\"token keyword\">from</span> <span class=\"token string\">\"../../components/navs/Tabs\"</span>\n<span class=\"token keyword\">import</span> CustomerDetails <span class=\"token keyword\">from</span> <span class=\"token string\">\"./CustomerDetails\"</span>\n<span class=\"token keyword\">import</span> Customers <span class=\"token keyword\">from</span> <span class=\"token string\">\"./Customers\"</span>\n<span class=\"token keyword\">import</span> Checkout <span class=\"token keyword\">from</span> <span class=\"token string\">\"./Checkout\"</span>\n<span class=\"token keyword\">import</span> ConfirmationTab <span class=\"token keyword\">from</span> <span class=\"token string\">\"./ConfirmationTab\"</span>\n<span class=\"token keyword\">const</span> <span class=\"token function-variable function\">BookingIndex</span> <span class=\"token operator\">=</span> <span class=\"token parameter\">props</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">const</span> <span class=\"token punctuation\">[</span>activeTab<span class=\"token punctuation\">,</span> setActiveTab<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">useState</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"1\"</span><span class=\"token punctuation\">)</span>\n\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token operator\">&lt;</span><span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>Tabs activeKey<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>activeTab<span class=\"token punctuation\">}</span><span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>Tabs<span class=\"token punctuation\">.</span>TabPane key<span class=\"token operator\">=</span><span class=\"token string\">\"1\"</span> className<span class=\"token operator\">=</span><span class=\"token string\">\"flex justify-center\"</span><span class=\"token operator\">></span>\n          <span class=\"token operator\">&lt;</span>CustomerDetails setActiveTab<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>setActiveTab<span class=\"token punctuation\">}</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Tabs<span class=\"token punctuation\">.</span>TabPane<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>Tabs<span class=\"token punctuation\">.</span>TabPane key<span class=\"token operator\">=</span><span class=\"token string\">\"2\"</span> className<span class=\"token operator\">=</span><span class=\"token string\">\"flex justify-center\"</span><span class=\"token operator\">></span>\n          <span class=\"token operator\">&lt;</span>Customers setActiveTab<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>setActiveTab<span class=\"token punctuation\">}</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Tabs<span class=\"token punctuation\">.</span>TabPane<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>Tabs<span class=\"token punctuation\">.</span>TabPane key<span class=\"token operator\">=</span><span class=\"token string\">\"3\"</span> className<span class=\"token operator\">=</span><span class=\"token string\">\"flex justify-center\"</span><span class=\"token operator\">></span>\n          <span class=\"token operator\">&lt;</span>Checkout setActiveTab<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>setActiveTab<span class=\"token punctuation\">}</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Tabs<span class=\"token punctuation\">.</span>TabPane<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>Tabs<span class=\"token punctuation\">.</span>TabPane key<span class=\"token operator\">=</span><span class=\"token string\">\"4\"</span> className<span class=\"token operator\">=</span><span class=\"token string\">\"flex justify-center\"</span><span class=\"token operator\">></span>\n          <span class=\"token operator\">&lt;</span>ConfirmationTab setActiveTab<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>setActiveTab<span class=\"token punctuation\">}</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Tabs<span class=\"token punctuation\">.</span>TabPane<span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Tabs<span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span><span class=\"token operator\">></span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> BookingIndex</code></pre></div>\n<p>🌊 Here we have a component with tabs that are hidden to allow the user to navigate between different forms.</p>\n<p>🌊 Don't worry about some of the other components we will create them. We have an <code class=\"language-text\">activeTab</code> variable that tells the component which tab should be active, we then pass down the <code class=\"language-text\">setActiveTab</code> hook down to each component so that we can change the active tabs when the user is in any component.</p>\n<p>Next go into the <code class=\"language-text\">navs</code> directory and create a file called <code class=\"language-text\">Tabs.js</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> styled <span class=\"token keyword\">from</span> <span class=\"token string\">\"styled-components\"</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> Tabs <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\"antd\"</span>\n<span class=\"token keyword\">const</span> TabStyles <span class=\"token operator\">=</span> <span class=\"token function\">styled</span><span class=\"token punctuation\">(</span>Tabs<span class=\"token punctuation\">)</span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">\n  .ant-tabs-bar.ant-tabs-top-bar {\n    display: none;\n  }\n</span><span class=\"token template-punctuation string\">`</span></span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> TabStyles</code></pre></div>\n<p>🌊 Here we are basically overriting the styles from Ant Design for the Tabs so that we can hide the Tab bar with Styled Components</p>\n<p>Next up lets add the route of the Booking index file:</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">\"react\"</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> Router <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\"@reach/router\"</span>\n<span class=\"token keyword\">import</span> Home <span class=\"token keyword\">from</span> <span class=\"token string\">\"./pages/index\"</span>\n<span class=\"token keyword\">import</span> ViewListing <span class=\"token keyword\">from</span> <span class=\"token string\">\"./pages/ViewListing\"</span>\n<span class=\"token keyword\">import</span> BookingIndex <span class=\"token keyword\">from</span> <span class=\"token string\">\"./pages/booking\"</span>\n<span class=\"token keyword\">const</span> <span class=\"token function-variable function\">Routes</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> props <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token operator\">&lt;</span>Router<span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>Home path<span class=\"token operator\">=</span><span class=\"token string\">\"/\"</span> props<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>props<span class=\"token punctuation\">}</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>ViewListing path<span class=\"token operator\">=</span><span class=\"token string\">\"/listing/:id\"</span> props<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>props<span class=\"token punctuation\">}</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>BookingIndex path<span class=\"token operator\">=</span><span class=\"token string\">\"/booking/:id\"</span> props<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>props<span class=\"token punctuation\">}</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Router<span class=\"token operator\">></span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> Routes</code></pre></div>\n<p>Make sure your <code class=\"language-text\">routes.js</code> component now looks like the above.</p>","frontmatter":{"date":"July 29, 2020","path":"/create-booking-forms-part-one","title":"Create Booking Forms Pt.1","postnumber":47}}},"pageContext":{"previous":{"node":{"frontmatter":{"path":"/create-booking-forms-part-two","postnumber":48}}},"next":{"node":{"frontmatter":{"path":"/setup-apollo-cache","postnumber":46}}}}},"staticQueryHashes":["3207677222","3649515864","63159454"]}