RadAutoCompleteTextView Completion Modes
RadAutoCompleteTextView has two modes for filtering suggestions.
The completion mode can be changed with the completionMode
property of the RadAutoCompleteTextView. The default value is StartsWith
.
The next code snippet shows how you can set the completionMode
:
export default {
name: 'Completion modes',
description: description,
template: `
<Page>
<ActionBar :title="title">
<NavigationButton text="Back" android.systemIcon="ic_menu_back" @tap="onNavigationButtonTap"></NavigationButton>
</ActionBar>
<ListView for="example in examples"
separatorColor="transparent"
@itemTap="goToExample">
<v-template>
<StackLayout class="item" orientation="vertical">
<Label :text="example.description" class="titleLabel"></Label>
<StackLayout height="1" backgroundColor="#EEEEEE"></StackLayout>
</StackLayout>
</v-template>
</ListView>
</Page>
`,
data () {
return {
title: description,
examples: [
Contains,
StartsWith,
],
};
},
methods: {
onNavigationButtonTap() {
Frame.topmost().goBack();
},
goToExample ({ item }) {
this.$navigateTo(item);
},
},
};
StartsWith Mode
In StartsWith
mode the autocomplete shows only suggestions that start with the typed phrase.
import { AutoCompleteCompletionMode } from 'nativescript-ui-autocomplete';
import { getCountry, getCountriesCount } from '../data';
const description = 'Starts with';
export default {
name: 'Starts with',
description: description,
template: `
<Page>
<ActionBar :title="title">
<NavigationButton text="Back" android.systemIcon="ic_menu_back" @tap="onNavigationButtonTap"></NavigationButton>
</ActionBar>
<StackLayout ios:backgroundColor="#CDCECE" padding="5">
<Label text="Select country"></Label>
<RadAutoCompleteTextView ref="autocomplete"
:completionMode="completionMode"
:items="dataItems">
<SuggestionView ~suggestionView suggestionViewHeight="300">
<StackLayout v-suggestionItemTemplate orientation="vertical" padding="10">
<v-template>
<StackLayout orientation="vertical">
<Label :text="item.text" marginLeft="5" android:marginTop="15"></Label>
</StackLayout>
</v-template>
</StackLayout>
</SuggestionView>
</RadAutoCompleteTextView>
</StackLayout>
</Page>
`,
data () {
let dataItems = new ObservableArray();
for (let i = 0; i < getCountriesCount(); i++) {
dataItems.push(getCountry(i));
}
return {
title: description,
dataItems: dataItems,
completionMode: AutoCompleteCompletionMode.StartsWith,
};
},
methods: {
onNavigationButtonTap() {
Frame.topmost().goBack();
}
}
};
Contains Mode
In Contains
mode the autocomplete shows the suggestions that contain the typed phrase, but not necessarily in the beginning.
The completion mode Contains
is not intended to work with the Append
and SuggestAppend
suggest modes.
Since these suggest modes append the rest of the suggestion to the typed text, the combination between them and Contains
won't be helpful but rather confusing.
import { AutoCompleteCompletionMode } from 'nativescript-ui-autocomplete';
import { getCountry, getCountriesCount } from '../data';
const description = 'Contains';
export default {
name: 'Contains',
description: description,
template: `
<Page>
<ActionBar :title="title">
<NavigationButton text="Back" android.systemIcon="ic_menu_back" @tap="onNavigationButtonTap"></NavigationButton>
</ActionBar>
<StackLayout ios:backgroundColor="#CDCECE" padding="5">
<Label text="Select country"></Label>
<RadAutoCompleteTextView ref="autocomplete"
:completionMode="completionMode"
:items="dataItems">
<SuggestionView ~suggestionView suggestionViewHeight="300">
<StackLayout v-suggestionItemTemplate orientation="vertical" padding="10">
<v-template>
<StackLayout orientation="vertical">
<Label :text="item.text" marginLeft="5" android:marginTop="15"></Label>
</StackLayout>
</v-template>
</StackLayout>
</SuggestionView>
</RadAutoCompleteTextView>
</StackLayout>
</Page>
`,
data () {
let dataItems = new ObservableArray();
for (let i = 0; i < getCountriesCount(); i++) {
dataItems.push(getCountry(i));
}
return {
title: description,
dataItems: dataItems,
completionMode: AutoCompleteCompletionMode.Contains,
};
},
methods: {
onNavigationButtonTap() {
Frame.topmost().goBack();
}
}
};
References
Related articles you might find useful: