index.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import $ from 'jquery';
  2. import packages from '../utils/packages';
  3. import camelCase from 'mout/string/camelCase';
  4. import debounce from 'debounce';
  5. import contains from 'mout/string/contains';
  6. // Plugins sliders details
  7. $('.gpm-name, .gpm-actions').on('click', function(e) {
  8. let element = $(this);
  9. let target = $(e.target);
  10. let tag = target.prop('tagName').toLowerCase();
  11. if (tag === 'a' || element.parent('a').length || target.parent('a').length) { return true; }
  12. let wrapper = element.siblings('.gpm-details').find('.table-wrapper');
  13. wrapper.slideToggle({
  14. duration: 350,
  15. complete: () => {
  16. let visible = wrapper.is(':visible');
  17. wrapper
  18. .closest('tr')
  19. .find('.gpm-details-expand i')
  20. .removeClass('fa-chevron-' + (visible ? 'down' : 'up'))
  21. .addClass('fa-chevron-' + (visible ? 'up' : 'down'));
  22. }
  23. });
  24. });
  25. // Removing plugin
  26. $(document).on('click', '[data-plugin-action="remove-package"]', (event) => {
  27. packages.handleRemovingPackage('plugin', event);
  28. });
  29. // Reinstall plugin
  30. $(document).on('click', '[data-plugin-action="reinstall-package"]', (event) => {
  31. packages.handleReinstallPackage('plugin', event);
  32. });
  33. $(document).on('click', '[data-plugin-action="remove-dependency-package"]', (event) => {
  34. packages.handleRemovingDependency('plugin', event);
  35. });
  36. // Trigger the add new plugin / update plugin modal
  37. $(document).on('click', '[data-plugin-action="start-package-installation"]', (event) => {
  38. packages.handleGettingPackageDependencies('plugin', event, 'install');
  39. });
  40. // Trigger the update all plugins modal
  41. $(document).on('click', '[data-plugin-action="start-packages-update"]', (event) => {
  42. packages.handleGettingPackageDependencies('plugin', event);
  43. });
  44. // Install a plugin dependencies and the plugin
  45. $(document).on('click', '[data-plugin-action="install-dependencies-and-package"]', (event) => {
  46. packages.handleInstallingDependenciesAndPackage('plugin', event);
  47. });
  48. // Install a plugin
  49. $(document).on('click', '[data-plugin-action="install-package"]', (event) => {
  50. packages.handleInstallingPackage('plugin', event);
  51. });
  52. // Sort plugins/themes dropdown
  53. $(document).on('change', '.sort-actions select', (event) => {
  54. let direction = $('.sort-actions .sort-icon .fa').hasClass('fa-sort-amount-desc') ? 'desc' : 'asc';
  55. let sorting = $(event.currentTarget).val();
  56. packages.Sort[camelCase(`by-${sorting}`)](direction);
  57. });
  58. // Sort plugins/themes icon
  59. $(document).on('click', '.sort-icon', (event) => {
  60. let icon = $(event.currentTarget).find('.fa');
  61. let current = icon.hasClass('fa-sort-amount-asc') ? 'asc' : 'desc';
  62. let opposite = current === 'asc' ? 'desc' : 'asc';
  63. icon.removeClass(`fa-sort-amount-${current}`).addClass(`fa-sort-amount-${opposite}`);
  64. $('.sort-actions select').trigger('change');
  65. });
  66. // Filter plugin/theme
  67. $(document).on('input', '[data-gpm-filter]', debounce((event) => {
  68. let value = $($(event.currentTarget)).val();
  69. let items = $('[data-gpm-plugin], [data-gpm-theme]');
  70. items.hide().filter((index, item) => {
  71. item = $(item);
  72. return contains(item.data('gpm-plugin'), value) || contains(item.data('gpm-theme'), value) || contains(item.data('gpm-name').toLowerCase(), value.toLowerCase());
  73. }).show();
  74. }, 250));