Revert "Update iron-input to 2.0"
This reverts commit 37636a6256.
Reason for revert: The googlesource.com environment is not ready for
this yet.
I didn't realize that we couldn't yet use the hybrid version of the
elements in google3 yet. They exist in the polymer2 directory, but
apparently that depends on using polymer2. This change will need to be
reverted until iron-input v1 is updated to get the polymer2 "hybrid"
version.
Change-Id: Ibeeae2458337b0a225993e12b043b1e65c3c4c04
This commit is contained in:
committed by
Kasper Nilsson
parent
73ab856329
commit
10de103815
@@ -1062,8 +1062,8 @@ bower_archive(
|
|||||||
bower_archive(
|
bower_archive(
|
||||||
name = "iron-input",
|
name = "iron-input",
|
||||||
package = "polymerelements/iron-input",
|
package = "polymerelements/iron-input",
|
||||||
sha1 = "42f233d8adf3883bcce2fa364c7785a5d2571db4",
|
sha1 = "9bc0c8e81de2527125383cbcf74dd9f27e7fa9ac",
|
||||||
version = "2.0.0",
|
version = "1.0.10",
|
||||||
)
|
)
|
||||||
|
|
||||||
bower_archive(
|
bower_archive(
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ def load_bower_archives():
|
|||||||
bower_archive(
|
bower_archive(
|
||||||
name = "iron-a11y-announcer",
|
name = "iron-a11y-announcer",
|
||||||
package = "iron-a11y-announcer",
|
package = "iron-a11y-announcer",
|
||||||
version = "2.0.0",
|
version = "1.0.5",
|
||||||
sha1 = "8a7cc8d63eab3c068e0f8fcf4bf129a85922edc6")
|
sha1 = "007902c041dd8863a1fe893f62450852f4d8c69b")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "iron-a11y-keys-behavior",
|
name = "iron-a11y-keys-behavior",
|
||||||
package = "iron-a11y-keys-behavior",
|
package = "iron-a11y-keys-behavior",
|
||||||
@@ -35,38 +35,38 @@ def load_bower_archives():
|
|||||||
bower_archive(
|
bower_archive(
|
||||||
name = "iron-behaviors",
|
name = "iron-behaviors",
|
||||||
package = "iron-behaviors",
|
package = "iron-behaviors",
|
||||||
version = "1.0.18",
|
version = "1.0.17",
|
||||||
sha1 = "e231a1a02b090f5183db917639fdb96cdd0dca18")
|
sha1 = "47df7e1c2b97978dcafa13edb50fbdb702570acd")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "iron-fit-behavior",
|
name = "iron-fit-behavior",
|
||||||
package = "iron-fit-behavior",
|
package = "iron-fit-behavior",
|
||||||
version = "1.2.7",
|
version = "1.2.6",
|
||||||
sha1 = "01c485fbf898307029bbb72ac7e132db1570a842")
|
sha1 = "59daa8526aac59aa72b8edcbbd24d9eed555a0f5")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "iron-flex-layout",
|
name = "iron-flex-layout",
|
||||||
package = "iron-flex-layout",
|
package = "iron-flex-layout",
|
||||||
version = "1.3.7",
|
version = "1.3.2",
|
||||||
sha1 = "4d4cf3232cf750a17a7df0a37476117f831ac633")
|
sha1 = "b896041aad049a5e889a0165828d7b1262e32612")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "iron-form-element-behavior",
|
name = "iron-form-element-behavior",
|
||||||
package = "iron-form-element-behavior",
|
package = "iron-form-element-behavior",
|
||||||
version = "1.0.7",
|
version = "1.0.6",
|
||||||
sha1 = "7b5a79e02cc32f0918725dd26925d0df1e03ed12")
|
sha1 = "8d9e6530edc1b99bec1a5c34853911fba3701220")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "iron-meta",
|
name = "iron-meta",
|
||||||
package = "iron-meta",
|
package = "iron-meta",
|
||||||
version = "1.1.3",
|
version = "1.1.2",
|
||||||
sha1 = "f77eba3f6f6817f10bda33918bde8f963d450041")
|
sha1 = "dc22fe05e1cb5f94f30a7193d3433ca1808773b8")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "iron-resizable-behavior",
|
name = "iron-resizable-behavior",
|
||||||
package = "iron-resizable-behavior",
|
package = "iron-resizable-behavior",
|
||||||
version = "1.0.6",
|
version = "1.0.5",
|
||||||
sha1 = "719c2a8a1a784f8aefcdeef41fcc2e5a03518d9e")
|
sha1 = "2ebe983377dceb3794dd335131050656e23e2beb")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "iron-validatable-behavior",
|
name = "iron-validatable-behavior",
|
||||||
package = "iron-validatable-behavior",
|
package = "iron-validatable-behavior",
|
||||||
version = "1.1.2",
|
version = "1.1.1",
|
||||||
sha1 = "7111f34ff32e1510131dfbdb1eaa51bfa291e8be")
|
sha1 = "480423380be0536f948735d91bc472f6e7ced5b4")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "lodash",
|
name = "lodash",
|
||||||
package = "lodash",
|
package = "lodash",
|
||||||
@@ -75,18 +75,18 @@ def load_bower_archives():
|
|||||||
bower_archive(
|
bower_archive(
|
||||||
name = "mocha",
|
name = "mocha",
|
||||||
package = "mocha",
|
package = "mocha",
|
||||||
version = "3.4.2",
|
version = "3.2.0",
|
||||||
sha1 = "dfa9fd7705c541e8df3bfa22ca83789920024258")
|
sha1 = "b77f23f7ad1f1363501bcae96f0f4f47745dad0f")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "neon-animation",
|
name = "neon-animation",
|
||||||
package = "neon-animation",
|
package = "neon-animation",
|
||||||
version = "1.2.5",
|
version = "1.2.4",
|
||||||
sha1 = "588d289f779d02b21ce5b676e257bbd6155649e8")
|
sha1 = "e8ccbb930c4b7ff470b1450baa901618888a7fd3")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "sinon-chai",
|
name = "sinon-chai",
|
||||||
package = "sinon-chai",
|
package = "sinon-chai",
|
||||||
version = "2.11.0",
|
version = "2.8.0",
|
||||||
sha1 = "3facb0ee3d4e06b8cd444c76e2fcb6d8b2ae3091")
|
sha1 = "0464b5d944fdf8116bb23e0b02ecfbac945b3517")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "sinonjs",
|
name = "sinonjs",
|
||||||
package = "sinonjs",
|
package = "sinonjs",
|
||||||
@@ -100,8 +100,8 @@ def load_bower_archives():
|
|||||||
bower_archive(
|
bower_archive(
|
||||||
name = "web-animations-js",
|
name = "web-animations-js",
|
||||||
package = "web-animations-js",
|
package = "web-animations-js",
|
||||||
version = "2.2.5",
|
version = "2.2.2",
|
||||||
sha1 = "078116d92a15ec4def5ca2be2cd09b331efc1eb7")
|
sha1 = "6276a9f227da7d4ccaf77c202b50e174dd11a2c2")
|
||||||
bower_archive(
|
bower_archive(
|
||||||
name = "webcomponentsjs",
|
name = "webcomponentsjs",
|
||||||
package = "webcomponentsjs",
|
package = "webcomponentsjs",
|
||||||
|
|||||||
@@ -167,6 +167,12 @@ def define_bower_components():
|
|||||||
license = "//lib:LICENSE-page.js",
|
license = "//lib:LICENSE-page.js",
|
||||||
seed = True,
|
seed = True,
|
||||||
)
|
)
|
||||||
|
bower_component(
|
||||||
|
name = "polymer",
|
||||||
|
license = "//lib:LICENSE-polymer",
|
||||||
|
deps = [ ":webcomponentsjs" ],
|
||||||
|
seed = True,
|
||||||
|
)
|
||||||
bower_component(
|
bower_component(
|
||||||
name = "polymer-resin",
|
name = "polymer-resin",
|
||||||
license = "//lib:LICENSE-polymer",
|
license = "//lib:LICENSE-polymer",
|
||||||
@@ -176,12 +182,6 @@ def define_bower_components():
|
|||||||
],
|
],
|
||||||
seed = True,
|
seed = True,
|
||||||
)
|
)
|
||||||
bower_component(
|
|
||||||
name = "polymer",
|
|
||||||
license = "//lib:LICENSE-polymer",
|
|
||||||
deps = [ ":webcomponentsjs" ],
|
|
||||||
seed = True,
|
|
||||||
)
|
|
||||||
bower_component(
|
bower_component(
|
||||||
name = "promise-polyfill",
|
name = "promise-polyfill",
|
||||||
license = "//lib:LICENSE-promise-polyfill",
|
license = "//lib:LICENSE-promise-polyfill",
|
||||||
|
|||||||
@@ -38,11 +38,10 @@ limitations under the License.
|
|||||||
<div id="form">
|
<div id="form">
|
||||||
<section>
|
<section>
|
||||||
<span class="title">Group name</span>
|
<span class="title">Group name</span>
|
||||||
<iron-input
|
<input
|
||||||
|
is="iron-input"
|
||||||
id="groupNameInput"
|
id="groupNameInput"
|
||||||
bind-value="{{_name}}">
|
bind-value="{{_name}}">
|
||||||
<input type="text">
|
|
||||||
</iron-input>
|
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
notify: true,
|
notify: true,
|
||||||
value: false,
|
value: false,
|
||||||
},
|
},
|
||||||
_name: String,
|
_name: Object,
|
||||||
_groupCreated: {
|
_groupCreated: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
value: false,
|
value: false,
|
||||||
|
|||||||
@@ -50,14 +50,13 @@ limitations under the License.
|
|||||||
sandbox.restore();
|
sandbox.restore();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('name is updated correctly', done => {
|
test('name is updated correctly', () => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
assert.isFalse(element.hasNewGroupName);
|
assert.isFalse(element.hasNewGroupName);
|
||||||
|
|
||||||
element.$.groupNameInput.bindValue = GROUP_NAME;
|
element.$.groupNameInput.bindValue = GROUP_NAME;
|
||||||
|
|
||||||
assert.isTrue(element.hasNewGroupName);
|
assert.isTrue(element.hasNewGroupName);
|
||||||
assert.deepEqual(element._name, GROUP_NAME);
|
assert.deepEqual(element._name, GROUP_NAME);
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('test for redirecting to group on successful creation', done => {
|
test('test for redirecting to group on successful creation', done => {
|
||||||
|
|||||||
@@ -53,11 +53,10 @@ limitations under the License.
|
|||||||
<div id="form">
|
<div id="form">
|
||||||
<section>
|
<section>
|
||||||
<span class="title">Project name</span>
|
<span class="title">Project name</span>
|
||||||
<iron-input
|
<input is="iron-input"
|
||||||
id="projectNameInput"
|
id="projectNameInput"
|
||||||
|
autocomplete="on"
|
||||||
bind-value="{{_projectConfig.name}}">
|
bind-value="{{_projectConfig.name}}">
|
||||||
<input autocomplete="on">
|
|
||||||
</iron-input>
|
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<span class="title">Rights inherit from</span>
|
<span class="title">Rights inherit from</span>
|
||||||
|
|||||||
@@ -170,13 +170,12 @@ limitations under the License.
|
|||||||
<section>
|
<section>
|
||||||
<span class="title">Maximum Git object size limit</span>
|
<span class="title">Maximum Git object size limit</span>
|
||||||
<span class="value">
|
<span class="value">
|
||||||
<iron-input
|
|
||||||
id="maxGitObjSizeInput"
|
|
||||||
bind-value="{{_projectConfig.max_object_size_limit.configured_value}}">
|
|
||||||
<input
|
<input
|
||||||
|
id="maxGitObjSizeInput"
|
||||||
|
bind-value="{{_projectConfig.max_object_size_limit.configured_value}}"
|
||||||
|
is="iron-input"
|
||||||
type="text"
|
type="text"
|
||||||
disabled$="[[_readOnly]]">
|
disabled$="[[_readOnly]]">
|
||||||
</iron-input>
|
|
||||||
</span>
|
</span>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
|||||||
@@ -194,7 +194,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
_handleInputKeydown(e) {
|
_handleInputKeydown(e) {
|
||||||
const input = e.detail.input.inputElement;
|
const input = e.detail.input;
|
||||||
if (input.selectionStart !== input.selectionEnd ||
|
if (input.selectionStart !== input.selectionEnd ||
|
||||||
input.selectionStart !== 0) {
|
input.selectionStart !== 0) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -329,41 +329,34 @@ limitations under the License.
|
|||||||
});
|
});
|
||||||
|
|
||||||
suite('keyboard interactions', () => {
|
suite('keyboard interactions', () => {
|
||||||
test('backspace at text input start removes last account', done => {
|
test('backspace at text input start removes last account', () => {
|
||||||
Polymer.Base.async(() => {
|
const input = element.$.entry.$.input;
|
||||||
const autocomplete = element.$.entry.$.input;
|
|
||||||
sandbox.stub(element.$.entry, '_getReviewerSuggestions');
|
sandbox.stub(element.$.entry, '_getReviewerSuggestions');
|
||||||
sandbox.stub(autocomplete, '_updateSuggestions');
|
sandbox.stub(input, '_updateSuggestions');
|
||||||
sandbox.stub(element, '_computeRemovable').returns(true);
|
sandbox.stub(element, '_computeRemovable').returns(true);
|
||||||
// Next line is a workaround for Firefix not moving cursor
|
// Next line is a workaround for Firefix not moving cursor
|
||||||
// on input field update
|
// on input field update
|
||||||
assert.equal(autocomplete.$.input.inputElement.selectionStart, 0);
|
assert.equal(input.$.input.selectionStart, 0);
|
||||||
autocomplete.text = 'test';
|
input.text = 'test';
|
||||||
MockInteractions.focus(autocomplete.$.input.inputElement);
|
MockInteractions.focus(input.$.input);
|
||||||
flushAsynchronousOperations();
|
flushAsynchronousOperations();
|
||||||
assert.equal(element.accounts.length, 2);
|
assert.equal(element.accounts.length, 2);
|
||||||
MockInteractions.pressAndReleaseKeyOn(
|
MockInteractions.pressAndReleaseKeyOn(input.$.input, 8); // Backspace
|
||||||
autocomplete.$.input.inputElement, 8); // Backspace
|
|
||||||
assert.equal(element.accounts.length, 2);
|
assert.equal(element.accounts.length, 2);
|
||||||
autocomplete.text = '';
|
input.text = '';
|
||||||
MockInteractions.pressAndReleaseKeyOn(
|
MockInteractions.pressAndReleaseKeyOn(input.$.input, 8); // Backspace
|
||||||
autocomplete.$.input.inputElement, 8); // Backspace
|
|
||||||
assert.equal(element.accounts.length, 1);
|
assert.equal(element.accounts.length, 1);
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('arrow key navigation', done => {
|
test('arrow key navigation', () => {
|
||||||
Polymer.Base.async(() => {
|
const input = element.$.entry.$.input;
|
||||||
const autocomplete = element.$.entry.$.input;
|
input.text = '';
|
||||||
autocomplete.text = '';
|
|
||||||
element.accounts = [makeAccount(), makeAccount()];
|
element.accounts = [makeAccount(), makeAccount()];
|
||||||
MockInteractions.focus(autocomplete.$.input);
|
MockInteractions.focus(input.$.input);
|
||||||
flushAsynchronousOperations();
|
flushAsynchronousOperations();
|
||||||
const chips = element.accountChips;
|
const chips = element.accountChips;
|
||||||
const chipsOneSpy = sandbox.spy(chips[1], 'focus');
|
const chipsOneSpy = sandbox.spy(chips[1], 'focus');
|
||||||
MockInteractions.pressAndReleaseKeyOn(
|
MockInteractions.pressAndReleaseKeyOn(input.$.input, 37); // Left
|
||||||
autocomplete.$.input.inputElement, 37); // Left
|
|
||||||
assert.isTrue(chipsOneSpy.called);
|
assert.isTrue(chipsOneSpy.called);
|
||||||
const chipsZeroSpy = sandbox.spy(chips[0], 'focus');
|
const chipsZeroSpy = sandbox.spy(chips[0], 'focus');
|
||||||
MockInteractions.pressAndReleaseKeyOn(chips[1], 37); // Left
|
MockInteractions.pressAndReleaseKeyOn(chips[1], 37); // Left
|
||||||
@@ -372,8 +365,6 @@ limitations under the License.
|
|||||||
assert.isTrue(chipsZeroSpy.calledOnce);
|
assert.isTrue(chipsZeroSpy.calledOnce);
|
||||||
MockInteractions.pressAndReleaseKeyOn(chips[0], 39); // Right
|
MockInteractions.pressAndReleaseKeyOn(chips[0], 39); // Right
|
||||||
assert.isTrue(chipsOneSpy.calledTwice);
|
assert.isTrue(chipsOneSpy.calledTwice);
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('delete', done => {
|
test('delete', done => {
|
||||||
|
|||||||
@@ -61,11 +61,11 @@ limitations under the License.
|
|||||||
<label for="branchInput">
|
<label for="branchInput">
|
||||||
Cherry Pick to branch
|
Cherry Pick to branch
|
||||||
</label>
|
</label>
|
||||||
<iron-input
|
<input is="iron-input"
|
||||||
|
type="text"
|
||||||
id="branchInput"
|
id="branchInput"
|
||||||
bind-value="{{branch}}">
|
bind-value="{{branch}}"
|
||||||
<input type="text" placeholder="Destination branch">
|
placeholder="Destination branch">
|
||||||
</iron-input>
|
|
||||||
<label for="messageInput">
|
<label for="messageInput">
|
||||||
Cherry Pick Commit Message
|
Cherry Pick Commit Message
|
||||||
</label>
|
</label>
|
||||||
|
|||||||
@@ -98,12 +98,12 @@ limitations under the License.
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="parentRevisionContainer">
|
<div class="parentRevisionContainer">
|
||||||
<iron-input
|
<input is="iron-input"
|
||||||
|
type="text"
|
||||||
id="parentInput"
|
id="parentInput"
|
||||||
bind-value="{{base}}"
|
bind-value="{{base}}"
|
||||||
on-tap="_handleEnterChangeNumberTap">
|
on-tap="_handleEnterChangeNumberTap"
|
||||||
<input type="text" placeholder="Change number">
|
placeholder="Change number">
|
||||||
</iron-input>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</gr-confirm-dialog>
|
</gr-confirm-dialog>
|
||||||
|
|||||||
@@ -395,14 +395,10 @@
|
|||||||
.focus.bind(textarea.getNativeTextarea()));
|
.focus.bind(textarea.getNativeTextarea()));
|
||||||
} else if (section === FocusTarget.REVIEWERS) {
|
} else if (section === FocusTarget.REVIEWERS) {
|
||||||
const reviewerEntry = this.$.reviewers.focusStart;
|
const reviewerEntry = this.$.reviewers.focusStart;
|
||||||
Polymer.Base.async(() => {
|
reviewerEntry.async(reviewerEntry.focus);
|
||||||
reviewerEntry.inputElement.focus();
|
|
||||||
}, 1);
|
|
||||||
} else if (section === FocusTarget.CCS) {
|
} else if (section === FocusTarget.CCS) {
|
||||||
const ccEntry = this.$$('#ccs').focusStart;
|
const ccEntry = this.$$('#ccs').focusStart;
|
||||||
Polymer.Base.async(() => {
|
ccEntry.async(ccEntry.focus);
|
||||||
ccEntry.inputElement.focus();
|
|
||||||
}, 1);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -267,14 +267,6 @@ limitations under the License.
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function testAsync(testFunc) {
|
|
||||||
return new Promise(resolve => {
|
|
||||||
Polymer.Base.async(() => {
|
|
||||||
resolve(testFunc());
|
|
||||||
}, 1);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function testConfirmationDialog(done, cc) {
|
function testConfirmationDialog(done, cc) {
|
||||||
const yesButton =
|
const yesButton =
|
||||||
element.$$('.reviewerConfirmationButtons gr-button:first-child');
|
element.$$('.reviewerConfirmationButtons gr-button:first-child');
|
||||||
@@ -326,11 +318,10 @@ limitations under the License.
|
|||||||
MockInteractions.tap(noButton); // close the overlay
|
MockInteractions.tap(noButton); // close the overlay
|
||||||
return observer;
|
return observer;
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
return testAsync(() => {
|
|
||||||
assert.isFalse(isVisible(element.$.reviewerConfirmationOverlay));
|
assert.isFalse(isVisible(element.$.reviewerConfirmationOverlay));
|
||||||
|
|
||||||
// We should be focused on account entry input.
|
// We should be focused on account entry input.
|
||||||
assert.equal(getActiveElement().tagName, 'INPUT');
|
assert.equal(getActiveElement().id, 'input');
|
||||||
|
|
||||||
// No reviewer/CC should have been added.
|
// No reviewer/CC should have been added.
|
||||||
assert.equal(element.$$('#ccs').additions().length, 0);
|
assert.equal(element.$$('#ccs').additions().length, 0);
|
||||||
@@ -350,14 +341,12 @@ limitations under the License.
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
return observer;
|
return observer;
|
||||||
});
|
}).then(() => {
|
||||||
}).then(x => {
|
|
||||||
assert.isTrue(isVisible(element.$.reviewerConfirmationOverlay));
|
assert.isTrue(isVisible(element.$.reviewerConfirmationOverlay));
|
||||||
observer = overlayObserver('closed');
|
observer = overlayObserver('closed');
|
||||||
MockInteractions.tap(yesButton); // Confirm the group.
|
MockInteractions.tap(yesButton); // Confirm the group.
|
||||||
return observer;
|
return observer;
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
return testAsync(() => {
|
|
||||||
assert.isFalse(isVisible(element.$.reviewerConfirmationOverlay));
|
assert.isFalse(isVisible(element.$.reviewerConfirmationOverlay));
|
||||||
const additions = cc ?
|
const additions = cc ?
|
||||||
element.$$('#ccs').additions() :
|
element.$$('#ccs').additions() :
|
||||||
@@ -377,8 +366,7 @@ limitations under the License.
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
// We should be focused on account entry input.
|
// We should be focused on account entry input.
|
||||||
assert.equal(getActiveElement().tagName, 'INPUT');
|
assert.equal(getActiveElement().id, 'input');
|
||||||
});
|
|
||||||
}).then(done);
|
}).then(done);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ limitations under the License.
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('enter in search input triggers nav', done => {
|
test('enter in search input triggers nav', done => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
sinon.stub(page, 'show', () => {
|
sinon.stub(page, 'show', () => {
|
||||||
page.show.restore();
|
page.show.restore();
|
||||||
assert.notEqual(getActiveElement(), element.$.searchInput);
|
assert.notEqual(getActiveElement(), element.$.searchInput);
|
||||||
@@ -73,39 +72,28 @@ limitations under the License.
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
element.value = 'test';
|
element.value = 'test';
|
||||||
MockInteractions.pressAndReleaseKeyOn(
|
MockInteractions.pressAndReleaseKeyOn(element.$.searchInput.$.input, 13,
|
||||||
element.$.searchInput.$.input.inputElement, 13,
|
|
||||||
null, 'enter');
|
null, 'enter');
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('search query should be double-escaped', done => {
|
test('search query should be double-escaped', () => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
const showStub = sinon.stub(page, 'show');
|
const showStub = sinon.stub(page, 'show');
|
||||||
element.$.searchInput.text = 'fate/stay';
|
element.$.searchInput.text = 'fate/stay';
|
||||||
MockInteractions.pressAndReleaseKeyOn(
|
MockInteractions.pressAndReleaseKeyOn(element.$.searchInput.$.input, 13,
|
||||||
element.$.searchInput.$.input.inputElement, 13,
|
|
||||||
null, 'enter');
|
null, 'enter');
|
||||||
assert.equal(showStub.lastCall.args[0], '/q/fate%252Fstay');
|
assert.equal(showStub.lastCall.args[0], '/q/fate%252Fstay');
|
||||||
showStub.restore();
|
showStub.restore();
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('input blurred after commit', done => {
|
test('input blurred after commit', () => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
const showStub = sinon.stub(page, 'show');
|
const showStub = sinon.stub(page, 'show');
|
||||||
const blurSpy = sinon.spy(
|
const blurSpy = sinon.spy(element.$.searchInput.$.input, 'blur');
|
||||||
element.$.searchInput.$.input, 'blur');
|
|
||||||
element.$.searchInput.text = 'fate/stay';
|
element.$.searchInput.text = 'fate/stay';
|
||||||
MockInteractions.pressAndReleaseKeyOn(
|
MockInteractions.pressAndReleaseKeyOn(element.$.searchInput.$.input, 13,
|
||||||
element.$.searchInput.$.input.inputElement, 13,
|
|
||||||
null, 'enter');
|
null, 'enter');
|
||||||
assert.isTrue(blurSpy.called);
|
assert.isTrue(blurSpy.called);
|
||||||
showStub.restore();
|
showStub.restore();
|
||||||
blurSpy.restore();
|
blurSpy.restore();
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('empty search query does not trigger nav', () => {
|
test('empty search query does not trigger nav', () => {
|
||||||
@@ -116,14 +104,12 @@ limitations under the License.
|
|||||||
assert.isFalse(showSpy.called);
|
assert.isFalse(showSpy.called);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('keyboard shortcuts', done => {
|
test('keyboard shortcuts', () => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
const focusSpy = sinon.spy(element.$.searchInput, 'focus');
|
const focusSpy = sinon.spy(element.$.searchInput, 'focus');
|
||||||
const selectAllSpy = sinon.spy(element.$.searchInput, 'selectAll');
|
const selectAllSpy = sinon.spy(element.$.searchInput, 'selectAll');
|
||||||
MockInteractions.pressAndReleaseKeyOn(document.body, 191, null, '/');
|
MockInteractions.pressAndReleaseKeyOn(document.body, 191, null, '/');
|
||||||
assert.isTrue(focusSpy.called);
|
assert.isTrue(focusSpy.called);
|
||||||
assert.isTrue(selectAllSpy.called); done();
|
assert.isTrue(selectAllSpy.called);
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
suite('_getSearchSuggestions', () => {
|
suite('_getSearchSuggestions', () => {
|
||||||
|
|||||||
@@ -93,58 +93,49 @@ limitations under the License.
|
|||||||
</div>
|
</div>
|
||||||
<div class="pref">
|
<div class="pref">
|
||||||
<label for="lineWrappingInput">Fit to screen</label>
|
<label for="lineWrappingInput">Fit to screen</label>
|
||||||
<input type="checkbox"
|
<input
|
||||||
|
is="iron-input"
|
||||||
|
type="checkbox"
|
||||||
id="lineWrappingInput"
|
id="lineWrappingInput"
|
||||||
on-tap="_handlelineWrappingTap">
|
on-tap="_handlelineWrappingTap">
|
||||||
</div>
|
</div>
|
||||||
<div class="pref" id="columnsPref"
|
<div class="pref" id="columnsPref"
|
||||||
hidden$="[[_newPrefs.line_wrapping]]">
|
hidden$="[[_newPrefs.line_wrapping]]">
|
||||||
<label for="columnsInput">Diff width</label>
|
<label for="columnsInput">Diff width</label>
|
||||||
<iron-input
|
<input is="iron-input" type="number" id="columnsInput"
|
||||||
id="columnsInput"
|
prevent-invalid-input
|
||||||
bind-value="{{_newPrefs.line_length}}"
|
allowed-pattern="[0-9]"
|
||||||
allowed-pattern="[0-9]">
|
bind-value="{{_newPrefs.line_length}}">
|
||||||
<input type="number">
|
|
||||||
</iron-input>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="pref">
|
<div class="pref">
|
||||||
<label for="tabSizeInput">Tab width</label>
|
<label for="tabSizeInput">Tab width</label>
|
||||||
<iron-input
|
<input is="iron-input" type="number" id="tabSizeInput"
|
||||||
id="tabSizeInput"
|
prevent-invalid-input
|
||||||
allowed-pattern="[0-9]"
|
allowed-pattern="[0-9]"
|
||||||
bind-value="{{_newPrefs.tab_size}}">
|
bind-value="{{_newPrefs.tab_size}}">
|
||||||
<input type="number">
|
|
||||||
</iron-input>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="pref" hidden$="[[!_newPrefs.font_size]]">
|
<div class="pref" hidden$="[[!_newPrefs.font_size]]">
|
||||||
<label for="fontSizeInput">Font size</label>
|
<label for="fontSizeInput">Font size</label>
|
||||||
<iron-input
|
<input is="iron-input" type="number" id="fontSizeInput"
|
||||||
id="fontSizeInput"
|
prevent-invalid-input
|
||||||
allowed-pattern="[0-9]"
|
allowed-pattern="[0-9]"
|
||||||
bind-value="{{_newPrefs.font_size}}">
|
bind-value="{{_newPrefs.font_size}}">
|
||||||
<input type="number">
|
|
||||||
</iron-input>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="pref">
|
<div class="pref">
|
||||||
<label for="showTabsInput">Show tabs</label>
|
<label for="showTabsInput">Show tabs</label>
|
||||||
<input
|
<input is="iron-input" type="checkbox" id="showTabsInput"
|
||||||
type="checkbox"
|
|
||||||
id="showTabsInput"
|
|
||||||
on-tap="_handleShowTabsTap">
|
on-tap="_handleShowTabsTap">
|
||||||
</div>
|
</div>
|
||||||
<div class="pref">
|
<div class="pref">
|
||||||
<label for="showTrailingWhitespaceInput">
|
<label for="showTrailingWhitespaceInput">
|
||||||
Show trailing whitespace</label>
|
Show trailing whitespace</label>
|
||||||
<input
|
<input is="iron-input" type="checkbox"
|
||||||
id="showTrailingWhitespaceInput"
|
id="showTrailingWhitespaceInput"
|
||||||
type="checkbox"
|
|
||||||
on-tap="_handleShowTrailingWhitespaceTap">
|
on-tap="_handleShowTrailingWhitespaceTap">
|
||||||
</div>
|
</div>
|
||||||
<div class="pref">
|
<div class="pref">
|
||||||
<label for="syntaxHighlightInput">Syntax highlighting</label>
|
<label for="syntaxHighlightInput">Syntax highlighting</label>
|
||||||
<input
|
<input is="iron-input" type="checkbox" id="syntaxHighlightInput"
|
||||||
id="syntaxHighlightInput"
|
|
||||||
type="checkbox"
|
|
||||||
on-tap="_handleSyntaxHighlightTap">
|
on-tap="_handleSyntaxHighlightTap">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -45,8 +45,7 @@ limitations under the License.
|
|||||||
sandbox.restore();
|
sandbox.restore();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('model changes', done => {
|
test('model changes', () => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
element.prefs = {
|
element.prefs = {
|
||||||
context: 10,
|
context: 10,
|
||||||
font_size: 12,
|
font_size: 12,
|
||||||
@@ -76,8 +75,6 @@ limitations under the License.
|
|||||||
assert.isFalse(element._newPrefs.show_whitespace_errors);
|
assert.isFalse(element._newPrefs.show_whitespace_errors);
|
||||||
assert.isTrue(element._newPrefs.line_wrapping);
|
assert.isTrue(element._newPrefs.line_wrapping);
|
||||||
assert.isFalse(element._newPrefs.syntax_highlighting);
|
assert.isFalse(element._newPrefs.syntax_highlighting);
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('clicking fit to screen hides line length input', () => {
|
test('clicking fit to screen hides line length input', () => {
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ limitations under the License.
|
|||||||
|
|
||||||
<link rel="import" href="../../../bower_components/polymer/polymer.html">
|
<link rel="import" href="../../../bower_components/polymer/polymer.html">
|
||||||
|
|
||||||
<link rel="import" href="../../../bower_components/iron-input/iron-input.html">
|
|
||||||
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
|
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
|
||||||
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
|
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
|
||||||
|
|
||||||
@@ -57,24 +56,23 @@ limitations under the License.
|
|||||||
<span
|
<span
|
||||||
hidden$="[[!mutable]]"
|
hidden$="[[!mutable]]"
|
||||||
class="value">
|
class="value">
|
||||||
<iron-input
|
<input
|
||||||
|
is="iron-input"
|
||||||
id="nameInput"
|
id="nameInput"
|
||||||
|
disabled="[[_saving]]"
|
||||||
|
on-keydown="_handleKeydown"
|
||||||
bind-value="{{_account.name}}">
|
bind-value="{{_account.name}}">
|
||||||
<input disabled="[[_saving]]"
|
|
||||||
on-keydown="_handleKeydown">
|
|
||||||
</iron-input>
|
|
||||||
</span>
|
</span>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<span class="title">Status</span>
|
<span class="title">Status</span>
|
||||||
<span class="value">
|
<span class="value">
|
||||||
<iron-input
|
|
||||||
id="statusInput"
|
|
||||||
bind-value="{{_account.status}}">
|
|
||||||
<input
|
<input
|
||||||
|
is="iron-input"
|
||||||
|
id="statusInput"
|
||||||
disabled="[[_saving]]"
|
disabled="[[_saving]]"
|
||||||
on-keydown="_handleKeydown">
|
on-keydown="_handleKeydown"
|
||||||
</iron-input>
|
bind-value="{{_account.status}}">
|
||||||
</span>
|
</span>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -128,7 +128,6 @@ limitations under the License.
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('name', done => {
|
test('name', done => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
assert.isTrue(element.mutable);
|
assert.isTrue(element.mutable);
|
||||||
assert.isFalse(element.hasUnsavedChanges);
|
assert.isFalse(element.hasUnsavedChanges);
|
||||||
|
|
||||||
@@ -138,8 +137,7 @@ limitations under the License.
|
|||||||
assert.isFalse(statusChangedSpy.called);
|
assert.isFalse(statusChangedSpy.called);
|
||||||
assert.isTrue(element.hasUnsavedChanges);
|
assert.isTrue(element.hasUnsavedChanges);
|
||||||
|
|
||||||
MockInteractions.pressAndReleaseKeyOn(
|
MockInteractions.pressAndReleaseKeyOn(element.$.nameInput, 13);
|
||||||
element.$.nameInput.inputElement, 13);
|
|
||||||
|
|
||||||
assert.isTrue(nameStub.called);
|
assert.isTrue(nameStub.called);
|
||||||
assert.isFalse(statusStub.called);
|
assert.isFalse(statusStub.called);
|
||||||
@@ -147,7 +145,6 @@ limitations under the License.
|
|||||||
assert.equal(nameStub.lastCall.args[0], 'new name');
|
assert.equal(nameStub.lastCall.args[0], 'new name');
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('status', done => {
|
test('status', done => {
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ limitations under the License.
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<link rel="import" href="../../../bower_components/polymer/polymer.html">
|
<link rel="import" href="../../../bower_components/polymer/polymer.html">
|
||||||
|
<link rel="import" href="../../../bower_components/iron-input/iron-input.html">
|
||||||
<link rel="import" href="../../shared/gr-button/gr-button.html">
|
<link rel="import" href="../../shared/gr-button/gr-button.html">
|
||||||
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
|
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
|
||||||
<link rel="import" href="../../../styles/shared-styles.html">
|
<link rel="import" href="../../../styles/shared-styles.html">
|
||||||
@@ -62,6 +63,7 @@ limitations under the License.
|
|||||||
<td class="emailColumn">[[item.email]]</td>
|
<td class="emailColumn">[[item.email]]</td>
|
||||||
<td class="preferredControl" on-tap="_handlePreferredControlTap">
|
<td class="preferredControl" on-tap="_handlePreferredControlTap">
|
||||||
<input
|
<input
|
||||||
|
is="iron-input"
|
||||||
class="preferredRadio"
|
class="preferredRadio"
|
||||||
type="radio"
|
type="radio"
|
||||||
on-change="_handlePreferredChange"
|
on-change="_handlePreferredChange"
|
||||||
|
|||||||
@@ -81,22 +81,19 @@ limitations under the License.
|
|||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th>
|
||||||
<iron-input bind-value="{{_newName}}">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
is="iron-input"
|
||||||
placeholder="New Title"
|
placeholder="New Title"
|
||||||
on-keydown="_handleInputKeydown">
|
on-keydown="_handleInputKeydown"
|
||||||
</iron-input>
|
bind-value="{{_newName}}">
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<iron-input
|
|
||||||
class="newUrlInput"
|
|
||||||
bind-value="{{_newUrl}}">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
class="newUrlInput"
|
||||||
|
is="iron-input"
|
||||||
placeholder="New URL"
|
placeholder="New URL"
|
||||||
on-keydown="_handleInputKeydown">
|
on-keydown="_handleInputKeydown"
|
||||||
</iron-input>
|
bind-value="{{_newUrl}}">
|
||||||
</th>
|
</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
_computeAddDisabled(newName, newUrl) {
|
_computeAddDisabled(newName, newUrl) {
|
||||||
return !newName || !newUrl;
|
return !newName.length || !newUrl.length;
|
||||||
},
|
},
|
||||||
|
|
||||||
_handleInputKeydown(e) {
|
_handleInputKeydown(e) {
|
||||||
|
|||||||
@@ -64,11 +64,10 @@ limitations under the License.
|
|||||||
Polymer.dom.flush();
|
Polymer.dom.flush();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('renders', done => {
|
test('renders', () => {
|
||||||
const rows = element.$$('tbody').querySelectorAll('tr');
|
const rows = element.$$('tbody').querySelectorAll('tr');
|
||||||
let tds;
|
let tds;
|
||||||
|
|
||||||
Polymer.Base.async(() => {
|
|
||||||
assert.equal(rows.length, menu.length);
|
assert.equal(rows.length, menu.length);
|
||||||
for (let i = 0; i < menu.length; i++) {
|
for (let i = 0; i < menu.length; i++) {
|
||||||
tds = rows[i].querySelectorAll('td');
|
tds = rows[i].querySelectorAll('td');
|
||||||
@@ -78,8 +77,6 @@ limitations under the License.
|
|||||||
|
|
||||||
assert.isTrue(element._computeAddDisabled(element._newName,
|
assert.isTrue(element._computeAddDisabled(element._newName,
|
||||||
element._newUrl));
|
element._newUrl));
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('_computeAddDisabled', () => {
|
test('_computeAddDisabled', () => {
|
||||||
@@ -89,14 +86,12 @@ limitations under the License.
|
|||||||
assert.isFalse(element._computeAddDisabled('name', 'url'));
|
assert.isFalse(element._computeAddDisabled('name', 'url'));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('add a new menu item', done => {
|
test('add a new menu item', () => {
|
||||||
const newName = 'new name';
|
const newName = 'new name';
|
||||||
const newUrl = 'new url';
|
const newUrl = 'new url';
|
||||||
|
|
||||||
Polymer.Base.async(() => {
|
|
||||||
element._newName = newName;
|
element._newName = newName;
|
||||||
element._newUrl = newUrl;
|
element._newUrl = newUrl;
|
||||||
|
|
||||||
assert.isFalse(element._computeAddDisabled(element._newName,
|
assert.isFalse(element._computeAddDisabled(element._newName,
|
||||||
element._newUrl));
|
element._newUrl));
|
||||||
|
|
||||||
@@ -108,8 +103,6 @@ limitations under the License.
|
|||||||
assert.equal(element.menuItems[element.menuItems.length - 1].name,
|
assert.equal(element.menuItems[element.menuItems.length - 1].name,
|
||||||
newName);
|
newName);
|
||||||
assert.equal(element.menuItems[element.menuItems.length - 1].url, newUrl);
|
assert.equal(element.menuItems[element.menuItems.length - 1].url, newUrl);
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('move items down', () => {
|
test('move items down', () => {
|
||||||
|
|||||||
@@ -15,11 +15,10 @@ limitations under the License.
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<link rel="import" href="../../../bower_components/polymer/polymer.html">
|
<link rel="import" href="../../../bower_components/polymer/polymer.html">
|
||||||
|
|
||||||
<link rel="import" href="../../../styles/gr-form-styles.html">
|
<link rel="import" href="../../../styles/gr-form-styles.html">
|
||||||
<link rel="import" href="../../../styles/shared-styles.html">
|
|
||||||
<link rel="import" href="../../shared/gr-button/gr-button.html">
|
<link rel="import" href="../../shared/gr-button/gr-button.html">
|
||||||
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
|
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
|
||||||
|
<link rel="import" href="../../../styles/shared-styles.html">
|
||||||
|
|
||||||
<dom-module id="gr-registration-dialog">
|
<dom-module id="gr-registration-dialog">
|
||||||
<template>
|
<template>
|
||||||
@@ -62,10 +61,11 @@ limitations under the License.
|
|||||||
<section>
|
<section>
|
||||||
<div class="title">Full Name</div>
|
<div class="title">Full Name</div>
|
||||||
<input
|
<input
|
||||||
|
is="iron-input"
|
||||||
id="name"
|
id="name"
|
||||||
|
bind-value="{{_account.name}}"
|
||||||
disabled="[[_saving]]"
|
disabled="[[_saving]]"
|
||||||
on-keydown="_handleNameKeydown"
|
on-keydown="_handleNameKeydown">
|
||||||
value="[[_account.name]]">
|
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<div class="title">Preferred Email</div>
|
<div class="title">Preferred Email</div>
|
||||||
|
|||||||
@@ -222,31 +222,34 @@ limitations under the License.
|
|||||||
<section id="columnsPref" hidden$="[[_diffPrefs.line_wrapping]]">
|
<section id="columnsPref" hidden$="[[_diffPrefs.line_wrapping]]">
|
||||||
<span class="title">Diff width</span>
|
<span class="title">Diff width</span>
|
||||||
<span class="value">
|
<span class="value">
|
||||||
<iron-input
|
<input
|
||||||
|
is="iron-input"
|
||||||
|
type="number"
|
||||||
|
prevent-invalid-input
|
||||||
allowed-pattern="[0-9]"
|
allowed-pattern="[0-9]"
|
||||||
bind-value="{{_diffPrefs.line_length}}">
|
bind-value="{{_diffPrefs.line_length}}">
|
||||||
<input type="number">
|
|
||||||
</iron-input>
|
|
||||||
</span>
|
</span>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<span class="title">Tab width</span>
|
<span class="title">Tab width</span>
|
||||||
<span class="value">
|
<span class="value">
|
||||||
<iron-input
|
<input
|
||||||
|
is="iron-input"
|
||||||
|
type="number"
|
||||||
|
prevent-invalid-input
|
||||||
allowed-pattern="[0-9]"
|
allowed-pattern="[0-9]"
|
||||||
bind-value="{{_diffPrefs.tab_size}}">
|
bind-value="{{_diffPrefs.tab_size}}">
|
||||||
<input type="number">
|
|
||||||
</iron-input>
|
|
||||||
</span>
|
</span>
|
||||||
</section>
|
</section>
|
||||||
<section hidden$="[[!_diffPrefs.font_size]]">
|
<section hidden$="[[!_diffPrefs.font_size]]">
|
||||||
<span class="title">Font size</span>
|
<span class="title">Font size</span>
|
||||||
<span class="value">
|
<span class="value">
|
||||||
<iron-input
|
<input
|
||||||
|
is="iron-input"
|
||||||
|
type="number"
|
||||||
|
prevent-invalid-input
|
||||||
allowed-pattern="[0-9]"
|
allowed-pattern="[0-9]"
|
||||||
bind-value="{{_diffPrefs.font_size}}">
|
bind-value="{{_diffPrefs.font_size}}">
|
||||||
<input type="number">
|
|
||||||
</iron-input>
|
|
||||||
</span>
|
</span>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
@@ -336,15 +339,14 @@ limitations under the License.
|
|||||||
<section>
|
<section>
|
||||||
<span class="title">New email address</span>
|
<span class="title">New email address</span>
|
||||||
<span class="value">
|
<span class="value">
|
||||||
<iron-input
|
|
||||||
id="newEmailInput"
|
|
||||||
bind-value="{{_newEmail}}">
|
|
||||||
<input
|
<input
|
||||||
|
id="newEmailInput"
|
||||||
|
bind-value="{{_newEmail}}"
|
||||||
|
is="iron-input"
|
||||||
type="text"
|
type="text"
|
||||||
disabled="[[_addingEmail]]"
|
disabled="[[_addingEmail]]"
|
||||||
on-keydown="_handleNewEmailKeydown"
|
on-keydown="_handleNewEmailKeydown"
|
||||||
placeholder="email@example.com">
|
placeholder="email@example.com">
|
||||||
</iron-input>
|
|
||||||
</span>
|
</span>
|
||||||
</section>
|
</section>
|
||||||
<section
|
<section
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ limitations under the License.
|
|||||||
<input
|
<input
|
||||||
id="newFilter"
|
id="newFilter"
|
||||||
class="newFilterInput"
|
class="newFilterInput"
|
||||||
|
is="iron-input"
|
||||||
placeholder="branch:name, or other search expression">
|
placeholder="branch:name, or other search expression">
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ limitations under the License.
|
|||||||
test('_handleAddProject', () => {
|
test('_handleAddProject', () => {
|
||||||
element.$.newProject.value = {id: 'project d'};
|
element.$.newProject.value = {id: 'project d'};
|
||||||
element.$.newProject.setText('project d');
|
element.$.newProject.setText('project d');
|
||||||
element.$.newFilter.value = '';
|
element.$.newFilter.bindValue = '';
|
||||||
|
|
||||||
element._handleAddProject();
|
element._handleAddProject();
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ limitations under the License.
|
|||||||
test('_handleAddProject with invalid inputs', () => {
|
test('_handleAddProject with invalid inputs', () => {
|
||||||
element.$.newProject.value = {id: 'project b'};
|
element.$.newProject.value = {id: 'project b'};
|
||||||
element.$.newProject.setText('project b');
|
element.$.newProject.setText('project b');
|
||||||
element.$.newFilter.value = 'filter 1';
|
element.$.newFilter.bindValue = 'filter 1';
|
||||||
|
|
||||||
element._handleAddProject();
|
element._handleAddProject();
|
||||||
|
|
||||||
|
|||||||
@@ -23,34 +23,32 @@ limitations under the License.
|
|||||||
<dom-module id="gr-autocomplete">
|
<dom-module id="gr-autocomplete">
|
||||||
<template>
|
<template>
|
||||||
<style include="shared-styles">
|
<style include="shared-styles">
|
||||||
iron-input, input {
|
input {
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
|
||||||
iron-input {
|
|
||||||
@apply --gr-autocomplete;
|
@apply --gr-autocomplete;
|
||||||
}
|
}
|
||||||
iron-input.borderless input,
|
input.borderless,
|
||||||
iron-input.borderless:focus input {
|
input.borderless:focus {
|
||||||
border: none;
|
border: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
iron-input.warnUncommitted input {
|
input.warnUncommitted {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<iron-input id="input"
|
|
||||||
class$="[[_computeClass(borderless)]]"
|
|
||||||
bind-value="{{text}}">
|
|
||||||
<input
|
<input
|
||||||
|
id="input"
|
||||||
|
class$="[[_computeClass(borderless)]]"
|
||||||
|
is="iron-input"
|
||||||
disabled$="[[disabled]]"
|
disabled$="[[disabled]]"
|
||||||
|
bind-value="{{text}}"
|
||||||
placeholder="[[placeholder]]"
|
placeholder="[[placeholder]]"
|
||||||
on-keydown="_handleKeydown"
|
on-keydown="_handleKeydown"
|
||||||
on-focus="_onInputFocus"
|
on-focus="_onInputFocus"
|
||||||
on-blur="_onInputBlur"
|
on-blur="_onInputBlur"
|
||||||
autocomplete="off" />
|
autocomplete="off" />
|
||||||
</iron-input>
|
|
||||||
<!-- This container is needed for Safari and Firefox -->
|
<!-- This container is needed for Safari and Firefox -->
|
||||||
<div id="suggestionContainer">
|
<div id="suggestionContainer">
|
||||||
<gr-autocomplete-dropdown id="suggestions"
|
<gr-autocomplete-dropdown id="suggestions"
|
||||||
|
|||||||
@@ -154,8 +154,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
selectAll() {
|
selectAll() {
|
||||||
this.$.input.inputElement.setSelectionRange(0,
|
this.$.input.setSelectionRange(0, this.$.input.value.length);
|
||||||
this.$.input.bindValue.length);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
clear() {
|
clear() {
|
||||||
|
|||||||
@@ -100,14 +100,12 @@ limitations under the License.
|
|||||||
const cancelHandler = sandbox.spy();
|
const cancelHandler = sandbox.spy();
|
||||||
element.addEventListener('cancel', cancelHandler);
|
element.addEventListener('cancel', cancelHandler);
|
||||||
|
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 27,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 27, null, 'esc');
|
||||||
null, 'esc');
|
|
||||||
assert.isFalse(cancelHandler.called);
|
assert.isFalse(cancelHandler.called);
|
||||||
assert.isTrue(element.$.suggestions.hidden);
|
assert.isTrue(element.$.suggestions.hidden);
|
||||||
assert.equal(element._suggestions.length, 0);
|
assert.equal(element._suggestions.length, 0);
|
||||||
|
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 27,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 27, null, 'esc');
|
||||||
null, 'esc');
|
|
||||||
assert.isTrue(cancelHandler.called);
|
assert.isTrue(cancelHandler.called);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
@@ -139,23 +137,22 @@ limitations under the License.
|
|||||||
|
|
||||||
assert.equal(element.$.suggestions.$.cursor.index, 0);
|
assert.equal(element.$.suggestions.$.cursor.index, 0);
|
||||||
|
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 40,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 40, null,
|
||||||
null, 'down');
|
'down');
|
||||||
|
|
||||||
assert.equal(element.$.suggestions.$.cursor.index, 1);
|
assert.equal(element.$.suggestions.$.cursor.index, 1);
|
||||||
|
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 40,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 40, null,
|
||||||
null, 'down');
|
'down');
|
||||||
|
|
||||||
assert.equal(element.$.suggestions.$.cursor.index, 2);
|
assert.equal(element.$.suggestions.$.cursor.index, 2);
|
||||||
|
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 38,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 38, null, 'up');
|
||||||
null, 'up');
|
|
||||||
|
|
||||||
assert.equal(element.$.suggestions.$.cursor.index, 1);
|
assert.equal(element.$.suggestions.$.cursor.index, 1);
|
||||||
|
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 13,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 13, null,
|
||||||
null, 'enter');
|
'enter');
|
||||||
|
|
||||||
assert.equal(element.value, 1);
|
assert.equal(element.value, 1);
|
||||||
assert.isTrue(commitHandler.called);
|
assert.isTrue(commitHandler.called);
|
||||||
@@ -178,8 +175,8 @@ limitations under the License.
|
|||||||
const commitHandler = sandbox.spy();
|
const commitHandler = sandbox.spy();
|
||||||
element.addEventListener('commit', commitHandler);
|
element.addEventListener('commit', commitHandler);
|
||||||
|
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 13,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 13, null,
|
||||||
null, 'enter');
|
'enter');
|
||||||
|
|
||||||
assert.isTrue(commitHandler.called);
|
assert.isTrue(commitHandler.called);
|
||||||
assert.equal(element.text, 'suggestion');
|
assert.equal(element.text, 'suggestion');
|
||||||
@@ -200,8 +197,8 @@ limitations under the License.
|
|||||||
const commitHandler = sandbox.spy();
|
const commitHandler = sandbox.spy();
|
||||||
element.addEventListener('commit', commitHandler);
|
element.addEventListener('commit', commitHandler);
|
||||||
|
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 13,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 13, null,
|
||||||
null, 'enter');
|
'enter');
|
||||||
|
|
||||||
assert.isTrue(commitHandler.called);
|
assert.isTrue(commitHandler.called);
|
||||||
assert.equal(element.text, '');
|
assert.equal(element.text, '');
|
||||||
@@ -251,8 +248,8 @@ limitations under the License.
|
|||||||
const commitHandler = sandbox.spy();
|
const commitHandler = sandbox.spy();
|
||||||
element.addEventListener('commit', commitHandler);
|
element.addEventListener('commit', commitHandler);
|
||||||
|
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 13,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 13, null,
|
||||||
null, 'enter');
|
'enter');
|
||||||
|
|
||||||
assert.isTrue(commitHandler.called);
|
assert.isTrue(commitHandler.called);
|
||||||
assert.equal(element.text, 'blah 0');
|
assert.equal(element.text, 'blah 0');
|
||||||
@@ -270,16 +267,14 @@ limitations under the License.
|
|||||||
|
|
||||||
element._suggestions = ['tunnel snakes rule!'];
|
element._suggestions = ['tunnel snakes rule!'];
|
||||||
element.tabComplete = false;
|
element.tabComplete = false;
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 9,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 9, null, 'tab');
|
||||||
null, 'tab');
|
|
||||||
assert.isFalse(commitHandler.called);
|
assert.isFalse(commitHandler.called);
|
||||||
assert.isFalse(commitSpy.called);
|
assert.isFalse(commitSpy.called);
|
||||||
assert.isFalse(element._focused);
|
assert.isFalse(element._focused);
|
||||||
|
|
||||||
element.tabComplete = true;
|
element.tabComplete = true;
|
||||||
element._focused = true;
|
element._focused = true;
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 9,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 9, null, 'tab');
|
||||||
null, 'tab');
|
|
||||||
assert.isFalse(commitHandler.called);
|
assert.isFalse(commitHandler.called);
|
||||||
assert.isTrue(commitSpy.called);
|
assert.isTrue(commitSpy.called);
|
||||||
assert.isTrue(element._focused);
|
assert.isTrue(element._focused);
|
||||||
@@ -312,8 +307,8 @@ limitations under the License.
|
|||||||
test('enter does not call focus', () => {
|
test('enter does not call focus', () => {
|
||||||
element._suggestions = ['sugar bombs'];
|
element._suggestions = ['sugar bombs'];
|
||||||
focusSpy = sandbox.spy(element, 'focus');
|
focusSpy = sandbox.spy(element, 'focus');
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 13,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 13, null,
|
||||||
null, 'enter');
|
'enter');
|
||||||
flushAsynchronousOperations();
|
flushAsynchronousOperations();
|
||||||
|
|
||||||
assert.isTrue(commitSpy.called);
|
assert.isTrue(commitSpy.called);
|
||||||
@@ -325,8 +320,7 @@ limitations under the License.
|
|||||||
element._suggestions = ['sugar bombs'];
|
element._suggestions = ['sugar bombs'];
|
||||||
focusSpy = sandbox.spy(element, 'focus');
|
focusSpy = sandbox.spy(element, 'focus');
|
||||||
|
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 9,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 9, null, 'tab');
|
||||||
null, 'tab');
|
|
||||||
flushAsynchronousOperations();
|
flushAsynchronousOperations();
|
||||||
|
|
||||||
assert.isFalse(commitSpy.called);
|
assert.isFalse(commitSpy.called);
|
||||||
@@ -335,8 +329,7 @@ limitations under the License.
|
|||||||
|
|
||||||
element.tabComplete = true;
|
element.tabComplete = true;
|
||||||
element._suggestions = ['tunnel snakes drool'];
|
element._suggestions = ['tunnel snakes drool'];
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 9,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 9, null, 'tab');
|
||||||
null, 'tab');
|
|
||||||
flushAsynchronousOperations();
|
flushAsynchronousOperations();
|
||||||
|
|
||||||
assert.isTrue(commitSpy.called);
|
assert.isTrue(commitSpy.called);
|
||||||
@@ -393,16 +386,12 @@ limitations under the License.
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('input-keydown event fired', done => {
|
test('input-keydown event fired', () => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
const listener = sandbox.spy();
|
const listener = sandbox.spy();
|
||||||
element.addEventListener('input-keydown', listener);
|
element.addEventListener('input-keydown', listener);
|
||||||
MockInteractions.pressAndReleaseKeyOn(element.$.input.inputElement, 9,
|
MockInteractions.pressAndReleaseKeyOn(element.$.input, 9, null, 'tab');
|
||||||
null, 'tab');
|
|
||||||
flushAsynchronousOperations();
|
flushAsynchronousOperations();
|
||||||
assert.isTrue(listener.called);
|
assert.isTrue(listener.called);
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
suite('warnUncommitted', () => {
|
suite('warnUncommitted', () => {
|
||||||
@@ -411,36 +400,27 @@ limitations under the License.
|
|||||||
inputClassList = element.$.input.classList;
|
inputClassList = element.$.input.classList;
|
||||||
});
|
});
|
||||||
|
|
||||||
test('enabled', done => {
|
test('enabled', () => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
element.warnUncommitted = true;
|
element.warnUncommitted = true;
|
||||||
element.text = 'blah blah blah';
|
element.text = 'blah blah blah';
|
||||||
MockInteractions.blur(element.$.input.inputElement);
|
MockInteractions.blur(element.$.input);
|
||||||
assert.isTrue(inputClassList.contains('warnUncommitted'));
|
assert.isTrue(inputClassList.contains('warnUncommitted'));
|
||||||
MockInteractions.focus(element.$.input.inputElement);
|
MockInteractions.focus(element.$.input);
|
||||||
assert.isFalse(inputClassList.contains('warnUncommitted'));
|
assert.isFalse(inputClassList.contains('warnUncommitted'));
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('disabled', done => {
|
test('disabled', () => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
element.warnUncommitted = false;
|
element.warnUncommitted = false;
|
||||||
element.text = 'blah blah blah';
|
element.text = 'blah blah blah';
|
||||||
MockInteractions.blur(element.$.input.inputElement);
|
MockInteractions.blur(element.$.input);
|
||||||
assert.isFalse(inputClassList.contains('warnUncommitted'));
|
assert.isFalse(inputClassList.contains('warnUncommitted'));
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('no text', done => {
|
test('no text', () => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
element.warnUncommitted = true;
|
element.warnUncommitted = true;
|
||||||
element.text = '';
|
element.text = '';
|
||||||
MockInteractions.blur(element.$.input.inputElement);
|
MockInteractions.blur(element.$.input);
|
||||||
assert.isFalse(inputClassList.contains('warnUncommitted'));
|
assert.isFalse(inputClassList.contains('warnUncommitted'));
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ limitations under the License.
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<link rel="import" href="../../../bower_components/polymer/polymer.html">
|
<link rel="import" href="../../../bower_components/polymer/polymer.html">
|
||||||
|
<link rel="import" href="../../../bower_components/iron-input/iron-input.html">
|
||||||
<link rel="import" href="../../shared/gr-button/gr-button.html">
|
<link rel="import" href="../../shared/gr-button/gr-button.html">
|
||||||
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
|
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
|
||||||
<link rel="import" href="../../../styles/shared-styles.html">
|
<link rel="import" href="../../../styles/shared-styles.html">
|
||||||
@@ -45,13 +46,12 @@ limitations under the License.
|
|||||||
</style>
|
</style>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<label>[[title]]</label>
|
<label>[[title]]</label>
|
||||||
<input
|
<input id="input" is="iron-input"
|
||||||
id="input"
|
|
||||||
type="text"
|
|
||||||
on-tap="_handleInputTap"
|
|
||||||
readonly
|
|
||||||
class$="copyText [[_computeInputClass(hideInput)]]"
|
class$="copyText [[_computeInputClass(hideInput)]]"
|
||||||
value="[[text]]">
|
type="text"
|
||||||
|
bind-value="[[text]]"
|
||||||
|
on-tap="_handleInputTap"
|
||||||
|
readonly>
|
||||||
<gr-button id="button"
|
<gr-button id="button"
|
||||||
class="copyToClipboard"
|
class="copyToClipboard"
|
||||||
on-tap="_copyToClipboard">
|
on-tap="_copyToClipboard">
|
||||||
|
|||||||
@@ -45,12 +45,11 @@ limitations under the License.
|
|||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<iron-input
|
<input
|
||||||
|
is="iron-input"
|
||||||
id="input"
|
id="input"
|
||||||
bind-value="{{_inputText}}"
|
hidden$="[[!editing]]"
|
||||||
hidden$="[[!editing]]">
|
bind-value="{{_inputText}}">
|
||||||
<input>
|
|
||||||
</iron-input>
|
|
||||||
<label
|
<label
|
||||||
hidden$="[[editing]]"
|
hidden$="[[editing]]"
|
||||||
class$="[[_computeLabelClass(readOnly, value, placeholder)]]"
|
class$="[[_computeLabelClass(readOnly, value, placeholder)]]"
|
||||||
|
|||||||
@@ -76,9 +76,8 @@
|
|||||||
this.editing = true;
|
this.editing = true;
|
||||||
|
|
||||||
this.async(() => {
|
this.async(() => {
|
||||||
this.$.input.inputElement.focus();
|
this.$.input.focus();
|
||||||
this.$.input.inputElement
|
this.$.input.setSelectionRange(0, this.$.input.value.length);
|
||||||
.setSelectionRange(0, this.$.input.inputElement.value.length);
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -100,7 +99,7 @@
|
|||||||
_handleEnter(e) {
|
_handleEnter(e) {
|
||||||
e = this.getKeyboardEvent(e);
|
e = this.getKeyboardEvent(e);
|
||||||
const target = Polymer.dom(e).rootTarget;
|
const target = Polymer.dom(e).rootTarget;
|
||||||
if (target === this.$.input.inputElement) {
|
if (target === this.$.input) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
this._save();
|
this._save();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ limitations under the License.
|
|||||||
setup(() => {
|
setup(() => {
|
||||||
element = fixture('basic');
|
element = fixture('basic');
|
||||||
|
|
||||||
input = element.$$('iron-input');
|
input = element.$$('input');
|
||||||
label = element.$$('label');
|
label = element.$$('label');
|
||||||
sandbox = sinon.sandbox.create();
|
sandbox = sinon.sandbox.create();
|
||||||
});
|
});
|
||||||
@@ -63,8 +63,7 @@ limitations under the License.
|
|||||||
sandbox.restore();
|
sandbox.restore();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('element render', done => {
|
test('element render', () => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
// The input is hidden and the label is visible:
|
// The input is hidden and the label is visible:
|
||||||
assert.isNotNull(input.getAttribute('hidden'));
|
assert.isNotNull(input.getAttribute('hidden'));
|
||||||
assert.isNull(label.getAttribute('hidden'));
|
assert.isNull(label.getAttribute('hidden'));
|
||||||
@@ -81,13 +80,10 @@ limitations under the License.
|
|||||||
assert.isNull(input.getAttribute('hidden'));
|
assert.isNull(input.getAttribute('hidden'));
|
||||||
assert.isNotNull(label.getAttribute('hidden'));
|
assert.isNotNull(label.getAttribute('hidden'));
|
||||||
|
|
||||||
assert.equal(input.inputElement.value, 'value text');
|
assert.equal(input.value, 'value text');
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('edit value', done => {
|
test('edit value', done => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
const editedStub = sandbox.stub();
|
const editedStub = sandbox.stub();
|
||||||
element.addEventListener('changed', editedStub);
|
element.addEventListener('changed', editedStub);
|
||||||
|
|
||||||
@@ -101,13 +97,12 @@ limitations under the License.
|
|||||||
|
|
||||||
element.async(() => {
|
element.async(() => {
|
||||||
assert.isTrue(editedStub.called);
|
assert.isTrue(editedStub.called);
|
||||||
assert.equal(input.inputElement.value, 'new text');
|
assert.equal(input.value, 'new text');
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Press enter:
|
// Press enter:
|
||||||
MockInteractions.keyDownOn(input.inputElement, 13);
|
MockInteractions.keyDownOn(input, 13);
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -119,12 +114,11 @@ limitations under the License.
|
|||||||
setup(() => {
|
setup(() => {
|
||||||
element = fixture('read-only');
|
element = fixture('read-only');
|
||||||
|
|
||||||
input = element.$$('iron-input');
|
input = element.$$('input');
|
||||||
label = element.$$('label');
|
label = element.$$('label');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('disallows edit when read-only', done => {
|
test('disallows edit when read-only', () => {
|
||||||
Polymer.Base.async(() => {
|
|
||||||
// The input is hidden and the label is visible:
|
// The input is hidden and the label is visible:
|
||||||
assert.isNotNull(input.getAttribute('hidden'));
|
assert.isNotNull(input.getAttribute('hidden'));
|
||||||
assert.isNull(label.getAttribute('hidden'));
|
assert.isNull(label.getAttribute('hidden'));
|
||||||
@@ -136,8 +130,6 @@ limitations under the License.
|
|||||||
// The input is still hidden and the label is still visible:
|
// The input is still hidden and the label is still visible:
|
||||||
assert.isNotNull(input.getAttribute('hidden'));
|
assert.isNotNull(input.getAttribute('hidden'));
|
||||||
assert.isNull(label.getAttribute('hidden'));
|
assert.isNull(label.getAttribute('hidden'));
|
||||||
done();
|
|
||||||
}, 1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('label is not marked as editable', () => {
|
test('label is not marked as editable', () => {
|
||||||
|
|||||||
@@ -56,11 +56,10 @@ limitations under the License.
|
|||||||
<div id="topContainer">
|
<div id="topContainer">
|
||||||
<div>
|
<div>
|
||||||
<label>Filter:</label>
|
<label>Filter:</label>
|
||||||
<iron-input
|
<input is="iron-input"
|
||||||
|
type="text"
|
||||||
id="filter"
|
id="filter"
|
||||||
bind-value="{{filter}}">
|
bind-value="{{filter}}">
|
||||||
<input type="text">
|
|
||||||
</iron-input>
|
|
||||||
</div>
|
</div>
|
||||||
<div id="createNewContainer"
|
<div id="createNewContainer"
|
||||||
class$="[[_computeCreateClass(createNew)]]">
|
class$="[[_computeCreateClass(createNew)]]">
|
||||||
|
|||||||
@@ -17,4 +17,4 @@ fi
|
|||||||
|
|
||||||
unzip polygerrit-ui/polygerrit_components.bower_components.zip -d polygerrit-ui/app
|
unzip polygerrit-ui/polygerrit_components.bower_components.zip -d polygerrit-ui/app
|
||||||
|
|
||||||
${polylint_bin} --root polygerrit-ui/app --input elements/gr-app.html --b 'bower_components'
|
${polylint_bin} --root polygerrit-ui/app --input elements/gr-app.html
|
||||||
|
|||||||
@@ -97,7 +97,6 @@ limitations under the License.
|
|||||||
--iron-autogrow-textarea: {
|
--iron-autogrow-textarea: {
|
||||||
border: 1px solid #d1d2d3;
|
border: 1px solid #d1d2d3;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
box-sizing: border-box;
|
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
padding: .25em .15em 0 .15em;
|
padding: .25em .15em 0 .15em;
|
||||||
}
|
}
|
||||||
@@ -105,6 +104,7 @@ limitations under the License.
|
|||||||
.gr-form-styles gr-autocomplete {
|
.gr-form-styles gr-autocomplete {
|
||||||
border: none;
|
border: none;
|
||||||
--gr-autocomplete: {
|
--gr-autocomplete: {
|
||||||
|
border: 1px solid #d1d2d3;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
height: 2em;
|
height: 2em;
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ limitations under the License.
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
vertical-align: baseline;
|
vertical-align: baseline;
|
||||||
}
|
}
|
||||||
iron-input,
|
|
||||||
input,
|
input,
|
||||||
iron-autogrow-textarea {
|
iron-autogrow-textarea {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|||||||
Reference in New Issue
Block a user