Carousel Carousel displays content using a slide effect feauturing responsive mode, swipe support for touch enabled devices and various customization options.

Carousel's content can be defined either programmatically or declaratively. For programmatic way, define provide the data using the datasource option where the value can be a javascript array or a function that returns data usually by connecting to a remote source. Declarative approach simply requires a list element with "li" items as children.

$('#list').puicarousel(); 
                                
<ul id="list"></ul>
                                

Note: Carousel requires touchswipe plugin for swipe support.

Name Type Default Description
datasource Array/Function null Datasource for the carousel, valid options are an array and a function to load data.
numVisible Integer 3 Number of visible items per page.
firstVisible Integer 0 Index of the first visible item.
headerText String null Text of the header section.
effectDuration Integer 500 Duration of the scrolling animation in milliseconds.
circular Boolean false Defines continuous scrolling.
breakpoint Integer 560 Breakpoint value in pixels to switch between small and large viewport.
itemContent Function null Function to provide item content as string or jQuery object.
responsive Boolean true Breakpoint value in pixels to switch between small and large viewport.
autoplayInterval Integer 0 Time in milliseconds to have carousel start scrolling automatically.
easing String easeInOutCirc Easing animation to use for scrolling.
pageLinks String 3 Number of maximum page links to display. If total page count exceeds this value a dropdown is displayed instead.
style String null Inline style of the main wrapper element.
styleClass String null Style class for the main wrapper element.
template jQuery null Template element as jQuery object.
Name Parameters Description
pageChange ui.page: index of the new page Fired when carousel page changes.

Example

$('#default').puicarousel({
    pageChange: function(event, ui) {
        //...
    }
});
                                
Name Parameters Description
setPage index: Index of the page to navigate to. Enable the widget
option name: Name of the option Returns the value of the option.
option name: Name of the option, value: Value of the option Set the value of the option.

Example

$('#default').puicarousel('setPage', 3);
                                
$(function() {
    var cars = [
        {'brand': 'Volkswagen', 'year': 2012, 'color': 'White', 'vin': 'dsad231ff'},
        {'brand': 'Audi', 'year': 2011, 'color': 'Black', 'vin': 'gwregre345'},
        {'brand': 'Renault', 'year': 2005, 'color': 'Gray', 'vin': 'h354htr'},
        {'brand': 'BMW', 'year': 2003, 'color': 'Blue', 'vin': 'j6w54qgh'},
        {'brand': 'Mercedes', 'year': 1995, 'color': 'White', 'vin': 'hrtwy34'},
        {'brand': 'Jaguar', 'year': 2005, 'color': 'Black', 'vin': 'jejtyj'},
        {'brand': 'BMW', 'year': 2012, 'color': 'Yellow', 'vin': 'g43gr'},
        {'brand': 'Fiat', 'year': 2013, 'color': 'White', 'vin': 'greg34'},
        {'brand': 'Ford', 'year': 2000, 'color': 'Black', 'vin': 'h54hw5'}
    ];

    $('#cars1').puicarousel({
        headerText: 'Local Javascript Array',
        datasource: cars,
        itemContent: function(car) {
            var content = $('<div class="ui-grid ui-grid-responsive"></div>');
            content.append('<div class="ui-grid-row"><div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/' + car.brand +  '.gif" /></div>')
                    .append('<div class="ui-grid-row"><div class="ui-grid-col-6">Vin</div><div class="ui-grid-col-6">' + car.vin + ' </div></div>')
                    .append('<div class="ui-grid-row"><div class="ui-grid-col-6">Year</div><div class="ui-grid-col-6">' + car.year + ' </div></div>')
                    .append('<div class="ui-grid-row"><div class="ui-grid-col-6">Color</div><div class="ui-grid-col-6">' + car.color + ' </div></div>');

            return content;
        }
    });

    $('#cars2').puicarousel({
        headerText: 'Remote DataSource',
        pageLinks: 5,
        datasource: function(callback) {
            $.ajax({
                type: "GET",
                url: 'showcase/resources/data/cars-medium.json',
                dataType: "json",
                context: this,
                success: function(response) {
                    callback.call(this, response.slice(0,15));
                }
            });
        },
        itemContent: function(car) {
            var content = $('<div class="ui-grid ui-grid-responsive"></div>');
            content.append('<div class="ui-grid-row"><div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/' + car.brand +  '.gif" /></div>')
                    .append('<div class="ui-grid-row"><div class="ui-grid-col-6">Vin</div><div class="ui-grid-col-6">' + car.vin + ' </div></div>')
                    .append('<div class="ui-grid-row"><div class="ui-grid-col-6">Year</div><div class="ui-grid-col-6">' + car.year + ' </div></div>')
                    .append('<div class="ui-grid-row"><div class="ui-grid-col-6">Color</div><div class="ui-grid-col-6">' + car.color + ' </div></div>');

            return content.html();
        }
    });

    $('#cars3').puicarousel({
        headerText: 'Enhanced Markup'
    });
});
                                
