All Projects → miguelcobain → ember-yeti-table

miguelcobain / ember-yeti-table

Licence: MIT license
Yeti Table

Programming Languages

javascript
184084 projects - #8 most used programming language
Handlebars
879 projects
SCSS
7915 projects
HTML
75241 projects

Projects that are alternatives of or similar to ember-yeti-table

Awesome Grid
A curated list of grid(table) libraries and resources that developers may find useful.
Stars: ✭ 1,142 (+1939.29%)
Mutual labels:  ember, datagrid
labs-factfinder
New York City Census Reporting Tool
Stars: ✭ 34 (-39.29%)
Mutual labels:  ember
ember-fastboot-addon-tests
Addon testing support for Fastboot compatibility
Stars: ✭ 24 (-57.14%)
Mutual labels:  ember
Simple.Wpf.DataGrid
An experiment to build a data grid (blotter) in WPF without using any third party libaries
Stars: ✭ 64 (+14.29%)
Mutual labels:  datagrid
ember-resources
An implementation of Resources with some helpful utilities
Stars: ✭ 68 (+21.43%)
Mutual labels:  ember
deprecation-app
Deprecation guides for ember.js, ember-data, and ember-cli
Stars: ✭ 18 (-67.86%)
Mutual labels:  ember
7cart
7cart is a php7 project for building online shops, catalogs or service platforms. 7cart built with simple code and database schema. It is easy to support and fast.
Stars: ✭ 27 (-51.79%)
Mutual labels:  ember
DatatableJS
Jquery datatable with entity framework using MVC html helper
Stars: ✭ 25 (-55.36%)
Mutual labels:  datagrid
ember-active-storage
Direct uploads with Rails' Active Storage
Stars: ✭ 21 (-62.5%)
Mutual labels:  ember
HotelManagement
🏡 A Hotel Management system in C#
Stars: ✭ 77 (+37.5%)
Mutual labels:  datagrid
ember-cli-blog
Tom Dale's blog example updated for the Ember CLI
Stars: ✭ 87 (+55.36%)
Mutual labels:  ember
emberconf-2018
EmberConf 2018 notes.
Stars: ✭ 56 (+0%)
Mutual labels:  ember
irene
I AM SHER LOCKED. Dashboard for Appknox Users.
Stars: ✭ 15 (-73.21%)
Mutual labels:  ember
editable-react-table
React table built to resemble a database.
Stars: ✭ 519 (+826.79%)
Mutual labels:  datagrid
ember-style-modifier
{{style}} element modifier for ember.js
Stars: ✭ 32 (-42.86%)
Mutual labels:  ember
ember-validity-modifier
Ember Octane addon to add custom validity (form validation) to form fields
Stars: ✭ 28 (-50%)
Mutual labels:  ember
ember-mug
Reverse engineered bluetooth protocol for Ember Mugs
Stars: ✭ 87 (+55.36%)
Mutual labels:  ember
ember-cli-mirage-graphql
A library for mocking GraphQL with Ember CLI Mirage
Stars: ✭ 24 (-57.14%)
Mutual labels:  ember
ember-cli-concat
An Ember addon that enables you to concatinate Ember CLI's app and vendor files into a single JS file and a single CSS file
Stars: ✭ 31 (-44.64%)
Mutual labels:  ember
pagination-pager
Ember.js Component for Bootstrap 3 pagination & pager components
Stars: ✭ 56 (+0%)
Mutual labels:  ember

Yeti Table Build Status Ember Observer Score

Yeti Table provides a new expressive way to build tables in Ember with flexibility in mind.

Installation

ember install ember-yeti-table

Why Yeti Table?

Perhaps the biggest difference compared to other table solution is that Yeti Table uses templates to define your columns. In many other table solutions you need to define columns in javascript. Yeti Table was born from an experimentation of trying to define columns in templates.

In practice, this empowers customization and feels more in line with writing regular HTML tables. This fact has many implications on the whole API of Yeti Table.

Yeti table currently weights around 6.17kb (minified and gzipped).

Features

Yeti Table was built with the needs of a real production app in mind. Out of the box, it supports:

  • Client side row sorting - On a single column or on multiple columns.
  • Client side row filtering - You can apply a global filter to the table or just to specific columns.
  • Client side pagination - Provides pagination controls, but encourages you to build your own as well.
  • Server side data - Allows your server to drive the table pagination, filtering and sorting if you choose to. Useful when the dataset is too large to fetch.
  • Customization - Does not provide any styles. You can customize pretty much everything about how the tables are rendered on your templates. This includes custom css classes, click handlers and custom filtering and sorting logic.

Usage

Your starting point for Yeti Table will be the @data argument. It accepts an array of objects or a promise that resolves to such an array.

Then you must define your table columns inside the header component, each of them with a @prop argument that corresponds to the property key of each object that you want to display for that column. Yeti Table will update itself based on these property names, e.g if a firstName property of an object changes, Yeti Table might need to re-sort or re-filter the rows.

Afterwards, we just need to define our table body. If you use <table.body/> in the blockless form, Yeti Table "unrolls" all the rows for you. This is useful for simple tables. Here is such an example:

<YetiTable @data={{this.data}} as |table|>

  <table.header as |header|>
    <header.column @prop="firstName">
      First name
    </header.column>
    <header.column @prop="lastName">
      Last name
    </header.column>
    <header.column @prop="points">
      Points
    </header.column>
  </table.header>

  <table.body/>

</YetiTable>

You will probably need to make more customizations, and to do so you will need to use <table.header> and/or <table.body> in the block form. This form allows you to:

  • Use any component or markup as a cell's content
  • Use the row data across multiple cells of the same row
  • Attach click listeners to the row or cell
  • Use row data to conditionally add classes

Each <body.row> component accepts an optional @onClick action that will be called if the row is clicked.

Additionally, you might need to toggle the visibility of each row, and for that we can use the @visible argument on the <header.column> component. It defaults to true. Setting it to false will hide all the cells for that column accross all rows.

The <header.column> component also accepts a @columnClass argument. Yeti Table will apply this class all the cells for that column accross all rows.

Check out more advanced features on the Yeti Table documentation site.

Compatibility

  • Ember.js v3.20 or above
  • Ember CLI v3.20 or above

Editor integration

You can get autocomplete and additional information inside Visual Studio Code by installing els-addon-docs addon for Unstable Ember Language Server.

Credits

Credits to the amazing Ember Table addon.

Yeti Table was also inpired by DataTables in a lot of its features.

Contributing

Installation

  • git clone <repository-url>
  • cd ember-yeti-table
  • npm install

Linting

  • npm run lint:hbs
  • npm run lint:js
  • npm run lint:js -- --fix

Running tests

  • ember test – Runs the test suite on the current Ember version
  • ember test --server – Runs the test suite in "watch mode"
  • ember try:each – Runs the test suite against multiple Ember versions

Running the dummy application

For more information on using ember-cli, visit https://ember-cli.com/.

Contributing

See the Contributing guide for details.

License

This project is licensed under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].