<html>
<head>
  <title>select-popup-sk demo</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
  <script src="../../node_modules/native-promise-only/npo.js"></script>
  <script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <script src="bower_components/d3/d3.js"></script>
  <script src="../common/js/common.js"></script>
  <script src="testdata.js"></script>

  <link rel="import" href="bower_components/polymer/polymer.html">
  <link rel="import" href="select-popup-sk.html">
  <link rel="import" href="bower_components/paper-button/paper-button.html">

</head>
<body>
  <h1>select-popup-sk demo</h1>

  <dom-module id="main-document-element">
    <template>
      <style>
        select-popup-sk {
          margin-left: 20em;
        }
      </style>

      <br><br><br><br><br><br>
      <select-popup-sk id="selectDialog"></select-popup-sk>
      <br><br>
      Selection: &quot;{{_selection}}&quot;
    </template>

    <script>
      HTMLImports.whenReady(function () {
        Polymer({
          is: 'main-document-element',

          properties: {
            _selection: {
              type: String,
              value: ''
            }
          },

          ready: function() {
            this.$.selectDialog.setParamSet(testdata.paramSet);
            this.$.selectDialog.setSelection([]);
            this.listen(this.$.selectDialog, 'changed-selection', '_handleEditSelection');
          },

          _handleEditSelection: function(ev) {
            this._selection= JSON.stringify(ev.detail);
          }
        });
      });
    </script>
  </dom-module>

  <!-- Instantite the element defined above -->
  <main-document-element></main-document-element>

</body>
</html>
