144 lines
3.8 KiB
TypeScript
Raw Normal View History

import {CONST, Type} from 'angular2/src/core/facade/lang';
/**
* Defines template and style encapsulation options available for Component's {@link View}.
*
* See {@link ViewMetadata#encapsulation}.
*/
export enum ViewEncapsulation {
/**
* Emulate `Native` scoping of styles by adding an attribute containing surrogate id to the Host
* Element and pre-processing the style rules provided via
* {@link ViewMetadata#styles} or {@link ViewMetadata#stylesUrls}, and adding the new Host Element
* attribute to all selectors.
*
* This is the default option.
*/
Emulated,
/**
* Use the native encapsulation mechanism of the renderer.
*
* For the DOM this means using [Shadow DOM](https://w3c.github.io/webcomponents/spec/shadow/) and
* creating a ShadowRoot for Component's Host Element.
*/
Native,
/**
* Don't provide any template or style encapsulation.
*/
None
}
export var VIEW_ENCAPSULATION_VALUES =
[ViewEncapsulation.Emulated, ViewEncapsulation.Native, ViewEncapsulation.None];
/**
* Metadata properties available for configuring Views.
2015-03-30 17:19:27 -07:00
*
* Each Angular component requires a single `@Component` and at least one `@View` annotation. The
* `@View` annotation specifies the HTML template to use, and lists the directives that are active
* within the template.
2015-03-30 17:19:27 -07:00
*
2015-05-20 09:48:15 -07:00
* When a component is instantiated, the template is loaded into the component's shadow root, and
* the expressions and statements in the template are evaluated against the component.
2015-03-30 17:19:27 -07:00
*
* For details on the `@Component` annotation, see {@link ComponentMetadata}.
2015-03-30 17:19:27 -07:00
*
* ## Example
*
* ```
* @Component({
* selector: 'greet',
2015-04-10 11:15:01 -07:00
* template: 'Hello {{name}}!',
* directives: [GreetUser, Bold]
2015-03-30 17:19:27 -07:00
* })
* class Greet {
* name: string;
*
* constructor() {
* this.name = 'World';
* }
* }
* ```
*/
2015-05-20 09:48:15 -07:00
@CONST()
export class ViewMetadata {
2015-07-07 22:09:19 +02:00
/**
* Specifies a template URL for an Angular component.
2015-07-07 22:09:19 +02:00
*
* NOTE: Only one of `templateUrl` or `template` can be defined per View.
*
* <!-- TODO: what's the url relative to? -->
2015-07-07 22:09:19 +02:00
*/
templateUrl: string;
2015-04-15 22:35:38 +00:00
/**
* Specifies an inline template for an Angular component.
2015-04-15 22:35:38 +00:00
*
* NOTE: Only one of `templateUrl` or `template` can be defined per View.
2015-04-15 22:35:38 +00:00
*/
2015-07-07 22:09:19 +02:00
template: string;
2015-04-15 22:35:38 +00:00
/**
* Specifies stylesheet URLs for an Angular component.
*
* <!-- TODO: what's the url relative to? -->
2015-04-15 22:35:38 +00:00
*/
styleUrls: string[];
2015-07-07 22:09:19 +02:00
/**
* Specifies an inline stylesheet for an Angular component.
2015-07-07 22:09:19 +02:00
*/
styles: string[];
2015-04-15 22:35:38 +00:00
/**
* Specifies a list of directives that can be used within a template.
2015-04-15 22:35:38 +00:00
*
* Directives must be listed explicitly to provide proper component encapsulation.
*
* ## Example
*
* ```javascript
* @Component({
* selector: 'my-component',
* directives: [NgFor]
2015-04-15 22:35:38 +00:00
* template: '
* <ul>
2015-05-13 11:30:59 +02:00
* <li *ng-for="#item of items">{{item}}</li>
2015-04-15 22:35:38 +00:00
* </ul>'
* })
* class MyComponent {
* }
* ```
*/
2015-10-08 09:57:10 -07:00
directives: Array<Type | any[]>;
2015-04-15 22:35:38 +00:00
pipes: Array<Type | any[]>;
2015-04-20 11:34:53 -07:00
/**
* Specify how the template and the styles should be encapsulated.
* The default is {@link ViewEncapsulation#Emulated `ViewEncapsulation.Emulated`} if the view
* has styles,
* otherwise {@link ViewEncapsulation#None `ViewEncapsulation.None`}.
2015-04-20 11:34:53 -07:00
*/
encapsulation: ViewEncapsulation;
constructor({templateUrl, template, directives, pipes, encapsulation, styles, styleUrls}: {
2015-07-07 22:09:19 +02:00
templateUrl?: string,
template?: string,
directives?: Array<Type | any[]>,
pipes?: Array<Type | any[]>,
encapsulation?: ViewEncapsulation,
styles?: string[],
styleUrls?: string[],
2015-07-07 22:09:19 +02:00
} = {}) {
this.templateUrl = templateUrl;
this.template = template;
this.styleUrls = styleUrls;
this.styles = styles;
this.directives = directives;
this.pipes = pipes;
this.encapsulation = encapsulation;
2015-07-07 22:09:19 +02:00
}
}