generator-jhipster 8.4.0 → 8.5.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 (270) hide show
  1. package/dist/generators/angular/resources/package.json +10 -10
  2. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +2 -2
  3. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +3 -6
  4. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +2 -2
  5. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.ts.ejs +3 -6
  6. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.ts.ejs +3 -6
  7. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +11 -11
  8. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +0 -2
  9. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/user-route-access.service.ts.ejs +1 -1
  10. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +0 -3
  11. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +2 -2
  12. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.spec.ts.ejs +2 -2
  13. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +3 -3
  14. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +11 -17
  15. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/active-menu.directive.ts.ejs +3 -3
  16. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.spec.ts.ejs +2 -2
  17. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.ts.ejs +3 -4
  18. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +2 -2
  19. package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.spec.ts.ejs +10 -8
  20. package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.ts.ejs +3 -8
  21. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +6 -2
  22. package/dist/generators/app/generator.js +4 -13
  23. package/dist/generators/base/generator.js +15 -16
  24. package/dist/generators/base/priorities.js +12 -1
  25. package/dist/generators/base-application/generator.js +14 -2
  26. package/dist/generators/base-application/priorities.js +1 -0
  27. package/dist/generators/base-application/support/prepare-entity.js +7 -8
  28. package/dist/generators/base-application/support/prepare-relationship.js +3 -2
  29. package/dist/generators/base-core/generator.js +40 -9
  30. package/dist/generators/bootstrap-application-base/generator.js +7 -3
  31. package/dist/generators/bootstrap-application-server/generator.js +1 -0
  32. package/dist/generators/client/command.js +2 -2
  33. package/dist/generators/client/generators/common/command.js +5 -0
  34. package/dist/generators/client/generators/common/generator.js +79 -0
  35. package/dist/generators/client/generators/common/index.js +20 -0
  36. package/dist/generators/client/generators/common/templates/src/main/webapp/app/shared/jhipster/headers.ts.ejs +57 -0
  37. package/dist/generators/client/generators/common/templates/src/main/webapp/app/shared/jhipster/problem-details.ts.ejs +51 -0
  38. package/dist/generators/client/resources/package.json +4 -4
  39. package/dist/generators/common/generator.js +5 -0
  40. package/dist/generators/common/resources/package.json +2 -2
  41. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/login-page.cy.ts.ejs +4 -4
  42. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/password-page.cy.ts.ejs +2 -2
  43. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/register-page.cy.ts.ejs +1 -1
  44. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/reset-password-page.cy.ts.ejs +1 -1
  45. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +10 -10
  46. package/dist/generators/docker/templates/docker/mysql.yml.ejs +1 -1
  47. package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +14 -3
  48. package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +14 -3
  49. package/dist/generators/entity/generator.js +2 -10
  50. package/dist/generators/entity/prompts.js +6 -11
  51. package/dist/generators/gatling/README.md +15 -0
  52. package/dist/generators/gatling/templates/src/test/java/gatling/simulations/_entityClass_GatlingTest.java.ejs +2 -10
  53. package/dist/generators/generate-blueprint/command.js +16 -0
  54. package/dist/generators/generate-blueprint/files.js +8 -0
  55. package/dist/generators/generate-blueprint/generator.js +17 -10
  56. package/dist/generators/generate-blueprint/resources/package.json +1 -1
  57. package/dist/generators/generate-blueprint/templates/.blueprint/cli/commands.mjs.ejs +6 -0
  58. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs +20 -0
  59. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/generator.mjs.ejs +9 -13
  60. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/build-matrix.mjs.ejs +22 -0
  61. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.mjs.ejs +24 -0
  62. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.mjs.ejs +1 -0
  63. package/dist/generators/generate-blueprint/templates/.eslintrc.json.ejs +2 -2
  64. package/dist/generators/generate-blueprint/templates/README.md.ejs +16 -8
  65. package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -0
  66. package/dist/generators/generator-constants.js +1 -1
  67. package/dist/generators/info/generator.js +1 -3
  68. package/dist/generators/init/generator.js +2 -2
  69. package/dist/generators/init/resources/.node-version +1 -1
  70. package/dist/generators/java/generators/build-tool/command.js +4 -1
  71. package/dist/generators/java/generators/domain/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +1 -5
  72. package/dist/generators/java/generators/domain/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Asserts.java.ejs +3 -3
  73. package/dist/generators/java/generators/domain/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Test.java.ejs +3 -3
  74. package/dist/generators/java/support/add-java-annotation.js +28 -7
  75. package/dist/generators/java/support/generated-annotation-transform.js +1 -1
  76. package/dist/generators/java/support/index.js +1 -1
  77. package/dist/generators/jdl/generator.js +1 -1
  78. package/dist/generators/kubernetes/files.js +1 -1
  79. package/dist/generators/kubernetes/templates/db/mysql.yml.ejs +0 -1
  80. package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +14 -3
  81. package/dist/generators/languages/generator.js +4 -2
  82. package/dist/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +2 -2
  83. package/dist/generators/maven/templates/mvnw +185 -243
  84. package/dist/generators/maven/templates/mvnw.cmd +121 -180
  85. package/dist/generators/react/generator.js +10 -0
  86. package/dist/generators/react/resources/package.json +24 -24
  87. package/dist/generators/react/templates/src/main/webapp/app/config/axios-interceptor.spec.ts.ejs +1 -1
  88. package/dist/generators/react/templates/src/main/webapp/app/config/axios-interceptor.ts.ejs +1 -1
  89. package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +1 -1
  90. package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.ts.ejs +80 -87
  91. package/dist/generators/react/templates/src/main/webapp/app/config/store.ts.ejs +1 -1
  92. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +3 -3
  93. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.reducer.ts.ejs +12 -7
  94. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +2 -3
  95. package/dist/generators/server/command.js +0 -11
  96. package/dist/generators/server/generator.js +9 -70
  97. package/dist/generators/server/jdl/application-definition.js +3 -1
  98. package/dist/generators/server/resources/Dockerfile +12 -12
  99. package/dist/generators/server/resources/gradle/libs.versions.toml +7 -5
  100. package/dist/generators/server/resources/pom.xml +7 -7
  101. package/dist/generators/server/support/config.js +4 -8
  102. package/dist/generators/server/support/prepare-entity.js +5 -6
  103. package/dist/generators/server/support/relationship.js +5 -2
  104. package/dist/generators/server/templates/build.gradle.ejs +5 -3
  105. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +1 -0
  106. package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +1 -0
  107. package/dist/generators/server/templates/gradle.properties.ejs +1 -1
  108. package/dist/generators/server/templates/pom.xml.ejs +7 -5
  109. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/dto/_dtoClass_.java.ejs +1 -1
  110. package/dist/generators/server/templates/src/main/java/_package_/config/Constants.java.ejs +0 -2
  111. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +1 -18
  112. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +1 -15
  113. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs +0 -20
  114. package/dist/generators/server/templates/src/main/java/_package_/security/SecurityUtils.java.ejs +65 -5
  115. package/dist/generators/server/templates/src/main/java/_package_/service/dto/UserDTO.java.ejs +23 -0
  116. package/dist/generators/server/templates/src/main/java/_package_/service/mapper/UserMapper.java.ejs +8 -4
  117. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource_skipUserManagement.java.ejs +43 -9
  118. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +59 -21
  119. package/dist/generators/server/templates/src/main/resources/swagger/api.yml.ejs +1 -1
  120. package/dist/generators/server/templates/src/test/java/_package_/security/DomainUserDetailsServiceIT.java.ejs +31 -13
  121. package/dist/generators/server/templates/src/test/java/_package_/service/mapper/UserMapperTest.java.ejs +84 -17
  122. package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +62 -6
  123. package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT_oauth2.java.ejs +22 -0
  124. package/dist/generators/server/templates/src/test/resources/config/application.yml.ejs +20 -10
  125. package/dist/generators/spring-boot/command.js +117 -6
  126. package/dist/generators/spring-boot/files.js +0 -5
  127. package/dist/generators/spring-boot/generator.js +40 -7
  128. package/dist/generators/spring-boot/prompts.js +6 -70
  129. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +368 -576
  130. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/UserServiceIT.java.ejs +47 -11
  131. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/PublicUserResourceIT.java.ejs +60 -24
  132. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/UserResourceIT.java.ejs +195 -318
  133. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +58 -51
  134. package/dist/generators/spring-cache/internal/dependencies.js +2 -2
  135. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
  136. package/dist/generators/spring-cloud/generators/gateway/command.js +5 -1
  137. package/dist/generators/spring-cloud/generators/gateway/generator.js +13 -0
  138. package/dist/generators/spring-cloud/generators/gateway/jdl/jdl-routes-option.js +6 -0
  139. package/dist/generators/spring-data-cassandra/generator.js +2 -2
  140. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +3 -1
  141. package/dist/generators/vue/resources/package.json +15 -15
  142. package/dist/generators/vue/templates/src/main/webapp/app/admin/tracker/tracker.service.spec.ts.ejs +1 -1
  143. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -1
  144. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +1 -1
  145. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +1 -1
  146. package/dist/generators/vue/templates/src/main/webapp/app/shared/alert/alert.service.spec.ts.ejs +8 -8
  147. package/dist/generators/vue/templates/src/main/webapp/app/shared/data/data-utils.service.spec.ts.ejs +1 -1
  148. package/dist/generators/vue/templates/tsconfig.app.json.ejs +1 -1
  149. package/dist/generators/vue/templates/vite.config.mts.ejs +5 -4
  150. package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -1
  151. package/dist/jdl/converters/jdl-to-json/jdl-to-json-field-converter.js +4 -4
  152. package/dist/jdl/converters/jdl-to-json/jdl-with-applications-to-json-converter.js +9 -9
  153. package/dist/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.js +2 -2
  154. package/dist/jdl/converters/json-to-jdl-application-converter.js +1 -1
  155. package/dist/jdl/converters/json-to-jdl-converter.js +6 -5
  156. package/dist/jdl/converters/json-to-jdl-entity-converter.js +14 -14
  157. package/dist/jdl/converters/json-to-jdl-option-converter.js +1 -2
  158. package/dist/jdl/converters/parsed-jdl-to-jdl-object/application-converter.js +1 -1
  159. package/dist/jdl/converters/parsed-jdl-to-jdl-object/option-converter.js +2 -2
  160. package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +7 -6
  161. package/dist/jdl/converters/parsed-jdl-to-jdl-object/validation-converter.js +1 -1
  162. package/dist/jdl/exporters/applications/jhipster-application-formatter.js +16 -23
  163. package/dist/jdl/exporters/config.js +1 -0
  164. package/dist/jdl/exporters/jhipster-deployment-exporter.js +5 -5
  165. package/dist/jdl/exporters/jhipster-entity-exporter.js +1 -1
  166. package/dist/jdl/jdl-importer.js +22 -20
  167. package/dist/jdl/jhipster/binary-options.js +12 -8
  168. package/dist/jdl/jhipster/json-entity.js +1 -1
  169. package/dist/jdl/models/abstract-jdl-option.js +2 -2
  170. package/dist/jdl/models/jdl-application-configuration-factory.js +2 -0
  171. package/dist/jdl/models/jdl-binary-option.js +2 -2
  172. package/dist/jdl/models/jdl-deployment.js +11 -0
  173. package/dist/jdl/models/jdl-entity.js +1 -1
  174. package/dist/jdl/models/jdl-enum.js +1 -1
  175. package/dist/jdl/models/jdl-enums.js +0 -18
  176. package/dist/jdl/models/jdl-field.js +2 -2
  177. package/dist/jdl/models/jdl-object-wrapper.js +1 -0
  178. package/dist/jdl/models/jdl-object.js +23 -45
  179. package/dist/jdl/models/jdl-options.js +0 -18
  180. package/dist/jdl/models/jdl-relationships.js +8 -16
  181. package/dist/jdl/models/jdl-unary-option.js +1 -1
  182. package/dist/jdl/models/list-jdl-application-configuration-option.js +5 -2
  183. package/dist/jdl/parsing/jdl-ast-builder-visitor.js +12 -0
  184. package/dist/jdl/parsing/jdl-parser.js +14 -0
  185. package/dist/jdl/parsing/lexer/lexer.js +17 -11
  186. package/dist/jdl/parsing/validator.js +16 -2
  187. package/dist/jdl/readers/json-reader.js +1 -1
  188. package/dist/jdl/utils/array-utils.js +6 -0
  189. package/dist/jdl/utils/set-utils.js +3 -2
  190. package/dist/jdl/validators/jdl-without-application-validator.js +2 -2
  191. package/dist/testing/helpers.js +4 -0
  192. package/dist/types/generators/base/api.d.ts +5 -1
  193. package/dist/types/generators/base/generator.d.ts +10 -4
  194. package/dist/types/generators/base/priorities.d.ts +4 -0
  195. package/dist/types/generators/base/shared-data.d.ts +1 -1
  196. package/dist/types/generators/base-application/priorities.d.ts +2 -0
  197. package/dist/types/generators/base-application/support/entity.d.ts +2 -2
  198. package/dist/types/generators/base-application/support/prepare-entity.d.ts +3 -3
  199. package/dist/types/generators/base-application/support/relationship.d.ts +5 -5
  200. package/dist/types/generators/base-core/generator.d.ts +16 -1
  201. package/dist/types/generators/generator-constants.d.ts +1 -1
  202. package/dist/types/generators/java/support/add-java-annotation.d.ts +10 -20
  203. package/dist/types/generators/java/support/doc.d.ts +1 -1
  204. package/dist/types/generators/java/support/index.d.ts +1 -1
  205. package/dist/types/generators/server/support/relationship.d.ts +2 -2
  206. package/dist/types/generators/server/types.d.ts +5 -0
  207. package/dist/types/generators/spring-cloud/generators/gateway/jdl/jdl-routes-option.d.ts +2 -0
  208. package/dist/types/generators/spring-cloud/generators/gateway/types.d.ts +4 -0
  209. package/dist/types/jdl/converters/jdl-to-json/jdl-to-json-field-converter.d.ts +2 -2
  210. package/dist/types/jdl/converters/jdl-to-json/jdl-with-applications-to-json-converter.d.ts +2 -1
  211. package/dist/types/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.d.ts +3 -1
  212. package/dist/types/jdl/converters/json-to-jdl-application-converter.d.ts +9 -2
  213. package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +3 -3
  214. package/dist/types/jdl/converters/json-to-jdl-entity-converter.d.ts +2 -4
  215. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/application-converter.d.ts +3 -1
  216. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/deployment-converter.d.ts +2 -1
  217. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.d.ts +3 -1
  218. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/enum-converter.d.ts +2 -1
  219. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/field-converter.d.ts +2 -1
  220. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +3 -3
  221. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.d.ts +2 -1
  222. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/relationship-converter.d.ts +2 -1
  223. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/types.d.ts +110 -0
  224. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/validation-converter.d.ts +2 -1
  225. package/dist/types/jdl/converters/types.d.ts +102 -14
  226. package/dist/types/jdl/exporters/applications/jhipster-application-formatter.d.ts +4 -4
  227. package/dist/types/jdl/exporters/config.d.ts +2 -1
  228. package/dist/types/jdl/exporters/export-utils.d.ts +2 -1
  229. package/dist/types/jdl/exporters/jdl-exporter.d.ts +2 -1
  230. package/dist/types/jdl/exporters/jhipster-deployment-exporter.d.ts +3 -1
  231. package/dist/types/jdl/exporters/jhipster-entity-exporter.d.ts +3 -1
  232. package/dist/types/jdl/exporters/types.d.ts +61 -0
  233. package/dist/types/jdl/jhipster/binary-options.d.ts +8 -26
  234. package/dist/types/jdl/jhipster/field-types.d.ts +2 -2
  235. package/dist/types/jdl/jhipster/json-entity.d.ts +2 -2
  236. package/dist/types/jdl/models/abstract-jdl-option.d.ts +14 -9
  237. package/dist/types/jdl/models/boolean-jdl-application-configuration-option.d.ts +1 -1
  238. package/dist/types/jdl/models/integer-jdl-application-configuration-option.d.ts +1 -1
  239. package/dist/types/jdl/models/jdl-application-configuration-factory.d.ts +1 -1
  240. package/dist/types/jdl/models/jdl-application-configuration-option.d.ts +4 -4
  241. package/dist/types/jdl/models/jdl-application-configuration.d.ts +4 -4
  242. package/dist/types/jdl/models/jdl-application-definition.d.ts +4 -4
  243. package/dist/types/jdl/models/jdl-application-entities.d.ts +4 -4
  244. package/dist/types/jdl/models/jdl-application.d.ts +16 -13
  245. package/dist/types/jdl/models/jdl-binary-option.d.ts +5 -3
  246. package/dist/types/jdl/models/jdl-deployment.d.ts +13 -1
  247. package/dist/types/jdl/models/jdl-entity.d.ts +5 -5
  248. package/dist/types/jdl/models/jdl-enum-value.d.ts +4 -4
  249. package/dist/types/jdl/models/jdl-enum.d.ts +9 -5
  250. package/dist/types/jdl/models/jdl-enums.d.ts +6 -5
  251. package/dist/types/jdl/models/jdl-field.d.ts +10 -8
  252. package/dist/types/jdl/models/jdl-object-wrapper.d.ts +25 -0
  253. package/dist/types/jdl/models/jdl-object.d.ts +23 -19
  254. package/dist/types/jdl/models/jdl-options.d.ts +7 -24
  255. package/dist/types/jdl/models/jdl-relationship.d.ts +16 -10
  256. package/dist/types/jdl/models/jdl-relationships.d.ts +5 -5
  257. package/dist/types/jdl/models/jdl-validation.d.ts +3 -3
  258. package/dist/types/jdl/models/list-jdl-application-configuration-option.d.ts +4 -3
  259. package/dist/types/jdl/models/string-jdl-application-configuration-option.d.ts +2 -2
  260. package/dist/types/jdl/parsing/jdl-ast-builder-visitor.d.ts +1 -0
  261. package/dist/types/jdl/parsing/jdl-parser.d.ts +1 -0
  262. package/dist/types/jdl/parsing/jdl-parsing-types.d.ts +23 -0
  263. package/dist/types/jdl/parsing/lexer/lexer.d.ts +6 -2
  264. package/dist/types/jdl/parsing/validator.d.ts +1 -1
  265. package/dist/types/jdl/utils/array-utils.d.ts +1 -0
  266. package/dist/types/jdl/utils/set-utils.d.ts +1 -19
  267. package/dist/types/jdl/validators/deployment-validator.d.ts +2 -1
  268. package/dist/types/testing/helpers.d.ts +13 -3
  269. package/package.json +24 -23
  270. /package/dist/jdl/converters/{types.js → parsed-jdl-to-jdl-object/types.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "dependencies": {
3
- "@angular/common": "17.3.6",
3
+ "@angular/common": "17.3.9",
4
4
  "@fortawesome/angular-fontawesome": "0.14.1",
5
5
  "@fortawesome/fontawesome-svg-core": "6.5.2",
6
6
  "@fortawesome/free-solid-svg-icons": "6.5.2",
@@ -16,36 +16,36 @@
16
16
  "rxjs": "7.8.1",
17
17
  "sockjs-client": "1.6.1",
18
18
  "tslib": "2.6.2",
19
- "zone.js": "0.14.4"
19
+ "zone.js": "0.14.6"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@angular-architects/module-federation": "17.0.8",
23
23
  "@angular-architects/module-federation-runtime": "17.0.8",
24
24
  "@angular-builders/custom-webpack": "17.0.2",
25
25
  "@angular-builders/jest": "17.0.3",
26
- "@angular-eslint/eslint-plugin": "17.3.0",
27
- "@angular/cli": "17.3.6",
26
+ "@angular-eslint/eslint-plugin": "17.5.2",
27
+ "@angular/cli": "17.3.7",
28
28
  "@types/jest": "29.5.12",
29
29
  "@types/node": "20.11.25",
30
30
  "@types/sockjs-client": "1.5.4",
31
- "@typescript-eslint/eslint-plugin": "7.7.1",
31
+ "@typescript-eslint/eslint-plugin": "7.11.0",
32
32
  "browser-sync": "3.0.2",
33
33
  "browser-sync-webpack-plugin": "2.3.0",
34
34
  "buffer": "6.0.3",
35
35
  "copy-webpack-plugin": "12.0.2",
36
36
  "eslint": "8.57.0",
37
37
  "eslint-config-prettier": "9.1.0",
38
- "eslint-webpack-plugin": "4.1.0",
38
+ "eslint-webpack-plugin": "4.2.0",
39
39
  "folder-hash": "4.0.4",
40
40
  "jest": "29.7.0",
41
41
  "jest-date-mock": "1.0.10",
42
42
  "jest-junit": "16.0.0",
43
- "jest-preset-angular": "14.0.3",
43
+ "jest-preset-angular": "14.1.0",
44
44
  "jest-sonar": "0.2.16",
45
45
  "merge-jsons-webpack-plugin": "2.0.1",
46
- "postcss-rtlcss": "5.1.2",
47
- "rimraf": "5.0.5",
48
- "ts-jest": "29.1.2",
46
+ "postcss-rtlcss": "5.3.0",
47
+ "rimraf": "5.0.7",
48
+ "ts-jest": "29.1.4",
49
49
  "typescript": "5.4.5",
50
50
  "webpack": "5.91.0",
51
51
  "webpack-bundle-analyzer": "4.10.2",
@@ -16,7 +16,7 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- import { ElementRef } from '@angular/core';
19
+ import { ElementRef, signal } from '@angular/core';
20
20
  import { ComponentFixture, TestBed, inject, tick, fakeAsync } from '@angular/core/testing';
21
21
  import { HttpClientTestingModule } from '@angular/common/http/testing';
22
22
  import { FormBuilder } from '@angular/forms';
@@ -60,7 +60,7 @@ describe('PasswordResetFinishComponent', () => {
60
60
  const node = {
61
61
  focus: jest.fn(),
62
62
  };
63
- comp.newPassword = new ElementRef(node);
63
+ comp.newPassword = signal<ElementRef>(new ElementRef(node));
64
64
 
65
65
  comp.ngAfterViewInit();
66
66
 
@@ -16,7 +16,7 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- import { Component, inject, OnInit, AfterViewInit, ElementRef, ViewChild, signal } from '@angular/core';
19
+ import { Component, inject, OnInit, AfterViewInit, ElementRef, signal, viewChild } from '@angular/core';
20
20
  import { FormGroup, FormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
21
21
  import { ActivatedRoute, RouterModule } from '@angular/router';
22
22
  import PasswordStrengthBarComponent from 'app/account/password/password-strength-bar/password-strength-bar.component';
@@ -31,8 +31,7 @@ import { PasswordResetFinishService } from './password-reset-finish.service';
31
31
  templateUrl: './password-reset-finish.component.html',
32
32
  })
33
33
  export default class PasswordResetFinishComponent implements OnInit, AfterViewInit {
34
- @ViewChild('newPassword', { static: false })
35
- newPassword?: ElementRef;
34
+ newPassword = viewChild.required<ElementRef>('newPassword');
36
35
 
37
36
  initialized = signal(false);
38
37
  doNotMatch = signal(false);
@@ -64,9 +63,7 @@ export default class PasswordResetFinishComponent implements OnInit, AfterViewIn
64
63
  }
65
64
 
66
65
  ngAfterViewInit(): void {
67
- if (this.newPassword) {
68
- this.newPassword.nativeElement.focus();
69
- }
66
+ this.newPassword().nativeElement.focus();
70
67
  }
71
68
 
72
69
  finishReset(): void {
@@ -16,7 +16,7 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- import { ElementRef } from '@angular/core';
19
+ import { ElementRef, signal } from '@angular/core';
20
20
  import { ComponentFixture, TestBed, inject } from '@angular/core/testing';
21
21
  import { HttpClientTestingModule } from '@angular/common/http/testing';
22
22
  import { FormBuilder } from '@angular/forms';
@@ -43,7 +43,7 @@ describe('PasswordResetInitComponent', () => {
43
43
  const node = {
44
44
  focus: jest.fn(),
45
45
  };
46
- comp.email = new ElementRef(node);
46
+ comp.email = signal<ElementRef>(new ElementRef(node));
47
47
 
48
48
  comp.ngAfterViewInit();
49
49
 
@@ -16,7 +16,7 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- import { Component, AfterViewInit, ElementRef, inject, ViewChild, signal } from '@angular/core';
19
+ import { Component, AfterViewInit, ElementRef, inject, signal, viewChild } from '@angular/core';
20
20
  import { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
21
21
  import SharedModule from 'app/shared/shared.module';
22
22
 
@@ -29,8 +29,7 @@ import { PasswordResetInitService } from './password-reset-init.service';
29
29
  templateUrl: './password-reset-init.component.html',
30
30
  })
31
31
  export default class PasswordResetInitComponent implements AfterViewInit {
32
- @ViewChild('email', { static: false })
33
- email?: ElementRef;
32
+ email = viewChild.required<ElementRef>('email');
34
33
 
35
34
  success = signal(false);
36
35
  resetRequestForm;
@@ -45,9 +44,7 @@ export default class PasswordResetInitComponent implements AfterViewInit {
45
44
  }
46
45
 
47
46
  ngAfterViewInit(): void {
48
- if (this.email) {
49
- this.email.nativeElement.focus();
50
- }
47
+ this.email().nativeElement.focus();
51
48
  }
52
49
 
53
50
  requestReset(): void {
@@ -16,7 +16,7 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- import { Component, AfterViewInit, ElementRef, inject, ViewChild, signal } from '@angular/core';
19
+ import { Component, AfterViewInit, ElementRef, inject, signal, viewChild } from '@angular/core';
20
20
  import { HttpErrorResponse } from '@angular/common/http';
21
21
  import { RouterModule } from '@angular/router';
22
22
  import { FormGroup, FormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
@@ -36,8 +36,7 @@ import PasswordStrengthBarComponent from '../password/password-strength-bar/pass
36
36
  templateUrl: './register.component.html',
37
37
  })
38
38
  export default class RegisterComponent implements AfterViewInit {
39
- @ViewChild('login', { static: false })
40
- login?: ElementRef;
39
+ login = viewChild.required<ElementRef>('login');
41
40
 
42
41
  doNotMatch = signal(false);
43
42
  error = signal(false);
@@ -73,9 +72,7 @@ export default class RegisterComponent implements AfterViewInit {
73
72
  private registerService = inject(RegisterService);
74
73
 
75
74
  ngAfterViewInit(): void {
76
- if (this.login) {
77
- this.login.nativeElement.focus();
78
- }
75
+ this.login().nativeElement.focus();
79
76
  }
80
77
 
81
78
  register(): void {
@@ -19,45 +19,45 @@
19
19
  <div class="modal-header">
20
20
  <h4 class="modal-title">__jhiTranslateTag__('metrics.jvm.threads.dump.title')</h4>
21
21
 
22
- <button type="button" class="btn-close" (click)="dismiss()">&times;</button>
22
+ <button type="button" class="btn-close" (click)="dismiss()">&nbsp;</button>
23
23
  </div>
24
24
 
25
25
  <div class="modal-body">
26
26
  <div class="mb-3">
27
- <span class="badge bg-primary hand" (click)="threadStateFilter = undefined">
27
+ <button class="badge bg-primary hand" (click)="threadStateFilter = undefined" (keydown.enter)="threadStateFilter = undefined">
28
28
  @if (threadStateFilter === undefined) {
29
29
  <fa-icon icon="check"></fa-icon>
30
30
  }
31
31
  All&nbsp;<span class="badge rounded-pill bg-default">{{ threadDumpAll }}</span>
32
- </span>
32
+ </button>
33
33
 
34
- <span class="badge bg-success hand" (click)="threadStateFilter = ThreadState.Runnable">
34
+ <button class="badge bg-success hand" (click)="threadStateFilter = ThreadState.Runnable" (keydown.enter)="threadStateFilter = ThreadState.Runnable">
35
35
  @if (threadStateFilter === ThreadState.Runnable) {
36
36
  <fa-icon icon="check"></fa-icon>
37
37
  }
38
38
  Runnable&nbsp;<span class="badge rounded-pill bg-default">{{ threadDumpRunnable }}</span>
39
- </span>
39
+ </button>
40
40
 
41
- <span class="badge bg-info hand" (click)="threadStateFilter = ThreadState.Waiting">
41
+ <button class="badge bg-info hand" (click)="threadStateFilter = ThreadState.Waiting" (keydown.enter)="threadStateFilter = ThreadState.Waiting">
42
42
  @if (threadStateFilter === ThreadState.Waiting) {
43
43
  <fa-icon icon="check"></fa-icon>
44
44
  }
45
45
  Waiting&nbsp;<span class="badge rounded-pill bg-default">{{ threadDumpWaiting }}</span>
46
- </span>
46
+ </button>
47
47
 
48
- <span class="badge bg-warning hand" (click)="threadStateFilter = ThreadState.TimedWaiting">
48
+ <button class="badge bg-warning hand" (click)="threadStateFilter = ThreadState.TimedWaiting" (keydown.enter)="threadStateFilter = ThreadState.TimedWaiting">
49
49
  @if (threadStateFilter === ThreadState.TimedWaiting) {
50
50
  <fa-icon icon="check"></fa-icon>
51
51
  }
52
52
  Timed Waiting&nbsp;<span class="badge rounded-pill bg-default">{{ threadDumpTimedWaiting }}</span>
53
- </span>
53
+ </button>
54
54
 
55
- <span class="badge bg-danger hand" (click)="threadStateFilter = ThreadState.Blocked">
55
+ <button class="badge bg-danger hand" (click)="threadStateFilter = ThreadState.Blocked" (keydown.enter)="threadStateFilter = ThreadState.Blocked">
56
56
  @if (threadStateFilter === ThreadState.Blocked) {
57
57
  <fa-icon icon="check"></fa-icon>
58
58
  }
59
59
  Blocked&nbsp;<span class="badge rounded-pill bg-default">{{ threadDumpBlocked }}</span>
60
- </span>
60
+ </button>
61
61
  </div>
62
62
 
63
63
  @for (thread of getThreads(); track $index) {
@@ -20,8 +20,6 @@
20
20
  <form name="deleteForm" (ngSubmit)="confirmDelete(user.login!)">
21
21
  <div class="modal-header">
22
22
  <h4 class="modal-title">__jhiTranslateTag__('entity.delete.title')</h4>
23
-
24
- <span class="btn btn-close" data-dismiss="modal" aria-hidden="true" (click)="cancel()"></span>
25
23
  </div>
26
24
 
27
25
  <div class="modal-body">
@@ -43,7 +43,7 @@ export const UserRouteAccessService: CanActivateFn = (next: ActivatedRouteSnapsh
43
43
  }
44
44
 
45
45
  if (isDevMode()) {
46
- console.error('User has not any of required authorities: ', authorities);
46
+ console.error('User does not have any of the required authorities:', authorities);
47
47
  }
48
48
  router.navigate(['accessdenied']);
49
49
  return false;
@@ -20,9 +20,6 @@
20
20
  <form name="deleteForm" (ngSubmit)="confirmDelete(<%= entityInstance %>.<%= primaryKey.name %>!)">
21
21
  <div class="modal-header">
22
22
  <h4 class="modal-title" data-cy="<%= entityInstance %>DeleteDialogHeading">__jhiTranslateTag__('entity.delete.title')</h4>
23
-
24
- <span class="btn btn-close" data-dismiss="modal" aria-hidden="true"
25
- (click)="cancel()"></span>
26
23
  </div>
27
24
 
28
25
  <div class="modal-body">
@@ -96,7 +96,7 @@ describe('<%= entityAngularName %> Management Detail Component', () => {
96
96
  comp.byteSize(fakeBase64);
97
97
 
98
98
  // THEN
99
- expect(dataUtils.byteSize).toBeCalledWith(fakeBase64);
99
+ expect(dataUtils.byteSize).toHaveBeenCalledWith(fakeBase64);
100
100
  });
101
101
  });
102
102
 
@@ -116,7 +116,7 @@ describe('<%= entityAngularName %> Management Detail Component', () => {
116
116
  comp.openFile(fakeBase64, fakeContentType);
117
117
 
118
118
  // THEN
119
- expect(dataUtils.openFile).toBeCalledWith(fakeBase64, fakeContentType);
119
+ expect(dataUtils.openFile).toHaveBeenCalledWith(fakeBase64, fakeContentType);
120
120
  });
121
121
  });
122
122
  <%_ } _%>
@@ -73,7 +73,7 @@ describe('<%= entityAngularName %> routing resolve service', () => {
73
73
  });
74
74
 
75
75
  // THEN
76
- expect(service.find).toBeCalledWith(<%- tsKeyId %>);
76
+ expect(service.find).toHaveBeenCalledWith(<%- tsKeyId %>);
77
77
  expect(result<%= entityAngularName %>).toEqual({ <%= primaryKey.name %>: <%- tsKeyId %> });
78
78
  });
79
79
 
@@ -111,7 +111,7 @@ describe('<%= entityAngularName %> routing resolve service', () => {
111
111
  });
112
112
 
113
113
  // THEN
114
- expect(service.find).toBeCalledWith(<%- tsKeyId %>);
114
+ expect(service.find).toHaveBeenCalledWith(<%- tsKeyId %>);
115
115
  expect(result<%= entityAngularName %>).toEqual(undefined);
116
116
  expect(mockRouter.navigate).toHaveBeenCalledWith(['404']);
117
117
  });
@@ -19,8 +19,8 @@
19
19
  <%_
20
20
  const tsKeyId = this.generateTestEntityId(primaryKey.type);
21
21
  const allRelationshipsByEntityNeedingOptions = Object
22
- .values(differentRelationships)
23
- .map(relationships => relationships.filter(rel => rel.persistableRelationship))
22
+ .values(relationshipsByOtherEntity)
23
+ .map(relationships => relationships.filter(rel => rel.persistableRelationship && !rel.otherEntity.embedded))
24
24
  .filter(relationships => relationships.length > 0);
25
25
  const testEntityPrimaryKey0 = this.generateTestEntityPrimaryKey(primaryKey, 0);
26
26
  const testEntityPrimaryKey1 = this.generateTestEntityPrimaryKey(primaryKey, 1);
@@ -245,7 +245,7 @@ describe('<%= entityAngularName %> Management Update Component', () => {
245
245
  <%_ } _%>
246
246
  });
