<!DOCTYPE html>
<html>
  <head>
    <title>Angular 2 QuickStart</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
    <link rel="stylesheet" href="http://www.telerik.com/kendo-angular-ui/npm/node_modules//@progress/kendo-theme-default/dist/all.css" />
    <!-- 1. Load libraries -->
    <!-- Polyfill(s) for older browsers -->
    <script src="https://unpkg.com/core-js/client/shim.min.js"></script>

    <script src="https://unpkg.com/zone.js@0.8.11/dist/zone.js"></script>
    <script src="https://unpkg.com/reflect-metadata@0.1.3/Reflect.js"></script>
    <script src="https://unpkg.com/systemjs@0.19.27/dist/system.js"></script>

    <!-- 2. Configure SystemJS -->
    <script src="systemjs.config.js"></script>
    <script>
      System.import('app').catch(function(err){ console.error(err); });
    </script>

    <!-- Example-specific styles -->
    <style>
      html, body { overflow: hidden; }
      body { font-family: "RobotoRegular",Helvetica,Arial,sans-serif; font-size: 14px; margin: 0; }
      my-app { display: block; width: 100%; overflow: hidden; min-height: 80px; box-sizing: border-box; padding: 30px; }
      my-app > .k-loading { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }
      .example-wrapper { min-height: 280px; align-content: flex-start; }
      .example-wrapper p, .example-col p { margin: 0 0 10px; }
      .example-wrapper p:first-child, .example-col p:first-child { margin-top: 0; }
      .example-col { display: inline-block; vertical-align: top; padding-right: 20px; padding-bottom: 20px; }
      .example-config { margin: 0 0 20px; padding: 20px; background-color: rgba(0,0,0,.03); border: 1px solid rgba(0,0,0,.08); }
      .event-log { margin: 0; padding: 0; max-height: 100px; overflow-y: auto; list-style-type: none; border: 1px solid rgba(0,0,0,.08); background-color: #fff; }
      .event-log li {margin: 0; padding: .3em; line-height: 1.2em; border-bottom: 1px solid rgba(0,0,0,.08); }
      .event-log li:last-child { margin-bottom: -1px;}
    </style>
  </head>

  <!-- 3. Display the application -->
  <body>
    <my-app>Loading...</my-app>
    
  </body>
</html>
Example of Kendo DatePicker
 <div>
    <table>

      <tr>
        <td>
          Contract Date:
        </td>
        <td>
          <kendo-datepicker 
            [(value)]="contractDate" 
            [(min)]="minContractDate" 
            [rangeValidation] = "true" 
            [format] = "MM/dd/yyyy"
            (valueChange)="onContractDateChange($event)">
          </kendo-datepicker>
        </td>
      </tr>
      <tr>
        <td>
          First Payment Date:
        </td>
        <td>
          <kendo-datepicker 
            id="dpFirstPaymentDate" 
            (blur)="onFirstPaymentDateChange($event)" 
            [(value)]="firstPaymentDate" 
            [(max)]="maxDate" 
            [(min)]="minDate" 
            [(focusedDate)]="firstPaymentDate" 
            [rangeValidation] = "true" 
            title="First Payment Date">
          </kendo-datepicker>
        </td>
      </tr>
      <tr>
        <td>
          Maturity Date:
        </td>
        <td>
          <kendo-datepicker [(value)]="maturityDate" [disabled]="true" ></kendo-datepicker>
        </td>
      </tr>
    </table>
    <p>(use Alt+↓ to open the calendar, ← and →  to navigate, ↑ to increment and ↓ to decrement the value)</p>
    <input type="submit">
  </div>
import { Component, OnInit, Inject, ElementRef, ViewChild } from '@angular/core';
import { tradelines } from './creditTradeLines';
import { GridDataResult, AddEvent, EditEvent, GridComponent  } from '@progress/kendo-angular-grid';
import { SortDescriptor, orderBy, GroupDescriptor, process  } from '@progress/kendo-data-query';
import { ButtonsModule } from '@progress/kendo-angular-buttons';
import { IntlModule } from '@progress/kendo-angular-intl';
import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
import { FormGroup, FormControl, Validators } from '@angular/forms';


@Component({
    selector: 'my-app',
    styles: ['.right-align { text-align: right; display: block }'],
    templateUrl: './app/app.component.html'
})

export class AppComponent  {
    term: number = 48;
    public firstPaymentDate: Date = new Date(); //Date.now() should work but it doesn't
    public contractDate: Date = new Date();
    public maturityDate: Date = new Date();
    public maxDate: Date = new Date();
    public minDate: Date = new Date();
    public minContractDate: Date = new Date();
    
    constructor() {
        this.minContractDate.setDate(this.contractDate.getDate() - 30);
        this.onContractDateChange(this.contractDate);

    }
  



    protected onContractDateChange(value: Date): void {
      
      this.minDate = new Date(value);
      this.minDate.setDate(value.getDate() + 19);
      
      this.maxDate = new Date(value);
      this.maxDate.setDate(value.getDate() + 51);
      
      this.firstPaymentDate = new Date(value);
      this.firstPaymentDate.setDate(value.getDate() + 45);

        this.onFirstPaymentDateChange(this.firstPaymentDate);
    }
    
    public handleBlur(): void {
      alert("Component is blurred");
    }

    
    protected onFirstPaymentDateChange(): void {
        let value = this.firstPaymentDate;
        if (value > this.maxDate) {
          // This does not appear to be working
          value = new Date(this.maxDate);
          this.firstPaymentDate = new Date(this.maxDate);
        }
        else if (value < this.minDate) {
          value = new Date(this.minDate);
          this.firstPaymentDate = new Date(this.minDate);
        }
        
        this.maturityDate = new Date(value);
        this.maturityDate.setMonth(value.getMonth() + this.term);
        

    }

    public addHandler({ sender }: AddEvent): void {
        this.closeEditor(sender);

        this.formGroup = formGroup({
            'AccountNumber': "",
            'SubscriberName': "",
            'CurrentBalance': 0,
            'DateOpened': ""
        });

        this.isNew = true;
        sender.addRow(this.formGroup);
    }

}
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './ng.module';

enableProdMode();

const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);
System.config({
  "transpiler": "ts",
  "typescriptOptions": {
    "target": "ES2017",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true
  },
  "meta": {
    "typescript": {
      "exports": "ts"
    },
    "*.json": {
      "loader": "systemjs-json-plugin"
    }
  },
  "map": {
    "app": "app",
    "systemjs-json-plugin": "npm:systemjs-plugin-json",
    "@telerik": "http://www.telerik.com/kendo-angular-ui/npm/node_modules/@telerik",
    "@progress": "http://www.telerik.com/kendo-angular-ui/npm/node_modules/@progress",
    "cldr-data": "http://www.telerik.com/kendo-angular-ui/npm/node_modules/cldr-data",
    "@angular": "https://unpkg.com/@angular",
    "angular2-in-memory-web-api": "https://unpkg.com/angular2-in-memory-web-api",
    "rxjs": "https://unpkg.com/rxjs@5.4.0",
    "hammerjs": "https://unpkg.com/hammerjs@2.0.8",
    "ts": "https://unpkg.com/plugin-typescript@5.3.3/lib/plugin.js",
    "tslib": "https://unpkg.com/tslib@1.7.1",
    "typescript": "https://unpkg.com/typescript@2.3.4/lib/typescript.js",
    "@angular/http/testing": "https://unpkg.com/@angular/http@4.2.2/bundles/http-testing.umd.js",
    "@angular/platform-browser/animations": "https://unpkg.com/@angular/platform-browser@4.2.2/bundles/platform-browser-animations.umd.js",
    "@angular/animations/browser": "https://unpkg.com/@angular/animations@4.2.2/bundles/animations-browser.umd.js",
    "@angular/common": "https://unpkg.com/@angular/common@4.2.2",
    "@angular/compiler": "https://unpkg.com/@angular/compiler@4.2.2",
    "@angular/forms": "https://unpkg.com/@angular/forms@4.2.2",
    "@angular/core": "https://unpkg.com/@angular/core@4.2.2",
    "@angular/http": "https://unpkg.com/@angular/http@4.2.2",
    "@angular/platform-browser": "https://unpkg.com/@angular/platform-browser@4.2.2",
    "@angular/platform-browser-dynamic": "https://unpkg.com/@angular/platform-browser-dynamic@4.2.2",
    "@angular/upgrade": "https://unpkg.com/@angular/upgrade@4.2.2"
  },
  "packages": {
    "app": {
      "main": "./main.ts",
      "defaultExtension": "ts"
    },
    "rxjs": {
      "defaultExtension": "js"
    },
    "chroma-js": {
      "defaultExtension": "js"
    },
    "@angular/common": {
      "main": "/bundles/common.umd.js"
    },
    "@angular/compiler": {
      "main": "/bundles/compiler.umd.js"
    },
    "@angular/forms": {
      "main": "bundles/forms.umd.js",
      "defaultExtension": "js"
    },
    "@angular/core": {
      "main": "/bundles/core.umd.js"
    },
    "@angular/http": {
      "main": "bundles/http.umd.js",
      "defaultExtension": "js"
    },
    "@angular/platform-browser": {
      "main": "/bundles/platform-browser.umd.js"
    },
    "@angular/platform-browser-dynamic": {
      "main": "/bundles/platform-browser-dynamic.umd.js"
    },
    "@angular/upgrade": {
      "main": "/bundles/upgrade.umd.js"
    },
    "@angular/animations": {
      "main": "/bundles/animations.umd.js"
    },
    "@progress/kendo-angular-buttons": {
      "main": "dist/cdn/js/kendo-angular-buttons.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-l10n": {
      "main": "dist/cdn/js/kendo-angular-l10n.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-charts": {
      "main": "dist/cdn/js/kendo-angular-charts.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-inputs": {
      "main": "dist/cdn/js/kendo-angular-inputs.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-intl": {
      "main": "dist/cdn/js/kendo-angular-intl.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-data-query": {
      "main": "dist/cdn/js/kendo-data-query.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-drawing": {
      "main": "dist/es/main.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-file-saver": {
      "main": "dist/npm/main.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-dateinputs": {
      "main": "dist/cdn/js/kendo-angular-dateinputs.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-dialog": {
      "main": "dist/cdn/js/kendo-angular-dialog.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-dropdowns": {
      "main": "dist/cdn/js/kendo-angular-dropdowns.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-grid": {
      "main": "dist/cdn/js/kendo-angular-grid.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-label": {
      "main": "dist/cdn/js/kendo-angular-label.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-layout": {
      "main": "dist/cdn/js/kendo-angular-layout.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-popup": {
      "main": "dist/cdn/js/kendo-angular-popup.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-scrollview": {
      "main": "dist/cdn/js/kendo-angular-scrollview.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-sortable": {
      "main": "dist/cdn/js/kendo-angular-sortable.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-upload": {
      "main": "dist/cdn/js/kendo-angular-upload.js",
      "defaultExtension": "js"
    },
    "@progress/kendo-angular-excel-export": {
      "main": "dist/cdn/js/kendo-angular-excel-export.js",
      "defaultExtension": "js"
    }
  }
});
import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule } from '@angular/forms';
import { GridModule } from '@progress/kendo-angular-grid';
import { ButtonsModule } from '@progress/kendo-angular-buttons';
import { IntlModule } from '@progress/kendo-angular-intl';
import { DateInputsModule } from '@progress/kendo-angular-dateinputs';

import { AppComponent }   from './app.component';

@NgModule({
  declarations: [ AppComponent, ],
  imports:      [ BrowserModule, BrowserAnimationsModule, FormsModule, GridModule, ButtonsModule, IntlModule, DateInputsModule  ],
  bootstrap:    [ AppComponent ]
})

export class AppModule { }