polymer-gold-rails 1.0.0.pre.rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +36 -0
- data/Rakefile +1 -0
- data/app/assets/components/gold-cc-cvc-input/README.md +24 -0
- data/app/assets/components/gold-cc-cvc-input/bower.json +39 -0
- data/app/assets/components/gold-cc-cvc-input/cvc_hint.png +0 -0
- data/app/assets/components/gold-cc-cvc-input/cvc_hint_amex.png +0 -0
- data/app/assets/components/gold-cc-cvc-input/demo/index.html +54 -0
- data/app/assets/components/gold-cc-cvc-input/gold-cc-cvc-input.html +195 -0
- data/app/assets/components/gold-cc-cvc-input/hero.svg +36 -0
- data/app/assets/components/gold-cc-cvc-input/index.html +26 -0
- data/app/assets/components/gold-cc-cvc-input/test/basic.html +125 -0
- data/app/assets/components/gold-cc-cvc-input/test/index.html +25 -0
- data/app/assets/components/gold-cc-expiration-input/README.md +10 -0
- data/app/assets/components/gold-cc-expiration-input/bower.json +40 -0
- data/app/assets/components/gold-cc-expiration-input/date-input.html +157 -0
- data/app/assets/components/gold-cc-expiration-input/date-validator.html +38 -0
- data/app/assets/components/gold-cc-expiration-input/demo/index.html +53 -0
- data/app/assets/components/gold-cc-expiration-input/gold-cc-expiration-input.html +131 -0
- data/app/assets/components/gold-cc-expiration-input/hero.svg +58 -0
- data/app/assets/components/gold-cc-expiration-input/index.html +28 -0
- data/app/assets/components/gold-cc-expiration-input/test/basic.html +126 -0
- data/app/assets/components/gold-cc-expiration-input/test/index.html +25 -0
- data/app/assets/components/gold-cc-input/README.md +9 -0
- data/app/assets/components/gold-cc-input/bower.json +39 -0
- data/app/assets/components/gold-cc-input/cc-validator.js +192 -0
- data/app/assets/components/gold-cc-input/demo/index.html +48 -0
- data/app/assets/components/gold-cc-input/gold-cc-input.html +215 -0
- data/app/assets/components/gold-cc-input/hero.svg +52 -0
- data/app/assets/components/gold-cc-input/images/amex.png +0 -0
- data/app/assets/components/gold-cc-input/images/diners_club.png +0 -0
- data/app/assets/components/gold-cc-input/images/discover.png +0 -0
- data/app/assets/components/gold-cc-input/images/jcb.png +0 -0
- data/app/assets/components/gold-cc-input/images/mastercard.png +0 -0
- data/app/assets/components/gold-cc-input/images/visa.png +0 -0
- data/app/assets/components/gold-cc-input/index.html +28 -0
- data/app/assets/components/gold-cc-input/test/basic.html +136 -0
- data/app/assets/components/gold-cc-input/test/index.html +25 -0
- data/app/assets/components/gold-elements/README.md +12 -0
- data/app/assets/components/gold-elements/bower.json +42 -0
- data/app/assets/components/gold-elements/demo/complex-form.html +127 -0
- data/app/assets/components/gold-elements/demo/index.html +94 -0
- data/app/assets/components/gold-elements/demo/item-card.html +59 -0
- data/app/assets/components/gold-elements/demo/simple-form.css +55 -0
- data/app/assets/components/gold-elements/demo/simple-form.html +93 -0
- data/app/assets/components/gold-elements/screenshot.png +0 -0
- data/app/assets/components/gold-email-input/README.md +8 -0
- data/app/assets/components/gold-email-input/bower.json +40 -0
- data/app/assets/components/gold-email-input/demo/index.html +46 -0
- data/app/assets/components/gold-email-input/email-validator.html +31 -0
- data/app/assets/components/gold-email-input/gold-email-input.html +108 -0
- data/app/assets/components/gold-email-input/hero.svg +59 -0
- data/app/assets/components/gold-email-input/index.html +28 -0
- data/app/assets/components/gold-email-input/test/basic.html +97 -0
- data/app/assets/components/gold-email-input/test/index.html +25 -0
- data/app/assets/components/gold-phone-input/README.md +13 -0
- data/app/assets/components/gold-phone-input/bower.json +39 -0
- data/app/assets/components/gold-phone-input/demo/index.html +53 -0
- data/app/assets/components/gold-phone-input/gold-phone-input.html +197 -0
- data/app/assets/components/gold-phone-input/hero.svg +63 -0
- data/app/assets/components/gold-phone-input/index.html +28 -0
- data/app/assets/components/gold-phone-input/test/basic.html +117 -0
- data/app/assets/components/gold-phone-input/test/index.html +25 -0
- data/app/assets/components/gold-zip-input/README.md +8 -0
- data/app/assets/components/gold-zip-input/bower.json +40 -0
- data/app/assets/components/gold-zip-input/demo/index.html +54 -0
- data/app/assets/components/gold-zip-input/gold-zip-input.html +113 -0
- data/app/assets/components/gold-zip-input/hero.svg +43 -0
- data/app/assets/components/gold-zip-input/index.html +28 -0
- data/app/assets/components/gold-zip-input/test/basic.html +116 -0
- data/app/assets/components/gold-zip-input/test/index.html +25 -0
- data/app/assets/components/gold-zip-input/zip-validator.html +32 -0
- data/app/assets/components/iron-autogrow-textarea/README.md +24 -0
- data/app/assets/components/iron-autogrow-textarea/bower.json +37 -0
- data/app/assets/components/iron-autogrow-textarea/demo/index.html +81 -0
- data/app/assets/components/iron-autogrow-textarea/hero.svg +33 -0
- data/app/assets/components/iron-autogrow-textarea/index.html +30 -0
- data/app/assets/components/iron-autogrow-textarea/iron-autogrow-textarea.html +263 -0
- data/app/assets/components/iron-autogrow-textarea/test/basic.html +94 -0
- data/app/assets/components/iron-autogrow-textarea/test/index.html +25 -0
- data/app/assets/components/iron-flex-layout/README.md +4 -0
- data/app/assets/components/iron-flex-layout/bower.json +21 -0
- data/app/assets/components/iron-flex-layout/classes/iron-flex-layout.html +307 -0
- data/app/assets/components/iron-flex-layout/classes/iron-shadow-flex-layout.html +302 -0
- data/app/assets/components/iron-flex-layout/demo/index.html +40 -0
- data/app/assets/components/iron-flex-layout/demo/x-app.html +106 -0
- data/app/assets/components/iron-flex-layout/iron-flex-layout.html +313 -0
- data/app/assets/components/iron-form-element-behavior/README.md +2 -0
- data/app/assets/components/iron-form-element-behavior/bower.json +27 -0
- data/app/assets/components/iron-form-element-behavior/demo/index.html +53 -0
- data/app/assets/components/iron-form-element-behavior/demo/simple-element.html +27 -0
- data/app/assets/components/iron-form-element-behavior/demo/simple-form.html +42 -0
- data/app/assets/components/iron-form-element-behavior/index.html +30 -0
- data/app/assets/components/iron-form-element-behavior/iron-form-element-behavior.html +50 -0
- data/app/assets/components/iron-icon/README.md +56 -0
- data/app/assets/components/iron-icon/bower.json +29 -0
- data/app/assets/components/iron-icon/demo/index.html +28 -0
- data/app/assets/components/iron-icon/demo/location.png +0 -0
- data/app/assets/components/iron-icon/hero.svg +19 -0
- data/app/assets/components/iron-icon/index.html +26 -0
- data/app/assets/components/iron-icon/iron-icon.html +187 -0
- data/app/assets/components/iron-icon/test/index.html +31 -0
- data/app/assets/components/iron-icon/test/iron-icon.html +120 -0
- data/app/assets/components/iron-input/README.md +16 -0
- data/app/assets/components/iron-input/bower.json +36 -0
- data/app/assets/components/iron-input/demo/index.html +87 -0
- data/app/assets/components/iron-input/hero.svg +19 -0
- data/app/assets/components/iron-input/index.html +30 -0
- data/app/assets/components/iron-input/iron-input.html +235 -0
- data/app/assets/components/iron-input/test/index.html +24 -0
- data/app/assets/components/iron-input/test/iron-input.html +139 -0
- data/app/assets/components/iron-input/test/letters-only.html +30 -0
- data/app/assets/components/iron-meta/README.md +46 -0
- data/app/assets/components/iron-meta/bower.json +28 -0
- data/app/assets/components/iron-meta/demo/index.html +45 -0
- data/app/assets/components/iron-meta/hero.svg +33 -0
- data/app/assets/components/iron-meta/index.html +27 -0
- data/app/assets/components/iron-meta/iron-meta.html +352 -0
- data/app/assets/components/iron-meta/test/basic.html +48 -0
- data/app/assets/components/iron-meta/test/index.html +30 -0
- data/app/assets/components/iron-meta/test/iron-meta.html +186 -0
- data/app/assets/components/iron-validatable-behavior/README.md +3 -0
- data/app/assets/components/iron-validatable-behavior/bower.json +35 -0
- data/app/assets/components/iron-validatable-behavior/demo/cats-only.html +46 -0
- data/app/assets/components/iron-validatable-behavior/demo/index.html +71 -0
- data/app/assets/components/iron-validatable-behavior/demo/validatable-input.html +46 -0
- data/app/assets/components/iron-validatable-behavior/index.html +30 -0
- data/app/assets/components/iron-validatable-behavior/iron-validatable-behavior.html +101 -0
- data/app/assets/components/iron-validatable-behavior/test/index.html +35 -0
- data/app/assets/components/iron-validatable-behavior/test/iron-validatable-behavior.html +52 -0
- data/app/assets/components/iron-validatable-behavior/test/test-validatable.html +28 -0
- data/app/assets/components/iron-validator-behavior/README.md +4 -0
- data/app/assets/components/iron-validator-behavior/bower.json +34 -0
- data/app/assets/components/iron-validator-behavior/demo/cats-only.html +46 -0
- data/app/assets/components/iron-validator-behavior/demo/index.html +144 -0
- data/app/assets/components/iron-validator-behavior/index.html +30 -0
- data/app/assets/components/iron-validator-behavior/iron-validator-behavior.html +61 -0
- data/app/assets/components/iron-validator-behavior/test/index.html +34 -0
- data/app/assets/components/iron-validator-behavior/test/iron-validator-behavior.html +47 -0
- data/app/assets/components/iron-validator-behavior/test/simple-validator.html +26 -0
- data/app/assets/components/paper-input/README.md +5 -0
- data/app/assets/components/paper-input/all-imports.html +12 -0
- data/app/assets/components/paper-input/bower.json +44 -0
- data/app/assets/components/paper-input/demo/index.html +96 -0
- data/app/assets/components/paper-input/demo/ssn-input.html +94 -0
- data/app/assets/components/paper-input/demo/ssn-validator.html +31 -0
- data/app/assets/components/paper-input/hero.svg +19 -0
- data/app/assets/components/paper-input/index.html +28 -0
- data/app/assets/components/paper-input/paper-input-addon-behavior.html +47 -0
- data/app/assets/components/paper-input/paper-input-behavior.html +317 -0
- data/app/assets/components/paper-input/paper-input-char-counter.html +95 -0
- data/app/assets/components/paper-input/paper-input-container.html +495 -0
- data/app/assets/components/paper-input/paper-input-error.html +99 -0
- data/app/assets/components/paper-input/paper-input.html +126 -0
- data/app/assets/components/paper-input/paper-textarea.html +106 -0
- data/app/assets/components/paper-input/test/index.html +28 -0
- data/app/assets/components/paper-input/test/letters-only.html +30 -0
- data/app/assets/components/paper-input/test/paper-input-char-counter.html +112 -0
- data/app/assets/components/paper-input/test/paper-input-container.html +237 -0
- data/app/assets/components/paper-input/test/paper-input-error.html +60 -0
- data/app/assets/components/paper-input/test/paper-input.html +213 -0
- data/app/assets/components/paper-input/test/paper-textarea.html +169 -0
- data/app/assets/components/paper-styles/README.md +3 -0
- data/app/assets/components/paper-styles/bower.json +27 -0
- data/app/assets/components/paper-styles/classes/global.html +96 -0
- data/app/assets/components/paper-styles/classes/shadow-layout.html +302 -0
- data/app/assets/components/paper-styles/classes/shadow.html +39 -0
- data/app/assets/components/paper-styles/classes/typography.html +171 -0
- data/app/assets/components/paper-styles/color.html +333 -0
- data/app/assets/components/paper-styles/default-theme.html +39 -0
- data/app/assets/components/paper-styles/demo-pages.html +72 -0
- data/app/assets/components/paper-styles/demo.css +25 -0
- data/app/assets/components/paper-styles/paper-styles-classes.html +14 -0
- data/app/assets/components/paper-styles/paper-styles.html +17 -0
- data/app/assets/components/paper-styles/shadow.html +61 -0
- data/app/assets/components/paper-styles/typography.html +240 -0
- data/app/assets/components/polymer/LICENSE.txt +27 -0
- data/app/assets/components/polymer/bower.json +26 -0
- data/app/assets/components/polymer/build.log +27 -0
- data/app/assets/components/polymer/polymer-micro.html +523 -0
- data/app/assets/components/polymer/polymer-mini.html +1368 -0
- data/app/assets/components/polymer/polymer.html +3768 -0
- data/app/assets/components/webcomponentsjs/CustomElements.js +956 -0
- data/app/assets/components/webcomponentsjs/CustomElements.min.js +11 -0
- data/app/assets/components/webcomponentsjs/HTMLImports.js +1078 -0
- data/app/assets/components/webcomponentsjs/HTMLImports.min.js +11 -0
- data/app/assets/components/webcomponentsjs/MutationObserver.js +344 -0
- data/app/assets/components/webcomponentsjs/MutationObserver.min.js +11 -0
- data/app/assets/components/webcomponentsjs/README.md +125 -0
- data/app/assets/components/webcomponentsjs/ShadowDOM.js +4414 -0
- data/app/assets/components/webcomponentsjs/ShadowDOM.min.js +15 -0
- data/app/assets/components/webcomponentsjs/bower.json +14 -0
- data/app/assets/components/webcomponentsjs/build.log +33 -0
- data/app/assets/components/webcomponentsjs/package.json +31 -0
- data/app/assets/components/webcomponentsjs/webcomponents-lite.js +2300 -0
- data/app/assets/components/webcomponentsjs/webcomponents-lite.min.js +13 -0
- data/app/assets/components/webcomponentsjs/webcomponents.js +7112 -0
- data/app/assets/components/webcomponentsjs/webcomponents.min.js +15 -0
- data/lib/polymer-gold-rails.rb +2 -0
- data/lib/polymer-gold-rails/enigne.rb +4 -0
- data/lib/polymer-gold-rails/version.rb +3 -0
- metadata +312 -0
@@ -0,0 +1,120 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<!--
|
3
|
+
@license
|
4
|
+
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
|
5
|
+
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
6
|
+
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
7
|
+
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
8
|
+
Code distributed by Google as part of the polymer project is also
|
9
|
+
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
10
|
+
-->
|
11
|
+
|
12
|
+
<html>
|
13
|
+
<head>
|
14
|
+
|
15
|
+
<title>iron-icon</title>
|
16
|
+
<meta charset="utf-8">
|
17
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
18
|
+
|
19
|
+
<script src="../../webcomponentsjs/webcomponents-lite.js"></script>
|
20
|
+
<script src="../../web-component-tester/browser.js"></script>
|
21
|
+
<script src="../../test-fixture/test-fixture-mocha.js"></script>
|
22
|
+
|
23
|
+
<link rel="import" href="../iron-icon.html">
|
24
|
+
<link rel="import" href="../../iron-iconset/iron-iconset.html">
|
25
|
+
<link rel="import" href="../../test-fixture/test-fixture.html">
|
26
|
+
|
27
|
+
</head>
|
28
|
+
<body>
|
29
|
+
|
30
|
+
<test-fixture id="TrivialIcon">
|
31
|
+
<template>
|
32
|
+
<iron-icon src="../demo/location.png"></iron-icon>
|
33
|
+
</template>
|
34
|
+
</test-fixture>
|
35
|
+
|
36
|
+
<test-fixture id="IconFromIconset">
|
37
|
+
<template>
|
38
|
+
<iron-iconset name="example" icons="location blank" src="location.png" size="24" width="48"></iron-iconset>
|
39
|
+
<iron-icon icon="example:location"></iron-icon>
|
40
|
+
</template>
|
41
|
+
</test-fixture>
|
42
|
+
|
43
|
+
<test-fixture id="WithoutAnIconSource">
|
44
|
+
<template>
|
45
|
+
<iron-icon icon=""></iron-icon>
|
46
|
+
<iron-icon></iron-icon>
|
47
|
+
<iron-icon src=""></iron-icon>
|
48
|
+
</template>
|
49
|
+
</test-fixture>
|
50
|
+
|
51
|
+
<script>
|
52
|
+
function iconElementFor (node) {
|
53
|
+
var nodes = Polymer.dom(node.root).childNodes;
|
54
|
+
|
55
|
+
for (var i = 0; i < nodes.length; ++i) {
|
56
|
+
if (nodes[i].nodeName.match(/DIV|IMG/)) {
|
57
|
+
return nodes[i];
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
function hasIcon (node) {
|
63
|
+
return /png/.test(node.style.backgroundImage);
|
64
|
+
}
|
65
|
+
|
66
|
+
suite('<iron-icon>', function() {
|
67
|
+
suite('basic behavior', function() {
|
68
|
+
var icon;
|
69
|
+
|
70
|
+
setup(function() {
|
71
|
+
icon = fixture('TrivialIcon');
|
72
|
+
});
|
73
|
+
|
74
|
+
test('can be assigned an icon with the src attribute', function() {
|
75
|
+
expect(iconElementFor(icon)).to.be.ok;
|
76
|
+
expect(iconElementFor(icon).src).to.match(/demo\/location\.png/);
|
77
|
+
});
|
78
|
+
|
79
|
+
test('can change its src dynamically', function() {
|
80
|
+
icon.src = 'foo.png';
|
81
|
+
|
82
|
+
expect(iconElementFor(icon).src).to.match(/foo\.png/);
|
83
|
+
});
|
84
|
+
});
|
85
|
+
|
86
|
+
suite('when paired with an iconset', function() {
|
87
|
+
var icon;
|
88
|
+
|
89
|
+
setup(function() {
|
90
|
+
var elements = fixture('IconFromIconset');
|
91
|
+
|
92
|
+
icon = elements[1];
|
93
|
+
});
|
94
|
+
|
95
|
+
test('can be assigned an icon from the iconset', function() {
|
96
|
+
expect(hasIcon(icon)).to.be.ok;
|
97
|
+
});
|
98
|
+
|
99
|
+
test('can change its icon dynamically', function() {
|
100
|
+
var style = icon.style;
|
101
|
+
|
102
|
+
expect(style.backgroundPosition).to.match(/0(%|px) 0(%|px)/);
|
103
|
+
|
104
|
+
icon.icon = "example:blank";
|
105
|
+
|
106
|
+
expect(style.backgroundPosition).to.match(/-24px 0(%|px)/);
|
107
|
+
});
|
108
|
+
});
|
109
|
+
|
110
|
+
suite('when no icon source is provided', function() {
|
111
|
+
test('will politely wait for an icon source without throwing', function() {
|
112
|
+
document.createElement('iron-icon');
|
113
|
+
fixture('WithoutAnIconSource');
|
114
|
+
});
|
115
|
+
})
|
116
|
+
});
|
117
|
+
</script>
|
118
|
+
|
119
|
+
</body>
|
120
|
+
</html>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# iron-input
|
2
|
+
|
3
|
+
An input with data binding.
|
4
|
+
|
5
|
+
By default you can only get notified of changes to an `input`'s `value` due to user input:
|
6
|
+
|
7
|
+
```html
|
8
|
+
<input value="{{myValue::input}}">
|
9
|
+
```
|
10
|
+
|
11
|
+
`iron-input` adds the `bind-value` property that mirrors the `value` property, and can be used
|
12
|
+
for two-way data binding. `bind-value` will notify if it is changed either by user input or by script.
|
13
|
+
|
14
|
+
```html
|
15
|
+
<input is="iron-input" bind-value="{{myValue}}">
|
16
|
+
```
|
@@ -0,0 +1,36 @@
|
|
1
|
+
{
|
2
|
+
"name": "iron-input",
|
3
|
+
"version": "1.0.2",
|
4
|
+
"description": "An input element with data binding",
|
5
|
+
"authors": [
|
6
|
+
"The Polymer Authors"
|
7
|
+
],
|
8
|
+
"keywords": [
|
9
|
+
"web-components",
|
10
|
+
"polymer",
|
11
|
+
"input"
|
12
|
+
],
|
13
|
+
"main": [
|
14
|
+
"iron-input.html"
|
15
|
+
],
|
16
|
+
"private": true,
|
17
|
+
"repository": {
|
18
|
+
"type": "git",
|
19
|
+
"url": "git://github.com/PolymerElements/iron-input.git"
|
20
|
+
},
|
21
|
+
"license": "http://polymer.github.io/LICENSE.txt",
|
22
|
+
"homepage": "https://github.com/PolymerElements/iron-input",
|
23
|
+
"ignore": [],
|
24
|
+
"dependencies": {
|
25
|
+
"iron-validatable-behavior": "PolymerElements/iron-validatable-behavior#^1.0.0",
|
26
|
+
"polymer": "Polymer/polymer#^1.0.0"
|
27
|
+
},
|
28
|
+
"devDependencies": {
|
29
|
+
"paper-styles": "polymerelements/paper-styles#^1.0.2",
|
30
|
+
"iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
|
31
|
+
"iron-validator-behavior": "PolymerElements/iron-validator-behavior#^1.0.0",
|
32
|
+
"test-fixture": "PolymerElements/test-fixture#^1.0.0",
|
33
|
+
"web-component-tester": "*",
|
34
|
+
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
35
|
+
}
|
36
|
+
}
|
@@ -0,0 +1,87 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<!--
|
3
|
+
@license
|
4
|
+
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
|
5
|
+
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
6
|
+
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
7
|
+
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
8
|
+
Code distributed by Google as part of the polymer project is also
|
9
|
+
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
10
|
+
-->
|
11
|
+
<html>
|
12
|
+
<head>
|
13
|
+
|
14
|
+
<meta charset="utf-8">
|
15
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
16
|
+
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
|
17
|
+
|
18
|
+
<title>iron-input demo</title>
|
19
|
+
|
20
|
+
<script src="../../webcomponentsjs/webcomponents-lite.js"></script>
|
21
|
+
|
22
|
+
<link rel="import" href="../iron-input.html">
|
23
|
+
|
24
|
+
<link href="../../paper-styles/paper-styles.html" rel="import">
|
25
|
+
<link href="../../paper-styles/demo-pages.html" rel="import">
|
26
|
+
|
27
|
+
<style is="custom-style">
|
28
|
+
|
29
|
+
.vertical-section {
|
30
|
+
@apply(--paper-font-body1);
|
31
|
+
|
32
|
+
line-height: 40px;
|
33
|
+
}
|
34
|
+
|
35
|
+
code {
|
36
|
+
color: var(--google-grey-700);
|
37
|
+
}
|
38
|
+
|
39
|
+
input[is=iron-input] {
|
40
|
+
width: 100%;
|
41
|
+
box-sizing: border-box;
|
42
|
+
}
|
43
|
+
|
44
|
+
input, button {
|
45
|
+
font-size: 20px;
|
46
|
+
padding: 0.2em;
|
47
|
+
}
|
48
|
+
|
49
|
+
</style>
|
50
|
+
</head>
|
51
|
+
<body>
|
52
|
+
|
53
|
+
<div class="vertical-section vertical-section-container centered">
|
54
|
+
<template is="dom-bind">
|
55
|
+
<p>
|
56
|
+
<input is="iron-input" bind-value="{{bindValue}}" value="{{value::input}}">
|
57
|
+
<br>
|
58
|
+
bind to <code>bind-value</code>: <b>[[bindValue]]</b>
|
59
|
+
<br>
|
60
|
+
bind to <code>value::input</code>: <b>{{value}}</b>
|
61
|
+
</p>
|
62
|
+
|
63
|
+
<p on-click="setValue">
|
64
|
+
set bind-value to: <input> <button is="paper-button" value="bindValue">set</button>
|
65
|
+
<br>
|
66
|
+
set value to: <input> <button value="value">set</button>
|
67
|
+
</p>
|
68
|
+
</template>
|
69
|
+
<p>only allows these characters:
|
70
|
+
<code>!@#0123456789</code></p>
|
71
|
+
<input is="iron-input" allowed-pattern="[!@#0-9]" prevent-invalid-input>
|
72
|
+
|
73
|
+
</div>
|
74
|
+
|
75
|
+
<script>
|
76
|
+
var scope = document.querySelector('template[is=dom-bind]');
|
77
|
+
|
78
|
+
scope.setValue = function(event) {
|
79
|
+
if (!(event.target instanceof HTMLButtonElement)) {
|
80
|
+
return;
|
81
|
+
}
|
82
|
+
document.querySelector('input[is=iron-input]')[event.target.value] = event.target.previousElementSibling.value;
|
83
|
+
}
|
84
|
+
</script>
|
85
|
+
|
86
|
+
</body>
|
87
|
+
</html>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
4
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
5
|
+
viewBox="0 0 225 126" enable-background="new 0 0 225 126" xml:space="preserve">
|
6
|
+
<g id="background" display="none">
|
7
|
+
<rect display="inline" fill="#B0BEC5" width="225" height="126"/>
|
8
|
+
</g>
|
9
|
+
<g id="label">
|
10
|
+
</g>
|
11
|
+
<g id="art">
|
12
|
+
<rect x="49" y="53" width="2" height="18"/>
|
13
|
+
<path d="M188,78H37V44h151V78z M39,76h147V46H39V76z"/>
|
14
|
+
<g id="ic_x5F_add_x0D_">
|
15
|
+
</g>
|
16
|
+
</g>
|
17
|
+
<g id="Guides">
|
18
|
+
</g>
|
19
|
+
</svg>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<!--
|
3
|
+
@license
|
4
|
+
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
|
5
|
+
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
6
|
+
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
7
|
+
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
8
|
+
Code distributed by Google as part of the polymer project is also
|
9
|
+
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
10
|
+
-->
|
11
|
+
<html>
|
12
|
+
<head>
|
13
|
+
|
14
|
+
<meta charset="utf-8">
|
15
|
+
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
|
16
|
+
|
17
|
+
<title>iron-input</title>
|
18
|
+
|
19
|
+
<script src="../webcomponentsjs/webcomponents-lite.js"></script>
|
20
|
+
|
21
|
+
<link rel="import" href="../polymer/polymer.html">
|
22
|
+
<link rel="import" href="../iron-component-page/iron-component-page.html">
|
23
|
+
|
24
|
+
</head>
|
25
|
+
<body>
|
26
|
+
|
27
|
+
<iron-component-page></iron-component-page>
|
28
|
+
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,235 @@
|
|
1
|
+
<!--
|
2
|
+
@license
|
3
|
+
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
|
4
|
+
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
5
|
+
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
6
|
+
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
7
|
+
Code distributed by Google as part of the polymer project is also
|
8
|
+
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
9
|
+
-->
|
10
|
+
|
11
|
+
<link rel="import" href="../polymer/polymer.html">
|
12
|
+
<link rel="import" href="../iron-validatable-behavior/iron-validatable-behavior.html">
|
13
|
+
|
14
|
+
<script>
|
15
|
+
|
16
|
+
/*
|
17
|
+
`<iron-input>` adds two-way binding and custom validators using `Polymer.IronValidatorBehavior`
|
18
|
+
to `<input>`.
|
19
|
+
|
20
|
+
### Two-way binding
|
21
|
+
|
22
|
+
By default you can only get notified of changes to an `input`'s `value` due to user input:
|
23
|
+
|
24
|
+
<input value="{{myValue::input}}">
|
25
|
+
|
26
|
+
`iron-input` adds the `bind-value` property that mirrors the `value` property, and can be used
|
27
|
+
for two-way data binding. `bind-value` will notify if it is changed either by user input or by script.
|
28
|
+
|
29
|
+
<input is="iron-input" bind-value="{{myValue}}">
|
30
|
+
|
31
|
+
### Custom validators
|
32
|
+
|
33
|
+
You can use custom validators that implement `Polymer.IronValidatorBehavior` with `<iron-input>`.
|
34
|
+
|
35
|
+
<input is="iron-input" validator="my-custom-validator">
|
36
|
+
|
37
|
+
### Stopping invalid input
|
38
|
+
|
39
|
+
It may be desirable to only allow users to enter certain characters. You can use the
|
40
|
+
`prevent-invalid-input` and `allowed-pattern` attributes together to accomplish this. This feature
|
41
|
+
is separate from validation, and `allowed-pattern` does not affect how the input is validated.
|
42
|
+
|
43
|
+
<!-- only allow characters that match [0-9] -->
|
44
|
+
<input is="iron-input" prevent-invaild-input allowed-pattern="[0-9]">
|
45
|
+
|
46
|
+
@hero hero.svg
|
47
|
+
@demo demo/index.html
|
48
|
+
*/
|
49
|
+
|
50
|
+
Polymer({
|
51
|
+
|
52
|
+
is: 'iron-input',
|
53
|
+
|
54
|
+
extends: 'input',
|
55
|
+
|
56
|
+
behaviors: [
|
57
|
+
Polymer.IronValidatableBehavior
|
58
|
+
],
|
59
|
+
|
60
|
+
properties: {
|
61
|
+
|
62
|
+
/**
|
63
|
+
* Use this property instead of `value` for two-way data binding.
|
64
|
+
*/
|
65
|
+
bindValue: {
|
66
|
+
observer: '_bindValueChanged',
|
67
|
+
type: String
|
68
|
+
},
|
69
|
+
|
70
|
+
/**
|
71
|
+
* Set to true to prevent the user from entering invalid input. The new input characters are
|
72
|
+
* matched with `allowedPattern` if it is set, otherwise it will use the `pattern` attribute if
|
73
|
+
* set, or the `type` attribute (only supported for `type=number`).
|
74
|
+
*/
|
75
|
+
preventInvalidInput: {
|
76
|
+
type: Boolean
|
77
|
+
},
|
78
|
+
|
79
|
+
/**
|
80
|
+
* Regular expression to match valid input characters.
|
81
|
+
*/
|
82
|
+
allowedPattern: {
|
83
|
+
type: String
|
84
|
+
},
|
85
|
+
|
86
|
+
_previousValidInput: {
|
87
|
+
type: String,
|
88
|
+
value: ''
|
89
|
+
},
|
90
|
+
|
91
|
+
_patternAlreadyChecked: {
|
92
|
+
type: Boolean,
|
93
|
+
value: false
|
94
|
+
}
|
95
|
+
|
96
|
+
},
|
97
|
+
|
98
|
+
listeners: {
|
99
|
+
'input': '_onInput',
|
100
|
+
'keypress': '_onKeypress'
|
101
|
+
},
|
102
|
+
|
103
|
+
get _patternRegExp() {
|
104
|
+
var pattern;
|
105
|
+
if (this.allowedPattern) {
|
106
|
+
pattern = new RegExp(this.allowedPattern);
|
107
|
+
} else if (this.pattern) {
|
108
|
+
pattern = new RegExp(this.pattern);
|
109
|
+
} else {
|
110
|
+
switch (this.type) {
|
111
|
+
case 'number':
|
112
|
+
pattern = /[0-9.,e-]/;
|
113
|
+
break;
|
114
|
+
}
|
115
|
+
}
|
116
|
+
return pattern;
|
117
|
+
},
|
118
|
+
|
119
|
+
ready: function() {
|
120
|
+
this.bindValue = this.value;
|
121
|
+
},
|
122
|
+
|
123
|
+
_bindValueChanged: function() {
|
124
|
+
if (this.value !== this.bindValue) {
|
125
|
+
this.value = !this.bindValue ? '' : this.bindValue;
|
126
|
+
}
|
127
|
+
// manually notify because we don't want to notify until after setting value
|
128
|
+
this.fire('bind-value-changed', {value: this.bindValue});
|
129
|
+
},
|
130
|
+
|
131
|
+
_onInput: function() {
|
132
|
+
// Need to validate each of the characters pasted if they haven't
|
133
|
+
// been validated inside `_onKeypress` already.
|
134
|
+
if (this.preventInvalidInput && !this._patternAlreadyChecked) {
|
135
|
+
var valid = this._checkPatternValidity();
|
136
|
+
if (!valid) {
|
137
|
+
this.value = this._previousValidInput;
|
138
|
+
}
|
139
|
+
}
|
140
|
+
|
141
|
+
this.bindValue = this.value;
|
142
|
+
this._previousValidInput = this.value;
|
143
|
+
this._patternAlreadyChecked = false;
|
144
|
+
},
|
145
|
+
|
146
|
+
_isPrintable: function(event) {
|
147
|
+
// What a control/printable character is varies wildly based on the browser.
|
148
|
+
// - most control characters (arrows, backspace) do not send a `keypress` event
|
149
|
+
// in Chrome, but the *do* on Firefox
|
150
|
+
// - in Firefox, when they do send a `keypress` event, control chars have
|
151
|
+
// a charCode = 0, keyCode = xx (for ex. 40 for down arrow)
|
152
|
+
// - printable characters always send a keypress event.
|
153
|
+
// - in Firefox, printable chars always have a keyCode = 0. In Chrome, the keyCode
|
154
|
+
// always matches the charCode.
|
155
|
+
// None of this makes any sense.
|
156
|
+
|
157
|
+
var nonPrintable =
|
158
|
+
(event.keyCode == 8) || // backspace
|
159
|
+
(event.keyCode == 19) || // pause
|
160
|
+
(event.keyCode == 20) || // caps lock
|
161
|
+
(event.keyCode == 27) || // escape
|
162
|
+
(event.keyCode == 45) || // insert
|
163
|
+
(event.keyCode == 46) || // delete
|
164
|
+
(event.keyCode == 144) || // num lock
|
165
|
+
(event.keyCode == 145) || // scroll lock
|
166
|
+
(event.keyCode > 32 && event.keyCode < 41) || // page up/down, end, home, arrows
|
167
|
+
(event.keyCode > 111 && event.keyCode < 124); // fn keys
|
168
|
+
|
169
|
+
return !(event.charCode == 0 && nonPrintable);
|
170
|
+
},
|
171
|
+
|
172
|
+
_onKeypress: function(event) {
|
173
|
+
if (!this.preventInvalidInput && this.type !== 'number') {
|
174
|
+
return;
|
175
|
+
}
|
176
|
+
var regexp = this._patternRegExp;
|
177
|
+
if (!regexp) {
|
178
|
+
return;
|
179
|
+
}
|
180
|
+
|
181
|
+
// Handle special keys and backspace
|
182
|
+
if (event.metaKey || event.ctrlKey || event.altKey)
|
183
|
+
return;
|
184
|
+
|
185
|
+
// Check the pattern either here or in `_onInput`, but not in both.
|
186
|
+
this._patternAlreadyChecked = true;
|
187
|
+
|
188
|
+
var thisChar = String.fromCharCode(event.charCode);
|
189
|
+
if (this._isPrintable(event) && !regexp.test(thisChar)) {
|
190
|
+
event.preventDefault();
|
191
|
+
}
|
192
|
+
},
|
193
|
+
|
194
|
+
_checkPatternValidity: function() {
|
195
|
+
var regexp = this._patternRegExp;
|
196
|
+
if (!regexp) {
|
197
|
+
return true;
|
198
|
+
}
|
199
|
+
for (var i = 0; i < this.value.length; i++) {
|
200
|
+
if (!regexp.test(this.value[i])) {
|
201
|
+
return false;
|
202
|
+
}
|
203
|
+
}
|
204
|
+
return true;
|
205
|
+
},
|
206
|
+
|
207
|
+
/**
|
208
|
+
* Returns true if `value` is valid. The validator provided in `validator` will be used first,
|
209
|
+
* then any constraints.
|
210
|
+
* @return {Boolean} True if the value is valid.
|
211
|
+
*/
|
212
|
+
validate: function() {
|
213
|
+
// Empty, non-required input is valid.
|
214
|
+
if (!this.required && this.value == '')
|
215
|
+
return true;
|
216
|
+
|
217
|
+
var valid;
|
218
|
+
if (this.hasValidator()) {
|
219
|
+
valid = Polymer.IronValidatableBehavior.validate.call(this, this.value);
|
220
|
+
} else {
|
221
|
+
this.invalid = !this.validity.valid;
|
222
|
+
valid = this.validity.valid;
|
223
|
+
}
|
224
|
+
this.fire('iron-input-validate');
|
225
|
+
return valid;
|
226
|
+
}
|
227
|
+
|
228
|
+
});
|
229
|
+
|
230
|
+
/*
|
231
|
+
The `iron-input-validate` event is fired whenever `validate()` is called.
|
232
|
+
@event iron-input-validate
|
233
|
+
*/
|
234
|
+
|
235
|
+
</script>
|