@flatbiz/antd 4.5.56 → 4.5.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/cache.ts","@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate-dropdown.tsx","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/hooks/columns.tsx","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { isArray, isObject } from '@dimjs/lang';\nimport { localStorageCache, sessionStorageCache, TPlainObject } from '@flatbiz/utils';\n\nexport const filterCache = {\n set: (cacheKey: string, filterCondition: TPlainObject) => {\n const value = filterCache.get(cacheKey);\n const mergeParams = {\n ...value,\n ...filterCondition,\n };\n sessionStorageCache.set(`easy_tab_filter_${cacheKey}`, mergeParams);\n return mergeParams as TPlainObject;\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_filter_${cacheKey}`) as TPlainObject;\n return isObject(value) ? value : {};\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_filter_${cacheKey}`);\n },\n};\n\nexport const firstQueryCache = {\n set: (cacheKey: string, flag: boolean) => {\n sessionStorageCache.set(`easy_tab_firstQuery_${cacheKey}`, { value: flag });\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_firstQuery_${cacheKey}`)?.value;\n return value === false ? false : true;\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_firstQuery_${cacheKey}`);\n },\n};\n\nexport const columnFoldCache = {\n set: (cacheKey: string, value: string[]) => {\n localStorageCache.set(`easy_tab_columnFold_${cacheKey}`, { value });\n },\n get: (cacheKey: string) => {\n const value = localStorageCache.get(`easy_tab_columnFold_${cacheKey}`)?.value;\n return isArray(value) ? (value as string[]) : [];\n },\n remove: (cacheKey: string) => {\n localStorageCache.remove(`easy_tab_columnFold_${cacheKey}`);\n },\n};\n","import { noop, type TPlainObject } from '@flatbiz/utils';\nimport { type FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport type EditableFieldContextContextApi = {\n cacheKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableDataSource?: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initialValues?: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n getPaginationStatus: () => boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n onSetBaseColumns: (baseColumns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n onSetColumns: (columns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n columns?: TEasyTableTableColumn<TPlainObject>[];\n dynamicColumnsConfig: {\n showFoldKeyList: string[];\n onChangeShowFoldKeyList: (keys: string[]) => void;\n columnFoldOpen: boolean;\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onCloseColumnFoldModal: () => void;\n asyncColumnRequest?: EasyTableProps['asyncColumnRequest'];\n };\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { Checkbox, Popover } from 'antd';\nimport { Fragment, useState, type CSSProperties, type ReactElement } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex: string; title: string }[];\n onChange: (keys: string[]) => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n children?: ReactElement;\n};\n\nexport const FoldOperateDropdown = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n\n const onChange = (keys) => {\n setSelectedRowKeys(keys);\n props.onChange(keys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, keys);\n }\n };\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { classNames, get } from '@dimjs/utils';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\n\nimport { getUuid, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { PaginationWrapper } from '../pagination-wrapper';\n\nimport { columnFoldCache, filterCache, firstQueryCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport './style.less';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const screenType = fbaHooks.useResponsivePoint();\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const columnFoldConfig = props.columnFoldConfig;\n const asyncColumnRequest = props.asyncColumnRequest;\n\n const [columnFoldOpen, setColumnFoldOpen] = useState(false);\n\n const cacheKey = useMemo(() => {\n if (props.cacheKey) {\n try {\n const iframe = window.frameElement;\n const iframeId = iframe?.id || '';\n return `${props.cacheKey}_${iframeId}`;\n } catch (_error) {\n return props.cacheKey;\n }\n }\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return `${Date.now()}_${getUuid()}`;\n }, [props.cacheSwitch, props.cacheKey]);\n\n const cacheParams = filterCache.get(cacheKey);\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (cacheKey) {\n const columnFoldCacheValue = columnFoldCache.get(cacheKey);\n const cacheKeyList = isArray(columnFoldCacheValue)\n ? columnFoldCacheValue.filter((item) => isString(item))\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const paginationStatusRef = useRef(false);\n const respOriginalDataRef = useRef<TAny>();\n const baseColumnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n const [dynamicColumns, setDynamicColumns] = useState<TEasyTableTableColumn<TPlainObject>[]>();\n\n const columnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n\n const fieldNames = {\n list: 'list',\n total: 'total',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm(props.form);\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n if (props.breforeRequest) {\n try {\n await props.breforeRequest(form);\n } catch (_error) {\n return;\n }\n }\n firstQueryCache.set(cacheKey, false);\n setLoading(true);\n const paramsAll = filterCache.set(cacheKey, params);\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(paramsAll) : paramsAll;\n const respData = (await onRequest(fbaUtils.removeFormValuesInvalidField(paramsNew))) || {};\n respOriginalDataRef.current = respData;\n props.onDataSourceChange?.(respData);\n let respDataNew: TPlainObject = respData;\n if (requestResultAdapter) {\n respDataNew = requestResultAdapter(respData);\n }\n if (dynamicColumsAdapter) {\n const dynamicColumns = dynamicColumsAdapter(respData, baseColumnsRef.current);\n /** 不要添加默认值 */\n setDynamicColumns(dynamicColumns);\n }\n const respList = get(respDataNew, fieldNames.list);\n setDataSource(isArray(respList) ? respList : []);\n setTotal(get(respDataNew, fieldNames.total));\n setLoading(false);\n } catch (error: any) {\n setLoading(false);\n if (props.onRequestErrorHandle) {\n props.onRequestErrorHandle(error);\n } else {\n void message.error(error.message);\n }\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = getPaginationStatus();\n const firstQueryFlag = firstQueryCache.get(cacheKey);\n form.setFieldsValue({\n ...props.initialValues,\n ...cacheParams,\n });\n if (initRequest || !firstQueryFlag) {\n if (hasPagination) {\n void onInnerRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...props.initialValues,\n ...cacheParams,\n });\n } else {\n void onInnerRequest(props.initialValues);\n }\n } else {\n filterCache.set(cacheKey, props.initialValues || {});\n }\n }, []);\n\n const clearQueryCondition = hooks.useCallbackRef((values?: TPlainObject) => {\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n }\n });\n\n const updateQueryCondition = hooks.useCallbackRef((values: TPlainObject) => {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (getPaginationStatus()) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {\n [fieldNames.pageNo]: undefined,\n [fieldNames.pageSize]: undefined,\n };\n }\n };\n\n const onResetRequest = hooks.useCallbackRef((values?: TPlainObject) => {\n const params = {\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n ...props.initialValues,\n ...values,\n };\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n form.setFieldsValue(values);\n }\n void onInnerRequest(params);\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n return {\n ...cacheParams,\n ...form.getFieldsValue(),\n };\n });\n\n const onOpenColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(true);\n });\n\n const onCloseColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(false);\n });\n\n const getEasyTableRef = (): EasyTableRefApi => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n dataSource: respOriginalDataRef.current,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = { [fieldNames.list]: dataList };\n props.onDataSourceChange?.(respOriginalDataRef.current);\n },\n columnFoldTriggerRender: (children, columns: TEasyTableTableColumn<TPlainObject>[]) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n\n const foldColumnList = columns.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as { dataIndex: string; title: string }[]}\n onChange={onChangeFoldColumnList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n {children}\n </FoldOperateDropdown>\n );\n },\n onChangeTableColumns: (columns) => {\n setDynamicColumns(columns);\n },\n getTableColumns: () => {\n return columnsRef.current;\n },\n loading,\n setEnabledInitRequest: () => {\n firstQueryCache.set(cacheKey, false);\n },\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n paginationStatusRef.current = status;\n };\n\n const onSetBaseColumns = (base) => {\n baseColumnsRef.current = base;\n };\n\n const onSetColumns = (columns) => {\n columnsRef.current = columns;\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n if (props.onFormFinish) {\n props.onFormFinish({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const filterFixedFt = screenType === 'xs' ? false : props.filterFixed;\n const className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': filterFixedFt,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = fbaHooks.useMemoCustom(() => {\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, cacheParams, fieldNames.pageSize, cacheKey, pageSize, props.pagination, total]);\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n const params = {\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n };\n filterCache.set(cacheKey, params);\n void onInnerRequest(params);\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n void onInnerRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }, [props.paginationFixed]);\n\n const wrapperClassName = classNames(\n 'fba-easy-table-wrapper',\n {\n 'fba-easy-table-wrapper-inline': props.isInline,\n },\n props.className,\n );\n\n const wrapperStyle: CSSProperties = {\n overflowY: props.filterFixed || props.paginationFixed ? 'hidden' : 'auto',\n ...props.style,\n };\n\n const children =\n typeof props.children === 'function' ? props.children(respOriginalDataRef.current) : props.children;\n\n return (\n <EasyTableContext.Provider\n value={{\n onSetBaseColumns,\n onSetColumns,\n getEasyTableRef,\n cacheKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: dynamicColumns,\n initialValues: props.initialValues,\n dynamicColumnsConfig: {\n showFoldKeyList,\n onChangeShowFoldKeyList: onChangeFoldColumnList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onCloseColumnFoldModal,\n columnFoldOpen,\n asyncColumnRequest,\n },\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n <div className={className}>{children}</div>\n </div>\n )}\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { type FormInstance } from 'antd';\nimport { Children, useContext, useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n /**\n * @deprecated已过期,使用 easyFormProps.className 配置\n */\n formClassName?: string;\n /**\n * @deprecated已过期,使用 easyFormProps.style 配置\n */\n formStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout style */\n filterWrapperStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout className */\n filterWrapperClassName?: string;\n /**\n * 自定义 filterOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n easyFormProps?: Omit<\n EasyFormProps,\n 'isPure' | 'column' | 'forceColumn' | 'width' | 'gridGutter' | 'children'\n >;\n};\n\n/**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTableFilter>\n *\n * 2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n * 3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,默认重启按钮触发请求,默认值:true\n * 8. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const screenType = fbaHooks.useResponsivePoint() || 'md';\n const ctx = useContext(EasyTableContext);\n const {\n queryButtonProps,\n resetButtonProps,\n filterOperate,\n formClassName = '',\n defaultResetButtonTriggerRequest,\n filterWrapperStyle,\n filterWrapperClassName,\n rightOperateAreaAppendType,\n easyFormProps,\n } = props;\n const {\n cacheKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\n\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const [openFold, setOpenFold] = useState(false);\n\n const onReset = hooks.useCallbackRef(async () => {\n filterCache.remove(cacheKey);\n form.resetFields();\n form.setFieldsValue(initialValues);\n if (isUndefined(defaultResetButtonTriggerRequest) || defaultResetButtonTriggerRequest) {\n await form.validateFields();\n if (getPaginationStatus()) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n }\n });\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = filterOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n childrens,\n filterOperate,\n foldKeys,\n form,\n onReset,\n openFold,\n queryButtonProps,\n resetButtonProps,\n rightOperateAreaAppendTypeFt,\n ]);\n\n const labelAlign = screenType === 'xs' ? 'left' : easyFormProps?.labelAlign || 'right';\n\n return (\n <BlockLayout\n className={classNames('easy-table-filter', filterWrapperClassName)}\n style={filterWrapperStyle}\n >\n <EasyForm\n form={form}\n autoComplete=\"off\"\n onFinish={onFormFinish}\n // initialValues={initialValues}\n className={formClassName}\n style={props.formStyle}\n isPure={true}\n labelWidth=\"80\"\n formItemGap=\"15\"\n {...easyFormProps}\n labelAlign={labelAlign}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </EasyForm>\n </BlockLayout>\n );\n};\n","import { useContext } from 'react';\nimport { EasyTableContext } from './context';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useContext(EasyTableContext);\n return ctx.getEasyTableRef();\n};\n\n/**\n * @deprecated 已过时 @4.5.0版本移除,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const ctx = useContext(EasyTableContext);\n return {\n current: ctx.getEasyTableRef(),\n };\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { type ColumnsType } from 'antd/es/table';\nimport { type TableRowSelection } from 'antd/es/table/interface';\nimport { Fragment, useState, type CSSProperties } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex?: string; title: string }[];\n onChange: (keys: string[]) => void;\n open?: boolean;\n onClose?: () => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n};\n\nexport const FoldOperate = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n const rowSelection = {\n type: 'checkbox',\n selectedRowKeys: selectedRowKeys,\n onChange: (selectedRowKeys: string[]) => {\n setSelectedRowKeys(selectedRowKeys);\n props.onChange(selectedRowKeys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, selectedRowKeys);\n }\n },\n } as TableRowSelection<TAny>;\n\n const columns: ColumnsType<TPlainObject> = [\n {\n title: '字段名称',\n dataIndex: 'title',\n render: (value, recrd) => {\n return recrd['_isFoldTitle'] || value;\n },\n },\n { title: '字段Key', dataIndex: 'dataIndex' },\n ];\n\n return (\n <Fragment>\n <Drawer\n title=\"选择字段\"\n open={props.open}\n onClose={props.onClose}\n width={'35%'}\n styles={{\n body: {\n padding: 15,\n },\n }}\n >\n <Table\n bordered\n size=\"small\"\n columns={columns}\n rowSelection={rowSelection}\n rowKey=\"dataIndex\"\n pagination={false}\n scroll={{ x: 'max-content' }}\n dataSource={props.dataList}\n />\n </Drawer>\n </Fragment>\n );\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { useMemo } from 'react';\nimport { ButtonWrapper } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { FlexLayout } from '../../flex-layout';\nimport { IconWrapper } from '../../icon-wrapper';\nimport { SvgHttpView } from '../../svg-http-view';\nimport { TableTitleTooltip } from '../../table-title-tooltip';\nimport { TipsWrapper } from '../../tips-wrapper';\nimport { FoldOperateDropdown } from '../fold-operate-dropdown';\nimport { type EasyTableProps } from '../type';\n\nexport const useColumnsAppendTips = (props: { columns: TPlainObject[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, ...otherProps } = item;\n if (typeof title === 'string' && tipsWrapperProps) {\n if (typeof tipsWrapperProps === 'string') {\n return {\n ...otherProps,\n title: (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n ),\n };\n }\n return {\n ...otherProps,\n title: <TipsWrapper {...tipsWrapperProps}>{title}</TipsWrapper>,\n };\n }\n if (typeof title === 'string' && !!tooltip) {\n return {\n ...otherProps,\n title: <TableTitleTooltip tooltip={tooltip} title={title}></TableTitleTooltip>,\n };\n }\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns]);\n};\n\nexport const useColumnsAppendInnerColumn = (props: {\n columns: TPlainObject[];\n cacheKey: string;\n showFoldKeyList: string[];\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onChangeFoldColumnList: (keyList: string[]) => void;\n foldColumnList: TPlainObject[];\n}) => {\n const columnsNew = props.columns;\n return fbaHooks.useMemoCustom(() => {\n if (props.columnFoldConfig?.hidden) return columnsNew;\n const finalItem = columnsNew[columnsNew.length - 1];\n if (props.foldColumnList.length > 0 && columnsNew.length > 0) {\n const foldColumnTarget = columnsNew.find((item) => item['_isFoldColumn']);\n\n if (foldColumnTarget && finalItem.dataIndex !== foldColumnTarget.dataIndex) {\n foldColumnTarget.title = foldColumnTarget['_isFoldTitle'];\n foldColumnTarget['_isFoldColumn'] = false;\n }\n if (!finalItem['_isFoldColumn']) {\n finalItem['_isFoldTitle'] = finalItem['_isFoldTitle'] || finalItem.title;\n finalItem['_isFoldColumn'] = true;\n\n const triggerType = props.columnFoldConfig?.triggerType;\n\n finalItem.title = (\n <FlexLayout direction=\"horizontal\" fullIndex={0} style={{ alignItems: 'center' }}>\n <span>{finalItem.title}</span>\n <div style={{ padding: '0 5px 0 20px', display: 'flex' }}>\n {triggerType === 'drawer' ? (\n <IconWrapper\n onClick={props.onOpenColumnFoldModal}\n text={props.columnFoldConfig?.text}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n hoverTips={props.columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={props.foldColumnList as TAny[]}\n onChange={props.onChangeFoldColumnList}\n cacheKey={props.cacheKey}\n initSelectedRowKeys={props.showFoldKeyList}\n >\n <IconWrapper\n text={props.columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return columnsNew;\n }, [props.columns, props.columnFoldConfig]);\n};\n\nexport const useColumnsToHidden = (props: { columns: TPlainObject[]; showFoldKeyList: string[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { hidden, isFold } = item;\n if (hidden) return null;\n if (isFold && !props.showFoldKeyList.includes(item.dataIndex as string)) return null;\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns, props.showFoldKeyList]);\n};\n\nexport const useColumnByAsyncColumnRequest = (props: {\n columns: TPlainObject[];\n asyncColumnRequestResult: TPlainObject;\n}) => {\n return useMemo(() => {\n if (!Object.keys(props.asyncColumnRequestResult)) return props.columns;\n return props.columns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = props.asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [props.columns, props.asyncColumnRequestResult]);\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Space, Table, type TableProps } from 'antd';\nimport {\n Fragment,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n} from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { FlexLayout } from '../flex-layout';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport {\n useColumnByAsyncColumnRequest,\n useColumnsAppendInnerColumn,\n useColumnsAppendTips,\n useColumnsToHidden,\n} from './hooks/columns';\nimport { type TEasyTableTableColumn } from './type';\n\nconst TitleRender = (props: {\n /** 标题 */\n title?: ReactNode;\n /** 动作 */\n actions?: ReactElement[];\n}) => {\n if (!props.title && !props.actions?.length) {\n return null;\n }\n return (\n <FlexLayout fullIndex={0} direction=\"horizontal\" style={{ marginBottom: 10, alignItems: 'center' }}>\n {props.title ? <div style={{ fontWeight: 400, fontSize: 16 }}>{props.title}</div> : null}\n <Space size={10}>{props.actions}</Space>\n </FlexLayout>\n );\n};\n\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns' | 'title'\n> & {\n children?: ReactElement | ReactElement[];\n /**\n * 表格行 key 的取值,\n * ```\n * 如果 rowKey 为string类型\n * 1. 组件会判断表格列表数据第一条是否存在当前rowKey对象的数据,如果没有组件内部会动态添加唯一值\n * 2. 基于上一条的逻辑,如果表格数据没有唯一值,可指定 rowKey 值为table数据中不存在的字段名,例如:rowKey=\"_uid\"\n * 3. 如果触发上述逻辑,表格数据中会多出rowKey对应的键值对数据\n * ```\n */\n rowKey: TableProps<TAny>['rowKey'];\n /** table Form 外层 SimpleLayout className */\n tableWrapperStyle?: CSSProperties;\n /** table Form 外层 SimpleLayout className */\n tableWrapperClassName?: string;\n /**\n * ```\n * 1. 当配置了 EasyTable.serviceConfig.dynamicColumsAdapter 后,columns配置只在初始化有效,再次修改无效\n * 2. 可通过 EasyTableRef.onChangeTableColumns 实现 columns 的指定修改\n * ```\n */\n columns: TEasyTableTableColumn<T>[];\n /**\n * 数据加载与表格初始化渲染 是否同步\n * @version 4.4.6\n * ```\n * 1. true:获取数据后再初始化渲染表格(可用于实现表格中defaultXxxx相关功能的使用)\n * ```\n */\n isSync?: boolean;\n /**\n * 空效果显示尺寸,默认值:small\n * @version 4.4.6\n */\n emptyShowSize?: 'small' | 'large';\n\n /** 标题 */\n title?: ReactNode;\n /** 动作 */\n actions?: ReactElement[];\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\nexport const EasyTableTable = <T extends TPlainObject>(props: EasyTableTableProps<T>) => {\n const ctx = useContext(EasyTableContext);\n const { children, rowKey, pagination, isSync, title, actions, ...otherProps } = props;\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n\n const {\n columnFoldConfig,\n onCloseColumnFoldModal,\n columnFoldOpen,\n onOpenColumnFoldModal,\n asyncColumnRequest,\n showFoldKeyList,\n onChangeShowFoldKeyList,\n } = ctx.dynamicColumnsConfig;\n\n const {\n cacheKey,\n fieldNames,\n onRequest,\n tableDataSource,\n pageSize,\n tableTotal,\n loading,\n paginationFixed,\n onSetPaginationStatus,\n } = ctx;\n\n const cacheParams = filterCache.get(cacheKey);\n\n fbaHooks.useEffectCustom(() => {\n /** 获取初始化 columns 数据 */\n ctx.onSetBaseColumns((props.columns || []) as TEasyTableTableColumn<TPlainObject>[]);\n }, []);\n\n useEffect(() => {\n if (asyncColumnRequest?.length) {\n for (let index = 0; index < asyncColumnRequest.length; index++) {\n const element = asyncColumnRequest[index];\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: true },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n element\n .onRequest()\n .then((respData) => {\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false, respData },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n })\n .catch((error) => {\n console.error(error?.message);\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n });\n }\n }\n }, [asyncColumnRequest]);\n\n const columnsOriginal = fbaHooks.useMemoCustom(() => {\n if (ctx.columns) {\n ctx.onSetColumns(ctx.columns);\n return ctx.columns as TEasyTableTableColumn<T>[];\n } else {\n ctx.onSetColumns(props.columns as TEasyTableTableColumn<TPlainObject>[]);\n return props.columns;\n }\n }, [ctx.columns, props.columns]);\n\n let columnsNew = useColumnsAppendTips({\n columns: [...columnsOriginal],\n });\n\n const foldColumnList = columnsOriginal.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n columnsNew = useColumnsAppendInnerColumn({\n cacheKey,\n columns: columnsNew,\n foldColumnList,\n showFoldKeyList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onChangeFoldColumnList: onChangeShowFoldKeyList,\n });\n\n columnsNew = useColumnsToHidden({\n columns: columnsNew,\n showFoldKeyList,\n });\n\n columnsNew = useColumnByAsyncColumnRequest({\n columns: columnsNew,\n asyncColumnRequestResult,\n });\n\n fbaHooks.useEffectCustom(() => {\n onSetPaginationStatus(pagination !== false);\n }, [pagination]);\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (!paginationFixed) {\n if (pagination !== false) {\n onRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n onRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }\n }, [pagination]);\n\n const tablePaginationData = useMemo(() => {\n if (paginationFixed || pagination === false) return false;\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n // selectComponentClass: SmallSelect,\n };\n }, [\n cacheParams,\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (pagination, filters, sorter, extra) => {\n if (extra.action === 'paginate' && tablePaginationData) {\n onRequest({\n [fieldNames.pageSize]: pagination.pageSize,\n [fieldNames.pageNo]: pagination.current,\n });\n } else {\n props.onChange?.(pagination, filters, sorter, extra);\n }\n };\n\n const dataSource = useMemo(() => {\n if (!tableDataSource) return undefined;\n if (tableDataSource.length === 0) {\n return [];\n }\n if (typeof rowKey === 'string' && isUndefinedOrNull(tableDataSource[0][rowKey])) {\n return tableDataSource.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableDataSource;\n }, [tableDataSource, rowKey]);\n\n columnsNew = useMemo(() => {\n return columnsNew.map((item) => {\n if (!!item.fixed && screenType === 'xs') {\n item.fixed = undefined;\n }\n if (!!item.defaultValue && !item.render) {\n item.render = (value) => {\n return isUndefinedOrNull(value) || value == '' ? item.defaultValue : value;\n };\n }\n return item;\n });\n }, [columnsNew, screenType]);\n\n const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <Table\n key=\"1\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n rowKey={rowKey as TAny}\n columns={columnsNew}\n loading={loading}\n />\n </Fragment>\n );\n }\n if (isMacEnv()) {\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <Table\n key=\"2\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </Fragment>\n );\n }\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeShowFoldKeyList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { firstQueryCache } from './cache';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n *\n * 1. 废弃modelKey参数\n * 2. 如果需要在路由跳转回退中缓存查询条件,设置cacheSwitch=true;如果存在多个EasyTable缓存情况可设置cacheSwitch为自定义字符串\n * 3. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 4. 可通过属性 initRequest 设置初始化是否请求数据\n * 5. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 6. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 7. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 8. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 9. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 10. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提高windows下table左右滚动体验\n * 11. 可实现部分字段折叠,手动选择显示,将EasyTable.Table columns中isFold属性设为true,可通过EasyTable columnFoldConfig配置属性,demo(https://fex.qa.tcshuke.com/docs/admin/main/crud/demo1)\n * 12. 通过asyncColumnRequest、asyncRender配合使用可实现表格列数据接口渲染(demo:https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table)\n * ```\n */\nexport const EasyTable = fbaUtils.attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTable.Filter>\n * 2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n * 3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n * 8. 通过easyFormProps属性可整体控制子节点FormItem布局\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\n Table: EasyTableTable,\n /**\n * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n /** 设置启用初始化请求 */\n setEnabledInitRequest: (cacheKey: string) => {\n firstQueryCache.set(cacheKey, false);\n },\n});\n"],"names":["filterCache","set","cacheKey","filterCondition","value","get","mergeParams","_extends","sessionStorageCache","_isObject","remove","firstQueryCache","flag","_sessionStorageCache$","columnFoldCache","localStorageCache","_localStorageCache$ge","_isArray","EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperateDropdown","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","onChange","keys","content","_jsx","Fragment","children","Checkbox","Group","defaultValue","style","display","flexDirection","dataList","map","item","label","title","dataIndex","padding","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","EasyTable","forwardRef","ref","_props$initialPaginat","screenType","fbaHooks","useResponsivePoint","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","useMemo","iframe","window","frameElement","iframeId","id","_error","cacheSwitch","location","pathname","Date","now","getUuid","cacheParams","_useState5","columnFoldCacheValue","cacheKeyList","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","pageSize","initialPaginationParams","initRequest","undefined","paginationStatusRef","useRef","respOriginalDataRef","baseColumnsRef","_useState6","dynamicColumns","setDynamicColumns","columnsRef","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","_hooks","useCallbackRef","params","Promise","$return","$error","paramsAll","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_2_Post","$boundEx","$Try_2_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_3_Post","$If_4","call","this","bind","$Try_3_Catch","resolve","then","$await_5","serviceConfig","fbaUtils","removeFormValuesInvalidField","$await_6","current","onDataSourceChange","_get","useEffectCustom","hasPagination","getPaginationStatus","firstQueryFlag","setFieldsValue","initialValues","_extends2","clearQueryCondition","values","resetFields","updateQueryCondition","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","_respOriginalDataRef$","columnFoldTriggerRender","columns","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","hidden","isFold","onChangeFoldColumnList","onChangeTableColumns","getTableColumns","setEnabledInitRequest","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onSetColumns","onFormFinish","isFull","_isUndefined","filterFixedFt","filterFixed","className","_classNames","paginationFixed","paginationData","useMemoCustom","showSizeChanger","showTotal","pagination","keyList","page","_params","_props$pagination","useUpdateEffect","_onInnerRequest","_onInnerRequest2","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","dynamicColumnsConfig","onChangeShowFoldKeyList","_jsxs","PaginationWrapper","size","EasyTableFilter","ctx","useContext","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","onReset","validateFields","$await_2","$If_1","formRowChildren","defaultRightList","ButtonWrapper","type","htmlType","text","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","index","find","keyItem","key","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","FoldOperate","rowSelection","render","recrd","Drawer","open","onClose","width","styles","body","Table","bordered","rowKey","scroll","x","useColumnsAppendTips","tempList","tooltip","tipsWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","TipsWrapper","tipType","popoverProps","TableTitleTooltip","useColumnsAppendInnerColumn","columnsNew","finalItem","foldColumnTarget","_props$columnFoldConf2","_props$columnFoldConf3","_props$columnFoldConf4","_props$columnFoldConf5","_props$columnFoldConf6","_props$columnFoldConf7","FlexLayout","direction","fullIndex","alignItems","IconWrapper","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","useColumnsToHidden","includes","useColumnByAsyncColumnRequest","Object","asyncColumnRequestResult","result","loadingPosition","removeGap","asyncRender","record","TitleRender","_props$actions","actions","marginBottom","fontWeight","Space","EasyTableTable","isSync","asyncColumnRequestResultRef","setAsyncColumnRequestResult","_ctx$dynamicColumnsCo","useEffect","_loop","element","_extends3","catch","_extends4","console","columnsOriginal","_onRequest","_onRequest2","tablePaginationData","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","fixed","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/cache.ts","@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate-dropdown.tsx","@flatbiz/antd/src/easy-table/utils.ts","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/hooks/columns.tsx","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { isArray, isObject } from '@dimjs/lang';\nimport { localStorageCache, sessionStorageCache, TPlainObject } from '@flatbiz/utils';\n\nexport const filterCache = {\n set: (cacheKey: string, filterCondition: TPlainObject) => {\n const value = filterCache.get(cacheKey);\n const mergeParams = {\n ...value,\n ...filterCondition,\n };\n sessionStorageCache.set(`easy_tab_filter_${cacheKey}`, mergeParams);\n return mergeParams as TPlainObject;\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_filter_${cacheKey}`) as TPlainObject;\n return isObject(value) ? value : {};\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_filter_${cacheKey}`);\n },\n};\n\nexport const firstQueryCache = {\n set: (cacheKey: string, flag: boolean) => {\n sessionStorageCache.set(`easy_tab_firstQuery_${cacheKey}`, { value: flag });\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_firstQuery_${cacheKey}`)?.value;\n return value === false ? false : true;\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_firstQuery_${cacheKey}`);\n },\n};\n\nexport const columnFoldCache = {\n set: (cacheKey: string, value: string[]) => {\n localStorageCache.set(`easy_tab_columnFold_${cacheKey}`, { value });\n },\n get: (cacheKey: string) => {\n const value = localStorageCache.get(`easy_tab_columnFold_${cacheKey}`)?.value;\n return isArray(value) ? (value as string[]) : [];\n },\n remove: (cacheKey: string) => {\n localStorageCache.remove(`easy_tab_columnFold_${cacheKey}`);\n },\n};\n","import { noop, type TPlainObject } from '@flatbiz/utils';\nimport { type FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport type EditableFieldContextContextApi = {\n cacheKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableDataSource?: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initialValues?: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n getPaginationStatus: () => boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n onSetBaseColumns: (baseColumns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n onSetColumns: (columns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n columns?: TEasyTableTableColumn<TPlainObject>[];\n dynamicColumnsConfig: {\n showFoldKeyList: string[];\n onChangeShowFoldKeyList: (keys: string[]) => void;\n columnFoldOpen: boolean;\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onCloseColumnFoldModal: () => void;\n asyncColumnRequest?: EasyTableProps['asyncColumnRequest'];\n };\n filterFormItemKeys?: string[];\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { Checkbox, Popover } from 'antd';\nimport { Fragment, useState, type CSSProperties, type ReactElement } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex: string; title: string }[];\n onChange: (keys: string[]) => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n children?: ReactElement;\n};\n\nexport const FoldOperateDropdown = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n\n const onChange = (keys) => {\n setSelectedRowKeys(keys);\n props.onChange(keys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, keys);\n }\n };\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import type { TPlainObject } from '@flatbiz/utils';\nimport type { FormInstance } from 'antd';\n\nexport const getFormFieldsValue = (form: FormInstance, filterFormItemKeys?: string[]) => {\n const formValues = (form.getFieldsValue() || {}) as TPlainObject;\n if (!filterFormItemKeys?.length) {\n return formValues;\n }\n const values: TPlainObject = {};\n\n filterFormItemKeys.forEach((item) => {\n values[item] = formValues[item];\n });\n return values;\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { classNames, get } from '@dimjs/utils';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\n\nimport { getUuid, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { PaginationWrapper } from '../pagination-wrapper';\n\nimport { columnFoldCache, filterCache, firstQueryCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport './style.less';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\nimport { getFormFieldsValue } from './utils';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const screenType = fbaHooks.useResponsivePoint();\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const columnFoldConfig = props.columnFoldConfig;\n const asyncColumnRequest = props.asyncColumnRequest;\n\n const [columnFoldOpen, setColumnFoldOpen] = useState(false);\n\n const cacheKey = useMemo(() => {\n if (props.cacheKey) {\n try {\n const iframe = window.frameElement;\n const iframeId = iframe?.id || '';\n return `${props.cacheKey}_${iframeId}`;\n } catch (_error) {\n return props.cacheKey;\n }\n }\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return `${Date.now()}_${getUuid()}`;\n }, [props.cacheSwitch, props.cacheKey]);\n\n const cacheParams = filterCache.get(cacheKey);\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (cacheKey) {\n const columnFoldCacheValue = columnFoldCache.get(cacheKey);\n const cacheKeyList = isArray(columnFoldCacheValue)\n ? columnFoldCacheValue.filter((item) => isString(item))\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const paginationStatusRef = useRef(false);\n const respOriginalDataRef = useRef<TAny>();\n const baseColumnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n const [dynamicColumns, setDynamicColumns] = useState<TEasyTableTableColumn<TPlainObject>[]>();\n\n const columnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n\n const fieldNames = {\n list: 'list',\n total: 'total',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n const outerForm = Form.useFormInstance();\n const [form] = Form.useForm(props.form || outerForm);\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n if (props.breforeRequest) {\n try {\n await props.breforeRequest(form);\n } catch (_error) {\n return;\n }\n }\n firstQueryCache.set(cacheKey, false);\n setLoading(true);\n const paramsAll = filterCache.set(cacheKey, params);\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(paramsAll) : paramsAll;\n const respData = (await onRequest(fbaUtils.removeFormValuesInvalidField(paramsNew))) || {};\n respOriginalDataRef.current = respData;\n props.onDataSourceChange?.(respData);\n let respDataNew: TPlainObject = respData;\n if (requestResultAdapter) {\n respDataNew = requestResultAdapter(respData);\n }\n if (dynamicColumsAdapter) {\n const dynamicColumns = dynamicColumsAdapter(respData, baseColumnsRef.current);\n /** 不要添加默认值 */\n setDynamicColumns(dynamicColumns);\n }\n const respList = get(respDataNew, fieldNames.list);\n setDataSource(isArray(respList) ? respList : []);\n setTotal(get(respDataNew, fieldNames.total));\n setLoading(false);\n } catch (error: any) {\n setLoading(false);\n if (props.onRequestErrorHandle) {\n props.onRequestErrorHandle(error);\n } else {\n void message.error(error.message);\n }\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = getPaginationStatus();\n const firstQueryFlag = firstQueryCache.get(cacheKey);\n form.setFieldsValue({\n ...props.initialValues,\n ...cacheParams,\n });\n if (initRequest || !firstQueryFlag) {\n if (hasPagination) {\n void onInnerRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...props.initialValues,\n ...cacheParams,\n });\n } else {\n void onInnerRequest(props.initialValues);\n }\n } else {\n filterCache.set(cacheKey, props.initialValues || {});\n }\n }, []);\n\n const clearQueryCondition = hooks.useCallbackRef((values?: TPlainObject) => {\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n }\n });\n\n const updateQueryCondition = hooks.useCallbackRef((values: TPlainObject) => {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (getPaginationStatus()) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {\n [fieldNames.pageNo]: undefined,\n [fieldNames.pageSize]: undefined,\n };\n }\n };\n\n const onResetRequest = hooks.useCallbackRef((values?: TPlainObject) => {\n const params = {\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n ...props.initialValues,\n ...values,\n };\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n form.setFieldsValue(values);\n }\n void onInnerRequest(params);\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n return {\n ...cacheParams,\n ...getFormFieldsValue(form, props.filterFormItemKeys),\n };\n });\n\n const onOpenColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(true);\n });\n\n const onCloseColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(false);\n });\n\n const getEasyTableRef = (): EasyTableRefApi => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n dataSource: respOriginalDataRef.current,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = { [fieldNames.list]: dataList };\n props.onDataSourceChange?.(respOriginalDataRef.current);\n },\n columnFoldTriggerRender: (children, columns: TEasyTableTableColumn<TPlainObject>[]) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n\n const foldColumnList = columns.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as { dataIndex: string; title: string }[]}\n onChange={onChangeFoldColumnList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n {children}\n </FoldOperateDropdown>\n );\n },\n onChangeTableColumns: (columns) => {\n setDynamicColumns(columns);\n },\n getTableColumns: () => {\n return columnsRef.current;\n },\n loading,\n setEnabledInitRequest: () => {\n firstQueryCache.set(cacheKey, false);\n },\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n paginationStatusRef.current = status;\n };\n\n const onSetBaseColumns = (base) => {\n baseColumnsRef.current = base;\n };\n\n const onSetColumns = (columns) => {\n columnsRef.current = columns;\n };\n\n const onFormFinish = () => {\n if (loading) {\n console.log('loading...');\n return;\n }\n const values = getFormFieldsValue(form, props.filterFormItemKeys);\n if (props.onFormFinish) {\n props.onFormFinish({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const filterFixedFt = screenType === 'xs' ? false : props.filterFixed;\n const className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': filterFixedFt,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = fbaHooks.useMemoCustom(() => {\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, cacheParams, fieldNames.pageSize, cacheKey, pageSize, props.pagination, total]);\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n const params = {\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n };\n filterCache.set(cacheKey, params);\n void onInnerRequest(params);\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n void onInnerRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }, [props.paginationFixed]);\n\n const wrapperClassName = classNames(\n 'fba-easy-table-wrapper',\n {\n 'fba-easy-table-wrapper-inline': props.isInline,\n },\n props.className,\n );\n\n const wrapperStyle: CSSProperties = {\n overflowY: props.filterFixed || props.paginationFixed ? 'hidden' : 'auto',\n ...props.style,\n };\n\n const children =\n typeof props.children === 'function' ? props.children(respOriginalDataRef.current) : props.children;\n\n return (\n <EasyTableContext.Provider\n value={{\n onSetBaseColumns,\n onSetColumns,\n getEasyTableRef,\n cacheKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: dynamicColumns,\n initialValues: props.initialValues,\n dynamicColumnsConfig: {\n showFoldKeyList,\n onChangeShowFoldKeyList: onChangeFoldColumnList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onCloseColumnFoldModal,\n columnFoldOpen,\n asyncColumnRequest,\n },\n filterFormItemKeys: props.filterFormItemKeys,\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n <div className={className}>{children}</div>\n </div>\n )}\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, type FormInstance } from 'antd';\nimport { Children, useContext, useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n /**\n * @deprecated已过期,使用 easyFormProps.className 配置\n */\n formClassName?: string;\n /**\n * @deprecated已过期,使用 easyFormProps.style 配置\n */\n formStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout style */\n filterWrapperStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout className */\n filterWrapperClassName?: string;\n /**\n * 自定义 filterOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n easyFormProps?: Omit<\n EasyFormProps,\n 'isPure' | 'column' | 'forceColumn' | 'width' | 'gridGutter' | 'children'\n >;\n};\n\n/**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTableFilter>\n *\n * 2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n * 3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,默认重启按钮触发请求,默认值:true\n * 8. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const screenType = fbaHooks.useResponsivePoint() || 'md';\n const ctx = useContext(EasyTableContext);\n const inheritForm = Form.useFormInstance();\n const {\n queryButtonProps,\n resetButtonProps,\n filterOperate,\n formClassName = '',\n defaultResetButtonTriggerRequest,\n filterWrapperStyle,\n filterWrapperClassName,\n rightOperateAreaAppendType,\n easyFormProps,\n } = props;\n const {\n cacheKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\n\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const [openFold, setOpenFold] = useState(false);\n\n /** 是否支持回车事件 */\n const supportEnterEvent = useMemo(() => {\n if (ctx.filterFormItemKeys?.length || inheritForm) {\n return false;\n }\n return true;\n }, [ctx.filterFormItemKeys?.length, inheritForm]);\n\n const onReset = hooks.useCallbackRef(async () => {\n if (ctx.loading) {\n console.log('loading...');\n return;\n }\n filterCache.remove(cacheKey);\n form.resetFields();\n form.setFieldsValue(initialValues);\n if (isUndefined(defaultResetButtonTriggerRequest) || defaultResetButtonTriggerRequest) {\n await form.validateFields(ctx.filterFormItemKeys);\n if (getPaginationStatus()) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n }\n });\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper\n key=\"1\"\n type=\"primary\"\n htmlType={supportEnterEvent ? 'submit' : undefined}\n loadingPosition=\"center\"\n loading={ctx.loading}\n onClick={() => {\n // 当前EasyTable嵌套在Form内部时,EasyForm 的 onFinish={onFormFinish}配置将失效\n if (inheritForm || ctx.filterFormItemKeys?.length) {\n void form.validateFields(ctx.filterFormItemKeys).then(() => {\n onFormFinish?.();\n });\n }\n }}\n {...queryButtonProps}\n style={{\n ...queryButtonProps?.style,\n cursor: ctx.loading ? 'not-allowed' : undefined,\n }}\n >\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper\n key=\"2\"\n onClick={onReset}\n {...resetButtonProps}\n style={{\n ...resetButtonProps?.style,\n cursor: ctx.loading ? 'not-allowed' : undefined,\n }}\n >\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = filterOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n queryButtonProps,\n supportEnterEvent,\n ctx.loading,\n ctx.filterFormItemKeys,\n resetButtonProps,\n onReset,\n filterOperate,\n form,\n foldKeys,\n childrens,\n inheritForm,\n onFormFinish,\n rightOperateAreaAppendTypeFt,\n openFold,\n ]);\n\n const labelAlign = screenType === 'xs' ? 'left' : easyFormProps?.labelAlign || 'right';\n\n return (\n <BlockLayout\n className={classNames('easy-table-filter', filterWrapperClassName)}\n style={filterWrapperStyle}\n >\n <EasyForm\n form={form}\n autoComplete=\"off\"\n onFinish={supportEnterEvent ? onFormFinish : undefined}\n // initialValues={initialValues}\n className={formClassName}\n style={props.formStyle}\n isPure={true}\n labelWidth=\"80\"\n formItemGap=\"15\"\n {...easyFormProps}\n labelAlign={labelAlign}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </EasyForm>\n </BlockLayout>\n );\n};\n","import { useContext } from 'react';\nimport { EasyTableContext } from './context';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useContext(EasyTableContext);\n return ctx.getEasyTableRef();\n};\n\n/**\n * @deprecated 已过时 @4.5.0版本移除,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const ctx = useContext(EasyTableContext);\n return {\n current: ctx.getEasyTableRef(),\n };\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { type ColumnsType } from 'antd/es/table';\nimport { type TableRowSelection } from 'antd/es/table/interface';\nimport { Fragment, useState, type CSSProperties } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex?: string; title: string }[];\n onChange: (keys: string[]) => void;\n open?: boolean;\n onClose?: () => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n};\n\nexport const FoldOperate = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n const rowSelection = {\n type: 'checkbox',\n selectedRowKeys: selectedRowKeys,\n onChange: (selectedRowKeys: string[]) => {\n setSelectedRowKeys(selectedRowKeys);\n props.onChange(selectedRowKeys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, selectedRowKeys);\n }\n },\n } as TableRowSelection<TAny>;\n\n const columns: ColumnsType<TPlainObject> = [\n {\n title: '字段名称',\n dataIndex: 'title',\n render: (value, recrd) => {\n return recrd['_isFoldTitle'] || value;\n },\n },\n { title: '字段Key', dataIndex: 'dataIndex' },\n ];\n\n return (\n <Fragment>\n <Drawer\n title=\"选择字段\"\n open={props.open}\n onClose={props.onClose}\n width={'35%'}\n styles={{\n body: {\n padding: 15,\n },\n }}\n >\n <Table\n bordered\n size=\"small\"\n columns={columns}\n rowSelection={rowSelection}\n rowKey=\"dataIndex\"\n pagination={false}\n scroll={{ x: 'max-content' }}\n dataSource={props.dataList}\n />\n </Drawer>\n </Fragment>\n );\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { useMemo } from 'react';\nimport { ButtonWrapper } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { FlexLayout } from '../../flex-layout';\nimport { IconWrapper } from '../../icon-wrapper';\nimport { SvgHttpView } from '../../svg-http-view';\nimport { TableTitleTooltip } from '../../table-title-tooltip';\nimport { TipsWrapper } from '../../tips-wrapper';\nimport { FoldOperateDropdown } from '../fold-operate-dropdown';\nimport { type EasyTableProps } from '../type';\n\nexport const useColumnsAppendTips = (props: { columns: TPlainObject[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, ...otherProps } = item;\n if (typeof title === 'string' && tipsWrapperProps) {\n if (typeof tipsWrapperProps === 'string') {\n return {\n ...otherProps,\n title: (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n ),\n };\n }\n return {\n ...otherProps,\n title: <TipsWrapper {...tipsWrapperProps}>{title}</TipsWrapper>,\n };\n }\n if (typeof title === 'string' && !!tooltip) {\n return {\n ...otherProps,\n title: <TableTitleTooltip tooltip={tooltip} title={title}></TableTitleTooltip>,\n };\n }\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns]);\n};\n\nexport const useColumnsAppendInnerColumn = (props: {\n columns: TPlainObject[];\n cacheKey: string;\n showFoldKeyList: string[];\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onChangeFoldColumnList: (keyList: string[]) => void;\n foldColumnList: TPlainObject[];\n}) => {\n const columnsNew = props.columns;\n return fbaHooks.useMemoCustom(() => {\n if (props.columnFoldConfig?.hidden) return columnsNew;\n const finalItem = columnsNew[columnsNew.length - 1];\n if (props.foldColumnList.length > 0 && columnsNew.length > 0) {\n const foldColumnTarget = columnsNew.find((item) => item['_isFoldColumn']);\n\n if (foldColumnTarget && finalItem.dataIndex !== foldColumnTarget.dataIndex) {\n foldColumnTarget.title = foldColumnTarget['_isFoldTitle'];\n foldColumnTarget['_isFoldColumn'] = false;\n }\n if (!finalItem['_isFoldColumn']) {\n finalItem['_isFoldTitle'] = finalItem['_isFoldTitle'] || finalItem.title;\n finalItem['_isFoldColumn'] = true;\n\n const triggerType = props.columnFoldConfig?.triggerType;\n\n finalItem.title = (\n <FlexLayout direction=\"horizontal\" fullIndex={0} style={{ alignItems: 'center' }}>\n <span>{finalItem.title}</span>\n <div style={{ padding: '0 5px 0 20px', display: 'flex' }}>\n {triggerType === 'drawer' ? (\n <IconWrapper\n onClick={props.onOpenColumnFoldModal}\n text={props.columnFoldConfig?.text}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n hoverTips={props.columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={props.foldColumnList as TAny[]}\n onChange={props.onChangeFoldColumnList}\n cacheKey={props.cacheKey}\n initSelectedRowKeys={props.showFoldKeyList}\n >\n <IconWrapper\n text={props.columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return columnsNew;\n }, [props.columns, props.columnFoldConfig]);\n};\n\nexport const useColumnsToHidden = (props: { columns: TPlainObject[]; showFoldKeyList: string[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { hidden, isFold } = item;\n if (hidden) return null;\n if (isFold && !props.showFoldKeyList.includes(item.dataIndex as string)) return null;\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns, props.showFoldKeyList]);\n};\n\nexport const useColumnByAsyncColumnRequest = (props: {\n columns: TPlainObject[];\n asyncColumnRequestResult: TPlainObject;\n}) => {\n return useMemo(() => {\n if (!Object.keys(props.asyncColumnRequestResult)) return props.columns;\n return props.columns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = props.asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [props.columns, props.asyncColumnRequestResult]);\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Space, Table, type TableProps } from 'antd';\nimport {\n Fragment,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n} from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { FlexLayout } from '../flex-layout';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport {\n useColumnByAsyncColumnRequest,\n useColumnsAppendInnerColumn,\n useColumnsAppendTips,\n useColumnsToHidden,\n} from './hooks/columns';\nimport { type TEasyTableTableColumn } from './type';\n\nconst TitleRender = (props: {\n /** 标题 */\n title?: ReactNode;\n /** 动作 */\n actions?: ReactElement[];\n}) => {\n if (!props.title && !props.actions?.length) {\n return null;\n }\n return (\n <FlexLayout fullIndex={0} direction=\"horizontal\" style={{ marginBottom: 10, alignItems: 'center' }}>\n {props.title ? <div style={{ fontWeight: 400, fontSize: 16 }}>{props.title}</div> : null}\n <Space size={10}>{props.actions}</Space>\n </FlexLayout>\n );\n};\n\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns' | 'title'\n> & {\n children?: ReactElement | ReactElement[];\n /**\n * 表格行 key 的取值,\n * ```\n * 如果 rowKey 为string类型\n * 1. 组件会判断表格列表数据第一条是否存在当前rowKey对象的数据,如果没有组件内部会动态添加唯一值\n * 2. 基于上一条的逻辑,如果表格数据没有唯一值,可指定 rowKey 值为table数据中不存在的字段名,例如:rowKey=\"_uid\"\n * 3. 如果触发上述逻辑,表格数据中会多出rowKey对应的键值对数据\n * ```\n */\n rowKey: TableProps<TAny>['rowKey'];\n /** table Form 外层 SimpleLayout className */\n tableWrapperStyle?: CSSProperties;\n /** table Form 外层 SimpleLayout className */\n tableWrapperClassName?: string;\n /**\n * ```\n * 1. 当配置了 EasyTable.serviceConfig.dynamicColumsAdapter 后,columns配置只在初始化有效,再次修改无效\n * 2. 可通过 EasyTableRef.onChangeTableColumns 实现 columns 的指定修改\n * ```\n */\n columns: TEasyTableTableColumn<T>[];\n /**\n * 数据加载与表格初始化渲染 是否同步\n * @version 4.4.6\n * ```\n * 1. true:获取数据后再初始化渲染表格(可用于实现表格中defaultXxxx相关功能的使用)\n * ```\n */\n isSync?: boolean;\n /**\n * 空效果显示尺寸,默认值:small\n * @version 4.4.6\n */\n emptyShowSize?: 'small' | 'large';\n\n /** 标题 */\n title?: ReactNode;\n /** 动作 */\n actions?: ReactElement[];\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\nexport const EasyTableTable = <T extends TPlainObject>(props: EasyTableTableProps<T>) => {\n const ctx = useContext(EasyTableContext);\n const { children, rowKey, pagination, isSync, title, actions, ...otherProps } = props;\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n\n const {\n columnFoldConfig,\n onCloseColumnFoldModal,\n columnFoldOpen,\n onOpenColumnFoldModal,\n asyncColumnRequest,\n showFoldKeyList,\n onChangeShowFoldKeyList,\n } = ctx.dynamicColumnsConfig;\n\n const {\n cacheKey,\n fieldNames,\n onRequest,\n tableDataSource,\n pageSize,\n tableTotal,\n loading,\n paginationFixed,\n onSetPaginationStatus,\n } = ctx;\n\n const cacheParams = filterCache.get(cacheKey);\n\n fbaHooks.useEffectCustom(() => {\n /** 获取初始化 columns 数据 */\n ctx.onSetBaseColumns((props.columns || []) as TEasyTableTableColumn<TPlainObject>[]);\n }, []);\n\n useEffect(() => {\n if (asyncColumnRequest?.length) {\n for (let index = 0; index < asyncColumnRequest.length; index++) {\n const element = asyncColumnRequest[index];\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: true },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n element\n .onRequest()\n .then((respData) => {\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false, respData },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n })\n .catch((error) => {\n console.error(error?.message);\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n });\n }\n }\n }, [asyncColumnRequest]);\n\n const columnsOriginal = fbaHooks.useMemoCustom(() => {\n if (ctx.columns) {\n ctx.onSetColumns(ctx.columns);\n return ctx.columns as TEasyTableTableColumn<T>[];\n } else {\n ctx.onSetColumns(props.columns as TEasyTableTableColumn<TPlainObject>[]);\n return props.columns;\n }\n }, [ctx.columns, props.columns]);\n\n let columnsNew = useColumnsAppendTips({\n columns: [...columnsOriginal],\n });\n\n const foldColumnList = columnsOriginal.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n columnsNew = useColumnsAppendInnerColumn({\n cacheKey,\n columns: columnsNew,\n foldColumnList,\n showFoldKeyList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onChangeFoldColumnList: onChangeShowFoldKeyList,\n });\n\n columnsNew = useColumnsToHidden({\n columns: columnsNew,\n showFoldKeyList,\n });\n\n columnsNew = useColumnByAsyncColumnRequest({\n columns: columnsNew,\n asyncColumnRequestResult,\n });\n\n fbaHooks.useEffectCustom(() => {\n onSetPaginationStatus(pagination !== false);\n }, [pagination]);\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (!paginationFixed) {\n if (pagination !== false) {\n onRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n onRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }\n }, [pagination]);\n\n const tablePaginationData = useMemo(() => {\n if (paginationFixed || pagination === false) return false;\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n // selectComponentClass: SmallSelect,\n };\n }, [\n cacheParams,\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (pagination, filters, sorter, extra) => {\n if (extra.action === 'paginate' && tablePaginationData) {\n onRequest({\n [fieldNames.pageSize]: pagination.pageSize,\n [fieldNames.pageNo]: pagination.current,\n });\n } else {\n props.onChange?.(pagination, filters, sorter, extra);\n }\n };\n\n const dataSource = useMemo(() => {\n if (!tableDataSource) return undefined;\n if (tableDataSource.length === 0) {\n return [];\n }\n if (typeof rowKey === 'string' && isUndefinedOrNull(tableDataSource[0][rowKey])) {\n return tableDataSource.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableDataSource;\n }, [tableDataSource, rowKey]);\n\n columnsNew = useMemo(() => {\n return columnsNew.map((item) => {\n if (!!item.fixed && screenType === 'xs') {\n item.fixed = undefined;\n }\n if (!!item.defaultValue && !item.render) {\n item.render = (value) => {\n return isUndefinedOrNull(value) || value == '' ? item.defaultValue : value;\n };\n }\n return item;\n });\n }, [columnsNew, screenType]);\n\n const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <Table\n key=\"1\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n rowKey={rowKey as TAny}\n columns={columnsNew}\n loading={loading}\n />\n </Fragment>\n );\n }\n if (isMacEnv()) {\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <Table\n key=\"2\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </Fragment>\n );\n }\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeShowFoldKeyList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { firstQueryCache } from './cache';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n *\n * 1. 废弃modelKey参数\n * 2. 如果需要在路由跳转回退中缓存查询条件,设置cacheSwitch=true;如果存在多个EasyTable缓存情况可设置cacheSwitch为自定义字符串\n * 3. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 4. 可通过属性 initRequest 设置初始化是否请求数据\n * 5. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 6. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 7. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 8. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 9. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 10. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提高windows下table左右滚动体验\n * 11. 可实现部分字段折叠,手动选择显示,将EasyTable.Table columns中isFold属性设为true,可通过EasyTable columnFoldConfig配置属性,demo(https://fex.qa.tcshuke.com/docs/admin/main/crud/demo1)\n * 12. 通过asyncColumnRequest、asyncRender配合使用可实现表格列数据接口渲染(demo:https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table)\n * ```\n */\nexport const EasyTable = fbaUtils.attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTable.Filter>\n * 2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n * 3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n * 8. 通过easyFormProps属性可整体控制子节点FormItem布局\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\n Table: EasyTableTable,\n /**\n * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n /** 设置启用初始化请求 */\n setEnabledInitRequest: (cacheKey: string) => {\n firstQueryCache.set(cacheKey, false);\n },\n});\n"],"names":["filterCache","set","cacheKey","filterCondition","value","get","mergeParams","_extends","sessionStorageCache","_isObject","remove","firstQueryCache","flag","_sessionStorageCache$","columnFoldCache","localStorageCache","_localStorageCache$ge","_isArray","EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperateDropdown","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","onChange","keys","content","_jsx","Fragment","children","Checkbox","Group","defaultValue","style","display","flexDirection","dataList","map","item","label","title","dataIndex","padding","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","getFormFieldsValue","form","filterFormItemKeys","formValues","getFieldsValue","values","forEach","EasyTable","forwardRef","ref","_props$initialPaginat","screenType","fbaHooks","useResponsivePoint","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","useMemo","iframe","window","frameElement","iframeId","id","_error","cacheSwitch","location","pathname","Date","now","getUuid","cacheParams","_useState5","columnFoldCacheValue","cacheKeyList","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","pageSize","initialPaginationParams","initRequest","undefined","paginationStatusRef","useRef","respOriginalDataRef","baseColumnsRef","_useState6","dynamicColumns","setDynamicColumns","columnsRef","fieldNames","list","pageNo","outerForm","Form","useFormInstance","_Form$useForm","useForm","onInnerRequest","_hooks","useCallbackRef","params","Promise","$return","$error","paramsAll","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_2_Post","$boundEx","$Try_2_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_3_Post","$If_4","call","this","bind","$Try_3_Catch","resolve","then","$await_5","serviceConfig","fbaUtils","removeFormValuesInvalidField","$await_6","current","onDataSourceChange","_get","useEffectCustom","hasPagination","getPaginationStatus","firstQueryFlag","setFieldsValue","initialValues","_extends2","clearQueryCondition","resetFields","updateQueryCondition","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","getRequestParams","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","_respOriginalDataRef$","columnFoldTriggerRender","columns","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","hidden","isFold","onChangeFoldColumnList","onChangeTableColumns","getTableColumns","setEnabledInitRequest","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onSetColumns","onFormFinish","console","log","isFull","_isUndefined","filterFixedFt","filterFixed","className","_classNames","paginationFixed","paginationData","useMemoCustom","showSizeChanger","showTotal","pagination","keyList","page","_params","_props$pagination","useUpdateEffect","_onInnerRequest","_onInnerRequest2","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","dynamicColumnsConfig","onChangeShowFoldKeyList","_jsxs","PaginationWrapper","size","EasyTableFilter","_ctx$filterFormItemKe2","ctx","useContext","inheritForm","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","supportEnterEvent","_ctx$filterFormItemKe","onReset","validateFields","$await_2","$If_1","formRowChildren","defaultRightList","ButtonWrapper","type","htmlType","loadingPosition","_ctx$filterFormItemKe3","cursor","text","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","index","find","keyItem","key","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","FoldOperate","rowSelection","render","recrd","Drawer","open","onClose","width","styles","body","Table","bordered","rowKey","scroll","x","useColumnsAppendTips","tempList","tooltip","tipsWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","TipsWrapper","tipType","popoverProps","TableTitleTooltip","useColumnsAppendInnerColumn","columnsNew","finalItem","foldColumnTarget","_props$columnFoldConf2","_props$columnFoldConf3","_props$columnFoldConf4","_props$columnFoldConf5","_props$columnFoldConf6","_props$columnFoldConf7","FlexLayout","direction","fullIndex","alignItems","IconWrapper","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","useColumnsToHidden","includes","useColumnByAsyncColumnRequest","Object","asyncColumnRequestResult","result","removeGap","asyncRender","record","TitleRender","_props$actions","actions","marginBottom","fontWeight","Space","EasyTableTable","isSync","asyncColumnRequestResultRef","setAsyncColumnRequestResult","_ctx$dynamicColumnsCo","useEffect","_loop","element","_extends3","catch","_extends4","columnsOriginal","_onRequest","_onRequest2","tablePaginationData","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","fixed","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}