<ul id="cars1"></ul>
        
<ul id="cars2"></ul>

<p-carousel datasource="Showcase.demo.cars" headertext="PrimeElement" renderdelay="10">
    <template>
        <div class="ui-grid ui-grid-responsive">
            <div class="ui-grid-row">
                <div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/{{brand}}.gif" /></div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Vin</div>
                <div class="ui-grid-col-6">{{vin}}</div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Year</div>
                <div class="ui-grid-col-6">{{year}}</div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Color</div>
                <div class="ui-grid-col-6">{{color}}</div>
            </div>
        </div>
    </template>
</p-carousel> 

<ul id="cars3">
    <li>
        <div class="ui-grid ui-grid-responsive">
            <div class="ui-grid-row">
                <div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/Volkswagen.gif">
                </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Vin</div>
                <div class="ui-grid-col-6">dsad231ff </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Year</div>
                <div class="ui-grid-col-6">2012 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Color</div>
                <div class="ui-grid-col-6">White </div>
            </div>
        </div>
    </li>
    <li>
        <div class="ui-grid ui-grid-responsive">
            <div class="ui-grid-row">
                <div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/Audi.gif">
                </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Vin</div>
                <div class="ui-grid-col-6">gwregre345 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Year</div>
                <div class="ui-grid-col-6">2011 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Color</div>
                <div class="ui-grid-col-6">Black </div>
            </div>
        </div>
    </li>
    <li>
        <div class="ui-grid ui-grid-responsive">
            <div class="ui-grid-row">
                <div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/Renault.gif">
                </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Vin</div>
                <div class="ui-grid-col-6">h354htr </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Year</div>
                <div class="ui-grid-col-6">2005 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Color</div>
                <div class="ui-grid-col-6">Gray </div>
            </div>
        </div>
    </li>
    <li>
        <div class="ui-grid ui-grid-responsive">
            <div class="ui-grid-row">
                <div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/BMW.gif">
                </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Vin</div>
                <div class="ui-grid-col-6">j6w54qgh </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Year</div>
                <div class="ui-grid-col-6">2003 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Color</div>
                <div class="ui-grid-col-6">Blue </div>
            </div>
        </div>
    </li>
    <li>
        <div class="ui-grid ui-grid-responsive">
            <div class="ui-grid-row">
                <div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/Mercedes.gif">
                </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Vin</div>
                <div class="ui-grid-col-6">hrtwy34 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Year</div>
                <div class="ui-grid-col-6">1995 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Color</div>
                <div class="ui-grid-col-6">White </div>
            </div>
        </div>
    </li>
    <li>
        <div class="ui-grid ui-grid-responsive">
            <div class="ui-grid-row">
                <div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/Jaguar.gif">
                </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Vin</div>
                <div class="ui-grid-col-6">jejtyj </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Year</div>
                <div class="ui-grid-col-6">2005 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Color</div>
                <div class="ui-grid-col-6">Black </div>
            </div>
        </div>
    </li>
    <li>
        <div class="ui-grid ui-grid-responsive">
            <div class="ui-grid-row">
                <div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/BMW.gif">
                </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Vin</div>
                <div class="ui-grid-col-6">g43gr </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Year</div>
                <div class="ui-grid-col-6">2012 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Color</div>
                <div class="ui-grid-col-6">Yellow </div>
            </div>
        </div>
    </li>
    <li class="ui-carousel-item ui-widget-content ui-corner-all" style="width: 349px;">
        <div class="ui-grid ui-grid-responsive">
            <div class="ui-grid-row">
                <div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/Fiat.gif">
                </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Vin</div>
                <div class="ui-grid-col-6">greg34 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Year</div>
                <div class="ui-grid-col-6">2013 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Color</div>
                <div class="ui-grid-col-6">White </div>
            </div>
        </div>
    </li>
    <li>
        <div class="ui-grid ui-grid-responsive">
            <div class="ui-grid-row">
                <div class="ui-grid-col-12"><img src="showcase/resources/demo/images/car/Ford.gif">
                </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Vin</div>
                <div class="ui-grid-col-6">h54hw5 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Year</div>
                <div class="ui-grid-col-6">2000 </div>
            </div>
            <div class="ui-grid-row">
                <div class="ui-grid-col-6">Color</div>
                <div class="ui-grid-col-6">Black </div>
            </div>
        </div>
    </li>
