import { NLocale } from "../../locales/common/enUS.js"; import { ExtractPublicPropTypes } from "../../_utils/naive/extract-public-props.js"; import { MaybeArray } from "../../_utils/vue/call.js"; import "../../_utils/index.js"; import { ScrollTo } from "../../_internal/scrollbar/src/Scrollbar.js"; import { PopoverProps } from "../../popover/src/Popover.js"; import "../../popover/index.js"; import { EllipsisProps } from "../../ellipsis/src/Ellipsis.js"; import { PaginationProps } from "../../pagination/src/Pagination.js"; import "../../pagination/index.js"; import { ScrollbarProps } from "../../scrollbar/src/Scrollbar.js"; import { DataTableTheme, DataTableThemeOverrides } from "../styles/light.js"; import "../styles/index.js"; import { DataTableGetCsvCell, DataTableGetCsvHeader, DataTableSize, DataTableSpinProps } from "./public-types.js"; import { ColItem, RowItem } from "./use-group-header.js"; import "../../locales/index.js"; import { MergedTheme } from "../../_mixins/use-theme.js"; import "../../_mixins/index.js"; import { CSSProperties, ExtractPropTypes, HTMLAttributes, PropType, Ref, VNode, VNodeChild } from "vue"; import { VirtualListInst, VirtualListScrollTo } from "vueuc"; import { TreeMate, TreeNode } from "treemate"; //#region src/data-table/src/interface.d.ts declare const dataTableProps: { readonly onUnstableColumnResize: PropType<(resizedWidth: number, limitedWidth: number, column: TableBaseColumn, getColumnWidth: (key: ColumnKey) => number | undefined) => void>; readonly pagination: { readonly type: PropType; readonly default: false; }; readonly paginateSinglePage: { readonly type: BooleanConstructor; readonly default: true; }; readonly minHeight: PropType; readonly maxHeight: PropType; readonly columns: { readonly type: PropType>; readonly default: () => never[]; }; readonly rowClassName: PropType>; readonly rowProps: PropType>; readonly rowKey: PropType>; readonly summary: PropType>; readonly data: { readonly type: PropType; readonly default: () => never[]; }; readonly loading: BooleanConstructor; readonly bordered: { readonly type: PropType; readonly default: undefined; }; readonly bottomBordered: { readonly type: PropType; readonly default: undefined; }; readonly striped: BooleanConstructor; readonly scrollX: PropType; readonly defaultCheckedRowKeys: { readonly type: PropType; readonly default: () => never[]; }; readonly checkedRowKeys: PropType; readonly singleLine: { readonly type: BooleanConstructor; readonly default: true; }; readonly singleColumn: BooleanConstructor; readonly size: PropType; readonly remote: BooleanConstructor; readonly defaultExpandedRowKeys: { readonly type: PropType; readonly default: readonly []; }; readonly defaultExpandAll: BooleanConstructor; readonly expandedRowKeys: PropType; readonly stickyExpandedRows: BooleanConstructor; readonly virtualScroll: BooleanConstructor; readonly virtualScrollX: BooleanConstructor; readonly virtualScrollHeader: BooleanConstructor; readonly headerHeight: { readonly type: NumberConstructor; readonly default: 28; }; readonly heightForRow: PropType; readonly minRowHeight: { readonly type: NumberConstructor; readonly default: 28; }; readonly tableLayout: { readonly type: PropType<"auto" | "fixed">; readonly default: "auto"; }; readonly allowCheckingNotLoaded: BooleanConstructor; readonly cascade: { readonly type: BooleanConstructor; readonly default: true; }; readonly childrenKey: { readonly type: StringConstructor; readonly default: "children"; }; readonly indent: { readonly type: NumberConstructor; readonly default: 16; }; readonly flexHeight: BooleanConstructor; readonly summaryPlacement: { readonly type: PropType<"top" | "bottom">; readonly default: "bottom"; }; readonly paginationBehaviorOnFilter: { readonly type: PropType<"first" | "current">; readonly default: "current"; }; readonly filterIconPopoverProps: PropType; readonly scrollbarProps: PropType; readonly renderCell: PropType<(value: any, rowData: object, column: TableBaseColumn) => VNodeChild>; readonly renderExpandIcon: PropType; readonly spinProps: PropType; readonly getCsvCell: PropType; readonly getCsvHeader: PropType; readonly onLoad: PropType; readonly 'onUpdate:page': PropType; readonly onUpdatePage: PropType; readonly 'onUpdate:pageSize': PropType; readonly onUpdatePageSize: PropType; readonly 'onUpdate:sorter': PropType>; readonly onUpdateSorter: PropType>; readonly 'onUpdate:filters': PropType>; readonly onUpdateFilters: PropType>; readonly 'onUpdate:checkedRowKeys': PropType>; readonly onUpdateCheckedRowKeys: PropType>; readonly 'onUpdate:expandedRowKeys': PropType>; readonly onUpdateExpandedRowKeys: PropType>; readonly onScroll: PropType<(e: Event) => void>; readonly onPageChange: PropType; readonly onPageSizeChange: PropType; readonly onSorterChange: PropType | undefined>; readonly onFiltersChange: PropType | undefined>; readonly onCheckedRowKeysChange: PropType | undefined>; readonly theme: PropType; readonly themeOverrides: PropType; readonly builtinThemeOverrides: PropType; }; interface DataTableSlots { default?: () => VNode[]; empty?: () => VNode[]; loading?: () => VNode[]; } type FilterOptionValue = string | number; type ColumnKey = string | number; type RowKey = string | number; type SortOrderFlag = 1 | -1 | 0; type RowData = Record; type InternalRowData = Record; type CreateRowKey = (row: T) => RowKey; type CreateRowClassName = (row: T, index: number) => string; type CreateRowProps = (row: T, index: number) => HTMLAttributes; type CreateCellProps = (row: T, index: number) => HTMLAttributes; type CompareFn = (row1: T, row2: T) => number; type Sorter = CompareFn | SorterMultiple; interface SorterMultiple { multiple: number; compare?: CompareFn | 'default'; } type Filter = (filterOptionValue: FilterOptionValue, row: T) => boolean; interface FilterOption { label: string; value: FilterOptionValue; } type TmNode = TreeNode; type SortOrder = 'ascend' | 'descend' | false; type Ellipsis = boolean | EllipsisProps; interface CommonColumnInfo { fixed?: 'left' | 'right'; width?: number | string; minWidth?: number | string; maxWidth?: number | string; className?: string; align?: 'left' | 'center' | 'right'; titleAlign?: 'left' | 'center' | 'right'; ellipsis?: Ellipsis; ellipsisComponent?: 'ellipsis' | 'performant-ellipsis'; allowExport?: boolean; cellProps?: (rowData: T, rowIndex: number) => HTMLAttributes; } type DataTableHeightForRow = (rowData: T, rowIndex: number) => number; type TableColumnTitle = string | ((column: TableBaseColumn) => VNodeChild); type TableExpandColumnTitle = string | ((column: TableExpandColumn) => VNodeChild); type TableColumnGroupTitle = string | ((column: TableColumnGroup) => VNodeChild); type TableColumnGroup = { title?: TableColumnGroupTitle; type?: never; key: ColumnKey; children: Array>; resizable?: boolean; filterOptions?: never; } & CommonColumnInfo; type TableBaseColumn = { title?: TableColumnTitle; titleColSpan?: number; type?: never; key: ColumnKey; tree?: boolean; sorter?: boolean | Sorter | 'default'; defaultSortOrder?: SortOrder; sortOrder?: SortOrder; customNextSortOrder?: (order: SortOrder) => SortOrder; resizable?: boolean; minWidth?: string | number; maxWidth?: string | number; filter?: 'default' | boolean | Filter; filterOptions?: FilterOption[]; filterOptionValues?: FilterOptionValue[] | null; filterOptionValue?: FilterOptionValue | null; filterMode?: 'or' | 'and'; defaultFilterOptionValues?: FilterOptionValue[] | null; defaultFilterOptionValue?: FilterOptionValue | null; filterMultiple?: boolean; render?: (rowData: T, rowIndex: number) => VNodeChild; renderFilter?: RenderFilter; renderFilterIcon?: RenderFilterIcon; renderSorter?: RenderSorter; renderSorterIcon?: RenderSorterIcon; renderFilterMenu?: RenderFilterMenu; colSpan?: (rowData: T, rowIndex: number) => number; rowSpan?: (rowData: T, rowIndex: number) => number; } & CommonColumnInfo; type TableSelectionColumn = { type: 'selection'; multiple?: boolean; disabled?: (row: T) => boolean; options?: DataTableSelectionOptions; sorter?: never; resizable?: boolean; filter?: never; filterOptions?: never; filterOptionValues?: never; filterOptionValue?: never; colSpan?: never; rowSpan?: never; } & CommonColumnInfo; type RenderExpand = (row: T, index: number) => VNodeChild; type RenderExpandIcon = ({ expanded, rowData }: { expanded: boolean; rowData: RowData; }) => VNodeChild; type Expandable = (row: T) => boolean; interface TableExpandColumn extends Omit, 'type'> { type: 'expand'; title?: TableExpandColumnTitle; renderExpand: RenderExpand; expandable?: Expandable; } type TableColumn = TableColumnGroup | TableBaseColumn | TableSelectionColumn | TableExpandColumn; type TableColumns = Array>; type DataTableSelectionOptions = Array void; }>; interface DataTableInjection { props: DataTableSetupProps; slots: DataTableSlots; indentRef: Ref; childTriggerColIndexRef: Ref; componentId: string; checkOptionsRef: Ref; hoverKeyRef: Ref; mergedClsPrefixRef: Ref; mergedThemeRef: Ref>; scrollXRef: Ref; rowsRef: Ref; colsRef: Ref; paginatedDataRef: Ref; leftFixedColumnsRef: Ref; rightFixedColumnsRef: Ref; leftActiveFixedColKeyRef: Ref; leftActiveFixedChildrenColKeysRef: Ref; rightActiveFixedColKeyRef: Ref; rightActiveFixedChildrenColKeysRef: Ref; fixedColumnLeftMapRef: Ref>; fixedColumnRightMapRef: Ref>; mergedCurrentPageRef: Ref; someRowsCheckedRef: Ref; allRowsCheckedRef: Ref; mergedSortStateRef: Ref; mergedFilterStateRef: Ref; loadingRef: Ref; rowClassNameRef: Ref; mergedCheckedRowKeySetRef: Ref>; mergedInderminateRowKeySetRef: Ref>; localeRef: Ref; filterMenuCssVarsRef: Ref; mergedExpandedRowKeysRef: Ref; rowKeyRef: Ref; renderExpandRef: Ref; summaryRef: Ref; rawPaginatedDataRef: Ref; virtualScrollRef: Ref; virtualScrollXRef: Ref; minRowHeightRef: Ref; heightForRowRef: Ref; virtualScrollHeaderRef: Ref; headerHeightRef: Ref; bodyWidthRef: Ref; mergedTableLayoutRef: Ref<'auto' | 'fixed'>; maxHeightRef: Ref; minHeightRef: Ref; xScrollableRef: Ref; explicitlyScrollableRef: Ref; rowPropsRef: Ref; flexHeightRef: Ref; headerCheckboxDisabledRef: Ref; stripedRef: Ref; onLoadRef: Ref; loadingKeySetRef: Ref>; paginationBehaviorOnFilterRef: Ref<'current' | 'first'>; expandableRef: Ref | undefined>; stickyExpandedRowsRef: Ref; renderExpandIconRef: Ref; summaryPlacementRef: Ref<'top' | 'bottom'>; filterIconPopoverPropsRef: Ref; treeMateRef: Ref>; scrollbarPropsRef: Ref; doUpdatePage: (page: number) => void; doUpdateExpandedRowKeys: (keys: RowKey[]) => void; doUpdateFilters: (filters: FilterState, sourceColumn: TableBaseColumn) => void; onUnstableColumnResize: (resizedWidth: number, limitedWidth: number, column: TableBaseColumn, getColumnWidth: (key: ColumnKey) => number | undefined) => void; getResizableWidth: (key: ColumnKey) => number | undefined; clearResizableWidth: () => void; doUpdateResizableWidth: (column: TableColumn, width: number) => void; deriveNextSorter: (sorter: SortState | null) => void; doUncheckAll: (checkWholeTable?: boolean) => void; doCheckAll: (checkWholeTable?: boolean) => void; doCheck: (rowKey: RowKey | RowKey[], single: boolean, rowInfo: RowData) => void; doUncheck: (rowKey: RowKey | RowKey[], rowInfo: RowData) => void; handleTableHeaderScroll: (e: Event) => void; handleTableBodyScroll: (e: Event) => void; syncScrollState: (source: 'head' | 'body' | 'layout') => void; setHeaderScrollLeft: (scrollLeft: number) => void; renderCell: Ref VNodeChild)>; } declare const dataTableInjectionKey: import("vue").InjectionKey; interface MainTableInjection { leftActiveFixedColKey: ColumnKey | null; rightActiveFixedColKey: ColumnKey | null; } type RenderFilter = (props: { active: boolean; show: boolean; }) => VNodeChild; type RenderFilterIcon = RenderFilter; type RenderSorter = (props: { order: SortOrder; }) => VNodeChild; type RenderSorterIcon = RenderSorter; type RenderFilterMenu = (actions: { hide: () => void; }) => VNodeChild; type OnUpdateExpandedRowKeys = (keys: RowKey[]) => void; type OnUpdateCheckedRowKeys = (keys: RowKey[], rows: InternalRowData[], meta: { row: InternalRowData | undefined; action: 'check' | 'uncheck' | 'checkAll' | 'uncheckAll'; }) => void; type OnUpdateSorter = (sortState: SortState & SortState[] & null) => void; type OnUpdateSorterImpl = (sortState: SortState | SortState[] | null) => void; type OnUpdateFilters = (filterState: FilterState, sourceColumn: TableBaseColumn) => void; interface SortState { columnKey: ColumnKey; order: SortOrder; sorter: Sorter | boolean | 'default'; } type FilterState = Record; type DataTableScrollTo = ScrollTo & VirtualListScrollTo; interface MainTableRef { getHeaderElement: () => HTMLElement | null; getBodyElement: () => HTMLElement | null; scrollTo: DataTableScrollTo; } interface MainTableBodyRef { getScrollContainer: () => HTMLElement | null; scrollTo: DataTableScrollTo; } interface MainTableHeaderRef { $el: HTMLElement | null; virtualListRef: Ref; } type OnFilterMenuChange = (value: T) => void; type OnFilterMenuChangeImpl = (value: FilterOptionValue[] | FilterOptionValue | null) => void; interface DataTableInst { filter: (filters: FilterState | null) => void; filters: (filters: FilterState | null) => void; clearFilters: () => void; clearSorter: () => void; page: (page: number) => void; sort: (columnKey: ColumnKey, order: SortOrder) => void; scrollTo: DataTableScrollTo; downloadCsv: (options?: CsvOptionsType) => void; getFilteredAndSortedData: () => InternalRowData[]; getCurrentPageData: () => InternalRowData[]; /** @deprecated it but just leave it here, it does no harm */ clearFilter: () => void; } type CreateSummary = (pageData: T[]) => SummaryRowData | SummaryRowData[]; interface SummaryCell { value?: VNodeChild; colSpan?: number; rowSpan?: number; } type SummaryRowData = Record; type DataTableOnLoad = (node: RowData) => Promise; type DataTableSelectionOption = 'all' | 'none'; type DataTableProps = ExtractPublicPropTypes; type DataTableSetupProps = ExtractPropTypes; interface CsvOptionsType { fileName?: string; keepOriginalData?: boolean; } //#endregion export { ColumnKey, CommonColumnInfo, CompareFn, CreateCellProps, CreateRowClassName, CreateRowKey, CreateRowProps, CreateSummary, CsvOptionsType, DataTableHeightForRow, DataTableInjection, DataTableInst, DataTableOnLoad, DataTableProps, DataTableScrollTo, DataTableSelectionOption, DataTableSelectionOptions, DataTableSetupProps, DataTableSlots, Ellipsis, Expandable, Filter, FilterOption, FilterOptionValue, FilterState, InternalRowData, MainTableBodyRef, MainTableHeaderRef, MainTableInjection, MainTableRef, OnFilterMenuChange, OnFilterMenuChangeImpl, OnUpdateCheckedRowKeys, OnUpdateExpandedRowKeys, OnUpdateFilters, OnUpdateSorter, OnUpdateSorterImpl, RenderExpand, RenderExpandIcon, RenderFilter, RenderFilterIcon, RenderFilterMenu, RenderSorter, RenderSorterIcon, RowData, RowKey, SortOrder, SortOrderFlag, SortState, Sorter, SorterMultiple, SummaryCell, SummaryRowData, TableBaseColumn, TableColumn, TableColumnGroup, TableColumnGroupTitle, TableColumnTitle, TableColumns, TableExpandColumn, TableExpandColumnTitle, TableSelectionColumn, TmNode, dataTableInjectionKey, dataTableProps };