How to use select method in Cypress

Best JavaScript code snippet using cypress

jquery.selectBox.js

Source:jquery.selectBox.js Github

copy

Full Screen

1/*2 * jQuery selectBox - A cosmetic, styleable replacement for SELECT elements3 *4 * Licensed under the MIT license: http://opensource.org/licenses/MIT5 *6 * v1.2.07 *8 * https://github.com/marcj/jquery-selectBox9 */10;(function ($) {11    /**12     * SelectBox class.13     *14     * @param {HTMLElement|jQuery} select If it's a jQuery object, we use the first element.15     * @param {Object}             options16     * @constructor17     */18    var SelectBox = this.SelectBox = function (select, options) {19        if (select instanceof jQuery) {20            if (select.length > 0) {21                select = select[0];22            } else {23                return;24            }25        }26        this.typeTimer     = null;27        this.typeSearch    = '';28        this.isMac         = navigator.platform.match(/mac/i);29        options            = 'object' === typeof options ? options :  {};30        this.selectElement = select;31        // Disable for iOS devices (their native controls are more suitable for a touch device)32        if (!options.mobile && navigator.userAgent.match(/iPad|iPhone|Android|IEMobile|BlackBerry/i)) {33            return false;34        }35        // Element must be a select control36        if ('select' !== select.tagName.toLowerCase()) {37            return false;38        }39        this.init(options);40    }41    /**42     * @type {String}43     */44    SelectBox.prototype.version = '1.2.0';45    /**46     * @param {Object} options47     *48     * @returns {Boolean}49     */50    SelectBox.prototype.init = function (options) {51        var select = $(this.selectElement);52        if (select.data('selectBox-control')) {53            return false;54        }55        var control    = $('<a class="selectBox" />')56            , inline   = select.attr('multiple') || parseInt(select.attr('size')) > 157            , settings = options || {}58            , tabIndex = parseInt(select.prop('tabindex')) || 059            , self     = this;60        control61            .width(select.outerWidth())62            .addClass(select.attr('class'))63            .attr('title', select.attr('title') || '')64            .attr('tabindex', tabIndex)65            .css('display', 'inline-block')66            .bind('focus.selectBox', function () {67                if (this !== document.activeElement && document.body !== document.activeElement) {68                    $(document.activeElement).blur();69                }70                if (control.hasClass('selectBox-active')) {71                    return;72                }73                control.addClass('selectBox-active');74                select.trigger('focus');75            })76            .bind('blur.selectBox', function () {77                if (!control.hasClass('selectBox-active')) {78                    return;79                }80                control.removeClass('selectBox-active');81                select.trigger('blur');82            });83        if (!$(window).data('selectBox-bindings')) {84            $(window)85                .data('selectBox-bindings', true)86                .bind('scroll.selectBox', this.hideMenus)87                .bind('resize.selectBox', this.hideMenus);88        }89        if (select.attr('disabled')) {90            control.addClass('selectBox-disabled');91        }92        // Focus on control when label is clicked93        select.bind('click.selectBox', function (event) {94            control.focus();95            event.preventDefault();96        });97        // Generate control98        if (inline) {99            // Inline controls100            options = this.getOptions('inline');101            control102                .append(options)103                .data('selectBox-options', options).addClass('selectBox-inline selectBox-menuShowing')104                .bind('keydown.selectBox', function (event) {105                    self.handleKeyDown(event);106                })107                .bind('keypress.selectBox',function (event) {108                    self.handleKeyPress(event);109                })110                .bind('mousedown.selectBox',function (event) {111                    if (1 !== event.which) {112                        return;113                    }114                    if ($(event.target).is('A.selectBox-inline')) {115                        event.preventDefault();116                    }117                    if (!control.hasClass('selectBox-focus')) {118                        control.focus();119                    }120                })121                .insertAfter(select);122            // Auto-height based on size attribute123            if (!select[0].style.height) {124                var size = select.attr('size') ? parseInt(select.attr('size')) : 5;125                // Draw a dummy control off-screen, measure, and remove it126                var tmp = control127                    .clone()128                    .removeAttr('id')129                    .css({130                        position: 'absolute',131                        top: '-9999em'132                    })133                    .show()134                    .appendTo('body');135                tmp.find('.selectBox-options').html('<li><a>\u00A0</a></li>');136                var optionHeight = parseInt(tmp.find('.selectBox-options A:first').html('&nbsp;').outerHeight());137                tmp.remove();138                control.height(optionHeight * size);139            }140            this.disableSelection(control);141        } else {142            // Dropdown controls143            var label = $('<span class="selectBox-label" />'),144                arrow = $('<span class="selectBox-arrow" />');145            // Update label146            label.attr('class', this.getLabelClass()).text(this.getLabelText());147            options = this.getOptions('dropdown');148            options.appendTo('BODY');149            control150                .data('selectBox-options', options)151                .addClass('selectBox-dropdown')152                .append(label)153                .append(arrow)154                .bind('mousedown.selectBox', function (event) {155                    if (1 === event.which) {156                        if (control.hasClass('selectBox-menuShowing')) {157                            self.hideMenus();158                        } else {159                            event.stopPropagation();160                            // Webkit fix to prevent premature selection of options161                            options162                                .data('selectBox-down-at-x', event.screenX)163                                .data('selectBox-down-at-y', event.screenY);164                            self.showMenu();165                        }166                    }167                })168                .bind('keydown.selectBox', function (event) {169                    self.handleKeyDown(event);170                })171                .bind('keypress.selectBox', function (event) {172                    self.handleKeyPress(event);173                })174                .bind('open.selectBox',function (event, triggerData) {175                    if (triggerData && triggerData._selectBox === true) {176                        return;177                    }178                    self.showMenu();179                })180                .bind('close.selectBox', function (event, triggerData) {181                    if (triggerData && triggerData._selectBox === true) {182                        return;183                    }184                    self.hideMenus();185                })186                .insertAfter(select);187            // Set label width188            var labelWidth =189                    control.width()190                  - arrow.outerWidth()191                  - parseInt(label.css('paddingLeft')) || 0192                  - parseInt(label.css('paddingRight')) || 0;193            label.width(labelWidth);194            this.disableSelection(control);195        }196        // Store data for later use and show the control197        select198            .addClass('selectBox')199            .data('selectBox-control', control)200            .data('selectBox-settings', settings)201            .hide();202    };203    /**204     * @param {String} type 'inline'|'dropdown'205     * @returns {jQuery}206     */207    SelectBox.prototype.getOptions = function (type) {208        var options;209        var select = $(this.selectElement);210        var self   = this;211        // Private function to handle recursion in the getOptions function.212        var _getOptions = function (select, options) {213            // Loop through the set in order of element children.214            select.children('OPTION, OPTGROUP').each(function () {215                // If the element is an option, add it to the list.216                if ($(this).is('OPTION')) {217                    // Check for a value in the option found.218                    if ($(this).length > 0) {219                        // Create an option form the found element.220                        self.generateOptions($(this), options);221                    } else {222                        // No option information found, so add an empty.223                        options.append('<li>\u00A0</li>');224                    }225                } else {226                    // If the element is an option group, add the group and call this function on it.227                    var optgroup = $('<li class="selectBox-optgroup" />');228                    optgroup.text($(this).attr('label'));229                    options.append(optgroup);230                    options = _getOptions($(this), options);231                }232            });233            // Return the built strin234            return options;235        };236        switch (type) {237            case 'inline':238                options = $('<ul class="selectBox-options" />');239                options = _getOptions(select, options);240                options241                    .find('A')242                    .bind('mouseover.selectBox', function (event) {243                        self.addHover($(this).parent());244                    })245                    .bind('mouseout.selectBox',function (event) {246                        self.removeHover($(this).parent());247                    })248                    .bind('mousedown.selectBox',function (event) {249                        if (1 !== event.which) {250                            return251                        }252                        event.preventDefault(); // Prevent options from being "dragged"253                        if (!select.selectBox('control').hasClass('selectBox-active')) {254                            select.selectBox('control').focus();255                        }256                    })257                    .bind('mouseup.selectBox', function (event) {258                        if (1 !== event.which) {259                            return;260                        }261                        self.hideMenus();262                        self.selectOption($(this).parent(), event);263                    });264                this.disableSelection(options);265                return options;266            case 'dropdown':267                options = $('<ul class="selectBox-dropdown-menu selectBox-options" />');268                options = _getOptions(select, options);269                options270                    .data('selectBox-select', select)271                    .css('display', 'none')272                    .appendTo('BODY')273                    .find('A')274                    .bind('mousedown.selectBox', function (event) {275                        if (event.which === 1) {276                            event.preventDefault(); // Prevent options from being "dragged"277                            if (event.screenX === options.data('selectBox-down-at-x') &&278                                event.screenY === options.data('selectBox-down-at-y')) {279                                options.removeData('selectBox-down-at-x').removeData('selectBox-down-at-y');280                                self.hideMenus();281                            }282                        }283                    })284                    .bind('mouseup.selectBox', function (event) {285                        if (1 !== event.which) {286                            return;287                        }288                        if (event.screenX === options.data('selectBox-down-at-x') &&289                            event.screenY === options.data('selectBox-down-at-y')) {290                            return;291                        } else {292                            options.removeData('selectBox-down-at-x').removeData('selectBox-down-at-y');293                        }294                        self.selectOption($(this).parent());295                        self.hideMenus();296                    })297                    .bind('mouseover.selectBox', function (event) {298                        self.addHover($(this).parent());299                    })300                    .bind('mouseout.selectBox', function (event) {301                        self.removeHover($(this).parent());302                    });303                // Inherit classes for dropdown menu304                var classes = select.attr('class') || '';305                if ('' !== classes) {306                    classes = classes.split(' ');307                    for (var i in classes) {308                        options.addClass(classes[i] + '-selectBox-dropdown-menu');309                    }310                }311                this.disableSelection(options);312                return options;313        }314    };315    /**316     * Returns the current class of the selected option.317     *318     * @returns {String}319     */320    SelectBox.prototype.getLabelClass = function () {321        var selected = $(this.selectElement).find('OPTION:selected');322        return ('selectBox-label ' + (selected.attr('class') || '')).replace(/\s+$/, '');323    };324    /**325     * Returns the current label of the selected option.326     *327     * @returns {String}328     */329    SelectBox.prototype.getLabelText = function () {330        var selected = $(this.selectElement).find('OPTION:selected');331        return selected.text() || '\u00A0';332    };333    /**334     * Sets the label.335     * This method uses the getLabelClass() and getLabelText() methods.336     */337    SelectBox.prototype.setLabel = function () {338        var select = $(this.selectElement);339        var control = select.data('selectBox-control');340        if (!control) {341            return;342        }343        control344            .find('.selectBox-label')345            .attr('class', this.getLabelClass())346            .text(this.getLabelText());347    };348    /**349     * Destroys the SelectBox instance and shows the origin select element.350     *351     */352    SelectBox.prototype.destroy = function () {353        var select = $(this.selectElement);354        var control = select.data('selectBox-control');355        if (!control) {356            return;357        }358        var options = control.data('selectBox-options');359        options.remove();360        control.remove();361        select362            .removeClass('selectBox')363            .removeData('selectBox-control')364            .data('selectBox-control', null)365            .removeData('selectBox-settings')366            .data('selectBox-settings', null)367            .show();368    };369    /**370     * Refreshes the option elements.371     */372    SelectBox.prototype.refresh = function () {373        var select = $(this.selectElement),374            control = select.data('selectBox-control'),375            dropdown = control.hasClass('selectBox-dropdown'),376            menuOpened = control.hasClass('selectBox-menuShowing');377        select.selectBox('options', select.html());378        // Restore opened dropdown state (original menu was trashed)379        if (dropdown && menuOpened) {380            this.showMenu();381        }382    };383    /**384     * Shows the dropdown menu.385     */386    SelectBox.prototype.showMenu = function () {387        var self = this388            , select   = $(this.selectElement)389            , control  = select.data('selectBox-control')390            , settings = select.data('selectBox-settings')391            , options  = control.data('selectBox-options');392        if (control.hasClass('selectBox-disabled')) {393            return false;394        }395        this.hideMenus();396        var borderBottomWidth = parseInt(control.css('borderBottomWidth')) || 0;397        // Menu position398        options399            .width(control.innerWidth())400            .css({401                top: control.offset().top + control.outerHeight() - borderBottomWidth,402                left: control.offset().left403            });404        if (select.triggerHandler('beforeopen')) {405            return false;406        }407        var dispatchOpenEvent = function () {408            select.triggerHandler('open', {409                _selectBox: true410            });411        };412        // Show menu413        switch (settings.menuTransition) {414            case 'fade':415                options.fadeIn(settings.menuSpeed, dispatchOpenEvent);416                break;417            case 'slide':418                options.slideDown(settings.menuSpeed, dispatchOpenEvent);419                break;420            default:421                options.show(settings.menuSpeed, dispatchOpenEvent);422                break;423        }424        if (!settings.menuSpeed) {425            dispatchOpenEvent();426        }427        // Center on selected option428        var li = options.find('.selectBox-selected:first');429        this.keepOptionInView(li, true);430        this.addHover(li);431        control.addClass('selectBox-menuShowing');432        $(document).bind('mousedown.selectBox', function (event) {433            if (1 === event.which) {434                if ($(event.target).parents().andSelf().hasClass('selectBox-options')) {435                    return;436                }437                self.hideMenus();438            }439        });440    };441    /**442     * Hides the menu of all instances.443     */444    SelectBox.prototype.hideMenus = function () {445        if ($(".selectBox-dropdown-menu:visible").length === 0) {446            return;447        }448        $(document).unbind('mousedown.selectBox');449        $(".selectBox-dropdown-menu").each(function () {450            var options = $(this)451                , select = options.data('selectBox-select')452                , control = select.data('selectBox-control')453                , settings = select.data('selectBox-settings');454            if (select.triggerHandler('beforeclose')) {455                return false;456            }457            var dispatchCloseEvent = function () {458                select.triggerHandler('close', {459                    _selectBox: true460                });461            };462            if (settings) {463                switch (settings.menuTransition) {464                    case 'fade':465                        options.fadeOut(settings.menuSpeed, dispatchCloseEvent);466                        break;467                    case 'slide':468                        options.slideUp(settings.menuSpeed, dispatchCloseEvent);469                        break;470                    default:471                        options.hide(settings.menuSpeed, dispatchCloseEvent);472                        break;473                }474                if (!settings.menuSpeed) {475                    dispatchCloseEvent();476                }477                control.removeClass('selectBox-menuShowing');478            } else {479                $(this).hide();480                $(this).triggerHandler('close', {481                    _selectBox: true482                });483                $(this).removeClass('selectBox-menuShowing');484            }485        });486    };487    /**488     * Selects an option.489     *490     * @param {HTMLElement} li491     * @param {DOMEvent}    event492     * @returns {Boolean}493     */494    SelectBox.prototype.selectOption = function (li, event) {495        var select = $(this.selectElement);496        li         = $(li);497        var control    = select.data('selectBox-control')498            , settings = select.data('selectBox-settings');499        if (control.hasClass('selectBox-disabled')) {500            return false;501        }502        if (0 === li.length || li.hasClass('selectBox-disabled')) {503            return false;504        }505        if (select.attr('multiple')) {506            // If event.shiftKey is true, this will select all options between li and the last li selected507            if (event.shiftKey && control.data('selectBox-last-selected')) {508                li.toggleClass('selectBox-selected');509                var affectedOptions;510                if (li.index() > control.data('selectBox-last-selected').index()) {511                    affectedOptions = li512                        .siblings()513                        .slice(control.data('selectBox-last-selected').index(), li.index());514                } else {515                    affectedOptions = li516                        .siblings()517                        .slice(li.index(), control.data('selectBox-last-selected').index());518                }519                affectedOptions = affectedOptions.not('.selectBox-optgroup, .selectBox-disabled');520                if (li.hasClass('selectBox-selected')) {521                    affectedOptions.addClass('selectBox-selected');522                } else {523                    affectedOptions.removeClass('selectBox-selected');524                }525            } else if ((this.isMac && event.metaKey) || (!this.isMac && event.ctrlKey)) {526                li.toggleClass('selectBox-selected');527            } else {528                li.siblings().removeClass('selectBox-selected');529                li.addClass('selectBox-selected');530            }531        } else {532            li.siblings().removeClass('selectBox-selected');533            li.addClass('selectBox-selected');534        }535        if (control.hasClass('selectBox-dropdown')) {536            control.find('.selectBox-label').text(li.text());537        }538        // Update original control's value539        var i = 0, selection = [];540        if (select.attr('multiple')) {541            control.find('.selectBox-selected A').each(function () {542                selection[i++] = $(this).attr('rel');543            });544        } else {545            selection = li.find('A').attr('rel');546        }547        // Remember most recently selected item548        control.data('selectBox-last-selected', li);549        // Change callback550        if (select.val() !== selection) {551            select.val(selection);552            this.setLabel();553            select.trigger('change');554        }555        return true;556    };557    /**558     * Adds the hover class.559     *560     * @param {HTMLElement} li561     */562    SelectBox.prototype.addHover = function (li) {563        li = $(li);564        var select = $(this.selectElement)565            , control   = select.data('selectBox-control')566            , options = control.data('selectBox-options');567        options.find('.selectBox-hover').removeClass('selectBox-hover');568        li.addClass('selectBox-hover');569    };570    /**571     * Returns the original HTML select element.572     *573     * @returns {HTMLElement}574     */575    SelectBox.prototype.getSelectElement = function () {576        return this.selectElement;577    };578    /**579     * Remove the hover class.580     *581     * @param {HTMLElement} li582     */583    SelectBox.prototype.removeHover = function (li) {584        li = $(li);585        var select = $(this.selectElement)586            , control = select.data('selectBox-control')587            , options = control.data('selectBox-options');588        options.find('.selectBox-hover').removeClass('selectBox-hover');589    };590    /**591     * Checks if the widget is in the view.592     *593     * @param {jQuery}      li594     * @param {Boolean}     center595     */596    SelectBox.prototype.keepOptionInView = function (li, center) {597        if (!li || li.length === 0) {598            return;599        }600        var select = $(this.selectElement)601            , control     = select.data('selectBox-control')602            , options   = control.data('selectBox-options')603            , scrollBox = control.hasClass('selectBox-dropdown') ? options : options.parent()604            , top       = parseInt(li.offset().top -scrollBox.position().top)605            , bottom    = parseInt(top + li.outerHeight());606        if (center) {607            scrollBox.scrollTop(li.offset().top - scrollBox.offset().top + scrollBox.scrollTop() -608                (scrollBox.height() / 2));609        } else {610            if (top < 0) {611                scrollBox.scrollTop(li.offset().top - scrollBox.offset().top + scrollBox.scrollTop());612            }613            if (bottom > scrollBox.height()) {614                scrollBox.scrollTop((li.offset().top + li.outerHeight()) - scrollBox.offset().top +615                    scrollBox.scrollTop() - scrollBox.height());616            }617        }618    };619    /**620     * Handles the keyDown event.621     * Handles open/close and arrow key functionality622     *623     * @param {DOMEvent}    event624     */625    SelectBox.prototype.handleKeyDown = function (event) {626        var select = $(this.selectElement)627            , control        = select.data('selectBox-control')628            , options      = control.data('selectBox-options')629            , settings     = select.data('selectBox-settings')630            , totalOptions = 0, i = 0;631        if (control.hasClass('selectBox-disabled')) {632            return;633        }634        switch (event.keyCode) {635            case 8:636                // backspace637                event.preventDefault();638                this.typeSearch = '';639                break;640            case 9:641            // tab642            case 27:643                // esc644                this.hideMenus();645                this.removeHover();646                break;647            case 13:648                // enter649                if (control.hasClass('selectBox-menuShowing')) {650                    this.selectOption(options.find('LI.selectBox-hover:first'), event);651                    if (control.hasClass('selectBox-dropdown')) {652                        this.hideMenus();653                    }654                } else {655                    this.showMenu();656                }657                break;658            case 38:659            // up660            case 37:661                // left662                event.preventDefault();663                if (control.hasClass('selectBox-menuShowing')) {664                    var prev = options.find('.selectBox-hover').prev('LI');665                    totalOptions = options.find('LI:not(.selectBox-optgroup)').length;666                    i = 0;667                    while (prev.length === 0 || prev.hasClass('selectBox-disabled') ||668                        prev.hasClass('selectBox-optgroup')) {669                        prev = prev.prev('LI');670                        if (prev.length === 0) {671                            if (settings.loopOptions) {672                                prev = options.find('LI:last');673                            } else {674                                prev = options.find('LI:first');675                            }676                        }677                        if (++i >= totalOptions) {678                            break;679                        }680                    }681                    this.addHover(prev);682                    this.selectOption(prev, event);683                    this.keepOptionInView(prev);684                } else {685                    this.showMenu();686                }687                break;688            case 40:689            // down690            case 39:691                // right692                event.preventDefault();693                if (control.hasClass('selectBox-menuShowing')) {694                    var next = options.find('.selectBox-hover').next('LI');695                    totalOptions = options.find('LI:not(.selectBox-optgroup)').length;696                    i = 0;697                    while (0 === next.length || next.hasClass('selectBox-disabled') ||698                        next.hasClass('selectBox-optgroup')) {699                        next = next.next('LI');700                        if (next.length === 0) {701                            if (settings.loopOptions) {702                                next = options.find('LI:first');703                            } else {704                                next = options.find('LI:last');705                            }706                        }707                        if (++i >= totalOptions) {708                            break;709                        }710                    }711                    this.addHover(next);712                    this.selectOption(next, event);713                    this.keepOptionInView(next);714                } else {715                    this.showMenu();716                }717                break;718        }719    };720    /**721     * Handles the keyPress event.722     * Handles type-to-find functionality723     *724     * @param {DOMEvent}    event725     */726    SelectBox.prototype.handleKeyPress = function (event) {727        var select = $(this.selectElement)728            , control = select.data('selectBox-control')729            , options = control.data('selectBox-options');730        if (control.hasClass('selectBox-disabled')) {731            return;732        }733        switch (event.keyCode) {734            case 9:735            // tab736            case 27:737            // esc738            case 13:739            // enter740            case 38:741            // up742            case 37:743            // left744            case 40:745            // down746            case 39:747                // right748                // Don't interfere with the keydown event!749                break;750            default:751                // Type to find752                if (!control.hasClass('selectBox-menuShowing')) {753                    this.showMenu();754                }755                event.preventDefault();756                clearTimeout(this.typeTimer);757                this.typeSearch += String.fromCharCode(event.charCode || event.keyCode);758                options.find('A').each(function () {759                    if ($(this).text().substr(0, this.typeSearch.length).toLowerCase() === this.typeSearch.toLowerCase()) {760                        this.addHover($(this).parent());761                        this.selectOption($(this).parent(), event);762                        this.keepOptionInView($(this).parent());763                        return false;764                    }765                });766                // Clear after a brief pause767                this.typeTimer = setTimeout(function () {768                    this.typeSearch = '';769                }, 1000);770                break;771        }772    };773    /**774     * Enables the selectBox.775     */776    SelectBox.prototype.enable = function () {777        var select = $(this.selectElement);778        select.prop('disabled', false);779        var control = select.data('selectBox-control');780        if (!control) {781            return;782        }783        control.removeClass('selectBox-disabled');784    };785    /**786     * Disables the selectBox.787     */788    SelectBox.prototype.disable = function () {789        var select = $(this.selectElement);790        select.prop('disabled', true);791        var control = select.data('selectBox-control');792        if (!control) {793            return;794        }795        control.addClass('selectBox-disabled');796    };797    /**798     * Sets the current value.799     *800     * @param {String}      value801     */802    SelectBox.prototype.setValue = function (value) {803        var select = $(this.selectElement);804        select.val(value);805        value = select.val(); // IE9's select would be null if it was set with a non-exist options value806        if (null === value) { // So check it here and set it with the first option's value if possible807            value = select.children().first().val();808            select.val(value);809        }810        var control = select.data('selectBox-control');811        if (!control) {812            return;813        }814        var settings = select.data('selectBox-settings')815            , options = control.data('selectBox-options');816        // Update label817        this.setLabel();818        // Update control values819        options.find('.selectBox-selected').removeClass('selectBox-selected');820        options.find('A').each(function () {821            if (typeof(value) === 'object') {822                for (var i = 0; i < value.length; i++) {823                    if ($(this).attr('rel') == value[i]) {824                        $(this).parent().addClass('selectBox-selected');825                    }826                }827            } else {828                if ($(this).attr('rel') == value) {829                    $(this).parent().addClass('selectBox-selected');830                }831            }832        });833        if (settings.change) {834            settings.change.call(select);835        }836    };837    /**838     * Sets the option elements.839     *840     * @param {String|Object} options841     */842    SelectBox.prototype.setOptions = function (options) {843        var select = $(this.selectElement)844            , control = select.data('selectBox-control')845            , settings = select.data('selectBox-settings')846            , type;847        switch (typeof(options)) {848            case 'string':849                select.html(options);850                break;851            case 'object':852                select.html('');853                for (var i in options) {854                    if (options[i] === null) {855                        continue;856                    }857                    if (typeof(options[i]) === 'object') {858                        var optgroup = $('<optgroup label="' + i + '" />');859                        for (var j in options[i]) {860                            optgroup.append('<option value="' + j + '">' + options[i][j] + '</option>');861                        }862                        select.append(optgroup);863                    } else {864                        var option = $('<option value="' + i + '">' + options[i] + '</option>');865                        select.append(option);866                    }867                }868                break;869        }870        if (!control) {871            return;872        }873        // Remove old options874        control.data('selectBox-options').remove();875        // Generate new options876        type     = control.hasClass('selectBox-dropdown') ? 'dropdown' : 'inline';877        options  = this.getOptions(type);878        control.data('selectBox-options', options);879        switch (type) {880            case 'inline':881                control.append(options);882                break;883            case 'dropdown':884                // Update label885                this.setLabel();886                $("BODY").append(options);887                break;888        }889    };890    /**891     * Disables the selection.892     *893     * @param {*} selector894     */895    SelectBox.prototype.disableSelection = function (selector) {896        $(selector).css('MozUserSelect', 'none').bind('selectstart', function (event) {897            event.preventDefault();898        });899    };900    /**901     * Generates the options.902     *903     * @param {jQuery} self904     * @param {jQuery} options905     */906    SelectBox.prototype.generateOptions = function (self, options) {907        var li = $('<li />'), a = $('<a />');908        li.addClass(self.attr('class'));909        li.data(self.data());910        a.attr('rel', self.val()).text(self.text());911        li.append(a);912        if (self.attr('disabled')) {913            li.addClass('selectBox-disabled');914        }915        if (self.attr('selected')) {916            li.addClass('selectBox-selected');917        }918        options.append(li);919    };920    /**921     * Extends the jQuery.fn object.922     */923    $.extend($.fn, {924        selectBox: function (method, options) {925            var selectBox;926            switch (method) {927                case 'control':928                    return $(this).data('selectBox-control');929                case 'settings':930                    if (!options) {931                        return $(this).data('selectBox-settings');932                    }933                    $(this).each(function () {934                        $(this).data('selectBox-settings', $.extend(true, $(this).data('selectBox-settings'), options));935                    });936                    break;937                case 'options':938                    // Getter939                    if (undefined === options) {940                        return $(this).data('selectBox-control').data('selectBox-options');941                    }942                    // Setter943                    $(this).each(function () {944                        if (selectBox = $(this).data('selectBox')) {945                            selectBox.setOptions(options);946                        }947                    });948                    break;949                case 'value':950                    // Empty string is a valid value951                    if (undefined === options) {952                        return $(this).val();953                    }954                    $(this).each(function () {955                        if (selectBox = $(this).data('selectBox')) {956                            selectBox.setValue(options);957                        }958                    });959                    break;960                case 'refresh':961                    $(this).each(function () {962                        if (selectBox = $(this).data('selectBox')) {963                            selectBox.refresh();964                        }965                    });966                    break;967                case 'enable':968                    $(this).each(function () {969                        if (selectBox = $(this).data('selectBox')) {970                            selectBox.enable(this);971                        }972                    });973                    break;974                case 'disable':975                    $(this).each(function () {976                        if (selectBox = $(this).data('selectBox')) {977                            selectBox.disable();978                        }979                    });980                    break;981                case 'destroy':982                    $(this).each(function () {983                        if (selectBox = $(this).data('selectBox')) {984                            selectBox.destroy();985                            $(this).data('selectBox', null);986                        }987                    });988                    break;989                case 'instance':990                    return $(this).data('selectBox');991                default:992                    $(this).each(function (idx, select) {993                        if (!$(select).data('selectBox')) {994                            $(select).data('selectBox', new SelectBox(select, method));995                        }996                    });997                    break;998            }999            return $(this);1000        }1001    });...

Full Screen

Full Screen

closure_i18n_ordinalrules.js

Source:closure_i18n_ordinalrules.js Github

copy

Full Screen

1// Copyright 2012 The Closure Library Authors. All Rights Reserved2//3// Licensed under the Apache License, Version 2.0 (the "License");4// you may not use this file except in compliance with the License.5// You may obtain a copy of the License at6//7//      http://www.apache.org/licenses/LICENSE-2.08//9// Unless required by applicable law or agreed to in writing, software10// distributed under the License is distributed on an "AS-IS" BASIS, WITHOUT11// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the12// License for the specific language governing permissions and limitations under13// the License.14/**15 * @fileoverview Ordinal rules.16 *17 * This file is autogenerated by script:18 *   http://go/generate_pluralrules.py19 * File generated from CLDR ver. 2320 *21 * Before check in, this file could have been manually edited. This is to22 * incorporate changes before we could fix CLDR. All manual modification must be23 * documented in this section, and should be removed after those changes land to24 * CLDR.25 */26goog.provide('goog.i18n.ordinalRules');27/**28 * Ordinal pattern keyword29 * @enum {string}30 */31goog.i18n.ordinalRules.Keyword = {32  ZERO: 'zero',33  ONE: 'one',34  TWO: 'two',35  FEW: 'few',36  MANY: 'many',37  OTHER: 'other'38};39/**40 * Default ordinal select rule.41 * @param {number} n The count of items.42 * @return {goog.i18n.ordinalRules.Keyword} Default value.43 * @private44 */45goog.i18n.ordinalRules.defaultSelect_ = function(n) {46  return goog.i18n.ordinalRules.Keyword.OTHER;47};48/**49 * Ordinal select rules for fr locale50 *51 * @param {number} n  The count of items.52 * @return {goog.i18n.ordinalRules.Keyword} Locale-specific ordinal value.53 * @private54 */55goog.i18n.ordinalRules.frSelect_ = function(n) {56  if (n == 1) {57    return goog.i18n.ordinalRules.Keyword.ONE;58  }59  return goog.i18n.ordinalRules.Keyword.OTHER;60};61/**62 * Ordinal select rules for hu locale63 *64 * @param {number} n  The count of items.65 * @return {goog.i18n.ordinalRules.Keyword} Locale-specific ordinal value.66 * @private67 */68goog.i18n.ordinalRules.huSelect_ = function(n) {69  if (n == 1 || n == 5) {70    return goog.i18n.ordinalRules.Keyword.ONE;71  }72  return goog.i18n.ordinalRules.Keyword.OTHER;73};74/**75 * Ordinal select rules for sv locale76 *77 * @param {number} n  The count of items.78 * @return {goog.i18n.ordinalRules.Keyword} Locale-specific ordinal value.79 * @private80 */81goog.i18n.ordinalRules.svSelect_ = function(n) {82  if ((n % 10 == 1 || n % 10 == 2) && n % 100 != 11 && n % 100 != 12) {83    return goog.i18n.ordinalRules.Keyword.ONE;84  }85  return goog.i18n.ordinalRules.Keyword.OTHER;86};87/**88 * Ordinal select rules for en locale89 *90 * @param {number} n  The count of items.91 * @return {goog.i18n.ordinalRules.Keyword} Locale-specific ordinal value.92 * @private93 */94goog.i18n.ordinalRules.enSelect_ = function(n) {95  if (n % 10 == 1 && n % 100 != 11) {96    return goog.i18n.ordinalRules.Keyword.ONE;97  }98  if (n % 10 == 2 && n % 100 != 12) {99    return goog.i18n.ordinalRules.Keyword.TWO;100  }101  if (n % 10 == 3 && n % 100 != 13) {102    return goog.i18n.ordinalRules.Keyword.FEW;103  }104  return goog.i18n.ordinalRules.Keyword.OTHER;105};106/**107 * Ordinal select rules for it locale108 *109 * @param {number} n  The count of items.110 * @return {goog.i18n.ordinalRules.Keyword} Locale-specific ordinal value.111 * @private112 */113goog.i18n.ordinalRules.itSelect_ = function(n) {114  if (n == 11 || n == 8 || n == 80 || n == 800) {115    return goog.i18n.ordinalRules.Keyword.MANY;116  }117  return goog.i18n.ordinalRules.Keyword.OTHER;118};119/**120 * Ordinal select rules for ca locale121 *122 * @param {number} n  The count of items.123 * @return {goog.i18n.ordinalRules.Keyword} Locale-specific ordinal value.124 * @private125 */126goog.i18n.ordinalRules.caSelect_ = function(n) {127  if (n == 1 || n == 3) {128    return goog.i18n.ordinalRules.Keyword.ONE;129  }130  if (n == 2) {131    return goog.i18n.ordinalRules.Keyword.TWO;132  }133  if (n == 4) {134    return goog.i18n.ordinalRules.Keyword.FEW;135  }136  return goog.i18n.ordinalRules.Keyword.OTHER;137};138/**139 * Ordinal select rules for mr locale140 *141 * @param {number} n  The count of items.142 * @return {goog.i18n.ordinalRules.Keyword} Locale-specific ordinal value.143 * @private144 */145goog.i18n.ordinalRules.mrSelect_ = function(n) {146  if (n == 1) {147    return goog.i18n.ordinalRules.Keyword.ONE;148  }149  if (n == 2 || n == 3) {150    return goog.i18n.ordinalRules.Keyword.TWO;151  }152  if (n == 4) {153    return goog.i18n.ordinalRules.Keyword.FEW;154  }155  return goog.i18n.ordinalRules.Keyword.OTHER;156};157/**158 * Ordinal select rules for gu locale159 *160 * @param {number} n  The count of items.161 * @return {goog.i18n.ordinalRules.Keyword} Locale-specific ordinal value.162 * @private163 */164goog.i18n.ordinalRules.guSelect_ = function(n) {165  if (n == 1) {166    return goog.i18n.ordinalRules.Keyword.ONE;167  }168  if (n == 2 || n == 3) {169    return goog.i18n.ordinalRules.Keyword.TWO;170  }171  if (n == 4) {172    return goog.i18n.ordinalRules.Keyword.FEW;173  }174  if (n == 6) {175    return goog.i18n.ordinalRules.Keyword.MANY;176  }177  return goog.i18n.ordinalRules.Keyword.OTHER;178};179/**180 * Ordinal select rules for bn locale181 *182 * @param {number} n  The count of items.183 * @return {goog.i18n.ordinalRules.Keyword} Locale-specific ordinal value.184 * @private185 */186goog.i18n.ordinalRules.bnSelect_ = function(n) {187  if (n == 1 || n == 5 || n == 7 || n == 8 || n == 9 || n == 10) {188    return goog.i18n.ordinalRules.Keyword.ONE;189  }190  if (n == 2 || n == 3) {191    return goog.i18n.ordinalRules.Keyword.TWO;192  }193  if (n == 4) {194    return goog.i18n.ordinalRules.Keyword.FEW;195  }196  if (n == 6) {197    return goog.i18n.ordinalRules.Keyword.MANY;198  }199  return goog.i18n.ordinalRules.Keyword.OTHER;200};201/**202 * Ordinal select rules for zu locale203 *204 * @param {number} n  The count of items.205 * @return {goog.i18n.ordinalRules.Keyword} Locale-specific ordinal value.206 * @private207 */208goog.i18n.ordinalRules.zuSelect_ = function(n) {209  if (n == 1) {210    return goog.i18n.ordinalRules.Keyword.ONE;211  }212  if (n == (n | 0) && n >= 2 && n <= 9) {213    return goog.i18n.ordinalRules.Keyword.FEW;214  }215  if (n == (n | 0) && (n >= 10 && n <= 19 || n >= 100 && n <= 199 || n >= 1000 && n <= 1999)) {216    return goog.i18n.ordinalRules.Keyword.MANY;217  }218  return goog.i18n.ordinalRules.Keyword.OTHER;219};220/**221 * Selected ordinal rules by locale.222 */223goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.enSelect_;224if (goog.LOCALE == 'af') {225  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;226}227if (goog.LOCALE == 'am') {228  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;229}230if (goog.LOCALE == 'ar') {231  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;232}233if (goog.LOCALE == 'bg') {234  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;235}236if (goog.LOCALE == 'bn') {237  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.bnSelect_;238}239if (goog.LOCALE == 'br') {240  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;241}242if (goog.LOCALE == 'ca') {243  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.caSelect_;244}245if (goog.LOCALE == 'chr') {246  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;247}248if (goog.LOCALE == 'cs') {249  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;250}251if (goog.LOCALE == 'cy') {252  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;253}254if (goog.LOCALE == 'da') {255  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;256}257if (goog.LOCALE == 'de') {258  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;259}260if (goog.LOCALE == 'de_AT' || goog.LOCALE == 'de-AT') {261  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;262}263if (goog.LOCALE == 'de_CH' || goog.LOCALE == 'de-CH') {264  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;265}266if (goog.LOCALE == 'el') {267  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;268}269if (goog.LOCALE == 'en') {270  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.enSelect_;271}272if (goog.LOCALE == 'en_AU' || goog.LOCALE == 'en-AU') {273  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.enSelect_;274}275if (goog.LOCALE == 'en_GB' || goog.LOCALE == 'en-GB') {276  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.enSelect_;277}278if (goog.LOCALE == 'en_IE' || goog.LOCALE == 'en-IE') {279  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.enSelect_;280}281if (goog.LOCALE == 'en_IN' || goog.LOCALE == 'en-IN') {282  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.enSelect_;283}284if (goog.LOCALE == 'en_SG' || goog.LOCALE == 'en-SG') {285  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.enSelect_;286}287if (goog.LOCALE == 'en_US' || goog.LOCALE == 'en-US') {288  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.enSelect_;289}290if (goog.LOCALE == 'en_ZA' || goog.LOCALE == 'en-ZA') {291  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.enSelect_;292}293if (goog.LOCALE == 'es') {294  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;295}296if (goog.LOCALE == 'es_419' || goog.LOCALE == 'es-419') {297  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;298}299if (goog.LOCALE == 'es_ES' || goog.LOCALE == 'es-ES') {300  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;301}302if (goog.LOCALE == 'et') {303  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;304}305if (goog.LOCALE == 'eu') {306  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;307}308if (goog.LOCALE == 'fa') {309  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;310}311if (goog.LOCALE == 'fi') {312  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;313}314if (goog.LOCALE == 'fil') {315  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.frSelect_;316}317if (goog.LOCALE == 'fr') {318  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.frSelect_;319}320if (goog.LOCALE == 'fr_CA' || goog.LOCALE == 'fr-CA') {321  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.frSelect_;322}323if (goog.LOCALE == 'gl') {324  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;325}326if (goog.LOCALE == 'gsw') {327  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;328}329if (goog.LOCALE == 'gu') {330  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.guSelect_;331}332if (goog.LOCALE == 'haw') {333  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;334}335if (goog.LOCALE == 'he') {336  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;337}338if (goog.LOCALE == 'hi') {339  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.guSelect_;340}341if (goog.LOCALE == 'hr') {342  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;343}344if (goog.LOCALE == 'hu') {345  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.huSelect_;346}347if (goog.LOCALE == 'id') {348  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;349}350if (goog.LOCALE == 'in') {351  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;352}353if (goog.LOCALE == 'is') {354  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;355}356if (goog.LOCALE == 'it') {357  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.itSelect_;358}359if (goog.LOCALE == 'iw') {360  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;361}362if (goog.LOCALE == 'ja') {363  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;364}365if (goog.LOCALE == 'kn') {366  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;367}368if (goog.LOCALE == 'ko') {369  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;370}371if (goog.LOCALE == 'ln') {372  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;373}374if (goog.LOCALE == 'lt') {375  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;376}377if (goog.LOCALE == 'lv') {378  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;379}380if (goog.LOCALE == 'ml') {381  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;382}383if (goog.LOCALE == 'mr') {384  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.mrSelect_;385}386if (goog.LOCALE == 'ms') {387  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.frSelect_;388}389if (goog.LOCALE == 'mt') {390  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;391}392if (goog.LOCALE == 'nb') {393  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;394}395if (goog.LOCALE == 'nl') {396  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;397}398if (goog.LOCALE == 'no') {399  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;400}401if (goog.LOCALE == 'or') {402  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;403}404if (goog.LOCALE == 'pl') {405  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;406}407if (goog.LOCALE == 'pt') {408  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;409}410if (goog.LOCALE == 'pt_BR' || goog.LOCALE == 'pt-BR') {411  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;412}413if (goog.LOCALE == 'pt_PT' || goog.LOCALE == 'pt-PT') {414  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;415}416if (goog.LOCALE == 'ro') {417  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.frSelect_;418}419if (goog.LOCALE == 'ru') {420  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;421}422if (goog.LOCALE == 'sk') {423  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;424}425if (goog.LOCALE == 'sl') {426  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;427}428if (goog.LOCALE == 'sq') {429  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;430}431if (goog.LOCALE == 'sr') {432  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;433}434if (goog.LOCALE == 'sv') {435  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.svSelect_;436}437if (goog.LOCALE == 'sw') {438  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;439}440if (goog.LOCALE == 'ta') {441  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;442}443if (goog.LOCALE == 'te') {444  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;445}446if (goog.LOCALE == 'th') {447  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;448}449if (goog.LOCALE == 'tl') {450  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;451}452if (goog.LOCALE == 'tr') {453  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;454}455if (goog.LOCALE == 'uk') {456  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;457}458if (goog.LOCALE == 'ur') {459  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;460}461if (goog.LOCALE == 'vi') {462  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.frSelect_;463}464if (goog.LOCALE == 'zh') {465  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;466}467if (goog.LOCALE == 'zh_CN' || goog.LOCALE == 'zh-CN') {468  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;469}470if (goog.LOCALE == 'zh_HK' || goog.LOCALE == 'zh-HK') {471  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;472}473if (goog.LOCALE == 'zh_TW' || goog.LOCALE == 'zh-TW') {474  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.defaultSelect_;475}476if (goog.LOCALE == 'zu') {477  goog.i18n.ordinalRules.select = goog.i18n.ordinalRules.zuSelect_;...

Full Screen

Full Screen

jquery.cxselect.js

Source:jquery.cxselect.js Github

copy

Full Screen

1/*!2 * jQuery cxSelect3 * @name jquery.cxselect.js4 * @version 1.4.25 * @date 2017-09-266 * @author ciaoca7 * @email ciaoca@gmail.com8 * @site https://github.com/ciaoca/cxSelect9 * @license Released under the MIT license10 */11(function(factory) {12  if (typeof define === 'function' && define.amd) {13    define(['jquery'], factory);14  } else {15    factory(window.jQuery || window.Zepto || window.$);16  };17}(function($) {18  var cxSelect = function() {19    var self = this;20    var dom, settings, callback;2122    // 分配参数23    for (var i = 0, l = arguments.length; i < l; i++) {24      if (cxSelect.isJquery(arguments[i]) || cxSelect.isZepto(arguments[i])) {25        dom = arguments[i];26      } else if (cxSelect.isElement(arguments[i])) {27        dom = $(arguments[i]);28      } else if (typeof arguments[i] === 'function') {29        callback = arguments[i];30      } else if (typeof arguments[i] === 'object') {31        settings = arguments[i];32      };33    };3435    var api = new cxSelect.init(dom, settings);3637    if (typeof callback === 'function') {38      callback(api);39    };4041    return api;42  };4344  cxSelect.isElement = function(o){45    if (o && (typeof HTMLElement === 'function' || typeof HTMLElement === 'object') && o instanceof HTMLElement) {46      return true;47    } else {48      return (o && o.nodeType && o.nodeType === 1) ? true : false;49    };50  };5152  cxSelect.isJquery = function(o){53    return (o && o.length && (typeof jQuery === 'function' || typeof jQuery === 'object') && o instanceof jQuery) ? true : false;54  };5556  cxSelect.isZepto = function(o){57    return (o && o.length && (typeof Zepto === 'function' || typeof Zepto === 'object') && Zepto.zepto.isZ(o)) ? true : false;58  };5960  cxSelect.getIndex = function(n, required) {61    return required ? n : n - 1;62  };6364  cxSelect.getData = function(data, space) {65    if (typeof space === 'string' && space.length) {66      space = space.split('.');67      for (var i = 0, l = space.length; i < l; i++) {68        data = data[space[i]];69      };70    };71    return data;72  };7374  cxSelect.init = function(dom, settings) {75    var self = this;7677    if (!cxSelect.isJquery(dom) && !cxSelect.isZepto(dom)) {return};7879    var theSelect = {80      dom: {81        box: dom82      }83    };8485    self.attach = cxSelect.attach.bind(theSelect);86    self.detach = cxSelect.detach.bind(theSelect);87    self.setOptions = cxSelect.setOptions.bind(theSelect);88    self.clear = cxSelect.clear.bind(theSelect);8990    theSelect.changeEvent = function() {91      cxSelect.selectChange.call(theSelect, this.className);92    };9394    theSelect.settings = $.extend({}, $.cxSelect.defaults, settings, {95      url: theSelect.dom.box.data('url'),96      emptyStyle: theSelect.dom.box.data('emptyStyle'),97      required: theSelect.dom.box.data('required'),98      firstTitle: theSelect.dom.box.data('firstTitle'),99      firstValue: theSelect.dom.box.data('firstValue'),100      jsonSpace: theSelect.dom.box.data('jsonSpace'),101      jsonName: theSelect.dom.box.data('jsonName'),102      jsonValue: theSelect.dom.box.data('jsonValue'),103      jsonSub: theSelect.dom.box.data('jsonSub')104    });105106    var _dataSelects = theSelect.dom.box.data('selects');107108    if (typeof _dataSelects === 'string' && _dataSelects.length) {109      theSelect.settings.selects = _dataSelects.split(',');110    };111112    self.setOptions();113    self.attach();114115    // 使用独立接口获取数据116    if (!theSelect.settings.url && !theSelect.settings.data) {117      cxSelect.start.apply(theSelect);118119    // 设置自定义数据120    } else if ($.isArray(theSelect.settings.data)) {121      cxSelect.start.call(theSelect, theSelect.settings.data);122123    // 设置 URL,通过 Ajax 获取数据124    } else if (typeof theSelect.settings.url === 'string' && theSelect.settings.url.length) {125      $.getJSON(theSelect.settings.url, function(json) {126        cxSelect.start.call(theSelect, json);127      });128    };129  };130131  // 设置参数132  cxSelect.setOptions = function(opts) {133    var self = this;134135    if (opts) {136      $.extend(self.settings, opts);137    };138139    // 初次或重设选择器组140    if (!$.isArray(self.selectArray) || !self.selectArray.length || (opts && opts.selects)) {141      self.selectArray = [];142143      if ($.isArray(self.settings.selects) && self.settings.selects.length) {144        var _tempSelect;145146        for (var i = 0, l = self.settings.selects.length; i < l; i++) {147          _tempSelect = self.dom.box.find('select.' + self.settings.selects[i]);148149          if (!_tempSelect || !_tempSelect.length) {break};150151          self.selectArray.push(_tempSelect);152        };153      };154    };155156    if (opts) {157      if (!$.isArray(opts.data) && typeof opts.url === 'string' && opts.url.length) {158        $.getJSON(self.settings.url, function(json) {159          cxSelect.start.call(self, json);160        });161162      } else {163        cxSelect.start.call(self, opts.data);164      };165    };166  };167168  // 绑定169  cxSelect.attach = function() {170    var self = this;171172    if (!self.attachStatus) {173      self.dom.box.on('change', 'select', self.changeEvent);174    };175176    if (typeof self.attachStatus === 'boolean') {177      cxSelect.start.call(self);178    };179180    self.attachStatus = true;181  };182183  // 移除绑定184  cxSelect.detach = function() {185    var self = this;186    self.dom.box.off('change', 'select', self.changeEvent);187    self.attachStatus = false;188  };189190  // 清空选项191  cxSelect.clear = function(index) {192    var self = this;193    var _style = {194      display: '',195      visibility: ''196    };197198    index = isNaN(index) ? 0 : index;199200    // 清空后面的 select201    for (var i = index, l = self.selectArray.length; i < l; i++) {202      self.selectArray[i].empty().prop('disabled', true);203204      if (self.settings.emptyStyle === 'none') {205        _style.display = 'none';206      } else if (self.settings.emptyStyle === 'hidden') {207        _style.visibility = 'hidden';208      };209210      self.selectArray[i].css(_style);211    };212  };213214  cxSelect.start = function(data) {215    var self = this;216217    if ($.isArray(data)) {218      self.settings.data = cxSelect.getData(data, self.settings.jsonSpace);219    };220221    if (!self.selectArray.length) {return};222223    // 保存默认值224    for (var i = 0, l = self.selectArray.length; i < l; i++) {225      if (typeof self.selectArray[i].attr('data-value') !== 'string' && self.selectArray[i][0].options.length) {226        self.selectArray[i].attr('data-value', self.selectArray[i].val());227      };228    };229230    if (self.settings.data || (typeof self.selectArray[0].data('url') === 'string' && self.selectArray[0].data('url').length)) {231      cxSelect.getOptionData.call(self, 0);232    } else if (self.selectArray[0][0].options.length && typeof self.selectArray[0].attr('data-value') === 'string' && self.selectArray[0].attr('data-value').length) {233      self.selectArray[0].val(self.selectArray[0].attr('data-value'));234      cxSelect.getOptionData.call(self, 1);235    } else {236      self.selectArray[0].prop('disabled', false).css({237        'display': '',238        'visibility': ''239      });240    };241  };242243  // 获取选项数据244  cxSelect.getOptionData = function(index) {245    var self = this;246247    if (typeof index !== 'number' || isNaN(index) || index < 0 || index >= self.selectArray.length) {return};248249    var _indexPrev = index - 1;250    var _select = self.selectArray[index];251    var _selectData;252    var _valueIndex;253    var _dataUrl = _select.data('url');254    var _jsonSpace = typeof _select.data('jsonSpace') === 'undefined' ? self.settings.jsonSpace : _select.data('jsonSpace');255    var _query = {};256    var _queryName;257    var _selectName;258    var _selectValue;259260    cxSelect.clear.call(self, index);261262    // 使用独立接口263    if (typeof _dataUrl === 'string' && _dataUrl.length) {264      if (index > 0) {265        for (var i = 0, j = 1; i < index; i++, j++) {266          _queryName = self.selectArray[j].data('queryName');267          _selectName = self.selectArray[i].attr('name');268          _selectValue = self.selectArray[i].val();269270          if (typeof _queryName === 'string' && _queryName.length) {271            _query[_queryName] = _selectValue;272          } else if (typeof _selectName === 'string' && _selectName.length) {273            _query[_selectName] = _selectValue;274          };275        };276      };277278      $.getJSON(_dataUrl, _query, function(json) {279        _selectData = cxSelect.getData(json, _jsonSpace);280281        cxSelect.buildOption.call(self, index, _selectData);282      });283284    // 使用整合数据285    } else if (self.settings.data && typeof self.settings.data === 'object') {286      _selectData = self.settings.data;287288      for (var i = 0; i < index; i++) {289        _valueIndex = cxSelect.getIndex(self.selectArray[i][0].selectedIndex, typeof self.selectArray[i].data('required') === 'boolean' ? self.selectArray[i].data('required') : self.settings.required);290291        if (typeof _selectData[_valueIndex] === 'object' && $.isArray(_selectData[_valueIndex][self.settings.jsonSub]) && _selectData[_valueIndex][self.settings.jsonSub].length) {292          _selectData = _selectData[_valueIndex][self.settings.jsonSub];293        } else {294          _selectData = null;295          break;296        };297      };298299      cxSelect.buildOption.call(self, index, _selectData);300    };301  };302303  // 构建选项列表304  cxSelect.buildOption = function(index, data) {305    var self = this;306307    var _select = self.selectArray[index];308    var _required = typeof _select.data('required') === 'boolean' ? _select.data('required') : self.settings.required;309    var _firstTitle = typeof _select.data('firstTitle') === 'undefined' ? self.settings.firstTitle : _select.data('firstTitle');310    var _firstValue = typeof _select.data('firstValue') === 'undefined' ? self.settings.firstValue : _select.data('firstValue');311    var _jsonName = typeof _select.data('jsonName') === 'undefined' ? self.settings.jsonName : _select.data('jsonName');312    var _jsonValue = typeof _select.data('jsonValue') === 'undefined' ? self.settings.jsonValue : _select.data('jsonValue');313314    if (!$.isArray(data)) {return};315316    var _html = !_required ? '<option value="' + String(_firstValue) + '">' + String(_firstTitle) + '</option>' : '';317318    // 区分标题、值的数据319    if (typeof _jsonName === 'string' && _jsonName.length) {320      // 无值字段时使用标题作为值321      if (typeof _jsonValue !== 'string' || !_jsonValue.length) {322        _jsonValue = _jsonName;323      };324325      for (var i = 0, l = data.length; i < l; i++) {326        _html += '<option value="' + String(data[i][_jsonValue]) + '">' + String(data[i][_jsonName]) + '</option>';327      };328329    // 数组即为值的数据330    } else {331      for (var i = 0, l = data.length; i < l; i++) {332        _html += '<option value="' + String(data[i]) + '">' + String(data[i]) + '</option>';333      };334    };335336    _select.html(_html).prop('disabled', false).css({337      'display': '',338      'visibility': ''339    });340341    // 初次加载设置默认值342    if (typeof _select.attr('data-value') === 'string') {343      _select.val(String(_select.attr('data-value'))).removeAttr('data-value');344345      if (_select[0].selectedIndex < 0) {346        _select[0].options[0].selected = true;347      };348    };349350    if (_required || _select[0].selectedIndex > 0) {351      _select.trigger('change');352    };353354  };355356  // 改变选择时的处理357  cxSelect.selectChange = function(name) {358    var self = this;359360    if (typeof name !== 'string' || !name.length) {return};361362    var index;363364    name = name.replace(/\s+/g, ',');365    name = ',' + name + ',';366367    // 获取当前 select 位置368    for (var i = 0, l = self.selectArray.length; i < l; i++) {369      if (name.indexOf(',' + self.settings.selects[i] + ',') > -1) {370        index = i;371        break;372      };373    };374375    if (typeof index === 'number' && index > -1) {376      index += 1;377      cxSelect.getOptionData.call(self, index);378    };379  };380381  $.cxSelect = function() {382    return cxSelect.apply(this, arguments);383  };384385  // 默认值386  $.cxSelect.defaults = {387    selects: [],            // 下拉选框组388    url: null,              // 列表数据文件路径(URL)或数组数据389    data: null,             // 自定义数据390    emptyStyle: null,       // 无数据状态显示方式391    required: false,        // 是否为必选392    firstTitle: '请选择',    // 第一个选项的标题393    firstValue: '',         // 第一个选项的值394    jsonSpace: '',          // 数据命名空间395    jsonName: 'n',          // 数据标题字段名称396    jsonValue: '',          // 数据值字段名称397    jsonSub: 's'            // 子集数据字段名称398  };399400  $.fn.cxSelect = function(settings, callback) {401    this.each(function(i) {402      $.cxSelect(this, settings, callback);403    });404    return this;405  };
...

Full Screen

Full Screen

select-tests.js

Source:select-tests.js Github

copy

Full Screen

...87test('select works for single', function (assert) {88  var $select = $('#qunit-fixture .single-with-placeholder');89  var data = new SelectData($select, selectOptions);90  assert.equal($select.val(), 'placeholder');91  data.select({92    id: 'One',93    text: 'One'94  });95  assert.equal($select.val(), 'One');96});97test('multiple sets the value', function (assert) {98  var $select = $('#qunit-fixture .multiple');99  var data = new SelectData($select, selectOptions);100  assert.equal($select.val(), null);101  data.select({102    id: 'Two',103    text: 'Two'104  });105  assert.deepEqual($select.val(), ['Two']);106});107test('multiple adds to the old value', function (assert) {108  var $select = $('#qunit-fixture .multiple');109  var data = new SelectData($select, selectOptions);110  $select.val(['Two']);111  assert.deepEqual($select.val(), ['Two']);112  data.select({113    id: 'One',114    text: 'One'115  });116  assert.deepEqual($select.val(), ['One', 'Two']);117});118test('duplicates - single - same id on select triggers change',119  function (assert) {120  var $select = $('#qunit-fixture .duplicates');121  var data = new SelectData($select, data);122  var second = $('#qunit-fixture .duplicates option')[2];123  var changeTriggered = false;124  assert.equal($select.val(), 'one');125  $select.on('change', function () {126    changeTriggered = true;127  });128  data.select({129    id: 'one',130    text: 'Uno',131    element: second132  });133  assert.equal(134    $select.val(),135    'one',136    'The value never changed'137  );138  assert.ok(139    changeTriggered,140    'The change event should be triggered'141  );142  assert.ok(143    second.selected,144    'The second duplicate is selected, not the first'145  );146});147test('duplicates - single - different id on select triggers change',148  function (assert) {149  var $select = $('#qunit-fixture .duplicates');150  var data = new SelectData($select, data);151  var second = $('#qunit-fixture .duplicates option')[2];152  var changeTriggered = false;153  $select.val('two');154  $select.on('change', function () {155    changeTriggered = true;156  });157  data.select({158    id: 'one',159    text: 'Uno',160    element: second161  });162  assert.equal(163    $select.val(),164    'one',165    'The value changed to the duplicate id'166  );167  assert.ok(168    changeTriggered,169    'The change event should be triggered'170  );171  assert.ok(172    second.selected,173    'The second duplicate is selected, not the first'174  );175});176test('duplicates - multiple - same id on select triggers change',177function (assert) {178  var $select = $('#qunit-fixture .duplicates-multi');179  var data = new SelectData($select, data);180  var second = $('#qunit-fixture .duplicates-multi option')[2];181  var changeTriggered = false;182  $select.val(['one']);183  $select.on('change', function () {184    changeTriggered = true;185  });186  data.select({187    id: 'one',188    text: 'Uno',189    element: second190  });191  assert.deepEqual(192    $select.val(),193    ['one', 'one'],194    'The value now has duplicates'195  );196  assert.ok(197    changeTriggered,198    'The change event should be triggered'199  );200  assert.ok(201    second.selected,202    'The second duplicate is selected, not the first'203  );204});205test('duplicates - multiple - different id on select triggers change',206function (assert) {207  var $select = $('#qunit-fixture .duplicates-multi');208  var data = new SelectData($select, data);209  var second = $('#qunit-fixture .duplicates-multi option')[2];210  var changeTriggered = false;211  $select.val(['two']);212  $select.on('change', function () {213    changeTriggered = true;214  });215  data.select({216    id: 'one',217    text: 'Uno',218    element: second219  });220  assert.deepEqual(221    $select.val(),222    ['two', 'one'],223    'The value has the new id'224  );225  assert.ok(226    changeTriggered,227    'The change event should be triggered'228  );229  assert.ok(...

Full Screen

Full Screen

jquery.customSelect.js

Source:jquery.customSelect.js Github

copy

Full Screen

1/**2 * Plugin for customize default selects3 * @author Anton Vahmin (html.ru@gmail.com)4 * @copyright Clever Site Studio (http://clever-site.ru)5 * @version 1.0.36 */7(function($) {8	var re_dataAttr = /^data\-(.+)$/;9	// Paste data attributes from element to array10	function paste_data_from_element(data, to) {11		if (data instanceof jQuery) data = copy_data_from_element(data.get(0));12		if (!(to instanceof jQuery)) to = $(to);13		for (var key in data) {14			to.attr(key, data[key]);15		}16	}17	// Copy data attributes from array or DOM element18	function copy_data_from_element(from) {19		if (from instanceof jQuery) {20			from = from.get(0);21		}22		var args = {};23		$.each(from.attributes, function(index, attr) {24			if (re_dataAttr.test(attr.nodeName)) {25				args[attr.nodeName] = attr.nodeValue;26			}27		});28		return args;29	}30	$.fn.extend({31		customSelect: function(options) {32			var defaults = {33				element: 'div',34				maxRows: false,35				template: false,36				closeOthers: true,37				copyClasses: true,38				copyData: true,39				callbacks: {40					initDefaultOption: false,41					selectOption: false,42					afterSelectOption: false,43					clickText: false44				}45			};46			options = $.extend(defaults, options);47			return this.each(function() {48				if (!jQuery().jScrollPane) {49					if (console) {50						if (console.error) {51							console.error('jQuery plugin "jScrollPane" not installed');52						} else {53							console.log('jQuery plugin "jScrollPane" not installed');54						}55					}56					return false;57				}58				var disabled = false;59				var containerClass = 'customSelectContainer';60				var currentSelect = $(this);61				var id = currentSelect.attr('id');62				var containerId = '';63				if (id && id.length > 0) {64					id = ' id="'+id+'"';65					containerId = ' id="'+id+'Container"';66				}67				var name = currentSelect.attr('name');68				var selected = {69					text: false,70					value: currentSelect.val()71				};72				var selectOptions = [];73				var selectOptionsDOM = [];74				currentSelect.find('option').each(function() {75					if ($(this).is(':selected')) {76						selected.text = $(this).text();77					}78					selectOptions[selectOptions.length] = {79						text: $(this).text(),80						value: $(this).attr('value'),81						data: (options.copyData) ? copy_data_from_element(this) : []82					};83				});84				if (currentSelect.attr('disabled')) {85					containerClass += ' customSelectContainer_state_disabled';86					disabled = true;87				}88				var customSelectContainer = $('<'+options.element+' class="'+containerClass+'"'+containerId+' />');89				var customSelectInput = $('<input type="hidden" name="'+name+'" value="'+selected.value+'"'+id+' class="customSelectValue" />');90				var customSelectText = $('<'+options.element+' class="customSelectText" />');91				var customSelectLeft = $('<'+options.element+' class="customSelectLeft" />');92				var customSelectRight = $('<'+options.element+' class="customSelectRight" />');93				var customSelectBack = $('<'+options.element+' class="customSelectBack" />');94				var customSelectArrow = $('<'+options.element+' class="customSelectArrow" />');95				var customSelectOptions = $('<'+options.element+' class="customSelectOptions" />');96				var customSelectScroll = $('<'+options.element+' class="customSelectScroll" />');97				for (var i in selectOptions) {98					var option = $('<'+options.element+' class="customSelectOption" rel="'+selectOptions[i].value+'">'+selectOptions[i].text+'</'+options.element+'>');99					selectOptionsDOM.push(option[0]);100					paste_data_from_element(selectOptions[i].data, option[0]);101				}102				if (selectOptions.length < 1) {103					return false;104				}105                // Copy original classes from select to new div106                if (options.copyClasses) {107                    currentSelect.each(function() {108                        var classesLists = this.className.split(/\s+/);109                        $.each(classesLists, function (i, name) {110                            customSelectContainer.addClass(name);111                        });112                    });113                }114                // Copy original data attributes from select to new div115                if (options.copyData) {116					paste_data_from_element(currentSelect, customSelectContainer);117				}118				currentSelect.replaceWith(customSelectContainer);119				customSelectContainer.append(customSelectInput);120				customSelectContainer.append(customSelectText);121				customSelectText.append(customSelectLeft);122				customSelectLeft.append(customSelectRight);123				customSelectRight.append(customSelectBack);124				customSelectBack.append(customSelectArrow);125				var textElement;126				if (options.template) {127					textElement = $(options.template);128					customSelectArrow.append(textElement);129				} else {130					textElement = customSelectArrow;131				}132				textElement.text(selected.text);133				customSelectContainer.append(customSelectOptions);134                // Try get select width. if select invisible with == 0135                // then try get origin select width136                var container_width = customSelectContainer.width();137                if (container_width === 0) {138                    container_width = currentSelect.width();139                }140				customSelectOptions.css('width', container_width+'px');141				customSelectOptions.append(customSelectScroll);142				for (i in selectOptionsDOM) {143					customSelectScroll.append(selectOptionsDOM[i]);144				}145				// Semen: Добавил проверку disable в селекте146				if (disabled === false) {147					$(customSelectText).bind('click', function() {148						if (options.callbacks.clickText) {149							options.callbacks.clickText($(this));150						}151						if (customSelectOptions.is(':visible')) {152							customSelectOptions.hide();153						} else {154							if (options.closeOthers) {155								$('.customSelectOptions').hide();156							}157							customSelectOptions.show();158						}159					});160					$(selectOptionsDOM).bind('click', function() {161						if (options.callbacks.selectOption) {162							options.callbacks.selectOption.call(customSelectContainer, $(this), textElement);163						}164						customSelectInput.val($(this).attr('rel'));165						textElement.text($(this).text());166						customSelectOptions.hide();167						customSelectInput.change();168						if (options.callbacks.afterSelectOption) {169							options.callbacks.afterSelectOption.call(customSelectContainer, $(this), textElement);170						}171					});172				}173				$(selectOptionsDOM).bind('mouseover', function() {174					$(this).addClass('hover');175				});176				$(selectOptionsDOM).bind('mouseleave', function() {177					$(this).removeClass('hover');178				});179				if (options.maxRows !== false && selectOptions.length > options.maxRows) {180					customSelectScroll.css('height', (customSelectScroll.children(':first-child').height() * options.maxRows)+'px');181					customSelectScroll.jScrollPane();182				}183				customSelectOptions.hide();184				$(document).click(function() {185					customSelectOptions.hide();186				});187				customSelectContainer.click(function(event){188					event.stopPropagation();189				});190				$(document).keyup(function(event){191					if (event.keyCode == 27) {192						customSelectOptions.hide();193					}194				});195				if (options.callbacks.initDefaultOption) {196					options.callbacks.initDefaultOption.call(customSelectContainer, textElement);197				}198			});199		}200	});...

Full Screen

Full Screen

component-external-customSelect.js

Source:component-external-customSelect.js Github

copy

Full Screen

1/*!2 * jquery.customSelect() - v0.5.13 * http://adam.co/lab/jquery/customselect/4 * 2014-03-195 *6 * Copyright 2013 Adam Coulombe7 * @license http://www.opensource.org/licenses/mit-license.html MIT License8 * @license http://www.gnu.org/licenses/gpl.html GPL2 License 9 */10(function ($) {11    'use strict';12    $.fn.extend({13        customSelect: function (options) {14            // filter out <= IE615            if (typeof document.body.style.maxHeight === 'undefined') {16                return this;17            }18            var defaults = {19                    customClass: 'customSelect',20                    mapClass:    true,21                    mapStyle:    true22            },23            options = $.extend(defaults, options),24            prefix = options.customClass,25            changed = function ($select,customSelectSpan) {26                var currentSelected = $select.find(':selected'),27                customSelectSpanInner = customSelectSpan.children(':first'),28                html = currentSelected.html() || '&nbsp;';29                //customSelectSpanInner.html(html);30                31                if (currentSelected.attr('disabled')) {32                    customSelectSpan.addClass(getClass('DisabledOption'));33                } else {34                    customSelectSpan.removeClass(getClass('DisabledOption'));35                }36                37                setTimeout(function () {38                    customSelectSpan.removeClass(getClass('Open'));39                    $(document).off('mouseup.customSelect');                  40                }, 60);41            },42            getClass = function(suffix){43                return prefix + suffix;44            };45            return this.each(function () {46                var $select = $(this),47                    customSelectInnerSpan = $('<span />').addClass(getClass('Inner')),48                    customSelectSpan = $('<span />');49                $select.after(customSelectSpan.append(customSelectInnerSpan));50                51                customSelectSpan.addClass(prefix);52                if (options.mapClass) {53                    customSelectSpan.addClass($select.attr('class'));54                }55                if (options.mapStyle) {56                    customSelectSpan.attr('style', $select.attr('style'));57                }58                $select59                    .addClass('hasCustomSelect')60                    .on('render.customSelect', function () {61                        changed($select,customSelectSpan);62                        $select.css('width','');			63                        var selectBoxWidth = parseInt($select.outerWidth(), 10) -64                                (parseInt(customSelectSpan.outerWidth(), 10) -65                                    parseInt(customSelectSpan.width(), 10));66                        67                        // Set to inline-block before calculating outerHeight68                        customSelectSpan.css({69                            display: 'inline-block'70                        });71                        72                        var selectBoxHeight = customSelectSpan.outerHeight();73                        if ($select.attr('disabled')) {74                            customSelectSpan.addClass(getClass('Disabled'));75                        } else {76                            customSelectSpan.removeClass(getClass('Disabled'));77                        }78                        customSelectInnerSpan.css({79                            width:   selectBoxWidth,80                            display: 'inline-block'81                        });82                        $select.css({83                            '-webkit-appearance': 'menulist-button',84                            width:                customSelectSpan.outerWidth(),85                            position:             'absolute',86                            opacity:              0,87                            height:               selectBoxHeight,88                            fontSize:             customSelectSpan.css('font-size')89                        });90                    })91                    .on('change.customSelect', function () {92                        customSelectSpan.addClass(getClass('Changed'));93                        changed($select,customSelectSpan);94                    })95                    .on('keyup.customSelect', function (e) {96                        if(!customSelectSpan.hasClass(getClass('Open'))){97                            $select.trigger('blur.customSelect');98                            $select.trigger('focus.customSelect');99                        }else{100                            if(e.which==13||e.which==27){101                                changed($select,customSelectSpan);102                            }103                        }104                    })105                    .on('mousedown.customSelect', function () {106                        customSelectSpan.removeClass(getClass('Changed'));107                    })108                    .on('mouseup.customSelect', function (e) {109                        110                        if( !customSelectSpan.hasClass(getClass('Open'))){111                            // if FF and there are other selects open, just apply focus112                            if($('.'+getClass('Open')).not(customSelectSpan).length>0 && typeof InstallTrigger !== 'undefined'){113                                $select.trigger('focus.customSelect');114                            }else{115                                customSelectSpan.addClass(getClass('Open'));116                                e.stopPropagation();117                                $(document).one('mouseup.customSelect', function (e) {118                                    if( e.target != $select.get(0) && $.inArray(e.target,$select.find('*').get()) < 0 ){119                                        $select.trigger('blur.customSelect');120                                    }else{121                                        changed($select,customSelectSpan);122                                    }123                                });124                            }125                        }126                    })127                    .on('focus.customSelect', function () {128                        customSelectSpan.removeClass(getClass('Changed')).addClass(getClass('Focus'));129                    })130                    .on('blur.customSelect', function () {131                        customSelectSpan.removeClass(getClass('Focus')+' '+getClass('Open'));132                    })133                    .on('mouseenter.customSelect', function () {134                        customSelectSpan.addClass(getClass('Hover'));135                    })136                    .on('mouseleave.customSelect', function () {137                        customSelectSpan.removeClass(getClass('Hover'));138                    })139                    .trigger('render.customSelect');140            });141        }142    });...

Full Screen

Full Screen

customselect.js

Source:customselect.js Github

copy

Full Screen

1/*!2 * jquery.customSelect() - v0.5.13 * http://adam.co/lab/jquery/customselect/4 * 2014-03-195 *6 * Copyright 2013 Adam Coulombe7 * @license http://www.opensource.org/licenses/mit-license.html MIT License8 * @license http://www.gnu.org/licenses/gpl.html GPL2 License 9 */10(function ($) {11    'use strict';12    $.fn.extend({13        customSelect: function (options) {14            // filter out <= IE615            if (typeof document.body.style.maxHeight === 'undefined') {16                return this;17            }18            var defaults = {19                    customClass: 'customSelect',20                    mapClass:    true,21                    mapStyle:    true22            },23            options = $.extend(defaults, options),24            prefix = options.customClass,25            changed = function ($select,customSelectSpan) {26                var currentSelected = $select.find(':selected'),27                customSelectSpanInner = customSelectSpan.children(':first'),28                html = currentSelected.html() || '&nbsp;';29                customSelectSpanInner.html(html);30                31                if (currentSelected.attr('disabled')) {32                    customSelectSpan.addClass(getClass('DisabledOption'));33                } else {34                    customSelectSpan.removeClass(getClass('DisabledOption'));35                }36                37                setTimeout(function () {38                    customSelectSpan.removeClass(getClass('Open'));39                    $(document).off('mouseup.customSelect');                  40                }, 60);41            },42            getClass = function(suffix){43                return prefix + suffix;44            };45            return this.each(function () {46                var $select = $(this),47                    customSelectInnerSpan = $('<span />').addClass(getClass('Inner')),48                    customSelectSpan = $('<span />');49                $select.after(customSelectSpan.append(customSelectInnerSpan));50                51                customSelectSpan.addClass(prefix);52                if (options.mapClass) {53                    customSelectSpan.addClass($select.attr('class'));54                }55                if (options.mapStyle) {56                    customSelectSpan.attr('style', $select.attr('style'));57                }58                $select59                    .addClass('hasCustomSelect')60                    .on('render.customSelect', function () {61                        changed($select,customSelectSpan);62                        $select.css('width','');			63                        var selectBoxWidth = parseInt($select.outerWidth(), 10) -64                                (parseInt(customSelectSpan.outerWidth(), 10) -65                                    parseInt(customSelectSpan.width(), 10));66                        67                        // Set to inline-block before calculating outerHeight68                        customSelectSpan.css({69                            display: 'inline-block'70                        });71                        72                        var selectBoxHeight = customSelectSpan.outerHeight();73                        if ($select.attr('disabled')) {74                            customSelectSpan.addClass(getClass('Disabled'));75                        } else {76                            customSelectSpan.removeClass(getClass('Disabled'));77                        }78                        customSelectInnerSpan.css({79                            width:   selectBoxWidth,80                            display: 'inline-block'81                        });82                        $select.css({83                            '-webkit-appearance': 'menulist-button',84                            width:                customSelectSpan.outerWidth(),85                            position:             'absolute',86                            opacity:              0,87                            height:               selectBoxHeight,88                            fontSize:             customSelectSpan.css('font-size')89                        });90                    })91                    .on('change.customSelect', function () {92                        customSelectSpan.addClass(getClass('Changed'));93                        changed($select,customSelectSpan);94                    })95                    .on('keyup.customSelect', function (e) {96                        if(!customSelectSpan.hasClass(getClass('Open'))){97                            $select.trigger('blur.customSelect');98                            $select.trigger('focus.customSelect');99                        }else{100                            if(e.which==13||e.which==27){101                                changed($select,customSelectSpan);102                            }103                        }104                    })105                    .on('mousedown.customSelect', function () {106                        customSelectSpan.removeClass(getClass('Changed'));107                    })108                    .on('mouseup.customSelect', function (e) {109                        110                        if( !customSelectSpan.hasClass(getClass('Open'))){111                            // if FF and there are other selects open, just apply focus112                            if($('.'+getClass('Open')).not(customSelectSpan).length>0 && typeof InstallTrigger !== 'undefined'){113                                $select.trigger('focus.customSelect');114                            }else{115                                customSelectSpan.addClass(getClass('Open'));116                                e.stopPropagation();117                                $(document).one('mouseup.customSelect', function (e) {118                                    if( e.target != $select.get(0) && $.inArray(e.target,$select.find('*').get()) < 0 ){119                                        $select.trigger('blur.customSelect');120                                    }else{121                                        changed($select,customSelectSpan);122                                    }123                                });124                            }125                        }126                    })127                    .on('focus.customSelect', function () {128                        customSelectSpan.removeClass(getClass('Changed')).addClass(getClass('Focus'));129                    })130                    .on('blur.customSelect', function () {131                        customSelectSpan.removeClass(getClass('Focus')+' '+getClass('Open'));132                    })133                    .on('mouseenter.customSelect', function () {134                        customSelectSpan.addClass(getClass('Hover'));135                    })136                    .on('mouseleave.customSelect', function () {137                        customSelectSpan.removeClass(getClass('Hover'));138                    })139                    .trigger('render.customSelect');140            });141        }142    });...

Full Screen

Full Screen

dynamic_select.js

Source:dynamic_select.js Github

copy

Full Screen

1AUI.add(2	'liferay-dynamic-select',3	function(A) {4		var sortByValue = function(a, b) {5			var pos = a.indexOf('">');6			var nameA = a.substring(pos);7			pos = b.indexOf('">');8			var nameB = b.substring(pos);9			var retVal = 0;10			if (nameA < nameB) {11				retVal = -1;12			}13			else if (nameA > nameB) {14				retVal = 1;15			}16			return retVal;17		};18		/**19		 * OPTIONS20		 *21		 * Required22		 * array {array}: An array of options.23		 * array[i].select {string}: An id of a select box.24		 * array[i].selectId {string}: A JSON object field name for an option value.25		 * array[i].selectDesc {string}: A JSON object field name for an option description.26		 * array[i].selectVal {string}: The value that is displayed in an option field.27		 *28		 * Callbacks29		 * array[i].selectData {function}: Returns a JSON array to populate the next select box.30		 */31		var DynamicSelect = function(array) {32			var instance = this;33			instance.array = array;34			array.forEach(35				function(item, index) {36					var id = item.select;37					var select = A.one('#' + id);38					var selectData = item.selectData;39					if (select) {40						select.attr('data-componentType', 'dynamic_select');41						var prevSelectVal = null;42						if (index > 0) {43							prevSelectVal = array[index - 1].selectVal;44						}45						selectData(46							function(list) {47								instance._updateSelect(index, list);48							},49							prevSelectVal50						);51						if (!select.attr('name')) {52							select.attr('name', id);53						}54						select.on(55							'change',56							function() {57								instance._callSelectData(index);58							}59						);60					}61				}62			);63		};64		DynamicSelect.prototype = {65			_callSelectData: function(i) {66				var instance = this;67				var array = instance.array;68				if ((i + 1) < array.length) {69					var curSelect = A.one('#' + array[i].select);70					var nextSelectData = array[i + 1].selectData;71					nextSelectData(72						function(list) {73							instance._updateSelect(i + 1, list);74						},75						curSelect && curSelect.val()76					);77				}78			},79			_updateSelect: function(i, list) {80				var instance = this;81				var options = instance.array[i];82				var select = A.one('#' + options.select);83				var selectDesc = options.selectDesc;84				var selectId = options.selectId;85				var selectNullable = options.selectNullable !== false;86				var selectSort = options.selectSort;87				var selectVal = options.selectVal;88				var selectOptions = [];89				if (selectNullable) {90					selectOptions.push('<option value="0"></option>');91				}92				list.forEach(93					function(item, index) {94						var key = item[selectId];95						var value = item[selectDesc];96						selectOptions.push('<option value="' + key + '">' + value + '</option>');97					}98				);99				if (selectSort) {100					selectOptions = selectOptions.sort(sortByValue);101				}102				selectOptions = selectOptions.join('');103				if (select) {104					select.empty().append(selectOptions).val(selectVal);105				}106			}107		};108		Liferay.DynamicSelect = DynamicSelect;109	},110	'',111	{112		requires: ['aui-base']113	}...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test Suite', function() {2    it('My FirstTest case', function() {3        cy.get('.search-keyword').type('ca')4        cy.wait(2000)5        cy.get('.products').as('productLocator')6        cy.get('@productLocator').find('.product').should('have.length', 5)7        cy.get('@productLocator').find('.product').eq(2).contains('ADD TO CART').click().then(function() {8            console.log('sf')9        })10        cy.get('@productLocator').find('.product').each(($el, index, $list) => {11            const textVeg = $el.find('h4.product-name').text()12            if (textVeg.includes('Cashews')) {13                $el.find('button').click()14            }15        })16        cy.get('.brand').should('have.text', 'GREENKART')17        cy.get('.brand').then(function(logoelement) {18            cy.log(logoelement.text())19        })20        cy.get('.brand').then(function(logoelement) {21            cy.log(logoelement.text())22        })23        cy.get('.cart-icon > img').click()24        cy.contains('PROCEED TO CHECKOUT').click()25        cy.contains('Place Order').click()26    })27})

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2  it('Does not do much!', function() {3    cy.pause()4    cy.contains('type').click()5    cy.url().should('include', '/commands/actions')6    cy.get('.action-email')7      .type('

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2    it('Does not do much!', function() {3      cy.contains('type').click()4      cy.url().should('include', '/commands/actions')5      cy.get('.action-email')6      .type('

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2    it('Does not do much!', function() {3      cy.pause()4      cy.contains('type').click()5      cy.url().should('include', '/commands/actions')6      cy.get('.action-email')7        .type('fake@email')8        .should('have.value', 'fake@email')9    })10  })

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test Suite', function() 2{3    it('My FirstTest case',function() {4    cy.get('.search-keyword').type('ca')5    cy.wait(2000)6    cy.get('.products').as('productLocator')7    cy.get('@productLocator').find('.product').each(($el, index, $list) => {8        const vegText = $el.find('h4.product-name').text()9        if(vegText.includes('Cashews'))10        {11            $el.find('button').click()12        }13    })14    cy.get('.brand').should('have.text', 'GREENKART')15    cy.get('.brand').then(function(logoelement)16    {17        cy.log(logoelement.text())18    })19    cy.get('.brand').then(function(logoelement)20    {21        cy.log(logoelement.text())22    })23    cy.get('.brand').then(function(logoelement)24    {25        cy.log(logoelement.text())26    })27    cy.get('.brand').then(function(logoelement)28    {29        cy.log(logoelement.text())30    })31    cy.get('.brand').then(function(logoelement)32    {33        cy.log(logoelement.text())34    })35    cy.get('.brand').then(function(logoelement)36    {37        cy.log(logoelement.text())38    })39    cy.get('.brand').then(function(logoelement)40    {41        cy.log(logoelement.text())42    })

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2    it('Does not do much!', function() {3      cy.contains('type').click()4      cy.url().should('include', '/commands/actions')5      cy.get('.action-email')6        .type('

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2    it('Does not do much!', function() {3      cy.pause()4      cy.contains('type').click()5      cy.url().should('include', '/commands/actions')6      cy.get('.action-email')7        .type('

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2  it('Does not do much!', function() {3    expect(true).to.equal(true)4  })5})6describe('My First Test', function() {7  it('Finds an element', function() {8    cy.contains('type').click()9    cy.url().should('include', '/commands/actions')10    cy.get('.action-email')11      .type('

Full Screen

Cypress Tutorial

Cypress is a renowned Javascript-based open-source, easy-to-use end-to-end testing framework primarily used for testing web applications. Cypress is a relatively new player in the automation testing space and has been gaining much traction lately, as evidenced by the number of Forks (2.7K) and Stars (42.1K) for the project. LambdaTest’s Cypress Tutorial covers step-by-step guides that will help you learn from the basics till you run automation tests on LambdaTest.

Chapters:

  1. What is Cypress? -
  2. Why Cypress? - Learn why Cypress might be a good choice for testing your web applications.
  3. Features of Cypress Testing - Learn about features that make Cypress a powerful and flexible tool for testing web applications.
  4. Cypress Drawbacks - Although Cypress has many strengths, it has a few limitations that you should be aware of.
  5. Cypress Architecture - Learn more about Cypress architecture and how it is designed to be run directly in the browser, i.e., it does not have any additional servers.
  6. Browsers Supported by Cypress - Cypress is built on top of the Electron browser, supporting all modern web browsers. Learn browsers that support Cypress.
  7. Selenium vs Cypress: A Detailed Comparison - Compare and explore some key differences in terms of their design and features.
  8. Cypress Learning: Best Practices - Take a deep dive into some of the best practices you should use to avoid anti-patterns in your automation tests.
  9. How To Run Cypress Tests on LambdaTest? - Set up a LambdaTest account, and now you are all set to learn how to run Cypress tests.

Certification

You can elevate your expertise with end-to-end testing using the Cypress automation framework and stay one step ahead in your career by earning a Cypress certification. Check out our Cypress 101 Certification.

YouTube

Watch this 3 hours of complete tutorial to learn the basics of Cypress and various Cypress commands with the Cypress testing at LambdaTest.

Run Cypress automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful