/* ======================================= NOTES FOR ATUM ORDERS ======================================= */ import { Blocker } from '../_blocker'; import Settings from '../../config/_settings'; export default class OrderNotes { $container: JQuery; $textarea: JQuery; swal: any = window['swal']; constructor( private settings: Settings ) { this.$container = $('#atum_order_notes'); this.$textarea = $('textarea#add_atum_order_note'); this.$container .on('click', 'button.add_note', (evt: JQueryEventObject) => this.addNote(evt) ) .on('click', 'a.delete_note', (evt: JQueryEventObject) => this.deleteNote(evt) ); } addNote(evt: JQueryEventObject) { evt.preventDefault(); const note: string = this.$textarea.val(); if (!note) { return; } Blocker.block(this.$container); const data: any = { action : 'atum_order_add_note', post_id : $('#post_ID').val(), note : note, security: this.settings.get('add_note_nonce'), } $.post( window['ajaxurl'], data, (response: any) => { $('ul.atum_order_notes').prepend(response); Blocker.unblock(this.$container); this.$textarea.val(''); }); } deleteNote(evt: JQueryEventObject) { evt.preventDefault(); const $note: JQuery = $(evt.currentTarget).closest('li.note'); this.swal({ text : this.settings.get('delete_note'), type : 'warning', showCancelButton : true, confirmButtonText : this.settings.get('continue'), cancelButtonText : this.settings.get('cancel'), reverseButtons : true, allowOutsideClick : false, preConfirm : (): Promise => { return new Promise( (resolve: Function, reject: Function) => { Blocker.block($note); const data: any = { action : 'atum_order_delete_note', note_id : $note.attr('rel'), security: this.settings.get('delete_note_nonce'), }; $.post( window['ajaxurl'], data, () => resolve() ); }); } }) .then( () => $note.remove() ) .catch(this.swal.noop); } }