<!DOCTYPE html>
<html>

  <head>
    <base href="." />
    <title>Custom Breakpoints | Flex-Layout Template</title>
    <link rel="stylesheet" href="assets/style.css" />
    
    <!-- Polyfills -->
    <script src="https://unpkg.com/core-js/client/shim.min.js"></script>
    <script src="https://unpkg.com/zone.js@0.7.4?main=browser"></script>
    <script src="https://unpkg.com/systemjs@0.19.39/dist/system.src.js"></script>

    <script src="lib/config.js"></script>
    <script>
    System.import('app')
      .catch(console.error.bind(console));
  </script>
  </head>

  <body>
    <test-app>
    loading...
  </test-app>
  </body>

</html>
.element-block {
  width: 100%;
}

.element {
  border: 1px solid #000;
  padding: 20px;
}

.one {
  background-color: orange;
  color: white;
}

.two {
  background-color: green;
  color: white;
}
System.config({
  //use typescript for compilation
  transpiler: 'typescript',
  //typescript compiler options
  typescriptOptions: {
      // Copy of compiler options in standard tsconfig.json
      "target": "es5",
      "module": "es2015",
      "moduleResolution": "node",
      "sourceMap": true,
      "emitDecoratorMetadata": true,
      "experimentalDecorators": true,
      "noImplicitAny": true,
      "suppressImplicitAnyIndexErrors": true
  },
  meta: {
      'typescript': {
        "exports": "ts"
      }
    },  
  paths: {
    'npm:': 'https://unpkg.com/'
  },
  //map tells the System loader where to look for things
  map: {
    
    'app': './src',

    '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
    '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
    '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
    '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
    '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
    '@angular/flex-layout' : 'https://rawgit.com/angular/flex-layout-builds/master/bundles/flex-layout.umd.js',
    
    // other libraries
    'rxjs':                      'npm:rxjs',
    'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
    'typescript':                'npm:typescript@2.0.10/lib/typescript.js',    
  },
  //packages defines our app package
  packages: {
    app: {
      main: './boot.ts',
      defaultExtension: 'ts'
    },
    rxjs: {
      defaultExtension: 'js'
    }
  }
});
import { BreakPoint, DEFAULT_BREAKPOINTS } from '@angular/flex-layout';

export function customBreakPoints() {
  console.log(DEFAULT_BREAKPOINTS);
  return DEFAULT_BREAKPOINTS
    .map((it:BreakPoint) => {
      switch(it.alias) {
        case 'xs':
          it.mediaQuery =  'screen and (max-width: 599px)';
          break;
        case 'gt-xs':
          it.mediaQuery =  'screen and (min-width: 600px)';
          break;
        case 'lt-sm':
          it.mediaQuery =  'screen and (max-width: 599px)';
          break;
        case 'sm':
          it.mediaQuery =  'screen and (min-width: 600px) and (max-width: 1023px)';
          break;
        case 'gt-sm':
          it.mediaQuery =  'screen and (min-width: 1024px)';
          break;
        case 'lt-md':
          it.mediaQuery =  'screen and (max-width: 1023px)';
          break;
        case 'md':
          it.mediaQuery =  'screen and (min-width: 1024px) and (max-width: 1439px)';
          break;
        case 'gt-md':
          it.mediaQuery =  'screen and (min-width: 1440px)';
          break;
        case 'lt-lg':
          it.mediaQuery =  'screen and (max-width: 1439px)';
          break;
        case 'lg':
          it.mediaQuery =  'screen and (min-width: 1440px) and (max-width: 1919px)';
          break;
        case 'gt-lg':
          it.mediaQuery =  'screen and (min-width: 1920px)';
          break;
        case 'lt-xl':
          it.mediaQuery =  'screen and (max-width: 1919px)';
          break;
        case 'xl':
          it.mediaQuery =  'screen and (min-width: 1920px) and (max-width: 5000px)';
          break;
        default:
          break;
      }
      return DEFAULT_BREAKPOINTS;
    });
}
import { NgModule } from '@angular/core';
import { BREAKPOINTS } from '@angular/flex-layout'
import { customBreakPoints } from './custom-breakpoints.component';

@NgModule({
  providers: [
    {
      provide : BREAKPOINTS,
      useFactory : customBreakPoints
    }
  ]
})
export class CustomBreakPointsModule { }
import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import * as Rx from 'rxjs/Rx';

import {FlexLayoutModule} from "@angular/flex-layout";
import {CustomBreakPointsModule} from './custom-breakpoints.module';

import { TestApp} from "./test-app";

@NgModule({
  imports: [ 
    BrowserModule,
    FlexLayoutModule,
    CustomBreakPointsModule
  ],
  declarations: [ TestApp ],
  bootstrap: [ TestApp ]
})
export class TestAppModule {}
import {Component} from '@angular/core'

@Component({
  selector: 'test-app',
  template: `
    <div class="element-block" fxLayout="row" fxLayout.gt-sm="column">
      <div class="element one" fxFlex="33">Element One</div>
      <div class="element two" fxFlex="33">Element Two</div>
      <div class="element three" fxFlex="33">Element Three</div>
    </div>
  `
})
export class TestApp {
   let windowWidth = window.innerWidth;
   console.log(windowWidth);
}
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import {TestAppModule} from './app/test-app-module';

platformBrowserDynamic().bootstrapModule(TestAppModule);