import type {
  Col,
  KeyLabel,
  RecComponent,
  RecStrFuncComponent,
  RecStrFuncUnknown,
  Th,
} from '~/components/pub/custom-ui/data/types'
import { defineAsyncComponent } from 'vue'

type SmallDetailDto = any

const action = defineAsyncComponent(() => import('~/components/pub/custom-ui/data/dropdown-action-ud.vue'))

export const cols: Col[] = [{ width: 100 }, {}, {}, {}, { width: 50 }]

export const header: Th[][] = [
  [{ label: 'Id' }, { label: 'Nama' }, { label: 'Kode' }, { label: 'Specialist' }, { label: '' }],
]
export const keys = ['id', 'name', 'cellphone', 'religion_code', 'action']

export const delKeyNames: KeyLabel[] = [
  { key: 'code', label: 'Kode' },
  { key: 'name', label: 'Nama' },
]

export const funcParsed: RecStrFuncUnknown = {
  name: (rec: unknown): unknown => {
    const recX = rec as SmallDetailDto
    return `${recX.firstName} ${recX.lastName || ''}`.trim()
  },
  unit: (rec: unknown): unknown => {
    const recX = rec as SmallDetailDto
    return recX.unit?.name || '-'
  },
  specialist: (rec: unknown): unknown => {
    const recX = rec as SmallDetailDto
    return recX.specialist?.name || '-'
  },
}

export const funcComponent: RecStrFuncComponent = {
  action(rec, idx) {
    const res: RecComponent = {
      idx,
      rec: rec as object,
      component: action,
      props: {
        size: 'sm',
      },
    }
    return res
  },
}

export const funcHtml: RecStrFuncUnknown = {}
