@flatbiz/antd 4.5.59 → 4.5.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/card-layout/index.css +1 -1
- package/esm/dialog-modal/index.js +1 -1
- package/esm/dialog-modal/index.js.map +1 -1
- package/esm/easy-table/index.css +1 -1
- package/esm/easy-table/index.js +3 -7
- package/esm/easy-table/index.js.map +1 -1
- package/esm/editable-table-pro/index.js +1 -1
- package/esm/editable-table-pro/index.js.map +1 -1
- package/esm/fba-app/index.js +1 -1
- package/esm/fba-app/index.js.map +1 -1
- package/esm/index.js +2 -2
- package/index.d.ts +27 -9
- package/package.json +1 -1
|
@@ -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/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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"}
|
|
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 { trim, 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\n/**\n * 请求参数内部转换处理\n * ```\n * 1. 对象中值为空字符串、null、undefined 的key值,直接删除\n * 2. 对象中以`__#invalid_xxxx`开头的key值,直接删除\n * 3. 注意params可能会有嵌套,只考虑object嵌套\n * 4. 如果value为string类型,则清除左右空格\n * ```\n */\nexport const requestParamsInternalAdapter = (\n params: TPlainObject,\n options: {\n /** 移除值为空字符串字段 */\n removeEmptyValue?: boolean;\n } = {},\n): TPlainObject => {\n if (!params || typeof params !== 'object' || Array.isArray(params)) {\n return params;\n }\n\n const { removeEmptyValue = true } = options;\n const result: TPlainObject = {};\n\n for (const key in params) {\n /** 如果key不是对象的自有属性,则跳过 */\n if (!Object.prototype.hasOwnProperty.call(params, key)) {\n continue;\n }\n\n let value = params[key];\n if (typeof value === 'string') {\n value = trim(value, true);\n }\n // 删除以 `__#invalid_` 开头的key\n if (key.includes('__#invalid_')) {\n continue;\n }\n if (removeEmptyValue && (value === '' || value === null || value === undefined)) {\n continue;\n }\n\n // 处理嵌套对象\n if (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n result[key] = requestParamsInternalAdapter(value as TPlainObject, options);\n } else {\n result[key] = value;\n }\n }\n\n return result;\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { classNames, get } from '@dimjs/utils';\nimport { getUuid, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\nimport { fbaHooks } from '../fba-hooks/index.js';\nimport { PaginationWrapper } from '../pagination-wrapper/pagination';\nimport { columnFoldCache, filterCache, firstQueryCache } from './cache';\nimport { EasyTableContext } from './context.js';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport './style.less';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\nimport { getFormFieldsValue, requestParamsInternalAdapter } 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 const removeRequestParamsEmptyValue =\n props.removeRequestParamsEmptyValue === undefined ? true : props.removeRequestParamsEmptyValue;\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 const paramsAll = filterCache.set(cacheKey, params);\n setLoading(true);\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n\n let paramsNew = requestParamsInternalAdapter(paramsAll, {\n removeEmptyValue: removeRequestParamsEmptyValue,\n });\n\n paramsNew = requestParamsAdapter ? requestParamsAdapter(paramsNew, paramsAll) : paramsNew;\n const respData = (await onRequest(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 const cacheParams = filterCache.get(cacheKey);\n const parameAll = {\n ...cacheParams,\n ...form.getFieldsValue(),\n };\n let params: TPlainObject = {\n ...getPaginationData(1, parameAll[fieldNames.pageSize]),\n };\n if (props.filterFormItemKeys?.length) {\n props.filterFormItemKeys.forEach((item) => {\n params[item] = parameAll[item];\n });\n } else {\n params = { ...parameAll, ...params };\n }\n\n return requestParamsInternalAdapter(params, {\n removeEmptyValue: removeRequestParamsEmptyValue,\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 getSubmitParams = hooks.useCallbackRef(() => {\n const cacheParams = filterCache.get(cacheKey);\n let params: TPlainObject = {\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n };\n if (props.filterFormItemKeys?.length) {\n props.filterFormItemKeys.forEach((item) => {\n params[item] = cacheParams[item];\n });\n } else {\n params = { ...cacheParams, ...params };\n }\n\n return requestParamsInternalAdapter(params, {\n removeEmptyValue: removeRequestParamsEmptyValue,\n });\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 getSubmitParams,\n onResetRequest,\n form,\n dataSource: respOriginalDataRef.current,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n getTableDataList: () => {\n return dataSource || [];\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 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\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 filterFormItemKeys: props.filterFormItemKeys,\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';\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/layout.jsx';\nimport type { ButtonWrapperProps } from '../button-wrapper/button-wrapper.jsx';\nimport { ButtonWrapper } from '../button-wrapper/button-wrapper.jsx';\nimport type { EasyFormProps } from '../easy-form/form.jsx';\nimport { EasyForm } from '../easy-form/form.jsx';\nimport { fbaHooks } from '../fba-hooks/index.js';\nimport type { FormOperateColProps } from '../form-grid/form-operate-col.jsx';\nimport type { FormRowProps } from '../form-grid/form-row.jsx';\nimport { FormGrid } from '../form-grid/index.js';\nimport { filterCache } from './cache.js';\nimport { EasyTableContext } from './context.js';\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={async () => {\n // 当前EasyTable嵌套在Form内部时,EasyForm 的 onFinish={onFormFinish}配置将失效\n if (inheritForm || ctx.filterFormItemKeys?.length) {\n await 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 useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { BlockLayout } from '../block-layout/layout.jsx';\nimport { fbaHooks } from '../fba-hooks/index.js';\nimport { FlexLayout } from '../flex-layout/flex-layout.jsx';\nimport { TableScrollbar } from '../table-scrollbar/table-scrollbar.jsx';\nimport { filterCache } from './cache.js';\nimport { EasyTableContext } from './context.js';\nimport { FoldOperate } from './fold-operate.jsx';\nimport {\n useColumnByAsyncColumnRequest,\n useColumnsAppendInnerColumn,\n useColumnsAppendTips,\n useColumnsToHidden,\n} from './hooks/columns.jsx';\nimport { type TEasyTableTableColumn } from './type.js';\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 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 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","requestParamsInternalAdapter","params","options","Array","isArray","_options","_options$removeEmptyV","removeEmptyValue","result","key","Object","prototype","hasOwnProperty","call","trim","includes","undefined","EasyTable","forwardRef","ref","_props$initialPaginat","screenType","fbaHooks","useResponsivePoint","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","columnFoldConfig","asyncColumnRequest","removeRequestParamsEmptyValue","_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","paginationStatusRef","useRef","respOriginalDataRef","baseColumnsRef","_useState6","dynamicColumns","setDynamicColumns","columnsRef","fieldNames","list","pageNo","outerForm","Form","useFormInstance","_Form$useForm","useForm","onInnerRequest","_hooks","useCallbackRef","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","this","bind","$Try_3_Catch","resolve","then","$await_5","serviceConfig","$await_6","current","onDataSourceChange","_get","useEffectCustom","hasPagination","getPaginationStatus","firstQueryFlag","setFieldsValue","initialValues","_extends2","clearQueryCondition","resetFields","updateQueryCondition","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","getRequestParams","_props$filterFormItem","parameAll","onOpenColumnFoldModal","onCloseColumnFoldModal","getSubmitParams","_props$filterFormItem2","getDataSource","onFilterDataSource","filterDataSource","getTableDataList","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_3","$If_1","formRowChildren","defaultRightList","ButtonWrapper","type","htmlType","loadingPosition","_ctx$filterFormItemKe3","$await_4","$If_2","cursor","text","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","index","find","keyItem","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","useColumnByAsyncColumnRequest","asyncColumnRequestResult","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","fbaUtils","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
|
|
@@ -10,5 +10,5 @@ import './../text-symbol-wrapper/index.css';
|
|
|
10
10
|
import './../tips-wrapper/index.css';
|
|
11
11
|
import './index.css';
|
|
12
12
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
13
|
-
import e from"@ant-design/icons/es/icons/PlusOutlined";import r from"@ant-design/icons/es/icons/CloseCircleFilled";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{_ as t}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{hooks as a}from"@wove/react/cjs/hooks";import{isArray as l}from"@dimjs/lang/cjs/is-array";import{cloneState as i}from"@dimjs/model";import{toArray as o,arrayReorder as s,isUndefinedOrNull as u}from"@flatbiz/utils";import{Form as d,Table as m,Space as c,message as p}from"antd";import{useState as f,useRef as v,useMemo as g,isValidElement as b}from"react";import{ButtonWrapper as h}from"../button-wrapper/index.js";import{fbaHooks as y}from"../fba-hooks/index.js";import{fbaUtils as j}from"../fba-utils/index.js";import{FormItemWrapper as x}from"../form-item-wrapper/index.js";import{TextSymbolWrapper as C}from"../text-symbol-wrapper/index.js";import{TipsWrapper as w}from"../tips-wrapper/index.js";import{jsx as R,jsxs as F}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-853b36e6.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";import"../use-responsive-point-1e6d93d9.js";import"@dimjs/utils/cjs/uuid";import"../pre-defined-class-name/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var P=function P(k){var A;var V=d.useFormInstance();var I=f([]),N=I[0],T=I[1];var L=o(k.formListName);var
|
|
13
|
+
import e from"@ant-design/icons/es/icons/PlusOutlined";import r from"@ant-design/icons/es/icons/CloseCircleFilled";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{_ as t}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{hooks as a}from"@wove/react/cjs/hooks";import{isArray as l}from"@dimjs/lang/cjs/is-array";import{cloneState as i}from"@dimjs/model";import{toArray as o,arrayReorder as s,isUndefinedOrNull as u}from"@flatbiz/utils";import{Form as d,Table as m,Space as c,message as p}from"antd";import{useState as f,useRef as v,useMemo as g,isValidElement as b}from"react";import{ButtonWrapper as h}from"../button-wrapper/index.js";import{fbaHooks as y}from"../fba-hooks/index.js";import{fbaUtils as j}from"../fba-utils/index.js";import{FormItemWrapper as x}from"../form-item-wrapper/index.js";import{TextSymbolWrapper as C}from"../text-symbol-wrapper/index.js";import{TipsWrapper as w}from"../tips-wrapper/index.js";import{jsx as R,jsxs as F}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-853b36e6.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";import"../use-responsive-point-1e6d93d9.js";import"@dimjs/utils/cjs/uuid";import"../pre-defined-class-name/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var P=function P(k){var A;var V=d.useFormInstance();var I=f([]),N=I[0],T=I[1];var L=o(k.formListName);var B=v({});var U=v({});var z=v();var K=k.uidFieldKey;var O=k.childrenColumnName||"children";var W=k.expandedIconLayout||"layout1";var q=k.formListCompleteName||L;var D=d.useWatch(q,V);var E=f(),S=E[0],_=E[1];var Y=g(function(){if(!D)return[];var e=false;function r(n,t,a){for(var l=0;l<n.length;l++){var i=n[l];if(!i[K]){console.error(i,"数据中未查询到唯一值");e=true;return}else{U.current[i[K]]={level:t,parentUid:a,index:l};B.current[i[K]]=i;r(i[O]||[],t+1,i[K])}}}U.current={};B.current={};r(l(D)?D:[],1);if(e){var n="数据源中存在唯一值【"+K+"】为空的情况,无法渲染表格";void p.error(n);_(n);return[]}return D},[O,D,K]);y.useEffectCustom(function(){T(k.expandedRowKeys||[])},[JSON.stringify(k.expandedRowKeys||[])]);var H=a.useCallbackRef(function(e){var r=e[K];var n=U.current[r];var t=[];while(n){t.push(n.index);if(n.level===1){break}n=n.parentUid?U.current[n.parentUid]:undefined}var a=[];t.reverse().forEach(function(e,r){a.push(e);if(r<t.length-1){a.push(O)}});return a});var J=a.useCallbackRef(function(e,r,n){var t=B.current[e];if(t){if(t.level===1){var a;(a=z.current)==null||a.add(r,n);return}t[O]=t[O]||[];if(n==undefined){t[O].push(r)}else{t[O].splice(n,0,r)}var l=new Set(N);l.add(t[K]);T([].concat(Array.from(l)));j.setFormFieldsAndTriggerValuesChange(V,[{name:q,value:[].concat(D)}])}});var Q=a.useCallbackRef(function(e,r){var n=U.current[e];if(n.level===1){var t;(t=z.current)==null||t.remove(r);return}var a=n.parentUid;if(!a){D.splice(r,1)}else{var l=B.current[a];l[O].splice(r,1);if(l[O].length===0){delete l[O]}}j.setFormFieldsAndTriggerValuesChange(V,[{name:q,value:i(D)}])});var G=a.useCallbackRef(function(e,r,n){if(r===n||n<0)return;var t=U.current[e];var a=t.parentUid;if(!a){var l=s(D,r,n);j.setFormFieldsAndTriggerValuesChange(V,[{name:q,value:l}])}else{var i=B.current[a];i[O]=s(i[O],r,n);j.setFormFieldsAndTriggerValuesChange(V,[{name:q,value:[].concat(D)}])}});var M=a.useCallbackRef(function(e,r){j.setFormFieldsAndTriggerValuesChange(V,r.map(function(r){return{name:[].concat(q,e,o(r.name)),value:r.value}}))});var X=a.useCallbackRef(function(e,r){M(e,[{name:O,value:r}])});var Z=a.useCallbackRef(function(e,r){return new Promise(function(n,t){return Promise.resolve(V.validateFields(r.map(function(r){return[].concat(e,o(r))}))).then(function(e){try{return n()}catch(e){return t(e)}},t)})});var $=g(function(){return k.columns.map(function(e){var r;if(e.hidden)return null;var n=e.title;var a=b(n)||typeof n==="string";var l=n;if(e.tipsWrapperProps&&a){if(typeof e.tipsWrapperProps==="string"){l=R(w,{tipType:"popover",popoverProps:{content:e.tipsWrapperProps},children:n})}else{l=R(w,t({},e.tipsWrapperProps,{children:n}))}}var i=e.required;if(!i&&typeof e.formItemProps==="object"&&(r=e.formItemProps.rules)!=null&&r.length){i=!!e.formItemProps.rules.find(function(e){return!!e["required"]})}return t({onCell:function e(){var r;return{valign:((r=k.tableProps)==null?void 0:r.cellVerticalAlign)||"middle"}}},e,{title:i?R(C,{style:{marginLeft:e.align==="center"?undefined:10},text:l,position:"before",symbolType:"required"}):l,render:function r(n,a,l){if(u(e.render)){return n}var s=a[K];var d=o(e["dataIndex"]);var m=H(a);var c=U.current[s];var p=typeof(e==null?void 0:e.editable)==="function"?e==null?void 0:e.editable(a,l):e==null?void 0:e.editable;var f=[].concat(q,m);var v={editable:p,add:J.bind(null,s),remove:Q.bind(null,s),move:G.bind(null,s),level:c.level,parentItem:s?U.current[s]:null,tableRowFormItemName:m,tableRowFormItemCompleteName:f,setCurrentRowTargetField:M.bind(null,m),setCurrentRowChildrenValue:X.bind(null,m),validateRowFields:Z.bind(null,f)};if(p===true){var g,b;var h=typeof e.formItemProps==="function"?e.formItemProps(n,a,l,v):e.formItemProps;if(!((g=h)!=null&&(g=g.rules)!=null&&g.length)&&i){h=t({},h,{rules:[{required:true,message:""}]})}return R(x,t({},h,{name:[].concat(m,d),style:t({marginBottom:0},(b=h)==null?void 0:b.style),children:e.render==null?void 0:e.render(n,a,l,v)}))}return e.render==null?void 0:e.render(n,a,l,v)}})}).filter(Boolean)},[k.columns,(A=k.tableProps)==null?void 0:A.cellVerticalAlign,K,H,q,J,Q,G,M,X,Z]);var ee=n("editable-table-pro",{"editable-table-pro-layout1":W==="layout1"},k.className);return R("div",{className:ee,style:k.style,children:R(d.List,{name:L,rules:k.rules,initialValue:k.initialValue,children:function n(a,l,i){var o;var s=i.errors;z.current=l;return F("div",{style:{borderRadius:"6px",border:s!=null&&s.length?"1px solid #ff4d4f":"1px solid transparent"},children:[k.tableBeforeAreaRender==null?void 0:k.tableBeforeAreaRender(l,a.length),R(m,t({scroll:{x:"max-content"},pagination:false,size:"small"},k.tableProps,{locale:{emptyText:S?F(c,{size:5,style:{color:"#ff4d4f"},children:[R(r,{}),R("span",{children:S})]}):undefined},expandable:t({expandedRowKeys:N,onExpandedRowsChange:function e(r){T(r)}},(o=k.tableProps)==null?void 0:o.expandable,{childrenColumnName:O}),columns:$,dataSource:Y,rowKey:K})),R(h,{block:true,hidden:k.hiddenFooterBtn,type:"dashed",icon:R(e,{}),style:{marginTop:15},onClick:function e(){var r=k.addRowDefaultValues==null?void 0:k.addRowDefaultValues();if(!(r!=null&&r[K])){void p.error("新增行默认值必须包含唯一值字段【"+K+"】,通过 addRowDefaultValues 设置");return}l.add(r)},children:"新增"}),k.tableAfterAreaRender==null?void 0:k.tableAfterAreaRender(l,a.length),s.length?R(d.ErrorList,{errors:[R("div",{style:{color:"#ff4d4f",padding:"5px"},children:s},"0")]}):null]})}})})};export{P as EditableTablePro};
|
|
14
14
|
//# sourceMappingURL=index.js.map
|