diff --git a/README.md b/README.md index e255134..5147078 100644 --- a/README.md +++ b/README.md @@ -1,84 +1,113 @@

- RevoGrid + RevoGrid

-##

- Latest Version on NPM + Latest Version on NPM Software License + Tree shaking + Tree shaking

-

Powerful data grid component built on top of RevoGrid.

+ +# + +

Powerful data grid component built with StencilJS.

-Millions of cells and thousands columns easy and efficiently. +Support Millions of cells and thousands of columns easy and efficiently for fast data rendering. Easy to use.

Demo and API • - Svelte demoKey Features • - How To Use • + How To Use • + InstallationDocsLicense

-Material grid preview +Material grid preview RevoGrid material theme.
- ## Key Features -- Millions of cells viewport with a powerful core in-build by default; -- Keayboard support with excel like focus; -- Super light initial starter Min size. Can be imported with polifill or as module for modern browsers; -- Intelligent Virtual DOM and smart row recombination in order to achieve less redraws; -- Sorting (multiple options, can be customized per column and advanced with events); -- Filtering - - Predefined system filters; - - Preserve existing collection; - - Custom filters (extend existing system filters with your own set); -- Export to file; -- Custom sizes per Column and Row; -- Column resizing; -- Autosize support (Column size based on content); -- Pinned/Sticky/Freezed: - - Columns (define left or right); - - Rows (define top or bottom); -- Grouping: - - Column grouping (Nester headers); - - Row grouping (Nested rows); -- Cell editing; -- Customizations: - - Header template; - - Cell template (build your own cell view); - - Cell editor (apply your own editors and cell types); - - Cell properties (build you own properties around rendered cells); -- [Column types](https://revolist.github.io/revogrid/guide/column.types.html); - - Text/String (default); - - Number; - - Select; - - Date; - - Custom (take any type as template and create your own extended style); -- Drag and drop rows; -- Range operations: - - Selection; - - Edit; -- Theme packages: - - Excel like (default) - - Material (compact, dark or light); -- Copy/Paste (copy/paste from Excel, Google Sheets or any other sheet format); -- Easy extenation and support with modern VNode features and tsx support; -- Trimmed rows (hide rows on demand); -- Plugin system (create your own plugins or extend existing one, it's transparent and easy); -- Hundred others small customizations and improvements [RevoGrid](https://revolist.github.io/revogrid). - - -## How to use +- **High Performance**: Handles millions of cells in the viewport with a powerful core built by default. + +- **Keyboard Support**: + - Excel-like focus for efficient navigation and editing. + - Seamless copy/paste from Excel, Google Sheets, or any other sheet format. + + +- **Lightweight**: Minimal initial bundle size ![Min size](https://badgen.net/bundlephobia/min/@revolist/revogrid@latest). Can be imported with polyfills or as a module for modern browsers. + +- **Intelligent Virtual DOM**: Smart row recombination to minimize redraws. + +- **Sorting**: Multiple options, customizable per column, with advanced event handling. + +- **Filtering**: + - Predefined system filters. + - Preserve existing collections. + - Custom filters to extend system filters with your own set. + +- **Export**: Export data to file. + +- **Custom Sizes**: Define custom sizes for columns and rows. Automatic sizing based on content. + +- **Column Resizing**: Adjust column widths. + +- **Pinned/Sticky/Freezed Elements**: + - Columns (define left or right). + - Rows (define top or bottom). + +- **Grouping**: + - Column grouping (nested headers). + - Row grouping (nested rows). + +- **Cell Editing**: In-place editing of cell data. + +- **Customizations**: + - Column header template. + - Row header template. + - Cell template (create your own cell views). + - Cell editor (use predefined or apply your own custom editors and cell types). + - Cell properties (define custom properties for rendered cells). + +- **Column Types**: [More details](https://revolist.github.io/revogrid/guide/column.types.html) + - Text/String (default). + - Number. + - Select. + - Date. + - Custom (create extended styles using any template). + +- **Drag and Drop**: Easily reorder rows. + +- **Range Operations**: + - Selection. + - Editing. + +- **Theme Packages**: + - Excel-like (default). + - Material (compact, dark, or light). + +- **Extensibility**: Modern VNode features and tsx support for easy extension. + +- **Trimmed Rows**: Hide rows on demand. + +- **Plugin System**: Create custom plugins or extend existing ones easily. + +- **Additional Customizations and Improvements**: Explore hundreds of other small customizations and improvements in [RevoGrid](https://revolist.github.io/revogrid). + +
+ + + +### Usage Svelte [Example](https://codesandbox.io/s/data-vue-test-3wkzi?file=/src/App.vue) With NPM: + ```bash npm i @revolist/svelte-datagrid --save; ``` @@ -89,44 +118,70 @@ With Yarn: yarn add @revolist/svelte-datagrid; ``` - -[Demo sandbox](https://codesandbox.io/s/revogrid-svelte-d3zhi?file=/Grid.svelte) -```vue - + - ``` + +## Versions + +- **2.0+**: Introduced the plugin system, grouping, sorting, and filtering. +- **3.0+**: Breaking changes introduced. See the [migration guide](./docs/guide/migration.md). +This version features new component loading, ESM modules, Bootstrap support, and much [more](./docs/guide/migration.md). +- **4.0+**: Breaking changes introduced. See the [migration guide](./docs/guide/migration.md). In this version, we rethought our framework approach, updated typings, fixed major issues, updated core and significantly improved overall performance. The grid is now much faster, with better plugin support and full framework support for Angular, React, and Vue, along with partial support for Ember and Svelte. Redesigned the documentation, and added more examples. + + + ## Contributing -If you have any idea, feel free to open an issue to discuss a new feature and submit your changes back to me. +We invite you to join our vibrant community and contribute to the growth and success of RevoGrid. By getting involved, you'll have the opportunity to enhance your skills, gain valuable experience, and make a significant impact on an innovative project. + +### Why Contribute? + +- **Expand Your Knowledge**: Working on RevoGrid allows you to dive deep into modern web technologies, improve your coding skills, and learn best practices in performance optimization, data handling, and component-based architecture. +- **Valuable Experience**: Contributing to an open-source project like RevoGrid provides you with practical experience that can be a great addition to your portfolio. It demonstrates your ability to work collaboratively, solve complex problems, and contribute to a project's success. +- **Professional Growth**: By contributing, you become part of a network of talented developers. This can lead to mentorship opportunities, collaborations, and professional connections that can benefit your career. +- **Make a Difference**: Your contributions can help improve RevoGrid, making it more powerful and user-friendly for developers around the world. Your input can shape the future of the project and drive innovation. +### Join Us + +Your contribution, no matter how big or small, is valuable. By working on RevoGrid, you'll be part of an exciting project that's making a difference in the world of data grids. Join us today and let's build something amazing together! ## License MIT +--- + diff --git a/assets/excel.png b/assets/excel.png new file mode 100644 index 0000000..3e62e3e Binary files /dev/null and b/assets/excel.png differ diff --git a/assets/framework-2x.png b/assets/framework-2x.png new file mode 100644 index 0000000..5143871 Binary files /dev/null and b/assets/framework-2x.png differ diff --git a/assets/framework.png b/assets/framework.png new file mode 100644 index 0000000..7981656 Binary files /dev/null and b/assets/framework.png differ diff --git a/assets/logo.svg b/assets/logo.svg new file mode 100644 index 0000000..259f10b --- /dev/null +++ b/assets/logo.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/material.jpg b/assets/material.jpg new file mode 100644 index 0000000..08aa3f6 Binary files /dev/null and b/assets/material.jpg differ diff --git a/package-lock.json b/package-lock.json index 5fc740c..20041cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,15 @@ { "name": "@revolist/svelte-datagrid", - "version": "4.0.0", + "version": "4.0.25", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@revolist/svelte-datagrid", - "version": "4.0.0", + "version": "4.0.25", "license": "MIT", "dependencies": { - "@revolist/revogrid": "^4.0.0", - "@stencil/core": "^4.17.1" + "@revolist/revogrid": "4.0.25" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.0.2", @@ -25,40 +24,44 @@ }, "../..": { "name": "@revolist/revogrid", - "version": "4.0.0", + "version": "4.0.25", "license": "MIT", - "dependencies": { - "@stencil/core": "^4.17.1", - "lodash": "^4.17.21" - }, "devDependencies": { - "@angular/core": "^17.3.5", + "@angular/core": "^18.0.3", "@juggle/resize-observer": "^3.4.0", "@revolist/stencil-vue2-output-target": "^0.0.3", "@stencil/angular-output-target": "0.8.4", + "@stencil/core": "^4.18.3", "@stencil/react-output-target": "0.5.3", - "@stencil/sass": "^3.0.11", - "@stencil/store": "^2.0.15", + "@stencil/sass": "^3.0.12", + "@stencil/store": "^2.0.16", "@stencil/svelte-output-target": "0.0.3", "@stencil/vue-output-target": "^0.8.8", "@types/events": "^3.0.3", "@types/jest": "^29.5.12", - "@types/lodash": "^4.17.0", - "@types/node": "^20.12.7", - "@types/react": "^18.2.79", - "@types/react-dom": "^18.2.25", + "@types/lodash": "^4.17.5", + "@types/node": "^20.14.2", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", "@types/resize-observer-browser": "^0.1.11", "bootstrap": "^5.3.2", - "gh-pages": "^6.1.1", + "chalk": "^5.3.0", + "execa": "^9.2.0", + "fs": "^0.0.1-security", "jest": "26.0.1", "jest-cli": "26.0.1", - "prettier": "3.2.5", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "lodash": "^4.17.21", + "path": "^0.12.7", + "prettier": "3.3.2", + "react": "^18.3.1", + "react-dom": "^18.3.1", "rxjs": "^7.8.1", - "svelte": "^4.2.15", - "typescript": "^5.2.2", - "vue": "^3.4.23" + "svelte": "^4.2.18", + "typedoc": "^0.26.2", + "typedoc-plugin-markdown": "^4.1.0", + "typescript": "^5.4.5", + "url": "^0.11.3", + "vue": "^3.4.27" } }, "../../node_modules/@ampproject/remapping": { @@ -949,6 +952,7 @@ }, "../../node_modules/@stencil/core": { "version": "4.17.2", + "dev": true, "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -1561,25 +1565,6 @@ "node": ">=0.10.0" } }, - "../../node_modules/array-union": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/array-uniq": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "../../node_modules/array-unique": { "version": "0.3.2", "dev": true, @@ -1596,11 +1581,6 @@ "node": ">=0.10.0" } }, - "../../node_modules/async": { - "version": "3.2.4", - "dev": true, - "license": "MIT" - }, "../../node_modules/asynckit": { "version": "0.4.0", "dev": true, @@ -2110,19 +2090,6 @@ "node": ">= 0.8" } }, - "../../node_modules/commander": { - "version": "11.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "../../node_modules/commondir": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, "../../node_modules/component-emitter": { "version": "1.3.0", "dev": true, @@ -2328,11 +2295,6 @@ "dev": true, "license": "ISC" }, - "../../node_modules/email-addresses": { - "version": "5.0.0", - "dev": true, - "license": "MIT" - }, "../../node_modules/emittery": { "version": "0.7.2", "dev": true, @@ -2699,30 +2661,6 @@ "bser": "2.1.1" } }, - "../../node_modules/filename-reserved-regex": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../../node_modules/filenamify": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "../../node_modules/fill-range": { "version": "7.0.1", "dev": true, @@ -2734,22 +2672,6 @@ "node": ">=8" } }, - "../../node_modules/find-cache-dir": { - "version": "3.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, "../../node_modules/find-up": { "version": "4.1.0", "dev": true, @@ -2794,19 +2716,6 @@ "node": ">=0.10.0" } }, - "../../node_modules/fs-extra": { - "version": "11.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "../../node_modules/fs.realpath": { "version": "1.0.0", "dev": true, @@ -2875,27 +2784,6 @@ "node": ">=0.10.0" } }, - "../../node_modules/gh-pages": { - "version": "6.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "^3.2.4", - "commander": "^11.0.0", - "email-addresses": "^5.0.0", - "filenamify": "^4.3.0", - "find-cache-dir": "^3.3.1", - "fs-extra": "^11.1.1", - "globby": "^6.1.0" - }, - "bin": { - "gh-pages": "bin/gh-pages.js", - "gh-pages-clean": "bin/gh-pages-clean.js" - }, - "engines": { - "node": ">=10" - } - }, "../../node_modules/glob": { "version": "7.2.3", "dev": true, @@ -2923,21 +2811,6 @@ "node": ">=4" } }, - "../../node_modules/globby": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "../../node_modules/graceful-fs": { "version": "4.2.10", "dev": true, @@ -4024,17 +3897,6 @@ "node": ">=6" } }, - "../../node_modules/jsonfile": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "../../node_modules/kind-of": { "version": "6.0.3", "dev": true, @@ -4094,6 +3956,7 @@ }, "../../node_modules/lodash": { "version": "4.17.21", + "dev": true, "license": "MIT" }, "../../node_modules/loose-envify": { @@ -4397,14 +4260,6 @@ "dev": true, "license": "MIT" }, - "../../node_modules/object-assign": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "../../node_modules/object-copy": { "version": "0.1.0", "dev": true, @@ -4688,33 +4543,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "../../node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/pinkie": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/pinkie-promise": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "../../node_modules/pirates": { "version": "4.0.5", "dev": true, @@ -5863,25 +5691,6 @@ "node": ">=6" } }, - "../../node_modules/strip-outer": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/strip-outer/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "../../node_modules/supports-color": { "version": "7.2.0", "dev": true, @@ -6079,25 +5888,6 @@ "node": ">=8" } }, - "../../node_modules/trim-repeated": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/trim-repeated/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "../../node_modules/tslib": { "version": "2.5.0", "dev": true, @@ -6180,14 +5970,6 @@ "node": ">=0.10.0" } }, - "../../node_modules/universalify": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "../../node_modules/unset-value": { "version": "1.0.0", "dev": true, @@ -7390,17 +7172,6 @@ "string-argv": "~0.3.1" } }, - "node_modules/@stencil/core": { - "version": "4.18.1", - "license": "MIT", - "bin": { - "stencil": "bin/stencil" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.10.0" - } - }, "node_modules/@sveltejs/vite-plugin-svelte": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.0.tgz",