Вход Регистрация
Файл: contao-3.5.8/assets/mootools/stylect/js/stylect-uncompressed.js
Строк: 100
<?php
/**
 * Contao Open Source CMS
 *
 * Copyright (c) 2005-2016 Leo Feyer
 *
 * @license LGPL-3.0+
 */


/**
 * Replace select menus with a nicer, JavaScript based solution.
 *
 * @author Leo Feyer <http://contao.org>
 * @author Joe Ray Gregory <https://github.com/may17>
 */
var Stylect =
{
    
/**
     * Create the div template
     * @member {string}
      */
    
template: new Element('div', {
        
'class''styled_select',
        
'html''<span></span><b><i></i></b>'
    
}),

    
/**
     * Respond to the change event
     *
     * @param {object} el The DOM element
     */
    
update: function(el) {
        var 
div el.retrieve('div'),
            
opt el.getElement('option[value="' Slick.escapeRegExp(el.value) + '"]');

        if (
div && opt) {
            
div.getElement('span').set('text'opt.get('text'));
        }
    },

    
/**
     * Respond to the keydown event
     *
     * @param {object} el The DOM element
     */
    
keydown: function(el) {
        
setTimeout(function() { Stylect.update(el); }, 100);
    },

    
/**
     * Respond to the focus event
     *
     * @param {object} div The DOM element
     */
    
focus: function(div) {
        
div.addClass('focused');
    },

    
/**
     * Respond to the blur event
     *
     * @param {object} div The DOM element
     */
    
blur: function(div) {
        
div.removeClass('focused');
    },

    
/**
     * Find all select menus and try to convert them
     */
    
convertSelects: function() {

        
// Not supported in IE < 9
        
if (Browser.ie6 || Browser.ie7 || Browser.ie8) return;

        $$(
'select').each(function(el) {

            
// Multiple select
            
if (el.get('multiple')) return;

            
// Handled by chosen
            
if (el.hasClass('tl_chosen')) return;

            
// Initialize the variables
            
var cls el.get('class'),
                
div el.retrieve('div'),
                
style el.get('style');

            
// Clone the template
            
if (!div) {
                
div Stylect.template.clone();
                
div.addClass(cls).inject(el'before');
            }

            
// Hide the original select menu
            
el.setStyle('opacity'0);

            
// Update the div onchange
            
el.addEvents({
                
'change':  function() { Stylect.update(el) },
                
'keydown': function() { Stylect.keydown(el) },
                
'focus':   function() { Stylect.focus(div) },
                
'blur':    function() { Stylect.blur(div) }
            });

            
// Mark disabled elements
            
if (el.disabled) {
                
div.addClass('disabled');
            }

            
// Mark active elements
            
if (el.hasClass('active')) {
                
div.addClass('active');
            }

            
// Apply the inline width if any (see #5487)
            
if (style && style.test('(^width|[^-]width)')) {
                
div.setStyle('width'el.getStyle('width'));
            }

            
// Store the reference
            
el.store('div'div);

            
// Activate
            
Stylect.update(el);
        });
    }
};

// Convert selects upon domready
window.addEvent('domready', function() {
    
Stylect.convertSelects();
});

// Convert selects upon Ajax changes
window.addEvent('ajax_change', function() {
    
Stylect.convertSelects();
});
?>
Онлайн: 1
Реклама