From cc3f33db7a8d3c4ad373e646b199808e01bc5d9b Mon Sep 17 00:00:00 2001 From: sss Date: Tue, 17 Jan 2023 00:38:19 +0300 Subject: added webrdp public code --- www/js/simpletabs-debug.js | 120 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 www/js/simpletabs-debug.js (limited to 'www/js/simpletabs-debug.js') diff --git a/www/js/simpletabs-debug.js b/www/js/simpletabs-debug.js new file mode 100644 index 0000000..33a5e4a --- /dev/null +++ b/www/js/simpletabs-debug.js @@ -0,0 +1,120 @@ +/** + * SimpleTabs - Unobtrusive Tabs with Ajax + * + * @example + * + * var tabs = new SimpleTabs($('tab-element'), { + * selector: 'h2.tab-tab' + * }); + * + * @version 1.0 + * + * @license MIT License + * @author Harald Kirschner + * @copyright 2007 Author + */ +var SimpleTabs = new Class({ + + Implements: [Events, Options], + + /** + * Options + */ + options: { + show: 0, + selector: '.tab-tab', + classWrapper: 'tab-wrapper', + classMenu: 'tab-menu', + classContainer: 'tab-container', + onSelect: function(toggle, container, index) { + toggle.addClass('tab-selected'); + container.setStyle('display', ''); + }, + onDeselect: function(toggle, container, index) { + toggle.removeClass('tab-selected'); + container.setStyle('display', 'none'); + }, + onAdded: Class.empty, + getContent: null + }, + + /** + * Constructor + * + * @param {Element} The parent Element that holds the tab elements + * @param {Object} Options + */ + initialize: function(element, options) { + this.element = $(element); + this.setOptions(options); + this.selected = null; + this.build(); + }, + + build: function() { + this.tabs = []; + this.menu = new Element('ul', {'class': this.options.classMenu}); + this.wrapper = new Element('div', {'class': this.options.classWrapper}); + + this.element.getElements(this.options.selector).each(function(el) { + var content = el.get('href') || (this.options.getContent ? this.options.getContent.call(this, el) : el.getNext()); + this.addTab(el.innerHTML, el.title || el.innerHTML, content); + }, this); + this.element.empty().adopt(this.menu, this.wrapper); + + if (this.tabs.length) this.select(this.options.show); + }, + + /** + * Add a new tab at the end of the tab menu + * + * @param {String} inner Text + * @param {String} Title + * @param {Element|String} Content Element or URL for Ajax + */ + addTab: function(text, title, content) { + var grab = $(content); + var container = (grab || new Element('div')) + .setStyle('display', 'none') + .addClass(this.options.classContainer) + .inject(this.wrapper); + var pos = this.tabs.length; + var evt = (this.options.hover) ? 'mouseenter' : 'click'; + var tab = { + container: container, + toggle: new Element('li').grab(new Element('a', { + href: '#', + title: title + }).grab( + new Element('span', {html: text}) + )).addEvent(evt,function(e){this.onClick(e,pos);}.bind(this)).inject(this.menu) + }; + this.tabs.push(tab); + return this.fireEvent('onAdded', [tab.toggle, tab.container, pos]); + }, + + onClick: function(evt, index) { + this.select(index); + return false; + }, + + /** + * Select the tab via tab-index + * + * @param {Number} Tab-index + */ + select: function(index) { + if (this.selected === index || !this.tabs[index]) return this; + var tab = this.tabs[index]; + var params = [tab.toggle, tab.container, index]; + if (this.selected !== null) { + var current = this.tabs[this.selected]; + params.append([current.toggle, current.container, this.selected]); + this.fireEvent('onDeselect', [current.toggle, current.container, this.selected]); + } + this.fireEvent('onSelect', params); + this.selected = index; + return this; + } + +}); -- cgit v1.2.3