Edit file File name : KimaiReducedClickHandler.js Content :/* * This file is part of the Kimai time-tracking app. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /*! * [KIMAI] KimaiReducedClickHandler: abstract class */ import jQuery from 'jquery'; import KimaiPlugin from "../KimaiPlugin"; export default class KimaiReducedClickHandler extends KimaiPlugin { _addClickHandler(selector, callback) { jQuery('body').on('click', selector, function(event) { // just in case an inner element is editable, than this should not be triggered if (event.target.parentNode.isContentEditable || event.target.isContentEditable) { return; } // handles the "click" on table rows or list elements let target = event.target; if (event.currentTarget.matches('tr') || event.currentTarget.matches('li')) { while (target !== null && !target.matches('body')) { // when an element within the row is clicked, that can trigger stuff itself, we don't want the event to be processed // don't act if a link, button or form element was clicked if (target.matches('a') || target.matches ('button') || target.matches ('input')) { return; } target = target.parentNode; } } event.preventDefault(); event.stopPropagation(); let href = jQuery(this).attr('data-href'); if (!href) { href = jQuery(this).attr('href'); } if (href === undefined || href === null || href === '') { return; } callback(href); }); } } Save