60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
define([
|
|
'backbone',
|
|
'jquery',
|
|
'underscore',
|
|
'js/programs/utils/constants',
|
|
'text!templates/programs/confirm_modal.underscore',
|
|
'edx-ui-toolkit/js/utils/html-utils',
|
|
'gettext'
|
|
],
|
|
function(Backbone, $, _, constants, ModalTpl, HtmlUtils) {
|
|
'use strict';
|
|
|
|
return Backbone.View.extend({
|
|
events: {
|
|
'click .js-cancel': 'destroy',
|
|
'click .js-confirm': 'confirm',
|
|
'keydown': 'handleKeydown'
|
|
},
|
|
|
|
tpl: HtmlUtils.template(ModalTpl),
|
|
|
|
initialize: function(options) {
|
|
this.$parentEl = $(options.parentEl);
|
|
this.callback = options.callback;
|
|
this.content = options.content;
|
|
this.render();
|
|
},
|
|
|
|
render: function() {
|
|
HtmlUtils.setHtml(this.$el, this.tpl(this.content));
|
|
HtmlUtils.setHtml(this.$parentEl, HtmlUtils.HTML(this.$el));
|
|
this.postRender();
|
|
},
|
|
|
|
postRender: function() {
|
|
this.$el.find('.js-focus-first').focus();
|
|
},
|
|
|
|
confirm: function() {
|
|
this.callback();
|
|
this.destroy();
|
|
},
|
|
|
|
destroy: function() {
|
|
this.undelegateEvents();
|
|
this.remove();
|
|
this.$parentEl.html('');
|
|
},
|
|
|
|
handleKeydown: function(event) {
|
|
var keyCode = event.keyCode;
|
|
|
|
if (keyCode === constants.keyCodes.esc) {
|
|
this.destroy();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
);
|