All Projects → ghiscoding → slickgrid-universal

ghiscoding / slickgrid-universal

Licence: MIT license
Slickgrid-Universal is a monorepo which includes all Editors, Filters, Extensions, Services and is Framework Agnostic to take full advantage of SlickGrid core lib.

Programming Languages

typescript
32286 projects
SCSS
7915 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to slickgrid-universal

Ka Table
Lightweight MIT React Table component for both TS and JS with Sorting, Filtering, Grouping, Virtualization, Editing and many more
Stars: ✭ 117 (+303.45%)
Mutual labels:  grid, datatable, datagrid
Aurelia Slickgrid
Aurelia-Slickgrid a wrapper of the lightning fast & customizable SlickGrid datagrid with a few Styling Themes
Stars: ✭ 100 (+244.83%)
Mutual labels:  grid, datatable, datagrid
Tui.grid
🍞🔡 The Powerful Component to Display and Edit Data. Experience the Ultimate Data Transformer!
Stars: ✭ 1,859 (+6310.34%)
Mutual labels:  grid, datatable, datagrid
ag-grid
The best JavaScript Data Table for building Enterprise Applications. Supports React / Angular / Vue / Plain JavaScript.
Stars: ✭ 8,743 (+30048.28%)
Mutual labels:  grid, datatable, datagrid
Ngx Datatable
✨ A feature-rich yet lightweight data-table crafted for Angular
Stars: ✭ 4,415 (+15124.14%)
Mutual labels:  grid, datatable, datagrid
React Table
⚛️ Hooks for building fast and extendable tables and datagrids for React
Stars: ✭ 15,739 (+54172.41%)
Mutual labels:  grid, datatable, datagrid
Grid
Declarative React Canvas Grid primitive for Data table, Pivot table, Excel Worksheets and more 💥
Stars: ✭ 573 (+1875.86%)
Mutual labels:  grid, datatable, datagrid
Angular Slickgrid
Angular-Slickgrid is a wrapper of the lightning fast & customizable SlickGrid datagrid, it also includes multiple Styling Themes
Stars: ✭ 298 (+927.59%)
Mutual labels:  grid, datatable, datagrid
Datatablesbundle
This Bundle integrates the jQuery DataTables plugin into your Symfony application.
Stars: ✭ 334 (+1051.72%)
Mutual labels:  grid, datatable, datagrid
Datatable
A simple, modern and interactive datatable library for the web
Stars: ✭ 587 (+1924.14%)
Mutual labels:  grid, datatable, datagrid
svelte-datagrid
Svelte data grid spreadsheet best best features and performance from excel
Stars: ✭ 48 (+65.52%)
Mutual labels:  grid, datatable, datagrid
Smart Webcomponents
Web Components & Custom Elements for Professional Web Applications
Stars: ✭ 110 (+279.31%)
Mutual labels:  grid, datagrid
Vue Tables 2
Vue.js 2 grid components
Stars: ✭ 1,518 (+5134.48%)
Mutual labels:  grid, datatable
Revogrid
Powerful virtual data grid smartsheet with advanced customization. Best features from excel plus incredible performance 🔋
Stars: ✭ 1,870 (+6348.28%)
Mutual labels:  grid, datagrid
Functional Data Grid
Data grids in functional style with ReactJS
Stars: ✭ 125 (+331.03%)
Mutual labels:  grid, datagrid
Bs grid
Bootstrap Datagrid
Stars: ✭ 184 (+534.48%)
Mutual labels:  grid, datagrid
Tubular React
Material UI table with local or remote data-source. Featuring filtering, sorting, free-text search, export to CSV locally, and aggregations.
Stars: ✭ 202 (+596.55%)
Mutual labels:  grid, datagrid
Primereact
The Most Complete React UI Component Library
Stars: ✭ 2,393 (+8151.72%)
Mutual labels:  grid, datatable
slickgrid-es6
SlickGrid fork rewrites for ES6 for use under npm and Babel / Rollup builds
Stars: ✭ 100 (+244.83%)
Mutual labels:  grid, slickgrid
Jqwidgets
Angular, Vue, React, Web Components, Blazor, Javascript, jQuery and ASP .NET Framework,
Stars: ✭ 227 (+682.76%)
Mutual labels:  grid, datagrid

Slickgrid-Universal

License: MIT TypeScript lerna--lite NPM downloads

Actions Status Cypress.io jest codecov

This is a monorepo project (using pnpm workspaces) which is regrouping a few packages under a single repository. It is using SlickGrid (more specifically the 6pac/SlickGrid fork) behind the scene (there is no need to rewrite the core library itself, in other words this is a wrapper library). The main goal of this library is to create a common repo that includes all Editors, Filters, Extensions and Services that could be used by any Framework (it is framework agnostic). It was also a good opportunity to decouple some features/services that not every one need at all time, this will also help in getting smaller bundle size depending on which features (packages) you decide to use. For example, not every project require backend services (OData, GraphQL) and export services (Excel Export, Text Export), which is why they are better handled with a monorepo structure.

Latest News & Releases

Check out the Releases section for all latest News & Version Releases.

Demo page

The GitHub demo page uses 2 different themes (Material Design / Salesforce) but you could also use Bootstrap theme which is demoed in other frameworks.

Like my work?

