12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import './page.css';
- import { createHeader } from './Header';
- export const createPage = () => {
- const article = document.createElement('article');
- let user = null;
- let header = null;
- const rerenderHeader = () => {
- const wrapper = document.getElementsByTagName('article')[0];
- wrapper.replaceChild(createHeaderElement(), wrapper.firstChild);
- };
- const onLogin = () => {
- user = { name: 'Jane Doe' };
- rerenderHeader();
- };
- const onLogout = () => {
- user = null;
- rerenderHeader();
- };
- const onCreateAccount = () => {
- user = { name: 'Jane Doe' };
- rerenderHeader();
- };
- const createHeaderElement = () => {
- return createHeader({ onLogin, onLogout, onCreateAccount, user });
- };
- header = createHeaderElement();
- article.appendChild(header);
- const section = `
- <section>
- <h2>Pages in Storybook</h2>
- <p>
- We recommend building UIs with a
- <a
- href="https://blog.hichroma.com/component-driven-development-ce1109d56c8e"
- target="_blank"
- rel="noopener noreferrer">
- <strong>component-driven</strong>
- </a>
- process starting with atomic components and ending with pages.
- </p>
- <p>
- Render pages with mock data. This makes it easy to build and review page states without
- needing to navigate to them in your app. Here are some handy patterns for managing page data
- in Storybook:
- </p>
- <ul>
- <li>
- Use a higher-level connected component. Storybook helps you compose such data from the
- "args" of child component stories
- </li>
- <li>
- Assemble data in the page component from your services. You can mock these services out
- using Storybook.
- </li>
- </ul>
- <p>
- Get a guided tutorial on component-driven development at
- <a href="https://storybook.js.org/tutorials/" target="_blank" rel="noopener noreferrer">
- Storybook tutorials
- </a>
- . Read more in the
- <a href="https://storybook.js.org/docs" target="_blank" rel="noopener noreferrer">docs</a>
- .
- </p>
- <div class="tip-wrapper">
- <span class="tip">Tip</span>
- Adjust the width of the canvas with the
- <svg width="10" height="10" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
- <g fill="none" fillRule="evenodd">
- <path
- d="M1.5 5.2h4.8c.3 0 .5.2.5.4v5.1c-.1.2-.3.3-.4.3H1.4a.5.5 0
- 01-.5-.4V5.7c0-.3.2-.5.5-.5zm0-2.1h6.9c.3 0 .5.2.5.4v7a.5.5 0 01-1 0V4H1.5a.5.5 0
- 010-1zm0-2.1h9c.3 0 .5.2.5.4v9.1a.5.5 0 01-1 0V2H1.5a.5.5 0 010-1zm4.3 5.2H2V10h3.8V6.2z"
- id="a"
- fill="#999" />
- </g>
- </svg>
- Viewports addon in the toolbar
- </div>
- </section>
- `;
- article.insertAdjacentHTML('beforeend', section);
- return article;
- };
|