Ngx-datatable: Dropdown element is hidden by next row

Created on 4 Jul 2017  路  13Comments  路  Source: swimlane/ngx-datatable

I'm submitting a ... (check one with "x")

[x] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here, post on Stackoverflow or Gitter

Current behavior
If you add a dropdown element inside row and expand it, it will be covered by the next row. I'm using scrollV in my table.

Expected behavior
Dropdown hovers next row and is visible that way.

  • Table version:
    9.3.0

  • Angular version: 2.0.x
    4.0.0

Most helpful comment

Try adding this css style

.datatable-body-cell {
overflow-x: visible !important;
}

It worked for me with a bootstrap dropdown inside a cell

All 13 comments

screenshot from 2017-07-04 17-14-26

Having the same issue.

@amcdnl Please suggest any solution can be done using CSS or some tricks.

@bheda91 I've fixed it by reverting all rows' z-indexes, if you're interested. But that's a terrible solution.

let rows = document.getElementsByClassName('datatable-row-wrapper');
      for (let i = 0; i < rows.length; i++) {
        let row = <HTMLElement>rows[i];
        row.style.zIndex = '' + (1000 - i);
      }

Thanks @Zerych, your solution will work. But terrible one. :(

Can be do some better solution like, suggested in this https://github.com/angular-ui/ui-select/issues/308

@Zerych z-index not working

@Zerych @bheda91 Will setting the Z-index of currently selected row to higher value work?
.datatable-row-wrapper:hover { z-index: 12; // higher than other rows }

Try adding this css style

.datatable-body-cell {
overflow-x: visible !important;
}

It worked for me with a bootstrap dropdown inside a cell

To modify css z-index and overflow properties won't work, because this issue is caused by the cascaded DOM order. The correct solution is to modify the source HTML template, DOM structure.

I found this solution (may help somebody):
1) use @ng-select/ng-select
2) and add attribute: appendTo="body", example:

    <ng-select [items]="simpleItems"
               appendTo="body"
               [(ngModel)]="selectedSimpleItem">
    </ng-select>

No need any other z-index configurations.

@DmitriyIvanko Yes you're right, the plugin helped to append the selectable outside the parent div, programmatically.

https://valor-software.com/ngx-bootstrap/#/dropdowns#container

solved problem of in row dropdown for me

if you don't need virtual scroll, disable it, and problem will be fixed

For me it worked:

.datatable-row-wrapper {
  z-index: 1; // Set an smaller value for all rows

  &:hover {
    z-index: 2; // increase the value when hovering
  }
}

or if you are using ngx-bootstrap dropdown you can append the dropdown to body by adding container="body".

<div class="btn-group" dropdown container="body">

Was this page helpful?
0 / 5 - 0 ratings

Related issues

lautarobock picture lautarobock  路  3Comments

rotemx picture rotemx  路  3Comments

devendraYebhi picture devendraYebhi  路  3Comments

alceucardoso picture alceucardoso  路  3Comments

paritosh64ce picture paritosh64ce  路  3Comments