diff options
author | 2022-02-15 18:02:23 +0000 | |
---|---|---|
committer | 2022-02-16 15:26:38 +0000 | |
commit | 770049ea162573d5afa1aaefed6131fe5e0a77f7 (patch) | |
tree | f702a09afd7b18879a562674c760c682c78895c0 /gui-editors/gui-editor-apex/src/main/webapp/js/fileMenu.js | |
parent | 29df248caa234bc0dff3c20875bdaecfeba127e0 (diff) |
Refactor apex-editor frontend build
Moved frontend from src/main/resources/webapp to src/main/webapp
Moved static resources such as jquery-ui to webapp/dist folder
Configured jest to exclude webapp/dist from coverage report
Removed unused ZIP file assembly
Cleaned up POM
Issue-ID: POLICY-3896
Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech>
Change-Id: Ia006eb94a39586219029866eef94aef38912ad65
Diffstat (limited to 'gui-editors/gui-editor-apex/src/main/webapp/js/fileMenu.js')
-rw-r--r-- | gui-editors/gui-editor-apex/src/main/webapp/js/fileMenu.js | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/gui-editors/gui-editor-apex/src/main/webapp/js/fileMenu.js b/gui-editors/gui-editor-apex/src/main/webapp/js/fileMenu.js new file mode 100644 index 0000000..b917af1 --- /dev/null +++ b/gui-editors/gui-editor-apex/src/main/webapp/js/fileMenu.js @@ -0,0 +1,146 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +/*global define,jQuery,window */ + +(function(factory) { + + "use strict"; + + if (typeof (define) === 'function' && define.amd) { + define([ 'jquery' ], factory); + } else { + factory(jQuery); + } +}(function($) { + + "use strict"; + + $.fileMenu = function(el, options) { + + var base = this; + + base.$el = $(el); + base.el = el; + + base.options = $.extend({}, $.fileMenu.defaultOptions, options); + base.touch = false; + + base.$ = function(query) { + return base.$el.find(query); + }; + + base.hideMenu = function() { + base.$('.selected ul').slideUp(base.options.slideSpeed); + base.$('.selected').removeClass('selected'); + base.$el.removeClass('active'); + }; + + base.showMenu = function($this) { + var $parent = $this.parent(), $menu = $this.children('ul').first(), offsets = $this.offset(); + + $parent.addClass('active'); + + $this.addClass('selected'); + $menu.css({ + 'left' : offsets.left, + 'top' : offsets.top + $parent.height() + }); + $menu.slideDown(base.options.slideSpeed); + }; + + base.addListeners = function() { + base.$el.children('li').on('click', function(e) { + var $this = $(this); + + if ($this.hasClass('selected')) { + base.hideMenu(); + } else { + base.hideMenu(); + base.showMenu($this); + } + e.stopPropagation(); + }); + + base.$el.children('li').on('mouseenter', function() { + var $this = $(this); + if (!$this.parent().hasClass('active')) { + return; + } + if ($this.hasClass('selected')) { + return; + } + + base.hideMenu(); + base.showMenu($this); + }); + + /* Don't slide up if submenu, divider or disabled item is clicked */ + base.$('ul').on('click', function(e) { + var $this = $(e.target); + if ($this.get(0).tagName === 'LI' && !$this.hasClass('sub')) { + return; + } + e.stopPropagation(); + }); + + /* Handle toggle elements */ + base.$('ul').on('click', '.toggle', function(e) { + $(this).toggleClass('active'); + e.stopPropagation(); + }); + + /* Position sub menus */ + base.$el.on('mouseenter', 'ul li', function() { + var $this = $(this); + + $this.find('ul').first().css({ + 'left' : $this.parent().width(), + 'margin-top' : -$this.height() + }); + }); + + /* Hide menu on click outside the menu */ + $('html').on('click', function() { + base.hideMenu(); + }); + }; + + base.init = function() { + base.addListeners(); + base.$el.addClass('fileMenu'); + + }; + + base.init(); + }; + + $.fileMenu.defaultOptions = { + slideSpeed : 100 + }; + + $.fn.fileMenu = function(options) { + return this.each(function() { + new $.fileMenu(this, options); + }); + }; + +}));
\ No newline at end of file |