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> |