import type { IEventDetail } from '@breadstone/mosaik-elements'; import { IEventEmitter } from '@breadstone/mosaik-elements'; import type { DropEvent } from '../../../../DragDrop'; import type { ITableColumnEditorChangedEventDetail, ITableSelectionChangedEventDetail, TableSelectionChangedEvent, TableSortChangedEvent } from '../../../events'; import { TableSelectionMode } from '../../../Types/TableSelectionMode'; import { TableSelectionType } from '../../../Types/TableSelectionType'; import type { TableSortMode } from '../../../Types/TableSortMode'; import { ItemsElement } from '../Abstracts/Items/ItemsElement'; import { TableElementIntl } from '../Table/intl/TableElementIntl'; import type { IDataTableColumnDefinition } from './IDataTableColumnDefinition'; import type { IDataTableElementProps } from './IDataTableElementProps'; declare const DataTableElement_base: (abstract new (...args: Array) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new () => ItemsElement<{}>) & import("../../../Behaviors/Themeable").IThemeableCtor; /** * DataTable - A comprehensive data presentation component for displaying structured information in rows and columns. * * @description * Provides advanced data table functionality including sorting, filtering, pagination, and selection * capabilities. Designed for displaying large datasets with efficient rendering and user interaction * features for data analysis and management tasks. * * @name DataTableElement * @element mosaik-data-table * @category Selectors * * @slot caption - The caption slot. * @slot summary - The summary slot. * * @csspart banner - The banner part. * @csspart editor - The editor part. * @csspart editor-panel - The editor-panel part. * @csspart editor-panel-backdrop - The editor-panel-backdrop part. * @csspart table - The table part. * * @cssprop {String} --data-table-border-radius - The table border radius CSS custom property. * @cssprop {String} --data-table-font-family - The table font family CSS custom property. * @cssprop {String} --data-table-font-letter-spacing - The table font letter spacing CSS custom property. * @cssprop {String} --data-table-font-line-height - The table font line height CSS custom property. * @cssprop {String} --data-table-font-size - The table font size CSS custom property. * @cssprop {String} --data-table-font-text-decoration - The table font text decoration CSS custom property. * @cssprop {String} --data-table-font-text-transform - The table font text transform CSS custom property. * @cssprop {String} --data-table-font-weight - The table font weight CSS custom property. * @cssprop {String} --data-table-gap - The table gap CSS custom property. * @cssprop {String} --data-table-padding-bottom - The table padding bottom CSS custom property. * @cssprop {String} --data-table-padding-left - The table padding left CSS custom property. * @cssprop {String} --data-table-padding-right - The table padding right CSS custom property. * @cssprop {String} --data-table-padding-top - The table padding top CSS custom property. * @cssprop {String} --data-table-shadow - The table shadow CSS custom property. * @cssprop {String} --data-table-shadow-blur - The table shadow blur CSS custom property. * @cssprop {String} --data-table-shadow-color - The table shadow color CSS custom property. * @cssprop {String} --data-table-shadow-offset-x - The table shadow offset x CSS custom property. * @cssprop {String} --data-table-shadow-offset-y - The table shadow offset y CSS custom property. * @cssprop {String} --data-table-shadow-spread - The table shadow spread CSS custom property. * @cssprop {String} --data-table-transition-duration - The table transition duration CSS custom property. * @cssprop {String} --data-table-transition-mode - The table transition mode CSS custom property. * @cssprop {String} --data-table-transition-property - The table transition property CSS custom property. * @cssprop {String} --data-table-translate - The table translate CSS custom property. * * @fires tableSelectionChanged {TableSelectionChangedEvent} - Fired when the selection of the table has changed. * @fires dataTableEditorOpened {DataTableEditorOpenedEvent} - Fired when the column editor is opened. * @fires dataTableEditorClosed {DataTableEditorClosedEvent} - Fired when the column editor is closed. * * @dependency mosaik-backdrop - The Backdrop element. * @dependency mosaik-banner - The Banner element. * @dependency mosaik-button - The Button element. * @dependency mosaik-table - The Table element. * @dependency mosaik-table-body - The Table Body element. * @dependency mosaik-table-body-cell - The Table Body Cell element. * @dependency mosaik-table-body-row - The Table Body Row element. * @dependency mosaik-table-column-editor - The Table Column Editor element. * @dependency mosaik-table-header - The Table Header element. * @dependency mosaik-table-header-cell - The Table Header Cell element. * @dependency mosaik-table-header-row - The Table Header Row element. * * @example * ```html * * * * * * * * ``` * * @public */ export declare class DataTableElement extends DataTableElement_base implements IDataTableElementProps { private readonly _intl; private readonly _tableSelectionChanged; private readonly _dataTableEditorOpened; private readonly _dataTableEditorClosed; private _alternating; private _autoGenerateColumns; private _caption; private _columnDefinitions; private _selectionType; private _selectionMode; private _resizable; private _sortable; private _pinable; private _hideable; private _autoSizeable; private _columnChoosable; private _reorderable; private _sortMode; private _editorOpened; private _sorted; private _sortedSource; private _columnWidths; private _suppressColumnsChanged; /** * @public */ constructor(); /** * Returns the `is` property. * * @public * @static * @readonly */ static get is(): string; /** * Returns the `intl` property. * * @public * @readonly */ get intl(): TableElementIntl; /** * Gets or sets the `alternating` property. * * @public * @attr */ get alternating(): boolean; set alternating(value: boolean); /** * Gets or sets the `autoGenerateColumns` property. * * @public * @attr */ get autoGenerateColumns(): boolean; set autoGenerateColumns(value: boolean); /** * Gets or sets the `columnDefinitions` property. * * @public */ get columnDefinitions(): Array; set columnDefinitions(value: Array); /** * Gets or sets the `caption` property. * * @public * @attr */ get caption(): string; set caption(value: string); /** * Gets or sets the `selectionType` property. * * @public * @attr */ get selectionType(): TableSelectionType; set selectionType(value: TableSelectionType); /** * Gets or sets the `selectionMode` property. * * @public * @attr */ get selectionMode(): TableSelectionMode; set selectionMode(value: TableSelectionMode); /** * Gets or sets the `resizable` property. * When `true`, all columns are resizable by default unless overridden per column. * * @public * @attr */ get resizable(): boolean; set resizable(value: boolean); /** * Gets or sets the `sortable` property. * When `true`, all columns are sortable by default unless overridden per column. * * @public * @attr */ get sortable(): boolean; set sortable(value: boolean); /** * Gets or sets the `pinable` property. * When `true`, all columns are pinable by default unless overridden per column. * * @public * @attr */ get pinable(): boolean; set pinable(value: boolean); /** * Gets or sets the `hideable` property. * When `true`, all columns are hideable by default unless overridden per column. * * @public * @attr */ get hideable(): boolean; set hideable(value: boolean); /** * Gets or sets the `autoSizeable` property. * When `true`, all columns support auto-sizing by default unless overridden per column. * * @public * @attr */ get autoSizeable(): boolean; set autoSizeable(value: boolean); /** * Gets or sets the `columnChoosable` property. * When `true`, the column chooser is available for all columns by default unless overridden per column. * * @public * @attr */ get columnChoosable(): boolean; set columnChoosable(value: boolean); /** * Gets or sets the `reorderable` property. * When `true`, all columns can be reordered via drag and drop by default unless overridden per column. * * @public * @attr */ get reorderable(): boolean; set reorderable(value: boolean); /** * Gets or sets the `sortMode` property. * Defines whether sort is single-column (default) or multi-column. * * @public * @attr */ get sortMode(): TableSortMode; set sortMode(value: TableSortMode); /** * Gets whether the column editor is open. * * @public * @readonly */ get editorOpened(): boolean; /** * Gets a `boolean` that indicates the table header is sorted or not. * Returns `true` if the table header is sorted, otherwise `false`. * * @public * @readonly * @attr */ get sorted(): boolean; /** * @public * @readonly */ get sortedSource(): Array; /** * Called when the selection of the table has changed. * Provides reference to `ITableSelectionChangedEventDetail` as event argument. * * @public * @readonly * @eventProperty * @type IEventEmitter */ get tableSelectionChanged(): IEventEmitter; /** * Called when the column editor is opened. * Provides reference to `IEventDetail` as event argument. * * @public * @readonly * @eventProperty * @type IEventEmitter */ get dataTableEditorOpened(): IEventEmitter; /** * Called when the column editor is closed. * Provides reference to `IEventDetail` as event argument. * * @public * @readonly * @eventProperty * @type IEventEmitter */ get dataTableEditorClosed(): IEventEmitter; /** * Gets whether all columns are currently hidden. * * @public * @readonly */ get allColumnsHidden(): boolean; /** * @protected * @override */ protected updated(changedProperties: Map): void; /** * @protected * @override */ protected onSourceChanged(prev: Array, next: Array): void; /** * @template * @private */ getColumns(): Array; /** * Returns the CSS grid columns layout string based on tracked per-column widths. * Falls back to `1fr` for columns without a stored width. * * @template * @private */ getColumnsLayout(): string; /** * @template * @private */ onSortChanged(e: TableSortChangedEvent): void; /** * Syncs column metadata (hidden, pinned) from the inner table back to column definitions. * * @template * @private */ onColumnsChanged(): void; /** * Opens the column editor. * * @public */ openEditor(): void; /** * Closes the column editor. * * @public */ closeEditor(): void; /** * Handles the `tableSelectionChanged` event from the inner table and re-emits it. * * @template * @private */ onTableSelectionChanged(e: TableSelectionChangedEvent): void; /** * Applies column editor changes back to the column definitions. * * @private * @hidden */ applyColumnEditorChanges(detail: ITableColumnEditorChangedEventDetail): void; /** * Handles a drop event from header cell drag-and-drop reordering. * Reorders column definitions to match the new drop position. * * @template * @private */ handleHeaderCellDrop(event: DropEvent): void; /** * Snapshots the current column widths from the inner table element and stores them by column key. * * @private */ private snapshotColumnWidths; /** * Snapshots column widths from the DOM by querying the inner table. * * @private */ private snapshotColumnWidthsFromDom; /** * @private */ private sortByColumn; /** * Single-sort change handler: applies a single column sort (existing behavior). * * @private */ private onSingleSortChanged; /** * Multi-sort change handler: applies a compound sort across all active sort columns. * * @private */ private onMultiSortChanged; /** * Sorts data by multiple columns using a comparator chain. * Columns are compared in sort-index order (1 = highest priority). * * @private */ private sortByMultipleColumns; } /** * @public */ export declare namespace DataTableElement { type Props = IDataTableElementProps; } /** * @public */ declare global { interface HTMLElementTagNameMap { 'mosaik-data-table': DataTableElement; } } export {}; //# sourceMappingURL=DataTableElement.d.ts.map