
In Ic872d5597d4bfcf5260d9907baec3882fa9f80d9, autocomplete focus behavior was made significantly less aggressive. This resulted in some issues: - When cycling between autocomplete options, a user was unable to type in the input. - When an autocomplete option was selected, keypresses bubbled up to the parent view. - After selecting an autocomplete entry, focus did not return to the input. This change fixes all of these by adding the _handleKeydown handler to the autocomplete-dropdown and revamping the _handleItemSelect behavior. Bug: Issue 6743 Change-Id: Ie91f69e2f3e5b78e68b2df3612a1a771a01ea51a
67 lines
2.3 KiB
HTML
67 lines
2.3 KiB
HTML
<!--
|
|
Copyright (C) 2016 The Android Open Source Project
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
<link rel="import" href="../../../bower_components/polymer/polymer.html">
|
|
<link rel="import" href="../../../bower_components/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html">
|
|
<link rel="import" href="../../../bower_components/iron-input/iron-input.html">
|
|
<link rel="import" href="../../shared/gr-autocomplete-dropdown/gr-autocomplete-dropdown.html">
|
|
<link rel="import" href="../../shared/gr-cursor-manager/gr-cursor-manager.html">
|
|
<link rel="import" href="../../../styles/shared-styles.html">
|
|
|
|
<dom-module id="gr-autocomplete">
|
|
<template>
|
|
<style include="shared-styles">
|
|
input {
|
|
font-size: 1em;
|
|
height: 100%;
|
|
width: 100%;
|
|
@apply --gr-autocomplete;
|
|
}
|
|
input.borderless,
|
|
input.borderless:focus {
|
|
border: none;
|
|
outline: none;
|
|
}
|
|
input.warnUncommitted {
|
|
color: red;
|
|
}
|
|
</style>
|
|
<input
|
|
id="input"
|
|
class$="[[_computeClass(borderless)]]"
|
|
is="iron-input"
|
|
disabled$="[[disabled]]"
|
|
bind-value="{{text}}"
|
|
placeholder="[[placeholder]]"
|
|
on-keydown="_handleKeydown"
|
|
on-focus="_onInputFocus"
|
|
on-blur="_onInputBlur"
|
|
autocomplete="off"/>
|
|
<!-- This container is needed for Safari and Firefox -->
|
|
<div id="suggestionContainer">
|
|
<gr-autocomplete-dropdown
|
|
id="suggestions"
|
|
on-item-selected="_handleItemSelect"
|
|
on-keydown="_handleKeydown"
|
|
suggestions="[[_suggestions]]"
|
|
role="listbox"
|
|
index="[[_index]]"
|
|
hidden$="[[_computeSuggestionsHidden(_suggestions, _focused)]]">
|
|
</gr-autocomplete-dropdown>
|
|
</div>
|
|
</template>
|
|
<script src="gr-autocomplete.js"></script>
|
|
</dom-module>
|