Neolithic Psychedelic Mushrooms

    @speakylink/firebaseui-angular
    TypeScript icon, indicating that this package has built-in type declarations

    5.1.0-fr • Public • Published

    Build Status npm version

    [French fork]

    Only things done on this fork :

    • update both package.json dependencies/peerDependencies to refer to @speakylink/firebaseui + npm install
    • replace 3 occurences of 'firebaseui' by '@speakylink/firebaseui'
    • replace 4 occurences of node_modules/firebaseui by node_modules/@speakylink/firebaseui
    • replace 7 occurences of 'firebaseui-angular' by '@speakylink/firebaseui-angular'
    • update the projects/firebaseui-angular-library/package.json name to @speakylink/firebaseui-angular, and suffix the version with -fr
    • build the lib :
        npm run build-lib
    • publish on npm :
        cd dist/firebaseui-angular-library/
        npm login
        npm publish --access public

    FirebaseUi-Angular

    Screenshot of Login screen

    Installation

    To install this library, run:

    $ npm install firebaseui-angular --save

    To run this library you need to have AngularFire2, Firebase, FirebaseUI-Web installed. Fast install:

    $ npm install firebase firebaseui @angular/fire firebaseui-angular --save

    How to use

    Add the FirebaseUIModule with the config to your imports. Make sure you have initialized AngularFire correctly.

    import {BrowserModule} from '@angular/platform-browser';
    import {NgModule} from '@angular/core';
    import {FormsModule} from '@angular/forms';
    import {AppComponent} from './app.component';
    import {firebase, firebaseui, FirebaseUIModule} from '@speakylink/firebaseui-angular';
    import {environment} from '../environments/environment';
    import {AppRoutingModule} from './app-routing.module';
    import {AngularFireModule} from '@angular/fire';
    import {AngularFireAuthModule} from '@angular/fire/auth';
    
    
    const firebaseUiAuthConfig: firebaseui.auth.Config = {
      signInFlow: 'popup',
      signInOptions: [
        firebase.auth.GoogleAuthProvider.PROVIDER_ID,
        {
          scopes: [
            'public_profile',
            'email',
            'user_likes',
            'user_friends'
          ],
          customParameters: {
            'auth_type': 'reauthenticate'
          },
          provider: firebase.auth.FacebookAuthProvider.PROVIDER_ID
        },
        firebase.auth.TwitterAuthProvider.PROVIDER_ID,
        firebase.auth.GithubAuthProvider.PROVIDER_ID,
        {
          requireDisplayName: false,
          provider: firebase.auth.EmailAuthProvider.PROVIDER_ID
        },
        firebase.auth.PhoneAuthProvider.PROVIDER_ID,
        firebaseui.auth.AnonymousAuthProvider.PROVIDER_ID
      ],
      tosUrl: '<your-tos-link>',
      privacyPolicyUrl: '<your-privacyPolicyUrl-link>',
      credentialHelper: firebaseui.auth.CredentialHelper.ACCOUNT_CHOOSER_COM
    };
    
    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
        BrowserModule,
        FormsModule,
        AppRoutingModule,
        AngularFireModule.initializeApp(environment.firebaseConfig),
        AngularFireAuthModule,
        FirebaseUIModule.forRoot(firebaseUiAuthConfig)
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule {
    }
    
    
    

    Add the firebaseui css to your imports:

    Option 1: CSS Import

    May be incompatible with older browsers.

    Import the firebaseui css to your src/styles.css file:

    @import '~firebaseui/dist/firebaseui.css';

    Option 2: Angular-CLI

    File: angular.json

    Path: "node_modules/@speakylink/firebaseui/dist/firebaseui.css"

    {
      "projects": {
        [your-project-name]: {
          ...
          "architect": {
            "build": {
              "options": {
                ...
                "styles": [
                  "src/styles.css",
                  "node_modules/@speakylink/firebaseui/dist/firebaseui.css"
                ]
              }
            },
            ...
            "test": {
              "options": {
                ...
                "styles": [
                  "src/styles.css",
                  "node_modules/@speakylink/firebaseui/dist/firebaseui.css"
                ]
              }
            }
          }
        }
      }
    }

    Option 3: HTML Link

    Put this in the <head> tag of your index.html file:

    <link type="text/css" rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/3.0.0/firebaseui.css" />

    Make sure the version number matches the version of firebaseui you have installed with npm.

    Once everything is set up, you can use the component in your Angular application:

    <firebase-ui></firebase-ui>
    

    Configuration

    For the configuration of the module see the official firebaseui documentation: Config

    If you use a version prior to 3.3.0 check the old README

    forRoot/forFeature

    To configure the plugin the first time (main.module.ts) the forRoot() method is used. It builds the basis for all further uses of the plugin. But you have the possibility to overwrite the entire or just parts of the configuration in any (sub-)module.

    forRoot

    To overwrite the entire configuration use:

    FirebaseUIModule.forRoot(firebaseUiAuthConfig: NativeFirebaseUIAuthConfig)
    
    forFeature

    To overwrite just parts of the configuration use:

    FirebaseUIModule.forFeature(firebaseUiAuthConfig: NativeFirebaseUIAuthConfig)
    

    This will use the in forRoot provided configuration and overwrite just the newly provided values.

    Listen to auth state changes

    this.angularFireAuth.authState.subscribe(this.firebaseAuthChangeListener);
    
    private firebaseAuthChangeListener(response) {
        // if needed, do a redirect in here
        if (response) {
          console.log('Logged in :)');
        } else {
          console.log('Logged out :(');
        }
      }

    Don't forget to unsubscribe at the end.

    Sign-in success / failure callbacks

    <firebase-ui
        (signInSuccessWithAuthResult)="successCallback($event)"
        (signInFailure)="errorCallback($event)"
        (uiShown)="uiShownCallback()"></firebase-ui>
    successCallback(signInSuccessData: FirebaseUISignInSuccessWithAuthResult) {
        ...
    }
    
    errorCallback(errorData: FirebaseUISignInFailure) {
        ...
    }
    
    uiShownCallback() {
        ...
    }

    Disable auto sign-in

    constructor(private firebaseuiAngularLibraryService: FirebaseuiAngularLibraryService) {
      firebaseuiAngularLibraryService.firebaseUiInstance.disableAutoSignIn();
    }

    Sample

    There is a sample project in the root folder.

    • Just replace the firebase config in src\environments\environment.ts.
    • Run npm install
    • Run npm run build-lib
    • Run ng serve

    Development

    The library sources are in projects/firebaseui/angular/library.

    To generate all *.js, *.d.ts and *.metadata.json files:

    $ npm run build-lib

    To lint all *.ts files:

    $ npm run lint

    There are test files, but they are empty at the moment.

    Troubleshoot

    UI not rendered

    The UI only gets rendered if the user isn't signed in. So if the UI isn't shown, sign out the user via angular-fire.

    Prod build error

    ERROR in ./src/app/app.module.ngfactory.js
    Module not found: Error: Can't resolve 'firebase/index' in '...'
    ERROR in ./src/app/app.module.ngfactory.js
    Module not found: Error: Can't resolve 'firebaseui/dist/index' in '...'
    

    Use the firebase and firebaseui instances exposed by the plugin:

    import {..., firebase, firebaseui} from '@speakylink/firebaseui-angular';

    CSS not loaded

    If you have added the css to the angular.json but nothing happened. Try to restart the server (Ctrl-C and ng serve)

    ERROR in ./~/firebase/app/shared_promise.js

    This is a know issue in the firebase project. To fix that (for now), do that:

    npm install promise-polyfill --save-exact

    http://localhost:4200/images/buffer.svg?embed 404 (Not Found)

    Put this into your styles.scss file:

    @supports (-webkit-appearance:none) {
      .mdl-progress:not(.mdl-progress--indeterminate):not(.mdl-progress--indeterminate) > .auxbar,
      .mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate) > .auxbar {
        mask: url(/assets/images/buffer.svg?embed) !important;
      }
    }
    

    and put a buffer.svg file into assets/images. This will stop this error message.

    License

    MIT © Raphael Jenni

    Install

    npm i @speakylink/firebaseui-angular

    DownloadsWeekly Downloads

    8

    Version

    5.1.0-fr

    License

    MIT

    Unpacked Size

    104 kB

    Total Files

    21

    Last publish

    Collaborators

    • avatar