インポート
import { Tree } from '@k8ordo/ui';使い方
項目は { id, label, icon?, children? } の木で渡す。上下で見えている項目を移り、右で枝を開いて最初の子へ、左で枝を閉じて親へ戻る。Home / End、Enter / Space での選択、先頭の文字での移動もできる。
- src
- components
- index.ts
- package.json
- README.md
<Tree
defaultExpandedIds={['src']}
items={[
{
id: 'src',
label: 'src',
children: [
{
id: 'components',
label: 'components',
children: [{ id: 'button', label: 'button.tsx' }],
},
{ id: 'index', label: 'index.ts' },
],
},
{ id: 'readme', label: 'README.md' },
]}
label="Files"
/>開いている枝と選択を持つ
開いている枝(expandedIds)と選択(selectedId)は外から渡せる。onChange には選んだ項目の id が届く。
- src
- components
- card.tsx
- index.ts
- package.json
- README.md
Selected: card
const [expandedIds, setExpandedIds] = useState<readonly string[]>(['src']);
const [selectedId, setSelectedId] = useState<string | null>(null);
<Tree
expandedIds={expandedIds}
items={files}
label="Files"
onChange={setSelectedId}
onExpandedChange={setExpandedIds}
selectedId={selectedId}
/>Props
items- Type:
readonly TreeItem[] - Default: -
label- Type:
string - Default: -
defaultExpandedIds?- Type:
readonly string[] - Default: -
defaultSelectedId?- Type:
string|null - Default:
null expandedIds?- Type:
readonly string[] - Default: -
onChange?- Type:
(id: string) => void - Default: -
onExpandedChange?- Type:
(ids: readonly string[]) => void - Default: -
selectedId?- Type:
string|null - Default: -
| Prop | Type | Default |
|---|---|---|
items | readonly TreeItem[] | - |
label | string | - |
defaultExpandedIds? | readonly string[] | - |
defaultSelectedId? | string|null | null |
expandedIds? | readonly string[] | - |
onChange? | (id: string) => void | - |
onExpandedChange? | (ids: readonly string[]) => void | - |
selectedId? | string|null | - |
型ベース(内部で固定する一部attrsは除外): HTMLAttributes<HTMLUListElement>