93 lines
3.3 KiB
JavaScript
93 lines
3.3 KiB
JavaScript
import $ from 'jquery';
|
|
import packages from '../utils/packages';
|
|
import camelCase from 'mout/string/camelCase';
|
|
import debounce from 'debounce';
|
|
import contains from 'mout/string/contains';
|
|
|
|
// Plugins sliders details
|
|
$('.gpm-name, .gpm-actions').on('click', function(e) {
|
|
let element = $(this);
|
|
let target = $(e.target);
|
|
let tag = target.prop('tagName').toLowerCase();
|
|
|
|
if (tag === 'a' || element.parent('a').length || target.parent('a').length) { return true; }
|
|
|
|
let wrapper = element.siblings('.gpm-details').find('.table-wrapper');
|
|
|
|
wrapper.slideToggle({
|
|
duration: 350,
|
|
complete: () => {
|
|
let visible = wrapper.is(':visible');
|
|
wrapper
|
|
.closest('tr')
|
|
.find('.gpm-details-expand i')
|
|
.removeClass('fa-chevron-' + (visible ? 'down' : 'up'))
|
|
.addClass('fa-chevron-' + (visible ? 'up' : 'down'));
|
|
}
|
|
});
|
|
});
|
|
|
|
// Removing plugin
|
|
$(document).on('click', '[data-plugin-action="remove-package"]', (event) => {
|
|
packages.handleRemovingPackage('plugin', event);
|
|
});
|
|
|
|
// Reinstall plugin
|
|
$(document).on('click', '[data-plugin-action="reinstall-package"]', (event) => {
|
|
packages.handleReinstallPackage('plugin', event);
|
|
});
|
|
|
|
$(document).on('click', '[data-plugin-action="remove-dependency-package"]', (event) => {
|
|
packages.handleRemovingDependency('plugin', event);
|
|
});
|
|
|
|
// Trigger the add new plugin / update plugin modal
|
|
$(document).on('click', '[data-plugin-action="start-package-installation"]', (event) => {
|
|
packages.handleGettingPackageDependencies('plugin', event, 'install');
|
|
});
|
|
|
|
// Trigger the update all plugins modal
|
|
$(document).on('click', '[data-plugin-action="start-packages-update"]', (event) => {
|
|
packages.handleGettingPackageDependencies('plugin', event);
|
|
});
|
|
|
|
// Install a plugin dependencies and the plugin
|
|
$(document).on('click', '[data-plugin-action="install-dependencies-and-package"]', (event) => {
|
|
packages.handleInstallingDependenciesAndPackage('plugin', event);
|
|
});
|
|
|
|
// Install a plugin
|
|
$(document).on('click', '[data-plugin-action="install-package"]', (event) => {
|
|
packages.handleInstallingPackage('plugin', event);
|
|
});
|
|
|
|
// Sort plugins/themes dropdown
|
|
$(document).on('change', '.sort-actions select', (event) => {
|
|
let direction = $('.sort-actions .sort-icon .fa').hasClass('fa-sort-amount-desc') ? 'desc' : 'asc';
|
|
let sorting = $(event.currentTarget).val();
|
|
|
|
packages.Sort[camelCase(`by-${sorting}`)](direction);
|
|
});
|
|
|
|
// Sort plugins/themes icon
|
|
$(document).on('click', '.sort-icon', (event) => {
|
|
let icon = $(event.currentTarget).find('.fa');
|
|
let current = icon.hasClass('fa-sort-amount-asc') ? 'asc' : 'desc';
|
|
let opposite = current === 'asc' ? 'desc' : 'asc';
|
|
|
|
icon.removeClass(`fa-sort-amount-${current}`).addClass(`fa-sort-amount-${opposite}`);
|
|
$('.sort-actions select').trigger('change');
|
|
});
|
|
|
|
// Filter plugin/theme
|
|
$(document).on('input', '[data-gpm-filter]', debounce((event) => {
|
|
let value = $($(event.currentTarget)).val();
|
|
let items = $('[data-gpm-plugin], [data-gpm-theme]');
|
|
|
|
items.hide().filter((index, item) => {
|
|
item = $(item);
|
|
|
|
return contains(item.data('gpm-plugin'), value) || contains(item.data('gpm-theme'), value) || contains(item.data('gpm-name').toLowerCase(), value.toLowerCase());
|
|
}).show();
|
|
}, 250));
|