Skip to content

Commit

Permalink
feat!: prepare official 5.0 version release (#845)
Browse files Browse the repository at this point in the history
* feat!: major folder restructuring with esbuild to support `iife`, `cjs` and `esm` and soon TypeScript (#804)

* feat: migrate all Controls to TypeScript (#808)

* feat: migrate all Menu/Buttons Plugins to TypeScript (#811)

* feat: migrate all Decorator & Selection Plugins to TypeScript (#812)

* feat: migrate CheckboxSelector & State Plugins to TypeScript (#813)

* feat: migrate Draggable Grouping Plugins to TypeScript (#814)

* feat: migrate Resizer Plugin to TypeScript (#815)

* feat: migrate RowMoveManager Plugins to TypeScript (#817)

* feat: migrate RowDetail Plugin to TypeScript (#822)

* feat: migrate RemoteModel Plugins to TypeScript (#823)

* feat: remove deprecated DataView methods (#833)

* feat: remove deprecated DataView methods
- `setAggregators` and `groupBy` were both replaced by `setGrouping` many years ago, so no need to keep these old functions anymore

* feat: add new trading platform high frequency update grid (#835)

* feat: add new trading platform high frequency update grid

* fix: copying multiple times only kept last undo CellExternalCopyManager
- fix an issue where copying and pasting to multiple area only kept the last undo and reapplied it over and over and the cause was because the clipCommand was global to the class so it only kept the last undo, the fix is to make sure the clipCommand variable is local to the execution handler instead

---------

Co-authored-by: Nikhil Giddaluru <38428547+nikhil5693@users.noreply.github.com>
Co-authored-by: Ben McIntyre <email.ben.mcintyre@gmail.com>
  • Loading branch information
3 people authored Sep 19, 2023
1 parent d0a0e3f commit ad85e12
Show file tree
Hide file tree
Showing 831 changed files with 75,499 additions and 34,681 deletions.
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.d.ts
65 changes: 46 additions & 19 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -1,22 +1,49 @@
{
"extends": [
"eslint:recommended",
"plugin:cypress/recommended"
],
"env": {
"browser": true,
"es6": true,
"node": true
},
"globals": {
"flatpickr": true,
"Slick": true,
"Sortable": true
},
"rules": {
"cypress/no-unnecessary-waiting": "off",
"cypress/unsafe-to-chain-command": "off",
"no-cond-assign": "off",
"no-prototype-builtins": [0]
"parser": "@typescript-eslint/parser",
"settings": {
"node": {
"tryExtensions": [".js", ".json", ".node", ".ts", ".d.ts"],
"resolvePaths": ["node_modules/@types"]
}
},
"extends": [
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:cypress/recommended"
],
"plugins": ["@typescript-eslint", "node"],
"root": true,
"env": {
"browser": true,
"es6": true,
"node": true
},
"globals": {
"flatpickr": true,
"Slick": true,
"Sortable": true,
"IIFE_ONLY": true
},
"rules": {
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_", "destructuredArrayIgnorePattern": "^_" }],
"@typescript-eslint/ban-types": [
"error",
{
"types": {
// accept Function type
"Function": false
},
"extendDefaults": true
}
],
"cypress/no-assigning-return-values": "off",
"cypress/no-unnecessary-waiting": "off",
"cypress/unsafe-to-chain-command": "off",
"no-cond-assign": "off",
"no-prototype-builtins": [0]
}
}
16 changes: 11 additions & 5 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
fail-fast: false
matrix:
# define which version of NodeJS to run the build
node: [16]
node: [18]

steps:
- name: Clone repository
Expand All @@ -45,11 +45,17 @@ jobs:
- run: npm --version

- name: Install npm dependencies
run: npm install
run: npm install --legacy-peer-deps

- name: Prod Build with TS Types
run: npm run build:prod

- name: Start HTTP Server
run: npm run serve:demo &

- name: Run Cypress E2E tests
uses: cypress-io/github-action@v4
uses: cypress-io/github-action@v5
with:
start: npm run serve
wait-on: 'http://localhost:8080'
# wait-on: 'http://localhost:8080'
browser: chrome
config-file: cypress/cypress.config.ts
18 changes: 17 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,25 @@
*.exe
*.pdb
*.bak
*.esproj
*.sln
.vs*
node_modules/*
src/models/*.js
src/plugins/*.js
src/controls/*.js
src/models/*.js
src/*.js
dist/browser/models/*
SlickgridRelease*
nuget*
testresult.xml
yarn-error.log
yarn.lock
yarn.lock
tsconfig.tsbuildinfo

# IDE - VSCode
.vscode/*
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
3 changes: 3 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@ CODE_OF_CONDUCT.md
nuget*
cypress.json
cypress/*
lib
node_modules
examples
SlickgridRelease*
scripts
tests
testresult.xml
package-lock.json
Expand Down
22 changes: 22 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8080/examples/",
"webRoot": "${workspaceFolder}"
},
{
"type": "msedge",
"request": "launch",
"name": "Launch Edge against localhost",
"url": "http://localhost:8080/examples/",
"webRoot": "${workspaceFolder}"
}
]
}
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"typescript.tsdk": "node_modules\\typescript\\lib"
}
42 changes: 42 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,48 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

# [5.0.0-alpha.9](https://github.com/6pac/SlickGrid/compare/5.0.0-alpha.8...5.0.0-alpha.9) (2023-09-19)

# [5.0.0-alpha.8](https://github.com/6pac/SlickGrid/compare/5.0.0-alpha.7...5.0.0-alpha.8) (2023-09-19)

# [5.0.0-alpha.7](https://github.com/6pac/SlickGrid/compare/5.0.0-alpha.6...5.0.0-alpha.7) (2023-09-19)

# [5.0.0-alpha.6](https://github.com/6pac/SlickGrid/compare/5.0.0-alpha.5...5.0.0-alpha.6) (2023-09-19)

# [5.0.0-alpha.5](https://github.com/6pac/SlickGrid/compare/5.0.0-alpha.4...5.0.0-alpha.5) (2023-09-19)

# [5.0.0-alpha.4](https://github.com/6pac/SlickGrid/compare/5.0.0-alpha.3...5.0.0-alpha.4) (2023-09-19)

# [5.0.0-alpha.3](https://github.com/6pac/SlickGrid/compare/5.0.0-alpha.5...5.0.0-alpha.3) (2023-09-19)

# [5.0.0-alpha.5](https://github.com/6pac/SlickGrid/compare/5.0.0-alpha.1...5.0.0-alpha.5) (2023-09-19)

### Bug Fixes

* invalid argument type for setSelectedIds() method ([330e0e3](https://github.com/6pac/SlickGrid/commit/330e0e3e6f233439532804cafccf65e5781a9dd3))

# [5.0.0-alpha.1](https://github.com/6pac/SlickGrid/compare/5.0.0-alpha.0...5.0.0-alpha.1) (2023-09-19)

### Bug Fixes

* CJS fallbacks should be at the end not at beginning ([a244ada](https://github.com/6pac/SlickGrid/commit/a244ada34bf47489c6c5064e405a6d2ae6046aca))
* copying multiple times only kept last undo CellExternalCopyManager ([cdda3fb](https://github.com/6pac/SlickGrid/commit/cdda3fb433c8350eecfe2e36f64ee26b083e3db6))

### Features

* add new trading platform high frequency update grid ([#835](https://github.com/6pac/SlickGrid/issues/835)) ([f86371b](https://github.com/6pac/SlickGrid/commit/f86371bdc15b76037f912717018e743c4202f232))
* migrate all Controls to TypeScript ([#808](https://github.com/6pac/SlickGrid/issues/808)) ([0d129bd](https://github.com/6pac/SlickGrid/commit/0d129bd4ffed69d913681e7f7ad7fd558b1ca7ec))
* migrate all Decorator & Selection Plugins to TypeScript ([#812](https://github.com/6pac/SlickGrid/issues/812)) ([cf3049e](https://github.com/6pac/SlickGrid/commit/cf3049ee05936b64bfe1abdc2aac932eb4a9751c))
* migrate all Menu/Buttons Plugins to TypeScript ([#811](https://github.com/6pac/SlickGrid/issues/811)) ([c66c429](https://github.com/6pac/SlickGrid/commit/c66c429246be74fa13e7b0c5917f6d81c36d0049))
* migrate CheckboxSelector & State Plugins to TypeScript ([#813](https://github.com/6pac/SlickGrid/issues/813)) ([2da9f7f](https://github.com/6pac/SlickGrid/commit/2da9f7f8fad1542bb15026bf0472d3462955b3ac))
* migrate CustomTooltip Plugin to TypeScript ([#816](https://github.com/6pac/SlickGrid/issues/816)) ([0f2b417](https://github.com/6pac/SlickGrid/commit/0f2b417fad5fb5ef3fd0456694d55fdee9af9ae9))
* migrate Draggable Grouping Plugins to TypeScript ([#814](https://github.com/6pac/SlickGrid/issues/814)) ([0037c7d](https://github.com/6pac/SlickGrid/commit/0037c7d831314706cc238340406e250f2d26ee64))
* migrate RemoteModel Plugins to TypeScript ([#823](https://github.com/6pac/SlickGrid/issues/823)) ([7a816e2](https://github.com/6pac/SlickGrid/commit/7a816e22333e817cc9f8d415beeedba9e01ad20f))
* migrate Resizer Plugin to TypeScript ([#815](https://github.com/6pac/SlickGrid/issues/815)) ([762ec3d](https://github.com/6pac/SlickGrid/commit/762ec3d3a3c08335ce2fec40d04bbaceb91ddeae))
* migrate RowDetail Plugin to TypeScript ([#822](https://github.com/6pac/SlickGrid/issues/822)) ([685b009](https://github.com/6pac/SlickGrid/commit/685b00922fae002b946b50efdae53dfafb277c54))
* migrate RowMoveManager Plugins to TypeScript ([#817](https://github.com/6pac/SlickGrid/issues/817)) ([8ad65ca](https://github.com/6pac/SlickGrid/commit/8ad65ca512e56a7c27d0b08ebcce656c4cf90c65))
* remove deprecated DataView methods ([#833](https://github.com/6pac/SlickGrid/issues/833)) ([0f3ba49](https://github.com/6pac/SlickGrid/commit/0f3ba49b103e7094089f917ad36d4da294618ea2))

## [4.0.1](https://github.com/6pac/SlickGrid/compare/4.0.0...4.0.1) (2023-06-30)

### Bug Fixes
Expand Down
18 changes: 18 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Contributing

We'd love for you to contribute and to make this project even better than it is today! If this interests you, please make sure to follow the steps below before creating a Pull Request.

When we mention `VSCode`, we mean the `Visual Studio Code` editor which can be downloaded [here](https://code.visualstudio.com)

Before accepting any Pull Request, we would you like to remind you to follow these steps:
1. Install dependencies
```sh
npm install
```
2. Run a full build
```sh
npm run build:prod
```
3. Fix any Linting or TypeScript issues (if any) returned by the build process
4. After being done with step 2 and 3, then the final step would be to proceed with your Pull Request
- **NOTE** even though the `dist/` folder is included in Git for portability, you could choose (we stringly recommend) that you ignore/disregard these files from being included in your Pull Request.
32 changes: 20 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,36 @@

Check out the NEW SlickGrid Website! http://slickgrid.net/

This is the acknowledged most active non-customised fork of SlickGrid.
This is the acknowledged most active fork of SlickGrid.

It aims to be a viable alternative master repo, building on the legacy of the mleibman/SlickGrid master branch, keeping libraries up to date and applying small, safe core patches and enhancements without turning into a personalised build. Our biggest changes include the merge of X-SlickGrid that brought Frozen columns/rows, we then also removed jQuery & jQueryUI and are now using native browser code in SlickGrid.
It aims to be a viable alternative master repo, building on the legacy of the [mleibman/SlickGrid](https://github.com/mleibman/SlickGrid) master branch, keeping libraries up to date and applying, safe core patches and enhancements to keep the project up to date.

Check out the **[Examples](https://github.com/6pac/SlickGrid/wiki/Examples)** for examples demonstrating new features and use cases, such as dynamic grid creation and editors with third party controls.
The project extends on the original SlickGrid foundation while also including the following changes
- merged [X-SlickGrid](https://github.com/ddomingues/X-SlickGrid) code into the project which brought Frozen Columns/Rows (aka Pinning)
- removed jQueryUI requirement in [v3](https://github.com/6pac/SlickGrid/wiki/Major-version-3.0----Removal-of-jQueryUI-requirement-(replaced-by-SortableJS)) (replaced it with [SortableJS](https://sortablejs.github.io/Sortable/))
- removed jQuery requirement in [v4](https://github.com/6pac/SlickGrid/wiki/Major-version-4.0---Removal-of-jQuery-requirement)
- modernized the project in [v5](https://github.com/6pac/SlickGrid/wiki/Major-version-5.0-%E2%80%90-ES6-ESM-and-TypeScript-Support) by migrating to TypeScript, we added ES6/ESM build targets and a new Alpine Theme

### Examples
Check out the **[Examples](https://github.com/6pac/SlickGrid/wiki/Examples)** Wiki for a full list of examples demonstrating new features and use cases, such as dynamic grid creation and editors with third party controls.

Also check out the [Wiki](https://github.com/6pac/SlickGrid/wiki) for news and documentation.

### E2E Tests with Cypress
We are now starting to add E2E (end to end) tests in the browser with [Cypress](https://www.cypress.io/). You can see [here](https://github.com/6pac/SlickGrid/tree/master/cypress/integration) the list of Examples that now have E2E tests. We also added these tests to the [GitHub Actions](https://github.com/features/actions) Workflow to automate certain steps while making sure any new commits aren't breaking the build/test. It will basically run all the E2E tests every time someone pushes a Commit or a Pull Request.
We are now starting to add E2E (end to end) tests in the browser with [Cypress](https://www.cypress.io/). You can see [here](https://github.com/6pac/SlickGrid/tree/next/cypress/e2e) the list of Examples that now have E2E tests. We also added these tests to the [GitHub Actions](https://github.com/features/actions) Workflow (CI) to automate certain steps while also making sure that any new commits aren't breaking the build/tests. The concept is that it automatically runs all the E2E tests every time someone pushes a Commit or a Pull Request. We currently have tests for 22+ examples with almost ~300 tests.

We also welcome any new contributions (tests or fixes) and if you wish to add Cypress E2E tests, all you need to do is to clone the repo and then run the following commands
We welcome any new contributions (tests or fixes) and if you wish to add Cypress E2E tests, all you need to do is to clone the repo and run the following commands
```bash
npm install # install all npm packages
npm run serve # run a local http server on port 8080
npm run cypress # open Cypress tool
npm run dev # run a local development server on port 8080 in watch mode (or `npm run serve` without watch)
npm run cypress # open Cypress UI tool
```
Once the Cypress UI is open, you can then click on "Run all Specs" to execute all E2E browser tests.

## SlickGrid 3.x drops jQueryUI requirement

We no longer require [jQueryUI](https://jqueryui.com/) in SlickGrid 3.0, we removed all associated code and replaced it with [SortableJS](https://sortablejs.github.io/Sortable/) which is a lot more modern and touch friendly. Please read [SlickGrid 3.0 - Annoucement & Migration](https://github.com/6pac/SlickGrid/wiki/Major-version-3.0----Removal-of-jQueryUI-requirement-(replaced-by-SortableJS)) Wiki for more info.
## Migrations

## SlickGrid 4.x drops jQuery requirement
SlickGrid is now using browser native code and no longer requires jQuery in SlickGrid 4.0. For more info, please read [SlickGrid 4.0 - Annoucement & Migration](https://github.com/6pac/SlickGrid/wiki/Major-version-4.0---Removal-of-jQuery-requirement)
| SlickGrid | Migration Guide | Description |
| --------- | --------------- | ----------- |
| 3.x | [Announcing v3.0](https://github.com/6pac/SlickGrid/wiki/Major-version-3.0----Removal-of-jQueryUI-requirement-(replaced-by-SortableJS)) | dropping [jQueryUI](https://jqueryui.com/) requirement and replaced it with [SortableJS](https://sortablejs.github.io/Sortable/) which is a lot more modern and touch friendly |
| 4.x | [Announcing v4.0](https://github.com/6pac/SlickGrid/wiki/Major-version-4.0---Removal-of-jQuery-requirement) | dropping [jQuery](https://jquery.com/) requirement, SlickGrid is now using browser native code |
| 5.x | [Announcing v5.0](https://github.com/6pac/SlickGrid/wiki/Major-version-5.0-%E2%80%90-ES6-ESM-and-TypeScript-Support) | project modernization, added TypeScript with ES6, ESM builds and added a new Alpine Theme |
Loading

0 comments on commit ad85e12

Please sign in to comment.