rhodecode-toggle.js
57 lines
| 1.7 KiB
| application/javascript
|
JavascriptLexer
r3173 | import {PolymerElement, html} from '@polymer/polymer/polymer-element.js'; | |||
import '@polymer/paper-toggle-button/paper-toggle-button.js'; | ||||
import '@polymer/paper-spinner/paper-spinner.js'; | ||||
import '@polymer/paper-tooltip/paper-tooltip.js'; | ||||
export class RhodecodeToggle extends PolymerElement { | ||||
static get is() { | ||||
return 'rhodecode-toggle'; | ||||
} | ||||
static get template() { | ||||
return html` | ||||
<style include="shared-styles"> | ||||
.rc-toggle { | ||||
float: left; | ||||
position: relative; | ||||
} | ||||
.rc-toggle paper-spinner { | ||||
position: absolute; | ||||
top: 0; | ||||
left: -30px; | ||||
width: 20px; | ||||
height: 20px; | ||||
} | ||||
</style> | ||||
<div class="rc-toggle"> | ||||
<paper-toggle-button checked={{checked}}>[[labelStatus(checked)]] | ||||
</paper-toggle-button> | ||||
<paper-tooltip>[[tooltipText]]</paper-tooltip> | ||||
<template is="dom-if" if="[[shouldShow(noSpinner)]]"> | ||||
<paper-spinner active=[[active]]></paper-spinner> | ||||
</template> | ||||
</div> | ||||
`; | ||||
} | ||||
static get properties() { | ||||
return { | ||||
noSpinner: {type: Boolean, value: false, reflectToAttribute: true}, | ||||
tooltipText: {type: String, value: "Click to toggle", reflectToAttribute: true}, | ||||
checked: {type: Boolean, value: false, reflectToAttribute: true}, | ||||
active: {type: Boolean, value: false, reflectToAttribute: true, notify: true} | ||||
} | ||||
} | ||||
shouldShow() { | ||||
return !this.noSpinner | ||||
} | ||||
labelStatus(isActive) { | ||||
return this.checked ? 'Enabled' : "Disabled" | ||||
} | ||||
} | ||||
customElements.define(RhodecodeToggle.is, RhodecodeToggle); | ||||