File "deactivation-feedback.js"
Full Path: /home/adniftyx/public_html/wp-content/plugins/image-optimization/modules/deactivation/assets/js/deactivation-feedback.js
File size: 2.88 KB
MIME-type: text/plain
Charset: utf-8
import '../css/style.css';
const REASON_FIELDS = {
unclear_how_to_use: [ 'io_text_field_unclear', 'io_unclear_details' ],
switched_solution: [ 'io_text_field_switched', 'io_switched_details' ],
other: [ 'io_text_field_other', 'io_other_details' ],
};
class ImageOptimizationDeactivationHandler {
constructor() {
this.deactivationLink = document.querySelector(
'[id*="deactivate-image-optimizer"], [id*="deactivate-image-optimization"]',
);
if ( ! this.deactivationLink ) {
return;
}
this.originalDeactivationLink = this.deactivationLink.getAttribute( 'href' );
this.init();
}
modal( title, url, cssClass ) {
window.tb_show?.( title, url );
setTimeout(
() => document.getElementById( 'TB_window' )?.classList.add( cssClass ),
5,
);
}
hideFields() {
document
.querySelectorAll( '.image-optimization-feedback-text-field' )
.forEach( ( f ) => ( f.classList.add( 'text-field-hidden' ) ) );
}
toggleField( reason ) {
this.hideFields();
const fieldId = REASON_FIELDS[ reason ]?.[ 0 ];
if ( fieldId ) {
document.getElementById( fieldId ).classList.remove( 'text-field-hidden' );
}
}
sendRequest( data, done ) {
fetch( window?.imageOptimizationDeactivationFeedback?.ajaxurl || '', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams( data ),
} ).finally( done );
}
handleSubmit() {
const reason = document.querySelector(
'input[name="image_optimization_deactivation_reason"]:checked',
)?.value;
const detailsId = REASON_FIELDS[ reason ]?.[ 1 ];
const extra = detailsId
? document.getElementById( detailsId )?.value || ''
: '';
if ( ! reason ) {
this.deactivate();
return;
}
this.sendRequest(
{
action: 'image_optimization_deactivation_feedback',
reason,
additional_data: extra,
nonce: window?.imageOptimizationDeactivationFeedback?.nonce || '',
},
() => this.deactivate(),
);
}
deactivate() {
window.tb_remove?.();
window.location.href = this.originalDeactivationLink;
}
init() {
this.deactivationLink.addEventListener( 'click', ( e ) => {
e.preventDefault();
this.hideFields();
this.modal(
'QUICK FEEDBACK',
'#TB_inline?width=550&height=auto&inlineId=image-optimization-deactivation-modal',
'image-optimization-feedback-thickbox',
);
} );
document.addEventListener( 'change', ( e ) => {
if ( e.target?.name === 'image_optimization_deactivation_reason' ) {
this.toggleField( e.target.value );
}
} );
document.addEventListener( 'click', ( e ) => {
if ( e.target?.id === 'image-optimization-submit-deactivate' ) {
e.preventDefault();
this.handleSubmit();
}
if ( e.target?.id === 'image-optimization-skip-deactivate' ) {
e.preventDefault();
this.deactivate();
}
} );
}
}
document.addEventListener(
'DOMContentLoaded',
() => new ImageOptimizationDeactivationHandler(),
);