How do I center a button in an angular-ui-grid cell?
Asked Answered
A

2

8

I define a column as follows:

{
  name: 'button', 
  displayName: '', 
  cellClass: 'ui-grid-vcenter',
  enableColumnMenu: false,
  enableFiltering: false,
  enableSorting: false,
  cellTemplate: '<div><button ng-click="grid.appScope.rowButtonHandler(row.entity.id)">clicky</button></div>'
}

Resulting in:

<div class="ui-grid-cell ng-scope ui-grid-coluiGrid-010 ui-grid-vcenter" ui-grid-cell="" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name">
    <div class="ng-scope">
        <button ng-click="grid.appScope.rowButtonHandler(row.entity.id)"></button>
    </div>
</div>

I want to center this button vertically and horizontally. Horizontally, works, but vertically, I can't seem to get the CSS right. Here's my generic shot at it:

.ui-grid-vcenter div {
  text-align: center;
  vertical-align: middle !important;
  background-color: yellow !important;
}

How does one center content in a cell in this kind of AngularJS grid?

Amero answered 2/6, 2015 at 21:45 Comment(0)
B
7

Use relative position:

.ui-grid-vcenter div {
  background-color: yellow !important;
  text-align:center;
  position: relative;
  top: 50%;
   -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);
}
Bisitun answered 2/6, 2015 at 23:5 Comment(0)
B
1

Using css flex would make it much more easier (https://css-tricks.com/snippets/css/a-guide-to-flexbox/):

Supposed that's your cellTemplate (myCellTemplateForEditAndDelBtns.html):

<div id="editBtns" class="flexParent">
<span  class="flexChildren">
    <button><i class="fa fa-pencil-square-o "></i></button>
    <button><i class="fa fa-times gridDelBtn"></i></button>
</span>
</div>

You add it in columDefs to your cell:

$scope.myGrid.columnDefs = [
    ...
    { name: 'edit',
        enableCellEdit: false,
        enableFiltering: false,
        enableSorting: false,
        cellTemplate: 'location-to/myCellTemplateForEditAndDelBtns.html',
        width: '5%'
    }
];

And finally use CSS Flex:

#editBtns {
    height: 100%;
}

.flexParent {
    display: flex;
    justify-content: center;
}

.flexChildren {
    align-self: center;
}
Brenza answered 18/12, 2015 at 19:18 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.