@flatbiz/antd 4.5.34 → 4.5.35

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.
@@ -1 +1 @@
1
- .cascader-wrapper-popup .ant-cascader-menu-empty .ant-cascader-menu-item{pointer-events:auto!important}
1
+ .v-request-status{margin:16px 0;position:relative}.v-request-status .ant-empty{margin:8px 0}.v-request-status .ant-spin{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.cascader-wrapper-popup .ant-cascader-menu-empty .ant-cascader-menu-item{pointer-events:auto!important}
@@ -3,5 +3,5 @@ import './../fba-hooks/index.css';
3
3
  import './../request-status/index.css';
4
4
  import './index.css';
5
5
  /*! @flatjs/forge MIT @flatbiz/antd */
6
- import e from"@ant-design/icons/es/icons/RedoOutlined";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{a as r,_ as s}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as n}from"@wove/react/cjs/hooks";import{isArray as o}from"@dimjs/lang/cjs/is-array";import{get as i}from"@dimjs/utils/cjs/get";import{extend as a}from"@dimjs/utils/cjs/extend";import{cloneState as u}from"@dimjs/model";import{cloneObject as l,toArray as c,treeNodeParentsList as f}from"@flatbiz/utils";import{Cascader as d,Button as m,message as v}from"antd";import{forwardRef as p,useState as g,useImperativeHandle as h}from"react";import{fbaHooks as q}from"../fba-hooks/index.js";import{RequestStatus as C}from"../request-status/index.js";import{Model as L}from"@dimjs/model-react";import{jsx as R}from"react/jsx-runtime";import"../use-responsive-point-21b8c601.js";var S={selectorList:[],queryIsEmpty:false,requestStatus:"request-init"};var y={actions:{setSelectBoxList:function e(t){return function(e){e.selectorList=t.selectorList||[];e.requestStatus="request-success"}},changeRequestStatus:function e(t){return function(e){e.requestStatus=t}}},state:S};var j={};var w=function e(t){if(!j[t]){j[t]=L(y)}return j[t]};var b=["serviceConfig","modelKey","fieldNames","isDynamicLoad","requestMessageConfig","onSelectorListChange","responseType"];var x=p((function(p,L){var S=p.serviceConfig,y=p.modelKey,j=p.fieldNames,x=p.isDynamicLoad,k=p.requestMessageConfig,B=p.onSelectorListChange,N=p.responseType,P=r(p,b);var E=g([]),D=E[0],K=E[1];var A=q.useSafeState(false),I=A[0],M=A[1];var T=w(y).useStore(),_=T[0],z=T[1];var F="request-progress-"+p.modelKey;var H=a(true,{label:"label",value:"value",children:"children"},j);var O=g(),G=O[0],J=O[1];var Q=function e(t){if(S!=null&&S.onRequestResultAdapter){return S.onRequestResultAdapter(t)}if(j!=null&&j.list){t=i(t,j==null?void 0:j.list)}if(!o(t)){console.warn("接口返回数据不是数组类型,已被忽略",t);return[]}return t};var U=n.useCallbackRef((function(){return new Promise((function(e,t){var r,s;if(!(S!=null&&S.onRequest)){return t(new Error("onRequest 调用接口服务不能为空"))}var n=function(){try{return e()}catch(e){return t(e)}};var o=function(e){try{M(false);window[F]=false;void z.changeRequestStatus("request-error");void v.error(e.message||"获取数据异常");return n()}catch(e){return t(e)}};try{M(true);window[F]=true;void z.changeRequestStatus("request-progress");return Promise.resolve(S.onRequest==null?void 0:S.onRequest(S.params)).then((function(e){try{r=e;s=Q(r);if(x){s.map((function(e){e.isLeaf=e.isLeaf||false}))}M(false);window[F]=false;void z.setSelectBoxList({selectorList:s||[]});B==null?void 0:B(s||[]);return n()}catch(e){return o(e)}}),o)}catch(e){o(e)}}))}));q.useEffectCustom((function(){if(window[F])return;if(_.requestStatus==="request-success"){K(u(_.selectorList))}else{void U()}}),[]);q.useEffectCustom((function(){var e=l(_.selectorList);var t=c(p.value);if(t.length>0){if(N==="all"){J(t)}else{var r=f(t[0],e,true,H).reverse();if(r.length===0){J([p.value])}else{J(r)}}}else{J(undefined)}K(e)}),[_.selectorList,p.value]);h(L,(function(){return{getCascaderList:function e(){return _.selectorList}}}));var V=n.useCallbackRef((function(){void U()}));var W=function e(t){return new Promise((function(e,r){var n,o,i,a;o=t[t.length-1];o.loading=true;return Promise.resolve(S==null||S.onRequest==null?void 0:S.onRequest(s({},S.params,(n={},n[H.value]=o[H.value],n)))).then((function(t){try{i=t;a=Q(i);if(!a||a.length===0){o.isLeaf=true}else{a.map((function(e){e.isLeaf=e.isLeaf||false}));o.children=a}o.loading=false;void z.setSelectBoxList({selectorList:D||[]});B==null?void 0:B(D||[]);K([].concat(D));return e()}catch(e){return r(e)}}),r)}))};var X=n.useCallbackRef((function(e,t){if(N==="all"){p.onChange==null?void 0:p.onChange(e,t)}else{p.onChange==null?void 0:p.onChange(e==null?void 0:e[e.length-1],t)}}));var Y=n.useCallbackRef((function(){void(p.onChange==null?void 0:p.onChange(undefined))}));return R(d,s({showSearch:true,allowClear:true},P,{popupClassName:t("cascader-wrapper-popup",P.popupClassName),notFoundContent:R(C,{status:_.requestStatus,loading:I,messageConfig:k,errorButton:R(m,{type:"primary",onClick:V,children:"重新获取数据"})}),loading:I,loadData:x?W:undefined,fieldNames:H,suffixIcon:_.requestStatus==="request-error"?R(e,{spin:I,onClick:V}):undefined,options:D,value:G,multiple:false,onChange:X,onClear:Y}))}));export{x as CascaderWrapper};
6
+ import e from"@ant-design/icons/es/icons/RedoOutlined";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{a as r,_ as n}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as s}from"@wove/react/cjs/hooks";import{isArray as o}from"@dimjs/lang/cjs/is-array";import{get as a}from"@dimjs/utils/cjs/get";import{extend as i}from"@dimjs/utils/cjs/extend";import{cloneState as u}from"@dimjs/model";import{toArray as l,cloneObject as f,treeNodeParentsList as c}from"@flatbiz/utils";import{Cascader as d,Button as m,message as v}from"antd";import{forwardRef as p,useState as g,useImperativeHandle as h}from"react";import{fbaHooks as C}from"../fba-hooks/index.js";import{RequestStatus as q}from"../request-status/index.js";import{Model as L}from"@dimjs/model-react";import{isPlainObject as j}from"@dimjs/lang/cjs/is-plain-object";import{jsx as R}from"react/jsx-runtime";import"../use-responsive-point-21b8c601.js";var S={selectorList:[],queryIsEmpty:false,requestStatus:"request-init"};var y={actions:{setSelectBoxList:function e(t){return function(e){e.selectorList=t.selectorList||[];e.requestStatus="request-success"}},changeRequestStatus:function e(t){return function(e){e.requestStatus=t}}},state:S};var w={};var b=function e(t){if(!w[t]){w[t]=L(y)}return w[t]};var x=function e(t){var r=l(t);return r.map((function(e){return j(e)?e==null?void 0:e["value"]:e}))};var k=["serviceConfig","modelKey","fieldNames","isDynamicLoad","requestMessageConfig","onSelectorListChange","responseType","labelInValue"];var B=p((function(l,p){var L=l.serviceConfig,j=l.modelKey,S=l.fieldNames,y=l.isDynamicLoad,w=l.requestMessageConfig,B=l.onSelectorListChange,N=l.responseType,P=l.labelInValue,E=r(l,k);var I=g([]),D=I[0],K=I[1];var A=C.useSafeState(false),M=A[0],T=A[1];var V=b(j).useStore(),_=V[0],z=V[1];var F="request-progress-"+l.modelKey;var H=i(true,{label:"label",value:"value",children:"children"},S);var O=g(),G=O[0],J=O[1];var Q=function e(t){if(L!=null&&L.onRequestResultAdapter){return L.onRequestResultAdapter(t)}if(S!=null&&S.list){t=a(t,S==null?void 0:S.list)}if(!o(t)){console.warn("接口返回数据不是数组类型,已被忽略",t);return[]}return t};var U=s.useCallbackRef((function(){return new Promise((function(e,t){var r,n;if(!(L!=null&&L.onRequest)){return t(new Error("onRequest 调用接口服务不能为空"))}var s=function(){try{return e()}catch(e){return t(e)}};var o=function(e){try{T(false);window[F]=false;void z.changeRequestStatus("request-error");void v.error(e.message||"获取数据异常");return s()}catch(e){return t(e)}};try{T(true);window[F]=true;void z.changeRequestStatus("request-progress");return Promise.resolve(L.onRequest==null?void 0:L.onRequest(L.params)).then((function(e){try{r=e;n=Q(r);if(y){n.map((function(e){e.isLeaf=e.isLeaf||false}))}T(false);window[F]=false;void z.setSelectBoxList({selectorList:n||[]});B==null?void 0:B(n||[]);return s()}catch(e){return o(e)}}),o)}catch(e){o(e)}}))}));C.useEffectCustom((function(){if(window[F])return;if(_.requestStatus==="request-success"){K(u(_.selectorList))}else{void U()}}),[]);C.useEffectCustom((function(){var e=f(_.selectorList);var t=x(l.value);if(t.length>0){if(N==="all"){J(t)}else{var r=c(t[0],e,true,H).reverse();if(r.length===0){J([l.value])}else{J(r)}}}else{J(undefined)}K(e)}),[_.selectorList,l.value]);h(p,(function(){return{getCascaderList:function e(){return _.selectorList}}}));var W=s.useCallbackRef((function(){void U()}));var X=function e(t){return new Promise((function(e,r){var s,o,a,i;o=t[t.length-1];o.loading=true;return Promise.resolve(L==null||L.onRequest==null?void 0:L.onRequest(n({},L.params,(s={},s[H.value]=o[H.value],s)))).then((function(t){try{a=t;i=Q(a);if(!i||i.length===0){o.isLeaf=true}else{i.map((function(e){e.isLeaf=e.isLeaf||false}));o.children=i}o.loading=false;void z.setSelectBoxList({selectorList:D||[]});B==null?void 0:B(D||[]);K([].concat(D));return e()}catch(e){return r(e)}}),r)}))};var Y=s.useCallbackRef((function(e,t){if(P!==true){if(N==="all"){l.onChange==null?void 0:l.onChange(e,t)}else{l.onChange==null?void 0:l.onChange(e==null?void 0:e[e.length-1],t)}}else{var r=t==null?void 0:t.map((function(e){return{label:e[H.label],value:e[H.value]}}));if(N==="all"){l.onChange==null?void 0:l.onChange(r,t)}else{l.onChange==null?void 0:l.onChange(r==null?void 0:r[r.length-1],t)}}}));var Z=s.useCallbackRef((function(){void(l.onChange==null?void 0:l.onChange(undefined))}));return R(d,n({showSearch:true,allowClear:true},E,{popupClassName:t("cascader-wrapper-popup",E.popupClassName),notFoundContent:R(q,{status:_.requestStatus,loading:M,messageConfig:w,errorButton:R(m,{type:"primary",onClick:W,children:"重新获取数据"})}),loading:M,loadData:y?X:undefined,fieldNames:H,suffixIcon:_.requestStatus==="request-error"?R(e,{spin:M,onClick:W}):undefined,options:D,value:G,multiple:false,onChange:Y,onClear:Z}))}));export{B as CascaderWrapper};
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/cascader-wrapper/model.ts","@flatbiz/antd/src/cascader-wrapper/cascader-wrapper.tsx"],"sourcesContent":["import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n selectorList: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setSelectBoxList: { selectorList: TPlainObject[] };\n changeRequestStatus: ModelState['requestStatus'];\n};\n\nconst defaultState: ModelState = {\n selectorList: [],\n queryIsEmpty: false,\n requestStatus: 'request-init',\n};\n\nconst _SelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.selectorList = params.selectorList || [];\n state.requestStatus = 'request-success';\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst cascaderWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const cascaderWrapperModel = (key: string) => {\n if (!cascaderWrapperModels[key]) {\n cascaderWrapperModels[key] = Model(_SelectorWrapperModel);\n }\n return cascaderWrapperModels[key];\n};\n","import { RedoOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, extend, get } from '@dimjs/utils';\nimport { cloneObject, TAny, toArray, TPlainObject, treeNodeParentsList } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Cascader, CascaderProps, message } from 'antd';\nimport { forwardRef, ReactElement, useImperativeHandle, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { RequestStatus, TRequestStatusProps } from '../request-status';\nimport { cascaderWrapperModel } from './model';\nimport './style.less';\n\ntype CascaderWrapperServiceConfig = {\n params?: TPlainObject;\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type CascaderWrapperProps = Omit<\n CascaderProps<TAny>,\n 'loading' | 'notFoundContent' | 'options' | 'value' | 'multiple' | 'onChange' | 'fieldNames'\n> & {\n // 模型唯一值\n modelKey: string;\n /**\n * 参数Key映射\n * ```\n * 1. 默认值:value=value、label=label、children=children\n * 2. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 3. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效\n * 4. 如果没有配置list,可说明接口返回为数组\n * ```\n */\n fieldNames?: { list?: string; label?: string; value?: string; children?: string };\n /**\n * 请求服务需求的数据,当设置`selectorList`后无效果\n */\n serviceConfig?: CascaderWrapperServiceConfig;\n // label渲染适配器\n onLabelRenderAdapter?: (dataItem: TPlainObject) => string | ReactElement;\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /**\n * 是否动态加载选项\n */\n isDynamicLoad?: boolean;\n value?: string | number | Array<string | number>;\n onChange?: (value?: string | number | Array<string | number>, selectedList?: TPlainObject[]) => void;\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n\n /**\n * 选择数据响应类型(当用户选中后响应数据),默认值:last\n * ```\n * 1. last 响应选中的最后一级数据\n * 2. all 响应选中的多级数据\n * ```\n */\n responseType?: 'last' | 'all';\n};\n\nexport type CascaderWrapperRefApi = {\n getCascaderList: () => TPlainObject[];\n};\n/**\n * 级联选择器包装组件,接收value和相应data都是叶子节点数据\n * @param props\n * @returns\n * ```\n * 1. 数据源中 value 不能重复\n * 2. 不支持多选\n * 3. modelKey的配置是为了缓存数据,只缓存初始化数据,如果isDynamicLoad=true,动态获取的数据不再缓存\n * 4. onChange操作第一个参数返回叶子节点value,第二个参数返回选中的多级数据\n * 5. isDynamicLoad=true 会在请求中添加当前选中option的fieldNames.value为key的数据\n * ```\n */\nexport const CascaderWrapper = forwardRef<CascaderWrapperRefApi, CascaderWrapperProps>((props, ref) => {\n const {\n serviceConfig,\n modelKey,\n fieldNames,\n isDynamicLoad,\n requestMessageConfig,\n onSelectorListChange,\n responseType,\n ...otherProps\n } = props;\n const [options, setOptions] = useState<TAny[]>([]);\n\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const [state, actions] = cascaderWrapperModel(modelKey).useStore();\n const requestPreKey = `request-progress-${props.modelKey}`;\n const fieldNamesMerge = extend(true, { label: 'label', value: 'value', children: 'children' }, fieldNames);\n const [valueList, setValueList] = useState<string[]>();\n\n const serviceRespDataAdapter = (respData) => {\n if (serviceConfig?.onRequestResultAdapter) {\n return serviceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n }\n if (fieldNames?.list) {\n respData = get(respData, fieldNames?.list);\n }\n if (!isArray(respData)) {\n console.warn('接口返回数据不是数组类型,已被忽略', respData);\n return [];\n }\n return respData;\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n if (!serviceConfig?.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-progress');\n const respData = await serviceConfig.onRequest?.(serviceConfig.params);\n const respAdapterData = serviceRespDataAdapter(respData);\n if (isDynamicLoad) {\n respAdapterData.map((item) => {\n item.isLeaf = item.isLeaf || false;\n });\n }\n setLoading(false);\n window[requestPreKey] = false;\n void actions.setSelectBoxList({\n selectorList: respAdapterData || [],\n });\n onSelectorListChange?.(respAdapterData || []);\n } catch (error) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n void message.error(error.message || '获取数据异常');\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n if (window[requestPreKey]) return;\n if (state.requestStatus === 'request-success') {\n setOptions(cloneState(state.selectorList));\n } else {\n void startDataSourceRequest();\n }\n }, []);\n\n fbaHooks.useEffectCustom(() => {\n const cloneList = cloneObject(state.selectorList);\n const values = toArray<number | string>(props.value);\n if (values.length > 0) {\n if (responseType === 'all') {\n setValueList(values as string[]);\n } else {\n const filterList = treeNodeParentsList(values[0], cloneList, true, fieldNamesMerge).reverse();\n if (filterList.length === 0) {\n setValueList([props.value as string]);\n } else {\n setValueList(filterList as string[]);\n }\n }\n } else {\n setValueList(undefined);\n }\n setOptions(cloneList);\n }, [state.selectorList, props.value]);\n\n useImperativeHandle(ref, () => {\n return {\n getCascaderList: () => {\n return state.selectorList;\n },\n };\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n const loadData = async (selectedOptions: TAny[]) => {\n const targetOption = selectedOptions[selectedOptions.length - 1];\n targetOption.loading = true;\n const respData = await serviceConfig?.onRequest?.({\n ...serviceConfig.params,\n [fieldNamesMerge.value]: targetOption[fieldNamesMerge.value],\n });\n const respAdapterData = serviceRespDataAdapter(respData);\n if (!respAdapterData || respAdapterData.length === 0) {\n targetOption.isLeaf = true;\n } else {\n respAdapterData.map((item) => {\n item.isLeaf = item.isLeaf || false;\n });\n targetOption.children = respAdapterData;\n }\n targetOption.loading = false;\n void actions.setSelectBoxList({\n selectorList: options || [],\n });\n onSelectorListChange?.(options || []);\n setOptions([...options]);\n };\n\n const onChange = hooks.useCallbackRef((values: Array<string | number>, selectList) => {\n if (responseType === 'all') {\n props.onChange?.(values, selectList);\n } else {\n props.onChange?.(values?.[values.length - 1], selectList);\n }\n });\n\n const onClear = hooks.useCallbackRef(() => {\n void props.onChange?.(undefined);\n });\n\n return (\n <Cascader\n showSearch={true}\n allowClear={true}\n {...(otherProps as TAny)}\n popupClassName={classNames('cascader-wrapper-popup', otherProps.popupClassName)}\n notFoundContent={\n <RequestStatus\n status={state.requestStatus}\n loading={loading}\n messageConfig={requestMessageConfig}\n errorButton={\n <Button type=\"primary\" onClick={onAgainRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n loading={loading}\n loadData={isDynamicLoad ? loadData : undefined}\n fieldNames={fieldNamesMerge}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n options={options}\n value={valueList}\n multiple={false}\n onChange={onChange}\n onClear={onClear}\n />\n );\n});\n"],"names":["defaultState","selectorList","queryIsEmpty","requestStatus","_SelectorWrapperModel","actions","setSelectBoxList","params","state","changeRequestStatus","cascaderWrapperModels","cascaderWrapperModel","key","Model","CascaderWrapper","forwardRef","props","ref","serviceConfig","modelKey","fieldNames","isDynamicLoad","requestMessageConfig","onSelectorListChange","responseType","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","options","setOptions","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","_cascaderWrapperModel","useStore","requestPreKey","fieldNamesMerge","_extend","label","value","children","_useState2","valueList","setValueList","serviceRespDataAdapter","respData","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","_respData","respAdapterData","onRequest","Error","$Try_1_Post","$boundEx","$Try_1_Catch","error","window","message","resolve","then","$await_2","map","item","isLeaf","useEffectCustom","cloneState","cloneList","cloneObject","values","toArray","length","filterList","treeNodeParentsList","reverse","undefined","useImperativeHandle","getCascaderList","onAgainRequest","loadData","selectedOptions","_extends2","targetOption","_extends","$await_3","concat","onChange","selectList","onClear","_jsx","Cascader","showSearch","allowClear","popupClassName","_classNames","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","suffixIcon","_RedoOutlined","spin","multiple"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/cascader-wrapper/model.ts","@flatbiz/antd/src/cascader-wrapper/utils.ts","@flatbiz/antd/src/cascader-wrapper/cascader-wrapper.tsx"],"sourcesContent":["import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n selectorList: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setSelectBoxList: { selectorList: TPlainObject[] };\n changeRequestStatus: ModelState['requestStatus'];\n};\n\nconst defaultState: ModelState = {\n selectorList: [],\n queryIsEmpty: false,\n requestStatus: 'request-init',\n};\n\nconst _SelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.selectorList = params.selectorList || [];\n state.requestStatus = 'request-success';\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst cascaderWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const cascaderWrapperModel = (key: string) => {\n if (!cascaderWrapperModels[key]) {\n cascaderWrapperModels[key] = Model(_SelectorWrapperModel);\n }\n return cascaderWrapperModels[key];\n};\n","import { isPlainObject } from '@dimjs/lang';\nimport { toArray } from '@flatbiz/utils';\n\nexport const getValues = (value: any) => {\n const values = toArray(value);\n return values.map((item) => {\n return isPlainObject(item) ? item?.['value'] : item;\n });\n};\n","import { RedoOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, extend, get } from '@dimjs/utils';\nimport type { LabelValueItem, TPlainObject } from '@flatbiz/utils';\nimport { cloneObject, treeNodeParentsList, type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { CascaderProps } from 'antd';\nimport { Button, Cascader, message } from 'antd';\nimport type { ReactElement } from 'react';\nimport { forwardRef, useImperativeHandle, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks/index';\nimport type { TRequestStatusProps } from '../request-status/request-status';\nimport { RequestStatus } from '../request-status/request-status';\nimport { cascaderWrapperModel } from './model';\nimport './style.less';\nimport { getValues } from './utils';\n\ntype CascaderWrapperServiceConfig = {\n params?: TPlainObject;\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type CascaderWrapperProps = Omit<\n CascaderProps<TAny>,\n 'loading' | 'notFoundContent' | 'options' | 'value' | 'multiple' | 'onChange' | 'fieldNames'\n> & {\n // 模型唯一值\n modelKey: string;\n /**\n * 参数Key映射\n * ```\n * 1. 默认值:value=value、label=label、children=children\n * 2. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 3. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效\n * 4. 如果没有配置list,可说明接口返回为数组\n * ```\n */\n fieldNames?: {\n list?: string;\n label?: string;\n value?: string;\n children?: string;\n };\n /**\n * 请求服务需求的数据,当设置`selectorList`后无效果\n */\n serviceConfig?: CascaderWrapperServiceConfig;\n // label渲染适配器\n onLabelRenderAdapter?: (dataItem: TPlainObject) => string | ReactElement;\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /**\n * 是否动态加载选项\n */\n isDynamicLoad?: boolean;\n value?: string | number | Array<string | number> | LabelValueItem | LabelValueItem[];\n onChange?: (value?: string | number | Array<string | number>, selectedList?: TPlainObject[]) => void;\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n /**\n * 选择数据响应类型(当用户选中后响应数据),默认值:last\n * ```\n * 1. last 响应选中的最后一级数据\n * 2. all 响应选中的多级数据\n * ```\n */\n responseType?: 'last' | 'all';\n /** 响应数据是否包含label、value */\n labelInValue?: boolean;\n};\n\nexport type CascaderWrapperRefApi = {\n getCascaderList: () => TPlainObject[];\n};\n/**\n * 级联选择器包装组件\n * ```\n * 1. 数据源中 value 不能重复\n * 2. 不支持多选\n * 3. modelKey的配置是为了缓存数据,只缓存初始化数据,如果isDynamicLoad=true,动态获取的数据不再缓存\n * 4. onChange操作第一个参数返回叶子节点value(可配置返回多级),第二个参数返回选中的多级数据\n * 5. isDynamicLoad=true 会在请求中添加当前选中option的fieldNames.value为key的数据\n * ```\n */\nexport const CascaderWrapper = forwardRef<CascaderWrapperRefApi, CascaderWrapperProps>((props, ref) => {\n const {\n serviceConfig,\n modelKey,\n fieldNames,\n isDynamicLoad,\n requestMessageConfig,\n onSelectorListChange,\n responseType,\n labelInValue,\n ...otherProps\n } = props;\n const [options, setOptions] = useState<TAny[]>([]);\n\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const [state, actions] = cascaderWrapperModel(modelKey).useStore();\n const requestPreKey = `request-progress-${props.modelKey}`;\n const fieldNamesMerge = extend(true, { label: 'label', value: 'value', children: 'children' }, fieldNames);\n const [valueList, setValueList] = useState<string[]>();\n\n const serviceRespDataAdapter = (respData) => {\n if (serviceConfig?.onRequestResultAdapter) {\n return serviceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n }\n if (fieldNames?.list) {\n respData = get(respData, fieldNames?.list);\n }\n if (!isArray(respData)) {\n console.warn('接口返回数据不是数组类型,已被忽略', respData);\n return [];\n }\n return respData;\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n if (!serviceConfig?.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-progress');\n const respData = await serviceConfig.onRequest?.(serviceConfig.params);\n const respAdapterData = serviceRespDataAdapter(respData);\n if (isDynamicLoad) {\n respAdapterData.map((item) => {\n item.isLeaf = item.isLeaf || false;\n });\n }\n setLoading(false);\n window[requestPreKey] = false;\n void actions.setSelectBoxList({\n selectorList: respAdapterData || [],\n });\n onSelectorListChange?.(respAdapterData || []);\n } catch (error: TAny) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n void message.error(error.message || '获取数据异常');\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n if (window[requestPreKey]) return;\n if (state.requestStatus === 'request-success') {\n setOptions(cloneState(state.selectorList));\n } else {\n void startDataSourceRequest();\n }\n }, []);\n\n fbaHooks.useEffectCustom(() => {\n const cloneList = cloneObject(state.selectorList);\n const values = getValues(props.value) as Array<number | string>;\n if (values.length > 0) {\n if (responseType === 'all') {\n setValueList(values as string[]);\n } else {\n const filterList = treeNodeParentsList(values[0], cloneList, true, fieldNamesMerge).reverse();\n if (filterList.length === 0) {\n setValueList([props.value as string]);\n } else {\n setValueList(filterList as string[]);\n }\n }\n } else {\n setValueList(undefined);\n }\n setOptions(cloneList);\n }, [state.selectorList, props.value]);\n\n useImperativeHandle(ref, () => {\n return {\n getCascaderList: () => {\n return state.selectorList;\n },\n };\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n const loadData = async (selectedOptions: TAny[]) => {\n const targetOption = selectedOptions[selectedOptions.length - 1];\n targetOption.loading = true;\n const respData = await serviceConfig?.onRequest?.({\n ...serviceConfig.params,\n [fieldNamesMerge.value]: targetOption[fieldNamesMerge.value],\n });\n const respAdapterData = serviceRespDataAdapter(respData);\n if (!respAdapterData || respAdapterData.length === 0) {\n targetOption.isLeaf = true;\n } else {\n respAdapterData.map((item) => {\n item.isLeaf = item.isLeaf || false;\n });\n targetOption.children = respAdapterData;\n }\n targetOption.loading = false;\n void actions.setSelectBoxList({\n selectorList: options || [],\n });\n onSelectorListChange?.(options || []);\n setOptions([...options]);\n };\n\n const onChange = hooks.useCallbackRef((values: Array<string | number>, selectList) => {\n if (labelInValue !== true) {\n if (responseType === 'all') {\n props.onChange?.(values, selectList);\n } else {\n props.onChange?.(values?.[values.length - 1], selectList);\n }\n } else {\n const labelInValueList = selectList?.map((item) => {\n return {\n label: item[fieldNamesMerge.label],\n value: item[fieldNamesMerge.value],\n };\n });\n if (responseType === 'all') {\n props.onChange?.(labelInValueList, selectList);\n } else {\n props.onChange?.(labelInValueList?.[labelInValueList.length - 1], selectList);\n }\n }\n });\n\n const onClear = hooks.useCallbackRef(() => {\n void props.onChange?.(undefined);\n });\n\n return (\n <Cascader\n showSearch={true}\n allowClear={true}\n {...(otherProps as TAny)}\n popupClassName={classNames('cascader-wrapper-popup', otherProps.popupClassName)}\n notFoundContent={\n <RequestStatus\n status={state.requestStatus}\n loading={loading}\n messageConfig={requestMessageConfig}\n errorButton={\n <Button type=\"primary\" onClick={onAgainRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n loading={loading}\n loadData={isDynamicLoad ? loadData : undefined}\n fieldNames={fieldNamesMerge}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n options={options}\n value={valueList}\n multiple={false}\n onChange={onChange}\n onClear={onClear}\n />\n );\n});\n"],"names":["defaultState","selectorList","queryIsEmpty","requestStatus","_SelectorWrapperModel","actions","setSelectBoxList","params","state","changeRequestStatus","cascaderWrapperModels","cascaderWrapperModel","key","Model","getValues","value","values","toArray","map","item","_isPlainObject","CascaderWrapper","forwardRef","props","ref","serviceConfig","modelKey","fieldNames","isDynamicLoad","requestMessageConfig","onSelectorListChange","responseType","labelInValue","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","options","setOptions","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","_cascaderWrapperModel","useStore","requestPreKey","fieldNamesMerge","_extend","label","children","_useState2","valueList","setValueList","serviceRespDataAdapter","respData","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","_respData","respAdapterData","onRequest","Error","$Try_1_Post","$boundEx","$Try_1_Catch","error","window","message","resolve","then","$await_2","isLeaf","useEffectCustom","cloneState","cloneList","cloneObject","length","filterList","treeNodeParentsList","reverse","undefined","useImperativeHandle","getCascaderList","onAgainRequest","loadData","selectedOptions","_extends2","targetOption","_extends","$await_3","concat","onChange","selectList","labelInValueList","onClear","_jsx","Cascader","showSearch","allowClear","popupClassName","_classNames","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","suffixIcon","_RedoOutlined","spin","multiple"],"mappings":"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"}
@@ -19,5 +19,5 @@ import './../svg-http-view/index.css';
19
19
  import './../table-title-tooltip/index.css';
20
20
  import './index.css';
21
21
  /*! @flatjs/forge MIT @flatbiz/antd */
22
- import{fbaUtils as e}from"../fba-utils/index.js";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{isObject as t}from"@dimjs/lang/cjs/is-object";import{_ as r,a as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{sessionStorageCache as a,localStorageCache as o,noop as l,getUuid as s,isUndefinedOrNull as u,isMacEnv as c}from"@flatbiz/utils";import{classNames as d}from"@dimjs/utils/cjs/class-names";import{isUndefined as f}from"@dimjs/lang/cjs/is-undefined";import{get as m}from"@dimjs/utils/cjs/get";import{hooks as p}from"@wove/react/cjs/hooks";import{isString as v}from"@dimjs/lang/cjs/is-string";import{Checkbox as g,Popover as h,Form as y,message as C,Drawer as F,Table as b}from"antd";import{createContext as S,useState as x,Fragment as R,forwardRef as j,useMemo as w,useRef as z,useImperativeHandle as K,cloneElement as _,useContext as N,Children as T,useEffect as L}from"react";import{fbaHooks as P}from"../fba-hooks/index.js";import{PaginationWrapper as q}from"../pagination-wrapper/index.js";import{jsx as k,jsxs as I}from"react/jsx-runtime";import V from"@ant-design/icons/es/icons/DownOutlined";import D from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as E}from"react-is";import{BlockLayout as O}from"../block-layout/index.js";import{ButtonWrapper as A}from"../button-wrapper/index.js";import{EasyForm as B}from"../easy-form/index.js";import{FormGrid as M}from"../form-grid/index.js";import{TableScrollbar as W}from"../table-scrollbar/index.js";import{FlexLayout as Q}from"../flex-layout/index.js";import{IconWrapper as U}from"../icon-wrapper/index.js";import{SvgHttpView as G}from"../svg-http-view/index.js";import{TableTitleTooltip as H}from"../table-title-tooltip/index.js";import{TipsWrapper as Y}from"../tips-wrapper/index.js";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.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"@dimjs/utils/cjs/extend";import"../box-grid/index.js";import"@dimjs/lang/cjs/is-number";import"ahooks";import"../form-wrapper/index.js";import"../pre-defined-class-name/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var $={set:function e(n,t){var i=$.get(n);var o=r({},i,t);a.set("easy_tab_filter_"+n,o);return o},get:function e(n){var r=a.get("easy_tab_filter_"+n);return t(r)?r:{}},remove:function e(n){a.remove("easy_tab_filter_"+n)}};var J={set:function e(n,t){a.set("easy_tab_firstQuery_"+n,{value:t})},get:function e(n){var t;var r=(t=a.get("easy_tab_firstQuery_"+n))==null?void 0:t.value;return r===false?false:true},remove:function e(n){a.remove("easy_tab_firstQuery_"+n)}};var X={set:function e(n,t){o.set("easy_tab_columnFold_"+n,{value:t})},get:function e(t){var r;var i=(r=o.get("easy_tab_columnFold_"+t))==null?void 0:r.value;return n(i)?i:[]},remove:function e(n){o.remove("easy_tab_columnFold_"+n)}};var Z=S({onRequest:l,tableList:[],getEasyTableRef:function e(){}});var ee=function e(n){var t=x(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a=function e(t){i(t);n.onChange(t);if(n.cacheKey){X.set(n.cacheKey,t)}};var o=k(R,{children:k(g.Group,{defaultValue:r,onChange:a,value:r,style:{display:"flex",flexDirection:"column"},children:n.dataList.map((function(e){var n=e["_isFoldTitle"]||e.title;return k(g,{value:e.dataIndex,style:{padding:"0 0 5px 0"},children:n},e.dataIndex)}))})});var l=function e(t){if(t.target.checked){a(n.dataList.map((function(e){return e.dataIndex})))}else{a([])}};return k(h,{content:o,title:k(g,{checked:r.length===n.dataList.length,onChange:l,children:"全选(字段列表)"}),placement:"bottomRight",overlayClassName:"fold-operate-popiver",children:n.children})};var ne=j((function(t,i){var a;var o=x(),l=o[0],u=o[1];var c=x(0),g=c[0],h=c[1];var F=x(false),b=F[0],S=F[1];var R=t.columnFoldConfig;var j=t.asyncColumnRequest;var N=x(false),T=N[0],L=N[1];var V=w((function(){if(t.cacheKey)return t.cacheKey;if(t.cacheSwitch===true){return location.pathname}if(typeof t.cacheSwitch==="string"){return t.cacheSwitch}return s()}),[t.cacheSwitch,t.cacheKey]);var D=$.get(V);var E=x((function(){if(V){var e=X.get(V);var t=n(e)?e.filter((function(e){return v(e)})):[];return t.length>0?t:(R==null?void 0:R.initSelectedKeys)||[]}else{return(R==null?void 0:R.initSelectedKeys)||[]}})),O=E[0],A=E[1];var B=t.pageSize||((a=t.initialPaginationParams)==null?void 0:a.pageSize)||10;var M=t.initRequest===undefined?true:t.initRequest;var W=z(false);var Q=z();var U=z([]);var G=x(),H=G[0],Y=G[1];var ne=z([]);var te=r({list:"list",total:"total",pageNo:"pageNo",pageSize:"pageSize"},t.fieldNames);var re=y.useForm(t.form),ie=re[0];var ae=p.useCallbackRef((function(r){return new Promise((function(i,a){var o,l,s,c,d,f,p,v,g,y,F;var b=function(){try{return i()}catch(e){return a(e)}};var x=function(e){try{S(false);if(t.onRequestErrorHandle){t.onRequestErrorHandle(e)}else{void C.error(e.message)}return b()}catch(e){return a(e)}};try{if(t.breforeRequest){var R=function(){try{return w.call(this)}catch(e){return x(e)}}.bind(this);var j=function(e){try{return i()}catch(e){return x(e)}};try{return Promise.resolve(t.breforeRequest(ie)).then((function(e){try{return R()}catch(e){return j(e)}}),j)}catch(z){j(z)}}function w(){J.set(V,false);S(true);o=$.set(V,r);l=t.serviceConfig,s=l.requestParamsAdapter,c=l.onRequest,d=l.requestResultAdapter,f=l.dynamicColumsAdapter;p=s?s(o):o;return Promise.resolve(c(e.removeFormValuesInvalidField(p))).then((function(e){try{v=e||{};Q.current=v;t.onDataSourceChange==null?void 0:t.onDataSourceChange(v);g=v;if(d){g=d(v)}if(f){y=f(v,U.current);Y(y)}F=m(g,te.list);u(n(F)?F:[]);h(m(g,te.total));S(false);return b()}catch(e){return x(e)}}),x)}return w.call(this)}catch(K){x(K)}}))}));P.useEffectCustom((function(){var e=xe();var n=J.get(V);ie.setFieldsValue(r({},t.initialValues,D));if(M||!n){if(e){var i;void ae(r((i={},i[te.pageNo]=1,i[te.pageSize]=B,i),t.initialValues,D))}else{void ae(t.initialValues)}}else{$.set(V,t.initialValues||{})}}),[]);var oe=p.useCallbackRef((function(e){$.remove(V);ie.resetFields();if(e){$.set(V,e);ie.setFieldsValue(e)}}));var le=p.useCallbackRef((function(e){$.set(V,e);ie.setFieldsValue(e)}));var se=function e(n,t){if(xe()){var r;return r={},r[te.pageNo]=n,r[te.pageSize]=t||B,r}else{var i;return i={},i[te.pageNo]=undefined,i[te.pageSize]=undefined,i}};var ue=p.useCallbackRef((function(e){var n=r({},se(1,D[te.pageSize]),t.initialValues,e);$.remove(V);ie.resetFields();if(e){ie.setFieldsValue(e)}void ae(n)}));var ce=p.useCallbackRef((function(){return r({},D,ie.getFieldsValue())}));var de=p.useCallbackRef((function(){L(true)}));var fe=p.useCallbackRef((function(){L(false)}));var me=function e(){return{onRequest:ae,clearQueryCondition:oe,updateQueryCondition:le,getRequestParams:ce,onResetRequest:ue,form:ie,dataSource:Q.current,getDataSource:function e(){return Q.current},onFilterDataSource:function e(n){u(n)},onClearDataSource:function e(){h(0);u([])},onUpdateDataSource:function e(n){u(n);Q.current=n;t.onDataSourceChange==null?void 0:t.onDataSourceChange(n)},columnFoldTriggerRender:function e(n,r){var i;if(((i=t.columnFoldConfig)==null?void 0:i.triggerType)==="drawer"){return _(n,{onClick:de})}var a=r.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));return k(ee,{dataList:a,onChange:be,cacheKey:V,initSelectedRowKeys:O,children:n})},onChangeTableColumns:function e(n){Y(n)},getTableColumns:function e(){return ne.current},loading:b,setEnabledInitRequest:function e(){J.set(V,false)}}};K(i,(function(){return me()}));var pe=function e(n){W.current=n};var ve=function e(n){U.current=n};var ge=function e(n){ne.current=n};var he=function e(){var n=ie.getFieldsValue();if(t.onFormFinish){t.onFormFinish(r({},n,se(1,D[te.pageSize])))}else{void ae(r({},n,se(1,D[te.pageSize])))}};var ye=f(t.isFull)?true:t.isFull;var Ce=d("fba-easy-table",{"fba-easy-table-full":ye,"fba-easy-table-filter-fixed":t.filterFixed,"fba-easy-table-pagination-fixed":t.paginationFixed},t.className);var Fe=P.useMemoCustom((function(){return r({showSizeChanger:true,current:D[te.pageNo]||1,pageSize:D[te.pageSize]||B,total:g,showTotal:function e(n){return"共 "+n+" 条记录"}},t.pagination)}),[te.pageNo,D,te.pageSize,V,B,t.pagination,g]);var be=function e(n){A(n);R==null||R.onChange==null?void 0:R.onChange(n)};var Se=p.useCallbackRef((function(e,n){var r,i;var a=(r={},r[te.pageSize]=n,r[te.pageNo]=e,r);$.set(V,a);void ae(a);(i=t.pagination)==null||i.onChange==null?void 0:i.onChange(e,n)}));var xe=function e(){return t.paginationFixed||W.current};p.useUpdateEffect((function(){if(t.paginationFixed){var e;void ae((e={},e[te.pageSize]=D[te.pageSize]||B,e[te.pageNo]=1,e))}else{var n;void ae((n={},n[te.pageSize]=undefined,n[te.pageNo]=undefined,n))}}),[t.paginationFixed]);var Re=d("fba-easy-table-wrapper",{"fba-easy-table-wrapper-inline":t.isInline},t.className);var je=r({overflowY:t.filterFixed||t.paginationFixed?"hidden":"auto"},t.style);var we=typeof t.children==="function"?t.children(Q.current):t.children;return k(Z.Provider,{value:{onSetBaseColumns:ve,onSetColumns:ge,getEasyTableRef:me,cacheKey:V,onRequest:ae,tableDataSource:l,tableTotal:g,loading:b,fieldNames:te,pageSize:B,onSetPaginationStatus:pe,getPaginationStatus:xe,onFormFinish:he,form:ie,paginationFixed:t.paginationFixed||false,foldKeys:t.foldKeys||[],columns:H,initialValues:t.initialValues,dynamicColumnsConfig:{showFoldKeyList:O,onChangeShowFoldKeyList:be,columnFoldConfig:R,onOpenColumnFoldModal:de,onCloseColumnFoldModal:fe,columnFoldOpen:T,asyncColumnRequest:j}},children:t.paginationFixed?I("div",{className:Re,style:je,children:[k("div",{className:Ce,children:we}),g>0&&k("div",{className:"fba-easy-table-pagination",children:k(q,r({size:"small"},Fe,{onChange:Se}))})]}):k("div",{className:Re,style:t.style,children:k("div",{className:Ce,children:we})})})}));var te=function e(n){var t=P.useResponsivePoint()||"md";var i=N(Z);var a=n.queryButtonProps,o=n.resetButtonProps,l=n.filterOperate,s=n.formClassName,u=s===void 0?"":s,c=n.defaultResetButtonTriggerRequest,m=n.filterWrapperStyle,v=n.filterWrapperClassName,g=n.rightOperateAreaAppendType,h=n.easyFormProps;var y=i.cacheKey,C=i.foldKeys,F=i.fieldNames,b=i.onRequest,S=i.pageSize,R=i.getPaginationStatus,j=i.initialValues,z=i.form,K=i.onFormFinish;var _=typeof n.children==="function"?n.children(z):n.children;var L=g||"cover";var q=w((function(){if(E(_)){return T.toArray(_.props.children)}else{return T.toArray(_)}}),[_]);var W=x(false),Q=W[0],U=W[1];var G=p.useCallbackRef((function(){return new Promise((function(e,n){var t;$.remove(y);z.resetFields();z.setFieldsValue(j);if(f(c)||c){return Promise.resolve(z.validateFields()).then(function(e){try{if(R()){b(r((t={},t[F.pageNo]=1,t[F.pageSize]=S,t),j))}else{b(j)}return i.call(this)}catch(e){return n(e)}}.bind(this),n)}function i(){return e()}return i.call(this)}))}));var H=w((function(){var e=[!(a!=null&&a.hidden)?k(A,r({type:"primary",htmlType:"submit"},a,{children:(a==null?void 0:a.text)||"查询"}),"1"):null,!(o!=null&&o.hidden)?k(A,r({onClick:G},o,{children:(o==null?void 0:o.text)||"重置"}),"2"):null].filter(Boolean);var n=l==null?void 0:l(z);var t=n==null?void 0:n.rightList;var i=(n==null?void 0:n.leftList)||[];var s=e;if(t){if(L==="afterAppend"){s=[].concat(e,t)}else if(L==="beforeAppend"){s=[].concat(t,e)}else{s=t}}if(C.length>0){var u=k(A,{type:"link",style:{padding:"0"},onClick:function e(){U(!Q)},children:Q?I("span",{children:["收起",k(D,{style:{marginLeft:3,fontSize:12}})]}):I("span",{children:["展开",k(V,{style:{marginLeft:3,fontSize:12}})]})},"fold-trigger");if(s.length>0||i.length===0){s.push(u)}else if((i==null?void 0:i.length)>0){i.push(u)}}return q.map((function(e,n){if(!Q&&C.find((function(n){return".$"+n===e.key})))return null;if(e.props["hidden"])return null;if(e.type["domTypeName"]==="FormCol")return e;return k(M.Col,{children:e},n)})).filter(Boolean).concat(k(M.OperateCol,r({},n,{leftList:i,rightList:s}),999))}),[q,l,C,z,G,Q,a,o,L]);var Y=t==="xs"?"left":(h==null?void 0:h.labelAlign)||"right";return k(O,{className:d("easy-table-filter",v),style:m,children:k(B,r({form:z,autoComplete:"off",onFinish:K,className:u,style:n.formStyle,isPure:true,labelWidth:"80",formItemGap:"15"},h,{labelAlign:Y,children:n.isPure?_:k(M.Row,{gutter:[15,0],gridSize:n.formGridSize,children:H})}))})};var re=function e(){var n=N(Z);return n.getEasyTableRef()};var ie=function e(){var n=N(Z);return{current:n.getEasyTableRef()}};var ae=function e(n){var t=x(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a={type:"checkbox",selectedRowKeys:r,onChange:function e(t){i(t);n.onChange(t);if(n.cacheKey){X.set(n.cacheKey,t)}}};var o=[{title:"字段名称",dataIndex:"title",render:function e(n,t){return t["_isFoldTitle"]||n}},{title:"字段Key",dataIndex:"dataIndex"}];return k(R,{children:k(F,{title:"选择字段",open:n.open,onClose:n.onClose,width:"35%",styles:{body:{padding:15}},children:k(b,{bordered:true,size:"small",columns:o,rowSelection:a,rowKey:"dataIndex",pagination:false,scroll:{x:"max-content"},dataSource:n.dataList})})})};var oe=["tooltip","tipsWrapperProps","title"];var le=function e(n){return w((function(){var e=n.columns.map((function(e){var n=e.tooltip,t=e.tipsWrapperProps,a=e.title,o=i(e,oe);if(typeof a==="string"&&t){if(typeof t==="string"){return r({},o,{title:k(Y,{tipType:"popover",popoverProps:{content:t},children:a})})}return r({},o,{title:k(Y,r({},t,{children:a}))})}if(typeof a==="string"&&!!n){return r({},o,{title:k(H,{tooltip:n,title:a})})}return e})).filter(Boolean);return[].concat(e)}),[n.columns])};var se=function e(n){var t=n.columns;return P.useMemoCustom((function(){var e;if((e=n.columnFoldConfig)!=null&&e.hidden)return t;var r=t[t.length-1];if(n.foldColumnList.length>0&&t.length>0){var i=t.find((function(e){return e["_isFoldColumn"]}));if(i&&r.dataIndex!==i.dataIndex){i.title=i["_isFoldTitle"];i["_isFoldColumn"]=false}if(!r["_isFoldColumn"]){var a,o,l,s,u,c;r["_isFoldTitle"]=r["_isFoldTitle"]||r.title;r["_isFoldColumn"]=true;var d=(a=n.columnFoldConfig)==null?void 0:a.triggerType;r.title=I(Q,{direction:"horizontal",fullIndex:0,style:{alignItems:"center"},children:[k("span",{children:r.title}),k("div",{style:{padding:"0 5px 0 20px",display:"flex"},children:d==="drawer"?k(U,{onClick:n.onOpenColumnFoldModal,text:(o=n.columnFoldConfig)==null?void 0:o.text,size:"small",icon:((l=n.columnFoldConfig)==null?void 0:l.icon)||k(G,{svgPath:"ionic/list-circle",color:"#868686"}),hoverTips:((s=n.columnFoldConfig)==null?void 0:s.hoverTipText)||"字段列表",style:{padding:0,margin:0}}):k(ee,{dataList:n.foldColumnList,onChange:n.onChangeFoldColumnList,cacheKey:n.cacheKey,initSelectedRowKeys:n.showFoldKeyList,children:k(U,{text:(u=n.columnFoldConfig)==null?void 0:u.text,style:{padding:0,margin:0},size:"small",icon:((c=n.columnFoldConfig)==null?void 0:c.icon)||k(G,{svgPath:"ionic/list-circle",color:"#868686"})})})})]})}}return t}),[n.columns,n.columnFoldConfig])};var ue=function e(n){return w((function(){var e=n.columns.map((function(e){var t=e.hidden,r=e.isFold;if(t)return null;if(r&&!n.showFoldKeyList.includes(e.dataIndex))return null;return e})).filter(Boolean);return[].concat(e)}),[n.columns,n.showFoldKeyList])};var ce=function e(n){return w((function(){if(!Object.keys(n.asyncColumnRequestResult))return n.columns;return n.columns.map((function(e){var t=e.dataIndex;var r=n.asyncColumnRequestResult[t];if(t&&r){if(r.loading){e.render=function(e){return k(A,{loading:true,type:"text",loadingPosition:"center",removeGap:true,children:e})}}else if(e.asyncRender){e.render=function(n,t,i){return e.asyncRender==null?void 0:e.asyncRender(n,t,i,r.respData)}}}return e}))}),[n.columns,n.asyncColumnRequestResult])};var de=["children","rowKey","pagination","isSync"];var fe=function e(n){var t=N(Z);var a=n.children,o=n.rowKey,l=n.pagination,f=n.isSync,m=i(n,de);var v=z({});var g=x({}),h=g[0],y=g[1];var C=t.dynamicColumnsConfig,F=C.columnFoldConfig,S=C.onCloseColumnFoldModal,j=C.columnFoldOpen,K=C.onOpenColumnFoldModal,_=C.asyncColumnRequest,T=C.showFoldKeyList,q=C.onChangeShowFoldKeyList;var V=t.cacheKey,D=t.fieldNames,E=t.onRequest,A=t.tableDataSource,B=t.pageSize,M=t.tableTotal,Q=t.loading,U=t.paginationFixed,G=t.onSetPaginationStatus;var H=$.get(V);P.useEffectCustom((function(){t.onSetBaseColumns(n.columns||[])}),[]);L((function(){if(_!=null&&_.length){var e=function e(){var t;var i=_[n];v.current=r({},v.current,(t={},t[i.dataIndex]={loading:true},t));y(v.current);i.onRequest().then((function(e){var n;v.current=r({},v.current,(n={},n[i.dataIndex]={loading:false,respData:e},n));y(v.current)})).catch((function(e){var n;console.error(e==null?void 0:e.message);v.current=r({},v.current,(n={},n[i.dataIndex]={loading:false},n));y(v.current)}))};for(var n=0;n<_.length;n++){e()}}}),[_]);var Y=P.useMemoCustom((function(){if(t.columns){t.onSetColumns(t.columns);return t.columns}else{t.onSetColumns(n.columns);return n.columns}}),[t.columns,n.columns]);var J=le({columns:[].concat(Y)});var X=Y.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));J=se({cacheKey:V,columns:J,foldColumnList:X,showFoldKeyList:T,columnFoldConfig:F,onOpenColumnFoldModal:K,onChangeFoldColumnList:q});J=ue({columns:J,showFoldKeyList:T});J=ce({columns:J,asyncColumnRequestResult:h});P.useEffectCustom((function(){G(l!==false)}),[l]);p.useUpdateEffect((function(){if(!U){if(l!==false){var e;E((e={},e[D.pageSize]=H[D.pageSize]||B,e[D.pageNo]=1,e))}else{var n;E((n={},n[D.pageSize]=undefined,n[D.pageNo]=undefined,n))}}}),[l]);var ee=w((function(){if(U||l===false)return false;return r({showSizeChanger:true,current:H[D.pageNo]||1,pageSize:H[D.pageSize]||B,total:M,showTotal:function e(n){return"共 "+n+" 条记录"}},n.pagination)}),[H,D.pageNo,D.pageSize,B,l,U,n.pagination,M]);var ne=function e(t,r,i,a){if(a.action==="paginate"&&ee){var o;E((o={},o[D.pageSize]=t.pageSize,o[D.pageNo]=t.current,o))}else{n.onChange==null?void 0:n.onChange(t,r,i,a)}};var te=w((function(){if(!A)return undefined;if(A.length===0){return[]}if(typeof o==="string"&&u(A[0][o])){return A.map((function(e){e[o]=s();return e}))}return A}),[A,o]);J=w((function(){return J.map((function(e){if(!!e.defaultValue&&!e.render){e.render=function(n){return u(n)||n==""?e.defaultValue:n}}return e}))}),[J]);var re=function e(){if(f&&!te){return I(R,{children:[a,k(b,{size:"small",scroll:{x:"max-content"},bordered:true,rowKey:o,columns:J,loading:Q},"1")]})}if(c()){return I(R,{children:[a,k(b,r({size:"small",scroll:{x:"max-content"},bordered:true},m,{columns:J,pagination:ee,rowKey:o,onChange:ne,loading:Q,dataSource:te}),"2")]})}return I(R,{children:[a,k(W,{children:k(b,r({size:"small",scroll:{x:"max-content"},bordered:true},m,{columns:J,pagination:ee,rowKey:o,onChange:ne,loading:Q,dataSource:te}),"3")})]})};return I(O,{className:d("easy-table-table",{"ett-empty-show-small":n.emptyShowSize==="small"},n.tableWrapperClassName),style:n.tableWrapperStyle,children:[re(),k(ae,{dataList:X,onClose:S,open:j,onChange:q,cacheKey:V,initSelectedRowKeys:T})]})};var me=e.attachPropertiesToComponent(ne,{Filter:te,Table:fe,useEasyTablRef:ie,useEasyTable:re,setEnabledInitRequest:function e(n){J.set(n,false)}});export{me as EasyTable};
22
+ import{fbaUtils as e}from"../fba-utils/index.js";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{isObject as t}from"@dimjs/lang/cjs/is-object";import{_ as r,a as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{sessionStorageCache as a,localStorageCache as o,noop as l,getUuid as s,isUndefinedOrNull as u,isMacEnv as c}from"@flatbiz/utils";import{classNames as d}from"@dimjs/utils/cjs/class-names";import{isUndefined as f}from"@dimjs/lang/cjs/is-undefined";import{get as m}from"@dimjs/utils/cjs/get";import{hooks as p}from"@wove/react/cjs/hooks";import{isString as v}from"@dimjs/lang/cjs/is-string";import{Checkbox as g,Popover as h,Form as y,message as C,Drawer as F,Table as b}from"antd";import{createContext as S,useState as x,Fragment as R,forwardRef as j,useMemo as w,useRef as z,useImperativeHandle as K,cloneElement as _,useContext as N,Children as P,useEffect as T}from"react";import{fbaHooks as L}from"../fba-hooks/index.js";import{PaginationWrapper as q}from"../pagination-wrapper/index.js";import{jsx as k,jsxs as I}from"react/jsx-runtime";import V from"@ant-design/icons/es/icons/DownOutlined";import D from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as E}from"react-is";import{BlockLayout as O}from"../block-layout/index.js";import{ButtonWrapper as A}from"../button-wrapper/index.js";import{EasyForm as B}from"../easy-form/index.js";import{FormGrid as M}from"../form-grid/index.js";import{TableScrollbar as W}from"../table-scrollbar/index.js";import{FlexLayout as Q}from"../flex-layout/index.js";import{IconWrapper as U}from"../icon-wrapper/index.js";import{SvgHttpView as G}from"../svg-http-view/index.js";import{TableTitleTooltip as H}from"../table-title-tooltip/index.js";import{TipsWrapper as Y}from"../tips-wrapper/index.js";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.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"@dimjs/utils/cjs/extend";import"../box-grid/index.js";import"@dimjs/lang/cjs/is-number";import"ahooks";import"../form-wrapper/index.js";import"../pre-defined-class-name/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var $={set:function e(n,t){var i=$.get(n);var o=r({},i,t);a.set("easy_tab_filter_"+n,o);return o},get:function e(n){var r=a.get("easy_tab_filter_"+n);return t(r)?r:{}},remove:function e(n){a.remove("easy_tab_filter_"+n)}};var J={set:function e(n,t){a.set("easy_tab_firstQuery_"+n,{value:t})},get:function e(n){var t;var r=(t=a.get("easy_tab_firstQuery_"+n))==null?void 0:t.value;return r===false?false:true},remove:function e(n){a.remove("easy_tab_firstQuery_"+n)}};var X={set:function e(n,t){o.set("easy_tab_columnFold_"+n,{value:t})},get:function e(t){var r;var i=(r=o.get("easy_tab_columnFold_"+t))==null?void 0:r.value;return n(i)?i:[]},remove:function e(n){o.remove("easy_tab_columnFold_"+n)}};var Z=S({onRequest:l,tableList:[],getEasyTableRef:function e(){}});var ee=function e(n){var t=x(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a=function e(t){i(t);n.onChange(t);if(n.cacheKey){X.set(n.cacheKey,t)}};var o=k(R,{children:k(g.Group,{defaultValue:r,onChange:a,value:r,style:{display:"flex",flexDirection:"column"},children:n.dataList.map((function(e){var n=e["_isFoldTitle"]||e.title;return k(g,{value:e.dataIndex,style:{padding:"0 0 5px 0"},children:n},e.dataIndex)}))})});var l=function e(t){if(t.target.checked){a(n.dataList.map((function(e){return e.dataIndex})))}else{a([])}};return k(h,{content:o,title:k(g,{checked:r.length===n.dataList.length,onChange:l,children:"全选(字段列表)"}),placement:"bottomRight",overlayClassName:"fold-operate-popiver",children:n.children})};var ne=j((function(t,i){var a;var o=L.useResponsivePoint();var l=x(),u=l[0],c=l[1];var g=x(0),h=g[0],F=g[1];var b=x(false),S=b[0],R=b[1];var j=t.columnFoldConfig;var N=t.asyncColumnRequest;var P=x(false),T=P[0],V=P[1];var D=w((function(){if(t.cacheKey)return t.cacheKey;if(t.cacheSwitch===true){return location.pathname}if(typeof t.cacheSwitch==="string"){return t.cacheSwitch}return s()}),[t.cacheSwitch,t.cacheKey]);var E=$.get(D);var O=x((function(){if(D){var e=X.get(D);var t=n(e)?e.filter((function(e){return v(e)})):[];return t.length>0?t:(j==null?void 0:j.initSelectedKeys)||[]}else{return(j==null?void 0:j.initSelectedKeys)||[]}})),A=O[0],B=O[1];var M=t.pageSize||((a=t.initialPaginationParams)==null?void 0:a.pageSize)||10;var W=t.initRequest===undefined?true:t.initRequest;var Q=z(false);var U=z();var G=z([]);var H=x(),Y=H[0],ne=H[1];var te=z([]);var re=r({list:"list",total:"total",pageNo:"pageNo",pageSize:"pageSize"},t.fieldNames);var ie=y.useForm(t.form),ae=ie[0];var oe=p.useCallbackRef((function(r){return new Promise((function(i,a){var o,l,s,u,d,f,p,v,g,h,y;var b=function(){try{return i()}catch(e){return a(e)}};var S=function(e){try{R(false);if(t.onRequestErrorHandle){t.onRequestErrorHandle(e)}else{void C.error(e.message)}return b()}catch(e){return a(e)}};try{if(t.breforeRequest){var x=function(){try{return w.call(this)}catch(e){return S(e)}}.bind(this);var j=function(e){try{return i()}catch(e){return S(e)}};try{return Promise.resolve(t.breforeRequest(ae)).then((function(e){try{return x()}catch(e){return j(e)}}),j)}catch(z){j(z)}}function w(){J.set(D,false);R(true);o=$.set(D,r);l=t.serviceConfig,s=l.requestParamsAdapter,u=l.onRequest,d=l.requestResultAdapter,f=l.dynamicColumsAdapter;p=s?s(o):o;return Promise.resolve(u(e.removeFormValuesInvalidField(p))).then((function(e){try{v=e||{};U.current=v;t.onDataSourceChange==null?void 0:t.onDataSourceChange(v);g=v;if(d){g=d(v)}if(f){h=f(v,G.current);ne(h)}y=m(g,re.list);c(n(y)?y:[]);F(m(g,re.total));R(false);return b()}catch(e){return S(e)}}),S)}return w.call(this)}catch(K){S(K)}}))}));L.useEffectCustom((function(){var e=je();var n=J.get(D);ae.setFieldsValue(r({},t.initialValues,E));if(W||!n){if(e){var i;void oe(r((i={},i[re.pageNo]=1,i[re.pageSize]=M,i),t.initialValues,E))}else{void oe(t.initialValues)}}else{$.set(D,t.initialValues||{})}}),[]);var le=p.useCallbackRef((function(e){$.remove(D);ae.resetFields();if(e){$.set(D,e);ae.setFieldsValue(e)}}));var se=p.useCallbackRef((function(e){$.set(D,e);ae.setFieldsValue(e)}));var ue=function e(n,t){if(je()){var r;return r={},r[re.pageNo]=n,r[re.pageSize]=t||M,r}else{var i;return i={},i[re.pageNo]=undefined,i[re.pageSize]=undefined,i}};var ce=p.useCallbackRef((function(e){var n=r({},ue(1,E[re.pageSize]),t.initialValues,e);$.remove(D);ae.resetFields();if(e){ae.setFieldsValue(e)}void oe(n)}));var de=p.useCallbackRef((function(){return r({},E,ae.getFieldsValue())}));var fe=p.useCallbackRef((function(){V(true)}));var me=p.useCallbackRef((function(){V(false)}));var pe=function e(){return{onRequest:oe,clearQueryCondition:le,updateQueryCondition:se,getRequestParams:de,onResetRequest:ce,form:ae,dataSource:U.current,getDataSource:function e(){return U.current},onFilterDataSource:function e(n){c(n)},onClearDataSource:function e(){F(0);c([])},onUpdateDataSource:function e(n){c(n);U.current=n;t.onDataSourceChange==null?void 0:t.onDataSourceChange(n)},columnFoldTriggerRender:function e(n,r){var i;if(((i=t.columnFoldConfig)==null?void 0:i.triggerType)==="drawer"){return _(n,{onClick:fe})}var a=r.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));return k(ee,{dataList:a,onChange:xe,cacheKey:D,initSelectedRowKeys:A,children:n})},onChangeTableColumns:function e(n){ne(n)},getTableColumns:function e(){return te.current},loading:S,setEnabledInitRequest:function e(){J.set(D,false)}}};K(i,(function(){return pe()}));var ve=function e(n){Q.current=n};var ge=function e(n){G.current=n};var he=function e(n){te.current=n};var ye=function e(){var n=ae.getFieldsValue();if(t.onFormFinish){t.onFormFinish(r({},n,ue(1,E[re.pageSize])))}else{void oe(r({},n,ue(1,E[re.pageSize])))}};var Ce=f(t.isFull)?true:t.isFull;var Fe=o==="xs"?false:t.filterFixed;var be=d("fba-easy-table",{"fba-easy-table-full":Ce,"fba-easy-table-filter-fixed":Fe,"fba-easy-table-pagination-fixed":t.paginationFixed},t.className);var Se=L.useMemoCustom((function(){return r({showSizeChanger:true,current:E[re.pageNo]||1,pageSize:E[re.pageSize]||M,total:h,showTotal:function e(n){return"共 "+n+" 条记录"}},t.pagination)}),[re.pageNo,E,re.pageSize,D,M,t.pagination,h]);var xe=function e(n){B(n);j==null||j.onChange==null?void 0:j.onChange(n)};var Re=p.useCallbackRef((function(e,n){var r,i;var a=(r={},r[re.pageSize]=n,r[re.pageNo]=e,r);$.set(D,a);void oe(a);(i=t.pagination)==null||i.onChange==null?void 0:i.onChange(e,n)}));var je=function e(){return t.paginationFixed||Q.current};p.useUpdateEffect((function(){if(t.paginationFixed){var e;void oe((e={},e[re.pageSize]=E[re.pageSize]||M,e[re.pageNo]=1,e))}else{var n;void oe((n={},n[re.pageSize]=undefined,n[re.pageNo]=undefined,n))}}),[t.paginationFixed]);var we=d("fba-easy-table-wrapper",{"fba-easy-table-wrapper-inline":t.isInline},t.className);var ze=r({overflowY:t.filterFixed||t.paginationFixed?"hidden":"auto"},t.style);var Ke=typeof t.children==="function"?t.children(U.current):t.children;return k(Z.Provider,{value:{onSetBaseColumns:ge,onSetColumns:he,getEasyTableRef:pe,cacheKey:D,onRequest:oe,tableDataSource:u,tableTotal:h,loading:S,fieldNames:re,pageSize:M,onSetPaginationStatus:ve,getPaginationStatus:je,onFormFinish:ye,form:ae,paginationFixed:t.paginationFixed||false,foldKeys:t.foldKeys||[],columns:Y,initialValues:t.initialValues,dynamicColumnsConfig:{showFoldKeyList:A,onChangeShowFoldKeyList:xe,columnFoldConfig:j,onOpenColumnFoldModal:fe,onCloseColumnFoldModal:me,columnFoldOpen:T,asyncColumnRequest:N}},children:t.paginationFixed?I("div",{className:we,style:ze,children:[k("div",{className:be,children:Ke}),h>0&&k("div",{className:"fba-easy-table-pagination",children:k(q,r({size:"small"},Se,{onChange:Re}))})]}):k("div",{className:we,style:t.style,children:k("div",{className:be,children:Ke})})})}));var te=function e(n){var t=L.useResponsivePoint()||"md";var i=N(Z);var a=n.queryButtonProps,o=n.resetButtonProps,l=n.filterOperate,s=n.formClassName,u=s===void 0?"":s,c=n.defaultResetButtonTriggerRequest,m=n.filterWrapperStyle,v=n.filterWrapperClassName,g=n.rightOperateAreaAppendType,h=n.easyFormProps;var y=i.cacheKey,C=i.foldKeys,F=i.fieldNames,b=i.onRequest,S=i.pageSize,R=i.getPaginationStatus,j=i.initialValues,z=i.form,K=i.onFormFinish;var _=typeof n.children==="function"?n.children(z):n.children;var T=g||"cover";var q=w((function(){if(E(_)){return P.toArray(_.props.children)}else{return P.toArray(_)}}),[_]);var W=x(false),Q=W[0],U=W[1];var G=p.useCallbackRef((function(){return new Promise((function(e,n){var t;$.remove(y);z.resetFields();z.setFieldsValue(j);if(f(c)||c){return Promise.resolve(z.validateFields()).then(function(e){try{if(R()){b(r((t={},t[F.pageNo]=1,t[F.pageSize]=S,t),j))}else{b(j)}return i.call(this)}catch(e){return n(e)}}.bind(this),n)}function i(){return e()}return i.call(this)}))}));var H=w((function(){var e=[!(a!=null&&a.hidden)?k(A,r({type:"primary",htmlType:"submit"},a,{children:(a==null?void 0:a.text)||"查询"}),"1"):null,!(o!=null&&o.hidden)?k(A,r({onClick:G},o,{children:(o==null?void 0:o.text)||"重置"}),"2"):null].filter(Boolean);var n=l==null?void 0:l(z);var t=n==null?void 0:n.rightList;var i=(n==null?void 0:n.leftList)||[];var s=e;if(t){if(T==="afterAppend"){s=[].concat(e,t)}else if(T==="beforeAppend"){s=[].concat(t,e)}else{s=t}}if(C.length>0){var u=k(A,{type:"link",style:{padding:"0"},onClick:function e(){U(!Q)},children:Q?I("span",{children:["收起",k(D,{style:{marginLeft:3,fontSize:12}})]}):I("span",{children:["展开",k(V,{style:{marginLeft:3,fontSize:12}})]})},"fold-trigger");if(s.length>0||i.length===0){s.push(u)}else if((i==null?void 0:i.length)>0){i.push(u)}}return q.map((function(e,n){if(!Q&&C.find((function(n){return".$"+n===e.key})))return null;if(e.props["hidden"])return null;if(e.type["domTypeName"]==="FormCol")return e;return k(M.Col,{children:e},n)})).filter(Boolean).concat(k(M.OperateCol,r({},n,{leftList:i,rightList:s}),999))}),[q,l,C,z,G,Q,a,o,T]);var Y=t==="xs"?"left":(h==null?void 0:h.labelAlign)||"right";return k(O,{className:d("easy-table-filter",v),style:m,children:k(B,r({form:z,autoComplete:"off",onFinish:K,className:u,style:n.formStyle,isPure:true,labelWidth:"80",formItemGap:"15"},h,{labelAlign:Y,children:n.isPure?_:k(M.Row,{gutter:[15,0],gridSize:n.formGridSize,children:H})}))})};var re=function e(){var n=N(Z);return n.getEasyTableRef()};var ie=function e(){var n=N(Z);return{current:n.getEasyTableRef()}};var ae=function e(n){var t=x(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a={type:"checkbox",selectedRowKeys:r,onChange:function e(t){i(t);n.onChange(t);if(n.cacheKey){X.set(n.cacheKey,t)}}};var o=[{title:"字段名称",dataIndex:"title",render:function e(n,t){return t["_isFoldTitle"]||n}},{title:"字段Key",dataIndex:"dataIndex"}];return k(R,{children:k(F,{title:"选择字段",open:n.open,onClose:n.onClose,width:"35%",styles:{body:{padding:15}},children:k(b,{bordered:true,size:"small",columns:o,rowSelection:a,rowKey:"dataIndex",pagination:false,scroll:{x:"max-content"},dataSource:n.dataList})})})};var oe=["tooltip","tipsWrapperProps","title"];var le=function e(n){return w((function(){var e=n.columns.map((function(e){var n=e.tooltip,t=e.tipsWrapperProps,a=e.title,o=i(e,oe);if(typeof a==="string"&&t){if(typeof t==="string"){return r({},o,{title:k(Y,{tipType:"popover",popoverProps:{content:t},children:a})})}return r({},o,{title:k(Y,r({},t,{children:a}))})}if(typeof a==="string"&&!!n){return r({},o,{title:k(H,{tooltip:n,title:a})})}return e})).filter(Boolean);return[].concat(e)}),[n.columns])};var se=function e(n){var t=n.columns;return L.useMemoCustom((function(){var e;if((e=n.columnFoldConfig)!=null&&e.hidden)return t;var r=t[t.length-1];if(n.foldColumnList.length>0&&t.length>0){var i=t.find((function(e){return e["_isFoldColumn"]}));if(i&&r.dataIndex!==i.dataIndex){i.title=i["_isFoldTitle"];i["_isFoldColumn"]=false}if(!r["_isFoldColumn"]){var a,o,l,s,u,c;r["_isFoldTitle"]=r["_isFoldTitle"]||r.title;r["_isFoldColumn"]=true;var d=(a=n.columnFoldConfig)==null?void 0:a.triggerType;r.title=I(Q,{direction:"horizontal",fullIndex:0,style:{alignItems:"center"},children:[k("span",{children:r.title}),k("div",{style:{padding:"0 5px 0 20px",display:"flex"},children:d==="drawer"?k(U,{onClick:n.onOpenColumnFoldModal,text:(o=n.columnFoldConfig)==null?void 0:o.text,size:"small",icon:((l=n.columnFoldConfig)==null?void 0:l.icon)||k(G,{svgPath:"ionic/list-circle",color:"#868686"}),hoverTips:((s=n.columnFoldConfig)==null?void 0:s.hoverTipText)||"字段列表",style:{padding:0,margin:0}}):k(ee,{dataList:n.foldColumnList,onChange:n.onChangeFoldColumnList,cacheKey:n.cacheKey,initSelectedRowKeys:n.showFoldKeyList,children:k(U,{text:(u=n.columnFoldConfig)==null?void 0:u.text,style:{padding:0,margin:0},size:"small",icon:((c=n.columnFoldConfig)==null?void 0:c.icon)||k(G,{svgPath:"ionic/list-circle",color:"#868686"})})})})]})}}return t}),[n.columns,n.columnFoldConfig])};var ue=function e(n){return w((function(){var e=n.columns.map((function(e){var t=e.hidden,r=e.isFold;if(t)return null;if(r&&!n.showFoldKeyList.includes(e.dataIndex))return null;return e})).filter(Boolean);return[].concat(e)}),[n.columns,n.showFoldKeyList])};var ce=function e(n){return w((function(){if(!Object.keys(n.asyncColumnRequestResult))return n.columns;return n.columns.map((function(e){var t=e.dataIndex;var r=n.asyncColumnRequestResult[t];if(t&&r){if(r.loading){e.render=function(e){return k(A,{loading:true,type:"text",loadingPosition:"center",removeGap:true,children:e})}}else if(e.asyncRender){e.render=function(n,t,i){return e.asyncRender==null?void 0:e.asyncRender(n,t,i,r.respData)}}}return e}))}),[n.columns,n.asyncColumnRequestResult])};var de=["children","rowKey","pagination","isSync"];var fe=function e(n){var t=N(Z);var a=n.children,o=n.rowKey,l=n.pagination,f=n.isSync,m=i(n,de);var v=z({});var g=x({}),h=g[0],y=g[1];var C=t.dynamicColumnsConfig,F=C.columnFoldConfig,S=C.onCloseColumnFoldModal,j=C.columnFoldOpen,K=C.onOpenColumnFoldModal,_=C.asyncColumnRequest,P=C.showFoldKeyList,q=C.onChangeShowFoldKeyList;var V=t.cacheKey,D=t.fieldNames,E=t.onRequest,A=t.tableDataSource,B=t.pageSize,M=t.tableTotal,Q=t.loading,U=t.paginationFixed,G=t.onSetPaginationStatus;var H=$.get(V);L.useEffectCustom((function(){t.onSetBaseColumns(n.columns||[])}),[]);T((function(){if(_!=null&&_.length){var e=function e(){var t;var i=_[n];v.current=r({},v.current,(t={},t[i.dataIndex]={loading:true},t));y(v.current);i.onRequest().then((function(e){var n;v.current=r({},v.current,(n={},n[i.dataIndex]={loading:false,respData:e},n));y(v.current)})).catch((function(e){var n;console.error(e==null?void 0:e.message);v.current=r({},v.current,(n={},n[i.dataIndex]={loading:false},n));y(v.current)}))};for(var n=0;n<_.length;n++){e()}}}),[_]);var Y=L.useMemoCustom((function(){if(t.columns){t.onSetColumns(t.columns);return t.columns}else{t.onSetColumns(n.columns);return n.columns}}),[t.columns,n.columns]);var J=le({columns:[].concat(Y)});var X=Y.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));J=se({cacheKey:V,columns:J,foldColumnList:X,showFoldKeyList:P,columnFoldConfig:F,onOpenColumnFoldModal:K,onChangeFoldColumnList:q});J=ue({columns:J,showFoldKeyList:P});J=ce({columns:J,asyncColumnRequestResult:h});L.useEffectCustom((function(){G(l!==false)}),[l]);p.useUpdateEffect((function(){if(!U){if(l!==false){var e;E((e={},e[D.pageSize]=H[D.pageSize]||B,e[D.pageNo]=1,e))}else{var n;E((n={},n[D.pageSize]=undefined,n[D.pageNo]=undefined,n))}}}),[l]);var ee=w((function(){if(U||l===false)return false;return r({showSizeChanger:true,current:H[D.pageNo]||1,pageSize:H[D.pageSize]||B,total:M,showTotal:function e(n){return"共 "+n+" 条记录"}},n.pagination)}),[H,D.pageNo,D.pageSize,B,l,U,n.pagination,M]);var ne=function e(t,r,i,a){if(a.action==="paginate"&&ee){var o;E((o={},o[D.pageSize]=t.pageSize,o[D.pageNo]=t.current,o))}else{n.onChange==null?void 0:n.onChange(t,r,i,a)}};var te=w((function(){if(!A)return undefined;if(A.length===0){return[]}if(typeof o==="string"&&u(A[0][o])){return A.map((function(e){e[o]=s();return e}))}return A}),[A,o]);J=w((function(){return J.map((function(e){if(!!e.defaultValue&&!e.render){e.render=function(n){return u(n)||n==""?e.defaultValue:n}}return e}))}),[J]);var re=function e(){if(f&&!te){return I(R,{children:[a,k(b,{size:"small",scroll:{x:"max-content"},bordered:true,rowKey:o,columns:J,loading:Q},"1")]})}if(c()){return I(R,{children:[a,k(b,r({size:"small",scroll:{x:"max-content"},bordered:true},m,{columns:J,pagination:ee,rowKey:o,onChange:ne,loading:Q,dataSource:te}),"2")]})}return I(R,{children:[a,k(W,{children:k(b,r({size:"small",scroll:{x:"max-content"},bordered:true},m,{columns:J,pagination:ee,rowKey:o,onChange:ne,loading:Q,dataSource:te}),"3")})]})};return I(O,{className:d("easy-table-table",{"ett-empty-show-small":n.emptyShowSize==="small"},n.tableWrapperClassName),style:n.tableWrapperStyle,children:[re(),k(ae,{dataList:X,onClose:S,open:j,onChange:q,cacheKey:V,initSelectedRowKeys:P})]})};var me=e.attachPropertiesToComponent(ne,{Filter:te,Table:fe,useEasyTablRef:ie,useEasyTable:re,setEnabledInitRequest:function e(n){J.set(n,false)}});export{me as EasyTable};
23
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/cache.ts","@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate-dropdown.tsx","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/hooks/columns.tsx","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { isArray, isObject } from '@dimjs/lang';\nimport { localStorageCache, sessionStorageCache, TPlainObject } from '@flatbiz/utils';\n\nexport const filterCache = {\n set: (cacheKey: string, filterCondition: TPlainObject) => {\n const value = filterCache.get(cacheKey);\n const mergeParams = {\n ...value,\n ...filterCondition,\n };\n sessionStorageCache.set(`easy_tab_filter_${cacheKey}`, mergeParams);\n return mergeParams as TPlainObject;\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_filter_${cacheKey}`) as TPlainObject;\n return isObject(value) ? value : {};\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_filter_${cacheKey}`);\n },\n};\n\nexport const firstQueryCache = {\n set: (cacheKey: string, flag: boolean) => {\n sessionStorageCache.set(`easy_tab_firstQuery_${cacheKey}`, { value: flag });\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_firstQuery_${cacheKey}`)?.value;\n return value === false ? false : true;\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_firstQuery_${cacheKey}`);\n },\n};\n\nexport const columnFoldCache = {\n set: (cacheKey: string, value: string[]) => {\n localStorageCache.set(`easy_tab_columnFold_${cacheKey}`, { value });\n },\n get: (cacheKey: string) => {\n const value = localStorageCache.get(`easy_tab_columnFold_${cacheKey}`)?.value;\n return isArray(value) ? (value as string[]) : [];\n },\n remove: (cacheKey: string) => {\n localStorageCache.remove(`easy_tab_columnFold_${cacheKey}`);\n },\n};\n","import { noop, type TPlainObject } from '@flatbiz/utils';\nimport { type FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport type EditableFieldContextContextApi = {\n cacheKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableDataSource?: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initialValues?: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n getPaginationStatus: () => boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n onSetBaseColumns: (baseColumns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n onSetColumns: (columns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n columns?: TEasyTableTableColumn<TPlainObject>[];\n dynamicColumnsConfig: {\n showFoldKeyList: string[];\n onChangeShowFoldKeyList: (keys: string[]) => void;\n columnFoldOpen: boolean;\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onCloseColumnFoldModal: () => void;\n asyncColumnRequest?: EasyTableProps['asyncColumnRequest'];\n };\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { Checkbox, Popover } from 'antd';\nimport { Fragment, useState, type CSSProperties, type ReactElement } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex: string; title: string }[];\n onChange: (keys: string[]) => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n children?: ReactElement;\n};\n\nexport const FoldOperateDropdown = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n\n const onChange = (keys) => {\n setSelectedRowKeys(keys);\n props.onChange(keys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, keys);\n }\n };\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { classNames, get } from '@dimjs/utils';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\n\nimport { getUuid, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { PaginationWrapper } from '../pagination-wrapper';\n\nimport { columnFoldCache, filterCache, firstQueryCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport './style.less';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const columnFoldConfig = props.columnFoldConfig;\n const asyncColumnRequest = props.asyncColumnRequest;\n\n const [columnFoldOpen, setColumnFoldOpen] = useState(false);\n\n const cacheKey = useMemo(() => {\n if (props.cacheKey) return props.cacheKey;\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return getUuid();\n }, [props.cacheSwitch, props.cacheKey]);\n\n const cacheParams = filterCache.get(cacheKey);\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (cacheKey) {\n const columnFoldCacheValue = columnFoldCache.get(cacheKey);\n const cacheKeyList = isArray(columnFoldCacheValue)\n ? columnFoldCacheValue.filter((item) => isString(item))\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const paginationStatusRef = useRef(false);\n const respOriginalDataRef = useRef<TAny>();\n const baseColumnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n const [dynamicColumns, setDynamicColumns] = useState<TEasyTableTableColumn<TPlainObject>[]>();\n\n const columnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n\n const fieldNames = {\n list: 'list',\n total: 'total',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm(props.form);\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n if (props.breforeRequest) {\n try {\n await props.breforeRequest(form);\n } catch (_error) {\n return;\n }\n }\n firstQueryCache.set(cacheKey, false);\n setLoading(true);\n const paramsAll = filterCache.set(cacheKey, params);\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(paramsAll) : paramsAll;\n const respData = (await onRequest(fbaUtils.removeFormValuesInvalidField(paramsNew))) || {};\n respOriginalDataRef.current = respData;\n props.onDataSourceChange?.(respData);\n let respDataNew: TPlainObject = respData;\n if (requestResultAdapter) {\n respDataNew = requestResultAdapter(respData);\n }\n if (dynamicColumsAdapter) {\n const dynamicColumns = dynamicColumsAdapter(respData, baseColumnsRef.current);\n /** 不要添加默认值 */\n setDynamicColumns(dynamicColumns);\n }\n const respList = get(respDataNew, fieldNames.list);\n setDataSource(isArray(respList) ? respList : []);\n setTotal(get(respDataNew, fieldNames.total));\n setLoading(false);\n } catch (error: any) {\n setLoading(false);\n if (props.onRequestErrorHandle) {\n props.onRequestErrorHandle(error);\n } else {\n void message.error(error.message);\n }\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = getPaginationStatus();\n const firstQueryFlag = firstQueryCache.get(cacheKey);\n form.setFieldsValue({\n ...props.initialValues,\n ...cacheParams,\n });\n if (initRequest || !firstQueryFlag) {\n if (hasPagination) {\n void onInnerRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...props.initialValues,\n ...cacheParams,\n });\n } else {\n void onInnerRequest(props.initialValues);\n }\n } else {\n filterCache.set(cacheKey, props.initialValues || {});\n }\n }, []);\n\n const clearQueryCondition = hooks.useCallbackRef((values?: TPlainObject) => {\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n }\n });\n\n const updateQueryCondition = hooks.useCallbackRef((values: TPlainObject) => {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (getPaginationStatus()) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {\n [fieldNames.pageNo]: undefined,\n [fieldNames.pageSize]: undefined,\n };\n }\n };\n\n const onResetRequest = hooks.useCallbackRef((values?: TPlainObject) => {\n const params = {\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n ...props.initialValues,\n ...values,\n };\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n form.setFieldsValue(values);\n }\n void onInnerRequest(params);\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n return {\n ...cacheParams,\n ...form.getFieldsValue(),\n };\n });\n\n const onOpenColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(true);\n });\n\n const onCloseColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(false);\n });\n\n const getEasyTableRef = (): EasyTableRefApi => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n dataSource: respOriginalDataRef.current,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = dataList;\n props.onDataSourceChange?.(dataList);\n },\n columnFoldTriggerRender: (children, columns: TEasyTableTableColumn<TPlainObject>[]) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n\n const foldColumnList = columns.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as { dataIndex: string; title: string }[]}\n onChange={onChangeFoldColumnList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n {children}\n </FoldOperateDropdown>\n );\n },\n onChangeTableColumns: (columns) => {\n setDynamicColumns(columns);\n },\n getTableColumns: () => {\n return columnsRef.current;\n },\n loading,\n setEnabledInitRequest: () => {\n firstQueryCache.set(cacheKey, false);\n },\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n paginationStatusRef.current = status;\n };\n\n const onSetBaseColumns = (base) => {\n baseColumnsRef.current = base;\n };\n\n const onSetColumns = (columns) => {\n columnsRef.current = columns;\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n if (props.onFormFinish) {\n props.onFormFinish({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': props.filterFixed,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = fbaHooks.useMemoCustom(() => {\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, cacheParams, fieldNames.pageSize, cacheKey, pageSize, props.pagination, total]);\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n const params = {\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n };\n filterCache.set(cacheKey, params);\n void onInnerRequest(params);\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n void onInnerRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }, [props.paginationFixed]);\n\n const wrapperClassName = classNames(\n 'fba-easy-table-wrapper',\n {\n 'fba-easy-table-wrapper-inline': props.isInline,\n },\n props.className,\n );\n\n const wrapperStyle: CSSProperties = {\n overflowY: props.filterFixed || props.paginationFixed ? 'hidden' : 'auto',\n ...props.style,\n };\n\n const children =\n typeof props.children === 'function' ? props.children(respOriginalDataRef.current) : props.children;\n\n return (\n <EasyTableContext.Provider\n value={{\n onSetBaseColumns,\n onSetColumns,\n getEasyTableRef,\n cacheKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: dynamicColumns,\n initialValues: props.initialValues,\n dynamicColumnsConfig: {\n showFoldKeyList,\n onChangeShowFoldKeyList: onChangeFoldColumnList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onCloseColumnFoldModal,\n columnFoldOpen,\n asyncColumnRequest,\n },\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n <div className={className}>{children}</div>\n </div>\n )}\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { type FormInstance } from 'antd';\nimport { Children, useContext, useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n /**\n * @deprecated已过期,使用 easyFormProps.className 配置\n */\n formClassName?: string;\n /**\n * @deprecated已过期,使用 easyFormProps.style 配置\n */\n formStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout style */\n filterWrapperStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout className */\n filterWrapperClassName?: string;\n /**\n * 自定义 filterOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n easyFormProps?: Omit<\n EasyFormProps,\n 'isPure' | 'column' | 'forceColumn' | 'width' | 'gridGutter' | 'children'\n >;\n};\n\n/**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTableFilter>\n *\n * 2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n * 3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,默认重启按钮触发请求,默认值:true\n * 8. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const screenType = fbaHooks.useResponsivePoint() || 'md';\n const ctx = useContext(EasyTableContext);\n const {\n queryButtonProps,\n resetButtonProps,\n filterOperate,\n formClassName = '',\n defaultResetButtonTriggerRequest,\n filterWrapperStyle,\n filterWrapperClassName,\n rightOperateAreaAppendType,\n easyFormProps,\n } = props;\n const {\n cacheKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\n\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const [openFold, setOpenFold] = useState(false);\n\n const onReset = hooks.useCallbackRef(async () => {\n filterCache.remove(cacheKey);\n form.resetFields();\n form.setFieldsValue(initialValues);\n if (isUndefined(defaultResetButtonTriggerRequest) || defaultResetButtonTriggerRequest) {\n await form.validateFields();\n if (getPaginationStatus()) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n }\n });\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = filterOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n childrens,\n filterOperate,\n foldKeys,\n form,\n onReset,\n openFold,\n queryButtonProps,\n resetButtonProps,\n rightOperateAreaAppendTypeFt,\n ]);\n\n const labelAlign = screenType === 'xs' ? 'left' : easyFormProps?.labelAlign || 'right';\n\n return (\n <BlockLayout\n className={classNames('easy-table-filter', filterWrapperClassName)}\n style={filterWrapperStyle}\n >\n <EasyForm\n form={form}\n autoComplete=\"off\"\n onFinish={onFormFinish}\n // initialValues={initialValues}\n className={formClassName}\n style={props.formStyle}\n isPure={true}\n labelWidth=\"80\"\n formItemGap=\"15\"\n {...easyFormProps}\n labelAlign={labelAlign}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </EasyForm>\n </BlockLayout>\n );\n};\n","import { useContext } from 'react';\nimport { EasyTableContext } from './context';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useContext(EasyTableContext);\n return ctx.getEasyTableRef();\n};\n\n/**\n * @deprecated 已过时 @4.5.0版本移除,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const ctx = useContext(EasyTableContext);\n return {\n current: ctx.getEasyTableRef(),\n };\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { type ColumnsType } from 'antd/es/table';\nimport { type TableRowSelection } from 'antd/es/table/interface';\nimport { Fragment, useState, type CSSProperties } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex?: string; title: string }[];\n onChange: (keys: string[]) => void;\n open?: boolean;\n onClose?: () => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n};\n\nexport const FoldOperate = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n const rowSelection = {\n type: 'checkbox',\n selectedRowKeys: selectedRowKeys,\n onChange: (selectedRowKeys: string[]) => {\n setSelectedRowKeys(selectedRowKeys);\n props.onChange(selectedRowKeys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, selectedRowKeys);\n }\n },\n } as TableRowSelection<TAny>;\n\n const columns: ColumnsType<TPlainObject> = [\n {\n title: '字段名称',\n dataIndex: 'title',\n render: (value, recrd) => {\n return recrd['_isFoldTitle'] || value;\n },\n },\n { title: '字段Key', dataIndex: 'dataIndex' },\n ];\n\n return (\n <Fragment>\n <Drawer\n title=\"选择字段\"\n open={props.open}\n onClose={props.onClose}\n width={'35%'}\n styles={{\n body: {\n padding: 15,\n },\n }}\n >\n <Table\n bordered\n size=\"small\"\n columns={columns}\n rowSelection={rowSelection}\n rowKey=\"dataIndex\"\n pagination={false}\n scroll={{ x: 'max-content' }}\n dataSource={props.dataList}\n />\n </Drawer>\n </Fragment>\n );\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { useMemo } from 'react';\nimport { ButtonWrapper } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { FlexLayout } from '../../flex-layout';\nimport { IconWrapper } from '../../icon-wrapper';\nimport { SvgHttpView } from '../../svg-http-view';\nimport { TableTitleTooltip } from '../../table-title-tooltip';\nimport { TipsWrapper } from '../../tips-wrapper';\nimport { FoldOperateDropdown } from '../fold-operate-dropdown';\nimport { type EasyTableProps } from '../type';\n\nexport const useColumnsAppendTips = (props: { columns: TPlainObject[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, ...otherProps } = item;\n if (typeof title === 'string' && tipsWrapperProps) {\n if (typeof tipsWrapperProps === 'string') {\n return {\n ...otherProps,\n title: (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n ),\n };\n }\n return {\n ...otherProps,\n title: <TipsWrapper {...tipsWrapperProps}>{title}</TipsWrapper>,\n };\n }\n if (typeof title === 'string' && !!tooltip) {\n return {\n ...otherProps,\n title: <TableTitleTooltip tooltip={tooltip} title={title}></TableTitleTooltip>,\n };\n }\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns]);\n};\n\nexport const useColumnsAppendInnerColumn = (props: {\n columns: TPlainObject[];\n cacheKey: string;\n showFoldKeyList: string[];\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onChangeFoldColumnList: (keyList: string[]) => void;\n foldColumnList: TPlainObject[];\n}) => {\n const columnsNew = props.columns;\n return fbaHooks.useMemoCustom(() => {\n if (props.columnFoldConfig?.hidden) return columnsNew;\n const finalItem = columnsNew[columnsNew.length - 1];\n if (props.foldColumnList.length > 0 && columnsNew.length > 0) {\n const foldColumnTarget = columnsNew.find((item) => item['_isFoldColumn']);\n\n if (foldColumnTarget && finalItem.dataIndex !== foldColumnTarget.dataIndex) {\n foldColumnTarget.title = foldColumnTarget['_isFoldTitle'];\n foldColumnTarget['_isFoldColumn'] = false;\n }\n if (!finalItem['_isFoldColumn']) {\n finalItem['_isFoldTitle'] = finalItem['_isFoldTitle'] || finalItem.title;\n finalItem['_isFoldColumn'] = true;\n\n const triggerType = props.columnFoldConfig?.triggerType;\n\n finalItem.title = (\n <FlexLayout direction=\"horizontal\" fullIndex={0} style={{ alignItems: 'center' }}>\n <span>{finalItem.title}</span>\n <div style={{ padding: '0 5px 0 20px', display: 'flex' }}>\n {triggerType === 'drawer' ? (\n <IconWrapper\n onClick={props.onOpenColumnFoldModal}\n text={props.columnFoldConfig?.text}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n hoverTips={props.columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={props.foldColumnList as TAny[]}\n onChange={props.onChangeFoldColumnList}\n cacheKey={props.cacheKey}\n initSelectedRowKeys={props.showFoldKeyList}\n >\n <IconWrapper\n text={props.columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return columnsNew;\n }, [props.columns, props.columnFoldConfig]);\n};\n\nexport const useColumnsToHidden = (props: { columns: TPlainObject[]; showFoldKeyList: string[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { hidden, isFold } = item;\n if (hidden) return null;\n if (isFold && !props.showFoldKeyList.includes(item.dataIndex as string)) return null;\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns, props.showFoldKeyList]);\n};\n\nexport const useColumnByAsyncColumnRequest = (props: {\n columns: TPlainObject[];\n asyncColumnRequestResult: TPlainObject;\n}) => {\n return useMemo(() => {\n if (!Object.keys(props.asyncColumnRequestResult)) return props.columns;\n return props.columns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = props.asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [props.columns, props.asyncColumnRequestResult]);\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Table, type TableProps } from 'antd';\nimport {\n Fragment,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n} from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport {\n useColumnByAsyncColumnRequest,\n useColumnsAppendInnerColumn,\n useColumnsAppendTips,\n useColumnsToHidden,\n} from './hooks/columns';\nimport { type TEasyTableTableColumn } from './type';\n\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns'\n> & {\n children?: ReactElement | ReactElement[];\n /**\n * 表格行 key 的取值,\n * ```\n * 如果 rowKey 为string类型\n * 1. 组件会判断表格列表数据第一条是否存在当前rowKey对象的数据,如果没有组件内部会动态添加唯一值\n * 2. 基于上一条的逻辑,如果表格数据没有唯一值,可指定 rowKey 值为table数据中不存在的字段名,例如:rowKey=\"_uid\"\n * 3. 如果触发上述逻辑,表格数据中会多出rowKey对应的键值对数据\n * ```\n */\n rowKey: TableProps<TAny>['rowKey'];\n /** table Form 外层 SimpleLayout className */\n tableWrapperStyle?: CSSProperties;\n /** table Form 外层 SimpleLayout className */\n tableWrapperClassName?: string;\n /**\n * ```\n * 1. 当配置了 EasyTable.serviceConfig.dynamicColumsAdapter 后,columns配置只在初始化有效,再次修改无效\n * 2. 可通过 EasyTableRef.onChangeTableColumns 实现 columns 的指定修改\n * ```\n */\n columns: TEasyTableTableColumn<T>[];\n /**\n * 数据加载与表格初始化渲染 是否同步\n * @version 4.4.6\n * ```\n * 1. true:获取数据后再初始化渲染表格(可用于实现表格中defaultXxxx相关功能的使用)\n * ```\n */\n isSync?: boolean;\n /**\n * 空效果显示尺寸,默认值:small\n * @version 4.4.6\n */\n emptyShowSize?: 'small' | 'large';\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\nexport const EasyTableTable = <T extends TPlainObject>(props: EasyTableTableProps<T>) => {\n const ctx = useContext(EasyTableContext);\n const { children, rowKey, pagination, isSync, ...otherProps } = props;\n\n const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n\n const {\n columnFoldConfig,\n onCloseColumnFoldModal,\n columnFoldOpen,\n onOpenColumnFoldModal,\n asyncColumnRequest,\n showFoldKeyList,\n onChangeShowFoldKeyList,\n } = ctx.dynamicColumnsConfig;\n\n const {\n cacheKey,\n fieldNames,\n onRequest,\n tableDataSource,\n pageSize,\n tableTotal,\n loading,\n paginationFixed,\n onSetPaginationStatus,\n } = ctx;\n\n const cacheParams = filterCache.get(cacheKey);\n\n fbaHooks.useEffectCustom(() => {\n /** 获取初始化 columns 数据 */\n ctx.onSetBaseColumns((props.columns || []) as TEasyTableTableColumn<TPlainObject>[]);\n }, []);\n\n useEffect(() => {\n if (asyncColumnRequest?.length) {\n for (let index = 0; index < asyncColumnRequest.length; index++) {\n const element = asyncColumnRequest[index];\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: true },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n element\n .onRequest()\n .then((respData) => {\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false, respData },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n })\n .catch((error) => {\n console.error(error?.message);\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n });\n }\n }\n }, [asyncColumnRequest]);\n\n const columnsOriginal = fbaHooks.useMemoCustom(() => {\n if (ctx.columns) {\n ctx.onSetColumns(ctx.columns);\n return ctx.columns as TEasyTableTableColumn<T>[];\n } else {\n ctx.onSetColumns(props.columns as TEasyTableTableColumn<TPlainObject>[]);\n return props.columns;\n }\n }, [ctx.columns, props.columns]);\n\n let columnsNew = useColumnsAppendTips({\n columns: [...columnsOriginal],\n });\n\n const foldColumnList = columnsOriginal.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n columnsNew = useColumnsAppendInnerColumn({\n cacheKey,\n columns: columnsNew,\n foldColumnList,\n showFoldKeyList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onChangeFoldColumnList: onChangeShowFoldKeyList,\n });\n\n columnsNew = useColumnsToHidden({\n columns: columnsNew,\n showFoldKeyList,\n });\n\n columnsNew = useColumnByAsyncColumnRequest({\n columns: columnsNew,\n asyncColumnRequestResult,\n });\n\n fbaHooks.useEffectCustom(() => {\n onSetPaginationStatus(pagination !== false);\n }, [pagination]);\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (!paginationFixed) {\n if (pagination !== false) {\n onRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n onRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }\n }, [pagination]);\n\n const tablePaginationData = useMemo(() => {\n if (paginationFixed || pagination === false) return false;\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n // selectComponentClass: SmallSelect,\n };\n }, [\n cacheParams,\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (pagination, filters, sorter, extra) => {\n if (extra.action === 'paginate' && tablePaginationData) {\n onRequest({\n [fieldNames.pageSize]: pagination.pageSize,\n [fieldNames.pageNo]: pagination.current,\n });\n } else {\n props.onChange?.(pagination, filters, sorter, extra);\n }\n };\n\n const dataSource = useMemo(() => {\n if (!tableDataSource) return undefined;\n if (tableDataSource.length === 0) {\n return [];\n }\n if (typeof rowKey === 'string' && isUndefinedOrNull(tableDataSource[0][rowKey])) {\n return tableDataSource.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableDataSource;\n }, [tableDataSource, rowKey]);\n\n columnsNew = useMemo(() => {\n return columnsNew.map((item) => {\n if (!!item.defaultValue && !item.render) {\n item.render = (value) => {\n return isUndefinedOrNull(value) || value == '' ? item.defaultValue : value;\n };\n }\n return item;\n });\n }, [columnsNew]);\n\n const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"1\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n rowKey={rowKey as TAny}\n columns={columnsNew}\n loading={loading}\n />\n </Fragment>\n );\n }\n if (isMacEnv()) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"2\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </Fragment>\n );\n }\n return (\n <Fragment>\n {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeShowFoldKeyList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { firstQueryCache } from './cache';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n *\n * 1. 废弃modelKey参数\n * 2. 如果需要在路由跳转回退中缓存查询条件,设置cacheSwitch=true;如果存在多个EasyTable缓存情况可设置cacheSwitch为自定义字符串\n * 3. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 4. 可通过属性 initRequest 设置初始化是否请求数据\n * 5. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 6. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 7. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 8. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 9. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 10. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提高windows下table左右滚动体验\n * 11. 可实现部分字段折叠,手动选择显示,将EasyTable.Table columns中isFold属性设为true,可通过EasyTable columnFoldConfig配置属性,demo(https://fex.qa.tcshuke.com/docs/admin/main/crud/demo1)\n * 12. 通过asyncColumnRequest、asyncRender配合使用可实现表格列数据接口渲染(demo:https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table)\n * ```\n */\nexport const EasyTable = fbaUtils.attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTable.Filter>\n * 2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n * 3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n * 8. 通过easyFormProps属性可整体控制子节点FormItem布局\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\n Table: EasyTableTable,\n /**\n * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n /** 设置启用初始化请求 */\n setEnabledInitRequest: (cacheKey: string) => {\n firstQueryCache.set(cacheKey, false);\n },\n});\n"],"names":["filterCache","set","cacheKey","filterCondition","value","get","mergeParams","_extends","sessionStorageCache","_isObject","remove","firstQueryCache","flag","_sessionStorageCache$","columnFoldCache","localStorageCache","_localStorageCache$ge","_isArray","EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperateDropdown","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","onChange","keys","content","_jsx","Fragment","children","Checkbox","Group","defaultValue","style","display","flexDirection","dataList","map","item","label","title","dataIndex","padding","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","EasyTable","forwardRef","ref","_props$initialPaginat","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","useMemo","cacheSwitch","location","pathname","getUuid","cacheParams","_useState5","columnFoldCacheValue","cacheKeyList","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","pageSize","initialPaginationParams","initRequest","undefined","paginationStatusRef","useRef","respOriginalDataRef","baseColumnsRef","_useState6","dynamicColumns","setDynamicColumns","columnsRef","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","_hooks","useCallbackRef","params","Promise","$return","$error","paramsAll","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_1_Post","$boundEx","$Try_1_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_2_Post","$If_3","call","this","bind","$Try_2_Catch","_error","resolve","then","$await_4","serviceConfig","fbaUtils","removeFormValuesInvalidField","$await_5","current","onDataSourceChange","_get","fbaHooks","useEffectCustom","hasPagination","getPaginationStatus","firstQueryFlag","setFieldsValue","initialValues","_extends2","clearQueryCondition","values","resetFields","updateQueryCondition","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","columnFoldTriggerRender","columns","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","hidden","isFold","onChangeFoldColumnList","onChangeTableColumns","getTableColumns","setEnabledInitRequest","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onSetColumns","onFormFinish","isFull","_isUndefined","className","_classNames","filterFixed","paginationFixed","paginationData","useMemoCustom","showSizeChanger","showTotal","pagination","keyList","page","_params","_props$pagination","useUpdateEffect","_onInnerRequest","_onInnerRequest2","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","dynamicColumnsConfig","onChangeShowFoldKeyList","_jsxs","PaginationWrapper","size","EasyTableFilter","screenType","useResponsivePoint","ctx","useContext","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","onReset","validateFields","$await_2","$If_1","formRowChildren","defaultRightList","ButtonWrapper","type","htmlType","text","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","index","find","keyItem","key","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","FoldOperate","rowSelection","render","recrd","Drawer","open","onClose","width","styles","body","Table","bordered","rowKey","scroll","x","useColumnsAppendTips","tempList","tooltip","tipsWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","TipsWrapper","tipType","popoverProps","TableTitleTooltip","useColumnsAppendInnerColumn","columnsNew","finalItem","foldColumnTarget","_props$columnFoldConf2","_props$columnFoldConf3","_props$columnFoldConf4","_props$columnFoldConf5","_props$columnFoldConf6","_props$columnFoldConf7","FlexLayout","direction","fullIndex","alignItems","IconWrapper","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","useColumnsToHidden","includes","useColumnByAsyncColumnRequest","Object","asyncColumnRequestResult","result","loadingPosition","removeGap","asyncRender","record","EasyTableTable","isSync","asyncColumnRequestResultRef","setAsyncColumnRequestResult","_ctx$dynamicColumnsCo","useEffect","_loop","element","_extends3","catch","_extends4","console","columnsOriginal","_onRequest","_onRequest2","tablePaginationData","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/cache.ts","@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate-dropdown.tsx","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/hooks/columns.tsx","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { isArray, isObject } from '@dimjs/lang';\nimport { localStorageCache, sessionStorageCache, TPlainObject } from '@flatbiz/utils';\n\nexport const filterCache = {\n set: (cacheKey: string, filterCondition: TPlainObject) => {\n const value = filterCache.get(cacheKey);\n const mergeParams = {\n ...value,\n ...filterCondition,\n };\n sessionStorageCache.set(`easy_tab_filter_${cacheKey}`, mergeParams);\n return mergeParams as TPlainObject;\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_filter_${cacheKey}`) as TPlainObject;\n return isObject(value) ? value : {};\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_filter_${cacheKey}`);\n },\n};\n\nexport const firstQueryCache = {\n set: (cacheKey: string, flag: boolean) => {\n sessionStorageCache.set(`easy_tab_firstQuery_${cacheKey}`, { value: flag });\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_firstQuery_${cacheKey}`)?.value;\n return value === false ? false : true;\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_firstQuery_${cacheKey}`);\n },\n};\n\nexport const columnFoldCache = {\n set: (cacheKey: string, value: string[]) => {\n localStorageCache.set(`easy_tab_columnFold_${cacheKey}`, { value });\n },\n get: (cacheKey: string) => {\n const value = localStorageCache.get(`easy_tab_columnFold_${cacheKey}`)?.value;\n return isArray(value) ? (value as string[]) : [];\n },\n remove: (cacheKey: string) => {\n localStorageCache.remove(`easy_tab_columnFold_${cacheKey}`);\n },\n};\n","import { noop, type TPlainObject } from '@flatbiz/utils';\nimport { type FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport type EditableFieldContextContextApi = {\n cacheKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableDataSource?: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initialValues?: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n getPaginationStatus: () => boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n onSetBaseColumns: (baseColumns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n onSetColumns: (columns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n columns?: TEasyTableTableColumn<TPlainObject>[];\n dynamicColumnsConfig: {\n showFoldKeyList: string[];\n onChangeShowFoldKeyList: (keys: string[]) => void;\n columnFoldOpen: boolean;\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onCloseColumnFoldModal: () => void;\n asyncColumnRequest?: EasyTableProps['asyncColumnRequest'];\n };\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { Checkbox, Popover } from 'antd';\nimport { Fragment, useState, type CSSProperties, type ReactElement } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex: string; title: string }[];\n onChange: (keys: string[]) => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n children?: ReactElement;\n};\n\nexport const FoldOperateDropdown = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n\n const onChange = (keys) => {\n setSelectedRowKeys(keys);\n props.onChange(keys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, keys);\n }\n };\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { classNames, get } from '@dimjs/utils';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\n\nimport { getUuid, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { PaginationWrapper } from '../pagination-wrapper';\n\nimport { columnFoldCache, filterCache, firstQueryCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport './style.less';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const screenType = fbaHooks.useResponsivePoint();\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const columnFoldConfig = props.columnFoldConfig;\n const asyncColumnRequest = props.asyncColumnRequest;\n\n const [columnFoldOpen, setColumnFoldOpen] = useState(false);\n\n const cacheKey = useMemo(() => {\n if (props.cacheKey) return props.cacheKey;\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return getUuid();\n }, [props.cacheSwitch, props.cacheKey]);\n\n const cacheParams = filterCache.get(cacheKey);\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (cacheKey) {\n const columnFoldCacheValue = columnFoldCache.get(cacheKey);\n const cacheKeyList = isArray(columnFoldCacheValue)\n ? columnFoldCacheValue.filter((item) => isString(item))\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const paginationStatusRef = useRef(false);\n const respOriginalDataRef = useRef<TAny>();\n const baseColumnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n const [dynamicColumns, setDynamicColumns] = useState<TEasyTableTableColumn<TPlainObject>[]>();\n\n const columnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n\n const fieldNames = {\n list: 'list',\n total: 'total',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm(props.form);\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n if (props.breforeRequest) {\n try {\n await props.breforeRequest(form);\n } catch (_error) {\n return;\n }\n }\n firstQueryCache.set(cacheKey, false);\n setLoading(true);\n const paramsAll = filterCache.set(cacheKey, params);\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(paramsAll) : paramsAll;\n const respData = (await onRequest(fbaUtils.removeFormValuesInvalidField(paramsNew))) || {};\n respOriginalDataRef.current = respData;\n props.onDataSourceChange?.(respData);\n let respDataNew: TPlainObject = respData;\n if (requestResultAdapter) {\n respDataNew = requestResultAdapter(respData);\n }\n if (dynamicColumsAdapter) {\n const dynamicColumns = dynamicColumsAdapter(respData, baseColumnsRef.current);\n /** 不要添加默认值 */\n setDynamicColumns(dynamicColumns);\n }\n const respList = get(respDataNew, fieldNames.list);\n setDataSource(isArray(respList) ? respList : []);\n setTotal(get(respDataNew, fieldNames.total));\n setLoading(false);\n } catch (error: any) {\n setLoading(false);\n if (props.onRequestErrorHandle) {\n props.onRequestErrorHandle(error);\n } else {\n void message.error(error.message);\n }\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = getPaginationStatus();\n const firstQueryFlag = firstQueryCache.get(cacheKey);\n form.setFieldsValue({\n ...props.initialValues,\n ...cacheParams,\n });\n if (initRequest || !firstQueryFlag) {\n if (hasPagination) {\n void onInnerRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...props.initialValues,\n ...cacheParams,\n });\n } else {\n void onInnerRequest(props.initialValues);\n }\n } else {\n filterCache.set(cacheKey, props.initialValues || {});\n }\n }, []);\n\n const clearQueryCondition = hooks.useCallbackRef((values?: TPlainObject) => {\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n }\n });\n\n const updateQueryCondition = hooks.useCallbackRef((values: TPlainObject) => {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (getPaginationStatus()) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {\n [fieldNames.pageNo]: undefined,\n [fieldNames.pageSize]: undefined,\n };\n }\n };\n\n const onResetRequest = hooks.useCallbackRef((values?: TPlainObject) => {\n const params = {\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n ...props.initialValues,\n ...values,\n };\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n form.setFieldsValue(values);\n }\n void onInnerRequest(params);\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n return {\n ...cacheParams,\n ...form.getFieldsValue(),\n };\n });\n\n const onOpenColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(true);\n });\n\n const onCloseColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(false);\n });\n\n const getEasyTableRef = (): EasyTableRefApi => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n dataSource: respOriginalDataRef.current,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = dataList;\n props.onDataSourceChange?.(dataList);\n },\n columnFoldTriggerRender: (children, columns: TEasyTableTableColumn<TPlainObject>[]) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n\n const foldColumnList = columns.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as { dataIndex: string; title: string }[]}\n onChange={onChangeFoldColumnList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n {children}\n </FoldOperateDropdown>\n );\n },\n onChangeTableColumns: (columns) => {\n setDynamicColumns(columns);\n },\n getTableColumns: () => {\n return columnsRef.current;\n },\n loading,\n setEnabledInitRequest: () => {\n firstQueryCache.set(cacheKey, false);\n },\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n paginationStatusRef.current = status;\n };\n\n const onSetBaseColumns = (base) => {\n baseColumnsRef.current = base;\n };\n\n const onSetColumns = (columns) => {\n columnsRef.current = columns;\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n if (props.onFormFinish) {\n props.onFormFinish({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const filterFixedFt = screenType === 'xs' ? false : props.filterFixed;\n const className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': filterFixedFt,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = fbaHooks.useMemoCustom(() => {\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, cacheParams, fieldNames.pageSize, cacheKey, pageSize, props.pagination, total]);\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n const params = {\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n };\n filterCache.set(cacheKey, params);\n void onInnerRequest(params);\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n void onInnerRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }, [props.paginationFixed]);\n\n const wrapperClassName = classNames(\n 'fba-easy-table-wrapper',\n {\n 'fba-easy-table-wrapper-inline': props.isInline,\n },\n props.className,\n );\n\n const wrapperStyle: CSSProperties = {\n overflowY: props.filterFixed || props.paginationFixed ? 'hidden' : 'auto',\n ...props.style,\n };\n\n const children =\n typeof props.children === 'function' ? props.children(respOriginalDataRef.current) : props.children;\n\n return (\n <EasyTableContext.Provider\n value={{\n onSetBaseColumns,\n onSetColumns,\n getEasyTableRef,\n cacheKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: dynamicColumns,\n initialValues: props.initialValues,\n dynamicColumnsConfig: {\n showFoldKeyList,\n onChangeShowFoldKeyList: onChangeFoldColumnList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onCloseColumnFoldModal,\n columnFoldOpen,\n asyncColumnRequest,\n },\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n <div className={className}>{children}</div>\n </div>\n )}\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { type FormInstance } from 'antd';\nimport { Children, useContext, useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n /**\n * @deprecated已过期,使用 easyFormProps.className 配置\n */\n formClassName?: string;\n /**\n * @deprecated已过期,使用 easyFormProps.style 配置\n */\n formStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout style */\n filterWrapperStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout className */\n filterWrapperClassName?: string;\n /**\n * 自定义 filterOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n easyFormProps?: Omit<\n EasyFormProps,\n 'isPure' | 'column' | 'forceColumn' | 'width' | 'gridGutter' | 'children'\n >;\n};\n\n/**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTableFilter>\n *\n * 2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n * 3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,默认重启按钮触发请求,默认值:true\n * 8. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const screenType = fbaHooks.useResponsivePoint() || 'md';\n const ctx = useContext(EasyTableContext);\n const {\n queryButtonProps,\n resetButtonProps,\n filterOperate,\n formClassName = '',\n defaultResetButtonTriggerRequest,\n filterWrapperStyle,\n filterWrapperClassName,\n rightOperateAreaAppendType,\n easyFormProps,\n } = props;\n const {\n cacheKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\n\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const [openFold, setOpenFold] = useState(false);\n\n const onReset = hooks.useCallbackRef(async () => {\n filterCache.remove(cacheKey);\n form.resetFields();\n form.setFieldsValue(initialValues);\n if (isUndefined(defaultResetButtonTriggerRequest) || defaultResetButtonTriggerRequest) {\n await form.validateFields();\n if (getPaginationStatus()) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n }\n });\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = filterOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n childrens,\n filterOperate,\n foldKeys,\n form,\n onReset,\n openFold,\n queryButtonProps,\n resetButtonProps,\n rightOperateAreaAppendTypeFt,\n ]);\n\n const labelAlign = screenType === 'xs' ? 'left' : easyFormProps?.labelAlign || 'right';\n\n return (\n <BlockLayout\n className={classNames('easy-table-filter', filterWrapperClassName)}\n style={filterWrapperStyle}\n >\n <EasyForm\n form={form}\n autoComplete=\"off\"\n onFinish={onFormFinish}\n // initialValues={initialValues}\n className={formClassName}\n style={props.formStyle}\n isPure={true}\n labelWidth=\"80\"\n formItemGap=\"15\"\n {...easyFormProps}\n labelAlign={labelAlign}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </EasyForm>\n </BlockLayout>\n );\n};\n","import { useContext } from 'react';\nimport { EasyTableContext } from './context';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useContext(EasyTableContext);\n return ctx.getEasyTableRef();\n};\n\n/**\n * @deprecated 已过时 @4.5.0版本移除,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const ctx = useContext(EasyTableContext);\n return {\n current: ctx.getEasyTableRef(),\n };\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { type ColumnsType } from 'antd/es/table';\nimport { type TableRowSelection } from 'antd/es/table/interface';\nimport { Fragment, useState, type CSSProperties } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex?: string; title: string }[];\n onChange: (keys: string[]) => void;\n open?: boolean;\n onClose?: () => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n};\n\nexport const FoldOperate = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n const rowSelection = {\n type: 'checkbox',\n selectedRowKeys: selectedRowKeys,\n onChange: (selectedRowKeys: string[]) => {\n setSelectedRowKeys(selectedRowKeys);\n props.onChange(selectedRowKeys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, selectedRowKeys);\n }\n },\n } as TableRowSelection<TAny>;\n\n const columns: ColumnsType<TPlainObject> = [\n {\n title: '字段名称',\n dataIndex: 'title',\n render: (value, recrd) => {\n return recrd['_isFoldTitle'] || value;\n },\n },\n { title: '字段Key', dataIndex: 'dataIndex' },\n ];\n\n return (\n <Fragment>\n <Drawer\n title=\"选择字段\"\n open={props.open}\n onClose={props.onClose}\n width={'35%'}\n styles={{\n body: {\n padding: 15,\n },\n }}\n >\n <Table\n bordered\n size=\"small\"\n columns={columns}\n rowSelection={rowSelection}\n rowKey=\"dataIndex\"\n pagination={false}\n scroll={{ x: 'max-content' }}\n dataSource={props.dataList}\n />\n </Drawer>\n </Fragment>\n );\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { useMemo } from 'react';\nimport { ButtonWrapper } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { FlexLayout } from '../../flex-layout';\nimport { IconWrapper } from '../../icon-wrapper';\nimport { SvgHttpView } from '../../svg-http-view';\nimport { TableTitleTooltip } from '../../table-title-tooltip';\nimport { TipsWrapper } from '../../tips-wrapper';\nimport { FoldOperateDropdown } from '../fold-operate-dropdown';\nimport { type EasyTableProps } from '../type';\n\nexport const useColumnsAppendTips = (props: { columns: TPlainObject[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, ...otherProps } = item;\n if (typeof title === 'string' && tipsWrapperProps) {\n if (typeof tipsWrapperProps === 'string') {\n return {\n ...otherProps,\n title: (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n ),\n };\n }\n return {\n ...otherProps,\n title: <TipsWrapper {...tipsWrapperProps}>{title}</TipsWrapper>,\n };\n }\n if (typeof title === 'string' && !!tooltip) {\n return {\n ...otherProps,\n title: <TableTitleTooltip tooltip={tooltip} title={title}></TableTitleTooltip>,\n };\n }\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns]);\n};\n\nexport const useColumnsAppendInnerColumn = (props: {\n columns: TPlainObject[];\n cacheKey: string;\n showFoldKeyList: string[];\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onChangeFoldColumnList: (keyList: string[]) => void;\n foldColumnList: TPlainObject[];\n}) => {\n const columnsNew = props.columns;\n return fbaHooks.useMemoCustom(() => {\n if (props.columnFoldConfig?.hidden) return columnsNew;\n const finalItem = columnsNew[columnsNew.length - 1];\n if (props.foldColumnList.length > 0 && columnsNew.length > 0) {\n const foldColumnTarget = columnsNew.find((item) => item['_isFoldColumn']);\n\n if (foldColumnTarget && finalItem.dataIndex !== foldColumnTarget.dataIndex) {\n foldColumnTarget.title = foldColumnTarget['_isFoldTitle'];\n foldColumnTarget['_isFoldColumn'] = false;\n }\n if (!finalItem['_isFoldColumn']) {\n finalItem['_isFoldTitle'] = finalItem['_isFoldTitle'] || finalItem.title;\n finalItem['_isFoldColumn'] = true;\n\n const triggerType = props.columnFoldConfig?.triggerType;\n\n finalItem.title = (\n <FlexLayout direction=\"horizontal\" fullIndex={0} style={{ alignItems: 'center' }}>\n <span>{finalItem.title}</span>\n <div style={{ padding: '0 5px 0 20px', display: 'flex' }}>\n {triggerType === 'drawer' ? (\n <IconWrapper\n onClick={props.onOpenColumnFoldModal}\n text={props.columnFoldConfig?.text}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n hoverTips={props.columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={props.foldColumnList as TAny[]}\n onChange={props.onChangeFoldColumnList}\n cacheKey={props.cacheKey}\n initSelectedRowKeys={props.showFoldKeyList}\n >\n <IconWrapper\n text={props.columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return columnsNew;\n }, [props.columns, props.columnFoldConfig]);\n};\n\nexport const useColumnsToHidden = (props: { columns: TPlainObject[]; showFoldKeyList: string[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { hidden, isFold } = item;\n if (hidden) return null;\n if (isFold && !props.showFoldKeyList.includes(item.dataIndex as string)) return null;\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns, props.showFoldKeyList]);\n};\n\nexport const useColumnByAsyncColumnRequest = (props: {\n columns: TPlainObject[];\n asyncColumnRequestResult: TPlainObject;\n}) => {\n return useMemo(() => {\n if (!Object.keys(props.asyncColumnRequestResult)) return props.columns;\n return props.columns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = props.asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [props.columns, props.asyncColumnRequestResult]);\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Table, type TableProps } from 'antd';\nimport {\n Fragment,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n} from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport {\n useColumnByAsyncColumnRequest,\n useColumnsAppendInnerColumn,\n useColumnsAppendTips,\n useColumnsToHidden,\n} from './hooks/columns';\nimport { type TEasyTableTableColumn } from './type';\n\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns'\n> & {\n children?: ReactElement | ReactElement[];\n /**\n * 表格行 key 的取值,\n * ```\n * 如果 rowKey 为string类型\n * 1. 组件会判断表格列表数据第一条是否存在当前rowKey对象的数据,如果没有组件内部会动态添加唯一值\n * 2. 基于上一条的逻辑,如果表格数据没有唯一值,可指定 rowKey 值为table数据中不存在的字段名,例如:rowKey=\"_uid\"\n * 3. 如果触发上述逻辑,表格数据中会多出rowKey对应的键值对数据\n * ```\n */\n rowKey: TableProps<TAny>['rowKey'];\n /** table Form 外层 SimpleLayout className */\n tableWrapperStyle?: CSSProperties;\n /** table Form 外层 SimpleLayout className */\n tableWrapperClassName?: string;\n /**\n * ```\n * 1. 当配置了 EasyTable.serviceConfig.dynamicColumsAdapter 后,columns配置只在初始化有效,再次修改无效\n * 2. 可通过 EasyTableRef.onChangeTableColumns 实现 columns 的指定修改\n * ```\n */\n columns: TEasyTableTableColumn<T>[];\n /**\n * 数据加载与表格初始化渲染 是否同步\n * @version 4.4.6\n * ```\n * 1. true:获取数据后再初始化渲染表格(可用于实现表格中defaultXxxx相关功能的使用)\n * ```\n */\n isSync?: boolean;\n /**\n * 空效果显示尺寸,默认值:small\n * @version 4.4.6\n */\n emptyShowSize?: 'small' | 'large';\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\nexport const EasyTableTable = <T extends TPlainObject>(props: EasyTableTableProps<T>) => {\n const ctx = useContext(EasyTableContext);\n const { children, rowKey, pagination, isSync, ...otherProps } = props;\n\n const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n\n const {\n columnFoldConfig,\n onCloseColumnFoldModal,\n columnFoldOpen,\n onOpenColumnFoldModal,\n asyncColumnRequest,\n showFoldKeyList,\n onChangeShowFoldKeyList,\n } = ctx.dynamicColumnsConfig;\n\n const {\n cacheKey,\n fieldNames,\n onRequest,\n tableDataSource,\n pageSize,\n tableTotal,\n loading,\n paginationFixed,\n onSetPaginationStatus,\n } = ctx;\n\n const cacheParams = filterCache.get(cacheKey);\n\n fbaHooks.useEffectCustom(() => {\n /** 获取初始化 columns 数据 */\n ctx.onSetBaseColumns((props.columns || []) as TEasyTableTableColumn<TPlainObject>[]);\n }, []);\n\n useEffect(() => {\n if (asyncColumnRequest?.length) {\n for (let index = 0; index < asyncColumnRequest.length; index++) {\n const element = asyncColumnRequest[index];\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: true },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n element\n .onRequest()\n .then((respData) => {\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false, respData },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n })\n .catch((error) => {\n console.error(error?.message);\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n });\n }\n }\n }, [asyncColumnRequest]);\n\n const columnsOriginal = fbaHooks.useMemoCustom(() => {\n if (ctx.columns) {\n ctx.onSetColumns(ctx.columns);\n return ctx.columns as TEasyTableTableColumn<T>[];\n } else {\n ctx.onSetColumns(props.columns as TEasyTableTableColumn<TPlainObject>[]);\n return props.columns;\n }\n }, [ctx.columns, props.columns]);\n\n let columnsNew = useColumnsAppendTips({\n columns: [...columnsOriginal],\n });\n\n const foldColumnList = columnsOriginal.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n columnsNew = useColumnsAppendInnerColumn({\n cacheKey,\n columns: columnsNew,\n foldColumnList,\n showFoldKeyList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onChangeFoldColumnList: onChangeShowFoldKeyList,\n });\n\n columnsNew = useColumnsToHidden({\n columns: columnsNew,\n showFoldKeyList,\n });\n\n columnsNew = useColumnByAsyncColumnRequest({\n columns: columnsNew,\n asyncColumnRequestResult,\n });\n\n fbaHooks.useEffectCustom(() => {\n onSetPaginationStatus(pagination !== false);\n }, [pagination]);\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (!paginationFixed) {\n if (pagination !== false) {\n onRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n onRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }\n }, [pagination]);\n\n const tablePaginationData = useMemo(() => {\n if (paginationFixed || pagination === false) return false;\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n // selectComponentClass: SmallSelect,\n };\n }, [\n cacheParams,\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (pagination, filters, sorter, extra) => {\n if (extra.action === 'paginate' && tablePaginationData) {\n onRequest({\n [fieldNames.pageSize]: pagination.pageSize,\n [fieldNames.pageNo]: pagination.current,\n });\n } else {\n props.onChange?.(pagination, filters, sorter, extra);\n }\n };\n\n const dataSource = useMemo(() => {\n if (!tableDataSource) return undefined;\n if (tableDataSource.length === 0) {\n return [];\n }\n if (typeof rowKey === 'string' && isUndefinedOrNull(tableDataSource[0][rowKey])) {\n return tableDataSource.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableDataSource;\n }, [tableDataSource, rowKey]);\n\n columnsNew = useMemo(() => {\n return columnsNew.map((item) => {\n if (!!item.defaultValue && !item.render) {\n item.render = (value) => {\n return isUndefinedOrNull(value) || value == '' ? item.defaultValue : value;\n };\n }\n return item;\n });\n }, [columnsNew]);\n\n const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"1\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n rowKey={rowKey as TAny}\n columns={columnsNew}\n loading={loading}\n />\n </Fragment>\n );\n }\n if (isMacEnv()) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"2\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </Fragment>\n );\n }\n return (\n <Fragment>\n {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeShowFoldKeyList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { firstQueryCache } from './cache';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n *\n * 1. 废弃modelKey参数\n * 2. 如果需要在路由跳转回退中缓存查询条件,设置cacheSwitch=true;如果存在多个EasyTable缓存情况可设置cacheSwitch为自定义字符串\n * 3. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 4. 可通过属性 initRequest 设置初始化是否请求数据\n * 5. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 6. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 7. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 8. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 9. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 10. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提高windows下table左右滚动体验\n * 11. 可实现部分字段折叠,手动选择显示,将EasyTable.Table columns中isFold属性设为true,可通过EasyTable columnFoldConfig配置属性,demo(https://fex.qa.tcshuke.com/docs/admin/main/crud/demo1)\n * 12. 通过asyncColumnRequest、asyncRender配合使用可实现表格列数据接口渲染(demo:https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table)\n * ```\n */\nexport const EasyTable = fbaUtils.attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTable.Filter>\n * 2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n * 3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n * 8. 通过easyFormProps属性可整体控制子节点FormItem布局\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\n Table: EasyTableTable,\n /**\n * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n /** 设置启用初始化请求 */\n setEnabledInitRequest: (cacheKey: string) => {\n firstQueryCache.set(cacheKey, false);\n },\n});\n"],"names":["filterCache","set","cacheKey","filterCondition","value","get","mergeParams","_extends","sessionStorageCache","_isObject","remove","firstQueryCache","flag","_sessionStorageCache$","columnFoldCache","localStorageCache","_localStorageCache$ge","_isArray","EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperateDropdown","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","onChange","keys","content","_jsx","Fragment","children","Checkbox","Group","defaultValue","style","display","flexDirection","dataList","map","item","label","title","dataIndex","padding","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","EasyTable","forwardRef","ref","_props$initialPaginat","screenType","fbaHooks","useResponsivePoint","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","useMemo","cacheSwitch","location","pathname","getUuid","cacheParams","_useState5","columnFoldCacheValue","cacheKeyList","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","pageSize","initialPaginationParams","initRequest","undefined","paginationStatusRef","useRef","respOriginalDataRef","baseColumnsRef","_useState6","dynamicColumns","setDynamicColumns","columnsRef","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","_hooks","useCallbackRef","params","Promise","$return","$error","paramsAll","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_1_Post","$boundEx","$Try_1_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_2_Post","$If_3","call","this","bind","$Try_2_Catch","_error","resolve","then","$await_4","serviceConfig","fbaUtils","removeFormValuesInvalidField","$await_5","current","onDataSourceChange","_get","useEffectCustom","hasPagination","getPaginationStatus","firstQueryFlag","setFieldsValue","initialValues","_extends2","clearQueryCondition","values","resetFields","updateQueryCondition","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","columnFoldTriggerRender","columns","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","hidden","isFold","onChangeFoldColumnList","onChangeTableColumns","getTableColumns","setEnabledInitRequest","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onSetColumns","onFormFinish","isFull","_isUndefined","filterFixedFt","filterFixed","className","_classNames","paginationFixed","paginationData","useMemoCustom","showSizeChanger","showTotal","pagination","keyList","page","_params","_props$pagination","useUpdateEffect","_onInnerRequest","_onInnerRequest2","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","dynamicColumnsConfig","onChangeShowFoldKeyList","_jsxs","PaginationWrapper","size","EasyTableFilter","ctx","useContext","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","onReset","validateFields","$await_2","$If_1","formRowChildren","defaultRightList","ButtonWrapper","type","htmlType","text","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","index","find","keyItem","key","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","FoldOperate","rowSelection","render","recrd","Drawer","open","onClose","width","styles","body","Table","bordered","rowKey","scroll","x","useColumnsAppendTips","tempList","tooltip","tipsWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","TipsWrapper","tipType","popoverProps","TableTitleTooltip","useColumnsAppendInnerColumn","columnsNew","finalItem","foldColumnTarget","_props$columnFoldConf2","_props$columnFoldConf3","_props$columnFoldConf4","_props$columnFoldConf5","_props$columnFoldConf6","_props$columnFoldConf7","FlexLayout","direction","fullIndex","alignItems","IconWrapper","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","useColumnsToHidden","includes","useColumnByAsyncColumnRequest","Object","asyncColumnRequestResult","result","loadingPosition","removeGap","asyncRender","record","EasyTableTable","isSync","asyncColumnRequestResultRef","setAsyncColumnRequestResult","_ctx$dynamicColumnsCo","useEffect","_loop","element","_extends3","catch","_extends4","console","columnsOriginal","_onRequest","_onRequest2","tablePaginationData","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
@@ -1 +1 @@
1
- .label-value-render .label-value-label{color:#8e8e8e;font-weight:400}.label-value-render .label-value-value{overflow:hidden}.label-value-render .text-symbol-wrapper{display:inline-block;max-width:100%}.label-value-render .tips-wrapper{max-width:100%}.label-value-render .tips-wrapper .tips-wrapper-text{flex:initial}.label-value-render.lvr-border .label-value-value{border-radius:0}.label-value-render:not(.lvr-hidden-hover) .label-value-value:hover{background-color:rgba(0,0,0,.04);border-radius:5px}.lvr-label-left .label-value-label{text-align:left}.lvr-label-center .label-value-label{text-align:center}.lvr-label-right .label-value-label{text-align:right}.lvr-horizontal .label-value-tr{display:flex}.lvr-horizontal .label-value-label{flex-shrink:0;width:var(--lvr-label-width)}.lvr-horizontal .label-value-value{flex:1;padding-left:5px}.lvr-horizontal.lvr-size-default:not(.lvr-border) .label-value-label,.lvr-horizontal.lvr-size-default:not(.lvr-border) .label-value-value{padding:8px}.lvr-horizontal.lvr-size-small:not(.lvr-border){font-size:12px}.lvr-horizontal.lvr-size-small:not(.lvr-border) .label-value-label,.lvr-horizontal.lvr-size-small:not(.lvr-border) .label-value-value{padding:5px}.lvr-horizontal.lvr-border .box-grad-row{border-bottom:1px solid rgba(5,5,5,.06);border-left:1px solid rgba(5,5,5,.06);border-radius:6px;border-top:1px solid rgba(5,5,5,.06);overflow:hidden}.lvr-horizontal.lvr-border .box-grad-col:not(.label-value-last-tr){border-bottom:1px solid rgba(5,5,5,.06)}.lvr-horizontal.lvr-border .label-value-label{align-items:center;background-color:rgba(0,0,0,.03);display:flex;font-weight:400}.lvr-horizontal.lvr-border .label-value-value{align-items:center;border-left:1px solid rgba(5,5,5,.06);border-right:1px solid rgba(5,5,5,.06);display:flex;margin-left:0}.lvr-horizontal.lvr-border.lvr-size-default .label-value-label,.lvr-horizontal.lvr-border.lvr-size-default .label-value-value{padding:8px 10px}.lvr-horizontal.lvr-border.lvr-size-small{font-size:12px}.lvr-horizontal.lvr-border.lvr-size-small .label-value-label,.lvr-horizontal.lvr-border.lvr-size-small .label-value-value{padding:5px 10px}.lvr-vertical .label-value-tr{display:flex;flex-direction:column}.lvr-vertical .label-value-value{flex:1;padding-left:5px}.lvr-vertical.lvr-size-default:not(.lvr-border) .label-value-label,.lvr-vertical.lvr-size-default:not(.lvr-border) .label-value-value{padding:5px}.lvr-vertical.lvr-size-small:not(.lvr-border){font-size:12px}.lvr-vertical.lvr-size-small:not(.lvr-border) .label-value-label,.lvr-vertical.lvr-size-small:not(.lvr-border) .label-value-value{padding:3px}.lvr-vertical.lvr-border .box-grad-row{border-bottom:1px solid rgba(5,5,5,.06);border-left:1px solid rgba(5,5,5,.06);border-radius:6px;border-top:1px solid rgba(5,5,5,.06);overflow:hidden}.lvr-vertical.lvr-border .label-value-tr{border-right:1px solid rgba(5,5,5,.06)}.lvr-vertical.lvr-border .box-grad-col:not(.label-value-last-tr){border-bottom:1px solid rgba(5,5,5,.06)}.lvr-vertical.lvr-border .label-value-label{align-items:center;background-color:rgba(0,0,0,.02);border-bottom:1px solid rgba(5,5,5,.06);display:flex;font-weight:400}.lvr-vertical.lvr-border .label-value-value{align-items:center;display:flex}.lvr-vertical.lvr-border.lvr-size-default .label-value-label,.lvr-vertical.lvr-border.lvr-size-default .label-value-value{padding:8px 10px}.lvr-vertical.lvr-border.lvr-size-small{font-size:12px}.lvr-vertical.lvr-border.lvr-size-small .label-value-label,.lvr-vertical.lvr-border.lvr-size-small .label-value-value{padding:5px 10px}.dark-theme .label-value-render.lvr-border .label-value-label{background-color:#232323}.dark-theme .label-value-render .label-value-value:hover{background-color:#191919}.dark-theme .lvr-vertical.lvr-border .box-grad-row{border-bottom:1px solid #2e2e2e;border-left:1px solid #2e2e2e;border-top:1px solid #2e2e2e}.dark-theme .lvr-vertical.lvr-border .label-value-tr{border-right:1px solid #2e2e2e}.dark-theme .lvr-vertical.lvr-border .box-grad-col:not(.label-value-last-tr),.dark-theme .lvr-vertical.lvr-border .label-value-label{border-bottom:1px solid #2e2e2e}.dark-theme .lvr-horizontal.lvr-border .box-grad-row{border-bottom:1px solid #2e2e2e;border-left:1px solid #2e2e2e;border-top:1px solid #2e2e2e}.dark-theme .lvr-horizontal.lvr-border .box-grad-col:not(.label-value-last-tr){border-bottom:1px solid #2e2e2e}.dark-theme .lvr-horizontal.lvr-border .label-value-value{border-left:1px solid #2e2e2e;border-right:1px solid #2e2e2e}
1
+ .label-value-render .label-value-label{color:#8e8e8e;font-weight:400}.label-value-render .label-value-value{overflow:hidden}.label-value-render .text-symbol-wrapper{display:inline-block;max-width:100%}.label-value-render .tips-wrapper{max-width:100%}.label-value-render .tips-wrapper .tips-wrapper-text{flex:initial}.label-value-render.lvr-border .label-value-value{border-radius:0}.label-value-render:not(.lvr-hidden-hover) .label-value-value:hover{background-color:rgba(0,0,0,.04)}.lvr-label-left .label-value-label{text-align:left}.lvr-label-center .label-value-label{text-align:center}.lvr-label-right .label-value-label{text-align:right}.lvr-horizontal .label-value-tr{display:flex}.lvr-horizontal .label-value-label{flex-shrink:0;width:var(--lvr-label-width)}.lvr-horizontal .label-value-value{flex:1;padding-left:5px}.lvr-horizontal.lvr-size-default:not(.lvr-border) .label-value-label,.lvr-horizontal.lvr-size-default:not(.lvr-border) .label-value-value{padding:8px}.lvr-horizontal.lvr-size-small:not(.lvr-border){font-size:12px}.lvr-horizontal.lvr-size-small:not(.lvr-border) .label-value-label,.lvr-horizontal.lvr-size-small:not(.lvr-border) .label-value-value{padding:5px}.lvr-horizontal.lvr-border .box-grad-row{border-bottom:1px solid rgba(5,5,5,.06);border-left:1px solid rgba(5,5,5,.06);border-radius:6px;border-top:1px solid rgba(5,5,5,.06);overflow:hidden}.lvr-horizontal.lvr-border .box-grad-col:not(.label-value-last-tr){border-bottom:1px solid rgba(5,5,5,.06)}.lvr-horizontal.lvr-border .label-value-label{align-items:center;background-color:rgba(0,0,0,.03);display:flex;font-weight:400}.lvr-horizontal.lvr-border .label-value-value{align-items:center;border-left:1px solid rgba(5,5,5,.06);border-right:1px solid rgba(5,5,5,.06);display:flex;margin-left:0}.lvr-horizontal.lvr-border.lvr-size-default .label-value-label,.lvr-horizontal.lvr-border.lvr-size-default .label-value-value{padding:8px 10px}.lvr-horizontal.lvr-border.lvr-size-small{font-size:12px}.lvr-horizontal.lvr-border.lvr-size-small .label-value-label,.lvr-horizontal.lvr-border.lvr-size-small .label-value-value{padding:5px 10px}.lvr-vertical .label-value-tr{display:flex;flex-direction:column}.lvr-vertical .label-value-value{flex:1;padding-left:5px}.lvr-vertical.lvr-size-default:not(.lvr-border) .label-value-label,.lvr-vertical.lvr-size-default:not(.lvr-border) .label-value-value{padding:5px}.lvr-vertical.lvr-size-small:not(.lvr-border){font-size:12px}.lvr-vertical.lvr-size-small:not(.lvr-border) .label-value-label,.lvr-vertical.lvr-size-small:not(.lvr-border) .label-value-value{padding:3px}.lvr-vertical.lvr-border .box-grad-row{border-bottom:1px solid rgba(5,5,5,.06);border-left:1px solid rgba(5,5,5,.06);border-radius:6px;border-top:1px solid rgba(5,5,5,.06);overflow:hidden}.lvr-vertical.lvr-border .label-value-tr{border-right:1px solid rgba(5,5,5,.06)}.lvr-vertical.lvr-border .box-grad-col:not(.label-value-last-tr){border-bottom:1px solid rgba(5,5,5,.06)}.lvr-vertical.lvr-border .label-value-label{align-items:center;background-color:rgba(0,0,0,.02);border-bottom:1px solid rgba(5,5,5,.06);display:flex;font-weight:400}.lvr-vertical.lvr-border .label-value-value{align-items:center;display:flex}.lvr-vertical.lvr-border.lvr-size-default .label-value-label,.lvr-vertical.lvr-border.lvr-size-default .label-value-value{padding:8px 10px}.lvr-vertical.lvr-border.lvr-size-small{font-size:12px}.lvr-vertical.lvr-border.lvr-size-small .label-value-label,.lvr-vertical.lvr-border.lvr-size-small .label-value-value{padding:5px 10px}.dark-theme .label-value-render.lvr-border .label-value-label{background-color:#232323}.dark-theme .label-value-render .label-value-value:hover{background-color:#191919}.dark-theme .lvr-vertical.lvr-border .box-grad-row{border-bottom:1px solid #2e2e2e;border-left:1px solid #2e2e2e;border-top:1px solid #2e2e2e}.dark-theme .lvr-vertical.lvr-border .label-value-tr{border-right:1px solid #2e2e2e}.dark-theme .lvr-vertical.lvr-border .box-grad-col:not(.label-value-last-tr),.dark-theme .lvr-vertical.lvr-border .label-value-label{border-bottom:1px solid #2e2e2e}.dark-theme .lvr-horizontal.lvr-border .box-grad-row{border-bottom:1px solid #2e2e2e;border-left:1px solid #2e2e2e;border-top:1px solid #2e2e2e}.dark-theme .lvr-horizontal.lvr-border .box-grad-col:not(.label-value-last-tr){border-bottom:1px solid #2e2e2e}.dark-theme .lvr-horizontal.lvr-border .label-value-value{border-left:1px solid #2e2e2e;border-right:1px solid #2e2e2e}
@@ -1 +1 @@
1
- .local-loading-error{align-items:center;display:flex;height:100%;justify-content:center;position:relative}.local-loading-error .ant-result-icon{margin-bottom:10px!important}.local-loading-error .ant-result-icon .anticon{font-size:30px!important}.local-loading-error .ant-result-title{font-size:16px!important}.local-loading-error .ant-result-extra{margin-top:10px!important}.local-loading-error .ant-result-error{padding:24px 16px!important}.local-loading-area{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:9}.fba-local-loading{overflow:hidden;position:relative}.local-loading-content{height:100%;overflow-y:auto}.local-loading-spin,.local-loading-spin-wrapper{align-items:center;background-color:var(--local-loading-spin-bgColor);border-radius:5px;display:flex;height:100%;justify-content:center;position:absolute;width:100%}
1
+ .local-loading-error{align-items:center;display:flex;height:100%;justify-content:center;position:relative}.local-loading-error .ant-result-icon{margin-bottom:10px!important}.local-loading-error .ant-result-icon .anticon{font-size:30px!important}.local-loading-error .ant-result-title{font-size:16px!important}.local-loading-error .ant-result-extra{margin-top:10px!important}.local-loading-error .ant-result-error{padding:24px 16px!important}.local-loading-area{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:9}.fba-local-loading{position:relative}.local-loading-spin,.local-loading-spin-wrapper{align-items:center;background-color:var(--local-loading-spin-bgColor);border-radius:5px;display:flex;height:100%;justify-content:center;position:absolute;width:100%}.local-loading-content{height:100%}.fll-content-scroll{height:100%;overflow:hidden}.fll-content-scroll .local-loading-content{overflow-y:auto}
@@ -3,5 +3,5 @@ import './../fba-utils/index.css';
3
3
  import './../fba-hooks/index.css';
4
4
  import './index.css';
5
5
  /*! @flatjs/forge MIT @flatbiz/antd */
6
- import{fbaUtils as r}from"../fba-utils/index.js";import{createCtx as e}from"@wove/react/cjs/create-ctx";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{isDeepEqual as a}from"@dimjs/lang/cjs/is-deep-equal";import{hooks as i}from"@wove/react/cjs/hooks";import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{getValueOrDefault as o,toArray as s,isUndefinedOrNull as l}from"@flatbiz/utils";import{Result as c,Button as u,Spin as m}from"antd";import{forwardRef as d,useState as f,useRef as p,useMemo as v,useImperativeHandle as g,Fragment as h}from"react";import{fbaHooks as y}from"../fba-hooks/index.js";import{jsx as b,jsxs as j}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";var N=e(),C=N[0],P=N[1];var q=d((function(r,e){var d=r.serviceConfig,N=r.isAsync,C=r.children,q=r.errorRender,R=r.loadingSpinProps,w=r.textConfigs,x=r.showRequiredError;var k=f("init"),E=k[0],L=k[1];var T=f(),H=T[0],K=T[1];var z=r.loadingHeight===undefined?100:r.loadingHeight;var A=f(false),S=A[0],_=A[1];var B=p();var D=p(true);var F=y.usePrevious(d.params);var G=o(R==null?void 0:R.content,b("span",{}));var I=o(R==null?void 0:R.bgColor,"rgba(0,0,0,0.01)");var J=o(R==null?void 0:R.tip,"Loading");var M=w==null?void 0:w.requiredErrorText;var O=v((function(){var r;if(!d.params||s(d.invalidParamKey).length===0){return d.params}var e=t({},d.params);(r=d.invalidParamKey)==null?void 0:r.forEach((function(r){e[r]=undefined}));return e}),[d]);var Q=i.useCallbackRef((function(r){var e=d==null?void 0:d.requiredParamsKeys;if(e!=null&&e.length){var n=e.find((function(e){return l(r==null?void 0:r[e])}));if(n){return{complete:false,message:M||"LocalLoading渲染缺少必填参数:"+e.join("、")}}}return{complete:true}}));var U=v((function(){return Q(d.params)}),[Q,d.params]);var V=function r(e){return new Promise((function(r,n){var a=function(r){return function(e){try{_(false);return r&&r.call(this,e)}catch(r){return n(r)}}.bind(this)}.bind(this);var i,o;var s=function(){try{return r()}catch(r){return n(r)}};var l=function(r){try{console.error(r);L("error");B.current=r.message;D.current=false;return a(s)()}catch(r){return a(n)(r)}};try{i=t({},O,e);_(true);return Promise.resolve(d.onRequest(i)).then((function(r){try{o=r;L("success");K(o);D.current=false;return a(s)()}catch(r){return l(r)}}),l)}catch(r){l(r)}}))};y.useEffectCustomAsync((function(){return new Promise((function(r,e){if(U.complete){return Promise.resolve(V()).then(function(r){try{return n.call(this)}catch(r){return e(r)}}.bind(this),e)}function n(){return r()}return n.call(this)}))}),[]);y.useEffectCustom((function(){if(U.complete){if(F){if(!a(d.params,F)){if(E==="error"){L("init")}void V()}}}}),[F,d.params]);g(e,(function(){return{onRefresh:V}}));if(!U.complete){if(D.current||!x){return b(h,{})}return b(P,{value:{onRequest:V},children:j("div",{className:n("local-loading-error",r.className),children:[b("div",{className:"local-loading-area"}),b(c,{status:"error",subTitle:U.message})]})})}if(E==="error"){if(q){return q({message:B.current})}return b(P,{value:{onRequest:V},children:j("div",{className:n("local-loading-error",r.className),children:[b("div",{className:"local-loading-area"}),b(c,{status:"error",subTitle:B.current||"数据处理异常",extra:[b(u,{type:"primary",ghost:true,size:"small",onClick:function r(){L("init");void V()},children:"重新获取"},"console")]})]})})}if(E!=="success"&&!N){return b("div",{className:n("fba-local-loading-process",r.className),style:{height:z,display:"flex",justifyContent:"center",position:"relative",backgroundColor:"var(--block-bg-color)"},children:b(m,{spinning:S,tip:J,wrapperClassName:"local-loading-spin-wrapper",className:"local-loading-spin",style:{"--local-loading-spin-bgColor":I},children:G})})}return b(P,{value:{onRequest:V},children:j("div",{className:n("fba-local-loading",r.className),style:r.style,children:[S?b(m,{spinning:S,tip:J,wrapperClassName:"local-loading-spin-wrapper",className:"local-loading-spin",style:{"--local-loading-spin-bgColor":I},children:G}):null,b("div",{className:"local-loading-content",style:r.contentStyle,children:C(H)})]})})}));var R=r.attachPropertiesToComponent(q,{useLocalLoading:function r(){var e=C();return{onRequest:function r(n){e.onRequest(n)}}}});export{R as LocalLoading};
6
+ import{fbaUtils as r}from"../fba-utils/index.js";import{createCtx as e}from"@wove/react/cjs/create-ctx";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{isDeepEqual as a}from"@dimjs/lang/cjs/is-deep-equal";import{hooks as t}from"@wove/react/cjs/hooks";import{_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{getValueOrDefault as o,toArray as l,isUndefinedOrNull as s}from"@flatbiz/utils";import{Result as c,Button as u,Spin as m}from"antd";import{forwardRef as d,useState as f,useRef as p,useMemo as v,useImperativeHandle as g,Fragment as h}from"react";import{fbaHooks as y}from"../fba-hooks/index.js";import{jsx as b,jsxs as j}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";var N=e(),C=N[0],P=N[1];var q=d((function(r,e){var d=r.serviceConfig,N=r.isAsync,C=r.children,q=r.errorRender,R=r.loadingSpinProps,w=r.textConfigs,x=r.showRequiredError,k=r.contentScroll,E=r.contentStyle,L=r.height;var T=f("init"),H=T[0],K=T[1];var S=f(),z=S[0],A=S[1];var _=r.loadingHeight===undefined?100:r.loadingHeight;var B=f(false),D=B[0],F=B[1];var G=p();var I=p(true);var J=y.usePrevious(d.params);var M=o(R==null?void 0:R.content,b("span",{}));var O=o(R==null?void 0:R.bgColor,"rgba(0,0,0,0.01)");var Q=o(R==null?void 0:R.tip,"Loading");var U=w==null?void 0:w.requiredErrorText;var V=v((function(){var r;if(!d.params||l(d.invalidParamKey).length===0){return d.params}var e=i({},d.params);(r=d.invalidParamKey)==null?void 0:r.forEach((function(r){e[r]=undefined}));return e}),[d]);var W=t.useCallbackRef((function(r){var e=d==null?void 0:d.requiredParamsKeys;if(e!=null&&e.length){var n=e.find((function(e){return s(r==null?void 0:r[e])}));if(n){return{complete:false,message:U||"LocalLoading渲染缺少必填参数:"+e.join("、")}}}return{complete:true}}));var X=v((function(){return W(d.params)}),[W,d.params]);var Y=function r(e){return new Promise((function(r,n){var a=function(r){return function(e){try{F(false);return r&&r.call(this,e)}catch(r){return n(r)}}.bind(this)}.bind(this);var t,o;var l=function(){try{return r()}catch(r){return n(r)}};var s=function(r){try{console.error(r);K("error");G.current=r.message;I.current=false;return a(l)()}catch(r){return a(n)(r)}};try{t=i({},V,e);F(true);return Promise.resolve(d.onRequest(t)).then((function(r){try{o=r;K("success");A(o);I.current=false;return a(l)()}catch(r){return s(r)}}),s)}catch(r){s(r)}}))};y.useEffectCustomAsync((function(){return new Promise((function(r,e){if(X.complete){return Promise.resolve(Y()).then(function(r){try{return n.call(this)}catch(r){return e(r)}}.bind(this),e)}function n(){return r()}return n.call(this)}))}),[]);y.useEffectCustom((function(){if(X.complete){if(J){if(!a(d.params,J)){if(H==="error"){K("init")}void Y()}}}}),[J,d.params]);g(e,(function(){return{onRefresh:Y}}));if(!X.complete){if(I.current||!x){return b(h,{})}return b(P,{value:{onRequest:Y},children:j("div",{className:n("local-loading-error",r.className),children:[b("div",{className:"local-loading-area"}),b(c,{status:"error",subTitle:X.message})]})})}if(H==="error"){if(q){return q({message:G.current})}return b(P,{value:{onRequest:Y},children:j("div",{className:n("local-loading-error",r.className),children:[b("div",{className:"local-loading-area"}),b(c,{status:"error",subTitle:G.current||"数据处理异常",extra:[b(u,{type:"primary",ghost:true,size:"small",onClick:function r(){K("init");void Y()},children:"重新获取"},"console")]})]})})}if(H!=="success"&&!N){return b("div",{className:n("fba-local-loading-process",r.className),style:{height:_,display:"flex",justifyContent:"center",position:"relative",backgroundColor:"var(--block-bg-color)"},children:b(m,{spinning:D,tip:Q,wrapperClassName:"local-loading-spin-wrapper",className:"local-loading-spin",style:{"--local-loading-spin-bgColor":O},children:M})})}var Z=n("fba-local-loading",{"fll-content-scroll":k},r.className);var $=i({height:L},r.style);return b(P,{value:{onRequest:Y},children:j("div",{className:Z,style:$,children:[D?b(m,{spinning:D,tip:Q,wrapperClassName:"local-loading-spin-wrapper",className:"local-loading-spin",style:{"--local-loading-spin-bgColor":O},children:M}):null,b("div",{className:"local-loading-content",style:E,children:C(z)})]})})}));var R=r.attachPropertiesToComponent(q,{useLocalLoading:function r(){var e=C();return{onRequest:function r(n){e.onRequest(n)}}}});export{R as LocalLoading};
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/local-loading/context.ts","@flatbiz/antd/src/local-loading/local-loading.tsx","@flatbiz/antd/src/local-loading/index.ts"],"sourcesContent":["import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\n\nexport const [useLocalLoadingCtx, LocalLoadingCtxProvider] = createCtx<{\n onRequest: (params?: TPlainObject) => void;\n}>();\n","import { isDeepEqual } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { getValueOrDefault, isUndefinedOrNull, TAny, toArray, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Result, Spin } from 'antd';\nimport {\n CSSProperties,\n forwardRef,\n Fragment,\n ReactElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { LocalLoadingCtxProvider } from './context';\nimport './style.less';\n\nexport type LocalLoadingServiceConfig = {\n onRequest: (params?: TAny) => Promise<TAny>;\n params?: TPlainObject;\n /** 标记serviceConfig.params中无效参数,被设置的params key 不传入服务接口入参 */\n invalidParamKey?: string[];\n /** 必填字段设置 */\n requiredParamsKeys?: string[];\n};\n\nexport interface LocalLoadingProps {\n className?: string;\n style?: CSSProperties;\n contentStyle?: CSSProperties;\n /** 接口数据配置 */\n serviceConfig: LocalLoadingServiceConfig;\n /** children 为函数,参数【respData】为接口返回数据 */\n children: (respData?: TAny) => ReactElement;\n /**\n * 是否异步,默认:false\n * ```\n * true(异步):onRequest、react dom渲染同步执行\n * false(同步):onRequest有结果了才渲染 react dom\n * ```\n */\n isAsync?: boolean;\n /** loading高度,默认值:100;isAsync = true 无效 */\n loadingHeight?: number | string;\n /** loading spin 属性设置 */\n loadingSpinProps?: {\n /** loading tip,默认值:Loading */\n tip?: string;\n /** loading 内容 */\n content?: ReactElement;\n /** 背景色,默认值:rgba(0,0,0,0.01) */\n bgColor?: string;\n };\n textConfigs?: {\n /** 必填异常文本 */\n requiredErrorText?: string;\n };\n /** 是否显示必填异常 */\n showRequiredError?: boolean;\n /** 自定义异常渲染处理 */\n errorRender?: (error?: TAny) => ReactElement;\n}\n\nexport type LocalLoadingRefApi = {\n onRefresh: (params?: TPlainObject) => void;\n};\n\n/**\n * 局部加载,包含接口数据处理逻辑\n * ```\n * 包括\n * 1. loading显示效果、error显示效果、获取服务数据\n * 2. 当 serviceConfig.params 值与上一次值不相等时,会主动发起服务调用\n * 3. 通过 serviceConfig.requiredParamsKeys 设置服务调用必填字段\n * 4. 通过 ref.onRequest 可主动发起服务调用\n * 5. 子组件通过下面方式主动发起服务调用\n * const localLoadingApi = LocalLoading.useLocalLoading();\n * localLoadingApi.onRequest();\n * ```\n */\nexport const LocalLoadingInner = forwardRef<LocalLoadingRefApi, LocalLoadingProps>((props, ref) => {\n const { serviceConfig, isAsync, children, errorRender, loadingSpinProps, textConfigs, showRequiredError } =\n props;\n const [status, setStatus] = useState<'success' | 'error' | 'required_error' | 'init'>('init');\n const [respData, setRespData] = useState<TAny>();\n const loadingHeight = props.loadingHeight === undefined ? 100 : props.loadingHeight;\n const [loading, setLoading] = useState<boolean>(false);\n const errorRef = useRef<string>();\n const hiddenRequiredErrorRenderRef = useRef(true);\n\n const prevParams = fbaHooks.usePrevious(serviceConfig.params);\n\n const loadingSpinContent = getValueOrDefault(loadingSpinProps?.content, <span />);\n const loadingSpinBgColor = getValueOrDefault(loadingSpinProps?.bgColor, 'rgba(0,0,0,0.01)');\n const loadingSpinTip = getValueOrDefault(loadingSpinProps?.tip, 'Loading');\n\n const requiredErrorText = textConfigs?.requiredErrorText;\n\n // 用于直接发起接口调用,不能用于比较\n const serviceParams = useMemo(() => {\n if (!serviceConfig.params || toArray(serviceConfig.invalidParamKey).length === 0) {\n return serviceConfig.params;\n }\n const newParams = { ...serviceConfig.params };\n serviceConfig.invalidParamKey?.forEach((key) => {\n newParams[key] = undefined;\n });\n return newParams;\n }, [serviceConfig]);\n\n // 判断必要参数是否完整\n const validateRequiredParamsComplete = hooks.useCallbackRef((params?: TPlainObject) => {\n const keys = serviceConfig?.requiredParamsKeys;\n if (keys?.length) {\n const target = keys.find((item) => {\n return isUndefinedOrNull(params?.[item]);\n });\n if (target) {\n return {\n complete: false,\n message: requiredErrorText || `LocalLoading渲染缺少必填参数:${keys.join('、')}`,\n };\n }\n }\n return { complete: true };\n });\n\n const completeResult = useMemo(() => {\n return validateRequiredParamsComplete(serviceConfig.params);\n }, [validateRequiredParamsComplete, serviceConfig.params]);\n\n const onInitRequest = async (params?: TPlainObject) => {\n try {\n const mergeProps = { ...serviceParams, ...params };\n setLoading(true);\n const respData = await serviceConfig.onRequest(mergeProps);\n setStatus('success');\n setRespData(respData);\n hiddenRequiredErrorRenderRef.current = false;\n } catch (error: TAny) {\n console.error(error);\n setStatus('error');\n errorRef.current = error.message;\n hiddenRequiredErrorRenderRef.current = false;\n } finally {\n setLoading(false);\n }\n };\n\n fbaHooks.useEffectCustomAsync(async () => {\n if (completeResult.complete) {\n await onInitRequest();\n }\n }, []);\n\n fbaHooks.useEffectCustom(() => {\n if (completeResult.complete) {\n if (prevParams) {\n if (!isDeepEqual(serviceConfig.params, prevParams)) {\n if (status === 'error') {\n setStatus('init');\n }\n void onInitRequest();\n }\n }\n }\n }, [prevParams, serviceConfig.params]);\n\n useImperativeHandle(ref, () => {\n return { onRefresh: onInitRequest };\n });\n\n if (!completeResult.complete) {\n if (hiddenRequiredErrorRenderRef.current || !showRequiredError) {\n return <Fragment />;\n }\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={classNames('local-loading-error', props.className)}>\n <div className=\"local-loading-area\"></div>\n <Result status=\"error\" subTitle={completeResult.message} />\n </div>\n </LocalLoadingCtxProvider>\n );\n }\n\n if (status === 'error') {\n if (errorRender) {\n return errorRender({ message: errorRef.current });\n }\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={classNames('local-loading-error', props.className)}>\n <div className=\"local-loading-area\"></div>\n <Result\n status=\"error\"\n subTitle={errorRef.current || '数据处理异常'}\n extra={[\n <Button\n type=\"primary\"\n ghost\n key=\"console\"\n size=\"small\"\n onClick={() => {\n setStatus('init');\n void onInitRequest();\n }}\n >\n 重新获取\n </Button>,\n ]}\n />\n </div>\n </LocalLoadingCtxProvider>\n );\n }\n\n if (status !== 'success' && !isAsync) {\n return (\n <div\n className={classNames('fba-local-loading-process', props.className)}\n style={{\n height: loadingHeight,\n display: 'flex',\n justifyContent: 'center',\n position: 'relative',\n backgroundColor: 'var(--block-bg-color)',\n }}\n >\n <Spin\n spinning={loading}\n tip={loadingSpinTip}\n wrapperClassName=\"local-loading-spin-wrapper\"\n className=\"local-loading-spin\"\n style={\n {\n '--local-loading-spin-bgColor': loadingSpinBgColor,\n } as CSSProperties\n }\n >\n {loadingSpinContent}\n </Spin>\n </div>\n );\n }\n\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={classNames('fba-local-loading', props.className)} style={props.style}>\n {loading ? (\n <Spin\n spinning={loading}\n tip={loadingSpinTip}\n wrapperClassName=\"local-loading-spin-wrapper\"\n className=\"local-loading-spin\"\n style={\n {\n '--local-loading-spin-bgColor': loadingSpinBgColor,\n } as CSSProperties\n }\n >\n {loadingSpinContent}\n </Spin>\n ) : null}\n <div className=\"local-loading-content\" style={props.contentStyle}>\n {children(respData)}\n </div>\n </div>\n </LocalLoadingCtxProvider>\n );\n});\n","import { TPlainObject } from '@flatbiz/utils';\nimport { fbaUtils } from '../fba-utils';\nimport { useLocalLoadingCtx } from './context';\nimport { LocalLoadingInner } from './local-loading';\n\n/**\n * 局部加载,包含接口数据处理逻辑\n * ```\n * 包括\n * 1. loading显示效果、error显示效果、获取服务数据\n * 2. 当 serviceConfig.params 值与上一次值不相等时,会主动发起服务调用\n * 3. 通过 serviceConfig.requiredParamsKeys 设置服务调用必填字段\n * 4. 通过 ref.onRequest 可主动发起服务调用\n * 5. 子组件通过下面方式主动发起服务调用\n * const localLoadingApi = LocalLoading.useLocalLoading();\n * localLoadingApi.onRequest();\n * ```\n */\nexport const LocalLoading = fbaUtils.attachPropertiesToComponent(LocalLoadingInner, {\n useLocalLoading: () => {\n const ctx = useLocalLoadingCtx();\n return {\n onRequest: (params?: TPlainObject) => {\n ctx.onRequest(params);\n },\n };\n },\n});\n"],"names":["_createCtx","_createCtx2","useLocalLoadingCtx","LocalLoadingCtxProvider","LocalLoadingInner","forwardRef","props","ref","serviceConfig","isAsync","children","errorRender","loadingSpinProps","textConfigs","showRequiredError","_useState","useState","status","setStatus","_useState2","respData","setRespData","loadingHeight","undefined","_useState3","loading","setLoading","errorRef","useRef","hiddenRequiredErrorRenderRef","prevParams","fbaHooks","usePrevious","params","loadingSpinContent","getValueOrDefault","content","_jsx","loadingSpinBgColor","bgColor","loadingSpinTip","tip","requiredErrorText","serviceParams","useMemo","_serviceConfig$invali","toArray","invalidParamKey","length","newParams","_extends","forEach","key","validateRequiredParamsComplete","_hooks","useCallbackRef","keys","requiredParamsKeys","target","find","item","isUndefinedOrNull","complete","message","join","completeResult","onInitRequest","Promise","$return","$error","$Try_1_Finally","$Try_1_Exit","$Try_1_Value","call","this","$boundEx","bind","mergeProps","_respData","$Try_1_Post","$Try_1_Catch","error","console","current","resolve","onRequest","then","$await_3","useEffectCustomAsync","$await_4","$If_2","useEffectCustom","_isDeepEqual","useImperativeHandle","onRefresh","Fragment","value","_jsxs","className","_classNames","Result","subTitle","extra","Button","type","ghost","size","onClick","style","height","display","justifyContent","position","backgroundColor","Spin","spinning","wrapperClassName","contentStyle","LocalLoading","fbaUtils","attachPropertiesToComponent","useLocalLoading","ctx"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/local-loading/context.ts","@flatbiz/antd/src/local-loading/local-loading.tsx","@flatbiz/antd/src/local-loading/index.ts"],"sourcesContent":["import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\n\nexport const [useLocalLoadingCtx, LocalLoadingCtxProvider] = createCtx<{\n onRequest: (params?: TPlainObject) => void;\n}>();\n","import { isDeepEqual } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { getValueOrDefault, isUndefinedOrNull, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Result, Spin } from 'antd';\nimport type { CSSProperties, ReactElement } from 'react';\nimport { forwardRef, Fragment, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { LocalLoadingCtxProvider } from './context';\nimport './style.less';\n\nexport type LocalLoadingServiceConfig = {\n onRequest: (params?: TAny) => Promise<TAny>;\n params?: TPlainObject;\n /** 标记serviceConfig.params中无效参数,被设置的params key 不传入服务接口入参 */\n invalidParamKey?: string[];\n /** 必填字段设置 */\n requiredParamsKeys?: string[];\n};\n\nexport interface LocalLoadingProps {\n className?: string;\n style?: CSSProperties;\n contentStyle?: CSSProperties;\n /** 接口数据配置 */\n serviceConfig: LocalLoadingServiceConfig;\n /** children 为函数,参数【respData】为接口返回数据 */\n children: (respData?: TAny) => ReactElement;\n /**\n * 是否异步,默认:false\n * ```\n * true(异步):onRequest、react dom渲染同步执行\n * false(同步):onRequest有结果了才渲染 react dom\n * ```\n */\n isAsync?: boolean;\n /** loading高度,默认值:100;isAsync = true 无效 */\n loadingHeight?: number | string;\n /** loading spin 属性设置 */\n loadingSpinProps?: {\n /** loading tip,默认值:Loading */\n tip?: string;\n /** loading 内容 */\n content?: ReactElement;\n /** 背景色,默认值:rgba(0,0,0,0.01) */\n bgColor?: string;\n };\n textConfigs?: {\n /** 必填异常文本 */\n requiredErrorText?: string;\n };\n /** 是否显示必填异常 */\n showRequiredError?: boolean;\n /** 自定义异常渲染处理 */\n errorRender?: (error?: TAny) => ReactElement;\n /** 设置内部滚动,需要设置 style.height 才能生效,@5.0.16 */\n contentScroll?: boolean;\n /** 设置高度 */\n height?: number | string;\n}\n\nexport type LocalLoadingRefApi = {\n onRefresh: (params?: TPlainObject) => void;\n};\n\n/**\n * 局部加载,包含接口数据处理逻辑\n * ```\n * 包括\n * 1. loading显示效果、error显示效果、获取服务数据\n * 2. 当 serviceConfig.params 值与上一次值不相等时,会主动发起服务调用\n * 3. 通过 serviceConfig.requiredParamsKeys 设置服务调用必填字段\n * 4. 通过 ref.onRequest 可主动发起服务调用\n * 5. 子组件通过下面方式主动发起服务调用\n * const localLoadingApi = LocalLoading.useLocalLoading();\n * localLoadingApi.onRequest();\n * 6. 如果内部需要滚动条,可设置 contentScroll = true (外部有高度或者设置style.height 才能生效)\n * ```\n */\nexport const LocalLoadingInner = forwardRef<LocalLoadingRefApi, LocalLoadingProps>((props, ref) => {\n const {\n serviceConfig,\n isAsync,\n children,\n errorRender,\n loadingSpinProps,\n textConfigs,\n showRequiredError,\n contentScroll,\n contentStyle,\n height,\n } = props;\n const [status, setStatus] = useState<'success' | 'error' | 'required_error' | 'init'>('init');\n const [respData, setRespData] = useState<TAny>();\n const loadingHeight = props.loadingHeight === undefined ? 100 : props.loadingHeight;\n const [loading, setLoading] = useState<boolean>(false);\n const errorRef = useRef<string>();\n const hiddenRequiredErrorRenderRef = useRef(true);\n\n const prevParams = fbaHooks.usePrevious(serviceConfig.params);\n\n const loadingSpinContent = getValueOrDefault(loadingSpinProps?.content, <span />);\n const loadingSpinBgColor = getValueOrDefault(loadingSpinProps?.bgColor, 'rgba(0,0,0,0.01)');\n const loadingSpinTip = getValueOrDefault(loadingSpinProps?.tip, 'Loading');\n\n const requiredErrorText = textConfigs?.requiredErrorText;\n\n // 用于直接发起接口调用,不能用于比较\n const serviceParams = useMemo(() => {\n if (!serviceConfig.params || toArray(serviceConfig.invalidParamKey).length === 0) {\n return serviceConfig.params;\n }\n const newParams = { ...serviceConfig.params };\n serviceConfig.invalidParamKey?.forEach((key) => {\n newParams[key] = undefined;\n });\n return newParams;\n }, [serviceConfig]);\n\n // 判断必要参数是否完整\n const validateRequiredParamsComplete = hooks.useCallbackRef((params?: TPlainObject) => {\n const keys = serviceConfig?.requiredParamsKeys;\n if (keys?.length) {\n const target = keys.find((item) => {\n return isUndefinedOrNull(params?.[item]);\n });\n if (target) {\n return {\n complete: false,\n message: requiredErrorText || `LocalLoading渲染缺少必填参数:${keys.join('、')}`,\n };\n }\n }\n return { complete: true };\n });\n\n const completeResult = useMemo(() => {\n return validateRequiredParamsComplete(serviceConfig.params);\n }, [validateRequiredParamsComplete, serviceConfig.params]);\n\n const onInitRequest = async (params?: TPlainObject) => {\n try {\n const mergeProps = { ...serviceParams, ...params };\n setLoading(true);\n const respData = await serviceConfig.onRequest(mergeProps);\n setStatus('success');\n setRespData(respData);\n hiddenRequiredErrorRenderRef.current = false;\n } catch (error: TAny) {\n console.error(error);\n setStatus('error');\n errorRef.current = error.message;\n hiddenRequiredErrorRenderRef.current = false;\n } finally {\n setLoading(false);\n }\n };\n\n fbaHooks.useEffectCustomAsync(async () => {\n if (completeResult.complete) {\n await onInitRequest();\n }\n }, []);\n\n fbaHooks.useEffectCustom(() => {\n if (completeResult.complete) {\n if (prevParams) {\n if (!isDeepEqual(serviceConfig.params, prevParams)) {\n if (status === 'error') {\n setStatus('init');\n }\n void onInitRequest();\n }\n }\n }\n }, [prevParams, serviceConfig.params]);\n\n useImperativeHandle(ref, () => {\n return { onRefresh: onInitRequest };\n });\n\n if (!completeResult.complete) {\n if (hiddenRequiredErrorRenderRef.current || !showRequiredError) {\n return <Fragment />;\n }\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={classNames('local-loading-error', props.className)}>\n <div className=\"local-loading-area\"></div>\n <Result status=\"error\" subTitle={completeResult.message} />\n </div>\n </LocalLoadingCtxProvider>\n );\n }\n\n if (status === 'error') {\n if (errorRender) {\n return errorRender({ message: errorRef.current });\n }\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={classNames('local-loading-error', props.className)}>\n <div className=\"local-loading-area\"></div>\n <Result\n status=\"error\"\n subTitle={errorRef.current || '数据处理异常'}\n extra={[\n <Button\n type=\"primary\"\n ghost\n key=\"console\"\n size=\"small\"\n onClick={() => {\n setStatus('init');\n void onInitRequest();\n }}\n >\n 重新获取\n </Button>,\n ]}\n />\n </div>\n </LocalLoadingCtxProvider>\n );\n }\n\n if (status !== 'success' && !isAsync) {\n return (\n <div\n className={classNames('fba-local-loading-process', props.className)}\n style={{\n height: loadingHeight,\n display: 'flex',\n justifyContent: 'center',\n position: 'relative',\n backgroundColor: 'var(--block-bg-color)',\n }}\n >\n <Spin\n spinning={loading}\n tip={loadingSpinTip}\n wrapperClassName=\"local-loading-spin-wrapper\"\n className=\"local-loading-spin\"\n style={\n {\n '--local-loading-spin-bgColor': loadingSpinBgColor,\n } as CSSProperties\n }\n >\n {loadingSpinContent}\n </Spin>\n </div>\n );\n }\n\n const className = classNames('fba-local-loading', { 'fll-content-scroll': contentScroll }, props.className);\n\n const rootStyle = { height, ...props.style };\n\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={className} style={rootStyle}>\n {loading ? (\n <Spin\n spinning={loading}\n tip={loadingSpinTip}\n wrapperClassName=\"local-loading-spin-wrapper\"\n className=\"local-loading-spin\"\n style={\n {\n '--local-loading-spin-bgColor': loadingSpinBgColor,\n } as CSSProperties\n }\n >\n {loadingSpinContent}\n </Spin>\n ) : null}\n <div className=\"local-loading-content\" style={contentStyle}>\n {children(respData)}\n </div>\n </div>\n </LocalLoadingCtxProvider>\n );\n});\n","import { TPlainObject } from '@flatbiz/utils';\nimport { fbaUtils } from '../fba-utils';\nimport { useLocalLoadingCtx } from './context';\nimport { LocalLoadingInner } from './local-loading';\n\n/**\n * 局部加载,包含接口数据处理逻辑\n * ```\n * 包括\n * 1. loading显示效果、error显示效果、获取服务数据\n * 2. 当 serviceConfig.params 值与上一次值不相等时,会主动发起服务调用\n * 3. 通过 serviceConfig.requiredParamsKeys 设置服务调用必填字段\n * 4. 通过 ref.onRequest 可主动发起服务调用\n * 5. 子组件通过下面方式主动发起服务调用\n * const localLoadingApi = LocalLoading.useLocalLoading();\n * localLoadingApi.onRequest();\n * ```\n */\nexport const LocalLoading = fbaUtils.attachPropertiesToComponent(LocalLoadingInner, {\n useLocalLoading: () => {\n const ctx = useLocalLoadingCtx();\n return {\n onRequest: (params?: TPlainObject) => {\n ctx.onRequest(params);\n },\n };\n },\n});\n"],"names":["_createCtx","_createCtx2","useLocalLoadingCtx","LocalLoadingCtxProvider","LocalLoadingInner","forwardRef","props","ref","serviceConfig","isAsync","children","errorRender","loadingSpinProps","textConfigs","showRequiredError","contentScroll","contentStyle","height","_useState","useState","status","setStatus","_useState2","respData","setRespData","loadingHeight","undefined","_useState3","loading","setLoading","errorRef","useRef","hiddenRequiredErrorRenderRef","prevParams","fbaHooks","usePrevious","params","loadingSpinContent","getValueOrDefault","content","_jsx","loadingSpinBgColor","bgColor","loadingSpinTip","tip","requiredErrorText","serviceParams","useMemo","_serviceConfig$invali","toArray","invalidParamKey","length","newParams","_extends","forEach","key","validateRequiredParamsComplete","_hooks","useCallbackRef","keys","requiredParamsKeys","target","find","item","isUndefinedOrNull","complete","message","join","completeResult","onInitRequest","Promise","$return","$error","$Try_1_Finally","$Try_1_Exit","$Try_1_Value","call","this","$boundEx","bind","mergeProps","_respData","$Try_1_Post","$Try_1_Catch","error","console","current","resolve","onRequest","then","$await_3","useEffectCustomAsync","$await_4","$If_2","useEffectCustom","_isDeepEqual","useImperativeHandle","onRefresh","Fragment","value","_jsxs","className","_classNames","Result","subTitle","extra","Button","type","ghost","size","onClick","style","display","justifyContent","position","backgroundColor","Spin","spinning","wrapperClassName","rootStyle","LocalLoading","fbaUtils","attachPropertiesToComponent","useLocalLoading","ctx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tabs-sticky/tabs.tsx"],"sourcesContent":["import { useSize } from 'ahooks';\nimport { Affix, Tabs, type TabsProps } from 'antd';\nimport { useEffect, useMemo, useRef, useState, type ReactElement } from 'react';\nimport './style.less';\n\nexport type TabsStickyProps = {\n tabsProps: TabsProps;\n /** tabs头部布局 */\n headerRender?: ReactElement;\n /** 点击tabItem后,tab跳到顶部吸顶效果;默认值true */\n clickTabToTop?: boolean;\n};\n\n/**\n * Tabs吸顶组件\n * ```\n * 1. 组件根节点设置了 height: 100%、overflow: auto;所以外部包裹元素必须要有高度\n * ```\n */\nexport const TabsSticky = (props: TabsStickyProps) => {\n const tabsProps = props.tabsProps;\n\n const [activeKey, setActiveKey] = useState(tabsProps.defaultActiveKey);\n const headerRef = useRef<HTMLDivElement>(null);\n const affixRef = useRef<any>(null);\n const affixedFlagRef = useRef<boolean>();\n\n const headerSize = useSize(headerRef);\n\n const scollNodeRef = useRef<any>(null);\n\n const scollNodeSize = useSize(scollNodeRef);\n const affixRefSize = useSize(affixRef);\n\n useEffect(() => {\n if (tabsProps.activeKey) {\n setActiveKey(tabsProps.activeKey);\n }\n }, [tabsProps.activeKey]);\n\n const onChange = (activeKey) => {\n if (!tabsProps.activeKey) {\n setActiveKey(activeKey);\n }\n tabsProps.onChange?.(activeKey);\n const top = headerSize?.height || 0;\n if (affixedFlagRef.current) {\n scollNodeRef.current?.scrollTo({\n top,\n });\n } else {\n if (props.clickTabToTop !== false) {\n scollNodeRef.current?.scrollTo({\n top,\n });\n }\n }\n };\n\n const minHeight = (scollNodeSize?.height || 0) - (affixRefSize?.height || 0);\n\n const stickyTabItems = useMemo(() => {\n return tabsProps.items?.map((item) => {\n return {\n ...item,\n children: null,\n };\n });\n }, [tabsProps.items]);\n\n const contentTabItems = useMemo(() => {\n return tabsProps.items?.map((item) => {\n return {\n ...item,\n children: <div style={{ minHeight }}>{item.children}</div>,\n };\n });\n }, [tabsProps.items, minHeight]);\n\n return (\n <div ref={scollNodeRef} style={{ height: '100%', overflowY: 'auto' }}>\n <div ref={headerRef}>{props.headerRender}</div>\n <Affix\n offsetTop={0}\n target={() => scollNodeRef.current as HTMLElement}\n onChange={(affixed) => {\n affixedFlagRef.current = affixed;\n }}\n >\n <div ref={affixRef}>\n <Tabs\n {...tabsProps}\n activeKey={activeKey}\n items={stickyTabItems}\n tabBarStyle={{ ...tabsProps.tabBarStyle, margin: 0 }}\n style={{\n backgroundColor: 'var(--block-bg-color)',\n ...tabsProps.style,\n }}\n onChange={onChange}\n />\n </div>\n </Affix>\n <Tabs activeKey={activeKey} className=\"tabs-sticky-contents\" items={contentTabItems} />\n </div>\n );\n};\n"],"names":["TabsSticky","props","tabsProps","_useState","useState","defaultActiveKey","activeKey","setActiveKey","headerRef","useRef","affixRef","affixedFlagRef","headerSize","useSize","scollNodeRef","scollNodeSize","affixRefSize","useEffect","onChange","top","height","current","_scollNodeRef$current","scrollTo","clickTabToTop","_scollNodeRef$current2","minHeight","stickyTabItems","useMemo","_tabsProps$items","items","map","item","_extends","children","contentTabItems","_tabsProps$items2","_jsx","style","_jsxs","ref","overflowY","headerRender","Affix","offsetTop","target","affixed","Tabs","tabBarStyle","margin","backgroundColor","className"],"mappings":";oQAmBaA,EAAa,SAAbA,EAAcC,GACzB,IAAMC,EAAYD,EAAMC,UAExB,IAAAC,EAAkCC,EAASF,EAAUG,kBAA9CC,EAASH,EAAA,GAAEI,EAAYJ,EAAA,GAC9B,IAAMK,EAAYC,EAAuB,MACzC,IAAMC,EAAWD,EAAY,MAC7B,IAAME,EAAiBF,IAEvB,IAAMG,EAAaC,EAAQL,GAE3B,IAAMM,EAAeL,EAAY,MAEjC,IAAMM,EAAgBF,EAAQC,GAC9B,IAAME,EAAeH,EAAQH,GAE7BO,GAAU,WACR,GAAIf,EAAUI,UAAW,CACvBC,EAAaL,EAAUI,UACzB,CACF,GAAG,CAACJ,EAAUI,YAEd,IAAMY,EAAW,SAAXA,EAAYZ,GAChB,IAAKJ,EAAUI,UAAW,CACxBC,EAAaD,EACf,CACAJ,EAAUgB,UAAVhB,UAAAA,EAAAA,EAAUgB,SAAWZ,GACrB,IAAMa,GAAMP,eAAAA,EAAYQ,SAAU,EAClC,GAAIT,EAAeU,QAAS,CAAA,IAAAC,GAC1BA,EAAAR,EAAaO,UAAbC,UAAAA,EAAAA,EAAsBC,SAAS,CAC7BJ,IAAAA,GAEJ,KAAO,CACL,GAAIlB,EAAMuB,gBAAkB,MAAO,CAAA,IAAAC,GACjCA,EAAAX,EAAaO,UAAbI,UAAAA,EAAAA,EAAsBF,SAAS,CAC7BJ,IAAAA,GAEJ,CACF,GAGF,IAAMO,IAAaX,GAAAA,UAAAA,EAAAA,EAAeK,SAAU,KAAMJ,GAAAA,UAAAA,EAAAA,EAAcI,SAAU,GAE1E,IAAMO,EAAiBC,GAAQ,WAAM,IAAAC,EACnC,OAAAA,EAAO3B,EAAU4B,QAAK,UAAA,EAAfD,EAAiBE,KAAI,SAACC,GAC3B,OAAAC,KACKD,EAAI,CACPE,SAAU,MAEd,GACF,GAAG,CAAChC,EAAU4B,QAEd,IAAMK,EAAkBP,GAAQ,WAAM,IAAAQ,EACpC,OAAAA,EAAOlC,EAAU4B,QAAK,UAAA,EAAfM,EAAiBL,KAAI,SAACC,GAC3B,OAAAC,KACKD,EAAI,CACPE,SAAUG,EAAA,MAAA,CAAKC,MAAO,CAAEZ,UAAAA,GAAYQ,SAAEF,EAAKE,YAE/C,GACD,GAAE,CAAChC,EAAU4B,MAAOJ,IAErB,OACEa,EAAA,MAAA,CAAKC,IAAK1B,EAAcwB,MAAO,CAAElB,OAAQ,OAAQqB,UAAW,QAASP,UACnEG,EAAA,MAAA,CAAKG,IAAKhC,EAAU0B,SAAEjC,EAAMyC,eAC5BL,EAACM,EAAK,CACJC,UAAW,EACXC,OAAQ,SAAAA,IAAA,OAAM/B,EAAaO,OAAuB,EAClDH,SAAU,SAAAA,EAAC4B,GACTnC,EAAeU,QAAUyB,CACzB,EAAAZ,SAEFG,EAAA,MAAA,CAAKG,IAAK9B,EAASwB,SACjBG,EAACU,EAAId,KACC/B,EAAS,CACbI,UAAWA,EACXwB,MAAOH,EACPqB,YAAWf,EAAO/B,GAAAA,EAAU8C,YAAW,CAAEC,OAAQ,IACjDX,MAAKL,EAAA,CACHiB,gBAAiB,yBACdhD,EAAUoC,OAEfpB,SAAUA,SAIhBmB,EAACU,EAAI,CAACzC,UAAWA,EAAW6C,UAAU,uBAAuBrB,MAAOK,MAG1E"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tabs-sticky/tabs.tsx"],"sourcesContent":["import { useSize } from 'ahooks';\nimport { Affix, Tabs, type TabsProps } from 'antd';\nimport { useEffect, useMemo, useRef, useState, type ReactElement } from 'react';\nimport './style.less';\n\nexport type TabsStickyProps = {\n tabsProps: Omit<TabsProps, 'tabPosition'>;\n /** tabs头部布局 */\n headerRender?: ReactElement;\n /** 点击tabItem后,tab跳到顶部吸顶效果;默认值true */\n clickTabToTop?: boolean;\n};\n\n/**\n * Tabs吸顶组件\n * ```\n * 1. 组件根节点设置了 height: 100%、overflow: auto;所以外部包裹元素必须要有高度\n * ```\n */\nexport const TabsSticky = (props: TabsStickyProps) => {\n const tabsProps = props.tabsProps;\n\n const [activeKey, setActiveKey] = useState(tabsProps.defaultActiveKey);\n const headerRef = useRef<HTMLDivElement>(null);\n const affixRef = useRef<any>(null);\n const affixedFlagRef = useRef<boolean>();\n\n const headerSize = useSize(headerRef);\n\n const scollNodeRef = useRef<any>(null);\n\n const scollNodeSize = useSize(scollNodeRef);\n const affixRefSize = useSize(affixRef);\n\n useEffect(() => {\n if (tabsProps.activeKey) {\n setActiveKey(tabsProps.activeKey);\n }\n }, [tabsProps.activeKey]);\n\n const onChange = (activeKey) => {\n if (!tabsProps.activeKey) {\n setActiveKey(activeKey);\n }\n tabsProps.onChange?.(activeKey);\n const top = headerSize?.height || 0;\n if (affixedFlagRef.current) {\n scollNodeRef.current?.scrollTo({\n top,\n });\n } else {\n if (props.clickTabToTop !== false) {\n scollNodeRef.current?.scrollTo({\n top,\n });\n }\n }\n };\n\n const minHeight = (scollNodeSize?.height || 0) - (affixRefSize?.height || 0);\n\n const stickyTabItems = useMemo(() => {\n return tabsProps.items?.map((item) => {\n return {\n ...item,\n children: null,\n };\n });\n }, [tabsProps.items]);\n\n const contentTabItems = useMemo(() => {\n return tabsProps.items?.map((item) => {\n return {\n ...item,\n children: <div style={{ minHeight }}>{item.children}</div>,\n };\n });\n }, [tabsProps.items, minHeight]);\n\n return (\n <div ref={scollNodeRef} style={{ height: '100%', overflowY: 'auto' }}>\n <div ref={headerRef}>{props.headerRender}</div>\n <Affix\n offsetTop={0}\n target={() => scollNodeRef.current as HTMLElement}\n onChange={(affixed) => {\n affixedFlagRef.current = affixed;\n }}\n >\n <div ref={affixRef}>\n <Tabs\n {...tabsProps}\n activeKey={activeKey}\n items={stickyTabItems}\n tabBarStyle={{ ...tabsProps.tabBarStyle, margin: 0 }}\n style={{\n backgroundColor: 'var(--block-bg-color)',\n ...tabsProps.style,\n }}\n onChange={onChange}\n />\n </div>\n </Affix>\n <Tabs activeKey={activeKey} className=\"tabs-sticky-contents\" items={contentTabItems} />\n </div>\n );\n};\n"],"names":["TabsSticky","props","tabsProps","_useState","useState","defaultActiveKey","activeKey","setActiveKey","headerRef","useRef","affixRef","affixedFlagRef","headerSize","useSize","scollNodeRef","scollNodeSize","affixRefSize","useEffect","onChange","top","height","current","_scollNodeRef$current","scrollTo","clickTabToTop","_scollNodeRef$current2","minHeight","stickyTabItems","useMemo","_tabsProps$items","items","map","item","_extends","children","contentTabItems","_tabsProps$items2","_jsx","style","_jsxs","ref","overflowY","headerRender","Affix","offsetTop","target","affixed","Tabs","tabBarStyle","margin","backgroundColor","className"],"mappings":";oQAmBaA,EAAa,SAAbA,EAAcC,GACzB,IAAMC,EAAYD,EAAMC,UAExB,IAAAC,EAAkCC,EAASF,EAAUG,kBAA9CC,EAASH,EAAA,GAAEI,EAAYJ,EAAA,GAC9B,IAAMK,EAAYC,EAAuB,MACzC,IAAMC,EAAWD,EAAY,MAC7B,IAAME,EAAiBF,IAEvB,IAAMG,EAAaC,EAAQL,GAE3B,IAAMM,EAAeL,EAAY,MAEjC,IAAMM,EAAgBF,EAAQC,GAC9B,IAAME,EAAeH,EAAQH,GAE7BO,GAAU,WACR,GAAIf,EAAUI,UAAW,CACvBC,EAAaL,EAAUI,UACzB,CACF,GAAG,CAACJ,EAAUI,YAEd,IAAMY,EAAW,SAAXA,EAAYZ,GAChB,IAAKJ,EAAUI,UAAW,CACxBC,EAAaD,EACf,CACAJ,EAAUgB,UAAVhB,UAAAA,EAAAA,EAAUgB,SAAWZ,GACrB,IAAMa,GAAMP,eAAAA,EAAYQ,SAAU,EAClC,GAAIT,EAAeU,QAAS,CAAA,IAAAC,GAC1BA,EAAAR,EAAaO,UAAbC,UAAAA,EAAAA,EAAsBC,SAAS,CAC7BJ,IAAAA,GAEJ,KAAO,CACL,GAAIlB,EAAMuB,gBAAkB,MAAO,CAAA,IAAAC,GACjCA,EAAAX,EAAaO,UAAbI,UAAAA,EAAAA,EAAsBF,SAAS,CAC7BJ,IAAAA,GAEJ,CACF,GAGF,IAAMO,IAAaX,GAAAA,UAAAA,EAAAA,EAAeK,SAAU,KAAMJ,GAAAA,UAAAA,EAAAA,EAAcI,SAAU,GAE1E,IAAMO,EAAiBC,GAAQ,WAAM,IAAAC,EACnC,OAAAA,EAAO3B,EAAU4B,QAAK,UAAA,EAAfD,EAAiBE,KAAI,SAACC,GAC3B,OAAAC,KACKD,EAAI,CACPE,SAAU,MAEd,GACF,GAAG,CAAChC,EAAU4B,QAEd,IAAMK,EAAkBP,GAAQ,WAAM,IAAAQ,EACpC,OAAAA,EAAOlC,EAAU4B,QAAK,UAAA,EAAfM,EAAiBL,KAAI,SAACC,GAC3B,OAAAC,KACKD,EAAI,CACPE,SAAUG,EAAA,MAAA,CAAKC,MAAO,CAAEZ,UAAAA,GAAYQ,SAAEF,EAAKE,YAE/C,GACD,GAAE,CAAChC,EAAU4B,MAAOJ,IAErB,OACEa,EAAA,MAAA,CAAKC,IAAK1B,EAAcwB,MAAO,CAAElB,OAAQ,OAAQqB,UAAW,QAASP,UACnEG,EAAA,MAAA,CAAKG,IAAKhC,EAAU0B,SAAEjC,EAAMyC,eAC5BL,EAACM,EAAK,CACJC,UAAW,EACXC,OAAQ,SAAAA,IAAA,OAAM/B,EAAaO,OAAuB,EAClDH,SAAU,SAAAA,EAAC4B,GACTnC,EAAeU,QAAUyB,CACzB,EAAAZ,SAEFG,EAAA,MAAA,CAAKG,IAAK9B,EAASwB,SACjBG,EAACU,EAAId,KACC/B,EAAS,CACbI,UAAWA,EACXwB,MAAOH,EACPqB,YAAWf,EAAO/B,GAAAA,EAAU8C,YAAW,CAAEC,OAAQ,IACjDX,MAAKL,EAAA,CACHiB,gBAAiB,yBACdhD,EAAUoC,OAEfpB,SAAUA,SAIhBmB,EAACU,EAAI,CAACzC,UAAWA,EAAW6C,UAAU,uBAAuBrB,MAAOK,MAG1E"}
@@ -1 +1 @@
1
- .v-file-upload .ant-upload-span{cursor:pointer}
1
+ .v-file-upload .ant-upload-span{cursor:pointer}.ant-upload-list-picture .v-upload-list-item-extra-actions .ant-btn-icon,.ant-upload-list-text .v-upload-list-item-extra-actions .ant-btn-icon{color:rgba(0,0,0,.45)}.ant-upload-list-picture .v-upload-list-item-extra-actions .ant-btn,.ant-upload-list-text .v-upload-list-item-extra-actions .ant-btn{height:20px;margin:0 0 0 5px}.ant-upload-list-picture-card .v-upload-list-item-extra-actions,.ant-upload-list-picture-circle .v-upload-list-item-extra-actions,.ant-upload-list-text .v-upload-list-item-extra-actions{opacity:0;transition:opacity .3s}.ant-upload-list-picture-card .ant-upload-list-item:hover .v-upload-list-item-extra-actions,.ant-upload-list-picture-circle .ant-upload-list-item:hover .v-upload-list-item-extra-actions,.ant-upload-list-text .ant-upload-list-item:hover .v-upload-list-item-extra-actions{opacity:1}.ant-upload-list-picture-card .v-upload-list-item-actions-wrapper .ant-upload-list-item-actions,.ant-upload-list-picture-circle .v-upload-list-item-actions-wrapper .ant-upload-list-item-actions{inset-inline-start:auto!important;width:auto!important}.ant-upload-list-picture-card .v-upload-list-item-actions-wrapper .v-upload-list-item-extra-actions,.ant-upload-list-picture-circle .v-upload-list-item-actions-wrapper .v-upload-list-item-extra-actions{position:absolute;z-index:10}.ant-upload-list-picture-card .v-upload-list-item-actions-wrapper .v-upload-list-item-extra-actions .ant-btn-icon,.ant-upload-list-picture-circle .v-upload-list-item-actions-wrapper .v-upload-list-item-extra-actions .ant-btn-icon{color:#fff}.ant-upload-list-picture-card .v-upload-list-item-extra-actions-2-1 .ant-upload-list-item-actions,.ant-upload-list-picture-circle .v-upload-list-item-extra-actions-2-1 .ant-upload-list-item-actions{right:38px}.ant-upload-list-picture-card .v-upload-list-item-extra-actions-2-1 .v-upload-list-item-extra-actions,.ant-upload-list-picture-circle .v-upload-list-item-extra-actions-2-1 .v-upload-list-item-extra-actions{right:15px}.ant-upload-list-picture-card .v-upload-list-item-extra-actions-2-2 .ant-upload-list-item-actions,.ant-upload-list-picture-circle .v-upload-list-item-extra-actions-2-2 .ant-upload-list-item-actions{left:15px}.ant-upload-list-picture-card .v-upload-list-item-extra-actions-2-2 .v-upload-list-item-extra-actions,.ant-upload-list-picture-circle .v-upload-list-item-extra-actions-2-2 .v-upload-list-item-extra-actions{right:8px}.ant-upload-list-picture-card .v-upload-list-item-extra-actions-2-2 .v-upload-list-item-extra-actions .ant-btn,.ant-upload-list-picture-circle .v-upload-list-item-extra-actions-2-2 .v-upload-list-item-extra-actions .ant-btn{width:20px}.ant-upload-list-picture-card .v-upload-list-item-extra-actions-1-1 .ant-upload-list-item-actions,.ant-upload-list-picture-circle .v-upload-list-item-extra-actions-1-1 .ant-upload-list-item-actions{right:47px}.ant-upload-list-picture-card .v-upload-list-item-extra-actions-1-1 .v-upload-list-item-extra-actions,.ant-upload-list-picture-circle .v-upload-list-item-extra-actions-1-1 .v-upload-list-item-extra-actions{right:20px}.ant-upload-list-picture-card .v-upload-list-item-extra-actions-1-2 .ant-upload-list-item-actions,.ant-upload-list-picture-circle .v-upload-list-item-extra-actions-1-2 .ant-upload-list-item-actions{right:60px}.ant-upload-list-picture-card .v-upload-list-item-extra-actions-1-2 .v-upload-list-item-extra-actions,.ant-upload-list-picture-circle .v-upload-list-item-extra-actions-1-2 .v-upload-list-item-extra-actions{right:14px}
@@ -1,6 +1,10 @@
1
1
  /* eslint-disable */
2
+ import './../button-wrapper/index.css';
3
+ import './../config-provider-wrapper/index.css';
2
4
  import './../fba-hooks/index.css';
5
+ import './../types/index.css';
6
+ import './../fba-utils/index.css';
3
7
  import './index.css';
4
8
  /*! @flatjs/forge MIT @flatbiz/antd */
5
- import e from"@ant-design/icons/es/icons/PlusOutlined";import{a as r,_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{hooks as t}from"@wove/react/cjs/hooks";import{isPlainObject as a}from"@dimjs/lang/cjs/is-plain-object";import{extend as o}from"@dimjs/utils/cjs/extend";import{isUndefinedOrNull as s,toArray as u}from"@flatbiz/utils";import{message as l,Upload as d,Button as f}from"antd";import{useState as c,useMemo as m,Fragment as p}from"react";import{flushSync as v}from"react-dom";import{fbaHooks as g}from"../fba-hooks/index.js";import{jsx as h,jsxs as x}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";var j=["onChange","onUploadError","value","triggerText","limitHidden","autoSubmit"];var C=function e(f){var p=f.onChange,x=f.onUploadError,C=f.value,y=f.triggerText,b=f.limitHidden,E=f.autoSubmit,O=r(f,j);var R=c(),U=R[0],k=R[1];var D=o({uid:"uid",name:"name",url:"url"},f.fieldNames);var H=m((function(){return s(C)?undefined:u(C)}),[C]);g.useEffectCustom((function(){var e=(U==null?void 0:U.filter((function(e){return e["status"]==="error"})))||[];var r=[];H==null?void 0:H.forEach((function(e){if(e["lastModified"]){r.push(e)}else{r.push({uid:e[D.uid],name:e[D.name],url:e[D.url],status:"done",isOriginal:true,responseData:e["responseData"]})}}));if(e.length>0){var i=e.map((function(e){return{uid:e.uid,name:e.name,status:"error",isOriginal:true,response:e["response"]}}));r=r.concat(i)}k(r)}),[D.name,D.uid,D.url,H]);var L=function e(r){var i=[];var n=false;r.forEach((function(e){if(e["isOriginal"]){if(e["status"]!=="error"){var r;i.push((r={},r[D.uid]=e.uid,r[D.name]=e.name,r[D.url]=e.url,r))}}else if(a(e.response)){if(e.response.code==="0000"){var t;var o=e.response.data;var s=(f.onRequestResultAdapter==null?void 0:f.onRequestResultAdapter(o))||o;i.push((t={},t[D.uid]=s[D.uid]||e.uid,t[D.name]=s[D.name]||e.name,t[D.url]=s[D.url],t.responseData=o,t))}else{var u=e.response.message||"上传失败";n=true;e.status="error";e.response=e.response.message||"上传失败";if(x){x==null?void 0:x(u)}else{void l.error("上传操作失败...")}}}}));if(n){k([].concat(r))}p==null?void 0:p(i)};var N=t.useCallbackRef((function(e){var r=e.fileList;if(e.file.status==="done"){var i=[].concat(e.fileList);var n=i.filter((function(e){return e.status==="done"||e["isOriginal"]}));var t=n.length===i.length;if(t){L(i)}v((function(){return k(i)}));return}else if(e.file.status==="removed"){var a=e.file.uid;var o=H!==undefined?[].concat(H):[];var s=o.findIndex((function(e){var r=e[D.uid]||e.uid;return r===a}));if(s>=0){o.splice(s,1)}p==null?void 0:p(o)}else if(e.file.status==="error"){if(x){x()}else{void l.error("上传操作失败...")}}k([].concat(r));f.onUploadChange==null?void 0:f.onUploadChange(e)}));var q=m((function(){if(O.maxCount===undefined||!b)return false;if(O.maxCount===0)return true;if(U&&U.length>=O.maxCount)return true;return false}),[b,O.maxCount,U]);var w=function e(r,i){if(E===false){var n=O.maxCount;var t=[].concat(H||[],i);var a=[].concat(U||[],i);if(n!==undefined&&n!==null){if(t.length>n){t=t.slice(t.length-n);a=a.slice(a.length-n)}}k(a);f.onChange==null?void 0:f.onChange(t);return false}return true};return h(d,i({beforeUpload:w},O,{onChange:N,fileList:U,className:n("v-upload-wrapper",O.className),children:O.disabled||q?null:h(T,{triggerText:y,listType:O.listType,children:f.children})}))};var T=function r(i){if(i.children)return h(p,{children:i.children});if(i.listType==="picture-card"){return x("div",{children:[h(e,{}),h("div",{style:{marginTop:8},children:i.triggerText||"上传图片"})]})}if(i.listType==="picture"){return h(f,{type:"primary",ghost:true,children:i.triggerText||"选择图片上传"})}return h(f,{type:"primary",ghost:true,children:i.triggerText||"选择文件上传"})};export{C as UploadWrapper};
9
+ import e from"@ant-design/icons/es/icons/PlusOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{hooks as i}from"@wove/react/cjs/hooks";import{a as n,_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isPlainObject as a}from"@dimjs/lang/cjs/is-plain-object";import{extend as o}from"@dimjs/utils/cjs/extend";import{isUndefinedOrNull as s,toArray as l,openNewWindow as u}from"@flatbiz/utils";import{message as d,Upload as c,Image as p,Button as f}from"antd";import{useState as m,useMemo as v,Fragment as g,cloneElement as h}from"react";import{flushSync as j}from"react-dom";import{ButtonWrapper as x}from"../button-wrapper/index.js";import{fbaHooks as y}from"../fba-hooks/index.js";import{jsxs as w,jsx as C}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.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"../fba-utils/index.js";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";var b=function e(r){return new Promise((function(e,i){var n=new FileReader;n.readAsDataURL(r);n.onload=function(){return e(n.result)};n.onerror=function(e){return i(e)}}))};var z=["onChange","onUploadError","value","triggerText","limitHidden","autoSubmit","imagePreviewSwitch","imagePreviewAccept","extraOperate"];var O=function e(f){var O=f.onChange,T=f.onUploadError,L=f.value,k=f.triggerText,D=f.limitHidden,R=f.autoSubmit,U=f.imagePreviewSwitch,N=f.imagePreviewAccept,S=f.extraOperate,A=n(f,z);var E=s(N)?["png","jpg","jpeg","gif"]:N;var F=m(),_=F[0],H=F[1];var q=m(),B=q[0],I=q[1];var Y=o({uid:"uid",name:"name",url:"url",size:"size"},f.fieldNames);var M=v((function(){return s(L)?undefined:l(L)}),[L]);y.useEffectCustom((function(){var e=(B==null?void 0:B.filter((function(e){return e["status"]==="error"})))||[];var r=[];M==null?void 0:M.forEach((function(e){if(e["lastModified"]){r.push(e)}else{r.push({uid:e[Y.uid],name:e[Y.name],url:e[Y.url],size:e[Y.size],responseData:e["responseData"],status:"done",isOriginal:true})}}));if(e.length>0){var i=e.map((function(e){return{uid:e.uid,name:e.name,status:"error",isOriginal:true,response:e["response"]}}));r=r.concat(i)}I(r)}),[Y.name,Y.uid,Y.url,M]);var V=function e(r){var i=[];var n=false;r.forEach((function(e){if(e["isOriginal"]){if(e["status"]!=="error"){var r;var o=(r={},r[Y.uid]=e.uid,r[Y.name]=e.name,r[Y.url]=e.url,r);if(!s(e.size)){o[Y.size]=e.size}if(e["responseData"]){o.responseData=e["responseData"]}i.push(o)}}else if(a(e.response)){if(e.response.code==="0000"){var l;var u=e.response.data;var c=(f.onRequestResultAdapter==null?void 0:f.onRequestResultAdapter(u))||u;var p=(l={},l[Y.uid]=c[Y.uid]||e.uid,l[Y.name]=c[Y.name]||e.name,l[Y.url]=c[Y.url],l);if(!s(c[Y.size])){p[Y.size]=c[Y.size]}i.push(t({},p,{responseData:u}))}else{var m=e.response.message||"上传失败";n=true;e.status="error";e.response=e.response.message||"上传失败";if(T){T==null?void 0:T(m)}else{void d.error("上传操作失败...")}}}}));if(n){I([].concat(r))}O==null?void 0:O(i)};var G=i.useCallbackRef((function(e){var r=e.fileList;if(e.file.status==="done"){var i=[].concat(e.fileList);var n=i.filter((function(e){return e.status==="done"||e["isOriginal"]}));var t=n.length===i.length;if(t){V(i)}j((function(){return I(i)}));return}else if(e.file.status==="removed"){var a=e.file.uid;var o=M!==undefined?[].concat(M):[];var s=o.findIndex((function(e){var r=e[Y.uid]||e.uid;return r===a}));if(s>=0){o.splice(s,1)}O==null?void 0:O(o)}else if(e.file.status==="error"){if(T){T()}else{void d.error("上传操作失败...")}}I([].concat(r));f.onUploadChange==null?void 0:f.onUploadChange(e)}));var J=v((function(){if(A.maxCount===undefined||!D)return false;if(A.maxCount===0)return true;if(B&&B.length>=A.maxCount)return true;return false}),[D,A.maxCount,B]);var K=function e(r,i){if(R===false){var n=A.maxCount;var t=[].concat(M||[],i);var a=[].concat(B||[],i);if(n!==undefined&&n!==null){if(t.length>n){t=t.slice(t.length-n);a=a.slice(a.length-n)}}I(a);f.onChange==null?void 0:f.onChange(t);return false}return true};var Q=function e(r){return new Promise((function(e,i){var n,t,a;n=r.name||"";t=n.slice(n.lastIndexOf(".")+1);a=E==null?void 0:E.find((function(e){return e.toLocaleLowerCase()===t.toLocaleLowerCase()}));if(a){if(!r.url&&!r.preview){return Promise.resolve(b(r.originFileObj)).then(function(e){try{r.preview=e;return o.call(this)}catch(e){return i(e)}}.bind(this),i)}function o(){H(r.url||r.preview);return s.call(this)}return o.call(this)}else{u(r.url);return s.call(this)}function s(){return e()}}))};return w(g,{children:[C(c,t({beforeUpload:K,onPreview:U?Q:undefined,showUploadList:true,itemRender:function e(i,n,t){if(!S||!S.length)return i;var a=(A.disabled?1:2)+"-"+S.length;return C("div",{className:r("v-upload-list-item-actions-wrapper","v-upload-list-item-extra-actions-"+a),style:{height:"100%"},children:h(i,{children:[i.props.children,C("div",{className:"v-upload-list-item-extra-actions",children:S.map((function(e,r){return C(x,{size:"small",type:"text",icon:e.icon,onClick:e.onClick.bind(null,n,t)},r)}))},"extra-actions")].filter(Boolean)})})}},A,{onChange:G,fileList:B,className:r("v-upload-wrapper",A.className),children:A.disabled||J?null:C(P,{triggerText:k,listType:A.listType,children:f.children})})),_?C(p,{wrapperStyle:{display:"none"},preview:{visible:!!_,onVisibleChange:function e(){return H(undefined)},afterOpenChange:function e(r){return!r&&H("")}},src:_}):null]})};var P=function r(i){if(i.children)return C(g,{children:i.children});if(i.listType==="picture-card"){return w("div",{children:[C(e,{}),C("div",{style:{marginTop:8},children:i.triggerText||"上传图片"})]})}if(i.listType==="picture"){return C(f,{type:"primary",ghost:true,children:i.triggerText||"选择图片上传"})}return C(f,{type:"primary",ghost:true,children:i.triggerText||"选择文件上传"})};export{O as UploadWrapper};
6
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/upload-wrapper/upload-wrapper.tsx"],"sourcesContent":["import { PlusOutlined } from '@ant-design/icons';\nimport { isPlainObject } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport { isUndefinedOrNull, TAny, toArray, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, message, Upload, UploadProps } from 'antd';\nimport { UploadChangeParam } from 'antd/lib/upload';\nimport { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport { Fragment, ReactNode, useMemo, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type UploadWrapperFileItem = {\n uid: string;\n name: string;\n url?: string;\n};\n\nexport type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {\n value?: T[] | T;\n onChange?: (value?: T[]) => void;\n onUploadError?: (message?: string) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性取值映射\n */\n fieldNames?: {\n uid: string;\n name?: string;\n url?: string;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject;\n /** 操作触发显示文本 */\n triggerText?: string;\n /** 超过maxCount 隐藏上传入口 */\n limitHidden?: boolean;\n /**\n * 自动提交,默认:true\n * ```\n * 1. 自定义beforeUpload配置后 autoSubmit 失效\n * ```\n */\n autoSubmit?: boolean;\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * demo: https://fex.qa.tcshuke.com/docs/admin/main/file/upload\n * 1. 可通过配置children替换默认上传触发布局\n * 2. 接口返回结构:\n * formData上传接口返回值\n * {\n * code: '0000',\n * data: {\n * uid: '唯一值,可使用fileKey值'\n * name: '文件名称'\n * url: '预览地址'\n * }\n * }\n * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射\n *\n * 4. 最佳使用方式,与Form结合使用\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <UploadWrapper action={uploadUrl} />\n * </Form.Item>\n *\n * 5. 回填数据结构\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * }]\n * 其中 uid、name、url 可为其他命名,通过 fieldNames 进行映射即可\n * ```\n *\n */\nexport const UploadWrapper = (props: UploadWrapperProps) => {\n const { onChange, onUploadError, value, triggerText, limitHidden, autoSubmit, ...otherProps } = props;\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n },\n props.fieldNames,\n ) as Required<UploadWrapperFileItem>;\n\n const valueList = useMemo(\n () => (isUndefinedOrNull(value) ? undefined : toArray<TPlainObject>(value)),\n [value],\n );\n\n fbaHooks.useEffectCustom(() => {\n const errorList = uploadList?.filter((item) => item['status'] === 'error') || [];\n let newList = [] as TAny[];\n valueList?.forEach((item) => {\n // 判断item 为 File类型\n if (item['lastModified']) {\n newList.push(item);\n } else {\n newList.push({\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n status: 'done',\n isOriginal: true,\n responseData: item['responseData'],\n });\n }\n });\n if (errorList.length > 0) {\n const newErrorList = errorList.map((item) => {\n return {\n uid: item.uid,\n name: item.name,\n status: 'error',\n isOriginal: true,\n response: item['response'],\n };\n }) as TAny[];\n newList = newList.concat(newErrorList);\n }\n setUploadList(newList);\n }, [fieldNames.name, fieldNames.uid, fieldNames.url, valueList]);\n\n const handleResponse = (fileList: UploadFile<TAny>[]) => {\n const newFileList: TAny[] = [];\n let hasError = false;\n fileList.forEach((item) => {\n if (item['isOriginal']) {\n if (item['status'] !== 'error') {\n newFileList.push({\n [fieldNames.uid]: item.uid,\n [fieldNames.name]: item.name,\n [fieldNames.url]: item.url,\n });\n }\n } else if (isPlainObject(item.response)) {\n if (item.response.code === '0000') {\n const respData = item.response.data;\n const result = (props.onRequestResultAdapter?.(respData) || respData) as TPlainObject;\n newFileList.push({\n [fieldNames.uid]: result[fieldNames.uid] || item.uid,\n [fieldNames.name]: result[fieldNames.name] || item.name,\n [fieldNames.url]: result[fieldNames.url],\n responseData: respData,\n });\n } else {\n const errorMsg = item.response.message || '上传失败';\n hasError = true;\n item.status = 'error';\n item.response = item.response.message || '上传失败';\n if (onUploadError) {\n onUploadError?.(errorMsg);\n } else {\n void message.error('上传操作失败...');\n }\n }\n }\n });\n if (hasError) {\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n }\n onChange?.(newFileList);\n };\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n const fileList = info.fileList as TPlainObject[];\n if (info.file.status === 'done') {\n const newFileList = [...info.fileList];\n const donwList = newFileList.filter((item) => item.status === 'done' || item['isOriginal']);\n\n const allDone = donwList.length === newFileList.length;\n if (allDone) {\n handleResponse(newFileList);\n }\n flushSync(() => setUploadList(newFileList));\n return;\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = valueList !== undefined ? [...valueList] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid] || item.uid;\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n if (onUploadError) {\n onUploadError();\n } else {\n void message.error('上传操作失败...');\n }\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n props.onUploadChange?.(info);\n });\n\n const hiddenEmtry = useMemo(() => {\n if (otherProps.maxCount === undefined || !limitHidden) return false;\n if (otherProps.maxCount === 0) return true;\n if (uploadList && uploadList.length >= otherProps.maxCount) return true;\n return false;\n }, [limitHidden, otherProps.maxCount, uploadList]);\n\n const beforeUpload = (_file, fileList) => {\n if (autoSubmit === false) {\n const maxCount = otherProps.maxCount;\n let mergeList = [...(valueList || []), ...fileList];\n let uploadListMerge = [...(uploadList || []), ...fileList];\n if (maxCount !== undefined && maxCount !== null) {\n if (mergeList.length > maxCount) {\n mergeList = mergeList.slice(mergeList.length - maxCount);\n uploadListMerge = uploadListMerge.slice(uploadListMerge.length - maxCount);\n }\n }\n setUploadList(uploadListMerge);\n props.onChange?.(mergeList);\n return false;\n }\n return true;\n };\n\n return (\n <Upload\n beforeUpload={beforeUpload}\n {...otherProps}\n onChange={onUploadChange}\n fileList={uploadList}\n className={classNames('v-upload-wrapper', otherProps.className)}\n >\n {otherProps.disabled || hiddenEmtry ? null : (\n <UploadTrigger triggerText={triggerText} listType={otherProps.listType}>\n {props.children}\n </UploadTrigger>\n )}\n </Upload>\n );\n};\n\nconst UploadTrigger = (props: {\n listType?: UploadListType;\n children?: ReactNode | ReactNode[];\n triggerText?: string;\n}) => {\n if (props.children) return <Fragment>{props.children}</Fragment>;\n if (props.listType === 'picture-card') {\n return (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>{props.triggerText || '上传图片'}</div>\n </div>\n );\n }\n if (props.listType === 'picture') {\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择图片上传'}\n </Button>\n );\n }\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择文件上传'}\n </Button>\n );\n};\n"],"names":["UploadWrapper","props","onChange","onUploadError","value","triggerText","limitHidden","autoSubmit","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","uploadList","setUploadList","fieldNames","_extend","uid","name","url","valueList","useMemo","isUndefinedOrNull","undefined","toArray","fbaHooks","useEffectCustom","errorList","filter","item","newList","forEach","push","status","isOriginal","responseData","length","newErrorList","map","response","concat","handleResponse","fileList","newFileList","hasError","_newFileList$push","_isPlainObject","code","_newFileList$push2","respData","data","result","onRequestResultAdapter","errorMsg","message","error","onUploadChange","_hooks","useCallbackRef","info","file","donwList","allDone","flushSync","targetList","targetIndex","findIndex","tempUid","splice","hiddenEmtry","maxCount","beforeUpload","_file","mergeList","uploadListMerge","slice","_jsx","Upload","_extends","className","_classNames","children","disabled","UploadTrigger","listType","Fragment","_jsxs","_PlusOutlined","style","marginTop","Button","type","ghost"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/upload-wrapper/utils.ts","@flatbiz/antd/src/upload-wrapper/upload-wrapper.tsx"],"sourcesContent":["export const getBase64 = (file): Promise<string> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n","import { PlusOutlined } from '@ant-design/icons';\nimport { isPlainObject } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { isUndefinedOrNull, openNewWindow, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { UploadProps } from 'antd';\nimport { Button, Image, message, Upload } from 'antd';\nimport type { UploadChangeParam } from 'antd/lib/upload';\nimport type { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport type { ReactElement, ReactNode } from 'react';\nimport { cloneElement, Fragment, useMemo, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\nimport { getBase64 } from './utils';\n\nexport type UploadWrapperFileItem = {\n uid: string;\n name: string;\n url?: string;\n};\n\nexport type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {\n value?: T[] | T;\n onChange?: (value?: T[]) => void;\n onUploadError?: (message?: string) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性取值映射\n */\n fieldNames?: {\n uid: string;\n name?: string;\n url?: string;\n /** 文件大小 */\n size?: string | number;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject;\n /** 操作触发显示文本 */\n triggerText?: string;\n /** 超过maxCount 隐藏上传入口 */\n limitHidden?: boolean;\n /**\n * 自动提交,默认:true\n * ```\n * 1. 自定义beforeUpload配置后 autoSubmit 失效\n * ```\n */\n autoSubmit?: boolean;\n /** 图片预览开关, 重写 onPreview 方法后失效 */\n imagePreviewSwitch?: boolean;\n /** 图片预览文件类型,默认:['png', 'jpg', 'jpeg', 'gif'] */\n imagePreviewAccept?: string[];\n /**\n * 配置文件额外操作\n * ```\n * 额外操作超过两项后,listType为 picture-card、picture-circle 时会出现显示异常,需要自行修改覆盖样式\n * ```\n */\n extraOperate?: {\n icon: ReactElement;\n onClick: (file: UploadFile, fileList: UploadFile[], e) => void;\n }[];\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * demo: https://fex.qa.tcshuke.com/docs/admin/main/file/upload\n * 1. 可通过配置children替换默认上传触发布局\n * 2. 接口返回结构:\n * formData上传接口返回值\n * {\n * code: '0000',\n * data: {\n * uid: '唯一值,可使用fileKey值'\n * name: '文件名称'\n * url: '预览地址'\n * }\n * }\n * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射\n *\n * 4. 最佳使用方式,与Form结合使用\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <UploadWrapper action={uploadUrl} />\n * </Form.Item>\n *\n * 5. 回填数据结构\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * }]\n * 1. 其中 uid、name、url 可为其他命名,通过 fieldNames 进行映射即可,\n * 2. 其他需要的字段可在对象中添加 responseData 对象\n * 例如:\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * responseData: { 'xx':'xxx' }\n * }]\n * ```\n *\n */\nexport const UploadWrapper = (props: UploadWrapperProps) => {\n const {\n onChange,\n onUploadError,\n value,\n triggerText,\n limitHidden,\n autoSubmit,\n imagePreviewSwitch,\n imagePreviewAccept,\n extraOperate,\n ...otherProps\n } = props;\n const imagePreviewAcceptFt = isUndefinedOrNull(imagePreviewAccept)\n ? ['png', 'jpg', 'jpeg', 'gif']\n : imagePreviewAccept;\n const [previewImage, setPreviewImage] = useState<string>();\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n size: 'size',\n },\n props.fieldNames,\n );\n\n const valueList = useMemo(\n () => (isUndefinedOrNull(value) ? undefined : toArray<TPlainObject>(value)),\n [value],\n );\n\n fbaHooks.useEffectCustom(() => {\n const errorList = uploadList?.filter((item) => item['status'] === 'error') || [];\n let newList = [] as TAny[];\n valueList?.forEach((item) => {\n // 判断item 为 File类型\n if (item['lastModified']) {\n newList.push(item);\n } else {\n newList.push({\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n size: item[fieldNames.size],\n responseData: item['responseData'],\n status: 'done',\n isOriginal: true,\n });\n }\n });\n if (errorList.length > 0) {\n const newErrorList = errorList.map((item) => {\n return {\n uid: item.uid,\n name: item.name,\n status: 'error',\n isOriginal: true,\n response: item['response'],\n };\n }) as TAny[];\n newList = newList.concat(newErrorList);\n }\n setUploadList(newList);\n }, [fieldNames.name, fieldNames.uid, fieldNames.url, valueList]);\n\n const handleResponse = (fileList: UploadFile<TAny>[]) => {\n const newFileList: TAny[] = [];\n let hasError = false;\n fileList.forEach((item) => {\n if (item['isOriginal']) {\n if (item['status'] !== 'error') {\n const target: TPlainObject = {\n [fieldNames.uid]: item.uid,\n [fieldNames.name]: item.name,\n [fieldNames.url]: item.url,\n };\n if (!isUndefinedOrNull(item.size)) {\n target[fieldNames.size] = item.size;\n }\n if (item['responseData']) {\n target.responseData = item['responseData'];\n }\n newFileList.push(target);\n }\n } else if (isPlainObject(item.response)) {\n if (item.response.code === '0000') {\n const respData = item.response.data;\n const result = (props.onRequestResultAdapter?.(respData) || respData) as TPlainObject;\n const target: TPlainObject = {\n [fieldNames.uid]: result[fieldNames.uid] || item.uid,\n [fieldNames.name]: result[fieldNames.name] || item.name,\n [fieldNames.url]: result[fieldNames.url],\n };\n if (!isUndefinedOrNull(result[fieldNames.size])) {\n target[fieldNames.size] = result[fieldNames.size];\n }\n newFileList.push({\n ...target,\n responseData: respData,\n });\n } else {\n const errorMsg = item.response.message || '上传失败';\n hasError = true;\n item.status = 'error';\n item.response = item.response.message || '上传失败';\n if (onUploadError) {\n onUploadError?.(errorMsg);\n } else {\n void message.error('上传操作失败...');\n }\n }\n }\n });\n if (hasError) {\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n }\n onChange?.(newFileList);\n };\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n const fileList = info.fileList as TPlainObject[];\n if (info.file.status === 'done') {\n const newFileList = [...info.fileList];\n const donwList = newFileList.filter((item) => item.status === 'done' || item['isOriginal']);\n\n const allDone = donwList.length === newFileList.length;\n if (allDone) {\n handleResponse(newFileList);\n }\n flushSync(() => setUploadList(newFileList));\n return;\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = valueList !== undefined ? [...valueList] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid] || item.uid;\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n if (onUploadError) {\n onUploadError();\n } else {\n void message.error('上传操作失败...');\n }\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n props.onUploadChange?.(info);\n });\n\n const hiddenEmtry = useMemo(() => {\n if (otherProps.maxCount === undefined || !limitHidden) return false;\n if (otherProps.maxCount === 0) return true;\n if (uploadList && uploadList.length >= otherProps.maxCount) return true;\n return false;\n }, [limitHidden, otherProps.maxCount, uploadList]);\n\n const beforeUpload = (_file, fileList) => {\n if (autoSubmit === false) {\n const maxCount = otherProps.maxCount;\n let mergeList = [...(valueList || []), ...fileList];\n let uploadListMerge = [...(uploadList || []), ...fileList];\n if (maxCount !== undefined && maxCount !== null) {\n if (mergeList.length > maxCount) {\n mergeList = mergeList.slice(mergeList.length - maxCount);\n uploadListMerge = uploadListMerge.slice(uploadListMerge.length - maxCount);\n }\n }\n setUploadList(uploadListMerge);\n props.onChange?.(mergeList);\n return false;\n }\n return true;\n };\n\n const handlePreview = async (file: UploadFile) => {\n const name = file.name || '';\n const extension = name.slice(name.lastIndexOf('.') + 1);\n const acceptTarget = imagePreviewAcceptFt?.find((item) => {\n return item.toLocaleLowerCase() === extension.toLocaleLowerCase();\n });\n if (acceptTarget) {\n if (!file.url && !file.preview) {\n file.preview = await getBase64(file.originFileObj);\n }\n setPreviewImage(file.url || (file.preview as string));\n } else {\n openNewWindow(file.url as string);\n }\n };\n\n return (\n <Fragment>\n <Upload\n beforeUpload={beforeUpload}\n onPreview={imagePreviewSwitch ? handlePreview : undefined}\n showUploadList\n itemRender={(originNode, file, fileList) => {\n if (!extraOperate || !extraOperate.length) return originNode;\n const countSign = `${otherProps.disabled ? 1 : 2}-${extraOperate.length}`;\n return (\n <div\n className={classNames(\n 'v-upload-list-item-actions-wrapper',\n `v-upload-list-item-extra-actions-${countSign}`,\n )}\n style={{ height: '100%' }}\n >\n {cloneElement(originNode, {\n children: [\n originNode.props.children,\n <div key=\"extra-actions\" className=\"v-upload-list-item-extra-actions\">\n {extraOperate.map((item, index) => {\n return (\n <ButtonWrapper\n key={index}\n size=\"small\"\n type=\"text\"\n icon={item.icon}\n onClick={item.onClick.bind(null, file, fileList)}\n />\n );\n })}\n </div>,\n ].filter(Boolean),\n })}\n </div>\n );\n }}\n {...otherProps}\n onChange={onUploadChange}\n fileList={uploadList}\n className={classNames('v-upload-wrapper', otherProps.className)}\n >\n {otherProps.disabled || hiddenEmtry ? null : (\n <UploadTrigger triggerText={triggerText} listType={otherProps.listType}>\n {props.children}\n </UploadTrigger>\n )}\n </Upload>\n {previewImage ? (\n <Image\n wrapperStyle={{ display: 'none' }}\n preview={{\n visible: !!previewImage,\n onVisibleChange: () => setPreviewImage(undefined),\n afterOpenChange: (visible) => !visible && setPreviewImage(''),\n }}\n src={previewImage}\n />\n ) : null}\n </Fragment>\n );\n};\n\nconst UploadTrigger = (props: {\n listType?: UploadListType;\n children?: ReactNode | ReactNode[];\n triggerText?: string;\n}) => {\n if (props.children) return <Fragment>{props.children}</Fragment>;\n if (props.listType === 'picture-card') {\n return (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>{props.triggerText || '上传图片'}</div>\n </div>\n );\n }\n if (props.listType === 'picture') {\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择图片上传'}\n </Button>\n );\n }\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择文件上传'}\n </Button>\n );\n};\n"],"names":["getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","error","UploadWrapper","props","onChange","onUploadError","value","triggerText","limitHidden","autoSubmit","imagePreviewSwitch","imagePreviewAccept","extraOperate","otherProps","_objectWithoutPropertiesLoose","_excluded","imagePreviewAcceptFt","isUndefinedOrNull","_useState","useState","previewImage","setPreviewImage","_useState2","uploadList","setUploadList","fieldNames","_extend","uid","name","url","size","valueList","useMemo","undefined","toArray","fbaHooks","useEffectCustom","errorList","filter","item","newList","forEach","push","responseData","status","isOriginal","length","newErrorList","map","response","concat","handleResponse","fileList","newFileList","hasError","_target","target","_isPlainObject","code","_target3","respData","data","onRequestResultAdapter","_extends","errorMsg","message","onUploadChange","_hooks","useCallbackRef","info","donwList","allDone","flushSync","targetList","targetIndex","findIndex","tempUid","splice","hiddenEmtry","maxCount","beforeUpload","_file","mergeList","uploadListMerge","slice","handlePreview","$return","$error","extension","acceptTarget","lastIndexOf","find","toLocaleLowerCase","preview","originFileObj","then","$await_3","$If_2","call","this","$boundEx","bind","$If_1","openNewWindow","_jsxs","Fragment","children","_jsx","Upload","onPreview","showUploadList","itemRender","originNode","countSign","disabled","className","_classNames","style","height","cloneElement","index","ButtonWrapper","type","icon","onClick","Boolean","UploadTrigger","listType","Image","wrapperStyle","display","visible","onVisibleChange","afterOpenChange","src","_PlusOutlined","marginTop","Button","ghost"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  /// <reference types="scheduler" />
4
4
 
5
5
  import { API, ModelType } from '@dimjs/model';
6
- import { DateFormatType, TAny, TNoopDefine, TPlainObject } from '@flatbiz/utils';
6
+ import { DateFormatType, LabelValueItem, TAny, TNoopDefine, TPlainObject } from '@flatbiz/utils';
7
7
  import { IAllProps } from '@tinymce/tinymce-react';
8
8
  import { AlertProps, ButtonProps, CardProps, CascaderProps, CheckboxProps, CollapseProps, ColorPickerProps, DrawerProps, DropdownProps, FormInstance, FormItemProps, FormListFieldData, FormListOperation, FormProps, InputNumberProps, InputProps, MentionProps, ModalProps, PaginationProps, PopconfirmProps, PopoverProps, RadioGroupProps, RowProps, SelectProps, SpaceProps, SwitchProps, TableProps, TabsProps, TagProps, TimePickerProps, TimeRangePickerProps, TooltipProps, TreeProps, TreeSelectProps, UploadProps } from 'antd';
9
9
  import { ConfigProviderProps } from 'antd/es/config-provider';
@@ -699,7 +699,7 @@ export type CascaderWrapperProps = Omit<CascaderProps<TAny>, "loading" | "notFou
699
699
  * 是否动态加载选项
700
700
  */
701
701
  isDynamicLoad?: boolean;
702
- value?: string | number | Array<string | number>;
702
+ value?: string | number | Array<string | number> | LabelValueItem | LabelValueItem[];
703
703
  onChange?: (value?: string | number | Array<string | number>, selectedList?: TPlainObject[]) => void;
704
704
  requestMessageConfig?: TRequestStatusProps["messageConfig"];
705
705
  /**
@@ -710,19 +710,19 @@ export type CascaderWrapperProps = Omit<CascaderProps<TAny>, "loading" | "notFou
710
710
  * ```
711
711
  */
712
712
  responseType?: "last" | "all";
713
+ /** 响应数据是否包含label、value */
714
+ labelInValue?: boolean;
713
715
  };
714
716
  export type CascaderWrapperRefApi = {
715
717
  getCascaderList: () => TPlainObject[];
716
718
  };
717
719
  /**
718
- * 级联选择器包装组件,接收value和相应data都是叶子节点数据
719
- * @param props
720
- * @returns
720
+ * 级联选择器包装组件
721
721
  * ```
722
722
  * 1. 数据源中 value 不能重复
723
723
  * 2. 不支持多选
724
724
  * 3. modelKey的配置是为了缓存数据,只缓存初始化数据,如果isDynamicLoad=true,动态获取的数据不再缓存
725
- * 4. onChange操作第一个参数返回叶子节点value,第二个参数返回选中的多级数据
725
+ * 4. onChange操作第一个参数返回叶子节点value(可配置返回多级),第二个参数返回选中的多级数据
726
726
  * 5. isDynamicLoad=true 会在请求中添加当前选中option的fieldNames.value为key的数据
727
727
  * ```
728
728
  */
@@ -753,7 +753,7 @@ export declare const CascaderWrapper: import("react").ForwardRefExoticComponent<
753
753
  * 是否动态加载选项
754
754
  */
755
755
  isDynamicLoad?: boolean | undefined;
756
- value?: string | number | (string | number)[] | undefined;
756
+ value?: string | number | (string | number)[] | LabelValueItem | LabelValueItem[] | undefined;
757
757
  onChange?: ((value?: string | number | Array<string | number>, selectedList?: TPlainObject[]) => void) | undefined;
758
758
  requestMessageConfig?: TRequestStatusProps["messageConfig"];
759
759
  /**
@@ -764,6 +764,8 @@ export declare const CascaderWrapper: import("react").ForwardRefExoticComponent<
764
764
  * ```
765
765
  */
766
766
  responseType?: "all" | "last" | undefined;
767
+ /** 响应数据是否包含label、value */
768
+ labelInValue?: boolean | undefined;
767
769
  } & import("react").RefAttributes<CascaderWrapperRefApi>>;
768
770
  export interface CommonPropsWithChildren<S extends TPlainObject = TPlainObject> {
769
771
  className?: string;
@@ -1926,6 +1928,8 @@ export type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {
1926
1928
  uid: string;
1927
1929
  name?: string;
1928
1930
  url?: string;
1931
+ /** 文件大小 */
1932
+ size?: string | number;
1929
1933
  };
1930
1934
  /**
1931
1935
  * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换
@@ -1942,6 +1946,20 @@ export type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {
1942
1946
  * ```
1943
1947
  */
1944
1948
  autoSubmit?: boolean;
1949
+ /** 图片预览开关, 重写 onPreview 方法后失效 */
1950
+ imagePreviewSwitch?: boolean;
1951
+ /** 图片预览文件类型,默认:['png', 'jpg', 'jpeg', 'gif'] */
1952
+ imagePreviewAccept?: string[];
1953
+ /**
1954
+ * 配置文件额外操作
1955
+ * ```
1956
+ * 额外操作超过两项后,listType为 picture-card、picture-circle 时会出现显示异常,需要自行修改覆盖样式
1957
+ * ```
1958
+ */
1959
+ extraOperate?: {
1960
+ icon: ReactElement;
1961
+ onClick: (file: UploadFile, fileList: UploadFile[], e: any) => void;
1962
+ }[];
1945
1963
  } & Omit<UploadProps, "onChange" | "fileList">;
1946
1964
  /**
1947
1965
  * 文件上传
@@ -1971,7 +1989,15 @@ export type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {
1971
1989
  * name(非必填): 'image.png',
1972
1990
  * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',
1973
1991
  * }]
1974
- * 其中 uid、name、url 可为其他命名,通过 fieldNames 进行映射即可
1992
+ * 1. 其中 uid、name、url 可为其他命名,通过 fieldNames 进行映射即可,
1993
+ * 2. 其他需要的字段可在对象中添加 responseData 对象
1994
+ * 例如:
1995
+ * [{
1996
+ * uid: '唯一值',
1997
+ * name(非必填): 'image.png',
1998
+ * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',
1999
+ * responseData: { 'xx':'xxx' }
2000
+ * }]
1975
2001
  * ```
1976
2002
  *
1977
2003
  */
@@ -2833,7 +2859,7 @@ export type EasyTableProps = {
2833
2859
  onFormFinish?: (values?: TPlainObject) => void;
2834
2860
  /** 在父节点高度下,上下铺满;默认值:true */
2835
2861
  isFull?: boolean;
2836
- /** 查询条件固定,不随滚动条滚动 */
2862
+ /** 查询条件固定,不随滚动条滚动, 屏幕尺寸为xs时失效 */
2837
2863
  filterFixed?: boolean;
2838
2864
  /** 分页区域固定,不随滚动条滚动 */
2839
2865
  paginationFixed?: boolean;
@@ -4166,6 +4192,10 @@ export interface LocalLoadingProps {
4166
4192
  showRequiredError?: boolean;
4167
4193
  /** 自定义异常渲染处理 */
4168
4194
  errorRender?: (error?: TAny) => ReactElement;
4195
+ /** 设置内部滚动,需要设置 style.height 才能生效,@5.0.16 */
4196
+ contentScroll?: boolean;
4197
+ /** 设置高度 */
4198
+ height?: number | string;
4169
4199
  }
4170
4200
  export type LocalLoadingRefApi = {
4171
4201
  onRefresh: (params?: TPlainObject) => void;
@@ -5494,7 +5524,7 @@ export type TableTitleTooltipProps = {
5494
5524
  */
5495
5525
  export declare const TableTitleTooltip: (props: TableTitleTooltipProps) => import("react/jsx-runtime").JSX.Element;
5496
5526
  export type TabsStickyProps = {
5497
- tabsProps: TabsProps;
5527
+ tabsProps: Omit<TabsProps, "tabPosition">;
5498
5528
  /** tabs头部布局 */
5499
5529
  headerRender?: ReactElement;
5500
5530
  /** 点击tabItem后,tab跳到顶部吸顶效果;默认值true */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flatbiz/antd",
3
- "version": "4.5.34",
3
+ "version": "4.5.35",
4
4
  "description": "flat-biz ui components",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -31,7 +31,7 @@
31
31
  "@dimjs/model": ">=1.2.3",
32
32
  "@dimjs/model-react": ">=1.2.3",
33
33
  "@dimjs/utils": ">=1.5.1",
34
- "@flatbiz/utils": ">=4.0.31",
34
+ "@flatbiz/utils": ">=4.0.32",
35
35
  "@wove/react": ">=1.2.23",
36
36
  "antd": ">=5.11.0",
37
37
  "dayjs": ">=1.11.9",
@@ -45,7 +45,7 @@
45
45
  "@dimjs/model": "^1.2.3",
46
46
  "@dimjs/model-react": "^1.2.3",
47
47
  "@dimjs/utils": "^1.5.1",
48
- "@flatbiz/utils": "^4.0.31",
48
+ "@flatbiz/utils": "^4.0.32",
49
49
  "@wove/react": "^1.2.23",
50
50
  "antd": "5.11.0",
51
51
  "dayjs": "1.11.9",