@flatbiz/antd 4.5.51 → 4.5.53
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/copy-wrapper/index.css +0 -0
- package/esm/copy-wrapper/index.js +6 -0
- package/esm/copy-wrapper/index.js.map +1 -0
- package/esm/delete-node/index.js +1 -1
- package/esm/delete-node/index.js.map +1 -1
- package/esm/dialog-drawer/index.js +1 -1
- package/esm/dialog-drawer/index.js.map +1 -1
- package/esm/dialog-modal/index.js +1 -1
- package/esm/dialog-modal/index.js.map +1 -1
- package/esm/easy-table/index.css +1 -1
- package/esm/easy-table/index.js +2 -2
- package/esm/easy-table/index.js.map +1 -1
- package/esm/editable-card/index.js +1 -1
- package/esm/editable-card/index.js.map +1 -1
- package/esm/fba-app/index.js +1 -1
- package/esm/fba-app/index.js.map +1 -1
- package/esm/full-screen/index.css +1 -0
- package/esm/full-screen/index.js +5 -0
- package/esm/full-screen/index.js.map +1 -0
- package/esm/icon-wrapper/index.js +1 -1
- package/esm/icon-wrapper/index.js.map +1 -1
- package/esm/index.js +3 -1
- package/esm/selector-wrapper/index.js +1 -1
- package/esm/selector-wrapper/index.js.map +1 -1
- package/esm/table-cell-render/index.js +1 -1
- package/esm/table-cell-render/index.js.map +1 -1
- package/esm/tag-list-render/index.js +1 -1
- package/esm/tag-list-render/index.js.map +1 -1
- package/esm/tree-selector-wrapper/index.js +1 -1
- package/esm/tree-selector-wrapper/index.js.map +1 -1
- package/esm/tree-wrapper/index.js +1 -1
- package/esm/tree-wrapper/index.js.map +1 -1
- package/index.d.ts +105 -9
- package/package.json +3 -2
|
@@ -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, 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 // props 是否存在 selectorList,selectorList = undefined 也算存在\n const hasOuterSelectorList = props.hasOwnProperty('selectorList');\n const mergeFieldNames = {\n label: 'label',\n value: 'value',\n disabled: 'disabled',\n ...fieldNames,\n };\n\n const {\n label: optionsItemLabelField,\n value: optionsItemValueField,\n disabled: optionsItemDisabledField,\n } = mergeFieldNames;\n\n const allOptionConfig = useMemo(() => {\n if (!showAllOption) return null;\n const isTrue = showAllOption === true;\n return {\n [optionsItemLabelField]: isTrue ? '全部' : showAllOption.label,\n [optionsItemValueField]: isTrue ? '' : showAllOption.value,\n };\n }, [optionsItemLabelField, optionsItemValueField, showAllOption]);\n\n const isMultiple = valueIsEqual(props.mode, ['multiple']);\n\n const { requestStatus, stateSelectorList, onRefreshRequest } = useRequest({\n fieldNames: mergeFieldNames,\n cacheKey: modelKey,\n hasOuterSelectorList,\n onChange: props.onChange,\n serviceConfig,\n outerSelectorList,\n onRespDataChange: (dataList) => {\n if (firstRenderSelectList.current) {\n onSelectorListChange?.(dataList || []);\n firstRenderSelectList.current = false;\n }\n onSelectorListAllChange?.(dataList || []);\n },\n onSelectorRequestError,\n useCache: useCache === undefined ? true : useCache,\n });\n\n const onRespChange = hooks.useCallbackRef((selectedList: TPlainObject[]) => {\n if (labelInValue) {\n if (isMultiple) {\n props.onChange?.(selectedList, selectedList);\n } else {\n props.onChange?.(selectedList[0], selectedList);\n }\n } else {\n const valueList = selectedList.map((item) => item[optionsItemValueField]);\n if (isMultiple) {\n props.onChange?.(valueList, selectedList);\n } else {\n props.onChange?.(valueList[0], selectedList[0]);\n }\n }\n });\n\n const onInnerChange = hooks.useCallbackRef((_value, otherParams) => {\n if (!otherParams) return props.onChange?.(undefined);\n const selectedList = toArray<TAny>(otherParams);\n const targetList = [] as TPlainObject[];\n selectedList.forEach((item) => {\n if (showAllOption && allOptionConfig && item.value === allOptionConfig[optionsItemValueField]) {\n targetList.push(allOptionConfig);\n } else {\n const filterTarget = arrayFind(stateSelectorList || [], item.value, optionsItemValueField);\n if (filterTarget) {\n targetList.push(filterTarget);\n }\n }\n });\n onRespChange(targetList);\n });\n\n const selectorAllList = useMemo(() => {\n if (requestStatus !== 'request-success') return [];\n if (!stateSelectorList || stateSelectorList.length === 0) return [];\n if (!allOptionConfig) return stateSelectorList;\n return [allOptionConfig].concat(stateSelectorList);\n }, [allOptionConfig, requestStatus, stateSelectorList]);\n\n const loading = requestStatus === 'request-progress';\n\n const selectValue = useMemo(() => {\n const targetList = getVauleList(value, optionsItemValueField);\n return isMultiple ? targetList : targetList[0];\n }, [isMultiple, optionsItemValueField, value]);\n\n const filterOption = hooks.useCallbackRef((input: string, option) => {\n const children = toArray(option.children);\n let mergeString = '';\n 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","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/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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"}
|
|
@@ -12,5 +12,5 @@ import './../tag-list-render/index.css';
|
|
|
12
12
|
import './../tag-list-select/index.css';
|
|
13
13
|
import './index.css';
|
|
14
14
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
15
|
-
import{isString as r}from"@dimjs/lang/cjs/is-string";import{isObject as e}from"@dimjs/lang/cjs/is-object";import{get as n}from"@dimjs/utils/cjs/get";import{isPlainObject as t}from"@dimjs/lang/cjs/is-plain-object";import{_ as i}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isEmpty as o}from"@dimjs/lang/cjs/is-empty";import{isNumber as a,isUndefinedOrNull as l,getStrByteLen as u,cutString as s,flatbizDate as d,flatbizPrice as c}from"@flatbiz/utils";import{Tooltip as f,Space as m,Badge as p}from"antd";import{Fragment as v}from"react";import{ButtonOperate as j}from"../button-operate/index.js";import{TagListRender as g}from"../tag-list-render/index.js";import{jsx as h}from"react/jsx-runtime";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";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-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"@dimjs/model";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"@wove/react/cjs/create-ctx";var x=function r(e,n){return function(r){if(o(r)||r==="")return n;if(a(r))return r;var t=r.toString();var i=l(e)?10:e;var d=u(t);if(d<=i*2){return t}return h(f,{placement:"topLeft",title:t,children:s(t,i*2)})}};var C=function r(e){return function(r,n,t){var o=e(n,t);return h(j,i({},o))}};var w=function r(e,n){return function(r){if(o(r)||r==="")return n;try{return d.format(new Date(r),e)}catch(e){return r||n}}};var b=function r(e,n){return function(r,t,i){if(n&&e){return(e-1)*n+i+1}return i+1}};var y=function r(e){return function(r,n,t){var i=(e==null?void 0:e())||{},o=i.pageNo,a=i.pageSize;if(a&&o){return(o-1)*a+t+1}return t+1}};var k=function r(e,n,t){return function(r){if(l(r))return null;return h(g,i({dataList:e,colorMap:n,value:r,forceMatch:false},t))}};var N=function r(i,o){return function(r){if(t(r)){var a=n(r,i,o);if(!a)return"";if(e(a))return JSON.stringify(a);return a}return r||o}};var V=function r(e){var n=e!=null&&e.hideBgColor?"":"table-fen-color";return function(r){if(l(r)||r===""){if(l(e==null?void 0:e.defaultValue))return undefined;if(a(e==null?void 0:e.defaultValue)){return h("span",{className:n,children:c.format(e==null?void 0:e.defaultValue)})}return h("span",{className:n,children:e==null?void 0:e.defaultValue})}if(!a(r))return r;var t=c.fen2yuan(r);return h("span",{className:n,children:c.format(t,e==null?void 0:e.defaultValue,{separator:(e==null?void 0:e.separator)||false})})}};var
|
|
15
|
+
import{isString as r}from"@dimjs/lang/cjs/is-string";import{isObject as e}from"@dimjs/lang/cjs/is-object";import{get as n}from"@dimjs/utils/cjs/get";import{isPlainObject as t}from"@dimjs/lang/cjs/is-plain-object";import{_ as i}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isEmpty as o}from"@dimjs/lang/cjs/is-empty";import{isNumber as a,isUndefinedOrNull as l,getStrByteLen as u,cutString as s,flatbizDate as d,flatbizPrice as c}from"@flatbiz/utils";import{Tooltip as f,Space as m,Badge as p}from"antd";import{Fragment as v}from"react";import{ButtonOperate as j}from"../button-operate/index.js";import{TagListRender as g}from"../tag-list-render/index.js";import{jsx as h}from"react/jsx-runtime";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";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-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"@dimjs/model";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"@wove/react/cjs/create-ctx";var x=function r(e,n){return function(r){if(o(r)||r==="")return n;if(a(r))return r;var t=r.toString();var i=l(e)?10:e;var d=u(t);if(d<=i*2){return t}return h(f,{placement:"topLeft",title:t,children:s(t,i*2)})}};var C=function r(e){return function(r,n,t){var o=e(n,t);return h(j,i({},o))}};var w=function r(e,n){return function(r){if(o(r)||r==="")return n;try{return d.format(new Date(r),e)}catch(e){return r||n}}};var b=function r(e,n){return function(r,t,i){if(n&&e){return(e-1)*n+i+1}return i+1}};var y=function r(e){return function(r,n,t){var i=(e==null?void 0:e())||{},o=i.pageNo,a=i.pageSize;if(a&&o){return(o-1)*a+t+1}return t+1}};var k=function r(e,n,t){return function(r){if(l(r))return null;return h(g,i({dataList:e,colorMap:n,value:r,forceMatch:false,noColorShowTag:false},t))}};var N=function r(i,o){return function(r){if(t(r)){var a=n(r,i,o);if(!a)return"";if(e(a))return JSON.stringify(a);return a}return r||o}};var V=function r(e){var n=e!=null&&e.hideBgColor?"":"table-fen-color";return function(r){if(l(r)||r===""){if(l(e==null?void 0:e.defaultValue))return undefined;if(a(e==null?void 0:e.defaultValue)){return h("span",{className:n,children:c.format(e==null?void 0:e.defaultValue)})}return h("span",{className:n,children:e==null?void 0:e.defaultValue})}if(!a(r))return r;var t=c.fen2yuan(r);return h("span",{className:n,children:c.format(t,e==null?void 0:e.defaultValue,{separator:(e==null?void 0:e.separator)||false})})}};var S=function r(e){var n=(e==null?void 0:e.showBgColor)===true?"table-wan-color":"";return function(r){if(l(r)||r===""){if(l(e==null?void 0:e.defaultValue))return undefined;if(a(e==null?void 0:e.defaultValue)){return h("span",{className:n,children:c.format(e==null?void 0:e.defaultValue)})}return h("span",{className:n,children:e==null?void 0:e.defaultValue})}if(!a(r))return r;var t=c.fen2wan(r);var i=e!=null&&e.removeTailZero?c.removeTailZero(t,e==null?void 0:e.defaultValue,{separator:(e==null?void 0:e.separator)||false}):c.format(t,e==null?void 0:e.defaultValue,{separator:(e==null?void 0:e.separator)||false});return h("span",{className:n,children:i})}};var O=function e(n){return function(e,t){var i=n==null?void 0:n(t);if(!i)return h(v,{children:e});var o=l(i.showData)?true:i.showData;var a=l(i.notOverflowShowExtra)?true:i.notOverflowShowExtra;var u=l(i.showMaxNumber)?10:i.showMaxNumber;var d=i.extraPosition?i.extraPosition:"after";var c=r(e)?s(e,u*2):e;if(i.extra&&o){if(c===e&&!a){return e}var f=[h("span",{children:c},"1"),h(v,{children:i.extra},"2")];var p=d==="before"?f.reverse():f;return h(m,{onClick:i.onClick,style:{cursor:i.onClick?"pointer":undefined},size:5,children:p.map((function(r,e){return h(v,{children:r},e)}))})}return h("span",{onClick:i.onClick,children:i.extra})}};var z=function r(e,n){return function(r){if(l(r))return null;var t=e.find((function(e){return e.value===r}));if(t)return h(p,{color:(t==null?void 0:t.color)||(n==null?void 0:n[r])||"rgba(0, 0, 0, 0.25)",text:t==null?void 0:t.label});return r}};var M=function r(e,n){return function(r,t){if(l(r))return n;return h("a",{onClick:e.bind(null,t),children:r})}};var D={extraContentRender:O,indexCell:b,serialNumberCell:y,dateCell:w,operateCell:C,tooltipCell:x,selectorCell:k,objectCell:N,fen2yuanCell:V,fen2wanCell:S,badgeCell:z,clickCell:M};export{D as tableCellRender};
|
|
16
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/table-cell-render/cell-render.tsx"],"sourcesContent":["import { isEmpty, isObject, isPlainObject, isString } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport {\n cutString,\n DateFormatType,\n flatbizDate,\n flatbizPrice,\n getStrByteLen,\n isNumber,\n isUndefinedOrNull,\n TAny,\n TPlainObject,\n} from '@flatbiz/utils';\nimport { Badge, Space, Tooltip } from 'antd';\nimport { Fragment, ReactElement } from 'react';\nimport { ButtonOperate, ButtonOperateProps } from '../button-operate';\nimport { TagListRender } from '../tag-list-render';\nimport { TagListSelectProps, TagListSelectValue } from '../tag-list-select';\nimport './style.less';\n\nconst tableColumnTooltipRender = (showMaxNumber?: number, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n if (isNumber(value)) return value;\n const colunmText = value.toString();\n const maxNumber = (isUndefinedOrNull(showMaxNumber) ? 10 : showMaxNumber) as number;\n const strByteLen = getStrByteLen(colunmText);\n if (strByteLen <= maxNumber * 2) {\n return colunmText;\n }\n return (\n <Tooltip placement=\"topLeft\" title={colunmText}>\n {cutString(colunmText, maxNumber * 2)}\n </Tooltip>\n );\n };\n};\n\nconst tableColumnOperateRender = (options: (item: TAny, index: number) => ButtonOperateProps) => {\n return (_value: string | number, record, index: number) => {\n const operateProps = options(record, index);\n return <ButtonOperate {...operateProps} />;\n };\n};\n\nconst tableColumnDateRender = (dateFormatType?: DateFormatType, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n try {\n return flatbizDate.format(new Date(value), dateFormatType);\n } catch (error) {\n return value || defaultValue;\n }\n };\n};\n\n/**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @param pageSize\n * @param pageNo\n * @returns\n */\nconst tableColumnIndexRender = (pageNo?: number, pageSize?: number) => {\n return (_value, _record, index: number) => {\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\nconst tableColumnIndexRender2 = (method?: () => { pageNo?: number; pageSize?: number }) => {\n return (_value, _record, index: number) => {\n const { pageNo, pageSize } = method?.() || {};\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\n\nconst tableColumnSelectorRender = (\n selectorList: TagListSelectProps['dataList'],\n colorMap?: TagListSelectProps['colorMap'],\n options?: {\n /** 最大显示Tag数量,超出折叠隐藏 */\n maxShowCount?: number;\n /** 触发maxShowCount后,被折叠的内容是否显示完整tag,默认值:false */\n foldShowAllTag?: boolean;\n },\n) => {\n return (value?: TAny) => {\n if (isUndefinedOrNull(value)) return null;\n return (\n <TagListRender\n dataList={selectorList}\n colorMap={colorMap}\n value={value}\n forceMatch={false}\n {...options}\n />\n );\n };\n};\n\nconst tableColumnObjectRender = (key: string, defaultValue?: string) => {\n return (value?: TPlainObject) => {\n if (isPlainObject(value)) {\n const target = get(value, key, defaultValue);\n if (!target) return '';\n if (isObject(target)) return JSON.stringify(target);\n return target;\n }\n return value || defaultValue;\n };\n};\n\nconst tableColumnFen2yuanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色 */\n hideBgColor?: boolean;\n}) => {\n const className = options?.hideBgColor ? '' : 'table-fen-color';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2yuan(value);\n return (\n <span className={className}>\n {flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false })}\n </span>\n );\n };\n};\n\nconst tableColumnFen2wanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色,默认:false */\n showBgColor?: boolean;\n /** 移除小数点后末尾零 */\n removeTailZero?: boolean;\n}) => {\n const className = options?.showBgColor === true ? 'table-wan-color' : '';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2wan(value);\n const amountNew = options?.removeTailZero\n ? flatbizPrice.removeTailZero(amount, options?.defaultValue, {\n separator: options?.separator || false,\n })\n : flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false });\n return <span className={className}>{amountNew}</span>;\n };\n};\n\ntype TableColumnIconRenderProps = {\n /** 额外内容,一般为Icon */\n extra: ReactElement;\n extraPosition?: 'before' | 'after';\n onClick?: (e) => void;\n /** 是否显示原单元格数据,默认值:true */\n showData?: boolean;\n /** 溢出显示【...】, 最大长度(默认:20个字节) */\n showMaxNumber?: number;\n /** 未溢出显示【extra】配置,默认值:true */\n notOverflowShowExtra?: boolean;\n};\n\nconst tableColumnExtraContentRender = (handle: (item: TPlainObject) => TableColumnIconRenderProps) => {\n return (value: TAny, item: TPlainObject) => {\n const options = handle?.(item);\n if (!options) return <Fragment>{value}</Fragment>;\n const showData = isUndefinedOrNull(options.showData) ? true : options.showData;\n const notOverflowShowExtra = isUndefinedOrNull(options.notOverflowShowExtra)\n ? true\n : options.notOverflowShowExtra;\n const showMaxNumber = isUndefinedOrNull(options.showMaxNumber) ? 10 : (options.showMaxNumber as number);\n const extraPosition = options.extraPosition ? options.extraPosition : 'after';\n const renderValue = isString(value) ? cutString(value, showMaxNumber * 2) : value;\n\n if (options.extra && showData) {\n if (renderValue === value && !notOverflowShowExtra) {\n return value;\n }\n const spaceContent = [<span key=\"1\">{renderValue}</span>, <Fragment key=\"2\">{options.extra}</Fragment>];\n const spaceContentRender = extraPosition === 'before' ? spaceContent.reverse() : spaceContent;\n return (\n <Space onClick={options.onClick} style={{ cursor: options.onClick ? 'pointer' : undefined }} size={5}>\n {spaceContentRender.map((item, index) => {\n return <Fragment key={index}>{item}</Fragment>;\n })}\n </Space>\n );\n }\n return <span onClick={options.onClick}>{options.extra}</span>;\n };\n};\n\nconst tableColumnBadgeRender = (\n selectorList: { label: string; value: TagListSelectValue; color?: string }[],\n colorMap?: Record<string | string, string>,\n) => {\n return (value?: TAny) => {\n if (isUndefinedOrNull(value)) return null;\n const target = selectorList.find((item) => item.value === value);\n if (target)\n return (\n <Badge color={target?.color || colorMap?.[value] || 'rgba(0, 0, 0, 0.25)'} text={target?.label} />\n );\n return value;\n };\n};\n\nconst tableColumnClickRender = (onClick: (record: TPlainObject, e) => void, defaultValue?: string) => {\n return (value: TAny, record: TPlainObject) => {\n if (isUndefinedOrNull(value)) return defaultValue;\n return <a onClick={onClick.bind(null, record)}>{value}</a>;\n };\n};\n\nexport const tableCellRender = {\n /**\n * 表格单元格 拼接额外内容渲染\n * ```\n * 1. extra 额外内容\n * 2. showData 是否显示原单元格数据,默认值:true\n * 3. showMaxNumber 显示最大长度,作用于原单元格字符串数据\n *\n *\n * 结合table column render 使用\n * # 在单元格渲染文字右侧添加图标\n * render: tableCellRender.extraContentRender(() => {\n * return {\n * extra: <FullscreenOutlined />,\n * onClick: () => { ... },\n * };\n * }),\n * ```\n */\n extraContentRender: tableColumnExtraContentRender,\n /**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @deprecated 已过时 4.3.0版本移除,请使用 serialNumberCell\n */\n indexCell: tableColumnIndexRender,\n /**\n * table 序号展示,如果存在pageSize、pageNo参数可分页展示累加序号,否则每页都从1开始\n * ```\n * render: tableCellRender.serialNumberCell(() => {\n * return { pageNo,pageSize };\n * }),\n * ```\n */\n serialNumberCell: tableColumnIndexRender2,\n /**\n * 表格日期格式数据渲染,默认格式:YYYY-MM-DD\n * ```\n * 独立使用\n * tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')\n * render: (value) => {\n * return tableCellRender.dateCell('YYYY-MM-DD')(value);\n * }\n * ```\n */\n dateCell: tableColumnDateRender,\n /**\n * table操作栏目渲染\n * ```\n * 使用方式\n * tableCellRender.operateCell((item) => ({\n * operateList: [\n * {\n * text: '编辑',\n * onClick: onItemOperate.bind(null, 'update', item),\n * },\n * {\n * text: '删除',\n * needConfirm: true,\n * confirmMessage: '确定要删除吗?',\n * onClick: onItemOperate.bind(null, 'delete', item),\n * },\n * ],\n * }))\n * ```\n */\n operateCell: tableColumnOperateRender,\n /**\n * 实现字段超出隐藏,默认长度10个字符\n * @deprecated 已过期,请使用 TextOverflow 组件实现\n * ```\n * 1. showMaxNumber: 显示最大长度\n * 2. 会讲字符转出字节进行计算显示\n * ```\n */\n tooltipCell: tableColumnTooltipRender,\n /**\n * Tag格式数据渲染,可结合枚举定义数据\n * ```\n * 独立使用\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n * tableCellRender.selectorCell(taskTypeEnumList)(value);\n *\n *\n * 结合table column render 使用\n * render: tableCellRender.selectorCell(taskTypeEnumList);\n * render: tableCellRender.selectorCell([{ label: '已开启', value: 1 ]);\n * render: (value) => {\n * return tableCellRender.selectorCell([{ label: '已开启', value: 1 ])(value);\n * }\n *\n * 其中value值可以是单个值或者数组;例如:'1' 或者 ['1', '2']\n * ```\n */\n selectorCell: tableColumnSelectorRender,\n /**\n * 单元格对象数据处理,支持多级处理\n * ```\n * tableCellRender.objectCell('a.b.c')\n * ```\n */\n objectCell: tableColumnObjectRender,\n /**\n * 分金额展示,入参分,显示元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. hideBgColor:隐藏背景颜色\n *\n * 例如:\n * fen2yuanCell()(100090) => 1000.90\n * fen2yuanCell({separator: true})(100090) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2yuanCell: tableColumnFen2yuanCellRender,\n /**\n * 分金额展示,入参分,显示万元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. showBgColor:隐藏背景颜色\n * 4. removeTailZero:移除小数点后末尾零\n *\n * 例如:\n * fen2yuanCell()(1000900000) => 1000.90\n * fen2yuanCell({separator: true})(1000900000) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2wanCell: tableColumnFen2wanCellRender,\n /**\n * 单元格徽标展示数据\n * ```\n * 1. badge 默认颜色:灰色rgba(0, 0, 0, 0.25)\n *\n * 独立使用\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.badgeCell([{ label: '已开启', value: 1 ])\n * render: (value) => {\n * return tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * }\n * ```\n */\n badgeCell: tableColumnBadgeRender,\n /**\n * 单元格点击事件\n * ```\n * 独立使用\n * tableCellRender.clickCell(onClick)(value, record)\n *\n * 结合table column render 使用\n * render: tableCellRender.clickCell(onClick)\n * render: (value, record) => {\n * return tableCellRender.clickCell(onClick)(value, record)\n * }\n * ```\n */\n clickCell: tableColumnClickRender,\n};\n"],"names":["tableColumnTooltipRender","showMaxNumber","defaultValue","value","_isEmpty","isNumber","colunmText","toString","maxNumber","isUndefinedOrNull","strByteLen","getStrByteLen","_jsx","Tooltip","placement","title","children","cutString","tableColumnOperateRender","options","_value","record","index","operateProps","ButtonOperate","_extends","tableColumnDateRender","dateFormatType","flatbizDate","format","Date","error","tableColumnIndexRender","pageNo","pageSize","_record","tableColumnIndexRender2","method","_ref","tableColumnSelectorRender","selectorList","colorMap","TagListRender","dataList","forceMatch","tableColumnObjectRender","key","_isPlainObject","target","_get","_isObject","JSON","stringify","tableColumnFen2yuanCellRender","className","hideBgColor","undefined","flatbizPrice","amount","fen2yuan","separator","tableColumnFen2wanCellRender","showBgColor","fen2wan","amountNew","removeTailZero","tableColumnExtraContentRender","handle","item","Fragment","showData","notOverflowShowExtra","extraPosition","renderValue","_isString","extra","spaceContent","spaceContentRender","reverse","Space","onClick","style","cursor","size","map","tableColumnBadgeRender","find","Badge","color","text","label","tableColumnClickRender","bind","tableCellRender","extraContentRender","indexCell","serialNumberCell","dateCell","operateCell","tooltipCell","selectorCell","objectCell","fen2yuanCell","fen2wanCell","badgeCell","clickCell"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/table-cell-render/cell-render.tsx"],"sourcesContent":["import { isEmpty, isObject, isPlainObject, isString } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport {\n cutString,\n DateFormatType,\n flatbizDate,\n flatbizPrice,\n getStrByteLen,\n isNumber,\n isUndefinedOrNull,\n TAny,\n TPlainObject,\n} from '@flatbiz/utils';\nimport { Badge, Space, Tooltip } from 'antd';\nimport { Fragment, ReactElement } from 'react';\nimport { ButtonOperate, ButtonOperateProps } from '../button-operate';\nimport { TagListRender } from '../tag-list-render';\nimport { TagListSelectProps, TagListSelectValue } from '../tag-list-select';\nimport './style.less';\n\nconst tableColumnTooltipRender = (showMaxNumber?: number, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n if (isNumber(value)) return value;\n const colunmText = value.toString();\n const maxNumber = (isUndefinedOrNull(showMaxNumber) ? 10 : showMaxNumber) as number;\n const strByteLen = getStrByteLen(colunmText);\n if (strByteLen <= maxNumber * 2) {\n return colunmText;\n }\n return (\n <Tooltip placement=\"topLeft\" title={colunmText}>\n {cutString(colunmText, maxNumber * 2)}\n </Tooltip>\n );\n };\n};\n\nconst tableColumnOperateRender = (options: (item: TAny, index: number) => ButtonOperateProps) => {\n return (_value: string | number, record, index: number) => {\n const operateProps = options(record, index);\n return <ButtonOperate {...operateProps} />;\n };\n};\n\nconst tableColumnDateRender = (dateFormatType?: DateFormatType, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n try {\n return flatbizDate.format(new Date(value), dateFormatType);\n } catch (error) {\n return value || defaultValue;\n }\n };\n};\n\n/**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @param pageSize\n * @param pageNo\n * @returns\n */\nconst tableColumnIndexRender = (pageNo?: number, pageSize?: number) => {\n return (_value, _record, index: number) => {\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\nconst tableColumnIndexRender2 = (method?: () => { pageNo?: number; pageSize?: number }) => {\n return (_value, _record, index: number) => {\n const { pageNo, pageSize } = method?.() || {};\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\n\nconst tableColumnSelectorRender = (\n selectorList: TagListSelectProps['dataList'],\n colorMap?: TagListSelectProps['colorMap'],\n options?: {\n /** 最大显示Tag数量,超出折叠隐藏 */\n maxShowCount?: number;\n /** 触发maxShowCount后,被折叠的内容是否显示完整tag,默认值:false */\n foldShowAllTag?: boolean;\n },\n) => {\n return (value?: TAny) => {\n if (isUndefinedOrNull(value)) return null;\n return (\n <TagListRender\n dataList={selectorList}\n colorMap={colorMap}\n value={value}\n forceMatch={false}\n noColorShowTag={false}\n {...options}\n />\n );\n };\n};\n\nconst tableColumnObjectRender = (key: string, defaultValue?: string) => {\n return (value?: TPlainObject) => {\n if (isPlainObject(value)) {\n const target = get(value, key, defaultValue);\n if (!target) return '';\n if (isObject(target)) return JSON.stringify(target);\n return target;\n }\n return value || defaultValue;\n };\n};\n\nconst tableColumnFen2yuanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色 */\n hideBgColor?: boolean;\n}) => {\n const className = options?.hideBgColor ? '' : 'table-fen-color';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2yuan(value);\n return (\n <span className={className}>\n {flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false })}\n </span>\n );\n };\n};\n\nconst tableColumnFen2wanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色,默认:false */\n showBgColor?: boolean;\n /** 移除小数点后末尾零 */\n removeTailZero?: boolean;\n}) => {\n const className = options?.showBgColor === true ? 'table-wan-color' : '';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2wan(value);\n const amountNew = options?.removeTailZero\n ? flatbizPrice.removeTailZero(amount, options?.defaultValue, {\n separator: options?.separator || false,\n })\n : flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false });\n return <span className={className}>{amountNew}</span>;\n };\n};\n\ntype TableColumnIconRenderProps = {\n /** 额外内容,一般为Icon */\n extra: ReactElement;\n extraPosition?: 'before' | 'after';\n onClick?: (e) => void;\n /** 是否显示原单元格数据,默认值:true */\n showData?: boolean;\n /** 溢出显示【...】, 最大长度(默认:20个字节) */\n showMaxNumber?: number;\n /** 未溢出显示【extra】配置,默认值:true */\n notOverflowShowExtra?: boolean;\n};\n\nconst tableColumnExtraContentRender = (handle: (item: TPlainObject) => TableColumnIconRenderProps) => {\n return (value: TAny, item: TPlainObject) => {\n const options = handle?.(item);\n if (!options) return <Fragment>{value}</Fragment>;\n const showData = isUndefinedOrNull(options.showData) ? true : options.showData;\n const notOverflowShowExtra = isUndefinedOrNull(options.notOverflowShowExtra)\n ? true\n : options.notOverflowShowExtra;\n const showMaxNumber = isUndefinedOrNull(options.showMaxNumber) ? 10 : (options.showMaxNumber as number);\n const extraPosition = options.extraPosition ? options.extraPosition : 'after';\n const renderValue = isString(value) ? cutString(value, showMaxNumber * 2) : value;\n\n if (options.extra && showData) {\n if (renderValue === value && !notOverflowShowExtra) {\n return value;\n }\n const spaceContent = [<span key=\"1\">{renderValue}</span>, <Fragment key=\"2\">{options.extra}</Fragment>];\n const spaceContentRender = extraPosition === 'before' ? spaceContent.reverse() : spaceContent;\n return (\n <Space onClick={options.onClick} style={{ cursor: options.onClick ? 'pointer' : undefined }} size={5}>\n {spaceContentRender.map((item, index) => {\n return <Fragment key={index}>{item}</Fragment>;\n })}\n </Space>\n );\n }\n return <span onClick={options.onClick}>{options.extra}</span>;\n };\n};\n\nconst tableColumnBadgeRender = (\n selectorList: { label: string; value: TagListSelectValue; color?: string }[],\n colorMap?: Record<string | string, string>,\n) => {\n return (value?: TAny) => {\n if (isUndefinedOrNull(value)) return null;\n const target = selectorList.find((item) => item.value === value);\n if (target)\n return (\n <Badge color={target?.color || colorMap?.[value] || 'rgba(0, 0, 0, 0.25)'} text={target?.label} />\n );\n return value;\n };\n};\n\nconst tableColumnClickRender = (onClick: (record: TPlainObject, e) => void, defaultValue?: string) => {\n return (value: TAny, record: TPlainObject) => {\n if (isUndefinedOrNull(value)) return defaultValue;\n return <a onClick={onClick.bind(null, record)}>{value}</a>;\n };\n};\n\nexport const tableCellRender = {\n /**\n * 表格单元格 拼接额外内容渲染\n * ```\n * 1. extra 额外内容\n * 2. showData 是否显示原单元格数据,默认值:true\n * 3. showMaxNumber 显示最大长度,作用于原单元格字符串数据\n *\n *\n * 结合table column render 使用\n * # 在单元格渲染文字右侧添加图标\n * render: tableCellRender.extraContentRender(() => {\n * return {\n * extra: <FullscreenOutlined />,\n * onClick: () => { ... },\n * };\n * }),\n * ```\n */\n extraContentRender: tableColumnExtraContentRender,\n /**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @deprecated 已过时 4.3.0版本移除,请使用 serialNumberCell\n */\n indexCell: tableColumnIndexRender,\n /**\n * table 序号展示,如果存在pageSize、pageNo参数可分页展示累加序号,否则每页都从1开始\n * ```\n * render: tableCellRender.serialNumberCell(() => {\n * return { pageNo,pageSize };\n * }),\n * ```\n */\n serialNumberCell: tableColumnIndexRender2,\n /**\n * 表格日期格式数据渲染,默认格式:YYYY-MM-DD\n * ```\n * 独立使用\n * tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')\n * render: (value) => {\n * return tableCellRender.dateCell('YYYY-MM-DD')(value);\n * }\n * ```\n */\n dateCell: tableColumnDateRender,\n /**\n * table操作栏目渲染\n * ```\n * 使用方式\n * tableCellRender.operateCell((item) => ({\n * operateList: [\n * {\n * text: '编辑',\n * onClick: onItemOperate.bind(null, 'update', item),\n * },\n * {\n * text: '删除',\n * needConfirm: true,\n * confirmMessage: '确定要删除吗?',\n * onClick: onItemOperate.bind(null, 'delete', item),\n * },\n * ],\n * }))\n * ```\n */\n operateCell: tableColumnOperateRender,\n /**\n * 实现字段超出隐藏,默认长度10个字符\n * @deprecated 已过期,请使用 TextOverflow 组件实现\n * ```\n * 1. showMaxNumber: 显示最大长度\n * 2. 会讲字符转出字节进行计算显示\n * ```\n */\n tooltipCell: tableColumnTooltipRender,\n /**\n * Tag格式数据渲染,可结合枚举定义数据\n * ```\n * 独立使用\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n * tableCellRender.selectorCell(taskTypeEnumList)(value);\n *\n *\n * 结合table column render 使用\n * render: tableCellRender.selectorCell(taskTypeEnumList);\n * render: tableCellRender.selectorCell([{ label: '已开启', value: 1 ]);\n * render: (value) => {\n * return tableCellRender.selectorCell([{ label: '已开启', value: 1 ])(value);\n * }\n *\n * 其中value值可以是单个值或者数组;例如:'1' 或者 ['1', '2']\n * ```\n */\n selectorCell: tableColumnSelectorRender,\n /**\n * 单元格对象数据处理,支持多级处理\n * ```\n * tableCellRender.objectCell('a.b.c')\n * ```\n */\n objectCell: tableColumnObjectRender,\n /**\n * 分金额展示,入参分,显示元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. hideBgColor:隐藏背景颜色\n *\n * 例如:\n * fen2yuanCell()(100090) => 1000.90\n * fen2yuanCell({separator: true})(100090) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2yuanCell: tableColumnFen2yuanCellRender,\n /**\n * 分金额展示,入参分,显示万元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. showBgColor:隐藏背景颜色\n * 4. removeTailZero:移除小数点后末尾零\n *\n * 例如:\n * fen2yuanCell()(1000900000) => 1000.90\n * fen2yuanCell({separator: true})(1000900000) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2wanCell: tableColumnFen2wanCellRender,\n /**\n * 单元格徽标展示数据\n * ```\n * 1. badge 默认颜色:灰色rgba(0, 0, 0, 0.25)\n *\n * 独立使用\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.badgeCell([{ label: '已开启', value: 1 ])\n * render: (value) => {\n * return tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * }\n * ```\n */\n badgeCell: tableColumnBadgeRender,\n /**\n * 单元格点击事件\n * ```\n * 独立使用\n * tableCellRender.clickCell(onClick)(value, record)\n *\n * 结合table column render 使用\n * render: tableCellRender.clickCell(onClick)\n * render: (value, record) => {\n * return tableCellRender.clickCell(onClick)(value, record)\n * }\n * ```\n */\n clickCell: tableColumnClickRender,\n};\n"],"names":["tableColumnTooltipRender","showMaxNumber","defaultValue","value","_isEmpty","isNumber","colunmText","toString","maxNumber","isUndefinedOrNull","strByteLen","getStrByteLen","_jsx","Tooltip","placement","title","children","cutString","tableColumnOperateRender","options","_value","record","index","operateProps","ButtonOperate","_extends","tableColumnDateRender","dateFormatType","flatbizDate","format","Date","error","tableColumnIndexRender","pageNo","pageSize","_record","tableColumnIndexRender2","method","_ref","tableColumnSelectorRender","selectorList","colorMap","TagListRender","dataList","forceMatch","noColorShowTag","tableColumnObjectRender","key","_isPlainObject","target","_get","_isObject","JSON","stringify","tableColumnFen2yuanCellRender","className","hideBgColor","undefined","flatbizPrice","amount","fen2yuan","separator","tableColumnFen2wanCellRender","showBgColor","fen2wan","amountNew","removeTailZero","tableColumnExtraContentRender","handle","item","Fragment","showData","notOverflowShowExtra","extraPosition","renderValue","_isString","extra","spaceContent","spaceContentRender","reverse","Space","onClick","style","cursor","size","map","tableColumnBadgeRender","find","Badge","color","text","label","tableColumnClickRender","bind","tableCellRender","extraContentRender","indexCell","serialNumberCell","dateCell","operateCell","tooltipCell","selectorCell","objectCell","fen2yuanCell","fen2wanCell","badgeCell","clickCell"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
import './index.css';
|
|
3
3
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
4
|
-
import{_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{toArray as e,isUndefinedOrNull as l,valueIsEqual as n}from"@flatbiz/utils";import{Tag as
|
|
4
|
+
import{_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{toArray as e,isUndefinedOrNull as l,valueIsEqual as n}from"@flatbiz/utils";import{Tag as a,Popover as t}from"antd";import{useMemo as o,Fragment as i}from"react";import{jsx as u,jsxs as c}from"react/jsx-runtime";var f=function v(d){var h=e(d.value);var m=d.maxShowCount||0;var s=o((function(){if(l(d.value)){return[]}return h.map((function(r){var e;var l=(e=d.dataList)==null?void 0:e.find((function(e){return n(e.value,r)||e.label===r}));if(l){var a;return{label:l.label||l.value,color:((a=d.colorMap)==null?void 0:a[String(l.value)])||l.color,value:r}}if(d.forceMatch){return undefined}return{label:""+r,color:undefined,value:r}})).filter(Boolean)}),[d.colorMap,d.dataList,d.forceMatch,d.value,h]);if(s.length===0){return u(i,{children:d.value})}var g=s.slice(0,m||s.length);var p=g.length<s.length?d.foldShowAllTag?s:s.slice(m,s.length):[];return c(i,{children:[g.map((function(r,e){var l=r.color;if(!l&&d.noColorShowTag===false){return u(i,{children:r.label},e)}return u(a,{color:l,style:e===g.length-1?{margin:"0"}:{marginRight:5},children:r.label},e)})),p.length>0?u(t,{content:u(f,r({},d,{value:p.map((function(r){return r.value})),dataList:p,maxShowCount:undefined})),children:u(a,{color:"blue",style:{marginLeft:5,cursor:"pointer"},children:"..."})}):null]})};f.defaultProps={forceMatch:false};export{f as TagListRender};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tag-list-render/tag-list.tsx"],"sourcesContent":["import { isUndefinedOrNull, toArray, valueIsEqual } from '@flatbiz/utils';\nimport { Popover, Tag } from 'antd';\nimport { FC, Fragment, useMemo } from 'react';\n\nexport type TagListRenderValue = string | number | boolean;\nexport type TagListRenderDataItem = { label: string; value: TagListRenderValue; color?: string };\n\nexport type TagListRenderProps = {\n dataList: TagListRenderDataItem[];\n /** 颜色配置数据,例如:{ 1:'red', 2: 'blue'} key值与 dataList中value相同 */\n colorMap?: Record<string | number, string>;\n value?: TagListRenderValue | TagListRenderValue[];\n /** 是否强制匹配,默认值false */\n forceMatch?: boolean;\n /** 最大显示Tag数量,超出折叠隐藏 */\n maxShowCount?: number;\n /** 触发maxShowCount后,被折叠的内容是否显示完整tag,默认值:false */\n foldShowAllTag?: boolean;\n /** 所有tag背景匹配此颜色,在colorMap为空、dataList中未配置color的情况下有效果 */\n tagColor?: string;\n};\n\n/**\n * 在列表数据dataList中通过value匹配数据,以Tag形式展示\n * ```\n * 1. forceMatch: 是否强制匹配(默认值false)\n * - false: 匹配不到显示value值,\n * - true:匹配不到不显示\n * 2. value 与 dataList中label、value任一相等,都可匹配\n *\n * 用法1:\n * <TagListRender\n * dataList=[{ label: '启用', value: 1 }]\n * colorMap={{ 1:'red', 2: 'blue'}}\n * value={1} />\n * =>\n * <Tag color={'red'}>启用</Tag>\n *\n * 用法2\n * <TagListRender\n * dataList=[{ label: '启用', value: 1. color: 'red' }]\n * value=\"启用\" />\n * =>\n * <Tag color={'red'}>启用</Tag>\n * ```\n */\nexport const TagListRender: FC<TagListRenderProps> = (props) => {\n const valueList = toArray<TagListRenderValue>(props.value);\n const maxShowCount = props.maxShowCount || 0;\n const tagList = useMemo(() => {\n if (isUndefinedOrNull(props.value)) {\n return [];\n }\n return valueList\n .map((value) => {\n const target = props.dataList?.find(\n (item) => valueIsEqual(item.value, value) || item.label === value,\n );\n if (target) {\n return {\n label: target.label || target.value,\n color: props.colorMap?.[String(target.value)] || target.color,\n value: value,\n };\n }\n if (props.forceMatch) {\n return undefined;\n }\n return { label: `${value}`, color: undefined, value: value };\n })\n .filter(Boolean) as TagListRenderDataItem[];\n }, [props.colorMap, props.dataList, props.forceMatch, props.value, valueList]);\n\n if (tagList.length === 0) {\n return <Fragment>{props.value}</Fragment>;\n }\n\n const newTagList = tagList.slice(0, maxShowCount || tagList.length);\n\n const popoverTagList =\n newTagList.length < tagList.length\n ? props.foldShowAllTag\n ? tagList\n : tagList.slice(maxShowCount, tagList.length)\n : [];\n\n return (\n <Fragment>\n {newTagList.map((item, index) => {\n return (\n <Tag\n color={
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tag-list-render/tag-list.tsx"],"sourcesContent":["import { isUndefinedOrNull, toArray, valueIsEqual } from '@flatbiz/utils';\nimport { Popover, Tag } from 'antd';\nimport { FC, Fragment, useMemo } from 'react';\n\nexport type TagListRenderValue = string | number | boolean;\nexport type TagListRenderDataItem = { label: string; value: TagListRenderValue; color?: string };\n\nexport type TagListRenderProps = {\n dataList: TagListRenderDataItem[];\n /** 颜色配置数据,例如:{ 1:'red', 2: 'blue'} key值与 dataList中value相同 */\n colorMap?: Record<string | number, string>;\n value?: TagListRenderValue | TagListRenderValue[];\n /** 是否强制匹配,默认值false */\n forceMatch?: boolean;\n /** 最大显示Tag数量,超出折叠隐藏 */\n maxShowCount?: number;\n /** 触发maxShowCount后,被折叠的内容是否显示完整tag,默认值:false */\n foldShowAllTag?: boolean;\n /** 所有tag背景匹配此颜色,在colorMap为空、dataList中未配置color的情况下有效果 */\n tagColor?: string;\n /** 未匹配到color时,是否显示Tag效果,默认值:true */\n noColorShowTag?: boolean;\n};\n\n/**\n * 在列表数据dataList中通过value匹配数据,以Tag形式展示\n * ```\n * 1. forceMatch: 是否强制匹配(默认值false)\n * - false: 匹配不到显示value值,\n * - true:匹配不到不显示\n * 2. value 与 dataList中label、value任一相等,都可匹配\n *\n * 用法1:\n * <TagListRender\n * dataList=[{ label: '启用', value: 1 }]\n * colorMap={{ 1:'red', 2: 'blue'}}\n * value={1} />\n * =>\n * <Tag color={'red'}>启用</Tag>\n *\n * 用法2\n * <TagListRender\n * dataList=[{ label: '启用', value: 1. color: 'red' }]\n * value=\"启用\" />\n * =>\n * <Tag color={'red'}>启用</Tag>\n * ```\n */\nexport const TagListRender: FC<TagListRenderProps> = (props) => {\n const valueList = toArray<TagListRenderValue>(props.value);\n const maxShowCount = props.maxShowCount || 0;\n const tagList = useMemo(() => {\n if (isUndefinedOrNull(props.value)) {\n return [];\n }\n return valueList\n .map((value) => {\n const target = props.dataList?.find(\n (item) => valueIsEqual(item.value, value) || item.label === value,\n );\n if (target) {\n return {\n label: target.label || target.value,\n color: props.colorMap?.[String(target.value)] || target.color,\n value: value,\n };\n }\n if (props.forceMatch) {\n return undefined;\n }\n return { label: `${value}`, color: undefined, value: value };\n })\n .filter(Boolean) as TagListRenderDataItem[];\n }, [props.colorMap, props.dataList, props.forceMatch, props.value, valueList]);\n\n if (tagList.length === 0) {\n return <Fragment>{props.value}</Fragment>;\n }\n\n const newTagList = tagList.slice(0, maxShowCount || tagList.length);\n\n const popoverTagList =\n newTagList.length < tagList.length\n ? props.foldShowAllTag\n ? tagList\n : tagList.slice(maxShowCount, tagList.length)\n : [];\n\n return (\n <Fragment>\n {newTagList.map((item, index) => {\n const color = item.color;\n if (!color && props.noColorShowTag === false) {\n return <Fragment key={index}>{item.label}</Fragment>;\n }\n return (\n <Tag\n color={color}\n style={index === newTagList.length - 1 ? { margin: '0' } : { marginRight: 5 }}\n key={index}\n >\n {item.label}\n </Tag>\n );\n })}\n {popoverTagList.length > 0 ? (\n <Popover\n content={\n <TagListRender\n {...props}\n value={popoverTagList.map((item) => item.value)}\n dataList={popoverTagList}\n maxShowCount={undefined}\n />\n }\n >\n <Tag color=\"blue\" style={{ marginLeft: 5, cursor: 'pointer' }}>\n ...\n </Tag>\n </Popover>\n ) : null}\n </Fragment>\n );\n};\n\nTagListRender.defaultProps = {\n forceMatch: false,\n};\n"],"names":["TagListRender","props","valueList","toArray","value","maxShowCount","tagList","useMemo","isUndefinedOrNull","map","_props$dataList","target","dataList","find","item","valueIsEqual","label","_props$colorMap","color","colorMap","String","forceMatch","undefined","filter","Boolean","length","_jsx","Fragment","children","newTagList","slice","popoverTagList","foldShowAllTag","_jsxs","index","noColorShowTag","Tag","style","margin","marginRight","Popover","content","_TagListRender","_extends","marginLeft","cursor","defaultProps"],"mappings":";uRAgDO,IAAMA,EAAwC,SAAxCA,EAAyCC,GACpD,IAAMC,EAAYC,EAA4BF,EAAMG,OACpD,IAAMC,EAAeJ,EAAMI,cAAgB,EAC3C,IAAMC,EAAUC,GAAQ,WACtB,GAAIC,EAAkBP,EAAMG,OAAQ,CAClC,MAAO,EACT,CACA,OAAOF,EACJO,KAAI,SAACL,GAAU,IAAAM,EACd,IAAMC,GAAMD,EAAGT,EAAMW,WAAQ,UAAA,EAAdF,EAAgBG,MAC7B,SAACC,GAAI,OAAKC,EAAaD,EAAKV,MAAOA,IAAUU,EAAKE,QAAUZ,CAAK,IAEnE,GAAIO,EAAQ,CAAA,IAAAM,EACV,MAAO,CACLD,MAAOL,EAAOK,OAASL,EAAOP,MAC9Bc,QAAOD,EAAAhB,EAAMkB,uBAANF,EAAiBG,OAAOT,EAAOP,UAAWO,EAAOO,MACxDd,MAAOA,EAEX,CACA,GAAIH,EAAMoB,WAAY,CACpB,OAAOC,SACT,CACA,MAAO,CAAEN,SAAUZ,EAASc,MAAOI,UAAWlB,MAAOA,EACvD,IACCmB,OAAOC,QACX,GAAE,CAACvB,EAAMkB,SAAUlB,EAAMW,SAAUX,EAAMoB,WAAYpB,EAAMG,MAAOF,IAEnE,GAAII,EAAQmB,SAAW,EAAG,CACxB,OAAOC,EAACC,EAAQ,CAAAC,SAAE3B,EAAMG,OAC1B,CAEA,IAAMyB,EAAavB,EAAQwB,MAAM,EAAGzB,GAAgBC,EAAQmB,QAE5D,IAAMM,EACJF,EAAWJ,OAASnB,EAAQmB,OACxBxB,EAAM+B,eACJ1B,EACAA,EAAQwB,MAAMzB,EAAcC,EAAQmB,QACtC,GAEN,OACEQ,EAACN,EAAQ,CAAAC,SAAA,CACNC,EAAWpB,KAAI,SAACK,EAAMoB,GACrB,IAAMhB,EAAQJ,EAAKI,MACnB,IAAKA,GAASjB,EAAMkC,iBAAmB,MAAO,CAC5C,OAAOT,EAACC,EAAQ,CAAAC,SAAcd,EAAKE,OAAbkB,EACxB,CACA,OACER,EAACU,EAAG,CACFlB,MAAOA,EACPmB,MAAOH,IAAUL,EAAWJ,OAAS,EAAI,CAAEa,OAAQ,KAAQ,CAAEC,YAAa,GAAIX,SAG7Ed,EAAKE,OAFDkB,EAKV,IACAH,EAAeN,OAAS,EACvBC,EAACc,EAAO,CACNC,QACEf,EAACgB,EAAaC,KACR1C,EAAK,CACTG,MAAO2B,EAAetB,KAAI,SAACK,GAAI,OAAKA,EAAKV,SACzCQ,SAAUmB,EACV1B,aAAciB,aAEjBM,SAEDF,EAACU,EAAG,CAAClB,MAAM,OAAOmB,MAAO,CAAEO,WAAY,EAAGC,OAAQ,WAAYjB,SAAC,UAI/D,OAGV,EAEA5B,EAAc8C,aAAe,CAC3BzB,WAAY"}
|
|
@@ -3,5 +3,5 @@ import './../fba-hooks/index.css';
|
|
|
3
3
|
import './../request-status/index.css';
|
|
4
4
|
import './index.css';
|
|
5
5
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
6
|
-
import e from"@ant-design/icons/es/icons/RedoOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import t from"@ant-design/icons/es/icons/CaretDownFilled";import{extend as n}from"@dimjs/utils/cjs/extend";import{hooks as l}from"@wove/react/cjs/hooks";import{isArray as a}from"@dimjs/lang/cjs/is-array";import{get as i}from"@dimjs/utils/cjs/get";import{isObject as o}from"@dimjs/lang/cjs/is-object";import{a as u,_ as s}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{
|
|
6
|
+
import e from"@ant-design/icons/es/icons/RedoOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import t from"@ant-design/icons/es/icons/CaretDownFilled";import{extend as n}from"@dimjs/utils/cjs/extend";import{hooks as l}from"@wove/react/cjs/hooks";import{isArray as a}from"@dimjs/lang/cjs/is-array";import{get as i}from"@dimjs/utils/cjs/get";import{isObject as o}from"@dimjs/lang/cjs/is-object";import{a as u,_ as s}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{getUuid as c,toArray as f,treeToTiledMap as d,isNotEmptyArray as v,treeToArray as p,isUndefinedOrNull as m}from"@flatbiz/utils";import{usePrevious as h}from"ahooks";import{TreeSelect as S,Button as g}from"antd";import{dequal as C}from"dequal";import{useMemo as b,useState as y,useRef as q,createElement as L}from"react";import{fbaHooks as w}from"../fba-hooks/index.js";import{RequestStatus as R}from"../request-status/index.js";import{Model as T}from"@dimjs/model-react";import{jsx as j}from"react/jsx-runtime";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";var k={treeSelectorList:[],treeSelectorTiledMap:{},queryIsEmpty:false};var x={actions:{setSelectBoxList:function e(r){return function(e){e.treeSelectorList=r.treeSelectorList||[];e.treeSelectorTiledMap=r.treeSelectorTiledMap||{};e.requestStatus="request-success"}},resetSelectBoxList:function e(){return function(e){e.treeSelectorList=[];e.treeSelectorTiledMap={}}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:k};var M={};var E=function e(r){if(!M[r]){M[r]=T(x)}return M[r]};var I=function e(r,t){var n=[];var l=t[r];while(l){var a=l.pId;l=t[a];if(l){n.push(a)}}return n};var N=function e(r,t){if(r.length===0)return[];var n=[];r.forEach((function(e){var r=I(e,t);n.push.apply(n,r)}));return Array.from(new Set(n))};var A=["serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","treeSelectorList","requestMessageConfig","modelKey","value","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","selectedParentCheckedAllChildrenList","fieldNames","onChange","treeDefaultExpandAll","showAllOption","initRootExpand","treeDefaultExpandedKeys","executeOnChangeInRenderFirstValue"];var O=function T(k){var x=k.serviceConfig,M=k.effectDependencyList,I=k.onTreeSelectorListChange,O=k.onTreeSelectorRequestError,D=k.treeSelectorList,P=k.requestMessageConfig,V=k.modelKey,F=k.value,B=k.labelInValue,K=k.labelInValueFieldNames,H=k.onTreeItemDataAdapter,J=k.selectedParentCheckedAllChildrenList,W=J===void 0?true:J,_=k.fieldNames,z=k.onChange,G=k.treeDefaultExpandAll,Q=k.showAllOption,U=k.initRootExpand,X=k.treeDefaultExpandedKeys,Y=k.executeOnChangeInRenderFirstValue,Z=u(k,A);var $=Object.prototype.hasOwnProperty.call(k,"treeSelectorList");var ee=b((function(){return V||c()}),[V]);var re=x||{};var te=M||[];var ne=w.useSafeState(false),le=ne[0],ae=ne[1];var ie=y(),oe=ie[0],ue=ie[1];var se=E(ee).useStore(),ce=se[0],fe=se[1];var de="request-progress-"+ee;var ve=Z.treeCheckable||Z.multiple;var pe=q(true);var me=b((function(){if(Z.treeCheckStrictly)return true;return B}),[B,Z.treeCheckStrictly]);var he=b((function(){return s({label:"label",value:"value",children:"children",disabled:"disabled"},_)}),[_]);var Se=b((function(){return s({label:"label",value:"value"},K)}),[K]);var ge=b((function(){if(Q){var e=Q===true;return{label:e?"全部":Q.label,value:e?"":Q.value}}return null}),[Q]);var Ce=y(),be=Ce[0],ye=Ce[1];var qe=w.useMemoCustom((function(){return f(F).map((function(e){if(o(e)){return me?e[Se.value]:e[he.value]}return e}))}),[he.value,me,Se.value,k.value]);var Le=h(qe);w.useEffectCustom((function(){if(ce.treeSelectorList.length>0){if(pe.current&&Y&&me){var e=[];var r=[];qe.forEach((function(t){var n=ce.treeSelectorTiledMap[t];if(n){var l;r.push(n);e.push((l={},l[Se.label]=n[he.label],l[Se.value]=n[he.value],l))}}));if(ve){k.onChange==null||k.onChange(e?e:undefined,r)}else{k.onChange==null||k.onChange(e?e[0]:undefined,r[0])}}var t=[];if(pe.current){pe.current=false;if(X){t=X}else if(G){var n=Object.keys(ce.treeSelectorTiledMap).map((function(e){var r;return(r=ce.treeSelectorTiledMap[e])==null?void 0:r[he.value]}));t=n}else if(U&&ce.treeSelectorList.length===1){t=[ce.treeSelectorList[0][he.value]]}ue(t)}}}),[qe,ce.treeSelectorList]);w.useEffectCustom((function(){if(!pe.current&&qe.length>0){if(ce.treeSelectorList.length>0&&JSON.stringify(qe)!==JSON.stringify(Le)){if(!be){var e=N(qe,ce.treeSelectorTiledMap);ue(e)}}}}),[qe,ce.treeSelectorList]);var we=function e(r){return r===""||m(r)};var Re=function e(r){var t=r;if(re.onRequestResultAdapter){t=re.onRequestResultAdapter(r)}else if(he.list){t=i(r,he.list)}if(t&&!a(t)){console.warn("待渲染数据为非数组结构",t);return[]}return t||[]};var Te=l.useCallbackRef((function(){return new Promise((function(e,r){var t,l,a,i,o;if(!re.onRequest){return r(new Error("onRequest 调用接口服务不能为空"))}t=re.requiredParamsKeys||[];l=n({},re.params);a=t.find((function(e){return we(l[e])}));if(a){void fe.changeRequestStatus("no-dependencies-params");console.warn("TreeSelectorWrapper组件:参数:"+t.join("、")+"不能为空");return e()}var u=function(){try{return e()}catch(e){return r(e)}};var s=function(e){try{ae(false);window[de]=false;void fe.changeRequestStatus("request-error");O==null||O(e);return u()}catch(e){return r(e)}};try{ae(true);window[de]=true;void fe.changeRequestStatus("request-progress");return Promise.resolve(re.onRequest==null?void 0:re.onRequest(l)).then((function(e){try{i=e;o=Re(i);ae(false);window[de]=false;je(o||[]);return u()}catch(e){return s(e)}}),s)}catch(e){s(e)}}))}));l.useCustomCompareEffect((function(){if($)return;if(te.length){je([]);void Te();return}var e=E(ee).getState();if(e.requestStatus==="request-success"){return}if(!window[de]){void Te();return}}),te,C);var je=l.useCallbackRef((function(e){var r;if((e==null?void 0:e.length)===0&&ce.treeSelectorList.length===0){void fe.setSelectBoxList({treeSelectorList:[],treeSelectorTiledMap:{}});I==null||I([]);return}var t=ge?(r={},r[he.label]=ge.label,r[he.value]=ge.value,r):undefined;var n=Q?[t].concat(e):e;void fe.setSelectBoxList({treeSelectorList:n,treeSelectorTiledMap:d(n,{value:he.value,children:he.children},"pId")});I==null||I(e)}));w.useEffectCustom((function(){if($){je(D||[])}}),[D]);var ke=l.useCallbackRef((function(e){ue(e)}));var xe=l.useCallbackRef((function(){void Te()}));var Me=l.useCallbackRef((function(e,r,t){var n=f(e);if(Z.treeCheckStrictly){if(W&&t.checked){var l=ce.treeSelectorTiledMap[t==null?void 0:t.triggerValue];if(v(l[he.children])){n=p([l],he.children).map((function(e){return e[he.value]}))}else{n=e==null?void 0:e.map((function(e){return e.value}))}}else{n=e==null?void 0:e.map((function(e){return e.value}))}}if(me){var a=n.map((function(e){var r;var t=ce.treeSelectorTiledMap[e];return r={},r[Se.label]=t[he.label],r[Se.value]=t[he.value],r}));if(ve){z==null||z(a,a,t)}else{z==null||z(a[0],a[0],t)}}else{var i=n.map((function(e){return ce.treeSelectorTiledMap[e]}));if(ve){z==null||z(n,i,t)}else{z==null||z(n[0],i[0],t)}}}));var Ee=l.useCallbackRef((function(e){if(!e)return null;return e.map((function(e){var r=(H==null?void 0:H(s({},e)))||e;var t=r[he.children];var n=r[he.value];var l=r[he.label];var a=r[he.disabled]?r[he.disabled]:r.disabled;return L(S.TreeNode,s({},r,{disabled:a,value:n,title:l,key:""+n}),t&&t.length>0&&Ee(t))}))}));var Ie=function e(r){ye(r);var t=[];if(!r){ye(undefined);t=qe}else{Object.keys(ce.treeSelectorTiledMap).forEach((function(e){var n=ce.treeSelectorTiledMap[e];var l=n==null?void 0:n[he.label];if(l!=null&&l.includes(r)){t.push(n[he.value])}}))}var n=N(t,ce.treeSelectorTiledMap);ue(n)};var Ne=ve?qe:qe[0];return j(S,s({searchValue:be,dropdownStyle:{maxHeight:400,overflow:"auto"},showSearch:true,treeLine:{showLeafIcon:false},treeNodeFilterProp:"title",switcherIcon:j(t,{}),popupMatchSelectWidth:false},Z,{className:r("v-tree-select-wrapper",Z.className),popupClassName:r("v-tree-select-wrapper-dropdown",Z.popupClassName),onChange:Me,treeExpandedKeys:oe,value:Ne,onSearch:Ie,loading:le,onTreeExpand:ke,style:s({width:"100%"},Z.style),suffixIcon:ce.requestStatus==="request-error"?j(e,{spin:le,onClick:xe}):undefined,notFoundContent:j(R,{status:ce.requestStatus,messageConfig:P,loading:le,errorButton:j(g,{type:"primary",onClick:xe,children:"重新获取数据"})}),children:Ee(ce.treeSelectorList)}))};export{O as TreeSelectorWrapper};
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-selector-wrapper/model.ts","@flatbiz/antd/src/tree-selector-wrapper/utils.ts","@flatbiz/antd/src/tree-selector-wrapper/selector.tsx"],"sourcesContent":["import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject, TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeSelectProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeSelectorList: TSetDefaultDefined<TreeSelectProps['treeData'], []>;\n treeSelectorTiledMap: TPlainObject;\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setSelectBoxList: {\n treeSelectorList: ModelState['treeSelectorList'];\n treeSelectorTiledMap: TPlainObject;\n };\n resetSelectBoxList: void;\n changeRequestStatus: TRequestStatus;\n};\n\nconst defaultState: ModelState = {\n treeSelectorList: [],\n treeSelectorTiledMap: {},\n queryIsEmpty: false,\n};\n\nconst TreeSelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.treeSelectorList = params.treeSelectorList || [];\n state.treeSelectorTiledMap = params.treeSelectorTiledMap || {};\n state.requestStatus = 'request-success';\n };\n },\n resetSelectBoxList: () => {\n return (state) => {\n state.treeSelectorList = [];\n state.treeSelectorTiledMap = {};\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeSelectorWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeSelectorWrapperModel('key值').useStore();\n * ```\n */\nexport const treeSelectorWrapperModel = (key: string) => {\n if (!treeSelectorWrapperModels[key]) {\n treeSelectorWrapperModels[key] = Model(TreeSelectorWrapperModel);\n }\n return treeSelectorWrapperModels[key];\n};\n","export const getExpandedKeysByValue = (value: string | number, treeSelectorTiledMap) => {\n const tempList: Array<string | number> = [];\n let parentNode = treeSelectorTiledMap[value];\n while (parentNode) {\n const pId = parentNode.pId;\n parentNode = treeSelectorTiledMap[pId];\n if (parentNode) {\n tempList.push(pId);\n }\n }\n return tempList;\n};\n\nexport const getExpandedKeysByValues = (values: Array<string | number>, treeSelectorTiledMap) => {\n if (values.length === 0) return [];\n const expandedKeys: Array<string | number> = [];\n values.forEach((value) => {\n const targetList = getExpandedKeysByValue(value, treeSelectorTiledMap);\n expandedKeys.push(...targetList);\n });\n return Array.from(new Set(expandedKeys));\n};\n","import { CaretDownFilled, RedoOutlined } from '@ant-design/icons';\nimport { isArray, isObject } from '@dimjs/lang';\nimport { classNames, extend, get } from '@dimjs/utils';\nimport {\n isNotEmptyArray,\n isUndefinedOrNull,\n toArray,\n treeToArray,\n treeToTiledMap,\n type TAny,\n type TPlainObject,\n} from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { usePrevious } from 'ahooks';\nimport { Button, TreeSelect, type TreeSelectProps } from 'antd';\nimport { dequal } from 'dequal';\nimport { useMemo, useRef, useState, type DependencyList } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { RequestStatus, type TRequestStatusProps } from '../request-status';\nimport { treeSelectorWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeysByValues } from './utils';\n\ntype TreeSelectorWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeSelectorServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeSelectorWrapperProps = Omit<\n TreeSelectProps,\n | 'treeExpandedKeys'\n | 'treeData'\n | 'loading'\n | 'onTreeExpand'\n | 'onChange'\n | 'value'\n | 'fieldNames'\n | 'defaultValue'\n | 'treeDataSimpleMode'\n | 'onSearch'\n> & {\n modelKey: string;\n fieldNames?: {\n /**\n * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 2. 配置 serviceConfig.onRequestResultAdapter 后此配置失效\n */\n list?: string;\n label?: string;\n value?: string;\n children?: string;\n disabled?: string;\n };\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`treeSelectorList`后无效果\n */\n serviceConfig?: TreeSelectorServiceConfig;\n /**\n * 当设置treeSelectorList后,serviceConfig 将失效\n */\n treeSelectorList?: TreeSelectProps['treeData'];\n /**\n * treeSelectorList发生变更时触发\n */\n onTreeSelectorListChange?: (treeSelectorList?: TreeSelectProps['treeData']) => void;\n /**\n * 通过服务获取数据异常回调,当设置`treeSelectorList`后无效果\n */\n onTreeSelectorRequestError?: (error: Error) => void;\n /**\n * 添加全部选项\n * ```\n * 1. showAllOption = true,添加默认全部选项(value值为空字符串)\n * 2. 可自定义全部选项,例如:{ label: '全部', value: 'all' }\n * 3. 自定义字段会通过fieldNames转换后使用\n * 4. 多选操作时,最好不要设置全部选项\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /**\n * 1. 当 treeCheckable = true && treeCheckStrictly = true,如果选择的数据中含有父节点,selectedValue、selectedList返回数据包含父节点\n * 2. 当 treeCheckable = true && treeCheckStrictly = false,selectedValue、selectedList返回的数据不包含父节点\n * 3. 当 treeCheckable = false,节点选择没有级联关系,selectedValue、selectedList返回的数据就是实际选择\n * 4. selectAllDataList 返回的数据都包含父节点\n * 5. 使用 onTreeItemAdapter 拼接label数据后,选中回填数据也是拼接后的\n * 6. triggerInfo 当前操作节点数据\n */\n onChange?: (\n selectedValue?: TreeSelectorWrapperValue,\n selectedData?: TPlainObject[] | TPlainObject,\n triggerInfo?: TPlainObject,\n ) => void;\n /**\n * tree item 数据适配器,返回的数据会通过fieldNames配置取数据\n * ```\n * 1. 可用于设置disabled状态\n * onTreeItemDataAdapter: (dataItem) => {\n * if(dataItem.xx === xx){\n * dataItem['disabled] = true;\n * }\n * return dataItem;\n * }\n * 2. 可设置label数据显示\n * ```\n */\n onTreeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n // icon 无法实现、treeIcon不起作用4.20.0\n // showIcon?: boolean;\n // icon?: (data: TPlainObject) => ReactElement;\n /** 自定义异常提示文案 */\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n /**\n * value格式\n *```\n * 1. string 、number\n * 2. Array<string | number>\n * 3. lableInValue = true,根据labelInValueFieldNames配置格式\n * 4. lableInValue = true,Array<labelInValueFieldNames配置>\n * ```\n */\n value?: TreeSelectorWrapperValue;\n\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n labelInValue?: boolean;\n /**\n * @deprecated 已弃用\n * ```\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * treeCheckStrictly = true模式下有效,点击父节点是否选中所有子节点,默认值:true\n */\n selectedParentCheckedAllChildrenList?: boolean;\n /** 有唯一跟节点时,初始化是否展开,默认值:false */\n initRootExpand?: boolean;\n\n /**\n * 在第一次渲染value时,主动执行一次onChange\n * ```\n * 1. 设置labelInValue = true 时有效\n * 2. 不考虑子父节点的关系\n * ```\n */\n executeOnChangeInRenderFirstValue?: boolean;\n};\n\n/**\n * 树选择器包装组件,由于过度封装,部分antd TreeSelect原始功能不支持,不满足情况的请使用antd TreeSelect实现\n * ```\n * 1. 当设置treeSelectorList属性后,serviceConfig、onTreeSelectorListChange将失效\n * 2. 父节点默认不返回,需要返回请设置showCheckedStrategy\n * ```\n */\nexport const TreeSelectorWrapper = (props: TreeSelectorWrapperProps) => {\n const {\n serviceConfig,\n effectDependencyList,\n onTreeSelectorListChange,\n onTreeSelectorRequestError,\n treeSelectorList,\n requestMessageConfig,\n modelKey,\n value,\n labelInValue: _labelInValue,\n labelInValueFieldNames,\n onTreeItemDataAdapter,\n selectedParentCheckedAllChildrenList = true,\n fieldNames,\n onChange,\n treeDefaultExpandAll,\n showAllOption,\n initRootExpand,\n treeDefaultExpandedKeys,\n executeOnChangeInRenderFirstValue,\n ...otherProps\n } = props;\n /**\n * 不能使用key、defaultValue模式\n * 1. 勾选的和回填选中不相同情况,勾选后会渲染defaultValue模式后,弹框被关闭,操作体验存在问题\n */\n const hasTreeSelectorList = Object.prototype.hasOwnProperty.call(props, 'treeSelectorList');\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeSelectorWrapperModel(modelKey).useStore();\n const requestPreKey = `request-progress-${modelKey}`;\n const isMultiple = otherProps.treeCheckable || otherProps.multiple;\n const responseFirstRef = useRef(true);\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n const labelInValue = useMemo(() => {\n if (otherProps.treeCheckStrictly) return true;\n return _labelInValue;\n }, [_labelInValue, otherProps.treeCheckStrictly]);\n\n const fieldNamesMerge = useMemo(() => {\n return {\n label: 'label',\n value: 'value',\n children: 'children',\n disabled: 'disabled',\n ...fieldNames,\n };\n }, [fieldNames]);\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n\n const allOptionConfig = useMemo(() => {\n if (showAllOption) {\n const isTrue = showAllOption === true;\n return {\n label: isTrue ? '全部' : showAllOption.label,\n value: isTrue ? '' : showAllOption.value,\n };\n }\n return null;\n }, [showAllOption]);\n\n const [searchValue, setSearchValue] = useState<string>();\n\n const propsPureValue = fbaHooks.useMemoCustom(() => {\n return toArray<TAny>(value).map((item) => {\n if (isObject(item)) {\n return (labelInValue ? item[labelInValueFieldNamesMerge.value] : item[fieldNamesMerge.value]) as\n | string\n | number;\n }\n return item as string | number;\n });\n }, [fieldNamesMerge.value, labelInValue, labelInValueFieldNamesMerge.value, props.value]);\n\n const prevPropsPureValue = usePrevious(propsPureValue);\n\n fbaHooks.useEffectCustom(() => {\n if (state.treeSelectorList.length > 0) {\n if (responseFirstRef.current && executeOnChangeInRenderFirstValue && labelInValue) {\n const dataList: TPlainObject[] = [];\n const originalList: TPlainObject[] = [];\n propsPureValue.forEach((item) => {\n const target = state.treeSelectorTiledMap[item];\n if (target) {\n originalList.push(target);\n dataList.push({\n [labelInValueFieldNamesMerge.label]: target[fieldNamesMerge.label],\n [labelInValueFieldNamesMerge.value]: target[fieldNamesMerge.value],\n });\n }\n });\n if (isMultiple) {\n props.onChange?.(dataList ? dataList : undefined, originalList);\n } else {\n props.onChange?.(dataList ? dataList[0] : undefined, originalList[0]);\n }\n }\n let treeExpandedKeys: Array<string | number> = [];\n if (responseFirstRef.current) {\n responseFirstRef.current = false;\n if (treeDefaultExpandedKeys) {\n treeExpandedKeys = treeDefaultExpandedKeys as Array<string | number>;\n } else if (treeDefaultExpandAll) {\n const allValues = Object.keys(state.treeSelectorTiledMap).map(\n (item) => state.treeSelectorTiledMap[item]?.[fieldNamesMerge.value] as string | number,\n );\n treeExpandedKeys = allValues;\n } else if (initRootExpand && state.treeSelectorList.length === 1) {\n treeExpandedKeys = [state.treeSelectorList[0][fieldNamesMerge.value]];\n }\n setTreeExpandedKeys(treeExpandedKeys);\n }\n // else {\n // responseFirstRef.current = false;\n // if (!searchValue) {\n // const expandedKeys = getExpandedKeysByValues(\n // propsPureValue,\n // state.treeSelectorTiledMap\n // );\n // setTreeExpandedKeys(expandedKeys);\n // }\n // }\n }\n }, [propsPureValue, state.treeSelectorList]);\n\n fbaHooks.useEffectCustom(() => {\n if (!responseFirstRef.current && propsPureValue.length > 0) {\n if (\n state.treeSelectorList.length > 0 &&\n JSON.stringify(propsPureValue) !== JSON.stringify(prevPropsPureValue)\n ) {\n if (!searchValue) {\n const expandedKeys = getExpandedKeysByValues(propsPureValue, state.treeSelectorTiledMap);\n setTreeExpandedKeys(expandedKeys);\n }\n }\n }\n }, [propsPureValue, state.treeSelectorList]);\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceResponseHandle = (respData) => {\n let result = respData;\n if (newServiceConfig.onRequestResultAdapter) {\n result = newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n } else if (fieldNamesMerge.list) {\n result = get(respData, fieldNamesMerge.list);\n }\n if (result && !isArray(result)) {\n console.warn('待渲染数据为非数组结构', result);\n return [];\n }\n return result || [];\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys || [];\n const params = extend({}, newServiceConfig.params);\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n void actions.changeRequestStatus('no-dependencies-params');\n console.warn(`TreeSelectorWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-progress');\n const _respData = await newServiceConfig.onRequest?.(params);\n const respData = serviceResponseHandle(_respData) as TreeSelectProps['treeData'];\n setLoading(false);\n window[requestPreKey] = false;\n onChangeSelectorList(respData || []);\n } catch (error: TAny) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n onTreeSelectorRequestError?.(error);\n }\n });\n\n hooks.useCustomCompareEffect(\n () => {\n if (hasTreeSelectorList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (newEffectDependencyList.length) {\n // 内部主动清楚数据,被依赖的数据发生变更时,依赖组件数据清空\n onChangeSelectorList([]);\n void startDataSourceRequest();\n return;\n }\n const allState = treeSelectorWrapperModel(modelKey).getState();\n if (allState.requestStatus === 'request-success') {\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n return;\n }\n },\n newEffectDependencyList,\n dequal,\n );\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeSelectorList.length === 0) {\n void actions.setSelectBoxList({\n treeSelectorList: [],\n treeSelectorTiledMap: {},\n });\n onTreeSelectorListChange?.([]);\n return;\n }\n // 全部选项\n const tempItem = allOptionConfig\n ? {\n [fieldNamesMerge.label]: allOptionConfig.label,\n [fieldNamesMerge.value]: allOptionConfig.value,\n }\n : undefined;\n const newdataList = showAllOption ? [tempItem, ...dataList] : dataList;\n void actions.setSelectBoxList({\n treeSelectorList: newdataList,\n treeSelectorTiledMap: treeToTiledMap(\n newdataList,\n {\n value: fieldNamesMerge.value,\n children: fieldNamesMerge.children,\n },\n 'pId',\n ),\n });\n onTreeSelectorListChange?.(dataList);\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasTreeSelectorList) {\n onChangeSelectorList(treeSelectorList || []);\n }\n }, [treeSelectorList]);\n\n const onTreeExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n /**\n * 根据treeCheckable、treeCheckStrictly、showCheckedStrategy等设置情况,判断返回数据是否包含父节点\n * 1. 当 treeCheckable = true,changeValue 数据格式为 { label,value }[]\n */\n const onInnerChange = hooks.useCallbackRef((changeValue: TAny, _data, triggerInfo: TPlainObject) => {\n let resultValueList = toArray<TAny>(changeValue);\n if (otherProps.treeCheckStrictly) {\n if (selectedParentCheckedAllChildrenList && triggerInfo.checked) {\n const target = state.treeSelectorTiledMap[triggerInfo?.triggerValue];\n if (isNotEmptyArray(target[fieldNamesMerge.children])) {\n resultValueList = treeToArray([target], fieldNamesMerge.children).map((item) => {\n return item[fieldNamesMerge.value];\n });\n } else {\n resultValueList = changeValue?.map((item) => item.value);\n }\n } else {\n resultValueList = changeValue?.map((item) => item.value);\n }\n }\n if (labelInValue) {\n const resultItemList = resultValueList.map((item) => {\n const target = state.treeSelectorTiledMap[item];\n return {\n [labelInValueFieldNamesMerge.label]: target[fieldNamesMerge.label],\n [labelInValueFieldNamesMerge.value]: target[fieldNamesMerge.value],\n };\n });\n if (isMultiple) {\n onChange?.(resultItemList, resultItemList, triggerInfo);\n } else {\n onChange?.(resultItemList[0], resultItemList[0], triggerInfo);\n }\n } else {\n const resultItemList = resultValueList.map((item) => {\n return state.treeSelectorTiledMap[item];\n });\n if (isMultiple) {\n onChange?.(resultValueList, resultItemList, triggerInfo);\n } else {\n onChange?.(resultValueList[0], resultItemList[0], triggerInfo);\n }\n }\n });\n\n const mapTree = hooks.useCallbackRef((data) => {\n if (!data) return null;\n return data.map((item) => {\n const itemAdapterData = onTreeItemDataAdapter?.({ ...item }) || item;\n const children = itemAdapterData[fieldNamesMerge.children];\n const value = itemAdapterData[fieldNamesMerge.value];\n const label = itemAdapterData[fieldNamesMerge.label];\n const disabled = itemAdapterData[fieldNamesMerge.disabled]\n ? itemAdapterData[fieldNamesMerge.disabled]\n : itemAdapterData.disabled;\n return (\n <TreeSelect.TreeNode\n {...itemAdapterData}\n disabled={disabled}\n value={value}\n title={label}\n key={`${value}`}\n >\n {children && children.length > 0 && mapTree(children)}\n </TreeSelect.TreeNode>\n );\n });\n });\n\n const onSearch = (searchValue?: string) => {\n setSearchValue(searchValue);\n let targetKeyList: Array<string | number> = [];\n if (!searchValue) {\n setSearchValue(undefined);\n targetKeyList = propsPureValue;\n } else {\n Object.keys(state.treeSelectorTiledMap).forEach((item) => {\n const target = state.treeSelectorTiledMap[item];\n const label = target?.[fieldNamesMerge.label] as string;\n if (label?.includes(searchValue)) {\n targetKeyList.push(target[fieldNamesMerge.value]);\n }\n });\n }\n\n const expandedKeysMerge = getExpandedKeysByValues(targetKeyList, state.treeSelectorTiledMap);\n setTreeExpandedKeys(expandedKeysMerge);\n };\n\n const treeValue = isMultiple ? propsPureValue : propsPureValue[0];\n\n /**\n * 1. 使用 TreeNode 渲染节点,不能重写 fieldNames 配置\n * 2. 使用 TreeNode 是为了实现 TreeNode ICON\n */\n return (\n <TreeSelect\n searchValue={searchValue}\n dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}\n showSearch={true}\n treeLine={{ showLeafIcon: false }}\n treeNodeFilterProp=\"title\"\n switcherIcon={<CaretDownFilled />}\n popupMatchSelectWidth={false}\n {...otherProps}\n className={classNames('v-tree-select-wrapper', otherProps.className)}\n popupClassName={classNames('v-tree-select-wrapper-dropdown', otherProps.popupClassName)}\n onChange={onInnerChange}\n treeExpandedKeys={treeExpandedKeys}\n value={treeValue}\n onSearch={onSearch}\n loading={loading}\n onTreeExpand={onTreeExpand}\n style={{ width: '100%', ...otherProps.style }}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n notFoundContent={\n <RequestStatus\n status={state.requestStatus}\n messageConfig={requestMessageConfig}\n loading={loading}\n errorButton={\n <Button type=\"primary\" onClick={onAgainRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n >\n {mapTree(state.treeSelectorList)}\n </TreeSelect>\n );\n};\n"],"names":["defaultState","treeSelectorList","treeSelectorTiledMap","queryIsEmpty","TreeSelectorWrapperModel","actions","setSelectBoxList","params","state","requestStatus","resetSelectBoxList","changeRequestStatus","treeSelectorWrapperModels","treeSelectorWrapperModel","key","Model","getExpandedKeysByValue","value","tempList","parentNode","pId","push","getExpandedKeysByValues","values","length","expandedKeys","forEach","targetList","apply","Array","from","Set","TreeSelectorWrapper","props","serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","requestMessageConfig","modelKey","_labelInValue","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","_props$selectedParent","selectedParentCheckedAllChildrenList","fieldNames","onChange","treeDefaultExpandAll","showAllOption","initRootExpand","treeDefaultExpandedKeys","executeOnChangeInRenderFirstValue","otherProps","_objectWithoutPropertiesLoose","_excluded","hasTreeSelectorList","Object","prototype","hasOwnProperty","call","newServiceConfig","newEffectDependencyList","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeSelectorWrapperM","useStore","requestPreKey","isMultiple","treeCheckable","multiple","responseFirstRef","useRef","useMemo","treeCheckStrictly","fieldNamesMerge","_extends","label","children","disabled","labelInValueFieldNamesMerge","allOptionConfig","isTrue","_useState2","searchValue","setSearchValue","propsPureValue","useMemoCustom","toArray","map","item","_isObject","prevPropsPureValue","usePrevious","useEffectCustom","current","dataList","originalList","target","_dataList$push","undefined","allValues","keys","_state$treeSelectorTi","JSON","stringify","valueIsEmpty","isUndefinedOrNull","serviceResponseHandle","respData","result","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","isEmpty","_respData","onRequest","Error","_extend","find","join","$Try_1_Post","$boundEx","$Try_1_Catch","error","window","resolve","then","$await_2","onChangeSelectorList","useCustomCompareEffect","allState","getState","dequal","_ref","tempItem","newdataList","concat","treeToTiledMap","onTreeExpand","onAgainRequest","onInnerChange","changeValue","_data","triggerInfo","resultValueList","checked","triggerValue","isNotEmptyArray","treeToArray","resultItemList","_ref2","mapTree","data","itemAdapterData","_createElement","TreeSelect","TreeNode","title","onSearch","targetKeyList","includes","expandedKeysMerge","treeValue","_jsx","dropdownStyle","maxHeight","overflow","showSearch","treeLine","showLeafIcon","treeNodeFilterProp","switcherIcon","_CaretDownFilled","popupMatchSelectWidth","className","_classNames","popupClassName","style","width","suffixIcon","_RedoOutlined","spin","onClick","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-selector-wrapper/model.ts","@flatbiz/antd/src/tree-selector-wrapper/utils.ts","@flatbiz/antd/src/tree-selector-wrapper/selector.tsx"],"sourcesContent":["import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject, TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeSelectProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeSelectorList: TSetDefaultDefined<TreeSelectProps['treeData'], []>;\n treeSelectorTiledMap: TPlainObject;\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setSelectBoxList: {\n treeSelectorList: ModelState['treeSelectorList'];\n treeSelectorTiledMap: TPlainObject;\n };\n resetSelectBoxList: void;\n changeRequestStatus: TRequestStatus;\n};\n\nconst defaultState: ModelState = {\n treeSelectorList: [],\n treeSelectorTiledMap: {},\n queryIsEmpty: false,\n};\n\nconst TreeSelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.treeSelectorList = params.treeSelectorList || [];\n state.treeSelectorTiledMap = params.treeSelectorTiledMap || {};\n state.requestStatus = 'request-success';\n };\n },\n resetSelectBoxList: () => {\n return (state) => {\n state.treeSelectorList = [];\n state.treeSelectorTiledMap = {};\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeSelectorWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeSelectorWrapperModel('key值').useStore();\n * ```\n */\nexport const treeSelectorWrapperModel = (key: string) => {\n if (!treeSelectorWrapperModels[key]) {\n treeSelectorWrapperModels[key] = Model(TreeSelectorWrapperModel);\n }\n return treeSelectorWrapperModels[key];\n};\n","export const getExpandedKeysByValue = (value: string | number, treeSelectorTiledMap) => {\n const tempList: Array<string | number> = [];\n let parentNode = treeSelectorTiledMap[value];\n while (parentNode) {\n const pId = parentNode.pId;\n parentNode = treeSelectorTiledMap[pId];\n if (parentNode) {\n tempList.push(pId);\n }\n }\n return tempList;\n};\n\nexport const getExpandedKeysByValues = (values: Array<string | number>, treeSelectorTiledMap) => {\n if (values.length === 0) return [];\n const expandedKeys: Array<string | number> = [];\n values.forEach((value) => {\n const targetList = getExpandedKeysByValue(value, treeSelectorTiledMap);\n expandedKeys.push(...targetList);\n });\n return Array.from(new Set(expandedKeys));\n};\n","import { CaretDownFilled, RedoOutlined } from '@ant-design/icons';\nimport { isArray, isObject } from '@dimjs/lang';\nimport { classNames, extend, get } from '@dimjs/utils';\nimport {\n getUuid,\n isNotEmptyArray,\n isUndefinedOrNull,\n toArray,\n treeToArray,\n treeToTiledMap,\n type TAny,\n type TPlainObject,\n} from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { usePrevious } from 'ahooks';\nimport { Button, TreeSelect, type TreeSelectProps } from 'antd';\nimport { dequal } from 'dequal';\nimport { useMemo, useRef, useState, type DependencyList } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { RequestStatus, type TRequestStatusProps } from '../request-status';\nimport { treeSelectorWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeysByValues } from './utils';\n\ntype TreeSelectorWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeSelectorServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeSelectorWrapperProps = Omit<\n TreeSelectProps,\n | 'treeExpandedKeys'\n | 'treeData'\n | 'loading'\n | 'onTreeExpand'\n | 'onChange'\n | 'value'\n | 'fieldNames'\n | 'defaultValue'\n | 'treeDataSimpleMode'\n | 'onSearch'\n> & {\n /**\n * 设置请求唯一值\n * ```\n * 1. 设置后,如果请求入参不变,不会重复请求接口,直接使用上次缓存数据\n * ```\n */\n modelKey?: string;\n fieldNames?: {\n /**\n * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 2. 配置 serviceConfig.onRequestResultAdapter 后此配置失效\n */\n list?: string;\n label?: string;\n value?: string;\n children?: string;\n disabled?: string;\n };\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`treeSelectorList`后无效果\n */\n serviceConfig?: TreeSelectorServiceConfig;\n /**\n * 当设置treeSelectorList后,serviceConfig 将失效\n */\n treeSelectorList?: TreeSelectProps['treeData'];\n /**\n * treeSelectorList发生变更时触发\n */\n onTreeSelectorListChange?: (treeSelectorList?: TreeSelectProps['treeData']) => void;\n /**\n * 通过服务获取数据异常回调,当设置`treeSelectorList`后无效果\n */\n onTreeSelectorRequestError?: (error: Error) => void;\n /**\n * 添加全部选项\n * ```\n * 1. showAllOption = true,添加默认全部选项(value值为空字符串)\n * 2. 可自定义全部选项,例如:{ label: '全部', value: 'all' }\n * 3. 自定义字段会通过fieldNames转换后使用\n * 4. 多选操作时,最好不要设置全部选项\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /**\n * 1. 当 treeCheckable = true && treeCheckStrictly = true,如果选择的数据中含有父节点,selectedValue、selectedList返回数据包含父节点\n * 2. 当 treeCheckable = true && treeCheckStrictly = false,selectedValue、selectedList返回的数据不包含父节点\n * 3. 当 treeCheckable = false,节点选择没有级联关系,selectedValue、selectedList返回的数据就是实际选择\n * 4. selectAllDataList 返回的数据都包含父节点\n * 5. 使用 onTreeItemAdapter 拼接label数据后,选中回填数据也是拼接后的\n * 6. triggerInfo 当前操作节点数据\n */\n onChange?: (\n selectedValue?: TreeSelectorWrapperValue,\n selectedData?: TPlainObject[] | TPlainObject,\n triggerInfo?: TPlainObject,\n ) => void;\n /**\n * tree item 数据适配器,返回的数据会通过fieldNames配置取数据\n * ```\n * 1. 可用于设置disabled状态\n * onTreeItemDataAdapter: (dataItem) => {\n * if(dataItem.xx === xx){\n * dataItem['disabled] = true;\n * }\n * return dataItem;\n * }\n * 2. 可设置label数据显示\n * ```\n */\n onTreeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n // icon 无法实现、treeIcon不起作用4.20.0\n // showIcon?: boolean;\n // icon?: (data: TPlainObject) => ReactElement;\n /** 自定义异常提示文案 */\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n /**\n * value格式\n *```\n * 1. string 、number\n * 2. Array<string | number>\n * 3. lableInValue = true,根据labelInValueFieldNames配置格式\n * 4. lableInValue = true,Array<labelInValueFieldNames配置>\n * ```\n */\n value?: TreeSelectorWrapperValue;\n\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n labelInValue?: boolean;\n /**\n * @deprecated 已弃用\n * ```\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * treeCheckStrictly = true模式下有效,点击父节点是否选中所有子节点,默认值:true\n */\n selectedParentCheckedAllChildrenList?: boolean;\n /** 有唯一跟节点时,初始化是否展开,默认值:false */\n initRootExpand?: boolean;\n\n /**\n * 在第一次渲染value时,主动执行一次onChange\n * ```\n * 1. 设置labelInValue = true 时有效\n * 2. 不考虑子父节点的关系\n * ```\n */\n executeOnChangeInRenderFirstValue?: boolean;\n};\n\n/**\n * 树选择器包装组件,由于过度封装,部分antd TreeSelect原始功能不支持,不满足情况的请使用antd TreeSelect实现\n * ```\n * 1. 当设置treeSelectorList属性后,serviceConfig、onTreeSelectorListChange将失效\n * 2. 父节点默认不返回,需要返回请设置showCheckedStrategy\n * ```\n */\nexport const TreeSelectorWrapper = (props: TreeSelectorWrapperProps) => {\n const {\n serviceConfig,\n effectDependencyList,\n onTreeSelectorListChange,\n onTreeSelectorRequestError,\n treeSelectorList,\n requestMessageConfig,\n modelKey,\n value,\n labelInValue: _labelInValue,\n labelInValueFieldNames,\n onTreeItemDataAdapter,\n selectedParentCheckedAllChildrenList = true,\n fieldNames,\n onChange,\n treeDefaultExpandAll,\n showAllOption,\n initRootExpand,\n treeDefaultExpandedKeys,\n executeOnChangeInRenderFirstValue,\n ...otherProps\n } = props;\n /**\n * 不能使用key、defaultValue模式\n * 1. 勾选的和回填选中不相同情况,勾选后会渲染defaultValue模式后,弹框被关闭,操作体验存在问题\n */\n const hasTreeSelectorList = Object.prototype.hasOwnProperty.call(props, 'treeSelectorList');\n\n const modelKeyInner = useMemo(() => {\n return modelKey || getUuid();\n }, [modelKey]);\n\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeSelectorWrapperModel(modelKeyInner).useStore();\n const requestPreKey = `request-progress-${modelKeyInner}`;\n const isMultiple = otherProps.treeCheckable || otherProps.multiple;\n const responseFirstRef = useRef(true);\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n const labelInValue = useMemo(() => {\n if (otherProps.treeCheckStrictly) return true;\n return _labelInValue;\n }, [_labelInValue, otherProps.treeCheckStrictly]);\n\n const fieldNamesMerge = useMemo(() => {\n return {\n label: 'label',\n value: 'value',\n children: 'children',\n disabled: 'disabled',\n ...fieldNames,\n };\n }, [fieldNames]);\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n\n const allOptionConfig = useMemo(() => {\n if (showAllOption) {\n const isTrue = showAllOption === true;\n return {\n label: isTrue ? '全部' : showAllOption.label,\n value: isTrue ? '' : showAllOption.value,\n };\n }\n return null;\n }, [showAllOption]);\n\n const [searchValue, setSearchValue] = useState<string>();\n\n const propsPureValue = fbaHooks.useMemoCustom(() => {\n return toArray<TAny>(value).map((item) => {\n if (isObject(item)) {\n return (labelInValue ? item[labelInValueFieldNamesMerge.value] : item[fieldNamesMerge.value]) as\n | string\n | number;\n }\n return item as string | number;\n });\n }, [fieldNamesMerge.value, labelInValue, labelInValueFieldNamesMerge.value, props.value]);\n\n const prevPropsPureValue = usePrevious(propsPureValue);\n\n fbaHooks.useEffectCustom(() => {\n if (state.treeSelectorList.length > 0) {\n if (responseFirstRef.current && executeOnChangeInRenderFirstValue && labelInValue) {\n const dataList: TPlainObject[] = [];\n const originalList: TPlainObject[] = [];\n propsPureValue.forEach((item) => {\n const target = state.treeSelectorTiledMap[item];\n if (target) {\n originalList.push(target);\n dataList.push({\n [labelInValueFieldNamesMerge.label]: target[fieldNamesMerge.label],\n [labelInValueFieldNamesMerge.value]: target[fieldNamesMerge.value],\n });\n }\n });\n if (isMultiple) {\n props.onChange?.(dataList ? dataList : undefined, originalList);\n } else {\n props.onChange?.(dataList ? dataList[0] : undefined, originalList[0]);\n }\n }\n let treeExpandedKeys: Array<string | number> = [];\n if (responseFirstRef.current) {\n responseFirstRef.current = false;\n if (treeDefaultExpandedKeys) {\n treeExpandedKeys = treeDefaultExpandedKeys as Array<string | number>;\n } else if (treeDefaultExpandAll) {\n const allValues = Object.keys(state.treeSelectorTiledMap).map(\n (item) => state.treeSelectorTiledMap[item]?.[fieldNamesMerge.value] as string | number,\n );\n treeExpandedKeys = allValues;\n } else if (initRootExpand && state.treeSelectorList.length === 1) {\n treeExpandedKeys = [state.treeSelectorList[0][fieldNamesMerge.value]];\n }\n setTreeExpandedKeys(treeExpandedKeys);\n }\n // else {\n // responseFirstRef.current = false;\n // if (!searchValue) {\n // const expandedKeys = getExpandedKeysByValues(\n // propsPureValue,\n // state.treeSelectorTiledMap\n // );\n // setTreeExpandedKeys(expandedKeys);\n // }\n // }\n }\n }, [propsPureValue, state.treeSelectorList]);\n\n fbaHooks.useEffectCustom(() => {\n if (!responseFirstRef.current && propsPureValue.length > 0) {\n if (\n state.treeSelectorList.length > 0 &&\n JSON.stringify(propsPureValue) !== JSON.stringify(prevPropsPureValue)\n ) {\n if (!searchValue) {\n const expandedKeys = getExpandedKeysByValues(propsPureValue, state.treeSelectorTiledMap);\n setTreeExpandedKeys(expandedKeys);\n }\n }\n }\n }, [propsPureValue, state.treeSelectorList]);\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceResponseHandle = (respData) => {\n let result = respData;\n if (newServiceConfig.onRequestResultAdapter) {\n result = newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n } else if (fieldNamesMerge.list) {\n result = get(respData, fieldNamesMerge.list);\n }\n if (result && !isArray(result)) {\n console.warn('待渲染数据为非数组结构', result);\n return [];\n }\n return result || [];\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys || [];\n const params = extend({}, newServiceConfig.params);\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n void actions.changeRequestStatus('no-dependencies-params');\n console.warn(`TreeSelectorWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-progress');\n const _respData = await newServiceConfig.onRequest?.(params);\n const respData = serviceResponseHandle(_respData) as TreeSelectProps['treeData'];\n setLoading(false);\n window[requestPreKey] = false;\n onChangeSelectorList(respData || []);\n } catch (error: TAny) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n onTreeSelectorRequestError?.(error);\n }\n });\n\n hooks.useCustomCompareEffect(\n () => {\n if (hasTreeSelectorList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (newEffectDependencyList.length) {\n // 内部主动清楚数据,被依赖的数据发生变更时,依赖组件数据清空\n onChangeSelectorList([]);\n void startDataSourceRequest();\n return;\n }\n const allState = treeSelectorWrapperModel(modelKeyInner).getState();\n if (allState.requestStatus === 'request-success') {\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n return;\n }\n },\n newEffectDependencyList,\n dequal,\n );\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeSelectorList.length === 0) {\n void actions.setSelectBoxList({\n treeSelectorList: [],\n treeSelectorTiledMap: {},\n });\n onTreeSelectorListChange?.([]);\n return;\n }\n // 全部选项\n const tempItem = allOptionConfig\n ? {\n [fieldNamesMerge.label]: allOptionConfig.label,\n [fieldNamesMerge.value]: allOptionConfig.value,\n }\n : undefined;\n const newdataList = showAllOption ? [tempItem, ...dataList] : dataList;\n void actions.setSelectBoxList({\n treeSelectorList: newdataList,\n treeSelectorTiledMap: treeToTiledMap(\n newdataList,\n {\n value: fieldNamesMerge.value,\n children: fieldNamesMerge.children,\n },\n 'pId',\n ),\n });\n onTreeSelectorListChange?.(dataList);\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasTreeSelectorList) {\n onChangeSelectorList(treeSelectorList || []);\n }\n }, [treeSelectorList]);\n\n const onTreeExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n /**\n * 根据treeCheckable、treeCheckStrictly、showCheckedStrategy等设置情况,判断返回数据是否包含父节点\n * 1. 当 treeCheckable = true,changeValue 数据格式为 { label,value }[]\n */\n const onInnerChange = hooks.useCallbackRef((changeValue: TAny, _data, triggerInfo: TPlainObject) => {\n let resultValueList = toArray<TAny>(changeValue);\n if (otherProps.treeCheckStrictly) {\n if (selectedParentCheckedAllChildrenList && triggerInfo.checked) {\n const target = state.treeSelectorTiledMap[triggerInfo?.triggerValue];\n if (isNotEmptyArray(target[fieldNamesMerge.children])) {\n resultValueList = treeToArray([target], fieldNamesMerge.children).map((item) => {\n return item[fieldNamesMerge.value];\n });\n } else {\n resultValueList = changeValue?.map((item) => item.value);\n }\n } else {\n resultValueList = changeValue?.map((item) => item.value);\n }\n }\n if (labelInValue) {\n const resultItemList = resultValueList.map((item) => {\n const target = state.treeSelectorTiledMap[item];\n return {\n [labelInValueFieldNamesMerge.label]: target[fieldNamesMerge.label],\n [labelInValueFieldNamesMerge.value]: target[fieldNamesMerge.value],\n };\n });\n if (isMultiple) {\n onChange?.(resultItemList, resultItemList, triggerInfo);\n } else {\n onChange?.(resultItemList[0], resultItemList[0], triggerInfo);\n }\n } else {\n const resultItemList = resultValueList.map((item) => {\n return state.treeSelectorTiledMap[item];\n });\n if (isMultiple) {\n onChange?.(resultValueList, resultItemList, triggerInfo);\n } else {\n onChange?.(resultValueList[0], resultItemList[0], triggerInfo);\n }\n }\n });\n\n const mapTree = hooks.useCallbackRef((data) => {\n if (!data) return null;\n return data.map((item) => {\n const itemAdapterData = onTreeItemDataAdapter?.({ ...item }) || item;\n const children = itemAdapterData[fieldNamesMerge.children];\n const value = itemAdapterData[fieldNamesMerge.value];\n const label = itemAdapterData[fieldNamesMerge.label];\n const disabled = itemAdapterData[fieldNamesMerge.disabled]\n ? itemAdapterData[fieldNamesMerge.disabled]\n : itemAdapterData.disabled;\n return (\n <TreeSelect.TreeNode\n {...itemAdapterData}\n disabled={disabled}\n value={value}\n title={label}\n key={`${value}`}\n >\n {children && children.length > 0 && mapTree(children)}\n </TreeSelect.TreeNode>\n );\n });\n });\n\n const onSearch = (searchValue?: string) => {\n setSearchValue(searchValue);\n let targetKeyList: Array<string | number> = [];\n if (!searchValue) {\n setSearchValue(undefined);\n targetKeyList = propsPureValue;\n } else {\n Object.keys(state.treeSelectorTiledMap).forEach((item) => {\n const target = state.treeSelectorTiledMap[item];\n const label = target?.[fieldNamesMerge.label] as string;\n if (label?.includes(searchValue)) {\n targetKeyList.push(target[fieldNamesMerge.value]);\n }\n });\n }\n\n const expandedKeysMerge = getExpandedKeysByValues(targetKeyList, state.treeSelectorTiledMap);\n setTreeExpandedKeys(expandedKeysMerge);\n };\n\n const treeValue = isMultiple ? propsPureValue : propsPureValue[0];\n\n /**\n * 1. 使用 TreeNode 渲染节点,不能重写 fieldNames 配置\n * 2. 使用 TreeNode 是为了实现 TreeNode ICON\n */\n return (\n <TreeSelect\n searchValue={searchValue}\n dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}\n showSearch={true}\n treeLine={{ showLeafIcon: false }}\n treeNodeFilterProp=\"title\"\n switcherIcon={<CaretDownFilled />}\n popupMatchSelectWidth={false}\n {...otherProps}\n className={classNames('v-tree-select-wrapper', otherProps.className)}\n popupClassName={classNames('v-tree-select-wrapper-dropdown', otherProps.popupClassName)}\n onChange={onInnerChange}\n treeExpandedKeys={treeExpandedKeys}\n value={treeValue}\n onSearch={onSearch}\n loading={loading}\n onTreeExpand={onTreeExpand}\n style={{ width: '100%', ...otherProps.style }}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n notFoundContent={\n <RequestStatus\n status={state.requestStatus}\n messageConfig={requestMessageConfig}\n loading={loading}\n errorButton={\n <Button type=\"primary\" onClick={onAgainRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n >\n {mapTree(state.treeSelectorList)}\n </TreeSelect>\n );\n};\n"],"names":["defaultState","treeSelectorList","treeSelectorTiledMap","queryIsEmpty","TreeSelectorWrapperModel","actions","setSelectBoxList","params","state","requestStatus","resetSelectBoxList","changeRequestStatus","treeSelectorWrapperModels","treeSelectorWrapperModel","key","Model","getExpandedKeysByValue","value","tempList","parentNode","pId","push","getExpandedKeysByValues","values","length","expandedKeys","forEach","targetList","apply","Array","from","Set","TreeSelectorWrapper","props","serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","requestMessageConfig","modelKey","_labelInValue","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","_props$selectedParent","selectedParentCheckedAllChildrenList","fieldNames","onChange","treeDefaultExpandAll","showAllOption","initRootExpand","treeDefaultExpandedKeys","executeOnChangeInRenderFirstValue","otherProps","_objectWithoutPropertiesLoose","_excluded","hasTreeSelectorList","Object","prototype","hasOwnProperty","call","modelKeyInner","useMemo","getUuid","newServiceConfig","newEffectDependencyList","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeSelectorWrapperM","useStore","requestPreKey","isMultiple","treeCheckable","multiple","responseFirstRef","useRef","treeCheckStrictly","fieldNamesMerge","_extends","label","children","disabled","labelInValueFieldNamesMerge","allOptionConfig","isTrue","_useState2","searchValue","setSearchValue","propsPureValue","useMemoCustom","toArray","map","item","_isObject","prevPropsPureValue","usePrevious","useEffectCustom","current","dataList","originalList","target","_dataList$push","undefined","allValues","keys","_state$treeSelectorTi","JSON","stringify","valueIsEmpty","isUndefinedOrNull","serviceResponseHandle","respData","result","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","isEmpty","_respData","onRequest","Error","_extend","find","join","$Try_1_Post","$boundEx","$Try_1_Catch","error","window","resolve","then","$await_2","onChangeSelectorList","useCustomCompareEffect","allState","getState","dequal","_ref","tempItem","newdataList","concat","treeToTiledMap","onTreeExpand","onAgainRequest","onInnerChange","changeValue","_data","triggerInfo","resultValueList","checked","triggerValue","isNotEmptyArray","treeToArray","resultItemList","_ref2","mapTree","data","itemAdapterData","_createElement","TreeSelect","TreeNode","title","onSearch","targetKeyList","includes","expandedKeysMerge","treeValue","_jsx","dropdownStyle","maxHeight","overflow","showSearch","treeLine","showLeafIcon","treeNodeFilterProp","switcherIcon","_CaretDownFilled","popupMatchSelectWidth","className","_classNames","popupClassName","style","width","suffixIcon","_RedoOutlined","spin","onClick","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type"],"mappings":"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"}
|