mirror of
https://github.com/nocobase/nocobase
synced 2024-11-16 03:25:10 +00:00
fix: withDynamicSchemaProps
This commit is contained in:
parent
a9eaeea639
commit
3da6bdc659
@ -11,14 +11,20 @@ interface WithSchemaHookOptions {
|
|||||||
export function withDynamicSchemaProps<T = any>(Component: ComponentType<T>, options: WithSchemaHookOptions = {}) {
|
export function withDynamicSchemaProps<T = any>(Component: ComponentType<T>, options: WithSchemaHookOptions = {}) {
|
||||||
const displayName = options.displayName || Component.displayName || Component.name;
|
const displayName = options.displayName || Component.displayName || Component.name;
|
||||||
const ComponentWithProps: ComponentType<T> = (props) => {
|
const ComponentWithProps: ComponentType<T> = (props) => {
|
||||||
const { dn } = useDesignable();
|
const { dn, findComponent } = useDesignable();
|
||||||
const { scope } = useSchemaComponentContext();
|
const { scope } = useSchemaComponentContext();
|
||||||
const useComponentPropsStr = useMemo(() => {
|
const useComponentPropsStr = useMemo(() => {
|
||||||
if (dn.getSchemaAttribute('x-component')) {
|
const xComponent = dn.getSchemaAttribute('x-component');
|
||||||
return dn.getSchemaAttribute('x-use-component-props');
|
const xDecorator = dn.getSchemaAttribute('x-decorator');
|
||||||
|
const xUseComponentProps = dn.getSchemaAttribute('x-use-component-props');
|
||||||
|
const xUseDecoratorProps = dn.getSchemaAttribute('x-use-decorator-props');
|
||||||
|
|
||||||
|
if (xComponent && xUseComponentProps && findComponent(xComponent) === ComponentWithProps) {
|
||||||
|
return xUseComponentProps;
|
||||||
}
|
}
|
||||||
if (dn.getSchemaAttribute('x-decorator')) {
|
|
||||||
return dn.getSchemaAttribute('x-use-decorator-props');
|
if (xDecorator && xUseDecoratorProps && findComponent(xDecorator) === ComponentWithProps) {
|
||||||
|
return xUseDecoratorProps;
|
||||||
}
|
}
|
||||||
}, [dn]);
|
}, [dn]);
|
||||||
const useSchemaProps = useMemo(() => {
|
const useSchemaProps = useMemo(() => {
|
||||||
|
Loading…
Reference in New Issue
Block a user