useTableStyle.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import type {
  2. TableColumn,
  3. TableColumnInGroup,
  4. CellSlotProps
  5. } from '../type'
  6. type RowClassGetter = (param: {
  7. columns: TableColumn[] | TableColumnInGroup[]
  8. rowData: any
  9. rowIndex: number
  10. }) => string
  11. type CellClassGetter = (param: CellSlotProps) => string
  12. const defaultCellClass = 'el-table-v2__cell-text'
  13. export default function useTableStyle() {
  14. const rowClass: RowClassGetter = ({ columns, rowData, rowIndex }) => {
  15. const classes: string[] = []
  16. if (rowIndex <= 1) {
  17. classes.push('bg-gray')
  18. }
  19. if (rowIndex === 1) {
  20. classes.push('underline-red')
  21. }
  22. return classes.join(' ')
  23. }
  24. const cellClass: CellClassGetter = ({
  25. column,
  26. columns,
  27. columnIndex,
  28. rowData,
  29. rowIndex,
  30. }) => {
  31. const classes: string[] = [defaultCellClass]
  32. if (['4/243', '0/6'].includes(rowData[column.dataKey])) {
  33. classes.push('cell-warning')
  34. }
  35. if (['5/357'].includes(rowData[column.dataKey])) {
  36. classes.push('cell-error')
  37. }
  38. if (['flightNO'].includes(column.dataKey)) {
  39. classes.push('cell-click')
  40. }
  41. return classes.join(' ')
  42. }
  43. return {
  44. rowClass,
  45. cellClass,
  46. }
  47. }