define([
'bloko/blocks/popup/popup'
], function(Popup) {
'use strict';
return function(params) {
params.buttons.forEach(function(value) {
$(params.content).on('click', '.HH-ConfirmDialog-' + value + 'Button', function() {
var handler = params['on' + value];
if (handler && handler() === false) {
return;
}
popup.hide();
});
});
var popup = Popup.create(params.content, {size: 'min', closebutton: false});
popup.show();
return {
close: popup.hide.bind(popup);
}
};
});
define([
'Modules/ConfirmDialog/ConfirmDialogConstructor',
'Modules/ConfirmDialog/confirmDialog.mustache'
], function(ConfirmDialogConstructor, confirmDialogTemplate) {
'use strict';
return function(params) {
ConfirmDialogConstructor({
buttons: ['Accept', 'Decline'],
content: $(confirmDialogTemplate.render(params.trl)).get(0),
onAccept: params.onAccept,
onDecline: params.onDecline
}));
};
});
define([
'Modules/ConfirmDialog/ConfirmDialogConstructor',
'Modules/ConfirmDialog/confirmDialogAsync.mustache'
], function(ConfirmDialogConstructor, confirmDialogAsync) {
'use strict';
return function(params) {
var $content = $(confirmDialogAsync.render(params.trl));
var $error = $('.HH-ConfirmDialog-Error', $content);
var $acceptButton = $('.HH-ConfirmDialog-AcceptButton', $content);
var loadingSetterInstance = new LoadingSetter($acceptButton[0]);
var request;
var confirmDialog = ConfirmDialogConstructor({
buttons: ['Accept', 'Decline'],
content: $content.get(0),
onAccept: function(event) {
$acceptButton.prop('disabled', true);
loadingSetterInstance.start();
request = $.ajax({
method: params.request.url,
data: params.request.data,
url: params.request.url,
success: function() {
params.onSuccess();
confirmDialog.close();
},
error: function() {
$acceptButton.prop('disabled', false);
loadingSetterInstance.stop();
$error.removeClass('g-hidden');
}
});
if (params.onAccept)
return params.onAccept();
)
},
onDecline: function() {
if (request) {
request.abort();
}
if (params.onDecline)
return params.onDecline();
)
}
}, params));
};
});