blob: 40de2dff819e9acdbf1cf9ce33d2788adc912b8f [file] [log] [blame]
<!--
-- Copyright (c) 2013 The Chromium Authors. All rights reserved.
-- Use of this source code is governed by a BSD-style license that can be
-- found in the LICENSE file.
-->
<polymer-element name="kb-keyset" attributes="nextKeyset isDefault"
on-key-up="keyUp" on-key-longpress="keyLongpress">
<template>
<style>
@host {
* {
-webkit-box-orient: vertical;
-webkit-box-flex: 1;
display: -webkit-box;
}
}
</style>
<content select="kb-row"></content>
<content select="kb-accent-container" id="accentContainer"
touch-action="none"></content>
</template>
<script>
Polymer('kb-keyset', {
isDefault: false,
nextKeyset: undefined,
// TODO(bshe): support select keyset on down, long and dbl events.
keyUp: function(event, detail) {
if (!detail.toKeyset)
detail.toKeyset = this.nextKeyset;
},
keyLongpress: function(event, detail) {
if (detail.accents) {
var accentContainer = this.$.accentContainer.getDistributedNodes()[0];
var activeAccentKeySet = accentContainer.querySelector('#' +
detail.accents);
if (!activeAccentKeySet)
return;
accentContainer.keyset = detail.accents;
event.target.classList.remove('active');
activeAccentKeySet.style.width = event.target.clientWidth *
activeAccentKeySet.childElementCount + 'px';
activeAccentKeySet.style.height = event.target.clientHeight + 'px';
activeAccentKeySet.style.top = event.target.offsetTop + 'px';
var leftOffset = activeAccentKeySet.offset * event.target.clientWidth;
activeAccentKeySet.style.left = event.target.offsetLeft - leftOffset +
'px';
accentContainer.hidden = false;
}
}
});
</script>
</polymer-element>