| /** |
| * @license |
| * Copyright Google LLC All Rights Reserved. |
| * |
| * Use of this source code is governed by an MIT-style license that can be |
| * found in the LICENSE file at https://angular.io/license |
| */ |
| /** |
| * Directions that can be used when setting sticky positioning. |
| * @docs-private |
| */ |
| import { Direction } from '@angular/cdk/bidi'; |
| export declare type StickyDirection = 'top' | 'bottom' | 'left' | 'right'; |
| /** |
| * List of all possible directions that can be used for sticky positioning. |
| * @docs-private |
| */ |
| export declare const STICKY_DIRECTIONS: StickyDirection[]; |
| /** |
| * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells. |
| * @docs-private |
| */ |
| export declare class StickyStyler { |
| private _isNativeHtmlTable; |
| private _stickCellCss; |
| direction: Direction; |
| private _isBrowser; |
| /** |
| * @param _isNativeHtmlTable Whether the sticky logic should be based on a table |
| * that uses the native `<table>` element. |
| * @param _stickCellCss The CSS class that will be applied to every row/cell that has |
| * sticky positioning applied. |
| * @param direction The directionality context of the table (ltr/rtl); affects column positioning |
| * by reversing left/right positions. |
| * @param _isBrowser Whether the table is currently being rendered on the server or the client. |
| */ |
| constructor(_isNativeHtmlTable: boolean, _stickCellCss: string, direction: Direction, _isBrowser?: boolean); |
| /** |
| * Clears the sticky positioning styles from the row and its cells by resetting the `position` |
| * style, setting the zIndex to 0, and unsetting each provided sticky direction. |
| * @param rows The list of rows that should be cleared from sticking in the provided directions |
| * @param stickyDirections The directions that should no longer be set as sticky on the rows. |
| */ |
| clearStickyPositioning(rows: HTMLElement[], stickyDirections: StickyDirection[]): void; |
| /** |
| * Applies sticky left and right positions to the cells of each row according to the sticky |
| * states of the rendered column definitions. |
| * @param rows The rows that should have its set of cells stuck according to the sticky states. |
| * @param stickyStartStates A list of boolean states where each state represents whether the cell |
| * in this index position should be stuck to the start of the row. |
| * @param stickyEndStates A list of boolean states where each state represents whether the cell |
| * in this index position should be stuck to the end of the row. |
| */ |
| updateStickyColumns(rows: HTMLElement[], stickyStartStates: boolean[], stickyEndStates: boolean[]): void; |
| /** |
| * Applies sticky positioning to the row's cells if using the native table layout, and to the |
| * row itself otherwise. |
| * @param rowsToStick The list of rows that should be stuck according to their corresponding |
| * sticky state and to the provided top or bottom position. |
| * @param stickyStates A list of boolean states where each state represents whether the row |
| * should be stuck in the particular top or bottom position. |
| * @param position The position direction in which the row should be stuck if that row should be |
| * sticky. |
| * |
| */ |
| stickRows(rowsToStick: HTMLElement[], stickyStates: boolean[], position: 'top' | 'bottom'): void; |
| /** |
| * When using the native table in Safari, sticky footer cells do not stick. The only way to stick |
| * footer rows is to apply sticky styling to the tfoot container. This should only be done if |
| * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from |
| * the tfoot element. |
| */ |
| updateStickyFooterContainer(tableElement: Element, stickyStates: boolean[]): void; |
| /** |
| * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating |
| * the zIndex, removing each of the provided sticky directions, and removing the |
| * sticky position if there are no more directions. |
| */ |
| _removeStickyStyle(element: HTMLElement, stickyDirections: StickyDirection[]): void; |
| /** |
| * Adds the sticky styling to the element by adding the sticky style class, changing position |
| * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky |
| * direction and value. |
| */ |
| _addStickyStyle(element: HTMLElement, dir: StickyDirection, dirValue: number): void; |
| /** |
| * Calculate what the z-index should be for the element, depending on what directions (top, |
| * bottom, left, right) have been set. It should be true that elements with a top direction |
| * should have the highest index since these are elements like a table header. If any of those |
| * elements are also sticky in another direction, then they should appear above other elements |
| * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements |
| * (e.g. footer rows) should then be next in the ordering such that they are below the header |
| * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns) |
| * should minimally increment so that they are above non-sticky elements but below top and bottom |
| * elements. |
| */ |
| _getCalculatedZIndex(element: HTMLElement): string; |
| /** Gets the widths for each cell in the provided row. */ |
| _getCellWidths(row: HTMLElement): number[]; |
| /** |
| * Determines the left and right positions of each sticky column cell, which will be the |
| * accumulation of all sticky column cell widths to the left and right, respectively. |
| * Non-sticky cells do not need to have a value set since their positions will not be applied. |
| */ |
| _getStickyStartColumnPositions(widths: number[], stickyStates: boolean[]): number[]; |
| /** |
| * Determines the left and right positions of each sticky column cell, which will be the |
| * accumulation of all sticky column cell widths to the left and right, respectively. |
| * Non-sticky cells do not need to have a value set since their positions will not be applied. |
| */ |
| _getStickyEndColumnPositions(widths: number[], stickyStates: boolean[]): number[]; |
| } |