@eui/cli 21.0.0-alpha.4 → 21.0.0-alpha.6

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 (289) hide show
  1. package/.version.properties +1 -0
  2. package/bin/eui-cli.js +47 -0
  3. package/lib/build.js +155 -0
  4. package/lib/cli.js +123 -0
  5. package/lib/config.js +58 -0
  6. package/lib/generators.js +75 -0
  7. package/lib/install.js +45 -0
  8. package/lib/maven-build/build.xml +115 -0
  9. package/lib/maven-build/lib/ant-contrib-20061014.jar +0 -0
  10. package/lib/maven-build/pom.xml +64 -0
  11. package/lib/post-build.js +33 -0
  12. package/lib/skeletons/_angular/base/.browserslistrc +16 -0
  13. package/lib/skeletons/_angular/base/.editorconfig +16 -0
  14. package/lib/skeletons/_angular/base/.euirc.json +8 -0
  15. package/lib/skeletons/_angular/base/README.md +26 -0
  16. package/lib/skeletons/_angular/base/angular.json +158 -0
  17. package/lib/skeletons/_angular/base/gitignore_TO_REPLACE +51 -0
  18. package/lib/skeletons/_angular/base/mock/app/models/user.js +6 -0
  19. package/lib/skeletons/_angular/base/mock/app/routes/index.js +5 -0
  20. package/lib/skeletons/_angular/base/mock/app/routes/user_routes.js +44 -0
  21. package/lib/skeletons/_angular/base/mock/db/db.json +10 -0
  22. package/lib/skeletons/_angular/base/mock/server.js +23 -0
  23. package/lib/skeletons/_angular/base/package.json +38 -0
  24. package/lib/skeletons/_angular/base/proxy-mock.conf.json +6 -0
  25. package/lib/skeletons/_angular/base/proxy.conf.json +6 -0
  26. package/lib/skeletons/_angular/base/src/.eslintrc.json +121 -0
  27. package/lib/skeletons/_angular/base/src/app/app-starter.service.spec.ts +68 -0
  28. package/lib/skeletons/_angular/base/src/app/app-starter.service.ts +68 -0
  29. package/lib/skeletons/_angular/base/src/app/app.component.html +35 -0
  30. package/lib/skeletons/_angular/base/src/app/app.component.spec.ts +60 -0
  31. package/lib/skeletons/_angular/base/src/app/app.component.ts +35 -0
  32. package/lib/skeletons/_angular/base/src/app/app.config.ts +84 -0
  33. package/lib/skeletons/_angular/base/src/app/app.routes.ts +9 -0
  34. package/lib/skeletons/_angular/base/src/app/features/home/home.component.html +41 -0
  35. package/lib/skeletons/_angular/base/src/app/features/home/home.component.ts +17 -0
  36. package/lib/skeletons/_angular/base/src/app/features/home/home.routes.ts +6 -0
  37. package/lib/skeletons/_angular/base/src/app/features/module1/components/page1/page1.component.html +7 -0
  38. package/lib/skeletons/_angular/base/src/app/features/module1/components/page1/page1.component.ts +10 -0
  39. package/lib/skeletons/_angular/base/src/app/features/module1/components/page2/page2.component.html +7 -0
  40. package/lib/skeletons/_angular/base/src/app/features/module1/components/page2/page2.component.ts +10 -0
  41. package/lib/skeletons/_angular/base/src/app/features/module1/module1.component.html +7 -0
  42. package/lib/skeletons/_angular/base/src/app/features/module1/module1.component.ts +10 -0
  43. package/lib/skeletons/_angular/base/src/app/features/module1/module1.routes.ts +10 -0
  44. package/lib/skeletons/_angular/base/src/app/features/module2/module2.component.html +7 -0
  45. package/lib/skeletons/_angular/base/src/app/features/module2/module2.component.ts +10 -0
  46. package/lib/skeletons/_angular/base/src/app/features/module2/module2.routes.ts +6 -0
  47. package/lib/skeletons/_angular/base/src/app/shared/testing/router.mock.ts +18 -0
  48. package/lib/skeletons/_angular/base/src/assets/config/env-json-config-dev.json +8 -0
  49. package/lib/skeletons/_angular/base/src/assets/config/env-json-config-prod.json +8 -0
  50. package/lib/skeletons/_angular/base/src/assets/config/env-json-config.json +7 -0
  51. package/lib/skeletons/_angular/base/src/assets/i18n/en.json +7 -0
  52. package/lib/skeletons/_angular/base/src/assets/i18n/fr.json +7 -0
  53. package/lib/skeletons/_angular/base/src/config/global.ts +33 -0
  54. package/lib/skeletons/_angular/base/src/config/index.ts +8 -0
  55. package/lib/skeletons/_angular/base/src/config/modules.ts +7 -0
  56. package/lib/skeletons/_angular/base/src/dummy.spec.ts +6 -0
  57. package/lib/skeletons/_angular/base/src/environments/environment.prod.ts +11 -0
  58. package/lib/skeletons/_angular/base/src/environments/environment.ts +15 -0
  59. package/lib/skeletons/_angular/base/src/favicon.ico +0 -0
  60. package/lib/skeletons/_angular/base/src/index.html +20 -0
  61. package/lib/skeletons/_angular/base/src/karma.conf.js +7 -0
  62. package/lib/skeletons/_angular/base/src/main.ts +20 -0
  63. package/lib/skeletons/_angular/base/src/styles.scss +1 -0
  64. package/lib/skeletons/_angular/base/src/tsconfig.app.json +18 -0
  65. package/lib/skeletons/_angular/base/src/tsconfig.spec.json +14 -0
  66. package/lib/skeletons/_angular/base/tsconfig.json +27 -0
  67. package/lib/skeletons/_angular/base-mobile/angular.json +156 -0
  68. package/lib/skeletons/_angular/base-mobile/ionic.config.json +5 -0
  69. package/lib/skeletons/_angular/base-mobile/ngsw-config.json +33 -0
  70. package/lib/skeletons/_angular/base-mobile/package.json +27 -0
  71. package/lib/skeletons/_angular/base-mobile/src/app/app-routing.module.ts +18 -0
  72. package/lib/skeletons/_angular/base-mobile/src/app/app-starter.service.ts +73 -0
  73. package/lib/skeletons/_angular/base-mobile/src/app/app.component.html +47 -0
  74. package/lib/skeletons/_angular/base-mobile/src/app/app.component.ts +81 -0
  75. package/lib/skeletons/_angular/base-mobile/src/app/app.config.ts +81 -0
  76. package/lib/skeletons/_angular/base-mobile/src/app/app.module.ts +44 -0
  77. package/lib/skeletons/_angular/base-mobile/src/app/core/components/.gitkeep +0 -0
  78. package/lib/skeletons/_angular/base-mobile/src/app/core/core.module.ts +89 -0
  79. package/lib/skeletons/_angular/base-mobile/src/app/core/reducers/index.ts +32 -0
  80. package/lib/skeletons/_angular/base-mobile/src/app/features/about/about-routing.module.ts +45 -0
  81. package/lib/skeletons/_angular/base-mobile/src/app/features/about/about.component.html +70 -0
  82. package/lib/skeletons/_angular/base-mobile/src/app/features/about/about.component.ts +19 -0
  83. package/lib/skeletons/_angular/base-mobile/src/app/features/about/about.module.ts +30 -0
  84. package/lib/skeletons/_angular/base-mobile/src/app/features/about/change-log/changelog.component.html +11 -0
  85. package/lib/skeletons/_angular/base-mobile/src/app/features/about/change-log/changelog.component.ts +102 -0
  86. package/lib/skeletons/_angular/base-mobile/src/app/features/about/help-support/help-support.component.html +20 -0
  87. package/lib/skeletons/_angular/base-mobile/src/app/features/about/help-support/help-support.component.ts +75 -0
  88. package/lib/skeletons/_angular/base-mobile/src/app/features/about/legal-notice/legal-notice.component.html +12 -0
  89. package/lib/skeletons/_angular/base-mobile/src/app/features/about/legal-notice/legal-notice.component.ts +8 -0
  90. package/lib/skeletons/_angular/base-mobile/src/app/features/about/licence-details/licence-details.component.html +48 -0
  91. package/lib/skeletons/_angular/base-mobile/src/app/features/about/licence-details/licence-details.component.ts +7 -0
  92. package/lib/skeletons/_angular/base-mobile/src/app/features/about/opensource-licences/opensource-licences.component.html +11 -0
  93. package/lib/skeletons/_angular/base-mobile/src/app/features/about/opensource-licences/opensource-licences.component.ts +31 -0
  94. package/lib/skeletons/_angular/base-mobile/src/app/features/about/privacy-statement/privacy-statement.component.html +11 -0
  95. package/lib/skeletons/_angular/base-mobile/src/app/features/about/privacy-statement/privacy-statement.component.ts +103 -0
  96. package/lib/skeletons/_angular/base-mobile/src/app/features/home/home-routing.module.ts +15 -0
  97. package/lib/skeletons/_angular/base-mobile/src/app/features/home/home.component.html +11 -0
  98. package/lib/skeletons/_angular/base-mobile/src/app/features/home/home.component.ts +9 -0
  99. package/lib/skeletons/_angular/base-mobile/src/app/features/home/home.module.ts +18 -0
  100. package/lib/skeletons/_angular/base-mobile/src/app/features/module1/components/page1/page1.component.html +11 -0
  101. package/lib/skeletons/_angular/base-mobile/src/app/features/module1/components/page1/page1.component.ts +8 -0
  102. package/lib/skeletons/_angular/base-mobile/src/app/features/module1/components/page2/page2.component.html +11 -0
  103. package/lib/skeletons/_angular/base-mobile/src/app/features/module1/components/page2/page2.component.ts +8 -0
  104. package/lib/skeletons/_angular/base-mobile/src/app/features/module1/module1-routing.module.ts +18 -0
  105. package/lib/skeletons/_angular/base-mobile/src/app/features/module1/module1.component.html +15 -0
  106. package/lib/skeletons/_angular/base-mobile/src/app/features/module1/module1.component.ts +17 -0
  107. package/lib/skeletons/_angular/base-mobile/src/app/features/module1/module1.module.ts +21 -0
  108. package/lib/skeletons/_angular/base-mobile/src/app/features/module2/module2-routing.module.ts +16 -0
  109. package/lib/skeletons/_angular/base-mobile/src/app/features/module2/module2.component.html +11 -0
  110. package/lib/skeletons/_angular/base-mobile/src/app/features/module2/module2.component.ts +7 -0
  111. package/lib/skeletons/_angular/base-mobile/src/app/features/module2/module2.module.ts +17 -0
  112. package/lib/skeletons/_angular/base-mobile/src/app/shared/shared.module.ts +16 -0
  113. package/lib/skeletons/_angular/base-mobile/src/app/shared/testing/router.mock.ts +18 -0
  114. package/lib/skeletons/_angular/base-mobile/src/assets/docs/pdf-test.pdf +0 -0
  115. package/lib/skeletons/_angular/base-mobile/src/assets/i18n/en.json +25 -0
  116. package/lib/skeletons/_angular/base-mobile/src/assets/i18n/es.json +24 -0
  117. package/lib/skeletons/_angular/base-mobile/src/assets/i18n/fr.json +25 -0
  118. package/lib/skeletons/_angular/base-mobile/src/assets/i18n/tr.json +25 -0
  119. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-1024.png +0 -0
  120. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-114.png +0 -0
  121. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-120.png +0 -0
  122. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-128.png +0 -0
  123. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-144.png +0 -0
  124. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-152.png +0 -0
  125. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-16.png +0 -0
  126. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-180.png +0 -0
  127. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-192.png +0 -0
  128. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-32.png +0 -0
  129. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-36.png +0 -0
  130. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-384.png +0 -0
  131. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-48.png +0 -0
  132. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-512.png +0 -0
  133. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-57.png +0 -0
  134. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-60.png +0 -0
  135. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-72.png +0 -0
  136. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-76.png +0 -0
  137. package/lib/skeletons/_angular/base-mobile/src/assets/icons/app-icon-96.png +0 -0
  138. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1125-2436.png +0 -0
  139. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1170-2532.png +0 -0
  140. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1179-2556.png +0 -0
  141. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1242-2208.png +0 -0
  142. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1242-2688.png +0 -0
  143. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1284-2778.png +0 -0
  144. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1290-2796.png +0 -0
  145. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1488-2266.png +0 -0
  146. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1536-2048.png +0 -0
  147. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1620-2160.png +0 -0
  148. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1640-2360.png +0 -0
  149. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1668-2224.png +0 -0
  150. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-1668-2388.png +0 -0
  151. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-2048-2732.png +0 -0
  152. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-640-1136.png +0 -0
  153. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-750-1334.png +0 -0
  154. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-landscape-828-1792.png +0 -0
  155. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1125-2436.png +0 -0
  156. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1170-2532.png +0 -0
  157. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1179-2556.png +0 -0
  158. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1242-2208.png +0 -0
  159. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1242-2688.png +0 -0
  160. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1284-2778.png +0 -0
  161. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1290-2796.png +0 -0
  162. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1488-2266.png +0 -0
  163. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1536-2048.png +0 -0
  164. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1620-2160.png +0 -0
  165. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1640-2360.png +0 -0
  166. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1668-2224.png +0 -0
  167. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-1668-2388.png +0 -0
  168. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-2048-2732.png +0 -0
  169. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-640-1136.png +0 -0
  170. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-750-1334.png +0 -0
  171. package/lib/skeletons/_angular/base-mobile/src/assets/icons/apple-splash-portrait-828-1792.png +0 -0
  172. package/lib/skeletons/_angular/base-mobile/src/assets/images/app-icon.svg +10 -0
  173. package/lib/skeletons/_angular/base-mobile/src/config/global.ts +39 -0
  174. package/lib/skeletons/_angular/base-mobile/src/config/index.ts +8 -0
  175. package/lib/skeletons/_angular/base-mobile/src/config/modules.ts +7 -0
  176. package/lib/skeletons/_angular/base-mobile/src/index.html +76 -0
  177. package/lib/skeletons/_angular/base-mobile/src/main.ts +23 -0
  178. package/lib/skeletons/_angular/base-mobile/src/manifest.webmanifest +66 -0
  179. package/lib/skeletons/_angular/base-mobile/src/tsconfig.app.json +20 -0
  180. package/lib/skeletons/_angular/options/ecl-ec/angular.json +181 -0
  181. package/lib/skeletons/_angular/options/ecl-ec/src/app/app.component.html +237 -0
  182. package/lib/skeletons/_angular/options/ecl-ec/src/app/app.component.ts +65 -0
  183. package/lib/skeletons/_angular/options/ecl-ec/src/app/app.config.ts +84 -0
  184. package/lib/skeletons/_angular/options/ecl-ec/src/app/features/home/home.component.html +71 -0
  185. package/lib/skeletons/_angular/options/ecl-ec/src/app/features/home/home.component.ts +20 -0
  186. package/lib/skeletons/_angular/options/ecl-ec/src/app/features/module1/components/page1/page1.component.html +1 -0
  187. package/lib/skeletons/_angular/options/ecl-ec/src/app/features/module1/components/page1/page1.component.ts +7 -0
  188. package/lib/skeletons/_angular/options/ecl-ec/src/app/features/module1/components/page2/page2.component.html +1 -0
  189. package/lib/skeletons/_angular/options/ecl-ec/src/app/features/module1/components/page2/page2.component.ts +7 -0
  190. package/lib/skeletons/_angular/options/ecl-ec/src/app/features/module1/module1.component.html +1 -0
  191. package/lib/skeletons/_angular/options/ecl-ec/src/app/features/module1/module1.component.ts +7 -0
  192. package/lib/skeletons/_angular/options/ecl-ec/src/app/features/module2/module2.component.html +1 -0
  193. package/lib/skeletons/_angular/options/ecl-ec/src/app/features/module2/module2.component.ts +7 -0
  194. package/lib/skeletons/_angular/options/ecl-ec/src/config/global.ts +23 -0
  195. package/lib/skeletons/_angular/options/ecl-eu/angular.json +181 -0
  196. package/lib/skeletons/_angular/options/ecl-eu/src/app/app.component.html +203 -0
  197. package/lib/skeletons/_angular/options/ecl-eu/src/app/app.component.ts +65 -0
  198. package/lib/skeletons/_angular/options/ecl-eu/src/app/app.config.ts +84 -0
  199. package/lib/skeletons/_angular/options/ecl-eu/src/app/features/home/home.component.html +71 -0
  200. package/lib/skeletons/_angular/options/ecl-eu/src/app/features/home/home.component.ts +20 -0
  201. package/lib/skeletons/_angular/options/ecl-eu/src/app/features/module1/components/page1/page1.component.html +1 -0
  202. package/lib/skeletons/_angular/options/ecl-eu/src/app/features/module1/components/page1/page1.component.ts +7 -0
  203. package/lib/skeletons/_angular/options/ecl-eu/src/app/features/module1/components/page2/page2.component.html +1 -0
  204. package/lib/skeletons/_angular/options/ecl-eu/src/app/features/module1/components/page2/page2.component.ts +7 -0
  205. package/lib/skeletons/_angular/options/ecl-eu/src/app/features/module1/module1.component.html +1 -0
  206. package/lib/skeletons/_angular/options/ecl-eu/src/app/features/module1/module1.component.ts +7 -0
  207. package/lib/skeletons/_angular/options/ecl-eu/src/app/features/module2/module2.component.html +1 -0
  208. package/lib/skeletons/_angular/options/ecl-eu/src/app/features/module2/module2.component.ts +7 -0
  209. package/lib/skeletons/_angular/options/ecl-eu/src/app/shared/shared.module.ts +19 -0
  210. package/lib/skeletons/_angular/options/ecl-eu/src/config/global.ts +23 -0
  211. package/lib/skeletons/web-maven/package.json +17 -0
  212. package/lib/skeletons/web-maven/pom.xml +55 -0
  213. package/lib/skeletons/web-maven/src/main/java/eu/europa/ec/digit/eui/angular2clistarter/servlet/SpringWebApplicationInitializer.java +22 -0
  214. package/lib/skeletons/web-maven/src/main/java/eu/europa/ec/digit/eui/angular2clistarter/spring/SpringRestConfiguration.java +24 -0
  215. package/lib/skeletons/web-maven/src/main/java/eu/europa/ec/digit/eui/angular2clistarter/spring/rest/UserDetailsResource.java +23 -0
  216. package/lib/skeletons/web-maven/src/main/resources/ecas-config-application-name.xml +7 -0
  217. package/lib/skeletons/web-maven/src/main/webapp/WEB-INF/dispatcher-servlet.xml +11 -0
  218. package/lib/skeletons/web-maven/src/main/webapp/WEB-INF/web.xml +38 -0
  219. package/lib/skeletons/web-maven/src/main/webapp/WEB-INF/weblogic.xml +16 -0
  220. package/lib/skeletons/web-maven/src/main/webapp/index.jsp +30 -0
  221. package/lib/skeletons/web-spring-boot/myapp-web/pom.xml +83 -0
  222. package/lib/skeletons/web-spring-boot/myapp-web-rest/pom.xml +83 -0
  223. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/MyappApplication.java +46 -0
  224. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/domain/Address.java +65 -0
  225. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/domain/Building.java +44 -0
  226. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/repositories/BuildingRepository.java +11 -0
  227. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/resources/BuildingResource.java +26 -0
  228. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/resources/SwaggerConfig.java +16 -0
  229. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/resources/support/HateoasPageableHandlerMethodArgumentResolver.java +45 -0
  230. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/resources/support/HypermediaSupport.java +25 -0
  231. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/resources/support/PageJsonSerializer.java +17 -0
  232. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/security/CachingPreventionFilter.java +29 -0
  233. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/security/CsrfPreventionFilter.java +35 -0
  234. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/security/FakeAuthenticationFilter.java +372 -0
  235. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/security/SecurityConfig.java +47 -0
  236. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/services/BuildingSearchCriteria.java +26 -0
  237. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/services/BuildingService.java +10 -0
  238. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/java/myapp/services/BuildingServiceImpl.java +26 -0
  239. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/resources/application.properties +0 -0
  240. package/lib/skeletons/web-spring-boot/myapp-web-rest/src/main/resources/data.sql +11 -0
  241. package/lib/skeletons/web-spring-boot/pom.xml +30 -0
  242. package/lib/skeletons/web-symfony/myapp-web/angular.json +169 -0
  243. package/lib/skeletons/web-symfony/myapp-web/package.json +23 -0
  244. package/lib/skeletons/web-symfony/myapp-web/src/app/app-routing.module.ts +18 -0
  245. package/lib/skeletons/web-symfony/myapp-web/src/app/app.component.ts +77 -0
  246. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/components/products.component.html +160 -0
  247. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/components/products.component.scss +0 -0
  248. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/components/products.component.ts +104 -0
  249. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/models/product.model.ts +6 -0
  250. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/products-routing.module.ts +16 -0
  251. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/products.module.ts +16 -0
  252. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/services/products.service.ts +29 -0
  253. package/lib/skeletons/web-symfony/myapp-web/src/environments/environment.ts +17 -0
  254. package/lib/skeletons/web-symfony/myapp-web-rest/.env +28 -0
  255. package/lib/skeletons/web-symfony/myapp-web-rest/bin/console +42 -0
  256. package/lib/skeletons/web-symfony/myapp-web-rest/composer.json +67 -0
  257. package/lib/skeletons/web-symfony/myapp-web-rest/composer.lock +3572 -0
  258. package/lib/skeletons/web-symfony/myapp-web-rest/config/bootstrap.php +21 -0
  259. package/lib/skeletons/web-symfony/myapp-web-rest/config/bundles.php +12 -0
  260. package/lib/skeletons/web-symfony/myapp-web-rest/config/config.yml +0 -0
  261. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/cache.yaml +19 -0
  262. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/dev/routing.yaml +3 -0
  263. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/doctrine.yaml +29 -0
  264. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/doctrine_migrations.yaml +5 -0
  265. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/framework.yaml +17 -0
  266. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/prod/doctrine.yaml +32 -0
  267. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/routing.yaml +4 -0
  268. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/sensio_framework_extra.yaml +3 -0
  269. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/test/framework.yaml +4 -0
  270. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/test/routing.yaml +3 -0
  271. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/twig.yaml +4 -0
  272. package/lib/skeletons/web-symfony/myapp-web-rest/config/routes/annotations.yaml +3 -0
  273. package/lib/skeletons/web-symfony/myapp-web-rest/config/routes/dev/twig.yaml +3 -0
  274. package/lib/skeletons/web-symfony/myapp-web-rest/config/routes.yaml +3 -0
  275. package/lib/skeletons/web-symfony/myapp-web-rest/config/services.yaml +27 -0
  276. package/lib/skeletons/web-symfony/myapp-web-rest/public/index.php +27 -0
  277. package/lib/skeletons/web-symfony/myapp-web-rest/src/Controller/ProductController.php +196 -0
  278. package/lib/skeletons/web-symfony/myapp-web-rest/src/Entity/Product.php +99 -0
  279. package/lib/skeletons/web-symfony/myapp-web-rest/src/Kernel.php +53 -0
  280. package/lib/skeletons/web-symfony/myapp-web-rest/src/Migrations/Version20190604101623.php +31 -0
  281. package/lib/skeletons/web-symfony/myapp-web-rest/src/Migrations/Version20190604101638.php +35 -0
  282. package/lib/skeletons/web-symfony/myapp-web-rest/src/Repository/ProductRepository.php +51 -0
  283. package/lib/skeletons/web-symfony/myapp-web-rest/symfony.lock +274 -0
  284. package/lib/skeletons/web-symfony/myapp-web-rest/templates/base.html.twig +12 -0
  285. package/lib/skeletons/web-symfony/myapp-web-rest/templates/lucky/number.html.twig +1 -0
  286. package/lib/skeletons/web-symfony/myapp-web-rest/templates/product/index.html.twig +20 -0
  287. package/lib/utils.js +13 -0
  288. package/package.json +2 -2
  289. package/sonar-project.properties +14 -0
