<!--
// Copyright 2014 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.
-->
<import src="sky-element/sky-element.sky" as="SkyElement" />

<sky-element
    name="sky-button"
    attributes="highlight:boolean"
    on-pointerdown="handlePointerDown"
    on-pointerup="handlePointerUp"
    on-pointercancel="handlePointerCancel">
<template>
  <style>
    :host {
      display: inline-flex;
      border-radius: 4px;
      justify-content: center;
      align-items: center;
      border: 1px solid blue;
      -webkit-user-select: none;
      margin: 5px;
    }
    :host([highlight=true]) {
      background-color: orange;
    }
  </style>
  <content />
</template>
<script>
module.exports = class extends SkyElement {
  created() {
    super.created();

    this.tabIndex = 0; // Make focusable.
  }
  handlePointerDown() {
    this.highlight = true;
  }
  handlePointerUp() {
    this.highlight = false;
  }
  handlePointerCancel() {
    this.highlight = false;
  }
}.register();
</script>
</sky-element>
