@duetds/cli 2.6.13 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/package.json +7 -8
  2. package/src/index.js +21 -0
  3. package/src/main.js +19 -19
  4. package/templates/angular/12.2.16/.browserlistrc +16 -0
  5. package/templates/angular/12.2.16/.depcheckrc +2 -0
  6. package/templates/angular/12.2.16/.editorconfig +16 -0
  7. package/templates/angular/12.2.16/.eslintrc.json +51 -0
  8. package/templates/angular/{.prettierignore → 12.2.16/.prettierignore} +0 -0
  9. package/templates/angular/12.2.16/.prettierrc +14 -0
  10. package/templates/angular/12.2.16/LICENSE.md +29 -0
  11. package/templates/angular/{README.md → 12.2.16/README.md} +5 -3
  12. package/templates/angular/{angular.json → 12.2.16/angular.json} +15 -4
  13. package/templates/angular/12.2.16/config/jest.base.ts +17 -0
  14. package/templates/angular/12.2.16/config/jest.setup.ts +24 -0
  15. package/templates/angular/12.2.16/package.file +58 -0
  16. package/templates/angular/12.2.16/playwright.config.ts +26 -0
  17. package/templates/angular/12.2.16/src/app/agreement.model.ts +3 -0
  18. package/templates/angular/12.2.16/src/app/app-routing.module.ts +11 -0
  19. package/templates/angular/{src → 12.2.16/src}/app/app.component.html +0 -0
  20. package/templates/angular/{src → 12.2.16/src}/app/app.component.scss +0 -0
  21. package/templates/angular/{src → 12.2.16/src}/app/app.component.ts +1 -1
  22. package/templates/angular/{src → 12.2.16/src}/app/app.module.ts +5 -11
  23. package/templates/angular/12.2.16/src/app/currency-formatter.service.ts +12 -0
  24. package/templates/angular/12.2.16/src/app/footer/footer.component.html +22 -0
  25. package/templates/angular/{src → 12.2.16/src}/app/footer/footer.component.scss +0 -0
  26. package/templates/angular/{src → 12.2.16/src}/app/footer/footer.component.ts +1 -1
  27. package/templates/angular/12.2.16/src/app/header/header.component.html +1 -0
  28. package/templates/angular/{src/app/index-page/index-page.component.scss → 12.2.16/src/app/header/header.component.scss} +0 -0
  29. package/templates/angular/12.2.16/src/app/header/header.component.ts +10 -0
  30. package/templates/angular/12.2.16/src/app/index-page/index-page.component.html +49 -0
  31. package/templates/angular/{src/app/injuries-page/injuries-page.component.scss → 12.2.16/src/app/index-page/index-page.component.scss} +0 -0
  32. package/templates/angular/12.2.16/src/app/index-page/index-page.component.ts +61 -0
  33. package/templates/angular/12.2.16/src/app/investment-amount/investment-amount.component.html +87 -0
  34. package/templates/angular/{src/app/insurance-page/insurance-page.component.scss → 12.2.16/src/app/investment-amount/investment-amount.component.scss} +0 -0
  35. package/templates/angular/12.2.16/src/app/investment-amount/investment-amount.component.ts +31 -0
  36. package/templates/angular/12.2.16/src/app/investment-origin/investment-origin.component.html +12 -0
  37. package/templates/angular/{src/assets/.gitkeep → 12.2.16/src/app/investment-origin/investment-origin.component.scss} +0 -0
  38. package/templates/angular/12.2.16/src/app/investment-origin/investment-origin.component.ts +24 -0
  39. package/templates/angular/12.2.16/src/app/summary/summary.component.html +74 -0
  40. package/templates/angular/12.2.16/src/app/summary/summary.component.scss +0 -0
  41. package/templates/angular/12.2.16/src/app/summary/summary.component.ts +16 -0
  42. package/templates/angular/12.2.16/src/assets/.gitkeep +0 -0
  43. package/templates/angular/{src → 12.2.16/src}/assets/img/android-chrome-192x192.png +0 -0
  44. package/templates/angular/{src → 12.2.16/src}/assets/img/apple-touch-icon-180x180.png +0 -0
  45. package/templates/angular/{src → 12.2.16/src}/assets/img/splash-screen-icon-512x512.png +0 -0
  46. package/templates/angular/{src → 12.2.16/src}/environments/environment.prod.ts +1 -1
  47. package/templates/angular/{src → 12.2.16/src}/environments/environment.ts +1 -1
  48. package/templates/angular/{src → 12.2.16/src}/favicon.ico +0 -0
  49. package/templates/angular/{src → 12.2.16/src}/index.html +1 -1
  50. package/templates/angular/{src → 12.2.16/src}/main.ts +0 -0
  51. package/templates/angular/{src → 12.2.16/src}/manifest.json +0 -0
  52. package/templates/angular/{src → 12.2.16/src}/polyfills.ts +0 -0
  53. package/templates/angular/{src → 12.2.16/src}/styles.scss +0 -0
  54. package/templates/angular/12.2.16/src/tests/app.test.ts +13 -0
  55. package/templates/angular/12.2.16/src/tests/playwright/playwright.test.ts +54 -0
  56. package/templates/angular/12.2.16/src/tests/playwright/playwright.test.ts-snapshots/angular-13-2-4-1-chromium-darwin.png +0 -0
  57. package/templates/angular/12.2.16/src/tests/playwright/playwright.test.ts-snapshots/angular-13-2-4-2-chromium-darwin.png +0 -0
  58. package/templates/angular/12.2.16/src/tests/playwright/playwright.test.ts-snapshots/angular-13-2-4-3-chromium-darwin.png +0 -0
  59. package/templates/angular/12.2.16/src/tests/playwright/playwright.test.ts-snapshots/angular-13-2-4-4-chromium-darwin.png +0 -0
  60. package/templates/angular/12.2.16/src/tests/playwright/playwright.test.ts-snapshots/angular-13-2-4-5-chromium-darwin.png +0 -0
  61. package/templates/angular/12.2.16/src/tests/playwright/playwright.test.ts-snapshots/code-chromium-darwin.json +16 -0
  62. package/templates/angular/12.2.16/src/utils/string.utils.ts +1 -0
  63. package/templates/angular/{tsconfig.app.json → 12.2.16/tsconfig.app.json} +0 -1
  64. package/templates/angular/{tsconfig.base.json → 12.2.16/tsconfig.base.json} +1 -1
  65. package/templates/angular/12.2.16/tsconfig.json +8 -0
  66. package/templates/angular/12.2.16/tsconfig.spec.json +15 -0
  67. package/templates/angular/{tslint.json → 12.2.16/tslint.json} +0 -0
  68. package/templates/angular/13.2.4/.browserlistrc +16 -0
  69. package/templates/angular/13.2.4/.depcheckrc +2 -0
  70. package/templates/angular/13.2.4/.editorconfig +16 -0
  71. package/templates/angular/13.2.4/.eslintrc.json +51 -0
  72. package/templates/{html → angular/13.2.4}/.prettierignore +0 -0
  73. package/templates/angular/13.2.4/.prettierrc +14 -0
  74. package/templates/angular/13.2.4/LICENSE.md +29 -0
  75. package/templates/angular/13.2.4/README.md +32 -0
  76. package/templates/angular/13.2.4/angular.json +122 -0
  77. package/templates/angular/13.2.4/config/jest.base.ts +17 -0
  78. package/templates/angular/13.2.4/config/jest.setup.ts +24 -0
  79. package/templates/angular/13.2.4/package.file +59 -0
  80. package/templates/angular/13.2.4/playwright.config.ts +26 -0
  81. package/templates/angular/13.2.4/src/app/agreement.model.ts +3 -0
  82. package/templates/angular/13.2.4/src/app/app-routing.module.ts +11 -0
  83. package/templates/angular/13.2.4/src/app/app.component.html +5 -0
  84. package/templates/angular/13.2.4/src/app/app.component.scss +0 -0
  85. package/templates/angular/13.2.4/src/app/app.component.ts +10 -0
  86. package/templates/angular/13.2.4/src/app/app.module.ts +21 -0
  87. package/templates/angular/13.2.4/src/app/currency-formatter.service.ts +12 -0
  88. package/templates/angular/13.2.4/src/app/footer/footer.component.html +22 -0
  89. package/templates/angular/13.2.4/src/app/footer/footer.component.scss +0 -0
  90. package/templates/angular/13.2.4/src/app/footer/footer.component.ts +10 -0
  91. package/templates/angular/13.2.4/src/app/header/header.component.html +1 -0
  92. package/templates/angular/13.2.4/src/app/header/header.component.scss +0 -0
  93. package/templates/angular/13.2.4/src/app/header/header.component.ts +10 -0
  94. package/templates/angular/13.2.4/src/app/index-page/index-page.component.html +49 -0
  95. package/templates/angular/13.2.4/src/app/index-page/index-page.component.scss +0 -0
  96. package/templates/angular/13.2.4/src/app/index-page/index-page.component.ts +61 -0
  97. package/templates/angular/13.2.4/src/app/investment-amount/investment-amount.component.html +87 -0
  98. package/templates/angular/13.2.4/src/app/investment-amount/investment-amount.component.scss +0 -0
  99. package/templates/angular/13.2.4/src/app/investment-amount/investment-amount.component.ts +31 -0
  100. package/templates/angular/13.2.4/src/app/investment-origin/investment-origin.component.html +12 -0
  101. package/templates/angular/13.2.4/src/app/investment-origin/investment-origin.component.scss +0 -0
  102. package/templates/angular/13.2.4/src/app/investment-origin/investment-origin.component.ts +24 -0
  103. package/templates/angular/13.2.4/src/app/summary/summary.component.html +74 -0
  104. package/templates/angular/13.2.4/src/app/summary/summary.component.scss +0 -0
  105. package/templates/angular/13.2.4/src/app/summary/summary.component.ts +16 -0
  106. package/templates/angular/13.2.4/src/assets/.gitkeep +0 -0
  107. package/templates/{eleventy-ssr → angular/13.2.4}/src/assets/img/android-chrome-192x192.png +0 -0
  108. package/templates/{eleventy-ssr → angular/13.2.4}/src/assets/img/apple-touch-icon-180x180.png +0 -0
  109. package/templates/{eleventy-ssr → angular/13.2.4}/src/assets/img/splash-screen-icon-512x512.png +0 -0
  110. package/templates/angular/13.2.4/src/environments/environment.prod.ts +3 -0
  111. package/templates/angular/13.2.4/src/environments/environment.ts +16 -0
  112. package/templates/{eleventy-ssr → angular/13.2.4}/src/favicon.ico +0 -0
  113. package/templates/angular/13.2.4/src/index.html +24 -0
  114. package/templates/angular/13.2.4/src/main.ts +13 -0
  115. package/templates/{react/public → angular/13.2.4/src}/manifest.json +0 -0
  116. package/templates/angular/13.2.4/src/polyfills.ts +62 -0
  117. package/templates/angular/13.2.4/src/styles.scss +3 -0
  118. package/templates/angular/13.2.4/src/tests/app.test.ts +13 -0
  119. package/templates/angular/13.2.4/src/tests/playwright/playwright.test.ts +54 -0
  120. package/templates/angular/13.2.4/src/tests/playwright/playwright.test.ts-snapshots/angular-13-2-4-1-chromium-darwin.png +0 -0
  121. package/templates/angular/13.2.4/src/tests/playwright/playwright.test.ts-snapshots/angular-13-2-4-2-chromium-darwin.png +0 -0
  122. package/templates/angular/13.2.4/src/tests/playwright/playwright.test.ts-snapshots/angular-13-2-4-3-chromium-darwin.png +0 -0
  123. package/templates/angular/13.2.4/src/tests/playwright/playwright.test.ts-snapshots/angular-13-2-4-4-chromium-darwin.png +0 -0
  124. package/templates/angular/13.2.4/src/tests/playwright/playwright.test.ts-snapshots/angular-13-2-4-5-chromium-darwin.png +0 -0
  125. package/templates/angular/13.2.4/src/tests/playwright/playwright.test.ts-snapshots/code-chromium-darwin.json +16 -0
  126. package/templates/angular/13.2.4/src/utils/string.utils.ts +1 -0
  127. package/templates/angular/13.2.4/tsconfig.app.json +9 -0
  128. package/templates/angular/13.2.4/tsconfig.base.json +17 -0
  129. package/templates/angular/13.2.4/tsconfig.json +8 -0
  130. package/templates/angular/13.2.4/tsconfig.spec.json +15 -0
  131. package/templates/eleventy/{.eleventy.js → 0.10.0/.eleventy.js} +0 -0
  132. package/templates/eleventy/{.prettierignore → 0.10.0/.prettierignore} +0 -0
  133. package/templates/eleventy/{README.md → 0.10.0/README.md} +0 -0
  134. package/templates/eleventy/{gulpfile.js → 0.10.0/gulpfile.js} +0 -0
  135. package/templates/eleventy/{package.file → 0.10.0/package.file} +0 -0
  136. package/templates/{react/public → eleventy/0.10.0/src}/assets/img/android-chrome-192x192.png +0 -0
  137. package/templates/{react/public → eleventy/0.10.0/src}/assets/img/apple-touch-icon-180x180.png +0 -0
  138. package/templates/{react/public → eleventy/0.10.0/src}/assets/img/splash-screen-icon-512x512.png +0 -0
  139. package/templates/eleventy/{src → 0.10.0/src}/css/main.scss +0 -0
  140. package/templates/eleventy/{src → 0.10.0/src}/css/partials/_example.scss +0 -0
  141. package/templates/eleventy/{src → 0.10.0/src}/data/duet.js +0 -0
  142. package/templates/{html → eleventy/0.10.0}/src/favicon.ico +0 -0
  143. package/templates/eleventy/{src → 0.10.0/src}/includes/footer.njk +0 -0
  144. package/templates/eleventy/{src → 0.10.0/src}/includes/header.njk +0 -0
  145. package/templates/eleventy/{src → 0.10.0/src}/includes/layout.njk +0 -0
  146. package/templates/eleventy/{src → 0.10.0/src}/index.njk +0 -0
  147. package/templates/eleventy/{src → 0.10.0/src}/js/scripts.js +0 -0
  148. package/templates/eleventy/{src → 0.10.0/src}/manifest.json +0 -0
  149. package/templates/eleventy/{src → 0.10.0/src}/robots.txt +0 -0
  150. package/templates/eleventy/{src → 0.10.0/src}/vahinkoasiat.njk +0 -0
  151. package/templates/eleventy/{src → 0.10.0/src}/vakuutukset.njk +0 -0
  152. package/templates/eleventy-ssr/{.eleventy.js → 0.10.0/.eleventy.js} +0 -0
  153. package/templates/eleventy-ssr/{.prettierignore → 0.10.0/.prettierignore} +0 -0
  154. package/templates/eleventy-ssr/{README.md → 0.10.0/README.md} +0 -0
  155. package/templates/eleventy-ssr/{gulpfile.js → 0.10.0/gulpfile.js} +0 -0
  156. package/templates/eleventy-ssr/{package.file → 0.10.0/package.file} +0 -0
  157. package/templates/{eleventy → eleventy-ssr/0.10.0}/src/assets/img/android-chrome-192x192.png +0 -0
  158. package/templates/{eleventy → eleventy-ssr/0.10.0}/src/assets/img/apple-touch-icon-180x180.png +0 -0
  159. package/templates/{eleventy → eleventy-ssr/0.10.0}/src/assets/img/splash-screen-icon-512x512.png +0 -0
  160. package/templates/eleventy-ssr/{src → 0.10.0/src}/css/main.scss +0 -0
  161. package/templates/eleventy-ssr/{src → 0.10.0/src}/css/partials/_example.scss +0 -0
  162. package/templates/eleventy-ssr/{src → 0.10.0/src}/data/duet.js +0 -0
  163. package/templates/{eleventy → eleventy-ssr/0.10.0}/src/favicon.ico +0 -0
  164. package/templates/eleventy-ssr/{src → 0.10.0/src}/includes/footer.njk +0 -0
  165. package/templates/eleventy-ssr/{src → 0.10.0/src}/includes/header.njk +0 -0
  166. package/templates/eleventy-ssr/{src → 0.10.0/src}/includes/layout.njk +0 -0
  167. package/templates/eleventy-ssr/{src → 0.10.0/src}/index.njk +0 -0
  168. package/templates/eleventy-ssr/{src → 0.10.0/src}/js/scripts.js +0 -0
  169. package/templates/eleventy-ssr/{src → 0.10.0/src}/manifest.json +0 -0
  170. package/templates/eleventy-ssr/{src → 0.10.0/src}/robots.txt +0 -0
  171. package/templates/eleventy-ssr/{src → 0.10.0/src}/vahinkoasiat.njk +0 -0
  172. package/templates/eleventy-ssr/{src → 0.10.0/src}/vakuutukset.njk +0 -0
  173. package/templates/{react → html/2.0.0}/.prettierignore +0 -0
  174. package/templates/html/{README.md → 2.0.0/README.md} +0 -0
  175. package/templates/html/{package.file → 2.0.0/package.file} +0 -0
  176. package/templates/{react/public → html/2.0.0/src}/favicon.ico +0 -0
  177. package/templates/html/{src → 2.0.0/src}/index.html +0 -0
  178. package/templates/react/16.14.0/.prettierignore +3 -0
  179. package/templates/react/16.14.0/LICENSE.md +29 -0
  180. package/templates/react/{README.md → 16.14.0/README.md} +2 -2
  181. package/templates/react/16.14.0/package-lock.json +15324 -0
  182. package/templates/react/16.14.0/package.file +39 -0
  183. package/templates/react/16.14.0/playwright.config.mjs +26 -0
  184. package/templates/react/16.14.0/public/assets/img/android-chrome-192x192.png +0 -0
  185. package/templates/react/16.14.0/public/assets/img/apple-touch-icon-180x180.png +0 -0
  186. package/templates/react/16.14.0/public/assets/img/splash-screen-icon-512x512.png +0 -0
  187. package/templates/react/16.14.0/public/favicon.ico +0 -0
  188. package/templates/react/{public → 16.14.0/public}/index.html +1 -1
  189. package/templates/react/16.14.0/public/manifest.json +19 -0
  190. package/templates/react/16.14.0/src/App.js +138 -0
  191. package/templates/react/16.14.0/src/components/Footer.js +24 -0
  192. package/templates/react/16.14.0/src/components/Header.js +7 -0
  193. package/templates/react/16.14.0/src/components/InvestmentAmount.js +139 -0
  194. package/templates/react/16.14.0/src/components/InvestmentOrigin.js +89 -0
  195. package/templates/react/16.14.0/src/components/Summary.js +96 -0
  196. package/templates/react/{src → 16.14.0/src}/index.js +0 -0
  197. package/templates/react/{src → 16.14.0/src}/index.scss +0 -0
  198. package/templates/react/{src → 16.14.0/src}/serviceWorker.js +0 -0
  199. package/templates/react/16.14.0/src/tests/playwright/playwright.test.mjs +54 -0
  200. package/templates/react/16.14.0/src/tests/playwright/playwright.test.mjs-snapshots/app-1-chromium-darwin.png +0 -0
  201. package/templates/react/16.14.0/src/tests/playwright/playwright.test.mjs-snapshots/app-2-chromium-darwin.png +0 -0
  202. package/templates/react/16.14.0/src/tests/playwright/playwright.test.mjs-snapshots/app-3-chromium-darwin.png +0 -0
  203. package/templates/react/16.14.0/src/tests/playwright/playwright.test.mjs-snapshots/app-4-chromium-darwin.png +0 -0
  204. package/templates/react/16.14.0/src/tests/playwright/playwright.test.mjs-snapshots/app-5-chromium-darwin.png +0 -0
  205. package/templates/react/16.14.0/src/tests/playwright/playwright.test.mjs-snapshots/code-chromium-darwin.json +16 -0
  206. package/templates/react/17.0.2/LICENSE.md +29 -0
  207. package/templates/react/17.0.2/README.md +54 -0
  208. package/templates/react/17.0.2/package-lock.json +10713 -0
  209. package/templates/react/17.0.2/package.file +39 -0
  210. package/templates/react/17.0.2/playwright.config.mjs +26 -0
  211. package/templates/react/17.0.2/public/assets/img/android-chrome-192x192.png +0 -0
  212. package/templates/react/17.0.2/public/assets/img/apple-touch-icon-180x180.png +0 -0
  213. package/templates/react/17.0.2/public/assets/img/splash-screen-icon-512x512.png +0 -0
  214. package/templates/react/17.0.2/public/favicon.ico +0 -0
  215. package/templates/react/17.0.2/public/index.html +48 -0
  216. package/templates/react/17.0.2/public/manifest.json +19 -0
  217. package/templates/react/17.0.2/src/App.js +138 -0
  218. package/templates/react/17.0.2/src/components/Footer.js +24 -0
  219. package/templates/react/17.0.2/src/components/Header.js +7 -0
  220. package/templates/react/17.0.2/src/components/InvestmentAmount.js +139 -0
  221. package/templates/react/17.0.2/src/components/InvestmentOrigin.js +89 -0
  222. package/templates/react/17.0.2/src/components/Summary.js +96 -0
  223. package/templates/react/17.0.2/src/index.js +17 -0
  224. package/templates/react/17.0.2/src/index.scss +2 -0
  225. package/templates/react/17.0.2/src/serviceWorker.js +141 -0
  226. package/templates/react/17.0.2/src/tests/playwright/playwright.test.mjs +54 -0
  227. package/templates/react/17.0.2/src/tests/playwright/playwright.test.mjs-snapshots/app-1-chromium-darwin.png +0 -0
  228. package/templates/react/17.0.2/src/tests/playwright/playwright.test.mjs-snapshots/app-2-chromium-darwin.png +0 -0
  229. package/templates/react/17.0.2/src/tests/playwright/playwright.test.mjs-snapshots/app-3-chromium-darwin.png +0 -0
  230. package/templates/react/17.0.2/src/tests/playwright/playwright.test.mjs-snapshots/app-4-chromium-darwin.png +0 -0
  231. package/templates/react/17.0.2/src/tests/playwright/playwright.test.mjs-snapshots/app-5-chromium-darwin.png +0 -0
  232. package/templates/react/17.0.2/src/tests/playwright/playwright.test.mjs-snapshots/code-chromium-darwin.json +16 -0
  233. package/templates/angular/package.file +0 -49
  234. package/templates/angular/src/app/app-routing.module.ts +0 -17
  235. package/templates/angular/src/app/footer/footer.component.html +0 -15
  236. package/templates/angular/src/app/header/header.component.html +0 -22
  237. package/templates/angular/src/app/header/header.component.scss +0 -3
  238. package/templates/angular/src/app/header/header.component.ts +0 -54
  239. package/templates/angular/src/app/index-page/index-page.component.html +0 -53
  240. package/templates/angular/src/app/index-page/index-page.component.ts +0 -30
  241. package/templates/angular/src/app/injuries-page/injuries-page.component.html +0 -37
  242. package/templates/angular/src/app/injuries-page/injuries-page.component.ts +0 -18
  243. package/templates/angular/src/app/insurance-page/insurance-page.component.html +0 -43
  244. package/templates/angular/src/app/insurance-page/insurance-page.component.ts +0 -18
  245. package/templates/angular/tsconfig.json +0 -14
  246. package/templates/react/package.file +0 -48
  247. package/templates/react/src/App.js +0 -67
  248. package/templates/react/src/components/Footer.js +0 -17
  249. package/templates/react/src/components/Header.js +0 -38
