Skip to content
smart-table-icon

Smart Table

Transforms any dumb Javascript data array into a smart collection you can search, filter, sort, paginate.

It turns out to be very nice to build table and grid user interface components, but not only.

View on Github

Features

eye-blocked

View agnostic

Smart table only adds some nice behavior to a data collection and does not depend on any specific platform or UI framework. You can make an array become smart in your browser but also in nodejs.

Moreover, as smart table is fully decoupled from any view engine, it is really easy to use with your favourite view library to build cool grid components or any type of smart list components.

Go, and check our bindings for:

Fast

Performance is a top priority so that you can sort or filter your smart collection in less than a second even for big data set. Check out or demo table component which features a data set of 25000 entries.

rocket
sort-amount-desc

Sort

Smart table is shipped with a fast sorting API which supports

  • Any type (string, numbers, date, etc).
  • Nested properties on objects.
  • Different sort directions.

And by design, smart table is like lego bricks: if you don't like its sort functionality you can swap it with your own without any effort.

Filter

With smart table, filter a data collection is a piece of cake.

  • For any type: whether you want to see your data as String, Number, Date, Boolean, etc.
  • For nested properties: so you don't need to flatten your data set.
  • With a wide range of operators: strict equal, includes, lower than, greater than, etc.
  • Bring your own: and again if you don't like it just use your own filter instead.
filter
make-group

Paginate

Often, you will not want to display thousands of items to your users. Smart table provides a flexible way to accommodate your user by providing a slice API to choose which data page to display and its size.

Full text search

Smart table comes with a basic built in full text search API. A bit like ElasticSearch, we consider full text search a different thing from more sophisticated and specific filtered query. Again if you want something more elaborated (fuzzy search, indexed search, etc), no problem, just use your own or a community's one.

search
leaf

Lightweight

They all say that. But really performance and modularity are both in smart table DNA. Instead of having a 200kb pretend to do a thousand things library, smart table focuses on doing few fundamental things very well and on providing a strong and reliable extensible architecture. As a result smart table weights less than 3kb. When you have barely started downloading any other grid library, your smart-table will already be ready to please your users.

Extensible

Smart table is just Javascript and gives all the flexibility the language can provide with composition patterns.

  • You can compose a table into another one: that is what the smart-table-crud plugin does.
  • You can decorate a part of its API: that is what the smart-table-perf module does.
  • You can mixin some other behaviour and override the default table. That's how you move the logic to your server without changing a single line of code.
  • You can use your smart table as a data source: that is what the smart-table-virtualizer module does.

Smart table is by design modular and you can bring in more features as your project matures without being stuck in a constraining API.

tree