mirror of
https://github.com/nocodb/nocodb.git
synced 2026-05-01 03:36:40 +00:00
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import type { Api, ColumnType, SelectOptionType, SelectOptionsType } from 'nocodb-sdk'
|
|
import { enumColors } from 'nocodb-sdk'
|
|
|
|
export const appendSelectOptions = async (params: {
|
|
api: Api<any>
|
|
col: ColumnType
|
|
addOptions: string[] | SelectOptionType[]
|
|
}) => {
|
|
if (!params.addOptions || params.addOptions.length === 0) {
|
|
return
|
|
}
|
|
|
|
if (!params.col.colOptions) {
|
|
params.col.colOptions = {
|
|
options: [],
|
|
} as SelectOptionsType
|
|
}
|
|
const existingOptionsLength = (params.col.colOptions as SelectOptionsType).options.length ?? 0
|
|
const optionsToAdd =
|
|
typeof params.addOptions[0] === 'string'
|
|
? params.addOptions.map((k, i) => {
|
|
return {
|
|
fk_column_id: params.col.id,
|
|
title: k,
|
|
order: existingOptionsLength + i + 1,
|
|
color: enumColors.light[(existingOptionsLength + i) % enumColors.light.length],
|
|
} as SelectOptionType
|
|
})
|
|
: (params.addOptions as SelectOptionType[])
|
|
|
|
;(params.col.colOptions as SelectOptionsType).options = [
|
|
...(params.col.colOptions as SelectOptionsType).options,
|
|
...optionsToAdd,
|
|
]
|
|
await params.api.dbTableColumn.update(params.col.id!, params.col as any)
|
|
}
|