import { IEventEmitter } from '@breadstone/mosaik-elements'; import type { ITableColumnResizedEventDetail, ITableSortChangedEventDetail } from '../../../events'; import type { ColumnPinning } from '../../../Types/ColumnPinning'; import type { SortDirection } from '../../../Types/SortDirection'; import type { TableSortMode } from '../../../Types/TableSortMode'; import { TableCellBaseElement } from './abstracts/TableCellBaseElement'; import { TableElementIntl } from './intl/TableElementIntl'; import type { ITableHeaderCellElementProps } from './ITableHeaderCellElementProps'; declare const TableHeaderCellElement_base: (abstract new (...args: Array) => import("../../../Behaviors/Themeable").IThemeableProps) & typeof TableCellBaseElement & import("../../../Behaviors/Themeable").IThemeableCtor; /** * Table Header Cell - A single header cell with optional sorting capabilities. * * @element mosaik-table-header-cell * * @slot - The default slot. * * @csspart actions - The actions part. * @csspart content - The content part. * @csspart icon - The sort direction icon part. * @csspart menu - The menu part. * @csspart resize-handle - The resize-handle part. * @csspart root - The root part. * @csspart separator - The separator part. * @csspart sort-index - The sort priority index badge part (visible in multi-sort mode). * @csspart text - The text part. * * @cssprop {String} --table-header-cell-background-color - The cell background color CSS custom property. * @cssprop {String} --table-header-cell-border-color - The cell border color CSS custom property. * @cssprop {String} --table-header-cell-border-radius - The cell border radius CSS custom property. * @cssprop {String} --table-header-cell-border-width - The cell border width CSS custom property. * @cssprop {String} --table-header-cell-font-family - The cell font family CSS custom property. * @cssprop {String} --table-header-cell-font-letter-spacing - The cell font letter spacing CSS custom property. * @cssprop {String} --table-header-cell-font-line-height - The cell font line height CSS custom property. * @cssprop {String} --table-header-cell-font-size - The cell font size CSS custom property. * @cssprop {String} --table-header-cell-font-text-decoration - The cell font text decoration CSS custom property. * @cssprop {String} --table-header-cell-font-text-transform - The cell font text transform CSS custom property. * @cssprop {String} --table-header-cell-font-weight - The cell font weight CSS custom property. * @cssprop {String} --table-header-cell-foreground-color - The cell foreground color CSS custom property. * @cssprop {String} --table-header-cell-gap - The cell gap CSS custom property. * @cssprop {String} --table-header-cell-padding-bottom - The cell padding bottom CSS custom property. * @cssprop {String} --table-header-cell-padding-left - The cell padding left CSS custom property. * @cssprop {String} --table-header-cell-padding-right - The cell padding right CSS custom property. * @cssprop {String} --table-header-cell-padding-top - The cell padding top CSS custom property. * @cssprop {String} --table-header-cell-resize-handle-color - The resize handle color CSS custom property. * @cssprop {String} --table-header-cell-resize-handle-width - The resize handle width CSS custom property. * @cssprop {String} --table-header-cell-separator-color - The column separator color CSS custom property. * @cssprop {String} --table-header-cell-separator-width - The column separator width CSS custom property. * @cssprop {String} --table-header-cell-shadow - The cell shadow CSS custom property. * @cssprop {String} --table-header-cell-shadow-blur - The cell shadow blur CSS custom property. * @cssprop {String} --table-header-cell-shadow-color - The cell shadow color CSS custom property. * @cssprop {String} --table-header-cell-shadow-offset-x - The cell shadow offset x CSS custom property. * @cssprop {String} --table-header-cell-shadow-offset-y - The cell shadow offset y CSS custom property. * @cssprop {String} --table-header-cell-shadow-spread - The cell shadow spread CSS custom property. * @cssprop {String} --table-header-cell-transition-duration - The cell transition duration CSS custom property. * @cssprop {String} --table-header-cell-transition-mode - The cell transition mode CSS custom property. * @cssprop {String} --table-header-cell-transition-property - The cell transition property CSS custom property. * @cssprop {String} --table-header-cell-translate - The cell translate CSS custom property. * * @fires tableSortChanged {TableSortChangedEvent} - Fired when the sort direction of the cell has changed. * @fires tableColumnResized {TableColumnResizedEvent} - Fired when the column has been resized. * @fires tableRequestChooseColumns {TableChooseColumnsEvent} - Fired when the choose columns action is requested from a header cell menu. * * @dependency mosaik-divider - The Divider element. * @dependency mosaik-dropdown-button - The Dropdown Button element. * @dependency mosaik-icon - The Icon element. * @dependency mosaik-menu - The Menu element. * @dependency mosaik-menu-item - The Menu Item element. * @dependency mosaik-text - The Text element. * * @example * Sortable header cell: * ```html * * ``` * * @public */ export declare class TableHeaderCellElement extends TableHeaderCellElement_base implements ITableHeaderCellElementProps { private readonly _inheritance; private readonly _tableSortChanged; private readonly _tableColumnResized; private _intl; private _key; private _sorted; private _sortable; private _sortDirection; private _resizable; private _minWidth; private _maxWidth; private _pinned; private _pinable; private _resizeStartX; private _resizeStartWidth; private _isResizing; private _hideable; private _autoSizeable; private _columnChoosable; private _sortIndex; /** * @public */ constructor(); /** * Returns the `is` property. * * @public * @static * @readonly */ static get is(): string; /** * Returns the inherited `intl` labels for the table header cell. * Falls back to a local default instance when not inside a `TableElement`. * * @public * @readonly */ get intl(): TableElementIntl; set intl(value: TableElementIntl); /** * Gets or sets the `key` property that identifies the column associated with this header cell. * * @public * @attr */ get key(): string; set key(value: string); /** * Gets or sets the `sortable` property that indicates whether this header cell supports sorting. * * @public * @attr */ get sortable(): boolean; set sortable(value: boolean); /** * Gets or sets the `pinable` property that indicates whether this column can be pinned. * * @public * @attr */ get pinable(): boolean; set pinable(value: boolean); /** * Gets or sets the `sortDirection` property that indicates the current sort direction of this header cell. * * @public * @attr */ get sortDirection(): SortDirection | 'none'; set sortDirection(value: SortDirection | 'none'); /** * Returns whether the cell is currently sorted (i.e., has a sort direction other than 'none'). * * @public * @readonly * @attr */ get sorted(): boolean; private set sorted(value); /** * Gets or sets the 1-based sort priority index for multi-sort mode. * `undefined` when the column is not sorted or in single-sort mode. * * @public * @attr */ get sortIndex(): number | undefined; set sortIndex(value: number | undefined); /** * Returns the inherited sort mode from the parent table. * Falls back to `'single'` when not inside a `TableElement`. * * @public * @readonly */ get sortMode(): TableSortMode; /** * Gets or sets the `resizable` property that indicates whether this column can be resized. * * @public * @attr */ get resizable(): boolean; set resizable(value: boolean); /** * Gets or sets the `minWidth` property that indicates the minimum width of this column. * * @public * @attr */ get minWidth(): string; set minWidth(value: string); /** * Gets or sets the `maxWidth` property that indicates the maximum width of this column. * * @public * @attr */ get maxWidth(): string; set maxWidth(value: string); /** * Gets or sets the `pinned` property that indicates the pinning position of this column. * * @public * @attr */ get pinned(): ColumnPinning; set pinned(value: ColumnPinning); /** * Gets or sets the `columnHidden` property that indicates whether this column is hidden. * Overrides the base setter to back-propagate the change to the parent table. * * @public * @override */ get columnHidden(): boolean; set columnHidden(value: boolean); /** * Gets or sets the `hideable` property that indicates whether this column can be hidden. * When `true`, the "Hide column" menu item is shown. * * @public * @attr */ get hideable(): boolean; set hideable(value: boolean); /** * Gets or sets the `autoSizeable` property that indicates whether this column can be auto-sized. * When `true`, the "Auto size column" menu item is shown. * * @public * @attr */ get autoSizeable(): boolean; set autoSizeable(value: boolean); /** * Gets or sets the `columnChoosable` property that indicates whether this column can be chosen. * When `true`, the "Choose Columns" menu item is shown. * * @public * @attr */ get columnChoosable(): boolean; set columnChoosable(value: boolean); /** * Called when the sort direction changes. * Provides reference to `ITableSortChangedEventDetail` as event argument. * * @public * @readonly * @eventProperty * @type IEventEmitter */ get tableSortChanged(): IEventEmitter; /** * Called when the column is resized. * Provides reference to `ITableColumnResizedEventDetail` as event argument. * * @public * @readonly * @eventProperty * @type IEventEmitter */ get tableColumnResized(): IEventEmitter; /** * Sorts the cell in the specified direction. * * @public */ sort(direction?: SortDirection | 'none'): void; /** * Unsorts the cell. * * @public */ unsort(): void; /** * @public * @override */ disconnectedCallback(): void; /** * Starts the column resize operation. * * @public */ startResize(event: PointerEvent): void; /** * Sets the pinning position of this column. * * @public */ pin(position: ColumnPinning): void; /** * Auto-sizes this column based on the widest content across header and body cells. * * @public */ autoSize(): void; /** * Returns the natural content width of this header cell, * by temporarily measuring `[part='root']` at its intrinsic `max-content` width. * * @public */ getContentWidth(): number; /** * Requests the table to open the choose columns editor. * Dispatches a bubbling `tableRequestChooseColumns` event * that the parent `TableElement` will catch. * * @public */ requestChooseColumns(): void; /** * Handles pointer movement during resize. * * @private */ private handlePointerMove; /** * Handles pointer up to end the resize operation. * * @private */ private handlePointerUp; /** * Dispatches the column resized event. * * @private */ private dispatchColumnResize; /** * Cleans up resize event listeners from document. * * @private */ private cleanupResizeListeners; /** * Parses a CSS size value to pixels. * * @private */ private parseSizeValue; /** * Gets the next sort direction in the cycle: 'none' -> 'asc' -> 'desc' -> 'none'. * * @private */ private getNextSortDirection; /** * Single-sort logic: only one column can be sorted at a time (last one wins). * * @private */ private sortSingle; /** * Multi-sort logic: multiple columns can be sorted simultaneously with priority indices. * * @private */ private sortMultiple; /** * Returns the highest sort index among sibling header cells (0 if none are sorted). * * @private */ private getMaxSortIndex; /** * Collects all currently active sorts from sibling header cells, ordered by sort index. * * @private */ private getActiveSorts; } /** * @public */ export declare namespace TableHeaderCellElement { type Props = ITableHeaderCellElementProps; } /** * @public */ declare global { interface HTMLElementTagNameMap { 'mosaik-table-header-cell': TableHeaderCellElement; } } export {}; //# sourceMappingURL=TableHeaderCellElement.d.ts.map