import { ElTagColor, TableColumnFilterDateRange, TableColumnFilterFreeSearch, TableColumnFilterMultiValue, TableColumnFilterResetButton } from '..'; import { ActionCell, DefaultCell, TagCell } from './ElTableCell.vue'; import { default as ElButton } from '../ElButton.vue'; import { ElIconProps } from '../ElIcon.vue'; import { ElMobileTableProps, MobileTableRow } from './ElMobileTable.vue'; import { DataRow } from './commonTypes'; export type ResponsiveDataCell = ResponsiveDefaultDataCell | ResponsiveTagDataCell | ResponsiveActionDataCell; export type ResponsiveDefaultDataCell = Omit & { desktopBehaviour?: Pick; mobileBehaviour?: { tertiaryText?: string; amountText?: string; timeText?: string; }; }; export type ResponsiveTagDataCell = Omit & { type: 'tag'; text?: string; color?: ElTagColor; desktopBehaviour?: Pick; }; export type ResponsiveActionDataCell = ActionCell & { type: 'action'; mobileBehaviour?: { primary: InstanceType['$props']; secondary?: InstanceType['$props']; }; }; export type ResponsiveDataRow = { id: string; rowNotSelectable?: boolean; relatedObject?: T; cells: ResponsiveDataCell[]; mobileBehaviour?: { trailingIcon?: ElIconProps; }; }; export type ResponsiveTableColumn = { title: string; filter?: ResponiveTableColumnFilter; desktopBehaviour?: { alignRight?: boolean; noSort?: boolean; }; mobileBehaviour?: { position: 'mainText' | 'secondaryRow' | 'tertiaryRow' | 'amount' | 'time' | 'tags' | 'avatar' | ({ take: keyof Pick; to: 'mainText' | 'secondaryRow' | 'tertiaryRow' | 'amount' | 'time'; withLabel: string; } | { withLabel: string; to: 'avatar'; })[]; }; }; export type ResponiveTableColumnFilter = TableColumnFilterFreeSearch | TableColumnFilterDateRange | (TableColumnFilterMultiValue & { mobileBehaviour?: { /** * Used only if filter type === 'MULTI_VALUE' and column.mobileBehaviour.position is an array */ position?: 'mainText' | 'secondaryRow' | 'tertiaryRow' | 'amount' | 'time' | 'tags' | 'avatar'; }; }) | TableColumnFilterResetButton; export interface ElResponsiveTableProps { columns: ResponsiveTableColumn[]; data: ResponsiveDataRow[]; tableId?: number | string; noFilters?: boolean; rowsSelectionMode?: 'single' | 'multiple'; rowsSelectionDisabled?: boolean; color: 'primary' | 'secondary'; loading?: boolean; sortBy?: { column?: number; order?: 'asc' | 'desc'; }; desktopBehaviour?: { noFooter?: boolean; initialRows?: number; }; mobileBehaviour?: Pick & { selection?: Pick, 'destructiveAction' | 'bulkActionButton' | 'selectedLabel' | 'cancelText'>; }; } declare const _default: __VLS_WithTemplateSlots, { filteredData: import('vue').ComputedRef[] | MobileTableRow[] | undefined>; selectRows: (rowsIds: string[]) => Promise; unselectAllRows: () => void; getDataRows: () => ResponsiveDataRow[]; getSelectedRows: () => ResponsiveDataRow[]; closeMobileTableItemDetails: () => void; }, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, { "rows-selected": (rows: ResponsiveDataRow[]) => void; "mobile:bulk:click": (rows: ResponsiveDataRow[]) => void; "mobile:destructive:click": (rows: ResponsiveDataRow[]) => void; "mobile:selection:exit": () => void; "mobile:item:click": (row: ResponsiveDataRow) => void; }, string, import('vue').PublicProps, Readonly>> & { "onRows-selected"?: ((rows: ResponsiveDataRow[]) => any) | undefined; "onMobile:bulk:click"?: ((rows: ResponsiveDataRow[]) => any) | undefined; "onMobile:destructive:click"?: ((rows: ResponsiveDataRow[]) => any) | undefined; "onMobile:selection:exit"?: (() => any) | undefined; "onMobile:item:click"?: ((row: ResponsiveDataRow) => any) | undefined; }, {}, {}>, { mobile?(_: {}): any; }>; export default _default; type __VLS_NonUndefinedable = T extends undefined ? never : T; type __VLS_TypePropsToRuntimeProps = { [K in keyof T]-?: {} extends Pick ? { type: import('vue').PropType<__VLS_NonUndefinedable>; } : { type: import('vue').PropType; required: true; }; }; type __VLS_WithTemplateSlots = T & { new (): { $slots: S; }; };