summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/catapult/third_party/polymer2/bower_components/iron-location/demo/iron-query-params.html
blob: 43dc376f96b4157b3984e7560d2045d4ef61e2c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<!doctype html>
<!--
@license
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
-->
<html>
<head>

  <title>iron-query-params</title>

  <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
  <link rel="import" href="../iron-query-params.html">
  <link rel="import" href="../../iron-flex-layout/iron-flex-layout-classes.html">
</head>
<body>

  <dom-module id='iron-query-params-demo'>
    <template>
      <style include="iron-flex">
        div.inputs {
          margin-bottom: 15px;
        }
        label {
          display: inline-block;
          width: 100px;
        }
        h3 {
          padding: 0;
          margin: 0;
        }
      </style>
      <iron-query-params
          id="queryParams"
          params-string='{{paramString}}'
          params-object='{{params}}'>
      </iron-query-params>

      <div class="layout horizontal">
        <div class="layout vertical flex" class='inputs'>
          <div>Params as string:</div>
          <input value="{{paramString::input}}">

          <div>Params as object</div>
          <template is="dom-if" if="{{paramsInvalid}}">
            <div>INVALID PARAMS: Should be legal JSON</div>
          </template>
          <input value="{{stringifiedParams::input}}">
        </div>
      </div>
    </template>
    <script>
      window.addEventListener('WebComponentsReady', function() {
        Polymer({
          is: 'iron-query-params-demo',
          properties: {
            params: {observer: 'paramsChanged'},

            paramsInvalid: {
              value: false,
            },

            paramString: {type: String, observer: 'paramStringChanged'},

            stringifiedParams: {type: String, observer: 'stringifedParamsChanged'}
          },

          paramStringChanged: function() {
            if (this.ignore) {
              return;
            }

            this.ignore = true;

            try {
              this.paramsInvalid = false;
            } catch (_) {
              this.paramsInvalid = true;
            }

            this.ignore = false;
          },

          stringifedParamsChanged: function() {
            if (this.ignore) {
              return;
            }

            this.ignore = true;

            try {
              var newParamsObject = JSON.parse(this.stringifiedParams);
              this.$.queryParams.paramsObject = newParamsObject;
              this.paramsInvalid = false;

            } catch (e) {
              this.paramsInvalid = true;
            }

            this.ignore = false;
          },

          paramsChanged: function() {
            if (this.ignore) {
              return;
            }

            this.ignore = true;
            this.stringifiedParams = JSON.stringify(this.params);
            this.paramsInvalid = false;
            this.ignore = false;
          }
        });
      });
    </script>
  </dom-module>

  <iron-query-params-demo></iron-query-params-demo>
</body>
</html>