@angular-bootstrap/ngbootstrap 0.0.11 → 0.0.12

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.12",
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, AfterViewInit, OnChanges, ElementRef, EventEmitter, SimpleChanges, InjectionToken, QueryList, OnDestroy, ChangeDetectorRef } from '@angular/core';
3
3
  import { AbstractControl, FormGroup, FormControl, ControlValueAccessor } from '@angular/forms';
4
4
  import { Observable } from 'rxjs';
5
5
 
@@ -175,9 +175,43 @@ declare class ExportButtonDirective {
175
175
  static ɵdir: i0.ɵɵDirectiveDeclaration<ExportButtonDirective, "[ngbExportButton]", never, {}, {}, never, never, true, never>;
176
176
  }
177
177
 
178
+ interface HighlightItem {
179
+ row: any;
180
+ columnKey?: any;
181
+ }
182
+
178
183
  type SortDir = 'asc' | 'desc' | '';
179
184
  type KeyOf<T> = Extract<keyof T, string>;
180
- declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
185
+ type NgbTableResponsive = true | false | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
186
+ interface NgbTableOptions {
187
+ stripedRows?: boolean;
188
+ stripedColumns?: boolean;
189
+ hoverRows?: boolean;
190
+ activeRows?: boolean;
191
+ bordered?: boolean;
192
+ borderless?: boolean;
193
+ small?: boolean;
194
+ groupDividers?: boolean;
195
+ align?: 'top' | 'middle' | 'bottom';
196
+ caption?: string;
197
+ captionSide?: 'top' | 'bottom';
198
+ responsive?: NgbTableResponsive;
199
+ stickyHeader?: boolean;
200
+ stickyFooter?: boolean;
201
+ stickyRows?: boolean;
202
+ }
203
+ type NgbSelectionMode = 'none' | 'single' | 'multiple';
204
+ type NgbSelectionBehavior = 'row' | 'checkbox' | 'both';
205
+ type NgbSelectionKeyMode = 'desktop' | 'mobile';
206
+ type NgbRowKey = string | ((row: any, rowIndex: number) => any);
207
+ type NgbColKey = string | ((column: any, columnIndex: number) => any);
208
+ interface NgbSelectionLabels {
209
+ selectAll?: string;
210
+ unselectAll?: string;
211
+ selectRow?: string;
212
+ unselectRow?: string;
213
+ }
214
+ declare class Datagrid<T = any> implements AfterContentInit, AfterViewInit, OnChanges {
181
215
  /** Column definitions to render */
182
216
  columns: ColumnDef<T>[];
183
217
  /** Row data to display */
@@ -194,6 +228,41 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
194
228
  addButtonAriaLabel: string | null;
195
229
  /** Visible text rendered inside the add-row button. */
196
230
  addButtonText: string;
231
+ /** Shows sticky toggle column and keeps pinned rows at the top of the list. */
232
+ stickyRows: boolean;
233
+ /** Enables sticky column header when scrolling. */
234
+ stickyHeader: boolean;
235
+ /** Enables sticky footer when scrolling. */
236
+ stickyFooter: boolean;
237
+ /** Enables scroll container (used when pagination is off). */
238
+ scrollable: boolean;
239
+ /** Row height used to stack multiple sticky rows without overlap (px). */
240
+ stickyRowHeight: number;
241
+ /** Header height (px) used to offset sticky rows below the header. */
242
+ stickyHeaderHeight: number;
243
+ /** Footer height (px) used to offset scrollable area. */
244
+ stickyFooterHeight: number;
245
+ /** Bootstrap-like table styling options. */
246
+ tableOptions: NgbTableOptions;
247
+ /** Selection mode for rows. */
248
+ selectionMode: NgbSelectionMode;
249
+ /** Selection activation: row click, checkbox only, or both. */
250
+ selectionBehavior: NgbSelectionBehavior;
251
+ /** Keyboard modifier rules for multi-select. */
252
+ selectionKeyMode: NgbSelectionKeyMode;
253
+ /** Enable header select-all checkbox for multiple mode. */
254
+ selectAllEnabled: boolean;
255
+ /** A11y labels for selection controls. */
256
+ selectionA11yLabels: NgbSelectionLabels;
257
+ /** Disable selection for specific rows. */
258
+ selectionDisabledFn?: (row: T, index: number) => boolean;
259
+ /** Highlight items (row/cell). */
260
+ highlightedIndex: HighlightItem[];
261
+ /** Row key for highlighting. */
262
+ highlightRowKey: NgbRowKey | null;
263
+ /** Column key for highlighting. */
264
+ highlightColKey: NgbColKey | null;
265
+ scrollbarWidth: number;
197
266
  /** Accessible label for the global filter input. */
198
267
  globalFilterAriaLabel: string;
199
268
  /** Accessible label announced when expanding a row. */
@@ -217,6 +286,9 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
217
286
  dataProviderAll?: () => Observable<any[]> | Promise<any[]> | any[];
218
287
  dataProviderSelection?: () => any[];
219
288
  exportButtonDir?: ExportButtonDirective;
289
+ bodyScroller?: ElementRef<HTMLElement>;
290
+ headerScroller?: ElementRef<HTMLElement>;
291
+ colgroupSyncId: string;
220
292
  exporting: boolean;
221
293
  rowAdd: EventEmitter<{
222
294
  newRow: T;
@@ -250,6 +322,14 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
250
322
  page: number;
251
323
  pageSize: number;
252
324
  }>;
325
+ selectionChange: EventEmitter<{
326
+ selected: T[];
327
+ lastAction: {
328
+ row: T;
329
+ index: number;
330
+ selected: boolean;
331
+ } | null;
332
+ }>;
253
333
  rowDetailTpl?: NgbRowDetailTemplate<T>;
254
334
  private exporter;
255
335
  expanded: Set<number>;
@@ -263,6 +343,10 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
263
343
  active: Extract<keyof T, string> | null;
264
344
  direction: SortDir;
265
345
  };
