Кастомизация поля UPath¶
Точка расширения UPathNamespaceUtils отвечает за добавление поддержки пространства имен внутри UPathField.
Резолвер принимает в себя сам UPathField:
(uPathField: UPathField<any>) => boolean
Тип точки расширения:
type Meta = {
namespaceId: UniverseNamespace.NamespaceId;
}
UEUPathNamespaceUtils = UeModuleBase<Resolver, Meta> & {
createInnerStore: CreateInnerStore;
optionListRenderer?: OptionListRenderer;
getCustomOptionFilters?: GetUeFiltersFn;
}
где createInnerStore - функция, генерирующая стор, реализующий интерфейс IUPathInnerStore:
type CreateInnerStore = (
namespaceId: UniverseNamespace.NamespaceId,
uPathField: UPathField<any>
) => IUPathInnerStore
optionListRenderer - рендерер списка опций данного пространства имен:
type UPathOptionListRendererProps = {
inputRef: RefObject<HTMLTextAreaElement>;
uPath: UPathField | UPathField<null>;
onSelect: (option: UPathBaseOption | null) => void;
onChange?: (value: string) => void;
toggleFocusLock: (isLocked: boolean) => void;
toggleFocus: (isFocused: boolean) => void;
}
type UPathOptionListComponent = ComponentType<UPathOptionListRendererProps>;
type OptionListRenderer = (uPath: UPathField<any>) => UPathOptionListComponent | undefined;
getCustomOptionFilters - функция, возвращающая фильтры для списка опций typeName и path данного пространства имен:
type GetUeFiltersFn = (uPath: UPathField<any>) => Omit<IUPathFilters, 'namespace'>;