@angular-bootstrap/ngbootstrap 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular-bootstrap/ngbootstrap",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "description": "Angular UI library providing datagrid, drag-and-drop, pagination, stepper, splitter, typeahead and chips components with Bootstrap-friendly styling.",
5
5
  "author": {
6
6
  "name": "Harmeet Singh"
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { TemplateRef, AfterContentInit, OnChanges, EventEmitter, SimpleChanges, InjectionToken, QueryList, ElementRef, AfterViewInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
2
+ import { TemplateRef, AfterContentInit, OnChanges, ElementRef, EventEmitter, SimpleChanges, InjectionToken, QueryList, AfterViewInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
3
3
  import { AbstractControl, FormGroup, FormControl, ControlValueAccessor } from '@angular/forms';
4
4
  import { Observable } from 'rxjs';
5
5
 
@@ -9,6 +9,10 @@ interface ColumnDef<T = any> {
9
9
  field: Extract<keyof T, string>;
10
10
  /** human‐readable header text */
11
11
  header: string;
12
+ /** Optional tooltip/title for the header cell; defaults to header text. */
13
+ title?: string;
14
+ /** Optional tooltip/title for body cells; defaults to the cell text. */
15
+ cellTitle?: string | ((row: T) => string);
12
16
  /** enable clicking to sort */
13
17
  sortable?: boolean;
14
18
  /** enable filtering on this column */
@@ -19,6 +23,7 @@ interface ColumnDef<T = any> {
19
23
  label: string;
20
24
  value: any;
21
25
  }>;
26
+ width?: number;
22
27
  required?: boolean;
23
28
  }
24
29
 
@@ -175,8 +180,42 @@ declare class ExportButtonDirective {
175
180
  static ɵdir: i0.ɵɵDirectiveDeclaration<ExportButtonDirective, "[ngbExportButton]", never, {}, {}, never, never, true, never>;
176
181
  }
177
182
 
183
+ interface HighlightItem {
184
+ row: any;
185
+ columnKey?: any;
186
+ }
187
+
178
188
  type SortDir = 'asc' | 'desc' | '';
179
189
  type KeyOf<T> = Extract<keyof T, string>;
190
+ type NgbTableResponsive = true | false | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
191
+ interface NgbTableOptions {
192
+ stripedRows?: boolean;
193
+ stripedColumns?: boolean;
194
+ hoverRows?: boolean;
195
+ activeRows?: boolean;
196
+ bordered?: boolean;
197
+ borderless?: boolean;
198
+ small?: boolean;
199
+ groupDividers?: boolean;
200
+ align?: 'top' | 'middle' | 'bottom';
201
+ caption?: string;
202
+ captionSide?: 'top' | 'bottom';
203
+ responsive?: NgbTableResponsive;
204
+ stickyHeader?: boolean;
205
+ stickyFooter?: boolean;
206
+ stickyRows?: boolean;
207
+ }
208
+ type NgbSelectionMode = 'none' | 'single' | 'multiple';
209
+ type NgbSelectionBehavior = 'row' | 'checkbox' | 'both';
210
+ type NgbSelectionKeyMode = 'desktop' | 'mobile';
211
+ type NgbRowKey = string | ((row: any, rowIndex: number) => any);
212
+ type NgbColKey = string | ((column: any, columnIndex: number) => any);
213
+ interface NgbSelectionLabels {
214
+ selectAll?: string;
215
+ unselectAll?: string;
216
+ selectRow?: string;
217
+ unselectRow?: string;
218
+ }
180
219
  declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
181
220
  /** Column definitions to render */
182
221
  columns: ColumnDef<T>[];
@@ -194,6 +233,40 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
194
233
  addButtonAriaLabel: string | null;
195
234
  /** Visible text rendered inside the add-row button. */
196
235
  addButtonText: string;
236
+ /** Shows sticky toggle column and keeps pinned rows at the top of the list. */
237
+ stickyRows: boolean;
238
+ /** Enables sticky column header when scrolling. */
239
+ stickyHeader: boolean;
240
+ /** Enables sticky footer when scrolling. */
241
+ stickyFooter: boolean;
242
+ /** Enables scroll table body container */
243
+ scrollable: boolean;
244
+ /** Row height used to stack multiple sticky rows without overlap (px). */
245
+ stickyRowHeight: number;
246
+ /** Header height (px) used to offset sticky rows below the header. */
247
+ stickyHeaderHeight: number;
248
+ /** Footer height (px) used to offset scrollable area. */
249
+ stickyFooterHeight: number;
250
+ /** Bootstrap-like table styling options. */
251
+ tableOptions: NgbTableOptions;
252
+ /** Selection mode for rows. */
253
+ selectionMode: NgbSelectionMode;
254
+ /** Selection activation: row click, checkbox only, or both. */
255
+ selectionBehavior: NgbSelectionBehavior;
256
+ /** Keyboard modifier rules for multi-select. */
257
+ selectionKeyMode: NgbSelectionKeyMode;
258
+ /** Enable header select-all checkbox for multiple mode. */
259
+ selectAllEnabled: boolean;
260
+ /** A11y labels for selection controls. */
261
+ selectionA11yLabels: NgbSelectionLabels;
262
+ /** Disable selection for specific rows. */
263
+ selectionDisabledFn?: (row: T, index: number) => boolean;
264
+ /** Highlight items (row/cell). */
265
+ highlightedIndex: HighlightItem[];
266
+ /** Row key for highlighting. */
267
+ highlightRowKey: NgbRowKey | null;
268
+ /** Column key for highlighting. */
269
+ highlightColKey: NgbColKey | null;
197
270
  /** Accessible label for the global filter input. */
198
271
  globalFilterAriaLabel: string;
199
272
  /** Accessible label announced when expanding a row. */
@@ -217,6 +290,9 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
217
290
  dataProviderAll?: () => Observable<any[]> | Promise<any[]> | any[];
218
291
  dataProviderSelection?: () => any[];
219
292
  exportButtonDir?: ExportButtonDirective;
293
+ bodyScroller?: ElementRef<HTMLElement>;
294
+ headerScroller?: ElementRef<HTMLElement>;
295
+ colgroupSyncId: string;
220
296
  exporting: boolean;
221
297
  rowAdd: EventEmitter<{
222
298
  newRow: T;
@@ -250,6 +326,14 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
250
326
  page: number;
251
327
  pageSize: number;
252
328
  }>;
329
+ selectionChange: EventEmitter<{
330
+ selected: T[];
331
+ lastAction: {
332
+ row: T;
333
+ index: number;
334
+ selected: boolean;
335
+ } | null;
336
+ }>;
253
337
  rowDetailTpl?: NgbRowDetailTemplate<T>;
254
338
  private exporter;
255
339
  expanded: Set<number>;
@@ -263,6 +347,10 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
263
347
  active: Extract<keyof T, string> | null;
264
348
  direction: SortDir;
265
349
  };
350
+ stickyRowIds: Set<any>;
351
+ selectedRowIds: Set<any>;
352
+ private selectionAnchor;
353
+ private highlightRowMap;
266
354
  globalFilter: string;
267
355
  filters: Record<string, string>;
268
356
  page: number;
@@ -275,6 +363,7 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
275
363
  saveAttemptedNew: boolean;
276
364
  private addDraftRowId;
277
365
  private readonly defaultEditService;
366
+ private cdr;
278
367
  private norm;
279
368
  private keyOf;
280
369
  private getDefaults;
@@ -290,13 +379,22 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
290
379
  get anyFilterable(): boolean;
291
380
  get startIndex(): number;
292
381
  get endIndex(): number;
382
+ get shouldEnableScroll(): boolean;
383
+ get isHeaderSticky(): boolean;
384
+ get isFooterSticky(): boolean;
293
385
  get detailColspan(): number;
386
+ get tableClassList(): string[];
387
+ get responsiveWrapperClasses(): string[];
388
+ updateHighlightCache(): void;
294
389
  headerText(col: ColumnDef<T>): string;
390
+ headerTitle(col: ColumnDef<T>): string;
391
+ cellTitle(row: T, col: ColumnDef<T>): string;
295
392
  columnFilterAriaLabel(col: ColumnDef<T>): string;
296
393
  inputAriaLabel(col: ColumnDef<T>): string;
297
394
  ariaSortFor(field: Extract<keyof T, string>): 'ascending' | 'descending' | 'none';
298
395
  sortButtonAriaLabel(col: ColumnDef<T>): string;
299
396
  exportAriaLabel(kind: 'pdf' | 'excel'): string;
397
+ private withStickyRowsFirst;
300
398
  private dataIndexFromPaged;
301
399
  private rebuildFilterForm;
302
400
  private cellTplQ;
@@ -325,6 +423,10 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
325
423
  validateInto(col: ColumnDef<T>, targetDraft: Partial<Record<KeyOf<T>, any>> | null, targetErrors: Partial<Record<KeyOf<T>, string>>): void;
326
424
  deleteRow(i: number): void;
327
425
  trackRow: (index: number, row: T) => any;
426
+ private rowKeyValue;
427
+ private colKeyValue;
428
+ isRowHighlighted(row: T, rowIndex: number): boolean;
429
+ isCellHighlighted(row: T, rowIndex: number, column: ColumnDef<T>, colIndex: number): boolean;
328
430
  toggleSort(field: Extract<keyof T, string>): void;
329
431
  onGlobalFilterChange(): void;
330
432
  onColumnFilterChange(): void;
@@ -338,8 +440,27 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
338
440
  asBool(v: any): boolean;
339
441
  triggerExport(kind: 'pdf' | 'excel'): void;
340
442
  isResponsiveEnabled(): boolean;
443
+ isRowSticky(row: T, pagedIndex: number): boolean;
444
+ toggleStickyRow(pagedIndex: number): void;
445
+ stickyIcon(row: T, pagedIndex: number): string;
446
+ stickyTop(row: T, pagedIndex: number): number | null;
447
+ get stickyRowsEnabled(): boolean;
448
+ get stickyHeaderEnabled(): boolean;
449
+ get stickyFooterEnabled(): boolean;
450
+ isSelectionEnabled(): boolean;
451
+ isCheckboxOnly(): boolean;
452
+ isSelectionDisabled(row: T, pagedIndex: number): boolean;
453
+ isRowSelected(row: T, pagedIndex: number): boolean;
454
+ toggleSelection(pagedIndex: number, event?: Event): void;
455
+ private emitSelection;
456
+ toggleSelectAllCurrentPage(): void;
457
+ isPageAllSelected(): boolean;
458
+ isPageIndeterminate(): boolean;
459
+ selectAllLabel(): string;
460
+ rowSelectionLabel(index: number): string;
461
+ onRowSelect(ev: MouseEvent, pagedIndex: number): void;
341
462
  static ɵfac: i0.ɵɵFactoryDeclaration<Datagrid<any>, never>;
342
- static ɵcmp: i0.ɵɵComponentDeclaration<Datagrid<any>, "ngb-datagrid", never, { "columns": { "alias": "columns"; "required": false; }; "data": { "alias": "data"; "required": false; }; "enableSorting": { "alias": "enableSorting"; "required": false; }; "enableFiltering": { "alias": "enableFiltering"; "required": false; }; "enableGlobalFilter": { "alias": "enableGlobalFilter"; "required": false; }; "enablePagination": { "alias": "enablePagination"; "required": false; }; "enableEdit": { "alias": "enableEdit"; "required": false; }; "enableDelete": { "alias": "enableDelete"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; "enableAdd": { "alias": "enableAdd"; "required": false; }; "addButtonAriaLabel": { "alias": "addButtonAriaLabel"; "required": false; }; "addButtonText": { "alias": "addButtonText"; "required": false; }; "globalFilterAriaLabel": { "alias": "globalFilterAriaLabel"; "required": false; }; "expandRowAriaLabel": { "alias": "expandRowAriaLabel"; "required": false; }; "collapseRowAriaLabel": { "alias": "collapseRowAriaLabel"; "required": false; }; "exportPdfAriaLabel": { "alias": "exportPdfAriaLabel"; "required": false; }; "exportExcelAriaLabel": { "alias": "exportExcelAriaLabel"; "required": false; }; "newRowDefaults": { "alias": "newRowDefaults"; "required": false; }; "strictEmail": { "alias": "strictEmail"; "required": false; }; "editOnRowClick": { "alias": "editOnRowClick"; "required": false; }; "singleExpand": { "alias": "singleExpand"; "required": false; }; "exportOptions": { "alias": "exportOptions"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; "editService": { "alias": "editService"; "required": false; }; "dataProviderAll": { "alias": "dataProviderAll"; "required": false; }; "dataProviderSelection": { "alias": "dataProviderSelection"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; }, { "rowAdd": "rowAdd"; "rowEdit": "rowEdit"; "rowSave": "rowSave"; "rowCancel": "rowCancel"; "rowDelete": "rowDelete"; "sortChange": "sortChange"; "filtersChange": "filtersChange"; "pageChange": "pageChange"; }, ["exportButtonDir", "rowDetailTpl", "cellTplQ", "editTplQ", "filterTplQ", "globalTplQ"], never, true, never>;
463
+ static ɵcmp: i0.ɵɵComponentDeclaration<Datagrid<any>, "ngb-datagrid", never, { "columns": { "alias": "columns"; "required": false; }; "data": { "alias": "data"; "required": false; }; "enableSorting": { "alias": "enableSorting"; "required": false; }; "enableFiltering": { "alias": "enableFiltering"; "required": false; }; "enableGlobalFilter": { "alias": "enableGlobalFilter"; "required": false; }; "enablePagination": { "alias": "enablePagination"; "required": false; }; "enableEdit": { "alias": "enableEdit"; "required": false; }; "enableDelete": { "alias": "enableDelete"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; "enableAdd": { "alias": "enableAdd"; "required": false; }; "addButtonAriaLabel": { "alias": "addButtonAriaLabel"; "required": false; }; "addButtonText": { "alias": "addButtonText"; "required": false; }; "stickyRows": { "alias": "stickyRows"; "required": false; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; }; "stickyFooter": { "alias": "stickyFooter"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "stickyRowHeight": { "alias": "stickyRowHeight"; "required": false; }; "stickyHeaderHeight": { "alias": "stickyHeaderHeight"; "required": false; }; "stickyFooterHeight": { "alias": "stickyFooterHeight"; "required": false; }; "tableOptions": { "alias": "tableOptions"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; }; "selectionKeyMode": { "alias": "selectionKeyMode"; "required": false; }; "selectAllEnabled": { "alias": "selectAllEnabled"; "required": false; }; "selectionA11yLabels": { "alias": "selectionA11yLabels"; "required": false; }; "selectionDisabledFn": { "alias": "selectionDisabledFn"; "required": false; }; "highlightedIndex": { "alias": "highlightedIndex"; "required": false; }; "highlightRowKey": { "alias": "highlightRowKey"; "required": false; }; "highlightColKey": { "alias": "highlightColKey"; "required": false; }; "globalFilterAriaLabel": { "alias": "globalFilterAriaLabel"; "required": false; }; "expandRowAriaLabel": { "alias": "expandRowAriaLabel"; "required": false; }; "collapseRowAriaLabel": { "alias": "collapseRowAriaLabel"; "required": false; }; "exportPdfAriaLabel": { "alias": "exportPdfAriaLabel"; "required": false; }; "exportExcelAriaLabel": { "alias": "exportExcelAriaLabel"; "required": false; }; "newRowDefaults": { "alias": "newRowDefaults"; "required": false; }; "strictEmail": { "alias": "strictEmail"; "required": false; }; "editOnRowClick": { "alias": "editOnRowClick"; "required": false; }; "singleExpand": { "alias": "singleExpand"; "required": false; }; "exportOptions": { "alias": "exportOptions"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; "editService": { "alias": "editService"; "required": false; }; "dataProviderAll": { "alias": "dataProviderAll"; "required": false; }; "dataProviderSelection": { "alias": "dataProviderSelection"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; }, { "rowAdd": "rowAdd"; "rowEdit": "rowEdit"; "rowSave": "rowSave"; "rowCancel": "rowCancel"; "rowDelete": "rowDelete"; "sortChange": "sortChange"; "filtersChange": "filtersChange"; "pageChange": "pageChange"; "selectionChange": "selectionChange"; }, ["exportButtonDir", "rowDetailTpl", "cellTplQ", "editTplQ", "filterTplQ", "globalTplQ"], never, true, never>;
343
464
  }
344
465
 
345
466
  interface PdfExportPayload {
@@ -888,4 +1009,4 @@ declare class NgbChipsComponent {
888
1009
  }
889
1010
 
890
1011
  export { DATAGRID_TEMPLATE_DIRECTIVES, DND_I18N, DND_LIVE_ANNOUNCE, Datagrid, ExcelExportAdapter, ExportButtonDirective, JsPdfAdapter, NgbCellTemplate, NgbChipsComponent, NgbDatagridDefaultEditService, NgbDndItemDirective, NgbDndListDirective, NgbDndState, NgbEditorTemplate, NgbExportService, NgbFilterTemplate, NgbGlobalFilterTemplate, NgbLiveAnnouncer, NgbPaginationComponent, NgbRowDetailTemplate, NgbSplitterComponent, NgbSplitterPaneComponent, NgbStepLabelDirective, NgbStepperComponent, NgbTreeComponent, NgbTypeaheadComponent, PdfExportAdapter, XlsxAdapter, defaultDndI18n };
891
- export type { CellCtx, ColumnDef, ColumnType, DndCanDropFn, DndCanDropPayload, DndI18n, DndSession, EditCtx, ExcelExportPayload, ExportButtonContext, FilterCtx, GlobalFilterCtx, NgbChip, NgbDataGridExportOptions, NgbDataGridExportPages, NgbDataGridExportType, NgbDataGridResponsiveOptions, NgbDataGridTheme, NgbDatagridEditService, NgbDatagridTrackByFn, NgbDndDropEvent, NgbSplitterOrientation, NgbSplitterPaneSize, NgbStepperContentPosition, NgbStepperLabelPosition, NgbStepperOrientation, NgbStepperSelectionChangeEvent, NgbStepperState, NgbStepperStep, NgbStepperTheme, NgbTreeI18n, NgbTreeNode, NgbTreeType, NgbTypeaheadI18n, NgbTypeaheadItem, PdfExportPayload };
1012
+ export type { CellCtx, ColumnDef, ColumnType, DndCanDropFn, DndCanDropPayload, DndI18n, DndSession, EditCtx, ExcelExportPayload, ExportButtonContext, FilterCtx, GlobalFilterCtx, NgbChip, NgbColKey, NgbDataGridExportOptions, NgbDataGridExportPages, NgbDataGridExportType, NgbDataGridResponsiveOptions, NgbDataGridTheme, NgbDatagridEditService, NgbDatagridTrackByFn, NgbDndDropEvent, NgbRowKey, NgbSelectionBehavior, NgbSelectionKeyMode, NgbSelectionLabels, NgbSelectionMode, NgbSplitterOrientation, NgbSplitterPaneSize, NgbStepperContentPosition, NgbStepperLabelPosition, NgbStepperOrientation, NgbStepperSelectionChangeEvent, NgbStepperState, NgbStepperStep, NgbStepperTheme, NgbTableOptions, NgbTableResponsive, NgbTreeI18n, NgbTreeNode, NgbTreeType, NgbTypeaheadI18n, NgbTypeaheadItem, PdfExportPayload };