KeudellCoding.Select2JsInterop.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. ParseToBool = (value) => {
  2. var boolValues = [true, "true", "True", 1, "1"];
  3. if ($.inArray(value, boolValues) >= 0) {
  4. return true;
  5. }
  6. else {
  7. return false;
  8. }
  9. };
  10. window.KeudellCoding_Blazor_AdvancedBlazorSelect2Component = {
  11. init: function (id, options, dotnetHelper) {
  12. var jsonOptions = JSON.parse(options);
  13. if (ParseToBool(jsonOptions.noMarkupEscape) === true) { jsonOptions.escapeMarkup = (markup) => { return markup; }; }
  14. jsonOptions.templateSelection = (data) => data.text;
  15. jsonOptions.templateResult = (data) => data.formatedResult || data.text;
  16. jsonOptions.ajax = {
  17. transport: function (params, success, failure) {
  18. var searchString = params.data && params.data.q ? params.data.q : "";
  19. var page = params.data.page || 1;
  20. dotnetHelper.invokeMethodAsync("Select2OnSearch", searchString, page).then(success).catch(failure);
  21. }
  22. };
  23. $('#' + id).select2(jsonOptions);
  24. $('#' + id).closest("form").on("reset", function (ev) {
  25. var targetJQForm = $(ev.target);
  26. setTimeout((function () {
  27. $('#' + id).trigger("change");
  28. }).bind(targetJQForm), 0);
  29. });
  30. },
  31. onChange: function (id, dotnetHelper) {
  32. $('#' + id).on('change.select2', function (e) {
  33. var valueToInvoke = Array.isArray($('#' + id).val()) ? $('#' + id).val() : [$('#' + id).val()];
  34. dotnetHelper.invokeMethodAsync("Select2OnChange", valueToInvoke);
  35. });
  36. },
  37. updateSelected: function (id, newData, triggerChange) {
  38. $('#' + id).val(null);
  39. $('#' + id).find('option').remove();
  40. $.each(newData, function (i, data) {
  41. var option = new Option(data.text, data.id, false, true);
  42. $('#' + id).append(option);
  43. });
  44. if (ParseToBool(triggerChange) === true) {
  45. $('#' + id).trigger('change');
  46. }
  47. },
  48. getSelectedIds: function (id) {
  49. return $.makeArray($('#' + id).find(':selected').map(function () { return this.value }));
  50. }
  51. }