UNPKG

summernote-webpack

Version:
81 lines (71 loc) 2.33 kB
define([ 'jquery', 'summernote/base/core/agent' ], function ($, agent) { var HelpDialog = function (context) { var self = this; var ui = $.summernote.ui; var $editor = context.layoutInfo.editor; var options = context.options; var lang = options.langInfo; this.createShortCutList = function () { var keyMap = options.keyMap[agent.isMac ? 'mac' : 'pc']; return Object.keys(keyMap).map(function (key) { var command = keyMap[key]; var $row = $('<div><div class="help-list-item"/></div>'); $row.append($('<label><kbd>' + key + '</kdb></label>').css({ 'width': 180, 'margin-right': 10 })).append($('<span/>').html(context.memo('help.' + command) || command)); return $row.html(); }).join(''); }; this.initialize = function () { var $container = options.dialogsInBody ? $(document.body) : $editor; var body = [ '<p class="text-center">', '<a href="//summernote.org/" target="_blank">Summernote @VERSION</a> · ', '<a href="//github.com/summernote/summernote" target="_blank">Project</a> · ', '<a href="//github.com/summernote/summernote/issues" target="_blank">Issues</a>', '</p>' ].join(''); this.$dialog = ui.dialog({ title: lang.options.help, fade: options.dialogsFade, body: this.createShortCutList(), footer: body, callback: function ($node) { $node.find('.modal-body').css({ 'max-height': 300, 'overflow': 'scroll' }); } }).render().appendTo($container); }; this.destroy = function () { ui.hideDialog(this.$dialog); this.$dialog.remove(); }; /** * show help dialog * * @return {Promise} */ this.showHelpDialog = function () { return $.Deferred(function (deferred) { ui.onDialogShown(self.$dialog, function () { context.triggerEvent('dialog.shown'); deferred.resolve(); }); ui.showDialog(self.$dialog); }).promise(); }; this.show = function () { context.invoke('editor.saveRange'); this.showHelpDialog().then(function () { context.invoke('editor.restoreRange'); }); }; }; return HelpDialog; });