Overview
Purpose: Help components built around an inner input element provide .
This mixin makes it easy for you to support the complete set standard DOM APIs for selecting text by delegating those methods to an inner input-type element.
This mixin works near the start of the Elix render pipeline:
events → methods → setState → render DOM → post-render
Expects the component to provide:
[internal.inputDelegate]
getter that returns aninput
-compatible element in the component's shadow tree.
Provides the component with:
select
,selectionEnd
,selectionStart
,setRangeText
,setSelectionRange
methods that forward to the delegated input.
Usage
import DelegateInputSelectionMixin from "elix/src/base/DelegateInputSelectionMixin.js";
import html from "elix/src/core/html.js";
import internal from "elix/src/base/internal.js";
import ReactiveElement from "elix/src/core/ReactiveElement.js";
class MyElement extends DelegateInputSelectionMixin(ReactiveElement) {
// Identify the input element that will receive standard selection API calls.
get [internal.inputDelegate]() {
return this[internal.ids].input;
}
get [internal.template]() {
return html`
<input id="input" />
`;
}
}
API
Used by classes AutoCompleteComboBox, ComboBox, DateComboBox, FilterComboBox, ListComboBox, ListWithSearch, NumberSpinBox, PlainAutoCompleteComboBox, PlainComboBox, PlainDateComboBox, PlainFilterComboBox, PlainListComboBox, PlainListWithSearch, PlainNumberSpinBox, PlainSpinBox, and SpinBox.
select() method
Selects all the text.
See the standard select documentation for details.
selection End property
The end index of the selected text.
See the standard input element documentation for details.
selection Start property
The beginning index of the selected text.
See the standard input element documentation for details.
set Range Text() method
Replaces a range of text.
See the standard setRangeText documentation for details.
set Selection Range() method
Sets the start and end positions of the current text selection.
See the standard setSelectionRange documentation for details.