ldc-groupe/resources/ts/lib/mapPivotOptions.ts

40 lines
1 KiB
TypeScript
Raw Permalink Normal View History

2026-02-12 15:42:22 +01:00
// * Other
import { Model } from "@/back/types/global";
/**
2026-02-12 15:42:22 +01:00
* Extract ids from model relation pivot and format options
* for a multi select component.
*/
2026-02-12 15:42:22 +01:00
export function mapPivotOptions<T extends Model, D extends Model>(
model: T[],
data?: D[],
2026-02-12 15:42:22 +01:00
valueKey?: keyof T,
2026-02-10 15:52:48 +01:00
locale?: string | null,
) {
2026-02-12 15:42:22 +01:00
const options = model?.length
? model.map((opt) => {
const raw = opt[valueKey as keyof T] as unknown;
return {
value: opt.id.toString(),
label:
locale && typeof raw === "object" && raw !== null
? (raw as Record<string, string>)[locale]
: (raw as string),
};
})
: [];
const defaultValue = data?.length
? data.map((item) => item.id.toString())
: [];
return { options, defaultValue };
}
2026-02-12 15:42:22 +01:00
export function extractIdsFromDatabasePivotRelation<D extends Model>(
data?: D[],
): number[] {
return data ? data.map((item) => item.id) : [];
}