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(); } } }); } );