150 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!doctype html>
 | |
| <!--
 | |
| Copyright (c) 2014 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>
 | |
|   <meta charset="UTF-8">
 | |
|   <title>paper-input-decorator tests</title>
 | |
|   <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
 | |
| 
 | |
|   <script src="../../webcomponentsjs/webcomponents.js"></script>
 | |
|   <script src="../../web-component-tester/browser.js"></script>
 | |
|   <script src="../../polymer-gestures/test/js/fake.js"></script>
 | |
| 
 | |
|   <link href="../../core-input/core-input.html" rel="import">
 | |
| 
 | |
|   <link href="../paper-input-decorator.html" rel="import">
 | |
|   <link href="../paper-autogrow-textarea.html" rel="import">
 | |
| 
 | |
|   <style>
 | |
|     paper-input-decorator {
 | |
|       width: 400px;
 | |
|     }
 | |
|   </style>
 | |
| 
 | |
| </head>
 | |
| <body>
 | |
| 
 | |
|   <paper-input-decorator id="decorator1" label="input">
 | |
|     <input id="input1" is="core-input">
 | |
|   </paper-input-decorator>
 | |
| 
 | |
|   <br>
 | |
| 
 | |
|   <paper-input-decorator id="decorator2" label="input">
 | |
|   </paper-input-decorator>
 | |
| 
 | |
|   <br>
 | |
| 
 | |
|   <paper-input-decorator id="decorator3" label="input" floatingLabel>
 | |
|     <input id="input3" is="core-input">
 | |
|   </paper-input-decorator>
 | |
| 
 | |
|   <paper-input-decorator id="decorator4" label="input" floatingLabel isInvalid error="error message">
 | |
|     <input id="input4" is="core-input" value="something">
 | |
|   </paper-input-decorator>
 | |
| 
 | |
|   <br>
 | |
| 
 | |
|   <paper-input-decorator id="decorator5" label="input" labelVisible="false">
 | |
|     <input>
 | |
|   </paper-input-decorator>
 | |
| 
 | |
|   <br>
 | |
| 
 | |
|   <script>
 | |
| 
 | |
|     var fake = new Fake();
 | |
| 
 | |
|     var d1 = document.getElementById('decorator1');
 | |
|     var i1 = document.getElementById('input1');
 | |
|     var d2 = document.getElementById('decorator2');
 | |
|     var d3 = document.getElementById('decorator3');
 | |
|     var i3 = document.getElementById('input3');
 | |
|     var d4 = document.getElementById('decorator4');
 | |
|     var i4 = document.getElementById('input4');
 | |
|     var d5 = document.getElementById('decorator5');
 | |
| 
 | |
|     function reset(d, i) {
 | |
|       d.labelVisible = null;
 | |
|       i.value = null;
 | |
|       d.updateLabelVisibility(i.value);
 | |
|     }
 | |
| 
 | |
|     suite('basic', function() {
 | |
| 
 | |
|       teardown(function() {
 | |
|         reset(d1, i1);
 | |
|         reset(d3, i3);
 | |
|       });
 | |
| 
 | |
|       test('label is invisible if value is not null', function() {
 | |
|         assert.ok(d1._labelVisible);
 | |
|         i1.value = 'foobar';
 | |
|         d1.updateLabelVisibility(i1.value);
 | |
|         assert.ok(!d1._labelVisible);
 | |
|       });
 | |
| 
 | |
|       test('label is invisible if floating label and focused', function(done) {
 | |
|         assert.ok(d3._labelVisible);
 | |
|         d3.focusAction();
 | |
|         flush(function() {
 | |
|           assert.ok(!d3._labelVisible);
 | |
|           done();
 | |
|         });
 | |
|       });
 | |
| 
 | |
|       test('label is invisible if value = 0', function() {
 | |
|         assert.ok(d1._labelVisible);
 | |
|         i1.value = 0;
 | |
|         d1.updateLabelVisibility(i1.value);
 | |
|         assert.ok(!d1._labelVisible);
 | |
|       });
 | |
| 
 | |
|       test('labelVisible overrides label visibility', function() {
 | |
|         d1.labelVisible = false;
 | |
|         assert.ok(!i1.value);
 | |
|         assert.ok(!d1._labelVisible);
 | |
|       });
 | |
| 
 | |
|       test('labelVisible works in an attribute', function() {
 | |
|         assert.ok(!d5._labelVisible);
 | |
|       });
 | |
| 
 | |
|       test('can create inputs lazily', function() {
 | |
|         var input = document.createElement('input');
 | |
|         input.value = 'foobar';
 | |
|         d2.appendChild(input);
 | |
|         assert.ok(!d2._labelVisible);
 | |
|       });
 | |
| 
 | |
|       test('tapping on floating label focuses input', function(done) {
 | |
|         i3.value = 'foobar';
 | |
|         flush(function() {
 | |
|           assert.ok(!d3._labelVisible);
 | |
|           fake.downOnNode(d1.shadowRoot.querySelector('.floated-label'));
 | |
|           flush(function() {
 | |
|             assert.strictEqual(window.ShadowDOMPolyfill ? wrap(document.activeElement) : document.activeElement, i1);
 | |
|             done();
 | |
|           })
 | |
|         });
 | |
|       });
 | |
| 
 | |
|       test('floating label and the error message are the same color', function() {
 | |
|         var s1 = getComputedStyle(d4.$.floatedLabelText);
 | |
|         var s2 = getComputedStyle(d4.shadowRoot.querySelector('.error-text'));
 | |
|         assert.strictEqual(s1.color, s2.color);
 | |
|       });
 | |
| 
 | |
|     });
 | |
| 
 | |
|   </script>
 | |
| 
 | |
| </body>
 | |
| </html> |