PageRenderTime 26ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/client/containers/slides/index.js

https://gitlab.com/losch/react-presentation
JavaScript | 215 lines | 163 code | 37 blank | 15 comment | 3 complexity | 276dd26f9ef9376b935294705beace99 MD5 | raw file
  1. /* eslint-disable react/display-name */
  2. import React from 'react';
  3. import MarkdownComponent from '../../components/MarkdownComponent';
  4. import { HelloWorldEs6Func } from './components/HelloWorld';
  5. import Soap from './props-and-state/Soap';
  6. import End from './the-end/End';
  7. if (module.hot) {
  8. module.hot.accept();
  9. }
  10. class Title extends React.Component {
  11. render() {
  12. return <div className="title-page"><h1>{this.props.children}</h1></div>;
  13. }
  14. }
  15. Title.propTypes = {
  16. children: React.PropTypes.array
  17. };
  18. class ComponentDemo extends React.Component {
  19. render() {
  20. let { src, element } = this.props;
  21. if (element) {
  22. return (
  23. <div>
  24. <h1>{this.props.title}</h1>
  25. <div className="mui-col-md-6 mui-panel">
  26. { <MarkdownComponent
  27. contents={'```javascript\n' + src + '\n```'}/> }
  28. </div>
  29. <div className="mui-col-md-6">
  30. { React.createElement(element, null) }
  31. </div>
  32. </div>
  33. );
  34. }
  35. else {
  36. return (
  37. <div>
  38. <h1>{this.props.title}</h1>
  39. <div className="mui-col-md-12 mui-panel">
  40. { <MarkdownComponent
  41. contents={'```javascript\n' + src + '\n```'}/> }
  42. </div>
  43. </div>
  44. );
  45. }
  46. }
  47. }
  48. ComponentDemo.propTypes = {
  49. title: React.PropTypes.string.isRequired,
  50. src: React.PropTypes.string.isRequired,
  51. element: React.PropTypes.element
  52. };
  53. export const SLIDES = [
  54. // What is React?
  55. () => <MarkdownComponent contents={require('raw-loader!./what-is-react/1.md')} />,
  56. () => <MarkdownComponent contents={require('raw-loader!./what-is-react/1-1.md')} />,
  57. () => <MarkdownComponent contents={require('raw-loader!./what-is-react/2-virtual-dom.md')} />,
  58. // Component demo
  59. () => <Title>Komponenttidemoja</Title>,
  60. () => <MarkdownComponent contents={require('raw-loader!./components/3-demo-1-1.md')} />,
  61. () => <MarkdownComponent contents={require('raw-loader!./components/3-demo-1-2.md')} />,
  62. () => <div className="mui-panel example-panel"><HelloWorldEs6Func /></div>,
  63. () => <MarkdownComponent contents={require('raw-loader!./components/3-demo-2-1.md')} />,
  64. () => <ComponentDemo
  65. title="Esimerkki: React-komponenttien yhdistäminen"
  66. src={require('!raw!./components/MealPlan.jsx')}
  67. element={require('./components/MealPlan.jsx').default} />,
  68. () => <ComponentDemo
  69. title="Esimerkki: React-komponenttien yhdistäminen #2"
  70. src={require('!raw!./components/MealPlan2.jsx')}
  71. element={require('./components/MealPlan2.jsx').default} />,
  72. () => <MarkdownComponent contents={require('raw-loader!./components/3.md')} />,
  73. () => <MarkdownComponent contents={require('raw-loader!./components/4.md')} />,
  74. () => <ComponentDemo
  75. title="Esimerkki: MarkdownComponent"
  76. src={require('!raw!../../components/MarkdownComponent.jsx')} />,
  77. // JSX
  78. () => <Title>JSX</Title>,
  79. () => <MarkdownComponent contents={require('raw-loader!./jsx/1.md')} />,
  80. () => <MarkdownComponent contents={require('raw-loader!./jsx/2.md')} />,
  81. // Event handling
  82. () => <Title>Tapahtumien käsittely</Title>,
  83. () => <MarkdownComponent contents={require('raw-loader!./events/1.md')} />,
  84. () => <ComponentDemo
  85. title="Esimerkki: onClick-tapahtumakäsittely"
  86. src={require('!raw!./events/Buttons.jsx')}
  87. element={require('./events/Buttons.jsx').default} />,
  88. () => <MarkdownComponent contents={require('raw-loader!./events/2.md')} />,
  89. // Props & propTypes
  90. () => <Title>Komponenttien tilanhallinta</Title>,
  91. () => <MarkdownComponent contents={require('raw-loader!./props-and-state/1.md')} />,
  92. () => <MarkdownComponent contents={require('raw-loader!./props-and-state/2.md')} />,
  93. () => <Soap title="Puuttuvat propTypes-määrittelyt" />,
  94. () => <ComponentDemo
  95. title="Esimerkki: Propertyjen välittäminen"
  96. src={require('!raw!./props-and-state/PropsPassing.jsx')}
  97. element={require('./props-and-state/PropsPassing.jsx').default} />,
  98. // State
  99. () => <MarkdownComponent contents={require('raw-loader!./props-and-state/5-state.md')} />,
  100. () =>
  101. <ComponentDemo
  102. title="Esimerkki: Pudotusvalikko"
  103. src={require('!raw!./props-and-state/DropDown.jsx')}
  104. element={require('./props-and-state/DropDown.jsx').default} />,
  105. // Lifecycle methods & mixins
  106. () => <Title>Elinkaarimetodit</Title>,
  107. () => <MarkdownComponent contents={require('raw-loader!./lifecycle/1.md')} />,
  108. () => <MarkdownComponent contents={require('raw-loader!./lifecycle/2.md')} />,
  109. () => <MarkdownComponent contents={require('raw-loader!./lifecycle/3.md')} />,
  110. () => <MarkdownComponent contents={require('raw-loader!./lifecycle/4.md')} />,
  111. () => <MarkdownComponent contents={require('raw-loader!./lifecycle/5.md')} />,
  112. () =>
  113. <ComponentDemo
  114. title="Esimerkki: Mixin"
  115. src={require('!raw!./lifecycle/Mixin.jsx')}
  116. element={require('./lifecycle/Mixin.jsx').default} />,
  117. () => <MarkdownComponent contents={require('raw-loader!./lifecycle/6.md')} />,
  118. () =>
  119. <ComponentDemo
  120. title="Esimerkki: Ulkoisten kirjastojen käyttäminen"
  121. src={require('!raw!./lifecycle/ExternalLib.jsx')}
  122. element={require('./lifecycle/ExternalLib.jsx').default} />,
  123. // Component design
  124. () => <Title>React-komponentin suunnittelu</Title>,
  125. () => <MarkdownComponent contents={require('raw-loader!./designing-component/1.md')} />,
  126. () => <MarkdownComponent contents={require('raw-loader!./designing-component/2.md')} />,
  127. () =>
  128. <ComponentDemo
  129. title="Esimerkki: Elokuvahaku / Input"
  130. src={require('!raw!./designing-component/Input.jsx')}
  131. element={require('./designing-component/Input.jsx').InputDemo} />,
  132. () =>
  133. <ComponentDemo
  134. title="Esimerkki: Elokuvahaku / Results"
  135. src={require('!raw!./designing-component/Results.jsx')}
  136. element={require('./designing-component/Results.jsx').ResultsDemo} />,
  137. () =>
  138. <ComponentDemo
  139. title="Esimerkki: Elokuvahaku / MovieSearch"
  140. src={require('!raw!./designing-component/MovieSearch.jsx')}
  141. element={require('./designing-component/MovieSearch.jsx').default} />,
  142. // State handling libraries
  143. () => <Title>Tilanhallintakirjastot</Title>,
  144. () => <MarkdownComponent contents={require('raw-loader!./state-containers/1.md')} />,
  145. () => <MarkdownComponent contents={require('raw-loader!./state-containers/2.md')} />,
  146. () => <MarkdownComponent contents={require('raw-loader!./state-containers/2-1.md')} />,
  147. () => <MarkdownComponent contents={require('raw-loader!./state-containers/3.md')} />,
  148. () =>
  149. <ComponentDemo
  150. title="Esimerkki: MovieSearch Redux"
  151. src={require('!raw!./state-containers/MovieSearchRedux.jsx')}
  152. element={require('./state-containers/MovieSearchRedux.jsx').default} />,
  153. // Testing React components
  154. () => <Title>Testaaminen</Title>,
  155. () => <MarkdownComponent contents={require('raw-loader!./testing/1.md')} />,
  156. () => <MarkdownComponent contents={require('raw-loader!./testing/2.md')} />,
  157. () => <MarkdownComponent contents={require('raw-loader!./testing/3.md')} />,
  158. () => <MarkdownComponent contents={require('raw-loader!./testing/4.md')} />,
  159. () => <Title>Yksikkötestidemo</Title>,
  160. () => <Title>React storybook</Title>,
  161. () => <MarkdownComponent contents={require('raw-loader!./testing/5.md')} />,
  162. () => <MarkdownComponent contents={require('raw-loader!./testing/6.md')} />,
  163. () => <Title>React storybook demo</Title>,
  164. // Installation
  165. () => <Title>Reactin asentaminen</Title>,
  166. () => <MarkdownComponent contents={require('raw-loader!./installation/1.md')} />,
  167. () => <MarkdownComponent contents={require('raw-loader!./installation/2.md')} />,
  168. // Server side rendering
  169. () => <Title>Serveripuolen renderöinti</Title>,
  170. () => <MarkdownComponent contents={require('raw-loader!./server-side/1.md')} />,
  171. // Best practises & more resources
  172. () => <Title>"Best practises"</Title>,
  173. () => <MarkdownComponent contents={require('raw-loader!./the-end/1.md')} />,
  174. () => <MarkdownComponent contents={require('raw-loader!./the-end/2.md')} />,
  175. // The end
  176. () => <Title>Kysymyksiä?</Title>,
  177. () => <End />
  178. ];