Skip to content

Commit

Permalink
refactor(settings): move NodePath to NodePathWidget
Browse files Browse the repository at this point in the history
  • Loading branch information
janryWang committed Aug 20, 2021
1 parent 0ab144f commit 2fc9c1d
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 53 deletions.
6 changes: 3 additions & 3 deletions packages/react-settings-form/src/SettingsForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@ import {
useSelected,
useOperation,
useCurrentNode,
useWorkbench,
IconWidget,
NodePathWidget,
} from '@designable/react'
import { SchemaField } from './SchemaField'
import { ISettingFormProps } from './types'
import { SettingsFormContext } from './shared/context'
import { useLocales, useSnapshot } from './effects'
import { NodePath } from './components/NodePath'
import { Empty } from 'antd'
import cls from 'classnames'
import './styles.less'
import { useWorkbench } from 'packages/react/lib'

const GlobalState = {
idleRequest: null,
Expand Down Expand Up @@ -89,7 +89,7 @@ export const SettingsForm: React.FC<ISettingFormProps> = observer(
return (
<IconWidget.Provider tooltip>
<div className={prefix + '-wrapper'}>
{!isEmpty && <NodePath />}
{!isEmpty && <NodePathWidget workspaceId={currentWorkspaceId} />}
<div className={prefix + '-content'}>{render()}</div>
</div>
</IconWidget.Provider>
Expand Down
47 changes: 0 additions & 47 deletions packages/react-settings-form/src/components/NodePath/index.tsx

This file was deleted.

2 changes: 1 addition & 1 deletion packages/react/src/widgets/IconWidget/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { createContext, Fragment, useContext } from 'react'
import React, { createContext, useContext } from 'react'
import { GlobalRegistry } from '@designable/core'
import { isStr, isFn, isPlainObj } from '@designable/shared'
import { observer } from '@formily/reactive-react'
Expand Down
54 changes: 54 additions & 0 deletions packages/react/src/widgets/NodePathWidget/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import React from 'react'
import { Breadcrumb } from 'antd'
import { useCurrentNode, useSelection, usePrefix, useHover } from '../../hooks'
import { IconWidget } from '../IconWidget'
import { TextWidget } from '../TextWidget'
import { observer } from '@formily/react'
import './styles.less'

export interface INodePathWidgetProps {
workspaceId?: string
maxItems?: number
}

export const NodePathWidget: React.FC<INodePathWidgetProps> = observer(
(props) => {
const selected = useCurrentNode(props.workspaceId)
const selection = useSelection(props.workspaceId)
const hover = useHover(props.workspaceId)
const prefix = usePrefix('node-path')
if (!selected) return <React.Fragment />
const maxItems = props.maxItems ?? 3
const nodes = selected
.getParents()
.slice(0, maxItems - 1)
.reverse()
.concat(selected)
return (
<Breadcrumb className={prefix}>
{nodes.map((node, key) => {
return (
<Breadcrumb.Item key={key}>
{key === 0 && (
<IconWidget infer="Position" style={{ marginRight: 3 }} />
)}
<a
href=""
onMouseEnter={() => {
hover.setHover(node)
}}
onClick={(e) => {
e.stopPropagation()
e.preventDefault()
selection.select(node)
}}
>
<TextWidget>{node.designerProps.title}</TextWidget>
</a>
</Breadcrumb.Item>
)
})}
</Breadcrumb>
)
}
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
.dn-node-path {
padding: 4px 10px !important;
border-bottom: 1px solid @border-color-split;
.dn-icon{
.dn-icon {
font-size: 11px;
}
.@{ant-prefix}-breadcrumb-separator {
Expand All @@ -13,4 +13,4 @@
a {
font-size: 12px;
}
}
}
1 change: 1 addition & 0 deletions packages/react/src/widgets/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ export * from './OutlineWidget'
export * from './IconWidget'
export * from './TextWidget'
export * from './HistoryWidget'
export * from './NodePathWidget'

0 comments on commit 2fc9c1d

Please sign in to comment.