first commit
This commit is contained in:
108
media/system/js/list-view.js
Normal file
108
media/system/js/list-view.js
Normal file
@ -0,0 +1,108 @@
|
||||
/*
|
||||
* 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);
|
||||
Reference in New Issue
Block a user