diff options
author | 2018-07-13 12:32:32 +0100 | |
---|---|---|
committer | 2018-07-13 16:07:05 +0100 | |
commit | 08b595c863b45e759e57ef419c83dad2b209df9c (patch) | |
tree | 02f9c3e7c74e5b1242d4a04c21ade4e4ea501063 /client/client-editor/src/main/resources/webapp/js/fileMenu.js | |
parent | 7fbb46185166f2699b624cd2616c6fdd74ef4832 (diff) |
Adding client editor module to apex-pdp
The size of the review is big because of following:
1. edit_area & jquery are 3PP's used in the client editor
2. ui elements like svg, gifs, png
Change-Id: Ib62d8e6dda6e6dc1b6e604298e23505523f77cf2
Issue-ID: POLICY-864
Signed-off-by: ramverma <ram.krishna.verma@ericsson.com>
Diffstat (limited to 'client/client-editor/src/main/resources/webapp/js/fileMenu.js')
-rw-r--r-- | client/client-editor/src/main/resources/webapp/js/fileMenu.js | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/client/client-editor/src/main/resources/webapp/js/fileMenu.js b/client/client-editor/src/main/resources/webapp/js/fileMenu.js new file mode 100644 index 000000000..e42a268ff --- /dev/null +++ b/client/client-editor/src/main/resources/webapp/js/fileMenu.js @@ -0,0 +1,145 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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() { + var fm = new $.fileMenu(this, options); + }); + }; + +}));
\ No newline at end of file |