-
-
Notifications
You must be signed in to change notification settings - Fork 19
HOWTO Step by Step
The easiest is to simply clone the Aurelia-Slickgrid-Demos project and run it from there... or if you really wish to start from scratch then follow the steps below.
Install the Aurelia-Slickgrid
, jQuery 3.x
, Bootstrap
and potentially a font library like Font-Awesome
npm install --save aurelia-slickgrid bootstrap font-awesome # the last deps are optional
# install required @types
npm install --save-dev @types/sortablejs @types/dompurify
Note: Bootstrap
and Font-Awesome
are both optional, you can use any other libs too
For WebPack
users, you can skip this step and continue at step 3.
With Aurelia-CLI
, you will need to modify your aurelia.json
file to add some of the packages that don't get auto-detected properly.
Note: there are other dependencies, before "text"
, which I simply removed for brevity.
"dependencies": [
"text",
{
"name": "multiple-select-modified",
"path": "../node_modules/multiple-select-modified/src",
"main": "multiple-select",
"resources": [
"multiple-select.css"
]
},
{
"name": "jquery-ui",
"path": "../node_modules/jquery-ui",
"main": "dist/jquery-ui",
"deps": ["jquery"],
"exports": "$"
},
{
"name": "dequal-lite",
"path": "../node_modules/dequal/dist",
"main": "index.min"
}
]
Load the default Bootstrap theme style or scroll down for SASS customization.
Default compiled css
(if you use the plain Bootstrap Theme CSS, you could simply add it to your index.html
file and be done with it).
<link rel="stylesheet" type="text/css" href="scripts/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="../node_modules/flatpickr/dist/flatpickr.min.css">
<link rel="stylesheet" type="text/css" href="../node_modules/multiple-select-modified/src/multiple-select.css">
<!-- Slickgrid Bootstrap theme, unless you use SASS import -->
<link rel="stylesheet" type="text/css" href="../node_modules/@slickgrid-universal/common/dist/styles/css/slickgrid-theme-bootstrap.css">
import 'bootstrap/dist/css/bootstrap.css';
import 'font-awesome/css/font-awesome.css';
import 'flatpickr/dist/flatpickr.min.css';
import 'multiple-select-modified/src/multiple-select.css';
// if you use CSS instead of SASS
import '@slickgrid-universal/common/dist/styles/css/slickgrid-theme-bootstrap.css';
You could also compile the SASS files with your own customization, for that simply take any of the _variables.scss (without the !default
flag) variable from the file and make sure to import the Bootstrap Theme afterward. For example, you could modify your style.scss
with the following changes:
/* for example, let's change the mouse hover color */
$cell-odd-background-color: lightyellow;
$row-mouse-hover-color: lightgreen;
/* make sure to add the @import the SlickGrid Bootstrap Theme AFTER the variables changes */
@import '../node_modules/@slickgrid-universal/common/dist/styles/sass/slickgrid-theme-bootstrap.scss';
Make the plugin available globally in your main.js
file.
export function configure(aurelia) {
aurelia.use.plugin('aurelia-slickgrid');
aurelia.start().then(() => aurelia.setRoot());
}
export function configure(aurelia) {
aurelia.use.plugin(PLATFORM.moduleName('aurelia-slickgrid'));
aurelia.start().then(() => aurelia.setRoot());
}
When using WebPack, you will also need to add jQuery in the global window object, you can do so by modifying your webpack.config.js
with the following changes
const { ProvidePlugin } = require('webpack');
module.exports = ... {
// ...
// add jQuery to the global window object
new ProvidePlugin({
'$': 'jquery',
'jQuery': 'jquery',
'window.jQuery': 'jquery',
'window.$': 'jquery'
})
});
If you don't want to use any Translate Service and use only 1 Locale then take a look at this demo
To provide locales other than English (default locale), you have 2 options that you can go with. If you only use English, there is nothing to do (you can still change some of the texts in the grid via option 1.)
- Using Custom Locale, that is when you use only 1 locale (other thank English)... this is a new feature starting from version
2.10.0
and up. - Using Localization with I18N, that is when you want to use multiple locales dynamically.
If you use multiple locale, you will also need to import necessary Flatpickr Locale, for more info see this Flatpickr Localization Wiki
<aurelia-slickgrid
grid-id="grid1"
column-definitions.bind="columnDefinitions"
grid-options.bind="gridOptions"
dataset.bind="dataset">
</aurelia-slickgrid>
export class Example1 {
gridOptions;
columnDefinitions;
dataset = [];
constructor() {
// define the grid options & columns and then create the grid itself
this.defineGrid();
}
attached() {
// populate the dataset once the grid is ready
this.getData();
}
/* Define grid Options and Columns */
defineGrid() {
this.columnDefinitions = [
{ id: 'title', name: 'Title', field: 'title', sortable: true, minWidth: 100 },
{ id: 'duration', name: 'Duration (days)', field: 'duration', sortable: true, minWidth: 100 },
{ id: '%', name: '% Complete', field: 'percentComplete', sortable: true, minWidth: 100 },
{ id: 'start', name: 'Start', field: 'start', minWidth: 100 },
{ id: 'finish', name: 'Finish', field: 'finish', minWidth: 100 },
{ id: 'effort-driven', name: 'Effort Driven', field: 'effortDriven', sortable: true, minWidth: 100 }
];
this.gridOptions = {
enableAutoResize: false,
gridHeight: 600,
gridWidth: 800,
};
}
getData() {
// mock a dataset
this.dataset = [];
for (let i = 0; i < 1000; i++) {
const randomYear = 2000 + Math.floor(Math.random() * 10);
const randomMonth = Math.floor(Math.random() * 11);
const randomDay = Math.floor((Math.random() * 29));
const randomPercent = Math.round(Math.random() * 100);
this.dataset[i] = {
id: i,
title: 'Task ' + i,
duration: Math.round(Math.random() * 100) + '',
percentComplete: randomPercent,
start: `${randomMonth}/${randomDay}/${randomYear}`,
finish: `${randomMonth}/${randomDay}/${randomYear}`,
effortDriven: (i % 5 === 0)
};
}
}
}
There are multiple demos (WebPack, RequireJS, CLI, ...) that you can clone and refer to (2 of them are actually used to update the GitHub demo pages and are updated frequently). So to get you started, you can clone the aurelia-slickgrid-demos repo.
The last step is really to explore all the pages that are available in this Wiki, all the documentation will be place in here and so you should visit it often. For example a good starter is to look at the following
- for all the
Grid Options
, take a look at Wiki - Grid Options - Formatters
- Editors
- Filters
- Grid Menu
- ... and much more, just explorer the Wikis through the sidebar index (on your right)
- it gets updated very frequently, we usually mention any new/updated wikis in any new version release
You might notice that all demos are made with mocked dataset that are embedded in each examples, that is mainly for demo purposes, but you might be wondering how to connect this with an FetchClient
? Easy... just replace the mocked data, assigned to the dataset
property, by your FetchClient
call and that's it. The dataset
property can be changed at any time, which is why you can use local data and/or connect it to a Promise
or an async call with FetchClient
(internally it's just a SETTER that refreshes the grid). See Example 22 for a demo showing how to load a JSON file with FetchClient
.
The best way to get started is to clone the Aurelia-Slickgrid-demos, it has multiple examples and it is also updated frequently since it is used for the GitHub Bootstrap 4 demo page. Aurelia-Slickgrid
has 2 Bootstrap
themes, you can see a demo of each one below.
-
Bootstrap 4 demo / examples repo (with
I18N
Service)-
Bootstrap 4 - examples repo (without
I18N
Service)
-
Bootstrap 4 - examples repo (without
-
Bootstrap 5 demo / examples repo (with
I18N
Service)
Like to see the code to a particular Example? Just click on the "see code" that is available in every live examples.
Starting with version 3.0.0, the Excel Export is now an optional package and if you want to use it then you'll need to install it via npm from the monorepo library with npm install @slickgrid-universal/excel-export
. Refer to the Excel Export - Wiki for more info.
Here's a quick list of some of these optional packages
- @slickgrid-universal/excel-export
- @slickgrid-universal/text-export
- @slickgrid-universal/graphql
- @slickgrid-universal/odata
What if Aurelia-Slickgrid
is missing feature(s) versus the original SlickGrid
? Fear not and directly use the SlickGrid
and DataView
objects that are expose from the start through Event Emitters. For more info continue reading on Wiki - SlickGrid & DataView objects and Wiki - Grid & DataView Events
After reading all this HOW TO, what if you have an issue with the grid? Please start by searching any related issues. If you can't find anything in the issues log and you made sure to also look through the multiple wiki pages as well, then go ahead and fill in a new issue and we'll try to help.
This project is Open Source and is, for the most part, mainly done in spare time. So please be respectful when creating issues (and fill in the issue template) and I will try to help you out. If you like my work, you can also buy me a coffee ☕️, some part of the code happens when I'm at StarBucks... That is it, thank you and don't forget to ⭐ it if you like the lib 😉
Contents
- Aurelia-Slickgrid Wiki
- Installation
- Styling
- Interfaces/Models
- Testing Patterns
- Column Functionalities
- Global Grid Options
- Localization
- Events
- Grid Functionalities
- Auto-Resize / Resizer Service
- Resize by Cell Content
- Add/Delete/Update or Highlight item
- Dynamically Change Row CSS Classes
- Column Picker
- Composite Editor Modal
- Context Menu
- Custom Tooltip
- Excel Copy Buffer
- Export to Excel
- Export to File (CSV/Txt)
- Grid Menu
- Grid State & Presets
- Grouping & Aggregators
- Header Menu & Header Buttons
- Header Title Grouping
- Pinning (frozen) of Columns/Rows
- Row Colspan
- Row Detail
- Row Selection
- Tree Data Grid
- SlickGrid & DataView objects
- Addons (controls/plugins)
- Backend Services