Shrink ag-grid table if enough space

Discussão em 'Angular' iniciado por Jaime02, Fevereiro 17, 2025.

  1. Jaime02

    Jaime02 Guest

    I have not found any example or reference about how to shrink an ag-grid table if it already has enough space to fit all columns. The screenshot shows a table spanning the whole window space available, but I would like to center it instead adding auto horizontal margin or vertical align.

    [​IMG]

    I am using Angular 19 and ag-grid-angular@33.1.0.

    This is my base code:

    table.component.ts

    <ag-grid-angular
    domLayout="autoHeight"
    [rowData]="rowData"
    [columnDefs]="colDefs"
    [gridOptions]="gridOptions"
    (gridReady)="onGridReady($event)"
    />


    table.component.ts

    import { Component, ElementRef, Input, ViewChild } from "@angular/core";
    import { PartService } from "src/app/services/part.service";
    import { Part } from "src/app/models/part.model";
    import { CommonModule, DatePipe } from "@angular/common";
    import { ImgEditComponent } from "src/app/img/edit/edit.component";
    import { ImgDeleteComponent } from "src/app/img/delete/delete.component";
    import { RouterLink } from "@angular/router";
    import { AgGridAngular } from "ag-grid-angular"; // Angular Data Grid Component
    import type { ColDef, GridReadyEvent, GridOptions } from "ag-grid-community";

    @Component({
    standalone: true,
    selector: "part-table",
    imports: [CommonModule, AgGridAngular],
    templateUrl: "./part-table.component.html",
    providers: [DatePipe],
    host: { class: 'contents' },
    })
    export class PartTableComponent {
    private partService: PartService;
    private datePipe: DatePipe;

    parts: Part[] = [];
    @Input() editable: boolean = false;

    @ViewChild("partTable", { static: false }) table!: ElementRef;

    rowData: any[] = []; // Array of row data
    colDefs: ColDef[] = [
    { field: "reference", headerName: "Reference", width: 140, maxWidth: 180 },
    { field: "name", headerName: "Name", minWidth: 150 },
    { field: "coating", headerName: "Coating", width: 100, maxWidth: 120 },
    { field: "comment", headerName: "Comment",minWidth: 150 },
    { field: "client_id", headerName: "Client ID", width: 150, maxWidth: 180 },
    { field: "material_id", headerName: "Material ID", minWidth: 100 },
    {
    field: "created_at",
    headerName: "Created At",
    valueFormatter: (params) =>
    this.datePipe.transform(params.value, "MMM d, y, h:mm a") ?? "",
    width: 180,
    maxWidth: 200,
    },
    ];

    gridOptions: GridOptions = {
    columnDefs: this.colDefs,
    rowData: this.rowData,
    domLayout: "autoHeight",
    defaultColDef: {
    resizable: true,
    sortable: true,
    },
    };

    constructor(partService: PartService, datePipe: DatePipe) {
    this.partService = partService;
    this.datePipe = datePipe;
    }

    onGridReady(params: GridReadyEvent): void {
    this.partService.getParts().subscribe((data: Part[] | null) => {
    if (data) {
    this.parts = data;
    this.rowData = this.parts.map((part: Part) => ({
    reference: part.reference ?? "",
    name: part.name ?? "",
    coating: part.coating ?? "None",
    comment: part.comment ?? "",
    client_id: part.client_id ?? "",
    material_id: part.material_id ?? "None",
    created_at: part.created_at ?? "",
    }));
    }
    });
    }
    }

    Continue reading...

Compartilhe esta Página