Skip to content

Commit 2fc9c1d

Browse files
committed
refactor(settings): move NodePath to NodePathWidget
1 parent 0ab144f commit 2fc9c1d

File tree

6 files changed

+61
-53
lines changed

6 files changed

+61
-53
lines changed

packages/react-settings-form/src/SettingsForm.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@ import {
88
useSelected,
99
useOperation,
1010
useCurrentNode,
11+
useWorkbench,
1112
IconWidget,
13+
NodePathWidget,
1214
} from '@designable/react'
1315
import { SchemaField } from './SchemaField'
1416
import { ISettingFormProps } from './types'
1517
import { SettingsFormContext } from './shared/context'
1618
import { useLocales, useSnapshot } from './effects'
17-
import { NodePath } from './components/NodePath'
1819
import { Empty } from 'antd'
1920
import cls from 'classnames'
2021
import './styles.less'
21-
import { useWorkbench } from 'packages/react/lib'
2222

2323
const GlobalState = {
2424
idleRequest: null,
@@ -89,7 +89,7 @@ export const SettingsForm: React.FC<ISettingFormProps> = observer(
8989
return (
9090
<IconWidget.Provider tooltip>
9191
<div className={prefix + '-wrapper'}>
92-
{!isEmpty && <NodePath />}
92+
{!isEmpty && <NodePathWidget workspaceId={currentWorkspaceId} />}
9393
<div className={prefix + '-content'}>{render()}</div>
9494
</div>
9595
</IconWidget.Provider>

packages/react-settings-form/src/components/NodePath/index.tsx

Lines changed: 0 additions & 47 deletions
This file was deleted.

packages/react/src/widgets/IconWidget/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { createContext, Fragment, useContext } from 'react'
1+
import React, { createContext, useContext } from 'react'
22
import { GlobalRegistry } from '@designable/core'
33
import { isStr, isFn, isPlainObj } from '@designable/shared'
44
import { observer } from '@formily/reactive-react'
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import React from 'react'
2+
import { Breadcrumb } from 'antd'
3+
import { useCurrentNode, useSelection, usePrefix, useHover } from '../../hooks'
4+
import { IconWidget } from '../IconWidget'
5+
import { TextWidget } from '../TextWidget'
6+
import { observer } from '@formily/react'
7+
import './styles.less'
8+
9+
export interface INodePathWidgetProps {
10+
workspaceId?: string
11+
maxItems?: number
12+
}
13+
14+
export const NodePathWidget: React.FC<INodePathWidgetProps> = observer(
15+
(props) => {
16+
const selected = useCurrentNode(props.workspaceId)
17+
const selection = useSelection(props.workspaceId)
18+
const hover = useHover(props.workspaceId)
19+
const prefix = usePrefix('node-path')
20+
if (!selected) return <React.Fragment />
21+
const maxItems = props.maxItems ?? 3
22+
const nodes = selected
23+
.getParents()
24+
.slice(0, maxItems - 1)
25+
.reverse()
26+
.concat(selected)
27+
return (
28+
<Breadcrumb className={prefix}>
29+
{nodes.map((node, key) => {
30+
return (
31+
<Breadcrumb.Item key={key}>
32+
{key === 0 && (
33+
<IconWidget infer="Position" style={{ marginRight: 3 }} />
34+
)}
35+
<a
36+
href=""
37+
onMouseEnter={() => {
38+
hover.setHover(node)
39+
}}
40+
onClick={(e) => {
41+
e.stopPropagation()
42+
e.preventDefault()
43+
selection.select(node)
44+
}}
45+
>
46+
<TextWidget>{node.designerProps.title}</TextWidget>
47+
</a>
48+
</Breadcrumb.Item>
49+
)
50+
})}
51+
</Breadcrumb>
52+
)
53+
}
54+
)

packages/react-settings-form/src/components/NodePath/styles.less renamed to packages/react/src/widgets/NodePathWidget/styles.less

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
.dn-node-path {
44
padding: 4px 10px !important;
55
border-bottom: 1px solid @border-color-split;
6-
.dn-icon{
6+
.dn-icon {
77
font-size: 11px;
88
}
99
.@{ant-prefix}-breadcrumb-separator {
@@ -13,4 +13,4 @@
1313
a {
1414
font-size: 12px;
1515
}
16-
}
16+
}

packages/react/src/widgets/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ export * from './OutlineWidget'
99
export * from './IconWidget'
1010
export * from './TextWidget'
1111
export * from './HistoryWidget'
12+
export * from './NodePathWidget'

0 commit comments

Comments
 (0)