column-selector.blade.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <span class="dropdown column-selector" >
  2. <button class="btn btn-primary btn-outline dropdown-toggle" data-toggle="dropdown">
  3. <i class="fa fa-table"></i>
  4. <span class="caret"></span>
  5. </button>
  6. <ul class="dropdown-menu" role="menu" style="min-width: 155px">
  7. <li class="dropdown-item">
  8. <ul class="selectors">
  9. {!! $selectAll !!}
  10. </ul>
  11. </li>
  12. <li class="dropdown-divider"></li>
  13. <li class="dropdown-item">
  14. <ul class="selectors">
  15. {!! $checkbox !!}
  16. </ul>
  17. </li>
  18. </ul>
  19. </span>
  20. <script once>
  21. $('.column-selector input[name="_all_"]').on('change', function () {
  22. $(this).parents('.column-selector').find('.column-select-item').prop('checked', this.checked).change()
  23. });
  24. var submit = Dcat.helpers.debounce(function ($this) {
  25. var defaults = {!! json_encode($defaults) !!};
  26. var selected = [];
  27. var $parent = $this.parents('.column-selector');
  28. var column = '{{ $columnName }}'
  29. $parent.find('.column-select-item:checked').each(function () {
  30. selected.push($(this).val());
  31. });
  32. if (selected.length == 0) {
  33. return;
  34. }
  35. var url = new URL(location);
  36. if (selected.sort().toString() == defaults.sort().toString()) {
  37. url.searchParams.set(column, '');
  38. } else {
  39. url.searchParams.set(column, selected.join());
  40. }
  41. Dcat.reload(url.toString());
  42. }, 200);
  43. $('.column-selector .column-select-item').on('change', function () {
  44. submit($(this));
  45. });
  46. </script>