@flatbiz/antd 4.2.85 → 4.2.87
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 +2 -1
- package/esm/button-operate/index.js.map +1 -1
- package/esm/button-wrapper/index.js +2 -1
- package/esm/button-wrapper/index.js.map +1 -1
- package/esm/card-wrapper/index.css +1 -0
- package/esm/card-wrapper/index.js +5 -0
- package/esm/card-wrapper/index.js.map +1 -0
- package/esm/config-provider-wrapper/index.js +2 -1
- package/esm/config-provider-wrapper/index.js.map +1 -1
- package/esm/create-drawer-wrapper-model/index.js.map +1 -1
- package/esm/create-modal-wrapper-model/index.js.map +1 -1
- package/esm/dialog-alert/index.js +2 -1
- package/esm/dialog-alert/index.js.map +1 -1
- package/esm/dialog-confirm/index.js +2 -1
- package/esm/dialog-confirm/index.js.map +1 -1
- package/esm/dialog-drawer/index.js +2 -1
- package/esm/dialog-drawer/index.js.map +1 -1
- package/esm/dialog-drawer-content/index.js +2 -1
- package/esm/dialog-drawer-content/index.js.map +1 -1
- package/esm/dialog-loading/index.js.map +1 -1
- package/esm/dialog-modal/index.js +2 -1
- package/esm/dialog-modal/index.js.map +1 -1
- package/esm/drawer-wrapper/index.js.map +1 -1
- package/esm/dropdown-menu-wrapper/index.js +2 -1
- package/esm/dropdown-menu-wrapper/index.js.map +1 -1
- package/esm/easy-table/index.js +2 -1
- package/esm/easy-table/index.js.map +1 -1
- package/esm/editable-table/index.js +10 -1
- package/esm/editable-table/index.js.map +1 -1
- package/esm/fba-app/index.css +1 -1
- package/esm/fba-app/index.js +3 -1
- package/esm/fba-app/index.js.map +1 -1
- package/esm/fba-hooks/index.js +1 -1
- package/esm/fba-hooks/index.js.map +1 -1
- package/esm/flex-layout/index.js.map +1 -1
- package/esm/index-ac189a77.js +3 -0
- package/esm/index-ac189a77.js.map +1 -0
- package/esm/index.js +6 -5
- package/esm/label-value-layout/index.css +1 -1
- package/esm/label-value-layout/index.js +1 -1
- package/esm/label-value-layout/index.js.map +1 -1
- package/esm/local-loading/index.js.map +1 -1
- package/esm/pre-defined-class-name/index.css +1 -1
- package/esm/rich-text-editor/index.js +1 -1
- package/esm/rich-text-editor/index.js.map +1 -1
- package/esm/rule-describe/index.js +1 -1
- package/esm/rule-describe/index.js.map +1 -1
- package/esm/selector-wrapper/index.js +1 -1
- package/esm/selector-wrapper/index.js.map +1 -1
- package/esm/simple-layout/index.css +1 -1
- package/esm/simple-layout/index.js.map +1 -1
- package/esm/table-cell-render/index.js +2 -1
- package/esm/table-cell-render/index.js.map +1 -1
- package/esm/tag-list-select/index.js +1 -1
- package/esm/tag-list-select/index.js.map +1 -1
- package/esm/text-css-ellipsis/index.css +1 -1
- package/esm/text-css-ellipsis/index.js +1 -1
- package/esm/text-css-ellipsis/index.js.map +1 -1
- package/esm/text-overflow-render/index.js +2 -1
- package/esm/text-overflow-render/index.js.map +1 -1
- package/esm/tips-title/index.css +1 -1
- package/esm/tree-selector-wrapper/index.js.map +1 -1
- package/esm/tree-wrapper/index.css +1 -1
- package/esm/tree-wrapper/index.js +2 -1
- package/esm/tree-wrapper/index.js.map +1 -1
- package/esm/types/index.js.map +1 -1
- package/index.d.ts +208 -121
- package/package.json +4 -3
|
@@ -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, TPlainObject } from '@flatbiz/utils';\nimport pubSub from 'pubsub-js';\nimport { useMemo, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { TRequestStatus } from '../request-status';\nimport { SelectorServiceConfig, 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 if (serviceConfig?.onRequestResultAdapter) {\n return serviceConfig?.onRequestResultAdapter(respData as unknown as TPlainObject);\n }\n if (fieldNames?.list) {\n const result = get(respData, fieldNames?.list);\n return isArray(result) ? result : [];\n }\n return respData;\n };\n\n const getWindowCacheData = () => {\n return window['__selector_wrapper_']?.[cacheKey];\n };\n const getWindowCacheValue = () => {\n return getWindowCacheData()?.[serviceRequestCahceKey];\n };\n const getWindowCacheStatus = () => {\n return getWindowCacheData()?.[serviceRequestCahceStatusKey];\n };\n\n const setWindowCache = (key, value) => {\n if (!window['__selector_wrapper_']) {\n window['__selector_wrapper_'] = {};\n }\n if (!window['__selector_wrapper_'][cacheKey]) {\n window['__selector_wrapper_'][cacheKey] = {};\n }\n window['__selector_wrapper_'][cacheKey][key] = value;\n };\n\n const onChangeRequestStatus = (status: TRequestStatus) => {\n setWindowCache(serviceRequestCahceStatusKey, status);\n setRequestStatus(status);\n };\n\n const onRequest = async () => {\n try {\n onChangeRequestStatus('request-progress');\n\n const respData = await serviceConfig?.onRequest?.(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 }, [serviceRequestParams, outerSelectorList, refreshKey]);\n\n const onRefreshRequest = () => {\n setRefreshKey(Date.now());\n };\n\n return {\n requestStatus,\n stateSelectorList,\n serviceRequestParamsStringify,\n onRefreshRequest,\n };\n};\n","import { isObject } from '@dimjs/lang';\nimport { toArray } from '@flatbiz/utils';\n\n/**\n * value存在两种格式\n * 1. string | number;\n * 2. labelInValue 格式\n * @param data\n * @param labelInValueFieldNames\n * @returns\n */\nexport const getVauleList = (data, valueKey: string | number) => {\n let valueList = toArray<string | number>(data);\n valueList = valueList.map((item) => {\n if (isObject(item)) return item[valueKey];\n return item;\n });\n return valueList;\n};\n","import { arrayFind, TAny, toArray, TPlainObject, valueIsEqual } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Select } from 'antd';\nimport { useMemo, useRef } from 'react';\nimport './style.less';\n\nimport { RedoOutlined } from '@ant-design/icons';\nimport { isString } from '@dimjs/lang';\nimport { RequestStatus } from '../request-status';\nimport { SelectorWrapperProps } from './types';\nimport { useRequest } from './use-request';\nimport { getVauleList } from './utils';\nexport * from './types';\n/**\n * 选择器包装组件\n * ```\n * 1. 不支持搜索 + 调用服务模式\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 = { label: 'label', value: 'value', disabled: 'disabled', ...fieldNames };\n\n const {\n label: optionsItemLabelField,\n value: optionsItemValueField,\n disabled: optionsItemDisabledField,\n } = mergeFieldNames;\n\n const allOptionConfig = useMemo(() => {\n if (!showAllOption) return null;\n const isTrue = showAllOption === true;\n return {\n [optionsItemLabelField]: isTrue ? '全部' : showAllOption.label,\n [optionsItemValueField]: isTrue ? '' : showAllOption.value,\n };\n }, [optionsItemLabelField, optionsItemValueField, showAllOption]);\n\n const isMultiple = valueIsEqual(props.mode, ['multiple']);\n\n const { requestStatus, stateSelectorList, onRefreshRequest } = useRequest({\n fieldNames: mergeFieldNames,\n cacheKey: modelKey,\n hasOuterSelectorList,\n onChange: props.onChange,\n serviceConfig,\n outerSelectorList,\n onRespDataChange: (dataList) => {\n if (firstRenderSelectList.current) {\n onSelectorListChange?.(dataList || []);\n firstRenderSelectList.current = false;\n }\n onSelectorListAllChange?.(dataList || []);\n },\n onSelectorRequestError,\n useCache: useCache === undefined ? true : useCache,\n });\n\n const onRespChange = hooks.useCallbackRef((selectedList: TPlainObject[]) => {\n if (labelInValue) {\n if (isMultiple) {\n props.onChange?.(selectedList, selectedList);\n } else {\n props.onChange?.(selectedList[0], selectedList);\n }\n } else {\n const valueList = selectedList.map((item) => item[optionsItemValueField]);\n if (isMultiple) {\n props.onChange?.(valueList, selectedList);\n } else {\n props.onChange?.(valueList[0], selectedList[0]);\n }\n }\n });\n\n const onInnerChange = hooks.useCallbackRef((_value, otherParams) => {\n if (!otherParams) return props.onChange?.(undefined);\n const selectedList = toArray<TAny>(otherParams);\n const targetList = [] as TPlainObject[];\n selectedList.forEach((item) => {\n if (showAllOption && allOptionConfig && item.value === allOptionConfig[optionsItemValueField]) {\n targetList.push(allOptionConfig);\n } else {\n const filterTarget = arrayFind(stateSelectorList || [], item.value, optionsItemValueField);\n if (filterTarget) {\n targetList.push(filterTarget);\n }\n }\n });\n onRespChange(targetList);\n });\n\n const selectorAllList = useMemo(() => {\n if (requestStatus !== 'request-success') return [];\n if (!stateSelectorList || stateSelectorList.length === 0) return [];\n if (!allOptionConfig) return stateSelectorList;\n return [allOptionConfig].concat(stateSelectorList);\n }, [allOptionConfig, requestStatus, stateSelectorList]);\n\n const loading = requestStatus === 'request-progress';\n\n const selectValue = useMemo(() => {\n const targetList = getVauleList(value, optionsItemValueField);\n return isMultiple ? targetList : targetList[0];\n }, [isMultiple, optionsItemValueField, value]);\n\n const filterOption = hooks.useCallbackRef((input: string, option) => {\n const children = toArray(option.children);\n let mergeString = '';\n children.forEach((item) => {\n if (isString(item)) mergeString += item;\n });\n return mergeString.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n });\n\n return (\n <Select\n showSearch={true}\n allowClear={true}\n dropdownMatchSelectWidth={false}\n filterOption={filterOption}\n {...otherProps}\n style={{ width: '100%', ...props.style }}\n value={selectValue}\n loading={loading}\n onChange={onInnerChange}\n fieldNames={undefined}\n suffixIcon={\n requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onRefreshRequest} />\n ) : (\n otherProps.suffixIcon\n )\n }\n notFoundContent={\n <RequestStatus\n status={requestStatus}\n loading={loading}\n messageConfig={{\n 'request-init': '暂无数据',\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={onRefreshRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n >\n {selectorAllList.map((item, index) => {\n const value = item[optionsItemValueField];\n const label = item[optionsItemLabelField];\n return (\n <Select.Option\n value={value}\n label={label}\n key={`${value}-${index}`}\n disabled={item[optionsItemDisabledField]}\n >\n {props.showIcon ? (\n <span className=\"v-selector-item-icon\">{props.icon?.(item, index)}</span>\n ) : null}\n {onLabelRenderAdapter ? onLabelRenderAdapter(item) : label}\n </Select.Option>\n );\n })}\n </Select>\n );\n};\n"],"names":["useRequest","options","cacheKey","serviceConfig","hasOuterSelectorList","outerSelectorList","onRespDataChange","onSelectorRequestError","onChange","useCache","fieldNames","serviceRequestParams","params","requiredParamsKeys","hasServiceRequestParams","Object","keys","length","_useState","useState","stateSelectorList","setStateSelectorList","_useState2","requestStatus","setRequestStatus","_useState3","Date","now","refreshKey","setRefreshKey","serviceRequestParamsStringify","useMemo","sortDataStringify","JSON","stringify","_json","sort","undefined","error","serviceRequestCahceKey","serviceRequestCahceStatusKey","pubSubKey","prevServiceRequestParamsStringify","fbaHooks","usePrevious","prevParams","serviceRespDataAdapter","respData","onRequestResultAdapter","list","result","_get","_isArray","getWindowCacheData","_window$__selector_wr","window","getWindowCacheValue","_getWindowCacheData","getWindowCacheStatus","_getWindowCacheData2","setWindowCache","key","value","onChangeRequestStatus","status","onRequest","Promise","$return","$error","respAdapterData","$Try_2_Catch","console","setTimeout","pubSub","publish","reject","$boundEx","resolve","then","$await_7","useEffectCustomAsync","isEmpty","_dataList","_respAdapterData","find","isUndefinedOrNull","_isDeepEqual","$Try_3_Post","$Try_3_Catch","$await_8","$If_5","call","this","dataList","subscribe","_msg","_ref","$Try_4_Post","$Try_4_Catch","$await_9","onRefreshRequest","getVauleList","data","valueKey","valueList","toArray","map","item","_isObject","SelectorWrapper","props","showAllOption","onSelectorListChange","onSelectorListAllChange","onLabelRenderAdapter","requestMessageConfig","selectorList","modelKey","labelInValue","otherProps","_objectWithoutPropertiesLoose","_excluded","firstRenderSelectList","useRef","hasOwnProperty","mergeFieldNames","_extends","label","disabled","optionsItemLabelField","optionsItemValueField","optionsItemDisabledField","allOptionConfig","isTrue","isMultiple","valueIsEqual","mode","_useRequest","current","onRespChange","_hooks","useCallbackRef","selectedList","onInnerChange","_value","otherParams","targetList","forEach","push","filterTarget","arrayFind","selectorAllList","concat","loading","selectValue","filterOption","input","option","children","mergeString","_isString","toLowerCase","indexOf","_jsx","Select","showSearch","allowClear","dropdownMatchSelectWidth","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, TPlainObject } from '@flatbiz/utils';\nimport pubSub from 'pubsub-js';\nimport { useMemo, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { TRequestStatus } from '../request-status';\nimport { SelectorServiceConfig, 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 if (serviceConfig?.onRequestResultAdapter) {\n return serviceConfig?.onRequestResultAdapter(respData as unknown as TPlainObject);\n }\n if (fieldNames?.list) {\n const result = get(respData, fieldNames?.list);\n return isArray(result) ? result : [];\n }\n return respData;\n };\n\n const getWindowCacheData = () => {\n return window['__selector_wrapper_']?.[cacheKey];\n };\n const getWindowCacheValue = () => {\n return getWindowCacheData()?.[serviceRequestCahceKey];\n };\n const getWindowCacheStatus = () => {\n return getWindowCacheData()?.[serviceRequestCahceStatusKey];\n };\n\n const setWindowCache = (key, value) => {\n if (!window['__selector_wrapper_']) {\n window['__selector_wrapper_'] = {};\n }\n if (!window['__selector_wrapper_'][cacheKey]) {\n window['__selector_wrapper_'][cacheKey] = {};\n }\n window['__selector_wrapper_'][cacheKey][key] = value;\n };\n\n const onChangeRequestStatus = (status: TRequestStatus) => {\n setWindowCache(serviceRequestCahceStatusKey, status);\n setRequestStatus(status);\n };\n\n const onRequest = async () => {\n try {\n onChangeRequestStatus('request-progress');\n\n const respData = await serviceConfig?.onRequest?.(serviceRequestParams || {});\n const respAdapterData = serviceRespDataAdapter(respData) || [];\n\n setWindowCache(serviceRequestCahceKey, respAdapterData);\n onChangeRequestStatus('request-success');\n setTimeout(() => {\n pubSub.publish(pubSubKey, {\n status: 'request-success',\n respData: respAdapterData,\n });\n });\n\n return respAdapterData;\n } catch (error) {\n console.error(error);\n onChangeRequestStatus('request-error');\n setStateSelectorList(undefined);\n setTimeout(() => {\n pubSub.publish(pubSubKey, {\n status: 'request-error',\n });\n });\n onSelectorRequestError?.(error);\n return Promise.reject();\n }\n };\n\n fbaHooks.useEffectCustomAsync(async () => {\n if (hasOuterSelectorList) {\n setRequestStatus('request-success');\n setStateSelectorList(outerSelectorList);\n onRespDataChange?.(outerSelectorList);\n return;\n }\n if (requiredParamsKeys.length > 0) {\n const isEmpty = serviceRequestParams\n ? requiredParamsKeys.find((key) => isUndefinedOrNull(serviceRequestParams[key]))\n : true;\n if (isEmpty) {\n // 当依赖项查询条件为空时,清空当前缓存数据\n setStateSelectorList([]);\n setRequestStatus('no-dependencies-params');\n /**\n * 怎么判断数据是从有到无的\n * 每一次 params 变少,只要 上一次 params 值存在,就应该清空 value 值\n */\n if (prevServiceRequestParamsStringify) {\n onChange?.(undefined);\n }\n return;\n }\n\n // 不使用缓存模式\n if (useCache === false) {\n // 判断参数是否发生变化\n if (isDeepEqual(serviceRequestParams, prevParams)) {\n return;\n }\n try {\n setRequestStatus('request-progress');\n const respData = await serviceConfig?.onRequest?.(serviceRequestParams || {});\n const respAdapterData = serviceRespDataAdapter(respData) || [];\n setRequestStatus('request-success');\n setStateSelectorList(respAdapterData);\n onRespDataChange?.(respAdapterData);\n } catch (error) {\n console.error(error);\n setRequestStatus('request-error');\n setStateSelectorList(undefined);\n onSelectorRequestError?.(error);\n }\n return;\n }\n }\n\n /**\n * 此处无法判断 调用props.onChange?.(undefined);\n * A、B、C\n * 例如:C依赖A、B,当外部只修改了一个元素,理论上应该应该清空C value 值(调用onChange(undefined)),如果此时外部直接回填A、B、C时,C无法回填成功;该场景只能在A、B的onChange事件中,清空C\n */\n // if (prevServiceRequestParamsStringify) {\n // props.onChange?.(undefined);\n // }\n\n const status = getWindowCacheStatus();\n if (status === 'request-success') {\n const dataList = getWindowCacheValue();\n setStateSelectorList(dataList);\n setRequestStatus(status);\n onRespDataChange?.(dataList);\n return;\n }\n if (status === 'request-progress') {\n setRequestStatus(status);\n pubSub.subscribe(pubSubKey, (_msg, { status, respData }) => {\n if (status === 'request-success') {\n setRequestStatus(status);\n setStateSelectorList(respData);\n onRespDataChange?.(respData);\n } else {\n setRequestStatus('request-error');\n setStateSelectorList(undefined);\n }\n });\n return;\n }\n try {\n const respAdapterData = await onRequest();\n setStateSelectorList(respAdapterData);\n setRequestStatus('request-success');\n onRespDataChange?.(respAdapterData);\n } catch (error) {\n console.error(error);\n setRequestStatus('request-error');\n setStateSelectorList(undefined);\n onSelectorRequestError?.(error);\n }\n }, [JSON.stringify(serviceRequestParams), outerSelectorList, refreshKey]);\n\n const onRefreshRequest = () => {\n setRefreshKey(Date.now());\n };\n\n return {\n requestStatus,\n stateSelectorList,\n serviceRequestParamsStringify,\n onRefreshRequest,\n };\n};\n","import { isObject } from '@dimjs/lang';\nimport { toArray } from '@flatbiz/utils';\n\n/**\n * value存在两种格式\n * 1. string | number;\n * 2. labelInValue 格式\n * @param data\n * @param labelInValueFieldNames\n * @returns\n */\nexport const getVauleList = (data, valueKey: string | number) => {\n let valueList = toArray<string | number>(data);\n valueList = valueList.map((item) => {\n if (isObject(item)) return item[valueKey];\n return item;\n });\n return valueList;\n};\n","import { arrayFind, TAny, toArray, TPlainObject, valueIsEqual } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Select } from 'antd';\nimport { useMemo, useRef } from 'react';\nimport './style.less';\n\nimport { RedoOutlined } from '@ant-design/icons';\nimport { isString } from '@dimjs/lang';\nimport { RequestStatus } from '../request-status';\nimport { SelectorWrapperProps } from './types';\nimport { useRequest } from './use-request';\nimport { getVauleList } from './utils';\nexport * from './types';\n/**\n * 选择器包装组件\n * ```\n * 1. 不支持搜索 + 调用服务模式\n * ```\n */\nexport const SelectorWrapper = (props: SelectorWrapperProps) => {\n const {\n serviceConfig,\n showAllOption,\n onSelectorListChange,\n onSelectorListAllChange,\n onSelectorRequestError,\n onLabelRenderAdapter,\n requestMessageConfig,\n selectorList: outerSelectorList,\n modelKey,\n fieldNames,\n value,\n labelInValue,\n useCache,\n ...otherProps\n } = props;\n\n const firstRenderSelectList = useRef(true);\n\n // props 是否存在 selectorList,selectorList = undefined 也算存在\n const hasOuterSelectorList = props.hasOwnProperty('selectorList');\n const mergeFieldNames = {\n label: 'label',\n value: 'value',\n disabled: 'disabled',\n ...fieldNames,\n };\n\n const {\n label: optionsItemLabelField,\n value: optionsItemValueField,\n disabled: optionsItemDisabledField,\n } = mergeFieldNames;\n\n const allOptionConfig = useMemo(() => {\n if (!showAllOption) return null;\n const isTrue = showAllOption === true;\n return {\n [optionsItemLabelField]: isTrue ? '全部' : showAllOption.label,\n [optionsItemValueField]: isTrue ? '' : showAllOption.value,\n };\n }, [optionsItemLabelField, optionsItemValueField, showAllOption]);\n\n const isMultiple = valueIsEqual(props.mode, ['multiple']);\n\n const { requestStatus, stateSelectorList, onRefreshRequest } = useRequest({\n fieldNames: mergeFieldNames,\n cacheKey: modelKey,\n hasOuterSelectorList,\n onChange: props.onChange,\n serviceConfig,\n outerSelectorList,\n onRespDataChange: (dataList) => {\n if (firstRenderSelectList.current) {\n onSelectorListChange?.(dataList || []);\n firstRenderSelectList.current = false;\n }\n onSelectorListAllChange?.(dataList || []);\n },\n onSelectorRequestError,\n useCache: useCache === undefined ? true : useCache,\n });\n\n const onRespChange = hooks.useCallbackRef((selectedList: TPlainObject[]) => {\n if (labelInValue) {\n if (isMultiple) {\n props.onChange?.(selectedList, selectedList);\n } else {\n props.onChange?.(selectedList[0], selectedList);\n }\n } else {\n const valueList = selectedList.map((item) => item[optionsItemValueField]);\n if (isMultiple) {\n props.onChange?.(valueList, selectedList);\n } else {\n props.onChange?.(valueList[0], selectedList[0]);\n }\n }\n });\n\n const onInnerChange = hooks.useCallbackRef((_value, otherParams) => {\n if (!otherParams) return props.onChange?.(undefined);\n const selectedList = toArray<TAny>(otherParams);\n const targetList = [] as TPlainObject[];\n selectedList.forEach((item) => {\n if (showAllOption && allOptionConfig && item.value === allOptionConfig[optionsItemValueField]) {\n targetList.push(allOptionConfig);\n } else {\n const filterTarget = arrayFind(stateSelectorList || [], item.value, optionsItemValueField);\n if (filterTarget) {\n targetList.push(filterTarget);\n }\n }\n });\n onRespChange(targetList);\n });\n\n const selectorAllList = useMemo(() => {\n if (requestStatus !== 'request-success') return [];\n if (!stateSelectorList || stateSelectorList.length === 0) return [];\n if (!allOptionConfig) return stateSelectorList;\n return [allOptionConfig].concat(stateSelectorList);\n }, [allOptionConfig, requestStatus, stateSelectorList]);\n\n const loading = requestStatus === 'request-progress';\n\n const selectValue = useMemo(() => {\n const targetList = getVauleList(value, optionsItemValueField);\n return isMultiple ? targetList : targetList[0];\n }, [isMultiple, optionsItemValueField, value]);\n\n const filterOption = hooks.useCallbackRef((input: string, option) => {\n const children = toArray(option.children);\n let mergeString = '';\n children.forEach((item) => {\n if (isString(item)) mergeString += item;\n });\n return mergeString.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n });\n\n return (\n <Select\n showSearch={true}\n allowClear={true}\n popupMatchSelectWidth={false}\n filterOption={filterOption}\n {...otherProps}\n style={{ width: '100%', ...props.style }}\n value={selectValue}\n loading={loading}\n onChange={onInnerChange}\n fieldNames={undefined}\n suffixIcon={\n requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onRefreshRequest} />\n ) : (\n otherProps.suffixIcon\n )\n }\n notFoundContent={\n <RequestStatus\n status={requestStatus}\n loading={loading}\n messageConfig={{\n 'request-init': '暂无数据',\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={onRefreshRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n >\n {selectorAllList.map((item, index) => {\n const value = item[optionsItemValueField];\n const label = item[optionsItemLabelField];\n return (\n <Select.Option\n value={value}\n label={label}\n key={`${value}-${index}`}\n disabled={item[optionsItemDisabledField]}\n >\n {props.showIcon ? (\n <span className=\"v-selector-item-icon\">{props.icon?.(item, index)}</span>\n ) : null}\n {onLabelRenderAdapter ? onLabelRenderAdapter(item) : label}\n </Select.Option>\n );\n })}\n </Select>\n );\n};\n"],"names":["useRequest","options","cacheKey","serviceConfig","hasOuterSelectorList","outerSelectorList","onRespDataChange","onSelectorRequestError","onChange","useCache","fieldNames","serviceRequestParams","params","requiredParamsKeys","hasServiceRequestParams","Object","keys","length","_useState","useState","stateSelectorList","setStateSelectorList","_useState2","requestStatus","setRequestStatus","_useState3","Date","now","refreshKey","setRefreshKey","serviceRequestParamsStringify","useMemo","sortDataStringify","JSON","stringify","_json","sort","undefined","error","serviceRequestCahceKey","serviceRequestCahceStatusKey","pubSubKey","prevServiceRequestParamsStringify","fbaHooks","usePrevious","prevParams","serviceRespDataAdapter","respData","onRequestResultAdapter","list","result","_get","_isArray","getWindowCacheData","_window$__selector_wr","window","getWindowCacheValue","_getWindowCacheData","getWindowCacheStatus","_getWindowCacheData2","setWindowCache","key","value","onChangeRequestStatus","status","onRequest","Promise","$return","$error","respAdapterData","$Try_2_Catch","console","setTimeout","pubSub","publish","reject","$boundEx","resolve","then","$await_7","useEffectCustomAsync","isEmpty","_dataList","_respAdapterData","find","isUndefinedOrNull","_isDeepEqual","$Try_3_Post","$Try_3_Catch","$await_8","$If_5","call","this","dataList","subscribe","_msg","_ref","$Try_4_Post","$Try_4_Catch","$await_9","onRefreshRequest","getVauleList","data","valueKey","valueList","toArray","map","item","_isObject","SelectorWrapper","props","showAllOption","onSelectorListChange","onSelectorListAllChange","onLabelRenderAdapter","requestMessageConfig","selectorList","modelKey","labelInValue","otherProps","_objectWithoutPropertiesLoose","_excluded","firstRenderSelectList","useRef","hasOwnProperty","mergeFieldNames","_extends","label","disabled","optionsItemLabelField","optionsItemValueField","optionsItemDisabledField","allOptionConfig","isTrue","isMultiple","valueIsEqual","mode","_useRequest","current","onRespChange","_hooks","useCallbackRef","selectedList","onInnerChange","_value","otherParams","targetList","forEach","push","filterTarget","arrayFind","selectorAllList","concat","loading","selectValue","filterOption","input","option","children","mergeString","_isString","toLowerCase","indexOf","_jsx","Select","showSearch","allowClear","popupMatchSelectWidth","style","width","suffixIcon","_RedoOutlined","spin","onClick","notFoundContent","RequestStatus","messageConfig","errorButton","Button","type","index","_jsxs","Option","showIcon","className","icon"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.simple-layout{background-color:#fff;border-radius:6px;padding:15px}.simple-layout>.simple-layout-content>.ant-form{margin-bottom:-15px}.simple-layout>.simple-layout-content>.ant-form .ant-form-item{margin:0 0 15px}.simple-layout>.simple-layout-content>.ant-form .ant-form-item-label{width:82px}.simple-layout>.simple-layout-content>.ant-form .ant-form-item-label.ant-col-auto{width:auto}.simple-layout .ant-table-thead>tr>th{background:#f6f6f6}.simple-layout .ant-descriptions-item{padding-bottom:10px}.simple-layout .ant-descriptions-item-label{color:#999}.simple-layout .ant-table-pagination.ant-pagination{margin:16px 0 0}.simple-layout .simple-layout-content{position:relative}.simple-layout .simple-layout-content>.ant-row:last-child{margin-bottom:0}.simple-layout .simple-layout-content>.ant-row:last-child .ant-upload-list{padding-bottom:15px}.simple-layout .simple-layout-content>.ant-descriptions:not(.ant-descriptions-bordered):last-child{margin-bottom:-10px}.simple-layout .v-tree-wrapper-tree{padding:5px 0 0}.simple-layout-title-sign{padding-left:10px;position:relative}.simple-layout-title-sign:before{background:var(--simple-layout-colorPrimary);border-radius:3px;content:"";height:14px;left:0;margin-top:-7px;position:absolute;top:50%;width:3px}.simple-layout-title{color:rgba(0,0,0,.85);font-size:16px;font-weight:500;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.simple-layout-title+.simple-layout-content,.simple-layout-title-sign+.simple-layout-content{margin-top:10px}.simple-layout-desc{color:rgba(0,0,0,.55);font-size:12px}.simple-layout+.simple-layout,.simple-layout-desc+.simple-layout-content{margin-top:10px}.simple-layout+.ant-divider{margin:0 0 15px}.simple-layout-formlabel-left .ant-form-item-label{text-align:left}.simple-layout-tight.simple-layout{margin-top:0;padding:0}.simple-layout-title-extra-space{justify-content:space-between;width:100%}.simple-layout-title-fixed{display:flex;flex-direction:column;height:100%;overflow:hidden}.simple-layout-title-fixed>.simple-layout-content{flex:1;overflow-y:auto}.simple-layout-small.simple-layout{padding:8px 15px}.simple-layout-small.simple-layout>.simple-layout-content>.ant-form{margin-bottom:-8px}.simple-layout-small.simple-layout>.simple-layout-content>.ant-form .ant-form-item{margin:0 0 8px}
|
|
1
|
+
.simple-layout{background-color:#fff;border-radius:6px;padding:15px}.simple-layout>.simple-layout-content>.ant-form[class^="form-formitem-gap-*"]{margin-bottom:-15px}.simple-layout>.simple-layout-content>.ant-form[class^="form-formitem-gap-*"] .ant-form-item{margin:0 0 15px}.simple-layout>.simple-layout-content>.ant-form[class^="form-formitem-gap-*"] .ant-form-item-label{width:82px}.simple-layout>.simple-layout-content>.ant-form[class^="form-formitem-gap-*"] .ant-form-item-label.ant-col-auto{width:auto}.simple-layout .ant-table-thead>tr>th{background:#f6f6f6}.simple-layout .ant-descriptions-item{padding-bottom:10px}.simple-layout .ant-descriptions-item-label{color:#999}.simple-layout .ant-table-pagination.ant-pagination{margin:16px 0 0}.simple-layout .simple-layout-content{position:relative}.simple-layout .simple-layout-content>.ant-row:last-child{margin-bottom:0}.simple-layout .simple-layout-content>.ant-row:last-child .ant-upload-list{padding-bottom:15px}.simple-layout .simple-layout-content>.ant-descriptions:not(.ant-descriptions-bordered):last-child{margin-bottom:-10px}.simple-layout .v-tree-wrapper-tree{padding:5px 0 0}.simple-layout-title-sign{padding-left:10px;position:relative}.simple-layout-title-sign:before{background:var(--simple-layout-colorPrimary);border-radius:3px;content:"";height:14px;left:0;margin-top:-7px;position:absolute;top:50%;width:3px}.simple-layout-title{color:rgba(0,0,0,.85);font-size:16px;font-weight:500;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.simple-layout-title+.simple-layout-content,.simple-layout-title-sign+.simple-layout-content{margin-top:10px}.simple-layout-desc{color:rgba(0,0,0,.55);font-size:12px}.simple-layout+.simple-layout,.simple-layout-desc+.simple-layout-content{margin-top:10px}.simple-layout+.ant-divider{margin:0 0 15px}.simple-layout-formlabel-left .ant-form-item-label{text-align:left}.simple-layout-tight.simple-layout{margin-top:0;padding:0}.simple-layout-title-extra-space{justify-content:space-between;width:100%}.simple-layout-title-fixed{display:flex;flex-direction:column;height:100%;overflow:hidden}.simple-layout-title-fixed>.simple-layout-content{flex:1;overflow-y:auto}.simple-layout-small.simple-layout{padding:8px 15px}.simple-layout-small.simple-layout>.simple-layout-content>.ant-form[class^="form-formitem-gap-*"]{margin-bottom:-8px}.simple-layout-small.simple-layout>.simple-layout-content>.ant-form[class^="form-formitem-gap-*"] .ant-form-item{margin:0 0 8px}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/simple-layout/simple-layout.tsx"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport { Space } from 'antd';\nimport { CSSProperties, Fragment, ReactElement, ReactNode } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type SimpleLayoutProps = {\n className?: string;\n style?: CSSProperties;\n title?: string | ReactElement;\n desc?: string | ReactElement | string[] | ReactElement[];\n formLabelAlign?: 'left' | 'right';\n /**\n * layoutType 布局类型\n * ```\n * 1. layer:分层布局\n * 2. tight:紧凑布局(没有外边距)\n * ```\n */\n layoutType?: 'layer' | 'tight';\n titleLeftLine?: boolean;\n titleStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n /** 优先级大于 style padding */\n padding?: CSSProperties['padding'];\n /** 优先级大于 style width */\n width?: CSSProperties['width'];\n children?: ReactNode | ReactNode[];\n titleExtra?: string | ReactElement;\n hidden?: boolean;\n titleFixed?: boolean;\n /**\n * 间距尺寸\n * 1. default = 15\n * 2. small = 8\n */\n size?: 'default' | 'small';\n onClick?: (event) => void;\n};\n\n/**\n * 简单布局\n * @param props\n * @returns\n * ```\n * 1. layoutType 布局类型\n * layer:分层布局\n * tight:紧凑布局(没有外边距)\n * ```\n */\nexport const SimpleLayout = (props: SimpleLayoutProps) => {\n const labelAlign = props.formLabelAlign || 'right';\n const className = classNames(\n 'simple-layout',\n {\n 'simple-layout-tight': props.layoutType === 'tight',\n 'simple-layout-formlabel-left': labelAlign === 'left',\n 'simple-layout-title-fixed': props.titleFixed,\n 'simple-layout-small': props.size === 'small',\n },\n props.className,\n );\n\n const theme = fbaHooks.useThemeToken();\n const style = extend({ '--simple-layout-colorPrimary': theme.colorPrimary }, props.style, {\n padding: props.padding,\n width: props.width,\n });\n\n if (props.hidden) return <Fragment />;\n\n return (\n <div className={className} style={style} onClick={props.onClick}>\n {props.title && props.titleExtra ? (\n <div\n className={classNames({ 'simple-layout-title-sign': props.titleLeftLine })}\n style={props.titleStyle}\n >\n <Space className=\"simple-layout-title-extra-space\">\n <div className=\"simple-layout-title\">{props.title}</div>\n <div className=\"simple-layout-title-extra\">{props.titleExtra}</div>\n </Space>\n </div>\n ) : null}\n {props.title && !props.titleExtra ? (\n <div\n className={classNames('simple-layout-title', {\n 'simple-layout-title-sign': props.titleLeftLine,\n })}\n style={props.titleStyle}\n >\n {props.title}\n </div>\n ) : null}\n {props.desc && !isArray(props.desc) ? <div className=\"simple-layout-desc\">{props.desc}</div> : null}\n {props.desc && isArray(props.desc) ? (\n <div className=\"simple-layout-desc\">\n <Space direction=\"vertical\" size={5}>\n {(props.desc as string[]).map((item, index) => {\n return <Fragment key={index}>{item}</Fragment>;\n })}\n </Space>\n </div>\n ) : null}\n {props.children ? (\n <div className=\"simple-layout-content\" style={props.contentStyle}>\n {props.children}\n </div>\n ) : null}\n </div>\n );\n};\n\nSimpleLayout.defaultProps = {\n titleLeftLine: true,\n layoutType: 'layer',\n};\n"],"names":["SimpleLayout","props","labelAlign","formLabelAlign","className","_classNames","layoutType","titleFixed","size","theme","fbaHooks","useThemeToken","style","_extend","colorPrimary","padding","width","hidden","_jsx","Fragment","_jsxs","onClick","children","title","titleExtra","titleLeftLine","titleStyle","Space","desc","_isArray","direction","map","item","index","contentStyle","defaultProps"],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/simple-layout/simple-layout.tsx"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport { Space } from 'antd';\nimport { CSSProperties, Fragment, ReactElement, ReactNode } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type SimpleLayoutProps = {\n className?: string;\n style?: CSSProperties;\n title?: string | ReactElement;\n desc?: string | ReactElement | string[] | ReactElement[];\n /**\n * @deprecated 已过期,请使用form className 属性 preDefinedClassName.form.xxx\n */\n formLabelAlign?: 'left' | 'right';\n /**\n * layoutType 布局类型\n * ```\n * 1. layer:分层布局\n * 2. tight:紧凑布局(没有外边距)\n * ```\n */\n layoutType?: 'layer' | 'tight';\n titleLeftLine?: boolean;\n titleStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n /** 优先级大于 style padding */\n padding?: CSSProperties['padding'];\n /** 优先级大于 style width */\n width?: CSSProperties['width'];\n children?: ReactNode | ReactNode[];\n titleExtra?: string | ReactElement;\n hidden?: boolean;\n titleFixed?: boolean;\n /**\n * 间距尺寸\n * 1. default = 15\n * 2. small = 8\n */\n size?: 'default' | 'small';\n onClick?: (event) => void;\n};\n\n/**\n * 简单布局\n * @param props\n * @returns\n * ```\n * 1. layoutType 布局类型\n * layer:分层布局\n * tight:紧凑布局(没有外边距)\n * ```\n */\nexport const SimpleLayout = (props: SimpleLayoutProps) => {\n const labelAlign = props.formLabelAlign || 'right';\n const className = classNames(\n 'simple-layout',\n {\n 'simple-layout-tight': props.layoutType === 'tight',\n 'simple-layout-formlabel-left': labelAlign === 'left',\n 'simple-layout-title-fixed': props.titleFixed,\n 'simple-layout-small': props.size === 'small',\n },\n props.className,\n );\n\n const theme = fbaHooks.useThemeToken();\n const style = extend({ '--simple-layout-colorPrimary': theme.colorPrimary }, props.style, {\n padding: props.padding,\n width: props.width,\n });\n\n if (props.hidden) return <Fragment />;\n\n return (\n <div className={className} style={style} onClick={props.onClick}>\n {props.title && props.titleExtra ? (\n <div\n className={classNames({ 'simple-layout-title-sign': props.titleLeftLine })}\n style={props.titleStyle}\n >\n <Space className=\"simple-layout-title-extra-space\">\n <div className=\"simple-layout-title\">{props.title}</div>\n <div className=\"simple-layout-title-extra\">{props.titleExtra}</div>\n </Space>\n </div>\n ) : null}\n {props.title && !props.titleExtra ? (\n <div\n className={classNames('simple-layout-title', {\n 'simple-layout-title-sign': props.titleLeftLine,\n })}\n style={props.titleStyle}\n >\n {props.title}\n </div>\n ) : null}\n {props.desc && !isArray(props.desc) ? <div className=\"simple-layout-desc\">{props.desc}</div> : null}\n {props.desc && isArray(props.desc) ? (\n <div className=\"simple-layout-desc\">\n <Space direction=\"vertical\" size={5}>\n {(props.desc as string[]).map((item, index) => {\n return <Fragment key={index}>{item}</Fragment>;\n })}\n </Space>\n </div>\n ) : null}\n {props.children ? (\n <div className=\"simple-layout-content\" style={props.contentStyle}>\n {props.children}\n </div>\n ) : null}\n </div>\n );\n};\n\nSimpleLayout.defaultProps = {\n titleLeftLine: true,\n layoutType: 'layer',\n};\n"],"names":["SimpleLayout","props","labelAlign","formLabelAlign","className","_classNames","layoutType","titleFixed","size","theme","fbaHooks","useThemeToken","style","_extend","colorPrimary","padding","width","hidden","_jsx","Fragment","_jsxs","onClick","children","title","titleExtra","titleLeftLine","titleStyle","Space","desc","_isArray","direction","map","item","index","contentStyle","defaultProps"],"mappings":";8bAsDaA,EAAe,SAAfA,EAAgBC,GAC3B,IAAMC,EAAaD,EAAME,gBAAkB,QAC3C,IAAMC,EAAYC,EAChB,gBACA,CACE,sBAAuBJ,EAAMK,aAAe,QAC5C,+BAAgCJ,IAAe,OAC/C,4BAA6BD,EAAMM,WACnC,sBAAuBN,EAAMO,OAAS,SAExCP,EAAMG,WAGR,IAAMK,EAAQC,EAASC,gBACvB,IAAMC,EAAQC,EAAO,CAAE,+BAAgCJ,EAAMK,cAAgBb,EAAMW,MAAO,CACxFG,QAASd,EAAMc,QACfC,MAAOf,EAAMe,QAGf,GAAIf,EAAMgB,OAAQ,OAAOC,EAACC,EAAQ,CAAE,GAEpC,OACEC,EAAA,MAAA,CAAKhB,UAAWA,EAAWQ,MAAOA,EAAOS,QAASpB,EAAMoB,QAAQC,SAAA,CAC7DrB,EAAMsB,OAAStB,EAAMuB,WACpBN,EAAA,MAAA,CACEd,UAAWC,EAAW,CAAE,2BAA4BJ,EAAMwB,gBAC1Db,MAAOX,EAAMyB,WAAWJ,SAExBF,EAACO,EAAK,CAACvB,UAAU,kCAAiCkB,UAChDJ,EAAA,MAAA,CAAKd,UAAU,sBAAqBkB,SAAErB,EAAMsB,QAC5CL,EAAA,MAAA,CAAKd,UAAU,4BAA2BkB,SAAErB,EAAMuB,kBAGpD,KACHvB,EAAMsB,QAAUtB,EAAMuB,WACrBN,EAAA,MAAA,CACEd,UAAWC,EAAW,sBAAuB,CAC3C,2BAA4BJ,EAAMwB,gBAEpCb,MAAOX,EAAMyB,WAAWJ,SAEvBrB,EAAMsB,QAEP,KACHtB,EAAM2B,OAASC,EAAQ5B,EAAM2B,MAAQV,EAAA,MAAA,CAAKd,UAAU,qBAAoBkB,SAAErB,EAAM2B,OAAc,KAC9F3B,EAAM2B,MAAQC,EAAQ5B,EAAM2B,MAC3BV,EAAA,MAAA,CAAKd,UAAU,qBAAoBkB,SACjCJ,EAACS,EAAK,CAACG,UAAU,WAAWtB,KAAM,EAAEc,SAChCrB,EAAM2B,KAAkBG,KAAI,SAACC,EAAMC,GACnC,OAAOf,EAACC,EAAQ,CAAAG,SAAcU,GAARC,UAI1B,KACHhC,EAAMqB,SACLJ,EAAA,MAAA,CAAKd,UAAU,wBAAwBQ,MAAOX,EAAMiC,aAAaZ,SAC9DrB,EAAMqB,WAEP,OAGV,EAEAtB,EAAamC,aAAe,CAC1BV,cAAe,KACfnB,WAAY"}
|
|
@@ -3,6 +3,7 @@ import './../button-operate/index.css';
|
|
|
3
3
|
import './../button-wrapper/index.css';
|
|
4
4
|
import './../config-provider-wrapper/index.css';
|
|
5
5
|
import './../fba-hooks/index.css';
|
|
6
|
+
import './../types/index.css';
|
|
6
7
|
import './../fba-utils/index.css';
|
|
7
8
|
import './../dropdown-menu-wrapper/index.css';
|
|
8
9
|
import './../dialog-confirm/index.css';
|
|
@@ -11,5 +12,5 @@ import './../flex-layout/index.css';
|
|
|
11
12
|
import './../tag-list-select/index.css';
|
|
12
13
|
import './index.css';
|
|
13
14
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
14
|
-
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-fc015ef2.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 c,flatbizPrice as d}from"@flatbiz/utils";import{Tooltip as m,Space as f,Badge as p}from"antd";import{Fragment as
|
|
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-fc015ef2.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 c,flatbizPrice as d}from"@flatbiz/utils";import{Tooltip as m,Space as f,Badge as p}from"antd";import{Fragment as j}from"react";import{ButtonOperate as v}from"../button-operate/index.js";import{TagListSelect as g}from"../tag-list-select/index.js";import{jsx as x}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"../config-provider-wrapper/index.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"../index-ac189a77.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";var h=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 c=u(t);if(c<=i*2){return t}return x(m,{placement:"topLeft",title:t,children:s(t,i*2)})}};var b=function r(e){return function(r,n,t){var o=e(n,t);return x(v,i({},o))}};var y=function r(e,n){return function(r){if(o(r)||r==="")return n;try{return c.format(new Date(r),e)}catch(e){return r||n}}};var w=function r(e,n){return function(r,t,i){if(n&&e){return(e-1)*n+i+1}return i+1}};var C=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){return function(r){if(!r)return null;return x(g,{dataList:e,colorMap:n,value:r,forceMatch:false})}};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 O=function r(e){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 x("span",{className:"table-fen-color",children:d.format(e==null?void 0:e.defaultValue)})}return x("span",{className:"table-fen-color",children:e==null?void 0:e.defaultValue})}if(!a(r))return r;var n=d.fen2yuan(r);return x("span",{className:"table-fen-color",children:d.format(n,e==null?void 0:e.defaultValue,{separator:(e==null?void 0:e.separator)||false})})}};var S=function e(n){return function(e,t){var i=n==null?void 0:n(t);if(!i)return x(j,{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 c=i.extraPosition?i.extraPosition:"after";var d=r(e)?s(e,u*2):e;if(i.extra&&o){if(d===e&&!a){return e}var m=[x("span",{children:d},"1"),x(j,{children:i.extra},"2")];var p=c==="before"?m.reverse():m;return x(f,{onClick:i.onClick,style:{cursor:i.onClick?"pointer":undefined},size:5,children:p.map((function(r,e){return x(j,{children:r},e)}))})}return x("span",{onClick:i.onClick,children:i.extra})}};var z=function r(e,n){return function(r){if(!r)return null;var t=e.find((function(e){return e.value===r}));if(t)return x(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={extraContentRender:S,indexCell:w,serialNumberCell:C,dateCell:y,operateCell:b,tooltipCell:h,selectorCell:k,objectCell:N,fen2yuanCell:O,badgeCell:z};export{M as tableCellRender};
|
|
15
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 { TagListSelect, 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) => {\n return (value: string | number) => {\n return <TagListSelect dataList={selectorList} colorMap={colorMap} value={value} forceMatch={false} />;\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 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=\"table-fen-color\">{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className=\"table-fen-color\">{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2yuan(value);\n return (\n <span className=\"table-fen-color\">\n {flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false })}\n </span>\n );\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: string | number) => {\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\nexport const tableCellRender = {\n /**\n * 表格单元格 拼接额外内容渲染\n * ```\n * 1. extra 额外内容\n * 2. showData 是否显示原单元格数据,默认值:true\n * 3. showMaxNumber 显示最大长度,作用于原单元格字符串数据\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 * dateFormatType: 日期格式\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 * permission: SystemAdminPermissionEnum.system_admin_edit,\n * },\n * {\n * text: '删除',\n * needConfirm: true,\n * confirmMessage: '确定要删除吗?',\n * onClick: onItemOperate.bind(null, 'delete', item),\n * permission: SystemAdminPermissionEnum.system_admin_delete,\n * },\n * ],\n * }))\n * ```\n */\n operateCell: tableColumnOperateRender,\n /**\n * 实现字段超出隐藏,默认长度10个字符\n * ```\n * 1. showMaxNumber: 显示最大长度\n * 2. 会讲字符转出字节进行计算显示\n * ```\n */\n tooltipCell: tableColumnTooltipRender,\n /**\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 *\n * 结合table column render 使用\n * render: tableCellRender.selectorCell([{ label: '已开启', value: 1 ])\n * render: (value) => {\n * return tableCellRender.selectorCell([{ label: '已开启', value: 1 ])(value)\n * }\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 *\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 * 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"],"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","TagListSelect","dataList","forceMatch","tableColumnObjectRender","key","_isPlainObject","target","_get","_isObject","JSON","stringify","tableColumnFen2yuanCellRender","undefined","className","flatbizPrice","amount","fen2yuan","separator","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","tableCellRender","extraContentRender","indexCell","serialNumberCell","dateCell","operateCell","tooltipCell","selectorCell","objectCell","fen2yuanCell","badgeCell"],"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 { TagListSelect, 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) => {\n return (value?: TAny) => {\n if (!value) return null;\n return <TagListSelect dataList={selectorList} colorMap={colorMap} value={value} forceMatch={false} />;\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 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=\"table-fen-color\">{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className=\"table-fen-color\">{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2yuan(value);\n return (\n <span className=\"table-fen-color\">\n {flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false })}\n </span>\n );\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 (!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\nexport const tableCellRender = {\n /**\n * 表格单元格 拼接额外内容渲染\n * ```\n * 1. extra 额外内容\n * 2. showData 是否显示原单元格数据,默认值:true\n * 3. showMaxNumber 显示最大长度,作用于原单元格字符串数据\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 * dateFormatType: 日期格式\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 * permission: SystemAdminPermissionEnum.system_admin_edit,\n * },\n * {\n * text: '删除',\n * needConfirm: true,\n * confirmMessage: '确定要删除吗?',\n * onClick: onItemOperate.bind(null, 'delete', item),\n * permission: SystemAdminPermissionEnum.system_admin_delete,\n * },\n * ],\n * }))\n * ```\n */\n operateCell: tableColumnOperateRender,\n /**\n * 实现字段超出隐藏,默认长度10个字符\n * ```\n * 1. showMaxNumber: 显示最大长度\n * 2. 会讲字符转出字节进行计算显示\n * ```\n */\n tooltipCell: tableColumnTooltipRender,\n /**\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 *\n * 结合table column render 使用\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 *\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 * 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"],"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","TagListSelect","dataList","forceMatch","tableColumnObjectRender","key","_isPlainObject","target","_get","_isObject","JSON","stringify","tableColumnFen2yuanCellRender","undefined","className","flatbizPrice","amount","fen2yuan","separator","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","tableCellRender","extraContentRender","indexCell","serialNumberCell","dateCell","operateCell","tooltipCell","selectorCell","objectCell","fen2yuanCell","badgeCell"],"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{
|
|
4
|
+
import{toArray as r,isUndefinedOrNull as e,valueIsEqual as n}from"@flatbiz/utils";import{Tag as l}from"antd";import{useMemo as t,Fragment as a}from"react";import{jsx as o}from"react/jsx-runtime";var i=function i(u){var f=r(u.value);var c=t((function(){if(e(u.value)){return[]}return f.map((function(r){var e;var l=(e=u.dataList)==null?void 0:e.find((function(e){return n(e.value,r)||e.label===r}));if(l){var t;return{label:l.label,color:((t=u.colorMap)==null?void 0:t[String(l.value)])||l.color,value:r}}if(u.forceMatch){return undefined}return{label:""+r,color:undefined,value:r}})).filter(Boolean)}),[u.colorMap,u.dataList,u.forceMatch,u.value,f]);if(c.length===0){return o(a,{children:u.value})}var d=c.find((function(r){return!!(r!=null&&r.color)}));if(d){return o(a,{children:c.map((function(r,e){return o(l,{color:r.color,style:e===c.length-1?{margin:"0"}:undefined,children:r.label},e)}))})}return o(a,{children:c.map((function(r){return r.label})).join(",")})};i.defaultProps={forceMatch:false};export{i as TagListSelect};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tag-list-select/tag-list-select.tsx"],"sourcesContent":["import { isUndefinedOrNull, valueIsEqual } from '@flatbiz/utils';\nimport { Tag } from 'antd';\nimport { FC, Fragment, useMemo } from 'react';\n\nexport type TagListSelectValue = string | number | boolean;\nexport type TagListSelectDataItem = { label: string; value: TagListSelectValue; color?: string };\n\nexport type TagListSelectProps = {\n dataList: TagListSelectDataItem[];\n /** 颜色配置数据,例如:{ 1:'red', 2: 'blue'} key值与 dataList中value相同 */\n colorMap?: Record<string | number, string>;\n value?: TagListSelectValue;\n /** 是否强制匹配,默认值false */\n forceMatch?: boolean;\n};\n\n/**\n * 在列表数据中通过value匹配数据,以Tag形式展示\n * @param props\n * @returns\n * ```\n * 1. forceMatch: 是否强制匹配(默认值false)\n * - false: 匹配不到显示value值,\n * - true:匹配不到不显示\n * 2. value 与 dataList中label、value任一相等,都可匹配\n *\n * 用法1:\n * <TagListSelect\n * dataList=[{ label: '启用', value: 1 }]\n * colorMap={{ 1:'red', 2: 'blue'}}\n * value={1} />\n * =>\n * <Tag color={'red'}>启用</Tag>\n *\n * 用法2\n * <TagListSelect\n * dataList=[{ label: '启用', value: 1. color: 'red' }]\n * value=\"启用\" />\n * =>\n * <Tag color={'red'}>启用</Tag>\n * ```\n */\nexport const TagListSelect: FC<TagListSelectProps> = (props) => {\n const
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tag-list-select/tag-list-select.tsx"],"sourcesContent":["import { isUndefinedOrNull, toArray, valueIsEqual } from '@flatbiz/utils';\nimport { Tag } from 'antd';\nimport { FC, Fragment, useMemo } from 'react';\n\nexport type TagListSelectValue = string | number | boolean;\nexport type TagListSelectDataItem = { label: string; value: TagListSelectValue; color?: string };\n\nexport type TagListSelectProps = {\n dataList: TagListSelectDataItem[];\n /** 颜色配置数据,例如:{ 1:'red', 2: 'blue'} key值与 dataList中value相同 */\n colorMap?: Record<string | number, string>;\n value?: TagListSelectValue | TagListSelectValue[];\n /** 是否强制匹配,默认值false */\n forceMatch?: boolean;\n};\n\n/**\n * 在列表数据中通过value匹配数据,以Tag形式展示\n * @param props\n * @returns\n * ```\n * 1. forceMatch: 是否强制匹配(默认值false)\n * - false: 匹配不到显示value值,\n * - true:匹配不到不显示\n * 2. value 与 dataList中label、value任一相等,都可匹配\n *\n * 用法1:\n * <TagListSelect\n * dataList=[{ label: '启用', value: 1 }]\n * colorMap={{ 1:'red', 2: 'blue'}}\n * value={1} />\n * =>\n * <Tag color={'red'}>启用</Tag>\n *\n * 用法2\n * <TagListSelect\n * dataList=[{ label: '启用', value: 1. color: 'red' }]\n * value=\"启用\" />\n * =>\n * <Tag color={'red'}>启用</Tag>\n * ```\n */\nexport const TagListSelect: FC<TagListSelectProps> = (props) => {\n const valueList = toArray<TagListSelectValue>(props.value);\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,\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 TagListSelectDataItem[];\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 hasColor = tagList.find((item) => !!item?.color);\n\n if (hasColor) {\n return (\n <Fragment>\n {tagList.map((item, index) => {\n return (\n <Tag\n color={item.color}\n style={index === tagList.length - 1 ? { margin: '0' } : undefined}\n key={index}\n >\n {item.label}\n </Tag>\n );\n })}\n </Fragment>\n );\n }\n\n return <Fragment>{tagList.map((item) => item.label).join(',')}</Fragment>;\n};\n\nTagListSelect.defaultProps = {\n forceMatch: false,\n};\n"],"names":["TagListSelect","props","valueList","toArray","value","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","hasColor","index","Tag","style","margin","join","defaultProps"],"mappings":";uMA0CaA,EAAwC,SAAxCA,EAAyCC,GACpD,IAAMC,EAAYC,EAA4BF,EAAMG,OACpD,IAAMC,EAAUC,GAAQ,WACtB,GAAIC,EAAkBN,EAAMG,OAAQ,CAClC,MAAO,EACT,CACA,OAAOF,EACJM,KAAI,SAACJ,GAAU,IAAAK,EACd,IAAMC,GAAMD,EAAGR,EAAMU,WAAQ,UAAA,EAAdF,EAAgBG,MAC7B,SAACC,GAAI,OAAKC,EAAaD,EAAKT,MAAOA,IAAUS,EAAKE,QAAUX,CAAK,IAEnE,GAAIM,EAAQ,CAAA,IAAAM,EACV,MAAO,CACLD,MAAOL,EAAOK,MACdE,QAAOD,EAAAf,EAAMiB,uBAANF,EAAiBG,OAAOT,EAAON,UAAWM,EAAOO,MACxDb,MAAOA,EAEX,CACA,GAAIH,EAAMmB,WAAY,CACpB,OAAOC,SACT,CACA,MAAO,CAAEN,SAAUX,EAASa,MAAOI,UAAWjB,MAAOA,EACvD,IACCkB,OAAOC,QACX,GAAE,CAACtB,EAAMiB,SAAUjB,EAAMU,SAAUV,EAAMmB,WAAYnB,EAAMG,MAAOF,IAEnE,GAAIG,EAAQmB,SAAW,EAAG,CACxB,OAAOC,EAACC,EAAQ,CAAAC,SAAE1B,EAAMG,OAC1B,CAEA,IAAMwB,EAAWvB,EAAQO,MAAK,SAACC,GAAI,SAAOA,GAAAA,MAAAA,EAAMI,UAEhD,GAAIW,EAAU,CACZ,OACEH,EAACC,EAAQ,CAAAC,SACNtB,EAAQG,KAAI,SAACK,EAAMgB,GAClB,OACEJ,EAACK,EAAG,CACFb,MAAOJ,EAAKI,MACZc,MAAOF,IAAUxB,EAAQmB,OAAS,EAAI,CAAEQ,OAAQ,KAAQX,UAAUM,SAGjEd,EAAKE,OAFDc,OAQjB,CAEA,OAAOJ,EAACC,EAAQ,CAAAC,SAAEtB,EAAQG,KAAI,SAACK,GAAI,OAAKA,EAAKE,SAAOkB,KAAK,MAC3D,EAEAjC,EAAckC,aAAe,CAC3Bd,WAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.tce-hidden{display:inline-block;height:0;left:0;overflow:hidden;position:absolute;top:0;width:0}.tce-hidden span,.text-css-ellipsis{display:inline-block;white-space:nowrap}.text-css-ellipsis{overflow:hidden;position:relative;text-align:left;text-overflow:ellipsis}
|
|
1
|
+
.tce-hidden{display:inline-block;height:0;left:0;overflow:hidden;position:absolute;top:0;width:0}.tce-hidden span,.text-css-ellipsis{display:inline-block;white-space:nowrap}.text-css-ellipsis{overflow:hidden;position:relative;text-align:left;text-overflow:ellipsis;width:100%}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
import './index.css';
|
|
3
3
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
4
|
-
import{Tooltip as t}from"antd";import{
|
|
4
|
+
import{Tooltip as t}from"antd";import{useState as e,useMemo as i}from"react";import{jsx as n,jsxs as r}from"react/jsx-runtime";var d=function d(f){var s=e(0),a=s[0],l=s[1];var h=e(0),c=h[0],o=h[1];var u=i((function(){if(f.hideTips)return false;if(f.width!==undefined){return c>f.width}return c>a}),[a,f.hideTips,f.width,c]);return n(t,{title:u?f.text:undefined,children:r("span",{className:"text-css-ellipsis",style:f.width?{width:f.width}:{},ref:function t(e){if(e){var i;l((e==null||(i=e.parentElement)==null?void 0:i.offsetWidth)||0)}},children:[n("span",{className:"tce-hidden",children:n("span",{ref:function t(e){if(e){o(e.offsetWidth)}},children:f.text})}),f.text]})})};export{d as TextCssEllipsis};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/text-css-ellipsis/text-css-ellipsis.tsx"],"sourcesContent":["import { Tooltip } from 'antd';\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/text-css-ellipsis/text-css-ellipsis.tsx"],"sourcesContent":["import { Tooltip } from 'antd';\nimport { useMemo, useState } from 'react';\nimport './style.less';\n\nexport type CssTextEllipsisProps = {\n text: string;\n width?: number;\n /** 隐藏tips */\n hideTips?: boolean;\n};\n\n/**\n * 内容超过宽度截取,并在尾部添加...,被截取的添加Tooltip显示完整数据\n * ```\n * 1. 如果配置 width,则使用文本长度与width进行比较\n * 2. 如果没有配置 width,则使用文本长度与当前节点父节点宽度进行比较\n *\n * 注意:\n * 1. 当前节点父节点可能需要添加 overflow-x: hidden;\n * 2. 如果父节点设置flex-shrink会有影响,可复写flex-shrink: initial;\n * ```\n */\nexport const TextCssEllipsis = (props: CssTextEllipsisProps) => {\n const [parentNodeWidth, setParentNodeWidth] = useState(0);\n const [textNodeWidth, setTextNodeWidth] = useState(0);\n\n const showTips = useMemo(() => {\n if (props.hideTips) return false;\n if (props.width !== undefined) {\n return textNodeWidth > props.width;\n }\n return textNodeWidth > parentNodeWidth;\n }, [parentNodeWidth, props.hideTips, props.width, textNodeWidth]);\n\n return (\n <Tooltip title={showTips ? props.text : undefined}>\n <span\n className=\"text-css-ellipsis\"\n style={props.width ? { width: props.width } : {}}\n ref={(node) => {\n if (node) {\n setParentNodeWidth(node?.parentElement?.offsetWidth || 0);\n }\n }}\n >\n <span className=\"tce-hidden\">\n <span\n ref={(node) => {\n if (node) {\n setTextNodeWidth(node.offsetWidth);\n }\n }}\n >\n {props.text}\n </span>\n </span>\n {props.text}\n </span>\n </Tooltip>\n );\n};\n"],"names":["TextCssEllipsis","props","_useState","useState","parentNodeWidth","setParentNodeWidth","_useState2","textNodeWidth","setTextNodeWidth","showTips","useMemo","hideTips","width","undefined","_jsx","Tooltip","title","text","children","_jsxs","className","style","ref","node","_node$parentElement","parentElement","offsetWidth"],"mappings":";mIAsBaA,EAAkB,SAAlBA,EAAmBC,GAC9B,IAAAC,EAA8CC,EAAS,GAAhDC,EAAeF,EAAA,GAAEG,EAAkBH,EAAA,GAC1C,IAAAI,EAA0CH,EAAS,GAA5CI,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAEtC,IAAMG,EAAWC,GAAQ,WACvB,GAAIT,EAAMU,SAAU,OAAO,MAC3B,GAAIV,EAAMW,QAAUC,UAAW,CAC7B,OAAON,EAAgBN,EAAMW,KAC/B,CACA,OAAOL,EAAgBH,CACzB,GAAG,CAACA,EAAiBH,EAAMU,SAAUV,EAAMW,MAAOL,IAElD,OACEO,EAACC,EAAO,CAACC,MAAOP,EAAWR,EAAMgB,KAAOJ,UAAUK,SAChDC,EAAA,OAAA,CACEC,UAAU,oBACVC,MAAOpB,EAAMW,MAAQ,CAAEA,MAAOX,EAAMW,OAAU,CAAG,EACjDU,IAAK,SAAAA,EAACC,GACJ,GAAIA,EAAM,CAAA,IAAAC,EACRnB,GAAmBkB,GAAI,OAAAC,EAAJD,EAAME,4BAAND,EAAqBE,cAAe,EACzD,CACA,EAAAR,UAEFJ,EAAA,OAAA,CAAMM,UAAU,aAAYF,SAC1BJ,EAAA,OAAA,CACEQ,IAAK,SAAAA,EAACC,GACJ,GAAIA,EAAM,CACRf,EAAiBe,EAAKG,YACxB,CACA,EAAAR,SAEDjB,EAAMgB,SAGVhB,EAAMgB,SAIf"}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
import './../button-wrapper/index.css';
|
|
3
3
|
import './../config-provider-wrapper/index.css';
|
|
4
4
|
import './../fba-hooks/index.css';
|
|
5
|
+
import './../types/index.css';
|
|
5
6
|
import './../fba-utils/index.css';
|
|
6
7
|
import './../text-css-ellipsis/index.css';
|
|
7
8
|
import './index.css';
|
|
8
9
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
9
|
-
import{isEmpty as i}from"@dimjs/lang/cjs/is-empty";import{a as r,_ as e}from"../_rollupPluginBabelHelpers-fc015ef2.js";import{getStrByteLen as t,cutString as n}from"@flatbiz/utils";import{Tooltip as l}from"antd";import{Fragment as o}from"react";import{ButtonWrapper as
|
|
10
|
+
import{isEmpty as i}from"@dimjs/lang/cjs/is-empty";import{a as r,_ as e}from"../_rollupPluginBabelHelpers-fc015ef2.js";import{getStrByteLen as t,cutString as n}from"@flatbiz/utils";import{Tooltip as l}from"antd";import{Fragment as o}from"react";import{ButtonWrapper as s}from"../button-wrapper/index.js";import{TextCssEllipsis as a}from"../text-css-ellipsis/index.js";import{jsx as p,jsxs as m}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";import"@dimjs/utils/cjs/class-names";import"../config-provider-wrapper/index.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"../index-ac189a77.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";var d=["onClick","children","prefix"];var c=function i(t){var n=t.onClick,l=t.children,o=t.prefix,a=r(t,d);if(!!n){return m(s,e({type:"link",onClick:n,style:{padding:0,height:"initial",display:"inline-flex",alignItems:"center"}},a,{children:[o?p("span",{style:{marginRight:5},children:o}):null,l]}))}return m("span",e({},a,{style:e({display:"inline-flex"},a["style"]),children:[o?p("span",{style:{marginRight:5},children:o}):null,l]}))};var f=function r(e){var s=e.text,m=e.maxLength,d=e.placeholder,f=e.onClick,j=e.prefix;if(!s||i(s)||s==="")return p(o,{children:d});if(!!m){var u=t(s);if(u<=m*2){return p(c,{onClick:f,prefix:j,children:s})}else{var h=n(s,m*2);return p(l,{placement:"topLeft",title:s,children:p(c,{onClick:f,prefix:j,children:h})})}}if(e.width){return p(c,{onClick:f,prefix:j,children:p(a,{text:s,width:e.width})})}return p(c,{onClick:f,prefix:j,children:e.text})};export{f as TextOverflowRender};
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/text-overflow-render/text-overflow-render.tsx"],"sourcesContent":["import { isEmpty } from '@dimjs/lang';\nimport { cutString, getStrByteLen } from '@flatbiz/utils';\nimport { Tooltip } from 'antd';\nimport { Fragment, ReactElement } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { TextCssEllipsis } from '../text-css-ellipsis';\n\nconst LinkRender = (props: {\n onClick?: (e) => void;\n children?: ReactElement | string;\n prefix?: string | ReactElement;\n}) => {\n const { onClick, children, prefix, ...otherProps } = props;\n if (!!onClick) {\n return (\n <ButtonWrapper\n type=\"link\"\n onClick={onClick}\n style={{ padding: 0, height: 'initial', display: 'inline-flex', alignItems: 'center' }}\n {...otherProps}\n >\n {prefix ? <span style={{ marginRight: 5 }}>{prefix}</span> : null}\n {children}\n </ButtonWrapper>\n );\n }\n return (\n <span {...otherProps} style={{ display: 'inline-flex', ...otherProps['style'] }}>\n {prefix ? <span style={{ marginRight: 5 }}>{prefix}</span> : null}\n {children}\n </span>\n );\n};\n\nexport type TextOverflowRenderProps = {\n /** width 宽度控制超长 */\n width?: number;\n /** maxLength 数字控制超长 */\n maxLength?: number;\n /** 完整文本 */\n text?: string;\n /** 文本前缀显示 */\n prefix?: string | ReactElement;\n /** 数据不存在时,占位符 */\n placeholder?: ReactElement | string;\n onClick?: (e) => void;\n};\n\n/**\n * 文本显示超出截取,被截取的添加Tooltip显示完整数据\n * ```\n * 控制文本显示两种方式\n * 1. 通过 maxLength 控制超长\n * 2. 通过 width 控制超长\n *\n * 3. maxLength 与 width 互斥,优先级:maxLength > width\n * ```\n * @param props\n * @returns\n */\nexport const TextOverflowRender = (props: TextOverflowRenderProps) => {\n const { text, maxLength, placeholder, onClick, prefix } = props;\n\n if (!text || isEmpty(text) || text === '') return <Fragment>{placeholder}</Fragment>;\n if (!!maxLength) {\n const strByteLen = getStrByteLen(text);\n if (strByteLen <= maxLength * 2) {\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n {text}\n </LinkRender>\n );\n } else {\n const resultTitle = cutString(text, maxLength * 2);\n return (\n <Tooltip placement=\"topLeft\" title={text}>\n <LinkRender onClick={onClick} prefix={prefix}>\n {resultTitle}\n </LinkRender>\n </Tooltip>\n );\n }\n }\n if (props.width) {\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n <TextCssEllipsis text={text} width={props.width} />\n </LinkRender>\n );\n }\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n {props.text}\n </LinkRender>\n );\n};\n"],"names":["LinkRender","props","onClick","children","prefix","otherProps","_objectWithoutPropertiesLoose","_excluded","_jsxs","ButtonWrapper","_extends","type","style","padding","height","display","alignItems","_jsx","marginRight","TextOverflowRender","text","maxLength","placeholder","_isEmpty","Fragment","strByteLen","getStrByteLen","resultTitle","cutString","Tooltip","placement","title","width","TextCssEllipsis"],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/text-overflow-render/text-overflow-render.tsx"],"sourcesContent":["import { isEmpty } from '@dimjs/lang';\nimport { cutString, getStrByteLen } from '@flatbiz/utils';\nimport { Tooltip } from 'antd';\nimport { Fragment, ReactElement } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { TextCssEllipsis } from '../text-css-ellipsis';\n\nconst LinkRender = (props: {\n onClick?: (e) => void;\n children?: ReactElement | string;\n prefix?: string | ReactElement;\n}) => {\n const { onClick, children, prefix, ...otherProps } = props;\n if (!!onClick) {\n return (\n <ButtonWrapper\n type=\"link\"\n onClick={onClick}\n style={{ padding: 0, height: 'initial', display: 'inline-flex', alignItems: 'center' }}\n {...otherProps}\n >\n {prefix ? <span style={{ marginRight: 5 }}>{prefix}</span> : null}\n {children}\n </ButtonWrapper>\n );\n }\n return (\n <span {...otherProps} style={{ display: 'inline-flex', ...otherProps['style'] }}>\n {prefix ? <span style={{ marginRight: 5 }}>{prefix}</span> : null}\n {children}\n </span>\n );\n};\n\nexport type TextOverflowRenderProps = {\n /** width 宽度控制超长 */\n width?: number;\n /** maxLength 数字控制超长 */\n maxLength?: number;\n /** 完整文本 */\n text?: string;\n /** 文本前缀显示 */\n prefix?: string | ReactElement;\n /** 数据不存在时,占位符 */\n placeholder?: ReactElement | string;\n onClick?: (e) => void;\n};\n\n/**\n * 文本显示超出截取,被截取的添加Tooltip显示完整数据\n * ```\n * 控制文本显示两种方式\n * 1. 通过 maxLength 控制超长\n * 2. 通过 width 控制超长\n *\n * 3. maxLength 与 width 互斥,优先级:maxLength > width\n * ```\n * @param props\n * @returns\n */\nexport const TextOverflowRender = (props: TextOverflowRenderProps) => {\n const { text, maxLength, placeholder, onClick, prefix } = props;\n\n if (!text || isEmpty(text) || text === '') return <Fragment>{placeholder}</Fragment>;\n if (!!maxLength) {\n const strByteLen = getStrByteLen(text);\n if (strByteLen <= maxLength * 2) {\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n {text}\n </LinkRender>\n );\n } else {\n const resultTitle = cutString(text, maxLength * 2);\n return (\n <Tooltip placement=\"topLeft\" title={text}>\n <LinkRender onClick={onClick} prefix={prefix}>\n {resultTitle}\n </LinkRender>\n </Tooltip>\n );\n }\n }\n if (props.width) {\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n <TextCssEllipsis text={text} width={props.width} />\n </LinkRender>\n );\n }\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n {props.text}\n </LinkRender>\n );\n};\n"],"names":["LinkRender","props","onClick","children","prefix","otherProps","_objectWithoutPropertiesLoose","_excluded","_jsxs","ButtonWrapper","_extends","type","style","padding","height","display","alignItems","_jsx","marginRight","TextOverflowRender","text","maxLength","placeholder","_isEmpty","Fragment","strByteLen","getStrByteLen","resultTitle","cutString","Tooltip","placement","title","width","TextCssEllipsis"],"mappings":";6qCAOA,IAAMA,EAAa,SAAbA,EAAcC,GAKlB,IAAQC,EAA6CD,EAA7CC,QAASC,EAAoCF,EAApCE,SAAUC,EAA0BH,EAA1BG,OAAWC,EAAUC,EAAKL,EAAKM,GAC1D,KAAML,EAAS,CACb,OACEM,EAACC,EAAaC,EAAA,CACZC,KAAK,OACLT,QAASA,EACTU,MAAO,CAAEC,QAAS,EAAGC,OAAQ,UAAWC,QAAS,cAAeC,WAAY,WACxEX,EAAU,CAAAF,SAAA,CAEbC,EAASa,EAAA,OAAA,CAAML,MAAO,CAAEM,YAAa,GAAIf,SAAEC,IAAiB,KAC5DD,KAGP,CACA,OACEK,EAAA,OAAAE,EAAA,CAAA,EAAUL,EAAU,CAAEO,MAAKF,EAAA,CAAIK,QAAS,eAAkBV,EAAW,UAAWF,SAAA,CAC7EC,EAASa,EAAA,OAAA,CAAML,MAAO,CAAEM,YAAa,GAAIf,SAAEC,IAAiB,KAC5DD,KAGP,MA4BagB,EAAqB,SAArBA,EAAsBlB,GACjC,IAAQmB,EAAkDnB,EAAlDmB,KAAMC,EAA4CpB,EAA5CoB,UAAWC,EAAiCrB,EAAjCqB,YAAapB,EAAoBD,EAApBC,QAASE,EAAWH,EAAXG,OAE/C,IAAKgB,GAAQG,EAAQH,IAASA,IAAS,GAAI,OAAOH,EAACO,EAAQ,CAAArB,SAAEmB,IAC7D,KAAMD,EAAW,CACf,IAAMI,EAAaC,EAAcN,GACjC,GAAIK,GAAcJ,EAAY,EAAG,CAC/B,OACEJ,EAACjB,EAAU,CAACE,QAASA,EAASE,OAAQA,EAAOD,SAC1CiB,GAGP,KAAO,CACL,IAAMO,EAAcC,EAAUR,EAAMC,EAAY,GAChD,OACEJ,EAACY,EAAO,CAACC,UAAU,UAAUC,MAAOX,EAAKjB,SACvCc,EAACjB,EAAU,CAACE,QAASA,EAASE,OAAQA,EAAOD,SAC1CwB,KAIT,CACF,CACA,GAAI1B,EAAM+B,MAAO,CACf,OACEf,EAACjB,EAAU,CAACE,QAASA,EAASE,OAAQA,EAAOD,SAC3Cc,EAACgB,EAAe,CAACb,KAAMA,EAAMY,MAAO/B,EAAM+B,SAGhD,CACA,OACEf,EAACjB,EAAU,CAACE,QAASA,EAASE,OAAQA,EAAOD,SAC1CF,EAAMmB,MAGb"}
|
package/esm/tips-title/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.tips-title{border:1px solid #d9d9d9;border-radius:8px;padding:24px;position:relative}.tips-title-title{background-color:#fff;font-weight:600;left:10px;padding:0 10px;position:absolute;top:0;transform:translateY(-50%)}.tips-title-small{padding:12px}
|
|
1
|
+
.tips-title{border:1px solid #d9d9d9;border-radius:8px;padding:24px;position:relative}.tips-title-title{background-color:#fff;font-weight:600;left:10px;padding:0 10px;position:absolute;top:0;transform:translateY(-50%)}.tips-title-small{padding:12px}.tips-title+.tips-title{margin-top:20px}
|