13963 lines · 494.2 KB · JavaScript
RawDownload
/** * PUI Object  */var PUI = {        zindex : 1000,        gridColumns: {        '1': 'ui-grid-col-12',        '2': 'ui-grid-col-6',        '3': 'ui-grid-col-4',        '4': 'ui-grid-col-3',        '6': 'ui-grid-col-2',        '12': 'ui-grid-col-11'    },        charSet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',            /**     *  Aligns container scrollbar to keep item in container viewport, algorithm copied from jquery-ui menu widget     */    scrollInView: function(container, item) {                var borderTop = parseFloat(container.css('borderTopWidth')) || 0,        paddingTop = parseFloat(container.css('paddingTop')) || 0,        offset = item.offset().top - container.offset().top - borderTop - paddingTop,        scroll = container.scrollTop(),        elementHeight = container.height(),        itemHeight = item.outerHeight(true);         if(offset < 0) {            container.scrollTop(scroll + offset);        }        else if((offset + itemHeight) > elementHeight) {            container.scrollTop(scroll + offset - elementHeight + itemHeight);        }    },        generateRandomId: function() {        var id = '';        for (var i = 1; i <= 10; i++) {            var randPos = Math.floor(Math.random() * this.charSet.length);            id += this.charSet[randPos];        }        return id;    },        isIE: function(version) {        return (this.browser.msie && parseInt(this.browser.version, 10) === version);    },        escapeRegExp: function(text) {        return text.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");    },     escapeHTML: function(value) {        return value.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');    },        escapeClientId: function(id) {        return "#" + id.replace(/:/g,"\\:");    },        clearSelection: function() {        if(window.getSelection) {            if(window.getSelection().empty) {                window.getSelection().empty();            } else if(window.getSelection().removeAllRanges) {                window.getSelection().removeAllRanges();            }        } else if(document.selection && document.selection.empty) {                document.selection.empty();        }    },                inArray: function(arr, item) {        for(var i = 0; i < arr.length; i++) {            if(arr[i] === item) {                return true;            }        }         return false;    },        calculateScrollbarWidth: function() {        if(!this.scrollbarWidth) {            if(this.browser.msie) {                var $textarea1 = $('<textarea cols="10" rows="2"></textarea>')                        .css({ position: 'absolute', top: -1000, left: -1000 }).appendTo('body'),                    $textarea2 = $('<textarea cols="10" rows="2" style="overflow: hidden;"></textarea>')                        .css({ position: 'absolute', top: -1000, left: -1000 }).appendTo('body');                this.scrollbarWidth = $textarea1.width() - $textarea2.width();                $textarea1.add($textarea2).remove();            }            else {                var $div = $('<div />')                    .css({ width: 100, height: 100, overflow: 'auto', position: 'absolute', top: -1000, left: -1000 })                    .prependTo('body').append('<div />').find('div')                        .css({ width: '100%', height: 200 });                this.scrollbarWidth = 100 - $div.width();                $div.parent().remove();            }        }         return this.scrollbarWidth;    },        //adapted from jquery browser plugin    resolveUserAgent: function() {        var matched, browser;         jQuery.uaMatch = function( ua ) {          ua = ua.toLowerCase();           var match = /(opr)[\/]([\w.]+)/.exec( ua ) ||              /(chrome)[ \/]([\w.]+)/.exec( ua ) ||              /(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) ||              /(webkit)[ \/]([\w.]+)/.exec( ua ) ||              /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||              /(msie) ([\w.]+)/.exec( ua ) ||              ua.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec( ua ) ||              ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||              [];           var platform_match = /(ipad)/.exec( ua ) ||              /(iphone)/.exec( ua ) ||              /(android)/.exec( ua ) ||              /(windows phone)/.exec( ua ) ||              /(win)/.exec( ua ) ||              /(mac)/.exec( ua ) ||              /(linux)/.exec( ua ) ||              /(cros)/i.exec( ua ) ||              [];           return {              browser: match[ 3 ] || match[ 1 ] || "",              version: match[ 2 ] || "0",              platform: platform_match[ 0 ] || ""          };        };         matched = jQuery.uaMatch( window.navigator.userAgent );        browser = {};         if ( matched.browser ) {          browser[ matched.browser ] = true;          browser.version = matched.version;          browser.versionNumber = parseInt(matched.version);        }         if ( matched.platform ) {          browser[ matched.platform ] = true;        }         // These are all considered mobile platforms, meaning they run a mobile browser        if ( browser.android || browser.ipad || browser.iphone || browser[ "windows phone" ] ) {          browser.mobile = true;        }         // These are all considered desktop platforms, meaning they run a desktop browser        if ( browser.cros || browser.mac || browser.linux || browser.win ) {          browser.desktop = true;        }         // Chrome, Opera 15+ and Safari are webkit based browsers        if ( browser.chrome || browser.opr || browser.safari ) {          browser.webkit = true;        }         // IE11 has a new token so we will assign it msie to avoid breaking changes        if ( browser.rv )        {          var ie = "msie";           matched.browser = ie;          browser[ie] = true;        }         // Opera 15+ are identified as opr        if ( browser.opr )        {          var opera = "opera";           matched.browser = opera;          browser[opera] = true;        }         // Stock Android browsers are marked as Safari on Android.        if ( browser.safari && browser.android )        {          var android = "android";           matched.browser = android;          browser[android] = true;        }         // Assign the name and platform variable        browser.name = matched.browser;        browser.platform = matched.platform;         this.browser = browser;        $.browser = browser;    },        getGridColumn: function(number) {        return this.gridColumns[number + ''];    },        executeFunctionByName: function(functionName /*, args */) {        var args = [].slice.call(arguments).splice(1),        context = window,        namespaces = functionName.split("."),        func = namespaces.pop();        for(var i = 0; i < namespaces.length; i++) {          context = context[namespaces[i]];        }        return context[func].apply(this, args);    },        resolveObjectByName: function(name) {        if(name) {            var parts = name.split(".");            for(var i = 0, len = parts.length, obj = window; i < len; ++i) {                obj = obj[parts[i]];            }            return obj;        }        else {            return null;        }    },     getCookie : function(name) {        return $.cookie(name);    },     setCookie : function(name, value, cfg) {        $.cookie(name, value, cfg);    },     deleteCookie: function(name, cfg) {        $.removeCookie(name, cfg);    } }; PUI.resolveUserAgent();/** * PrimeUI Accordion widget */(function() {     $.widget("primeui.puiaccordion", {               options: {             activeIndex: 0,             multiple: false        },                _create: function() {            if(this.options.multiple) {                this.options.activeIndex = this.options.activeIndex||[0];            }                    var $this = this;            this.element.addClass('ui-accordion ui-widget ui-helper-reset');             var tabContainers = this.element.children();             //primeui            if(tabContainers.is('div')) {                this.panelMode = 'native';                this.headers = this.element.children('h3');                this.panels = this.element.children('div');            }            //primeng            else {                this.panelMode = 'wrapped';                this.headers = tabContainers.children('h3');                this.panels = tabContainers.children('div');            }                        this.headers.addClass('ui-accordion-header ui-helper-reset ui-state-default').each(function(i) {                var header = $(this),                title = header.html(),                active = $this.options.multiple ? ($.inArray(i, $this.options.activeIndex) !== -1) : (i == $this.options.activeIndex),                headerClass = (active) ? 'ui-state-active ui-corner-top' : 'ui-corner-all',                iconClass = (active) ? 'fa fa-fw fa-caret-down' : 'fa fa-fw fa-caret-right';                 header.addClass(headerClass).html('<span class="' + iconClass + '"></span><a href="#">' + title + '</a>');            });                        this.panels.each(function(i) {                var content = $(this);                content.addClass('ui-accordion-content ui-helper-reset ui-widget-content'),                active = $this.options.multiple ? ($.inArray(i, $this.options.activeIndex) !== -1) : (i == $this.options.activeIndex);                                if(!active) {                    content.addClass('ui-helper-hidden');                }            });                        this.headers.children('a').disableSelection();                        this._bindEvents();        },         _destroy: function() {            this._unbindEvents();            this.element.removeClass('ui-accordion ui-widget ui-helper-reset');            this.headers.removeClass('ui-accordion-header ui-helper-reset ui-state-default ui-state-hover ui-state-active ui-state-disabled ui-corner-all ui-corner-top');            this.panels.removeClass('ui-accordion-content ui-helper-reset ui-widget-content ui-helper-hidden');            this.headers.children('.fa').remove();            this.headers.children('a').contents().unwrap();        },                _bindEvents: function() {            var $this = this;             this.headers.on('mouseover.puiaccordion', function() {                var element = $(this);                if(!element.hasClass('ui-state-active')&&!element.hasClass('ui-state-disabled')) {                    element.addClass('ui-state-hover');                }            }).on('mouseout.puiaccordion', function() {                var element = $(this);                if(!element.hasClass('ui-state-active')&&!element.hasClass('ui-state-disabled')) {                    element.removeClass('ui-state-hover');                }            }).on('click.puiaccordion', function(e) {                var element = $(this);                if(!element.hasClass('ui-state-disabled')) {                    var tabIndex = ($this.panelMode === 'native') ? element.index() / 2 : element.parent().index();                     if(element.hasClass('ui-state-active')) {                        $this.unselect(tabIndex);                    }                    else {                        $this.select(tabIndex, false);                    }                }                 e.preventDefault();            });        },         _unbindEvents: function() {            this.headers.off('mouseover.puiaccordion mouseout.puiaccordion click.puiaccordion');        },         /**         *  Activates a tab with given index         */        select: function(index, silent) {            var panel = this.panels.eq(index);             if(!silent) {                this._trigger('change', null, {'index': index});            }                        //update state            if(this.options.multiple) {                this._addToSelection(index);            }            else {                this.options.activeIndex = index;            }            this._show(panel);        },         /**         *  Deactivates a tab with given index         */        unselect: function(index) {            var panel = this.panels.eq(index),            header = panel.prev();             header.attr('aria-expanded', false).children('.fa').removeClass('fa-caret-down').addClass('fa-caret-right');            header.removeClass('ui-state-active ui-corner-top').addClass('ui-corner-all');            panel.attr('aria-hidden', true).slideUp();             this._removeFromSelection(index);        },         _show: function(panel) {            //deactivate current            if(!this.options.multiple) {                var oldHeader = this.headers.filter('.ui-state-active');                oldHeader.children('.fa').removeClass('fa-caret-down').addClass('fa-caret-right');                oldHeader.attr('aria-expanded', false).removeClass('ui-state-active ui-corner-top').addClass('ui-corner-all').next().attr('aria-hidden', true).slideUp();            }             //activate selected            var newHeader = panel.prev();            newHeader.attr('aria-expanded', true).addClass('ui-state-active ui-corner-top').removeClass('ui-state-hover ui-corner-all')                    .children('.fa').removeClass('fa-caret-right').addClass('fa-caret-down');             panel.attr('aria-hidden', false).slideDown('normal');        },         _addToSelection: function(nodeId) {            this.options.activeIndex.push(nodeId);        },         _removeFromSelection: function(index) {            this.options.activeIndex = $.grep(this.options.activeIndex, function(r) {                return r != index;            });        },         _setOption: function(key, value) {            if(key === 'activeIndex') {                this.select(value, true);            }            else {                $.Widget.prototype._setOption.apply(this, arguments);            }        }            });})();/** * PrimeUI autocomplete widget */(function() {     $.widget("primeui.puiautocomplete", {               options: {            delay: 300,            minQueryLength: 1,            multiple: false,            dropdown: false,            scrollHeight: 200,            forceSelection: false,            effect:null,            effectOptions: {},            effectSpeed: 'normal',            content: null,            caseSensitive: false        },         _create: function() {            this.element.wrap('<span class="ui-autocomplete ui-widget" />');            this.element.puiinputtext();            this.panel = $('<div class="ui-autocomplete-panel ui-widget-content ui-corner-all ui-helper-hidden ui-shadow"></div>').appendTo('body');             if(this.options.multiple) {                this.element.wrap('<ul class="ui-autocomplete-multiple ui-widget ui-inputtext ui-state-default ui-corner-all">' +                                         '<li class="ui-autocomplete-input-token"></li></ul>');                this.inputContainer = this.element.parent();                this.multiContainer = this.inputContainer.parent();            }            else {                if(this.options.dropdown) {                    this.dropdown = $('<button type="button" class="ui-autocomplete-dropdown ui-button ui-widget ui-state-default ui-corner-right ui-button-icon-only">' +                        '<span class="fa fa-fw fa-caret-down"></span><span class="ui-button-text">&nbsp;</span></button>')                        .insertAfter(this.element);                    this.element.removeClass('ui-corner-all').addClass('ui-corner-left');                }            }             this._bindEvents();        },                        _bindEvents: function() {            var $this = this;             this._bindKeyEvents();                        if(this.options.dropdown) {                this.dropdown.on('mouseenter.puiautocomplete', function() {                    if(!$this.element.prop('disabled')) {                        $this.dropdown.addClass('ui-state-hover');                    }                })                .on('mouseleave.puiautocomplete', function() {                    $this.dropdown.removeClass('ui-state-hover');                })                .on('mousedown.puiautocomplete', function() {                    if(!$this.element.prop('disabled')) {                        $this.dropdown.addClass('ui-state-active');                    }                })                .on('mouseup.puiautocomplete', function() {                    if(!$this.element.prop('disabled')) {                        $this.dropdown.removeClass('ui-state-active');                        $this.search('');                        $this.element.focus();                    }                })                .on('focus.puiautocomplete', function() {                    $this.dropdown.addClass('ui-state-focus');                })                .on('blur.puiautocomplete', function() {                    $this.dropdown.removeClass('ui-state-focus');                })                .on('keydown.puiautocomplete', function(e) {                    var keyCode = $.ui.keyCode; 

Lines 1–500 of 13963.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t