Skip to content

Column distribution fails when updating from ng18 to 19. #140

@sommmen

Description

@sommmen

I am running into an issue angular ng18 to 19.
Using package "@siemens/ngx-datatable": "^22.4.1",.

Not all tables are affected, this one works as-is:

Image

<ngx-datatable #table class="material" [rows]="collectionResponseModel.items" [columnMode]="'force'" [headerHeight]="50"
  [footerHeight]="50" [externalPaging]="true" [count]="collectionResponseModel.totalCount" [offset]="tableInfo.offset"
  [limit]="tableInfo.limit" (sort)="onSort($event)" [loadingIndicator]="isLoading" (page)='setPage($event)'>

  <ngx-datatable-column name="" prop="" [flexGrow]="0.75">
    <ng-template let-row="row" let-value="value" let-expanded="expanded" ngx-datatable-cell-template>
      <fa-icon class="me-1" style="cursor:pointer;" [icon]="expanded ? iconCollapse : iconExpand"
        (click)="toggleExpandRow(row, expanded)"></fa-icon>
    </ng-template>
  </ngx-datatable-column>

  <ngx-datatable-column name="{{ 'coupon.code' | translate }}" prop="discountCode" [flexGrow]="1">
    <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
      {{value}}
    </ng-template>
  </ngx-datatable-column>

  <ngx-datatable-column name="{{ 'general.amount' | translate }}" prop="total" [flexGrow]="1">
    <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
      {{value}}
    </ng-template>
  </ngx-datatable-column>

  <ngx-datatable-column name="{{ 'general.domain' | translate }}" prop="domain.name" [flexGrow]="1">
    <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
      {{value}}
    </ng-template>
  </ngx-datatable-column>

  <ngx-datatable-column name="{{ 'general.totalExclVat' | translate }}" prop="totalExclVat" [flexGrow]="1">
    <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
      {{ value | currency: 'EUR' }}
    </ng-template>
  </ngx-datatable-column>

  <ngx-datatable-column name="{{ 'Vroegste besteldatum' }}" prop="earliestOrderDateTime" [flexGrow]="1" [minWidth]="100">
    <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
        <span title="{{value}}" ngbTooltip="{{value | appDate: 'HH:mm'}}">{{value | appDate}}</span>
    </ng-template>
  </ngx-datatable-column>

  <ngx-datatable-column name="" prop="externalCouponId" [flexGrow]="1" [maxWidth]="80" [sortable]="false">
    <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
      <a href="https://{{row.domain.name}}/wp-admin/post.php?post={{value}}&action=edit" class="btn btn-sm"
        target="_blank" title="View in WordPress">
        <fa-icon [icon]="iconEye"></fa-icon>
      </a>
    </ng-template>
  </ngx-datatable-column>

  <ngx-datatable-row-detail>
    <ng-template let-row="row" let-expanded="expanded" ngx-datatable-row-detail-template>
      <app-backoffice-orders-table
          [showFilters]="false"
          [collectionRequestModel]="row.collectionHttpRequestOptions"></app-backoffice-orders-table>
    </ng-template>
  </ngx-datatable-row-detail>

</ngx-datatable>

Even more odd is the users table. This starts off by working normally, then i paginate, 1, 2, 3 and then back to 2. Now suddenly it becomes messed up:

Image

It may have something to do with overflow looking at this table;

Image

There is #137 which points to the 'force' mode as the culprit but this seems to happen with or without using 'force'.
This one uses 'flex':

Image

<ngx-datatable #table class="material" [rows]="collectionResponseModel.items" [columnMode]="'flex'"
            [headerHeight]="50" [footerHeight]="50"  [externalPaging]="true"
            [count]="collectionResponseModel.totalCount" [offset]="tableInfo.offset"
            [limit]="tableInfo.limit" [loadingIndicator]="isLoading" (page)='setPage($event)'
            (sort)='onSort($event, true)' [sorts]="sorts" [summaryRow]="enableSummary && collectionResponseModel.items.length > 1"
            [summaryPosition]="summaryPosition" [scrollbarH]="true">

            <ngx-datatable-column name="" prop="" [flexGrow]="0.5" [minWidth]="50" [sortable]="false"
            [summaryTemplate]="detailSumTemplate">
                <ng-template let-row="row" let-value="value" let-expanded="expanded"
                    ngx-datatable-cell-template>
                    <fa-icon class="me-1" style="cursor:pointer;" [class.datatable-icon-right]="!expanded"
                        [class.datatable-icon-down]="expanded"
                        (click)="toggleExpandRow(row, expanded)"></fa-icon>
                </ng-template>

                <ng-template #detailSumTemplate>
                </ng-template>
            </ngx-datatable-column>

            <ngx-datatable-column name="{{ 'Order' }}" prop="number" [flexGrow]="1" [minWidth]="100">
                <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>

                    <span [title]="type" *ngIf="row.type as type" class="me-1">
                        @if(type === 1) {
                            <b>?</b>
                        } 
                        @else if(type === 2) {
                            <fa-icon [icon]="iconSorry" [ngbTooltip]="'Sorry kaart'"></fa-icon>
                        }
                        @else if(type === 3) {
                            <fa-icon [icon]="iconSample" [ngbTooltip]="'Sample Kaart'"></fa-icon>
                        }
                        @else if(type === 4 || type === 5) {
                            <fa-icon [icon]="iconManual" [ngbTooltip]="'Handmatige kaart'"></fa-icon>
                        }
                        @else {
                            {{type}}
                        }
                    </span>

                    <span [title]="value">{{value}}</span>
                </ng-template>
            </ngx-datatable-column>

            <ngx-datatable-column name="{{ 'Locatie' }}" prop="city" [flexGrow]="1" [minWidth]="125">
                <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
                    <span [title]="row.country">{{ row.country | appFlag }} </span><span [title]="value">{{value}}</span>
                </ng-template>
            </ngx-datatable-column>

            <ngx-datatable-column name="{{ 'Triggerdatum' }}" prop="triggerDateTime" [flexGrow]="1" [minWidth]="100">
                <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
                    <span title="{{value}}" ngbTooltip="{{value | appDate: 'HH:mm'}}">{{value | appDate}}</span>
                </ng-template>
            </ngx-datatable-column>

            <ngx-datatable-column name="{{ 'Besteldatum' }}" prop="orderDateTime" [flexGrow]="1" [minWidth]="100">
                <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
                    <span title="{{value}}" ngbTooltip="{{value | appDate: 'HH:mm'}}">{{value | appDate}}</span>
                </ng-template>
            </ngx-datatable-column>

            <ngx-datatable-column name="{{ 'Werknemer' }}" prop="employeeName" [flexGrow]="1" [minWidth]="100">
                <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
                    <span [title]="value">{{value}}</span>
                </ng-template>
            </ngx-datatable-column>

            <ngx-datatable-column name="{{ 'Kortingscode' }}" prop="couponCode" [flexGrow]="1" [minWidth]="125">
                <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
                    <span [title]="value">{{value}}</span>
                </ng-template>
            </ngx-datatable-column>
                      
            <!-- Row Detail Template -->
            <ngx-datatable-row-detail [rowHeight]="100" #myDetailRow>
                <ng-template let-row="row" let-expanded="expanded" ngx-datatable-row-detail-template>

                    <!-- Redacted -->
                </ng-template>
            </ngx-datatable-row-detail>

        </ngx-datatable>

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions