/
githubmirror
/
halo
Обзор
Документация
Войти
/
githubmirror
/
halo
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ui/src/formkit/inputs/array/renderers/index.ts
67 строк
2 KB
Takagi
fix: array component does not support multiple image selection (#8360)
26 фев 2026, 05:51
Не верифицирован
26 фев 2026, 05:51
76570a7
Код
Авторство
О чём код?
import type { FormKitNode } from "@formkit/core"; import { isNil } from "es-toolkit"; import { renderAttachmentLabelValue } from "./attachment"; import { renderCategorySelectLabelValue } from "./category-select"; import { renderCheckboxLabelValue } from "./checkbox"; import { renderIconifyLabelValue } from "./iconify"; import { renderNativeSelectLabelValue } from "./native-select"; import { renderRadioLabelValue } from "./radio"; import { renderSelectLabelValue } from "./select"; import { renderTagSelectLabelValue } from "./tag-select"; import { renderToggleLabelValue } from "./toggle"; import type { LabelValueRenderer, LabelValueResult } from "./types"; /** * Default renderer for unknown types */ const defaultRenderer: LabelValueRenderer = ({ value, }: { value: unknown; }): LabelValueResult => { return isNil(value) ? { value: "" } : { value: String(value) }; }; /** * Renderer registry */ const rendererRegistry = new Map<string, LabelValueRenderer>([ ["select", renderSelectLabelValue], ["nativeSelect", renderNativeSelectLabelValue], ["iconify", renderIconifyLabelValue], ["checkbox", renderCheckboxLabelValue], ["radio", renderRadioLabelValue], ["toggle", renderToggleLabelValue], ["tagSelect", renderTagSelectLabelValue], ["categorySelect", renderCategorySelectLabelValue], ["attachment", renderAttachmentLabelValue], ]); /** * Register a custom renderer for a specific node type */ export function registerRenderer( nodeType: string, renderer: LabelValueRenderer ): void { rendererRegistry.set(nodeType, renderer); } /** * Render item label value based on node type */ export async function renderItemLabelValue( node: FormKitNode<unknown>, value: unknown ): Promise<LabelValueResult | LabelValueResult[]> { const originalType = node.props.originalType; const renderer = rendererRegistry.get(originalType); if (renderer) { return await renderer({ node, value }); } const nodeType = node.props.type as string; const typeNodeRenderer = rendererRegistry.get(nodeType) || defaultRenderer; return await typeNodeRenderer({ node, value }); } export type { LabelValueRenderer, LabelValueResult };