2.1.14-SNAPSHOT • Published 1 year ago

passmobilite-nav-layout v2.1.14-SNAPSHOT

Weekly downloads
-
License
-
Repository
-
Last release
1 year ago

Pass'Mobilités Navigation Layout

This library helps you to integrate Pass'Moblité's design by providing the following features:

  • A SideBar Navigation which implements two functionalities to handle user's workflow,
  • A BottomBar Navigation,
  • A Quick Access Menu,
  • A Pop-up for no internet connexion which blocks navigation on internet lost detection,
  • An error page for 404, 500 and 403 errors,
  • A style file (.scss) and their assets (fonts, icons...).

Getting Started

Prerequisites

npx
npm install -g npx
@angular/material
npx ng add @angular/material

Select deeppurple-amber for prebuilt theme. And delete what was added by install script in global file styles.

keycloak-angular
npm install --save keycloak-angular
keycloak-angular
npm install --save keycloak-js@4.8.3

Refer back to https://www.npmjs.com/package/keycloak-angular for keycloak-angular installation.

Installing

npm install --save git+https://795c1c507fefee9ca5a4812224604ccf8f174e89:x-oauth-basic@github.com/SylvainMienneeWL/passsmobilite-nav-layout-dist.git#0.0.2

Setup

AppModule

import { PmNavLayoutModule, DeployedAppEnum } from '@pm/nav-layout';

@NgModule({
  declarations: [AppComponent],
  imports: [
    BrowserModule,
    HttpClientModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    KeycloakAngularModule,
    PmNavLayoutModule.forRoot({
      appDeployedOn: DeployedAppEnum.passMobilite,,
      passMobilite: {
        apiBaseUrl: environment.api.baseUrl,
        apikey: environment.api.apikey,
        signUpExcludeUrl: ['/help/terms']
      },
      metroMobilite: {
        redirectUrl: environment.metromobilite.url
      }
    }),
    MatIconModule,
    MatButtonModule
  ],
  providers: [
    {
      provide: KeycloakService,
      useValue: keycloakService
    }
  ],
  entryComponents: [AppComponent]
})
export class AppModule implements DoBootstrap {
Options

Interface ConfigPmNavLayout

ParameterRequiredDefaultDescription
appDeployedOnYes/Name of application deploying the lib: passMobilite or metroMobilite
passMobilite.apiBaseUrlYes/Base URL of Pass'Mobilités back-office
passMobilite.apikeyYes/API Key of Pass'Mobilités back-office
passMobilite.redirectUrlOnly if appDeployedOn=metroMobilite-Base URL of Pass'Mobilités front-office
passMobilite.signUpExcludeUrlNo-List of paths to exclude from finish sign up popup
metroMobilite.redirectUrlOnly if appDeployedOn=passMobilite-Base URL of Métro'Mobilités front-office
metroMobilite.urlAddressAutocompleteApiYes-Base URL of Métro'Mobilités's Address Autocompletion API
metroMobilite.apiBaseUrlYes-Base URL of Métro'Mobilités's APIs
wallet.redirectUrlYes-Base URL of Wallet's front-office

Style and Assets

styles.scss(.css)

@import '~@pm/nav-layout/theme/style.scss';

angular.json

"assets": [
  "src/favicon.ico",
  "src/assets",
  {
    "glob": "**/*",
    "input": "./node_modules/@pm/nav-layout/theme/assets/",
    "output": "./assets/"
  }
]
Options
ParameterRequiredDefaultDescription
\$pm-assets-pathNo/assetsPath to assets in styles file

Side navbar component

appComponent

<pm-side-navbar #sideNavbar>
  <button mat-icon-button (click)="sideNavbar.toggleNavbar()">
    <mat-icon>menu</mat-icon>
  </button>

  <router-outlet></router-outlet>

</pm-side-navbar>
Options

Interface MenuSideNavBarModel

ParameterRequiredDefaultDescription
TODOTODOTODOTODO

Bottom navbar component

appComponent

<pm-side-navbar #sideNavbar>
  <button mat-icon-button (click)="sideNavbar.toggleNavbar()">
    <mat-icon>menu</mat-icon>
  </button>

  <router-outlet></router-outlet>

  <pm-bottom-navbar></pm-bottom-navbar>
</pm-side-navbar>
Options

Interface MenuBottomNavBarModel

ParameterRequiredDefaultDescription
TODOTODOTODOTODO

PassMobiliteService

By calling init function, the service:

  • Call initMonitor of NetworkConnectionService,
  • Get the account data after success authentication,
  • Checks if the account was not suspended. If not, it forces him to logout,
  • Checks if the account was configured after first authentification. If not, it redirects him to configuration steps.

appComponent

import { PassMobiliteService } from '@pm/nav-layout';

export class AppComponent implements OnInit {
  title = "Portail Web Pass'Mobilités";

  constructor(
    private passMobService: PassMobiliteService
  ) {
     this.passMobService.init();
  }

Network connection service

Do not call initMonitor function of this service if you already called init function of PassMobiliteService.

appComponent

import { NetworkConnectionService } from '@pm/nav-layout';

export class AppComponent implements OnInit {
  title = "Portail Web Pass'Mobilités";

  constructor(
    private networkCnxService: NetworkConnectionService
  ) {
    this.networkCnxService.initMonitor();
  }

Deployment

To run this project, an example of use of library, on local machine run the following command:

npm run start

To build the library for prod delivery, run the following command:

npm run pm-nav-layout:build

After a success build, you need to push the build files to passsmobilite-nav-layout-dist repo and create a new branch version.

Built With

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.