151 lines
2.4 KiB
JavaScript
151 lines
2.4 KiB
JavaScript
/* global Vue, wu_addons, ajaxurl, _ */
|
|
(function($) {
|
|
|
|
const search_addon = new Vue({
|
|
el: '#search-addons',
|
|
data: {
|
|
search: wu_addons.search,
|
|
},
|
|
});
|
|
|
|
const wu_main_addon_app = new Vue({
|
|
el: '#wu-addon',
|
|
data() {
|
|
|
|
return {
|
|
loading: true,
|
|
category: wu_addons.category,
|
|
addons: [],
|
|
};
|
|
|
|
},
|
|
mounted() {
|
|
|
|
this.fetch_addons_list();
|
|
|
|
},
|
|
computed: {
|
|
search() {
|
|
|
|
return search_addon.search;
|
|
|
|
},
|
|
i18n() {
|
|
|
|
return window.wu_addons.i18n;
|
|
|
|
},
|
|
categories() {
|
|
|
|
let categories = [];
|
|
|
|
_.each(this.addons, function(addon) {
|
|
|
|
categories = categories.concat(addon.categories);
|
|
|
|
});
|
|
|
|
return _.unique(categories);
|
|
|
|
},
|
|
addons_list() {
|
|
|
|
const app = this;
|
|
|
|
return _.filter(app.addons, function(addon, slug) {
|
|
|
|
addon.slug = slug;
|
|
|
|
if (app.category !== 'all' && ! _.contains(addon.categories.map((item) => item.toLowerCase()), app.category.toLowerCase())) {
|
|
|
|
return false;
|
|
|
|
} // end if;
|
|
|
|
if (! app.search) {
|
|
|
|
return true;
|
|
|
|
} // end if;
|
|
|
|
const search = [
|
|
addon.slug,
|
|
addon.name,
|
|
addon.categories,
|
|
addon.description,
|
|
];
|
|
|
|
return search.join('').toLowerCase().indexOf(app.search.toLowerCase()) > -1;
|
|
|
|
});
|
|
|
|
},
|
|
},
|
|
methods: {
|
|
fetch_addons_list() {
|
|
|
|
const app = this;
|
|
|
|
$.ajax({
|
|
method: 'GET',
|
|
url: ajaxurl,
|
|
data: {
|
|
action: 'serve_addons_list',
|
|
},
|
|
success(data) {
|
|
|
|
app.addons = data.data;
|
|
|
|
app.loading = false;
|
|
|
|
},
|
|
});
|
|
|
|
},
|
|
},
|
|
});
|
|
|
|
new Vue({
|
|
el: '.wp-heading-inline',
|
|
data: {},
|
|
computed: {
|
|
count() {
|
|
|
|
return wu_main_addon_app.addons_list.length;
|
|
|
|
},
|
|
},
|
|
});
|
|
|
|
new Vue({
|
|
el: '#addons-menu',
|
|
data: {},
|
|
methods: {
|
|
set_category(category) {
|
|
|
|
this.main_app.category = category;
|
|
|
|
const url = new URL(window.location.href);
|
|
|
|
url.searchParams.set('tab', category); // setting your param
|
|
|
|
history.pushState({}, null, url);
|
|
|
|
},
|
|
},
|
|
computed: {
|
|
main_app() {
|
|
|
|
return wu_main_addon_app;
|
|
|
|
},
|
|
category() {
|
|
|
|
return wu_main_addon_app.category;
|
|
|
|
},
|
|
},
|
|
});
|
|
|
|
}(jQuery));
|