+function ($) {
'use strict';
// AFFIRM CLASS DEFINITION
// =======================
var Affirm = function (element, options) {
this.$element = $(element);
this.settings = {
btnClass: {
cancel: this.$element.data('btn-class-cancel') || Affirm.DEFAULTS.btnClass.cancel,
confirm: this.$element.data('btn-class-confirm') || Affirm.DEFAULTS.btnClass.confirm
},
format: this.$element.data('format') || Affirm.DEFAULTS.text.format,
text: {
cancel: this.$element.data('text-cancel') || Affirm.DEFAULTS.text.cancel,
confirm: this.$element.data('text-confirm') || Affirm.DEFAULTS.text.confirm
},
title: this.$element.data('title') || Affirm.DEFAULTS.text.title
};
this.options = $.extend({}, Affirm.DEFAULTS, this.settings, options);
this.init();
};
if (!$.fn.modal) throw new Error('Affirm requires modal.js');
if (!$.fn.popover) throw new Error('Affirm requires popover.js');
Affirm.VERSION = '1.0.0';
Affirm.DEFAULTS = {
btnClass: {
cancel: 'btn margin-size-right-xs',
confirm: 'btn btn-color-red'
},
format: 'modal',
onCancelCallback: function () {},
onConfirmCallback: function () {},
onDisplayCallback: function () {},
text: {
cancel: 'No, Cancel',
confirm: 'Yes, Confirm'
},
title: 'Are you sure about this?'
};
Affirm.prototype.constructor = Affirm;
Affirm.prototype.init = function () {
var _self = this;
var body = $('body');
this.$element.click(function (e) {
e.stopPropagation();
e.preventDefault();
_self.displayFormat();
$.event.trigger('affirmOnDisplay');
_self.options.onDisplayCallback();
return false;
});
$('body')
.on('click', '[data-affirm-toggle="cancel"]', function () {
_self.cancelFormat();
$.event.trigger('affirmOnCancel');
_self.options.onCancelCallback();
})
.on('click', '[data-affirm-toggle="confirm"]', function () {
_self.confirmFormat();
$.event.trigger('affirmOnConfirm');
_self.options.onConfirmCallback();
});
};
Affirm.prototype.cancelBtn = function () {
var button = $('')
.addClass(this.options.btnClass.cancel)
.text(this.options.text.cancel);
return button;
};
Affirm.prototype.confirmBtn = function () {
var method = this.$element.attr('data-method');
var target = this.$element.attr('target');
var button = $('')
.addClass(this.options.btnClass.confirm)
.attr('href', this.$element.attr('href'))
.text(this.options.text.confirm);
if (method) button.attr('data-method', method);
if (target) button.attr('target', target);
return button;
};
Affirm.prototype.modalTemplate = function () {
var title = '' + this.options.title + '
';
var header = $('