Browse Source

Added AllowClear and Placeholder to select2

pull/15079/head
malik masis 4 years ago
parent
commit
617dfea7da
  1. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs
  2. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs
  3. 41
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs

@ -38,6 +38,10 @@ public class AbpSelectTagHelper : AbpTagHelper<AbpSelectTagHelper, AbpSelectTagH
public string AutocompleteSelectedItemValue { get; set; } public string AutocompleteSelectedItemValue { get; set; }
public string AllowClear { get; set; }
public string Placeholder { get; set; }
public AbpSelectTagHelper(AbpSelectTagHelperService tagHelperService) public AbpSelectTagHelper(AbpSelectTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)
{ {

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs

@ -120,6 +120,8 @@ public class AbpSelectTagHelperService : AbpTagHelperService<AbpSelectTagHelper>
output.Attributes.Add("data-autocomplete-filter-param-name", TagHelper.AutocompleteFilterParamName); output.Attributes.Add("data-autocomplete-filter-param-name", TagHelper.AutocompleteFilterParamName);
output.Attributes.Add("data-autocomplete-selected-item-name", TagHelper.AutocompleteSelectedItemName); output.Attributes.Add("data-autocomplete-selected-item-name", TagHelper.AutocompleteSelectedItemName);
output.Attributes.Add("data-autocomplete-selected-item-value", TagHelper.AutocompleteSelectedItemValue); output.Attributes.Add("data-autocomplete-selected-item-value", TagHelper.AutocompleteSelectedItemValue);
output.Attributes.Add("data-allow-clear", TagHelper.AllowClear);
output.Attributes.Add("data-placeholder", TagHelper.Placeholder);
} }
} }

41
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js

@ -74,20 +74,26 @@
abp.dom.initializers.initializeAutocompleteSelects = function ($autocompleteSelects) { abp.dom.initializers.initializeAutocompleteSelects = function ($autocompleteSelects) {
if ($autocompleteSelects.length) { if ($autocompleteSelects.length) {
$autocompleteSelects.each(function () { $autocompleteSelects.each(function () {
var $select = $(this); let $select = $(this);
var url = $(this).data("autocompleteApiUrl"); let url = $(this).data("autocompleteApiUrl");
var displayName = $(this).data("autocompleteDisplayProperty"); let displayName = $(this).data("autocompleteDisplayProperty");
var displayValue = $(this).data("autocompleteValueProperty"); let displayValue = $(this).data("autocompleteValueProperty");
var itemsPropertyName = $(this).data("autocompleteItemsProperty"); let itemsPropertyName = $(this).data("autocompleteItemsProperty");
var filterParamName = $(this).data("autocompleteFilterParamName"); let filterParamName = $(this).data("autocompleteFilterParamName");
var selectedText = $(this).data("autocompleteSelectedItemName"); let selectedText = $(this).data("autocompleteSelectedItemName");
var parentSelector = $(this).data("autocompleteParentSelector"); let parentSelector = $(this).data("autocompleteParentSelector");
if(!parentSelector && $select.parents(".modal.fade").length === 1){ let allowClear = $(this).data("allowClear");
let placeholder = $(this).data("placeholder");
if (allowClear && placeholder == undefined) {
placeholder = " ";
}
if (!parentSelector && $select.parents(".modal.fade").length === 1) {
parentSelector = ".modal.fade"; parentSelector = ".modal.fade";
} }
var name = $(this).attr("name"); let name = $(this).attr("name");
var selectedTextInputName = name + "_Text"; let selectedTextInputName = name + "_Text";
var selectedTextInput = $('<input>', { let selectedTextInput = $('<input>', {
type: 'hidden', type: 'hidden',
id: selectedTextInputName, id: selectedTextInputName,
name: selectedTextInputName, name: selectedTextInputName,
@ -101,13 +107,13 @@
url: url, url: url,
dataType: "json", dataType: "json",
data: function (params) { data: function (params) {
var query = {}; let query = {};
query[filterParamName] = params.term; query[filterParamName] = params.term;
return query; return query;
}, },
processResults: function (data) { processResults: function (data) {
var retVal = []; let retVal = [];
var items = data; let items = data;
if (itemsPropertyName) { if (itemsPropertyName) {
items = data[itemsPropertyName]; items = data[itemsPropertyName];
} }
@ -125,6 +131,11 @@
}, },
width: '100%', width: '100%',
dropdownParent: parentSelector ? $(parentSelector) : $('body'), dropdownParent: parentSelector ? $(parentSelector) : $('body'),
allowClear: allowClear,
placeholder: {
id: '-1',
text: placeholder
}
}); });
$select.on('select2:select', function (e) { $select.on('select2:select', function (e) {
selectedTextInput.val(e.params.data.text); selectedTextInput.val(e.params.data.text);

Loading…
Cancel
Save