@@ -0,0 +1,11 @@
1
+ insert into t_address (address_id, street, postal_code, city, country) values (-4, 'rue Montoyer, 15', '1000', 'Bruxelles', 'Belgium');
2
+ insert into t_building (building_id, name, address_id) values ((select seq_building.nextval from dual), 'Montoyer 15 "Black Pearl"', -4);
3
+
4
+ insert into t_address (address_id, street, postal_code, city, country) values (-3, 'rue de la Loi, 200', '1040', 'Bruxelles', 'Belgium');
5
+ insert into t_building (building_id, name, address_id) values ((select seq_building.nextval from dual), 'Berlaymont', -3);
6
+
7
+ insert into t_address (address_id, street, postal_code, city, country) values (-2, 'rue Breydel, 4', '1040', 'Bruxelles', 'Belgium');
8
+ insert into t_building (building_id, name, address_id) values ((select seq_building.nextval from dual), 'Belliard 232', -2);
9
+
10
+ insert into t_address (address_id, street, postal_code, city, country) values (-1, 'Place Rogier, 16', '1210', 'Saint-Josse', 'Belgium');
11
+ insert into t_building (building_id, name, address_id) values ((select seq_building.nextval from dual), 'Covent Garden 2', -1);
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4
+ <modelVersion>4.0.0</modelVersion>
5
+
6
+ <groupId>@app.group.id@.@app.name@</groupId>
7
+ <artifactId>@app.name@</artifactId>
8
+ <version>0.1.0-SNAPSHOT</version>
9
+ <packaging>pom</packaging>
10
+ <name>@app.name@</name>
11
+ <description>Demo project for Spring Boot</description>
12
+
13
+ <parent>
14
+ <groupId>org.springframework.boot</groupId>
15
+ <artifactId>spring-boot-starter-parent</artifactId>
16
+ <version>3.4.4</version>
17
+ </parent>
18
+
19
+ <properties>
20
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
21
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
22
+ <java.version>21</java.version>
23
+ </properties>
24
+
25
+ <modules>
26
+ <module>@app.name@-web-rest</module>
27
+ <module>@app.name@-web</module>
28
+ </modules>
29
+
30
+ </project>
@@ -0,0 +1,169 @@
1
+ {
2
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3
+ "version": 1,
4
+ "newProjectRoot": "projects",
5
+ "defaultProject": "app",
6
+ "cli": {
7
+ "analytics": false
8
+ },
9
+ "projects": {
10
+ "app": {
11
+ "root": "",
12
+ "sourceRoot": "src",
13
+ "projectType": "application",
14
+ "prefix": "app",
15
+ "schematics": {
16
+ "@schematics/angular:component": {
17
+ "styleext": "scss"
18
+ }
19
+ },
20
+ "architect": {
21
+ "build": {
22
+ "builder": "ngx-build-plus:build",
23
+ "options": {
24
+ "outputPath": "dist",
25
+ "index": "src/index.html",
26
+ "main": "src/main.ts",
27
+ "polyfills": "src/polyfills.ts",
28
+ "tsConfig": "src/tsconfig.app.json",
29
+ "assets": [
30
+ "src/favicon.ico",
31
+ "src/assets",
32
+ {
33
+ "glob": "**/*",
34
+ "input": "node_modules/@eui/core/assets/",
35
+ "output": "./assets"
36
+ },
37
+ {
38
+ "glob": "**/*",
39
+ "input": "node_modules/@eui/styles/dist/assets/images",
40
+ "output": "./assets/images"
41
+ }
42
+ ],
43
+ "styles": [
44
+ "node_modules/@eui/styles/dist/styles/eui.css",
45
+ "node_modules/@eui/styles/dist/styles/eui-utilities.css",
46
+ "node_modules/@eui/styles/dist/styles/eui-legacy-bootstrap-utilities.css",
47
+ "src/styles.scss"
48
+ ]
49
+ },
50
+ "configurations": {
51
+ "production": {
52
+ "fileReplacements": [
53
+ {
54
+ "replace": "src/environments/environment.ts",
55
+ "with": "src/environments/environment.prod.ts"
56
+ }
57
+ ],
58
+ "optimization": true,
59
+ "outputHashing": "all",
60
+ "sourceMap": false,
61
+ "extractCss": true,
62
+ "namedChunks": true,
63
+ "aot": true,
64
+ "extractLicenses": true,
65
+ "vendorChunk": false,
66
+ "buildOptimizer": true,
67
+ "budgets": [
68
+ {
69
+ "type": "initial",
70
+ "maximumWarning": "3mb",
71
+ "maximumError": "5mb"
72
+ }
73
+ ]
74
+ },
75
+ "dev": {
76
+ "fileReplacements": [
77
+ {
78
+ "replace": "src/environments/environment.ts",
79
+ "with": "src/environments/environment.dev.ts"
80
+ }
81
+ ]
82
+ }
83
+ }
84
+ },
85
+ "serve": {
86
+ "builder": "@angular-devkit/build-angular:dev-server",
87
+ "options": {
88
+ "browserTarget": "app:build"
89
+ },
90
+ "configurations": {
91
+ "proxy-mock": {
92
+ "browserTarget": "app:build",
93
+ "proxyConfig": "proxy-mock.conf.json"
94
+ },
95
+ "proxy": {
96
+ "browserTarget": "app:build",
97
+ "proxyConfig": "proxy.conf.json"
98
+ },
99
+ "production": {
100
+ "browserTarget": "app:build:production"
101
+ }
102
+ }
103
+ },
104
+ "test": {
105
+ "builder": "@angular-devkit/build-angular:karma",
106
+ "options": {
107
+ "main": "src/test.ts",
108
+ "polyfills": "src/polyfills.ts",
109
+ "tsConfig": "src/tsconfig.spec.json",
110
+ "karmaConfig": "src/karma.conf.js",
111
+ "styles": [
112
+ "src/styles.scss"
113
+ ],
114
+ "scripts": [],
115
+ "assets": [
116
+ "src/favicon.ico",
117
+ "src/assets",
118
+ {
119
+ "glob": "**/*",
120
+ "input": "node_modules/@eui/core/assets/",
121
+ "output": "./assets"
122
+ }
123
+ ]
124
+ }
125
+ },
126
+ "lint": {
127
+ "builder": "@angular-devkit/build-angular:tslint",
128
+ "options": {
129
+ "tsConfig": [
130
+ "src/tsconfig.app.json",
131
+ "src/tsconfig.spec.json"
132
+ ],
133
+ "exclude": [
134
+ "**/node_modules/**"
135
+ ]
136
+ }
137
+ }
138
+ }
139
+ },
140
+ "app-e2e": {
141
+ "root": "e2e/",
142
+ "projectType": "application",
143
+ "prefix": "",
144
+ "architect": {
145
+ "e2e": {
146
+ "builder": "@angular-devkit/build-angular:protractor",
147
+ "options": {
148
+ "protractorConfig": "e2e/protractor.conf.js",
149
+ "devServerTarget": "app:serve"
150
+ },
151
+ "configurations": {
152
+ "production": {
153
+ "devServerTarget": "app:serve:production"
154
+ }
155
+ }
156
+ },
157
+ "lint": {
158
+ "builder": "@angular-devkit/build-angular:tslint",
159
+ "options": {
160
+ "tsConfig": "e2e/tsconfig.e2e.json",
161
+ "exclude": [
162
+ "**/node_modules/**"
163
+ ]
164
+ }
165
+ }
166
+ }
167
+ }
168
+ }
169
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "eui-angular-app",
3
+ "version": "21.0.0-alpha.5",
4
+ "license": "EUPL-1.1",
5
+ "description": "eUI JEE Symfony app scripts",
6
+ "scripts": {
7
+ "ng": "ng",
8
+ "e2e": "ng e2e",
9
+ "stylelint": "stylelint \"src/**/*.scss\"",
10
+ "tslint": "tslint \"src/**/*.ts\"",
11
+ "clean": "rimraf out-tsc dist packages/**/dist/** packages/**/out-tsc/** packages/**/src/lib/**/*.js packages/**/src/lib/**/*.js.map",
12
+ "start-symfony": "eui-scripts start-symfony --configuration=dev",
13
+ "start-serve": "eui-scripts serve-app --configuration=proxy-mock",
14
+ "start": "npm run clean && npm-run-all --parallel start-symfony start-serve",
15
+ "start-mean": "npm run clean && npm-run-all --parallel start-mock-server-mean start-serve",
16
+ "start-proxy": "npm run clean && eui-scripts serve-app --configuration=proxy",
17
+ "generate-changelog": "eui-scripts generate-changelog"
18
+ },
19
+ "private": true,
20
+ "dependencies": {
21
+ "@eui/deps-base": "21.0.0-alpha.5"
22
+ }
23
+ }
@@ -0,0 +1,18 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule, Routes } from '@angular/router';
3
+
4
+ const routes: Routes = [
5
+ { path: '', redirectTo: 'screen/home', pathMatch: 'full' },
6
+ { path: 'index.jsp', redirectTo: 'screen/home' },
7
+ { path: 'screen/home', loadChildren: './features/home/home.module#Module' },
8
+ { path: 'screen/products', loadChildren: './features/products/products.module#ProductsModule' },
9
+ { path: 'screen/module1', loadChildren: './features/module1/module1.module#Module' },
10
+ { path: 'screen/module2', loadChildren: './features/module2/module2.module#Module' }
11
+ ];
12
+
13
+ @NgModule({
14
+ imports: [
15
+ RouterModule.forRoot(routes),
16
+ ],
17
+ })
18
+ export class AppRoutingModule {}
@@ -0,0 +1,77 @@
1
+ import { Component, OnInit } from '@angular/core';
2
+ import { TranslateService } from '@ngx-translate/core';
3
+ import { Observable } from 'rxjs/Observable';
4
+ import { Store } from '@ngrx/store';
5
+
6
+ import { UserState, getUserState, UxLink, UxLanguage } from '@eui/core';
7
+
8
+ @Component({
9
+ selector: 'app-root',
10
+ templateUrl: './app.component.html'
11
+ })
12
+ export class AppComponent implements OnInit {
13
+ userState: Observable<UserState>;
14
+
15
+ menuLinks: UxLink[] = [];
16
+ notificationLinks: UxLink[] = [];
17
+
18
+ constructor(
19
+ private translateService: TranslateService,
20
+ private store: Store<any>,
21
+ ) {
22
+ }
23
+
24
+ ngOnInit() {
25
+ this.userState = <any>this.store.select(getUserState);
26
+
27
+ this._createMenuLinks();
28
+ this._createNotifications();
29
+ }
30
+
31
+ onLanguageChanged(language: UxLanguage) {
32
+ this.translateService.use(language.code);
33
+ }
34
+
35
+ private _createMenuLinks() {
36
+ this.menuLinks = [
37
+ new UxLink(
38
+ {
39
+ label: 'HOME', url: '/screen/home', isHome: true
40
+ }
41
+ ),
42
+ new UxLink(
43
+ {
44
+ label: 'Module1', url: '/screen/module1', children: [
45
+ new UxLink({ label: 'disabled item', disabled: true }),
46
+ new UxLink({ label: 'Page 1', url: '/screen/module1/page1' }),
47
+ new UxLink({ label: 'Page 2', url: '/screen/module1/page2' })
48
+ ]
49
+ }
50
+ ),
51
+ new UxLink(
52
+ {
53
+ label: 'Module2', url: '/screen/module2'
54
+ }
55
+ ),
56
+ new UxLink(
57
+ {
58
+ label: 'Products', url: '/screen/products'
59
+ }
60
+ )
61
+ ];
62
+ }
63
+
64
+ private _createNotifications() {
65
+ this.notificationLinks = [
66
+ new UxLink(
67
+ { label: 'Notification title', subLabel: 'This is the description of the noficiation' }
68
+ ),
69
+ new UxLink(
70
+ { label: 'Notification title', subLabel: 'This is the description of the noficiation' }
71
+ ),
72
+ new UxLink(
73
+ { label: 'Notification title', subLabel: 'This is the description of the noficiation' }
74
+ ),
75
+ ];
76
+ }
77
+ }
@@ -0,0 +1,160 @@
1
+ <div class="page-title">
2
+ List of products
3
+ </div>
4
+
5
+ <div class="row">
6
+ <div class="col-sm-8">
7
+ <ux-panel label="List of Products" [isBlocked]="mode === 'load'" contentHeight="60vh">
8
+
9
+ <uxPanelHeaderRightContent>
10
+ <div class="flex-container">
11
+ <ux-button-group [hasPairedIcon]="true" styleClass="ml-3" (clicked)="addItem()">
12
+ <ux-button-group-item label="Create new product"></ux-button-group-item>
13
+ <ux-button-group-item iconClass="fa fa-plus"></ux-button-group-item>
14
+ </ux-button-group>
15
+ </div>
16
+ </uxPanelHeaderRightContent>
17
+
18
+
19
+ <ng-container *ngIf="products && mode !== 'load'; else loading">
20
+
21
+
22
+ <p-table [value]="products" [paginator]="true" [rows]="10" [pageLinks]="3" [rowsPerPageOptions]="[5,10,20]" >
23
+ <ng-template pTemplate="header" let-columns>
24
+ <tr>
25
+ <th [pSortableColumn]="'productId'">ID <p-sortIcon [field]="'productId'"></p-sortIcon></th>
26
+ <th [pSortableColumn]="'name'">Name <p-sortIcon [field]="'name'"></p-sortIcon></th>
27
+ <th [pSortableColumn]="'price'">Price <p-sortIcon [field]="'price'"></p-sortIcon></th>
28
+ <th [pSortableColumn]="'description'">Description <p-sortIcon [field]="'description'"></p-sortIcon></th>
29
+ <th class="actionsColumn">ACTIONS</th>
30
+ </tr>
31
+ </ng-template>
32
+
33
+ <ng-template pTemplate="body" let-rowData let-columns="columns" let-rowIndex="rowIndex" >
34
+ <tr [pSelectableRow]="rowData" [pSelectableRowIndex]="rowIndex">
35
+ <td>{{rowData.productId}}</td>
36
+ <td>
37
+ <ux-badge typeClass="default">
38
+ {{ rowData.name }}
39
+ </ux-badge>
40
+ </td>
41
+ <td>{{rowData.price}}</td>
42
+ <td>{{rowData.description}}</td>
43
+
44
+ <td class="actionsColumn">
45
+ <div class="flex-container justify-content-center">
46
+ <ux-button [isFlat]="true" iconClass="fa fa-pencil" typeClass="info" (click)="editProduct(rowData)"></ux-button>
47
+ <ux-button [isFlat]="true" iconClass="fa fa-trash-o" typeClass="danger" (click)="deleteProduct(rowData.productId)"></ux-button>
48
+ </div>
49
+ </td>
50
+ </tr>
51
+ </ng-template>
52
+
53
+
54
+ </p-table>
55
+ </ng-container>
56
+
57
+
58
+
59
+ <ng-template #loading>
60
+ <ng-container *ngIf="! serviceError; else error">
61
+ Loading...
62
+ </ng-container>
63
+ </ng-template>
64
+
65
+ <ng-template #error>
66
+ <ux-alert typeClass="warning">
67
+ Unable to retrieve the list of products; please <a (click)="loadProducts()">try again</a> later.<br/>
68
+ If the problem persists, please contact the administrator.<br/>
69
+ <br/>
70
+ <a (click)="serviceErrorVisible = !serviceErrorVisible">
71
+ <span *ngIf="!serviceErrorVisible">Show technical reason</span>
72
+ <span *ngIf="serviceErrorVisible">Hide technical reason</span>
73
+ </a>
74
+ <pre *ngIf="serviceErrorVisible">{{serviceError.message}}</pre>
75
+ </ux-alert>
76
+ </ng-template>
77
+ </ux-panel>
78
+ </div>
79
+
80
+ <div class="col-sm-4">
81
+ <ux-panel label="Products" [isBlocked]="mode === 'load'" contentHeight="60vh">
82
+ <pre>{{products | json}}</pre>
83
+ </ux-panel>
84
+ </div>
85
+ </div>
86
+
87
+
88
+
89
+ <!-- MODAL EDIT / NEW-->
90
+ <ux-modal id="modal1b" titleLabel="{{actionLabel}}" [isFooterVisible]="false" [isSizeSmall]="true" (onDismiss)="onModalDismiss($event)" (onAccept)="onModalAccept($event)">
91
+ <uxModalBody>
92
+ <form [formGroup]="formInput" *ngIf="ItemSelected">
93
+ <div class="row">
94
+ <div class="col-10">
95
+ <ux-form-group label="Name:" isRequired="true">
96
+ <ux-form-control [(ngModel)]="ItemSelected.name" formControlName="name" placeholderLabel="es: iPad Pro 512GB" ></ux-form-control>
97
+ </ux-form-group>
98
+
99
+ <ux-form-group label="Price:" isRequired="true">
100
+ <ux-form-control [(ngModel)]="ItemSelected.price" [isNumber]="true" formControlName="price" placeholderLabel="price"></ux-form-control>
101
+ </ux-form-group>
102
+
103
+
104
+ <ux-form-group label="Description:" isRequired=true>
105
+ <ux-form-control [(ngModel)]="ItemSelected.description" [isTextarea]="true" formControlName="description" placeholderLabel="description"></ux-form-control>
106
+ </ux-form-group>
107
+
108
+ <div class="text-right mt-3">
109
+ <ux-button (click)="onUpdateSubmit(ItemSelected)" class='ml-3' [isDisabled]="!formInput.valid">
110
+ Update Product
111
+ </ux-button>
112
+ </div>
113
+
114
+ </div>
115
+ </div>
116
+ </form>
117
+
118
+
119
+ <form [formGroup]="formInput" *ngIf="!ItemSelected">
120
+ <div class="row">
121
+ <div class="col-10">
122
+ <ux-form-group label="Name:" isRequired="true">
123
+ <ux-form-control formControlName="name" placeholderLabel="es: iPad Pro 512GB" ></ux-form-control>
124
+ </ux-form-group>
125
+
126
+ <ux-form-group label="Price:" isRequired="true">
127
+ <ux-form-control [isNumber]="true" formControlName="price" placeholderLabel="price"></ux-form-control>
128
+ </ux-form-group>
129
+
130
+
131
+ <ux-form-group label="Description:" isRequired=true>
132
+ <ux-form-control [isTextarea]="true" formControlName="description" placeholderLabel="description"></ux-form-control>
133
+ </ux-form-group>
134
+
135
+ <div class="text-right mt-3">
136
+ <ux-button (click)="onSubmit()" class='ml-3' [isDisabled]="!formInput.valid">
137
+ Save Product
138
+ </ux-button>
139
+ </div>
140
+
141
+ </div>
142
+ </div>
143
+ </form>
144
+
145
+
146
+
147
+
148
+ </uxModalBody>
149
+ </ux-modal>
150
+
151
+
152
+ <!-- MODAL DELETE -->
153
+ <ux-modal id="modaldelete" titleLabel="Modal title" [isSizeSmall]="true"
154
+ [isHandleCloseOnDismiss]="false" [isHandleCloseOnAccept]="false" [isHandleCloseOnClose]="false"
155
+ (onDismiss)="onModalDismiss($event)" (onAccept)="onModalAccept($event)" (onClose)="onModalClose($event)">
156
+ <uxModalBody>
157
+ <p>Are you sure to delete it?</p>
158
+ </uxModalBody>
159
+ </ux-modal>
160
+
@@ -0,0 +1,104 @@
1
+ import { Component, OnInit } from '@angular/core';
2
+ import { ProductsService } from '../services/products.service';
3
+ import { Product } from '../models/product.model';
4
+ import { UxService } from '@eui/core';
5
+ import { FormGroup, FormBuilder, Validators } from '@angular/forms';
6
+
7
+ @Component({
8
+ templateUrl: './products.component.html',
9
+ styleUrls: ['./products.component.scss'],
10
+ })
11
+ export class ProductsComponent implements OnInit {
12
+ formInput: FormGroup;
13
+ product: Product;
14
+ products: Array<Product>;
15
+ actionLabel: string;
16
+ serviceError: null;
17
+ IdSelected: number;
18
+ ItemSelected: Product;
19
+ mode = null;
20
+ modes: string [] = [];
21
+
22
+
23
+ constructor(protected productsService: ProductsService, public uxService: UxService, private fb: FormBuilder) {
24
+
25
+ }
26
+
27
+ ngOnInit() {
28
+ this.loadProducts();
29
+ this.buildForm();
30
+
31
+ }
32
+
33
+ loadProducts() {
34
+ this.serviceError = null;
35
+ this.productsService.loadProducts().subscribe(products => {
36
+ this.products = products.items;
37
+ }, error => {
38
+ this.serviceError = error;
39
+ });
40
+ }
41
+
42
+ buildForm(): void {
43
+
44
+ this.formInput = this.fb.group({
45
+ 'name': [null , [Validators.required]],
46
+ 'price': [null , [Validators.required]],
47
+ 'description': [null , [Validators.required]]
48
+ });
49
+ }
50
+
51
+ editProduct(item: Product) {
52
+ this.ItemSelected = item;
53
+ this.actionLabel = 'Edit product';
54
+ this.uxService.openModal('modal1b');
55
+ }
56
+
57
+ deleteProduct(id: number) {
58
+ this.IdSelected = id;
59
+ this.uxService.openModal('modaldelete');
60
+ }
61
+
62
+ onModalAccept(event) {
63
+ this.productsService.deleteProduct(this.IdSelected).subscribe(product => {
64
+ let index = this.products.findIndex(item => item['productId'] === product['productId']);
65
+ this.products.splice(index, 1);
66
+ });
67
+ this.uxService.closeModal('modaldelete');
68
+ }
69
+
70
+ onModalDismiss(event) {
71
+ this.uxService.closeModal('modaldelete');
72
+ }
73
+
74
+ onModalClose(event) {
75
+ this.uxService.closeModal('modaldelete');
76
+ }
77
+
78
+ addItem() {
79
+ this.ItemSelected = null;
80
+ this.actionLabel = 'New product';
81
+ this.formInput.reset();
82
+ this.uxService.openModal('modal1b');
83
+ }
84
+
85
+ onSubmit() {
86
+ this.product = new Product(this.formInput.value);
87
+ this.productsService.addProduct(this.product).subscribe(product => {
88
+ this.products.push(product);
89
+ this.uxService.closeModal('modal1b');
90
+ }, error => {
91
+ this.serviceError = error;
92
+ });
93
+ }
94
+
95
+ onUpdateSubmit(ItemSelected: Product) {
96
+ this.product = new Product(this.formInput.value);
97
+ this.productsService.updateProduct(ItemSelected).subscribe(product => {
98
+ this.uxService.closeModal('modal1b');
99
+ }, error => {
100
+ this.serviceError = error;
101
+ });
102
+ }
103
+
104
+ }
@@ -0,0 +1,6 @@
1
+ export class Product {
2
+
3
+ public constructor(init?: Partial<Product >) {
4
+ Object.assign(this, init);
5
+ }
6
+ }
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ import { ProductsComponent } from './components/products.component';
4
+
5
+ @NgModule({
6
+ imports: [
7
+ RouterModule.forChild([
8
+ { path: '', component: ProductsComponent },
9
+ ])
10
+ ],
11
+ exports: [
12
+ RouterModule
13
+ ]
14
+ })
15
+ export class ProductsRoutingModule {
16
+ }
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { PaginatorModule } from 'primeng/paginator';
4
+ import { UxAllModule } from '@eui/core';
5
+ import { ProductsComponent } from './components/products.component';
6
+ import { ProductsService } from './services/products.service';
7
+ import { ProductsRoutingModule } from './products-routing.module';
8
+ import { TableModule } from 'primeng/table';
9
+
10
+ @NgModule({
11
+ imports: [CommonModule, UxAllModule, ProductsRoutingModule, PaginatorModule, TableModule],
12
+ declarations: [ProductsComponent],
13
+ providers: [ProductsService]
14
+ })
15
+ export class ProductsModule {
16
+ }