Current File : /home/pacjaorg/.trash/media.1/system/js/list-view.js |
/*
* Apply the predefined action for the current element
*
* @param {Event} event
*/
function gridItemAction(event) {
let item = event.target;
if (item.nodeName === 'SPAN' && ['A', 'BUTTON'].includes(item.parentNode.nodeName)) {
item = item.parentNode;
}
if (item.nodeName === 'A') {
event.preventDefault();
}
if (item.hasAttribute('disabled') || !item.hasAttribute('data-item-task')) {
return;
}
const {
itemId
} = item.dataset;
const {
itemTask
} = item.dataset;
const {
itemFormId
} = item.dataset;
if (itemFormId) {
Joomla.listItemTask(itemId, itemTask, itemFormId);
} else {
Joomla.listItemTask(itemId, itemTask);
}
}
/*
* Apply the transition state for the current element
*
* @param {Event} event
*/
function gridTransitionItemAction(event) {
const item = event.target;
if (item.nodeName !== 'SELECT' || item.hasAttribute('disabled')) {
return;
}
const {
itemId
} = item.dataset;
const {
itemTask
} = item.dataset;
const {
itemFormId
} = item.dataset;
item.form.transition_id.value = item.value;
if (itemFormId) {
Joomla.listItemTask(itemId, itemTask, itemFormId);
} else {
Joomla.listItemTask(itemId, itemTask);
}
}
/*
* Apply the transition state for the current element
*
* @param {Event} event
*/
function gridTransitionButtonAction(event) {
let item = event.target;
if (item.nodeName === 'SPAN' && item.parentNode.nodeName === 'BUTTON') {
item = item.parentNode;
}
if (item.hasAttribute('disabled')) {
return;
}
Joomla.toggleAllNextElements(item, 'd-none');
}
/*
* Switch the check state for the current element
*
* @param {Event} event
*/
function applyIsChecked(event) {
const item = event.target;
const itemFormId = item.dataset.itemFormId || '';
if (itemFormId) {
Joomla.isChecked(item.checked, itemFormId);
} else {
Joomla.isChecked(item.checked);
}
}
/*
* Set up an interactive list elements
*
* @param {Event} event
*/
const setup = ({
target
}) => {
target.querySelectorAll('.js-grid-item-check-all').forEach(element => element.addEventListener('click', event => Joomla.checkAll(event.target)));
target.querySelectorAll('.js-grid-item-is-checked').forEach(element => element.addEventListener('click', applyIsChecked));
target.querySelectorAll('.js-grid-item-action').forEach(element => element.addEventListener('click', gridItemAction));
target.querySelectorAll('.js-grid-item-transition-action').forEach(element => element.addEventListener('change', gridTransitionItemAction));
target.querySelectorAll('.js-grid-button-transition-action').forEach(element => element.addEventListener('click', gridTransitionButtonAction));
};
setup({
target: document
});
document.addEventListener('joomla:updated', setup);