Suggest List - это список опций для контролов с инпутом. Suggests помогает заполнить форму, предлагая необходимое значение на основе уже набранного текста. Suggest List основан на компоненте Webix List.
Related sample: Suggest List for Input: Populating with Server-side Data
Suggest List можно использовать в сочетании со следующими компонентами (конфигурируются отдельно):
Suggest List уже встроен в следующие компоненты Webix (и может быть дополнительно настроен):
Как это работает?
Попап с контролом Suggest List вызывается всякий раз, когда пользователь взаимодействует с полем ввода или редактором:
Suggest list и Text
В сочетании Suggest List и контрола (редактора) Text / поля HTML, значения автоматически фильтруются в соответствии с введенными символами. Пользователь может выбрать элемент из списка или проигнорировать предлагаемые значения и продолжить ввод.
Suggest list и Combo
В сочетании Suggest List и контрола (редактора) Combo, значения автоматически фильтруются в соответствии с введенными символами. Пользователь может выбрать элемент из списка или продолжить ввод до полного совпадения с одной из предлагаемых опций. Пользователь не может проигнорировать предлагаемый список и ввести свое значение.
Suggest list и Richselect
В сочетании Suggest List и контрола (редактора) RichSelect, попап вызывается по клику на нередактируемое поле ввода. Пользователь должен выбрать опцию из списка.
Где можно хранить значения Suggest list?
Тайм-аут по умолчанию между нажатием на кнопку и фильтрацией равен 1 ms, значение можно изменить:
{
view:"suggest",
data:[/* ... */] // или url:"some.php",
keyPressTimeout:100
}
Suggest List можно инициализировать одним из способов:
1. как отдельный компонент с инпутом. Suggest связывается с HTML инпутом по его ID, указанным в свойстве input:
webix.ui({
view: "suggest",
input: "country4", // будет связан с инпутом 'country4'
data: [
{id:1, value: "Albania"},
{id:2, value: "Bhutan"},
//... список любой длины
]
});
<input type="text" id="country4" value="Sweden" />
2. как свойство suggest в конфигурации Text, Combo или Richselect:
webix.ui({
view:"richselect",
id:"rselect_1",
suggest:option_data
});
Данные для списка в этом примере заданы как простой массив с опциями.
3. как suggest с расширенной конфигурацией (со свойствами view:"suggest") в Combo или Richselect:
webix.ui({
view:"richselect", suggest:{
data:[
{id:1, value:"One"},
{id:2, value:"Two"} // список опций
],
ready: function(){
// определяет изначально выбранную опцию
$$("richselect_1").setValue(this.getFirstId());
}
}
}
})
Related sample: Suggest for Richselect and Combo
Обратите внимание, что Combo и Richselect требуют выбора значения из предлагаемого списка. Список нельзя проигнорировать либо ввести свое значение.
Обычно набор данных для элементов suggest содержит массив объектов, каждый из которых может содержать следующие свойства:
На клиенте данные для Suggest list могут храниться в любом из поддерживаемых форматов. Данные можно поместить в свойство data (как в примере выше) или в заранее объявленную переменную (как в примере ниже).
Suggest List с данными JSON
var countries = [
{id:1, value: "Albania"},
{id:2, value: "Bhutan"}
];
{
view:"text",
label:"Country",
value:"Belarus",
suggest:countries
}
Related sample: Suggest List for Input: Populating with Client-side Data
Данные также могут приходить с сервера. Для этого необходимо указать файл со скриптом, который будет получать данные из базы. Suggest list соединен с полем вода с помощью свойства suggest, которое включено в конструктор Text.
Если для загрузки данных выбрано свойство dataFeed, обратите внимание, что опции загружаются не сразу, а только когда пользователь начинает вводить текст. Также можно указать исходный источник данных через свойства data или url.
Как значение свойства dataFeed компонента Suggest
webix.ui({
view: "suggest",
input: document.getElementById("country4"),
body:{
data: dataArr,
dataFeed:"https://docs.webix.com/samples/server/countries"
}
});
Related sample: Suggest List for Input: Getting Server-side Data using dataFeed
С другой стороны, если использовать URL в качестве значения свойства suggest, то опции будут загружены сразу, и этот же URL будет использоваться для фильтрации запросов.
Как значение свойства suggest
{
view:"text",
name:"country",
label:"Country",
value:"Albania",
suggest:"https://docs.webix.com/samples/server/countries"
}
Related sample: Suggest List for Input: Populating with Server-side Data
Когда пользователь набирает текст, происходит запрос к указанному URL с добавлением строки запроса.
Строка запроса имеет следующий формат: "?filter[value]=x", где x - введенный пользователем запрос.
При необходимости изменить строку запроса используйте свойство dataFeed:
suggest: {
body: {
dataFeed: function(value, obj) {
const queryString = `?filter[value]=${value}`;
return webix.ajax(`https://docs.webix.com/samples/server/countries${queryString}`);
}
}
}
Редакторы компонентов дублируют контролы редактирования, но инициализируются внутри тела компонента.
Suggest можно инициализировать для редакторов Combo и Text, для этого необходимо:
var year_suggest_a = webix.ui({
view: "suggest",
data:[/* ... */]
});
// или
var year_suggest_a = {
view: "suggest",
data:[/* ... */]
};
webix.ui({
view:"datatable",
columns:[
{id:"year", editor:"text", suggest:year_suggest_a}
]
});
Related sample: Datatable: Autosuggest
Также вы можете определить всю логику поведения suggest с помощью API:
var year_suggest_b = webix.ui({
view: "suggest",
data:[...]
});
var gridb = webix.ui({
view:"datatable",
columns:[
{id:"year", editor:"text"}
]
});
gridb.attachEvent("onAfterEditStart", function(object){
if (object.column == "year") { // только для редакторов в этом столбце
var editor = this.getEditor(object);
year_suggest_b.linkInput(editor.getInput());
}
});
gridb.attachEvent("onAfterEditStop", function(object){
year_suggest_b.hide();
});
Related sample: Datatable: Autosuggest
Suggest можно использовать в сочетании с редакторами Combo и Richselect, выбор опций из списка будет обязательным.
webix.ui({
view:"datatable",
columns:[
{id:"year", editor:"combo", suggest:{
data:[/* ... */], //or url:""
on:{
// события
}
}}
]
});
Related sample: Advanced Combo Editor
Полная форма инициализации предоставляет возможность гибкой настройки Suggest list.
Настройки применимы как для автономного компонента suggest:
{view:"suggest",
// настройки попапа
//...,
body:{
// настройки списка
}
}
так и для suggest заданного как свойство контрола/редактора:
{view:"combo", options:{
// настройки попапа
// ...,
body:{
// настройки списка
}
}}
Конфигурация suggest list может быть задана с помощью свойства suggest или options контролов richselect, combo, multiselect и multicombo.
Где используются настройки?
Список Suggest может отображать одновременно только 10 опций. Если опций в списке больше, появляется прокрутка. Если в списке меньше 10 элементов, высота уменьшается.
Число видимых элементов списка можно настраивать с помощью свойства yCount объекта list:
{view:"combo", suggest: {
body:{
yCount:5,
data:[/* ... */]
}
}}
По умолчанию размер попапа подстраивается под ширину основного контрола. Чтобы изменить это, задайте значение false
свойству fitMaster, затем определите нужную ширину или используйте значение по умолчанию - 300px:
{view:"combo", suggest: {
fitMaster:false,
width:400,
data:[/* ... */]
}}
Suggest API предлагает следующие варианты расположения попапа относительно текстового поля:
Также можно определить относительное положение попапа, с помощью свойства relative:
{ view:"text", suggest:{ data:countries, relative:"left" }}
Related sample: Attaching Suggest List to Input
MentionSuggest - это список опций для инпута. Контрол можно сочетать с text, textarea или стандартным полем HTML.
Функциональность доступна для пользователей Webix Pro.
Контрол CheckSuggest используется в нескольких контролах PRO версии. Вы можете найти его в:
Контрол MultiSuggest используется в редакторе Multiselect.
При необходимости он может заменить CheckSuggest. Подробнее.
Контрол GridSuggest можно использовать с контролами формы и редакторами компонентов. Подробнее о настройке GridSuggest.
Контрол DataSuggest можно использовать с контролами формы и редакторами компонентов. Подробнее о настройке DataSuggest.
Related sample: DateRange Picker
Контрол DateRangeSuggest используется в компоненте DateRangePicker. Подробнее.
Наверх