You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							126 lines
						
					
					
						
							7.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							126 lines
						
					
					
						
							7.2 KiB
						
					
					
				| /** | |
|  * @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'; | |
| import { _CoalescedStyleScheduler } from './coalesced-style-scheduler'; | |
| import { StickyPositioningListener } from './sticky-position-listener'; | |
| 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 _coalescedStyleScheduler; | |
|     private _isBrowser; | |
|     private readonly _needsPositionStickyOnElement; | |
|     private readonly _positionListener?; | |
|     private _cachedCellWidths; | |
|     private readonly _borderCellCss; | |
|     /** | |
|      * @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. | |
|      * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells | |
|      *     using inline styles. If false, it is assumed that position: sticky is included in | |
|      *     the component stylesheet for _stickCellCss. | |
|      * @param _positionListener A listener that is notified of changes to sticky rows/columns | |
|      *     and their dimensions. | |
|      */ | |
|     constructor(_isNativeHtmlTable: boolean, _stickCellCss: string, direction: Direction, _coalescedStyleScheduler: _CoalescedStyleScheduler, _isBrowser?: boolean, _needsPositionStickyOnElement?: boolean, _positionListener?: StickyPositioningListener | undefined); | |
|     /** | |
|      * 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. | |
|      * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each | |
|      *     column cell. If `false` cached widths will be used instead. | |
|      */ | |
|     updateStickyColumns(rows: HTMLElement[], stickyStartStates: boolean[], stickyEndStates: boolean[], recalculateCellWidths?: 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, isBorderElement: boolean): 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, recalculateCellWidths?: 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. | |
|      */ | |
|     _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[]; | |
| }
 |