@angular-generic-table/core 5.0.0-rc.17 → 5.0.0-rc.18

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.
@@ -1,37 +1,94 @@
1
- import { EventEmitter } from '@angular/core';
2
- import { Observable } from 'rxjs';
1
+ import { EventEmitter, OnDestroy, TrackByFunction } from '@angular/core';
2
+ import { Observable, Subject } from 'rxjs';
3
3
  import { TableConfig } from './models/table-config.interface';
4
4
  import { KeyValue } from '@angular/common';
5
5
  import { TableColumn } from './models/table-column.interface';
6
6
  import { TableRow } from './models/table-row.interface';
7
7
  import { GtSortOrder } from './models/table-sort.interface';
8
8
  import { TableMeta } from './models/table-meta.interface';
9
- import { GtPageChangeEvent, GtRowClickEvent, GtRowHoverEvent, GtSortEvent } from './models/table-events.interface';
9
+ import { GtPageChangeEvent, GtRowSelectEvent, GtRowClickEvent, GtRowActiveEvent, GtSortEvent } from './models/table-events.interface';
10
10
  import { GtPaginationInfo } from './models/gt-pagination';
11
11
  import { TableInfo } from './models/table-info.interface';
12
12
  import * as i0 from "@angular/core";
13
- export declare class CoreComponent {
13
+ export declare class CoreComponent implements OnDestroy {
14
+ unsubscribe$: Subject<unknown>;
15
+ get navigationKeys(): typeof this._navigationKeys;
16
+ /** navigationKeys
17
+ * @description An array of keyboard keys that will trigger navigation and active row, currently only supports arrow keys, home and end (omit key name from array to disable it)
18
+ * @type {string[]}
19
+ * @default ['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight', 'Home', 'End']
20
+ */
21
+ set navigationKeys(value: typeof this._navigationKeys);
22
+ private _navigationKeys;
23
+ get selectKeys(): string[];
24
+ /** selectKeys
25
+ * @description An array of keyboard keys that will trigger row selection (omit key name from array to disable it)
26
+ * @type {string[]}
27
+ * @default ['Enter', ' ']
28
+ */
29
+ set selectKeys(value: string[]);
30
+ private _selectKeys;
14
31
  get sortOrder$(): Observable<GtSortOrder>;
15
32
  set loading(isLoading: Observable<boolean> | boolean);
16
33
  set paginationIndex(pageIndex: number);
34
+ get paginationIndex(): number;
17
35
  set pagingInfo(value: GtPaginationInfo | null);
36
+ /** customClasses
37
+ * @description An object that contains custom classes for various elements in the table.
38
+ * @type {object} - { selectedRow: string, activeRow: string } - default classes are 'gt-selected' and 'gt-active'
39
+ */
40
+ set customClasses(classes: Partial<typeof this._customClasses>);
41
+ get customClasses(): typeof this._customClasses;
42
+ private _customClasses;
43
+ /** isRowSelectedFn
44
+ * @description Function to determine if row is selected or not.
45
+ * @type {fn} A function that receives a row object and optional state for current selection that can be used to determine if row should be marked as selected or not. */
46
+ set isRowSelectedFn(fn: (row: TableRow | any, selection?: any) => boolean);
47
+ get isRowSelectedFn(): any;
48
+ private _isRowSelectedFn;
49
+ /** selection
50
+ * @description An object that contains the currently selected row(s) in the table. It's passed to the selection function to determine which rows should be selected.
51
+ * @type {any}
52
+ */
53
+ selection: any;
54
+ /** rowIdKey
55
+ * @description row key to use as unique id for table row. If passed, table won't generate unique ids for each row but instead use key to retrieve unique id from row.
56
+ * @type {string}
57
+ */
58
+ rowIdKey: string | undefined;
59
+ /** generateRowId
60
+ * @description Whether or not to generate a unique id for each row in the table. Defaults to `true`.
61
+ * @type {boolean}
62
+ */
63
+ generateRowId: boolean;
64
+ /** trackRowByFn
65
+ * @description A function that returns a unique identifier for each row in the table to optimize rendering when data is added or removed.
66
+ * @type fn - TrackByFunction to retrieve unique id based on index and/or row. Defaults to using `row[this.rowIdKey]`.
67
+ */
68
+ set trackRowByFn(fn: TrackByFunction<TableRow>);
69
+ get trackRowByFn(): TrackByFunction<TableRow>;
70
+ private _trackRowByFn;
18
71
  set search(string: Observable<string | null> | string | null);
19
72
  set config(config: Observable<TableConfig<any>> | TableConfig<any>);
20
- set data(data: Observable<Array<TableRow>> | Array<TableRow>);
73
+ private _tableConfig;
74
+ set data(data: Observable<Array<TableRow>> | Array<TableRow> | null);
21
75
  set sortOrder(sortConfig: GtSortOrder<TableRow> | any);
22
76
  rowClick: EventEmitter<GtRowClickEvent<TableRow>>;
77
+ rowSelect: EventEmitter<GtRowSelectEvent<TableRow>>;
23
78
  sortOrderChange: EventEmitter<GtSortOrder<TableRow>>;
24
79
  _rowClick(row: TableRow, index: number, event: MouseEvent): void;
25
- private _rowHover$;
26
- rowHover: EventEmitter<GtRowHoverEvent<TableRow>>;
80
+ _rowActive(row: TableRow, index: number, event: KeyboardEvent): void;
81
+ private _rowActive$;
82
+ rowActive: EventEmitter<GtRowActiveEvent<TableRow>>;
27
83
  columnSort: EventEmitter<GtSortEvent<TableRow>>;
28
84
  /** page change event - emitted when current page/index changes for pagination */
29
85
  pageChange: EventEmitter<GtPageChangeEvent>;
30
- rowHover$: Observable<GtRowHoverEvent<TableRow>>;
31
- hoverRow(id: string): void;
32
- hoverRow(index: number): void;
33
- hoverRow(none: null): void;
34
- _hoverRow(row: TableRow | null, index: number | null, event?: MouseEvent): void;
86
+ rowActive$: Observable<GtRowActiveEvent<TableRow>>;
87
+ activeRowIndex: number | null;
88
+ activateRow(id: string, event?: MouseEvent | KeyboardEvent): void;
89
+ activateRow(index: number, event?: MouseEvent | KeyboardEvent): void;
90
+ activateRow(none: null, event?: MouseEvent | KeyboardEvent): void;
91
+ protected _activateRow(row: TableRow | null, index: number | null, event?: MouseEvent | KeyboardEvent): void;
35
92
  get loading$(): Observable<boolean>;
36
93
  private _loading$;
37
94
  private _sortOrder$;
@@ -66,6 +123,12 @@ export declare class CoreComponent {
66
123
  sortByKey(key: keyof TableRow, $event?: MouseEvent): void;
67
124
  columnOrder: (a: KeyValue<string, TableColumn>, b: KeyValue<string, TableColumn>) => number;
68
125
  nestedValue(object: any, mapTo: string, missingValue?: string | number | null): unknown;
126
+ private _unsubscribeFromKeyboardEvents$;
127
+ private _keyboardArrowEvent$;
128
+ protected listenToKeyboardEvents(): void;
129
+ unsubscribeFromKeyboardEvents(tableRef: HTMLTableElement): void;
130
+ private _handleNavigationEvent;
131
+ ngOnDestroy(): void;
69
132
  static ɵfac: i0.ɵɵFactoryDeclaration<CoreComponent, never>;
70
- static ɵcmp: i0.ɵɵComponentDeclaration<CoreComponent, "angular-generic-table", never, { "loading": "loading"; "paginationIndex": "paginationIndex"; "pagingInfo": "pagingInfo"; "search": "search"; "config": "config"; "data": "data"; "sortOrder": "sortOrder"; }, { "rowClick": "rowClick"; "sortOrderChange": "sortOrderChange"; "rowHover": "rowHover"; "columnSort": "columnSort"; "pageChange": "pageChange"; }, never, [".table-loading", ".table-no-data"], true, never>;
133
+ static ɵcmp: i0.ɵɵComponentDeclaration<CoreComponent, "angular-generic-table", never, { "navigationKeys": "navigationKeys"; "selectKeys": "selectKeys"; "loading": "loading"; "paginationIndex": "paginationIndex"; "pagingInfo": "pagingInfo"; "customClasses": "customClasses"; "isRowSelectedFn": "isRowSelectedFn"; "selection": "selection"; "rowIdKey": "rowIdKey"; "generateRowId": "generateRowId"; "trackRowByFn": "trackRowByFn"; "search": "search"; "config": "config"; "data": "data"; "sortOrder": "sortOrder"; }, { "rowClick": "rowClick"; "rowSelect": "rowSelect"; "sortOrderChange": "sortOrderChange"; "rowActive": "rowActive"; "columnSort": "columnSort"; "pageChange": "pageChange"; }, never, [".table-loading", ".table-no-data"], true, never>;
71
134
  }
@@ -4,11 +4,12 @@ import * as i2 from "./core.component";
4
4
  import * as i3 from "./pipes/sort-class.pipe";
5
5
  import * as i4 from "./pipes/dash-case.pipe";
6
6
  import * as i5 from "./pipes/highlight.pipe";
7
- import * as i6 from "./pipes/capital-case.pipe";
8
- import * as i7 from "./pipes/dynamic.pipe";
9
- import * as i8 from "./gt-delta/gt-delta.component";
7
+ import * as i6 from "./pipes/row-selection.pipe";
8
+ import * as i7 from "./pipes/capital-case.pipe";
9
+ import * as i8 from "./pipes/dynamic.pipe";
10
+ import * as i9 from "./gt-delta/gt-delta.component";
10
11
  export declare class GenericTableCoreModule {
11
12
  static ɵfac: i0.ɵɵFactoryDeclaration<GenericTableCoreModule, never>;
12
- static ɵmod: i0.ɵɵNgModuleDeclaration<GenericTableCoreModule, never, [typeof i1.CommonModule, typeof i2.CoreComponent, typeof i3.SortClassPipe, typeof i4.DashCasePipe, typeof i5.HighlightPipe, typeof i6.CapitalCasePipe, typeof i6.CapitalCasePipe, typeof i7.DynamicPipe, typeof i8.GtDeltaComponent], [typeof i2.CoreComponent, typeof i8.GtDeltaComponent]>;
13
+ static ɵmod: i0.ɵɵNgModuleDeclaration<GenericTableCoreModule, never, [typeof i1.CommonModule, typeof i2.CoreComponent, typeof i3.SortClassPipe, typeof i4.DashCasePipe, typeof i5.HighlightPipe, typeof i6.RowSelectionPipe, typeof i7.CapitalCasePipe, typeof i7.CapitalCasePipe, typeof i8.DynamicPipe, typeof i9.GtDeltaComponent], [typeof i2.CoreComponent, typeof i9.GtDeltaComponent]>;
13
14
  static ɵinj: i0.ɵɵInjectorDeclaration<GenericTableCoreModule>;
14
15
  }
@@ -22,7 +22,11 @@ export interface TableConfig<R = TableRow> {
22
22
  length?: number;
23
23
  };
24
24
  rowClick?: boolean;
25
- rowHover?: boolean;
25
+ /** Toggle row active state on mouse enter/leave (hover) <p>**Default:** `false`</p>*/
26
+ activateRowOnHover?: boolean;
27
+ /** Toggle row active state on keyboard navigation <p>**Default:** `false`</p>*/
28
+ activateRowOnKeyboardNavigation?: boolean;
29
+ deactivateRowOnLostFocus?: boolean;
26
30
  footer?: {
27
31
  headers?: {
28
32
  [key: FooterCalculation | string]: string | boolean;
@@ -5,10 +5,15 @@ export interface GtRowClickEvent<R = TableRow> {
5
5
  index: number;
6
6
  event: MouseEvent;
7
7
  }
8
- export interface GtRowHoverEvent<R = TableRow> {
8
+ export interface GtRowActiveEvent<R = TableRow> {
9
9
  row: R | null;
10
10
  index: number | null;
11
- event?: MouseEvent;
11
+ event?: MouseEvent | KeyboardEvent;
12
+ }
13
+ export interface GtRowSelectEvent<R = TableRow> {
14
+ row: R | null;
15
+ index: number | null;
16
+ event?: KeyboardEvent;
12
17
  }
13
18
  export interface GtSortEvent<R = TableRow> {
14
19
  key: keyof R;
@@ -0,0 +1,8 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { TableRow } from '../models/table-row.interface';
3
+ import * as i0 from "@angular/core";
4
+ export declare class RowSelectionPipe implements PipeTransform {
5
+ transform(row: TableRow, selection: any, comparator: (row: TableRow, selection: any) => boolean, className?: string): string;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<RowSelectionPipe, never>;
7
+ static ɵpipe: i0.ɵɵPipeDeclaration<RowSelectionPipe, "rowSelection", true>;
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular-generic-table/core",
3
- "version": "5.0.0-rc.17",
3
+ "version": "5.0.0-rc.18",
4
4
  "author": "Robert Hjalmers <opensource@rhj.se> (http://www.linkedin.com/in/robert-hjalmers/)",
5
5
  "license": "MIT",
6
6
  "repository": {