PairDrop/app/elements/buddy-finder/device-name.html
2016-05-04 23:13:07 -06:00

99 lines
3.2 KiB
HTML

<link rel="import" href="../../bower_components/paper-input/paper-input.html">
<link rel="import" href="../../bower_components/iron-localstorage/iron-localstorage.html">
<link rel="import" href="device-name-dialog.html">
<dom-module id="device-name">
<template>
<style>
:host {
display: inline-block;
cursor: pointer;
}
.name-label {
@apply(--paper-font-subhead);
text-align: center;
cursor: pointer;
width: 160px;
line-height: 12px !important;
}
:root {
/* Label and underline color when the input is not focused */
--paper-input-container-color: #333;
/* Label and underline color when the input is focused */
--paper-input-container-focus-color: #4285f4;
/* Label and underline color when the input is invalid */
--paper-input-container-invalid-color: red;
/* Input foreground color */
--paper-input-container-input-color: #333;
}
@media all and (max-height: 370px) {
:host {}
}
paper-dialog {
width: 300px;
text-align: left;
}
</style>
<div class="name-label" hidden$="{{name}}">My Device</div>
<div class="name-label" hidden$="{{!name}}">{{name}}</div>
<iron-localstorage name="device-name" value="{{name}}" iron-localstorage-load="_nameChanged"></iron-localstorage>
</template>
<script>
'use strict';
Polymer({
is: 'device-name',
properties: {
name: {
observer: '_nameChanged'
}
},
open: function() {
this.deviceNameDialog.open();
},
_nameChanged: function(name) {
if (!name) {
return;
}
this.cancelAsync(this.timer);
this.timer = this.async(function() {
if (!app.conn.notifyServer) {
this._nameChanged(name);
return;
}
try {
this._sendNameToServer(name);
} catch (e) {
this._nameChanged(name);
}
}, 300);
},
_sendNameToServer: function(name) {
app.conn.notifyServer({
serverMsg: 'device-name',
name: name
});
},
_initialize: function() {
console.log('initialize name');
},
get deviceNameDialog() {
var deviceNameDialog = document.querySelector('device-name-dialog');
if (!deviceNameDialog) {
deviceNameDialog = Polymer.Base.create('device-name-dialog');
deviceNameDialog.addEventListener('save-device-name', function(e) {
this.name = e.detail;
console.log(this.name);
}.bind(this));
document.body.appendChild(deviceNameDialog);
};
deviceNameDialog.deviceName = this.name;
return deviceNameDialog;
}
});
</script>
</dom-module>