blob: a7d753a71637793b6d3ae38ca32055dfa557b957 [file] [log] [blame]
<!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="../../paper-styles/classes/typography.html">
<link rel="import" href="../../iron-flex-layout/classes/iron-flex-layout.html">
<link rel="import" href="../../paper-input/paper-input.html">
<link rel="stylesheet" href="../../paper-styles/demo.css">
</head>
<body>
<dom-module id='iron-query-params-demo'>
<template>
<style>
div.inputs {
margin-bottom: 15px;
}
label {
display: inline-block;
width: 100px;
}
span.seconds {
}
[layout] {
@apply(--layout);
}
[layout][horizontal] {
@apply(--layout-horizontal);
}
[layout][horizontal] > div {
padding: 20px;
max-width: 500px;
}
[layout][vertical] {
@apply(--layout-vertical);
}
[layout][flex] {
@apply(--layout-flex);
}
h3 {
padding: 0;
margin: 0;
}
</style>
<iron-query-params
params-string='{{paramString}}' params-object='{{params}}'>
</iron-query-params>
<div layout horizontal>
<div layout vertical flex class='inputs'>
<paper-input label='params as string'
value='{{paramString}}' always-float-label>
</paper-input>
<paper-input label='params as object' value='{{paramsString}}'
invalid='{{paramsInvalid}}'
error-message='Should be legal JSON'
always-float-label>
</paper-input>
</div>
</div>
</template>
<script>
window.addEventListener('WebComponentsReady', function() {
Polymer({
is: 'iron-query-params-demo',
properties: {
paramsString: {
observer: 'paramsStringChanged'
},
params: {
observer: 'paramsChanged'
},
paramsInvalid: {
value: false,
},
},
paramsStringChanged: function() {
if (this.ignore) {
return;
}
this.ignore = true;
try {
this.params = JSON.parse(this.paramsString);
this.paramsInvalid = false;
} catch(_) {
this.paramsInvalid = true;
}
this.ignore = false;
},
paramsChanged: function() {
if (this.ignore) {
return;
}
this.ignore = true;
this.paramsString = JSON.stringify(this.params);
this.paramsInvalid = false;
this.ignore = false;
}
});
});
</script>
</dom-module>
<iron-query-params-demo></iron-query-params-demo>
</body>
</html>