@flatbiz/antd 4.5.53 → 4.5.55
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/button-operate/index.js +1 -1
- package/esm/button-operate/index.js.map +1 -1
- package/esm/cascader-wrapper/index.css +1 -1
- package/esm/cascader-wrapper/index.js +1 -1
- package/esm/cascader-wrapper/index.js.map +1 -1
- package/esm/copy-wrapper/index.js +1 -1
- package/esm/copy-wrapper/index.js.map +1 -1
- package/esm/drag-editable-table/index.js +1 -1
- package/esm/drag-editable-table/index.js.map +1 -1
- package/esm/editable-table/index.js +1 -1
- package/esm/editable-table/index.js.map +1 -1
- package/esm/index-636a568e.js +8 -0
- package/esm/index-636a568e.js.map +1 -0
- package/esm/index.js +1 -2
- package/esm/request-status/index.css +1 -1
- package/esm/request-status/index.js +2 -1
- package/esm/request-status/index.js.map +1 -1
- package/esm/resizable-drawer/index.js +1 -6
- package/esm/resizable-drawer/index.js.map +1 -1
- package/esm/selector-wrapper/index.css +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/styles/index.css +1 -1
- package/esm/tree-modal/index.js +1 -1
- package/esm/tree-modal/index.js.map +1 -1
- package/esm/tree-modal-selector/index.js +1 -1
- package/esm/tree-modal-selector/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 +2 -2
- package/esm/tree-wrapper/index.js.map +1 -1
- package/index.d.ts +12 -25
- package/package.json +1 -1
- package/esm/ai-search/index.css +0 -0
- package/esm/ai-search/index.js +0 -11
- package/esm/ai-search/index.js.map +0 -1
|
@@ -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
|
|
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 s}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isUndefinedOrNull as o,toArray as u,getUuid as i,valueIsEqual as a,arrayFind as l}from"@flatbiz/utils";import{Select as c,Button as f}from"antd";import{useState as d,useMemo as v,useRef as m,isValidElement as p}from"react";import{c as h}from"../index-636a568e.js";import{FlexLayout as g}from"../flex-layout/index.js";import{RequestStatus as q}from"../request-status/index.js";import C from"@ant-design/icons/es/icons/SyncOutlined";import{fbaHooks as w}from"../fba-hooks/index.js";import{IconWrapper as j}from"../icon-wrapper/index.js";import{jsx as y,jsxs as R}from"react/jsx-runtime";import{isDeepEqual as b}from"@dimjs/lang/cjs/is-deep-equal";import{isArray as _}from"@dimjs/lang/cjs/is-array";import{get as S}from"@dimjs/utils/cjs/get";import{json as L}from"@dimjs/utils/cjs/json";import x from"pubsub-js";import{isObject as O}from"@dimjs/lang/cjs/is-object";import"@dimjs/utils/cjs/class-names";import"@dimjs/utils/cjs/extend";import"../text-overflow/index.js";import"ahooks";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"@dimjs/lang/cjs/is-undefined";var P=["onRefreshRequest","loading"];var k=function e(r){var o=r.onRefreshRequest,u=r.loading,i=t(r,P);var a=d(u),l=a[0],c=a[1];var f=v((function(){if(r.requestStatus==="no-dependencies-params"){var e;return((e=r.requestMessageConfig)==null?void 0:e["no-dependencies-params"])||"未获取到必要的查询条件"}return undefined}),[r.requestMessageConfig,r.requestStatus]);var m=n.useCallbackRef((function(){if(r.requestStatus==="no-dependencies-params"){return}c(true);o()}));w.useEffectCustom((function(){if(l&&!u){c(false)}}),[u]);return y(j,s({},i,{icon:y(C,{spin:l,style:{color:"#9b9797"}}),onClick:m,hoverTips:f}))};var N=function e(r){var n=r.cacheKey,t=r.serviceConfig,s=r.hasOuterSelectorList,u=r.outerSelectorList,i=r.onRespDataChange,a=r.onSelectorRequestError,l=r.onChange,c=r.useCache,f=r.fieldNames;var m=t==null?void 0:t.params;var p=(t==null?void 0:t.requiredParamsKeys)||[];var h=m&&Object.keys(m).length>0;var g=d(),q=g[0],C=g[1];var j=d(),y=j[0],R=j[1];var O=d(Date.now()),P=O[0],k=O[1];var N=v((function(){try{if(h){var e=JSON.stringify(L.sort(m));if(e==="{}"){return undefined}return e}}catch(e){}return undefined}),[h,m]);var A=""+N;var I=N+"_status";var E=n+"_"+A;var D=w.usePrevious(N);var M=w.usePrevious(m);var K=function e(r){var n=r;if(t!=null&&t.onRequestResultAdapter){n=t==null?void 0:t.onRequestResultAdapter(r)}else if(f!=null&&f.list){n=S(r,f==null?void 0:f.list)}if(n&&!_(n)){console.warn("待渲染数据为非数组结构",n);return[]}return n||[]};var T=function e(){var r;return(r=window["__selector_wrapper_"])==null?void 0:r[n]};var z=function e(){var r;return(r=T())==null?void 0:r[A]};var B=function e(){var r;return(r=T())==null?void 0:r[I]};var J=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 V=function e(r){J(I,r);R(r)};var F=function e(){return new Promise((function(e,r){var n,s;var o=function(n){try{console.error(n);V("request-error");C(undefined);setTimeout((function(){x.publish(E,{status:"request-error"})}));a==null||a(n);return e(Promise.reject())}catch(e){return r(e)}};try{V("request-progress");return Promise.resolve(t==null||t.onRequest==null?void 0:t.onRequest(m||{})).then((function(r){try{n=r;s=K(n);J(A,s);V("request-success");setTimeout((function(){x.publish(E,{status:"request-success",respData:s})}));return e(s)}catch(e){return o(e)}}),o)}catch(e){o(e)}}))};w.useEffectCustomAsync((function(){return new Promise((function(e,r){var n,f,d,v,h,g;if(s){R("request-success");C(u);i==null||i(u);return e()}if(p.length>0){n=m?p.find((function(e){return o(m[e])})):true;if(n){C([]);R("no-dependencies-params");if(D){l==null||l(undefined)}return e()}if(c===false){if(b(m,M)){return e()}var q=function(){try{return e()}catch(e){return r(e)}};var w=function(e){try{console.error(e);R("request-error");C(undefined);a==null||a(e);return q()}catch(e){return r(e)}};try{R("request-progress");return Promise.resolve(t==null||t.onRequest==null?void 0:t.onRequest(m||{})).then((function(e){try{f=e;d=K(f);R("request-success");C(d);i==null||i(d);return q()}catch(e){return w(e)}}),w)}catch(e){w(e)}}return j.call(this)}function j(){v=B();if(v==="request-success"){h=z();C(h);R(v);i==null||i(h);return e()}if(v==="request-progress"){R(v);x.subscribe(E,(function(e,r){var n=r.status,t=r.respData;if(n==="request-success"){R(n);C(t);i==null||i(t)}else{R("request-error");C(undefined)}}));return e()}var n=function(){try{return e()}catch(e){return r(e)}};var t=function(e){try{console.error(e);R("request-error");C(undefined);a==null||a(e);return n()}catch(e){return r(e)}};try{return Promise.resolve(F()).then((function(e){try{g=e;C(g);R("request-success");i==null||i(g);return n()}catch(e){return t(e)}}),t)}catch(e){t(e)}}return j.call(this)}))}),[JSON.stringify(m),u,P]);var H=function e(){if(y==="request-success"){V("request-init")}k(Date.now())};return{requestStatus:y,stateSelectorList:q,serviceRequestParamsStringify:N,onRefreshRequest:H}};var A=function e(r,n){var t=u(r);t=t.map((function(e){if(O(e))return e[n];return e}));return t};var I=["serviceConfig","showAllOption","onSelectorListChange","onSelectorListAllChange","onSelectorRequestError","onLabelRenderAdapter","requestMessageConfig","selectorList","modelKey","fieldNames","value","labelInValue","useCache","style","className","showRefreshIcon"];var E=function o(d){var C=d.serviceConfig,w=d.showAllOption,j=d.onSelectorListChange,b=d.onSelectorListAllChange,_=d.onSelectorRequestError,S=d.onLabelRenderAdapter,L=d.requestMessageConfig,x=d.selectorList,O=d.modelKey,P=d.fieldNames,E=d.value,D=d.labelInValue,M=d.useCache,K=d.style,T=d.className,z=d.showRefreshIcon,B=t(d,I);var J=m(true);var V=v((function(){return O||i()}),[O]);var F=d.hasOwnProperty("selectorList");var H=s({label:"label",value:"value",disabled:"disabled"},P);var W=H.label,G=H.value,Q=H.disabled;var U=v((function(){var e;if(!w)return null;var r=w===true;return e={},e[W]=r?"全部":w.label,e[G]=r?"":w.value,e}),[W,G,w]);var X=a(d.mode,["multiple"]);var Y=N({fieldNames:H,cacheKey:V,hasOuterSelectorList:F,onChange:d.onChange,serviceConfig:C,outerSelectorList:x,onRespDataChange:function e(r){if(J.current){j==null||j(r||[]);J.current=false}b==null||b(r||[])},onSelectorRequestError:_,useCache:M===undefined?true:M}),Z=Y.requestStatus,$=Y.stateSelectorList,ee=Y.onRefreshRequest;var re=n.useCallbackRef((function(e){if(D){if(X){d.onChange==null||d.onChange(e,e)}else{d.onChange==null||d.onChange(e[0],e)}}else{var r=e.map((function(e){return e[G]}));if(X){d.onChange==null||d.onChange(r,e)}else{d.onChange==null||d.onChange(r[0],e[0])}}}));var ne=n.useCallbackRef((function(e,r){if(!r)return d.onChange==null?void 0:d.onChange(undefined);var n=u(r);var t=[];n.forEach((function(e){if(w&&U&&e.value===U[G]){t.push(U)}else{var r=l($||[],e.value,G);if(r){t.push(r)}}}));re(t)}));var te=v((function(){if(Z!=="request-success")return[];if(!$||$.length===0)return[];if(!U)return $;return[U].concat($)}),[U,Z,$]);var se=Z==="request-progress";var oe=v((function(){var e=A(E,G);return X?e:e[0]}),[X,G,E]);var ue=n.useCallbackRef((function(e,n){var t=u(n.children);var s="";var o=t.find((function(e){return p(e)}));if(!o){t.forEach((function(e){if(r(e))s+=e}))}else{s=r(n==null?void 0:n.label)?n.label:undefined}return s.toLowerCase().indexOf(e.toLowerCase())>=0}));return R(g,{fullIndex:0,style:s({width:"100%",alignItems:"center"},K),direction:"horizontal",gap:10,className:h("v-selector-wrapper",T),children:[y(c,s({showSearch:true,allowClear:true,popupMatchSelectWidth:false,filterOption:ue},B,{style:s({width:"100%"},d.style),value:oe,loading:se,onChange:ne,fieldNames:undefined,suffixIcon:Z==="request-error"?y(e,{spin:se,onClick:ee}):B.suffixIcon,notFoundContent:y(q,{status:Z,loading:se,messageConfig:s({"request-init":"暂无数据"},L),errorButton:y(f,{type:"primary",onClick:ee,children:"重新获取数据"})}),children:te.map((function(e,r){var n=e[G];var t=e[W];return R(c.Option,{value:n,label:t,disabled:e[Q],children:[d.showIcon?y("span",{className:"v-selector-item-icon",children:d.icon==null?void 0:d.icon(e,r)}):null,S?S(e):t]},n+"-"+r)}))})),z?y(k,{onRefreshRequest:ee,loading:se,requestStatus:Z,requestMessageConfig:L}):null]})};export{E 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 = 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, getUuid, TAny, toArray, TPlainObject, valueIsEqual } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Select } from 'antd';\nimport { isValidElement, 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 const modelKeyInner = useMemo(() => {\n return modelKey || getUuid();\n }, [modelKey]);\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: modelKeyInner,\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 const hasValidElementItem = children.find((item) => {\n return isValidElement(item);\n });\n if (!hasValidElementItem) {\n children.forEach((item) => {\n if (isString(item)) mergeString += item;\n });\n } else {\n mergeString = isString(option?.label) ? option.label : undefined;\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","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","modelKeyInner","getUuid","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","hasValidElementItem","isValidElement","_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/refresh-icon.tsx","@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 { SyncOutlined } from '@ant-design/icons';\nimport { hooks } from '@wove/react';\nimport { useMemo, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks/index.js';\nimport { IconWrapper } from '../icon-wrapper/icon-wrapper.jsx';\nimport type { TRequestStatus, TRequestStatusProps } from '../request-status/request-status.jsx';\n\nexport const RefreshIcon = (props: {\n onRefreshRequest: () => void;\n loading: boolean;\n requestStatus?: TRequestStatus;\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n}) => {\n const { onRefreshRequest, loading, ...otherProps } = props;\n const [innerLoading, setInnerLoading] = useState(loading);\n const hoverTips = useMemo(() => {\n if (props.requestStatus === 'no-dependencies-params') {\n return props.requestMessageConfig?.['no-dependencies-params'] || '未获取到必要的查询条件';\n }\n return undefined;\n }, [props.requestMessageConfig, props.requestStatus]);\n\n const onRefresh = hooks.useCallbackRef(() => {\n if (props.requestStatus === 'no-dependencies-params') {\n return;\n }\n setInnerLoading(true);\n onRefreshRequest();\n });\n\n fbaHooks.useEffectCustom(() => {\n if (innerLoading && !loading) {\n setInnerLoading(false);\n }\n }, [loading]);\n\n return (\n <IconWrapper\n {...otherProps}\n icon={<SyncOutlined spin={innerLoading} style={{ color: '#9b9797' }} />}\n onClick={onRefresh}\n hoverTips={hoverTips}\n />\n );\n};\n","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 if (requestStatus === 'request-success') {\n onChangeRequestStatus('request-init');\n }\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, getUuid, TAny, toArray, TPlainObject, valueIsEqual } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Select } from 'antd';\nimport { isValidElement, useMemo, useRef } from 'react';\nimport './style.less';\n\nimport { RedoOutlined } from '@ant-design/icons';\nimport { isString } from '@dimjs/lang';\nimport classNames from 'classnames';\nimport { FlexLayout } from '../flex-layout/flex-layout';\nimport { RequestStatus } from '../request-status';\nimport { RefreshIcon } from './refresh-icon';\nimport { SelectorWrapperProps } from './types';\nimport { useRequest } from './use-request';\nimport { getVauleList } from './utils';\nexport * from './types';\n/**\n * 选择器包装组件\n * ```\n * 1. 不支持搜索调用服务模式,可使用组件 SelectorWrapperSearch\n * 2. 修改文案【未获取到必要的查询条件】,通过参数 requestMessageConfig={{'no-dependencies-params': '自定义文案'}} 配置\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 style,\n className,\n showRefreshIcon,\n ...otherProps\n } = props;\n\n const firstRenderSelectList = useRef(true);\n\n const modelKeyInner = useMemo(() => {\n return modelKey || getUuid();\n }, [modelKey]);\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: modelKeyInner,\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 const hasValidElementItem = children.find((item) => {\n return isValidElement(item);\n });\n if (!hasValidElementItem) {\n children.forEach((item) => {\n if (isString(item)) mergeString += item;\n });\n } else {\n mergeString = isString(option?.label) ? option.label : undefined;\n }\n return mergeString.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n });\n\n return (\n <FlexLayout\n fullIndex={0}\n style={{ width: '100%', alignItems: 'center', ...style }}\n direction=\"horizontal\"\n gap={10}\n className={classNames('v-selector-wrapper', className)}\n >\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 {showRefreshIcon ? (\n <RefreshIcon\n onRefreshRequest={onRefreshRequest}\n loading={loading}\n requestStatus={requestStatus}\n requestMessageConfig={requestMessageConfig}\n />\n ) : null}\n </FlexLayout>\n );\n};\n"],"names":["RefreshIcon","props","onRefreshRequest","loading","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","innerLoading","setInnerLoading","hoverTips","useMemo","requestStatus","_props$requestMessage","requestMessageConfig","undefined","onRefresh","_hooks","useCallbackRef","fbaHooks","useEffectCustom","_jsx","IconWrapper","_extends","icon","_SyncOutlined","spin","style","color","onClick","useRequest","options","cacheKey","serviceConfig","hasOuterSelectorList","outerSelectorList","onRespDataChange","onSelectorRequestError","onChange","useCache","fieldNames","serviceRequestParams","params","requiredParamsKeys","hasServiceRequestParams","Object","keys","length","stateSelectorList","setStateSelectorList","_useState2","setRequestStatus","_useState3","Date","now","refreshKey","setRefreshKey","serviceRequestParamsStringify","sortDataStringify","JSON","stringify","_json","sort","error","serviceRequestCahceKey","serviceRequestCahceStatusKey","pubSubKey","prevServiceRequestParamsStringify","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","subscribe","_msg","_ref","$Try_4_Post","$Try_4_Catch","$await_9","getVauleList","data","valueKey","valueList","toArray","map","item","_isObject","SelectorWrapper","showAllOption","onSelectorListChange","onSelectorListAllChange","onLabelRenderAdapter","selectorList","modelKey","labelInValue","className","showRefreshIcon","firstRenderSelectList","useRef","modelKeyInner","getUuid","hasOwnProperty","mergeFieldNames","label","disabled","optionsItemLabelField","optionsItemValueField","optionsItemDisabledField","allOptionConfig","isTrue","isMultiple","valueIsEqual","mode","_useRequest","current","onRespChange","selectedList","onInnerChange","_value","otherParams","targetList","forEach","push","filterTarget","arrayFind","selectorAllList","concat","selectValue","filterOption","input","option","children","mergeString","hasValidElementItem","isValidElement","_isString","toLowerCase","indexOf","_jsxs","FlexLayout","fullIndex","width","alignItems","direction","gap","classNames","Select","showSearch","allowClear","popupMatchSelectWidth","suffixIcon","_RedoOutlined","notFoundContent","RequestStatus","messageConfig","errorButton","Button","type","index","Option","showIcon"],"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-c0dbec57.js";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{get as i}from"@dimjs/utils/cjs/get";import{Select 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-c0dbec57.js";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{get as i}from"@dimjs/utils/cjs/get";import{isUndefinedOrNull as s}from"@flatbiz/utils";import{Select as a,Button as u}from"antd";import{useState as l,useMemo as c}from"react";import{fbaHooks as d}from"../fba-hooks/index.js";import{RequestStatus as f}from"../request-status/index.js";import{jsx as m}from"react/jsx-runtime";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"@dimjs/utils/cjs/extend";import"../index-636a568e.js";import"../text-overflow/index.js";import"@dimjs/lang/cjs/is-string";import"@dimjs/utils/cjs/class-names";import"ahooks";var p=["showAllOption","serviceConfig","onSelectorListChange","onSelectorRequestError","requestMessageConfig","fieldNames","onLabelRenderAdapter"];var v=function v(h){var g=h.showAllOption,j=h.serviceConfig,q=h.onSelectorListChange,b=h.onSelectorRequestError,y=h.requestMessageConfig,w=h.fieldNames,C=h.onLabelRenderAdapter,R=t(h,p);var x=l("request-init"),k=x[0],S=x[1];var A=l(),K=A[0],E=A[1];var L=(w==null?void 0:w.label)||"label";var O=(w==null?void 0:w.value)||"value";var P=(w==null?void 0:w.disabled)||"disabled";var M=(w==null?void 0:w.searchKeyword)||"searchKeyword";var B=j.params;var N=j.requiredParamsKeys||[];var _=c((function(){var e=g===true;if(g){return{label:e?"全部":g.label,value:e?"":g.value}}return null}),[g]);var z=function e(r){var t=r;if(j.onRequestResultAdapter){t=j.onRequestResultAdapter(r)}else if(w!=null&&w.list){t=i(r,w==null?void 0:w.list)}if(t&&!n(t)){console.warn("待渲染数据为非数组结构",t);return[]}return t||[]};var D=function e(r){return new Promise((function(e,t){var n,i,a,u;var l=function(){try{return e()}catch(e){return t(e)}};var c=function(e){try{S("request-error");b==null||b(e);return l()}catch(e){return t(e)}};try{if(N.length){i=B?N.find((function(e){return s(B[e])})):true;if(i){E([]);S("no-dependencies-params");return e()}}if(!r){S("request-search-keyword-empty");return e()}S("request-progress");return Promise.resolve(j.onRequest==null?void 0:j.onRequest(o({},B,(n={},n[M]=r,n)))).then((function(e){try{a=e;u=z(a);q==null||q(u);if(L&&O){u=u.map((function(e){return o({},e,{label:e[L],value:e[O],disabled:e[P||"disabled"]})}))}u.forEach((function(e){if(C){e.label=C(e)}}));if(_){u.unshift(_)}E(u);S("request-success");return l()}catch(e){return c(e)}}),c)}catch(e){c(e)}}))};var F=r.useDebounceCallback((function(e){E([]);void D(e)}),300);d.useEffectCustom((function(){void D(h.customKeyword)}),[h.customKeyword]);var H=k==="request-progress";return m(a,o({showSearch:true,allowClear:true,popupMatchSelectWidth:false,placeholder:"输入关键字搜索"},R,{style:o({width:"100%"},h.style),options:K,filterOption:false,onSearch:F,notFoundContent:m(f,{status:k,loading:H,messageConfig:o({"request-init":"请输入搜索条件"},y),errorButton:m(u,{type:"primary",onClick:D,children:"重新获取数据"})}),suffixIcon:k==="request-error"?m(e,{spin:H,onClick:D}):undefined,loading:H}))};export{v 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 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","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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"}
|
|
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 { isUndefinedOrNull, 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 /** 与 params 配合使用 */\n requiredParamsKeys?: string[];\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?: {\n label: string;\n value: string;\n disabled?: string;\n searchKeyword?: string;\n list?: string;\n };\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 * 4. 修改文案【未获取到必要的查询条件】,通过参数 requestMessageConfig={{'no-dependencies-params': '自定义文案'}} 配置\n * 5. 通过设置 fieldNames.searchKeyword 可修改关键字key值,默认值:searchKeyword\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 const requiredParamsKeys = serviceConfig.requiredParamsKeys || [];\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 if (requiredParamsKeys.length) {\n const isEmpty = serviceParams\n ? requiredParamsKeys.find((key) => isUndefinedOrNull(serviceParams[key]))\n : true;\n if (isEmpty) {\n // 当依赖项查询条件为空时,清空当前缓存数据\n setDataSource([]);\n setRequestStatus('no-dependencies-params');\n return;\n }\n }\n if (!keyword) {\n setRequestStatus('request-search-keyword-empty');\n return;\n }\n\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: TAny) {\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 void startDataSourceRequest(props.customKeyword);\n }, [props.customKeyword]);\n\n const loading = requestStatus === 'request-progress';\n return (\n <Select\n showSearch={true}\n allowClear={true}\n popupMatchSelectWidth={false}\n placeholder={'输入关键字搜索'}\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","requiredParamsKeys","allOptionConfig","useMemo","isTrue","serviceRespDataAdapter","respData","result","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","keyword","Promise","$return","$error","_extends2","isEmpty","respAdapterData","$Try_1_Post","$boundEx","$Try_1_Catch","error","length","find","key","isUndefinedOrNull","resolve","onRequest","_extends","then","$await_2","map","item","forEach","unshift","onSearch","_hooks","useDebounceCallback","fbaHooks","useEffectCustom","customKeyword","loading","_jsx","Select","showSearch","allowClear","popupMatchSelectWidth","placeholder","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-c0dbec57.js";import{isArray as o}from"@dimjs/lang/cjs/is-array";import{get as
|
|
6
|
+
import e from"@ant-design/icons/es/icons/RedoOutlined";import{a as r,_ as t}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isArray as o}from"@dimjs/lang/cjs/is-array";import{get as s}from"@dimjs/utils/cjs/get";import{Select as i,Button as n}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 m}from"react/jsx-runtime";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"@dimjs/utils/cjs/extend";import"../index-636a568e.js";import"../text-overflow/index.js";import"@dimjs/lang/cjs/is-string";import"@dimjs/utils/cjs/class-names";import"ahooks";var f=["showAllOption","serviceConfig","onSelectorListChange","onSelectorRequestError","requestMessageConfig","fieldNames"];var d=function d(p){var v=p.showAllOption,g=p.serviceConfig,j=p.onSelectorListChange,h=p.onSelectorRequestError,q=p.requestMessageConfig,b=p.fieldNames,C=r(p,f);var x=u("request-init"),y=x[0],R=x[1];var w=u(),k=w[0],A=w[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=v===true;if(v){return{label:e?"全部":v.label,value:e?"":v.value}}return null}),[v]);var L=function e(r){var t=r;if(g.onRequestResultAdapter){t=g.onRequestResultAdapter(r)}else if(b!=null&&b.list){t=s(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,s;var i=function(){try{return e()}catch(e){return r(e)}};var n=function(e){try{R("request-error");h==null||h(e);return i()}catch(e){return r(e)}};try{R("request-progress");return Promise.resolve(g.onRequest==null?void 0:g.onRequest(P)).then((function(e){try{o=e;s=L(o);j==null||j(s);if(S&&E){s=s.map((function(e){return t({},e,{label:e[S],value:e[E],disabled:e[O]})}))}if(B){s.unshift(B)}A(s);R("request-success");return i()}catch(e){return n(e)}}),n)}catch(e){n(e)}}))};a.useEffectCustom((function(){void M()}),[]);var N=y==="request-progress";return m(i,t({},C,{style:t({width:"100%"},p.style),options:k,notFoundContent:m(c,{status:y,loading:N,messageConfig:q,errorButton:m(n,{type:"primary",onClick:M,children:"重新获取数据"})}),suffixIcon:y==="request-error"?m(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 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","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":";
|
|
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","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":"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"}
|
package/esm/styles/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.num-ff{font-family:var(--v-font-family-number)}p,ul{margin:0;padding:0}.hide{display:none}.clear-fix:after{clear:both;content:" ";display:block;font-size:0;height:0;visibility:hidden}.ant-btn-dashed:disabled,.ant-btn-variant-dashed:disabled,.ant-btn-variant-link:disabled,.ant-btn-variant-solid:disabled,.ant-checkbox-disabled+span,.ant-input-number-outlined.ant-input-number-disabled,.ant-input[disabled],.ant-picker-disabled input[disabled],.ant-radio-wrapper-disabled,.ant-select-disabled .ant-select-selector,.ant-select-multiple.ant-select-disabled .ant-select-selection-item,.ant-select-outlined.ant-select-disabled:not(.ant-select-customize-input) .ant-select-selector{color:rgba(0,0,0,.6)!important}.ant-radio-disabled .ant-radio-inner:after{background-color:rgba(0,0,0,.5)!important}.ant-checkbox-disabled .ant-checkbox-inner:after{border-color:rgba(0,0,0,.6)!important}.dark-theme .ant-btn-dashed:disabled,.dark-theme .ant-btn-variant-dashed:disabled,.dark-theme .ant-btn-variant-link:disabled,.dark-theme .ant-btn-variant-solid:disabled,.dark-theme .ant-checkbox-disabled+span,.dark-theme .ant-input-number-outlined.ant-input-number-disabled,.dark-theme .ant-input[disabled],.dark-theme .ant-picker-disabled input[disabled],.dark-theme .ant-radio-wrapper-disabled,.dark-theme .ant-select-disabled .ant-select-selector,.dark-theme .ant-select-multiple.ant-select-disabled .ant-select-selection-item,.dark-theme .ant-select-outlined.ant-select-disabled:not(.ant-select-customize-input) .ant-select-selector{color:hsla(0,0%,100%,.8)!important}.dark-theme .ant-radio-disabled .ant-radio-inner:after{background-color:hsla(0,0%,100%,.7)!important}.dark-theme .ant-checkbox-disabled .ant-checkbox-inner:after{border-color:hsla(0,0%,100%,.8)!important}
|
|
1
|
+
.num-ff{font-family:var(--v-font-family-number)}p,ul{margin:0;padding:0}.hide{display:none}.clear-fix:after{clear:both;content:" ";display:block;font-size:0;height:0;visibility:hidden}.ant-btn-dashed:disabled,.ant-btn-variant-dashed:disabled,.ant-btn-variant-link:disabled,.ant-btn-variant-solid:disabled,.ant-checkbox-disabled+span,.ant-input-number-outlined.ant-input-number-disabled,.ant-input[disabled],.ant-picker-disabled input[disabled],.ant-radio-wrapper-disabled,.ant-select-disabled .ant-select-selector,.ant-select-multiple.ant-select-disabled .ant-select-selection-item,.ant-select-outlined.ant-select-disabled:not(.ant-select-customize-input) .ant-select-selector{color:rgba(0,0,0,.6)!important}.ant-radio-disabled .ant-radio-inner:after{background-color:rgba(0,0,0,.5)!important}.ant-checkbox-disabled .ant-checkbox-inner:after{border-color:rgba(0,0,0,.6)!important}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper{color:rgba(0,0,0,.6)!important}.dark-theme .ant-btn-dashed:disabled,.dark-theme .ant-btn-variant-dashed:disabled,.dark-theme .ant-btn-variant-link:disabled,.dark-theme .ant-btn-variant-solid:disabled,.dark-theme .ant-checkbox-disabled+span,.dark-theme .ant-input-number-outlined.ant-input-number-disabled,.dark-theme .ant-input[disabled],.dark-theme .ant-picker-disabled input[disabled],.dark-theme .ant-radio-wrapper-disabled,.dark-theme .ant-select-disabled .ant-select-selector,.dark-theme .ant-select-multiple.ant-select-disabled .ant-select-selection-item,.dark-theme .ant-select-outlined.ant-select-disabled:not(.ant-select-customize-input) .ant-select-selector{color:hsla(0,0%,100%,.8)!important}.dark-theme .ant-radio-disabled .ant-radio-inner:after{background-color:hsla(0,0%,100%,.7)!important}.dark-theme .ant-checkbox-disabled .ant-checkbox-inner:after{border-color:hsla(0,0%,100%,.8)!important}.dark-theme .ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper{color:hsla(0,0%,100%,.8)!important}
|
package/esm/tree-modal/index.js
CHANGED
|
@@ -17,5 +17,5 @@ import './../dropdown-menu-wrapper/index.css';
|
|
|
17
17
|
import './../input-search-wrapper/index.css';
|
|
18
18
|
import './index.css';
|
|
19
19
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
20
|
-
import{toArray as e,treeToTiledMap as i,isUndefinedOrNull as n,attachPropertiesToComponent as t}from"@flatbiz/utils";import{_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{hooks as o}from"@wove/react/cjs/hooks";import{useSize as l}from"ahooks";import{Modal as a}from"antd";import{Fragment as d,useRef as s,useState as u,useEffect as c,useMemo as m}from"react";import{fbaHooks as v}from"../fba-hooks/index.js";import{isObject as
|
|
20
|
+
import{toArray as e,treeToTiledMap as i,isUndefinedOrNull as n,attachPropertiesToComponent as t}from"@flatbiz/utils";import{_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{hooks as o}from"@wove/react/cjs/hooks";import{useSize as l}from"ahooks";import{Modal as a}from"antd";import{Fragment as d,useRef as s,useState as u,useEffect as c,useMemo as m}from"react";import{fbaHooks as v}from"../fba-hooks/index.js";import{isObject as p}from"@dimjs/lang/cjs/is-object";import{FlexLayout as h}from"../flex-layout/index.js";import f from"@ant-design/icons/es/icons/CloseOutlined";import{CssNodeHover as g}from"../css-node-hover/index.js";import{IconWrapper as j}from"../icon-wrapper/index.js";import{TextOverflow as C}from"../text-overflow/index.js";import{jsx as x,jsxs as y}from"react/jsx-runtime";import{TreeWrapper as b}from"../tree-wrapper/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-string";import"@dimjs/model-react";import"@dimjs/utils/cjs/array";import"@ant-design/icons/es/icons/CaretDownFilled";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/utils/cjs/extend";import"@dimjs/utils/cjs/get";import"@dimjs/model";import"dequal";import"../button-operate/index.js";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"react-dom/client";import"@wove/react/cjs/create-ctx";import"../input-search-wrapper/index.js";import"../request-status/index.js";import"../index-636a568e.js";import"@dimjs/utils/cjs/tree";var w=function e(i){var n=i.checkedIdList;return x(d,{children:n==null?void 0:n.map((function(e){var n=e.value;var t=e.label||n;return x(g,{style:{paddingLeft:5,paddingRight:0},children:y(h,{fullIndex:1,direction:"horizontal",style:{alignItems:"center",fontSize:14,marginBottom:0,color:"#505050"},children:[x(C,{text:t}),x("div",{style:{position:"relative",zIndex:9,color:"#a1a1a1"},children:x(j,{text:x(f,{}),onClick:i.onDeleteItem.bind(null,n),size:"small",style:{paddingRight:5,margin:"2px"}})})]})},n)}))})};var N=function i(n){var t,l;var a=o.useId(undefined,"tree-select-modal");return x(b,r({initRootExpand:true,showSearch:true,searchPlaceholder:"搜索",checkable:true,checkableType:"2"},n.treeProps,{showIcon:(t=n.treeProps)!=null&&t.icon?true:false,value:(l=n.value)==null?void 0:l.map((function(e){return e.value})),modelKey:a,fieldNames:n.fieldNames,labelInValue:true,serviceConfig:n.serviceConfig,onChange:function i(t){n.onChange==null||n.onChange(e(t))}}))};var k=function e(n){var t,o;var l=n.value||[];var a=((t=n.fieldNames)==null?void 0:t.value)||"value";var s=((o=n.fieldNames)==null?void 0:o.children)||"children";var u=n.textConfig,c=u.selectQuantityPrompt,m=u.placeholder;return y(h,{fullIndex:0,direction:"horizontal",gap:10,style:{height:"100%",overflow:"hidden"},children:[x("div",{style:{backgroundColor:"#f4f4f4",padding:10,borderRadius:5},children:x(N,{treeProps:n.treeProps,value:l,onChange:n.onChange,fieldNames:n.fieldNames,serviceConfig:r({},n.serviceConfig,{onRequestResultAdapter:function e(t){var r=i(t,{value:a,children:s});n.onChangeDataSource==null||n.onChangeDataSource(t,r);return t}})})}),y("div",{style:{width:"40%",overflow:"hidden",height:"100%",display:"flex",flexDirection:"column",flexShrink:0},children:[x("div",{style:{fontSize:15,fontWeight:"500",marginBottom:10},children:l.length>0?x(d,{children:c?c.replace("{total}",""+((l==null?void 0:l.length)||"")):"已选择"+(l==null?void 0:l.length)}):m||"请选择"}),x("div",{style:{overflow:"auto",flex:1},children:x(w,{checkedIdList:l,fieldNames:n.fieldNames,onDeleteItem:n.onDeleteItem})})]})]})};var R=function e(n){var t,o;var l=n.textConfig,a=l.selectQuantityPrompt,s=l.placeholder;var u=((t=n.fieldNames)==null?void 0:t.value)||"value";var c=((o=n.fieldNames)==null?void 0:o.children)||"children";var m=n.value||[];return y("div",{style:{height:"100%",overflow:"auto"},children:[x("div",{style:{backgroundColor:"#f4f4f4",padding:10,borderRadius:5},children:x(N,{treeProps:n.treeProps,value:m,onChange:n.onChange,fieldNames:n.fieldNames,serviceConfig:r({},n.serviceConfig,{onRequestResultAdapter:function e(t){var r=i(t,{value:u,children:c});n.onChangeDataSource==null||n.onChangeDataSource(t,r);return t}})})}),y("div",{style:{marginTop:20},children:[x("div",{style:{fontSize:15,fontWeight:"500",marginBottom:10},children:m.length>0?x(d,{children:a?a.replace("{total}",""+((m==null?void 0:m.length)||"")):"已选择"+(m==null?void 0:m.length)}):s}),x(w,{checkedIdList:m,fieldNames:n.fieldNames,onDeleteItem:n.onDeleteItem})]})]})};var D=function i(t){var l,a;var c=t.isMultiple;var m=((l=t.fieldNames)==null?void 0:l.label)||"label";var h=((a=t.fieldNames)==null?void 0:a.value)||"value";var f=s({});var g=v.useResponsivePoint()||"";var j=g==="xs"?"vertical":"horizontal";var C=n(c)?true:c;var y=u(),b=y[0],w=y[1];var N=function e(i){var n=b==null?void 0:b.filter((function(e){return e.value!==i}));w(n);t.onChange==null||t.onChange(n)};v.useEffectCustom((function(){var i=e(t.value).map((function(e){var i;var n=p(e)?e:{label:e,value:e};var t=n.value;return{value:t,label:((i=f.current[t])==null?void 0:i[m])||""}}));w(i)}),[t.value]);var D=r({},t.treeProps,{checkable:C?true:false});var I=function e(i){w(i);t.onChange==null||t.onChange(i)};var P=o.useCallbackRef((function(e,i){f.current=i;var n=b==null?void 0:b.map((function(e){var n=i[e.value];return n?{label:n[m],value:n[h]}:undefined})).filter(Boolean);w(n);t.onDataSourceChange==null||t.onDataSourceChange(e,i)}));return x(d,{children:j==="vertical"?x(R,{value:b,onDeleteItem:N,fieldNames:t.fieldNames,serviceConfig:t.serviceConfig?t.serviceConfig:{onRequest:t.onRequest},textConfig:t.textConfig,onChange:I,onChangeDataSource:P,treeProps:D}):x(k,{value:b,onDeleteItem:N,fieldNames:t.fieldNames,serviceConfig:t.serviceConfig?t.serviceConfig:{onRequest:t.onRequest},textConfig:t.textConfig,onChange:I,onChangeDataSource:P,treeProps:D})})};var I=function e(i){var n=i.size,t=n===void 0?"large":n;var p=u(false),h=p[0],f=p[1];var g=l(document.querySelector("html"));var j=v.useResponsivePoint()||"";var C=j==="xs"?"vertical":"horizontal";var b=o.useCallbackRef((function(){if(i.disabled)return;f(true)}));var w=i.children.type;var N=u(),k=N[0],R=N[1];var I=s();c((function(){I.current=i.value||[];R(i.value)}),[i.value]);var P=m((function(){if(!(g!=null&&g.height)||!j)return undefined;var e=["xs","sm"].includes(j);var n={};if(t=="large"){n={height:(g==null?void 0:g.height)*.65,width:800}}else if(t=="small"){n={height:(g==null?void 0:g.height)*.45,width:450}}else if(t=="middle"){n={height:(g==null?void 0:g.height)*.55,width:600}}return{height:i.modalBodyHeight||n.height,width:e?"90%":i.modalWidth||n.width}}),[g==null?void 0:g.height,j,t,i.modalBodyHeight,i.modalWidth]);var S=function e(){i.onChange==null||i.onChange(k);f(false)};var z=function e(){f(false);R(I.current)};return y(d,{children:[x(w,r({},i.children.props,{onClick:b})),x(a,{className:i.modalClassName,title:i.textConfig.title||"选择",open:h,onCancel:z,forceRender:i.forceRender,centered:true,width:P==null?void 0:P.width,onOk:S,styles:C==="horizontal"?{body:{height:P==null?void 0:P.height,maxHeight:"calc(100vh - 200px)",padding:"0px 20px 0 20px"},content:{padding:0},header:{padding:"20px 24px 0 20px"},footer:{padding:"0 24px 20px 24px"}}:{body:{height:P==null?void 0:P.height}},children:x(D,r({},i,{value:k,onChange:function e(i){R(i)}}))})]})};var P=t(I,{Content:D});export{P as TreeModal};
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-modal/select-item.tsx","@flatbiz/antd/src/tree-modal/tree.tsx","@flatbiz/antd/src/tree-modal/horizontal.tsx","@flatbiz/antd/src/tree-modal/vertical.tsx","@flatbiz/antd/src/tree-modal/select-modal-content.tsx","@flatbiz/antd/src/tree-modal/select-modal.tsx","@flatbiz/antd/src/tree-modal/index.ts"],"sourcesContent":["import { CloseOutlined } from '@ant-design/icons';\nimport { Fragment } from 'react';\n\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { CssNodeHover } from '../css-node-hover';\nimport { FlexLayout } from '../flex-layout';\nimport { IconWrapper } from '../icon-wrapper';\nimport { TextOverflow } from '../text-overflow';\nimport type { TreeModalProps } from './types';\n\nexport const SelectItemList = (props: {\n checkedIdList: TPlainObject[];\n fieldNames: TreeModalProps['fieldNames'];\n onDeleteItem: (value: TAny) => void;\n}) => {\n const checkedIdList = props.checkedIdList;\n return (\n <Fragment>\n {checkedIdList?.map((item) => {\n const value = item.value;\n const label = item.label || value;\n\n return (\n <CssNodeHover style={{ paddingLeft: 5, paddingRight: 0 }} key={value}>\n <FlexLayout\n fullIndex={1}\n direction=\"horizontal\"\n style={{\n alignItems: 'center',\n fontSize: 14,\n marginBottom: 0,\n color: '#505050',\n }}\n >\n <TextOverflow text={label} />\n <div\n style={{\n position: 'relative',\n zIndex: 9,\n color: '#a1a1a1',\n }}\n >\n <IconWrapper\n text={<CloseOutlined />}\n onClick={props.onDeleteItem.bind(null, value)}\n size=\"small\"\n style={{ paddingRight: 5, margin: '2px' }}\n />\n </div>\n </FlexLayout>\n </CssNodeHover>\n );\n })}\n </Fragment>\n );\n};\n","import type { TAny } from '@flatbiz/utils';\nimport { toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { TreeServiceConfig, TreeWrapperProps } from '../tree-wrapper';\nimport { TreeWrapper } from '../tree-wrapper';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const SelectContent = (props: {\n value?: TAny;\n onChange?: (value?: TreeModelSelectItem[]) => void;\n fieldNames?: TreeWrapperProps['fieldNames'];\n serviceConfig?: TreeServiceConfig;\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const modelKey = hooks.useId(undefined, 'tree-select-modal');\n return (\n <TreeWrapper\n initRootExpand\n showSearch\n searchPlaceholder=\"搜索\"\n checkable={true}\n checkableType=\"2\"\n {...props.treeProps}\n showIcon={props.treeProps?.icon ? true : false}\n value={props.value?.map((item) => item.value)}\n modelKey={modelKey}\n fieldNames={props.fieldNames}\n labelInValue={true}\n serviceConfig={props.serviceConfig}\n onChange={(values) => {\n props.onChange?.(toArray(values));\n }}\n />\n );\n};\n","import type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { FlexLayout } from '../flex-layout';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const HorizontalLayout = (props: {\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n serviceConfig?: {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n };\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const chenkedIdList = props.value || [];\n\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n\n return (\n <FlexLayout fullIndex={0} direction=\"horizontal\" gap={10} style={{ height: '100%', overflow: 'hidden' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n ...props.serviceConfig,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div\n style={{\n width: '40%',\n overflow: 'hidden',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n }}\n >\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder || '请选择'\n )}\n </div>\n <div style={{ overflow: 'auto', flex: 1 }}>\n <SelectItemList\n checkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n </FlexLayout>\n );\n};\n","import type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const VerticalLayout = (props: {\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n serviceConfig?: {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n };\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const chenkedIdList = props.value || [];\n\n return (\n <div style={{ height: '100%', overflow: 'auto' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n ...props.serviceConfig,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div style={{ marginTop: 20 }}>\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder\n )}\n </div>\n <SelectItemList\n checkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n );\n};\n","import { isObject } from '@dimjs/lang';\nimport { isUndefinedOrNull, toArray, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Fragment, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { HorizontalLayout } from './horizontal';\nimport type { TreeModalContentProps, TreeModelSelectItem } from './types';\nimport { VerticalLayout } from './vertical';\n\n/**\n * 树节点数据选择,一般用于选择员工等\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModalContent = (props: TreeModalContentProps) => {\n const { isMultiple } = props;\n const labelKey = props.fieldNames?.label || 'label';\n const valueKey = props.fieldNames?.value || 'value';\n const dataSourceMapRef = useRef<TPlainObject>({});\n\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const direction = screenType === 'xs' ? 'vertical' : 'horizontal';\n const isMultipleFt = isUndefinedOrNull(isMultiple) ? true : isMultiple;\n\n const [values, setValues] = useState<TreeModelSelectItem[]>();\n\n const onDeleteItem = (value) => {\n const targetList = values?.filter((item) => item.value !== value);\n setValues(targetList);\n props.onChange?.(targetList);\n };\n\n fbaHooks.useEffectCustom(() => {\n const values = toArray<TAny>(props.value).map((item) => {\n const target = isObject(item) ? item : { label: item, value: item };\n const value = target.value;\n return {\n value: value,\n label: dataSourceMapRef.current[value]?.[labelKey] || '',\n };\n });\n setValues(values);\n }, [props.value]);\n\n const treePropsFt = {\n ...props.treeProps,\n checkable: isMultipleFt ? true : false,\n };\n\n const onChange = (values?: TreeModelSelectItem[]) => {\n setValues(values);\n props.onChange?.(values);\n };\n\n const onChangeDataSource = hooks.useCallbackRef((treeDataList: TPlainObject[], mapData: TPlainObject) => {\n dataSourceMapRef.current = mapData;\n const result = values\n ?.map((item) => {\n const target = mapData[item.value];\n return target ? { label: target[labelKey], value: target[valueKey] } : undefined;\n })\n .filter(Boolean) as TreeModelSelectItem[];\n setValues(result);\n props.onDataSourceChange?.(treeDataList, mapData);\n });\n return (\n <Fragment>\n {direction === 'vertical' ? (\n <VerticalLayout\n value={values}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n serviceConfig={\n props.serviceConfig\n ? props.serviceConfig\n : {\n onRequest: props.onRequest,\n }\n }\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={onChangeDataSource}\n treeProps={treePropsFt}\n ></VerticalLayout>\n ) : (\n <HorizontalLayout\n value={values}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n serviceConfig={\n props.serviceConfig\n ? props.serviceConfig\n : {\n onRequest: props.onRequest,\n }\n }\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={onChangeDataSource}\n treeProps={treePropsFt}\n />\n )}\n </Fragment>\n );\n};\n","import type { TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Modal } from 'antd';\nimport { Fragment, useEffect, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { TreeModalContent } from './select-modal-content';\nimport type { TreeModalProps, TreeModelSelectItem, TreeModelSelectValue } from './types';\n\n/**\n * 树节点数据选择,一般用于选择员工等\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModal = (props: TreeModalProps) => {\n const { size = 'large' } = props;\n const [isOpen, setIsOpen] = useState(false);\n\n const htmlSize = useSize(document.querySelector('html'));\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const direction = screenType === 'xs' ? 'vertical' : 'horizontal';\n\n const handleOnClick = hooks.useCallbackRef(() => {\n if (props.disabled) return;\n setIsOpen(true);\n });\n\n const Action = props.children.type;\n\n const [values, setValues] = useState<TreeModelSelectValue>();\n const originalValuesRef = useRef<TreeModelSelectValue>();\n\n useEffect(() => {\n originalValuesRef.current = props.value || [];\n setValues(props.value);\n }, [props.value]);\n\n const customSize = useMemo(() => {\n if (!htmlSize?.height || !screenType) return undefined;\n const isXsSm = ['xs', 'sm'].includes(screenType);\n let sizeCalculate: TPlainObject = {};\n if (size == 'large') {\n sizeCalculate = {\n height: htmlSize?.height * 0.65,\n width: 800,\n };\n } else if (size == 'small') {\n sizeCalculate = {\n height: htmlSize?.height * 0.45,\n width: 450,\n };\n } else if (size == 'middle') {\n sizeCalculate = {\n height: htmlSize?.height * 0.55,\n width: 600,\n };\n }\n\n return {\n height: props.modalBodyHeight || sizeCalculate.height,\n width: isXsSm ? '90%' : props.modalWidth || sizeCalculate.width,\n };\n }, [htmlSize?.height, screenType, size, props.modalBodyHeight, props.modalWidth]);\n\n const onSubmit = () => {\n props.onChange?.(values as TreeModelSelectItem[]);\n setIsOpen(false);\n };\n\n const onCancel = () => {\n setIsOpen(false);\n setValues(originalValuesRef.current);\n };\n return (\n <Fragment>\n <Action {...props.children.props} onClick={handleOnClick} />\n <Modal\n className={props.modalClassName}\n title={props.textConfig.title || '选择'}\n open={isOpen}\n onCancel={onCancel}\n forceRender={props.forceRender}\n centered\n width={customSize?.width}\n onOk={onSubmit}\n styles={\n direction === 'horizontal'\n ? {\n body: {\n height: customSize?.height,\n maxHeight: 'calc(100vh - 200px)',\n padding: '0px 20px 0 20px',\n },\n content: {\n padding: 0,\n },\n header: {\n padding: '20px 24px 0 20px',\n },\n footer: {\n padding: '0 24px 20px 24px',\n },\n }\n : {\n body: {\n height: customSize?.height,\n },\n }\n }\n >\n <TreeModalContent\n {...props}\n value={values}\n onChange={(values) => {\n setValues(values);\n }}\n />\n </Modal>\n </Fragment>\n );\n};\n","import { attachPropertiesToComponent } from '@flatbiz/utils';\nimport { TreeModal as TreeModalInner } from './select-modal';\nimport { TreeModalContent } from './select-modal-content';\n\nexport const TreeModal = attachPropertiesToComponent(TreeModalInner, {\n Content: TreeModalContent,\n});\n"],"names":["SelectItemList","props","checkedIdList","_jsx","Fragment","children","map","item","value","label","CssNodeHover","style","paddingLeft","paddingRight","_jsxs","FlexLayout","fullIndex","direction","alignItems","fontSize","marginBottom","color","TextOverflow","text","position","zIndex","IconWrapper","_CloseOutlined","onClick","onDeleteItem","bind","size","margin","SelectContent","_props$treeProps","_props$value","modelKey","_hooks","useId","undefined","TreeWrapper","_extends","initRootExpand","showSearch","searchPlaceholder","checkable","checkableType","treeProps","showIcon","icon","fieldNames","labelInValue","serviceConfig","onChange","values","toArray","HorizontalLayout","_props$fieldNames","_props$fieldNames2","chenkedIdList","valueKey","childrenKey","_props$textConfig","textConfig","selectQuantityPrompt","placeholder","gap","height","overflow","backgroundColor","padding","borderRadius","onRequestResultAdapter","respData","listMap","treeToTiledMap","onChangeDataSource","width","display","flexDirection","flexShrink","fontWeight","length","replace","flex","VerticalLayout","marginTop","TreeModalContent","isMultiple","labelKey","dataSourceMapRef","useRef","screenType","fbaHooks","useResponsivePoint","isMultipleFt","isUndefinedOrNull","_useState","useState","setValues","targetList","filter","useEffectCustom","_dataSourceMapRef$cur","target","_isObject","current","treePropsFt","useCallbackRef","treeDataList","mapData","result","Boolean","onDataSourceChange","onRequest","TreeModal","_props$size","isOpen","setIsOpen","htmlSize","useSize","document","querySelector","handleOnClick","disabled","Action","type","_useState2","originalValuesRef","useEffect","customSize","useMemo","isXsSm","includes","sizeCalculate","modalBodyHeight","modalWidth","onSubmit","onCancel","Modal","className","modalClassName","title","open","forceRender","centered","onOk","styles","body","maxHeight","content","header","footer","attachPropertiesToComponent","TreeModalInner","Content"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-modal/select-item.tsx","@flatbiz/antd/src/tree-modal/tree.tsx","@flatbiz/antd/src/tree-modal/horizontal.tsx","@flatbiz/antd/src/tree-modal/vertical.tsx","@flatbiz/antd/src/tree-modal/select-modal-content.tsx","@flatbiz/antd/src/tree-modal/select-modal.tsx","@flatbiz/antd/src/tree-modal/index.ts"],"sourcesContent":["import { CloseOutlined } from '@ant-design/icons';\nimport { Fragment } from 'react';\n\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { CssNodeHover } from '../css-node-hover';\nimport { FlexLayout } from '../flex-layout';\nimport { IconWrapper } from '../icon-wrapper';\nimport { TextOverflow } from '../text-overflow';\nimport type { TreeModalProps } from './types';\n\nexport const SelectItemList = (props: {\n checkedIdList: TPlainObject[];\n fieldNames: TreeModalProps['fieldNames'];\n onDeleteItem: (value: TAny) => void;\n}) => {\n const checkedIdList = props.checkedIdList;\n return (\n <Fragment>\n {checkedIdList?.map((item) => {\n const value = item.value;\n const label = item.label || value;\n\n return (\n <CssNodeHover style={{ paddingLeft: 5, paddingRight: 0 }} key={value}>\n <FlexLayout\n fullIndex={1}\n direction=\"horizontal\"\n style={{\n alignItems: 'center',\n fontSize: 14,\n marginBottom: 0,\n color: '#505050',\n }}\n >\n <TextOverflow text={label} />\n <div\n style={{\n position: 'relative',\n zIndex: 9,\n color: '#a1a1a1',\n }}\n >\n <IconWrapper\n text={<CloseOutlined />}\n onClick={props.onDeleteItem.bind(null, value)}\n size=\"small\"\n style={{ paddingRight: 5, margin: '2px' }}\n />\n </div>\n </FlexLayout>\n </CssNodeHover>\n );\n })}\n </Fragment>\n );\n};\n","import type { TAny } from '@flatbiz/utils';\nimport { toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { TreeServiceConfig, TreeWrapperProps } from '../tree-wrapper';\nimport { TreeWrapper } from '../tree-wrapper';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const SelectContent = (props: {\n value?: TAny;\n onChange?: (value?: TreeModelSelectItem[]) => void;\n fieldNames?: TreeWrapperProps['fieldNames'];\n serviceConfig?: TreeServiceConfig;\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const modelKey = hooks.useId(undefined, 'tree-select-modal');\n return (\n <TreeWrapper\n initRootExpand\n showSearch\n searchPlaceholder=\"搜索\"\n checkable={true}\n checkableType=\"2\"\n {...props.treeProps}\n showIcon={props.treeProps?.icon ? true : false}\n value={props.value?.map((item) => item.value)}\n modelKey={modelKey}\n fieldNames={props.fieldNames}\n labelInValue={true}\n serviceConfig={props.serviceConfig}\n onChange={(values) => {\n props.onChange?.(toArray(values));\n }}\n />\n );\n};\n","import type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { FlexLayout } from '../flex-layout';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const HorizontalLayout = (props: {\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n serviceConfig?: {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n };\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const chenkedIdList = props.value || [];\n\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n\n return (\n <FlexLayout fullIndex={0} direction=\"horizontal\" gap={10} style={{ height: '100%', overflow: 'hidden' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n ...props.serviceConfig,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div\n style={{\n width: '40%',\n overflow: 'hidden',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n }}\n >\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder || '请选择'\n )}\n </div>\n <div style={{ overflow: 'auto', flex: 1 }}>\n <SelectItemList\n checkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n </FlexLayout>\n );\n};\n","import type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const VerticalLayout = (props: {\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n serviceConfig?: {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n };\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const chenkedIdList = props.value || [];\n\n return (\n <div style={{ height: '100%', overflow: 'auto' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n ...props.serviceConfig,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div style={{ marginTop: 20 }}>\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder\n )}\n </div>\n <SelectItemList\n checkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n );\n};\n","import { isObject } from '@dimjs/lang';\nimport { isUndefinedOrNull, toArray, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Fragment, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { HorizontalLayout } from './horizontal';\nimport type { TreeModalContentProps, TreeModelSelectItem } from './types';\nimport { VerticalLayout } from './vertical';\n\n/**\n * 树节点数据选择,一般用于选择员工等\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModalContent = (props: TreeModalContentProps) => {\n const { isMultiple } = props;\n const labelKey = props.fieldNames?.label || 'label';\n const valueKey = props.fieldNames?.value || 'value';\n const dataSourceMapRef = useRef<TPlainObject>({});\n\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const direction = screenType === 'xs' ? 'vertical' : 'horizontal';\n const isMultipleFt = isUndefinedOrNull(isMultiple) ? true : isMultiple;\n\n const [values, setValues] = useState<TreeModelSelectItem[]>();\n\n const onDeleteItem = (value) => {\n const targetList = values?.filter((item) => item.value !== value);\n setValues(targetList);\n props.onChange?.(targetList);\n };\n\n fbaHooks.useEffectCustom(() => {\n const values = toArray<TAny>(props.value).map((item) => {\n const target = isObject(item) ? item : { label: item, value: item };\n const value = target.value;\n return {\n value: value,\n label: dataSourceMapRef.current[value]?.[labelKey] || '',\n };\n });\n setValues(values);\n }, [props.value]);\n\n const treePropsFt = {\n ...props.treeProps,\n checkable: isMultipleFt ? true : false,\n };\n\n const onChange = (values?: TreeModelSelectItem[]) => {\n setValues(values);\n props.onChange?.(values);\n };\n\n const onChangeDataSource = hooks.useCallbackRef((treeDataList: TPlainObject[], mapData: TPlainObject) => {\n dataSourceMapRef.current = mapData;\n const result = values\n ?.map((item) => {\n const target = mapData[item.value];\n return target ? { label: target[labelKey], value: target[valueKey] } : undefined;\n })\n .filter(Boolean) as TreeModelSelectItem[];\n setValues(result);\n props.onDataSourceChange?.(treeDataList, mapData);\n });\n return (\n <Fragment>\n {direction === 'vertical' ? (\n <VerticalLayout\n value={values}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n serviceConfig={\n props.serviceConfig\n ? props.serviceConfig\n : {\n onRequest: props.onRequest,\n }\n }\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={onChangeDataSource}\n treeProps={treePropsFt}\n ></VerticalLayout>\n ) : (\n <HorizontalLayout\n value={values}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n serviceConfig={\n props.serviceConfig\n ? props.serviceConfig\n : {\n onRequest: props.onRequest,\n }\n }\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={onChangeDataSource}\n treeProps={treePropsFt}\n />\n )}\n </Fragment>\n );\n};\n","import type { TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Modal } from 'antd';\nimport { Fragment, useEffect, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { TreeModalContent } from './select-modal-content';\nimport type { TreeModalProps, TreeModelSelectItem, TreeModelSelectValue } from './types';\n\n/**\n * 树节点数据选择,一般用于选择员工等\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModal = (props: TreeModalProps) => {\n const { size = 'large' } = props;\n const [isOpen, setIsOpen] = useState(false);\n\n const htmlSize = useSize(document.querySelector('html'));\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const direction = screenType === 'xs' ? 'vertical' : 'horizontal';\n\n const handleOnClick = hooks.useCallbackRef(() => {\n if (props.disabled) return;\n setIsOpen(true);\n });\n\n const Action = props.children.type;\n\n const [values, setValues] = useState<TreeModelSelectValue>();\n const originalValuesRef = useRef<TreeModelSelectValue>();\n\n useEffect(() => {\n originalValuesRef.current = props.value || [];\n setValues(props.value);\n }, [props.value]);\n\n const customSize = useMemo(() => {\n if (!htmlSize?.height || !screenType) return undefined;\n const isXsSm = ['xs', 'sm'].includes(screenType);\n let sizeCalculate: TPlainObject = {};\n if (size == 'large') {\n sizeCalculate = {\n height: htmlSize?.height * 0.65,\n width: 800,\n };\n } else if (size == 'small') {\n sizeCalculate = {\n height: htmlSize?.height * 0.45,\n width: 450,\n };\n } else if (size == 'middle') {\n sizeCalculate = {\n height: htmlSize?.height * 0.55,\n width: 600,\n };\n }\n\n return {\n height: props.modalBodyHeight || sizeCalculate.height,\n width: isXsSm ? '90%' : props.modalWidth || sizeCalculate.width,\n };\n }, [htmlSize?.height, screenType, size, props.modalBodyHeight, props.modalWidth]);\n\n const onSubmit = () => {\n props.onChange?.(values as TreeModelSelectItem[]);\n setIsOpen(false);\n };\n\n const onCancel = () => {\n setIsOpen(false);\n setValues(originalValuesRef.current);\n };\n return (\n <Fragment>\n <Action {...props.children.props} onClick={handleOnClick} />\n <Modal\n className={props.modalClassName}\n title={props.textConfig.title || '选择'}\n open={isOpen}\n onCancel={onCancel}\n forceRender={props.forceRender}\n centered\n width={customSize?.width}\n onOk={onSubmit}\n styles={\n direction === 'horizontal'\n ? {\n body: {\n height: customSize?.height,\n maxHeight: 'calc(100vh - 200px)',\n padding: '0px 20px 0 20px',\n },\n content: {\n padding: 0,\n },\n header: {\n padding: '20px 24px 0 20px',\n },\n footer: {\n padding: '0 24px 20px 24px',\n },\n }\n : {\n body: {\n height: customSize?.height,\n },\n }\n }\n >\n <TreeModalContent\n {...props}\n value={values}\n onChange={(values) => {\n setValues(values);\n }}\n />\n </Modal>\n </Fragment>\n );\n};\n","import { attachPropertiesToComponent } from '@flatbiz/utils';\nimport { TreeModal as TreeModalInner } from './select-modal';\nimport { TreeModalContent } from './select-modal-content';\n\nexport const TreeModal = attachPropertiesToComponent(TreeModalInner, {\n Content: TreeModalContent,\n});\n"],"names":["SelectItemList","props","checkedIdList","_jsx","Fragment","children","map","item","value","label","CssNodeHover","style","paddingLeft","paddingRight","_jsxs","FlexLayout","fullIndex","direction","alignItems","fontSize","marginBottom","color","TextOverflow","text","position","zIndex","IconWrapper","_CloseOutlined","onClick","onDeleteItem","bind","size","margin","SelectContent","_props$treeProps","_props$value","modelKey","_hooks","useId","undefined","TreeWrapper","_extends","initRootExpand","showSearch","searchPlaceholder","checkable","checkableType","treeProps","showIcon","icon","fieldNames","labelInValue","serviceConfig","onChange","values","toArray","HorizontalLayout","_props$fieldNames","_props$fieldNames2","chenkedIdList","valueKey","childrenKey","_props$textConfig","textConfig","selectQuantityPrompt","placeholder","gap","height","overflow","backgroundColor","padding","borderRadius","onRequestResultAdapter","respData","listMap","treeToTiledMap","onChangeDataSource","width","display","flexDirection","flexShrink","fontWeight","length","replace","flex","VerticalLayout","marginTop","TreeModalContent","isMultiple","labelKey","dataSourceMapRef","useRef","screenType","fbaHooks","useResponsivePoint","isMultipleFt","isUndefinedOrNull","_useState","useState","setValues","targetList","filter","useEffectCustom","_dataSourceMapRef$cur","target","_isObject","current","treePropsFt","useCallbackRef","treeDataList","mapData","result","Boolean","onDataSourceChange","onRequest","TreeModal","_props$size","isOpen","setIsOpen","htmlSize","useSize","document","querySelector","handleOnClick","disabled","Action","type","_useState2","originalValuesRef","useEffect","customSize","useMemo","isXsSm","includes","sizeCalculate","modalBodyHeight","modalWidth","onSubmit","onCancel","Modal","className","modalClassName","title","open","forceRender","centered","onOk","styles","body","maxHeight","content","header","footer","attachPropertiesToComponent","TreeModalInner","Content"],"mappings":"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"}
|