feat(aio): add initial angular-cli scaffold (#14118)
- adds initial CLI-generated app - adds material toolbar - initial (very rough) scss setup, lifted from angular/material - initial routing scaffold w/ homepage
|
@ -25,3 +25,7 @@ npm-debug.log
|
|||
|
||||
# rollup-test output
|
||||
/modules/rollup-test/dist/
|
||||
|
||||
# angular.io
|
||||
/angular.io/node_modules/
|
||||
/angular.io/dist/
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# Site
|
||||
|
||||
This project was generated with [angular-cli](https://github.com/angular/angular-cli) version 1.0.0-beta.26.
|
||||
|
||||
## Development server
|
||||
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
|
||||
|
||||
## Code scaffolding
|
||||
|
||||
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive/pipe/service/class/module`.
|
||||
|
||||
## Build
|
||||
|
||||
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
|
||||
|
||||
## Running unit tests
|
||||
|
||||
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
||||
|
||||
## Running end-to-end tests
|
||||
|
||||
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
|
||||
Before running the tests make sure you are serving the app via `ng serve`.
|
||||
|
||||
## Deploying to GitHub Pages
|
||||
|
||||
Run `ng github-pages:deploy` to deploy to GitHub Pages.
|
||||
|
||||
## Further help
|
||||
|
||||
To get more help on the `angular-cli` use `ng help` or go check out the [Angular-CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
|
@ -0,0 +1,59 @@
|
|||
{
|
||||
"project": {
|
||||
"version": "1.0.0-beta.26",
|
||||
"name": "site"
|
||||
},
|
||||
"apps": [
|
||||
{
|
||||
"root": "src",
|
||||
"outDir": "dist",
|
||||
"assets": [
|
||||
"assets",
|
||||
"favicon.ico"
|
||||
],
|
||||
"index": "index.html",
|
||||
"main": "main.ts",
|
||||
"polyfills": "polyfills.ts",
|
||||
"test": "test.ts",
|
||||
"tsconfig": "tsconfig.json",
|
||||
"prefix": "app",
|
||||
"styles": [
|
||||
"styles.scss"
|
||||
],
|
||||
"scripts": [
|
||||
|
||||
],
|
||||
"environments": {
|
||||
"source": "environments/environment.ts",
|
||||
"dev": "environments/environment.ts",
|
||||
"prod": "environments/environment.prod.ts"
|
||||
}
|
||||
}
|
||||
],
|
||||
"e2e": {
|
||||
"protractor": {
|
||||
"config": "./protractor.conf.js"
|
||||
}
|
||||
},
|
||||
"test": {
|
||||
"karma": {
|
||||
"config": "./karma.conf.js"
|
||||
}
|
||||
},
|
||||
"defaults": {
|
||||
"styleExt": "css",
|
||||
"prefixInterfaces": false,
|
||||
"inline": {
|
||||
"style": false,
|
||||
"template": false
|
||||
},
|
||||
"spec": {
|
||||
"class": false,
|
||||
"component": true,
|
||||
"directive": true,
|
||||
"module": false,
|
||||
"pipe": true,
|
||||
"service": true
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"rules": {
|
||||
".read": "auth != null",
|
||||
".write": "auth != null"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import { SitePage } from './app.po';
|
||||
|
||||
describe('site App', function() {
|
||||
let page: SitePage;
|
||||
|
||||
beforeEach(() => {
|
||||
page = new SitePage();
|
||||
});
|
||||
|
||||
it('should display message saying app works', () => {
|
||||
page.navigateTo();
|
||||
expect(page.getParagraphText()).toEqual('app works!');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,11 @@
|
|||
import { browser, element, by } from 'protractor';
|
||||
|
||||
export class SitePage {
|
||||
navigateTo() {
|
||||
return browser.get('/');
|
||||
}
|
||||
|
||||
getParagraphText() {
|
||||
return element(by.css('app-root h1')).getText();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"compileOnSave": false,
|
||||
"compilerOptions": {
|
||||
"declaration": false,
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"module": "commonjs",
|
||||
"moduleResolution": "node",
|
||||
"outDir": "../dist/out-tsc-e2e",
|
||||
"sourceMap": true,
|
||||
"target": "es5",
|
||||
"typeRoots": [
|
||||
"../node_modules/@types"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"database": {
|
||||
"rules": "database.rules.json"
|
||||
},
|
||||
"hosting": {
|
||||
"public": "dist",
|
||||
"rewrites": [
|
||||
{
|
||||
"source": "**",
|
||||
"destination": "/index.html"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
// Karma configuration file, see link for more information
|
||||
// https://karma-runner.github.io/0.13/config/configuration-file.html
|
||||
console.log('karama!!!')
|
||||
module.exports = function (config) {
|
||||
config.set({
|
||||
basePath: '',
|
||||
frameworks: ['jasmine', 'angular-cli'],
|
||||
plugins: [
|
||||
require('karma-jasmine'),
|
||||
require('karma-chrome-launcher'),
|
||||
require('karma-remap-istanbul'),
|
||||
require('angular-cli/plugins/karma')
|
||||
],
|
||||
files: [
|
||||
{ pattern: './src/test.ts', watched: false }
|
||||
],
|
||||
preprocessors: {
|
||||
'./src/test.ts': ['angular-cli']
|
||||
},
|
||||
mime: {
|
||||
'text/x-typescript': ['ts','tsx']
|
||||
},
|
||||
remapIstanbulReporter: {
|
||||
reports: {
|
||||
html: 'coverage',
|
||||
lcovonly: './coverage/coverage.lcov'
|
||||
}
|
||||
},
|
||||
angularCli: {
|
||||
config: './angular-cli.json',
|
||||
environment: 'dev'
|
||||
},
|
||||
reporters: config.angularCli && config.angularCli.codeCoverage
|
||||
? ['progress', 'karma-remap-istanbul']
|
||||
: ['progress'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
logLevel: config.LOG_INFO,
|
||||
autoWatch: true,
|
||||
browsers: ['Chrome'],
|
||||
singleRun: false
|
||||
});
|
||||
};
|
|
@ -1,12 +1,48 @@
|
|||
{
|
||||
"name": "angular.io",
|
||||
"version": "0.0.0",
|
||||
"main": "index.js",
|
||||
"repository": "git@github.com:angular/angular.git",
|
||||
"author": "Angular",
|
||||
"license": "MIT",
|
||||
"dependencies": {},
|
||||
"angular-cli": {},
|
||||
"scripts": {
|
||||
"ng": "ng",
|
||||
"start": "ng serve",
|
||||
"lint": "tslint \"src/**/*.ts\" --project src/tsconfig.json --type-check && tslint \"e2e/**/*.ts\" --project e2e/tsconfig.json --type-check",
|
||||
"test": "ng test",
|
||||
"pree2e": "webdriver-manager update --standalone false --gecko false",
|
||||
"e2e": "protractor"
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/common": "^2.3.1",
|
||||
"@angular/compiler": "^2.3.1",
|
||||
"@angular/core": "^2.3.1",
|
||||
"@angular/forms": "^2.3.1",
|
||||
"@angular/http": "^2.3.1",
|
||||
"@angular/material": "^2.0.0-beta.1",
|
||||
"@angular/platform-browser": "^2.3.1",
|
||||
"@angular/platform-browser-dynamic": "^2.3.1",
|
||||
"@angular/router": "^3.3.1",
|
||||
"core-js": "^2.4.1",
|
||||
"rxjs": "^5.0.1",
|
||||
"ts-helpers": "^1.1.1",
|
||||
"zone.js": "^0.7.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"firebase-tools": "^3.2.1"
|
||||
"@angular/compiler-cli": "^2.3.1",
|
||||
"@types/jasmine": "2.5.38",
|
||||
"@types/node": "^6.0.42",
|
||||
"angular-cli": "1.0.0-beta.26",
|
||||
"codelyzer": "~2.0.0-beta.1",
|
||||
"jasmine-core": "2.5.2",
|
||||
"jasmine-spec-reporter": "2.5.0",
|
||||
"karma": "1.2.0",
|
||||
"karma-chrome-launcher": "^2.0.0",
|
||||
"karma-cli": "^1.0.1",
|
||||
"karma-jasmine": "^1.0.2",
|
||||
"karma-remap-istanbul": "^0.2.1",
|
||||
"protractor": "~4.0.13",
|
||||
"ts-node": "1.2.1",
|
||||
"tslint": "^4.3.0",
|
||||
"typescript": "2.0.10"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
// Protractor configuration file, see link for more information
|
||||
// https://github.com/angular/protractor/blob/master/lib/config.ts
|
||||
|
||||
/*global jasmine */
|
||||
var SpecReporter = require('jasmine-spec-reporter');
|
||||
|
||||
exports.config = {
|
||||
allScriptsTimeout: 11000,
|
||||
specs: [
|
||||
'./e2e/**/*.e2e-spec.ts'
|
||||
],
|
||||
capabilities: {
|
||||
'browserName': 'chrome'
|
||||
},
|
||||
directConnect: true,
|
||||
baseUrl: 'http://localhost:4200/',
|
||||
framework: 'jasmine',
|
||||
jasmineNodeOpts: {
|
||||
showColors: true,
|
||||
defaultTimeoutInterval: 30000,
|
||||
print: function() {}
|
||||
},
|
||||
useAllAngular2AppRoots: true,
|
||||
beforeLaunch: function() {
|
||||
require('ts-node').register({
|
||||
project: 'e2e'
|
||||
});
|
||||
},
|
||||
onPrepare: function() {
|
||||
jasmine.getEnv().addReporter(new SpecReporter());
|
||||
}
|
||||
};
|
|
@ -0,0 +1,7 @@
|
|||
<md-toolbar color="primary" class="app-toolbar">
|
||||
<span>Angular</span>
|
||||
|
||||
</md-toolbar>
|
||||
<section class="app-content">
|
||||
<router-outlet></router-outlet>
|
||||
</section>
|
|
@ -0,0 +1,38 @@
|
|||
// /* tslint:disable:no-unused-variable */
|
||||
|
||||
// import { TestBed, async } from '@angular/core/testing';
|
||||
// import { AppComponent } from './app.component';
|
||||
|
||||
describe('AppComponent', () => {
|
||||
// beforeEach(() => {
|
||||
// TestBed.configureTestingModule({
|
||||
// declarations: [
|
||||
// AppComponent
|
||||
// ],
|
||||
// });
|
||||
// TestBed.compileComponents();
|
||||
// });
|
||||
it('should work', () => {
|
||||
expect(true).toBe(true)
|
||||
})
|
||||
})
|
||||
|
||||
// it('should create the app', async(() => {
|
||||
// const fixture = TestBed.createComponent(AppComponent);
|
||||
// const app = fixture.debugElement.componentInstance;
|
||||
// expect(app).toBeTruthy();
|
||||
// }));
|
||||
|
||||
// it(`should have as title 'app works!'`, async(() => {
|
||||
// const fixture = TestBed.createComponent(AppComponent);
|
||||
// const app = fixture.debugElement.componentInstance;
|
||||
// expect(app.title).toEqual('app works!');
|
||||
// }));
|
||||
|
||||
// it('should render title in a h1 tag', async(() => {
|
||||
// const fixture = TestBed.createComponent(AppComponent);
|
||||
// fixture.detectChanges();
|
||||
// const compiled = fixture.debugElement.nativeElement;
|
||||
// expect(compiled.querySelector('h1').textContent).toContain('app works!');
|
||||
// }));
|
||||
// });
|
|
@ -0,0 +1,10 @@
|
|||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-shell',
|
||||
templateUrl: './app.component.html',
|
||||
styleUrls: ['./app.component.scss']
|
||||
})
|
||||
export class AppComponent {
|
||||
title = 'app works!';
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
import { AppComponent } from './app.component';
|
||||
import { MdToolbarModule } from '@angular/material/toolbar';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
MdToolbarModule.forRoot(),
|
||||
RouterModule.forRoot([
|
||||
{ path: '', loadChildren: './home-page/home-page.module#HomePageModule'}
|
||||
])
|
||||
],
|
||||
providers: [],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
export class AppModule { }
|
|
@ -0,0 +1,3 @@
|
|||
<p>
|
||||
docs-app works!
|
||||
</p>
|
|
@ -0,0 +1,28 @@
|
|||
// /* tslint:disable:no-unused-variable */
|
||||
// import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
// import { By } from '@angular/platform-browser';
|
||||
// import { DebugElement } from '@angular/core';
|
||||
|
||||
// import { DocsAppComponent } from './docs-app.component';
|
||||
|
||||
// describe('DocsAppComponent', () => {
|
||||
// let component: DocsAppComponent;
|
||||
// let fixture: ComponentFixture<DocsAppComponent>;
|
||||
|
||||
// beforeEach(async(() => {
|
||||
// TestBed.configureTestingModule({
|
||||
// declarations: [ DocsAppComponent ]
|
||||
// })
|
||||
// .compileComponents();
|
||||
// }));
|
||||
|
||||
// beforeEach(() => {
|
||||
// fixture = TestBed.createComponent(DocsAppComponent);
|
||||
// component = fixture.componentInstance;
|
||||
// fixture.detectChanges();
|
||||
// });
|
||||
|
||||
// it('should create', () => {
|
||||
// expect(component).toBeTruthy();
|
||||
// });
|
||||
// });
|
|
@ -0,0 +1,15 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'ngio-docs-app',
|
||||
templateUrl: './docs-app.component.html',
|
||||
styleUrls: ['./docs-app.component.css']
|
||||
})
|
||||
export class DocsAppComponent implements OnInit {
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { DocsAppComponent } from './docs-app.component'
|
||||
import { RouterModule } from '@angular/router'
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
RouterModule.forChild([
|
||||
{ path: '', pathMatch: 'full', component: DocsAppComponent}
|
||||
])
|
||||
],
|
||||
declarations: [
|
||||
DocsAppComponent
|
||||
]
|
||||
})
|
||||
export class DocsAppModule {
|
||||
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
<p>
|
||||
home-page works!
|
||||
</p>
|
|
@ -0,0 +1,28 @@
|
|||
// /* tslint:disable:no-unused-variable */
|
||||
// import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
// import { By } from '@angular/platform-browser';
|
||||
// import { DebugElement } from '@angular/core';
|
||||
|
||||
// import { HomePageComponent } from './home-page.component';
|
||||
|
||||
// describe('HomePageComponent', () => {
|
||||
// let component: HomePageComponent;
|
||||
// let fixture: ComponentFixture<HomePageComponent>;
|
||||
|
||||
// beforeEach(async(() => {
|
||||
// TestBed.configureTestingModule({
|
||||
// declarations: [ HomePageComponent ]
|
||||
// })
|
||||
// .compileComponents();
|
||||
// }));
|
||||
|
||||
// beforeEach(() => {
|
||||
// fixture = TestBed.createComponent(HomePageComponent);
|
||||
// component = fixture.componentInstance;
|
||||
// fixture.detectChanges();
|
||||
// });
|
||||
|
||||
// it('should create', () => {
|
||||
// expect(component).toBeTruthy();
|
||||
// });
|
||||
// });
|
|
@ -0,0 +1,15 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-home-page',
|
||||
templateUrl: './home-page.component.html',
|
||||
styleUrls: ['./home-page.component.css']
|
||||
})
|
||||
export class HomePageComponent implements OnInit {
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { HomePageComponent } from './home-page.component';
|
||||
import { RouterModule } from '@angular/router'
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: HomePageComponent }
|
||||
])
|
||||
],
|
||||
declarations: [HomePageComponent]
|
||||
})
|
||||
export class HomePageModule { }
|
|
@ -0,0 +1,239 @@
|
|||
<header class="hero background-sky"><h1 class="hero-title is-standard-case">DatePipe</h1><span
|
||||
class="badge is-stable">Stable</span>
|
||||
<div class="clear"></div>
|
||||
<h2 class="hero-subtitle">Pipe</h2></header>
|
||||
<article class="l-content-small grid-fluid docs-content">
|
||||
<div layout="row" layout-xs="column" class="row-margin">
|
||||
<div flex="20" flex-xs="100"><h2 class="h2-api-docs">What it does</h2></div>
|
||||
<div flex="80" flex-xs="100"><p>Formats a date according to locale rules.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div layout="row" layout-xs="column" class="row-margin">
|
||||
<div flex="20" flex-xs="100"><h2 class="h2-api-docs">How to use</h2></div>
|
||||
<div flex="80" flex-xs="100"><p><code>date_expression | date[:format]</code></p>
|
||||
</div>
|
||||
</div>
|
||||
<div layout="row" layout-xs="column" class="row-margin">
|
||||
<div flex="20" flex-xs="100"><h2 class="h2-api-docs">NgModule</h2></div>
|
||||
<div flex="80" flex-xs="100" class="code-links">CommonModule
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div layout="row" layout-xs="column" class="row-margin">
|
||||
<div flex="20" flex-xs="100"><h2 class="h2-api-docs">Description</h2></div>
|
||||
<div flex="80" flex-xs="100" class="code-links"><p>Where:</p>
|
||||
<ul>
|
||||
<li><code>expression</code> is a date object or a number (milliseconds since UTC epoch) or
|
||||
an ISO string
|
||||
(<a href="https://www.w3.org/TR/NOTE-datetime">https://www.w3.org/TR/NOTE-datetime</a>).
|
||||
</li>
|
||||
<li><code>format</code> indicates which date/time components to include. The format can be
|
||||
predifined as
|
||||
shown below or custom as shown in the table.
|
||||
<ul>
|
||||
<li><code>'medium'</code>: equivalent to <code>'yMMMdjms'</code> (e.g.
|
||||
<code>Sep 3, 2010, 12:05:08 PM</code> for <code>en-US</code>)
|
||||
</li>
|
||||
<li><code>'short'</code>: equivalent to <code>'yMdjm'</code> (e.g.
|
||||
<code>9/3/2010, 12:05 PM</code> for <code>en-US</code>)
|
||||
</li>
|
||||
<li><code>'fullDate'</code>: equivalent to <code>'yMMMMEEEEd'</code>
|
||||
(e.g. <code>Friday, September 3, 2010</code> for <code>en-US</code>)
|
||||
</li>
|
||||
<li><code>'longDate'</code>: equivalent to <code>'yMMMMd'</code> (e.g.
|
||||
<code>September 3, 2010</code> for <code>en-US</code>)
|
||||
</li>
|
||||
<li><code>'mediumDate'</code>: equivalent to <code>'yMMMd'</code> (e.g.
|
||||
<code>Sep 3, 2010</code> for <code>en-US</code>)
|
||||
</li>
|
||||
<li><code>'shortDate'</code>: equivalent to <code>'yMd'</code> (e.g.
|
||||
<code>9/3/2010</code> for <code>en-US</code>)
|
||||
</li>
|
||||
<li><code>'mediumTime'</code>: equivalent to <code>'jms'</code> (e.g.
|
||||
<code>12:05:08 PM</code> for <code>en-US</code>)
|
||||
</li>
|
||||
<li><code>'shortTime'</code>: equivalent to <code>'jm'</code> (e.g.
|
||||
<code>12:05 PM</code> for <code>en-US</code>)
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Component</th>
|
||||
<th style="text-align:center">Symbol</th>
|
||||
<th>Narrow</th>
|
||||
<th>Short Form</th>
|
||||
<th>Long Form</th>
|
||||
<th>Numeric</th>
|
||||
<th>2-digit</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>era</td>
|
||||
<td style="text-align:center">G</td>
|
||||
<td>G (A)</td>
|
||||
<td>GGG (AD)</td>
|
||||
<td>GGGG (Anno Domini)</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>year</td>
|
||||
<td style="text-align:center">y</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>y (2015)</td>
|
||||
<td>yy (15)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>month</td>
|
||||
<td style="text-align:center">M</td>
|
||||
<td>L (S)</td>
|
||||
<td>MMM (Sep)</td>
|
||||
<td>MMMM (September)</td>
|
||||
<td>M (9)</td>
|
||||
<td>MM (09)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>day</td>
|
||||
<td style="text-align:center">d</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>d (3)</td>
|
||||
<td>dd (03)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>weekday</td>
|
||||
<td style="text-align:center">E</td>
|
||||
<td>E (S)</td>
|
||||
<td>EEE (Sun)</td>
|
||||
<td>EEEE (Sunday)</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>hour</td>
|
||||
<td style="text-align:center">j</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>j (13)</td>
|
||||
<td>jj (13)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>hour12</td>
|
||||
<td style="text-align:center">h</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>h (1 PM)</td>
|
||||
<td>hh (01 PM)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>hour24</td>
|
||||
<td style="text-align:center">H</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>H (13)</td>
|
||||
<td>HH (13)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>minute</td>
|
||||
<td style="text-align:center">m</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>m (5)</td>
|
||||
<td>mm (05)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>second</td>
|
||||
<td style="text-align:center">s</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>s (9)</td>
|
||||
<td>ss (09)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>timezone</td>
|
||||
<td style="text-align:center">z</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>z (Pacific Standard Time)</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>timezone</td>
|
||||
<td style="text-align:center">Z</td>
|
||||
<td>-</td>
|
||||
<td>Z (GMT-8:00)</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>timezone</td>
|
||||
<td style="text-align:center">a</td>
|
||||
<td>-</td>
|
||||
<td>a (PM)</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>In javascript, only the components specified will be respected (not the ordering,
|
||||
punctuations, ...) and details of the formatting will be dependent on the locale.</p>
|
||||
<p>Timezone of the formatted text will be the local system timezone of the end-user's
|
||||
machine.</p>
|
||||
<p>WARNINGS:</p>
|
||||
<ul>
|
||||
<li>this pipe is marked as pure hence it will not be re-evaluated when the input is mutated.
|
||||
Instead users should treat the date as an immutable object and change the reference when
|
||||
the
|
||||
pipe needs to re-run (this is to avoid reformatting the date on every change detection run
|
||||
which would be an expensive operation).
|
||||
</li>
|
||||
<li>this pipe uses the Internationalization API. Therefore it is only reliable in Chrome and
|
||||
Opera
|
||||
browsers.
|
||||
</li>
|
||||
</ul>
|
||||
<h3 id="examples">Examples</h3>
|
||||
<p>Assuming <code>dateObj</code> is (year: 2015, month: 6, day: 15, hour: 21, minute: 43,
|
||||
second: 11)
|
||||
in the <em>local</em> time and locale is 'en-US':</p>
|
||||
<code-example format="linenums" language="js">{{ dateObj | date }} // output is 'Jun 15,
|
||||
2015'
|
||||
{{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'
|
||||
{{ dateObj | date:'shortTime' }} // output is '9:43 PM'
|
||||
{{ dateObj | date:'mmss' }} // output is '43:11'
|
||||
</code-example>
|
||||
<div class="code-example">
|
||||
<code-example language="ts" format="linenums">@Component({
|
||||
selector: 'date-pipe',
|
||||
template: `<div>
|
||||
<p>Today is {{today | date}}</p>
|
||||
<p>Or if you prefer, {{today | date:'fullDate'}}</p>
|
||||
<p>The time is {{today | date:'jmZ'}}</p>
|
||||
</div>`
|
||||
})
|
||||
export class DatePipeComponent {
|
||||
today: number = Date.now();
|
||||
}
|
||||
</code-example>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="location-badge">exported from <a href="index.html">@angular/common/index</a>
|
||||
defined in <a
|
||||
href="https://github.com/angular/angular/tree/2.2.0-beta.1/modules/@angular/common/src/pipes/date_pipe.ts#L12-L116">@angular/common/src/pipes/date_pipe.ts</a>
|
||||
</p></article>
|
|
@ -0,0 +1,7 @@
|
|||
<br><br>
|
||||
TODO: api index doc
|
||||
<br><br>
|
||||
In the meantime visit our awesome <a href="docs/api/common/date-pipe">DatePipe API page</a>.
|
||||
<br><br>
|
||||
<br><br>
|
||||
<br><br>
|
|
@ -0,0 +1 @@
|
|||
TODO: guide overview doc
|
|
@ -0,0 +1,7 @@
|
|||
<br><br>
|
||||
TODO: docs index doc
|
||||
<br><br>
|
||||
<a href="docs/api/">API index page</a>
|
||||
<br><br>
|
||||
<br><br>
|
||||
<br><br>
|
|
@ -0,0 +1,38 @@
|
|||
<header class="hero background-sky"><h1 class="hero-title ">Events</h1>
|
||||
<div class="clear"></div>
|
||||
<h2 class="hero-subtitle">Where we'll be presenting</h2>
|
||||
</header>
|
||||
<article class="l-content ">
|
||||
<table class="is-full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Event</th>
|
||||
<th>Location</th>
|
||||
<th>Date</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody><!-- Devoxx Belgium -->
|
||||
<tr>
|
||||
<th><a target="_blank" href="https://www.devoxx.be/">Devoxx Belgium</a></th>
|
||||
<td>Antwerp, Belgium</td>
|
||||
<td>Nov. 7-11, 2016</td>
|
||||
</tr><!-- DEVIntersection -->
|
||||
<tr>
|
||||
<th><a target="_blank" href="https://www.devintersectioneurope.com/">DEVintersection
|
||||
Europe</a></th>
|
||||
<td>Amsterdam, Netherlands</td>
|
||||
<td>Nov 14-16, 2016</td>
|
||||
</tr><!-- dotJS -->
|
||||
<tr>
|
||||
<th><a target="_blank" href="http://www.dotjs.io/">dotJS</a></th>
|
||||
<td>Paris, France</td>
|
||||
<td>Dec. 5, 2016</td>
|
||||
</tr><!-- NG-BE -->
|
||||
<tr>
|
||||
<th><a target="_blank" href="https://ng-be.org/">NG-BE</a></th>
|
||||
<td>Ghent, Belgium</td>
|
||||
<td>Dec. 9, 2016</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</article>
|
|
@ -0,0 +1,64 @@
|
|||
<header class="hero background-sky"><h1 class="hero-title ">Features & Benefits</h1>
|
||||
<div class="clear"></div>
|
||||
</header>
|
||||
<article class="l-content ">
|
||||
<div>
|
||||
<div><h2 class="text-headline">Cross Platform</h2>
|
||||
<div class="feature-row">
|
||||
<div class="feature"><h3>Progressive web apps</h3>
|
||||
<p class="text-body">Use modern web platform capabilities to deliver app-like experiences.
|
||||
High performance, offline, and zero-step installation.</p></div>
|
||||
<div class="feature"><h3>Native</h3>
|
||||
<p class="text-body">Build native mobile apps with strategies from Ionic Framework,
|
||||
NativeScript, and React Native.</p></div>
|
||||
<div class="feature"><h3>Desktop</h3>
|
||||
<p class="text-body">Create desktop-installed apps across Mac, Windows, and Linux using
|
||||
the same Angular methods you've learned for the web plus the ability to access native OS
|
||||
APIs.</p></div>
|
||||
</div>
|
||||
<h2 class="text-headline">Speed and Performance</h2>
|
||||
<div class="feature-row">
|
||||
<div class="feature"><h3>Code generation</h3>
|
||||
<p class="text-body">Angular turns your templates into code that's highly optimized for
|
||||
today's JavaScript virtual machines, giving you all the benefits of hand-written code
|
||||
with the productivity of a framework.</p></div>
|
||||
<div class="feature"><h3>Universal</h3>
|
||||
<p class="text-body">Serve the first view of your application on node.js, .NET, PHP, and
|
||||
other servers for near-instant rendering in just HTML and CSS. Also paves the way for
|
||||
sites that optimize for SEO.</p></div>
|
||||
<div class="feature"><h3>Code splitting</h3>
|
||||
<p class="text-body">Angular apps load quickly with the new Component Router, which
|
||||
delivers automatic code-splitting so users only load code required to render the view
|
||||
they request.</p></div>
|
||||
</div>
|
||||
<h2 class="text-headline">Productivity</h2>
|
||||
<div class="feature-row">
|
||||
<div class="feature"><h3>Templates</h3>
|
||||
<p class="text-body">Quickly create UI views with simple and powerful template syntax.</p>
|
||||
</div>
|
||||
<div class="feature"><h3>Angular CLI</h3>
|
||||
<p class="text-body">Command line tools: start building fast, add components and tests,
|
||||
then instantly deploy.</p></div>
|
||||
<div class="feature"><h3>IDEs</h3>
|
||||
<p class="text-body">Get intelligent code completion, instant errors, and other feedback
|
||||
in popular editors and IDEs.</p></div>
|
||||
</div>
|
||||
<h2 class="text-headline">Full Development Story</h2>
|
||||
<div class="feature-row">
|
||||
<div class="feature"><h3>Testing</h3>
|
||||
<p class="text-body">With Karma for unit tests, you can know if you've broken things every
|
||||
time you save. And Protractor makes your scenario tests run faster and in a stable
|
||||
manner.</p></div>
|
||||
<div class="feature"><h3>Animation</h3>
|
||||
<p class="text-body">Create high-performance, complex choreographies and animation
|
||||
timelines with very little code through Angular's intuitive API.</p></div>
|
||||
<div class="feature"><h3>Accessibility</h3>
|
||||
<p class="text-body">Create accessible applications with ARIA-enabled components,
|
||||
developer guides, and built-in a11y test infrastructure.</p></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cta-bar"><a href="/docs/ts/latest/quickstart.html" md-button="md-button"
|
||||
class="button button-large button-shield md-raised md-primary">Get
|
||||
Started</a></div>
|
||||
</article>
|
|
@ -0,0 +1,72 @@
|
|||
<header class="background-sky l-relative">
|
||||
<div class="hero background-superhero-paper is-large"><img
|
||||
src="assets/images/logos/angular2/angular.svg" class="hero-logo"/>
|
||||
<h1 class="text-headline">One framework.<br>Mobile & desktop.</h1><a
|
||||
href="/docs/ts/latest/quickstart.html" md-button="md-button"
|
||||
class="hero-cta md-raised button button-large button-plain">Get Started</a></div>
|
||||
<announcement-bar class="announcement-bar">
|
||||
<div class="announcement-bar-slide cleafix is-visible"><img
|
||||
src="assets/images/logos/anglebrackets/devintersection.png" width="64"/>
|
||||
<p>Join us for <strong>DEVintersection Amsterdam</strong> Nov 14-16!</p><a
|
||||
href="https://www.devintersectioneurope.com/#!/" target="_blank" class="button md-button">Register
|
||||
now</a></div>
|
||||
</announcement-bar>
|
||||
</header>
|
||||
<article class="l-content ">
|
||||
<div class="home-rows"><!-- Group 1-->
|
||||
<div layout="row" layout-xs="column" class="home-row">
|
||||
<div class="promo-img-container promo-1">
|
||||
<div><img src="assets/images/home/responsive-framework.svg"></div>
|
||||
</div>
|
||||
<div class="text-container">
|
||||
<div class="text-block promo-1-desc l-pad-top-2"><h3 class="text-headline">Develop Across
|
||||
All Platforms</h3>
|
||||
<p class="text-body">Learn one way to build applications with Angular and reuse your code
|
||||
and abilities to build apps for any deployment target. For web, mobile web, native
|
||||
mobile and native desktop.
|
||||
</p></div>
|
||||
</div>
|
||||
</div><!-- Group 2-->
|
||||
<div layout="row" layout-xs="column" class="home-row">
|
||||
<div class="text-container">
|
||||
<div class="text-block"><h3 class="text-headline">Speed & Performance</h3>
|
||||
<p class="text-body">Achieve the maximum speed possible on the Web Platform today, and
|
||||
take it further, via Web Workers and server-side rendering.</p>
|
||||
<p class="text-body">Angular puts you in control over scalability. Meet huge data
|
||||
requirements by building data models on RxJS, Immutable.js or another push-model.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="promo-img-container promo-2">
|
||||
<div><img src="assets/images/home/speed-performance.svg"></div>
|
||||
</div>
|
||||
</div><!-- Group 3-->
|
||||
<div layout="row" layout-xs="column" class="home-row">
|
||||
<div class="promo-img-container promo-3">
|
||||
<div><img src="assets/images/home/joyful-development.png"></div>
|
||||
</div>
|
||||
<div class="text-container">
|
||||
<div class="text-block promo-3-desc"><h3 class="text-headline">Incredible Tooling</h3>
|
||||
<p class="text-body">Build features quickly with simple, declarative templates. Extend the
|
||||
template language with your own components and use a wide array of existing components.
|
||||
Get immediate Angular-specific help and feedback with nearly every IDE and editor. All
|
||||
this comes together so you can focus on building amazing apps rather than trying to make
|
||||
the code work.
|
||||
</p></div>
|
||||
</div>
|
||||
</div><!-- Group 4-->
|
||||
<div layout="row" layout-xs="column" class="home-row">
|
||||
<div class="text-container">
|
||||
<div class="text-block l-pad-top-2"><h3 class="text-headline">Loved by Millions</h3>
|
||||
<p class="text-body">From prototype through global deployment, Angular delivers the
|
||||
productivity and scalable infrastructure that supports Google's largest
|
||||
applications.</p></div>
|
||||
</div>
|
||||
<div class="promo-img-container promo-4">
|
||||
<div><img src="assets/images/home/loved-by-millions.png"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cta-bar"><a href="/docs/ts/latest/quickstart.html" md-button="md-button"
|
||||
class="button button-large button-shield md-raised md-primary">Get
|
||||
Started</a></div>
|
||||
</div>
|
||||
</article>
|
|
@ -0,0 +1,115 @@
|
|||
<header class="hero background-sky"><h1 class="hero-title ">News</h1>
|
||||
<div class="clear"></div>
|
||||
</header>
|
||||
<article class="l-content ">
|
||||
<div class="grid-fluid l-space-bottom-2">
|
||||
<div class="c12 text-center"><h3 class="text-headline text-uppercase"> Core Team</h3></div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="grid-fluid">
|
||||
<div class="c6">
|
||||
<div class="article-card">
|
||||
<div class="date">Oct 12, 2016</div>
|
||||
<div class="title"><a target="_blank"
|
||||
href="http://angularjs.blogspot.com/2016/10/angular-210-now-available.html">Angular
|
||||
2.1.0 Now Available</a></div>
|
||||
<p>Angular version 2.1.0 - incremental-metamorphosis - is a minor release following our
|
||||
announced adoption of Semantic Versioning...</p>
|
||||
<div class="author"><img src="assets/images/bios/stephenfluin.jpg">
|
||||
<div class="posted">Posted by <b>Stephen Fluin</b></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="c6">
|
||||
<div class="article-card">
|
||||
<div class="date">Oct 7, 2016</div>
|
||||
<div class="title"><a target="_blank"
|
||||
href="http://angularjs.blogspot.com/2016/10/versioning-and-releasing-angular.html">Versioning
|
||||
and Releasing Angular</a></div>
|
||||
<p>In order for the ecosystem around Angular to thrive, developers need stability from the
|
||||
Angular framework so that reusable components and libraries, tools and learned practices
|
||||
don’t go obsolete unexpectedly...</p>
|
||||
<div class="author"><img src="assets/images/bios/igor-minar.jpg">
|
||||
<div class="posted">Posted by <b>Igor Minar</b></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-fluid l-space-bottom-2 l-space-top-4">
|
||||
<div class="c12 text-center"><h3 class="text-headline text-uppercase"> Developer Community</h3>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="grid-fluid">
|
||||
<div class="c6">
|
||||
<div class="article-card">
|
||||
<div class="date">Oct 30, 2016</div>
|
||||
<div class="title"><a target="_blank"
|
||||
href="https://www.thepolyglotdeveloper.com/2016/10/use-pre-populated-sqlite-database-nativescript-angular-2/">Use
|
||||
A Pre-Populated SQLite Database With NativeScript And Angular 2</a></div>
|
||||
<p>I figured it would be a good idea to demonstrate how to ship a NativeScript Angular 2
|
||||
application with a pre-filled SQLite database rather than populating it on-the-fly....</p>
|
||||
<div class="author"><img src="assets/images/bios/shield-bio-placeholder.png">
|
||||
<div class="posted">Posted by <b>Nic Raboy</b></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="c6">
|
||||
<div class="article-card">
|
||||
<div class="date">Oct 13, 2016</div>
|
||||
<div class="title"><a target="_blank"
|
||||
href="http://blog.thoughtram.io/angular/2016/10/13/two-way-data-binding-in-angular-2.html">Two-way
|
||||
Data Binding in Angular 2</a></div>
|
||||
<p>If there was one feature in Angular that made us go “Wow”, then it was probably its
|
||||
two-way data binding system. Changes in the application state have been automagically
|
||||
reflected into the view...</p>
|
||||
<div class="author"><img src="assets/images/bios/angular-gde-bio-placeholder.png">
|
||||
<div class="posted">Posted by <b>Pascal Precht</b></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-fluid">
|
||||
<div class="c6">
|
||||
<div class="article-card">
|
||||
<div class="date">Oct 10, 2016</div>
|
||||
<div class="title"><a target="_blank"
|
||||
href="http://www.creativebloq.com/how-to/build-a-material-design-app-with-angular-2">Build
|
||||
a Material Design app with Angular 2</a></div>
|
||||
<p>This walkthrough reveals how to create a DialogComponent and to-do app with Angular
|
||||
Material and the Angular CLI...</p>
|
||||
<div class="author"><img src="assets/images/bios/shield-bio-placeholder.png">
|
||||
<div class="posted">Posted by <b>Daniel Zen</b></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="c6">
|
||||
<div class="article-card">
|
||||
<div class="date">Sept 30, 2016</div>
|
||||
<div class="title"><a target="_blank"
|
||||
href="http://www.simb.co/angular-cli-using-docker/?platform=hootsuite">Using
|
||||
Angular CLI to create Angular 2 applications in Docker</a></div>
|
||||
<p>Angular CLI is a great tool for developing Angular 2 applications. I thought it would be
|
||||
fun to do a quick demo...</p>
|
||||
<div class="author"><img src="assets/images/bios/shield-bio-placeholder.png">
|
||||
<div class="posted">Posted by <b>Simeon Bateman</b></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-fluid l-space-bottom-2 l-space-top-4">
|
||||
<div class="c12 text-center"><h3 class="text-headline text-uppercase">Twitter</h3></div>
|
||||
<div class="clear"></div>
|
||||
<div class="grid-fluid">
|
||||
<div class="c3"><p></p></div>
|
||||
<div class="c6">
|
||||
<div class="article-card">
|
||||
<div class="title"><a href="http://twitter.com/angularjs" data-show-count="false"
|
||||
class="twitter-follow-button">Follow @angularjs</a></div>
|
||||
<p><a class="twitter-timeline" data-chrome="nofooter noborders noheader"
|
||||
href="http://twitter.com/angularjs" data-widget-id="700150278465523713"></a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 119 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 8.2 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 7.9 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 9.9 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 36 KiB |