generator-jhipster 8.0.0 → 8.1.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.
- package/README.md +61 -57
- package/dist/cli/environment-builder.mjs +11 -4
- package/dist/cli/program.mjs +1 -1
- package/dist/generators/angular/cleanup.mjs +7 -0
- package/dist/generators/angular/files-angular.mjs +3 -4
- package/dist/generators/angular/generator.mjs +2 -15
- package/dist/generators/angular/needle-api/needle-client-angular.mjs +2 -8
- package/dist/generators/angular/resources/package.json +23 -23
- package/dist/generators/angular/support/translate-angular.mjs +2 -2
- package/dist/generators/angular/templates/README.md.jhi.client.angular.ejs +1 -1
- package/dist/generators/angular/templates/angular.json.ejs +3 -7
- package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.html.ejs +6 -4
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +39 -33
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +44 -36
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +24 -23
- package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +74 -62
- package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.html.ejs +12 -4
- package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +54 -48
- package/dist/generators/angular/templates/src/main/webapp/app/admin/admin.routes.ts.ejs +74 -0
- package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +15 -5
- package/dist/generators/angular/templates/src/main/webapp/app/admin/docs/docs.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +20 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.html.ejs +10 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +9 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +12 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +13 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +13 -9
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +13 -5
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +21 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +16 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +11 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +20 -11
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +48 -34
- package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +73 -0
- package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +67 -0
- package/dist/generators/angular/templates/src/main/webapp/app/app.routes.ts.ejs +85 -0
- package/dist/generators/angular/templates/src/main/webapp/app/core/microfrontend/index.ts.ejs +5 -4
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/event-manager.service.spec.ts.ejs +12 -12
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +26 -14
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +38 -25
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +5 -12
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +55 -21
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +10 -10
- package/dist/generators/angular/templates/src/main/webapp/app/entities/entity.routes.ts.ejs +25 -0
- package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.html.ejs +21 -17
- package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.html.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +5 -2
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +5 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +97 -78
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +6 -4
- package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.html.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +11 -7
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/bootstrap.ts.ejs +5 -5
- package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +1 -1
- package/dist/generators/angular/templates/webpack/webpack.microfrontend.js.ejs +2 -2
- package/dist/generators/app/README.md +108 -0
- package/dist/generators/app/USAGE +3 -0
- package/dist/generators/app/command.mjs +3 -3
- package/dist/generators/app/generator.mjs +11 -0
- package/dist/generators/base/command.mjs +0 -11
- package/dist/generators/base-application/generator.mjs +5 -6
- package/dist/generators/base-application/support/entities.mjs +2 -2
- package/dist/generators/base-application/support/index.mjs +1 -0
- package/dist/generators/base-application/support/prepare-entity.mjs +0 -1
- package/dist/generators/base-application/support/prepare-relationship.mjs +4 -0
- package/dist/generators/base-application/support/update-application-entities-transform.mjs +52 -0
- package/dist/generators/base-core/generator.mjs +17 -4
- package/dist/generators/base-entity-changes/generator.mjs +1 -1
- package/dist/generators/bootstrap/command.mjs +6 -0
- package/dist/generators/bootstrap/generator.mjs +27 -9
- package/dist/generators/bootstrap-application/generator.mjs +1 -19
- package/dist/generators/bootstrap-application-base/command.mjs +30 -0
- package/dist/generators/bootstrap-application-base/generator.mjs +27 -5
- package/dist/generators/bootstrap-application-base/index.mjs +1 -0
- package/dist/generators/bootstrap-application-base/support/export-jdl-transform.mjs +61 -0
- package/dist/generators/bootstrap-application-base/support/import-jdl-transform.mjs +64 -0
- package/dist/generators/bootstrap-application-base/support/index.mjs +2 -0
- package/dist/generators/client/command.mjs +2 -0
- package/dist/generators/client/resources/package.json +4 -4
- package/dist/generators/client/support/entity-definition.mjs +3 -3
- package/dist/generators/client/templates/README.md.jhi.client.ejs +2 -2
- package/dist/generators/client/templates/src/main/webapp/index.html.ejs +2 -2
- package/dist/generators/common/command.mjs +2 -0
- package/dist/generators/common/resources/package.json +3 -3
- package/dist/generators/common/templates/sonar-project.properties.ejs +1 -1
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +0 -1
- package/dist/generators/docker/generator.mjs +1 -1
- package/dist/generators/docker/templates/docker/cassandra.yml.ejs +2 -2
- package/dist/generators/docker/templates/docker/keycloak.yml.ejs +1 -1
- package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +4 -1
- package/dist/generators/docker-compose/generator.mjs +4 -11
- package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -1
- package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +4 -1
- package/dist/generators/export-jdl/generator.mjs +1 -1
- package/dist/generators/feign-client/cleanup.mjs +12 -0
- package/dist/generators/feign-client/files.mjs +35 -0
- package/dist/generators/feign-client/generator.mjs +65 -0
- package/dist/generators/feign-client/index.mjs +19 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +174 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizedFeignClient.java.ejs +72 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuth2InterceptedFeignConfiguration.java.ejs +35 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuthIdpTokenResponseDTO.java.ejs +161 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/TokenRelayRequestInterceptor.java.ejs +42 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/UserFeignClientInterceptor_jwt.java.ejs +36 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/config/FeignConfiguration.java.ejs +45 -0
- package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +263 -0
- package/dist/generators/generate-blueprint/command.mjs +1 -1
- package/dist/generators/generate-blueprint/resources/package.json +1 -1
- package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -1
- package/dist/generators/generator-constants.mjs +9 -5
- package/dist/generators/generator-list.mjs +1 -0
- package/dist/generators/git/generator.mjs +3 -5
- package/dist/generators/gradle/constants.mjs +1 -1
- package/dist/generators/java/command.mjs +6 -0
- package/dist/generators/java/entity-files.mjs +4 -0
- package/dist/generators/java/generator.mjs +3 -2
- package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jackson_identity_info.ejs +30 -0
- package/dist/generators/jdl/generator.mjs +18 -23
- package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +4 -1
- package/dist/generators/kubernetes/templates/keycloak/keycloak.yml.ejs +1 -1
- package/dist/generators/languages/generator.mjs +24 -15
- package/dist/generators/languages/prompts.mjs +3 -1
- package/dist/generators/languages/support/translate.mjs +1 -1
- package/dist/generators/languages/templates/entity/i18n/entity_pt-br.json.ejs +1 -1
- package/dist/generators/liquibase/README.md +19 -0
- package/dist/generators/project-name/generator.mjs +14 -19
- package/dist/generators/project-name/support/name-resolver.mjs +35 -6
- package/dist/generators/react/resources/package.json +24 -24
- package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +4 -4
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-detail.tsx.ejs +1 -2
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +12 -13
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.tsx.ejs +3 -8
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityModel_.model.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.scss.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/util/date-utils.ts.ejs +1 -1
- package/dist/generators/server/cleanup.mjs +5 -0
- package/dist/generators/server/command.mjs +13 -2
- package/dist/generators/server/entity-files.mjs +3 -3
- package/dist/generators/server/files.mjs +2 -38
- package/dist/generators/server/generator.mjs +35 -19
- package/dist/generators/server/jdl/application-definition.mjs +5 -2
- package/dist/generators/server/options/feign-client.mjs +24 -0
- package/dist/generators/server/options/index.mjs +1 -0
- package/dist/generators/server/resources/Dockerfile +16 -16
- package/dist/generators/server/resources/gradle/libs.versions.toml +4 -4
- package/dist/generators/server/resources/pom.xml +11 -11
- package/dist/generators/server/support/config.mjs +1 -0
- package/dist/generators/server/support/prepare-entity.mjs +4 -1
- package/dist/generators/server/templates/build.gradle.ejs +1 -2
- package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +3 -21
- package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +5 -15
- package/dist/generators/server/templates/pom.xml.ejs +1 -4
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_template.ejs +7 -7
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_template.ejs +4 -4
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/mapper/_entityClass_Mapper.java.ejs +2 -2
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +3 -3
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +20 -2
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +4 -1
- package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/CustomClaimConverter.java.ejs +1 -5
- package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +48 -12
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_imperative.java.ejs +4 -13
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_reactive.java.ejs +5 -11
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/PublicUserResource.java.ejs +3 -3
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/UserResource.java.ejs +6 -6
- package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +8 -7
- package/dist/generators/server/templates/src/test/java/_package_/TechnicalStructureTest.java.ejs +1 -1
- package/dist/generators/server/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +8 -8
- package/dist/generators/server/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorTestController.java.ejs +2 -2
- package/dist/generators/spring-cache/internal/dependencies.mjs +1 -1
- package/dist/generators/spring-cache/templates/gradle/cache.gradle.ejs +1 -1
- package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheFactoryConfiguration.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +3 -0
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.elastic_search.ejs +1 -1
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/repository/search/_entityClass_SearchRepository.java.ejs +1 -1
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/repository/search/UserSearchRepository.java.ejs +4 -4
- package/dist/generators/spring-data-neo4j/generator.mjs +43 -1
- package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_neo4j.ejs +1 -1
- package/dist/generators/spring-data-relational/README.md +7 -0
- package/dist/generators/spring-data-relational/generator.mjs +2 -1
- package/dist/generators/spring-data-relational/internal/dependencies.mjs +29 -8
- package/dist/generators/spring-data-relational/support/database-data.mjs +4 -0
- package/dist/generators/spring-data-relational/templates/src/main/java/_package_/repository/EntityManager_reactive.java.ejs +49 -8
- package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +1 -1
- package/dist/generators/upgrade/generator.mjs +3 -3
- package/dist/generators/vue/resources/package.json +21 -21
- package/dist/generators/vue/templates/package.json.ejs +1 -0
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -2
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.spec.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.ts.ejs +3 -3
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +2 -15
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +2 -7
- package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -0
- package/dist/jdl/converters/json-to-jdl-converter.js +1 -1
- package/dist/jdl/converters/json-to-jdl-entity-converter.js +1 -0
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.js +5 -0
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +0 -27
- package/dist/jdl/exporters/jhipster-entity-exporter.js +3 -2
- package/dist/jdl/jhipster/default-application-options.js +1 -1
- package/dist/jdl/jhipster/field-types.js +1 -1
- package/dist/jdl/jhipster/json-entity.js +6 -0
- package/dist/jdl/models/jdl-entity.js +16 -1
- package/dist/jdl/models/jdl-field.js +13 -0
- package/dist/jdl/models/jdl-object.js +3 -3
- package/dist/jdl/models/jdl-relationship.js +23 -5
- package/dist/jdl/parsing/lexer/application-tokens.js +1 -1
- package/dist/testing/helpers.mjs +10 -3
- package/dist/types/cli/environment-builder.d.mts +2 -0
- package/dist/types/generators/angular/needle-api/needle-client-angular.d.mts +0 -1
- package/dist/types/generators/base/api.d.mts +12 -0
- package/dist/types/generators/base/support/needles.d.mts +1 -1
- package/dist/types/generators/base-application/generator.d.mts +2 -2
- package/dist/types/generators/base-application/support/index.d.mts +1 -0
- package/dist/types/generators/base-application/support/update-application-entities-transform.d.mts +4 -0
- package/dist/types/generators/base-application/types/relationship.d.mts +4 -0
- package/dist/types/generators/base-core/generator.d.mts +7 -1
- package/dist/types/generators/bootstrap-application-base/support/export-jdl-transform.d.mts +8 -0
- package/dist/types/generators/bootstrap-application-base/support/import-jdl-transform.d.mts +6 -0
- package/dist/types/generators/bootstrap-application-base/support/index.d.mts +2 -0
- package/dist/types/generators/client/support/entity-definition.d.mts +2 -2
- package/dist/types/generators/feign-client/types-export.d.ts +1 -0
- package/dist/types/generators/generator-constants.d.mts +52 -48
- package/dist/types/generators/generator-list.d.mts +1 -0
- package/dist/types/generators/project-name/support/name-resolver.d.mts +9 -1
- package/dist/types/generators/server/options/feign-client.d.mts +21 -0
- package/dist/types/generators/server/options/index.d.mts +1 -0
- package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +1 -0
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +1 -1
- package/dist/types/jdl/jhipster/json-entity.d.ts +2 -0
- package/dist/types/jdl/models/jdl-entity.d.ts +1 -0
- package/dist/types/jdl/models/jdl-relationship.d.ts +0 -18
- package/dist/types/jdl/types/types.d.mts +2 -2
- package/package.json +27 -27
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
Copyright 2013-2023 the original author or authors from the JHipster project.
|
|
3
|
+
|
|
4
|
+
This file is part of the JHipster project, see https://www.jhipster.tech/
|
|
5
|
+
for more information.
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
18
|
+
-%>
|
|
19
|
+
import { ApplicationConfig, LOCALE_ID, importProvidersFrom } from '@angular/core';
|
|
20
|
+
import { BrowserModule, Title } from '@angular/platform-browser';
|
|
21
|
+
import { RouterFeatures, TitleStrategy, provideRouter, withComponentInputBinding, withDebugTracing } from '@angular/router';
|
|
22
|
+
import { ServiceWorkerModule } from '@angular/service-worker';
|
|
23
|
+
import { HttpClientModule } from '@angular/common/http';
|
|
24
|
+
|
|
25
|
+
import { NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap';
|
|
26
|
+
|
|
27
|
+
import { DEBUG_INFO_ENABLED } from 'app/app.constants';
|
|
28
|
+
import './config/dayjs';
|
|
29
|
+
<%_ if (enableTranslation) { _%>
|
|
30
|
+
import { TranslationModule } from 'app/shared/language/translation.module';
|
|
31
|
+
<%_ } _%>
|
|
32
|
+
import { httpInterceptorProviders } from 'app/core/interceptor/index';
|
|
33
|
+
import FindLanguageFromKeyPipe from 'app/shared/language/find-language-from-key.pipe';
|
|
34
|
+
import routes from './app.routes';
|
|
35
|
+
// jhipster-needle-angular-add-module-import JHipster will add new module here
|
|
36
|
+
import { NgbDateDayjsAdapter } from './config/datepicker-adapter';
|
|
37
|
+
import { AppPageTitleStrategy } from './app-page-title-strategy';
|
|
38
|
+
|
|
39
|
+
const routerFeatures: Array<RouterFeatures> = [withComponentInputBinding()];
|
|
40
|
+
if (DEBUG_INFO_ENABLED) {
|
|
41
|
+
routerFeatures.push(withDebugTracing());
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const appConfig: ApplicationConfig = {
|
|
45
|
+
providers: [
|
|
46
|
+
provideRouter(routes, ...routerFeatures),
|
|
47
|
+
importProvidersFrom(BrowserModule),
|
|
48
|
+
// Set this to true to enable service worker (PWA)
|
|
49
|
+
importProvidersFrom(ServiceWorkerModule.register('ngsw-worker.js', { enabled: false })),
|
|
50
|
+
<%_ if (enableTranslation) { _%>
|
|
51
|
+
importProvidersFrom(TranslationModule),
|
|
52
|
+
<%_ } _%>
|
|
53
|
+
importProvidersFrom(HttpClientModule),
|
|
54
|
+
Title,
|
|
55
|
+
<%_ if (authenticationTypeSession && communicationSpringWebsocket) { _%>
|
|
56
|
+
CookieService,
|
|
57
|
+
<%_ } _%>
|
|
58
|
+
{ provide: LOCALE_ID, useValue: '<%= angularLocaleId %>' },
|
|
59
|
+
{ provide: NgbDateAdapter, useClass: NgbDateDayjsAdapter },
|
|
60
|
+
<%_ if (enableI18nRTL) { _%>
|
|
61
|
+
FindLanguageFromKeyPipe,
|
|
62
|
+
<%_ } _%>
|
|
63
|
+
httpInterceptorProviders,
|
|
64
|
+
{ provide: TitleStrategy, useClass: AppPageTitleStrategy },
|
|
65
|
+
// jhipster-needle-angular-add-module JHipster will add new module here
|
|
66
|
+
],
|
|
67
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
Copyright 2013-2023 the original author or authors from the JHipster project.
|
|
3
|
+
|
|
4
|
+
This file is part of the JHipster project, see https://www.jhipster.tech/
|
|
5
|
+
for more information.
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
18
|
+
-%>
|
|
19
|
+
import { NgModule } from '@angular/core';
|
|
20
|
+
import { Routes } from '@angular/router';
|
|
21
|
+
|
|
22
|
+
import { errorRoute } from './layouts/error/error.route';
|
|
23
|
+
import { Authority } from 'app/config/authority.constants';
|
|
24
|
+
|
|
25
|
+
import HomeComponent from './home/home.component';
|
|
26
|
+
import NavbarComponent from './layouts/navbar/navbar.component';
|
|
27
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
28
|
+
import LoginComponent from './login/login.component';
|
|
29
|
+
<%_ } _%>
|
|
30
|
+
<%_ if (applicationTypeGateway && microfrontend) { _%>
|
|
31
|
+
import { loadEntityRoutes } from './core/microfrontend';
|
|
32
|
+
<%_ } _%>
|
|
33
|
+
|
|
34
|
+
import { UserRouteAccessService } from 'app/core/auth/user-route-access.service';
|
|
35
|
+
|
|
36
|
+
const routes: Routes = [
|
|
37
|
+
{
|
|
38
|
+
path: '',
|
|
39
|
+
component: HomeComponent,
|
|
40
|
+
title: 'home.title',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
path: '',
|
|
44
|
+
component: NavbarComponent,
|
|
45
|
+
outlet: 'navbar',
|
|
46
|
+
},
|
|
47
|
+
<%_ if (!applicationTypeMicroservice) { _%>
|
|
48
|
+
{
|
|
49
|
+
path: 'admin',
|
|
50
|
+
data: {
|
|
51
|
+
authorities: [Authority.ADMIN],
|
|
52
|
+
},
|
|
53
|
+
canActivate: [UserRouteAccessService],
|
|
54
|
+
loadChildren: () => import('./admin/admin.routes'),
|
|
55
|
+
},
|
|
56
|
+
<%_ } _%>
|
|
57
|
+
<%_ if (generateUserManagement) { _%>
|
|
58
|
+
{
|
|
59
|
+
path: 'account',
|
|
60
|
+
loadChildren: () => import('./account/account.route'),
|
|
61
|
+
},
|
|
62
|
+
<%_ } _%>
|
|
63
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
64
|
+
{
|
|
65
|
+
path: 'login',
|
|
66
|
+
component: LoginComponent,
|
|
67
|
+
title: 'login.title',
|
|
68
|
+
},
|
|
69
|
+
<%_ } _%>
|
|
70
|
+
{
|
|
71
|
+
path: '<%= applicationTypeMicroservice ? lowercaseBaseName : '' %>',
|
|
72
|
+
loadChildren: () => import(`./entities/entity.routes`),
|
|
73
|
+
},
|
|
74
|
+
<%_ if (applicationTypeGateway && microfrontend) { _%>
|
|
75
|
+
<%_ for (const remote of microfrontends) { _%>
|
|
76
|
+
{
|
|
77
|
+
path: '<%= remote.lowercaseBaseName %>',
|
|
78
|
+
loadChildren: () => loadEntityRoutes('<%= remote.lowercaseBaseName %>'),
|
|
79
|
+
},
|
|
80
|
+
<%_ } _%>
|
|
81
|
+
<%_ } _%>
|
|
82
|
+
...errorRoute,
|
|
83
|
+
];
|
|
84
|
+
|
|
85
|
+
export default routes;
|
package/dist/generators/angular/templates/src/main/webapp/app/core/microfrontend/index.ts.ejs
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
See the License for the specific language governing permissions and
|
|
17
17
|
limitations under the License.
|
|
18
18
|
-%>
|
|
19
|
+
// eslint-disable @typescript-eslint/no-unsafe-return
|
|
19
20
|
import { Type } from '@angular/core';
|
|
20
21
|
import { loadRemoteModule } from '@angular-architects/module-federation-runtime';
|
|
21
22
|
|
|
@@ -35,9 +36,9 @@ export const loadTranslationModule = async (service: string): Promise<Type<any>>
|
|
|
35
36
|
exposedModule: './translation-module',
|
|
36
37
|
}).then(({ LazyTranslationModule }) => LazyTranslationModule);
|
|
37
38
|
|
|
38
|
-
export const
|
|
39
|
-
loadRemoteModule<
|
|
39
|
+
export const loadEntityRoutes = (service: string): Promise<Type<any>> =>
|
|
40
|
+
loadRemoteModule<Type<any>>({
|
|
40
41
|
type: 'module',
|
|
41
42
|
remoteEntry: `./services/${service}/remoteEntry.js`,
|
|
42
|
-
exposedModule: './entity-
|
|
43
|
-
})
|
|
43
|
+
exposedModule: './entity-routes',
|
|
44
|
+
});
|
package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs
CHANGED
|
@@ -296,7 +296,7 @@ describe('Alert service test', () => {
|
|
|
296
296
|
}
|
|
297
297
|
));
|
|
298
298
|
|
|
299
|
-
it('should produce a info message with provided key if
|
|
299
|
+
it('should produce a info message with provided key if translation key does not exist in translations and message is not provided', inject(
|
|
300
300
|
[AlertService, TranslateService],
|
|
301
301
|
(service: AlertService) => {
|
|
302
302
|
expect(service.addAlert({ type: 'info', translationKey: 'hello.jhipster' })).toEqual(
|
package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.ts.ejs
CHANGED
|
@@ -48,7 +48,7 @@ export class DataUtils {
|
|
|
48
48
|
*/
|
|
49
49
|
openFile(data: string, contentType: string | null | undefined): void {
|
|
50
50
|
contentType = contentType ?? '';
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
const byteCharacters = Buffer.from(data, 'base64').toString('binary');
|
|
53
53
|
const byteNumbers = new Array(byteCharacters.length);
|
|
54
54
|
for (let i = 0; i < byteCharacters.length; i++) {
|
|
@@ -73,7 +73,7 @@ export class DataUtils {
|
|
|
73
73
|
* @param editForm the form group where the input field is located
|
|
74
74
|
* @param field the field name to set the file's 'base 64 data' on
|
|
75
75
|
* @param isImage boolean representing if the file represented by the event is an image
|
|
76
|
-
* @returns an observable that loads file to form field and completes if
|
|
76
|
+
* @returns an observable that loads file to form field and completes if successful
|
|
77
77
|
* or returns error as FileLoadError on failure
|
|
78
78
|
*/
|
|
79
79
|
loadFileToForm(event: Event, editForm: FormGroup, field: string, isImage: boolean): Observable<void> {
|
|
@@ -32,13 +32,13 @@ describe('Event Manager tests', () => {
|
|
|
32
32
|
});
|
|
33
33
|
|
|
34
34
|
describe('EventManager', () => {
|
|
35
|
-
let
|
|
35
|
+
let receivedEvent: EventWithContent<unknown> | string | null;
|
|
36
36
|
|
|
37
37
|
beforeEach(() => {
|
|
38
38
|
TestBed.configureTestingModule({
|
|
39
39
|
providers: [EventManager],
|
|
40
40
|
});
|
|
41
|
-
|
|
41
|
+
receivedEvent = null;
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
it('should not fail when nosubscriber and broadcasting', inject([EventManager], (eventManager: EventManager) => {
|
|
@@ -50,53 +50,53 @@ describe('Event Manager tests', () => {
|
|
|
50
50
|
[EventManager],
|
|
51
51
|
(eventManager: EventManager) => {
|
|
52
52
|
// GIVEN
|
|
53
|
-
eventManager.subscribe('modifier', (event: EventWithContent<unknown> | string) => (
|
|
53
|
+
eventManager.subscribe('modifier', (event: EventWithContent<unknown> | string) => (receivedEvent = event));
|
|
54
54
|
|
|
55
55
|
// WHEN
|
|
56
56
|
eventManager.broadcast({ name: 'unrelatedModifier', content: 'unrelated modification' });
|
|
57
57
|
// THEN
|
|
58
|
-
expect(
|
|
58
|
+
expect(receivedEvent).toBeNull();
|
|
59
59
|
|
|
60
60
|
// WHEN
|
|
61
61
|
eventManager.broadcast({ name: 'modifier', content: 'modified something' });
|
|
62
62
|
// THEN
|
|
63
|
-
expect(
|
|
63
|
+
expect(receivedEvent).toEqual({ name: 'modifier', content: 'modified something' });
|
|
64
64
|
}
|
|
65
65
|
));
|
|
66
66
|
|
|
67
67
|
it('should create an observable and callback when broadcasted string', inject([EventManager], (eventManager: EventManager) => {
|
|
68
68
|
// GIVEN
|
|
69
|
-
eventManager.subscribe('modifier', (event: EventWithContent<unknown> | string) => (
|
|
69
|
+
eventManager.subscribe('modifier', (event: EventWithContent<unknown> | string) => (receivedEvent = event));
|
|
70
70
|
|
|
71
71
|
// WHEN
|
|
72
72
|
eventManager.broadcast('unrelatedModifier');
|
|
73
73
|
// THEN
|
|
74
|
-
expect(
|
|
74
|
+
expect(receivedEvent).toBeNull();
|
|
75
75
|
|
|
76
76
|
// WHEN
|
|
77
77
|
eventManager.broadcast('modifier');
|
|
78
78
|
// THEN
|
|
79
|
-
expect(
|
|
79
|
+
expect(receivedEvent).toEqual('modifier');
|
|
80
80
|
}));
|
|
81
81
|
|
|
82
82
|
it('should subscribe to multiple events', inject([EventManager], (eventManager: EventManager) => {
|
|
83
83
|
// GIVEN
|
|
84
|
-
eventManager.subscribe(['modifier', 'modifier2'], (event: EventWithContent<unknown> | string) => (
|
|
84
|
+
eventManager.subscribe(['modifier', 'modifier2'], (event: EventWithContent<unknown> | string) => (receivedEvent = event));
|
|
85
85
|
|
|
86
86
|
// WHEN
|
|
87
87
|
eventManager.broadcast('unrelatedModifier');
|
|
88
88
|
// THEN
|
|
89
|
-
expect(
|
|
89
|
+
expect(receivedEvent).toBeNull();
|
|
90
90
|
|
|
91
91
|
// WHEN
|
|
92
92
|
eventManager.broadcast({ name: 'modifier', content: 'modified something' });
|
|
93
93
|
// THEN
|
|
94
|
-
expect(
|
|
94
|
+
expect(receivedEvent).toEqual({ name: 'modifier', content: 'modified something' });
|
|
95
95
|
|
|
96
96
|
// WHEN
|
|
97
97
|
eventManager.broadcast('modifier2');
|
|
98
98
|
// THEN
|
|
99
|
-
expect(
|
|
99
|
+
expect(receivedEvent).toEqual('modifier2');
|
|
100
100
|
}));
|
|
101
101
|
});
|
|
102
102
|
});
|
|
@@ -22,7 +22,7 @@ const enumImports = this.generateEntityClientEnumImports(fields);
|
|
|
22
22
|
<%_ if (anyFieldIsDateDerived) { _%>
|
|
23
23
|
import dayjs from 'dayjs/esm';
|
|
24
24
|
<%_ } _%>
|
|
25
|
-
<%_ for (const relationshipsByType of Object.values(differentRelationships).filter(relationshipsByType => relationshipsByType.some(relationship =>
|
|
25
|
+
<%_ for (const relationshipsByType of Object.values(differentRelationships).filter(relationshipsByType => relationshipsByType.some(relationship => relationship.otherEntity.entityAngularName !== entityAngularName))) {
|
|
26
26
|
const { otherEntity } = relationshipsByType[0];
|
|
27
27
|
_%>
|
|
28
28
|
import { I<%- otherEntity.entityAngularName %> } from 'app/entities/<%= otherEntity.entityClientRootFolder %><%= otherEntity.entityFolderName %>/<%= otherEntity.entityFileName %>.model';
|
|
@@ -41,10 +41,10 @@ _%>
|
|
|
41
41
|
<%= fieldName %>ContentType<% if (!id /* && !fieldValidationRequired */) { %>?<% } %>: string<% if (!id /* && !fieldValidationRequired */) { %> | null<% } %>,
|
|
42
42
|
<%_ } _%>
|
|
43
43
|
<%_ } _%>
|
|
44
|
-
<%_ for (const relationship of relationships
|
|
45
|
-
const { propertyName, relationshipRequired, otherEntity,
|
|
44
|
+
<%_ for (const relationship of relationships) {
|
|
45
|
+
const { propertyName, relationshipRequired, otherEntity, collection, otherEntityField } = relationship;
|
|
46
46
|
_%>
|
|
47
|
-
<%= propertyName %>?: Pick
|
|
47
|
+
<%= propertyName %>?: <% if (!otherEntity.embedded && (dtoMapstruct || otherEntity.builtInUser)) { %>Pick<<% } %>I<%= otherEntity.entityAngularName %><% if (!otherEntity.embedded && (dtoMapstruct || otherEntity.builtInUser)) { %>, '<%= otherEntity.primaryKey.name %>'<% if (otherEntity.primaryKey.name !== otherEntityField) { %> | '<%= otherEntityField %>'<% } %>><% } %><% if (collection) { %>[]<% } %> | null;
|
|
48
48
|
<%_ } _%>
|
|
49
49
|
}
|
|
50
50
|
<%_ if (primaryKey) { _%>
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
See the License for the specific language governing permissions and
|
|
17
17
|
limitations under the License.
|
|
18
18
|
-%>
|
|
19
|
-
|
|
19
|
+
@if (<%= entityInstance %>) {
|
|
20
|
+
<form name="deleteForm" (ngSubmit)="confirmDelete(<%= entityInstance %>.<%= primaryKey.name %>!)">
|
|
20
21
|
<div class="modal-header">
|
|
21
22
|
<h4 class="modal-title" data-cy="<%= entityInstance %>DeleteDialogHeading" <%= jhiPrefix %>Translate="entity.delete.title">__jhiTransformTranslate__('entity.delete.title')</h4>
|
|
22
23
|
|
|
@@ -39,3 +40,4 @@
|
|
|
39
40
|
</button>
|
|
40
41
|
</div>
|
|
41
42
|
</form>
|
|
43
|
+
}
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
-%>
|
|
19
19
|
<div class="d-flex justify-content-center">
|
|
20
20
|
<div class="col-8">
|
|
21
|
-
|
|
21
|
+
@if (<%= entityInstance %>) {
|
|
22
|
+
<div>
|
|
22
23
|
<h2 data-cy="<%= entityInstance %>DetailsHeading"><span <%= jhiPrefix %>Translate="<%= i18nKeyPrefix %>.detail.title">__jhiTransformTranslate__('<%- i18nKeyPrefix %>.detail.title')</span></h2>
|
|
23
24
|
|
|
24
25
|
<hr>
|
|
@@ -38,17 +39,21 @@ _%>
|
|
|
38
39
|
<%# TODO: import enum and use its key as label _%>
|
|
39
40
|
<span <%= jhiPrefix %>Translate="{{ '<%= frontendAppName %>.<%= fieldType %>.' + <%= entityInstance %>.<%= fieldName %> }}">{{ <%= entityInstance %>.<%= fieldName %> }}</span>
|
|
40
41
|
<%_ } else if (field.fieldTypeBinary && field.blobContentTypeImage) { _%>
|
|
41
|
-
|
|
42
|
-
<
|
|
43
|
-
<
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
@if (<%= entityInstance %>.<%= fieldName %>) {
|
|
43
|
+
<div>
|
|
44
|
+
<a (click)="openFile(<%= entityInstance %>.<%= fieldName %>, <%= entityInstance %>.<%= fieldName %>ContentType)">
|
|
45
|
+
<img [src]="'data:' + <%= entityInstance %>.<%= fieldName %>ContentType + ';base64,' + <%= entityInstance %>.<%= fieldName %>" style="max-width: 100%;" alt="<%= entityInstance %> image"/>
|
|
46
|
+
</a>
|
|
47
|
+
{{ <%= entityInstance %>.<%= fieldName %>ContentType }}, {{ byteSize(<%= entityInstance %>.<%= fieldName %>) }}
|
|
46
48
|
</div>
|
|
49
|
+
}
|
|
47
50
|
<%_ } else if (field.fieldTypeBinary && field.blobContentTypeAny) { _%>
|
|
48
|
-
|
|
49
|
-
<
|
|
50
|
-
|
|
51
|
+
@if (<%= entityInstance %>.<%= fieldName %>) {
|
|
52
|
+
<div>
|
|
53
|
+
<a (click)="openFile(<%= entityInstance %>.<%= fieldName %>, <%= entityInstance %>.<%= fieldName %>ContentType)" <%= jhiPrefix %>Translate="entity.action.open">__jhiTransformTranslate__('entity.action.open')</a>
|
|
54
|
+
{{ <%= entityInstance %>.<%= fieldName %>ContentType }}, {{ byteSize(<%= entityInstance %>.<%= fieldName %>) }}
|
|
51
55
|
</div>
|
|
56
|
+
}
|
|
52
57
|
<%_ } else if (field.fieldTypeDuration) { _%>
|
|
53
58
|
<span>{{ <%= entityInstance %>.<%= fieldName %> | duration }} ({{<%= entityInstance %>.<%= fieldName %> }})</span>
|
|
54
59
|
<%_ } else if (field.fieldTypeTimed) { _%>
|
|
@@ -62,34 +67,40 @@ _%>
|
|
|
62
67
|
<%_ } _%>
|
|
63
68
|
<%_
|
|
64
69
|
for (const relationship of relationships.filter(rel => !rel.otherEntityIsEmbedded)) {
|
|
65
|
-
const
|
|
70
|
+
const { persistableRelationship } = relationship;
|
|
66
71
|
const relationshipName = relationship.relationshipName;
|
|
67
72
|
const relationshipFieldName = relationship.relationshipFieldName;
|
|
68
73
|
const relationshipFieldNamePlural = relationship.relationshipFieldNamePlural;
|
|
69
74
|
const relationshipNameHumanized = relationship.relationshipNameHumanized;
|
|
70
75
|
const otherEntityStateName = relationship.otherEntityStateName;
|
|
71
76
|
const otherEntityField = relationship.otherEntityField;
|
|
72
|
-
if (
|
|
77
|
+
if (persistableRelationship) {
|
|
73
78
|
_%>
|
|
74
79
|
<dt><span <%= jhiPrefix %>Translate="<%= i18nKeyPrefix %>.<%= relationshipName %>">__jhiTransformTranslate__('<%- i18nKeyPrefix %>.<%- relationshipName %>')</span></dt>
|
|
75
80
|
<dd>
|
|
76
81
|
<%_ if (relationship.otherEntityUser) { _%>
|
|
77
82
|
<%_ if (relationship.collection) { _%>
|
|
78
|
-
|
|
83
|
+
@for (<%= relationshipFieldName %> of <%= entityInstance %>.<%= relationshipFieldNamePlural %>; track $index; let last = $last) {
|
|
84
|
+
<span>
|
|
79
85
|
{{ <%= relationshipFieldName %>.<%= otherEntityField %> }}{{ last ? '' : ', ' }}
|
|
80
86
|
</span>
|
|
87
|
+
}
|
|
81
88
|
<%_ } else { _%>
|
|
82
89
|
<span>{{ <%= entityInstance %>.<%= relationshipFieldName %>?.<%= otherEntityField %> }}</span>
|
|
83
90
|
<%_ } _%>
|
|
84
91
|
<%_ } else { _%>
|
|
85
92
|
<%_ if (relationship.collection) { _%>
|
|
86
|
-
|
|
93
|
+
@for (<%= relationshipFieldName %> of <%= entityInstance %>.<%= relationshipFieldNamePlural %>; track $index; let last = $last) {
|
|
94
|
+
<span>
|
|
87
95
|
<a [routerLink]="['/<%= otherEntityStateName %>', <%= relationshipFieldName %>.<%= relationship.otherEntity.primaryKey.name %>, 'view']">{{ <%= relationshipFieldName %>.<%= otherEntityField %> }}</a>{{ last ? '' : ', ' }}
|
|
88
96
|
</span>
|
|
97
|
+
}
|
|
89
98
|
<%_ } else { _%>
|
|
90
|
-
|
|
99
|
+
@if (<%= entityInstance + '.' + relationshipFieldName %>) {
|
|
100
|
+
<div>
|
|
91
101
|
<a [routerLink]="['/<%= otherEntityStateName %>', <%= entityInstance + '.' + relationshipFieldName + '.' + relationship.otherEntity.primaryKey.name %>, 'view']">{{ <%= entityInstance %>.<%= relationshipFieldName %>.<%= otherEntityField %> }}</a>
|
|
92
102
|
</div>
|
|
103
|
+
}
|
|
93
104
|
<%_ } _%>
|
|
94
105
|
<%_ } _%>
|
|
95
106
|
</dd>
|
|
@@ -114,5 +125,6 @@ _%>
|
|
|
114
125
|
</button>
|
|
115
126
|
<%_ } _%>
|
|
116
127
|
</div>
|
|
128
|
+
}
|
|
117
129
|
</div>
|
|
118
130
|
</div>
|
|
@@ -50,9 +50,11 @@
|
|
|
50
50
|
<fa-icon icon="search"></fa-icon>
|
|
51
51
|
</button>
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
@if (currentSearch) {
|
|
54
|
+
<button class="btn btn-danger" (click)="search('')">
|
|
54
55
|
<fa-icon icon="trash-alt"></fa-icon>
|
|
55
56
|
</button>
|
|
57
|
+
}
|
|
56
58
|
</div>
|
|
57
59
|
</div>
|
|
58
60
|
</form>
|
|
@@ -62,11 +64,14 @@
|
|
|
62
64
|
<<%= jhiPrefixDashed %>-filter [filters]="filters"></<%= jhiPrefixDashed %>-filter>
|
|
63
65
|
<%_ } _%>
|
|
64
66
|
|
|
65
|
-
|
|
67
|
+
@if (<%= entityInstancePlural %>?.length === 0) {
|
|
68
|
+
<div class="alert alert-warning" id="no-result">
|
|
66
69
|
<span <%= jhiPrefix %>Translate="<%= i18nKeyPrefix %>.home.notFound">__jhiTransformTranslate__('<%- i18nKeyPrefix %>.home.notFound')</span>
|
|
67
70
|
</div>
|
|
71
|
+
}
|
|
68
72
|
|
|
69
|
-
|
|
73
|
+
@if (<%= entityInstancePlural %> && <%= entityInstancePlural %>.length > 0) {
|
|
74
|
+
<div class="table-responsive table-entities" id="entities">
|
|
70
75
|
<table class="table table-striped" aria-describedby="page-heading">
|
|
71
76
|
<thead>
|
|
72
77
|
<tr <%= jhiPrefix %>Sort [(predicate)]="predicate" [(ascending)]="ascending" (sortChange)="navigateToWithComponentValues()">
|
|
@@ -75,15 +80,15 @@
|
|
|
75
80
|
<div class="d-flex">
|
|
76
81
|
<span <%= jhiPrefix %>Translate="<%= field.fieldTranslationKey %>">__jhiTransformTranslate__('<%- field.fieldTranslationKey %>')</span>
|
|
77
82
|
<%_ if (!field.transient) { _%>
|
|
78
|
-
|
|
83
|
+
<% if (searchEngineAny && !field.fieldTypeBoolean && !field.fieldTypeNumeric && !field.fieldTypeTemporal) { %>@if (!currentSearch) {<% } %>
|
|
84
|
+
<fa-icon class="p-1" icon="sort"></fa-icon>
|
|
85
|
+
<% if (searchEngineAny && !field.fieldTypeBoolean && !field.fieldTypeNumeric && !field.fieldTypeTemporal) { %>}<% } %>
|
|
79
86
|
<%_ } _%>
|
|
80
87
|
</div>
|
|
81
88
|
</th>
|
|
82
89
|
<%_ } _%>
|
|
83
90
|
<%_ for (const relationship of relationships.filter(rel => !rel.otherEntityIsEmbedded)) { _%>
|
|
84
|
-
<%_ if (relationship.
|
|
85
|
-
|| (relationship.relationshipOneToOne && relationship.ownerSide)
|
|
86
|
-
|| (relationship.relationshipManyToMany && relationship.ownerSide && paginationNo)) {
|
|
91
|
+
<%_ if (relationship.persistableRelationship && (!relationship.collection || paginationNo)) {
|
|
87
92
|
const fieldName = "." + relationship.otherEntityField;
|
|
88
93
|
_%>
|
|
89
94
|
<th scope="col" <%= jhiPrefix %>SortBy="<%= relationship.relationshipName + (fieldName) %>">
|
|
@@ -98,7 +103,8 @@
|
|
|
98
103
|
</tr>
|
|
99
104
|
</thead>
|
|
100
105
|
<tbody<% if (paginationInfiniteScroll) { %> infinite-scroll (scrolled)="loadPage(page + 1)" [infiniteScrollDisabled]="page - 1 >= links['last']" [infiniteScrollDistance]="0"<% } %>>
|
|
101
|
-
|
|
106
|
+
@for (<%= entityInstance %> of <%= entityInstancePlural %>; track track<%= primaryKey.nameCapitalized %>) {
|
|
107
|
+
<tr data-cy="entityTable">
|
|
102
108
|
<%_
|
|
103
109
|
const routerLink = ` [routerLink]="['/${ entityPage }', ${entityInstance}.${primaryKey.name}, 'view']"`;
|
|
104
110
|
for (field of fields.filter(field => !field.hidden)) {
|
|
@@ -107,15 +113,19 @@ for (field of fields.filter(field => !field.hidden)) {
|
|
|
107
113
|
_%>
|
|
108
114
|
<%_ if (field.fieldTypeBinary && field.blobContentTypeImage) { _%>
|
|
109
115
|
<td>
|
|
110
|
-
|
|
116
|
+
@if (<%= entityInstance %>.<%= fieldName %>) {
|
|
117
|
+
<a (click)="openFile(<%= entityInstance %>.<%= fieldName %>, <%= entityInstance %>.<%= fieldName %>ContentType)">
|
|
111
118
|
<img [src]="'data:' + <%= entityInstance %>.<%= fieldName %>ContentType + ';base64,' + <%= entityInstance %>.<%= fieldName %>" style="max-height: 30px;" alt="<%= entityInstance %> image"/>
|
|
112
119
|
</a>
|
|
113
|
-
<span
|
|
120
|
+
<span>{{ <%= entityInstance %>.<%= fieldName %>ContentType }}, {{ byteSize(<%= entityInstance %>.<%= fieldName %>) }}</span>
|
|
121
|
+
}
|
|
114
122
|
</td>
|
|
115
123
|
<%_ } else if (field.fieldTypeBinary && field.blobContentTypeAny) { _%>
|
|
116
124
|
<td>
|
|
117
|
-
|
|
118
|
-
<
|
|
125
|
+
@if (<%= entityInstance %>.<%= fieldName %>) {
|
|
126
|
+
<a (click)="openFile(<%= entityInstance %>.<%= fieldName %>, <%= entityInstance %>.<%= fieldName %>ContentType)" <%= jhiPrefix %>Translate="entity.action.open">__jhiTransformTranslate__('entity.action.open')</a>
|
|
127
|
+
<span>{{ <%= entityInstance %>.<%= fieldName %>ContentType }}, {{ byteSize(<%= entityInstance %>.<%= fieldName %>) }}</span>
|
|
128
|
+
}
|
|
119
129
|
</td>
|
|
120
130
|
<%_ } else if (field.fieldIsEnum) { _%>
|
|
121
131
|
<%# TODO: import enum and use its key as label _%>
|
|
@@ -131,33 +141,33 @@ _%>
|
|
|
131
141
|
<%_ } _%>
|
|
132
142
|
<%_ } _%>
|
|
133
143
|
<%_ for (const relationship of relationships.filter(rel => !rel.otherEntityIsEmbedded)) {
|
|
134
|
-
const ownerSide = relationship.ownerSide;
|
|
135
144
|
const relationshipFieldName = relationship.relationshipFieldName;
|
|
136
145
|
const relationshipFieldNamePlural = relationship.relationshipFieldNamePlural;
|
|
137
146
|
const otherEntityField = relationship.otherEntityField;
|
|
138
147
|
_%>
|
|
139
|
-
<%_ if (relationship.
|
|
140
|
-
|| (relationship.relationshipOneToOne && ownerSide)
|
|
141
|
-
|| (relationship.relationshipManyToMany && ownerSide && paginationNo)) {
|
|
142
|
-
_%>
|
|
148
|
+
<%_ if (relationship.persistableRelationship && (!relationship.collection || paginationNo)) { _%>
|
|
143
149
|
<td>
|
|
144
150
|
<%_ if (relationship.otherEntityUser) { _%>
|
|
145
151
|
<%_ if (relationship.collection) { _%>
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
152
|
+
@for (<%= relationshipFieldName %> of <%= entityInstance %>.<%= relationshipFieldNamePlural %>; track $index; let last = $last) {
|
|
153
|
+
<span>{{ <%= relationshipFieldName %>.<%= otherEntityField %> }}{{ last ? '' : ', ' }}</span>
|
|
154
|
+
}
|
|
149
155
|
<%_ } else { _%>
|
|
150
156
|
{{ <%= entityInstance %>.<%= relationshipFieldName %>?.<%= otherEntityField %> }}
|
|
151
157
|
<%_ } _%>
|
|
152
158
|
<%_ } else { _%>
|
|
153
159
|
<%_ if (relationship.collection) { _%>
|
|
154
|
-
|
|
160
|
+
@for (<%= relationshipFieldName %> of <%= entityInstance %>.<%= relationshipFieldNamePlural %>; track $index; let last = $last) {
|
|
161
|
+
<span>
|
|
155
162
|
<a class="form-control-static" [routerLink]="['/<%= relationship.otherEntity.entityPage %>', <%= relationshipFieldName %>.<%= relationship.otherEntity.primaryKey.name %>, 'view']">{{ <%= relationshipFieldName %>.<%= otherEntityField %> }}</a>{{ last ? '' : ', ' }}
|
|
156
163
|
</span>
|
|
164
|
+
}
|
|
157
165
|
<%_ } else { _%>
|
|
158
|
-
|
|
166
|
+
@if (<%= entityInstance + "." + relationshipFieldName %>) {
|
|
167
|
+
<div>
|
|
159
168
|
<a [routerLink]="['/<%= relationship.otherEntity.entityPage %>', <%= entityInstance %>.<%= relationshipFieldName %>.<%= relationship.otherEntity.primaryKey.name %>, 'view']">{{ <%= entityInstance %>.<%= relationshipFieldName %>.<%= otherEntityField %> }}</a>
|
|
160
169
|
</div>
|
|
170
|
+
}
|
|
161
171
|
<%_ } _%>
|
|
162
172
|
<%_ } _%>
|
|
163
173
|
</td>
|
|
@@ -166,7 +176,7 @@ _%>
|
|
|
166
176
|
<td class="text-end">
|
|
167
177
|
<div class="btn-group">
|
|
168
178
|
<%_ for (const relationship of relationships.filter(rel => !rel.otherEntityIsEmbedded)) { _%>
|
|
169
|
-
<%_ if (relationship.otherEntity.jpaMetamodelFiltering && relationship.otherEntity.paginationPagination &&
|
|
179
|
+
<%_ if (relationship.otherEntity.jpaMetamodelFiltering && relationship.otherEntity.paginationPagination && relationship.collection && !relationship.persistableRelationship) {
|
|
170
180
|
const otherEntityTranslationKey = i18nKeyPrefix + '.' + relationship.relationshipName;
|
|
171
181
|
_%>
|
|
172
182
|
<button type="submit"
|
|
@@ -202,12 +212,14 @@ _%>
|
|
|
202
212
|
</div>
|
|
203
213
|
</td>
|
|
204
214
|
</tr>
|
|
215
|
+
}
|
|
205
216
|
</tbody>
|
|
206
217
|
</table>
|
|
207
218
|
</div>
|
|
219
|
+
}
|
|
208
220
|
<%_ if (paginationPagination) { _%>
|
|
209
|
-
|
|
210
|
-
<div
|
|
221
|
+
@if (<%= entityInstancePlural %> && <%= entityInstancePlural %>.length > 0) {
|
|
222
|
+
<div>
|
|
211
223
|
<div class="d-flex justify-content-center">
|
|
212
224
|
<<%= jhiPrefixDashed %>-item-count [params]="{ page: page, totalItems: totalItems, itemsPerPage: itemsPerPage }"></<%= jhiPrefixDashed %>-item-count>
|
|
213
225
|
</div>
|
|
@@ -216,5 +228,6 @@ _%>
|
|
|
216
228
|
<ngb-pagination [collectionSize]="totalItems" [page]="page" [pageSize]="itemsPerPage" [maxSize]="5" [rotate]="true" [boundaryLinks]="true" (pageChange)="navigateToPage($event)"></ngb-pagination>
|
|
217
229
|
</div>
|
|
218
230
|
</div>
|
|
231
|
+
}
|
|
219
232
|
<%_ } _%>
|
|
220
233
|
</div>
|
|
@@ -299,7 +299,7 @@ export class <%= componentName %> implements OnInit {
|
|
|
299
299
|
<%_ } _%>
|
|
300
300
|
protected fillComponentAttributesFromResponseBody(data: I<%= entityAngularName %>[] | null): I<%= entityAngularName %>[] {
|
|
301
301
|
<%_ if (paginationInfiniteScroll) { _%>
|
|
302
|
-
// If there is
|
|
302
|
+
// If there is previous link, data is a infinite scroll pagination content.
|
|
303
303
|
if ('prev' in this.links) {
|
|
304
304
|
const <%= entityInstancePlural %>New = this.<%= entityInstancePlural %> ?? [];
|
|
305
305
|
if (data) {
|
|
@@ -40,7 +40,7 @@ describe('<%= entityAngularName %> Form Service', () => {
|
|
|
40
40
|
<%_ for (const field of fields) { _%>
|
|
41
41
|
<%= field.fieldName %>: expect.any(Object),
|
|
42
42
|
<%_ } _%>
|
|
43
|
-
<%_ for (const relationship of relationships.filter(relationship => relationship.
|
|
43
|
+
<%_ for (const relationship of relationships.filter(relationship => relationship.persistableRelationship)) { _%>
|
|
44
44
|
<%= relationship.propertyName %>: expect.any(Object),
|
|
45
45
|
<%_ } _%>
|
|
46
46
|
})
|
|
@@ -54,7 +54,7 @@ describe('<%= entityAngularName %> Form Service', () => {
|
|
|
54
54
|
<%_ for (const field of fields) { _%>
|
|
55
55
|
<%= field.fieldName %>: expect.any(Object),
|
|
56
56
|
<%_ } _%>
|
|
57
|
-
<%_ for (const relationship of relationships.filter(relationship => relationship.
|
|
57
|
+
<%_ for (const relationship of relationships.filter(relationship => relationship.persistableRelationship)) { _%>
|
|
58
58
|
<%= relationship.propertyName %>: expect.any(Object),
|
|
59
59
|
<%_ } _%>
|
|
60
60
|
}));
|