/
Bybaleshqa
/
Forktest
Обзор
Документация
Войти
/
Bybaleshqa
/
Forktest
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/tree/src/defaultComponents.ts
93 строки
3 KB
Pavel Uryadyshev
feat(tree): добавлена поддержка виртуализации
01 ноя 2024, 16:22
01 ноя 2024, 16:22
d146fcb
Код
Авторство
О чём код?
import { TreeNodeExpandIcon, TreeNodeExpandIconProps, TreeNodeContent, TreeNodeContentProps, TreeNodeIcon, TreeNodeIconProps, TreeNodeExpandButton, TreeNodeExpandButtonProps, TreeMain, TreeMainProps, TreeNodeCheckbox, TreeNodeCheckboxProps, TreeNodeLoadingIndicatorProps, TreeNodeLoadingIndicator, } from './userComponents' import { TreeItem } from './hooks' import { TreeMainItem, TreeMainItemProps } from './components' export type TreeComponents<TItem = TreeItem> = { /** * Иконка кнопки скрытия/раскрытия узла дерева. */ ExpandIcon: React.ComponentType<TreeNodeExpandIconProps<TItem>> | null /** * Компонент отображаемого контента у узла дерева справа от чекбокса и всех иконок. */ Content: React.ComponentType<TreeNodeContentProps<TItem>> | null /** * Иконка узла дерева. */ Icon: React.ComponentType<TreeNodeIconProps<TItem>> | null /** * Кнопка скрытия/раскрытия узла дерева. */ ExpandButton: React.ComponentType<TreeNodeExpandButtonProps<TItem>> | null /** * Компонент чекбокса. */ Checkbox: React.ComponentType<TreeNodeCheckboxProps<TItem>> | null /** * Компонент загрузки дочерних элементов узла дерева, отображаемый вместо кнопки скрытия/раскрытия. */ LoadingIndicator: React.ComponentType< TreeNodeLoadingIndicatorProps<TItem> > | null /** * Основной компонент дерева. */ TreeMain: React.ComponentType< React.PropsWithChildren<TreeMainProps<TItem>> > | null /** * Базовый элемент дерева. */ Item: React.ComponentType<TreeMainItemProps> | null } export type TreeComponentsConfig<TItem = TreeItem> = Partial< TreeComponents<TItem> > export const defaultTreeComponents: TreeComponents = { Content: TreeNodeContent, Icon: TreeNodeIcon, ExpandButton: TreeNodeExpandButton, Checkbox: TreeNodeCheckbox, ExpandIcon: TreeNodeExpandIcon, LoadingIndicator: TreeNodeLoadingIndicator, TreeMain, Item: TreeMainItem, } export type TreeComponentsGeneric<TItem = TreeItem> = TreeComponents<TItem> export const getComponents = <TItem = TreeItem>( componentProp?: TreeComponentsConfig<TItem> | undefined ): TreeComponentsGeneric<TItem> => ({ ...defaultTreeComponents, ...componentProp, } as TreeComponentsGeneric<TItem>) export type { TreeNodeCheckboxProps, TreeNodeContentProps, TreeNodeExpandButtonProps, TreeNodeExpandIconProps, TreeNodeIconProps, TreeNodeLoadingIndicatorProps, TreeMainProps, TreeMainItemProps, }