@flatbiz/antd 4.5.32 → 4.5.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/cascader-wrapper/index.js +1 -1
- package/esm/cascader-wrapper/index.js.map +1 -1
- package/esm/easy-form/index.js +1 -1
- package/esm/easy-form/index.js.map +1 -1
- package/esm/selector-wrapper/index.js +1 -1
- package/esm/selector-wrapper/index.js.map +1 -1
- package/esm/selector-wrapper-search/index.js +1 -1
- package/esm/selector-wrapper-search/index.js.map +1 -1
- package/esm/selector-wrapper-simple/index.js +1 -1
- package/esm/selector-wrapper-simple/index.js.map +1 -1
- package/esm/table-cell-render/index.js +1 -1
- package/esm/table-cell-render/index.js.map +1 -1
- package/esm/tree-selector-wrapper/index.js +1 -1
- package/esm/tree-selector-wrapper/index.js.map +1 -1
- package/esm/tree-wrapper/index.js +1 -1
- package/esm/tree-wrapper/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -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 u}from"@dimjs/utils/cjs/extend";import{cloneState as a}from"@dimjs/model";import{cloneObject as l,treeNodeParentsList as c}from"@flatbiz/utils";import{Cascader as f,Button as d,message as m}from"antd";import{forwardRef as v,useState as p,useImperativeHandle as g}from"react";import{fbaHooks as h}from"../fba-hooks/index.js";import{RequestStatus as q}from"../request-status/index.js";import{Model as C}from"@dimjs/model-react";import{jsx as L}from"react/jsx-runtime";import"../use-responsive-point-21b8c601.js";var R={selectorList:[],queryIsEmpty:false,requestStatus:"request-init"};var S={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:R};var j={};var w=function e(t){if(!j[t]){j[t]=C(S)}return j[t]};var y=["serviceConfig","modelKey","fieldNames","isDynamicLoad","requestMessageConfig","onSelectorListChange"];var b=v((function(v,C){var R=v.serviceConfig,S=v.modelKey,j=v.fieldNames,b=v.isDynamicLoad,x=v.requestMessageConfig,k=v.onSelectorListChange,B=r(v,y);var N=p([]),P=N[0],E=N[1];var D=h.useSafeState(false),K=D[0],A=D[1];var I=w(S).useStore(),M=I[0],_=I[1];var z="request-progress-"+v.modelKey;var F=u(true,{label:"label",value:"value",children:"children"},j);var H=p(),O=H[0],G=H[1];var J=function e(t){if(R!=null&&R.onRequestResultAdapter){return R.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 Q=n.useCallbackRef((function(){return new Promise((function(e,t){var r,s;if(!(R!=null&&R.onRequest)){return t(new Error("onRequest 调用接口服务不能为空"))}var n=function(){try{return e()}catch(e){return t(e)}};var o=function(e){try{A(false);window[z]=false;void _.changeRequestStatus("request-error");void m.error(e.message||"获取数据异常");return n()}catch(e){return t(e)}};try{A(true);window[z]=true;void _.changeRequestStatus("request-progress");return Promise.resolve(R.onRequest==null?void 0:R.onRequest(R.params)).then((function(e){try{r=e;s=J(r);if(b){s.map((function(e){e.isLeaf=e.isLeaf||false}))}A(false);window[z]=false;void _.setSelectBoxList({selectorList:s||[]});k==null?void 0:k(s||[]);return n()}catch(e){return o(e)}}),o)}catch(e){o(e)}}))}));h.useEffectCustom((function(){if(window[z])return;if(M.requestStatus==="request-success"){E(a(M.selectorList))}else{void Q()}}),[]);h.useEffectCustom((function(){var e=l(M.selectorList);if(v.value){var t=c(v.value,e,true,F);if(t.length===0){G([v.value])}else{G(t)}}else{G(undefined)}E(e)}),[M.selectorList,v.value]);g(C,(function(){return{getCascaderList:function e(){return M.selectorList}}}));var T=n.useCallbackRef((function(){void Q()}));var U=function e(t){return new Promise((function(e,r){var n,o,i,u;o=t[t.length-1];o.loading=true;return Promise.resolve(R==null||R.onRequest==null?void 0:R.onRequest(s({},R.params,(n={},n[F.value]=o[F.value],n)))).then((function(t){try{i=t;u=J(i);if(!u||u.length===0){o.isLeaf=true}else{u.map((function(e){e.isLeaf=e.isLeaf||false}));o.children=u}o.loading=false;void _.setSelectBoxList({selectorList:P||[]});k==null?void 0:k(P||[]);E([].concat(P));return e()}catch(e){return r(e)}}),r)}))};var V=n.useCallbackRef((function(e,t){void(v.onChange==null?void 0:v.onChange(e==null?void 0:e[e.length-1],t))}));var W=n.useCallbackRef((function(){void(v.onChange==null?void 0:v.onChange(undefined))}));return L(f,s({showSearch:true,allowClear:true},B,{popupClassName:t("cascader-wrapper-popup",B.popupClassName),notFoundContent:L(q,{status:M.requestStatus,loading:K,messageConfig:x,errorButton:L(d,{type:"primary",onClick:T,children:"重新获取数据"})}),loading:K,loadData:b?U:undefined,fieldNames:F,suffixIcon:M.requestStatus==="request-error"?L(e,{spin:K,onClick:T}):undefined,options:P,value:O,multiple:false,onChange:V,onClear:W}))}));export{b 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 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 u}from"@dimjs/utils/cjs/extend";import{cloneState as a}from"@dimjs/model";import{cloneObject as l,treeNodeParentsList as c}from"@flatbiz/utils";import{Cascader as f,Button as d,message as m}from"antd";import{forwardRef as v,useState as p,useImperativeHandle as g}from"react";import{fbaHooks as h}from"../fba-hooks/index.js";import{RequestStatus as q}from"../request-status/index.js";import{Model as C}from"@dimjs/model-react";import{jsx as L}from"react/jsx-runtime";import"../use-responsive-point-21b8c601.js";var R={selectorList:[],queryIsEmpty:false,requestStatus:"request-init"};var S={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:R};var j={};var w=function e(t){if(!j[t]){j[t]=C(S)}return j[t]};var y=["serviceConfig","modelKey","fieldNames","isDynamicLoad","requestMessageConfig","onSelectorListChange"];var b=v((function(v,C){var R=v.serviceConfig,S=v.modelKey,j=v.fieldNames,b=v.isDynamicLoad,x=v.requestMessageConfig,k=v.onSelectorListChange,B=r(v,y);var N=p([]),P=N[0],E=N[1];var D=h.useSafeState(false),K=D[0],A=D[1];var I=w(S).useStore(),M=I[0],_=I[1];var z="request-progress-"+v.modelKey;var F=u(true,{label:"label",value:"value",children:"children"},j);var H=p(),O=H[0],G=H[1];var J=function e(t){if(R!=null&&R.onRequestResultAdapter){return R.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 Q=n.useCallbackRef((function(){return new Promise((function(e,t){var r,s;if(!(R!=null&&R.onRequest)){return t(new Error("onRequest 调用接口服务不能为空"))}var n=function(){try{return e()}catch(e){return t(e)}};var o=function(e){try{A(false);window[z]=false;void _.changeRequestStatus("request-error");void m.error(e.message||"获取数据异常");return n()}catch(e){return t(e)}};try{A(true);window[z]=true;void _.changeRequestStatus("request-progress");return Promise.resolve(R.onRequest==null?void 0:R.onRequest(R.params)).then((function(e){try{r=e;s=J(r);if(b){s.map((function(e){e.isLeaf=e.isLeaf||false}))}A(false);window[z]=false;void _.setSelectBoxList({selectorList:s||[]});k==null?void 0:k(s||[]);return n()}catch(e){return o(e)}}),o)}catch(e){o(e)}}))}));h.useEffectCustom((function(){if(window[z])return;if(M.requestStatus==="request-success"){E(a(M.selectorList))}else{void Q()}}),[]);h.useEffectCustom((function(){var e=l(M.selectorList);if(v.value){var t=c(v.value,e,true,F).reverse();if(t.length===0){G([v.value])}else{G(t)}}else{G(undefined)}E(e)}),[M.selectorList,v.value]);g(C,(function(){return{getCascaderList:function e(){return M.selectorList}}}));var T=n.useCallbackRef((function(){void Q()}));var U=function e(t){return new Promise((function(e,r){var n,o,i,u;o=t[t.length-1];o.loading=true;return Promise.resolve(R==null||R.onRequest==null?void 0:R.onRequest(s({},R.params,(n={},n[F.value]=o[F.value],n)))).then((function(t){try{i=t;u=J(i);if(!u||u.length===0){o.isLeaf=true}else{u.map((function(e){e.isLeaf=e.isLeaf||false}));o.children=u}o.loading=false;void _.setSelectBoxList({selectorList:P||[]});k==null?void 0:k(P||[]);E([].concat(P));return e()}catch(e){return r(e)}}),r)}))};var V=n.useCallbackRef((function(e,t){void(v.onChange==null?void 0:v.onChange(e==null?void 0:e[e.length-1],t))}));var W=n.useCallbackRef((function(){void(v.onChange==null?void 0:v.onChange(undefined))}));return L(f,s({showSearch:true,allowClear:true},B,{popupClassName:t("cascader-wrapper-popup",B.popupClassName),notFoundContent:L(q,{status:M.requestStatus,loading:K,messageConfig:x,errorButton:L(d,{type:"primary",onClick:T,children:"重新获取数据"})}),loading:K,loadData:b?U:undefined,fieldNames:F,suffixIcon:M.requestStatus==="request-error"?L(e,{spin:K,onClick:T}):undefined,options:P,value:O,multiple:false,onChange:V,onClear:W}))}));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, 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;\n onChange?: (value?: string | number, selectedList?: TPlainObject[]) => void;\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\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 ...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 if (props.value) {\n const filterList = treeNodeParentsList(props.value, cloneList, true, fieldNamesMerge);\n if (filterList.length === 0) {\n setValueList([props.value as string]);\n } else {\n setValueList(filterList as string[]);\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 void props.onChange?.(values?.[values.length - 1], selectList);\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","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","filterList","treeNodeParentsList","length","undefined","useImperativeHandle","getCascaderList","onAgainRequest","loadData","selectedOptions","_extends2","targetOption","_extends","$await_3","concat","onChange","values","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/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, 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;\n onChange?: (value?: string | number, selectedList?: TPlainObject[]) => void;\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\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 ...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 if (props.value) {\n const filterList = treeNodeParentsList(props.value, cloneList, true, fieldNamesMerge).reverse();\n if (filterList.length === 0) {\n setValueList([props.value as string]);\n } else {\n setValueList(filterList as string[]);\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 void props.onChange?.(values?.[values.length - 1], selectList);\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","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","filterList","treeNodeParentsList","reverse","length","undefined","useImperativeHandle","getCascaderList","onAgainRequest","loadData","selectedOptions","_extends2","targetOption","_extends","$await_3","concat","onChange","values","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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"}
|
package/esm/easy-form/index.js
CHANGED
|
@@ -5,5 +5,5 @@ import './../form-wrapper/index.css';
|
|
|
5
5
|
import './../pre-defined-class-name/index.css';
|
|
6
6
|
import './index.css';
|
|
7
7
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
8
|
-
import{classNames as r}from"@dimjs/utils/cjs/class-names";import{a as e,_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isUndefinedOrNull as n,dom as
|
|
8
|
+
import{classNames as r}from"@dimjs/utils/cjs/class-names";import{a as e,_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isUndefinedOrNull as n,dom as a}from"@flatbiz/utils";import{useMemo as i,useRef as l,Fragment as o,Children as s,cloneElement as m}from"react";import{BoxGrid as u}from"../box-grid/index.js";import{fbaHooks as f}from"../fba-hooks/index.js";import{FormWrapper as d}from"../form-wrapper/index.js";import{preDefinedClassName as p}from"../pre-defined-class-name/index.js";import{jsxs as c,jsx as x}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-number";import"ahooks";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"../use-responsive-point-21b8c601.js";import"antd";var v=function r(e){var t=e.type["domTypeName"];var r=e.props["hidden"];return r||t=="FormItemHidden"};var h=function r(e){var t=e.type["domTypeName"];var n=e.props["hidden"];if(t==="FormItemWrapper"){return n||e.props["isClear"]}return n||t=="FormItemHidden"};var y=["column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","formItemGap","isPure","nonuseFormWrapper"];var g=function g(b){var I=f.useResponsivePoint()||"";var j=b.column,F=b.forceColumn,N=b.children,W=b.width,w=b.gridGutter,C=b.labelWidth,G=b.labelItemVertical,A=b.labelAlign,P=b.formItemGap,k=P===void 0?"15":P,T=b.isPure,V=b.nonuseFormWrapper,B=e(b,y);var H=i((function(){if(F){var r=24/F;return{xs:r,sm:r,md:r,lg:r,xl:r,xxl:r}}if(!j){return{xs:24,sm:12,md:12,lg:8,xl:8,xxl:6}}var e={1:{xs:24,sm:24,md:24,lg:24,xl:24,xxl:24},2:{xs:24,sm:12,md:12,lg:12,xl:12,xxl:12},3:{xs:24,sm:12,md:12,lg:8,xl:8,xxl:8},4:{xs:24,sm:12,md:12,lg:6,xl:6,xxl:6}};return e[j]}),[j,F]);var R=function r(){return s.toArray(N).filter(v)};var L=function r(){return s.toArray(N).filter((function(r){return!h(r)})).map((function(r,e){var n=r.type["domTypeName"];if(n==="BoxGridCol")return x(o,{children:r},e);var a=undefined;if(n==="FormItemWrapper"||n==="FormItemText"||n==="FormItemSpan"){a=r.props["span"];if(a){if(I==="xs"){a=24}else if(I==="sm"){a=a>12?a:12}}}if(n==="FormItemSpan"){return m(r,t({},r.props,H,{span:a,key:e}))}return x(u.Col,t({},H,{span:a,children:r}),e)})).filter(Boolean)};var S=i((function(){if(["xs","sm"].includes(I)||!W){return{}}return{width:W}}),[I,W]);var _=n(w)?[15,0]:w;var z=l(null);var E=function r(){try{if(V){return true}if(z.current){var e=a.findParentsElement(z.current,(function(r){var e;return(e=r.classList)==null||e.contains==null?void 0:e.contains("easy-form")}));return e?true:false}return undefined}catch(r){console.log("error",r);return false}};var q=E();var D=i((function(){if(["xs"].includes(I)){return"left"}return A}),[A,I]);var J=i((function(){return p.getFormLayoutClassName({labelWidth:C,labelItemVertical:G,labelAlign:D,formItemGap:k,className:B.className})}),[C,G,D,k,B.className]);return c(o,{children:[x("div",{className:"easy-form-anchor",ref:z}),q===true?x("div",{style:t({},S,B.style),className:r("easy-form",{"easy-form-pure":T},"easy-form-nested",J),children:T?N:c(o,{children:[R(),x(u.Row,{gutter:_,children:L()})]})}):undefined,q===false?x(d,t({},B,{labelWidth:C,labelAlign:D,labelItemVertical:G,formItemGap:k,style:t({},S,B.style),className:r("easy-form",{"easy-form-pure":T},J),autoComplete:"off",children:T?N:c(o,{children:[R(),x(u.Row,{gutter:_,children:L()})]})})):undefined]})};export{g as EasyForm};
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-form/form.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { dom, isUndefinedOrNull, TAny } from '@flatbiz/utils';\nimport { Children, cloneElement, Fragment, ReactNode, useMemo, useRef } from 'react';\nimport { BoxGrid } from '../box-grid';\nimport { BoxRowProps } from '../box-grid/row';\nimport { GutterParams } from '../box-grid/type';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport './style.less';\n\nexport type EasyFormProps = Omit<FormWrapperProps, 'children'> & {\n /**\n * 定义一行显示几列(当外层宽度尺寸大于 992px(lg) 时,一行显示几列), 默认值:3\n * ```\n * 1. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响(column=1除外)\n * 2. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 3. 列数尺寸定义\n * {\n * 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n * 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n * 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n * 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n * };\n * ```\n */\n column?: 1 | 2 | 3 | 4;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4;\n /**\n * Form显示宽度,可数值、可百分比;在小屏幕尺寸(xs、sm)上无效\n */\n width?: number | string;\n /** 网格间距 */\n gridGutter?: BoxRowProps['gutter'];\n children: ReactNode;\n /**\n * 是否为纯净模式,对EasyForm的子节点不做任何包装处理\n */\n isPure?: boolean;\n /**\n * true: 不使用Antd Form包裹,可在Form、EasyForm、FormWrapper内部使用\n */\n nonuseFormWrapper?: boolean;\n};\n\n/**\n * 简单Form布局,可自定义网格布局\n * ```\n * 1. demo:https://fex.qa.tcshuke.com/docs/admin/main/form/grid\n * 2. EasyForm的children列表会进行网格化布局,可通过设置 isPure = true设置纯净模式(对EasyForm的子节点不做任何包装处理)\n * 3. EasyForm可嵌套使用,嵌套内部的<EasyForm />节点Form相关属性失效,例如属性form、initialValues等都失效\n * <EasyForm form={form}>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * </EasyForm>\n * 4. 布局网格以当前组件的宽度来计算的,不是屏幕宽度\n * 5. EasyForm 子节点包含 hidden = true 会被忽略\n * 6. 通过 column 可定义一行显示几列FormItem\n * 7. 通过 labelItemVertical 可定义 formitem 竖直布局\n * 8. 通过 formItemGap 可定义 formItem竖直方向间隙\n * 9. 通过 forceColumn 可强制定义一行显示几列,不考虑响应式\n * 10. 通过 labelWidth 可控制Form内部所有label的宽度(可实现整齐效果)\n * 11. 自定义栅格占位格数,见下方`例如`\n\n * 例如\n * <EasyForm column={3}>\n *\t <FormItemWrapper name=\"field1\" label=\"条件1\">\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <!-- !!自定义栅格占位格数第一种方式:可通过使用 BoxGrid.Col 包裹元素来自定义网格占比 -->\n *\t <BoxGrid.Col span={24}>\n *\t <FormItemWrapper name=\"field5\" label=\"条件5\">\n *\t \t<Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t </BoxGrid.Col>\n *\t <!-- !!自定义栅格占位格数第二种方式:如果为FormItemWrapper组件,可设置span属性 -->\n *\t <FormItemWrapper name=\"field6\" label=\"条件6\" span={24}>\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <FormItemWrapper noStyle span={24}>\n *\t <Button>按钮</Buttone>\n *\t </FormItemWrapper>\n * </EasyForm>\n * ```\n */\nexport const EasyForm = (props: EasyFormProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const {\n column,\n forceColumn,\n children,\n width,\n gridGutter,\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap = '15',\n isPure,\n nonuseFormWrapper,\n ...otherProps\n } = props;\n\n const gridSize = useMemo(() => {\n if (forceColumn) {\n const num = 24 / forceColumn;\n return { xs: num, sm: num, md: num, lg: num, xl: num, xxl: num };\n }\n if (!column) {\n return { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n }\n const columnMap = {\n 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n };\n return columnMap[column];\n }, [column, forceColumn]);\n\n const getHiddenRowChildren = () => {\n return Children.toArray(children).filter((item: TAny) => {\n return item.props['hidden'] || item.type['domTypeName'] == 'FormItemHidden';\n });\n };\n\n const getFormRowChildren = () => {\n return Children.toArray(children)\n .filter((item: TAny) => {\n return !item.props['hidden'] && item.type['domTypeName'] != 'FormItemHidden';\n })\n .map((item: TAny, index) => {\n const domTypeName = item.type['domTypeName'];\n if (domTypeName === 'BoxGridCol') return <Fragment key={index}>{item}</Fragment>;\n let span: number | undefined = undefined;\n if (\n domTypeName === 'FormItemWrapper' ||\n domTypeName === 'FormItemText' ||\n domTypeName === 'FormItemSpan'\n ) {\n span = item.props['span'] as number;\n if (span) {\n if (screenType === 'xs') {\n span = 24;\n } else if (screenType === 'sm') {\n span = span > 12 ? span : 12;\n }\n }\n }\n if (domTypeName === 'FormItemSpan') {\n return cloneElement(item, {\n ...item.props,\n ...gridSize,\n span,\n key: index,\n });\n }\n return (\n <BoxGrid.Col key={index} {...gridSize} span={span}>\n {item}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\n };\n\n const innerStyle = useMemo(() => {\n /** 小屏幕不控制宽度 */\n if (['xs', 'sm'].includes(screenType) || !width) {\n return {};\n }\n return { width };\n }, [screenType, width]);\n\n const gutter = isUndefinedOrNull(gridGutter) ? ([15, 0] as GutterParams) : gridGutter;\n const anchorRef = useRef<HTMLDivElement>(null);\n\n // 是否嵌套内部EasyForm节点\n const getIsNestedEasyForm = () => {\n try {\n if (nonuseFormWrapper) {\n return true;\n }\n if (anchorRef.current) {\n const target = dom.findParentsElement(anchorRef.current, (node) => {\n return node.classList?.contains?.('easy-form');\n });\n return target ? true : false;\n }\n return undefined;\n } catch (error) {\n console.log('error', error);\n return false;\n }\n };\n\n const isNestedEasyForm = getIsNestedEasyForm();\n\n const labelAlignNew = useMemo(() => {\n if (['xs'].includes(screenType)) {\n return 'left';\n }\n return labelAlign;\n }, [labelAlign, screenType]);\n\n const fromLayoutClassName = useMemo(() => {\n return preDefinedClassName.getFormLayoutClassName({\n labelWidth,\n labelItemVertical,\n labelAlign: labelAlignNew,\n formItemGap,\n className: otherProps.className,\n });\n }, [labelWidth, labelItemVertical, labelAlignNew, formItemGap, otherProps.className]);\n\n return (\n <Fragment>\n <div className=\"easy-form-anchor\" ref={anchorRef}></div>\n {isNestedEasyForm === true ? (\n <div\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames(\n 'easy-form',\n { 'easy-form-pure': isPure },\n 'easy-form-nested',\n fromLayoutClassName,\n )}\n >\n {isPure ? (\n children\n ) : (\n <Fragment>\n {getHiddenRowChildren()}\n <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>\n </Fragment>\n )}\n </div>\n ) : undefined}\n {isNestedEasyForm === false ? (\n <FormWrapper\n {...otherProps}\n labelWidth={labelWidth}\n labelAlign={labelAlignNew}\n labelItemVertical={labelItemVertical}\n formItemGap={formItemGap}\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames('easy-form', { 'easy-form-pure': isPure }, fromLayoutClassName)}\n autoComplete=\"off\"\n >\n {isPure ? (\n children\n ) : (\n <Fragment>\n {getHiddenRowChildren()}\n <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>\n </Fragment>\n )}\n </FormWrapper>\n ) : undefined}\n </Fragment>\n );\n};\n"],"names":["EasyForm","props","screenType","fbaHooks","useResponsivePoint","column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","_props$formItemGap","formItemGap","isPure","nonuseFormWrapper","otherProps","_objectWithoutPropertiesLoose","_excluded","gridSize","useMemo","num","xs","sm","md","lg","xl","xxl","columnMap","getHiddenRowChildren","Children","toArray","filter","item","type","getFormRowChildren","map","index","domTypeName","_jsx","Fragment","span","undefined","cloneElement","_extends","key","BoxGrid","Col","Boolean","innerStyle","includes","gutter","isUndefinedOrNull","anchorRef","useRef","getIsNestedEasyForm","current","target","dom","findParentsElement","node","_node$classList","classList","contains","error","console","log","isNestedEasyForm","labelAlignNew","fromLayoutClassName","preDefinedClassName","getFormLayoutClassName","className","_jsxs","ref","style","_classNames","Row","FormWrapper","autoComplete"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-form/utils.ts","@flatbiz/antd/src/easy-form/form.tsx"],"sourcesContent":["export const isHidden = (item: any) => {\n const domTypeName = item.type['domTypeName'];\n const isHidden = item.props['hidden'];\n return isHidden || domTypeName == 'FormItemHidden';\n};\n\nexport const isHiddenAndClear = (item: any) => {\n const domTypeName = item.type['domTypeName'];\n const isHidden = item.props['hidden'];\n if (domTypeName === 'FormItemWrapper') {\n return isHidden || item.props['isClear'];\n }\n return isHidden || domTypeName == 'FormItemHidden';\n};\n","import { classNames } from '@dimjs/utils';\nimport { dom, isUndefinedOrNull, TAny } from '@flatbiz/utils';\nimport { Children, cloneElement, Fragment, ReactNode, useMemo, useRef } from 'react';\nimport { BoxGrid } from '../box-grid';\nimport { BoxRowProps } from '../box-grid/row';\nimport { GutterParams } from '../box-grid/type';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport './style.less';\nimport { isHidden, isHiddenAndClear } from './utils';\n\nexport type EasyFormProps = Omit<FormWrapperProps, 'children'> & {\n /**\n * 定义一行显示几列(当外层宽度尺寸大于 992px(lg) 时,一行显示几列), 默认值:3\n * ```\n * 1. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响(column=1除外)\n * 2. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 3. 列数尺寸定义\n * {\n * 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n * 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n * 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n * 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n * };\n * ```\n */\n column?: 1 | 2 | 3 | 4;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4;\n /**\n * Form显示宽度,可数值、可百分比;在小屏幕尺寸(xs、sm)上无效\n */\n width?: number | string;\n /** 网格间距 */\n gridGutter?: BoxRowProps['gutter'];\n children: ReactNode;\n /**\n * 是否为纯净模式,对EasyForm的子节点不做任何包装处理\n */\n isPure?: boolean;\n /**\n * true: 不使用Antd Form包裹,可在Form、EasyForm、FormWrapper内部使用\n */\n nonuseFormWrapper?: boolean;\n};\n\n/**\n * 简单Form布局,可自定义网格布局\n * ```\n * 1. demo:https://fex.qa.tcshuke.com/docs/admin/main/form/grid\n * 2. EasyForm的children列表会进行网格化布局,可通过设置 isPure = true设置纯净模式(对EasyForm的子节点不做任何包装处理)\n * 3. EasyForm可嵌套使用,嵌套内部的<EasyForm />节点Form相关属性失效,例如属性form、initialValues等都失效\n * <EasyForm form={form}>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * </EasyForm>\n * 4. 布局网格以当前组件的宽度来计算的,不是屏幕宽度\n * 5. EasyForm 子节点包含 hidden = true 会被忽略\n * 6. 通过 column 可定义一行显示几列FormItem\n * 7. 通过 labelItemVertical 可定义 formitem 竖直布局\n * 8. 通过 formItemGap 可定义 formItem竖直方向间隙\n * 9. 通过 forceColumn 可强制定义一行显示几列,不考虑响应式\n * 10. 通过 labelWidth 可控制Form内部所有label的宽度(可实现整齐效果)\n * 11. 自定义栅格占位格数,见下方`例如`\n\n * 例如\n * <EasyForm column={3}>\n *\t <FormItemWrapper name=\"field1\" label=\"条件1\">\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <!-- !!自定义栅格占位格数第一种方式:可通过使用 BoxGrid.Col 包裹元素来自定义网格占比 -->\n *\t <BoxGrid.Col span={24}>\n *\t <FormItemWrapper name=\"field5\" label=\"条件5\">\n *\t \t<Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t </BoxGrid.Col>\n *\t <!-- !!自定义栅格占位格数第二种方式:如果为FormItemWrapper组件,可设置span属性 -->\n *\t <FormItemWrapper name=\"field6\" label=\"条件6\" span={24}>\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <FormItemWrapper noStyle span={24}>\n *\t <Button>按钮</Buttone>\n *\t </FormItemWrapper>\n * </EasyForm>\n * ```\n */\nexport const EasyForm = (props: EasyFormProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const {\n column,\n forceColumn,\n children,\n width,\n gridGutter,\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap = '15',\n isPure,\n nonuseFormWrapper,\n ...otherProps\n } = props;\n\n const gridSize = useMemo(() => {\n if (forceColumn) {\n const num = 24 / forceColumn;\n return { xs: num, sm: num, md: num, lg: num, xl: num, xxl: num };\n }\n if (!column) {\n return { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n }\n const columnMap = {\n 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n };\n return columnMap[column];\n }, [column, forceColumn]);\n\n const getHiddenRowChildren = () => {\n return Children.toArray(children).filter(isHidden);\n };\n\n const getFormRowChildren = () => {\n return Children.toArray(children)\n .filter((item: TAny) => {\n return !isHiddenAndClear(item);\n })\n .map((item: TAny, index) => {\n const domTypeName = item.type['domTypeName'];\n if (domTypeName === 'BoxGridCol') return <Fragment key={index}>{item}</Fragment>;\n let span: number | undefined = undefined;\n if (\n domTypeName === 'FormItemWrapper' ||\n domTypeName === 'FormItemText' ||\n domTypeName === 'FormItemSpan'\n ) {\n span = item.props['span'] as number;\n if (span) {\n if (screenType === 'xs') {\n span = 24;\n } else if (screenType === 'sm') {\n span = span > 12 ? span : 12;\n }\n }\n }\n if (domTypeName === 'FormItemSpan') {\n return cloneElement(item, {\n ...item.props,\n ...gridSize,\n span,\n key: index,\n });\n }\n return (\n <BoxGrid.Col key={index} {...gridSize} span={span}>\n {item}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\n };\n\n const innerStyle = useMemo(() => {\n /** 小屏幕不控制宽度 */\n if (['xs', 'sm'].includes(screenType) || !width) {\n return {};\n }\n return { width };\n }, [screenType, width]);\n\n const gutter = isUndefinedOrNull(gridGutter) ? ([15, 0] as GutterParams) : gridGutter;\n const anchorRef = useRef<HTMLDivElement>(null);\n\n // 是否嵌套内部EasyForm节点\n const getIsNestedEasyForm = () => {\n try {\n if (nonuseFormWrapper) {\n return true;\n }\n if (anchorRef.current) {\n const target = dom.findParentsElement(anchorRef.current, (node) => {\n return node.classList?.contains?.('easy-form');\n });\n return target ? true : false;\n }\n return undefined;\n } catch (error) {\n console.log('error', error);\n return false;\n }\n };\n\n const isNestedEasyForm = getIsNestedEasyForm();\n\n const labelAlignNew = useMemo(() => {\n if (['xs'].includes(screenType)) {\n return 'left';\n }\n return labelAlign;\n }, [labelAlign, screenType]);\n\n const fromLayoutClassName = useMemo(() => {\n return preDefinedClassName.getFormLayoutClassName({\n labelWidth,\n labelItemVertical,\n labelAlign: labelAlignNew,\n formItemGap,\n className: otherProps.className,\n });\n }, [labelWidth, labelItemVertical, labelAlignNew, formItemGap, otherProps.className]);\n\n return (\n <Fragment>\n <div className=\"easy-form-anchor\" ref={anchorRef}></div>\n {isNestedEasyForm === true ? (\n <div\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames(\n 'easy-form',\n { 'easy-form-pure': isPure },\n 'easy-form-nested',\n fromLayoutClassName,\n )}\n >\n {isPure ? (\n children\n ) : (\n <Fragment>\n {getHiddenRowChildren()}\n <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>\n </Fragment>\n )}\n </div>\n ) : undefined}\n {isNestedEasyForm === false ? (\n <FormWrapper\n {...otherProps}\n labelWidth={labelWidth}\n labelAlign={labelAlignNew}\n labelItemVertical={labelItemVertical}\n formItemGap={formItemGap}\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames('easy-form', { 'easy-form-pure': isPure }, fromLayoutClassName)}\n autoComplete=\"off\"\n >\n {isPure ? (\n children\n ) : (\n <Fragment>\n {getHiddenRowChildren()}\n <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>\n </Fragment>\n )}\n </FormWrapper>\n ) : undefined}\n </Fragment>\n );\n};\n"],"names":["isHidden","item","domTypeName","type","props","isHiddenAndClear","EasyForm","screenType","fbaHooks","useResponsivePoint","column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","_props$formItemGap","formItemGap","isPure","nonuseFormWrapper","otherProps","_objectWithoutPropertiesLoose","_excluded","gridSize","useMemo","num","xs","sm","md","lg","xl","xxl","columnMap","getHiddenRowChildren","Children","toArray","filter","getFormRowChildren","map","index","_jsx","Fragment","span","undefined","cloneElement","_extends","key","BoxGrid","Col","Boolean","innerStyle","includes","gutter","isUndefinedOrNull","anchorRef","useRef","getIsNestedEasyForm","current","target","dom","findParentsElement","node","_node$classList","classList","contains","error","console","log","isNestedEasyForm","labelAlignNew","fromLayoutClassName","preDefinedClassName","getFormLayoutClassName","className","_jsxs","ref","style","_classNames","Row","FormWrapper","autoComplete"],"mappings":"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"}
|
|
@@ -3,5 +3,5 @@ import './../request-status/index.css';
|
|
|
3
3
|
import './../fba-hooks/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{isString as r}from"@dimjs/lang/cjs/is-string";import{hooks as n}from"@wove/react/cjs/hooks";import{a as t,_ as o}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isUndefinedOrNull as
|
|
6
|
+
import e from"@ant-design/icons/es/icons/RedoOutlined";import{isString as r}from"@dimjs/lang/cjs/is-string";import{hooks as n}from"@wove/react/cjs/hooks";import{a as t,_ as o}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isUndefinedOrNull as s,toArray as u,valueIsEqual as i,arrayFind as a}from"@flatbiz/utils";import{Select as l,Button as c}from"antd";import{useState as f,useMemo as v,useRef as d}from"react";import{RequestStatus as h}from"../request-status/index.js";import{isDeepEqual as p}from"@dimjs/lang/cjs/is-deep-equal";import{isArray as m}from"@dimjs/lang/cjs/is-array";import{get as g}from"@dimjs/utils/cjs/get";import{json as C}from"@dimjs/utils/cjs/json";import q from"pubsub-js";import{fbaHooks as w}from"../fba-hooks/index.js";import{isObject as y}from"@dimjs/lang/cjs/is-object";import{jsx as _,jsxs as b}from"react/jsx-runtime";import"@dimjs/utils/cjs/extend";import"../use-responsive-point-21b8c601.js";var j=function e(r){var n=r.cacheKey,t=r.serviceConfig,o=r.hasOuterSelectorList,u=r.outerSelectorList,i=r.onRespDataChange,a=r.onSelectorRequestError,l=r.onChange,c=r.useCache,d=r.fieldNames;var h=t==null?void 0:t.params;var y=(t==null?void 0:t.requiredParamsKeys)||[];var _=h&&Object.keys(h).length>0;var b=f(),j=b[0],R=b[1];var S=f(),L=S[0],O=S[1];var P=f(Date.now()),A=P[0],k=P[1];var x=v((function(){try{if(_){var e=JSON.stringify(C.sort(h));if(e==="{}"){return undefined}return e}}catch(e){}return undefined}),[_,h]);var N=""+x;var E=x+"_status";var D=n+"_"+N;var I=w.usePrevious(x);var K=w.usePrevious(h);var M=function e(r){var n=r;if(t!=null&&t.onRequestResultAdapter){n=t==null?void 0:t.onRequestResultAdapter(r)}else if(d!=null&&d.list){n=g(r,d==null?void 0:d.list)}if(n&&!m(n)){console.warn("待渲染数据为非数组结构",n);return[]}return n||[]};var B=function e(){var r;return(r=window["__selector_wrapper_"])==null?void 0:r[n]};var J=function e(){var r;return(r=B())==null?void 0:r[N]};var T=function e(){var r;return(r=B())==null?void 0:r[E]};var V=function e(r,t){if(!window["__selector_wrapper_"]){window["__selector_wrapper_"]={}}if(!window["__selector_wrapper_"][n]){window["__selector_wrapper_"][n]={}}window["__selector_wrapper_"][n][r]=t};var z=function e(r){V(E,r);O(r)};var F=function e(){return new Promise((function(e,r){var n,o;var s=function(n){try{console.error(n);z("request-error");R(undefined);setTimeout((function(){q.publish(D,{status:"request-error"})}));a==null?void 0:a(n);return e(Promise.reject())}catch(e){return r(e)}};try{z("request-progress");return Promise.resolve(t==null||t.onRequest==null?void 0:t.onRequest(h||{})).then((function(r){try{n=r;o=M(n);V(N,o);z("request-success");setTimeout((function(){q.publish(D,{status:"request-success",respData:o})}));return e(o)}catch(e){return s(e)}}),s)}catch(e){s(e)}}))};w.useEffectCustomAsync((function(){return new Promise((function(e,r){var n,f,v,d,m,g;if(o){O("request-success");R(u);i==null?void 0:i(u);return e()}if(y.length>0){n=h?y.find((function(e){return s(h[e])})):true;if(n){R([]);O("no-dependencies-params");if(I){l==null?void 0:l(undefined)}return e()}if(c===false){if(p(h,K)){return e()}var C=function(){try{return e()}catch(e){return r(e)}};var w=function(e){try{console.error(e);O("request-error");R(undefined);a==null?void 0:a(e);return C()}catch(e){return r(e)}};try{O("request-progress");return Promise.resolve(t==null||t.onRequest==null?void 0:t.onRequest(h||{})).then((function(e){try{f=e;v=M(f);O("request-success");R(v);i==null?void 0:i(v);return C()}catch(e){return w(e)}}),w)}catch(e){w(e)}}return _.call(this)}function _(){d=T();if(d==="request-success"){m=J();R(m);O(d);i==null?void 0:i(m);return e()}if(d==="request-progress"){O(d);q.subscribe(D,(function(e,r){var n=r.status,t=r.respData;if(n==="request-success"){O(n);R(t);i==null?void 0:i(t)}else{O("request-error");R(undefined)}}));return e()}var n=function(){try{return e()}catch(e){return r(e)}};var t=function(e){try{console.error(e);O("request-error");R(undefined);a==null?void 0:a(e);return n()}catch(e){return r(e)}};try{return Promise.resolve(F()).then((function(e){try{g=e;R(g);O("request-success");i==null?void 0:i(g);return n()}catch(e){return t(e)}}),t)}catch(e){t(e)}}return _.call(this)}))}),[JSON.stringify(h),u,A]);var H=function e(){k(Date.now())};return{requestStatus:L,stateSelectorList:j,serviceRequestParamsStringify:x,onRefreshRequest:H}};var R=function e(r,n){var t=u(r);t=t.map((function(e){if(y(e))return e[n];return e}));return t};var S=["serviceConfig","showAllOption","onSelectorListChange","onSelectorListAllChange","onSelectorRequestError","onLabelRenderAdapter","requestMessageConfig","selectorList","modelKey","fieldNames","value","labelInValue","useCache"];var L=function s(f){var p=f.serviceConfig,m=f.showAllOption,g=f.onSelectorListChange,C=f.onSelectorListAllChange,q=f.onSelectorRequestError,w=f.onLabelRenderAdapter,y=f.requestMessageConfig,L=f.selectorList,O=f.modelKey,P=f.fieldNames,A=f.value,k=f.labelInValue,x=f.useCache,N=t(f,S);var E=d(true);var D=f.hasOwnProperty("selectorList");var I=o({label:"label",value:"value",disabled:"disabled"},P);var K=I.label,M=I.value,B=I.disabled;var J=v((function(){var e;if(!m)return null;var r=m===true;return e={},e[K]=r?"全部":m.label,e[M]=r?"":m.value,e}),[K,M,m]);var T=i(f.mode,["multiple"]);var V=j({fieldNames:I,cacheKey:O,hasOuterSelectorList:D,onChange:f.onChange,serviceConfig:p,outerSelectorList:L,onRespDataChange:function e(r){if(E.current){g==null?void 0:g(r||[]);E.current=false}C==null?void 0:C(r||[])},onSelectorRequestError:q,useCache:x===undefined?true:x}),z=V.requestStatus,F=V.stateSelectorList,H=V.onRefreshRequest;var W=n.useCallbackRef((function(e){if(k){if(T){f.onChange==null?void 0:f.onChange(e,e)}else{f.onChange==null?void 0:f.onChange(e[0],e)}}else{var r=e.map((function(e){return e[M]}));if(T){f.onChange==null?void 0:f.onChange(r,e)}else{f.onChange==null?void 0:f.onChange(r[0],e[0])}}}));var G=n.useCallbackRef((function(e,r){if(!r)return f.onChange==null?void 0:f.onChange(undefined);var n=u(r);var t=[];n.forEach((function(e){if(m&&J&&e.value===J[M]){t.push(J)}else{var r=a(F||[],e.value,M);if(r){t.push(r)}}}));W(t)}));var Q=v((function(){if(z!=="request-success")return[];if(!F||F.length===0)return[];if(!J)return F;return[J].concat(F)}),[J,z,F]);var U=z==="request-progress";var X=v((function(){var e=R(A,M);return T?e:e[0]}),[T,M,A]);var Y=n.useCallbackRef((function(e,n){var t=u(n.children);var o="";t.forEach((function(e){if(r(e))o+=e}));return o.toLowerCase().indexOf(e.toLowerCase())>=0}));return _(l,o({showSearch:true,allowClear:true,popupMatchSelectWidth:false,filterOption:Y},N,{style:o({width:"100%"},f.style),value:X,loading:U,onChange:G,fieldNames:undefined,suffixIcon:z==="request-error"?_(e,{spin:U,onClick:H}):N.suffixIcon,notFoundContent:_(h,{status:z,loading:U,messageConfig:o({"request-init":"暂无数据"},y),errorButton:_(c,{type:"primary",onClick:H,children:"重新获取数据"})}),children:Q.map((function(e,r){var n=e[M];var t=e[K];return b(l.Option,{value:n,label:t,disabled:e[B],children:[f.showIcon?_("span",{className:"v-selector-item-icon",children:f.icon==null?void 0:f.icon(e,r)}):null,w?w(e):t]},n+"-"+r)}))}))};export{L as SelectorWrapper};
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/selector-wrapper/use-request.ts","@flatbiz/antd/src/selector-wrapper/utils.ts","@flatbiz/antd/src/selector-wrapper/selector-wrapper.tsx"],"sourcesContent":["import { isArray, isDeepEqual } from '@dimjs/lang';\nimport { get, json } from '@dimjs/utils';\nimport { isUndefinedOrNull, type TPlainObject } from '@flatbiz/utils';\nimport pubSub from 'pubsub-js';\nimport { useMemo, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { type TRequestStatus } from '../request-status';\nimport { type SelectorServiceConfig, type SelectorWrapperProps } from './types';\n\nexport const useRequest = (options: {\n cacheKey: string;\n serviceConfig?: SelectorServiceConfig;\n hasOuterSelectorList?: boolean;\n onChange?: SelectorWrapperProps['onChange'];\n outerSelectorList?: SelectorWrapperProps['selectorList'];\n onRespDataChange?: (dataList?: TPlainObject[]) => void;\n onSelectorRequestError?: SelectorWrapperProps['onSelectorRequestError'];\n useCache: boolean;\n fieldNames: SelectorWrapperProps['fieldNames'];\n}) => {\n const {\n cacheKey,\n serviceConfig,\n hasOuterSelectorList,\n outerSelectorList,\n onRespDataChange,\n onSelectorRequestError,\n onChange,\n useCache,\n fieldNames,\n } = options;\n const serviceRequestParams = serviceConfig?.params;\n const requiredParamsKeys = serviceConfig?.requiredParamsKeys || [];\n const hasServiceRequestParams =\n serviceRequestParams && Object.keys(serviceRequestParams).length > 0;\n\n const [stateSelectorList, setStateSelectorList] = useState<TPlainObject[]>();\n const [requestStatus, setRequestStatus] = useState<TRequestStatus>();\n const [refreshKey, setRefreshKey] = useState(Date.now());\n\n const serviceRequestParamsStringify = useMemo(() => {\n try {\n if (hasServiceRequestParams) {\n const sortDataStringify = JSON.stringify(\n json.sort(serviceRequestParams)\n );\n if (sortDataStringify === '{}') {\n return undefined;\n }\n return sortDataStringify;\n }\n } catch (error) {}\n return undefined;\n }, [hasServiceRequestParams, serviceRequestParams]);\n // 将 undefined => 'undefined'\n const serviceRequestCahceKey = `${serviceRequestParamsStringify}`;\n const serviceRequestCahceStatusKey = `${serviceRequestParamsStringify}_status`;\n const pubSubKey = `${cacheKey}_${serviceRequestCahceKey}`;\n\n // 上一个参数值\n const prevServiceRequestParamsStringify = fbaHooks.usePrevious(\n serviceRequestParamsStringify\n );\n const prevParams = fbaHooks.usePrevious(serviceRequestParams);\n\n const serviceRespDataAdapter = (respData) => {\n if (serviceConfig?.onRequestResultAdapter) {\n return serviceConfig?.onRequestResultAdapter(\n respData as unknown as TPlainObject\n );\n }\n if (fieldNames?.list) {\n const result = get(respData, fieldNames?.list);\n return isArray(result) ? result : [];\n }\n return respData;\n };\n\n const getWindowCacheData = () => {\n return window['__selector_wrapper_']?.[cacheKey];\n };\n const getWindowCacheValue = () => {\n return getWindowCacheData()?.[serviceRequestCahceKey];\n };\n const getWindowCacheStatus = () => {\n return getWindowCacheData()?.[serviceRequestCahceStatusKey];\n };\n\n const setWindowCache = (key, value) => {\n if (!window['__selector_wrapper_']) {\n window['__selector_wrapper_'] = {};\n }\n if (!window['__selector_wrapper_'][cacheKey]) {\n window['__selector_wrapper_'][cacheKey] = {};\n }\n window['__selector_wrapper_'][cacheKey][key] = value;\n };\n\n const onChangeRequestStatus = (status: TRequestStatus) => {\n setWindowCache(serviceRequestCahceStatusKey, status);\n setRequestStatus(status);\n };\n\n const onRequest = async () => {\n try {\n onChangeRequestStatus('request-progress');\n\n const respData = await serviceConfig?.onRequest?.(\n serviceRequestParams || {}\n );\n const respAdapterData = serviceRespDataAdapter(respData) || [];\n\n setWindowCache(serviceRequestCahceKey, respAdapterData);\n onChangeRequestStatus('request-success');\n setTimeout(() => {\n pubSub.publish(pubSubKey, {\n status: 'request-success',\n respData: respAdapterData,\n });\n });\n\n return respAdapterData;\n } catch (error) {\n console.error(error);\n onChangeRequestStatus('request-error');\n setStateSelectorList(undefined);\n setTimeout(() => {\n pubSub.publish(pubSubKey, {\n status: 'request-error',\n });\n });\n onSelectorRequestError?.(error);\n return Promise.reject();\n }\n };\n\n fbaHooks.useEffectCustomAsync(async () => {\n if (hasOuterSelectorList) {\n setRequestStatus('request-success');\n setStateSelectorList(outerSelectorList);\n onRespDataChange?.(outerSelectorList);\n return;\n }\n if (requiredParamsKeys.length > 0) {\n const isEmpty = serviceRequestParams\n ? requiredParamsKeys.find((key) =>\n isUndefinedOrNull(serviceRequestParams[key])\n )\n : true;\n if (isEmpty) {\n // 当依赖项查询条件为空时,清空当前缓存数据\n setStateSelectorList([]);\n setRequestStatus('no-dependencies-params');\n /**\n * 怎么判断数据是从有到无的\n * 每一次 params 变少,只要 上一次 params 值存在,就应该清空 value 值\n */\n if (prevServiceRequestParamsStringify) {\n onChange?.(undefined);\n }\n return;\n }\n\n // 不使用缓存模式\n if (useCache === false) {\n // 判断参数是否发生变化\n if (isDeepEqual(serviceRequestParams, prevParams)) {\n return;\n }\n try {\n setRequestStatus('request-progress');\n const respData = await serviceConfig?.onRequest?.(\n serviceRequestParams || {}\n );\n const respAdapterData = serviceRespDataAdapter(respData) || [];\n setRequestStatus('request-success');\n setStateSelectorList(respAdapterData);\n onRespDataChange?.(respAdapterData);\n } catch (error) {\n console.error(error);\n setRequestStatus('request-error');\n setStateSelectorList(undefined);\n onSelectorRequestError?.(error);\n }\n return;\n }\n }\n\n /**\n * 此处无法判断 调用props.onChange?.(undefined);\n * A、B、C\n * 例如:C依赖A、B,当外部只修改了一个元素,理论上应该应该清空C value 值(调用onChange(undefined)),如果此时外部直接回填A、B、C时,C无法回填成功;该场景只能在A、B的onChange事件中,清空C\n */\n // if (prevServiceRequestParamsStringify) {\n // props.onChange?.(undefined);\n // }\n\n const status = getWindowCacheStatus();\n if (status === 'request-success') {\n const dataList = getWindowCacheValue();\n setStateSelectorList(dataList);\n setRequestStatus(status);\n onRespDataChange?.(dataList);\n return;\n }\n if (status === 'request-progress') {\n setRequestStatus(status);\n pubSub.subscribe(pubSubKey, (_msg, { status, respData }) => {\n if (status === 'request-success') {\n setRequestStatus(status);\n setStateSelectorList(respData);\n onRespDataChange?.(respData);\n } else {\n setRequestStatus('request-error');\n setStateSelectorList(undefined);\n }\n });\n return;\n }\n try {\n const respAdapterData = await onRequest();\n setStateSelectorList(respAdapterData);\n setRequestStatus('request-success');\n onRespDataChange?.(respAdapterData);\n } catch (error) {\n console.error(error);\n setRequestStatus('request-error');\n setStateSelectorList(undefined);\n onSelectorRequestError?.(error);\n }\n }, [JSON.stringify(serviceRequestParams), outerSelectorList, refreshKey]);\n\n const onRefreshRequest = () => {\n setRefreshKey(Date.now());\n };\n\n return {\n requestStatus,\n stateSelectorList,\n serviceRequestParamsStringify,\n onRefreshRequest,\n };\n};\n","import { isObject } from '@dimjs/lang';\nimport { toArray } from '@flatbiz/utils';\n\n/**\n * value存在两种格式\n * 1. string | number;\n * 2. labelInValue 格式\n * @param data\n * @param labelInValueFieldNames\n * @returns\n */\nexport const getVauleList = (data, valueKey: string | number) => {\n let valueList = toArray<string | number>(data);\n valueList = valueList.map((item) => {\n if (isObject(item)) return item[valueKey];\n return item;\n });\n return valueList;\n};\n","import { arrayFind, TAny, toArray, TPlainObject, valueIsEqual } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Select } from 'antd';\nimport { useMemo, useRef } from 'react';\nimport './style.less';\n\nimport { RedoOutlined } from '@ant-design/icons';\nimport { isString } from '@dimjs/lang';\nimport { RequestStatus } from '../request-status';\nimport { SelectorWrapperProps } from './types';\nimport { useRequest } from './use-request';\nimport { getVauleList } from './utils';\nexport * from './types';\n/**\n * 选择器包装组件\n * ```\n * 1. 不支持搜索调用服务模式,可使用组件 SelectorWrapperSearch\n * ```\n */\nexport const SelectorWrapper = (props: SelectorWrapperProps) => {\n const {\n serviceConfig,\n showAllOption,\n onSelectorListChange,\n onSelectorListAllChange,\n onSelectorRequestError,\n onLabelRenderAdapter,\n requestMessageConfig,\n selectorList: outerSelectorList,\n modelKey,\n fieldNames,\n value,\n labelInValue,\n useCache,\n ...otherProps\n } = props;\n\n const firstRenderSelectList = useRef(true);\n\n // props 是否存在 selectorList,selectorList = undefined 也算存在\n const hasOuterSelectorList = props.hasOwnProperty('selectorList');\n const mergeFieldNames = {\n label: 'label',\n value: 'value',\n disabled: 'disabled',\n ...fieldNames,\n };\n\n const {\n label: optionsItemLabelField,\n value: optionsItemValueField,\n disabled: optionsItemDisabledField,\n } = mergeFieldNames;\n\n const allOptionConfig = useMemo(() => {\n if (!showAllOption) return null;\n const isTrue = showAllOption === true;\n return {\n [optionsItemLabelField]: isTrue ? '全部' : showAllOption.label,\n [optionsItemValueField]: isTrue ? '' : showAllOption.value,\n };\n }, [optionsItemLabelField, optionsItemValueField, showAllOption]);\n\n const isMultiple = valueIsEqual(props.mode, ['multiple']);\n\n const { requestStatus, stateSelectorList, onRefreshRequest } = useRequest({\n fieldNames: mergeFieldNames,\n cacheKey: modelKey,\n hasOuterSelectorList,\n onChange: props.onChange,\n serviceConfig,\n outerSelectorList,\n onRespDataChange: (dataList) => {\n if (firstRenderSelectList.current) {\n onSelectorListChange?.(dataList || []);\n firstRenderSelectList.current = false;\n }\n onSelectorListAllChange?.(dataList || []);\n },\n onSelectorRequestError,\n useCache: useCache === undefined ? true : useCache,\n });\n\n const onRespChange = hooks.useCallbackRef((selectedList: TPlainObject[]) => {\n if (labelInValue) {\n if (isMultiple) {\n props.onChange?.(selectedList, selectedList);\n } else {\n props.onChange?.(selectedList[0], selectedList);\n }\n } else {\n const valueList = selectedList.map((item) => item[optionsItemValueField]);\n if (isMultiple) {\n props.onChange?.(valueList, selectedList);\n } else {\n props.onChange?.(valueList[0], selectedList[0]);\n }\n }\n });\n\n const onInnerChange = hooks.useCallbackRef((_value, otherParams) => {\n if (!otherParams) return props.onChange?.(undefined);\n const selectedList = toArray<TAny>(otherParams);\n const targetList = [] as TPlainObject[];\n selectedList.forEach((item) => {\n if (showAllOption && allOptionConfig && item.value === allOptionConfig[optionsItemValueField]) {\n targetList.push(allOptionConfig);\n } else {\n const filterTarget = arrayFind(stateSelectorList || [], item.value, optionsItemValueField);\n if (filterTarget) {\n targetList.push(filterTarget);\n }\n }\n });\n onRespChange(targetList);\n });\n\n const selectorAllList = useMemo(() => {\n if (requestStatus !== 'request-success') return [];\n if (!stateSelectorList || stateSelectorList.length === 0) return [];\n if (!allOptionConfig) return stateSelectorList;\n return [allOptionConfig].concat(stateSelectorList);\n }, [allOptionConfig, requestStatus, stateSelectorList]);\n\n const loading = requestStatus === 'request-progress';\n\n const selectValue = useMemo(() => {\n const targetList = getVauleList(value, optionsItemValueField);\n return isMultiple ? targetList : targetList[0];\n }, [isMultiple, optionsItemValueField, value]);\n\n const filterOption = hooks.useCallbackRef((input: string, option) => {\n const children = toArray(option.children);\n let mergeString = '';\n children.forEach((item) => {\n if (isString(item)) mergeString += item;\n });\n return mergeString.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n });\n\n return (\n <Select\n showSearch={true}\n allowClear={true}\n popupMatchSelectWidth={false}\n filterOption={filterOption}\n {...otherProps}\n style={{ width: '100%', ...props.style }}\n value={selectValue}\n loading={loading}\n onChange={onInnerChange}\n fieldNames={undefined}\n suffixIcon={\n requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onRefreshRequest} />\n ) : (\n otherProps.suffixIcon\n )\n }\n notFoundContent={\n <RequestStatus\n status={requestStatus}\n loading={loading}\n messageConfig={{\n 'request-init': '暂无数据',\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={onRefreshRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n >\n {selectorAllList.map((item, index) => {\n const value = item[optionsItemValueField];\n const label = item[optionsItemLabelField];\n return (\n <Select.Option\n value={value}\n label={label}\n key={`${value}-${index}`}\n disabled={item[optionsItemDisabledField]}\n >\n {props.showIcon ? (\n <span className=\"v-selector-item-icon\">{props.icon?.(item, index)}</span>\n ) : null}\n {onLabelRenderAdapter ? onLabelRenderAdapter(item) : label}\n </Select.Option>\n );\n })}\n </Select>\n );\n};\n"],"names":["useRequest","options","cacheKey","serviceConfig","hasOuterSelectorList","outerSelectorList","onRespDataChange","onSelectorRequestError","onChange","useCache","fieldNames","serviceRequestParams","params","requiredParamsKeys","hasServiceRequestParams","Object","keys","length","_useState","useState","stateSelectorList","setStateSelectorList","_useState2","requestStatus","setRequestStatus","_useState3","Date","now","refreshKey","setRefreshKey","serviceRequestParamsStringify","useMemo","sortDataStringify","JSON","stringify","_json","sort","undefined","error","serviceRequestCahceKey","serviceRequestCahceStatusKey","pubSubKey","prevServiceRequestParamsStringify","fbaHooks","usePrevious","prevParams","serviceRespDataAdapter","respData","onRequestResultAdapter","list","result","_get","_isArray","getWindowCacheData","_window$__selector_wr","window","getWindowCacheValue","_getWindowCacheData","getWindowCacheStatus","_getWindowCacheData2","setWindowCache","key","value","onChangeRequestStatus","status","onRequest","Promise","$return","$error","respAdapterData","$Try_2_Catch","console","setTimeout","pubSub","publish","reject","$boundEx","resolve","then","$await_7","useEffectCustomAsync","isEmpty","_dataList","_respAdapterData","find","isUndefinedOrNull","_isDeepEqual","$Try_3_Post","$Try_3_Catch","$await_8","$If_5","call","this","dataList","subscribe","_msg","_ref","$Try_4_Post","$Try_4_Catch","$await_9","onRefreshRequest","getVauleList","data","valueKey","valueList","toArray","map","item","_isObject","SelectorWrapper","props","showAllOption","onSelectorListChange","onSelectorListAllChange","onLabelRenderAdapter","requestMessageConfig","selectorList","modelKey","labelInValue","otherProps","_objectWithoutPropertiesLoose","_excluded","firstRenderSelectList","useRef","hasOwnProperty","mergeFieldNames","_extends","label","disabled","optionsItemLabelField","optionsItemValueField","optionsItemDisabledField","allOptionConfig","isTrue","isMultiple","valueIsEqual","mode","_useRequest","current","onRespChange","_hooks","useCallbackRef","selectedList","onInnerChange","_value","otherParams","targetList","forEach","push","filterTarget","arrayFind","selectorAllList","concat","loading","selectValue","filterOption","input","option","children","mergeString","_isString","toLowerCase","indexOf","_jsx","Select","showSearch","allowClear","popupMatchSelectWidth","style","width","suffixIcon","_RedoOutlined","spin","onClick","notFoundContent","RequestStatus","messageConfig","errorButton","Button","type","index","_jsxs","Option","showIcon","className","icon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/selector-wrapper/use-request.ts","@flatbiz/antd/src/selector-wrapper/utils.ts","@flatbiz/antd/src/selector-wrapper/selector-wrapper.tsx"],"sourcesContent":["import { isArray, isDeepEqual } from '@dimjs/lang';\nimport { get, json } from '@dimjs/utils';\nimport { isUndefinedOrNull, type TPlainObject } from '@flatbiz/utils';\nimport pubSub from 'pubsub-js';\nimport { useMemo, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { type TRequestStatus } from '../request-status';\nimport { type SelectorServiceConfig, type SelectorWrapperProps } from './types';\n\nexport const useRequest = (options: {\n cacheKey: string;\n serviceConfig?: SelectorServiceConfig;\n hasOuterSelectorList?: boolean;\n onChange?: SelectorWrapperProps['onChange'];\n outerSelectorList?: SelectorWrapperProps['selectorList'];\n onRespDataChange?: (dataList?: TPlainObject[]) => void;\n onSelectorRequestError?: SelectorWrapperProps['onSelectorRequestError'];\n useCache: boolean;\n fieldNames: SelectorWrapperProps['fieldNames'];\n}) => {\n const {\n cacheKey,\n serviceConfig,\n hasOuterSelectorList,\n outerSelectorList,\n onRespDataChange,\n onSelectorRequestError,\n onChange,\n useCache,\n fieldNames,\n } = options;\n const serviceRequestParams = serviceConfig?.params;\n const requiredParamsKeys = serviceConfig?.requiredParamsKeys || [];\n const hasServiceRequestParams = serviceRequestParams && Object.keys(serviceRequestParams).length > 0;\n\n const [stateSelectorList, setStateSelectorList] = useState<TPlainObject[]>();\n const [requestStatus, setRequestStatus] = useState<TRequestStatus>();\n const [refreshKey, setRefreshKey] = useState(Date.now());\n\n const serviceRequestParamsStringify = useMemo(() => {\n try {\n if (hasServiceRequestParams) {\n const sortDataStringify = JSON.stringify(json.sort(serviceRequestParams));\n if (sortDataStringify === '{}') {\n return undefined;\n }\n return sortDataStringify;\n }\n } catch (error) {}\n return undefined;\n }, [hasServiceRequestParams, serviceRequestParams]);\n // 将 undefined => 'undefined'\n const serviceRequestCahceKey = `${serviceRequestParamsStringify}`;\n const serviceRequestCahceStatusKey = `${serviceRequestParamsStringify}_status`;\n const pubSubKey = `${cacheKey}_${serviceRequestCahceKey}`;\n\n // 上一个参数值\n const prevServiceRequestParamsStringify = fbaHooks.usePrevious(serviceRequestParamsStringify);\n const prevParams = fbaHooks.usePrevious(serviceRequestParams);\n\n const serviceRespDataAdapter = (respData) => {\n let result: TPlainObject[] = respData;\n if (serviceConfig?.onRequestResultAdapter) {\n result = serviceConfig?.onRequestResultAdapter(respData as unknown as TPlainObject);\n } else if (fieldNames?.list) {\n result = get(respData, fieldNames?.list);\n }\n if (result && !isArray(result)) {\n console.warn('待渲染数据为非数组结构', result);\n return [];\n }\n return result || [];\n };\n\n const getWindowCacheData = () => {\n return window['__selector_wrapper_']?.[cacheKey];\n };\n const getWindowCacheValue = () => {\n return getWindowCacheData()?.[serviceRequestCahceKey];\n };\n const getWindowCacheStatus = () => {\n return getWindowCacheData()?.[serviceRequestCahceStatusKey];\n };\n\n const setWindowCache = (key, value) => {\n if (!window['__selector_wrapper_']) {\n window['__selector_wrapper_'] = {};\n }\n if (!window['__selector_wrapper_'][cacheKey]) {\n window['__selector_wrapper_'][cacheKey] = {};\n }\n window['__selector_wrapper_'][cacheKey][key] = value;\n };\n\n const onChangeRequestStatus = (status: TRequestStatus) => {\n setWindowCache(serviceRequestCahceStatusKey, status);\n setRequestStatus(status);\n };\n\n const onRequest = async () => {\n try {\n onChangeRequestStatus('request-progress');\n\n const respData = await serviceConfig?.onRequest?.(serviceRequestParams || {});\n const respAdapterData = serviceRespDataAdapter(respData);\n\n setWindowCache(serviceRequestCahceKey, respAdapterData);\n onChangeRequestStatus('request-success');\n setTimeout(() => {\n pubSub.publish(pubSubKey, {\n status: 'request-success',\n respData: respAdapterData,\n });\n });\n\n return respAdapterData;\n } catch (error) {\n console.error(error);\n onChangeRequestStatus('request-error');\n setStateSelectorList(undefined);\n setTimeout(() => {\n pubSub.publish(pubSubKey, {\n status: 'request-error',\n });\n });\n onSelectorRequestError?.(error);\n return Promise.reject();\n }\n };\n\n fbaHooks.useEffectCustomAsync(async () => {\n if (hasOuterSelectorList) {\n setRequestStatus('request-success');\n setStateSelectorList(outerSelectorList);\n onRespDataChange?.(outerSelectorList);\n return;\n }\n if (requiredParamsKeys.length > 0) {\n const isEmpty = serviceRequestParams\n ? requiredParamsKeys.find((key) => isUndefinedOrNull(serviceRequestParams[key]))\n : true;\n if (isEmpty) {\n // 当依赖项查询条件为空时,清空当前缓存数据\n setStateSelectorList([]);\n setRequestStatus('no-dependencies-params');\n /**\n * 怎么判断数据是从有到无的\n * 每一次 params 变少,只要 上一次 params 值存在,就应该清空 value 值\n */\n if (prevServiceRequestParamsStringify) {\n onChange?.(undefined);\n }\n return;\n }\n\n // 不使用缓存模式\n if (useCache === false) {\n // 判断参数是否发生变化\n if (isDeepEqual(serviceRequestParams, prevParams)) {\n return;\n }\n try {\n setRequestStatus('request-progress');\n const respData = await serviceConfig?.onRequest?.(serviceRequestParams || {});\n const respAdapterData = serviceRespDataAdapter(respData);\n setRequestStatus('request-success');\n setStateSelectorList(respAdapterData);\n onRespDataChange?.(respAdapterData);\n } catch (error) {\n console.error(error);\n setRequestStatus('request-error');\n setStateSelectorList(undefined);\n onSelectorRequestError?.(error);\n }\n return;\n }\n }\n\n /**\n * 此处无法判断 调用props.onChange?.(undefined);\n * A、B、C\n * 例如:C依赖A、B,当外部只修改了一个元素,理论上应该应该清空C value 值(调用onChange(undefined)),如果此时外部直接回填A、B、C时,C无法回填成功;该场景只能在A、B的onChange事件中,清空C\n */\n // if (prevServiceRequestParamsStringify) {\n // props.onChange?.(undefined);\n // }\n\n const status = getWindowCacheStatus();\n if (status === 'request-success') {\n const dataList = getWindowCacheValue();\n setStateSelectorList(dataList);\n setRequestStatus(status);\n onRespDataChange?.(dataList);\n return;\n }\n if (status === 'request-progress') {\n setRequestStatus(status);\n pubSub.subscribe(pubSubKey, (_msg, { status, respData }) => {\n if (status === 'request-success') {\n setRequestStatus(status);\n setStateSelectorList(respData);\n onRespDataChange?.(respData);\n } else {\n setRequestStatus('request-error');\n setStateSelectorList(undefined);\n }\n });\n return;\n }\n try {\n const respAdapterData = await onRequest();\n setStateSelectorList(respAdapterData);\n setRequestStatus('request-success');\n onRespDataChange?.(respAdapterData);\n } catch (error) {\n console.error(error);\n setRequestStatus('request-error');\n setStateSelectorList(undefined);\n onSelectorRequestError?.(error);\n }\n }, [JSON.stringify(serviceRequestParams), outerSelectorList, refreshKey]);\n\n const onRefreshRequest = () => {\n setRefreshKey(Date.now());\n };\n\n return {\n requestStatus,\n stateSelectorList,\n serviceRequestParamsStringify,\n onRefreshRequest,\n };\n};\n","import { isObject } from '@dimjs/lang';\nimport { toArray } from '@flatbiz/utils';\n\n/**\n * value存在两种格式\n * 1. string | number;\n * 2. labelInValue 格式\n * @param data\n * @param labelInValueFieldNames\n * @returns\n */\nexport const getVauleList = (data, valueKey: string | number) => {\n let valueList = toArray<string | number>(data);\n valueList = valueList.map((item) => {\n if (isObject(item)) return item[valueKey];\n return item;\n });\n return valueList;\n};\n","import { arrayFind, TAny, toArray, TPlainObject, valueIsEqual } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Select } from 'antd';\nimport { useMemo, useRef } from 'react';\nimport './style.less';\n\nimport { RedoOutlined } from '@ant-design/icons';\nimport { isString } from '@dimjs/lang';\nimport { RequestStatus } from '../request-status';\nimport { SelectorWrapperProps } from './types';\nimport { useRequest } from './use-request';\nimport { getVauleList } from './utils';\nexport * from './types';\n/**\n * 选择器包装组件\n * ```\n * 1. 不支持搜索调用服务模式,可使用组件 SelectorWrapperSearch\n * ```\n */\nexport const SelectorWrapper = (props: SelectorWrapperProps) => {\n const {\n serviceConfig,\n showAllOption,\n onSelectorListChange,\n onSelectorListAllChange,\n onSelectorRequestError,\n onLabelRenderAdapter,\n requestMessageConfig,\n selectorList: outerSelectorList,\n modelKey,\n fieldNames,\n value,\n labelInValue,\n useCache,\n ...otherProps\n } = props;\n\n const firstRenderSelectList = useRef(true);\n\n // props 是否存在 selectorList,selectorList = undefined 也算存在\n const hasOuterSelectorList = props.hasOwnProperty('selectorList');\n const mergeFieldNames = {\n label: 'label',\n value: 'value',\n disabled: 'disabled',\n ...fieldNames,\n };\n\n const {\n label: optionsItemLabelField,\n value: optionsItemValueField,\n disabled: optionsItemDisabledField,\n } = mergeFieldNames;\n\n const allOptionConfig = useMemo(() => {\n if (!showAllOption) return null;\n const isTrue = showAllOption === true;\n return {\n [optionsItemLabelField]: isTrue ? '全部' : showAllOption.label,\n [optionsItemValueField]: isTrue ? '' : showAllOption.value,\n };\n }, [optionsItemLabelField, optionsItemValueField, showAllOption]);\n\n const isMultiple = valueIsEqual(props.mode, ['multiple']);\n\n const { requestStatus, stateSelectorList, onRefreshRequest } = useRequest({\n fieldNames: mergeFieldNames,\n cacheKey: modelKey,\n hasOuterSelectorList,\n onChange: props.onChange,\n serviceConfig,\n outerSelectorList,\n onRespDataChange: (dataList) => {\n if (firstRenderSelectList.current) {\n onSelectorListChange?.(dataList || []);\n firstRenderSelectList.current = false;\n }\n onSelectorListAllChange?.(dataList || []);\n },\n onSelectorRequestError,\n useCache: useCache === undefined ? true : useCache,\n });\n\n const onRespChange = hooks.useCallbackRef((selectedList: TPlainObject[]) => {\n if (labelInValue) {\n if (isMultiple) {\n props.onChange?.(selectedList, selectedList);\n } else {\n props.onChange?.(selectedList[0], selectedList);\n }\n } else {\n const valueList = selectedList.map((item) => item[optionsItemValueField]);\n if (isMultiple) {\n props.onChange?.(valueList, selectedList);\n } else {\n props.onChange?.(valueList[0], selectedList[0]);\n }\n }\n });\n\n const onInnerChange = hooks.useCallbackRef((_value, otherParams) => {\n if (!otherParams) return props.onChange?.(undefined);\n const selectedList = toArray<TAny>(otherParams);\n const targetList = [] as TPlainObject[];\n selectedList.forEach((item) => {\n if (showAllOption && allOptionConfig && item.value === allOptionConfig[optionsItemValueField]) {\n targetList.push(allOptionConfig);\n } else {\n const filterTarget = arrayFind(stateSelectorList || [], item.value, optionsItemValueField);\n if (filterTarget) {\n targetList.push(filterTarget);\n }\n }\n });\n onRespChange(targetList);\n });\n\n const selectorAllList = useMemo(() => {\n if (requestStatus !== 'request-success') return [];\n if (!stateSelectorList || stateSelectorList.length === 0) return [];\n if (!allOptionConfig) return stateSelectorList;\n return [allOptionConfig].concat(stateSelectorList);\n }, [allOptionConfig, requestStatus, stateSelectorList]);\n\n const loading = requestStatus === 'request-progress';\n\n const selectValue = useMemo(() => {\n const targetList = getVauleList(value, optionsItemValueField);\n return isMultiple ? targetList : targetList[0];\n }, [isMultiple, optionsItemValueField, value]);\n\n const filterOption = hooks.useCallbackRef((input: string, option) => {\n const children = toArray(option.children);\n let mergeString = '';\n children.forEach((item) => {\n if (isString(item)) mergeString += item;\n });\n return mergeString.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n });\n\n return (\n <Select\n showSearch={true}\n allowClear={true}\n popupMatchSelectWidth={false}\n filterOption={filterOption}\n {...otherProps}\n style={{ width: '100%', ...props.style }}\n value={selectValue}\n loading={loading}\n onChange={onInnerChange}\n fieldNames={undefined}\n suffixIcon={\n requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onRefreshRequest} />\n ) : (\n otherProps.suffixIcon\n )\n }\n notFoundContent={\n <RequestStatus\n status={requestStatus}\n loading={loading}\n messageConfig={{\n 'request-init': '暂无数据',\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={onRefreshRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n >\n {selectorAllList.map((item, index) => {\n const value = item[optionsItemValueField];\n const label = item[optionsItemLabelField];\n return (\n <Select.Option\n value={value}\n label={label}\n key={`${value}-${index}`}\n disabled={item[optionsItemDisabledField]}\n >\n {props.showIcon ? (\n <span className=\"v-selector-item-icon\">{props.icon?.(item, index)}</span>\n ) : null}\n {onLabelRenderAdapter ? onLabelRenderAdapter(item) : label}\n </Select.Option>\n );\n })}\n </Select>\n );\n};\n"],"names":["useRequest","options","cacheKey","serviceConfig","hasOuterSelectorList","outerSelectorList","onRespDataChange","onSelectorRequestError","onChange","useCache","fieldNames","serviceRequestParams","params","requiredParamsKeys","hasServiceRequestParams","Object","keys","length","_useState","useState","stateSelectorList","setStateSelectorList","_useState2","requestStatus","setRequestStatus","_useState3","Date","now","refreshKey","setRefreshKey","serviceRequestParamsStringify","useMemo","sortDataStringify","JSON","stringify","_json","sort","undefined","error","serviceRequestCahceKey","serviceRequestCahceStatusKey","pubSubKey","prevServiceRequestParamsStringify","fbaHooks","usePrevious","prevParams","serviceRespDataAdapter","respData","result","onRequestResultAdapter","list","_get","_isArray","console","warn","getWindowCacheData","_window$__selector_wr","window","getWindowCacheValue","_getWindowCacheData","getWindowCacheStatus","_getWindowCacheData2","setWindowCache","key","value","onChangeRequestStatus","status","onRequest","Promise","$return","$error","respAdapterData","$Try_2_Catch","setTimeout","pubSub","publish","reject","$boundEx","resolve","then","$await_7","useEffectCustomAsync","isEmpty","_dataList","_respAdapterData","find","isUndefinedOrNull","_isDeepEqual","$Try_3_Post","$Try_3_Catch","$await_8","$If_5","call","this","dataList","subscribe","_msg","_ref","$Try_4_Post","$Try_4_Catch","$await_9","onRefreshRequest","getVauleList","data","valueKey","valueList","toArray","map","item","_isObject","SelectorWrapper","props","showAllOption","onSelectorListChange","onSelectorListAllChange","onLabelRenderAdapter","requestMessageConfig","selectorList","modelKey","labelInValue","otherProps","_objectWithoutPropertiesLoose","_excluded","firstRenderSelectList","useRef","hasOwnProperty","mergeFieldNames","_extends","label","disabled","optionsItemLabelField","optionsItemValueField","optionsItemDisabledField","allOptionConfig","isTrue","isMultiple","valueIsEqual","mode","_useRequest","current","onRespChange","_hooks","useCallbackRef","selectedList","onInnerChange","_value","otherParams","targetList","forEach","push","filterTarget","arrayFind","selectorAllList","concat","loading","selectValue","filterOption","input","option","children","mergeString","_isString","toLowerCase","indexOf","_jsx","Select","showSearch","allowClear","popupMatchSelectWidth","style","width","suffixIcon","_RedoOutlined","spin","onClick","notFoundContent","RequestStatus","messageConfig","errorButton","Button","type","index","_jsxs","Option","showIcon","className","icon"],"mappings":"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"}
|
|
@@ -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{hooks as r}from"@wove/react/cjs/hooks";import{a as t,_ as o}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{get as i}from"@dimjs/utils/cjs/get";import{Select as s,Button as a}from"antd";import{useState as
|
|
6
|
+
import e from"@ant-design/icons/es/icons/RedoOutlined";import{hooks as r}from"@wove/react/cjs/hooks";import{a as t,_ as o}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{get as i}from"@dimjs/utils/cjs/get";import{Select as s,Button as a}from"antd";import{useState as l,useMemo as u}from"react";import{fbaHooks as c}from"../fba-hooks/index.js";import{RequestStatus as d}from"../request-status/index.js";import{jsx as f}from"react/jsx-runtime";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";var v=["showAllOption","serviceConfig","onSelectorListChange","onSelectorRequestError","requestMessageConfig","fieldNames","onLabelRenderAdapter"];var m=function m(p){var h=p.showAllOption,g=p.serviceConfig,b=p.onSelectorListChange,q=p.onSelectorRequestError,w=p.requestMessageConfig,y=p.fieldNames,C=p.onLabelRenderAdapter,j=t(p,v);var R=l("request-init"),S=R[0],x=R[1];var A=l(),k=A[0],K=A[1];var E=(y==null?void 0:y.label)||"label";var L=(y==null?void 0:y.value)||"value";var O=(y==null?void 0:y.disabled)||"disabled";var M=(y==null?void 0:y.searchKeyword)||"searchKeyword";var P=g.params;var B=u((function(){var e=h===true;if(h){return{label:e?"全部":h.label,value:e?"":h.value}}return null}),[h]);var N=function e(r){var t=r;if(g.onRequestResultAdapter){t=g.onRequestResultAdapter(r)}else if(y!=null&&y.list){t=i(r,y==null?void 0:y.list)}if(t&&!n(t)){console.warn("待渲染数据为非数组结构",t);return[]}return t||[]};var _=function e(r){return new Promise((function(e,t){var n,i,s;var a=function(){try{return e()}catch(e){return t(e)}};var l=function(e){try{x("request-error");q==null?void 0:q(e);return a()}catch(e){return t(e)}};try{x("request-progress");return Promise.resolve(g.onRequest==null?void 0:g.onRequest(o({},P,(n={},n[M]=r,n)))).then((function(e){try{i=e;s=N(i);b==null?void 0:b(s);if(E&&L){s=s.map((function(e){return o({},e,{label:e[E],value:e[L],disabled:e[O||"disabled"]})}))}s.forEach((function(e){if(C){e.label=C(e)}}));if(B){s.unshift(B)}K(s);x("request-success");return a()}catch(e){return l(e)}}),l)}catch(e){l(e)}}))};var z=r.useDebounceCallback((function(e){K([]);void _(e)}),300);c.useEffectCustom((function(){if(p.customKeyword){void _(p.customKeyword)}}),[p.customKeyword]);var D=S==="request-progress";return f(s,o({showSearch:true,allowClear:true,dropdownMatchSelectWidth:false},j,{style:o({width:"100%"},p.style),options:k,filterOption:false,onSearch:z,notFoundContent:f(d,{status:S,loading:D,messageConfig:o({"request-init":"请输入搜索条件"},w),errorButton:f(a,{type:"primary",onClick:_,children:"重新获取数据"})}),suffixIcon:S==="request-error"?f(e,{spin:D,onClick:_}):undefined,loading:D}))};export{m as SelectorWrapperSearch};
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/selector-wrapper-search/selector-wrapper-search.tsx"],"sourcesContent":["import { RedoOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport { LabelValueItem, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Select, SelectProps } from 'antd';\nimport { ReactElement, useMemo, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { RequestStatus, TRequestStatus, TRequestStatusProps } from '../request-status';\n\nexport type SelectorWrapperSearchServiceConfig = {\n params?: TPlainObject;\n onRequest: (params?: TAny) => TAny;\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type SelectorWrapperSearchProps = Omit<\n SelectProps,\n 'onSearch' | 'notFoundContent' | 'options' | 'fieldNames' | 'loading'\n> & {\n /**\n * 参数Key映射\n * ```\n * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如:'a.b.c'\n * 2. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效\n * ```\n */\n fieldNames?: { label: string; value: string; disabled?: string; searchKeyword?: string; list?: string };\n /**\n * 请求服务需求的数据\n */\n serviceConfig: SelectorWrapperSearchServiceConfig;\n /**\n * 添加全部选项\n * ```\n * 1. 默认值label=\"全部\",value=\"\"\n * 2. 可配置label、value\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /** selectorList发生变更时触发,每次都会调用 */\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /** 通过服务获取数据异常回调 */\n onSelectorRequestError?: (error: Error) => void;\n /** 交互文案配置 */\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n // label渲染适配器\n onLabelRenderAdapter?: (dataItem: TPlainObject) => string | ReactElement;\n // 自定义keyword值\n customKeyword?: string;\n};\n/**\n * 选择器简单包装组件\n * @param props\n * @returns\n * ```\n * 1. 只支持 search + 服务 功能\n * 2. 不会缓存接口数据\n * 3. 不会对value、onChange做任何处理\n * ```\n */\nexport const SelectorWrapperSearch = (props: SelectorWrapperSearchProps) => {\n const {\n showAllOption,\n serviceConfig,\n onSelectorListChange,\n onSelectorRequestError,\n requestMessageConfig,\n fieldNames,\n onLabelRenderAdapter,\n ...otherProps\n } = props;\n const [requestStatus, setRequestStatus] = useState<TRequestStatus>('request-init');\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const optionsItemLabelField = fieldNames?.label || 'label';\n const optionsItemValueField = fieldNames?.value || 'value';\n const optionsItemDisabledField = fieldNames?.disabled || 'disabled';\n const searchKeyword = fieldNames?.searchKeyword || 'searchKeyword';\n const serviceParams = serviceConfig.params;\n\n const allOptionConfig = useMemo(() => {\n const isTrue = showAllOption === true;\n if (showAllOption) {\n return {\n label: isTrue ? '全部' : (showAllOption.label as string),\n value: isTrue ? '' : (showAllOption.value as TAny),\n };\n }\n return null;\n }, [showAllOption]);\n\n const serviceRespDataAdapter = (respData) => {\n if (serviceConfig.onRequestResultAdapter) {\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/selector-wrapper-search/selector-wrapper-search.tsx"],"sourcesContent":["import { RedoOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport { LabelValueItem, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Select, SelectProps } from 'antd';\nimport { ReactElement, useMemo, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { RequestStatus, TRequestStatus, TRequestStatusProps } from '../request-status';\n\nexport type SelectorWrapperSearchServiceConfig = {\n params?: TPlainObject;\n onRequest: (params?: TAny) => TAny;\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type SelectorWrapperSearchProps = Omit<\n SelectProps,\n 'onSearch' | 'notFoundContent' | 'options' | 'fieldNames' | 'loading'\n> & {\n /**\n * 参数Key映射\n * ```\n * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如:'a.b.c'\n * 2. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效\n * ```\n */\n fieldNames?: { label: string; value: string; disabled?: string; searchKeyword?: string; list?: string };\n /**\n * 请求服务需求的数据\n */\n serviceConfig: SelectorWrapperSearchServiceConfig;\n /**\n * 添加全部选项\n * ```\n * 1. 默认值label=\"全部\",value=\"\"\n * 2. 可配置label、value\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /** selectorList发生变更时触发,每次都会调用 */\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /** 通过服务获取数据异常回调 */\n onSelectorRequestError?: (error: Error) => void;\n /** 交互文案配置 */\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n // label渲染适配器\n onLabelRenderAdapter?: (dataItem: TPlainObject) => string | ReactElement;\n // 自定义keyword值\n customKeyword?: string;\n};\n/**\n * 选择器简单包装组件\n * @param props\n * @returns\n * ```\n * 1. 只支持 search + 服务 功能\n * 2. 不会缓存接口数据\n * 3. 不会对value、onChange做任何处理\n * ```\n */\nexport const SelectorWrapperSearch = (props: SelectorWrapperSearchProps) => {\n const {\n showAllOption,\n serviceConfig,\n onSelectorListChange,\n onSelectorRequestError,\n requestMessageConfig,\n fieldNames,\n onLabelRenderAdapter,\n ...otherProps\n } = props;\n const [requestStatus, setRequestStatus] = useState<TRequestStatus>('request-init');\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const optionsItemLabelField = fieldNames?.label || 'label';\n const optionsItemValueField = fieldNames?.value || 'value';\n const optionsItemDisabledField = fieldNames?.disabled || 'disabled';\n const searchKeyword = fieldNames?.searchKeyword || 'searchKeyword';\n const serviceParams = serviceConfig.params;\n\n const allOptionConfig = useMemo(() => {\n const isTrue = showAllOption === true;\n if (showAllOption) {\n return {\n label: isTrue ? '全部' : (showAllOption.label as string),\n value: isTrue ? '' : (showAllOption.value as TAny),\n };\n }\n return null;\n }, [showAllOption]);\n\n const serviceRespDataAdapter = (respData) => {\n let result: TPlainObject[] = respData;\n if (serviceConfig.onRequestResultAdapter) {\n result = serviceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n } else if (fieldNames?.list) {\n result = get(respData, fieldNames?.list);\n }\n if (result && !isArray(result)) {\n console.warn('待渲染数据为非数组结构', result);\n return [];\n }\n return result || [];\n };\n\n const startDataSourceRequest = async (keyword) => {\n try {\n setRequestStatus('request-progress');\n const respData = await serviceConfig.onRequest?.({\n ...serviceParams,\n [searchKeyword]: keyword,\n });\n let respAdapterData = serviceRespDataAdapter(respData);\n onSelectorListChange?.(respAdapterData);\n if (optionsItemLabelField && optionsItemValueField) {\n respAdapterData = respAdapterData.map((item) => {\n return {\n ...item,\n label: item[optionsItemLabelField],\n value: item[optionsItemValueField],\n disabled: item[optionsItemDisabledField || 'disabled'],\n };\n });\n }\n\n respAdapterData.forEach((item) => {\n if (onLabelRenderAdapter) {\n item.label = onLabelRenderAdapter(item);\n }\n });\n\n if (allOptionConfig) {\n respAdapterData.unshift(allOptionConfig);\n }\n setDataSource(respAdapterData);\n setRequestStatus('request-success');\n } catch (error) {\n setRequestStatus('request-error');\n onSelectorRequestError?.(error);\n }\n };\n\n const onSearch = hooks.useDebounceCallback((value: string) => {\n setDataSource([]);\n void startDataSourceRequest(value);\n }, 300);\n\n fbaHooks.useEffectCustom(() => {\n if (props.customKeyword) {\n void startDataSourceRequest(props.customKeyword);\n }\n }, [props.customKeyword]);\n\n const loading = requestStatus === 'request-progress';\n return (\n <Select\n showSearch={true}\n allowClear={true}\n dropdownMatchSelectWidth={false}\n {...otherProps}\n style={{ width: '100%', ...props.style }}\n options={dataSource as LabelValueItem[]}\n filterOption={false}\n onSearch={onSearch}\n notFoundContent={\n <RequestStatus\n status={requestStatus}\n loading={loading}\n messageConfig={{\n 'request-init': '请输入搜索条件',\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n suffixIcon={\n requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={startDataSourceRequest} />\n ) : undefined\n }\n loading={loading}\n />\n );\n};\n"],"names":["SelectorWrapperSearch","props","showAllOption","serviceConfig","onSelectorListChange","onSelectorRequestError","requestMessageConfig","fieldNames","onLabelRenderAdapter","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","requestStatus","setRequestStatus","_useState2","dataSource","setDataSource","optionsItemLabelField","label","optionsItemValueField","value","optionsItemDisabledField","disabled","searchKeyword","serviceParams","params","allOptionConfig","useMemo","isTrue","serviceRespDataAdapter","respData","result","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","keyword","Promise","$return","$error","_extends2","_respData","respAdapterData","$Try_1_Post","$boundEx","$Try_1_Catch","error","resolve","onRequest","_extends","then","$await_2","map","item","forEach","unshift","onSearch","_hooks","useDebounceCallback","fbaHooks","useEffectCustom","customKeyword","loading","_jsx","Select","showSearch","allowClear","dropdownMatchSelectWidth","style","width","options","filterOption","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","children","suffixIcon","_RedoOutlined","spin","undefined"],"mappings":"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"}
|
|
@@ -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{a as r,_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isArray as o}from"@dimjs/lang/cjs/is-array";import{get as n}from"@dimjs/utils/cjs/get";import{Select as i,Button as s}from"antd";import{useState as u,useMemo as l}from"react";import{fbaHooks as a}from"../fba-hooks/index.js";import{RequestStatus as c}from"../request-status/index.js";import{jsx as f}from"react/jsx-runtime";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";var v=["showAllOption","serviceConfig","onSelectorListChange","onSelectorRequestError","requestMessageConfig","fieldNames"];var d=function d(m){var p=m.showAllOption,g=m.serviceConfig,q=m.onSelectorListChange,h=m.onSelectorRequestError,j=m.requestMessageConfig,b=m.fieldNames,C=r(m,v);var y=u("request-init"),R=y[0],
|
|
6
|
+
import e from"@ant-design/icons/es/icons/RedoOutlined";import{a as r,_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isArray as o}from"@dimjs/lang/cjs/is-array";import{get as n}from"@dimjs/utils/cjs/get";import{Select as i,Button as s}from"antd";import{useState as u,useMemo as l}from"react";import{fbaHooks as a}from"../fba-hooks/index.js";import{RequestStatus as c}from"../request-status/index.js";import{jsx as f}from"react/jsx-runtime";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";var v=["showAllOption","serviceConfig","onSelectorListChange","onSelectorRequestError","requestMessageConfig","fieldNames"];var d=function d(m){var p=m.showAllOption,g=m.serviceConfig,q=m.onSelectorListChange,h=m.onSelectorRequestError,j=m.requestMessageConfig,b=m.fieldNames,C=r(m,v);var y=u("request-init"),R=y[0],w=y[1];var x=u(),k=x[0],A=x[1];var S=(b==null?void 0:b.label)||"label";var E=(b==null?void 0:b.value)||"value";var O=(b==null?void 0:b.disabled)||"disabled";var P=g.params;var B=l((function(){var e=p===true;if(p){return{label:e?"全部":p.label,value:e?"":p.value}}return null}),[p]);var L=function e(r){var t=r;if(g.onRequestResultAdapter){t=g.onRequestResultAdapter(r)}else if(b!=null&&b.list){t=n(r,b==null?void 0:b.list)}if(t&&!o(t)){console.warn("待渲染数据为非数组结构",t);return[]}return t||[]};var M=function e(){return new Promise((function(e,r){var o,n;var i=function(){try{return e()}catch(e){return r(e)}};var s=function(e){try{w("request-error");h==null?void 0:h(e);return i()}catch(e){return r(e)}};try{w("request-progress");return Promise.resolve(g.onRequest==null?void 0:g.onRequest(P)).then((function(e){try{o=e;n=L(o);q==null?void 0:q(n);if(S&&E){n=n.map((function(e){return t({},e,{label:e[S],value:e[E],disabled:e[O]})}))}if(B){n.unshift(B)}A(n);w("request-success");return i()}catch(e){return s(e)}}),s)}catch(e){s(e)}}))};a.useEffectCustom((function(){void M()}),[]);var N=R==="request-progress";return f(i,t({},C,{style:t({width:"100%"},m.style),options:k,notFoundContent:f(c,{status:R,loading:N,messageConfig:j,errorButton:f(s,{type:"primary",onClick:M,children:"重新获取数据"})}),suffixIcon:R==="request-error"?f(e,{spin:N,onClick:M}):undefined,loading:N}))};export{d as SelectorWrapperSimple};
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/selector-wrapper-simple/selector-wrapper-simple.tsx"],"sourcesContent":["import { RedoOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport { LabelValueItem, TAny, TPlainObject } from '@flatbiz/utils';\nimport { Button, Select, SelectProps } from 'antd';\nimport { useMemo, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { RequestStatus, TRequestStatus, TRequestStatusProps } from '../request-status';\n\nexport type SelectorWrapperSimpleServiceConfig = {\n params?: TPlainObject;\n onRequest: (params?: TAny) => TAny;\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type SelectorWrapperSimpleProps = Omit<\n SelectProps,\n 'onSearch' | 'notFoundContent' | 'options' | 'fieldNames' | 'loading'\n> & {\n /**\n * 参数Key映射\n * ```\n * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 2. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效\n * ```\n */\n fieldNames?: { label: string; value: string; disabled?: string; list?: string };\n /**\n * 请求服务需求的数据\n */\n serviceConfig: SelectorWrapperSimpleServiceConfig;\n /**\n * 添加全部选项\n * ```\n * 1. 默认值label=\"全部\",value=\"\"\n * 2. 可配置label、value\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /** selectorList发生变更时触发,每次都会调用 */\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /**\n * 通过服务获取数据异常回调\n */\n onSelectorRequestError?: (error: Error) => void;\n\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n};\n/**\n * 选择器简单包装组件\n * @param props\n * @returns\n * ```\n * 1. 不支持search效果\n * 2. 不会缓存接口数据\n * 3. 不会对value、onChange做任何处理\n * ```\n */\nexport const SelectorWrapperSimple = (props: SelectorWrapperSimpleProps) => {\n const {\n showAllOption,\n serviceConfig,\n onSelectorListChange,\n onSelectorRequestError,\n requestMessageConfig,\n fieldNames,\n ...otherProps\n } = props;\n const [requestStatus, setRequestStatus] = useState<TRequestStatus>('request-init');\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const optionsItemLabelField = fieldNames?.label || 'label';\n const optionsItemValueField = fieldNames?.value || 'value';\n const optionsItemDisabledField = fieldNames?.disabled || 'disabled';\n const serviceParams = serviceConfig.params;\n\n const allOptionConfig = useMemo(() => {\n const isTrue = showAllOption === true;\n if (showAllOption) {\n return {\n label: isTrue ? '全部' : (showAllOption.label as string),\n value: isTrue ? '' : (showAllOption.value as TAny),\n };\n }\n return null;\n }, [showAllOption]);\n\n const serviceRespDataAdapter = (respData) => {\n if (serviceConfig.onRequestResultAdapter) {\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/selector-wrapper-simple/selector-wrapper-simple.tsx"],"sourcesContent":["import { RedoOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport { LabelValueItem, TAny, TPlainObject } from '@flatbiz/utils';\nimport { Button, Select, SelectProps } from 'antd';\nimport { useMemo, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { RequestStatus, TRequestStatus, TRequestStatusProps } from '../request-status';\n\nexport type SelectorWrapperSimpleServiceConfig = {\n params?: TPlainObject;\n onRequest: (params?: TAny) => TAny;\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type SelectorWrapperSimpleProps = Omit<\n SelectProps,\n 'onSearch' | 'notFoundContent' | 'options' | 'fieldNames' | 'loading'\n> & {\n /**\n * 参数Key映射\n * ```\n * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 2. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效\n * ```\n */\n fieldNames?: { label: string; value: string; disabled?: string; list?: string };\n /**\n * 请求服务需求的数据\n */\n serviceConfig: SelectorWrapperSimpleServiceConfig;\n /**\n * 添加全部选项\n * ```\n * 1. 默认值label=\"全部\",value=\"\"\n * 2. 可配置label、value\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /** selectorList发生变更时触发,每次都会调用 */\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /**\n * 通过服务获取数据异常回调\n */\n onSelectorRequestError?: (error: Error) => void;\n\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n};\n/**\n * 选择器简单包装组件\n * @param props\n * @returns\n * ```\n * 1. 不支持search效果\n * 2. 不会缓存接口数据\n * 3. 不会对value、onChange做任何处理\n * ```\n */\nexport const SelectorWrapperSimple = (props: SelectorWrapperSimpleProps) => {\n const {\n showAllOption,\n serviceConfig,\n onSelectorListChange,\n onSelectorRequestError,\n requestMessageConfig,\n fieldNames,\n ...otherProps\n } = props;\n const [requestStatus, setRequestStatus] = useState<TRequestStatus>('request-init');\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const optionsItemLabelField = fieldNames?.label || 'label';\n const optionsItemValueField = fieldNames?.value || 'value';\n const optionsItemDisabledField = fieldNames?.disabled || 'disabled';\n const serviceParams = serviceConfig.params;\n\n const allOptionConfig = useMemo(() => {\n const isTrue = showAllOption === true;\n if (showAllOption) {\n return {\n label: isTrue ? '全部' : (showAllOption.label as string),\n value: isTrue ? '' : (showAllOption.value as TAny),\n };\n }\n return null;\n }, [showAllOption]);\n\n const serviceRespDataAdapter = (respData) => {\n let result: TPlainObject[] = respData;\n if (serviceConfig.onRequestResultAdapter) {\n result = serviceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n } else if (fieldNames?.list) {\n result = get(respData, fieldNames?.list);\n }\n if (result && !isArray(result)) {\n console.warn('待渲染数据为非数组结构', result);\n return [];\n }\n return result || [];\n };\n\n const startDataSourceRequest = async () => {\n try {\n setRequestStatus('request-progress');\n const respData = await serviceConfig.onRequest?.(serviceParams);\n let respAdapterData = serviceRespDataAdapter(respData);\n onSelectorListChange?.(respAdapterData);\n if (optionsItemLabelField && optionsItemValueField) {\n respAdapterData = respAdapterData.map((item) => {\n return {\n ...item,\n label: item[optionsItemLabelField],\n value: item[optionsItemValueField],\n disabled: item[optionsItemDisabledField],\n };\n });\n }\n\n if (allOptionConfig) {\n respAdapterData.unshift(allOptionConfig);\n }\n setDataSource(respAdapterData);\n setRequestStatus('request-success');\n } catch (error) {\n setRequestStatus('request-error');\n onSelectorRequestError?.(error);\n }\n };\n\n fbaHooks.useEffectCustom(() => {\n void startDataSourceRequest();\n }, []);\n\n const loading = requestStatus === 'request-progress';\n\n return (\n <Select\n {...otherProps}\n style={{ width: '100%', ...props.style }}\n options={dataSource as LabelValueItem[]}\n notFoundContent={\n <RequestStatus\n status={requestStatus}\n loading={loading}\n messageConfig={requestMessageConfig}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n suffixIcon={\n requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={startDataSourceRequest} />\n ) : undefined\n }\n loading={loading}\n />\n );\n};\n"],"names":["SelectorWrapperSimple","props","showAllOption","serviceConfig","onSelectorListChange","onSelectorRequestError","requestMessageConfig","fieldNames","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","requestStatus","setRequestStatus","_useState2","dataSource","setDataSource","optionsItemLabelField","label","optionsItemValueField","value","optionsItemDisabledField","disabled","serviceParams","params","allOptionConfig","useMemo","isTrue","serviceRespDataAdapter","respData","result","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","Promise","$return","$error","_respData","respAdapterData","$Try_1_Post","$boundEx","$Try_1_Catch","error","resolve","onRequest","then","$await_2","map","item","_extends","unshift","fbaHooks","useEffectCustom","loading","_jsx","Select","style","width","options","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","children","suffixIcon","_RedoOutlined","spin","undefined"],"mappings":";ssBA0DaA,EAAwB,SAAxBA,EAAyBC,GACpC,IACEC,EAOED,EAPFC,cACAC,EAMEF,EANFE,cACAC,EAKEH,EALFG,qBACAC,EAIEJ,EAJFI,uBACAC,EAGEL,EAHFK,qBACAC,EAEEN,EAFFM,WACGC,EAAUC,EACXR,EAAKS,GACT,IAAAC,EAA0CC,EAAyB,gBAA5DC,EAAaF,EAAA,GAAEG,EAAgBH,EAAA,GACtC,IAAAI,EAAoCH,IAA7BI,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAChC,IAAMG,GAAwBX,eAAAA,EAAYY,QAAS,QACnD,IAAMC,GAAwBb,eAAAA,EAAYc,QAAS,QACnD,IAAMC,GAA2Bf,eAAAA,EAAYgB,WAAY,WACzD,IAAMC,EAAgBrB,EAAcsB,OAEpC,IAAMC,EAAkBC,GAAQ,WAC9B,IAAMC,EAAS1B,IAAkB,KACjC,GAAIA,EAAe,CACjB,MAAO,CACLiB,MAAOS,EAAS,KAAQ1B,EAAciB,MACtCE,MAAOO,EAAS,GAAM1B,EAAcmB,MAExC,CACA,OAAO,IACT,GAAG,CAACnB,IAEJ,IAAM2B,EAAyB,SAAzBA,EAA0BC,GAC9B,IAAIC,EAAyBD,EAC7B,GAAI3B,EAAc6B,uBAAwB,CACxCD,EAAS5B,EAAc6B,uBAAuBF,EAC/C,MAAM,GAAIvB,SAAAA,EAAY0B,KAAM,CAC3BF,EAASG,EAAIJ,EAAUvB,GAAAA,UAAAA,EAAAA,EAAY0B,KACrC,CACA,GAAIF,IAAWI,EAAQJ,GAAS,CAC9BK,QAAQC,KAAK,cAAeN,GAC5B,MAAO,EACT,CACA,OAAOA,GAAU,IAGnB,IAAMO,EAAyB,SAAzBA,IAAyB,OAAA,IAAAC,SAAA,SAAAC,EAAAC,GAAA,IAGrBC,EACFC,EAxGV,IAAIC,aAAJ,IAAI,OAAAJ,GAAK,CAAC,MAAAK,GAAW,OAAOJ,EAAAI,EAAM,GAAlC,IAAIC,EAAA,SA0HSC,GA1Hb,IA2HMjC,EAAiB,iBACjBT,GAAAA,UAAAA,EAAAA,EAAyB0C,GA5H/B,OAAOH,GAAE,CAAC,MAAAC,GAAW,OAAOJ,EAAAI,EAAM,GAqG9B,IACE/B,EAAiB,oBACA,OAAAyB,QAAAS,QAAM7C,EAAc8C,WAAS,UAAA,EAAvB9C,EAAc8C,UAAYzB,IAAhC0B,eAA8CC,GAvGrE,IAuGYrB,EAAWqB,EACbR,EAAkBd,EAAuBC,GAC7C1B,GAAAA,UAAAA,EAAAA,EAAuBuC,GACvB,GAAIzB,GAAyBE,EAAuB,CAClDuB,EAAkBA,EAAgBS,KAAI,SAACC,GACrC,OAAAC,KACKD,EAAI,CACPlC,MAAOkC,EAAKnC,GACZG,MAAOgC,EAAKjC,GACZG,SAAU8B,EAAK/B,IAEnB,GACF,CAEA,GAAII,EAAiB,CACnBiB,EAAgBY,QAAQ7B,EAC1B,CACAT,EAAc0B,GACd7B,EAAiB,mBAzHvB,OAAO8B,GAAE,CAAC,MAAAC,GAAW,OAAOC,EAAAD,EAAM,CAAC,GAAAC,EA0H9B,CAAC,MAAOC,GAAOD,EAAPC,EAGT,CAAC,GACF,EAEDS,EAASC,iBAAgB,gBAClBnB,GACN,GAAE,IAEH,IAAMoB,EAAU7C,IAAkB,mBAElC,OACE8C,EAACC,EAAMN,KACD9C,EAAU,CACdqD,MAAKP,EAAA,CAAIQ,MAAO,QAAW7D,EAAM4D,OACjCE,QAAS/C,EACTgD,gBACEL,EAACM,EAAa,CACZC,OAAQrD,EACR6C,QAASA,EACTS,cAAe7D,EACf8D,YACET,EAACU,EAAM,CAACC,KAAK,UAAUC,QAASjC,EAAuBkC,SAAC,aAM9DC,WACE5D,IAAkB,gBAChB8C,EAAAe,EAAA,CAAcC,KAAMjB,EAASa,QAASjC,IACpCsC,UAENlB,QAASA,IAGf"}
|