From 64569ba4b52b44f7e39406badac981e885291a05 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 13 Mar 2020 11:42:32 +0300 Subject: [PATCH] [SSE] Show validation list --- .../main/app/controller/DocumentHolder.js | 51 +++++++++++++++++++ .../main/app/view/DocumentHolder.js | 8 +++ 2 files changed, 59 insertions(+) diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index c8f244f0c..50a0918e5 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -311,6 +311,7 @@ define([ this.api.asc_registerCallback('asc_onFormulaInfo', _.bind(this.onFormulaInfo, this)); this.api.asc_registerCallback('asc_ChangeCropState', _.bind(this.onChangeCropState, this)); this.api.asc_registerCallback('asc_onInputMessage', _.bind(this.onInputMessage, this)); + this.api.asc_registerCallback('asc_onValidationListMenu', _.bind(this.onValidationListMenu, this)); } return this; }, @@ -3230,6 +3231,56 @@ define([ } }, + onValidationListMenu: function(textarr) { + if (textarr && textarr.length>0) { + var me = this, + documentHolderView = me.documentHolder, + menu = documentHolderView.validationMenu, + menuContainer = documentHolderView.cmpEl.find(Common.Utils.String.format('#menu-container-{0}', menu.id)); + + for (var i = 0; i < menu.items.length; i++) { + menu.removeItem(menu.items[i]); + i--; + } + + _.each(textarr, function(menuItem, index) { + var mnu = new Common.UI.MenuItem({ + caption : menuItem + }).on('click', function(item, e) { + // me.api.asc_selectFromList(item.caption); + }); + menu.addItem(mnu); + }); + + Common.UI.Menu.Manager.hideAll(); + + if (!menu.rendered) { + // Prepare menu container + if (menuContainer.length < 1) { + menuContainer = $(Common.Utils.String.format('', menu.id)); + documentHolderView.cmpEl.append(menuContainer); + } + + menu.render(menuContainer); + menu.cmpEl.attr({tabindex: "-1"}); + } + + var coord = me.api.asc_getActiveCellCoord(), + offset = {left:0,top:0}, + showPoint = [coord.asc_getX() + offset.left, (coord.asc_getY() < 0 ? 0 : coord.asc_getY()) + coord.asc_getHeight() + offset.top]; + menuContainer.css({left: showPoint[0], top : showPoint[1]}); + + menu.show(); + + menu.alignPosition(); + _.delay(function() { + menu.cmpEl.focus(); + }, 10); + } else { + this.documentHolder.validationMenu.hide(); + } + }, + SetDisabled: function(state, canProtect) { this._isDisabled = state; this._canProtect = canProtect; diff --git a/apps/spreadsheeteditor/main/app/view/DocumentHolder.js b/apps/spreadsheeteditor/main/app/view/DocumentHolder.js index 2e504244a..0e43532a7 100644 --- a/apps/spreadsheeteditor/main/app/view/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/view/DocumentHolder.js @@ -968,6 +968,14 @@ define([ mnu.cmpEl.removeAttr('oo_editor_input').attr('oo_editor_keyboard', true); }); + this.validationMenu = new Common.UI.Menu({ + maxHeight: 200, + cyclic: false, + items: [] + }).on('show:after', function () { + this.scroller.update({alwaysVisibleY: true}); + }); + me.fireEvent('createdelayedelements', [me]); },