346
+ stickyRowIds: Set<any>;
347
+ selectedRowIds: Set<any>;
348
+ private selectionAnchor;
349
+ private highlightRowMap;
266
350
  globalFilter: string;
267
351
  filters: Record<string, string>;
268
352
  page: number;
@@ -275,6 +359,7 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
275
359
  saveAttemptedNew: boolean;
276
360
  private addDraftRowId;
277
361
  private readonly defaultEditService;
362
+ private cdr;
278
363
  private norm;
279
364
  private keyOf;
280
365
  private getDefaults;
@@ -290,13 +375,20 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
290
375
  get anyFilterable(): boolean;
291
376
  get startIndex(): number;
292
377
  get endIndex(): number;
378
+ get shouldEnableScroll(): boolean;
379
+ get isHeaderSticky(): boolean;
380
+ get isFooterSticky(): boolean;
293
381
  get detailColspan(): number;
382
+ get tableClassList(): string[];
383
+ get responsiveWrapperClasses(): string[];
384
+ updateHighlightCache(): void;
294
385
  headerText(col: ColumnDef<T>): string;
295
386
  columnFilterAriaLabel(col: ColumnDef<T>): string;
296
387
  inputAriaLabel(col: ColumnDef<T>): string;
297
388
  ariaSortFor(field: Extract<keyof T, string>): 'ascending' | 'descending' | 'none';
298
389
  sortButtonAriaLabel(col: ColumnDef<T>): string;
299
390
  exportAriaLabel(kind: 'pdf' | 'excel'): string;
391
+ private withStickyRowsFirst;
300
392
  private dataIndexFromPaged;
301
393
  private rebuildFilterForm;
302
394
  private cellTplQ;
@@ -312,6 +404,7 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
312
404
  export(kind: 'pdf' | 'excel'): Promise<void>;
313
405
  private resolveDataset;
314
406
  ngAfterContentInit(): void;
407
+ ngAfterViewInit(): void;
315
408
  ngOnChanges(ch: SimpleChanges): void;
316
409
  private getRowId;
317
410
  private getEditService;
@@ -325,6 +418,10 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
325
418
  validateInto(col: ColumnDef<T>, targetDraft: Partial<Record<KeyOf<T>, any>> | null, targetErrors: Partial<Record<KeyOf<T>, string>>): void;
326
419
  deleteRow(i: number): void;
327
420
  trackRow: (index: number, row: T) => any;
421
+ private rowKeyValue;
422
+ private colKeyValue;
423
+ isRowHighlighted(row: T, rowIndex: number): boolean;
424
+ isCellHighlighted(row: T, rowIndex: number, column: ColumnDef<T>, colIndex: number): boolean;
328
425
  toggleSort(field: Extract<keyof T, string>): void;
329
426
  onGlobalFilterChange(): void;
330
427
  onColumnFilterChange(): void;
@@ -338,8 +435,29 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
338
435
  asBool(v: any): boolean;
339
436
  triggerExport(kind: 'pdf' | 'excel'): void;
340
437
  isResponsiveEnabled(): boolean;
438
+ isRowSticky(row: T, pagedIndex: number): boolean;
439
+ toggleStickyRow(pagedIndex: number): void;
440
+ stickyIcon(row: T, pagedIndex: number): string;
441
+ stickyTop(row: T, pagedIndex: number): number | null;
442
+ get stickyRowsEnabled(): boolean;
443
+ get stickyHeaderEnabled(): boolean;
444
+ get stickyFooterEnabled(): boolean;
445
+ isSelectionEnabled(): boolean;
446
+ isCheckboxOnly(): boolean;
447
+ isSelectionDisabled(row: T, pagedIndex: number): boolean;
448
+ isRowSelected(row: T, pagedIndex: number): boolean;
449
+ toggleSelection(pagedIndex: number, event?: Event): void;
450
+ private emitSelection;
451
+ toggleSelectAllCurrentPage(): void;
452
+ isPageAllSelected(): boolean;
453
+ isPageIndeterminate(): boolean;
454
+ selectAllLabel(): string;
455
+ rowSelectionLabel(index: number): string;
456
+ onRowSelect(ev: MouseEvent, pagedIndex: number): void;
457
+ onHeaderScroll(): void;
458
+ private syncScrollbarWidth;
341
459
  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>;
460
+ 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
461
  }
344
462
 
345
463
  interface PdfExportPayload {
@@ -888,4 +1006,4 @@ declare class NgbChipsComponent {
888
1006
  }
889
1007
 
890
1008
  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 };
1009
+ 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 };