@flatbiz/antd 4.5.24 → 4.5.26

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.
Files changed (41) hide show
  1. package/esm/bootstrap/index.js +1 -1
  2. package/esm/bootstrap/index.js.map +1 -1
  3. package/esm/button-operate/index.js +1 -1
  4. package/esm/button-operate/index.js.map +1 -1
  5. package/esm/button-wrapper/index.js.map +1 -1
  6. package/esm/dialog-alert/index.js +1 -1
  7. package/esm/dialog-alert/index.js.map +1 -1
  8. package/esm/dialog-confirm/index.css +1 -1
  9. package/esm/dialog-confirm/index.js +1 -1
  10. package/esm/dialog-confirm/index.js.map +1 -1
  11. package/esm/dialog-modal/index.css +1 -1
  12. package/esm/dialog-modal/index.js +1 -1
  13. package/esm/dialog-modal/index.js.map +1 -1
  14. package/esm/drag-editable-card/index.css +0 -0
  15. package/esm/drag-editable-card/index.js +21 -0
  16. package/esm/drag-editable-card/index.js.map +1 -0
  17. package/esm/drag-editable-table/index.js +1 -1
  18. package/esm/drag-editable-table/index.js.map +1 -1
  19. package/esm/dropdown-menu-wrapper/index.js +1 -1
  20. package/esm/dropdown-menu-wrapper/index.js.map +1 -1
  21. package/esm/easy-form/index.js +1 -1
  22. package/esm/easy-form/index.js.map +1 -1
  23. package/esm/easy-table/index.js +1 -1
  24. package/esm/easy-table/index.js.map +1 -1
  25. package/esm/editable-card/index.css +1 -0
  26. package/esm/editable-card/index.js +20 -0
  27. package/esm/editable-card/index.js.map +1 -0
  28. package/esm/editable-table/index.js +1 -1
  29. package/esm/editable-table/index.js.map +1 -1
  30. package/esm/fba-app/index.css +1 -1
  31. package/esm/fba-app/index.js +1 -1
  32. package/esm/fba-app/index.js.map +1 -1
  33. package/esm/index.js +6 -4
  34. package/esm/label-value-render/index.js +1 -1
  35. package/esm/label-value-render/index.js.map +1 -1
  36. package/esm/table-cell-render/index.js +1 -1
  37. package/esm/table-cell-render/index.js.map +1 -1
  38. package/esm/tree-wrapper/index.js +1 -1
  39. package/esm/tree-wrapper/index.js.map +1 -1
  40. package/index.d.ts +361 -97
  41. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/cache.ts","@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate-dropdown.tsx","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/hooks/columns.tsx","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { isArray, isObject } from '@dimjs/lang';\nimport { localStorageCache, sessionStorageCache, TPlainObject } from '@flatbiz/utils';\n\nexport const filterCache = {\n set: (cacheKey: string, filterCondition: TPlainObject) => {\n const value = filterCache.get(cacheKey);\n const mergeParams = {\n ...value,\n ...filterCondition,\n };\n sessionStorageCache.set(`easy_tab_filter_${cacheKey}`, mergeParams);\n return mergeParams as TPlainObject;\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_filter_${cacheKey}`) as TPlainObject;\n return isObject(value) ? value : {};\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_filter_${cacheKey}`);\n },\n};\n\nexport const firstQueryCache = {\n set: (cacheKey: string, flag: boolean) => {\n sessionStorageCache.set(`easy_tab_firstQuery_${cacheKey}`, { value: flag });\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_firstQuery_${cacheKey}`)?.value;\n return value === false ? false : true;\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_firstQuery_${cacheKey}`);\n },\n};\n\nexport const columnFoldCache = {\n set: (cacheKey: string, value: string[]) => {\n localStorageCache.set(`easy_tab_columnFold_${cacheKey}`, { value });\n },\n get: (cacheKey: string) => {\n const value = localStorageCache.get(`easy_tab_columnFold_${cacheKey}`)?.value;\n return isArray(value) ? (value as string[]) : [];\n },\n remove: (cacheKey: string) => {\n localStorageCache.remove(`easy_tab_columnFold_${cacheKey}`);\n },\n};\n","import { noop, type TPlainObject } from '@flatbiz/utils';\nimport { type FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport type EditableFieldContextContextApi = {\n cacheKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableDataSource?: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initialValues?: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n getPaginationStatus: () => boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n onSetBaseColumns: (baseColumns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n onSetColumns: (columns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n columns?: TEasyTableTableColumn<TPlainObject>[];\n dynamicColumnsConfig: {\n showFoldKeyList: string[];\n onChangeShowFoldKeyList: (keys: string[]) => void;\n columnFoldOpen: boolean;\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onCloseColumnFoldModal: () => void;\n asyncColumnRequest?: EasyTableProps['asyncColumnRequest'];\n };\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { Checkbox, Popover } from 'antd';\nimport { Fragment, useState, type CSSProperties, type ReactElement } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex: string; title: string }[];\n onChange: (keys: string[]) => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n children?: ReactElement;\n};\n\nexport const FoldOperateDropdown = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n\n const onChange = (keys) => {\n setSelectedRowKeys(keys);\n props.onChange(keys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, keys);\n }\n };\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { classNames, get } from '@dimjs/utils';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\n\nimport { getUuid, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { PaginationWrapper } from '../pagination-wrapper';\n\nimport { columnFoldCache, filterCache, firstQueryCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport './style.less';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const [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) return props.cacheKey;\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return getUuid();\n }, [props.cacheSwitch, props.cacheKey]);\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (cacheKey) {\n const columnFoldCacheValue = columnFoldCache.get(cacheKey);\n const cacheKeyList = isArray(columnFoldCacheValue)\n ? columnFoldCacheValue.filter((item) => isString(item))\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const paginationStatusRef = useRef(false);\n const respOriginalDataRef = useRef<TAny>();\n const baseColumnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n const [dynamicColumns, setDynamicColumns] = useState<TEasyTableTableColumn<TPlainObject>[]>();\n\n const columnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n\n const fieldNames = {\n list: 'list',\n total: 'total',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm(props.form);\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n if (props.breforeRequest) {\n try {\n await props.breforeRequest(form);\n } catch (_error) {\n return;\n }\n }\n firstQueryCache.set(cacheKey, false);\n setLoading(true);\n const paramsAll = filterCache.set(cacheKey, params);\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(paramsAll) : paramsAll;\n const respData = (await onRequest(fbaUtils.removeFormValuesInvalidField(paramsNew))) || {};\n respOriginalDataRef.current = respData;\n props.onDataSourceChange?.(respData);\n let respDataNew: TPlainObject = respData;\n if (requestResultAdapter) {\n respDataNew = requestResultAdapter(respData);\n }\n if (dynamicColumsAdapter) {\n const dynamicColumns = dynamicColumsAdapter(respData, baseColumnsRef.current);\n /** 不要添加默认值 */\n setDynamicColumns(dynamicColumns);\n }\n const respList = get(respDataNew, fieldNames.list);\n setDataSource(isArray(respList) ? respList : []);\n setTotal(get(respDataNew, fieldNames.total));\n setLoading(false);\n } catch (error: any) {\n setLoading(false);\n if (props.onRequestErrorHandle) {\n props.onRequestErrorHandle(error);\n } else {\n void message.error(error.message);\n }\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = getPaginationStatus();\n const firstQueryFlag = firstQueryCache.get(cacheKey);\n const cacheParams = filterCache.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 cacheParams = filterCache.get(cacheKey);\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 return {\n ...cacheParams,\n ...form.getFieldsValue(),\n };\n });\n\n const onOpenColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(true);\n });\n\n const onCloseColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(false);\n });\n\n const getEasyTableRef = (): EasyTableRefApi => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n dataSource: respOriginalDataRef.current,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = dataList;\n props.onDataSourceChange?.(dataList);\n },\n columnFoldTriggerRender: (children, columns: TEasyTableTableColumn<TPlainObject>[]) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n\n const foldColumnList = columns.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as { dataIndex: string; title: string }[]}\n onChange={onChangeFoldColumnList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n {children}\n </FoldOperateDropdown>\n );\n },\n onChangeTableColumns: (columns) => {\n setDynamicColumns(columns);\n },\n getTableColumns: () => {\n return columnsRef.current;\n },\n loading,\n setEnabledInitRequest: () => {\n firstQueryCache.set(cacheKey, false);\n },\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n paginationStatusRef.current = status;\n };\n\n const onSetBaseColumns = (base) => {\n baseColumnsRef.current = base;\n };\n\n const onSetColumns = (columns) => {\n columnsRef.current = columns;\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n const cacheParams = filterCache.get(cacheKey);\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 className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': props.filterFixed,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = useMemo(() => {\n const cacheParams = filterCache.get(cacheKey);\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, 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 void onInnerRequest({\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n });\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n const cacheParams = filterCache.get(cacheKey);\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n void onInnerRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }, [props.paginationFixed]);\n\n const wrapperClassName = classNames(\n 'fba-easy-table-wrapper',\n {\n 'fba-easy-table-wrapper-inline': props.isInline,\n },\n props.className,\n );\n\n const wrapperStyle: CSSProperties = {\n overflowY: props.filterFixed || props.paginationFixed ? 'hidden' : 'auto',\n ...props.style,\n };\n\n const children =\n typeof props.children === 'function' ? props.children(respOriginalDataRef.current) : props.children;\n\n return (\n <EasyTableContext.Provider\n value={{\n onSetBaseColumns,\n onSetColumns,\n getEasyTableRef,\n cacheKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: dynamicColumns,\n initialValues: props.initialValues,\n dynamicColumnsConfig: {\n showFoldKeyList,\n onChangeShowFoldKeyList: onChangeFoldColumnList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onCloseColumnFoldModal,\n columnFoldOpen,\n asyncColumnRequest,\n },\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n {children}\n </div>\n )}\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { type FormInstance } from 'antd';\nimport { Children, useContext, useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n /**\n * @deprecated已过期,使用 easyFormProps.className 配置\n */\n formClassName?: string;\n /**\n * @deprecated已过期,使用 easyFormProps.style 配置\n */\n formStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout style */\n filterWrapperStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout className */\n filterWrapperClassName?: string;\n /**\n * 自定义 filterOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n easyFormProps?: Omit<\n EasyFormProps,\n 'isPure' | 'column' | 'forceColumn' | 'width' | 'gridGutter' | 'children'\n >;\n};\n\n/**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTableFilter>\n *\n * 2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n * 3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,默认重启按钮触发请求,默认值:true\n * 8. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const screenType = fbaHooks.useResponsivePoint() || 'md';\n const ctx = useContext(EasyTableContext);\n const {\n queryButtonProps,\n resetButtonProps,\n filterOperate,\n formClassName = '',\n defaultResetButtonTriggerRequest,\n filterWrapperStyle,\n filterWrapperClassName,\n rightOperateAreaAppendType,\n easyFormProps,\n } = props;\n const {\n cacheKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\n\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const [openFold, setOpenFold] = useState(false);\n\n const onReset = hooks.useCallbackRef(async () => {\n filterCache.remove(cacheKey);\n form.resetFields();\n form.setFieldsValue(initialValues);\n if (isUndefined(defaultResetButtonTriggerRequest) || defaultResetButtonTriggerRequest) {\n await form.validateFields();\n if (getPaginationStatus()) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n }\n });\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = filterOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n childrens,\n filterOperate,\n foldKeys,\n form,\n onReset,\n openFold,\n queryButtonProps,\n resetButtonProps,\n rightOperateAreaAppendTypeFt,\n ]);\n\n const labelAlign = screenType === 'xs' ? 'left' : easyFormProps?.labelAlign || 'right';\n\n return (\n <BlockLayout\n className={classNames('easy-table-filter', filterWrapperClassName)}\n style={filterWrapperStyle}\n >\n <EasyForm\n form={form}\n autoComplete=\"off\"\n onFinish={onFormFinish}\n // initialValues={initialValues}\n className={formClassName}\n style={props.formStyle}\n isPure={true}\n labelWidth=\"80\"\n formItemGap=\"15\"\n {...easyFormProps}\n labelAlign={labelAlign}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </EasyForm>\n </BlockLayout>\n );\n};\n","import { useContext } from 'react';\nimport { EasyTableContext } from './context';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useContext(EasyTableContext);\n return ctx.getEasyTableRef();\n};\n\n/**\n * @deprecated 已过时 @4.5.0版本移除,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const ctx = useContext(EasyTableContext);\n return {\n current: ctx.getEasyTableRef(),\n };\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { type ColumnsType } from 'antd/es/table';\nimport { type TableRowSelection } from 'antd/es/table/interface';\nimport { Fragment, useState, type CSSProperties } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex?: string; title: string }[];\n onChange: (keys: string[]) => void;\n open?: boolean;\n onClose?: () => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n};\n\nexport const FoldOperate = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n const rowSelection = {\n type: 'checkbox',\n selectedRowKeys: selectedRowKeys,\n onChange: (selectedRowKeys: string[]) => {\n setSelectedRowKeys(selectedRowKeys);\n props.onChange(selectedRowKeys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, selectedRowKeys);\n }\n },\n } as TableRowSelection<TAny>;\n\n const columns: ColumnsType<TPlainObject> = [\n {\n title: '字段名称',\n dataIndex: 'title',\n render: (value, recrd) => {\n return recrd['_isFoldTitle'] || value;\n },\n },\n { title: '字段Key', dataIndex: 'dataIndex' },\n ];\n\n return (\n <Fragment>\n <Drawer\n title=\"选择字段\"\n open={props.open}\n onClose={props.onClose}\n width={'35%'}\n styles={{\n body: {\n padding: 15,\n },\n }}\n >\n <Table\n bordered\n size=\"small\"\n columns={columns}\n rowSelection={rowSelection}\n rowKey=\"dataIndex\"\n pagination={false}\n scroll={{ x: 'max-content' }}\n dataSource={props.dataList}\n />\n </Drawer>\n </Fragment>\n );\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { useMemo } from 'react';\nimport { ButtonWrapper } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { FlexLayout } from '../../flex-layout';\nimport { IconWrapper } from '../../icon-wrapper';\nimport { SvgHttpView } from '../../svg-http-view';\nimport { TableTitleTooltip } from '../../table-title-tooltip';\nimport { TipsWrapper } from '../../tips-wrapper';\nimport { FoldOperateDropdown } from '../fold-operate-dropdown';\nimport { type EasyTableProps } from '../type';\n\nexport const useColumnsAppendTips = (props: { columns: TPlainObject[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, ...otherProps } = item;\n if (typeof title === 'string' && tipsWrapperProps) {\n if (typeof tipsWrapperProps === 'string') {\n return {\n ...otherProps,\n title: (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n ),\n };\n }\n return {\n ...otherProps,\n title: <TipsWrapper {...tipsWrapperProps}>{title}</TipsWrapper>,\n };\n }\n if (typeof title === 'string' && !!tooltip) {\n return {\n ...otherProps,\n title: <TableTitleTooltip tooltip={tooltip} title={title}></TableTitleTooltip>,\n };\n }\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns]);\n};\n\nexport const useColumnsAppendInnerColumn = (props: {\n columns: TPlainObject[];\n cacheKey: string;\n showFoldKeyList: string[];\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onChangeFoldColumnList: (keyList: string[]) => void;\n foldColumnList: TPlainObject[];\n}) => {\n const columnsNew = props.columns;\n return fbaHooks.useMemoCustom(() => {\n if (props.columnFoldConfig?.hidden) return columnsNew;\n const finalItem = columnsNew[columnsNew.length - 1];\n if (props.foldColumnList.length > 0 && columnsNew.length > 0) {\n const foldColumnTarget = columnsNew.find((item) => item['_isFoldColumn']);\n\n if (foldColumnTarget && finalItem.dataIndex !== foldColumnTarget.dataIndex) {\n foldColumnTarget.title = foldColumnTarget['_isFoldTitle'];\n foldColumnTarget['_isFoldColumn'] = false;\n }\n if (!finalItem['_isFoldColumn']) {\n finalItem['_isFoldTitle'] = finalItem['_isFoldTitle'] || finalItem.title;\n finalItem['_isFoldColumn'] = true;\n\n const triggerType = props.columnFoldConfig?.triggerType;\n\n finalItem.title = (\n <FlexLayout direction=\"horizontal\" fullIndex={0} style={{ alignItems: 'center' }}>\n <span>{finalItem.title}</span>\n <div style={{ padding: '0 5px 0 20px', display: 'flex' }}>\n {triggerType === 'drawer' ? (\n <IconWrapper\n onClick={props.onOpenColumnFoldModal}\n text={props.columnFoldConfig?.text}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n hoverTips={props.columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={props.foldColumnList as TAny[]}\n onChange={props.onChangeFoldColumnList}\n cacheKey={props.cacheKey}\n initSelectedRowKeys={props.showFoldKeyList}\n >\n <IconWrapper\n text={props.columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return columnsNew;\n }, [props.columns, props.columnFoldConfig]);\n};\n\nexport const useColumnsToHidden = (props: { columns: TPlainObject[]; showFoldKeyList: string[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { hidden, isFold } = item;\n if (hidden) return null;\n if (isFold && !props.showFoldKeyList.includes(item.dataIndex as string)) return null;\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns, props.showFoldKeyList]);\n};\n\nexport const useColumnByAsyncColumnRequest = (props: {\n columns: TPlainObject[];\n asyncColumnRequestResult: TPlainObject;\n}) => {\n return useMemo(() => {\n if (!Object.keys(props.asyncColumnRequestResult)) return props.columns;\n return props.columns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = props.asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [props.columns, props.asyncColumnRequestResult]);\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { 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} from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\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\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns'\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/**\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, ...otherProps } = props;\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 const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\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 {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 {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeShowFoldKeyList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { firstQueryCache } from './cache';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n *\n * 1. 废弃modelKey参数\n * 2. 如果需要在路由跳转回退中缓存查询条件,设置cacheSwitch=true;如果存在多个EasyTable缓存情况可设置cacheSwitch为自定义字符串\n * 3. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 4. 可通过属性 initRequest 设置初始化是否请求数据\n * 5. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 6. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 7. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 8. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 9. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 10. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提高windows下table左右滚动体验\n * 11. 可实现部分字段折叠,手动选择显示,将EasyTable.Table columns中isFold属性设为true,可通过EasyTable columnFoldConfig配置属性,demo(https://fex.qa.tcshuke.com/docs/admin/main/crud/demo1)\n * 12. 通过asyncColumnRequest、asyncRender配合使用可实现表格列数据接口渲染(demo:https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table)\n * ```\n */\nexport const EasyTable = fbaUtils.attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTable.Filter>\n * 2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n * 3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n * 8. 通过easyFormProps属性可整体控制子节点FormItem布局\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\n Table: EasyTableTable,\n /**\n * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n /** 设置启用初始化请求 */\n setEnabledInitRequest: (cacheKey: string) => {\n firstQueryCache.set(cacheKey, false);\n },\n});\n"],"names":["filterCache","set","cacheKey","filterCondition","value","get","mergeParams","_extends","sessionStorageCache","_isObject","remove","firstQueryCache","flag","_sessionStorageCache$","columnFoldCache","localStorageCache","_localStorageCache$ge","_isArray","EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperateDropdown","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","onChange","keys","content","_jsx","Fragment","children","Checkbox","Group","defaultValue","style","display","flexDirection","dataList","map","item","label","title","dataIndex","padding","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","EasyTable","forwardRef","ref","_props$initialPaginat","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","useMemo","cacheSwitch","location","pathname","getUuid","_useState5","columnFoldCacheValue","cacheKeyList","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","pageSize","initialPaginationParams","initRequest","undefined","paginationStatusRef","useRef","respOriginalDataRef","baseColumnsRef","_useState6","dynamicColumns","setDynamicColumns","columnsRef","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","_hooks","useCallbackRef","params","Promise","$return","$error","paramsAll","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_1_Post","$boundEx","$Try_1_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_2_Post","$If_3","call","this","bind","$Try_2_Catch","_error","resolve","then","$await_4","serviceConfig","fbaUtils","removeFormValuesInvalidField","$await_5","current","onDataSourceChange","_get","fbaHooks","useEffectCustom","hasPagination","getPaginationStatus","firstQueryFlag","cacheParams","setFieldsValue","initialValues","_extends2","clearQueryCondition","values","resetFields","updateQueryCondition","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","columnFoldTriggerRender","columns","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","hidden","isFold","onChangeFoldColumnList","onChangeTableColumns","getTableColumns","setEnabledInitRequest","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onSetColumns","onFormFinish","isFull","_isUndefined","className","_classNames","filterFixed","paginationFixed","paginationData","showSizeChanger","showTotal","pagination","keyList","page","_onInnerRequest","_props$pagination","useUpdateEffect","_onInnerRequest2","_onInnerRequest3","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","dynamicColumnsConfig","onChangeShowFoldKeyList","_jsxs","PaginationWrapper","size","EasyTableFilter","screenType","useResponsivePoint","ctx","useContext","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","onReset","validateFields","$await_2","$If_1","formRowChildren","defaultRightList","ButtonWrapper","type","htmlType","text","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","index","find","keyItem","key","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","FoldOperate","rowSelection","render","recrd","Drawer","open","onClose","width","styles","body","Table","bordered","rowKey","scroll","x","useColumnsAppendTips","tempList","tooltip","tipsWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","TipsWrapper","tipType","popoverProps","TableTitleTooltip","useColumnsAppendInnerColumn","columnsNew","useMemoCustom","finalItem","foldColumnTarget","_props$columnFoldConf2","_props$columnFoldConf3","_props$columnFoldConf4","_props$columnFoldConf5","_props$columnFoldConf6","_props$columnFoldConf7","FlexLayout","direction","fullIndex","alignItems","IconWrapper","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","useColumnsToHidden","includes","useColumnByAsyncColumnRequest","Object","asyncColumnRequestResult","result","loadingPosition","removeGap","asyncRender","record","EasyTableTable","isSync","asyncColumnRequestResultRef","setAsyncColumnRequestResult","_ctx$dynamicColumnsCo","useEffect","_loop","element","_extends3","catch","_extends4","console","columnsOriginal","_onRequest","_onRequest2","tablePaginationData","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","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/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/hooks/columns.tsx","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { isArray, isObject } from '@dimjs/lang';\nimport { localStorageCache, sessionStorageCache, TPlainObject } from '@flatbiz/utils';\n\nexport const filterCache = {\n set: (cacheKey: string, filterCondition: TPlainObject) => {\n const value = filterCache.get(cacheKey);\n const mergeParams = {\n ...value,\n ...filterCondition,\n };\n sessionStorageCache.set(`easy_tab_filter_${cacheKey}`, mergeParams);\n return mergeParams as TPlainObject;\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_filter_${cacheKey}`) as TPlainObject;\n return isObject(value) ? value : {};\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_filter_${cacheKey}`);\n },\n};\n\nexport const firstQueryCache = {\n set: (cacheKey: string, flag: boolean) => {\n sessionStorageCache.set(`easy_tab_firstQuery_${cacheKey}`, { value: flag });\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_firstQuery_${cacheKey}`)?.value;\n return value === false ? false : true;\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_firstQuery_${cacheKey}`);\n },\n};\n\nexport const columnFoldCache = {\n set: (cacheKey: string, value: string[]) => {\n localStorageCache.set(`easy_tab_columnFold_${cacheKey}`, { value });\n },\n get: (cacheKey: string) => {\n const value = localStorageCache.get(`easy_tab_columnFold_${cacheKey}`)?.value;\n return isArray(value) ? (value as string[]) : [];\n },\n remove: (cacheKey: string) => {\n localStorageCache.remove(`easy_tab_columnFold_${cacheKey}`);\n },\n};\n","import { noop, type TPlainObject } from '@flatbiz/utils';\nimport { type FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport type EditableFieldContextContextApi = {\n cacheKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableDataSource?: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initialValues?: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n getPaginationStatus: () => boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n onSetBaseColumns: (baseColumns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n onSetColumns: (columns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n columns?: TEasyTableTableColumn<TPlainObject>[];\n dynamicColumnsConfig: {\n showFoldKeyList: string[];\n onChangeShowFoldKeyList: (keys: string[]) => void;\n columnFoldOpen: boolean;\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onCloseColumnFoldModal: () => void;\n asyncColumnRequest?: EasyTableProps['asyncColumnRequest'];\n };\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { Checkbox, Popover } from 'antd';\nimport { Fragment, useState, type CSSProperties, type ReactElement } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex: string; title: string }[];\n onChange: (keys: string[]) => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n children?: ReactElement;\n};\n\nexport const FoldOperateDropdown = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n\n const onChange = (keys) => {\n setSelectedRowKeys(keys);\n props.onChange(keys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, keys);\n }\n };\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { classNames, get } from '@dimjs/utils';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\n\nimport { getUuid, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { PaginationWrapper } from '../pagination-wrapper';\n\nimport { columnFoldCache, filterCache, firstQueryCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport './style.less';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const [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) return props.cacheKey;\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return getUuid();\n }, [props.cacheSwitch, props.cacheKey]);\n\n const cacheParams = filterCache.get(cacheKey);\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (cacheKey) {\n const columnFoldCacheValue = columnFoldCache.get(cacheKey);\n const cacheKeyList = isArray(columnFoldCacheValue)\n ? columnFoldCacheValue.filter((item) => isString(item))\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const paginationStatusRef = useRef(false);\n const respOriginalDataRef = useRef<TAny>();\n const baseColumnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n const [dynamicColumns, setDynamicColumns] = useState<TEasyTableTableColumn<TPlainObject>[]>();\n\n const columnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n\n const fieldNames = {\n list: 'list',\n total: 'total',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm(props.form);\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n if (props.breforeRequest) {\n try {\n await props.breforeRequest(form);\n } catch (_error) {\n return;\n }\n }\n firstQueryCache.set(cacheKey, false);\n setLoading(true);\n const paramsAll = filterCache.set(cacheKey, params);\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(paramsAll) : paramsAll;\n const respData = (await onRequest(fbaUtils.removeFormValuesInvalidField(paramsNew))) || {};\n respOriginalDataRef.current = respData;\n props.onDataSourceChange?.(respData);\n let respDataNew: TPlainObject = respData;\n if (requestResultAdapter) {\n respDataNew = requestResultAdapter(respData);\n }\n if (dynamicColumsAdapter) {\n const dynamicColumns = dynamicColumsAdapter(respData, baseColumnsRef.current);\n /** 不要添加默认值 */\n setDynamicColumns(dynamicColumns);\n }\n const respList = get(respDataNew, fieldNames.list);\n setDataSource(isArray(respList) ? respList : []);\n setTotal(get(respDataNew, fieldNames.total));\n setLoading(false);\n } catch (error: any) {\n setLoading(false);\n if (props.onRequestErrorHandle) {\n props.onRequestErrorHandle(error);\n } else {\n void message.error(error.message);\n }\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = getPaginationStatus();\n const firstQueryFlag = firstQueryCache.get(cacheKey);\n form.setFieldsValue({\n ...props.initialValues,\n ...cacheParams,\n });\n if (initRequest || !firstQueryFlag) {\n if (hasPagination) {\n void onInnerRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...props.initialValues,\n ...cacheParams,\n });\n } else {\n void onInnerRequest(props.initialValues);\n }\n } else {\n filterCache.set(cacheKey, props.initialValues || {});\n }\n }, []);\n\n const clearQueryCondition = hooks.useCallbackRef((values?: TPlainObject) => {\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n }\n });\n\n const updateQueryCondition = hooks.useCallbackRef((values: TPlainObject) => {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (getPaginationStatus()) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {\n [fieldNames.pageNo]: undefined,\n [fieldNames.pageSize]: undefined,\n };\n }\n };\n\n const onResetRequest = hooks.useCallbackRef((values?: TPlainObject) => {\n const params = {\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n ...props.initialValues,\n ...values,\n };\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n form.setFieldsValue(values);\n }\n void onInnerRequest(params);\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n return {\n ...cacheParams,\n ...form.getFieldsValue(),\n };\n });\n\n const onOpenColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(true);\n });\n\n const onCloseColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(false);\n });\n\n const getEasyTableRef = (): EasyTableRefApi => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n dataSource: respOriginalDataRef.current,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = dataList;\n props.onDataSourceChange?.(dataList);\n },\n columnFoldTriggerRender: (children, columns: TEasyTableTableColumn<TPlainObject>[]) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n\n const foldColumnList = columns.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as { dataIndex: string; title: string }[]}\n onChange={onChangeFoldColumnList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n {children}\n </FoldOperateDropdown>\n );\n },\n onChangeTableColumns: (columns) => {\n setDynamicColumns(columns);\n },\n getTableColumns: () => {\n return columnsRef.current;\n },\n loading,\n setEnabledInitRequest: () => {\n firstQueryCache.set(cacheKey, false);\n },\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n paginationStatusRef.current = status;\n };\n\n const onSetBaseColumns = (base) => {\n baseColumnsRef.current = base;\n };\n\n const onSetColumns = (columns) => {\n columnsRef.current = columns;\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n if (props.onFormFinish) {\n props.onFormFinish({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': props.filterFixed,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = fbaHooks.useMemoCustom(() => {\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, cacheParams, fieldNames.pageSize, cacheKey, pageSize, props.pagination, total]);\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n const params = {\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n };\n filterCache.set(cacheKey, params);\n void onInnerRequest(params);\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n void onInnerRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }, [props.paginationFixed]);\n\n const wrapperClassName = classNames(\n 'fba-easy-table-wrapper',\n {\n 'fba-easy-table-wrapper-inline': props.isInline,\n },\n props.className,\n );\n\n const wrapperStyle: CSSProperties = {\n overflowY: props.filterFixed || props.paginationFixed ? 'hidden' : 'auto',\n ...props.style,\n };\n\n const children =\n typeof props.children === 'function' ? props.children(respOriginalDataRef.current) : props.children;\n\n return (\n <EasyTableContext.Provider\n value={{\n onSetBaseColumns,\n onSetColumns,\n getEasyTableRef,\n cacheKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: dynamicColumns,\n initialValues: props.initialValues,\n dynamicColumnsConfig: {\n showFoldKeyList,\n onChangeShowFoldKeyList: onChangeFoldColumnList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onCloseColumnFoldModal,\n columnFoldOpen,\n asyncColumnRequest,\n },\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n {children}\n </div>\n )}\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { type FormInstance } from 'antd';\nimport { Children, useContext, useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n /**\n * @deprecated已过期,使用 easyFormProps.className 配置\n */\n formClassName?: string;\n /**\n * @deprecated已过期,使用 easyFormProps.style 配置\n */\n formStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout style */\n filterWrapperStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout className */\n filterWrapperClassName?: string;\n /**\n * 自定义 filterOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n easyFormProps?: Omit<\n EasyFormProps,\n 'isPure' | 'column' | 'forceColumn' | 'width' | 'gridGutter' | 'children'\n >;\n};\n\n/**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTableFilter>\n *\n * 2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n * 3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,默认重启按钮触发请求,默认值:true\n * 8. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const screenType = fbaHooks.useResponsivePoint() || 'md';\n const ctx = useContext(EasyTableContext);\n const {\n queryButtonProps,\n resetButtonProps,\n filterOperate,\n formClassName = '',\n defaultResetButtonTriggerRequest,\n filterWrapperStyle,\n filterWrapperClassName,\n rightOperateAreaAppendType,\n easyFormProps,\n } = props;\n const {\n cacheKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\n\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const [openFold, setOpenFold] = useState(false);\n\n const onReset = hooks.useCallbackRef(async () => {\n filterCache.remove(cacheKey);\n form.resetFields();\n form.setFieldsValue(initialValues);\n if (isUndefined(defaultResetButtonTriggerRequest) || defaultResetButtonTriggerRequest) {\n await form.validateFields();\n if (getPaginationStatus()) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n }\n });\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = filterOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n childrens,\n filterOperate,\n foldKeys,\n form,\n onReset,\n openFold,\n queryButtonProps,\n resetButtonProps,\n rightOperateAreaAppendTypeFt,\n ]);\n\n const labelAlign = screenType === 'xs' ? 'left' : easyFormProps?.labelAlign || 'right';\n\n return (\n <BlockLayout\n className={classNames('easy-table-filter', filterWrapperClassName)}\n style={filterWrapperStyle}\n >\n <EasyForm\n form={form}\n autoComplete=\"off\"\n onFinish={onFormFinish}\n // initialValues={initialValues}\n className={formClassName}\n style={props.formStyle}\n isPure={true}\n labelWidth=\"80\"\n formItemGap=\"15\"\n {...easyFormProps}\n labelAlign={labelAlign}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </EasyForm>\n </BlockLayout>\n );\n};\n","import { useContext } from 'react';\nimport { EasyTableContext } from './context';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useContext(EasyTableContext);\n return ctx.getEasyTableRef();\n};\n\n/**\n * @deprecated 已过时 @4.5.0版本移除,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const ctx = useContext(EasyTableContext);\n return {\n current: ctx.getEasyTableRef(),\n };\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { type ColumnsType } from 'antd/es/table';\nimport { type TableRowSelection } from 'antd/es/table/interface';\nimport { Fragment, useState, type CSSProperties } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex?: string; title: string }[];\n onChange: (keys: string[]) => void;\n open?: boolean;\n onClose?: () => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n};\n\nexport const FoldOperate = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n const rowSelection = {\n type: 'checkbox',\n selectedRowKeys: selectedRowKeys,\n onChange: (selectedRowKeys: string[]) => {\n setSelectedRowKeys(selectedRowKeys);\n props.onChange(selectedRowKeys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, selectedRowKeys);\n }\n },\n } as TableRowSelection<TAny>;\n\n const columns: ColumnsType<TPlainObject> = [\n {\n title: '字段名称',\n dataIndex: 'title',\n render: (value, recrd) => {\n return recrd['_isFoldTitle'] || value;\n },\n },\n { title: '字段Key', dataIndex: 'dataIndex' },\n ];\n\n return (\n <Fragment>\n <Drawer\n title=\"选择字段\"\n open={props.open}\n onClose={props.onClose}\n width={'35%'}\n styles={{\n body: {\n padding: 15,\n },\n }}\n >\n <Table\n bordered\n size=\"small\"\n columns={columns}\n rowSelection={rowSelection}\n rowKey=\"dataIndex\"\n pagination={false}\n scroll={{ x: 'max-content' }}\n dataSource={props.dataList}\n />\n </Drawer>\n </Fragment>\n );\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { useMemo } from 'react';\nimport { ButtonWrapper } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { FlexLayout } from '../../flex-layout';\nimport { IconWrapper } from '../../icon-wrapper';\nimport { SvgHttpView } from '../../svg-http-view';\nimport { TableTitleTooltip } from '../../table-title-tooltip';\nimport { TipsWrapper } from '../../tips-wrapper';\nimport { FoldOperateDropdown } from '../fold-operate-dropdown';\nimport { type EasyTableProps } from '../type';\n\nexport const useColumnsAppendTips = (props: { columns: TPlainObject[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, ...otherProps } = item;\n if (typeof title === 'string' && tipsWrapperProps) {\n if (typeof tipsWrapperProps === 'string') {\n return {\n ...otherProps,\n title: (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n ),\n };\n }\n return {\n ...otherProps,\n title: <TipsWrapper {...tipsWrapperProps}>{title}</TipsWrapper>,\n };\n }\n if (typeof title === 'string' && !!tooltip) {\n return {\n ...otherProps,\n title: <TableTitleTooltip tooltip={tooltip} title={title}></TableTitleTooltip>,\n };\n }\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns]);\n};\n\nexport const useColumnsAppendInnerColumn = (props: {\n columns: TPlainObject[];\n cacheKey: string;\n showFoldKeyList: string[];\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onChangeFoldColumnList: (keyList: string[]) => void;\n foldColumnList: TPlainObject[];\n}) => {\n const columnsNew = props.columns;\n return fbaHooks.useMemoCustom(() => {\n if (props.columnFoldConfig?.hidden) return columnsNew;\n const finalItem = columnsNew[columnsNew.length - 1];\n if (props.foldColumnList.length > 0 && columnsNew.length > 0) {\n const foldColumnTarget = columnsNew.find((item) => item['_isFoldColumn']);\n\n if (foldColumnTarget && finalItem.dataIndex !== foldColumnTarget.dataIndex) {\n foldColumnTarget.title = foldColumnTarget['_isFoldTitle'];\n foldColumnTarget['_isFoldColumn'] = false;\n }\n if (!finalItem['_isFoldColumn']) {\n finalItem['_isFoldTitle'] = finalItem['_isFoldTitle'] || finalItem.title;\n finalItem['_isFoldColumn'] = true;\n\n const triggerType = props.columnFoldConfig?.triggerType;\n\n finalItem.title = (\n <FlexLayout direction=\"horizontal\" fullIndex={0} style={{ alignItems: 'center' }}>\n <span>{finalItem.title}</span>\n <div style={{ padding: '0 5px 0 20px', display: 'flex' }}>\n {triggerType === 'drawer' ? (\n <IconWrapper\n onClick={props.onOpenColumnFoldModal}\n text={props.columnFoldConfig?.text}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n hoverTips={props.columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={props.foldColumnList as TAny[]}\n onChange={props.onChangeFoldColumnList}\n cacheKey={props.cacheKey}\n initSelectedRowKeys={props.showFoldKeyList}\n >\n <IconWrapper\n text={props.columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return columnsNew;\n }, [props.columns, props.columnFoldConfig]);\n};\n\nexport const useColumnsToHidden = (props: { columns: TPlainObject[]; showFoldKeyList: string[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { hidden, isFold } = item;\n if (hidden) return null;\n if (isFold && !props.showFoldKeyList.includes(item.dataIndex as string)) return null;\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns, props.showFoldKeyList]);\n};\n\nexport const useColumnByAsyncColumnRequest = (props: {\n columns: TPlainObject[];\n asyncColumnRequestResult: TPlainObject;\n}) => {\n return useMemo(() => {\n if (!Object.keys(props.asyncColumnRequestResult)) return props.columns;\n return props.columns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = props.asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [props.columns, props.asyncColumnRequestResult]);\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { 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} from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\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\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns'\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/**\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, ...otherProps } = props;\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 const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\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 {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 {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeShowFoldKeyList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { firstQueryCache } from './cache';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n *\n * 1. 废弃modelKey参数\n * 2. 如果需要在路由跳转回退中缓存查询条件,设置cacheSwitch=true;如果存在多个EasyTable缓存情况可设置cacheSwitch为自定义字符串\n * 3. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 4. 可通过属性 initRequest 设置初始化是否请求数据\n * 5. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 6. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 7. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 8. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 9. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 10. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提高windows下table左右滚动体验\n * 11. 可实现部分字段折叠,手动选择显示,将EasyTable.Table columns中isFold属性设为true,可通过EasyTable columnFoldConfig配置属性,demo(https://fex.qa.tcshuke.com/docs/admin/main/crud/demo1)\n * 12. 通过asyncColumnRequest、asyncRender配合使用可实现表格列数据接口渲染(demo:https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table)\n * ```\n */\nexport const EasyTable = fbaUtils.attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTable.Filter>\n * 2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n * 3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n * 8. 通过easyFormProps属性可整体控制子节点FormItem布局\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\n Table: EasyTableTable,\n /**\n * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n /** 设置启用初始化请求 */\n setEnabledInitRequest: (cacheKey: string) => {\n firstQueryCache.set(cacheKey, false);\n },\n});\n"],"names":["filterCache","set","cacheKey","filterCondition","value","get","mergeParams","_extends","sessionStorageCache","_isObject","remove","firstQueryCache","flag","_sessionStorageCache$","columnFoldCache","localStorageCache","_localStorageCache$ge","_isArray","EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperateDropdown","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","onChange","keys","content","_jsx","Fragment","children","Checkbox","Group","defaultValue","style","display","flexDirection","dataList","map","item","label","title","dataIndex","padding","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","EasyTable","forwardRef","ref","_props$initialPaginat","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","useMemo","cacheSwitch","location","pathname","getUuid","cacheParams","_useState5","columnFoldCacheValue","cacheKeyList","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","pageSize","initialPaginationParams","initRequest","undefined","paginationStatusRef","useRef","respOriginalDataRef","baseColumnsRef","_useState6","dynamicColumns","setDynamicColumns","columnsRef","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","_hooks","useCallbackRef","params","Promise","$return","$error","paramsAll","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_1_Post","$boundEx","$Try_1_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_2_Post","$If_3","call","this","bind","$Try_2_Catch","_error","resolve","then","$await_4","serviceConfig","fbaUtils","removeFormValuesInvalidField","$await_5","current","onDataSourceChange","_get","fbaHooks","useEffectCustom","hasPagination","getPaginationStatus","firstQueryFlag","setFieldsValue","initialValues","_extends2","clearQueryCondition","values","resetFields","updateQueryCondition","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","columnFoldTriggerRender","columns","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","hidden","isFold","onChangeFoldColumnList","onChangeTableColumns","getTableColumns","setEnabledInitRequest","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onSetColumns","onFormFinish","isFull","_isUndefined","className","_classNames","filterFixed","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","screenType","useResponsivePoint","ctx","useContext","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","onReset","validateFields","$await_2","$If_1","formRowChildren","defaultRightList","ButtonWrapper","type","htmlType","text","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","index","find","keyItem","key","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","FoldOperate","rowSelection","render","recrd","Drawer","open","onClose","width","styles","body","Table","bordered","rowKey","scroll","x","useColumnsAppendTips","tempList","tooltip","tipsWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","TipsWrapper","tipType","popoverProps","TableTitleTooltip","useColumnsAppendInnerColumn","columnsNew","finalItem","foldColumnTarget","_props$columnFoldConf2","_props$columnFoldConf3","_props$columnFoldConf4","_props$columnFoldConf5","_props$columnFoldConf6","_props$columnFoldConf7","FlexLayout","direction","fullIndex","alignItems","IconWrapper","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","useColumnsToHidden","includes","useColumnByAsyncColumnRequest","Object","asyncColumnRequestResult","result","loadingPosition","removeGap","asyncRender","record","EasyTableTable","isSync","asyncColumnRequestResultRef","setAsyncColumnRequestResult","_ctx$dynamicColumnsCo","useEffect","_loop","element","_extends3","catch","_extends4","console","columnsOriginal","_onRequest","_onRequest2","tablePaginationData","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ .editable-card-empty{padding:15px 0 20px}.editable-card-empty .ant-empty{align-items:center;display:flex;justify-content:center;margin:0}.editable-card-empty .ant-empty-image{height:25px;margin:0;width:50px}
@@ -0,0 +1,20 @@
1
+ /* eslint-disable */
2
+ import './../button-wrapper/index.css';
3
+ import './../config-provider-wrapper/index.css';
4
+ import './../fba-hooks/index.css';
5
+ import './../types/index.css';
6
+ import './../fba-utils/index.css';
7
+ import './../card-wrapper/index.css';
8
+ import './../delete-node/index.css';
9
+ import './../icon-wrapper/index.css';
10
+ import './../easy-form/index.css';
11
+ import './../box-grid/index.css';
12
+ import './../form-wrapper/index.css';
13
+ import './../pre-defined-class-name/index.css';
14
+ import './../form-item-hidden/index.css';
15
+ import './../form-item-wrapper/index.css';
16
+ import './../tips-wrapper/index.css';
17
+ import './index.css';
18
+ /*! @flatjs/forge MIT @flatbiz/antd */
19
+ import e from"@ant-design/icons/es/icons/PlusOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{_ as n}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as t}from"@wove/react/cjs/hooks";import{toArray as i,isUndefinedOrNull as o}from"@flatbiz/utils";import{Form as a,Empty as l}from"antd";import{useRef as d,useMemo as s,Fragment as m,createElement as u,isValidElement as p}from"react";import{ButtonWrapper as c}from"../button-wrapper/index.js";import{CardWrapper as f}from"../card-wrapper/index.js";import{DeleteNode as v}from"../delete-node/index.js";import{EasyForm as g}from"../easy-form/index.js";import{fbaHooks as y}from"../fba-hooks/index.js";import{fbaUtils as j}from"../fba-utils/index.js";import{FormItemHidden as h}from"../form-item-hidden/index.js";import{FormItemWrapper as x}from"../form-item-wrapper/index.js";import{TipsWrapper as b}from"../tips-wrapper/index.js";import{jsx as F,jsxs as k}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.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"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/model";import"@ant-design/icons/es/icons/CloseCircleFilled";import"@ant-design/icons/es/icons/DeleteOutlined";import"../icon-wrapper/index.js";import"@dimjs/lang/cjs/is-undefined";import"../box-grid/index.js";import"@dimjs/lang/cjs/is-number";import"ahooks";import"../form-wrapper/index.js";import"../pre-defined-class-name/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var w=function w(C){var P=a.useFormInstance();var R=i(C.formListName);var N=d();var I=d();var E=t.useForceUpdate();var D=C.formListCompleteName||R;var V=t.useCallbackRef((function(e,r){return new Promise((function(n,t){return Promise.resolve(P.validateFields(r.map((function(r){return[].concat(e,i(r))})))).then((function(e){try{return n()}catch(e){return t(e)}}),t)}))}));var q=t.useCallbackRef((function(e){return P.getFieldValue(e)}));var L=t.useCallbackRef((function(e,r){j.setFormFieldsAndTriggerValuesChange(P,r.map((function(r){return{name:[].concat(D,[e],i(r.name)),value:r.value}})));E()}));var T=s((function(){return C.columns.map((function(e){var r;var t=e.title;var a=t;if(e.tips){a=F(b,{tipType:"popover",popoverProps:{content:e.tips},children:t})}var l=e.required;if(!l&&typeof e.formItemProps==="object"&&(r=e.formItemProps.rules)!=null&&r.length){l=!!e.formItemProps.rules.find((function(e){return!!e["required"]}))}var d=i(e["dataIndex"]);return{render:function r(t,i,s){var p;var c=P.getFieldValue([].concat(D,[i.name]));var f=P.getFieldValue([].concat(D,[i.name],d));if(o(e.render)){return F(m,{children:f})}var v=typeof(e==null?void 0:e.editable)==="function"?e==null?void 0:e.editable(c,t):e==null?void 0:e.editable;var g=[].concat(D,[i.name]);var y={index:t,editable:v,add:s.add,remove:s.remove,move:s.move,rowFormItemName:i.name,rowFormItemCompleteName:g,setCurrentRowField:L.bind(null,i.name),validateRowFields:V.bind(null,g),getCurrentRowData:q.bind(null,g),forceUpdate:E};if(e.hidden!=null&&e.hidden(c,t)){return F(h,{name:[i.name].concat(d)},i.key)}var j=typeof e.formItemProps==="function"?e.formItemProps(y):e.formItemProps;if(!((p=j)!=null&&(p=p.rules)!=null&&p.length)&&l){j=n({},j,{rules:[{required:true,message:""}]})}if(v===true){return u(x,n({},j,{name:[i.name].concat(d),label:a,span:e.gridNumber,key:i.key}),e.render==null?void 0:e.render(y))}return F(x,n({label:a,span:e.gridNumber},j,{children:e.render==null?void 0:e.render(y)}),i.key)}}}))}),[C.columns,P,D,L,V,q,E]);var _=r("editable-card",C.className);y.useEffectCustom((function(){var e;if(C.required&&!((e=I.current)!=null&&e.length)){setTimeout((function(){j.setFormFieldsAndTriggerValuesChange(P,[{name:[].concat(D),value:[n({},C.addRowDefaultValues==null?void 0:C.addRowDefaultValues())]}])}),30)}}),[]);return F("div",{className:_,style:C.style,children:F(a.List,{name:R,rules:C.rules,children:function r(t,i,o){var d=o.errors;N.current=i;I.current=t;return k("div",{style:{borderRadius:"6px",border:d!=null&&d.length?"1px solid #ff4d4f":"1px solid transparent"},children:[C.contentBeforeRender==null?void 0:C.contentBeforeRender(i,t.length),t.map((function(e,r){var o;var a=C.onCustomGroupName?C.onCustomGroupName(r):r+1;var l={index:r,fields:t,fieldItem:e,operation:i,required:C.required,key:""+e.key};if(C.onCustomWrapper){var d;return C.onCustomWrapper(F(g,n({nonuseFormWrapper:true},C.cardEasyFormProps,{style:n({padding:0,margin:0},(d=C.cardEasyFormProps)==null?void 0:d.style),children:T.map((function(r,n){return r.render(n,e,i)}))}),e.key),l)}var s=C.cardExtraRender==null?void 0:C.cardExtraRender(l);return F(f,{className:C.cardClassName,title:a,size:"small",style:n({padding:0,margin:"0 0 15px 0"},C.cardStyle),bodyStyle:{paddingBottom:0},extra:p(s)?s:k("div",{style:{display:"inline-flex",alignItems:"center",gap:"8px"},children:[s==null?void 0:s["before"],F(v,{style:{color:"red"},hidden:C.required&&t.length===1,onDelete:function e(){i.remove(r)}}),s==null?void 0:s["after"]]}),children:F(g,n({nonuseFormWrapper:true},C.cardEasyFormProps,{style:n({padding:0,margin:0},(o=C.cardEasyFormProps)==null?void 0:o.style),children:T.map((function(r,n){return r.render(n,e,i)}))}),e.key)},e.key)})),t.length===0?F("div",{className:"editable-card-empty",children:F(l,{image:l.PRESENTED_IMAGE_SIMPLE})}):null,F(c,{block:true,hidden:C.hiddenFooterBtn,type:"dashed",icon:F(e,{}),style:{marginTop:t.length?15:0},onClick:function e(){var r=C.addRowDefaultValues==null?void 0:C.addRowDefaultValues();i.add(n({},r))},children:"新增"}),C.contentAfterRender==null?void 0:C.contentAfterRender(i,t.length),d.length?F(a.ErrorList,{errors:[F("div",{style:{color:"#ff4d4f",padding:"5px"},children:d},"0")]}):null]})}})})};export{w as EditableCard};
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/editable-card/editable-card.tsx"],"sourcesContent":["import { PlusOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\n\nimport type { TAny } from '@flatbiz/utils';\nimport { isUndefinedOrNull, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Empty, Form, FormListFieldData, type FormListOperation } from 'antd';\nimport type { ReactElement } from 'react';\nimport { Fragment, isValidElement, useMemo, useRef } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { CardWrapper } from '../card-wrapper';\nimport { DeleteNode } from '../delete-node';\nimport { EasyForm } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { FormItemHidden } from '../form-item-hidden';\nimport { FormItemWrapper } from '../form-item-wrapper';\nimport { TipsWrapper } from '../tips-wrapper';\nimport './style.less';\nimport type { EditableCardDataIndex, EditableCardOperation, EditableCardProps } from './type';\n\n/**\n * 使用FormList实现可编辑卡片\n * ```\n * 1. EditableCard有两种模式,正常 & 禁用\n * 2. 必须在外部包裹Form组件\n * 3. 行内需要联动逻辑可使用 column.render.operation.setCurrentRowField 方法\n * 4. 可使用DragEditableCard组件实现拖拽排序\n * 5. 设置EditableCard disabled后,通过 LabelValueRender 组件展示数据,可通过 disabledRenderProps 配置布局\n *\n * demo\n * https://fex.qa.tcshuke.com/docs/admin/main/form/grid\n * ```\n */\nexport const EditableCard = (props: EditableCardProps) => {\n const form = Form.useFormInstance();\n const formListName = toArray<string | number>(props.formListName);\n const formListOperationRef = useRef<FormListOperation>();\n const fieldsRef = useRef<FormListFieldData[]>();\n const forceUpdate = hooks.useForceUpdate();\n\n const formListCompleteName = props.formListCompleteName || formListName;\n\n const validateRowFields = hooks.useCallbackRef(\n async (formItemPrevName: Array<string | number>, nameList: EditableCardDataIndex[]) => {\n await form.validateFields(\n nameList.map((item) => [...formItemPrevName, ...toArray<string | number>(item)]),\n );\n },\n );\n const getCurrentRowData = hooks.useCallbackRef((formItemPrevName: Array<string | number>) => {\n return form.getFieldValue(formItemPrevName);\n });\n\n const setCurrentRowField = hooks.useCallbackRef(\n (\n formItemPrevName: string | number,\n dataIndexConfigs: {\n name: EditableCardDataIndex;\n value?: TAny;\n }[],\n ) => {\n fbaUtils.setFormFieldsAndTriggerValuesChange(\n form,\n dataIndexConfigs.map((item) => {\n return {\n name: [...formListCompleteName, formItemPrevName, ...toArray<string | number>(item.name)],\n value: item.value,\n };\n }),\n );\n forceUpdate();\n },\n );\n\n const columns = useMemo(() => {\n return props.columns.map((column) => {\n const title = column.title;\n let titleRender: ReactElement | string | undefined = title;\n if (column.tips) {\n titleRender = (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: column.tips }}>\n {title}\n </TipsWrapper>\n );\n }\n\n let required = column.required;\n\n if (!required && typeof column.formItemProps === 'object' && column.formItemProps.rules?.length) {\n required = !!column.formItemProps.rules.find((item) => !!item['required']);\n }\n\n const dataIndex = toArray<string>(column['dataIndex']);\n\n return {\n render: (index, fieldData: FormListFieldData, operation: FormListOperation) => {\n const record = form.getFieldValue([...formListCompleteName, fieldData.name]);\n const value = form.getFieldValue([...formListCompleteName, fieldData.name, ...dataIndex]);\n if (isUndefinedOrNull(column.render)) {\n return <Fragment>{value}</Fragment>;\n }\n\n const editable =\n typeof column?.editable === 'function' ? column?.editable(record, index) : column?.editable;\n\n const rowFormItemCompleteName = [...formListCompleteName, fieldData.name];\n\n const renderOperationProps: EditableCardOperation = {\n index,\n editable,\n add: operation.add,\n remove: operation.remove,\n move: operation.move,\n rowFormItemName: fieldData.name,\n rowFormItemCompleteName,\n setCurrentRowField: setCurrentRowField.bind(null, fieldData.name),\n validateRowFields: validateRowFields.bind(null, rowFormItemCompleteName),\n getCurrentRowData: getCurrentRowData.bind(null, rowFormItemCompleteName),\n forceUpdate,\n };\n\n if (column.hidden?.(record, index)) {\n return <FormItemHidden name={[fieldData.name, ...dataIndex]} key={fieldData.key} />;\n }\n let formItemProps =\n typeof column.formItemProps === 'function'\n ? column.formItemProps(renderOperationProps)\n : column.formItemProps;\n\n if (!formItemProps?.rules?.length && required) {\n formItemProps = {\n ...formItemProps,\n rules: [{ required: true, message: '' }],\n };\n }\n\n if (editable === true) {\n return (\n <FormItemWrapper\n {...formItemProps}\n name={[fieldData.name, ...dataIndex]}\n label={titleRender}\n span={column.gridNumber}\n key={fieldData.key}\n >\n {column.render?.(renderOperationProps) as React.ReactNode}\n </FormItemWrapper>\n );\n }\n return (\n <FormItemWrapper\n label={titleRender}\n span={column.gridNumber}\n key={fieldData.key}\n {...formItemProps}\n >\n {column.render?.(renderOperationProps)}\n </FormItemWrapper>\n );\n },\n };\n });\n }, [\n props.columns,\n form,\n formListCompleteName,\n setCurrentRowField,\n validateRowFields,\n getCurrentRowData,\n forceUpdate,\n ]);\n\n const className = classNames('editable-card', props.className);\n\n fbaHooks.useEffectCustom(() => {\n if (props.required && !fieldsRef.current?.length) {\n setTimeout(() => {\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: [...formListCompleteName],\n value: [{ ...props.addRowDefaultValues?.() }],\n },\n ]);\n }, 30);\n }\n }, []);\n\n return (\n <div className={className} style={props.style}>\n <Form.List name={formListName} rules={props.rules}>\n {(fields, formListOperation, { errors }) => {\n formListOperationRef.current = formListOperation;\n fieldsRef.current = fields;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.contentBeforeRender?.(formListOperation, fields.length)}\n {fields.map((fieldItem, index) => {\n const title = props.onCustomGroupName ? props.onCustomGroupName(index) : index + 1;\n\n const extraData = {\n index,\n fields,\n fieldItem,\n operation: formListOperation,\n required: props.required,\n key: `${fieldItem.key}`,\n };\n if (props.onCustomWrapper) {\n return props.onCustomWrapper(\n <EasyForm\n nonuseFormWrapper={true}\n key={fieldItem.key}\n {...props.cardEasyFormProps}\n style={{\n padding: 0,\n margin: 0,\n ...props.cardEasyFormProps?.style,\n }}\n >\n {columns.map((column, index) => {\n return column.render(index, fieldItem, formListOperation);\n })}\n </EasyForm>,\n extraData,\n );\n }\n\n const cardExtraRenderResult = props.cardExtraRender?.(extraData);\n\n return (\n <CardWrapper\n key={fieldItem.key}\n className={props.cardClassName}\n title={title}\n size=\"small\"\n style={{\n padding: 0,\n margin: '0 0 15px 0',\n ...props.cardStyle,\n }}\n bodyStyle={{ paddingBottom: 0 }}\n // styles={{ body: { paddingBottom: 0 } }}\n extra={\n isValidElement(cardExtraRenderResult) ? (\n cardExtraRenderResult\n ) : (\n <div\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n }}\n >\n {cardExtraRenderResult?.['before']}\n <DeleteNode\n style={{ color: 'red' }}\n hidden={props.required && fields.length === 1}\n onDelete={() => {\n formListOperation.remove(index);\n }}\n />\n {cardExtraRenderResult?.['after']}\n </div>\n )\n }\n >\n <EasyForm\n nonuseFormWrapper={true}\n key={fieldItem.key}\n {...props.cardEasyFormProps}\n style={{\n padding: 0,\n margin: 0,\n ...props.cardEasyFormProps?.style,\n }}\n >\n {columns.map((column, index) => {\n return column.render(index, fieldItem, formListOperation);\n })}\n </EasyForm>\n </CardWrapper>\n );\n })}\n {fields.length === 0 ? (\n <div className=\"editable-card-empty\">\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />\n </div>\n ) : null}\n <ButtonWrapper\n block\n hidden={props.hiddenFooterBtn}\n type=\"dashed\"\n icon={<PlusOutlined />}\n style={{ marginTop: fields.length ? 15 : 0 }}\n onClick={() => {\n const defaultValues = props.addRowDefaultValues?.();\n formListOperation.add({ ...defaultValues });\n }}\n >\n 新增\n </ButtonWrapper>\n {props.contentAfterRender?.(formListOperation, fields.length)}\n {errors.length ? (\n <Form.ErrorList\n errors={[\n <div style={{ color: '#ff4d4f', padding: '5px' }} key=\"0\">\n {errors}\n </div>,\n ]}\n />\n ) : null}\n </div>\n );\n }}\n </Form.List>\n </div>\n );\n};\n"],"names":["EditableCard","props","form","Form","useFormInstance","formListName","toArray","formListOperationRef","useRef","fieldsRef","forceUpdate","_hooks","useForceUpdate","formListCompleteName","validateRowFields","useCallbackRef","formItemPrevName","nameList","Promise","$return","$error","resolve","validateFields","map","item","concat","then","$await_1","$boundEx","getCurrentRowData","getFieldValue","setCurrentRowField","dataIndexConfigs","fbaUtils","setFormFieldsAndTriggerValuesChange","name","value","columns","useMemo","column","_column$formItemProps","title","titleRender","tips","_jsx","TipsWrapper","tipType","popoverProps","content","children","required","formItemProps","rules","length","find","dataIndex","render","index","fieldData","operation","_formItemProps","record","isUndefinedOrNull","Fragment","editable","rowFormItemCompleteName","renderOperationProps","add","remove","move","rowFormItemName","bind","hidden","FormItemHidden","key","_extends","message","_createElement","FormItemWrapper","label","span","gridNumber","className","_classNames","fbaHooks","useEffectCustom","_fieldsRef$current","current","setTimeout","addRowDefaultValues","style","List","fields","formListOperation","_ref","errors","_jsxs","borderRadius","border","contentBeforeRender","fieldItem","_props$cardEasyFormPr2","onCustomGroupName","extraData","onCustomWrapper","_props$cardEasyFormPr","EasyForm","nonuseFormWrapper","cardEasyFormProps","padding","margin","cardExtraRenderResult","cardExtraRender","CardWrapper","cardClassName","size","cardStyle","bodyStyle","paddingBottom","extra","isValidElement","display","alignItems","gap","DeleteNode","color","onDelete","Empty","image","PRESENTED_IMAGE_SIMPLE","ButtonWrapper","block","hiddenFooterBtn","type","icon","_PlusOutlined","marginTop","onClick","defaultValues","contentAfterRender","ErrorList"],"mappings":"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"}
@@ -24,5 +24,5 @@ import './../input-wrapper/index.css';
24
24
  import './../input-text-area-wrapper/index.css';
25
25
  import './index.css';
26
26
  /*! @flatjs/forge MIT @flatbiz/antd */
27
- import e from"@ant-design/icons/es/icons/PlusOutlined";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{_ as r,a as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{arrayField2LabelValue as a,toArray as t,isUndefinedOrNull as l}from"@flatbiz/utils";import{Form as o,Checkbox as d,InputNumber as m,Radio as u,Tag as s,Space as c,Button as p,message as f,Table as v}from"antd";import{useMemo as g,useState as b,useEffect as h,Fragment as C,useRef as x,isValidElement as w}from"react";import{ButtonWrapper as j}from"../button-wrapper/index.js";import{TextSymbolWrapper as I}from"../text-symbol-wrapper/index.js";import{TipsWrapper as y}from"../tips-wrapper/index.js";import{isArray as N}from"@dimjs/lang/cjs/is-array";import{FormItemHidden as R}from"../form-item-hidden/index.js";import{extend as k}from"@dimjs/utils/cjs/extend";import{hooks as F}from"@wove/react/cjs/hooks";import{tableCellRender as P}from"../table-cell-render/index.js";import{jsx as L,jsxs as T,Fragment as V}from"react/jsx-runtime";import{DatePickerWrapper as _}from"../date-picker-wrapper/index.js";import{DateRangePickerWrapper as O}from"../date-range-picker-wrapper/index.js";import{InputWrapper as A}from"../input-wrapper/index.js";import{SelectorWrapper as S}from"../selector-wrapper/index.js";import{SwitchWrapper as K}from"../switch-wrapper/index.js";import{isBoolean as W}from"@dimjs/lang/cjs/is-boolean";import{isNumber as B}from"@dimjs/lang/cjs/is-number";import{isString as D}from"@dimjs/lang/cjs/is-string";import{InputTextAreaWrapper as E}from"../input-text-area-wrapper/index.js";import{UploadWrapper as q}from"../upload-wrapper/index.js";import z from"@ant-design/icons/es/icons/DeleteOutlined";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"../use-responsive-point-21b8c601.js";import"../fba-utils/index.js";import"@dimjs/model";import"@ant-design/icons/es/icons/QuestionCircleOutlined";import"@dimjs/lang/cjs/is-object";import"@dimjs/utils/cjs/get";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-empty";import"../button-operate/index.js";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/lang/cjs/is-undefined";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"@dimjs/lang/cjs/is-null";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"@wove/react/cjs/create-ctx";import"../tag-list-render/index.js";import"../time-53b3f55f.js";import"@ant-design/icons/es/icons/RedoOutlined";import"../request-status/index.js";import"@dimjs/lang/cjs/is-deep-equal";import"@dimjs/utils/cjs/json";import"pubsub-js";import"react-dom";var G=function e(n,r){return typeof n==="boolean"?n:n==null?void 0:n({tableRowIndex:r})};var M=function e(n){var i=n.fieldConfig,a=i.editableConfig,t=i.editable,l=i.render;var o=a.editableComptProps;var m=g((function(){return o.options||[]}),[o.options]);var u=F.useCallbackRef((function(e){n.onChange==null?void 0:n.onChange(e);o.onChange==null?void 0:o.onChange(e)}));if(t){return L(d.Group,r({},o,{value:n.value,onChange:u}))}return L("span",{className:"editable-checkbox-group-view",children:l?l(n.value,m):P.selectorCell(m)(n.value)})};var Y=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-checkbox-group-form-item",a==null?void 0:a.className),children:L(M,r({},i))}))};var H=function e(i){var a=i.fieldConfig,t=a.formItemProps,l=a.editableConfig;return L(o.Item,r({},t,{name:i.name,className:n("editable-date-picker-wraper-form-item",t==null?void 0:t.className),children:L(_,r({allowClear:true},l.editableComptProps))}))};var J=function e(n){var i=n.fieldConfig,a=i.editableConfig,t=i.editable,l=i.render;var o=a.editableComptProps;var d=F.useCallbackRef((function(e){n.onChange==null?void 0:n.onChange(e);o==null||o.onChange==null?void 0:o.onChange(e)}));var m=g((function(){var e=N(n.value)?n.value:[];if(t)return undefined;return e.join("~")}),[t,n.value]);if(t){return L(O,r({allowClear:true},o,{value:n.value,onChange:d}))}return L("span",{className:"editable-date-range-picker-view",children:l?l(n.value):m})};var Q=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-date-range-picker-wraper-form-item",a==null?void 0:a.className),children:L(J,r({},i))}))};var U=function e(n){var i=n.fieldConfig,a=i.formItemProps,t=i.editableConfig;return L(o.Item,r({},a,{name:n.name,children:L(A,r({allowClear:true},t.editableComptProps))}))};var $=function e(i){var a=i.fieldConfig,t=a.formItemProps,l=a.editableConfig;return L(o.Item,r({},t,{name:i.name,className:n("editable-input-number-form-item",t==null?void 0:t.className),children:L(m,r({},l.editableComptProps))}))};var X=function e(n){var i=n.fieldConfig,a=i.editableConfig,t=i.editable,l=i.render;var o=a.editableComptProps;var d=g((function(){return o.options||[]}),[o.options]);var m=F.useCallbackRef((function(e){n.onChange==null?void 0:n.onChange(e.target.value);o.onChange==null?void 0:o.onChange(e)}));if(t){return L(u.Group,r({},o,{value:n.value,onChange:m}))}return L("span",{className:"editable-radio-group-view",children:l?l(n.value,d):P.selectorCell(d)(n.value)})};var Z=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-radio-group-form-item",a==null?void 0:a.className),children:L(X,r({},i))}))};var ee=function e(n){var i=n.fieldConfig,t=i.editableConfig,l=i.editable,o=i.render;var d=t.editableComptProps;var m=b([]),u=m[0],c=m[1];var p=b([]),f=p[0],v=p[1];h((function(){if(!l){var e=N(n.value)?n.value:n.value===undefined?[]:[n.value];if(u.length===0){v(e.map((function(e){return{label:e,value:e}})))}var r=[];e.forEach((function(e){var n=u.find((function(n){return n.value===e}));r.push(n?n:{label:String(e),value:e})}));v(r)}}),[l,d.fieldNames,n.value,u]);var g=F.useCallbackRef((function(e){c(a(e||[],d.fieldNames))}));var x=F.useCallbackRef((function(e,r){n.onChange==null?void 0:n.onChange(e);d.onChange==null?void 0:d.onChange(e,r)}));if(l){return L(S,r({},d,{value:n.value,onChange:x,onSelectorListAllChange:g}))}return T(C,{children:[L("div",{style:{display:"none"},children:L(S,r({},d,{onSelectorListAllChange:g}))}),L("span",{className:"editable-selector-view",children:o?o(n.value,u):f.map((function(e,n){return L(s,{color:"geekblue",children:e.label},n)}))})]})};var ne=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-selector-wrapper-form-item",a==null?void 0:a.className),children:L(ee,r({},i))}))};var re=function e(n){var i=n.fieldConfig,a=i.editableConfig,t=i.editable,l=i.render;var o=a.editableComptProps;var d=F.useCallbackRef((function(e){n.onChange==null?void 0:n.onChange(e);o==null||o.onChange==null?void 0:o.onChange(e)}));var m=g((function(){var e=o.checkedChildren||"是";var n=o.unCheckedChildren||"否";return{checkedText:e,unCheckedText:n}}),[o.checkedChildren,o.unCheckedChildren]);if(t){return L(K,r({},o,{value:n.value,onChange:d}))}if(l){return L("span",{className:"editable-switch-wrapper-view",children:l(n.value)})}return L("span",{className:"editable-switch-wrapper-view",children:o.checkedValue==n.value?L(s,{color:"geekblue",style:{marginRight:0},children:m.checkedText}):L(s,{style:{marginRight:0},children:m.unCheckedText})})};var ie=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-switch-wrapper-form-item",a==null?void 0:a.className),children:L(re,r({},i))}))};var ae=function e(n){var r,i;var a=g((function(){var e;if((e=n.fieldConfig)!=null&&e.render)return undefined;var r=D(n.value)||B(n.value)||W(n.value)||!n.value;if(!r){console.warn("Form.List name:【"+n.name+"】数据【"+JSON.stringify(n.value)+"】不能渲染在页面中")}return r?n.value:undefined}),[(r=n.fieldConfig)==null?void 0:r.render,n.name,n.value]);var t=((i=n.fieldConfig)==null||i.render==null?void 0:i.render(n.value))||a;return L("span",{children:t})};var te=function e(n){return L(o.Item,{noStyle:true,name:n.name,children:L(ae,{name:n.name,fieldConfig:n.fieldConfig})})};var le=function e(n){var i=n.fieldConfig,a=i.formItemProps,t=i.editableConfig;return L(o.Item,r({},a,{name:n.name,children:L(E,r({},t.editableComptProps))}))};var oe=["children"];var de=function e(n){var a=n.fieldConfig,t=a.editableConfig,l=a.render,o=a.editable;var d=t.editableComptProps,m=d.children,u=i(d,oe);if(o){return L(q,r({listType:"text"},u,{value:n.value,onChange:n.onChange,children:m}))}return L("div",{className:"upload-wrapper-selector-view",children:l?l(n.value):L(q,r({listType:"text"},u,{value:n.value,disabled:true}))})};var me=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-upload-wrapper-form-item",a==null?void 0:a.className),children:L(de,r({},i))}))};var ue=function e(n){var i=n.fieldConfig,a=i.editableConfig,t=i.editable;var l=G(t,n.tableRowIndex);var o=k({},n.fieldConfig,{editable:l});var d={name:n.name,fieldConfig:o};if((a==null?void 0:a.type)==="input"&&l){return L(U,r({},d))}else if((a==null?void 0:a.type)==="inputNumber"&&l){return L($,r({},d))}else if((a==null?void 0:a.type)==="textArea"&&l){return L(le,r({},d))}else if((a==null?void 0:a.type)==="datePickerWrapper"&&l){return L(H,r({},d))}else if((a==null?void 0:a.type)==="dateRangePickerWrapper"){return L(Q,r({},d))}else if((a==null?void 0:a.type)==="selectorWrapper"){return L(ne,r({},d))}else if((a==null?void 0:a.type)==="checkboxGroup"){return L(Y,r({},d))}else if((a==null?void 0:a.type)==="radioGroup"){return L(Z,r({},d))}else if((a==null?void 0:a.type)==="uploadWrapper"){return L(me,r({},d))}else if((a==null?void 0:a.type)==="switchWrapper"){return L(ie,r({},d))}else if((a==null?void 0:a.type)==="custom"){return a.editableComptProps({name:n.name,editable:l,completeName:n.completeName,tableRowIndex:n.tableRowIndex})}return L(te,r({},d))};var se=function e(r){var i=o.useFormInstance();var a=r.formListConfig,t=a.onFormListBeforeRender,l=a.editableConfigList,d=a.onFormListAfterRender,m=a.onFormListItemBeforeRender,u=a.onFormListItemAfterRender,s=a.deleteOperateRender;return L(o.List,{name:r.name,children:function e(a,o){var p=o.add,f=o.remove;return T(V,{children:[t?t({tableRowIndex:r.tableRowIndex,add:p,get value(){return i.getFieldValue(r.completeName)}}):null,a.map((function(e,a){var t=l.find((function(e){return G(e.editable,r.tableRowIndex)}));var o=n("editable-inner-formlist-item","editable-inner-formlist-item-"+r.name[1],{"editable-inner-formlist-item_preview":!t});return T("div",{className:o,children:[m==null?void 0:m({add:p,remove:function e(){f(a)},formListItemIndex:a,tableRowIndex:r.tableRowIndex,get value(){return i.getFieldValue([].concat(r.completeName,[e.name]))}}),T(c,{children:[l.map((function(n,i){return L(ue,{name:[e.name,n.fieldName],fieldConfig:n,tableRowIndex:r.tableRowIndex,completeName:[].concat(r.completeName,[e.name])},i)})),t?L(ce,{deleteOperateRender:s,remove:function e(){f(a)},index:a}):undefined]}),u==null?void 0:u({add:p,formListItemIndex:a,tableRowIndex:r.tableRowIndex,remove:function e(){f(a)},get value(){return i.getFieldValue([].concat(r.completeName,[e.name]))}})]},a)})),d?d({tableRowIndex:r.tableRowIndex,add:p,get value(){return i.getFieldValue(r.completeName)}}):null]})}})};var ce=function e(n){return L(o.Item,{children:n.deleteOperateRender?n.deleteOperateRender({remove:n.remove,formListItemIndex:n.index}):L(p,{type:"link",danger:true,icon:L(z,{}),onClick:n.remove,children:"删除"})})};var pe=function e(n){if(n.fieldConfig){if(N(n.fieldConfig["editableConfigList"])){var r=n.fieldConfig;return L(se,{name:n.name,completeName:n.completeName,formListConfig:r,tableRowIndex:n.tableRowIndex})}else{var i;return T(C,{children:[L(ue,{name:n.name,fieldConfig:n.fieldConfig,tableRowIndex:n.tableRowIndex,completeName:n.completeName}),(i=n.hiddenFieldList)==null?void 0:i.map((function(e,r){return L(R,{name:[n.tableRowIndex].concat(t(e.dataIndex))},r)}))]})}}return L(te,{name:n.name})};var fe=["fieldConfig","renderMiddleware","tableChildrenColumnRender","title","tipsWrapperProps","required","align"];var ve=function a(d){var m=o.useFormInstance();var u=x([]);var s=g((function(){var e=d.columns.find((function(e){return e["dataIndex"]===d.uidFieldKey}));return!!e}),[d.columns,d.uidFieldKey]);var c=g((function(){if(!d.columns)return[];return d.columns.map((function(e){var n=e.fieldConfig,a=e.renderMiddleware,l=e.tableChildrenColumnRender,o=e.title,u=e.tipsWrapperProps,c=e.required,p=e.align,f=i(e,fe);var v=w(o)||typeof o==="string";var g;if(u&&v){if(typeof u==="string"){g=L(y,{tipType:"popover",popoverProps:{content:u},children:o})}else{g=L(y,r({},u,{children:o}))}}else{g=o}return r({title:c?L(I,{style:{marginLeft:p==="center"?undefined:10},text:g,position:"before",symbolType:"required"}):g,onCell:function e(){var n;return{valign:((n=d.tableProps)==null?void 0:n.cellVerticalAlign)||"middle"}}},f,{render:function r(i,o,u){if(o["_isChildrenItem"]){if(l){return l(i,o,u)}return i}var c=[].concat(t(d.name),[o.name]);var p=e.dataIndex?[].concat(c,[e.dataIndex]):c;var f=a==null?void 0:a({name:p,tableRowIndex:o.name,operation:o.operation,tableRowName:c,index:u,getTableRowData:function e(){if(d.completeName){return m.getFieldValue([].concat(d.completeName,[o.name]))}return m.getFieldValue(c)}});if(f){return f}var v=typeof n==="function"?n({name:p,tableRowIndex:o.name,tableRowName:c,getTableRowData:function e(){if(d.completeName){return m.getFieldValue([].concat(d.completeName,[o.name]))}return m.getFieldValue(c)}}):n;var g=t(e.hiddenField);if(!s&&u===0){g=g.concat([{dataIndex:d.uidFieldKey}])}return L(pe,{name:e.dataIndex?[o.name,e.dataIndex]:[o.name],completeName:p,fieldConfig:v,tableRowIndex:o.name,hiddenFieldList:g})}})}))}),[d.columns,d.tableProps,d.name,d.completeName,d.uidFieldKey,s,m]);var p=o.useWatch(d.completeName?d.completeName:d.name,m);h((function(){var e=t(d.name);if(/^\d+$/.test(""+(e==null?void 0:e[0]))&&d.completeName===undefined){void f.error("当前Editable处在FormList内部,必须赋值completeName参数")}}),[d.completeName,d.name]);return L("div",{className:n("editable-table",{"et-empty-show-large":d.emptyShowSize==="large"},d.className),style:d.style,children:L(o.List,{name:d.name,rules:d.rules,children:function n(i,a,s){var f=s.errors;u.current=i;return T("div",{style:{borderRadius:"6px",border:f!=null&&f.length?"1px solid #ff4d4f":"1px solid transparent"},children:[d.onTableBeforeRender?d.onTableBeforeRender(a,i.length):null,L(v,r({scroll:{x:"max-content"},pagination:false,size:"small"},d.tableProps,{rowKey:function e(n){var r;var i=d.completeName||[];var a=t(d.name);var o=i.length?i:a;var u;if(n["_isChildrenItem"]){u=m.getFieldValue([].concat(o,[n["_parentIndex"],"children",n["_index"]]))}else{u=m.getFieldValue([].concat(o,[n["_index"]]))}var s=(r=u)==null?void 0:r[d.uidFieldKey];if(l(s)){console.warn("EditableTable 通过入参uidFieldKey:"+d.uidFieldKey+",未获取到表格行唯一值数据")}return s},dataSource:i.map((function(e,n){var i;var t=p==null||(i=p[e.name])==null?void 0:i.children;if(t){t.forEach((function(e,r){e["_isChildrenItem"]=true;e["_parentIndex"]=n;e["_index"]=r}))}return r({},e,{_index:n,operation:a,children:t})})),columns:c})),d.onTableAfterRender?d.onTableAfterRender(a,i.length):L(j,{type:"dashed",hidden:d.hiddenFooterBtn,onClick:function e(){return a.add(d.getAddRowDefaultValues==null?void 0:d.getAddRowDefaultValues())},block:true,icon:L(e,{}),style:{marginTop:15},children:"新增"}),L(o.ErrorList,{errors:f.length?[L("div",{style:{color:"#ff4d4f",padding:"5px"},children:f},"0")]:undefined})]})}})})};export{ve as EditableTable};
27
+ import e from"@ant-design/icons/es/icons/PlusOutlined";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{_ as r,a as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{arrayField2LabelValue as a,toArray as t,isUndefinedOrNull as l}from"@flatbiz/utils";import{Form as o,Checkbox as d,InputNumber as m,Radio as u,Tag as s,Space as c,Button as p,message as f,Table as v}from"antd";import{useMemo as g,useState as b,useEffect as h,Fragment as C,useRef as x,isValidElement as w}from"react";import{ButtonWrapper as j}from"../button-wrapper/index.js";import{TextSymbolWrapper as I}from"../text-symbol-wrapper/index.js";import{TipsWrapper as y}from"../tips-wrapper/index.js";import{isArray as N}from"@dimjs/lang/cjs/is-array";import{FormItemHidden as R}from"../form-item-hidden/index.js";import{extend as k}from"@dimjs/utils/cjs/extend";import{hooks as F}from"@wove/react/cjs/hooks";import{tableCellRender as P}from"../table-cell-render/index.js";import{jsx as L,jsxs as T,Fragment as V}from"react/jsx-runtime";import{DatePickerWrapper as _}from"../date-picker-wrapper/index.js";import{DateRangePickerWrapper as O}from"../date-range-picker-wrapper/index.js";import{InputWrapper as A}from"../input-wrapper/index.js";import{SelectorWrapper as S}from"../selector-wrapper/index.js";import{SwitchWrapper as K}from"../switch-wrapper/index.js";import{isBoolean as W}from"@dimjs/lang/cjs/is-boolean";import{isNumber as B}from"@dimjs/lang/cjs/is-number";import{isString as D}from"@dimjs/lang/cjs/is-string";import{InputTextAreaWrapper as E}from"../input-text-area-wrapper/index.js";import{UploadWrapper as q}from"../upload-wrapper/index.js";import z from"@ant-design/icons/es/icons/DeleteOutlined";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"../use-responsive-point-21b8c601.js";import"../fba-utils/index.js";import"@dimjs/model";import"@ant-design/icons/es/icons/QuestionCircleOutlined";import"@dimjs/lang/cjs/is-object";import"@dimjs/utils/cjs/get";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-empty";import"../button-operate/index.js";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/lang/cjs/is-undefined";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"@wove/react/cjs/create-ctx";import"../tag-list-render/index.js";import"../time-53b3f55f.js";import"@ant-design/icons/es/icons/RedoOutlined";import"../request-status/index.js";import"@dimjs/lang/cjs/is-deep-equal";import"@dimjs/utils/cjs/json";import"pubsub-js";import"react-dom";var G=function e(n,r){return typeof n==="boolean"?n:n==null?void 0:n({tableRowIndex:r})};var M=function e(n){var i=n.fieldConfig,a=i.editableConfig,t=i.editable,l=i.render;var o=a.editableComptProps;var m=g((function(){return o.options||[]}),[o.options]);var u=F.useCallbackRef((function(e){n.onChange==null?void 0:n.onChange(e);o.onChange==null?void 0:o.onChange(e)}));if(t){return L(d.Group,r({},o,{value:n.value,onChange:u}))}return L("span",{className:"editable-checkbox-group-view",children:l?l(n.value,m):P.selectorCell(m)(n.value)})};var Y=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-checkbox-group-form-item",a==null?void 0:a.className),children:L(M,r({},i))}))};var H=function e(i){var a=i.fieldConfig,t=a.formItemProps,l=a.editableConfig;return L(o.Item,r({},t,{name:i.name,className:n("editable-date-picker-wraper-form-item",t==null?void 0:t.className),children:L(_,r({allowClear:true},l.editableComptProps))}))};var J=function e(n){var i=n.fieldConfig,a=i.editableConfig,t=i.editable,l=i.render;var o=a.editableComptProps;var d=F.useCallbackRef((function(e){n.onChange==null?void 0:n.onChange(e);o==null||o.onChange==null?void 0:o.onChange(e)}));var m=g((function(){var e=N(n.value)?n.value:[];if(t)return undefined;return e.join("~")}),[t,n.value]);if(t){return L(O,r({allowClear:true},o,{value:n.value,onChange:d}))}return L("span",{className:"editable-date-range-picker-view",children:l?l(n.value):m})};var Q=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-date-range-picker-wraper-form-item",a==null?void 0:a.className),children:L(J,r({},i))}))};var U=function e(n){var i=n.fieldConfig,a=i.formItemProps,t=i.editableConfig;return L(o.Item,r({},a,{name:n.name,children:L(A,r({allowClear:true},t.editableComptProps))}))};var $=function e(i){var a=i.fieldConfig,t=a.formItemProps,l=a.editableConfig;return L(o.Item,r({},t,{name:i.name,className:n("editable-input-number-form-item",t==null?void 0:t.className),children:L(m,r({},l.editableComptProps))}))};var X=function e(n){var i=n.fieldConfig,a=i.editableConfig,t=i.editable,l=i.render;var o=a.editableComptProps;var d=g((function(){return o.options||[]}),[o.options]);var m=F.useCallbackRef((function(e){n.onChange==null?void 0:n.onChange(e.target.value);o.onChange==null?void 0:o.onChange(e)}));if(t){return L(u.Group,r({},o,{value:n.value,onChange:m}))}return L("span",{className:"editable-radio-group-view",children:l?l(n.value,d):P.selectorCell(d)(n.value)})};var Z=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-radio-group-form-item",a==null?void 0:a.className),children:L(X,r({},i))}))};var ee=function e(n){var i=n.fieldConfig,t=i.editableConfig,l=i.editable,o=i.render;var d=t.editableComptProps;var m=b([]),u=m[0],c=m[1];var p=b([]),f=p[0],v=p[1];h((function(){if(!l){var e=N(n.value)?n.value:n.value===undefined?[]:[n.value];if(u.length===0){v(e.map((function(e){return{label:e,value:e}})))}var r=[];e.forEach((function(e){var n=u.find((function(n){return n.value===e}));r.push(n?n:{label:String(e),value:e})}));v(r)}}),[l,d.fieldNames,n.value,u]);var g=F.useCallbackRef((function(e){c(a(e||[],d.fieldNames))}));var x=F.useCallbackRef((function(e,r){n.onChange==null?void 0:n.onChange(e);d.onChange==null?void 0:d.onChange(e,r)}));if(l){return L(S,r({},d,{value:n.value,onChange:x,onSelectorListAllChange:g}))}return T(C,{children:[L("div",{style:{display:"none"},children:L(S,r({},d,{onSelectorListAllChange:g}))}),L("span",{className:"editable-selector-view",children:o?o(n.value,u):f.map((function(e,n){return L(s,{color:"geekblue",children:e.label},n)}))})]})};var ne=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-selector-wrapper-form-item",a==null?void 0:a.className),children:L(ee,r({},i))}))};var re=function e(n){var i=n.fieldConfig,a=i.editableConfig,t=i.editable,l=i.render;var o=a.editableComptProps;var d=F.useCallbackRef((function(e){n.onChange==null?void 0:n.onChange(e);o==null||o.onChange==null?void 0:o.onChange(e)}));var m=g((function(){var e=o.checkedChildren||"是";var n=o.unCheckedChildren||"否";return{checkedText:e,unCheckedText:n}}),[o.checkedChildren,o.unCheckedChildren]);if(t){return L(K,r({},o,{value:n.value,onChange:d}))}if(l){return L("span",{className:"editable-switch-wrapper-view",children:l(n.value)})}return L("span",{className:"editable-switch-wrapper-view",children:o.checkedValue==n.value?L(s,{color:"geekblue",style:{marginRight:0},children:m.checkedText}):L(s,{style:{marginRight:0},children:m.unCheckedText})})};var ie=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-switch-wrapper-form-item",a==null?void 0:a.className),children:L(re,r({},i))}))};var ae=function e(n){var r,i;var a=g((function(){var e;if((e=n.fieldConfig)!=null&&e.render)return undefined;var r=D(n.value)||B(n.value)||W(n.value)||!n.value;if(!r){console.warn("Form.List name:【"+n.name+"】数据【"+JSON.stringify(n.value)+"】不能渲染在页面中")}return r?n.value:undefined}),[(r=n.fieldConfig)==null?void 0:r.render,n.name,n.value]);var t=((i=n.fieldConfig)==null||i.render==null?void 0:i.render(n.value))||a;return L("span",{children:t})};var te=function e(n){return L(o.Item,{noStyle:true,name:n.name,children:L(ae,{name:n.name,fieldConfig:n.fieldConfig})})};var le=function e(n){var i=n.fieldConfig,a=i.formItemProps,t=i.editableConfig;return L(o.Item,r({},a,{name:n.name,children:L(E,r({},t.editableComptProps))}))};var oe=["children"];var de=function e(n){var a=n.fieldConfig,t=a.editableConfig,l=a.render,o=a.editable;var d=t.editableComptProps,m=d.children,u=i(d,oe);if(o){return L(q,r({listType:"text"},u,{value:n.value,onChange:n.onChange,children:m}))}return L("div",{className:"upload-wrapper-selector-view",children:l?l(n.value):L(q,r({listType:"text"},u,{value:n.value,disabled:true}))})};var me=function e(i){var a=i.fieldConfig.formItemProps;return L(o.Item,r({},a,{name:i.name,className:n("editable-upload-wrapper-form-item",a==null?void 0:a.className),children:L(de,r({},i))}))};var ue=function e(n){var i=n.fieldConfig,a=i.editableConfig,t=i.editable;var l=G(t,n.tableRowIndex);var o=k({},n.fieldConfig,{editable:l});var d={name:n.name,fieldConfig:o};if((a==null?void 0:a.type)==="input"&&l){return L(U,r({},d))}else if((a==null?void 0:a.type)==="inputNumber"&&l){return L($,r({},d))}else if((a==null?void 0:a.type)==="textArea"&&l){return L(le,r({},d))}else if((a==null?void 0:a.type)==="datePickerWrapper"&&l){return L(H,r({},d))}else if((a==null?void 0:a.type)==="dateRangePickerWrapper"){return L(Q,r({},d))}else if((a==null?void 0:a.type)==="selectorWrapper"){return L(ne,r({},d))}else if((a==null?void 0:a.type)==="checkboxGroup"){return L(Y,r({},d))}else if((a==null?void 0:a.type)==="radioGroup"){return L(Z,r({},d))}else if((a==null?void 0:a.type)==="uploadWrapper"){return L(me,r({},d))}else if((a==null?void 0:a.type)==="switchWrapper"){return L(ie,r({},d))}else if((a==null?void 0:a.type)==="custom"){return a.editableComptProps({name:n.name,editable:l,completeName:n.completeName,tableRowIndex:n.tableRowIndex})}return L(te,r({},d))};var se=function e(r){var i=o.useFormInstance();var a=r.formListConfig,t=a.onFormListBeforeRender,l=a.editableConfigList,d=a.onFormListAfterRender,m=a.onFormListItemBeforeRender,u=a.onFormListItemAfterRender,s=a.deleteOperateRender;return L(o.List,{name:r.name,children:function e(a,o){var p=o.add,f=o.remove;return T(V,{children:[t?t({tableRowIndex:r.tableRowIndex,add:p,get value(){return i.getFieldValue(r.completeName)}}):null,a.map((function(e,a){var t=l.find((function(e){return G(e.editable,r.tableRowIndex)}));var o=n("editable-inner-formlist-item","editable-inner-formlist-item-"+r.name[1],{"editable-inner-formlist-item_preview":!t});return T("div",{className:o,children:[m==null?void 0:m({add:p,remove:function e(){f(a)},formListItemIndex:a,tableRowIndex:r.tableRowIndex,get value(){return i.getFieldValue([].concat(r.completeName,[e.name]))}}),T(c,{children:[l.map((function(n,i){return L(ue,{name:[e.name,n.fieldName],fieldConfig:n,tableRowIndex:r.tableRowIndex,completeName:[].concat(r.completeName,[e.name])},i)})),t?L(ce,{deleteOperateRender:s,remove:function e(){f(a)},index:a}):undefined]}),u==null?void 0:u({add:p,formListItemIndex:a,tableRowIndex:r.tableRowIndex,remove:function e(){f(a)},get value(){return i.getFieldValue([].concat(r.completeName,[e.name]))}})]},a)})),d?d({tableRowIndex:r.tableRowIndex,add:p,get value(){return i.getFieldValue(r.completeName)}}):null]})}})};var ce=function e(n){return L(o.Item,{children:n.deleteOperateRender?n.deleteOperateRender({remove:n.remove,formListItemIndex:n.index}):L(p,{type:"link",danger:true,icon:L(z,{}),onClick:n.remove,children:"删除"})})};var pe=function e(n){if(n.fieldConfig){if(N(n.fieldConfig["editableConfigList"])){var r=n.fieldConfig;return L(se,{name:n.name,completeName:n.completeName,formListConfig:r,tableRowIndex:n.tableRowIndex})}else{var i;return T(C,{children:[L(ue,{name:n.name,fieldConfig:n.fieldConfig,tableRowIndex:n.tableRowIndex,completeName:n.completeName}),(i=n.hiddenFieldList)==null?void 0:i.map((function(e,r){return L(R,{name:[n.tableRowIndex].concat(t(e.dataIndex))},r)}))]})}}return L(te,{name:n.name})};var fe=["fieldConfig","renderMiddleware","tableChildrenColumnRender","title","tipsWrapperProps","required","align"];var ve=function a(d){var m=o.useFormInstance();var u=x([]);var s=g((function(){var e=d.columns.find((function(e){return e["dataIndex"]===d.uidFieldKey}));return!!e}),[d.columns,d.uidFieldKey]);var c=g((function(){if(!d.columns)return[];return d.columns.map((function(e){var n=e.fieldConfig,a=e.renderMiddleware,l=e.tableChildrenColumnRender,o=e.title,u=e.tipsWrapperProps,c=e.required,p=e.align,f=i(e,fe);var v=w(o)||typeof o==="string";var g;if(u&&v){if(typeof u==="string"){g=L(y,{tipType:"popover",popoverProps:{content:u},children:o})}else{g=L(y,r({},u,{children:o}))}}else{g=o}return r({title:c?L(I,{style:{marginLeft:p==="center"?undefined:10},text:g,position:"before",symbolType:"required"}):g,onCell:function e(){var n;return{valign:((n=d.tableProps)==null?void 0:n.cellVerticalAlign)||"middle"}}},f,{render:function r(i,o,u){if(o["_isChildrenItem"]){if(l){return l(i,o,u)}return i}var c=[].concat(t(d.name),[o.name]);var p=e.dataIndex?[].concat(c,[e.dataIndex]):c;var f=a==null?void 0:a({name:p,tableRowIndex:o.name,operation:o.operation,tableRowName:c,index:u,getTableRowData:function e(){if(d.completeName){return m.getFieldValue([].concat(d.completeName,[o.name]))}return m.getFieldValue(c)}});if(f){return f}var v=typeof n==="function"?n({name:p,tableRowIndex:o.name,tableRowName:c,getTableRowData:function e(){if(d.completeName){return m.getFieldValue([].concat(d.completeName,[o.name]))}return m.getFieldValue(c)}}):n;var g=t(e.hiddenField);if(!s&&u===0){g=g.concat([{dataIndex:d.uidFieldKey}])}return L(pe,{name:e.dataIndex?[o.name,e.dataIndex]:[o.name],completeName:p,fieldConfig:v,tableRowIndex:o.name,hiddenFieldList:g})}})}))}),[d.columns,d.tableProps,d.name,d.completeName,d.uidFieldKey,s,m]);var p=o.useWatch(d.completeName?d.completeName:d.name,m);h((function(){var e=t(d.name);if(/^\d+$/.test(""+(e==null?void 0:e[0]))&&d.completeName===undefined){void f.error("当前Editable处在FormList内部,必须赋值completeName参数")}}),[d.completeName,d.name]);return L("div",{className:n("editable-table",{"et-empty-show-large":d.emptyShowSize==="large"},d.className),style:d.style,children:L(o.List,{name:d.name,rules:d.rules,children:function n(i,a,s){var f=s.errors;u.current=i;return T("div",{style:{borderRadius:"6px",border:f!=null&&f.length?"1px solid #ff4d4f":"1px solid transparent"},children:[d.onTableBeforeRender?d.onTableBeforeRender(a,i.length):null,L(v,r({scroll:{x:"max-content"},pagination:false,size:"small"},d.tableProps,{rowKey:function e(n){var r;var i=d.completeName||[];var a=t(d.name);var o=i.length?i:a;var u;if(n["_isChildrenItem"]){u=m.getFieldValue([].concat(o,[n["_parentIndex"],"children",n["_index"]]))}else{u=m.getFieldValue([].concat(o,[n["_index"]]))}var s=(r=u)==null?void 0:r[d.uidFieldKey];if(l(s)){console.warn("EditableTable 通过入参uidFieldKey:"+d.uidFieldKey+",未获取到表格行唯一值数据")}return s},dataSource:i.map((function(e,n){var i;var t=p==null||(i=p[e.name])==null?void 0:i.children;if(t){t.forEach((function(e,r){e["_isChildrenItem"]=true;e["_parentIndex"]=n;e["_index"]=r}))}return r({},e,{_index:n,operation:a,children:t})})),columns:c})),d.onTableAfterRender?d.onTableAfterRender(a,i.length):L(j,{type:"dashed",hidden:d.hiddenFooterBtn,onClick:function e(){return a.add(d.getAddRowDefaultValues==null?void 0:d.getAddRowDefaultValues())},block:true,icon:L(e,{}),style:{marginTop:15},children:"新增"}),L(o.ErrorList,{errors:f.length?[L("div",{style:{color:"#ff4d4f",padding:"5px"},children:f},"0")]:undefined})]})}})})};export{ve as EditableTable};
28
28
  //# sourceMappingURL=index.js.map