import type {
  Col,
  KeyLabel,
  RecComponent,
  RecStrFuncComponent,
  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-dud.vue'))

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

export const header: Th[][] = [[{ label: 'Kode' }, { label: 'Nama' }, { label: 'Stok' }, { label: 'Item' }, { label: 'Satuan' }]]

export const keys = ['code', 'name', 'stock', 'item_id', 'uom_code', 'action']

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

export const funcParsed: Record<string, (row: any, ...args: any[]) => any> = {
  name: (rec: unknown): unknown => {
    const recX = rec as SmallDetailDto
    return `${recX.name}`.trim()
  },
  item_id: (rec: unknown): unknown => {
    const recX = rec as SmallDetailDto
    return recX.item_id
  },
  uom_code: (rec: unknown): unknown => {
    const recX = rec as SmallDetailDto
    return recX.uom_code
  },
}

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

export const funcHtml: Record<string, (row: any, ...args: any[]) => any> = {}
