109 lines
2.8 KiB
JavaScript
109 lines
2.8 KiB
JavaScript
/*
|
|
* 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);
|