webseite-grav/plugins/admin/themes/grav/app/pages/index.js

54 lines
1.4 KiB
JavaScript

import $ from 'jquery';
import Sortable from 'sortablejs';
import PageFilters, { Instance as PageFiltersInstance } from './filter';
import Page from './page';
const pad = (n, s) => (`000${n}`).substr(-s);
// Pages Ordering
let Ordering = null;
let orderingElement = $('#ordering');
if (orderingElement.length) {
Ordering = new Sortable(orderingElement.get(0), {
filter: '.ignore',
onUpdate: function() {
/* Old single page index behavior
let item = $(event.item);
let index = orderingElement.children().index(item) + 1;
$('[data-order]').val(index);
*/
let indexes = [];
const children = orderingElement.children();
const padZero = (children.length + '').split('').length;
children.each((index, item) => {
item = $(item);
indexes.push(item.data('id'));
item.find('.page-order').text(`${pad(index + 1, padZero)}.`);
});
$('[data-order]').val(indexes.join(','));
}
});
$(document).on('input', '[name="data[folder]"]', (event) => {
const target = $(event.currentTarget);
const activeOrder = $('[data-id][data-active-id]');
activeOrder.data('id', target.val());
Ordering.options.onUpdate();
});
}
export default {
Ordering,
Page,
PageFilters: {
PageFilters,
Instance: PageFiltersInstance
}
};