You can download a minimized version of the library or get the full source code at github.com.
Download source$ npm install coreui-form-field-select2
Для корректной работы на странице необходимо наличие:
Другие примеры и более детальные настройки можно найти в документации select2.org
<div id="single-select"></div>
<script>
let options = [
'--',
'Reactive',
'Solution',
'Conglomeration',
'Algoritm',
'Holistic',
];
CoreUI.form.create({
send : {
url : '/path/to/object/1',
method: 'post'
},
record : {
select_field: null
},
fields : [
{
type: 'select2', name: 'select_field', label: 'Select', width: 250, options: options, select2: {
placeholder: 'Choose one thing',
}
},
],
onSubmit: function (form, data) {
alert(JSON.stringify(data));
return false;
},
controls: [
{type: "submit", content: "Send"},
],
}).render('single-select');
</script>
<div id="multiple-select"></div>
<script>
let multipleOptions = [
{ value: 'Reactive', text: 'Reactive' },
{ value: 'Solution', text: 'Solution' },
{ value: 'Conglomeration', text: 'Conglomeration' },
{ value: 'Algoritm', text: 'Algoritm' },
{ value: 'Holistic', text: 'Holistic' },
];
CoreUI.form.create({
send : {
url : '/path/to/object/1',
method: 'post'
},
record : {
select_field: [ 'Reactive', 'Algoritm' ]
},
fields : [
{
type: 'select2', name: 'select_field', label: 'Select', width: 250, attr: { multiple: "multiple" },
options: multipleOptions
},
],
onSubmit: function (form, data) {
alert(JSON.stringify(data));
return false;
},
controls: [
{type: "submit", content: "Send"},
],
}).render('multiple-select');
</script>
<div id="groups"></div>
<script>
let groupOptions = [
{ value: '', text: 'No value' },
{ type: "group", label: 'Group 1',
options : [
{ value: 1, text: 'Adams John' },
{ value: 2, text: 'Johnson Peter' },
]
},
{ type: "group", label: 'Group 2', attr: { class: "group-class" },
options : [
{ value: 3, text: 'Lewis Frank' },
{ value: 4, text: 'Cruz Steve' },
{ value: 5, text: 'Donnun Nick' }
]
}
];
CoreUI.form.create({
send : {
url : '/path/to/object/1',
method: 'post'
},
record : {
select_field: null
},
fields : [
{
type: 'select2', name: 'select_field', label: 'Select', width: 400, attr: { multiple: "multiple" },
options: groupOptions
},
],
onSubmit: function (form, data) {
alert(JSON.stringify(data));
return false;
},
controls: [
{type: "submit", content: "Send"},
],
}).render('groups');
</script>
<div id="dynamic-select"></div>
<script>
let dynamicOptions = [
{ value: 'Reactive', text: 'Reactive' },
{ value: 'Solution', text: 'Solution' },
{ value: 'Conglomeration', text: 'Conglomeration' },
{ value: 'Algoritm', text: 'Algoritm' },
{ value: 'Holistic', text: 'Holistic' },
];
CoreUI.form.create({
send : {
url : '/path/to/object/1',
method: 'post'
},
record : {
select_field: null
},
fields : [
{
type: 'select2', name: 'select_field', label: 'Select', width: 250, attr: { multiple: "multiple" },
options: dynamicOptions,
select2: {
placeholder: 'Write your value',
tags: true,
tokenSeparators: [',', ' ']
}
},
],
onSubmit: function (form, data) {
alert(JSON.stringify(data));
return false;
},
controls: [
{type: "submit", content: "Send"},
],
}).render('dynamic-select');
</script>
<div id="validation"></div>
<script>
let validationOptions = {
'' : '--',
'Reactive' : 'Reactive',
'Solution' : 'Solution',
'Conglomeration' : 'Conglomeration',
'Algoritm' : 'Algoritm',
'Holistic' : 'Holistic',
};
CoreUI.form.create({
send : {
url : '/path/to/object/1',
method: 'post'
},
validate: true,
record : {
select_field: null
},
fields : [
{
type: 'select2', name: 'select_field', label: 'Select', width: 250, required: true,
invalidText: 'SELECT Value!!!',
options: validationOptions,
select2: {
placeholder: 'Submit form for validation',
}
},
],
onSubmit: function (form, data) {
alert(JSON.stringify(data));
return false;
},
controls: [
{type: "submit", content: "Send"},
],
}).render('validation');
</script>
<div id="autocomplete"></div>
<script>
CoreUI.form.create({
send : {
url : '/path/to/object/1',
method: 'post'
},
record : {
select_field: null
},
fields : [
{
type: 'select2', name: 'select_field', label: 'Select', width: 300,
select2: {
minimumInputLength: 1,
ajax: {
url: 'data/autocomplete.json', // https://select2.org/data-sources/formats
dataType: 'json'
}
}
},
],
onSubmit: function (form, data) {
alert(JSON.stringify(data));
return false;
},
controls: [
{type: "submit", content: "Send"},
],
}).render('autocomplete');
</script>
Name | type | default | description |
---|---|---|---|
name | string |
|
Имя поля, которое будет использоваться для получения и отправки значения |
label | string | Название поля. Указанный текст будет находиться радом с полем | |
labelWidth | string|number | Ширина названия поля. Может быть указана текстом или цифрой. Например 150px или 150 |
|
width | string|number | Ширина поля. Может быть указана текстом или цифрой. Например 250px или 250 |
|
description | string | Описанием поля в виде текста под названием | |
descriptionHelp | string | Описанием поля в виде иконки рядом названием. Текст описания располагается при наведении | |
invalidText | string | Текст с описанием ошибки, который появляется при валидации | |
validText | string | Текст с описанием правильного выбора, который появляется при валидации | |
fields | Array | Список других полей, которые будут добавлены рядом текущем полем | |
attr | object | Набор атрибутов задаваемых для поля | |
readonly | bool | false | Признак для отображения поля в виде только для чтения |
required | bool | false | Признак, что поле является обязательным |
show | bool | true | Признак, что поле должно быть показано на форме |
position | string | Название позиции на форме, где должно быть показано поле. Позиции указываются в шаблоне формы | |
noSend | bool | false | Признак, что поля не требуется отправлять на сервер |
options | Array|Object | Список возможных значений для поля | |
select2 | Object | Настройки для поля select2. Варианты значений можно найти в документации |
Method | Return | Description |
---|---|---|
|
class | Получение ранее созданного экземпляра поля по его имени |
|
string | Получение id поля |
|
string | Получение id контейнера поля |
|
object | Получение настроек поля |
|
Отображение поля | |
|
Скрытие поля | |
|
Изменение режима поля только для чтения | |
|
array|string | Получение значения из поля |
|
Установка значения в поле | |
|
array|string | Установка валидности поля |
|
boolean|null | Проверка валидности поля |
|
boolean | Проверка на то, что поле можно отправлять |
|
Формирование контента поля |