| `actionsText` | Column name of the action column. | `string` |
| `data` | Items shown in your table. | `Array<any>` |
| `list` | Instance of `ListService`. | `ListService` |
| `actionsColumnWidth`| Width of your action column. | `number` |
| `actionsTemplate` | Template of the action (for example, an `ng-template`). | `TemplateRef<any>` |
| `recordsTotal` | Total count of records. | `number` |
| `tableActivate` | Output fired when a cell or row is focused via keyboard or mouse click. | `EventEmitter` |
### Multiple Selection
The extensible table supports both single-row and multi-row selection. Use the `selectable` input to enable selection, and `selectionType` to control the selection mode.
````ts
<abp-extensible-table
[data]="items"
[recordsTotal]="totalCount"
[list]="list"
[selectable]="true"
[selectionType]="'multiClick'"
[selected]="selectedRows"
(selectionChange)="onSelectionChange($event)"
/>
````
When `selectionType` is `'single'`, each row displays a **radio button** and the header does not show a "select all" checkbox. For all other selection types (e.g. `'multiClick'`, `'checkbox'`), each row shows a **checkbox** and the header includes a "select all" checkbox.
| `selectionType` | Controls the selection mode. Accepts `SelectionType` values such as `'single'`, `'multi'`, `'multiClick'`, `'checkbox'`, or `'cell'`. | `SelectionType | string`| `'multiClick'` |
| `selected` | The currently selected rows. | `any[]` | `[]` |
| `selectionChange` | Output fired when the selection changes. | `EventEmitter<any[]>` | - |
### Infinite Scroll
The extensible table supports infinite scrolling as an alternative to pagination. When enabled, the table emits a `loadMore` event as the user scrolls near the bottom, allowing you to load additional data on demand. Pagination is hidden while infinite scroll is active.
````ts
<abp-extensible-table
[data]="items"
[recordsTotal]="totalCount"
[list]="list"
[infiniteScroll]="true"
[isLoading]="isLoading"
[tableHeight]="500"
[scrollThreshold]="10"
(loadMore)="onLoadMore()"
/>
````
In your component, append newly fetched data to the existing `items` array when `loadMore` fires:
| `isLoading` | Indicates that more data is being fetched. Prevents duplicate `loadMore` events and shows a loading indicator. | `boolean` | `false` |
| `tableHeight` | Fixed height of the table in pixels when `infiniteScroll` is enabled. | `number` | - |
| `scrollThreshold` | Distance from the bottom (in pixels) at which `loadMore` is triggered. | `number` | `10` |
| `loadMore` | Output fired when the user scrolls near the bottom of the table (only when `infiniteScroll` is `true` and `isLoading` is `false`). | `EventEmitter<void>` | - |