@flatbiz/antd 4.2.41 → 4.2.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/cell-render-362e4d87.js.map +1 -1
- package/esm/create-drawer-wrapper-model/index.js.map +1 -1
- package/esm/create-modal-wrapper-model/index.js.map +1 -1
- package/esm/dialog-modal/index.css +1 -1
- package/esm/drawer-wrapper-9af2f178.js.map +1 -1
- package/esm/easy-table/index.css +1 -1
- package/esm/easy-table/index.js +1 -1
- package/esm/easy-table/index.js.map +1 -1
- package/esm/editor-wrapper-ff6e75b7.js.map +1 -1
- package/esm/index.js +1 -1
- package/esm/modal-wrapper-ff8df98b.js.map +1 -1
- package/esm/page-fixed-footer/index.js +1 -1
- package/esm/page-fixed-footer-9ec2b46c.js +3 -0
- package/esm/page-fixed-footer-9ec2b46c.js.map +1 -0
- package/esm/simple-layout/index.css +1 -1
- package/esm/simple-layout/index.js +1 -1
- package/esm/simple-layout-1cd0fefc.js +3 -0
- package/esm/{simple-layout-f43cfc5d.js.map → simple-layout-1cd0fefc.js.map} +1 -1
- package/esm/tabs-wrapper/index.css +1 -1
- package/esm/tabs-wrapper-675dc949.js.map +1 -1
- package/esm/tree-wrapper/index.js +1 -1
- package/esm/tree-wrapper/index.js.map +1 -1
- package/index.d.ts +29 -15
- package/package.json +1 -1
- package/esm/page-fixed-footer-5fa10112.js +0 -3
- package/esm/page-fixed-footer-5fa10112.js.map +0 -1
- package/esm/simple-layout-f43cfc5d.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
.simple-layout{background-color:#fff;border-radius:6px;padding:15px}.simple-layout .ant-form{margin-bottom:-15px}.simple-layout .ant-form-item{margin:0 0 15px}.simple-layout .ant-form-item-label{width:82px}.simple-layout .ant-form-item-label.ant-col-auto{width:auto}.simple-layout .ant-table-thead>tr>th{background:#f6f6f6}.simple-layout .ant-descriptions-item{padding-bottom:10px}.simple-layout .ant-descriptions-item-label{color:#999}.simple-layout .ant-table-pagination.ant-pagination{margin:16px 0 0}.simple-layout .simple-layout-content{position:relative}.simple-layout .simple-layout-content>.ant-row:last-child{margin-bottom:0}.simple-layout .simple-layout-content>.ant-row:last-child .ant-upload-list{padding-bottom:15px}.simple-layout .simple-layout-content>.ant-descriptions:not(.ant-descriptions-bordered):last-child{margin-bottom:-10px}.simple-layout .v-tree-wrapper-tree{padding:5px 0 0}.simple-layout-title-sign{padding-left:10px;position:relative}.simple-layout-title-sign:before{background:var(--simple-layout-colorPrimary);border-radius:3px;content:"";height:14px;left:0;margin-top:-7px;position:absolute;top:50%;width:3px}.simple-layout-title{color:rgba(0,0,0,.85);font-size:16px;font-weight:500;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.simple-layout-title+.simple-layout-content,.simple-layout-title-sign+.simple-layout-content{margin-top:10px}.simple-layout-desc{color:rgba(0,0,0,.55);font-size:12px}.simple-layout+.simple-layout,.simple-layout-desc+.simple-layout-content{margin-top:10px}.simple-layout .simple-layout:first-child{padding:0 0 15px}.simple-layout+.ant-divider{margin:0 0 15px}.simple-layout-formlabel-left .ant-form-item-label{text-align:left}.simple-layout-tight.simple-layout{margin-top:0;padding:0
|
|
1
|
+
.simple-layout{background-color:#fff;border-radius:6px;padding:15px}.simple-layout .ant-form{margin-bottom:-15px}.simple-layout .ant-form-item{margin:0 0 15px}.simple-layout .ant-form-item-label{width:82px}.simple-layout .ant-form-item-label.ant-col-auto{width:auto}.simple-layout .ant-table-thead>tr>th{background:#f6f6f6}.simple-layout .ant-descriptions-item{padding-bottom:10px}.simple-layout .ant-descriptions-item-label{color:#999}.simple-layout .ant-table-pagination.ant-pagination{margin:16px 0 0}.simple-layout .simple-layout-content{position:relative}.simple-layout .simple-layout-content>.ant-row:last-child{margin-bottom:0}.simple-layout .simple-layout-content>.ant-row:last-child .ant-upload-list{padding-bottom:15px}.simple-layout .simple-layout-content>.ant-descriptions:not(.ant-descriptions-bordered):last-child{margin-bottom:-10px}.simple-layout .v-tree-wrapper-tree{padding:5px 0 0}.simple-layout-title-sign{padding-left:10px;position:relative}.simple-layout-title-sign:before{background:var(--simple-layout-colorPrimary);border-radius:3px;content:"";height:14px;left:0;margin-top:-7px;position:absolute;top:50%;width:3px}.simple-layout-title{color:rgba(0,0,0,.85);font-size:16px;font-weight:500;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.simple-layout-title+.simple-layout-content,.simple-layout-title-sign+.simple-layout-content{margin-top:10px}.simple-layout-desc{color:rgba(0,0,0,.55);font-size:12px}.simple-layout+.simple-layout,.simple-layout-desc+.simple-layout-content{margin-top:10px}.simple-layout .simple-layout:first-child{padding:0 0 15px}.simple-layout+.ant-divider{margin:0 0 15px}.simple-layout-formlabel-left .ant-form-item-label{text-align:left}.simple-layout-tight.simple-layout{margin-top:0;padding:0}.simple-layout-title-extra-space{justify-content:space-between;width:100%}.simple-layout-title-fixed{display:flex;flex-direction:column;height:100%;overflow:hidden}.simple-layout-title-fixed .simple-layout-content{flex:1;overflow-y:auto}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
import './../fba-hooks/index.css';
|
|
3
3
|
import './index.css';
|
|
4
4
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
5
|
-
export{S as SimpleLayout}from"../simple-layout-
|
|
5
|
+
export{S as SimpleLayout}from"../simple-layout-1cd0fefc.js";import"@dimjs/lang/cjs/is-array";import"@dimjs/utils/cjs/extend";import"@dimjs/utils/cjs/class-names";import"antd";import"react";import"../fba-hooks/index.js";import"../_rollupPluginBabelHelpers-1f4d8910.js";import"@wove/react/cjs/hooks";import"../use-responsive-point-21b8c601.js";import"react/jsx-runtime";
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
+
import{isArray as e}from"@dimjs/lang/cjs/is-array";import{extend as t}from"@dimjs/utils/cjs/extend";import{classNames as l}from"@dimjs/utils/cjs/class-names";import{Space as i}from"antd";import{Fragment as s}from"react";import{fbaHooks as a}from"./fba-hooks/index.js";import{jsx as r,jsxs as m}from"react/jsx-runtime";var d=function d(c){var n=c.formLabelAlign||"right";var o=l("simple-layout",{"simple-layout-tight":c.layoutType==="tight","simple-layout-formlabel-left":n==="left","simple-layout-title-fixed":c.titleFixed},c.className);var u=a.useThemeToken();var y=t({"--simple-layout-colorPrimary":u.colorPrimary},c.style,{padding:c.padding,width:c.width});if(c.hidden)return r(s,{});return m("div",{className:o,style:y,children:[c.title&&c.titleExtra?r("div",{className:l({"simple-layout-title-sign":c.titleLeftLine}),style:c.titleStyle,children:m(i,{className:"simple-layout-title-extra-space",children:[r("div",{className:"simple-layout-title",children:c.title}),r("div",{className:"simple-layout-title-extra",children:c.titleExtra})]})}):null,c.title&&!c.titleExtra?r("div",{className:l("simple-layout-title",{"simple-layout-title-sign":c.titleLeftLine}),style:c.titleStyle,children:c.title}):null,c.desc&&!e(c.desc)?r("div",{className:"simple-layout-desc",children:c.desc}):null,c.desc&&e(c.desc)?r("div",{className:"simple-layout-desc",children:r(i,{direction:"vertical",size:5,children:c.desc.map((function(e,t){return r(s,{children:e},t)}))})}):null,c.children?r("div",{className:"simple-layout-content",style:c.contentStyle,children:c.children}):null]})};d.defaultProps={titleLeftLine:true,layoutType:"layer"};export{d as S};
|
|
3
|
+
//# sourceMappingURL=simple-layout-1cd0fefc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-layout-
|
|
1
|
+
{"version":3,"file":"simple-layout-1cd0fefc.js","sources":["@flatbiz/antd/src/simple-layout/simple-layout.tsx"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport { Space } from 'antd';\nimport { CSSProperties, Fragment, ReactElement, ReactNode } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type SimpleLayoutProps = {\n className?: string;\n style?: CSSProperties;\n title?: string | ReactElement;\n desc?: string | ReactElement | string[] | ReactElement[];\n formLabelAlign?: 'left' | 'right';\n /**\n * layoutType 布局类型\n * ```\n * 1. layer:分层布局\n * 2. tight:紧凑布局\n * ```\n */\n layoutType?: 'layer' | 'tight';\n titleLeftLine?: boolean;\n titleStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n /** 优先级大于 style padding */\n padding?: CSSProperties['padding'];\n /** 优先级大于 style width */\n width?: CSSProperties['width'];\n children?: ReactNode | ReactNode[];\n titleExtra?: string | ReactElement;\n hidden?: boolean;\n titleFixed?: boolean;\n};\n\n/**\n * 简单布局\n * @param props\n * @returns\n * ```\n * 1. layoutType 布局类型\n * layer:分层布局\n * tight:紧凑布局\n * ```\n */\nexport const SimpleLayout = (props: SimpleLayoutProps) => {\n const labelAlign = props.formLabelAlign || 'right';\n const className = classNames(\n 'simple-layout',\n {\n 'simple-layout-tight': props.layoutType === 'tight',\n 'simple-layout-formlabel-left': labelAlign === 'left',\n 'simple-layout-title-fixed': props.titleFixed,\n },\n props.className,\n );\n\n const theme = fbaHooks.useThemeToken();\n const style = extend({ '--simple-layout-colorPrimary': theme.colorPrimary }, props.style, {\n padding: props.padding,\n width: props.width,\n });\n\n if (props.hidden) return <Fragment />;\n\n return (\n <div className={className} style={style}>\n {props.title && props.titleExtra ? (\n <div\n className={classNames({ 'simple-layout-title-sign': props.titleLeftLine })}\n style={props.titleStyle}\n >\n <Space className=\"simple-layout-title-extra-space\">\n <div className=\"simple-layout-title\">{props.title}</div>\n <div className=\"simple-layout-title-extra\">{props.titleExtra}</div>\n </Space>\n </div>\n ) : null}\n {props.title && !props.titleExtra ? (\n <div\n className={classNames('simple-layout-title', {\n 'simple-layout-title-sign': props.titleLeftLine,\n })}\n style={props.titleStyle}\n >\n {props.title}\n </div>\n ) : null}\n {props.desc && !isArray(props.desc) ? <div className=\"simple-layout-desc\">{props.desc}</div> : null}\n {props.desc && isArray(props.desc) ? (\n <div className=\"simple-layout-desc\">\n <Space direction=\"vertical\" size={5}>\n {(props.desc as string[]).map((item, index) => {\n return <Fragment key={index}>{item}</Fragment>;\n })}\n </Space>\n </div>\n ) : null}\n {props.children ? (\n <div className=\"simple-layout-content\" style={props.contentStyle}>\n {props.children}\n </div>\n ) : null}\n </div>\n );\n};\n\nSimpleLayout.defaultProps = {\n titleLeftLine: true,\n layoutType: 'layer',\n};\n"],"names":["SimpleLayout","props","labelAlign","formLabelAlign","className","_classNames","layoutType","titleFixed","theme","fbaHooks","useThemeToken","style","_extend","colorPrimary","padding","width","hidden","_jsx","Fragment","_jsxs","children","title","titleExtra","titleLeftLine","titleStyle","Space","desc","_isArray","direction","size","map","item","index","contentStyle","defaultProps"],"mappings":";kUA4CaA,EAAe,SAAfA,EAAgBC,GAC3B,IAAMC,EAAaD,EAAME,gBAAkB,QAC3C,IAAMC,EAAYC,EAChB,gBACA,CACE,sBAAuBJ,EAAMK,aAAe,QAC5C,+BAAgCJ,IAAe,OAC/C,4BAA6BD,EAAMM,YAErCN,EAAMG,WAGR,IAAMI,EAAQC,EAASC,gBACvB,IAAMC,EAAQC,EAAO,CAAE,+BAAgCJ,EAAMK,cAAgBZ,EAAMU,MAAO,CACxFG,QAASb,EAAMa,QACfC,MAAOd,EAAMc,QAGf,GAAId,EAAMe,OAAQ,OAAOC,EAACC,EAAW,CAAA,GAErC,OACEC,EAAA,MAAA,CAAKf,UAAWA,EAAWO,MAAOA,EAAMS,SAAA,CACrCnB,EAAMoB,OAASpB,EAAMqB,WACpBL,EAAA,MAAA,CACEb,UAAWC,EAAW,CAAE,2BAA4BJ,EAAMsB,gBAC1DZ,MAAOV,EAAMuB,WAAWJ,SAExBD,EAACM,EAAK,CAACrB,UAAU,kCAAiCgB,UAChDH,EAAA,MAAA,CAAKb,UAAU,sBAAqBgB,SAAEnB,EAAMoB,QAC5CJ,EAAA,MAAA,CAAKb,UAAU,4BAA2BgB,SAAEnB,EAAMqB,kBAGpD,KACHrB,EAAMoB,QAAUpB,EAAMqB,WACrBL,EAAA,MAAA,CACEb,UAAWC,EAAW,sBAAuB,CAC3C,2BAA4BJ,EAAMsB,gBAEpCZ,MAAOV,EAAMuB,WAAWJ,SAEvBnB,EAAMoB,QAEP,KACHpB,EAAMyB,OAASC,EAAQ1B,EAAMyB,MAAQT,EAAA,MAAA,CAAKb,UAAU,qBAAoBgB,SAAEnB,EAAMyB,OAAc,KAC9FzB,EAAMyB,MAAQC,EAAQ1B,EAAMyB,MAC3BT,EAAA,MAAA,CAAKb,UAAU,qBAAoBgB,SACjCH,EAACQ,EAAK,CAACG,UAAU,WAAWC,KAAM,EAAET,SAChCnB,EAAMyB,KAAkBI,KAAI,SAACC,EAAMC,GACnC,OAAOf,EAACC,EAAQ,CAAAE,SAAcW,GAARC,UAI1B,KACH/B,EAAMmB,SACLH,EAAA,MAAA,CAAKb,UAAU,wBAAwBO,MAAOV,EAAMgC,aAAab,SAC9DnB,EAAMmB,WAEP,OAGV,EAEApB,EAAakC,aAAe,CAC1BX,cAAe,KACfjB,WAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.fba-tabs-wrapper .ant-tabs-nav{margin:0}.fba-tabs-wrapper-fixed{height:100%;overflow:hidden}.fba-tabs-wrapper-fixed>.ant-tabs-content-holder{flex:1;overflow-y:auto}.fba-tabs-wrapper-fixed>.ant-tabs-content-holder>.ant-tabs-content,.fba-tabs-wrapper-fixed>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane{height:100%}.fba-tabs-wrapper-hidden-header
|
|
1
|
+
.fba-tabs-wrapper .ant-tabs-nav{margin:0}.fba-tabs-wrapper-fixed{height:100%;overflow:hidden}.fba-tabs-wrapper-fixed>.ant-tabs-content-holder{flex:1;overflow-y:auto}.fba-tabs-wrapper-fixed>.ant-tabs-content-holder>.ant-tabs-content,.fba-tabs-wrapper-fixed>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane{height:100%}.fba-tabs-wrapper-hidden-header>.ant-tabs-nav{display:none}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-wrapper-675dc949.js","sources":["@flatbiz/antd/src/tabs-wrapper/tabs-wrapper.tsx"],"sourcesContent":["import { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { sessionStorageCache } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Tabs, TabsProps } from 'antd';\nimport { useMemo } from 'react';\nimport './style.less';\n\nexport type TabsWrapperProps = TabsProps & {\n /**\n * Tabs Header 提供 Sticky 效果,默认值:true\n * @deprecated
|
|
1
|
+
{"version":3,"file":"tabs-wrapper-675dc949.js","sources":["@flatbiz/antd/src/tabs-wrapper/tabs-wrapper.tsx"],"sourcesContent":["import { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { sessionStorageCache } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Tabs, TabsProps } from 'antd';\nimport { useMemo } from 'react';\nimport './style.less';\n\nexport type TabsWrapperProps = TabsProps & {\n /**\n * Tabs Header 提供 Sticky 效果,默认值:true\n * @deprecated 已废弃 @4.3.0版本移除,请使用 isFixed 属性\n */\n isSticky?: boolean;\n /**\n * Tabs Header 提供 Fixed 效果,默认值:true\n */\n isFixed?: boolean;\n /** 是否取消 active 缓存 */\n cancelActiveCache?: boolean;\n activeCacheKey?: string;\n /** 隐藏头部 */\n hiddenTabHeader?: boolean;\n};\n\n/**\n * Tabs 包装组件\n * ```\n * 1. Tabs Header 提供 Sticky 效果,默认值:true\n * 2. 使用时,父级必须要有高度,可置于Flex布局中\n * 3. 默认缓存激活的tab item(activeKey受控操作下缓存无效)\n * 当未设置activeKey,非受控操作时,组件内部会会话缓存activeKey,在刷新时,会显示上次的激活的tab item\n * 缓存Key:如果未设置 activeCacheKey,则使用默认的 cache key(tabs-wrapper-activeKey)\n * 缓存模式:会话缓存,在浏览器关闭后,会清除\n * ```\n */\nexport const TabsWrapper = (props: TabsWrapperProps) => {\n const {\n isSticky = true,\n isFixed = true,\n activeCacheKey,\n cancelActiveCache,\n hiddenTabHeader,\n ...otherProps\n } = props;\n // 是否受控操作\n const isControl = Object.prototype.hasOwnProperty.call(props, 'activeKey');\n const cacheKey = activeCacheKey || 'tabs-wrapper-activeKey';\n const isFixedNew = isUndefined(isFixed) ? isSticky : isFixed;\n\n const onChange = hooks.useCallbackRef((activeKey: string) => {\n if (cancelActiveCache !== true && !isControl) {\n sessionStorageCache.set(cacheKey, { activeKey });\n }\n otherProps.onChange?.(activeKey);\n });\n\n const defaultActiveKey = useMemo(() => {\n if (cancelActiveCache === true || isControl) {\n return props.defaultActiveKey;\n }\n const chcheActiveKey = sessionStorageCache.get(cacheKey)?.activeKey as string | undefined;\n return chcheActiveKey || otherProps.defaultActiveKey;\n }, [cacheKey, cancelActiveCache, isControl, otherProps.defaultActiveKey, props.defaultActiveKey]);\n\n const className = classNames(\n 'fba-tabs-wrapper',\n { 'fba-tabs-wrapper-fixed': isFixedNew, 'fba-tabs-wrapper-hidden-header': hiddenTabHeader },\n otherProps.className,\n );\n\n return (\n <Tabs\n {...otherProps}\n tabBarStyle={{ padding: '0 15px', ...otherProps.tabBarStyle }}\n className={className}\n defaultActiveKey={defaultActiveKey}\n onChange={onChange}\n />\n );\n};\n"],"names":["TabsWrapper","props","_props$isSticky","isSticky","_props$isFixed","isFixed","activeCacheKey","cancelActiveCache","hiddenTabHeader","otherProps","_objectWithoutPropertiesLoose","_excluded","isControl","Object","prototype","hasOwnProperty","call","cacheKey","isFixedNew","_isUndefined","onChange","_hooks","useCallbackRef","activeKey","sessionStorageCache","set","defaultActiveKey","useMemo","_sessionStorageCache$","chcheActiveKey","get","className","_classNames","_jsx","Tabs","_extends","tabBarStyle","padding"],"mappings":";kdAoCaA,EAAc,SAAdA,EAAeC,GAC1B,IAAAC,EAOID,EANFE,SAAAA,EAAQD,SAAG,EAAA,KAAIA,EAAAE,EAMbH,EALFI,QAAAA,EAAOD,SAAG,EAAA,KAAIA,EACdE,EAIEL,EAJFK,eACAC,EAGEN,EAHFM,kBACAC,EAEEP,EAFFO,gBACGC,EAAUC,EACXT,EAAKU,GAET,IAAMC,EAAYC,OAAOC,UAAUC,eAAeC,KAAKf,EAAO,aAC9D,IAAMgB,EAAWX,GAAkB,yBACnC,IAAMY,EAAaC,EAAYd,GAAWF,EAAWE,EAErD,IAAMe,EAAWC,EAAMC,gBAAe,SAACC,GACrC,GAAIhB,IAAsB,OAASK,EAAW,CAC5CY,EAAoBC,IAAIR,EAAU,CAAEM,UAAAA,GACtC,CACAd,EAAWW,UAAXX,UAAAA,EAAAA,EAAWW,SAAWG,EACxB,IAEA,IAAMG,EAAmBC,GAAQ,WAAM,IAAAC,EACrC,GAAIrB,IAAsB,MAAQK,EAAW,CAC3C,OAAOX,EAAMyB,gBACf,CACA,IAAMG,GAAcD,EAAGJ,EAAoBM,IAAIb,KAAxBW,UAAAA,EAAAA,EAAmCL,UAC1D,OAAOM,GAAkBpB,EAAWiB,gBACtC,GAAG,CAACT,EAAUV,EAAmBK,EAAWH,EAAWiB,iBAAkBzB,EAAMyB,mBAE/E,IAAMK,EAAYC,EAChB,mBACA,CAAE,yBAA0Bd,EAAY,iCAAkCV,GAC1EC,EAAWsB,WAGb,OACEE,EAACC,EAAIC,KACC1B,EAAU,CACd2B,YAAWD,EAAA,CAAIE,QAAS,UAAa5B,EAAW2B,aAChDL,UAAWA,EACXL,iBAAkBA,EAClBN,SAAUA,IAGhB"}
|
|
@@ -9,5 +9,5 @@ import './../dropdown-menu-wrapper/index.css';
|
|
|
9
9
|
import './../input-search-wrapper/index.css';
|
|
10
10
|
import './index.css';
|
|
11
11
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
12
|
-
import{f as e}from"../fba-utils-1e895394.js";import{isArray as r}from"@dimjs/lang/cjs/is-array";import{Model as t}from"@dimjs/model-react";import{treeToArray as n,treeToTiledArray as a,treeLeafParentsArray as i,isUndefinedOrNull as l,toArray as u,treeFilter as s}from"@flatbiz/utils";import o from"@ant-design/icons/es/icons/CaretDownFilled";import c from"@ant-design/icons/es/icons/MoreOutlined";import{classNames as d}from"@dimjs/utils/cjs/class-names";import{extend as v}from"@dimjs/utils/cjs/extend";import{hooks as f}from"@wove/react/cjs/hooks";import{_ as p,a as m}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{cloneState as h}from"@dimjs/model";import{Spin as g,Tree as y,Button as b,message as L}from"antd";import{forwardRef as C,useState as w,useMemo as j,useRef as R,useImperativeHandle as q,Fragment as N,isValidElement as k}from"react";import{a as S}from"../button-operate-697b2a94.js";import{D as T}from"../dropdown-menu-wrapper-3544d20e.js";import{fbaHooks as D}from"../fba-hooks/index.js";import{I as P}from"../input-search-wrapper-10d4a9b9.js";import{R as x}from"../request-status-03fc60e2.js";import{tree as E}from"@dimjs/utils/cjs/tree";import{isObject as A}from"@dimjs/lang/cjs/is-object";import{dequal as I}from"dequal";import{jsxs as _,jsx as O}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper-e833e139.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../config-provider-wrapper-dfe8f592.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../use-responsive-point-21b8c601.js";var V={treeList:[],treeTiledArray:[],queryIsEmpty:false};var K={actions:{setTreeList:function e(r){return function(e){e.treeList=r.treeList||[];e.treeTiledArray=n(e.treeList,r.childrenName);e.requestStatus="request-success"}},resetTreeList:function e(){return function(e){e.treeList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r;if(r==="request-error"){e.treeList=[]}}},treeListAppendChildren:function e(t){return function(e){var a=n(e.treeList,t.childrenName);var i=a.find((function(e){return e[t.valueName]===t.value}));if(i){if(r(t.appendList)&&t.appendList.length>0){i[t.childrenName]=t.appendList}else{i.isLeaf=true}}e.treeTiledArray=n(e.treeList,t.childrenName)}}},state:V};var F={};var M=function e(r){if(!F[r]){F[r]=t(K)}return F[r]};var U=function e(r){var t=M(r).getState();return t.treeList};var z=function e(r,t,n){var l=a(t,n);return i(r,l,true,{value:"value",parentValue:"parentValue"})};var B=function e(t,n){var a=l(t)?[]:t;a=r(a)?a:[a];a=a.map((function(e){if(A(e))return e[n.value];return e}));return a};var H=function e(r,t){var n=B(r,t);var a={};n.forEach((function(e){a[e]=true}));return a};var G=function e(r,t,n){if(l(r)&&l(t))return true;var a=H(r,n);var i=H(t,n);var u=I(a,i);return u};var W=function e(r,t,n){var a=n.node.key;var i=n.dragNode.key;var l=n.node.pos.split("-");var u=n.dropPosition-Number(l[l.length-1]);var s=t.value;var o=t.children;var c=function e(r,t,n){for(var a=0;a<r.length;a++){if(r[a][s]===t){return n(r[a],a,r)}if(r[a][o]){e(r[a][o],t,n)}}};var d=h(r);var v;c(d,i,(function(e,r,t){t.splice(r,1);v=e}));if(!n.dropToGap){c(d,a,(function(e){e[o]=e[o]||[];e[o].unshift(v)}))}else if((n.node.props.children||[]).length>0&&n.node.props.expanded&&u===1){c(d,a,(function(e){e[o]=e[o]||[];e[o].unshift(v)}))}else{var f=[];var p;c(d,a,(function(e,r,t){f=t;p=r}));if(u===-1){f.splice(p,0,v)}else{f.splice(p+1,0,v)}}return{dataList:d,dragNodeData:Y(i,d,t)}};var Y=function e(r,t,a){var i;var l=a.value;var u=a.children;E.walkThroughTree((i={},i[l]=undefined,i[u]=t,i),(function(e,r,t){e["__index"]=r;e["__parentId"]=t==null?void 0:t[l]}),u);var s=n(t,u);var o=s.find((function(e){return e[l]===r}));return{parentId:o==null?void 0:o["__parentId"],id:o==null?void 0:o[l],index:o==null?void 0:o["__index"]}};var J=["style","serviceConfig","effectDependencyList","selectorTreeList","value","onChange","modelKey","checkableResponseParentNode","checkable","onSelectorTreeListChange","onRequestResponseChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValueFieldNames","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand","searchResultType","onDropNodeHandle","onDropPrev","labelRender","searchStyle"];var Q=C((function(e,t){var n=e.style,i=e.serviceConfig,C=e.effectDependencyList,E=e.selectorTreeList,A=e.value,I=e.onChange,V=e.modelKey,K=e.checkableResponseParentNode,F=K===void 0?true:K,U=e.checkable,H=e.onSelectorTreeListChange,Y=e.onRequestResponseChange,Q=e.treeItemDataAdapter,X=e.searchValue,Z=e.showSearch,$=e.searchPlaceholder,ee=e.requestMessageConfig,re=e.labelInValueFieldNames,te=e.labelInValue,ne=e.disabledCanUse,ae=e.menuLayoutType,ie=e.menuTriggerType,le=e.initRootExpand,ue=e.searchResultType,se=e.onDropNodeHandle,oe=e.onDropPrev,ce=e.labelRender,de=e.searchStyle,ve=p(e,J);var fe=e.hasOwnProperty("selectorTreeList");var pe=i||{};var me=C||[];var he=w(),ge=he[0],ye=he[1];var be=M(V).useStore(),Le=be[0],Ce=be[1];var we=D.useSafeState(false),je=we[0],Re=we[1];var qe="request-progress-"+e.modelKey;var Ne=j((function(){return m({label:"label",value:"value",children:"children"},e.fieldNames)}),[e.fieldNames]);var ke=R();var Se=ae===undefined?"fold":ae;var Te=ie===undefined?"click":ie;var De=U===true;var Pe=j((function(){return m({label:"label",value:"value"},re)}),[re]);var xe=w(),Ee=xe[0],Ae=xe[1];var Ie=R(true);var _e=w(0),Oe=_e[0],Ve=_e[1];var Ke=R();var Fe=j((function(){var e=B(A,Pe);return e}),[Pe,A]);D.useEffectCustom((function(){if(l(A)&&Ie.current||Le.treeList.length==0)return;Ie.current=false;if(!G(A,Ke.current,Pe)){console.log("modelKey:"+V+" TreeWrapper key refresh",A,Ke.current);Ke.current=De?Fe:Fe[0];var e=He(Fe,true);ye(Array.from(new Set(e)));ke.current=Fe;Ve(Date.now())}}),[A,Le.treeList]);var Me=function e(r){return r===""||l(r)};var Ue=function e(r){var t=pe.onRequestResultAdapter?pe.onRequestResultAdapter(r):r;return t};D.useEffectCustom((function(){Ae(X)}),[X]);var ze=f.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l;var s=function(){try{return e()}catch(e){return r(e)}};var o=function(e){try{Re(false);void L.error(e.message||"数据查询异常...");return s()}catch(e){return r(e)}};try{if(!pe.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=pe.requiredParamsKeys;n=v({},pe.params);if(t){a=t.find((function(e){return Me(n[e])}));if(a){console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var c=function(){try{return s()}catch(e){return o(e)}};var d=function(e){try{window[qe]=false;Re(false);void Ce.changeRequestStatus("request-error");return c()}catch(e){return o(e)}};try{Re(true);return Promise.resolve(Ce.changeRequestStatus("request-progress")).then((function(e){try{window[qe]=true;return Promise.resolve(pe.onRequest==null?void 0:pe.onRequest(n)).then((function(e){try{i=e;Y==null?void 0:Y(i);l=Ue(i);Be(l||[]);Re(false);if(le&&u(l).length){ye([l==null?void 0:l[0][Ne.value]])}window[qe]=false;return c()}catch(e){return d(e)}}),d)}catch(e){return d(e)}}),d)}catch(e){d(e)}}catch(e){o(e)}}))}));D.useEffectCustom((function(){if(fe)return;if(Boolean(me.length)){void ze();return}var e=M(V).getState();if(e.requestStatus==="request-success"){H==null?void 0:H(e.treeList);return}if(!window[qe]){void ze()}else{H==null?void 0:H(e.treeList)}}),me);D.useEffectCustom((function(){if(fe){Be(E||[])}}),[E]);var Be=f.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&Le.treeList.length===0){void Ce.changeRequestStatus("request-success");return}void Ce.setTreeList({treeList:e||[],childrenName:Ne.children});H==null?void 0:H(e)}));var He=f.useCallbackRef((function(e,r){var t=[];e.forEach((function(e){if(!r&&ge!=null&&ge.includes(e))return;var n=z(e,Le.treeList,Ne);t=t.concat(n.map((function(e){return e.value})))}));return t}));f.useUpdateEffect((function(){if(Ee){var e=a(Le.treeList||[],Ne);var r=e.filter((function(e){var r;return(r=e.label)==null?void 0:r.includes(Ee||"")}));ye((function(e){var t=He(r.map((function(e){return e.value}))).concat(e||[]);return Array.from(new Set(t))}))}else{ye([])}}),[Ee]);q(t,(function(){return{onClearSelectorList:function e(){void Ce.resetTreeList()},getTreeDataList:function e(){return Le.treeList}}}));var Ge=f.useCallbackRef((function(e){ye(e)}));var We=f.useCallbackRef((function(e,t,n){Ke.current=e;var a=l(t)?[]:r(t)?t:[t];if(l(e)){I==null?void 0:I(e,t,n);return}if(te){var i=Pe.label;var u=Pe.value;var s=a.map((function(e){var r;return r={},r[i]=e[Ne.label],r[u]=e[Ne.value],r}));if(r(e)){I==null?void 0:I(s,a,n)}else{I==null?void 0:I(s[0],a[0],n)}}else{if(r(e)){I==null?void 0:I(e,a,n)}else{I==null?void 0:I(e,a[0],n)}}}));var Ye=f.useCallbackRef((function(t,n){var a=e.checkStrictly?t.checked:t;a=l(t)?[]:t;a=r(a)?a:[a];var i=[];var u=[];var s=[];var o=[];a.forEach((function(e){var t=Le.treeTiledArray.find((function(r){return r[Ne.value]===e}));if(!t)return;var n=t==null?void 0:t[Ne.children];if(!r(n)||n.length===0){i.push(t);u.push(t[Ne.value])}s.push(t);o.push(t[Ne.value])}));if(U){ye((function(e){var r=He(u).concat(e||[]);return Array.from(new Set(r))}));if(!F&&!e.checkStrictly){We(u,i,s)}else{We(o,s,s)}}else{if(a[0]){var c=s.find((function(e){return e[Ne.value]===a[0]}));We(a[0],c,[c])}else{var d=n.node[Ne.value];var v=Le.treeTiledArray.find((function(e){return e[Ne.value]===d}));We(undefined,v,[v])}}}));var Je=f.useCallbackRef((function(e){return Q==null?void 0:Q(e)}));var Qe=j((function(){var e=h(Le.treeList||[]);if(Ee&&ue!=="highlight"){return s(h(Le.treeList||[]),(function(e){var r;var t=(r=e[Ne.label])==null?void 0:r.toLowerCase();return t.indexOf(Ee.toLowerCase())>=0}))}return e}),[Ne.label,ue,Le.treeList,Ee]);var Xe=j((function(){var e=function e(t){return t==null?void 0:t.map((function(t){var n;var a=(Je==null?void 0:Je(t))||t;var i=ne?undefined:a.disabled;var l=a[Ne.label];var u;if(Ee){var s=l.indexOf(Ee);var o=l.substring(0,s);var c=l.slice(s+Ee.length);u=s>-1?_("span",{className:d({"v-tree-item-disabled":a.disabled}),children:[o,O("span",{className:"site-tree-search-value",children:Ee}),c]}):null}if(!u){u=O("span",{className:d({"v-tree-item-disabled":a.disabled}),children:l})}var v=a[Ne.children];return m({},a,(n={disabled:i},n[Ne.label]=u,n._treeItemName=l,n._disabled=a.disabled,n[Ne.children]=r(v)&&v.length>0?e(v):undefined,n))}))};return e(Qe)}),[Qe,Je,ne,Ne.label,Ne.children,Ee]);var Ze=f.useCallbackRef((function(r){return new Promise((function(t,n){return new Promise((function(a,i){var l,u,s,o;if(r[Ne.children]){t();return a()}var c=function(){try{return a()}catch(e){return i(e)}};var d=function(e){try{void L.error(e.message||"数据加载异常...");n();return c()}catch(e){return i(e)}};try{return Promise.resolve((l=e.loadDataServiceConfig)==null?void 0:l.onRequest==null?void 0:l.onRequest((u=e.loadDataServiceConfig)==null?void 0:u.getParams==null?void 0:u.getParams(r))).then((function(e){try{s=e;o=pe.onRequestResultAdapter?pe.onRequestResultAdapter(s):s;void Ce.treeListAppendChildren({value:r[Ne.value],appendList:o,childrenName:Ne.children,valueName:Ne.value}).then((function(e){Be(e.treeList);t()}));return c()}catch(e){return d(e)}}),d)}catch(e){d(e)}}))}))}));var $e=f.useCallbackRef((function(r){var t=r==null?void 0:r[Ne.children];var n=e.loadDataFlag;var a=n?!r.isLeaf:false;var i=t&&t.length>0||a;return!i}));var er=f.useCallbackRef((function(r){var t,n;var a=r._treeItemName||r[Ne.label];if(Se==="fold"){var i;var l=[];if((i=e.menuOptions)!=null&&i.fold){var u,s,o;l=((u=e.menuOptions)==null?void 0:(s=u[Se])==null?void 0:s.call(u,m({},r,(o={},o[Ne.label]=a,o))))||[]}else{var v;l=(e.getMenuOptions==null?void 0:e.getMenuOptions(m({},r,(v={},v[Ne.label]=a,v))))||[]}return _(N,{children:[O("span",{className:"tree-item-title",children:(ce==null?void 0:ce(r))||(r==null?void 0:r[Ne.label])}),l.length>0&&O(T,{menuList:l,children:O(c,{})})]})}var f=(t=e.menuOptions)==null?void 0:t.tile==null?void 0:t.tile(m({},r,(n={},n[Ne.label]=a,n)));return _(N,{children:[O("span",{className:"tree-item-title",children:(ce==null?void 0:ce(r))||(r==null?void 0:r[Ne.label])}),f?O(S,m({},f,{gap:5,className:d("tree-item-title-operate",f.className)})):null]})}));var rr=f.useDebounceCallback((function(r){Ae(r);e.onSearchValueChange==null?void 0:e.onSearchValueChange(r)}),300);var tr=f.useCallbackRef((function(e){rr(e.target.value)}));var nr=f.useCallbackRef((function(r){if(!e.icon)return null;if(k(e.icon))return e.icon;var t=$e(r.data);return e.icon(m({},r,{isParent:!t,isLeaf:t}))}));var ar=j((function(){return{title:Ne.label,key:Ne.value,children:Ne.children}}),[Ne]);var ir=Xe.length>0&&Le.requestStatus!=="request-error";var lr=m({showLine:{showLeafIcon:false},titleRender:er,blockNode:true,switcherIcon:O(o,{}),onDrop:function e(r){if(oe){var t=oe(r);if(!t)return}var n=W(Qe,Ne,r),a=n.dataList,i=n.dragNodeData;se==null?void 0:se(i);Be(a)}},ve,{fieldNames:ar,expandedKeys:ge,treeData:Xe,onExpand:Ge,loadData:e.loadDataFlag?Ze:undefined,style:{width:"100%"},icon:nr});var ur={onCheck:Ye,checkable:U,defaultCheckedKeys:ke.current};var sr={onSelect:Ye,multiple:false,defaultSelectedKeys:ke.current};var or=U?ur:sr;var cr=d("v-tree-wrapper","v-tree-wrapper-menu-"+Te);var dr=Le.treeList.length>0&&!ir&&Ee;return _("div",{className:cr,style:n,children:[!!Z&&_("div",{className:"v-tree-wrapper-search-area",style:de,children:[O(P,{className:"v-tree-wrapper-search",placeholder:$,onChange:tr,value:X,allowClear:true}),!!e.searchExtraElement&&O("span",{className:"v-tree-wrapper-search-extra",children:e.searchExtraElement})]}),ir?_("div",{className:"v-tree-wrapper-tree-wrapper",children:[O(g,{spinning:Le.requestStatus==="request-progress"}),O(y,m({},or,lr,{className:"v-tree-wrapper-tree"}),Oe)]}):O(x,{status:Le.requestStatus,loading:je,messageConfig:m({"request-success":dr?"搜索结果为空":"暂无数据"},ee),errorButton:O(b,{type:"primary",onClick:ze,children:"重新获取数据"})})]})}));Q.defaultProps={disabledCanUse:true};var X=e.attachPropertiesToComponent(Q,{getTreeDataList:U});export{X as TreeWrapper};
|
|
12
|
+
import{f as e}from"../fba-utils-1e895394.js";import{isArray as r}from"@dimjs/lang/cjs/is-array";import{Model as t}from"@dimjs/model-react";import{treeToArray as n,treeToTiledArray as a,treeLeafParentsArray as i,isUndefinedOrNull as l,toArray as u,treeFilter as s}from"@flatbiz/utils";import o from"@ant-design/icons/es/icons/CaretDownFilled";import c from"@ant-design/icons/es/icons/MoreOutlined";import{classNames as d}from"@dimjs/utils/cjs/class-names";import{extend as v}from"@dimjs/utils/cjs/extend";import{hooks as f}from"@wove/react/cjs/hooks";import{_ as p,a as m}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{cloneState as h}from"@dimjs/model";import{Spin as g,Tree as y,Button as b,message as L}from"antd";import{forwardRef as C,useState as w,useMemo as j,useRef as R,useImperativeHandle as N,Fragment as q,isValidElement as k}from"react";import{a as S}from"../button-operate-697b2a94.js";import{D as T}from"../dropdown-menu-wrapper-3544d20e.js";import{fbaHooks as D}from"../fba-hooks/index.js";import{I as P}from"../input-search-wrapper-10d4a9b9.js";import{R as x}from"../request-status-03fc60e2.js";import{tree as E}from"@dimjs/utils/cjs/tree";import{isObject as A}from"@dimjs/lang/cjs/is-object";import{dequal as I}from"dequal";import{jsxs as _,jsx as O}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper-e833e139.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../config-provider-wrapper-dfe8f592.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../use-responsive-point-21b8c601.js";var V={treeList:[],treeTiledArray:[],queryIsEmpty:false};var K={actions:{setTreeList:function e(r){return function(e){e.treeList=r.treeList||[];e.treeTiledArray=n(e.treeList,r.childrenName);e.requestStatus="request-success"}},resetTreeList:function e(){return function(e){e.treeList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r;if(r==="request-error"){e.treeList=[]}}},treeListAppendChildren:function e(t){return function(e){var a=n(e.treeList,t.childrenName);var i=a.find((function(e){return e[t.valueName]===t.value}));if(i){if(r(t.appendList)&&t.appendList.length>0){i[t.childrenName]=t.appendList}else{i.isLeaf=true}}e.treeTiledArray=n(e.treeList,t.childrenName)}}},state:V};var F={};var M=function e(r){if(!F[r]){F[r]=t(K)}return F[r]};var U=function e(r){var t=M(r).getState();return t.treeList};var z=function e(r,t,n){var l=a(t,n);return i(r,l,true,{value:"value",parentValue:"parentValue"})};var B=function e(t,n){var a=l(t)?[]:t;a=r(a)?a:[a];a=a.map((function(e){if(A(e))return e[n.value];return e}));return a};var H=function e(r,t){var n=B(r,t);var a={};n.forEach((function(e){a[e]=true}));return a};var G=function e(r,t,n){if(l(r)&&l(t))return true;var a=H(r,n);var i=H(t,n);var u=I(a,i);return u};var W=function e(r,t,n){var a=n.node.key;var i=n.dragNode.key;var l=n.node.pos.split("-");var u=n.dropPosition-Number(l[l.length-1]);var s=t.value;var o=t.children;var c=function e(r,t,n){for(var a=0;a<r.length;a++){if(r[a][s]===t){return n(r[a],a,r)}if(r[a][o]){e(r[a][o],t,n)}}};var d=h(r);var v;c(d,i,(function(e,r,t){t.splice(r,1);v=e}));if(!n.dropToGap){c(d,a,(function(e){e[o]=e[o]||[];e[o].unshift(v)}))}else if((n.node.props.children||[]).length>0&&n.node.props.expanded&&u===1){c(d,a,(function(e){e[o]=e[o]||[];e[o].unshift(v)}))}else{var f=[];var p;c(d,a,(function(e,r,t){f=t;p=r}));if(u===-1){f.splice(p,0,v)}else{f.splice(p+1,0,v)}}return{dataList:d,dragNodeData:Y(i,d,t)}};var Y=function e(r,t,a){var i;var l=a.value;var u=a.children;E.walkThroughTree((i={},i[l]=undefined,i[u]=t,i),(function(e,r,t){e["__index"]=r;e["__parentId"]=t==null?void 0:t[l]}),u);var s=n(t,u);var o=s.find((function(e){return e[l]===r}));return{parentId:o==null?void 0:o["__parentId"],id:o==null?void 0:o[l],index:o==null?void 0:o["__index"]}};var J=["style","serviceConfig","effectDependencyList","selectorTreeList","value","onChange","modelKey","checkableResponseParentNode","checkable","onSelectorTreeListChange","onRequestResponseChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValueFieldNames","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand","searchResultType","onDropNodeHandle","onDropPrev","labelRender","searchStyle","className"];var Q=C((function(e,t){var n=e.style,i=e.serviceConfig,C=e.effectDependencyList,E=e.selectorTreeList,A=e.value,I=e.onChange,V=e.modelKey,K=e.checkableResponseParentNode,F=K===void 0?true:K,U=e.checkable,H=e.onSelectorTreeListChange,Y=e.onRequestResponseChange,Q=e.treeItemDataAdapter,X=e.searchValue,Z=e.showSearch,$=e.searchPlaceholder,ee=e.requestMessageConfig,re=e.labelInValueFieldNames,te=e.labelInValue,ne=e.disabledCanUse,ae=e.menuLayoutType,ie=e.menuTriggerType,le=e.initRootExpand,ue=e.searchResultType,se=e.onDropNodeHandle,oe=e.onDropPrev,ce=e.labelRender,de=e.searchStyle,ve=e.className,fe=p(e,J);var pe=e.hasOwnProperty("selectorTreeList");var me=i||{};var he=C||[];var ge=w(),ye=ge[0],be=ge[1];var Le=M(V).useStore(),Ce=Le[0],we=Le[1];var je=D.useSafeState(false),Re=je[0],Ne=je[1];var qe="request-progress-"+e.modelKey;var ke=j((function(){return m({label:"label",value:"value",children:"children"},e.fieldNames)}),[e.fieldNames]);var Se=R();var Te=ae===undefined?"fold":ae;var De=ie===undefined?"click":ie;var Pe=U===true;var xe=j((function(){return m({label:"label",value:"value"},re)}),[re]);var Ee=w(),Ae=Ee[0],Ie=Ee[1];var _e=R(true);var Oe=w(0),Ve=Oe[0],Ke=Oe[1];var Fe=R();var Me=j((function(){var e=B(A,xe);return e}),[xe,A]);D.useEffectCustom((function(){if(l(A)&&_e.current||Ce.treeList.length==0)return;_e.current=false;if(!G(A,Fe.current,xe)){console.log("modelKey:"+V+" TreeWrapper key refresh",A,Fe.current);Fe.current=Pe?Me:Me[0];var e=Ge(Me,true);be(Array.from(new Set(e)));Se.current=Me;Ke(Date.now())}}),[A,Ce.treeList]);var Ue=function e(r){return r===""||l(r)};var ze=function e(r){var t=me.onRequestResultAdapter?me.onRequestResultAdapter(r):r;return t};D.useEffectCustom((function(){Ie(X)}),[X]);var Be=f.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l;var s=function(){try{return e()}catch(e){return r(e)}};var o=function(e){try{Ne(false);void L.error(e.message||"数据查询异常...");return s()}catch(e){return r(e)}};try{if(!me.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=me.requiredParamsKeys;n=v({},me.params);if(t){a=t.find((function(e){return Ue(n[e])}));if(a){console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var c=function(){try{return s()}catch(e){return o(e)}};var d=function(e){try{window[qe]=false;Ne(false);void we.changeRequestStatus("request-error");return c()}catch(e){return o(e)}};try{Ne(true);return Promise.resolve(we.changeRequestStatus("request-progress")).then((function(e){try{window[qe]=true;return Promise.resolve(me.onRequest==null?void 0:me.onRequest(n)).then((function(e){try{i=e;Y==null?void 0:Y(i);l=ze(i);He(l||[]);Ne(false);if(le&&u(l).length){be([l==null?void 0:l[0][ke.value]])}window[qe]=false;return c()}catch(e){return d(e)}}),d)}catch(e){return d(e)}}),d)}catch(e){d(e)}}catch(e){o(e)}}))}));D.useEffectCustom((function(){if(pe)return;if(Boolean(he.length)){void Be();return}var e=M(V).getState();if(e.requestStatus==="request-success"){H==null?void 0:H(e.treeList);return}if(!window[qe]){void Be()}else{H==null?void 0:H(e.treeList)}}),he);D.useEffectCustom((function(){if(pe){He(E||[])}}),[E]);var He=f.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&Ce.treeList.length===0){void we.changeRequestStatus("request-success");return}void we.setTreeList({treeList:e||[],childrenName:ke.children});H==null?void 0:H(e)}));var Ge=f.useCallbackRef((function(e,r){var t=[];e.forEach((function(e){if(!r&&ye!=null&&ye.includes(e))return;var n=z(e,Ce.treeList,ke);t=t.concat(n.map((function(e){return e.value})))}));return t}));f.useUpdateEffect((function(){if(Ae){var e=a(Ce.treeList||[],ke);var r=e.filter((function(e){var r;return(r=e.label)==null?void 0:r.includes(Ae||"")}));be((function(e){var t=Ge(r.map((function(e){return e.value}))).concat(e||[]);return Array.from(new Set(t))}))}else{be([])}}),[Ae]);N(t,(function(){return{onClearSelectorList:function e(){void we.resetTreeList()},getTreeDataList:function e(){return Ce.treeList}}}));var We=f.useCallbackRef((function(e){be(e)}));var Ye=f.useCallbackRef((function(e,t,n){Fe.current=e;var a=l(t)?[]:r(t)?t:[t];if(l(e)){I==null?void 0:I(e,t,n);return}if(te){var i=xe.label;var u=xe.value;var s=a.map((function(e){var r;return r={},r[i]=e[ke.label],r[u]=e[ke.value],r}));if(r(e)){I==null?void 0:I(s,a,n)}else{I==null?void 0:I(s[0],a[0],n)}}else{if(r(e)){I==null?void 0:I(e,a,n)}else{I==null?void 0:I(e,a[0],n)}}}));var Je=f.useCallbackRef((function(t,n){var a=e.checkStrictly?t.checked:t;a=l(t)?[]:t;a=r(a)?a:[a];var i=[];var u=[];var s=[];var o=[];a.forEach((function(e){var t=Ce.treeTiledArray.find((function(r){return r[ke.value]===e}));if(!t)return;var n=t==null?void 0:t[ke.children];if(!r(n)||n.length===0){i.push(t);u.push(t[ke.value])}s.push(t);o.push(t[ke.value])}));if(U){be((function(e){var r=Ge(u).concat(e||[]);return Array.from(new Set(r))}));if(!F&&!e.checkStrictly){Ye(u,i,s)}else{Ye(o,s,s)}}else{if(a[0]){var c=s.find((function(e){return e[ke.value]===a[0]}));Ye(a[0],c,[c])}else{var d=n.node[ke.value];var v=Ce.treeTiledArray.find((function(e){return e[ke.value]===d}));Ye(undefined,v,[v])}}}));var Qe=f.useCallbackRef((function(e){return Q==null?void 0:Q(e)}));var Xe=j((function(){var e=h(Ce.treeList||[]);if(Ae&&ue!=="highlight"){return s(h(Ce.treeList||[]),(function(e){var r;var t=(r=e[ke.label])==null?void 0:r.toLowerCase();return t.indexOf(Ae.toLowerCase())>=0}),{childrenName:ke.children})}return e}),[ke.children,ke.label,ue,Ce.treeList,Ae]);var Ze=j((function(){var e=function e(t){return t==null?void 0:t.map((function(t){var n;var a=(Qe==null?void 0:Qe(t))||t;var i=ne?undefined:a.disabled;var l=a[ke.label];var u;if(Ae){var s=l.indexOf(Ae);var o=l.substring(0,s);var c=l.slice(s+Ae.length);u=s>-1?_("span",{className:d({"v-tree-item-disabled":a.disabled}),children:[o,O("span",{className:"site-tree-search-value",children:Ae}),c]}):null}if(!u){u=O("span",{className:d({"v-tree-item-disabled":a.disabled}),children:l})}var v=a[ke.children];return m({},a,(n={disabled:i},n[ke.label]=u,n._treeItemName=l,n._disabled=a.disabled,n[ke.children]=r(v)&&v.length>0?e(v):undefined,n))}))};return e(Xe)}),[Xe,Qe,ne,ke.label,ke.children,Ae]);var $e=f.useCallbackRef((function(r){return new Promise((function(t,n){return new Promise((function(a,i){var l,u,s,o;if(r[ke.children]){t();return a()}var c=function(){try{return a()}catch(e){return i(e)}};var d=function(e){try{void L.error(e.message||"数据加载异常...");n();return c()}catch(e){return i(e)}};try{return Promise.resolve((l=e.loadDataServiceConfig)==null?void 0:l.onRequest==null?void 0:l.onRequest((u=e.loadDataServiceConfig)==null?void 0:u.getParams==null?void 0:u.getParams(r))).then((function(e){try{s=e;o=me.onRequestResultAdapter?me.onRequestResultAdapter(s):s;void we.treeListAppendChildren({value:r[ke.value],appendList:o,childrenName:ke.children,valueName:ke.value}).then((function(e){He(e.treeList);t()}));return c()}catch(e){return d(e)}}),d)}catch(e){d(e)}}))}))}));var er=f.useCallbackRef((function(r){var t=r==null?void 0:r[ke.children];var n=e.loadDataFlag;var a=n?!r.isLeaf:false;var i=t&&t.length>0||a;return!i}));var rr=f.useCallbackRef((function(r){var t,n;var a=r._treeItemName||r[ke.label];if(Te==="fold"){var i;var l=[];if((i=e.menuOptions)!=null&&i.fold){var u,s,o;l=((u=e.menuOptions)==null?void 0:(s=u[Te])==null?void 0:s.call(u,m({},r,(o={},o[ke.label]=a,o))))||[]}else{var v;l=(e.getMenuOptions==null?void 0:e.getMenuOptions(m({},r,(v={},v[ke.label]=a,v))))||[]}return _(q,{children:[O("span",{className:"tree-item-title",children:(ce==null?void 0:ce(r))||(r==null?void 0:r[ke.label])}),l.length>0&&O(T,{menuList:l,children:O(c,{})})]})}var f=(t=e.menuOptions)==null?void 0:t.tile==null?void 0:t.tile(m({},r,(n={},n[ke.label]=a,n)));return _(q,{children:[O("span",{className:"tree-item-title",children:(ce==null?void 0:ce(r))||(r==null?void 0:r[ke.label])}),f?O(S,m({},f,{gap:5,className:d("tree-item-title-operate",f.className)})):null]})}));var tr=f.useDebounceCallback((function(r){Ie(r);e.onSearchValueChange==null?void 0:e.onSearchValueChange(r)}),300);var nr=f.useCallbackRef((function(e){tr(e.target.value)}));var ar=f.useCallbackRef((function(r){if(!e.icon)return null;if(k(e.icon))return e.icon;var t=er(r.data);return e.icon(m({},r,{isParent:!t,isLeaf:t}))}));var ir=j((function(){return{title:ke.label,key:ke.value,children:ke.children}}),[ke]);var lr=Ze.length>0&&Ce.requestStatus!=="request-error";var ur=m({showLine:{showLeafIcon:false},titleRender:rr,blockNode:true,switcherIcon:O(o,{}),onDrop:function e(r){if(oe){var t=oe(r);if(!t)return}var n=W(Xe,ke,r),a=n.dataList,i=n.dragNodeData;se==null?void 0:se(i);He(a)}},fe,{fieldNames:ir,expandedKeys:ye,treeData:Ze,onExpand:We,loadData:e.loadDataFlag?$e:undefined,style:{width:"100%"},icon:ar});var sr={onCheck:Je,checkable:U,defaultCheckedKeys:Se.current};var or={onSelect:Je,multiple:false,defaultSelectedKeys:Se.current};var cr=U?sr:or;var dr=d("v-tree-wrapper","v-tree-wrapper-menu-"+De,ve);var vr=Ce.treeList.length>0&&!lr&&Ae;return _("div",{className:dr,style:n,children:[!!Z&&_("div",{className:"v-tree-wrapper-search-area",style:de,children:[O(P,{className:"v-tree-wrapper-search",placeholder:$,onChange:nr,value:X,allowClear:true}),!!e.searchExtraElement&&O("span",{className:"v-tree-wrapper-search-extra",children:e.searchExtraElement})]}),lr?_("div",{className:"v-tree-wrapper-tree-wrapper",children:[O(g,{spinning:Ce.requestStatus==="request-progress"}),O(y,m({},cr,ur,{className:"v-tree-wrapper-tree"}),Ve)]}):O(x,{status:Ce.requestStatus,loading:Re,messageConfig:m({"request-success":vr?"搜索结果为空":"暂无数据"},ee),errorButton:O(b,{type:"primary",onClick:Be,children:"重新获取数据"})})]})}));Q.defaultProps={disabledCanUse:true};var X=e.attachPropertiesToComponent(Q,{getTreeDataList:U});export{X as TreeWrapper};
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-wrapper/model.ts","@flatbiz/antd/src/tree-wrapper/hooks.ts","@flatbiz/antd/src/tree-wrapper/utils.ts","@flatbiz/antd/src/tree-wrapper/tree-wrapper.tsx","@flatbiz/antd/src/tree-wrapper/index.ts"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TPlainObject, treeToArray, TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeList: TSetDefaultDefined<TreeProps['treeData'], []>;\n treeTiledArray: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setTreeList: {\n treeList: ModelState['treeList'];\n childrenName: string;\n };\n resetTreeList: void;\n changeRequestStatus: TRequestStatus;\n treeListAppendChildren: {\n value: string | number;\n appendList: TPlainObject[];\n childrenName: string;\n valueName: string;\n };\n};\n\nconst defaultState: ModelState = {\n treeList: [],\n treeTiledArray: [],\n queryIsEmpty: false,\n};\n\nconst TreeWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setTreeList: (params) => {\n return (state) => {\n state.treeList = params.treeList || [];\n state.treeTiledArray = treeToArray(state.treeList, params.childrenName);\n state.requestStatus = 'request-success';\n };\n },\n resetTreeList: () => {\n return (state) => {\n state.treeList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n if (params === 'request-error') {\n state.treeList = [];\n }\n };\n },\n treeListAppendChildren: (params) => {\n return (state) => {\n const array = treeToArray(state.treeList, params.childrenName);\n const target = array.find((item) => item[params.valueName] === params.value);\n if (target) {\n if (isArray(params.appendList) && params.appendList.length > 0) {\n target[params.childrenName] = params.appendList;\n } else {\n target.isLeaf = true;\n }\n }\n state.treeTiledArray = treeToArray(state.treeList, params.childrenName);\n };\n },\n },\n state: defaultState,\n};\n\nconst treeWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, any>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeWrapperModel('key值').useStore();\n * ```\n */\nexport const treeWrapperModel = (key: string) => {\n if (!treeWrapperModels[key]) {\n treeWrapperModels[key] = Model(TreeWrapperModel);\n }\n return treeWrapperModels[key];\n};\n","import { TPlainObject } from '@flatbiz/utils';\nimport { treeWrapperModel } from './model';\n\nexport const getTreeDataList = (modelKey: string) => {\n const state = treeWrapperModel(modelKey).getState();\n return state.treeList as TPlainObject[];\n};\n","import { TAny, TPlainObject, treeLeafParentsArray, treeToTiledArray } from '@flatbiz/utils';\n\nexport const getExpandedKeys = (\n value: string | number,\n treeList: TPlainObject[],\n fieldNames?: { label?: string; value?: string; children?: string },\n) => {\n const tiledArray = treeToTiledArray(treeList, fieldNames);\n return treeLeafParentsArray(value, tiledArray, true, { value: 'value', parentValue: 'parentValue' });\n};\n\nimport { isArray, isObject } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { tree } from '@dimjs/utils';\nimport { isUndefinedOrNull, LabelValueItem, treeToArray } from '@flatbiz/utils';\nimport { DataNode } from 'antd/es/tree';\nimport { dequal } from 'dequal';\n\nexport const getVauleList = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n let tempList = isUndefinedOrNull(data) ? [] : data;\n tempList = isArray(tempList) ? tempList : [tempList];\n tempList = tempList.map((item) => {\n if (isObject(item)) return item[labelInValueFieldNames.value];\n return item;\n });\n return tempList as Array<string | number>;\n};\n\nexport const array2map = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n const list = getVauleList(data, labelInValueFieldNames);\n const map = {};\n list.forEach((item) => {\n map[item] = true;\n });\n return map;\n};\n\n/**\n * value的类型包括\n * string、number、\n * Array<string | number>、{ label: string, value: string | nuber }、\n * Array<{ label: string, value: string | nuber }>\n * 将数组转成对象,深度比较时不用考虑顺序问题\n * @param value1\n * @param value2\n * @returns\n */\nexport const treeWrapperValueDeepEqual = (\n value1: TAny,\n value2: TAny,\n labelInValueFieldNames: LabelValueItem<string | number>,\n) => {\n if (isUndefinedOrNull(value1) && isUndefinedOrNull(value2)) return true;\n const object1 = array2map(value1, labelInValueFieldNames);\n const object2 = array2map(value2, labelInValueFieldNames);\n const diff = dequal(object1, object2);\n return diff;\n};\n\ntype OnTreeDropMethod = (\n dataList: TPlainObject[],\n fieldNames: { value: string; children: string },\n info: TAny,\n) => {\n dataList: TPlainObject[];\n dragNodeData: {\n parentId?: string | number;\n id: string | number;\n index: number;\n };\n};\n\nexport const onTreeDrop: OnTreeDropMethod = (dataList, fieldNames, info) => {\n const dropKey = info.node.key;\n const dragKey = info.dragNode.key;\n const dropPos = info.node.pos.split('-');\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const treeKeyName = fieldNames.value;\n const treeChildrenName = fieldNames.children;\n\n const loop = (\n data: DataNode[],\n key: React.Key,\n callback: (node: DataNode, i: number, data: DataNode[]) => void,\n ) => {\n for (let i = 0; i < data.length; i++) {\n if (data[i][treeKeyName] === key) {\n return callback(data[i], i, data);\n }\n if (data[i][treeChildrenName]) {\n loop(data[i][treeChildrenName]!, key, callback);\n }\n }\n };\n const data = cloneState(dataList) as DataNode[];\n\n // Find dragObject\n let dragObj: DataNode;\n loop(data, dragKey, (item, index, arr) => {\n arr.splice(index, 1);\n dragObj = item;\n });\n\n if (!info.dropToGap) {\n // Drop on the content\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n });\n } else if (\n (info.node.props.children || []).length > 0 && // Has children\n info.node.props.expanded && // Is expanded\n dropPosition === 1 // On the bottom gap\n ) {\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n // in previous version, we use item.children.push(dragObj) to insert the\n // item to the tail of the children\n });\n } else {\n let ar: DataNode[] = [];\n let i: number;\n loop(data, dropKey, (_item, index, arr) => {\n ar = arr;\n i = index;\n });\n if (dropPosition === -1) {\n ar.splice(i!, 0, dragObj!);\n } else {\n ar.splice(i! + 1, 0, dragObj!);\n }\n }\n return {\n dataList: data,\n dragNodeData: dragNodeData(dragKey, data, fieldNames),\n };\n};\n\nexport const dragNodeData = (\n dorpNodeId: TAny,\n dataList: TAny[],\n fieldNames: { value: string; children: string },\n) => {\n const id = fieldNames.value;\n const children = fieldNames.children;\n tree.walkThroughTree<TPlainObject, TAny>(\n { [id]: undefined, [children]: dataList } as TAny,\n (node, index, _parent) => {\n node['__index'] = index;\n node['__parentId'] = _parent?.[id];\n },\n children,\n );\n const tileList = treeToArray(dataList, children);\n const target = tileList.find((item) => item[id] === dorpNodeId);\n return {\n parentId: target?.['__parentId'],\n id: target?.[id],\n index: target?.['__index'],\n };\n};\n","import { CaretDownFilled, MoreOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, extend } from '@dimjs/utils';\n\nimport { hooks } from '@wove/react';\nimport { Button, message, Spin, Tree, TreeProps } from 'antd';\nimport {\n CSSProperties,\n DependencyList,\n forwardRef,\n Fragment,\n isValidElement,\n ReactElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { isUndefinedOrNull, TAny, toArray, TPlainObject, treeFilter, treeToTiledArray } from '@flatbiz/utils';\n\nimport { ButtonOperate, ButtonOperateItem, ButtonOperateProps } from '../button-operate';\nimport { DropdownMenuItem, DropdownMenuWrapper } from '../dropdown-menu-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { InputSearchWrapper } from '../input-search-wrapper';\nimport { RequestStatus, TRequestStatusProps } from '../request-status';\nimport { treeWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeys, getVauleList, onTreeDrop, treeWrapperValueDeepEqual } from './utils';\n\ntype TreeWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\ntype TreeLoadDataServiceConfig = {\n getParams: (dataItem: TPlainObject) => TPlainObject;\n onRequest: (params: TPlainObject) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeWrapperMenuItem = {\n title: string;\n onClick: (dataItem: TPlainObject, event) => void;\n icon?: ReactElement;\n};\n\nexport type TreeWrapperProps = Omit<\n TreeProps,\n | 'expandedKeys'\n | 'treeData'\n | 'onExpand'\n | 'selectedKeys'\n | 'checkedKeys'\n | 'onCheck'\n | 'onSelect'\n | 'defaultCheckedKeys'\n | 'defaultSelectedKeys'\n | 'fieldNames'\n | 'multiple'\n | 'loadData'\n | 'icon'\n> & {\n modelKey: string;\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n loadDataServiceConfig?: TreeLoadDataServiceConfig;\n /**\n * 当设置selectorTreeList后,serviceConfig将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n selectorTreeList?: TPlainObject[];\n /**\n * 通过服务获取数据后回调,当设置`selectorList`后无效果\n * ```\n * 相同modelKey,同时发起多个渲染时,只有第一个会执行 onSelectorTreeListChange 回调\n * ```\n */\n onSelectorTreeListChange?: (dataList: TPlainObject[]) => void;\n onRequestResponseChange?: (data: TAny) => void;\n onChange?: (\n selectedKey?: TreeWrapperValue,\n operateNodeData?: TPlainObject[] | TPlainObject,\n operateAllNodeDataList?: TPlainObject[],\n ) => void;\n fieldNames?: { label?: string; value?: string; children?: string };\n /**\n * 搜索关键字,打开tree折叠过滤关键字\n */\n searchValue?: string;\n /**\n * checkable模式下,onChange是否返回父节点,默认值true\n * 1. checkStrictly = true,模式下失效\n */\n checkableResponseParentNode?: boolean;\n loadDataFlag?: boolean;\n /**\n * 菜单结构类型 tile/平铺 fold/折叠;默认:fold\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuLayoutType?: 'tile' | 'fold';\n /**\n * 菜单触发类型,默认:click\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuTriggerType?: 'click' | 'hover';\n /**\n * 获取菜单类别\n * @param dataItem\n * @deprecated 已过期,请使用 menuOptions\n * @returns\n * ```\n * 1. menuLayoutType = tile 无效\n * 2. 自定义设置 titleRender 后失效\n * ```\n */\n getMenuOptions?: (dataItem: TPlainObject) => DropdownMenuItem[] | ButtonOperateItem[];\n\n /**\n * 根据 menuLayoutType 类型赋值\n */\n menuOptions?: {\n tile?: (dataItem: TPlainObject) => ButtonOperateProps;\n fold?: (dataItem: TPlainObject) => DropdownMenuItem[];\n };\n showSearch?: boolean;\n onSearchValueChange?: (searchValue?: string) => void;\n searchPlaceholder?: string;\n searchStyle?: CSSProperties;\n icon?: (data: { isParent: boolean; isLeaf: boolean }) => ReactElement;\n /**\n * 是否必选,最后一个不能取消\n */\n // required?: boolean;\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n /**\n * value格式\n *```\n * 1. string 、number\n * 2. Array<string | number>\n * 3. lableInValue = true,根据labelInValueFieldNames配置格式\n * 4. lableInValue = true,Array<labelInValueFieldNames配置>\n * ```\n */\n value?: TreeWrapperValue;\n labelInValue?: boolean;\n /**\n * ```\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * 禁用状态是否可选,默认值true\n * 当dateItem中包含 disabled 则数据为禁用状态\n */\n disabledCanUse?: boolean;\n\n /** treeItem数据适配器 */\n treeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n /** 搜索位置额外元素 */\n searchExtraElement?: ReactElement;\n /** 有唯一跟节点时,初始化是否展开,默认值:false */\n initRootExpand?: boolean;\n /** 搜素过滤方式,高亮 | 过滤;默认:filter */\n searchResultType?: 'highlight' | 'filter';\n /**\n * 拖拽节点处理,自定义onDrop事件后,失效\n * ```\n * 参数\n * 1. parentId 当前拖拽节点的父节点ID\n * 2. id 当前拖拽节点ID\n * 3. index 当前拖拽节点所在数组下标\n * ```\n */\n onDropNodeHandle?: (result: { parentId?: string | number; id: string | number; index: number }) => void;\n /**\n * 拖拽排序前判断,如果返回 true,可排序,其他不可排序\n * ```\n * 可用于需要权限控制判断\n * ```\n */\n onDropPrev?: (info) => boolean;\n /**\n * 标签渲染\n * ```\n * 1. 自定义设置 titleRender 后失效\n * 2. 与titleRender的区别\n * a. 设置 labelRender 后,menuLayout有效\n * b. 设置 titleRender 后,menuLayout失效\n * ```\n */\n labelRender?: (nodeData: TPlainObject) => ReactElement;\n};\n\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\n};\n\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * @param props\n * @returns\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper = forwardRef<TreeWrapperRefApi, TreeWrapperProps>((props, ref) => {\n const {\n style,\n serviceConfig,\n effectDependencyList,\n selectorTreeList,\n value,\n onChange,\n modelKey,\n checkableResponseParentNode = true,\n checkable,\n onSelectorTreeListChange,\n onRequestResponseChange,\n treeItemDataAdapter,\n searchValue,\n showSearch,\n searchPlaceholder,\n requestMessageConfig,\n labelInValueFieldNames,\n labelInValue,\n disabledCanUse,\n menuLayoutType,\n menuTriggerType,\n initRootExpand,\n searchResultType,\n onDropNodeHandle,\n onDropPrev,\n labelRender,\n searchStyle,\n ...otherProps\n } = props;\n const hasSelectorTreeList = props.hasOwnProperty('selectorTreeList');\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeWrapperModel(modelKey).useStore();\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const requestPreKey = `request-progress-${props.modelKey}`;\n const fieldNames = useMemo(() => {\n return { label: 'label', value: 'value', children: 'children', ...props.fieldNames };\n }, [props.fieldNames]);\n // 必须是数组格式\n const defaultValueRef = useRef<Array<string | number>>();\n const menuLayoutTypeNew = menuLayoutType === undefined ? 'fold' : menuLayoutType;\n const menuTriggerTypeNew = menuTriggerType === undefined ? 'click' : menuTriggerType;\n\n const isMultiple = checkable === true;\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n // tree 搜索值\n const [treeSearchValue, setTreeSearchValue] = useState<string>();\n\n const isFirstUseValueRef = useRef(true);\n const [refreshKey, setRefreshKey] = useState(0);\n const innerOperateValueRef = useRef<Array<string | number> | string | number>();\n\n const valueList = useMemo(() => {\n const tempList = getVauleList(value, labelInValueFieldNamesMerge);\n return tempList;\n }, [labelInValueFieldNamesMerge, value]);\n\n fbaHooks.useEffectCustom(() => {\n if ((isUndefinedOrNull(value) && isFirstUseValueRef.current) || state.treeList.length == 0) return;\n isFirstUseValueRef.current = false;\n if (!treeWrapperValueDeepEqual(value, innerOperateValueRef.current, labelInValueFieldNamesMerge)) {\n console.log(`modelKey:${modelKey} TreeWrapper key refresh`, value, innerOperateValueRef.current);\n innerOperateValueRef.current = isMultiple ? valueList : valueList[0];\n // 重新计算 expandedKeys\n const expandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(expandedKeys)));\n defaultValueRef.current = valueList;\n setRefreshKey(Date.now());\n }\n }, [value, state.treeList]);\n\n const valueIsEmpty = (data: string | number) => {\n return data === '' || isUndefinedOrNull(data);\n };\n\n const serviceResponseHandle = (respData) => {\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n return respDataList;\n };\n\n fbaHooks.useEffectCustom(() => {\n setTreeSearchValue(searchValue);\n }, [searchValue]);\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n console.warn(`TreeWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n await actions.changeRequestStatus('request-progress');\n window[requestPreKey] = true;\n const _respData = await newServiceConfig.onRequest?.(params);\n onRequestResponseChange?.(_respData);\n const respData = serviceResponseHandle(_respData) as TreeProps['treeData'];\n onChangeSelectorList(respData || []);\n setLoading(false);\n if (initRootExpand && toArray(respData).length) {\n setTreeExpandedKeys([respData?.[0][fieldNames.value]]);\n }\n window[requestPreKey] = false;\n } catch (error) {\n window[requestPreKey] = false;\n setLoading(false);\n void actions.changeRequestStatus('request-error');\n }\n } catch (error) {\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (Boolean(newEffectDependencyList.length)) {\n void startDataSourceRequest();\n return;\n }\n const allState = treeWrapperModel(modelKey).getState();\n if (allState.requestStatus === 'request-success') {\n onSelectorTreeListChange?.(allState.treeList);\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n } else {\n onSelectorTreeListChange?.(allState.treeList);\n }\n }, newEffectDependencyList);\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) {\n onChangeSelectorList(selectorTreeList || []);\n }\n }, [selectorTreeList]);\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeList.length === 0) {\n void actions.changeRequestStatus('request-success');\n return;\n }\n void actions.setTreeList({\n treeList: dataList || [],\n childrenName: fieldNames.children,\n });\n onSelectorTreeListChange?.(dataList);\n });\n\n const getTreeExpandedKeys = hooks.useCallbackRef((valueList: Array<string | number>, refresh?: boolean) => {\n let newTreeExpandedKeys = [] as Array<string | number>;\n valueList.forEach((value) => {\n if (!refresh && treeExpandedKeys?.includes(value)) return;\n const targetList = getExpandedKeys(value, state.treeList, fieldNames);\n newTreeExpandedKeys = newTreeExpandedKeys.concat(targetList.map((item) => item.value));\n });\n return newTreeExpandedKeys;\n });\n\n hooks.useUpdateEffect(() => {\n if (treeSearchValue) {\n const tiledArray = treeToTiledArray(state.treeList || [], fieldNames);\n const targetList = tiledArray.filter((item) => item.label?.includes(treeSearchValue || ''));\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(targetList.map((item) => item.value)).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n } else {\n setTreeExpandedKeys([]);\n }\n }, [treeSearchValue]);\n\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.resetTreeList();\n },\n getTreeDataList: () => {\n return state.treeList;\n },\n };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onRespChange = hooks.useCallbackRef((selectedKey, selectInfo?, selectAllList?) => {\n innerOperateValueRef.current = selectedKey;\n const selectList = isUndefinedOrNull(selectInfo) ? [] : isArray(selectInfo) ? selectInfo : [selectInfo];\n if (isUndefinedOrNull(selectedKey)) {\n onChange?.(selectedKey, selectInfo, selectAllList);\n return;\n }\n if (labelInValue) {\n const lvLabel = labelInValueFieldNamesMerge.label;\n const lvValue = labelInValueFieldNamesMerge.value;\n const labelInValueList = selectList.map((item) => {\n return {\n [lvLabel]: item[fieldNames.label],\n [lvValue]: item[fieldNames.value],\n };\n });\n if (isArray(selectedKey)) {\n onChange?.(labelInValueList, selectList, selectAllList);\n } else {\n onChange?.(labelInValueList[0], selectList[0], selectAllList);\n }\n } else {\n if (isArray(selectedKey)) {\n onChange?.(selectedKey, selectList, selectAllList);\n } else {\n onChange?.(selectedKey, selectList[0], selectAllList);\n }\n }\n });\n\n const onTreeChangeHandle = hooks.useCallbackRef((checkedData, operateInfo) => {\n let checkedValueList = props.checkStrictly ? checkedData.checked : checkedData;\n checkedValueList = isUndefinedOrNull(checkedData) ? [] : checkedData;\n checkedValueList = isArray(checkedValueList) ? checkedValueList : [checkedValueList];\n\n const selectedLeafList = [] as TPlainObject[];\n const selectedLeafValueList = [] as Array<string | number>;\n const selectedAllList = [] as TPlainObject[];\n const selectedAllValueList = [] as Array<string | number>;\n checkedValueList.forEach((item) => {\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === item);\n if (!target) return;\n const children = target?.[fieldNames.children];\n if (!isArray(children) || children.length === 0) {\n selectedLeafList.push(target);\n selectedLeafValueList.push(target[fieldNames.value]);\n }\n selectedAllList.push(target);\n selectedAllValueList.push(target[fieldNames.value]);\n });\n\n if (checkable) {\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(selectedLeafValueList).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n if (!checkableResponseParentNode && !props.checkStrictly) {\n onRespChange(selectedLeafValueList, selectedLeafList, selectedAllList);\n } else {\n onRespChange(selectedAllValueList, selectedAllList, selectedAllList);\n }\n } else {\n if (checkedValueList[0]) {\n const currentNode = selectedAllList.find((item) => item[fieldNames.value] === checkedValueList[0]);\n onRespChange(checkedValueList[0], currentNode, [currentNode]);\n } else {\n const nodeValue = operateInfo.node[fieldNames.value];\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === nodeValue);\n onRespChange(undefined, target, [target]);\n }\n }\n });\n\n const treeItemDataAdapterHandle = hooks.useCallbackRef((dataItem) => {\n return treeItemDataAdapter?.(dataItem);\n });\n\n const originalDataList = useMemo(() => {\n const list = cloneState(state.treeList || []);\n if (treeSearchValue && searchResultType !== 'highlight') {\n return treeFilter(cloneState(state.treeList || []), (node) => {\n const value = node[fieldNames.label]?.toLowerCase();\n return value.indexOf(treeSearchValue.toLowerCase()) >= 0;\n });\n }\n return list;\n }, [fieldNames.label, searchResultType, state.treeList, treeSearchValue]);\n\n const treeData = useMemo(() => {\n const loop = (data: TAny[]): TAny[] =>\n data?.map((item) => {\n const adapterItem = treeItemDataAdapterHandle?.(item) || item;\n const disabled = disabledCanUse ? undefined : adapterItem.disabled;\n const strTitle = adapterItem[fieldNames.label] as string;\n let titleDom;\n if (treeSearchValue) {\n const index = strTitle.indexOf(treeSearchValue);\n const beforeStr = strTitle.substring(0, index);\n const afterStr = strTitle.slice(index + treeSearchValue.length);\n titleDom =\n index > -1 ? (\n <span className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>\n {beforeStr}\n <span className=\"site-tree-search-value\">{treeSearchValue}</span>\n {afterStr}\n </span>\n ) : null;\n }\n if (!titleDom) {\n titleDom = (\n <span className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>{strTitle}</span>\n );\n }\n const children = adapterItem[fieldNames.children];\n return {\n ...adapterItem,\n disabled,\n [fieldNames.label]: titleDom,\n _treeItemName: strTitle,\n _disabled: adapterItem.disabled,\n [fieldNames.children]: isArray(children) && children.length > 0 ? loop(children) : undefined,\n };\n });\n return loop(originalDataList);\n }, [\n originalDataList,\n treeItemDataAdapterHandle,\n disabledCanUse,\n fieldNames.label,\n fieldNames.children,\n treeSearchValue,\n ]);\n\n const loadData = hooks.useCallbackRef((dataItem: TPlainObject) => {\n return new Promise<void>(async (resolve, reject) => {\n if (dataItem[fieldNames.children]) {\n resolve();\n return;\n }\n try {\n const respData = await props.loadDataServiceConfig?.onRequest?.(\n props.loadDataServiceConfig?.getParams?.(dataItem),\n );\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n void actions\n .treeListAppendChildren({\n value: dataItem[fieldNames.value],\n appendList: respDataList,\n childrenName: fieldNames.children,\n valueName: fieldNames.value,\n })\n .then((allState) => {\n onChangeSelectorList(allState.treeList as TPlainObject[]);\n resolve();\n });\n } catch (error) {\n void message.error(error.message || '数据加载异常...');\n // 此处失败后,会重试“loadData”请求多次\n reject();\n }\n });\n });\n\n const isLeafNode = hooks.useCallbackRef((nodeData) => {\n const children = nodeData?.[fieldNames.children];\n // 当loadDataFlag=true,考虑叶子节点显示问题\n const loadDataFlag = props.loadDataFlag;\n const loadHasChildren = loadDataFlag ? !nodeData.isLeaf : false;\n const hasChildren = (children && children.length > 0) || loadHasChildren;\n return !hasChildren;\n });\n\n const titleRender = hooks.useCallbackRef((nodeData) => {\n const stringLabel = nodeData._treeItemName || nodeData[fieldNames.label];\n\n if (menuLayoutTypeNew === 'fold') {\n let menuOptions: TAny[] = [];\n if (props.menuOptions?.fold) {\n menuOptions =\n props.menuOptions?.[menuLayoutTypeNew]?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n } else {\n menuOptions =\n props.getMenuOptions?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n }\n return (\n <Fragment>\n <span className=\"tree-item-title\">{labelRender?.(nodeData) || nodeData?.[fieldNames.label]}</span>\n {menuOptions.length > 0 && (\n <DropdownMenuWrapper menuList={menuOptions}>\n <MoreOutlined />\n </DropdownMenuWrapper>\n )}\n </Fragment>\n );\n }\n const menuOptions = props.menuOptions?.tile?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n });\n return (\n <Fragment>\n <span className=\"tree-item-title\">{labelRender?.(nodeData) || nodeData?.[fieldNames.label]}</span>\n {menuOptions ? (\n <ButtonOperate\n {...menuOptions}\n gap={5}\n className={classNames('tree-item-title-operate', menuOptions.className)}\n />\n ) : null}\n </Fragment>\n );\n });\n\n const onChangeDebounce = hooks.useDebounceCallback((value: string) => {\n setTreeSearchValue(value);\n props.onSearchValueChange?.(value);\n }, 300);\n\n const onSearchChange = hooks.useCallbackRef((e: React.ChangeEvent<HTMLInputElement>) => {\n onChangeDebounce(e.target.value);\n });\n\n const iconHandle = hooks.useCallbackRef((treeData) => {\n if (!props.icon) return null;\n if (isValidElement(props.icon)) return props.icon;\n const isLeafFlag = isLeafNode(treeData.data);\n return props.icon({\n ...treeData,\n isParent: !isLeafFlag,\n isLeaf: isLeafFlag,\n });\n });\n\n const treeFieldNames = useMemo(() => {\n return { title: fieldNames.label, key: fieldNames.value, children: fieldNames.children };\n }, [fieldNames]);\n const showTree = treeData.length > 0 && state.requestStatus !== 'request-error';\n const commonProps = {\n showLine: { showLeafIcon: false },\n titleRender,\n blockNode: true,\n switcherIcon: <CaretDownFilled />,\n\n onDrop: (info) => {\n if (onDropPrev) {\n const boo = onDropPrev(info);\n if (!boo) return;\n }\n const { dataList, dragNodeData } = onTreeDrop(originalDataList as TPlainObject[], fieldNames, info);\n onDropNodeHandle?.(dragNodeData);\n onChangeSelectorList(dataList);\n },\n ...otherProps,\n fieldNames: treeFieldNames,\n expandedKeys: treeExpandedKeys,\n treeData,\n onExpand,\n loadData: props.loadDataFlag ? loadData : undefined,\n style: { width: '100%' },\n icon: iconHandle,\n };\n\n const checkedProps = {\n onCheck: onTreeChangeHandle,\n checkable,\n // 必须是数组格式\n defaultCheckedKeys: defaultValueRef.current,\n };\n\n const selectedProps = {\n onSelect: onTreeChangeHandle,\n multiple: false,\n // 必须是数组格式\n defaultSelectedKeys: defaultValueRef.current,\n };\n const sceneProps = checkable ? checkedProps : selectedProps;\n const cName = classNames('v-tree-wrapper', `v-tree-wrapper-menu-${menuTriggerTypeNew}`);\n const isSearchEmpty = state.treeList.length > 0 && !showTree && treeSearchValue;\n return (\n <div className={cName} style={style}>\n {!!showSearch && (\n <div className=\"v-tree-wrapper-search-area\" style={searchStyle}>\n <InputSearchWrapper\n className=\"v-tree-wrapper-search\"\n placeholder={searchPlaceholder}\n onChange={onSearchChange}\n value={searchValue}\n allowClear\n />\n {!!props.searchExtraElement && (\n <span className=\"v-tree-wrapper-search-extra\">{props.searchExtraElement}</span>\n )}\n </div>\n )}\n\n {showTree ? (\n <div className=\"v-tree-wrapper-tree-wrapper\">\n <Spin spinning={state.requestStatus === 'request-progress'} />\n <Tree key={refreshKey} {...sceneProps} {...commonProps} className=\"v-tree-wrapper-tree\"></Tree>\n </div>\n ) : (\n <RequestStatus\n status={state.requestStatus}\n loading={loading}\n messageConfig={{\n 'request-success': isSearchEmpty ? '搜索结果为空' : '暂无数据',\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n )}\n </div>\n );\n});\n\nTreeWrapper.defaultProps = {\n disabledCanUse: true,\n};\n","import { fbaUtils } from '../fba-utils';\nimport { getTreeDataList } from './hooks';\nimport { TreeWrapper as TreeWrapperInner } from './tree-wrapper';\n\nexport type * from './tree-wrapper';\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * @param props\n * @returns\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper = fbaUtils.attachPropertiesToComponent(TreeWrapperInner, {\n /**\n * 获取树形原数据\n * ```\n * 参数 modelKey 与 TreeWrapper属性 modelKey相同,才能获取数据\n * ```\n */\n getTreeDataList: getTreeDataList,\n});\n"],"names":["defaultState","treeList","treeTiledArray","queryIsEmpty","TreeWrapperModel","actions","setTreeList","params","state","treeToArray","childrenName","requestStatus","resetTreeList","changeRequestStatus","treeListAppendChildren","array","target","find","item","valueName","value","_isArray","appendList","length","isLeaf","treeWrapperModels","treeWrapperModel","key","Model","getTreeDataList","modelKey","getState","getExpandedKeys","fieldNames","tiledArray","treeToTiledArray","treeLeafParentsArray","parentValue","getVauleList","data","labelInValueFieldNames","tempList","isUndefinedOrNull","map","_isObject","array2map","list","forEach","treeWrapperValueDeepEqual","value1","value2","object1","object2","diff","dequal","onTreeDrop","dataList","info","dropKey","node","dragKey","dragNode","dropPos","pos","split","dropPosition","Number","treeKeyName","treeChildrenName","children","loop","callback","i","cloneState","dragObj","index","arr","splice","dropToGap","unshift","props","expanded","ar","_item","dragNodeData","dorpNodeId","_tree$walkThroughTree","id","_tree","walkThroughTree","undefined","_parent","tileList","parentId","TreeWrapper","forwardRef","ref","style","serviceConfig","effectDependencyList","selectorTreeList","onChange","_props$checkableRespo","checkableResponseParentNode","checkable","onSelectorTreeListChange","onRequestResponseChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand","searchResultType","onDropNodeHandle","onDropPrev","labelRender","searchStyle","otherProps","_objectWithoutPropertiesLoose","_excluded","hasSelectorTreeList","hasOwnProperty","newServiceConfig","newEffectDependencyList","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeWrapperModel$use","useStore","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","requestPreKey","useMemo","_extends","label","defaultValueRef","useRef","menuLayoutTypeNew","menuTriggerTypeNew","isMultiple","labelInValueFieldNamesMerge","_useState2","treeSearchValue","setTreeSearchValue","isFirstUseValueRef","_useState3","refreshKey","setRefreshKey","innerOperateValueRef","valueList","useEffectCustom","current","console","log","expandedKeys","getTreeExpandedKeys","Array","from","Set","Date","now","valueIsEmpty","serviceResponseHandle","respData","respDataList","onRequestResultAdapter","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","_params","isEmpty","_respData","_respData2","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","onRequest","Error","_extend","warn","join","$Try_2_Post","$Try_2_Catch","window","resolve","then","$await_4","$await_5","onChangeSelectorList","toArray","Boolean","allState","refresh","newTreeExpandedKeys","includes","targetList","concat","useUpdateEffect","filter","_item$label","prev","mergeList","useImperativeHandle","onClearSelectorList","onExpand","onRespChange","selectedKey","selectInfo","selectAllList","selectList","lvLabel","lvValue","labelInValueList","_ref","onTreeChangeHandle","checkedData","operateInfo","checkedValueList","checkStrictly","checked","selectedLeafList","selectedLeafValueList","selectedAllList","selectedAllValueList","temp","push","currentNode","nodeValue","treeItemDataAdapterHandle","dataItem","originalDataList","treeFilter","_node$fieldNames$labe","toLowerCase","indexOf","treeData","_extends2","adapterItem","disabled","strTitle","titleDom","beforeStr","substring","afterStr","slice","_jsxs","className","_classNames","_jsx","_treeItemName","_disabled","loadData","reject","_props$loadDataServic","_props$loadDataServic2","_respData3","$Try_3_Post","$Try_3_Catch","loadDataServiceConfig","getParams","$await_6","isLeafNode","nodeData","loadDataFlag","loadHasChildren","hasChildren","titleRender","_props$menuOptions3","_extends5","stringLabel","_props$menuOptions","menuOptions","fold","_props$menuOptions2","_props$menuOptions2$m","_extends3","call","_extends4","getMenuOptions","Fragment","DropdownMenuWrapper","menuList","_MoreOutlined","tile","ButtonOperate","gap","onChangeDebounce","useDebounceCallback","onSearchValueChange","onSearchChange","e","iconHandle","icon","isValidElement","isLeafFlag","isParent","treeFieldNames","title","showTree","commonProps","showLine","showLeafIcon","blockNode","switcherIcon","_CaretDownFilled","onDrop","boo","_onTreeDrop","width","checkedProps","onCheck","defaultCheckedKeys","selectedProps","onSelect","multiple","defaultSelectedKeys","sceneProps","cName","isSearchEmpty","InputSearchWrapper","placeholder","allowClear","searchExtraElement","Spin","spinning","Tree","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","defaultProps","fbaUtils","attachPropertiesToComponent","TreeWrapperInner"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-wrapper/model.ts","@flatbiz/antd/src/tree-wrapper/hooks.ts","@flatbiz/antd/src/tree-wrapper/utils.ts","@flatbiz/antd/src/tree-wrapper/tree-wrapper.tsx","@flatbiz/antd/src/tree-wrapper/index.ts"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TPlainObject, treeToArray, TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeList: TSetDefaultDefined<TreeProps['treeData'], []>;\n treeTiledArray: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setTreeList: {\n treeList: ModelState['treeList'];\n childrenName: string;\n };\n resetTreeList: void;\n changeRequestStatus: TRequestStatus;\n treeListAppendChildren: {\n value: string | number;\n appendList: TPlainObject[];\n childrenName: string;\n valueName: string;\n };\n};\n\nconst defaultState: ModelState = {\n treeList: [],\n treeTiledArray: [],\n queryIsEmpty: false,\n};\n\nconst TreeWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setTreeList: (params) => {\n return (state) => {\n state.treeList = params.treeList || [];\n state.treeTiledArray = treeToArray(state.treeList, params.childrenName);\n state.requestStatus = 'request-success';\n };\n },\n resetTreeList: () => {\n return (state) => {\n state.treeList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n if (params === 'request-error') {\n state.treeList = [];\n }\n };\n },\n treeListAppendChildren: (params) => {\n return (state) => {\n const array = treeToArray(state.treeList, params.childrenName);\n const target = array.find((item) => item[params.valueName] === params.value);\n if (target) {\n if (isArray(params.appendList) && params.appendList.length > 0) {\n target[params.childrenName] = params.appendList;\n } else {\n target.isLeaf = true;\n }\n }\n state.treeTiledArray = treeToArray(state.treeList, params.childrenName);\n };\n },\n },\n state: defaultState,\n};\n\nconst treeWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, any>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeWrapperModel('key值').useStore();\n * ```\n */\nexport const treeWrapperModel = (key: string) => {\n if (!treeWrapperModels[key]) {\n treeWrapperModels[key] = Model(TreeWrapperModel);\n }\n return treeWrapperModels[key];\n};\n","import { TPlainObject } from '@flatbiz/utils';\nimport { treeWrapperModel } from './model';\n\nexport const getTreeDataList = (modelKey: string) => {\n const state = treeWrapperModel(modelKey).getState();\n return state.treeList as TPlainObject[];\n};\n","import { TAny, TPlainObject, treeLeafParentsArray, treeToTiledArray } from '@flatbiz/utils';\n\nexport const getExpandedKeys = (\n value: string | number,\n treeList: TPlainObject[],\n fieldNames?: { label?: string; value?: string; children?: string },\n) => {\n const tiledArray = treeToTiledArray(treeList, fieldNames);\n return treeLeafParentsArray(value, tiledArray, true, { value: 'value', parentValue: 'parentValue' });\n};\n\nimport { isArray, isObject } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { tree } from '@dimjs/utils';\nimport { isUndefinedOrNull, LabelValueItem, treeToArray } from '@flatbiz/utils';\nimport { DataNode } from 'antd/es/tree';\nimport { dequal } from 'dequal';\n\nexport const getVauleList = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n let tempList = isUndefinedOrNull(data) ? [] : data;\n tempList = isArray(tempList) ? tempList : [tempList];\n tempList = tempList.map((item) => {\n if (isObject(item)) return item[labelInValueFieldNames.value];\n return item;\n });\n return tempList as Array<string | number>;\n};\n\nexport const array2map = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n const list = getVauleList(data, labelInValueFieldNames);\n const map = {};\n list.forEach((item) => {\n map[item] = true;\n });\n return map;\n};\n\n/**\n * value的类型包括\n * string、number、\n * Array<string | number>、{ label: string, value: string | nuber }、\n * Array<{ label: string, value: string | nuber }>\n * 将数组转成对象,深度比较时不用考虑顺序问题\n * @param value1\n * @param value2\n * @returns\n */\nexport const treeWrapperValueDeepEqual = (\n value1: TAny,\n value2: TAny,\n labelInValueFieldNames: LabelValueItem<string | number>,\n) => {\n if (isUndefinedOrNull(value1) && isUndefinedOrNull(value2)) return true;\n const object1 = array2map(value1, labelInValueFieldNames);\n const object2 = array2map(value2, labelInValueFieldNames);\n const diff = dequal(object1, object2);\n return diff;\n};\n\ntype OnTreeDropMethod = (\n dataList: TPlainObject[],\n fieldNames: { value: string; children: string },\n info: TAny,\n) => {\n dataList: TPlainObject[];\n dragNodeData: {\n parentId?: string | number;\n id: string | number;\n index: number;\n };\n};\n\nexport const onTreeDrop: OnTreeDropMethod = (dataList, fieldNames, info) => {\n const dropKey = info.node.key;\n const dragKey = info.dragNode.key;\n const dropPos = info.node.pos.split('-');\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const treeKeyName = fieldNames.value;\n const treeChildrenName = fieldNames.children;\n\n const loop = (\n data: DataNode[],\n key: React.Key,\n callback: (node: DataNode, i: number, data: DataNode[]) => void,\n ) => {\n for (let i = 0; i < data.length; i++) {\n if (data[i][treeKeyName] === key) {\n return callback(data[i], i, data);\n }\n if (data[i][treeChildrenName]) {\n loop(data[i][treeChildrenName]!, key, callback);\n }\n }\n };\n const data = cloneState(dataList) as DataNode[];\n\n // Find dragObject\n let dragObj: DataNode;\n loop(data, dragKey, (item, index, arr) => {\n arr.splice(index, 1);\n dragObj = item;\n });\n\n if (!info.dropToGap) {\n // Drop on the content\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n });\n } else if (\n (info.node.props.children || []).length > 0 && // Has children\n info.node.props.expanded && // Is expanded\n dropPosition === 1 // On the bottom gap\n ) {\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n // in previous version, we use item.children.push(dragObj) to insert the\n // item to the tail of the children\n });\n } else {\n let ar: DataNode[] = [];\n let i: number;\n loop(data, dropKey, (_item, index, arr) => {\n ar = arr;\n i = index;\n });\n if (dropPosition === -1) {\n ar.splice(i!, 0, dragObj!);\n } else {\n ar.splice(i! + 1, 0, dragObj!);\n }\n }\n return {\n dataList: data,\n dragNodeData: dragNodeData(dragKey, data, fieldNames),\n };\n};\n\nexport const dragNodeData = (\n dorpNodeId: TAny,\n dataList: TAny[],\n fieldNames: { value: string; children: string },\n) => {\n const id = fieldNames.value;\n const children = fieldNames.children;\n tree.walkThroughTree<TPlainObject, TAny>(\n { [id]: undefined, [children]: dataList } as TAny,\n (node, index, _parent) => {\n node['__index'] = index;\n node['__parentId'] = _parent?.[id];\n },\n children,\n );\n const tileList = treeToArray(dataList, children);\n const target = tileList.find((item) => item[id] === dorpNodeId);\n return {\n parentId: target?.['__parentId'],\n id: target?.[id],\n index: target?.['__index'],\n };\n};\n","import { CaretDownFilled, MoreOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, extend } from '@dimjs/utils';\n\nimport { hooks } from '@wove/react';\nimport { Button, message, Spin, Tree, TreeProps } from 'antd';\nimport {\n CSSProperties,\n DependencyList,\n forwardRef,\n Fragment,\n isValidElement,\n ReactElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { isUndefinedOrNull, TAny, toArray, TPlainObject, treeFilter, treeToTiledArray } from '@flatbiz/utils';\n\nimport { ButtonOperate, ButtonOperateItem, ButtonOperateProps } from '../button-operate';\nimport { DropdownMenuItem, DropdownMenuWrapper } from '../dropdown-menu-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { InputSearchWrapper } from '../input-search-wrapper';\nimport { RequestStatus, TRequestStatusProps } from '../request-status';\nimport { treeWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeys, getVauleList, onTreeDrop, treeWrapperValueDeepEqual } from './utils';\n\ntype TreeWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\ntype TreeLoadDataServiceConfig = {\n getParams: (dataItem: TPlainObject) => TPlainObject;\n onRequest: (params: TPlainObject) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeWrapperMenuItem = {\n title: string;\n onClick: (dataItem: TPlainObject, event) => void;\n icon?: ReactElement;\n};\n\nexport type TreeWrapperProps = Omit<\n TreeProps,\n | 'expandedKeys'\n | 'treeData'\n | 'onExpand'\n | 'selectedKeys'\n | 'checkedKeys'\n | 'onCheck'\n | 'onSelect'\n | 'fieldNames'\n | 'multiple'\n | 'loadData'\n | 'icon'\n | 'defaultCheckedKeys'\n | 'defaultExpandAll'\n | 'defaultExpandParent'\n | 'defaultSelectedKeys'\n> & {\n modelKey: string;\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n loadDataServiceConfig?: TreeLoadDataServiceConfig;\n /**\n * 当设置selectorTreeList后,serviceConfig将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n selectorTreeList?: TPlainObject[];\n /**\n * 通过服务获取数据后回调,当设置`selectorList`后无效果\n * ```\n * 相同modelKey,同时发起多个渲染时,只有第一个会执行 onSelectorTreeListChange 回调\n * ```\n */\n onSelectorTreeListChange?: (dataList: TPlainObject[]) => void;\n onRequestResponseChange?: (data: TAny) => void;\n onChange?: (\n selectedKey?: TreeWrapperValue,\n operateNodeData?: TPlainObject[] | TPlainObject,\n operateAllNodeDataList?: TPlainObject[],\n ) => void;\n fieldNames?: { label?: string; value?: string; children?: string };\n /**\n * 搜索关键字,打开tree折叠过滤关键字\n */\n searchValue?: string;\n /**\n * checkable模式下,onChange是否返回父节点,默认值true\n * 1. checkStrictly = true,模式下失效\n */\n checkableResponseParentNode?: boolean;\n loadDataFlag?: boolean;\n /**\n * 菜单结构类型 tile/平铺 fold/折叠;默认:fold\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuLayoutType?: 'tile' | 'fold';\n /**\n * 菜单触发类型,默认:click\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuTriggerType?: 'click' | 'hover';\n /**\n * 获取菜单类别\n * @param dataItem\n * @deprecated 已过期 @4.3.0版本移除,请使用 menuOptions\n * @returns\n * ```\n * 1. menuLayoutType = tile 无效\n * 2. 自定义设置 titleRender 后失效\n * ```\n */\n getMenuOptions?: (dataItem: TPlainObject) => DropdownMenuItem[] | ButtonOperateItem[];\n\n /**\n * 根据 menuLayoutType 类型赋值\n */\n menuOptions?: {\n tile?: (dataItem: TPlainObject) => ButtonOperateProps;\n fold?: (dataItem: TPlainObject) => DropdownMenuItem[];\n };\n showSearch?: boolean;\n onSearchValueChange?: (searchValue?: string) => void;\n searchPlaceholder?: string;\n searchStyle?: CSSProperties;\n icon?: (data: { isParent: boolean; isLeaf: boolean }) => ReactElement;\n /**\n * 是否必选,最后一个不能取消\n */\n // required?: boolean;\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n /**\n * value格式\n *```\n * 1. string 、number\n * 2. Array<string | number>\n * 3. lableInValue = true,根据labelInValueFieldNames配置格式\n * 4. lableInValue = true,Array<labelInValueFieldNames配置>\n * ```\n */\n value?: TreeWrapperValue;\n labelInValue?: boolean;\n /**\n * ```\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * 禁用状态是否可选,默认值true\n * 当dateItem中包含 disabled 则数据为禁用状态\n */\n disabledCanUse?: boolean;\n\n /** treeItem数据适配器 */\n treeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n /** 搜索位置额外元素 */\n searchExtraElement?: ReactElement;\n /** 有唯一跟节点时,初始化是否展开,默认值:false */\n initRootExpand?: boolean;\n /** 搜素过滤方式,高亮 | 过滤;默认:filter */\n searchResultType?: 'highlight' | 'filter';\n /**\n * 拖拽节点处理,自定义onDrop事件后,失效\n * ```\n * 参数\n * 1. parentId 当前拖拽节点的父节点ID\n * 2. id 当前拖拽节点ID\n * 3. index 当前拖拽节点所在数组下标\n * ```\n */\n onDropNodeHandle?: (result: { parentId?: string | number; id: string | number; index: number }) => void;\n /**\n * 拖拽排序前判断,如果返回 true,可排序,其他不可排序\n * ```\n * 可用于需要权限控制判断\n * ```\n */\n onDropPrev?: (info) => boolean;\n /**\n * 标签渲染\n * ```\n * 1. 自定义设置 titleRender 后失效\n * 2. 与titleRender的区别\n * a. 设置 labelRender 后,menuLayout有效\n * b. 设置 titleRender 后,menuLayout失效\n * ```\n */\n labelRender?: (nodeData: TPlainObject) => ReactElement;\n};\n\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\n};\n\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * @param props\n * @returns\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper = forwardRef<TreeWrapperRefApi, TreeWrapperProps>((props, ref) => {\n const {\n style,\n serviceConfig,\n effectDependencyList,\n selectorTreeList,\n value,\n onChange,\n modelKey,\n checkableResponseParentNode = true,\n checkable,\n onSelectorTreeListChange,\n onRequestResponseChange,\n treeItemDataAdapter,\n searchValue,\n showSearch,\n searchPlaceholder,\n requestMessageConfig,\n labelInValueFieldNames,\n labelInValue,\n disabledCanUse,\n menuLayoutType,\n menuTriggerType,\n initRootExpand,\n searchResultType,\n onDropNodeHandle,\n onDropPrev,\n labelRender,\n searchStyle,\n className,\n ...otherProps\n } = props;\n const hasSelectorTreeList = props.hasOwnProperty('selectorTreeList');\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeWrapperModel(modelKey).useStore();\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const requestPreKey = `request-progress-${props.modelKey}`;\n const fieldNames = useMemo(() => {\n return { label: 'label', value: 'value', children: 'children', ...props.fieldNames };\n }, [props.fieldNames]);\n // 必须是数组格式\n const defaultValueRef = useRef<Array<string | number>>();\n const menuLayoutTypeNew = menuLayoutType === undefined ? 'fold' : menuLayoutType;\n const menuTriggerTypeNew = menuTriggerType === undefined ? 'click' : menuTriggerType;\n\n const isMultiple = checkable === true;\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n // tree 搜索值\n const [treeSearchValue, setTreeSearchValue] = useState<string>();\n\n const isFirstUseValueRef = useRef(true);\n const [refreshKey, setRefreshKey] = useState(0);\n const innerOperateValueRef = useRef<Array<string | number> | string | number>();\n\n const valueList = useMemo(() => {\n const tempList = getVauleList(value, labelInValueFieldNamesMerge);\n return tempList;\n }, [labelInValueFieldNamesMerge, value]);\n\n fbaHooks.useEffectCustom(() => {\n if ((isUndefinedOrNull(value) && isFirstUseValueRef.current) || state.treeList.length == 0) return;\n isFirstUseValueRef.current = false;\n if (!treeWrapperValueDeepEqual(value, innerOperateValueRef.current, labelInValueFieldNamesMerge)) {\n console.log(`modelKey:${modelKey} TreeWrapper key refresh`, value, innerOperateValueRef.current);\n innerOperateValueRef.current = isMultiple ? valueList : valueList[0];\n // 重新计算 expandedKeys\n const expandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(expandedKeys)));\n defaultValueRef.current = valueList;\n setRefreshKey(Date.now());\n }\n }, [value, state.treeList]);\n\n const valueIsEmpty = (data: string | number) => {\n return data === '' || isUndefinedOrNull(data);\n };\n\n const serviceResponseHandle = (respData) => {\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n return respDataList;\n };\n\n fbaHooks.useEffectCustom(() => {\n setTreeSearchValue(searchValue);\n }, [searchValue]);\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n console.warn(`TreeWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n await actions.changeRequestStatus('request-progress');\n window[requestPreKey] = true;\n const _respData = await newServiceConfig.onRequest?.(params);\n onRequestResponseChange?.(_respData);\n const respData = serviceResponseHandle(_respData) as TreeProps['treeData'];\n onChangeSelectorList(respData || []);\n setLoading(false);\n if (initRootExpand && toArray(respData).length) {\n setTreeExpandedKeys([respData?.[0][fieldNames.value]]);\n }\n window[requestPreKey] = false;\n } catch (error) {\n window[requestPreKey] = false;\n setLoading(false);\n void actions.changeRequestStatus('request-error');\n }\n } catch (error) {\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (Boolean(newEffectDependencyList.length)) {\n void startDataSourceRequest();\n return;\n }\n const allState = treeWrapperModel(modelKey).getState();\n if (allState.requestStatus === 'request-success') {\n onSelectorTreeListChange?.(allState.treeList);\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n } else {\n onSelectorTreeListChange?.(allState.treeList);\n }\n }, newEffectDependencyList);\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) {\n onChangeSelectorList(selectorTreeList || []);\n }\n }, [selectorTreeList]);\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeList.length === 0) {\n void actions.changeRequestStatus('request-success');\n return;\n }\n void actions.setTreeList({\n treeList: dataList || [],\n childrenName: fieldNames.children,\n });\n onSelectorTreeListChange?.(dataList);\n });\n\n const getTreeExpandedKeys = hooks.useCallbackRef((valueList: Array<string | number>, refresh?: boolean) => {\n let newTreeExpandedKeys = [] as Array<string | number>;\n valueList.forEach((value) => {\n if (!refresh && treeExpandedKeys?.includes(value)) return;\n const targetList = getExpandedKeys(value, state.treeList, fieldNames);\n newTreeExpandedKeys = newTreeExpandedKeys.concat(targetList.map((item) => item.value));\n });\n return newTreeExpandedKeys;\n });\n\n hooks.useUpdateEffect(() => {\n if (treeSearchValue) {\n const tiledArray = treeToTiledArray(state.treeList || [], fieldNames);\n const targetList = tiledArray.filter((item) => item.label?.includes(treeSearchValue || ''));\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(targetList.map((item) => item.value)).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n } else {\n setTreeExpandedKeys([]);\n }\n }, [treeSearchValue]);\n\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.resetTreeList();\n },\n getTreeDataList: () => {\n return state.treeList;\n },\n };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onRespChange = hooks.useCallbackRef((selectedKey, selectInfo?, selectAllList?) => {\n innerOperateValueRef.current = selectedKey;\n const selectList = isUndefinedOrNull(selectInfo) ? [] : isArray(selectInfo) ? selectInfo : [selectInfo];\n if (isUndefinedOrNull(selectedKey)) {\n onChange?.(selectedKey, selectInfo, selectAllList);\n return;\n }\n if (labelInValue) {\n const lvLabel = labelInValueFieldNamesMerge.label;\n const lvValue = labelInValueFieldNamesMerge.value;\n const labelInValueList = selectList.map((item) => {\n return {\n [lvLabel]: item[fieldNames.label],\n [lvValue]: item[fieldNames.value],\n };\n });\n if (isArray(selectedKey)) {\n onChange?.(labelInValueList, selectList, selectAllList);\n } else {\n onChange?.(labelInValueList[0], selectList[0], selectAllList);\n }\n } else {\n if (isArray(selectedKey)) {\n onChange?.(selectedKey, selectList, selectAllList);\n } else {\n onChange?.(selectedKey, selectList[0], selectAllList);\n }\n }\n });\n\n const onTreeChangeHandle = hooks.useCallbackRef((checkedData, operateInfo) => {\n let checkedValueList = props.checkStrictly ? checkedData.checked : checkedData;\n checkedValueList = isUndefinedOrNull(checkedData) ? [] : checkedData;\n checkedValueList = isArray(checkedValueList) ? checkedValueList : [checkedValueList];\n\n const selectedLeafList = [] as TPlainObject[];\n const selectedLeafValueList = [] as Array<string | number>;\n const selectedAllList = [] as TPlainObject[];\n const selectedAllValueList = [] as Array<string | number>;\n checkedValueList.forEach((item) => {\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === item);\n if (!target) return;\n const children = target?.[fieldNames.children];\n if (!isArray(children) || children.length === 0) {\n selectedLeafList.push(target);\n selectedLeafValueList.push(target[fieldNames.value]);\n }\n selectedAllList.push(target);\n selectedAllValueList.push(target[fieldNames.value]);\n });\n\n if (checkable) {\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(selectedLeafValueList).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n if (!checkableResponseParentNode && !props.checkStrictly) {\n onRespChange(selectedLeafValueList, selectedLeafList, selectedAllList);\n } else {\n onRespChange(selectedAllValueList, selectedAllList, selectedAllList);\n }\n } else {\n if (checkedValueList[0]) {\n const currentNode = selectedAllList.find((item) => item[fieldNames.value] === checkedValueList[0]);\n onRespChange(checkedValueList[0], currentNode, [currentNode]);\n } else {\n const nodeValue = operateInfo.node[fieldNames.value];\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === nodeValue);\n onRespChange(undefined, target, [target]);\n }\n }\n });\n\n const treeItemDataAdapterHandle = hooks.useCallbackRef((dataItem) => {\n return treeItemDataAdapter?.(dataItem);\n });\n\n const originalDataList = useMemo(() => {\n const list = cloneState(state.treeList || []);\n if (treeSearchValue && searchResultType !== 'highlight') {\n return treeFilter(\n cloneState(state.treeList || []),\n (node) => {\n const value = node[fieldNames.label]?.toLowerCase();\n return value.indexOf(treeSearchValue.toLowerCase()) >= 0;\n },\n { childrenName: fieldNames.children },\n );\n }\n return list;\n }, [fieldNames.children, fieldNames.label, searchResultType, state.treeList, treeSearchValue]);\n\n const treeData = useMemo(() => {\n const loop = (data: TAny[]): TAny[] =>\n data?.map((item) => {\n const adapterItem = treeItemDataAdapterHandle?.(item) || item;\n const disabled = disabledCanUse ? undefined : adapterItem.disabled;\n const strTitle = adapterItem[fieldNames.label] as string;\n let titleDom;\n if (treeSearchValue) {\n const index = strTitle.indexOf(treeSearchValue);\n const beforeStr = strTitle.substring(0, index);\n const afterStr = strTitle.slice(index + treeSearchValue.length);\n titleDom =\n index > -1 ? (\n <span className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>\n {beforeStr}\n <span className=\"site-tree-search-value\">{treeSearchValue}</span>\n {afterStr}\n </span>\n ) : null;\n }\n if (!titleDom) {\n titleDom = (\n <span className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>{strTitle}</span>\n );\n }\n const children = adapterItem[fieldNames.children];\n return {\n ...adapterItem,\n disabled,\n [fieldNames.label]: titleDom,\n _treeItemName: strTitle,\n _disabled: adapterItem.disabled,\n [fieldNames.children]: isArray(children) && children.length > 0 ? loop(children) : undefined,\n };\n });\n return loop(originalDataList);\n }, [\n originalDataList,\n treeItemDataAdapterHandle,\n disabledCanUse,\n fieldNames.label,\n fieldNames.children,\n treeSearchValue,\n ]);\n\n const loadData = hooks.useCallbackRef((dataItem: TPlainObject) => {\n return new Promise<void>(async (resolve, reject) => {\n if (dataItem[fieldNames.children]) {\n resolve();\n return;\n }\n try {\n const respData = await props.loadDataServiceConfig?.onRequest?.(\n props.loadDataServiceConfig?.getParams?.(dataItem),\n );\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n void actions\n .treeListAppendChildren({\n value: dataItem[fieldNames.value],\n appendList: respDataList,\n childrenName: fieldNames.children,\n valueName: fieldNames.value,\n })\n .then((allState) => {\n onChangeSelectorList(allState.treeList as TPlainObject[]);\n resolve();\n });\n } catch (error) {\n void message.error(error.message || '数据加载异常...');\n // 此处失败后,会重试“loadData”请求多次\n reject();\n }\n });\n });\n\n const isLeafNode = hooks.useCallbackRef((nodeData) => {\n const children = nodeData?.[fieldNames.children];\n // 当loadDataFlag=true,考虑叶子节点显示问题\n const loadDataFlag = props.loadDataFlag;\n const loadHasChildren = loadDataFlag ? !nodeData.isLeaf : false;\n const hasChildren = (children && children.length > 0) || loadHasChildren;\n return !hasChildren;\n });\n\n const titleRender = hooks.useCallbackRef((nodeData) => {\n const stringLabel = nodeData._treeItemName || nodeData[fieldNames.label];\n\n if (menuLayoutTypeNew === 'fold') {\n let menuOptions: TAny[] = [];\n if (props.menuOptions?.fold) {\n menuOptions =\n props.menuOptions?.[menuLayoutTypeNew]?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n } else {\n menuOptions =\n props.getMenuOptions?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n }\n return (\n <Fragment>\n <span className=\"tree-item-title\">{labelRender?.(nodeData) || nodeData?.[fieldNames.label]}</span>\n {menuOptions.length > 0 && (\n <DropdownMenuWrapper menuList={menuOptions}>\n <MoreOutlined />\n </DropdownMenuWrapper>\n )}\n </Fragment>\n );\n }\n const menuOptions = props.menuOptions?.tile?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n });\n return (\n <Fragment>\n <span className=\"tree-item-title\">{labelRender?.(nodeData) || nodeData?.[fieldNames.label]}</span>\n {menuOptions ? (\n <ButtonOperate\n {...menuOptions}\n gap={5}\n className={classNames('tree-item-title-operate', menuOptions.className)}\n />\n ) : null}\n </Fragment>\n );\n });\n\n const onChangeDebounce = hooks.useDebounceCallback((value: string) => {\n setTreeSearchValue(value);\n props.onSearchValueChange?.(value);\n }, 300);\n\n const onSearchChange = hooks.useCallbackRef((e: React.ChangeEvent<HTMLInputElement>) => {\n onChangeDebounce(e.target.value);\n });\n\n const iconHandle = hooks.useCallbackRef((treeData) => {\n if (!props.icon) return null;\n if (isValidElement(props.icon)) return props.icon;\n const isLeafFlag = isLeafNode(treeData.data);\n return props.icon({\n ...treeData,\n isParent: !isLeafFlag,\n isLeaf: isLeafFlag,\n });\n });\n\n const treeFieldNames = useMemo(() => {\n return { title: fieldNames.label, key: fieldNames.value, children: fieldNames.children };\n }, [fieldNames]);\n const showTree = treeData.length > 0 && state.requestStatus !== 'request-error';\n const commonProps = {\n showLine: { showLeafIcon: false },\n titleRender,\n blockNode: true,\n switcherIcon: <CaretDownFilled />,\n\n onDrop: (info) => {\n if (onDropPrev) {\n const boo = onDropPrev(info);\n if (!boo) return;\n }\n const { dataList, dragNodeData } = onTreeDrop(originalDataList as TPlainObject[], fieldNames, info);\n onDropNodeHandle?.(dragNodeData);\n onChangeSelectorList(dataList);\n },\n ...otherProps,\n fieldNames: treeFieldNames,\n expandedKeys: treeExpandedKeys,\n treeData,\n onExpand,\n loadData: props.loadDataFlag ? loadData : undefined,\n style: { width: '100%' },\n icon: iconHandle,\n };\n\n const checkedProps = {\n onCheck: onTreeChangeHandle,\n checkable,\n // 必须是数组格式\n defaultCheckedKeys: defaultValueRef.current,\n };\n\n const selectedProps = {\n onSelect: onTreeChangeHandle,\n multiple: false,\n // 必须是数组格式\n defaultSelectedKeys: defaultValueRef.current,\n };\n const sceneProps = checkable ? checkedProps : selectedProps;\n const cName = classNames('v-tree-wrapper', `v-tree-wrapper-menu-${menuTriggerTypeNew}`, className);\n const isSearchEmpty = state.treeList.length > 0 && !showTree && treeSearchValue;\n return (\n <div className={cName} style={style}>\n {!!showSearch && (\n <div className=\"v-tree-wrapper-search-area\" style={searchStyle}>\n <InputSearchWrapper\n className=\"v-tree-wrapper-search\"\n placeholder={searchPlaceholder}\n onChange={onSearchChange}\n value={searchValue}\n allowClear\n />\n {!!props.searchExtraElement && (\n <span className=\"v-tree-wrapper-search-extra\">{props.searchExtraElement}</span>\n )}\n </div>\n )}\n\n {showTree ? (\n <div className=\"v-tree-wrapper-tree-wrapper\">\n <Spin spinning={state.requestStatus === 'request-progress'} />\n <Tree key={refreshKey} {...sceneProps} {...commonProps} className=\"v-tree-wrapper-tree\"></Tree>\n </div>\n ) : (\n <RequestStatus\n status={state.requestStatus}\n loading={loading}\n messageConfig={{\n 'request-success': isSearchEmpty ? '搜索结果为空' : '暂无数据',\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n )}\n </div>\n );\n});\n\nTreeWrapper.defaultProps = {\n disabledCanUse: true,\n};\n","import { fbaUtils } from '../fba-utils';\nimport { getTreeDataList } from './hooks';\nimport { TreeWrapper as TreeWrapperInner } from './tree-wrapper';\n\nexport type * from './tree-wrapper';\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * @param props\n * @returns\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper = fbaUtils.attachPropertiesToComponent(TreeWrapperInner, {\n /**\n * 获取树形原数据\n * ```\n * 参数 modelKey 与 TreeWrapper属性 modelKey相同,才能获取数据\n * ```\n */\n getTreeDataList: getTreeDataList,\n});\n"],"names":["defaultState","treeList","treeTiledArray","queryIsEmpty","TreeWrapperModel","actions","setTreeList","params","state","treeToArray","childrenName","requestStatus","resetTreeList","changeRequestStatus","treeListAppendChildren","array","target","find","item","valueName","value","_isArray","appendList","length","isLeaf","treeWrapperModels","treeWrapperModel","key","Model","getTreeDataList","modelKey","getState","getExpandedKeys","fieldNames","tiledArray","treeToTiledArray","treeLeafParentsArray","parentValue","getVauleList","data","labelInValueFieldNames","tempList","isUndefinedOrNull","map","_isObject","array2map","list","forEach","treeWrapperValueDeepEqual","value1","value2","object1","object2","diff","dequal","onTreeDrop","dataList","info","dropKey","node","dragKey","dragNode","dropPos","pos","split","dropPosition","Number","treeKeyName","treeChildrenName","children","loop","callback","i","cloneState","dragObj","index","arr","splice","dropToGap","unshift","props","expanded","ar","_item","dragNodeData","dorpNodeId","_tree$walkThroughTree","id","_tree","walkThroughTree","undefined","_parent","tileList","parentId","TreeWrapper","forwardRef","ref","style","serviceConfig","effectDependencyList","selectorTreeList","onChange","_props$checkableRespo","checkableResponseParentNode","checkable","onSelectorTreeListChange","onRequestResponseChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand","searchResultType","onDropNodeHandle","onDropPrev","labelRender","searchStyle","className","otherProps","_objectWithoutPropertiesLoose","_excluded","hasSelectorTreeList","hasOwnProperty","newServiceConfig","newEffectDependencyList","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeWrapperModel$use","useStore","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","requestPreKey","useMemo","_extends","label","defaultValueRef","useRef","menuLayoutTypeNew","menuTriggerTypeNew","isMultiple","labelInValueFieldNamesMerge","_useState2","treeSearchValue","setTreeSearchValue","isFirstUseValueRef","_useState3","refreshKey","setRefreshKey","innerOperateValueRef","valueList","useEffectCustom","current","console","log","expandedKeys","getTreeExpandedKeys","Array","from","Set","Date","now","valueIsEmpty","serviceResponseHandle","respData","respDataList","onRequestResultAdapter","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","_params","isEmpty","_respData","_respData2","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","onRequest","Error","_extend","warn","join","$Try_2_Post","$Try_2_Catch","window","resolve","then","$await_4","$await_5","onChangeSelectorList","toArray","Boolean","allState","refresh","newTreeExpandedKeys","includes","targetList","concat","useUpdateEffect","filter","_item$label","prev","mergeList","useImperativeHandle","onClearSelectorList","onExpand","onRespChange","selectedKey","selectInfo","selectAllList","selectList","lvLabel","lvValue","labelInValueList","_ref","onTreeChangeHandle","checkedData","operateInfo","checkedValueList","checkStrictly","checked","selectedLeafList","selectedLeafValueList","selectedAllList","selectedAllValueList","temp","push","currentNode","nodeValue","treeItemDataAdapterHandle","dataItem","originalDataList","treeFilter","_node$fieldNames$labe","toLowerCase","indexOf","treeData","_extends2","adapterItem","disabled","strTitle","titleDom","beforeStr","substring","afterStr","slice","_jsxs","_classNames","_jsx","_treeItemName","_disabled","loadData","reject","_props$loadDataServic","_props$loadDataServic2","_respData3","$Try_3_Post","$Try_3_Catch","loadDataServiceConfig","getParams","$await_6","isLeafNode","nodeData","loadDataFlag","loadHasChildren","hasChildren","titleRender","_props$menuOptions3","_extends5","stringLabel","_props$menuOptions","menuOptions","fold","_props$menuOptions2","_props$menuOptions2$m","_extends3","call","_extends4","getMenuOptions","Fragment","DropdownMenuWrapper","menuList","_MoreOutlined","tile","ButtonOperate","gap","onChangeDebounce","useDebounceCallback","onSearchValueChange","onSearchChange","e","iconHandle","icon","isValidElement","isLeafFlag","isParent","treeFieldNames","title","showTree","commonProps","showLine","showLeafIcon","blockNode","switcherIcon","_CaretDownFilled","onDrop","boo","_onTreeDrop","width","checkedProps","onCheck","defaultCheckedKeys","selectedProps","onSelect","multiple","defaultSelectedKeys","sceneProps","cName","isSearchEmpty","InputSearchWrapper","placeholder","allowClear","searchExtraElement","Spin","spinning","Tree","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","defaultProps","fbaUtils","attachPropertiesToComponent","TreeWrapperInner"],"mappings":"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"}
|