import { TableV2FixedDir } from 'element-plus' import type { Ref } from 'vue' import type { TableColumn } from '@/views/_components/table/IvyTableColumn' import { selectCellRenderer, selectHeaderRenderer } from '@/views/_components/table/renderers' export interface SelectColumnOptions { allSelected: Ref toggleAll: (value: boolean) => void headerAriaLabel?: string cellAriaLabel?: string width?: number minWidth?: number overrides?: Partial } export function selectColumn( options: SelectColumnOptions, ): TableColumn { const width = options.width ?? 44 return { key: 'select', width, minWidth: options.minWidth ?? width, headerRenderer: selectHeaderRenderer({ allSelected: options.allSelected, toggleAll: options.toggleAll, ariaLabel: options.headerAriaLabel, }), cellRenderer: selectCellRenderer({ ariaLabel: options.cellAriaLabel, }), visible: true, showInModal: false, fixed: TableV2FixedDir.LEFT, ...options.overrides, } }