@@ -0,0 +1,49 @@
1
+ <duet-layout center>
2
+ <div slot="top" role="region">
3
+ <duet-spacer breakpoint="large" size="x-large"></duet-spacer>
4
+ <duet-heading level="h1" visual-level="h2">Pääotsikko</duet-heading>
5
+ <duet-spacer></duet-spacer>
6
+ </div>
7
+ <div slot="main">
8
+ <form [formGroup]="form" (ngSubmit)="handleSubmit($event)">
9
+ <duet-stepper [selected]="currentStep" (duetStepChange)="handleStepChange($event)">
10
+ <duet-step heading="Perustiedot" formGroupName="investmentAmount">
11
+ <duet-paragraph>
12
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore etdolore
13
+ magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip.
14
+ </duet-paragraph>
15
+ <app-investment-amount
16
+ [form]="form.get('investmentAmount')"
17
+ [agreements]="agreements"
18
+ ></app-investment-amount>
19
+ <duet-spacer></duet-spacer>
20
+ <duet-button margin="none" variation="primary" (click)="handleNextClick($event)" [disabled]="form.invalid"
21
+ id="step1">Seuraava</duet-button
22
+ >
23
+ </duet-step>
24
+
25
+ <duet-step heading="Tarkemmat tiedot" formGroupName="investmentOrigin">
26
+ <duet-paragraph>
27
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore etdolore
28
+ magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip.
29
+ </duet-paragraph>
30
+ <app-investment-origin [form]="form.get('investmentOrigin')"></app-investment-origin>
31
+ <duet-spacer></duet-spacer>
32
+ <duet-button margin="none" variation="primary" (click)="handleNextClick($event)" [disabled]="form.invalid" id="step2">
33
+ Seuraava
34
+ </duet-button>
35
+ </duet-step>
36
+
37
+ <duet-step heading="Yhteenveto">
38
+ <duet-spacer></duet-spacer>
39
+ <app-summary [agreement]="selectedAgreement"></app-summary>
40
+ <duet-spacer></duet-spacer>
41
+ <duet-button submit margin="none" variation="primary" expand [disabled]="form.invalid" id="step3"> Lähetä </duet-button>
42
+ </duet-step>
43
+ </duet-stepper>
44
+ </form>
45
+ </div>
46
+ </duet-layout>
47
+ <duet-modal [active]="completed" heading="You entered the following data:">
48
+ <pre><code>{{ form.value | json }}</code></pre>
49
+ </duet-modal>
@@ -0,0 +1,61 @@
1
+ import { Component } from "@angular/core"
2
+ import { FormBuilder, Validators } from "@angular/forms"
3
+ import { Agreement } from "../agreement.model"
4
+
5
+ import { currencyFormatFI } from "../../utils/string.utils"
6
+
7
+ @Component({
8
+ selector: "app-index-page",
9
+ templateUrl: "./index-page.component.html",
10
+ styleUrls: ["./index-page.component.scss"]
11
+ })
12
+ export class IndexPageComponent {
13
+ constructor(private formBuilder: FormBuilder) {}
14
+
15
+ currentStep = 0
16
+ completed = false
17
+
18
+ form = this.formBuilder.group({
19
+ investmentAmount: this.formBuilder.group({
20
+ agreement: [null, [Validators.required]],
21
+ additionalInvestment: 50
22
+ }),
23
+ investmentOrigin: this.formBuilder.group({
24
+ salary: false,
25
+ gift: false,
26
+ heritage: false,
27
+ entrepreneurialIncome: false,
28
+ assets: false,
29
+ otherIncome: false,
30
+ investment: false,
31
+ extras: null
32
+ })
33
+ })
34
+
35
+ agreements: Record<number, Agreement> = {
36
+ 1: new Agreement("Vakuutus 1", 2500),
37
+ 2: new Agreement("Vakuutus 2", 1000)
38
+ }
39
+
40
+ get selectedAgreement() {
41
+ return this.agreements[this.form.value.investmentAmount.agreement]
42
+ }
43
+
44
+ formatNumber(value: number) {
45
+ return currencyFormatFI.format(value)
46
+ }
47
+
48
+ handleStepChange(event: CustomEvent) {
49
+ this.currentStep = event.detail.toStep
50
+ }
51
+
52
+ handleNextClick(event: Event) {
53
+ event.preventDefault()
54
+ this.currentStep++
55
+ }
56
+
57
+ handleSubmit(event: Event) {
58
+ event.preventDefault()
59
+ this.completed = true
60
+ }
61
+ }
@@ -0,0 +1,87 @@
1
+ <ng-container [formGroup]="form">
2
+ <duet-select
3
+ formControlName="agreement"
4
+ expand
5
+ label="Valitse sopimus"
6
+ placeholder="Valitse…"
7
+ [items]="agreementOptions"
8
+ >
9
+ </duet-select>
10
+ <duet-table variation="plain" *ngIf="selectedAgreement">
11
+ <table>
12
+ <thead>
13
+ <tr>
14
+ <th>Sijoituskohde</th>
15
+ <th class="duet-text-right">Osuus</th>
16
+ </tr>
17
+ </thead>
18
+ <tbody>
19
+ <tr>
20
+ <td>
21
+ <duet-button
22
+ variation="plain"
23
+ margin="none"
24
+ padding="none"
25
+ url="https://www.duetds.com/assets/downloads/localtapiola-brand-guidelines.pdf"
26
+ external
27
+ >
28
+ Kohde 1<duet-spacer size="xx-small" direction="horizontal"></duet-spacer>
29
+ <duet-visually-hidden>, avautuu uuteen ikkunaan</duet-visually-hidden>
30
+ </duet-button>
31
+ </td>
32
+ <td class="duet-text-right">25%</td>
33
+ </tr>
34
+ <tr>
35
+ <td>
36
+ <duet-button
37
+ variation="plain"
38
+ margin="none"
39
+ padding="none"
40
+ url="https://www.duetds.com/assets/downloads/localtapiola-brand-guidelines.pdf"
41
+ external
42
+ >
43
+ Kohde 2<duet-spacer size="xx-small" direction="horizontal"></duet-spacer>
44
+ <duet-visually-hidden>, avautuu uuteen ikkunaan</duet-visually-hidden>
45
+ </duet-button>
46
+ </td>
47
+ <td class="duet-text-right">25%</td>
48
+ </tr>
49
+ <tr>
50
+ <td>
51
+ <duet-button
52
+ variation="plain"
53
+ margin="none"
54
+ padding="none"
55
+ url="https://www.duetds.com/assets/downloads/localtapiola-brand-guidelines.pdf"
56
+ external
57
+ >
58
+ Kohde 3<duet-spacer size="xx-small" direction="horizontal"></duet-spacer>
59
+ <duet-visually-hidden>, avautuu uuteen ikkunaan</duet-visually-hidden>
60
+ </duet-button>
61
+ </td>
62
+ <td class="duet-text-right">50%</td>
63
+ </tr>
64
+ </tbody>
65
+ <tfoot>
66
+ <tr>
67
+ <td class="duet-font-weight-semi-bold">Yhteisarvo</td>
68
+ <td class="duet-text-right duet-font-weight-semi-bold duet-font-size-large">
69
+ {{ formatter.format(selectedAgreement.price) }}
70
+ </td>
71
+ </tr>
72
+ </tfoot>
73
+ </table>
74
+ </duet-table>
75
+ <duet-spacer></duet-spacer>
76
+ <duet-card variation="plain" background="gray-lighter">
77
+ <duet-input
78
+ formControlName="additionalInvestment"
79
+ numeric-keyboard
80
+ expand
81
+ label="Syötä summa"
82
+ placeholder="50"
83
+ icon="form-money"
84
+ type="number"
85
+ ></duet-input>
86
+ </duet-card>
87
+ </ng-container>
@@ -0,0 +1,31 @@
1
+ import { Component, OnInit, Input } from "@angular/core"
2
+ import { FormGroup } from "@angular/forms"
3
+ import { Agreement } from "../agreement.model"
4
+ import { CurrencyFormatterService } from "../currency-formatter.service"
5
+
6
+ @Component({
7
+ selector: "app-investment-amount",
8
+ templateUrl: "./investment-amount.component.html",
9
+ styleUrls: ["./investment-amount.component.scss"]
10
+ })
11
+ export class InvestmentAmountComponent implements OnInit {
12
+ @Input() agreements: Record<number, Agreement>
13
+ @Input() form: FormGroup
14
+
15
+ constructor(public formatter: CurrencyFormatterService) {}
16
+
17
+ ngOnInit(): void {}
18
+
19
+ get selectedAgreement() {
20
+ return this.agreements[this.form.value.agreement]
21
+ }
22
+
23
+ get agreementOptions() {
24
+ return Object.entries(this.agreements).map(([value, { label, price }]) => {
25
+ return {
26
+ value,
27
+ label: `${label} - ${this.formatter.format(price)}`
28
+ }
29
+ })
30
+ }
31
+ }
@@ -0,0 +1,12 @@
1
+ <ng-container [formGroup]="form">
2
+ <duet-checkbox formControlName="salary" label="Valinta 1"></duet-checkbox>
3
+ <duet-checkbox formControlName="gift" label="Valinta 2"></duet-checkbox>
4
+ <duet-checkbox formControlName="heritage" label="Valinta 3"></duet-checkbox>
5
+ <duet-checkbox formControlName="entrepreneurialIncome" label="Valinta 4"></duet-checkbox>
6
+ <duet-checkbox formControlName="assets" label="Valinta 5"></duet-checkbox>
7
+ <duet-checkbox formControlName="otherIncome" label="Valinta 6"></duet-checkbox>
8
+ <duet-checkbox label="Muu, mikä?" (duetChange)="handleExtrasChange($event)"></duet-checkbox>
9
+ <div *ngIf="hasExtras">
10
+ <duet-input formControlName="extras" label="Kerro sijoitettavien varojen muu alkuperä" label-hidden></duet-input>
11
+ </div>
12
+ </ng-container>
@@ -0,0 +1,24 @@
1
+ import { Component, OnInit, Input } from "@angular/core"
2
+ import { FormGroup } from "@angular/forms"
3
+
4
+ @Component({
5
+ selector: "app-investment-origin",
6
+ templateUrl: "./investment-origin.component.html",
7
+ styleUrls: ["./investment-origin.component.scss"]
8
+ })
9
+ export class InvestmentOriginComponent implements OnInit {
10
+ @Input() form: FormGroup
11
+ hasExtras = false
12
+
13
+ constructor() {}
14
+
15
+ ngOnInit(): void {}
16
+
17
+ handleExtrasChange(event: CustomEvent) {
18
+ this.hasExtras = event.detail.checked
19
+
20
+ if (!event.detail.checked) {
21
+ this.form.get("extras").setValue(null)
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,74 @@
1
+ <ng-container *ngIf="agreement">
2
+ <duet-input expand disabled label="Sopimus" [value]="agreement.label"></duet-input>
3
+ <duet-spacer></duet-spacer>
4
+ <duet-paragraph>Valitsemasi vaihtoehto jakautuu seuraavasti:</duet-paragraph>
5
+ <duet-table variation="plain">
6
+ <table>
7
+ <thead>
8
+ <tr>
9
+ <th>Sijoituskohde</th>
10
+ <th>Osuus</th>
11
+ <th class="duet-text-right">Summa</th>
12
+ </tr>
13
+ </thead>
14
+ <tbody>
15
+ <tr>
16
+ <td>
17
+ <duet-button
18
+ variation="plain"
19
+ margin="none"
20
+ padding="none"
21
+ url="https://www.duetds.com/assets/downloads/localtapiola-brand-guidelines.pdf"
22
+ external
23
+ >
24
+ Kohde 1<duet-spacer size="xx-small" direction="horizontal"></duet-spacer>
25
+ <duet-visually-hidden>, avautuu uuteen ikkunaan</duet-visually-hidden>
26
+ </duet-button>
27
+ </td>
28
+ <td>25%</td>
29
+ <td class="duet-text-right">{{ formatter.format(agreement.price * 0.25) }}</td>
30
+ </tr>
31
+ <tr>
32
+ <td>
33
+ <duet-button
34
+ variation="plain"
35
+ margin="none"
36
+ padding="none"
37
+ url="https://www.duetds.com/assets/downloads/localtapiola-brand-guidelines.pdf"
38
+ external
39
+ >
40
+ Kohde 2<duet-spacer size="xx-small" direction="horizontal"></duet-spacer>
41
+ <duet-visually-hidden>, avautuu uuteen ikkunaan</duet-visually-hidden>
42
+ </duet-button>
43
+ </td>
44
+ <td>25%</td>
45
+ <td class="duet-text-right">{{ formatter.format(agreement.price * 0.25) }}</td>
46
+ </tr>
47
+ <tr>
48
+ <td>
49
+ <duet-button
50
+ variation="plain"
51
+ margin="none"
52
+ padding="none"
53
+ url="https://www.duetds.com/assets/downloads/localtapiola-brand-guidelines.pdf"
54
+ external
55
+ >
56
+ Kohde 3<duet-spacer size="xx-small" direction="horizontal"></duet-spacer>
57
+ <duet-visually-hidden>, avautuu uuteen ikkunaan</duet-visually-hidden>
58
+ </duet-button>
59
+ </td>
60
+ <td>50%</td>
61
+ <td class="duet-text-right">{{ formatter.format(agreement.price * 0.5) }}</td>
62
+ </tr>
63
+ </tbody>
64
+ <tfoot>
65
+ <tr>
66
+ <td colspan="2" class="duet-font-weight-semi-bold">Sijoitettava summa</td>
67
+ <td class="duet-text-right duet-font-weight-semi-bold duet-font-size-large">
68
+ {{ formatter.format(agreement.price) }}
69
+ </td>
70
+ </tr>
71
+ </tfoot>
72
+ </table>
73
+ </duet-table>
74
+ </ng-container>
@@ -0,0 +1,16 @@
1
+ import { Component, OnInit, Input } from "@angular/core"
2
+ import { Agreement } from "../agreement.model"
3
+ import { CurrencyFormatterService } from "../currency-formatter.service"
4
+
5
+ @Component({
6
+ selector: "app-summary",
7
+ templateUrl: "./summary.component.html",
8
+ styleUrls: ["./summary.component.scss"]
9
+ })
10
+ export class SummaryComponent implements OnInit {
11
+ @Input() agreement: Agreement
12
+
13
+ constructor(public formatter: CurrencyFormatterService) {}
14
+
15
+ ngOnInit(): void {}
16
+ }
File without changes
@@ -1,3 +1,3 @@
1
1
  export const environment = {
2
- production: true,
2
+ production: true
3
3
  }
@@ -3,7 +3,7 @@
3
3
  // The list of file replacements can be found in `angular.json`.
4
4
 
5
5
  export const environment = {
6
- production: false,
6
+ production: false
7
7
  }
8
8
 
9
9
  /*
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <html lang="fi" class="duet-sticky-footer">
2
+ <html lang="fi" class="duet-sticky-footer duet-bg-gradient">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <base href="/" />
File without changes
@@ -0,0 +1,13 @@
1
+ import {currencyFormatFI} from "../utils/string.utils"
2
+
3
+ describe('Example test of the jest setup running', () => {
4
+ test('formatter should format correctly', () => {
5
+ console.log(currencyFormatFI)
6
+ const formatStub = currencyFormatFI.format(12.90)
7
+ expect(formatStub).toBe("12,90 €")
8
+ });
9
+
10
+ test('Should do another thing', () => {
11
+ // do something...
12
+ });
13
+ });
@@ -0,0 +1,54 @@
1
+ import { test, expect } from '@playwright/test';
2
+
3
+ test.use({
4
+ viewport: { width: 1800, height: 2500 },
5
+ bypassCSP: true,
6
+ deviceScaleFactor: 1,
7
+ })
8
+
9
+
10
+ test('angular 13.2.4 test', async ({ page }, testInfo) => {
11
+ await page.waitForLoadState("networkidle") // This resolves after 'networkidle'
12
+ await page.waitForTimeout(1000 * testInfo.retry + 1)
13
+ await page.setViewportSize({ width: 1600, height: 1200 })
14
+
15
+
16
+ // initial loading
17
+ await page.goto("http://localhost:4200/");
18
+ await page.goto("http://localhost:4200/#/");
19
+ await page.locator('select');
20
+ expect(await page.screenshot()).toMatchSnapshot("angular_13.2.4_1.png");
21
+
22
+
23
+ // Select 2
24
+ await page.locator('select').selectOption('2');
25
+ await page.waitForLoadState("networkidle")
26
+ expect(await page.screenshot()).toMatchSnapshot("angular_13.2.4_2.png");
27
+
28
+
29
+ // Click input[type="number"]
30
+ await page.locator('input[type="number"]').click();
31
+ await page.locator('input[type="number"]').fill('500');
32
+ await page.locator('#step1').click();
33
+ await page.waitForLoadState("networkidle")
34
+ expect(await page.screenshot()).toMatchSnapshot("angular_13.2.4_3.png");
35
+
36
+
37
+ // summary loading
38
+ await page.locator('#step2').click();
39
+ await page.waitForLoadState("networkidle")
40
+ expect(await page.screenshot()).toMatchSnapshot("angular_13.2.4_4.png");
41
+
42
+
43
+ // summary displaying
44
+ await page.locator('#step3').click();
45
+ await page.waitForLoadState("networkidle") // This resolves after 'networkidle'
46
+ expect(await page.screenshot()).toMatchSnapshot("angular_13.2.4_5.png");
47
+
48
+
49
+
50
+ // Click code, store json
51
+ await page.locator('code').click();
52
+ expect(await page.textContent('code')).toMatchSnapshot('code.json');
53
+
54
+ });
@@ -0,0 +1,16 @@
1
+ {
2
+ "investmentAmount": {
3
+ "agreement": "2",
4
+ "additionalInvestment": 500
5
+ },
6
+ "investmentOrigin": {
7
+ "salary": false,
8
+ "gift": false,
9
+ "heritage": false,
10
+ "entrepreneurialIncome": false,
11
+ "assets": false,
12
+ "otherIncome": false,
13
+ "investment": false,
14
+ "extras": null
15
+ }
16
+ }
@@ -0,0 +1 @@
1
+ export const currencyFormatFI = new Intl.NumberFormat("fi-FI", { style: "currency", currency: "EUR" })
@@ -1,4 +1,3 @@
1
- /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
1
  {
3
2
  "extends": "./tsconfig.base.json",
4
3
  "compilerOptions": {
@@ -1,7 +1,7 @@
1
- /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
1
  {
3
2
  "compileOnSave": false,
4
3
  "compilerOptions": {
4
+ "esModuleInterop":true,
5
5
  "baseUrl": "./",
6
6
  "outDir": "./dist/out-tsc",
7
7
  "sourceMap": true,
@@ -0,0 +1,8 @@
1
+ {
2
+ "files": [],
3
+ "references": [
4
+ {
5
+ "path": "./tsconfig.app.json"
6
+ }
7
+ ]
8
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "extends": "./tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "outDir": "./out-tsc/app",
5
+ "types": ["jest","jest-image-snapshot","node"],
6
+ "esModuleInterop": true,
7
+ "emitDecoratorMetadata": true
8
+ },
9
+ "files": ["src/main.ts", "src/polyfills.ts"],
10
+ "include": ["src/**/*.d.ts",
11
+ "src/**/*.spec.ts",
12
+ "src/**/*.test.ts",
13
+ "src/**/*.spec.tsx",
14
+ "src/**/*.test.tsx"]
15
+ }
@@ -0,0 +1,16 @@
1
+ # This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
2
+ # For additional information regarding the format and rule options, please see:
3
+ # https://github.com/browserslist/browserslist#queries
4
+
5
+ # For the full list of supported browsers by the Angular framework, please see:
6
+ # https://angular.io/guide/browser-support
7
+
8
+ # You can see what browsers were selected by your queries by running:
9
+ # npx browserslist
10
+
11
+ last 1 Chrome version
12
+ last 1 Firefox version
13
+ last 2 Edge major versions
14
+ last 2 Safari major versions
15
+ last 2 iOS major versions
16
+ Firefox ESR
@@ -0,0 +1,2 @@
1
+ ignores: ["eslint*", "@angular-eslint/*","ngx-toastr","@types/*","husky","prettier", " @typescript-eslint/*"]
2
+ skip-missing: true
@@ -0,0 +1,16 @@
1
+ # Editor configuration, see https://editorconfig.org
2
+ root = true
3
+
4
+ [*]
5
+ charset = utf-8
6
+ indent_style = space
7
+ indent_size = 2
8
+ insert_final_newline = true
9
+ trim_trailing_whitespace = true
10
+
11
+ [*.ts]
12
+ quote_type = single
13
+
14
+ [*.md]
15
+ max_line_length = off
16
+ trim_trailing_whitespace = false
@@ -0,0 +1,51 @@
1
+ {
2
+ "root": true,
3
+ "ignorePatterns": [
4
+ "projects/**/*"
5
+ ],
6
+ "overrides": [
7
+ {
8
+ "files": [
9
+ "*.ts"
10
+ ],
11
+ "parserOptions": {
12
+ "project": [
13
+ "tsconfig.json"
14
+ ],
15
+ "createDefaultProgram": true
16
+ },
17
+ "extends": [
18
+ "plugin:@angular-eslint/recommended",
19
+ "plugin:@angular-eslint/template/process-inline-templates"
20
+ ],
21
+ "rules": {
22
+ "@angular-eslint/directive-selector": [
23
+ "error",
24
+ {
25
+ "type": "attribute",
26
+ "prefix": "app",
27
+ "style": "camelCase"
28
+ }
29
+ ],
30
+ "@angular-eslint/component-selector": [
31
+ "error",
32
+ {
33
+ "type": "element",
34
+ "prefix": "app",
35
+ "style": "kebab-case"
36
+ }
37
+ ],
38
+ "@angular-eslint/no-empty-lifecycle-method": "off"
39
+ }
40
+ },
41
+ {
42
+ "files": [
43
+ "*.html"
44
+ ],
45
+ "extends": [
46
+ "plugin:@angular-eslint/template/recommended"
47
+ ],
48
+ "rules": {}
49
+ }
50
+ ]
51
+ }