bootstrap-vue-3
Version:
Early (but lovely) implementation of Vue 3, Bootstrap 5 and Typescript
35 lines (29 loc) • 1.04 kB
text/typescript
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import type {TableField, TableFieldObject, TableItem} from '@/types'
import {isObject, isString} from '@/utils/inspect'
import {startCase} from '@/utils/stringUtils'
const useItemHelper = () => {
const normaliseFields = (origFields: TableField[], items: TableItem[]): TableFieldObject[] => {
const fields: TableFieldObject[] = []
if (!origFields?.length && items?.length) {
Object.keys(items[0]).forEach((k) => fields.push({key: k, label: startCase(k)}))
return fields
}
if (Array.isArray(origFields)) {
origFields.forEach((f) => {
if (typeof f === 'string') {
fields.push({key: f, label: startCase(f)})
} else if (isObject(f) && f.key && isString(f.key)) {
fields.push({...f})
}
// todo handle Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }
})
return fields
}
return fields
}
return {
normaliseFields,
}
}
export default useItemHelper