You could the lib and perhaps support me with cafeine . Thanks in advance.

Buy Me a Coffee at ko-fi.com

Why create this monorepo?

You might be wondering why was this monorepo created? Here are a few reasons:

  1. it removes a lot of duplicated code that existed in both Angular-Slickgrid and Aurelia-Slickgrid libraries (these libs had over 90% of code in common and that was not very DRY, it's a lot better to push fixes in only 1 place instead of multiple places).
  2. decouple some Services that should not be required, neither imported, for every project (OData, GraphQL, Export to File, Export to Excel, RxJS, ...)
  3. framework agnostic, it could be implemented in many more frameworks (if you're interested in adding a port for any other framework, please open a new Discussion)
    • you can use it in plain JavaScript (ES6) or TypeScript, on our side we use it with plain JS (ES6) in our Salesforce environment with LWC (Lightning Web Component)

Frameworks using this monorepo

The Vanilla Implementation (which is not associated to any framework) was built with WebPack and is also used to run and test all the UI functionalities Cypress (E2E tests). The Vanilla-force-bundle, which extends the vanilla-bundle package is what we use in our SalesForce implementation (with Lightning Web Component), hence the creation of this monorepo library.

Fully Tested with Jest (Unit Tests) - Cypress (E2E Tests)

Slickgrid-Universal has 100% Unit Test Coverage, we are talking about +15,000 lines of code (+3,700 unit tests) that are fully tested with Jest. There are also +400 Cypress E2E tests to cover all Examples and most UI functionalities (there's also an additional +500 tests in Aurelia-Slickgrid)

Available Demos

Package or Lib Name Description
Angular-Slickgrid for Angular framework
Aurelia-Slickgrid for Aurelia framework
slickgrid-universal/webpack-demo-vanilla-bundle standalone package written in plain TypeScript for demo and UI testing (do not use in production, this is only for demo/testing purpose).
Slickgrid-Universal-Vite-Demo Slickgrid-Universal demo with Vite & TypeScript

Available Public Packages

Package Name Version Description Changes
@slickgrid-universal/common npm commonly used Formatters/Editors/Filters/Services/... changelog
@slickgrid-universal/binding npm basic Binding Engine & Helper changelog
@slickgrid-universal/event-pub-sub npm basic PubSub Service using JS Events changelog
@slickgrid-universal/composite-editor-component npm Composite Editor Modal Component changelog
@slickgrid-universal/custom-footer-component npm Custom Footer Component for the grid changelog
@slickgrid-universal/custom-tooltip-plugin npm Custom Tooltip (plugin) changelog
@slickgrid-universal/empty-warning-component npm simple Empty Data Warning Component changelog
@slickgrid-universal/pagination-component npm simple Pagination Component changelog
@slickgrid-universal/excel-export npm Export to Excel Service (xls/xlsx) changelog
@slickgrid-universal/text-export npm Export to Text File Service (csv/txt) changelog
@slickgrid-universal/graphql npm GraphQL Query Service (Filter/Sort/Paging) changelog
@slickgrid-universal/odata npm OData Query Service (Filter/Sort/Paging) changelog
@slickgrid-universal/row-detail-view-plugin npm Row Detail View (plugin) changelog
@slickgrid-universal/rxjs-observable npm RxJS Observable Service Wrapper changelog
@slickgrid-universal/vanilla-bundle npm Vanilla TypeScript/ES6 implementation changelog
@slickgrid-universal/vanilla-force-bundle npm Vanilla TypeScript/ES6 for Salesforce implementation changelog

Installation

NOTE: the installation instructions below are only required if you want to contribute to this project, if on the other hand you just want to do a quick demo and use Slickgrid-Universal then take a look at webpack-demo-vanilla-bundle. There is no need to clone and install the entire library, you can just create an empty project with the content of webpack-demo-vanilla-bundle (perhaps clone it the lib and copy only that folder to an empty project would be the easiest to get started).

To get started and do development with this monorepo, you will need to clone the repo and then follow the steps below. You must be at the root of your project to run the following commands. This project uses pnpm, you can install it via npm i -g pnpm or follow their installation

  1. Install pnpm workspace with pnpm or run it with npx
# from the root
pnpm install

# or with npx
npx pnpm install
  1. Build

To get started you must run at least once the following script for the initial TS build so that all necessary dist folders are created and bundled for all the workspace packages to work together.

pnpm run build

NOTE: this will also have to be re-executed if you change any of the interfaces in the common package (since that package is a dependency of all other packages).

  1. Run Dev (Vanilla Implementation)

There is a Vanilla flavour implementation of this monorepo, vanilla means that it is not associated to any framework and is written in plain TypeScript without being bound to any framework. The implementation is very similar to Angular and Aurelia. It could be used as a guideline to implement it for other framework ports.

pnpm run dev:watch

Tests

You must go through Installation Steps 1-2 prior to run the unit tests OR Steps 1-3 when running E2E tests.

Jest Unit Tests

To run all unit tests (with Jest), you can run one of the following commands

pnpm run test

# or run Jest in watch mode
pnpm run test:watch

Cypress E2E Tests

To run all E2E tests (with Cypress), you can run one of the following commands

# will open the Cypress UI
pnpm run cypress

# or run in the shell like a CI/CD would
pnpm run cypress:ci
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].