Files
wp-plugin-starter-template-…/admin/js/admin-scripts.js
marcusquinn 4c1bee9dbe Fix CSS and JavaScript formatting issues
- Updated stylelint configuration to fix CSS formatting issues
- Updated ESLint configuration to fix JavaScript issues
- Added global variables to ESLint configuration
2025-04-21 15:04:05 +01:00

136 lines
3.0 KiB
JavaScript

/**
* Admin Scripts
*
* @package WPALLSTARS\PluginStarterTemplate
*/
(function ($) {
'use strict';
/**
* Admin functionality
*/
const WPSTAdmin = {
/**
* Initialize
*/
init: function () {
// Initialize components.
this.initComponents();
// Bind events.
this.bindEvents();
},
/**
* Initialize components
*/
initComponents: function () {
// Initialize any components here.
},
/**
* Bind events
*/
bindEvents: function () {
// Example: Toggle sections.
$( '.wpst-toggle-section' ).on( 'click', this.toggleSection );
// Example: Form submission.
$( '#wpst-settings-form' ).on( 'submit', this.handleFormSubmit );
},
/**
* Toggle section visibility
*
* @param {Event} e Click event
*/
toggleSection: function (e) {
e.preventDefault();
const $this = $( this );
const target = $this.data( 'target' );
$( target ).slideToggle( 200 );
$this.toggleClass( 'open' );
},
/**
* Handle form submission
*
* @param {Event} e Submit event
*/
handleFormSubmit: function (e) {
e.preventDefault();
const $form = $( this );
const $submitButton = $form.find( 'input[type="submit"]' );
const formData = $form.serialize();
// Disable submit button and show loading state.
$submitButton.prop( 'disabled', true ).addClass( 'loading' );
// Send AJAX request.
$.ajax(
{
url: wpstData.ajaxUrl,
type: 'POST',
data: {
action: 'wpst_save_settings',
nonce: wpstData.nonce,
formData: formData
},
success: function (response) {
if (response.success) {
WPSTAdmin.showNotice( 'success', response.data.message );
} else {
WPSTAdmin.showNotice( 'error', response.data.message );
}
},
error: function () {
WPSTAdmin.showNotice( 'error', 'An error occurred. Please try again.' );
},
complete: function () {
// Re-enable submit button and remove loading state.
$submitButton.prop( 'disabled', false ).removeClass( 'loading' );
}
}
);
},
/**
* Show admin notice
*
* @param {string} type Notice type (success, error, warning)
* @param {string} message Notice message
*/
showNotice: function (type, message) {
const $notice = $( '<div class="wpst-notice ' + type + '"><p>' + message + '</p></div>' );
// Add notice to the page.
$( '.wpst-notices' ).html( $notice );
// Automatically remove notice after 5 seconds.
setTimeout(
function () {
$notice.fadeOut(
300,
function () {
$( this ).remove();
}
);
},
5000
);
}
};
// Initialize when document is ready.
$( document ).ready(
function () {
WPSTAdmin.init();
}
);
})( jQuery );