diff --git a/packages/coreui-vue/src/components/table/CTable.ts b/packages/coreui-vue/src/components/table/CTable.ts index 563f6ac8..72898c6a 100644 --- a/packages/coreui-vue/src/components/table/CTable.ts +++ b/packages/coreui-vue/src/components/table/CTable.ts @@ -238,7 +238,7 @@ const CTable = defineComponent({ default: () => [ columnNames.value && columnNames.value.map( - (colName: string) => + (colName: string, idx: number) => item[colName] !== undefined && h( CTableDataCell, @@ -251,7 +251,14 @@ const CTable = defineComponent({ }), }, { - default: () => item[colName], + default: () => { + const column = props.columns![idx]; + const value = item[colName]; + + return typeof column === "object" && column.formatter + ? column.formatter(value) + : value; + } }, ), ), diff --git a/packages/coreui-vue/src/components/table/types.ts b/packages/coreui-vue/src/components/table/types.ts index 8f96b27b..fbb6d2ce 100644 --- a/packages/coreui-vue/src/components/table/types.ts +++ b/packages/coreui-vue/src/components/table/types.ts @@ -4,7 +4,8 @@ export type Column = { // eslint-disable-next-line @typescript-eslint/no-explicit-any _style?: any // eslint-disable-next-line @typescript-eslint/no-explicit-any - _props?: any + _props?: any, + formatter?: (value: unknown) => string } export type FooterItem = {