@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.
|
|
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,
|
|
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 };
|