@hhangular/row-actions
v2.0.5
Published
Angular Material table row actions component with collapsible toolbar
Maintainers
Readme
@hhangular/row-actions
An Angular component that displays a collapsible action toolbar when hovering over a mat-table row. The buttons appear with a smooth animation from the edge of the cell.
Features
- Collapsible Toolbar - Action buttons appear on row hover with smooth animation
- Flexible Positioning - Toolbar can appear from left or right depending on placement
- Angular Material Integration - Uses
mat-toolbarwith theme support (primary, accent, warn) - Standalone Component - Easy to import in any Angular 17+ application
- Lightweight - No additional dependencies beyond Angular Material
Installation
npm install @hhangular/row-actionsPeer Dependencies
| Package | Version | |---------|---------| | @angular/common | >= 17.0.0 | | @angular/core | >= 17.0.0 | | @angular/cdk | >= 17.0.0 | | @angular/material | >= 17.0.0 | | @angular/animations | >= 17.0.0 |
Usage
Import the standalone component in your component:
import { RowActionComponent } from '@hhangular/row-actions';
@Component({
selector: 'app-my-component',
standalone: true,
imports: [RowActionComponent],
template: `...`
})
export class MyComponent {}Add the <row-actions> component inside a mat-cell:
<mat-table [dataSource]="dataSource">
<!-- Other columns... -->
<ng-container matColumnDef="actions">
<mat-header-cell *matHeaderCellDef>Actions</mat-header-cell>
<mat-cell *matCellDef="let element">
{{ element.lastUpdated }}
<row-actions>
<button mat-icon-button (click)="edit(element)">
<mat-icon>edit</mat-icon>
</button>
<button mat-icon-button (click)="delete(element)">
<mat-icon>delete</mat-icon>
</button>
</row-actions>
</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
</mat-table>API
Inputs
| Input | Type | Default | Description |
|-------|------|---------|-------------|
| color | 'primary' \| 'accent' \| 'warn' | 'primary' | Toolbar color (Angular Material theme) |
| disabled | boolean | false | Disables the component (hides it completely) |
| animationDisabled | boolean | false | Disables the expansion animation (set at initialization only) |
Position Behavior
The toolbar automatically detects its position within the cell and animates accordingly:
- First child in cell → Toolbar appears from the left
- Last child in cell → Toolbar appears from the right
You can place <row-actions> in any cell of your table, not just a dedicated "actions" column. This allows you to add contextual actions to specific data columns.
Examples
Basic Usage (Right-aligned)
<mat-cell *matCellDef="let element">
{{ element.name }}
<row-actions>
<button mat-icon-button><mat-icon>edit</mat-icon></button>
<button mat-icon-button><mat-icon>delete</mat-icon></button>
</row-actions>
</mat-cell>Left-aligned Toolbar
<mat-cell *matCellDef="let element">
<row-actions>
<button mat-icon-button><mat-icon>edit</mat-icon></button>
<button mat-icon-button><mat-icon>delete</mat-icon></button>
</row-actions>
{{ element.name }}
</mat-cell>With Custom Color
<row-actions color="warn">
<button mat-icon-button><mat-icon>delete</mat-icon></button>
</row-actions>Conditionally Disabled
<row-actions [disabled]="!hasPermission">
<button mat-icon-button><mat-icon>edit</mat-icon></button>
</row-actions>License
MIT
