novo-elements
Version:
Bullhorn's NOVO Element Repository for Angular 2
105 lines (102 loc) • 4.71 kB
text/typescript
// NG2
import { Component, Input } from '@angular/core';
@Component({
selector: 'novo-loading',
host: {
'[class]': 'theme || ""'
},
template: `
<span class="dot"></span>
<span class="dot"></span>
<span class="dot"></span>
<span class="dot"></span>
<span class="dot"></span>
`
})
export class NovoLoadingElement {
@Input() theme: string;
}
@Component({
selector: 'novo-spinner',
template: `
<svg class="bullhornSpinner" [ngClass]="theme" height="100" width="100" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" [attr.inverse]="inverse">
<title>Bullhorn Spinner Animation</title>
<desc>Spinner animation indicating loading</desc>
<defs>
<style>
.bullhornSpinner g.circleGroup {
-webkit-filter: url("{{baseHref || ''}}#gooEffect");
filter: url("{{baseHref || ''}}#gooEffect");
}
_:-webkit-full-screen:not(:root:root), .bullhornSpinner g.circleGroup {
-webkit-filter: none;
filter: none;
}
@supports (-webkit-text-size-adjust:none) and (not (-ms-accelerator:true)) and (not (-moz-appearance:none)) {
.bullhornSpinner g.circleGroup {
-webkit-filter: none;
filter: none;
}
}
@supports (-webkit-text-size-adjust:none) and (not (-ms-accelerator:true)) and (not (-moz-appearance:none)) {
.bullhornSpinner g.circleGroup {
-webkit-filter: none;
filter: none;
}
}
</style>
<filter id="gooEffect">
<feGaussianBlur in="SourceGraphic" stdDeviation="5" result="blur" />
<feColorMatrix in="blur" mode="matrix" values="
1.3 0 0 0 0
0 1.3 0 0 0
0 0 1.3 0 0
0 0 0 19 -7" result="gooEffect" />
<feComposite in="SourceGraphic" in2="gooEffect" operator="atop" />
</filter>
</defs>
<path d="M 43 43 L 54 45 L 80 40 L 43 43" stroke="none" fill="none" id="firstLinePath"/>
<path d="M 43 43 L 48 41 L 48 18 L 43 43" stroke="none" fill="none" id="secondLinePath"/>
<path d="M 43 43 L 42 45 L 15 40 L 43 43" stroke="none" fill="none" id="thirdLinePath"/>
<path d="M 43 43 L 44 52 L 29 78 L 43 43" stroke="none" fill="none" id="fourthLinePath"/>
<path d="M 43 43 L 52 52 L 68 78 L 43 43" stroke="none" fill="none" id="fifthLinePath"/>
<g class="circleGroup" transform="translate(7, 7)">
<circle r="6" cx="0" cy="0">
<!-- Define the motion path animation -->
<animateMotion dur="3.4" repeatCount="indefinite">
<mpath xlink:href="#firstLinePath"/>
</animateMotion>
</circle>
<circle r="6" cx="0" cy="0">
<!-- Define the motion path animation -->
<animateMotion dur="3.4" repeatCount="indefinite">
<mpath xlink:href="#secondLinePath"/>
</animateMotion>
</circle>
<circle r="6" cx="0" cy="0">
<!-- Define the motion path animation -->
<animateMotion dur="3.4" repeatCount="indefinite">
<mpath xlink:href="#thirdLinePath"/>
</animateMotion>
</circle>
<circle r="6" cx="0" cy="0">
<!-- Define the motion path animation -->
<animateMotion dur="3.4" repeatCount="indefinite">
<mpath xlink:href="#fourthLinePath"/>
</animateMotion>
</circle>
<circle r="6" cx="0" cy="0">
<!-- Define the motion path animation -->
<animateMotion dur="3.4" repeatCount="indefinite">
<mpath xlink:href="#fifthLinePath"/>
</animateMotion>
</circle>
</g>
</svg>
`
})
export class NovoSpinnerElement {
@Input() theme: string;
@Input() inverse: boolean;
@Input() baseHref: string;
}