Files
twenty/packages/twenty-front/src/modules/spreadsheet-import/utils/setSubColumn.ts
T
Félix Malfait 464a480043 Continue ESLINT9 Migration (#13795)
Might already fix #13793
2025-08-10 23:25:58 +02:00

40 lines
1.3 KiB
TypeScript

import {
type SpreadsheetMatchedSelectColumn,
type SpreadsheetMatchedSelectOptionsColumn,
} from '@/spreadsheet-import/types/SpreadsheetColumn';
import { SpreadsheetColumnType } from '@/spreadsheet-import/types/SpreadsheetColumnType';
import { type SpreadsheetMatchedOptions } from '@/spreadsheet-import/types/SpreadsheetMatchedOptions';
export const setSubColumn = (
oldColumn:
| SpreadsheetMatchedSelectColumn
| SpreadsheetMatchedSelectOptionsColumn,
entry: string,
value: string,
): SpreadsheetMatchedSelectColumn | SpreadsheetMatchedSelectOptionsColumn => {
const shouldUnselectValue =
oldColumn.matchedOptions.find((option) => option.entry === entry)?.value ===
value;
const options = oldColumn.matchedOptions.map((option) =>
option.entry === entry
? { ...option, value: shouldUnselectValue ? undefined : value }
: option,
);
const allMatched = options.every(({ value }) => !!value);
if (allMatched) {
return {
...oldColumn,
matchedOptions: options as SpreadsheetMatchedOptions[],
type: SpreadsheetColumnType.matchedSelectOptions,
};
} else {
return {
...oldColumn,
matchedOptions: options as SpreadsheetMatchedOptions[],
type: SpreadsheetColumnType.matchedSelect,
};
}
};