import { Link } from "react-router"; import { TFunction } from "i18next"; import { RowHeaderDisplayDto } from "~/application/dtos/data/RowHeaderDisplayDto"; import { InputType } from "~/application/enums/shared/InputType"; import InputNumber from "~/components/ui/input/InputNumber"; import InputSelect from "~/components/ui/input/InputSelect"; import InputText from "~/components/ui/input/InputText"; import { isKeyShapedLabel } from "~/utils/i18n/translateLabel"; function safeTitle(t: TFunction, title: string) { const translated = String(t(title)); return translated === title && isKeyShapedLabel(title) ? String(t("shared.invalid")) : translated; } function displayRowValue(t: TFunction, header: RowHeaderDisplayDto, item: T, idxRow: number) { return ( <> {!header.setValue ? ( <> {header.href !== undefined && header.href(item) ? ( { e.stopPropagation(); }} to={header.href(item) ?? ""} className="focus:bg-secondary/90 hover:border-border rounded-md border-b border-dashed border-transparent" > {header.formattedValue ? header.formattedValue(item, idxRow) : header.value(item, idxRow)} ) : ( {header.formattedValue ? header.formattedValue(item, idxRow) : header.value(item, idxRow)} )} ) : ( <> {header.type === undefined || header.type === InputType.TEXT ? ( { if (header.setValue) { header.setValue(e, idxRow); } }} required={!header.inputOptional} /> ) : header.type === InputType.NUMBER ? ( { if (header.setValue) { header.setValue(e, idxRow); } }} required={!header.inputOptional} step={header.inputNumberStep} /> ) : header.type === InputType.SELECT ? ( { if (header.setValue) { header.setValue(Number(e), idxRow); } }} options={header.options ?? []} required={!header.inputOptional} disabled={header.editable && !header.editable(item)} /> ) : ( <> )} )} ); } export default { displayRowValue, };