Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Issues Customizing the Ag-Grid Themes

How do I go about customizing the Ag-Grid themes (eg. ag-theme-material.css) in an existing Angular App?

The documentation they have provided is lacking, as it doesn't explain how to perform these changes/configurations.

Any help would greatly be appreciated.

like image 950
Andrew Lobban Avatar asked Mar 08 '18 22:03

Andrew Lobban


People also ask

How do you change the theme on Ag grid?

Add ag-grid-overrides. scss file and put the saas variable you want to modify for the ag-grid theme. Full list of sass variables available can be found in this link - https://github.com/ag-grid/ag-grid/tree/master/src/styles. Import ag-grid-overrides.

How do you customize AG grid?

Just press F2 or double-click on a cell and ag-Grid activates the edit mode. You don't need to provide a custom editor for simple string editing. But when we need to implement a custom logic, like restricting input to numbers, we need to create our cell editor.

How do you override CSS in Ag grid?

Use the ag-param() function to override CSS styles using parameters from ag-Grid.

How do you change the background color on Ag grid?

You can't change the background color of an entire row in one command. You need to do it through the cellStyle callback setup in the columnDefs . This callback will be called per each cell in the row. You need to change the color of the row by changing the color of all the cells.


2 Answers

In my case, it is used "ag-grid-enterprise": "^23.1.0" and "ag-grid-community": "^23.1.0" and for creating a custom theme for angular2+ application you should import to global style file(scss is in use for my case) several mixins file from ag-grid-community package and it will look like this:

@import '~ag-grid-community/src/styles/ag-grid';
@import '~ag-grid-community/src/styles/ag-theme-base/sass/ag-theme-base';

then you should include base theme with parameters set that you can override for this default theme:

.ag-theme-base {//should have specific name, since sizes doesn't work with custom name
  @include ag-theme-base(
    (
      foreground-color: black,
      background-color: yellow,
    )// this is parameters set object where you can ovveride ag-grid properties 
  );
}

List of the ag-grid parameters you can find link

Also, you can extract this parameter and apply for other elements(not sure that it is a useful option but ag-grid allows this)

.ag-header-cell {
  background-color: ag-param(foreground-color);
  color: ag-param(background-color);
}

Link to documentation about ag-param function link. Link to documentation regarding theme customization link.

Example of usage in angular:

<ag-grid-angular
  style="width: 100%; height: 400px;"
  class="ag-theme-base"
  ...
>
</ag-grid-angular>
like image 166
Anton Anikeev Avatar answered Sep 28 '22 02:09

Anton Anikeev


Add ag-grid-overrides.scss file and put the saas variable you want to modify for the ag-grid theme. Full list of sass variables available can be found in this link - https://github.com/ag-grid/ag-grid/tree/master/src/styles. Import ag-grid-overrides.scss in your component.ts file. You can still have your own .css file for each component as shown below in app.component.css file.

app.component.ts

import '../ag-grid-overrides.scss';

app.component.html

<ag-grid-angular class="data-grid ag-theme-fresh" [gridOptions]="gridOptions">
</ag-grid-angular>

ag-grid-overrides.scss

// Customize the look and feel of the grid with Sass variables
// Up-to-date list of variables is available in the source code: https://github.com/ag-grid/ag-grid/blob/latest/src/styles/theme-fresh.scss 
$icons-path: "~ag-grid/src/styles/icons/";

// changes the border color
$border-color: #FF0000;

// Changes the font size
$font-size: 14px;

// Changes the font family
//$font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;

// Reverts the cell horizontal padding change between ag-fresh and ag-theme-fresh
//$cell-horizontal-padding: 2px;

// changes the icon color
// $icon-color: red;
//$primary-color: green;

@import '~ag-grid/src/styles/ag-grid.scss';
@import '~ag-grid/src/styles/ag-theme-fresh.scss';

app.component.css (not required as this is a custom class on ag-grid-angular)

.data-grid {
  width: 500px; height: 300px; margin-bottom: 1rem;
}

angular-cli.json

"styles": [
        "../node_modules/ag-grid/dist/styles/ag-grid.css",
        "../node_modules/ag-grid/dist/styles/ag-theme-fresh.css",
        "styles.scss",
        "ag-grid-overrides.scss"
      ]
like image 26
koolhuman Avatar answered Sep 28 '22 02:09

koolhuman