feat: use visible before use component props (#1182)
Co-authored-by: sealday <sealday@gmail.com> Reviewed-on: daoyoucloud/tachybase#1182
This commit is contained in:
		
							parent
							
								
									1472e5910c
								
							
						
					
					
						commit
						725b466d62
					
				@ -1,5 +1,6 @@
 | 
			
		||||
import React, { FC, memo, useEffect, useMemo, useRef } from 'react';
 | 
			
		||||
 | 
			
		||||
import { useFieldComponentName } from '../../../common/useFieldComponentName';
 | 
			
		||||
import { useFindComponent } from '../../../schema-component';
 | 
			
		||||
import {
 | 
			
		||||
  SchemaSettingsActionModalItem,
 | 
			
		||||
@ -17,7 +18,6 @@ import {
 | 
			
		||||
} from '../../../schema-settings/SchemaSettings';
 | 
			
		||||
import { SchemaSettingItemContext } from '../context';
 | 
			
		||||
import { SchemaSettingsItemType } from '../types';
 | 
			
		||||
import { useFieldComponentName } from '../../../common/useFieldComponentName';
 | 
			
		||||
 | 
			
		||||
export interface SchemaSettingsChildrenProps {
 | 
			
		||||
  children: SchemaSettingsItemType[];
 | 
			
		||||
@ -70,6 +70,15 @@ export const SchemaSettingsChildren: FC<SchemaSettingsChildrenProps> = (props) =
 | 
			
		||||
const useChildrenDefault = () => undefined;
 | 
			
		||||
const useComponentPropsDefault = () => undefined;
 | 
			
		||||
const useVisibleDefault = () => true;
 | 
			
		||||
 | 
			
		||||
const InternalComponent = ({ Component, componentProps, useComponentProps, children }) => {
 | 
			
		||||
  const useComponentPropsRes = useComponentProps();
 | 
			
		||||
  return (
 | 
			
		||||
    <Component {...componentProps} {...useComponentPropsRes}>
 | 
			
		||||
      {children}
 | 
			
		||||
    </Component>
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
export const SchemaSettingsChild: FC<SchemaSettingsItemType> = memo((props) => {
 | 
			
		||||
  const {
 | 
			
		||||
    useVisible = useVisibleDefault,
 | 
			
		||||
@ -82,7 +91,6 @@ export const SchemaSettingsChild: FC<SchemaSettingsItemType> = memo((props) => {
 | 
			
		||||
    componentProps,
 | 
			
		||||
  } = props as any;
 | 
			
		||||
  const useChildrenRes = useChildren();
 | 
			
		||||
  const useComponentPropsRes = useComponentProps();
 | 
			
		||||
  const findComponent = useFindComponent();
 | 
			
		||||
  const componentChildren = useMemo(() => {
 | 
			
		||||
    const res = [...(useChildrenRes || []), ...(children || [])];
 | 
			
		||||
@ -106,11 +114,11 @@ export const SchemaSettingsChild: FC<SchemaSettingsItemType> = memo((props) => {
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <SchemaSettingItemContext.Provider value={props}>
 | 
			
		||||
      <C {...componentProps} {...useComponentPropsRes}>
 | 
			
		||||
      <InternalComponent Component={C} useComponentProps={useComponentProps} componentProps={componentProps}>
 | 
			
		||||
        {Array.isArray(componentChildren) && componentChildren.length > 0 && (
 | 
			
		||||
          <SchemaSettingsChildren>{componentChildren}</SchemaSettingsChildren>
 | 
			
		||||
        )}
 | 
			
		||||
      </C>
 | 
			
		||||
      </InternalComponent>
 | 
			
		||||
    </SchemaSettingItemContext.Provider>
 | 
			
		||||
  );
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@ -195,7 +195,7 @@ export const InternalTabs = observer((props) => {
 | 
			
		||||
        if (fuzzysearch(filter, item?.label) || filterItem?.length) {
 | 
			
		||||
          return {
 | 
			
		||||
            ...item,
 | 
			
		||||
            childrenItems: filterItem.length ? filterItem : item.childrenItems,
 | 
			
		||||
            childrenItems: filterItem?.length ? filterItem : item.childrenItems,
 | 
			
		||||
          };
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user