[6a3a178] | 1 | /**
|
---|
| 2 | * @license
|
---|
| 3 | * Copyright Google LLC All Rights Reserved.
|
---|
| 4 | *
|
---|
| 5 | * Use of this source code is governed by an MIT-style license that can be
|
---|
| 6 | * found in the LICENSE file at https://angular.io/license
|
---|
| 7 | */
|
---|
| 8 | import { Directionality } from '@angular/cdk/bidi';
|
---|
| 9 | import { BooleanInput } from '@angular/cdk/coercion';
|
---|
| 10 | import { CollectionViewer, DataSource, _ViewRepeater } from '@angular/cdk/collections';
|
---|
| 11 | import { Platform } from '@angular/cdk/platform';
|
---|
| 12 | import { ViewportRuler } from '@angular/cdk/scrolling';
|
---|
| 13 | import { AfterContentChecked, ChangeDetectorRef, ElementRef, EventEmitter, IterableDiffers, OnDestroy, OnInit, QueryList, TrackByFunction, ViewContainerRef } from '@angular/core';
|
---|
| 14 | import { BehaviorSubject, Observable } from 'rxjs';
|
---|
| 15 | import { CdkColumnDef } from './cell';
|
---|
| 16 | import { _CoalescedStyleScheduler } from './coalesced-style-scheduler';
|
---|
| 17 | import { CdkCellOutletMultiRowContext, CdkCellOutletRowContext, CdkFooterRowDef, CdkHeaderRowDef, CdkNoDataRow, CdkRowDef } from './row';
|
---|
| 18 | import { StickyPositioningListener } from './sticky-position-listener';
|
---|
| 19 | /**
|
---|
| 20 | * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with
|
---|
| 21 | * tables that animate rows.
|
---|
| 22 | */
|
---|
| 23 | export declare class CdkRecycleRows {
|
---|
| 24 | }
|
---|
| 25 | /** Interface used to provide an outlet for rows to be inserted into. */
|
---|
| 26 | export interface RowOutlet {
|
---|
| 27 | viewContainer: ViewContainerRef;
|
---|
| 28 | }
|
---|
| 29 | /**
|
---|
| 30 | * Union of the types that can be set as the data source for a `CdkTable`.
|
---|
| 31 | * @docs-private
|
---|
| 32 | */
|
---|
| 33 | declare type CdkTableDataSourceInput<T> = readonly T[] | DataSource<T> | Observable<readonly T[]>;
|
---|
| 34 | /**
|
---|
| 35 | * Provides a handle for the table to grab the view container's ng-container to insert data rows.
|
---|
| 36 | * @docs-private
|
---|
| 37 | */
|
---|
| 38 | export declare class DataRowOutlet implements RowOutlet {
|
---|
| 39 | viewContainer: ViewContainerRef;
|
---|
| 40 | elementRef: ElementRef;
|
---|
| 41 | constructor(viewContainer: ViewContainerRef, elementRef: ElementRef);
|
---|
| 42 | }
|
---|
| 43 | /**
|
---|
| 44 | * Provides a handle for the table to grab the view container's ng-container to insert the header.
|
---|
| 45 | * @docs-private
|
---|
| 46 | */
|
---|
| 47 | export declare class HeaderRowOutlet implements RowOutlet {
|
---|
| 48 | viewContainer: ViewContainerRef;
|
---|
| 49 | elementRef: ElementRef;
|
---|
| 50 | constructor(viewContainer: ViewContainerRef, elementRef: ElementRef);
|
---|
| 51 | }
|
---|
| 52 | /**
|
---|
| 53 | * Provides a handle for the table to grab the view container's ng-container to insert the footer.
|
---|
| 54 | * @docs-private
|
---|
| 55 | */
|
---|
| 56 | export declare class FooterRowOutlet implements RowOutlet {
|
---|
| 57 | viewContainer: ViewContainerRef;
|
---|
| 58 | elementRef: ElementRef;
|
---|
| 59 | constructor(viewContainer: ViewContainerRef, elementRef: ElementRef);
|
---|
| 60 | }
|
---|
| 61 | /**
|
---|
| 62 | * Provides a handle for the table to grab the view
|
---|
| 63 | * container's ng-container to insert the no data row.
|
---|
| 64 | * @docs-private
|
---|
| 65 | */
|
---|
| 66 | export declare class NoDataRowOutlet implements RowOutlet {
|
---|
| 67 | viewContainer: ViewContainerRef;
|
---|
| 68 | elementRef: ElementRef;
|
---|
| 69 | constructor(viewContainer: ViewContainerRef, elementRef: ElementRef);
|
---|
| 70 | }
|
---|
| 71 | /**
|
---|
| 72 | * The table template that can be used by the mat-table. Should not be used outside of the
|
---|
| 73 | * material library.
|
---|
| 74 | * @docs-private
|
---|
| 75 | */
|
---|
| 76 | export declare const CDK_TABLE_TEMPLATE = "\n <ng-content select=\"caption\"></ng-content>\n <ng-content select=\"colgroup, col\"></ng-content>\n <ng-container headerRowOutlet></ng-container>\n <ng-container rowOutlet></ng-container>\n <ng-container noDataRowOutlet></ng-container>\n <ng-container footerRowOutlet></ng-container>\n";
|
---|
| 77 | /**
|
---|
| 78 | * Interface used to conveniently type the possible context interfaces for the render row.
|
---|
| 79 | * @docs-private
|
---|
| 80 | */
|
---|
| 81 | export interface RowContext<T> extends CdkCellOutletMultiRowContext<T>, CdkCellOutletRowContext<T> {
|
---|
| 82 | }
|
---|
| 83 | /**
|
---|
| 84 | * Set of properties that represents the identity of a single rendered row.
|
---|
| 85 | *
|
---|
| 86 | * When the table needs to determine the list of rows to render, it will do so by iterating through
|
---|
| 87 | * each data object and evaluating its list of row templates to display (when multiTemplateDataRows
|
---|
| 88 | * is false, there is only one template per data object). For each pair of data object and row
|
---|
| 89 | * template, a `RenderRow` is added to the list of rows to render. If the data object and row
|
---|
| 90 | * template pair has already been rendered, the previously used `RenderRow` is added; else a new
|
---|
| 91 | * `RenderRow` is * created. Once the list is complete and all data objects have been itereated
|
---|
| 92 | * through, a diff is performed to determine the changes that need to be made to the rendered rows.
|
---|
| 93 | *
|
---|
| 94 | * @docs-private
|
---|
| 95 | */
|
---|
| 96 | export interface RenderRow<T> {
|
---|
| 97 | data: T;
|
---|
| 98 | dataIndex: number;
|
---|
| 99 | rowDef: CdkRowDef<T>;
|
---|
| 100 | }
|
---|
| 101 | /**
|
---|
| 102 | * A data table that can render a header row, data rows, and a footer row.
|
---|
| 103 | * Uses the dataSource input to determine the data to be rendered. The data can be provided either
|
---|
| 104 | * as a data array, an Observable stream that emits the data array to render, or a DataSource with a
|
---|
| 105 | * connect function that will return an Observable stream that emits the data array to render.
|
---|
| 106 | */
|
---|
| 107 | export declare class CdkTable<T> implements AfterContentChecked, CollectionViewer, OnDestroy, OnInit {
|
---|
| 108 | protected readonly _differs: IterableDiffers;
|
---|
| 109 | protected readonly _changeDetectorRef: ChangeDetectorRef;
|
---|
| 110 | protected readonly _elementRef: ElementRef;
|
---|
| 111 | protected readonly _dir: Directionality;
|
---|
| 112 | private _platform;
|
---|
| 113 | protected readonly _viewRepeater: _ViewRepeater<T, RenderRow<T>, RowContext<T>>;
|
---|
| 114 | protected readonly _coalescedStyleScheduler: _CoalescedStyleScheduler;
|
---|
| 115 | private readonly _viewportRuler;
|
---|
| 116 | /**
|
---|
| 117 | * @deprecated `_stickyPositioningListener` parameter to become required.
|
---|
| 118 | * @breaking-change 13.0.0
|
---|
| 119 | */
|
---|
| 120 | protected readonly _stickyPositioningListener: StickyPositioningListener;
|
---|
| 121 | private _document;
|
---|
| 122 | /** Latest data provided by the data source. */
|
---|
| 123 | protected _data: readonly T[];
|
---|
| 124 | /** Subject that emits when the component has been destroyed. */
|
---|
| 125 | private readonly _onDestroy;
|
---|
| 126 | /** List of the rendered rows as identified by their `RenderRow` object. */
|
---|
| 127 | private _renderRows;
|
---|
| 128 | /** Subscription that listens for the data provided by the data source. */
|
---|
| 129 | private _renderChangeSubscription;
|
---|
| 130 | /**
|
---|
| 131 | * Map of all the user's defined columns (header, data, and footer cell template) identified by
|
---|
| 132 | * name. Collection populated by the column definitions gathered by `ContentChildren` as well as
|
---|
| 133 | * any custom column definitions added to `_customColumnDefs`.
|
---|
| 134 | */
|
---|
| 135 | private _columnDefsByName;
|
---|
| 136 | /**
|
---|
| 137 | * Set of all row definitions that can be used by this table. Populated by the rows gathered by
|
---|
| 138 | * using `ContentChildren` as well as any custom row definitions added to `_customRowDefs`.
|
---|
| 139 | */
|
---|
| 140 | private _rowDefs;
|
---|
| 141 | /**
|
---|
| 142 | * Set of all header row definitions that can be used by this table. Populated by the rows
|
---|
| 143 | * gathered by using `ContentChildren` as well as any custom row definitions added to
|
---|
| 144 | * `_customHeaderRowDefs`.
|
---|
| 145 | */
|
---|
| 146 | private _headerRowDefs;
|
---|
| 147 | /**
|
---|
| 148 | * Set of all row definitions that can be used by this table. Populated by the rows gathered by
|
---|
| 149 | * using `ContentChildren` as well as any custom row definitions added to
|
---|
| 150 | * `_customFooterRowDefs`.
|
---|
| 151 | */
|
---|
| 152 | private _footerRowDefs;
|
---|
| 153 | /** Differ used to find the changes in the data provided by the data source. */
|
---|
| 154 | private _dataDiffer;
|
---|
| 155 | /** Stores the row definition that does not have a when predicate. */
|
---|
| 156 | private _defaultRowDef;
|
---|
| 157 | /**
|
---|
| 158 | * Column definitions that were defined outside of the direct content children of the table.
|
---|
| 159 | * These will be defined when, e.g., creating a wrapper around the cdkTable that has
|
---|
| 160 | * column definitions as *its* content child.
|
---|
| 161 | */
|
---|
| 162 | private _customColumnDefs;
|
---|
| 163 | /**
|
---|
| 164 | * Data row definitions that were defined outside of the direct content children of the table.
|
---|
| 165 | * These will be defined when, e.g., creating a wrapper around the cdkTable that has
|
---|
| 166 | * built-in data rows as *its* content child.
|
---|
| 167 | */
|
---|
| 168 | private _customRowDefs;
|
---|
| 169 | /**
|
---|
| 170 | * Header row definitions that were defined outside of the direct content children of the table.
|
---|
| 171 | * These will be defined when, e.g., creating a wrapper around the cdkTable that has
|
---|
| 172 | * built-in header rows as *its* content child.
|
---|
| 173 | */
|
---|
| 174 | private _customHeaderRowDefs;
|
---|
| 175 | /**
|
---|
| 176 | * Footer row definitions that were defined outside of the direct content children of the table.
|
---|
| 177 | * These will be defined when, e.g., creating a wrapper around the cdkTable that has a
|
---|
| 178 | * built-in footer row as *its* content child.
|
---|
| 179 | */
|
---|
| 180 | private _customFooterRowDefs;
|
---|
| 181 | /** No data row that was defined outside of the direct content children of the table. */
|
---|
| 182 | private _customNoDataRow;
|
---|
| 183 | /**
|
---|
| 184 | * Whether the header row definition has been changed. Triggers an update to the header row after
|
---|
| 185 | * content is checked. Initialized as true so that the table renders the initial set of rows.
|
---|
| 186 | */
|
---|
| 187 | private _headerRowDefChanged;
|
---|
| 188 | /**
|
---|
| 189 | * Whether the footer row definition has been changed. Triggers an update to the footer row after
|
---|
| 190 | * content is checked. Initialized as true so that the table renders the initial set of rows.
|
---|
| 191 | */
|
---|
| 192 | private _footerRowDefChanged;
|
---|
| 193 | /**
|
---|
| 194 | * Whether the sticky column styles need to be updated. Set to `true` when the visible columns
|
---|
| 195 | * change.
|
---|
| 196 | */
|
---|
| 197 | private _stickyColumnStylesNeedReset;
|
---|
| 198 | /**
|
---|
| 199 | * Whether the sticky styler should recalculate cell widths when applying sticky styles. If
|
---|
| 200 | * `false`, cached values will be used instead. This is only applicable to tables with
|
---|
| 201 | * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated.
|
---|
| 202 | */
|
---|
| 203 | private _forceRecalculateCellWidths;
|
---|
| 204 | /**
|
---|
| 205 | * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing
|
---|
| 206 | * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with
|
---|
| 207 | * the cached `RenderRow` objects when possible, the row identity is preserved when the data
|
---|
| 208 | * and row template matches, which allows the `IterableDiffer` to check rows by reference
|
---|
| 209 | * and understand which rows are added/moved/removed.
|
---|
| 210 | *
|
---|
| 211 | * Implemented as a map of maps where the first key is the `data: T` object and the second is the
|
---|
| 212 | * `CdkRowDef<T>` object. With the two keys, the cache points to a `RenderRow<T>` object that
|
---|
| 213 | * contains an array of created pairs. The array is necessary to handle cases where the data
|
---|
| 214 | * array contains multiple duplicate data objects and each instantiated `RenderRow` must be
|
---|
| 215 | * stored.
|
---|
| 216 | */
|
---|
| 217 | private _cachedRenderRowsMap;
|
---|
| 218 | /** Whether the table is applied to a native `<table>`. */
|
---|
| 219 | protected _isNativeHtmlTable: boolean;
|
---|
| 220 | /**
|
---|
| 221 | * Utility class that is responsible for applying the appropriate sticky positioning styles to
|
---|
| 222 | * the table's rows and cells.
|
---|
| 223 | */
|
---|
| 224 | private _stickyStyler;
|
---|
| 225 | /**
|
---|
| 226 | * CSS class added to any row or cell that has sticky positioning applied. May be overriden by
|
---|
| 227 | * table subclasses.
|
---|
| 228 | */
|
---|
| 229 | protected stickyCssClass: string;
|
---|
| 230 | /**
|
---|
| 231 | * Whether to manually add positon: sticky to all sticky cell elements. Not needed if
|
---|
| 232 | * the position is set in a selector associated with the value of stickyCssClass. May be
|
---|
| 233 | * overridden by table subclasses
|
---|
| 234 | */
|
---|
| 235 | protected needsPositionStickyOnElement: boolean;
|
---|
| 236 | /** Whether the no data row is currently showing anything. */
|
---|
| 237 | private _isShowingNoDataRow;
|
---|
| 238 | /**
|
---|
| 239 | * Tracking function that will be used to check the differences in data changes. Used similarly
|
---|
| 240 | * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data
|
---|
| 241 | * relative to the function to know if a row should be added/removed/moved.
|
---|
| 242 | * Accepts a function that takes two parameters, `index` and `item`.
|
---|
| 243 | */
|
---|
| 244 | get trackBy(): TrackByFunction<T>;
|
---|
| 245 | set trackBy(fn: TrackByFunction<T>);
|
---|
| 246 | private _trackByFn;
|
---|
| 247 | /**
|
---|
| 248 | * The table's source of data, which can be provided in three ways (in order of complexity):
|
---|
| 249 | * - Simple data array (each object represents one table row)
|
---|
| 250 | * - Stream that emits a data array each time the array changes
|
---|
| 251 | * - `DataSource` object that implements the connect/disconnect interface.
|
---|
| 252 | *
|
---|
| 253 | * If a data array is provided, the table must be notified when the array's objects are
|
---|
| 254 | * added, removed, or moved. This can be done by calling the `renderRows()` function which will
|
---|
| 255 | * render the diff since the last table render. If the data array reference is changed, the table
|
---|
| 256 | * will automatically trigger an update to the rows.
|
---|
| 257 | *
|
---|
| 258 | * When providing an Observable stream, the table will trigger an update automatically when the
|
---|
| 259 | * stream emits a new array of data.
|
---|
| 260 | *
|
---|
| 261 | * Finally, when providing a `DataSource` object, the table will use the Observable stream
|
---|
| 262 | * provided by the connect function and trigger updates when that stream emits new data array
|
---|
| 263 | * values. During the table's ngOnDestroy or when the data source is removed from the table, the
|
---|
| 264 | * table will call the DataSource's `disconnect` function (may be useful for cleaning up any
|
---|
| 265 | * subscriptions registered during the connect process).
|
---|
| 266 | */
|
---|
| 267 | get dataSource(): CdkTableDataSourceInput<T>;
|
---|
| 268 | set dataSource(dataSource: CdkTableDataSourceInput<T>);
|
---|
| 269 | private _dataSource;
|
---|
| 270 | /**
|
---|
| 271 | * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'
|
---|
| 272 | * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each
|
---|
| 273 | * dataobject will render the first row that evaluates its when predicate to true, in the order
|
---|
| 274 | * defined in the table, or otherwise the default row which does not have a when predicate.
|
---|
| 275 | */
|
---|
| 276 | get multiTemplateDataRows(): boolean;
|
---|
| 277 | set multiTemplateDataRows(v: boolean);
|
---|
| 278 | _multiTemplateDataRows: boolean;
|
---|
| 279 | /**
|
---|
| 280 | * Whether to use a fixed table layout. Enabling this option will enforce consistent column widths
|
---|
| 281 | * and optimize rendering sticky styles for native tables. No-op for flex tables.
|
---|
| 282 | */
|
---|
| 283 | get fixedLayout(): boolean;
|
---|
| 284 | set fixedLayout(v: boolean);
|
---|
| 285 | private _fixedLayout;
|
---|
| 286 | /**
|
---|
| 287 | * Emits when the table completes rendering a set of data rows based on the latest data from the
|
---|
| 288 | * data source, even if the set of rows is empty.
|
---|
| 289 | */
|
---|
| 290 | readonly contentChanged: EventEmitter<void>;
|
---|
| 291 | /**
|
---|
| 292 | * Stream containing the latest information on what rows are being displayed on screen.
|
---|
| 293 | * Can be used by the data source to as a heuristic of what data should be provided.
|
---|
| 294 | *
|
---|
| 295 | * @docs-private
|
---|
| 296 | */
|
---|
| 297 | readonly viewChange: BehaviorSubject<{
|
---|
| 298 | start: number;
|
---|
| 299 | end: number;
|
---|
| 300 | }>;
|
---|
| 301 | _rowOutlet: DataRowOutlet;
|
---|
| 302 | _headerRowOutlet: HeaderRowOutlet;
|
---|
| 303 | _footerRowOutlet: FooterRowOutlet;
|
---|
| 304 | _noDataRowOutlet: NoDataRowOutlet;
|
---|
| 305 | /**
|
---|
| 306 | * The column definitions provided by the user that contain what the header, data, and footer
|
---|
| 307 | * cells should render for each column.
|
---|
| 308 | */
|
---|
| 309 | _contentColumnDefs: QueryList<CdkColumnDef>;
|
---|
| 310 | /** Set of data row definitions that were provided to the table as content children. */
|
---|
| 311 | _contentRowDefs: QueryList<CdkRowDef<T>>;
|
---|
| 312 | /** Set of header row definitions that were provided to the table as content children. */
|
---|
| 313 | _contentHeaderRowDefs: QueryList<CdkHeaderRowDef>;
|
---|
| 314 | /** Set of footer row definitions that were provided to the table as content children. */
|
---|
| 315 | _contentFooterRowDefs: QueryList<CdkFooterRowDef>;
|
---|
| 316 | /** Row definition that will only be rendered if there's no data in the table. */
|
---|
| 317 | _noDataRow: CdkNoDataRow;
|
---|
| 318 | constructor(_differs: IterableDiffers, _changeDetectorRef: ChangeDetectorRef, _elementRef: ElementRef, role: string, _dir: Directionality, _document: any, _platform: Platform, _viewRepeater: _ViewRepeater<T, RenderRow<T>, RowContext<T>>, _coalescedStyleScheduler: _CoalescedStyleScheduler, _viewportRuler: ViewportRuler,
|
---|
| 319 | /**
|
---|
| 320 | * @deprecated `_stickyPositioningListener` parameter to become required.
|
---|
| 321 | * @breaking-change 13.0.0
|
---|
| 322 | */
|
---|
| 323 | _stickyPositioningListener: StickyPositioningListener);
|
---|
| 324 | ngOnInit(): void;
|
---|
| 325 | ngAfterContentChecked(): void;
|
---|
| 326 | ngOnDestroy(): void;
|
---|
| 327 | /**
|
---|
| 328 | * Renders rows based on the table's latest set of data, which was either provided directly as an
|
---|
| 329 | * input or retrieved through an Observable stream (directly or from a DataSource).
|
---|
| 330 | * Checks for differences in the data since the last diff to perform only the necessary
|
---|
| 331 | * changes (add/remove/move rows).
|
---|
| 332 | *
|
---|
| 333 | * If the table's data source is a DataSource or Observable, this will be invoked automatically
|
---|
| 334 | * each time the provided Observable stream emits a new data array. Otherwise if your data is
|
---|
| 335 | * an array, this function will need to be called to render any changes.
|
---|
| 336 | */
|
---|
| 337 | renderRows(): void;
|
---|
| 338 | /** Adds a column definition that was not included as part of the content children. */
|
---|
| 339 | addColumnDef(columnDef: CdkColumnDef): void;
|
---|
| 340 | /** Removes a column definition that was not included as part of the content children. */
|
---|
| 341 | removeColumnDef(columnDef: CdkColumnDef): void;
|
---|
| 342 | /** Adds a row definition that was not included as part of the content children. */
|
---|
| 343 | addRowDef(rowDef: CdkRowDef<T>): void;
|
---|
| 344 | /** Removes a row definition that was not included as part of the content children. */
|
---|
| 345 | removeRowDef(rowDef: CdkRowDef<T>): void;
|
---|
| 346 | /** Adds a header row definition that was not included as part of the content children. */
|
---|
| 347 | addHeaderRowDef(headerRowDef: CdkHeaderRowDef): void;
|
---|
| 348 | /** Removes a header row definition that was not included as part of the content children. */
|
---|
| 349 | removeHeaderRowDef(headerRowDef: CdkHeaderRowDef): void;
|
---|
| 350 | /** Adds a footer row definition that was not included as part of the content children. */
|
---|
| 351 | addFooterRowDef(footerRowDef: CdkFooterRowDef): void;
|
---|
| 352 | /** Removes a footer row definition that was not included as part of the content children. */
|
---|
| 353 | removeFooterRowDef(footerRowDef: CdkFooterRowDef): void;
|
---|
| 354 | /** Sets a no data row definition that was not included as a part of the content children. */
|
---|
| 355 | setNoDataRow(noDataRow: CdkNoDataRow | null): void;
|
---|
| 356 | /**
|
---|
| 357 | * Updates the header sticky styles. First resets all applied styles with respect to the cells
|
---|
| 358 | * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is
|
---|
| 359 | * automatically called when the header row changes its displayed set of columns, or if its
|
---|
| 360 | * sticky input changes. May be called manually for cases where the cell content changes outside
|
---|
| 361 | * of these events.
|
---|
| 362 | */
|
---|
| 363 | updateStickyHeaderRowStyles(): void;
|
---|
| 364 | /**
|
---|
| 365 | * Updates the footer sticky styles. First resets all applied styles with respect to the cells
|
---|
| 366 | * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is
|
---|
| 367 | * automatically called when the footer row changes its displayed set of columns, or if its
|
---|
| 368 | * sticky input changes. May be called manually for cases where the cell content changes outside
|
---|
| 369 | * of these events.
|
---|
| 370 | */
|
---|
| 371 | updateStickyFooterRowStyles(): void;
|
---|
| 372 | /**
|
---|
| 373 | * Updates the column sticky styles. First resets all applied styles with respect to the cells
|
---|
| 374 | * sticking to the left and right. Then sticky styles are added for the left and right according
|
---|
| 375 | * to the column definitions for each cell in each row. This is automatically called when
|
---|
| 376 | * the data source provides a new set of data or when a column definition changes its sticky
|
---|
| 377 | * input. May be called manually for cases where the cell content changes outside of these events.
|
---|
| 378 | */
|
---|
| 379 | updateStickyColumnStyles(): void;
|
---|
| 380 | /**
|
---|
| 381 | * Get the list of RenderRow objects to render according to the current list of data and defined
|
---|
| 382 | * row definitions. If the previous list already contained a particular pair, it should be reused
|
---|
| 383 | * so that the differ equates their references.
|
---|
| 384 | */
|
---|
| 385 | private _getAllRenderRows;
|
---|
| 386 | /**
|
---|
| 387 | * Gets a list of `RenderRow<T>` for the provided data object and any `CdkRowDef` objects that
|
---|
| 388 | * should be rendered for this data. Reuses the cached RenderRow objects if they match the same
|
---|
| 389 | * `(T, CdkRowDef)` pair.
|
---|
| 390 | */
|
---|
| 391 | private _getRenderRowsForData;
|
---|
| 392 | /** Update the map containing the content's column definitions. */
|
---|
| 393 | private _cacheColumnDefs;
|
---|
| 394 | /** Update the list of all available row definitions that can be used. */
|
---|
| 395 | private _cacheRowDefs;
|
---|
| 396 | /**
|
---|
| 397 | * Check if the header, data, or footer rows have changed what columns they want to display or
|
---|
| 398 | * whether the sticky states have changed for the header or footer. If there is a diff, then
|
---|
| 399 | * re-render that section.
|
---|
| 400 | */
|
---|
| 401 | private _renderUpdatedColumns;
|
---|
| 402 | /**
|
---|
| 403 | * Switch to the provided data source by resetting the data and unsubscribing from the current
|
---|
| 404 | * render change subscription if one exists. If the data source is null, interpret this by
|
---|
| 405 | * clearing the row outlet. Otherwise start listening for new data.
|
---|
| 406 | */
|
---|
| 407 | private _switchDataSource;
|
---|
| 408 | /** Set up a subscription for the data provided by the data source. */
|
---|
| 409 | private _observeRenderChanges;
|
---|
| 410 | /**
|
---|
| 411 | * Clears any existing content in the header row outlet and creates a new embedded view
|
---|
| 412 | * in the outlet using the header row definition.
|
---|
| 413 | */
|
---|
| 414 | private _forceRenderHeaderRows;
|
---|
| 415 | /**
|
---|
| 416 | * Clears any existing content in the footer row outlet and creates a new embedded view
|
---|
| 417 | * in the outlet using the footer row definition.
|
---|
| 418 | */
|
---|
| 419 | private _forceRenderFooterRows;
|
---|
| 420 | /** Adds the sticky column styles for the rows according to the columns' stick states. */
|
---|
| 421 | private _addStickyColumnStyles;
|
---|
| 422 | /** Gets the list of rows that have been rendered in the row outlet. */
|
---|
| 423 | _getRenderedRows(rowOutlet: RowOutlet): HTMLElement[];
|
---|
| 424 | /**
|
---|
| 425 | * Get the matching row definitions that should be used for this row data. If there is only
|
---|
| 426 | * one row definition, it is returned. Otherwise, find the row definitions that has a when
|
---|
| 427 | * predicate that returns true with the data. If none return true, return the default row
|
---|
| 428 | * definition.
|
---|
| 429 | */
|
---|
| 430 | _getRowDefs(data: T, dataIndex: number): CdkRowDef<T>[];
|
---|
| 431 | private _getEmbeddedViewArgs;
|
---|
| 432 | /**
|
---|
| 433 | * Creates a new row template in the outlet and fills it with the set of cell templates.
|
---|
| 434 | * Optionally takes a context to provide to the row and cells, as well as an optional index
|
---|
| 435 | * of where to place the new row template in the outlet.
|
---|
| 436 | */
|
---|
| 437 | private _renderRow;
|
---|
| 438 | private _renderCellTemplateForItem;
|
---|
| 439 | /**
|
---|
| 440 | * Updates the index-related context for each row to reflect any changes in the index of the rows,
|
---|
| 441 | * e.g. first/last/even/odd.
|
---|
| 442 | */
|
---|
| 443 | private _updateRowIndexContext;
|
---|
| 444 | /** Gets the column definitions for the provided row def. */
|
---|
| 445 | private _getCellTemplates;
|
---|
| 446 | /** Adds native table sections (e.g. tbody) and moves the row outlets into them. */
|
---|
| 447 | private _applyNativeTableSections;
|
---|
| 448 | /**
|
---|
| 449 | * Forces a re-render of the data rows. Should be called in cases where there has been an input
|
---|
| 450 | * change that affects the evaluation of which rows should be rendered, e.g. toggling
|
---|
| 451 | * `multiTemplateDataRows` or adding/removing row definitions.
|
---|
| 452 | */
|
---|
| 453 | private _forceRenderDataRows;
|
---|
| 454 | /**
|
---|
| 455 | * Checks if there has been a change in sticky states since last check and applies the correct
|
---|
| 456 | * sticky styles. Since checking resets the "dirty" state, this should only be performed once
|
---|
| 457 | * during a change detection and after the inputs are settled (after content check).
|
---|
| 458 | */
|
---|
| 459 | private _checkStickyStates;
|
---|
| 460 | /**
|
---|
| 461 | * Creates the sticky styler that will be used for sticky rows and columns. Listens
|
---|
| 462 | * for directionality changes and provides the latest direction to the styler. Re-applies column
|
---|
| 463 | * stickiness when directionality changes.
|
---|
| 464 | */
|
---|
| 465 | private _setupStickyStyler;
|
---|
| 466 | /** Filters definitions that belong to this table from a QueryList. */
|
---|
| 467 | private _getOwnDefs;
|
---|
| 468 | /** Creates or removes the no data row, depending on whether any data is being shown. */
|
---|
| 469 | private _updateNoDataRow;
|
---|
| 470 | static ngAcceptInputType_multiTemplateDataRows: BooleanInput;
|
---|
| 471 | static ngAcceptInputType_fixedLayout: BooleanInput;
|
---|
| 472 | }
|
---|
| 473 | export {};
|
---|