98 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
(function(app) {
 | 
						|
 | 
						|
// #docregion
 | 
						|
app.HeroHostComponent = HeroHostComponent;
 | 
						|
 | 
						|
HeroHostComponent.annotations = [
 | 
						|
  new ng.core.Component({
 | 
						|
    selector: 'hero-host',
 | 
						|
    template:
 | 
						|
      '<h1 [class.active]="active">Hero Host</h1>' +
 | 
						|
      '<div>Heading clicks: {{clicks}}</div>',
 | 
						|
    host: {
 | 
						|
      // HostBindings to the <hero-host> element
 | 
						|
      '[title]': 'title',
 | 
						|
      '[class.heading]': 'headingClass',
 | 
						|
      '(click)': 'clicked()',
 | 
						|
 | 
						|
      // HostListeners on the entire <hero-host> element
 | 
						|
      '(mouseenter)': 'enter($event)',
 | 
						|
      '(mouseleave)': 'leave($event)'
 | 
						|
    },
 | 
						|
    // Styles within (but excluding) the <hero-host> element
 | 
						|
    styles: ['.active {background-color: yellow;}']
 | 
						|
  })
 | 
						|
];
 | 
						|
 | 
						|
function HeroHostComponent() {
 | 
						|
  this.clicks = 0;
 | 
						|
  this.headingClass = true;
 | 
						|
  this.title = 'Hero Host Tooltip content';
 | 
						|
}
 | 
						|
 | 
						|
HeroHostComponent.prototype.clicked = function() {
 | 
						|
  this.clicks += 1;
 | 
						|
}
 | 
						|
 | 
						|
HeroHostComponent.prototype.enter = function(event) {
 | 
						|
  this.active = true;
 | 
						|
  this.headingClass = false;
 | 
						|
}
 | 
						|
 | 
						|
HeroHostComponent.prototype.leave = function(event) {
 | 
						|
  this.active = false;
 | 
						|
  this.headingClass = true;
 | 
						|
}
 | 
						|
// #enddocregion
 | 
						|
 | 
						|
})(window.app = window.app || {});
 | 
						|
 | 
						|
//// DSL Version ////
 | 
						|
 | 
						|
(function(app) {
 | 
						|
 | 
						|
// #docregion dsl
 | 
						|
app.HeroHostDslComponent = ng.core.Component({
 | 
						|
  selector: 'hero-host-dsl',
 | 
						|
  template: `
 | 
						|
    <h1 [class.active]="active">Hero Host (DSL)</h1>
 | 
						|
    <div>Heading clicks: {{clicks}}</div>
 | 
						|
  `,
 | 
						|
  host: {
 | 
						|
    // HostBindings to the <hero-host-dsl> element
 | 
						|
    '[title]': 'title',
 | 
						|
    '[class.heading]': 'headingClass',
 | 
						|
    '(click)': 'clicked()',
 | 
						|
 | 
						|
    // HostListeners on the entire <hero-host-dsl> element
 | 
						|
    '(mouseenter)': 'enter($event)',
 | 
						|
    '(mouseleave)': 'leave($event)'
 | 
						|
  },
 | 
						|
  // Styles within (but excluding) the <hero-host-dsl> element
 | 
						|
  styles: ['.active {background-color: coral;}']
 | 
						|
})
 | 
						|
.Class({
 | 
						|
  constructor: function HeroHostDslComponent() {
 | 
						|
    this.clicks = 0;
 | 
						|
    this.headingClass = true;
 | 
						|
    this.title = 'Hero Host Tooltip DSL content';
 | 
						|
  },
 | 
						|
 | 
						|
  clicked() {
 | 
						|
    this.clicks += 1;
 | 
						|
  },
 | 
						|
 | 
						|
  enter(event) {
 | 
						|
    this.active = true;
 | 
						|
    this.headingClass = false;
 | 
						|
  },
 | 
						|
 | 
						|
  leave(event) {
 | 
						|
    this.active = false;
 | 
						|
    this.headingClass = true;
 | 
						|
  }
 | 
						|
});
 | 
						|
// #enddocregion dsl
 | 
						|
 | 
						|
})(window.app = window.app || {});
 |