import { TemplateResult } from 'lit'; import NileElement from '../internal/nile-element'; import '../nile-checkbox/index'; import '../nile-input/index'; import '../nile-link/index'; import '../nile-icon/index'; import '../nile-lite-tooltip/index'; import type { CSSResultGroup } from 'lit'; export type NileDetailVariant = 'default' | 'selection' | 'light' | 'select-light'; export interface NileDetailSelectionItem { value: string; label?: string; description?: string; prefix?: string; suffix?: string; disabled?: boolean; className?: string; } export interface NileDetailRenderItemConfig { getDisplayText: (item: any) => string; getValue?: (item: any) => string; getSearchText?: (item: any) => string; getDescription?: (item: any) => string; getPrefix?: (item: any) => string; getSuffix?: (item: any) => string; getDisabled?: (item: any) => boolean; getClassName?: (item: any) => string; } type SelectionItem = string | NileDetailSelectionItem | Record; export interface NileDetailSelectionConfig { variant?: NileDetailVariant; heading?: string; description?: string; itemsLabel?: string; items?: SelectionItem[]; selected?: string[]; renderItemConfig?: NileDetailRenderItemConfig; allowHtmlLabel?: boolean; layout?: { orientation?: 'horizontal' | 'vertical' | 'both'; gridRows?: number; gridColumns?: number; matrixColumns?: number; minColumnWidth?: string; laneHeight?: number; maxHeight?: string; expandIconPlacement?: 'left' | 'right'; }; search?: { placeholder?: string; disableLocal?: boolean; }; virtualization?: { enabled?: boolean; threshold?: number; overscan?: number; }; pagination?: { totalCount?: number; pageSize?: number; fetchPage?: (offset: number, limit: number) => Promise; placeholderLabel?: string; }; labels?: { restore?: string; clear?: string; selectedOnly?: string; showAll?: string; }; showSelectedToggle?: boolean; preview?: boolean; previewPercentage?: number; open?: boolean; disabled?: boolean; } export declare class NileDetail extends NileElement { static styles: CSSResultGroup; detail: HTMLDetailsElement; header: HTMLElement; body: HTMLElement; open: boolean; heading: string; description: string; expandIconPlacement: 'left' | 'right'; disabled: boolean; /** When set, the closed state shows a preview of the body content instead of hiding it. */ preview: boolean; /** Percentage (0–100) of the content height shown while previewing. */ previewPercentage: number; variant: NileDetailVariant; items: SelectionItem[]; selected: string[]; renderItemConfig?: NileDetailRenderItemConfig; allowHtmlLabel: boolean; disableLocalSearch: boolean; totalCount?: number; pageSize: number; fetchPage?: (offset: number, limit: number) => Promise; placeholderLabel: string; config?: NileDetailSelectionConfig; searchPlaceholder: string; itemsLabel: string; restoreLabel: string; clearLabel: string; gridRows: number; gridColumns: number; minColumnWidth: string; laneHeight: number; orientation: 'horizontal' | 'vertical' | 'both'; maxHeight: string; matrixColumns: number; virtualize: boolean; virtualizeThreshold: number; overscan: number; private _detailOpen; private _hasSlottedContent; private _searchTerm; private _selectedSet; private _showSelectedOnly; showSelectedToggle: boolean; selectedOnlyLabel: string; showAllLabel: string; private _restoreDefaults; private _gridResizeObserver; private _virtCtrl; private _rowVirtCtrl; private _colVirtCtrl; private _pageCache; private _pendingPages; /** True for any variant that renders the selection UI/behavior. */ private get _isSelectionVariant(); /** True for any variant that applies the light styling. */ private get _isLightVariant(); /** True when preview mode is on with a usable percentage. */ private get _previewEnabled(); /** True when the closed state should currently render the preview. */ private get _isPreviewActive(); private get _isInfiniteMode(); private _effectiveTotalCount; private _getItemAt; private _scheduleFetchForRange; private _loadPage; /** Public: clear the page cache (use after a query change to refetch). */ resetPages(): void; private get _isVirtualized(); private get _columnWidthPx(); firstUpdated(): void; disconnectedCallback(): void; updated(_changed: Map): void; private _syncVirtualizer; private _syncBothVirtualizers; private _setupGridResizeObserver; private _scheduleTooltipOverflowCheck; private _updateTooltipOverflowStates; _onSelectedPropertyChange(): void; _onConfigChange(): void; private _applyConfig; private _syncSelectedFromProperty; private _getItemValue; private _getItemLabel; private _getItemSearchText; private _getItemDescription; private _getItemPrefix; private _getItemSuffix; private _getItemDisabled; private _getItemClassName; private get _filteredItems(); private _onToggleSelectedOnly; private _selectableValues; private get _allChecked(); private get _indeterminate(); private get _countLabel(); private _emitSelectionChange; private _onItemChange; private _onSelectAllChange; private _emitSearch; private _onSearchInput; private _onSearchClear; private _onRestore; private _onClear; private _handleDefaultSlotChange; private _stopHeaderToggle; private _handleSummaryClick; private _handleSummaryKeyDown; handleOpenChange(): Promise; handlePreviewChange(): void; /** Measures the content and clamps the body to the configured preview height. */ private _applyPreviewHeight; private _handlePreviewClick; private _handlePreviewKeyDown; show(): Promise; hide(): Promise; private get _summaryLabel(); private _renderSelectionLabel; private _renderSelectionBody; private _renderItemContent; private _renderItemTooltip; private _renderStaticGrid; private _renderBothVirtualGrid; private _renderVirtualGrid; private _renderPlaceholder; render(): TemplateResult; } export default NileDetail; declare global { interface HTMLElementTagNameMap { 'nile-detail': NileDetail; } }