/
bearury
/
ui-kit-ce
Обзор
Документация
Войти
/
bearury
/
ui-kit-ce
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/tree/src/common/utils.ts
57 строк
1 KB
Pavel Uryadyshev
feat(tree-dnd): реализован новый компонент Tree с поддержкой drag-and-drop
09 июл 2025, 13:07
09 июл 2025, 13:07
a06fe68
Код
Авторство
О чём код?
import React from 'react' import { DATA_ITEM_ID, DATA_MAIN_TREE, DEFAULT_SIZE, TreeSpacingVertical, TREE_CONTROL_ELEMENT_SIZE, DEFAULT_SPACING, } from './constants' import { TreeSizeType } from './types' export const getDataIdProperty = (key: React.Key): Record<string, string> => ({ [DATA_ITEM_ID]: String(key), }) export const getTreeProperty = (): Record<string, boolean> => ({ [DATA_MAIN_TREE]: true, }) export const getMinTreeNodeHeight = ( controlSize: number, size: TreeSizeType = DEFAULT_SIZE ): number => { return controlSize + TreeSpacingVertical[size] * 2 } export const getControlFullWidth = (): number => TREE_CONTROL_ELEMENT_SIZE + DEFAULT_SPACING * 2 export const getControlFullHeight = (size: TreeSizeType): number => TREE_CONTROL_ELEMENT_SIZE + TreeSpacingVertical[size] * 2 export const getTreeNodeIndent = ( withHalfLevelSpacer = false, value = getControlFullWidth() ): number => { return withHalfLevelSpacer ? value / 2 : value } export const toAriaBoolean = (value: boolean): 'true' | 'false' => String(value) as 'true' | 'false' export const scrollNodeIntoView = ( treeElement: HTMLUListElement | null, key: React.Key, options?: ScrollIntoViewOptions ): void => { if (!treeElement) { return } treeElement.querySelector(`[${DATA_ITEM_ID}=${key}]`)?.scrollIntoView({ ...options, behavior: options?.behavior || 'auto', block: options?.block || 'nearest', }) }