</ul>           
                                

Usage

Carousel's datasource can either be a name of an array or a function to load the array. Content for each item is defined as a mustache template where properties of an object can be access via {{}} syntax.
<p-carousel datasource="CarouselDemo.cars" headertext="PrimeElement">
    <template>
        Access color of a car using {{color}}
    </template>
</p-carousel>
                                

Array

var CarouselDemo = {
    
    cars: [
        {'brand': 'Volkswagen', 'year': 2012, 'color': 'White', 'vin': 'dsad231ff'},
        {'brand': 'Audi', 'year': 2011, 'color': 'Black', 'vin': 'gwregre345'},
        {'brand': 'Renault', 'year': 2005, 'color': 'Gray', 'vin': 'h354htr'},
        {'brand': 'BMW', 'year': 2003, 'color': 'Blue', 'vin': 'j6w54qgh'},
        {'brand': 'Mercedes', 'year': 1995, 'color': 'White', 'vin': 'hrtwy34'},
        {'brand': 'Jaguar', 'year': 2005, 'color': 'Black', 'vin': 'jejtyj'},
        {'brand': 'BMW', 'year': 2012, 'color': 'Yellow', 'vin': 'g43gr'},
        {'brand': 'Fiat', 'year': 2013, 'color': 'White', 'vin': 'greg34'},
        {'brand': 'Ford', 'year': 2000, 'color': 'Black', 'vin': 'h54hw5'}
    ]
    
};
                                

Function

var CarouselDemo = {
    
    cars: function(callback) {
        $.ajax({
            type: "GET",
            url: 'rest/cars/list',
            dataType: "json",
            context: this,
            success: function(response) {
                callback.call(this, response);
            }
        });
    }
};
                                

Attributes

Name Type Default Description
datasource Array/Function null Datasource for the carousel, valid options are an array and a function to load data.
numvisible Integer 3 Number of visible items per page.
firstvisible Integer 0 Index of the first visible item.
headertext String null Text of the header section.
effectduration Integer 500 Duration of the scrolling animation in milliseconds.
circular Boolean false Defines continuous scrolling.
breakpoint Integer 560 Breakpoint value in pixels to switch between small and large viewport.
responsive Boolean true Breakpoint value in pixels to switch between small and large viewport.
autoplayinterval Integer 0 Time in milliseconds to have carousel start scrolling automatically.
easing String easeInOutCirc Easing animation to use for scrolling.
pagelinks String 3 Number of maximum page links to display. If total page count exceeds this value a dropdown is displayed instead.
style String null Inline style of the main wrapper element.
styleclass String null Style class for the main wrapper element.
onpagechange function null Name of the function to invoke when carousel page changes.