247
247
 
248
- <%_ const trackedRelationships = Object.values(differentRelationships).filter(arr => arr.some(rel => rel.persistableRelationship && rel.otherEntity.primaryKey));
248
+ <%_ const trackedRelationships = Object.values(relationshipsByOtherEntity).filter(arr => arr.some(rel => rel.persistableRelationship && !rel.otherEntity.embedded));
249
249
  if (trackedRelationships.length > 0) {
250
250
  _%>
251
251
 
@@ -18,8 +18,8 @@
18
18
  -%>
19
19
  <%_
20
20
  const allRelationshipsByEntityNeedingOptions = Object
21
- .values(differentRelationships)
22
- .map(relationships => relationships.filter(rel => rel.persistableRelationship))
21
+ .values(relationshipsByOtherEntity)
22
+ .map(relationships => relationships.filter(rel => rel.persistableRelationship && !rel.otherEntity.embedded))
23
23
  .filter(relationships => relationships.length > 0);
24
24
  _%>
25
25
  import { Component, inject, OnInit<% if (anyFieldHasImageContentType) { %>, ElementRef<% } %> } from '@angular/core';
@@ -39,10 +39,8 @@ import { AlertError } from 'app/shared/alert/alert-error.model';
39
39
  import { EventManager, EventWithContent } from 'app/core/util/event-manager.service';
40
40
  import { DataUtils, FileLoadError } from 'app/core/util/data-util.service';
41
41
  <%_ } _%>
