Advance Tables
Falcon uses List.Js for advance table. List.Js is a Tiny, invisible and simple, yet powerful and incredibly fast vanilla JavaScript library that adds search, sort, filters and flexibility to plain HTML lists, tables, or anything.
Documentation for List.jsTable Example
<div id="tableExample" data-list='{"valueNames":["name","email","age"],"page":5,"pagination":true}'>
<div class="table-responsive scrollbar">
<table class="table table-bordered table-striped fs--1 mb-0">
<thead class="bg-200 text-900">
<tr>
<th class="sort" data-sort="name">Name</th>
<th class="sort" data-sort="email">Email</th>
<th class="sort" data-sort="age">Age</th>
</tr>
</thead>
<tbody class="list">
<tr>
<td class="name">Anna</td>
<td class="email">anna@example.com</td>
<td class="age">18</td>
</tr>
<tr>
<td class="name">Homer</td>
<td class="email">homer@example.com</td>
<td class="age">35</td>
</tr>
<tr>
<td class="name">Oscar</td>
<td class="email">oscar@example.com</td>
<td class="age">52</td>
</tr>
<tr>
<td class="name">Emily</td>
<td class="email">emily@example.com</td>
<td class="age">30</td>
</tr>
<tr>
<td class="name">Jara</td>
<td class="email">jara@example.com</td>
<td class="age">25</td>
</tr>
<tr>
<td class="name">Clark</td>
<td class="email">clark@example.com</td>
<td class="age">39</td>
</tr>
<tr>
<td class="name">Jennifer</td>
<td class="email">jennifer@example.com</td>
<td class="age">52</td>
</tr>
<tr>
<td class="name">Tony</td>
<td class="email">tony@example.com</td>
<td class="age">30</td>
</tr>
<tr>
<td class="name">Tom</td>
<td class="email">tom@example.com</td>
<td class="age">25</td>
</tr>
<tr>
<td class="name">Michael</td>
<td class="email">michael@example.com</td>
<td class="age">39</td>
</tr>
<tr>
<td class="name">Antony</td>
<td class="email">antony@example.com</td>
<td class="age">39</td>
</tr>
<tr>
<td class="name">Raymond</td>
<td class="email">raymond@example.com</td>
<td class="age">52</td>
</tr>
<tr>
<td class="name">Marie</td>
<td class="email">marie@example.com</td>
<td class="age">30</td>
</tr>
<tr>
<td class="name">Cohen</td>
<td class="email">cohen@example.com</td>
<td class="age">25</td>
</tr>
<tr>
<td class="name">Rowen</td>
<td class="email">rowen@example.com</td>
<td class="age">39</td>
</tr>
</tbody>
</table>
</div>
<div class="row align-items-center mt-3">
<div class="pagination d-none"></div>
<div class="col">
<p class="mb-0 fs--1">
<span class="d-none d-sm-inline-block" data-list-info="data-list-info"></span>
<span class="d-none d-sm-inline-block"> — </span>
<a class="fw-semi-bold" href="#!" data-list-view="*">View all<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semi-bold d-none" href="#!" data-list-view="less">View Less<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
</p>
</div>
<div class="col-auto d-flex"><button class="btn btn-sm btn-primary" type="button" data-list-pagination="prev"><span>Previous</span></button><button class="btn btn-sm btn-primary px-4 ms-2" type="button" data-list-pagination="next"><span>Next</span></button></div>
</div>
</div>
Pagination with numbering
Add pagination
class for enable number pagination. The following structure will enable number pagination with next and previous button.
<div id="tableExample2" data-list='{"valueNames":["name","email","age"],"page":5,"pagination":true}'>
<div class="table-responsive scrollbar">
<table class="table table-bordered table-striped fs--1 mb-0">
<thead class="bg-200 text-900">
<tr>
<th class="sort" data-sort="name">Name</th>
<th class="sort" data-sort="email">Email</th>
<th class="sort" data-sort="age">Age</th>
</tr>
</thead>
<tbody class="list">
<tr>
<td class="name">Anna</td>
<td class="email">anna@example.com</td>
<td class="age">18</td>
</tr>
<tr>
<td class="name">Homer</td>
<td class="email">homer@example.com</td>
<td class="age">35</td>
</tr>
<tr>
<td class="name">Oscar</td>
<td class="email">oscar@example.com</td>
<td class="age">52</td>
</tr>
<tr>
<td class="name">Emily</td>
<td class="email">emily@example.com</td>
<td class="age">30</td>
</tr>
<tr>
<td class="name">Jara</td>
<td class="email">jara@example.com</td>
<td class="age">25</td>
</tr>
<tr>
<td class="name">Clark</td>
<td class="email">clark@example.com</td>
<td class="age">39</td>
</tr>
<tr>
<td class="name">Jennifer</td>
<td class="email">jennifer@example.com</td>
<td class="age">52</td>
</tr>
<tr>
<td class="name">Tony</td>
<td class="email">tony@example.com</td>
<td class="age">30</td>
</tr>
<tr>
<td class="name">Tom</td>
<td class="email">tom@example.com</td>
<td class="age">25</td>
</tr>
<tr>
<td class="name">Michael</td>
<td class="email">michael@example.com</td>
<td class="age">39</td>
</tr>
<tr>
<td class="name">Antony</td>
<td class="email">antony@example.com</td>
<td class="age">39</td>
</tr>
<tr>
<td class="name">Raymond</td>
<td class="email">raymond@example.com</td>
<td class="age">52</td>
</tr>
<tr>
<td class="name">Marie</td>
<td class="email">marie@example.com</td>
<td class="age">30</td>
</tr>
<tr>
<td class="name">Cohen</td>
<td class="email">cohen@example.com</td>
<td class="age">25</td>
</tr>
<tr>
<td class="name">Rowen</td>
<td class="email">rowen@example.com</td>
<td class="age">39</td>
</tr>
</tbody>
</table>
</div>
<div class="d-flex justify-content-center mt-3"><button class="btn btn-sm btn-falcon-default me-1" type="button" title="Previous" data-list-pagination="prev"><span class="fas fa-chevron-left"></span></button>
<ul class="pagination mb-0"></ul><button class="btn btn-sm btn-falcon-default ms-1" type="button" title="Next" data-list-pagination="next"><span class="fas fa-chevron-right"> </span></button>
</div>
</div>
Filter example
<div id="tableExample3" data-list='{"valueNames":["name","email","payment"],"filter":true}'>
<div class="row justify-content-end g-0">
<div class="col-auto px-3"> <select class="form-select form-select-sm mb-3" aria-label="Bulk actions" data-list-filter="data-list-filter">
<option selected="" value="">Select payment status</option>
<option value="Pending">Pending</option>
<option value="Success">Success</option>
<option value="Blocked">Blocked</option>
</select></div>
</div>
<div class="table-responsive scrollbar">
<table class="table table-sm table-striped fs--1 mb-0 overflow-hidden">
<thead class="bg-200 text-900">
<tr>
<th class="sort pe-1 align-middle white-space-nowrap" data-sort="name">Customer</th>
<th class="sort pe-1 align-middle white-space-nowrap" data-sort="email">Email</th>
<th class="sort align-middle white-space-nowrap text-end pe-4" data-sort="payment">Payment</th>
</tr>
</thead>
<tbody class="list" id="table-purchase-body">
<tr class="btn-reveal-trigger">
<th class="align-middle white-space-nowrap name"><a href="../../app/e-commerce/customer-details.html">Sylvia Plath</a></th>
<td class="align-middle white-space-nowrap email">john@gmail.com</td>
<td class="align-middle text-end fs-0 white-space-nowrap payment"> <span class="badge badge rounded-pill badge-soft-success">Success<span class="ms-1 fas fa-check" data-fa-transform="shrink-2"></span></span></td>
</tr>
<tr class="btn-reveal-trigger">
<th class="align-middle white-space-nowrap name"><a href="../../app/e-commerce/customer-details.html">Homer</a></th>
<td class="align-middle white-space-nowrap email">sylvia@mail.ru</td>
<td class="align-middle text-end fs-0 white-space-nowrap payment"> <span class="badge badge rounded-pill badge-soft-warning">Pending<span class="ms-1 fas fa-stream" data-fa-transform="shrink-2"></span></span></td>
</tr>
<tr class="btn-reveal-trigger">
<th class="align-middle white-space-nowrap name"><a href="../../app/e-commerce/customer-details.html">Edgar Allan Poe</a></th>
<td class="align-middle white-space-nowrap email">edgar@yahoo.com</td>
<td class="align-middle text-end fs-0 white-space-nowrap payment"> <span class="badge badge rounded-pill badge-soft-secondary">Blocked<span class="ms-1 fas fa-ban" data-fa-transform="shrink-2"></span></span></td>
</tr>
<tr class="btn-reveal-trigger">
<th class="align-middle white-space-nowrap name"><a href="../../app/e-commerce/customer-details.html">William Butler Yeats</a></th>
<td class="align-middle white-space-nowrap email">william@gmail.com</td>
<td class="align-middle text-end fs-0 white-space-nowrap payment"> <span class="badge badge rounded-pill badge-soft-success">Success<span class="ms-1 fas fa-check" data-fa-transform="shrink-2"></span></span></td>
</tr>
<tr class="btn-reveal-trigger">
<th class="align-middle white-space-nowrap name"><a href="../../app/e-commerce/customer-details.html">Rabindranath Tagore</a></th>
<td class="align-middle white-space-nowrap email">tagore@twitter.com</td>
<td class="align-middle text-end fs-0 white-space-nowrap payment"> <span class="badge badge rounded-pill badge-soft-warning">Pending<span class="ms-1 fas fa-stream" data-fa-transform="shrink-2"></span></span></td>
</tr>
<tr class="btn-reveal-trigger">
<th class="align-middle white-space-nowrap name"><a href="../../app/e-commerce/customer-details.html">Emily Dickinson</a></th>
<td class="align-middle white-space-nowrap email">emily@gmail.com</td>
<td class="align-middle text-end fs-0 white-space-nowrap payment"> <span class="badge badge rounded-pill badge-soft-secondary">Blocked<span class="ms-1 fas fa-ban" data-fa-transform="shrink-2"></span></span></td>
</tr>
<tr class="btn-reveal-trigger">
<th class="align-middle white-space-nowrap name"><a href="../../app/e-commerce/customer-details.html">Giovanni Boccaccio</a></th>
<td class="align-middle white-space-nowrap email">giovanni@outlook.com</td>
<td class="align-middle text-end fs-0 white-space-nowrap payment"> <span class="badge badge rounded-pill badge-soft-warning">Pending<span class="ms-1 fas fa-stream" data-fa-transform="shrink-2"></span></span></td>
</tr>
<tr class="btn-reveal-trigger">
<th class="align-middle white-space-nowrap name"><a href="../../app/e-commerce/customer-details.html">Oscar Wilde</a></th>
<td class="align-middle white-space-nowrap email">oscar@hotmail.com</td>
<td class="align-middle text-end fs-0 white-space-nowrap payment"> <span class="badge badge rounded-pill badge-soft-success">Success<span class="ms-1 fas fa-check" data-fa-transform="shrink-2"></span></span></td>
</tr>
<tr class="btn-reveal-trigger">
<th class="align-middle white-space-nowrap name"><a href="../../app/e-commerce/customer-details.html">John Doe</a></th>
<td class="align-middle white-space-nowrap email">doe@gmail.com</td>
<td class="align-middle text-end fs-0 white-space-nowrap payment"> <span class="badge badge rounded-pill badge-soft-success">Success<span class="ms-1 fas fa-check" data-fa-transform="shrink-2"></span></span></td>
</tr>
<tr class="btn-reveal-trigger">
<th class="align-middle white-space-nowrap name"><a href="../../app/e-commerce/customer-details.html">Emma Watson</a></th>
<td class="align-middle white-space-nowrap email">emma@gmail.com</td>
<td class="align-middle text-end fs-0 white-space-nowrap payment"> <span class="badge badge rounded-pill badge-soft-warning">Pending<span class="ms-1 fas fa-stream" data-fa-transform="shrink-2"></span></span></td>
</tr>
</tbody>
</table>
</div>
</div>
Docs
Integrate List in Falcon by following these easy steps:
- Set unique ID and add
data-list
attribute to the wrapper element and list your column invalueNames
property.<div id="tableExample" data-list='{"valueNames":["name","email","age"]}'> <!-- Your list content will go here--> </div>
- To enable sorting in your column, add
data-sort
attribute and assign column name to the attribute.<th class="sort" data-sort="name">Customer</th>
- Add
list
class to the content wrapper element.<tbody class="list"> <!-- Your value will go here--> </tbody>
- Then wrap your value with column name as a class. For example, if your column name is
name
then the value will be look like this:<td class="name">John Doe</td>
- To add pagination add
.pagination
class inside your wrapper element - To enable button pagination add
data-list-pagination='prev'
anddata-list-pagination='next'
to the "Prev" and "Next" buttons respectively. - To see the list info, add
data-list-info
attribute to a DOM element inside your wrapper element.
Javascript
<script src="vendors/list.js/list.min.js"></script>