42
- <%_
43
- Object.keys(differentRelationships).forEach(key => {
44
- if (differentRelationships[key].some(rel => rel.persistableRelationship)) {
45
- const uniqueRel = differentRelationships[key][0];
42
+ <%_ for (const relationshipsByEntityNeedingOptions of allRelationshipsByEntityNeedingOptions) {
43
+ const uniqueRel = relationshipsByEntityNeedingOptions[0];
46
44
  if (uniqueRel.otherEntityAngularName !== entityAngularName) {
47
45
  _%>
48
46
  import { I<%= uniqueRel.otherEntityAngularName %> } from 'app/entities/<%= uniqueRel.otherEntityPath %>/<%= uniqueRel.otherEntityFileName %>.model';
@@ -50,7 +48,6 @@ import { <%= uniqueRel.otherEntityAngularName %>Service } from 'app/entities/<%=
50
48
  <%_
51
49
  }
52
50
  }
53
- });
54
51
  _%>
55
52
  <%_ const enumImports = this.generateEntityClientEnumImports(fields); _%>
56
53
  <%_ enumImports.forEach( (importedPath, importedType) => { _%>
@@ -70,7 +67,7 @@ export class <%= entityAngularName %>UpdateComponent implements OnInit {
70
67
  <%- this._.lowerFirst(importedType) %>Values = Object.keys(<%- importedType %>);
71
68
  <%_ }); _%>
72
69
 
73
- <%_ for (const relationshipsByEntityNeedingOptions of Object.values(differentRelationships).map(relationships => relationships.filter(rel => rel.persistableRelationship)).filter(relationships => relationships.length > 0)) { _%>
70
+ <%_ for (const relationshipsByEntityNeedingOptions of allRelationshipsByEntityNeedingOptions) { _%>
74
71
  <%_ const relationshipsWithCustomUniqueOptions = relationshipsByEntityNeedingOptions.filter(rel => rel.relationshipOneToOne && rel.otherRelationship); _%>
75
72
  <%_ if (relationshipsByEntityNeedingOptions.length > relationshipsWithCustomUniqueOptions.length) { _%>
76
73
  <%_ const otherEntity = relationshipsByEntityNeedingOptions[0].otherEntity _%>
@@ -87,17 +84,14 @@ export class <%= entityAngularName %>UpdateComponent implements OnInit {
87
84
  <%_ } _%>
88
85
  protected <%= entityInstance %>Service = inject(<%= entityAngularName %>Service);
89
86
  protected <%= entityInstance %>FormService = inject(<%= entityAngularName %>FormService);
90
- <%_
91
- Object.keys(differentRelationships).forEach(key => {
92
- if (differentRelationships[key].some(rel => rel.persistableRelationship)) {
93
- const uniqueRel = differentRelationships[key][0];
87
+ <%_ for (const relationshipsByEntityNeedingOptions of allRelationshipsByEntityNeedingOptions) {
88
+ const uniqueRel = relationshipsByEntityNeedingOptions[0];
94
89
  if (uniqueRel.otherEntityAngularName !== entityAngularName) {
95
90
  _%>
96
91
  protected <%= uniqueRel.otherEntity.entityInstance %>Service = inject(<%= uniqueRel.otherEntityAngularName %>Service);
97
92
  <%_
98
93
  }
99
94
  }
100
- });
101
95
  _%>
102
96
  <%_ if (anyFieldHasImageContentType) { _%>
103
97
  protected elementRef = inject(ElementRef);
@@ -107,8 +101,8 @@ _%>
107
101
  // eslint-disable-next-line @typescript-eslint/member-ordering
108
102
  editForm: <%= entityAngularName %>FormGroup = this.<%= entityInstance %>FormService.create<%= entityAngularName %>FormGroup();
109
103
 
110
- <%_ for (const relationshipsByEntity of Object.values(differentRelationships).filter(arr => arr.some(rel => rel.persistableRelationship && rel.otherEntity.primaryKey))) {
111
- const { otherEntity } = relationshipsByEntity[0];
104
+ <%_ for (const relationshipsByEntityNeedingOptions of allRelationshipsByEntityNeedingOptions) {
105
+ const { otherEntity } = relationshipsByEntityNeedingOptions[0];
112
106
  _%>
113
107
 
114
108
  compare<%= otherEntity.entityAngularName %> = (o1: I<%= otherEntity.entityAngularName %> | null, o2: I<%= otherEntity.entityAngularName %> | null): boolean =>
@@ -122,7 +116,7 @@ _%>
122
116
  this.updateForm(<%= entityInstance %>);
123
117
  }
124
118
 
125
- <%_ if (relationships.filter(rel => rel.persistableRelationship && !rel.otherEntityIsEmbedded).length > 0) { _%>
119
+ <%_ if (relationships.filter(rel => rel.persistableRelationship && !rel.otherEntity.embedded).length > 0) { _%>
126
120
  this.loadRelationshipsOptions();
127
121
  <%_ } _%>
128
122
  });
@@ -225,7 +219,7 @@ _%>
225
219
 
226
220
  <%_ if (relationships.filter(rel => rel.persistableRelationship && !rel.otherEntityIsEmbedded).length > 0) { _%>
227
221
  protected loadRelationshipsOptions(): void {
228
- <%_ for (const relationshipsByEntityNeedingOptions of Object.values(differentRelationships).map(relationships => relationships.filter(rel => rel.persistableRelationship)).filter(relationships => relationships.length > 0)) { _%>
222
+ <%_ for (const relationshipsByEntityNeedingOptions of allRelationshipsByEntityNeedingOptions) { _%>
229
223
  <%_ const relationshipsWithCustomUniqueOptions = relationshipsByEntityNeedingOptions.filter(rel => rel.relationshipOneToOne && rel.otherRelationship); %>
230
224
  <%_ const relationshipsWithCustomSharedOptions = relationshipsByEntityNeedingOptions.filter(rel => !relationshipsWithCustomUniqueOptions.includes(rel)); %>
231
225
  <%_ const { otherEntity } = relationshipsByEntityNeedingOptions[0] _%>
@@ -16,7 +16,7 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- import { Directive, OnInit, ElementRef, Renderer2, inject, Input } from '@angular/core';
19
+ import { Directive, OnInit, ElementRef, Renderer2, inject, input } from '@angular/core';
20
20
  import { TranslateService, LangChangeEvent } from '@ngx-translate/core';
21
21
 
22
22
  @Directive({
@@ -24,7 +24,7 @@ import { TranslateService, LangChangeEvent } from '@ngx-translate/core';
24
24
  selector: '[<%= jhiPrefix %>ActiveMenu]',
25
25
  })
26
26
  export default class ActiveMenuDirective implements OnInit {
27
- @Input() <%= jhiPrefix %>ActiveMenu?: string;
27
+ <%= jhiPrefix %>ActiveMenu = input();
28
28
 
29
29
  private el = inject(ElementRef);
30
30
  private renderer = inject(Renderer2);
@@ -39,7 +39,7 @@ export default class ActiveMenuDirective implements OnInit {
39
39
  }
40
40
 
41
41
  updateActiveFlag(selectedLanguage: string): void {
42
- if (this.<%= jhiPrefix %>ActiveMenu === selectedLanguage) {
42
+ if (this.<%= jhiPrefix %>ActiveMenu() === selectedLanguage) {
43
43
  this.renderer.addClass(this.el.nativeElement, 'active');
44
44
  } else {
45
45
  this.renderer.removeClass(this.el.nativeElement, 'active');
@@ -19,7 +19,7 @@
19
19
  jest.mock('app/core/auth/account.service');
20
20
  jest.mock('app/login/login.service');
21
21
 
22
- import { ElementRef } from '@angular/core';
22
+ import { ElementRef, signal } from '@angular/core';
23
23
  import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
24
24
  import { FormBuilder } from '@angular/forms';
25
25
  import { Router, Navigation } from '@angular/router';
@@ -110,7 +110,7 @@ describe('LoginComponent', () => {
110
110
  const node = {
111
111
  focus: jest.fn(),
112
112
  };
113
- comp.username = new ElementRef(node);
113
+ comp.username = signal<ElementRef>(new ElementRef(node));
114
114
 
115
115
  // WHEN
116
116
  comp.ngAfterViewInit();
@@ -16,7 +16,7 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- import { Component, ViewChild, OnInit, AfterViewInit, ElementRef, inject, signal } from '@angular/core';
19
+ import { Component, OnInit, AfterViewInit, ElementRef, inject, signal, viewChild } from '@angular/core';
20
20
  import { FormGroup, FormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
21
21
  import { Router, RouterModule } from '@angular/router';
22
22
 
@@ -31,8 +31,7 @@ import { AccountService } from 'app/core/auth/account.service';
31
31
  templateUrl: './login.component.html',
32
32
  })
33
33
  export default class LoginComponent implements OnInit, AfterViewInit {
34
- @ViewChild('username', { static: false })
35
- username!: ElementRef;
34
+ username = viewChild.required<ElementRef>('username');
36
35
 
37
36
  authenticationError = signal(false);
38
37
 
@@ -56,7 +55,7 @@ export default class LoginComponent implements OnInit, AfterViewInit {
56
55
  }
57
56
 
58
57
  ngAfterViewInit(): void {
59
- this.username.nativeElement.focus();
58
+ this.username().nativeElement.focus();
60
59
  }
61
60
 
62
61
  login(): void {
@@ -100,7 +100,7 @@ describe('Alert Error Component', () => {
100
100
  status: 400,
101
101
  statusText: 'Bad Request',
102
102
  error: {
103
- type: 'https://www.jhipster.tech/problem/constraint-violation',
103
+ type: 'https://www.jhipster.tech/problem/problem-with-message',
104
104
  title: 'Bad Request',
105
105
  status: 400,
106
106
  path: '/api/foos',
@@ -135,7 +135,7 @@ describe('Alert Error Component', () => {
135
135
  status: 400,
136
136
  statusText: 'Bad Request',
137
137
  error: {
138
- type: 'https://www.jhipster.tech/problem/constraint-violation',
138
+ type: 'https://www.jhipster.tech/problem/problem-with-message',
139
139
  title: 'Method argument not valid',
140
140
  status: 400,
141
141
  path: '/api/foos',
@@ -18,9 +18,12 @@
18
18
  -%>
19
19
  jest.mock('app/core/auth/account.service');
20
20
 
21
- import { Component, ElementRef, Signal, ViewChild, WritableSignal, signal } from '@angular/core';
21
+ import { Component, ElementRef, WritableSignal, signal, viewChild } from '@angular/core';
22
+ import { HttpClientTestingModule } from '@angular/common/http/testing';
22
23
  import { TestBed, waitForAsync } from '@angular/core/testing';
23
- import { Subject } from 'rxjs';
24
+ <%_ if (enableTranslation) { _%>
25
+ import { TranslateModule } from '@ngx-translate/core';
26
+ <%_ } _%>
24
27
 
25
28
  import { AccountService } from 'app/core/auth/account.service';
26
29
  import { Account } from 'app/core/auth/account.model';
@@ -31,8 +34,7 @@ import HasAnyAuthorityDirective from './has-any-authority.directive';
31
34
  template: ` <div *<%= jhiPrefix %>HasAnyAuthority="'ROLE_ADMIN'" #content></div> `,
32
35
  })
33
36
  class TestHasAnyAuthorityDirectiveComponent {
34
- @ViewChild('content', { static: false })
35
- content?: ElementRef;
37
+ content = viewChild<ElementRef>('content');
36
38
  }
37
39
 
38
40
  describe('HasAnyAuthorityDirective tests', () => {
@@ -41,7 +43,7 @@ describe('HasAnyAuthorityDirective tests', () => {
41
43
 
42
44
  beforeEach(waitForAsync(() => {
43
45
  TestBed.configureTestingModule({
44
- imports: [HasAnyAuthorityDirective],
46
+ imports: [HasAnyAuthorityDirective, HttpClientTestingModule<%_ if (enableTranslation) { _%>, TranslateModule.forRoot()<%_ } _%>],
45
47
  declarations: [TestHasAnyAuthorityDirectiveComponent],
46
48
  providers: [AccountService],
47
49
  });
@@ -79,7 +81,7 @@ describe('HasAnyAuthorityDirective tests', () => {
79
81
  fixture.detectChanges();
80
82
 
81
83
  // THEN
82
- expect(comp.content).toBeUndefined();
84
+ expect(comp.content()).toBeUndefined();
83
85
  });
84
86
  });
85
87
 
@@ -95,7 +97,7 @@ describe('HasAnyAuthorityDirective tests', () => {
95
97
  fixture.detectChanges();
96
98
 
97
99
  // THEN
98
- expect(comp.content).toBeDefined();
100
+ expect(comp.content()).toBeDefined();
99
101
 
100
102
  // GIVEN
101
103
  currentAccount.set(null);
@@ -104,7 +106,7 @@ describe('HasAnyAuthorityDirective tests', () => {
104
106
  fixture.detectChanges();
105
107
 
106
108
  // THEN
107
- expect(comp.content).toBeUndefined();
109
+ expect(comp.content()).toBeUndefined();
108
110
 
109
111
  // WHEN
110
112
  currentAccount.set({ activated: true, authorities: ['foo'] } as any);
@@ -16,7 +16,7 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- import { Directive, inject, Input, TemplateRef, ViewContainerRef, effect, signal, computed } from '@angular/core';
19
+ import { Directive, inject, input, TemplateRef, ViewContainerRef, effect, computed } from '@angular/core';
20
20
 
21
21
  import { AccountService } from 'app/core/auth/account.service';
22
22
 
@@ -36,7 +36,7 @@ import { AccountService } from 'app/core/auth/account.service';
36
36
  selector: '[<%= jhiPrefix %>HasAnyAuthority]',
37
37
  })
38
38
  export default class HasAnyAuthorityDirective {
39
- private authorities = signal<string | string[]>([]);
39
+ public authorities = input<string | string[]>([], { alias: '<%= jhiPrefix %>HasAnyAuthority' });
40
40
 
41
41
  private templateRef = inject(TemplateRef<any>);
42
42
  private viewContainerRef = inject(ViewContainerRef);
@@ -52,11 +52,6 @@ export default class HasAnyAuthorityDirective {
52
52
  } else {
53
53
  this.viewContainerRef.clear();
54
54
  }
55
- });
56
- }
57
-
58
- @Input()
59
- set <%= jhiPrefix %>HasAnyAuthority(value: string | string[]) {
60
- this.authorities.set(value);
55
+ }, { allowSignalWrites: true });
61
56
  }
62
57
  }
@@ -1,13 +1,17 @@
1
1
  @if (filters.hasAnyFilterSet()) {
2
2
  <div class="filter-display">
3
3
  <span>__jhiTranslateTag__('entity.filters.set')</span>
4
- <fa-icon icon="times" (click)="clearAllFilters()" title="__jhiTranslatePipe__('entity.filters.clearAll')"></fa-icon>
4
+ <button class="btn" (click)="clearAllFilters()" (keydown.enter)="clearAllFilters()">
5
+ <fa-icon icon="times" title="__jhiTranslatePipe__('entity.filters.clearAll')"></fa-icon>
6
+ </button>
5
7
  <ul>
6
8
  @for (filterOption of filters.filterOptions; track filterOption.name) {
7
9
  @for (value of filterOption.values; track value) {
8
10
  <li>
9
11
  <span>{{ filterOption.name }}:</span> {{ value }}
10
- <fa-icon icon="times" (click)="clearFilter(filterOption.name, value)" title="__jhiTranslatePipe__('entity.filters.clear')"></fa-icon>
12
+ <button class="btn" (click)="clearFilter(filterOption.name, value)" (keydown.enter)="clearFilter(filterOption.name, value)">
13
+ <fa-icon icon="times" title="__jhiTranslatePipe__('entity.filters.clear')"></fa-icon>
14
+ </button>
11
15
  </li>
12
16
  }
13
17
  }