@flatbiz/antd 4.5.54 → 4.5.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/ace-editor-groovy/index.js +1 -1
- package/esm/ace-editor-groovy/index.js.map +1 -1
- package/esm/ace-editor-java/index.js +1 -1
- package/esm/ace-editor-java/index.js.map +1 -1
- package/esm/ace-editor-json/index.js +1 -1
- package/esm/ace-editor-json/index.js.map +1 -1
- package/esm/ace-editor-mysql/index.js +1 -1
- package/esm/ace-editor-mysql/index.js.map +1 -1
- package/esm/ace-editor-xml/index.js +1 -1
- package/esm/ace-editor-xml/index.js.map +1 -1
- package/esm/anchor-steps/index.js +1 -1
- package/esm/anchor-steps/index.js.map +1 -1
- package/esm/bootstrap/index.js +1 -1
- package/esm/bootstrap/index.js.map +1 -1
- package/esm/box-grid/index.js +1 -1
- package/esm/box-grid/index.js.map +1 -1
- package/esm/button-operate/index.js +1 -1
- package/esm/button-operate/index.js.map +1 -1
- package/esm/button-wrapper/index.js +1 -1
- package/esm/button-wrapper/index.js.map +1 -1
- package/esm/card-layout/index.js +1 -1
- package/esm/card-layout/index.js.map +1 -1
- package/esm/cascader-wrapper/index.css +1 -1
- package/esm/cascader-wrapper/index.js +1 -1
- package/esm/cascader-wrapper/index.js.map +1 -1
- package/esm/check-list/index.js +1 -1
- package/esm/check-list/index.js.map +1 -1
- package/esm/checkbox-wrapper/index.js +1 -1
- package/esm/checkbox-wrapper/index.js.map +1 -1
- package/esm/code-render/index.css +1 -0
- package/esm/code-render/index.js +5 -0
- package/esm/code-render/index.js.map +1 -0
- package/esm/color-picker-wrapper/index.css +1 -1
- package/esm/color-picker-wrapper/index.js +1 -1
- package/esm/color-picker-wrapper/index.js.map +1 -1
- package/esm/config-provider-wrapper/index.js +1 -1
- package/esm/copy-wrapper/index.js +1 -1
- package/esm/copy-wrapper/index.js.map +1 -1
- package/esm/date-picker-wrapper/index.js +1 -1
- package/esm/date-picker-wrapper/index.js.map +1 -1
- package/esm/date-range-picker-wrapper/index.js +1 -1
- package/esm/date-range-picker-wrapper/index.js.map +1 -1
- package/esm/date-range-picker-wrapper-form-item/index.js +1 -1
- package/esm/date-range-picker-wrapper-form-item/index.js.map +1 -1
- package/esm/delete-node/index.js +1 -1
- package/esm/delete-node/index.js.map +1 -1
- package/esm/dialog-alert/index.js +1 -1
- package/esm/dialog-confirm/index.js +1 -1
- package/esm/dialog-drag-modal/index.js +1 -1
- package/esm/dialog-drag-modal/index.js.map +1 -1
- package/esm/dialog-drawer/index.js +1 -1
- package/esm/dialog-drawer/index.js.map +1 -1
- package/esm/dialog-drawer-content/index.js +1 -1
- package/esm/dialog-drawer-content/index.js.map +1 -1
- package/esm/dialog-loading/index.js +1 -1
- package/esm/dialog-loading/index.js.map +1 -1
- package/esm/dialog-modal/index.js +1 -1
- package/esm/dialog-modal/index.js.map +1 -1
- package/esm/dialog-preview-image/index.js +1 -1
- package/esm/dialog-preview-image/index.js.map +1 -1
- package/esm/drag-collapse/index.js +1 -1
- package/esm/drag-collapse/index.js.map +1 -1
- package/esm/drag-collapse-form-list/index.js +1 -1
- package/esm/drag-collapse-form-list/index.js.map +1 -1
- package/esm/drag-editable-card/index.js +1 -1
- package/esm/drag-editable-card/index.js.map +1 -1
- package/esm/drag-editable-table/index.js +1 -1
- package/esm/drag-editable-table/index.js.map +1 -1
- package/esm/drag-editable-table-pro/index.js +1 -1
- package/esm/drag-editable-table-pro/index.js.map +1 -1
- package/esm/drag-form-list/index.js +1 -1
- package/esm/drag-form-list/index.js.map +1 -1
- package/esm/drag-table/index.js +1 -1
- package/esm/drag-table/index.js.map +1 -1
- package/esm/drawer-wrapper/index.js +1 -1
- package/esm/drawer-wrapper/index.js.map +1 -1
- package/esm/dropdown-menu-wrapper/index.js +1 -1
- package/esm/dropdown-menu-wrapper/index.js.map +1 -1
- package/esm/easy-form/index.js +1 -1
- package/esm/easy-form/index.js.map +1 -1
- package/esm/easy-table/index.js +1 -1
- package/esm/easy-table/index.js.map +1 -1
- package/esm/editable-card/index.js +1 -1
- package/esm/editable-card/index.js.map +1 -1
- package/esm/editable-field/index.js +1 -1
- package/esm/editable-field/index.js.map +1 -1
- package/esm/editable-table/index.js +1 -1
- package/esm/editable-table/index.js.map +1 -1
- package/esm/editable-table-pro/index.js +1 -1
- package/esm/editable-table-pro/index.js.map +1 -1
- package/esm/editor-wrapper/index.js +1 -1
- package/esm/editor-wrapper/index.js.map +1 -1
- package/esm/fba-app/index.js +1 -1
- package/esm/fba-app/index.js.map +1 -1
- package/esm/fba-hooks/index.js +1 -1
- package/esm/fba-hooks/index.js.map +1 -1
- package/esm/fba-utils/index.js +1 -1
- package/esm/fba-utils/index.js.map +1 -1
- package/esm/file-export/index.js +1 -1
- package/esm/file-export/index.js.map +1 -1
- package/esm/file-import/index.js +1 -1
- package/esm/file-import/index.js.map +1 -1
- package/esm/file-select/index.js +1 -1
- package/esm/file-select/index.js.map +1 -1
- package/esm/flex-layout/index.js +1 -1
- package/esm/flex-layout/index.js.map +1 -1
- package/esm/form-grid/index.js +1 -1
- package/esm/form-grid/index.js.map +1 -1
- package/esm/form-item-group/index.js +1 -1
- package/esm/form-item-group/index.js.map +1 -1
- package/esm/form-item-text/index.js +1 -1
- package/esm/form-item-text/index.js.map +1 -1
- package/esm/form-item-wrapper/index.js +1 -1
- package/esm/form-item-wrapper/index.js.map +1 -1
- package/esm/form-list-wrapper/index.js +1 -1
- package/esm/form-list-wrapper/index.js.map +1 -1
- package/esm/form-wrapper/index.js +1 -1
- package/esm/form-wrapper/index.js.map +1 -1
- package/esm/full-screen/index.js +1 -1
- package/esm/full-screen/index.js.map +1 -1
- package/esm/icon-wrapper/index.js +1 -1
- package/esm/icon-wrapper/index.js.map +1 -1
- package/esm/index-636a568e.js +8 -0
- package/esm/index-636a568e.js.map +1 -0
- package/esm/{index-83bede1b.js → index-853b36e6.js} +2 -2
- package/esm/{index-83bede1b.js.map → index-853b36e6.js.map} +1 -1
- package/esm/index.js +2 -2
- package/esm/input-search-wrapper/index.js +1 -1
- package/esm/input-search-wrapper/index.js.map +1 -1
- package/esm/input-text-area-wrapper/index.js +1 -1
- package/esm/input-text-area-wrapper/index.js.map +1 -1
- package/esm/input-wrapper/index.js +1 -1
- package/esm/input-wrapper/index.js.map +1 -1
- package/esm/json-editor/index.js +1 -1
- package/esm/json-editor/index.js.map +1 -1
- package/esm/label-value-layout/index.js +1 -1
- package/esm/label-value-layout/index.js.map +1 -1
- package/esm/label-value-render/index.js +1 -1
- package/esm/label-value-render/index.js.map +1 -1
- package/esm/local-loading/index.js +1 -1
- package/esm/local-loading/index.js.map +1 -1
- package/esm/mention-editor/index.js +1 -1
- package/esm/mention-editor/index.js.map +1 -1
- package/esm/mentions-wrapper/index.js +1 -1
- package/esm/mentions-wrapper/index.js.map +1 -1
- package/esm/modal-action/index.js +1 -1
- package/esm/modal-action/index.js.map +1 -1
- package/esm/modal-wrapper/index.js +1 -1
- package/esm/modal-wrapper/index.js.map +1 -1
- package/esm/number-range-form-item/index.js +1 -1
- package/esm/number-range-form-item/index.js.map +1 -1
- package/esm/pdf/index.js +1 -1
- package/esm/pdf/index.js.map +1 -1
- package/esm/pdf-preview/index.js +1 -1
- package/esm/pdf-preview/index.js.map +1 -1
- package/esm/radio-group-wrapper/index.js +1 -1
- package/esm/radio-group-wrapper/index.js.map +1 -1
- package/esm/relation-tree/index.js +1 -1
- package/esm/relation-tree/index.js.map +1 -1
- package/esm/request-status/index.css +1 -1
- package/esm/request-status/index.js +2 -1
- package/esm/request-status/index.js.map +1 -1
- package/esm/resizable-drawer/index.js +1 -6
- package/esm/resizable-drawer/index.js.map +1 -1
- package/esm/rich-text-editor/index.js +1 -1
- package/esm/rich-text-editor/index.js.map +1 -1
- package/esm/rich-text-viewer/index.js +1 -1
- package/esm/rich-text-viewer/index.js.map +1 -1
- package/esm/roll-location-center/index.js +1 -1
- package/esm/roll-location-center/index.js.map +1 -1
- package/esm/roll-location-in-view/index.js +1 -1
- package/esm/roll-location-in-view/index.js.map +1 -1
- package/esm/rule-describe/index.js +1 -1
- package/esm/rule-describe/index.js.map +1 -1
- package/esm/search-form/index.js +1 -1
- package/esm/search-form/index.js.map +1 -1
- package/esm/search-menu/index.js +1 -1
- package/esm/search-menu/index.js.map +1 -1
- package/esm/selector-wrapper/index.css +1 -1
- package/esm/selector-wrapper/index.js +1 -1
- package/esm/selector-wrapper/index.js.map +1 -1
- package/esm/selector-wrapper-search/index.js +1 -1
- package/esm/selector-wrapper-search/index.js.map +1 -1
- package/esm/selector-wrapper-simple/index.js +1 -1
- package/esm/selector-wrapper-simple/index.js.map +1 -1
- package/esm/simple-layout/index.js +1 -1
- package/esm/simple-layout/index.js.map +1 -1
- package/esm/sms-count-down/index.js +1 -1
- package/esm/sms-count-down/index.js.map +1 -1
- package/esm/split-wrapper/index.js +1 -1
- package/esm/split-wrapper/index.js.map +1 -1
- package/esm/styles/index.css +1 -1
- package/esm/svg-http-view/index.js +1 -1
- package/esm/svg-http-view/index.js.map +1 -1
- package/esm/switch-confirm-wrapper/index.js +1 -1
- package/esm/switch-confirm-wrapper/index.js.map +1 -1
- package/esm/switch-wrapper/index.js +1 -1
- package/esm/switch-wrapper/index.js.map +1 -1
- package/esm/table-cell-render/index.js +1 -1
- package/esm/table-cell-render/index.js.map +1 -1
- package/esm/table-scrollbar/index.js +1 -1
- package/esm/table-scrollbar/index.js.map +1 -1
- package/esm/tabs-sticky/index.js +1 -1
- package/esm/tabs-sticky/index.js.map +1 -1
- package/esm/tabs-wrapper/index.js +1 -1
- package/esm/tabs-wrapper/index.js.map +1 -1
- package/esm/tag-group/index.js +1 -1
- package/esm/tag-group/index.js.map +1 -1
- package/esm/tag-list-render/index.js +1 -1
- package/esm/tag-list-render/index.js.map +1 -1
- package/esm/tag-list-select/index.js +1 -1
- package/esm/tag-list-select/index.js.map +1 -1
- package/esm/tag-wrapper/index.js +1 -1
- package/esm/tag-wrapper/index.js.map +1 -1
- package/esm/text-css-ellipsis/index.js +1 -1
- package/esm/text-css-ellipsis/index.js.map +1 -1
- package/esm/text-overflow/index.js +1 -1
- package/esm/text-overflow/index.js.map +1 -1
- package/esm/text-overflow-render/index.js +1 -1
- package/esm/text-symbol-wrapper/index.js +1 -1
- package/esm/text-symbol-wrapper/index.js.map +1 -1
- package/esm/time-ea73b2fb.js +3 -0
- package/esm/{time-53b3f55f.js.map → time-ea73b2fb.js.map} +1 -1
- package/esm/time-picker-wrapper/index.js +1 -1
- package/esm/time-picker-wrapper/index.js.map +1 -1
- package/esm/time-range-picker-wrapper/index.js +1 -1
- package/esm/time-range-picker-wrapper/index.js.map +1 -1
- package/esm/time-range-picker-wrapper-form-item/index.js +1 -1
- package/esm/time-range-picker-wrapper-form-item/index.js.map +1 -1
- package/esm/tree-modal/index.js +1 -1
- package/esm/tree-modal/index.js.map +1 -1
- package/esm/tree-modal-selector/index.js +1 -1
- package/esm/tree-modal-selector/index.js.map +1 -1
- package/esm/tree-selector-wrapper/index.js +1 -1
- package/esm/tree-selector-wrapper/index.js.map +1 -1
- package/esm/tree-wrapper/index.js +2 -2
- package/esm/tree-wrapper/index.js.map +1 -1
- package/esm/upload-wrapper/index.js +1 -1
- package/esm/upload-wrapper/index.js.map +1 -1
- package/esm/use-responsive-point-1e6d93d9.js +3 -0
- package/esm/{use-responsive-point-21b8c601.js.map → use-responsive-point-1e6d93d9.js.map} +1 -1
- package/esm/x-mind-preview/index.js +1 -1
- package/esm/x-mind-preview/index.js.map +1 -1
- package/index.d.ts +51 -28
- package/package.json +4 -5
- package/esm/ai-search/index.css +0 -0
- package/esm/ai-search/index.js +0 -11
- package/esm/ai-search/index.js.map +0 -1
- package/esm/time-53b3f55f.js +0 -3
- package/esm/use-responsive-point-21b8c601.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-form/form.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { isUndefinedOrNull, TAny } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { Children, cloneElement, ReactNode, useMemo } from 'react';\nimport { BoxGrid } from '../box-grid';\nimport { BoxRowProps } from '../box-grid/row';\nimport { GutterParams } from '../box-grid/type';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport './style.less';\n\nexport type EasyFormProps = Omit<FormWrapperProps, 'children'> & {\n /**\n * 定义一行显示几列(当外层宽度尺寸大于 992px(lg) 时,一行显示几列), 默认值:3\n * ```\n * 1. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响(column=1除外)\n * 2. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 3. 列数尺寸定义\n * {\n * 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n * 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n * 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n * 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n * };\n * ```\n */\n column?: 1 | 2 | 3 | 4;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4;\n /**\n * Form显示宽度,可数值、可百分比;在小屏幕尺寸(xs、sm)上无效\n */\n width?: number | string;\n /** 网格间距 */\n gridGutter?: BoxRowProps['gutter'];\n children: ReactNode;\n /**\n * 是否为纯净模式,对EasyForm的子节点不做任何包装处理\n */\n isPure?: boolean;\n /**\n * 栅格占位格数,最大值:24\n * ```\n * 1. 当前EasyForm处在 EasyForm 直接子节点中有效,即当前EasyForm在EasyForm栅格中的占位格数;\n * 2. 父节点使用属性值,当前节点不使用属性值\n * ```\n */\n span?: number;\n};\n\n/**\n * 简单Form布局,可自定义网格布局\n * ```\n * 1. demo:https://fex.qa.tcshuke.com/docs/admin/main/form/grid\n * 2. EasyForm的children列表会进行网格化布局\n * 3. 自定义栅格占位格数的4中方式\n * 3.1 设置FormItemWrapper、FormItemText组件span属性;\n * 3.2 使用 EasyFormItemSpan 包裹children item,设置span属性\n * 3.3 使用 <BoxGrid.Col span={24} ></BoxGrid.Col> 包裹,设置响应式属性\n * 3.4 设置 EasyForm isPure = true设置纯净模式,对EasyForm的子节点不做任何包装处理\n * 4. EasyForm可嵌套使用,嵌套内部的<EasyForm />节点Form相关属性失效,例如属性form、initialValues等都失效\n * <EasyForm form={form}>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * </EasyForm>\n * 5. 布局网格以当前组件的宽度来计算的,不是屏幕宽度\n * 6. EasyForm 子节点包含 hidden = true 会被忽略\n * 7. 通过 column 可定义一行显示几列FormItem\n * 8. 通过 labelItemVertical 可定义 formitem 竖直布局\n * 9. 通过 formItemGap 可定义 formItem竖直方向间隙\n * 10. 通过 forceColumn 可强制定义一行显示几列,不考虑响应式\n * 11. 通过 labelWidth 可控制Form内部所有label的宽度(可实现整齐效果)\n * 12. 自定义栅格占位格数,见下方`例如`\n\n * 例如\n * <EasyForm column={3}>\n *\t <FormItemWrapper name=\"field1\" label=\"条件1\">\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <!-- !!自定义栅格占位格数第一种方式:可通过使用 BoxGrid.Col 包裹元素来自定义网格占比 -->\n *\t <BoxGrid.Col span={24}>\n *\t <FormItemWrapper name=\"field5\" label=\"条件5\">\n *\t \t<Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t </BoxGrid.Col>\n *\t <!-- !!自定义栅格占位格数第二种方式:如果为FormItemWrapper组件,可设置span属性 -->\n *\t <FormItemWrapper name=\"field6\" label=\"条件6\" span={24}>\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <FormItemWrapper noStyle span={24}>\n *\t <Button>按钮</Buttone>\n *\t </FormItemWrapper>\n * </EasyForm>\n * ```\n */\n\nexport const EasyForm = (props: EasyFormProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const form = Form.useFormInstance();\n\n const {\n column,\n forceColumn,\n children,\n width,\n gridGutter,\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap = '15',\n isPure,\n ...otherProps\n } = props;\n const gridSize = useMemo(() => {\n if (forceColumn) {\n const num = 24 / forceColumn;\n return { xs: num, sm: num, md: num, lg: num, xl: num, xxl: num };\n }\n if (!column) {\n return { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n }\n const columnMap = {\n 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n };\n return columnMap[column];\n }, [column, forceColumn]);\n\n const getFormRowChildren = () => {\n const childrenList = Children.toArray(children).filter((item: TAny) => {\n return !!item;\n });\n return childrenList\n .map((item: TAny, index) => {\n const domTypeName = item.type['domTypeName'];\n\n let span: number | undefined = undefined;\n if (\n domTypeName === 'FormItemText' ||\n domTypeName === 'FormItemSpan' ||\n domTypeName === 'FormItemWrapper' ||\n domTypeName === 'BoxGridCol' ||\n domTypeName === 'EasyForm'\n ) {\n span = item.props['span'] as number;\n if (span) {\n if (screenType === 'xs') {\n span = 24;\n } else if (screenType === 'sm') {\n span = span > 12 ? span : 12;\n }\n }\n }\n\n if (domTypeName === 'BoxGridCol' || domTypeName === 'FormItemSpan') {\n if (domTypeName === 'FormItemSpan' && item.props.hidden) {\n return null;\n }\n return cloneElement(item, {\n ...item.props,\n ...gridSize,\n span,\n key: index,\n });\n }\n const display = item.props?.style?.display;\n let removeWrapper = false;\n if (\n domTypeName === 'FormItemText' ||\n domTypeName === 'FormItemHidden' ||\n domTypeName === 'FormItemWrapper' ||\n domTypeName === 'FormItemWrapperDependencies' ||\n item.type === Form.Item ||\n display === 'none'\n ) {\n removeWrapper = true;\n }\n\n if (domTypeName === 'FormItemWrapper' || item.props.noStyle) {\n removeWrapper = false;\n }\n return (\n <BoxGrid.Col key={index} {...gridSize} span={span} removeWrapper={removeWrapper}>\n {item}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\n };\n\n const innerStyle = useMemo(() => {\n /** 小屏幕不控制宽度 */\n if (['xs', 'sm'].includes(screenType) || !width) {\n return {};\n }\n return { width };\n }, [screenType, width]);\n\n const gutter = isUndefinedOrNull(gridGutter) ? ([15, 0] as GutterParams) : gridGutter;\n\n const labelAlignNew = useMemo(() => {\n if (['xs'].includes(screenType)) {\n return 'left';\n }\n return labelAlign;\n }, [labelAlign, screenType]);\n\n const fromLayoutClassName = useMemo(() => {\n return preDefinedClassName.getFormLayoutClassName({\n labelWidth,\n labelItemVertical,\n labelAlign: labelAlignNew,\n formItemGap,\n className: otherProps.className,\n });\n }, [labelWidth, labelItemVertical, labelAlignNew, formItemGap, otherProps.className]);\n\n if (form) {\n return (\n <div\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames(\n 'easy-form',\n { 'easy-form-pure': isPure },\n 'easy-form-nested',\n fromLayoutClassName,\n )}\n >\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </div>\n );\n }\n\n return (\n <FormWrapper\n {...otherProps}\n labelWidth={labelWidth}\n labelAlign={labelAlignNew}\n labelItemVertical={labelItemVertical}\n formItemGap={formItemGap}\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames('easy-form', { 'easy-form-pure': isPure }, fromLayoutClassName)}\n autoComplete=\"off\"\n >\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </FormWrapper>\n );\n};\n\nEasyForm['domTypeName'] = 'EasyForm';\n"],"names":["EasyForm","props","screenType","fbaHooks","useResponsivePoint","form","Form","useFormInstance","column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","_props$formItemGap","formItemGap","isPure","otherProps","_objectWithoutPropertiesLoose","_excluded","gridSize","useMemo","num","xs","sm","md","lg","xl","xxl","columnMap","getFormRowChildren","childrenList","Children","toArray","filter","item","map","index","_item$props","domTypeName","type","span","undefined","hidden","cloneElement","_extends","key","display","style","removeWrapper","Item","noStyle","_jsx","BoxGrid","Col","Boolean","innerStyle","includes","gutter","isUndefinedOrNull","labelAlignNew","fromLayoutClassName","preDefinedClassName","getFormLayoutClassName","className","_classNames","Row","FormWrapper","autoComplete"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-form/form.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { isUndefinedOrNull, TAny } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { Children, cloneElement, ReactNode, useMemo } from 'react';\nimport { BoxGrid } from '../box-grid';\nimport { BoxRowProps } from '../box-grid/row';\nimport { GutterParams } from '../box-grid/type';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport './style.less';\n\nexport type EasyFormProps = Omit<FormWrapperProps, 'children'> & {\n /**\n * 定义一行显示几列(当外层宽度尺寸大于 992px(lg) 时,一行显示几列), 默认值:3\n * ```\n * 1. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响(column=1除外)\n * 2. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 3. 列数尺寸定义\n * {\n * 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n * 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n * 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n * 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n * };\n * ```\n */\n column?: 1 | 2 | 3 | 4;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4;\n /**\n * Form显示宽度,可数值、可百分比;在小屏幕尺寸(xs、sm)上无效\n */\n width?: number | string;\n /** 网格间距 */\n gridGutter?: BoxRowProps['gutter'];\n children: ReactNode;\n /**\n * 是否为纯净模式,对EasyForm的子节点不做任何包装处理\n */\n isPure?: boolean;\n /**\n * 栅格占位格数,最大值:24\n * ```\n * 1. 当前EasyForm处在 EasyForm 直接子节点中有效,即当前EasyForm在EasyForm栅格中的占位格数;\n * 2. 父节点使用属性值,当前节点不使用属性值\n * ```\n */\n span?: number;\n};\n\n/**\n * 简单Form布局,可自定义网格布局\n * ```\n * 1. demo:https://fex.qa.tcshuke.com/docs/admin/main/form/grid\n * 2. EasyForm的children列表会进行网格化布局\n * 3. 自定义栅格占位格数的4中方式\n * 3.1 设置FormItemWrapper、FormItemText组件span属性;\n * 3.2 使用 EasyFormItemSpan 包裹children item,设置span属性\n * 3.3 使用 <BoxGrid.Col span={24} ></BoxGrid.Col> 包裹,设置响应式属性\n * 3.4 设置 EasyForm isPure = true设置纯净模式,对EasyForm的子节点不做任何包装处理\n * 4. EasyForm可嵌套使用,嵌套内部的<EasyForm />节点Form相关属性失效,例如属性form、initialValues等都失效\n * <EasyForm form={form}>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * </EasyForm>\n * 5. 布局网格以当前组件的宽度来计算的,不是屏幕宽度\n * 6. EasyForm 子节点包含 hidden = true 会被忽略\n * 7. 通过 column 可定义一行显示几列FormItem\n * 8. 通过 labelItemVertical 可定义 formitem 竖直布局\n * 9. 通过 formItemGap 可定义 formItem竖直方向间隙\n * 10. 通过 forceColumn 可强制定义一行显示几列,不考虑响应式\n * 11. 通过 labelWidth 可控制Form内部所有label的宽度(可实现整齐效果)\n * 12. 自定义栅格占位格数,见下方`例如`\n\n * 例如\n * <EasyForm column={3}>\n *\t <FormItemWrapper name=\"field1\" label=\"条件1\">\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <!-- !!自定义栅格占位格数第一种方式:可通过使用 BoxGrid.Col 包裹元素来自定义网格占比 -->\n *\t <BoxGrid.Col span={24}>\n *\t <FormItemWrapper name=\"field5\" label=\"条件5\">\n *\t \t<Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t </BoxGrid.Col>\n *\t <!-- !!自定义栅格占位格数第二种方式:如果为FormItemWrapper组件,可设置span属性 -->\n *\t <FormItemWrapper name=\"field6\" label=\"条件6\" span={24}>\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <FormItemWrapper noStyle span={24}>\n *\t <Button>按钮</Buttone>\n *\t </FormItemWrapper>\n * </EasyForm>\n * ```\n */\n\nexport const EasyForm = (props: EasyFormProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const form = Form.useFormInstance();\n\n const {\n column,\n forceColumn,\n children,\n width,\n gridGutter,\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap = '15',\n isPure,\n ...otherProps\n } = props;\n const gridSize = useMemo(() => {\n if (forceColumn) {\n const num = 24 / forceColumn;\n return { xs: num, sm: num, md: num, lg: num, xl: num, xxl: num };\n }\n if (!column) {\n return { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n }\n const columnMap = {\n 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n };\n return columnMap[column];\n }, [column, forceColumn]);\n\n const getFormRowChildren = () => {\n const childrenList = Children.toArray(children).filter((item: TAny) => {\n return !!item;\n });\n return childrenList\n .map((item: TAny, index) => {\n const domTypeName = item.type['domTypeName'];\n\n let span: number | undefined = undefined;\n if (\n domTypeName === 'FormItemText' ||\n domTypeName === 'FormItemSpan' ||\n domTypeName === 'FormItemWrapper' ||\n domTypeName === 'BoxGridCol' ||\n domTypeName === 'EasyForm'\n ) {\n span = item.props['span'] as number;\n if (span) {\n if (screenType === 'xs') {\n span = 24;\n } else if (screenType === 'sm') {\n span = span > 12 ? span : 12;\n }\n }\n }\n\n if (domTypeName === 'BoxGridCol' || domTypeName === 'FormItemSpan') {\n if (domTypeName === 'FormItemSpan' && item.props.hidden) {\n return null;\n }\n return cloneElement(item, {\n ...item.props,\n ...gridSize,\n span,\n key: index,\n });\n }\n const display = item.props?.style?.display;\n let removeWrapper = false;\n if (\n domTypeName === 'FormItemText' ||\n domTypeName === 'FormItemHidden' ||\n domTypeName === 'FormItemWrapper' ||\n domTypeName === 'FormItemWrapperDependencies' ||\n item.type === Form.Item ||\n display === 'none'\n ) {\n removeWrapper = true;\n }\n\n if (domTypeName === 'FormItemWrapper' || item.props.noStyle) {\n removeWrapper = false;\n }\n return (\n <BoxGrid.Col key={index} {...gridSize} span={span} removeWrapper={removeWrapper}>\n {item}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\n };\n\n const innerStyle = useMemo(() => {\n /** 小屏幕不控制宽度 */\n if (['xs', 'sm'].includes(screenType) || !width) {\n return {};\n }\n return { width };\n }, [screenType, width]);\n\n const gutter = isUndefinedOrNull(gridGutter) ? ([15, 0] as GutterParams) : gridGutter;\n\n const labelAlignNew = useMemo(() => {\n if (['xs'].includes(screenType)) {\n return 'left';\n }\n return labelAlign;\n }, [labelAlign, screenType]);\n\n const fromLayoutClassName = useMemo(() => {\n return preDefinedClassName.getFormLayoutClassName({\n labelWidth,\n labelItemVertical,\n labelAlign: labelAlignNew,\n formItemGap,\n className: otherProps.className,\n });\n }, [labelWidth, labelItemVertical, labelAlignNew, formItemGap, otherProps.className]);\n\n if (form) {\n return (\n <div\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames(\n 'easy-form',\n { 'easy-form-pure': isPure },\n 'easy-form-nested',\n fromLayoutClassName,\n )}\n >\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </div>\n );\n }\n\n return (\n <FormWrapper\n {...otherProps}\n labelWidth={labelWidth}\n labelAlign={labelAlignNew}\n labelItemVertical={labelItemVertical}\n formItemGap={formItemGap}\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames('easy-form', { 'easy-form-pure': isPure }, fromLayoutClassName)}\n autoComplete=\"off\"\n >\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </FormWrapper>\n );\n};\n\nEasyForm['domTypeName'] = 'EasyForm';\n"],"names":["EasyForm","props","screenType","fbaHooks","useResponsivePoint","form","Form","useFormInstance","column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","_props$formItemGap","formItemGap","isPure","otherProps","_objectWithoutPropertiesLoose","_excluded","gridSize","useMemo","num","xs","sm","md","lg","xl","xxl","columnMap","getFormRowChildren","childrenList","Children","toArray","filter","item","map","index","_item$props","domTypeName","type","span","undefined","hidden","cloneElement","_extends","key","display","style","removeWrapper","Item","noStyle","_jsx","BoxGrid","Col","Boolean","innerStyle","includes","gutter","isUndefinedOrNull","labelAlignNew","fromLayoutClassName","preDefinedClassName","getFormLayoutClassName","className","_classNames","Row","FormWrapper","autoComplete"],"mappings":"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"}
|
package/esm/easy-table/index.js
CHANGED
|
@@ -19,5 +19,5 @@ import './../svg-http-view/index.css';
|
|
|
19
19
|
import './../table-title-tooltip/index.css';
|
|
20
20
|
import './index.css';
|
|
21
21
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
22
|
-
import{fbaUtils as e}from"../fba-utils/index.js";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{isObject as t}from"@dimjs/lang/cjs/is-object";import{_ as r,a as i}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{sessionStorageCache as a,localStorageCache as o,noop as l,getUuid as s,isUndefinedOrNull as u,isMacEnv as c}from"@flatbiz/utils";import{classNames as d}from"@dimjs/utils/cjs/class-names";import{isUndefined as f}from"@dimjs/lang/cjs/is-undefined";import{get as m}from"@dimjs/utils/cjs/get";import{hooks as p}from"@wove/react/cjs/hooks";import{isString as v}from"@dimjs/lang/cjs/is-string";import{Checkbox as g,Popover as h,Form as y,message as C,Drawer as F,Table as S,Space as b}from"antd";import{createContext as x,useState as R,Fragment as j,forwardRef as w,useMemo as z,useRef as K,useImperativeHandle as _,cloneElement as N,useContext as P,Children as T,useEffect as L}from"react";import{fbaHooks as q}from"../fba-hooks/index.js";import{PaginationWrapper as k}from"../pagination-wrapper/index.js";import{jsx as I,jsxs as V}from"react/jsx-runtime";import E from"@ant-design/icons/es/icons/DownOutlined";import D from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as O}from"react-is";import{BlockLayout as A}from"../block-layout/index.js";import{ButtonWrapper as B}from"../button-wrapper/index.js";import{EasyForm as M}from"../easy-form/index.js";import{FormGrid as W}from"../form-grid/index.js";import{FlexLayout as Q}from"../flex-layout/index.js";import{TableScrollbar as U}from"../table-scrollbar/index.js";import{IconWrapper as G}from"../icon-wrapper/index.js";import{SvgHttpView as H}from"../svg-http-view/index.js";import{TableTitleTooltip as Y}from"../table-title-tooltip/index.js";import{TipsWrapper as $}from"../tips-wrapper/index.js";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";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 J={set:function e(n,t){var i=J.get(n);var o=r({},i,t);a.set("easy_tab_filter_"+n,o);return o},get:function e(n){var r=a.get("easy_tab_filter_"+n);return t(r)?r:{}},remove:function e(n){a.remove("easy_tab_filter_"+n)}};var X={set:function e(n,t){a.set("easy_tab_firstQuery_"+n,{value:t})},get:function e(n){var t;var r=(t=a.get("easy_tab_firstQuery_"+n))==null?void 0:t.value;return r===false?false:true},remove:function e(n){a.remove("easy_tab_firstQuery_"+n)}};var Z={set:function e(n,t){o.set("easy_tab_columnFold_"+n,{value:t})},get:function e(t){var r;var i=(r=o.get("easy_tab_columnFold_"+t))==null?void 0:r.value;return n(i)?i:[]},remove:function e(n){o.remove("easy_tab_columnFold_"+n)}};var ee=x({onRequest:l,tableList:[],getEasyTableRef:function e(){}});var ne=function e(n){var t=R(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a=function e(t){i(t);n.onChange(t);if(n.cacheKey){Z.set(n.cacheKey,t)}};var o=I(j,{children:I(g.Group,{defaultValue:r,onChange:a,value:r,style:{display:"flex",flexDirection:"column"},children:n.dataList.map((function(e){var n=e["_isFoldTitle"]||e.title;return I(g,{value:e.dataIndex,style:{padding:"0 0 5px 0"},children:n},e.dataIndex)}))})});var l=function e(t){if(t.target.checked){a(n.dataList.map((function(e){return e.dataIndex})))}else{a([])}};return I(h,{content:o,title:I(g,{checked:r.length===n.dataList.length,onChange:l,children:"全选(字段列表)"}),placement:"bottomRight",overlayClassName:"fold-operate-popiver",children:n.children})};var te=w((function(t,i){var a;var o=q.useResponsivePoint();var l=R(),u=l[0],c=l[1];var g=R(0),h=g[0],F=g[1];var S=R(false),b=S[0],x=S[1];var j=t.columnFoldConfig;var w=t.asyncColumnRequest;var P=R(false),T=P[0],L=P[1];var E=z((function(){if(t.cacheKey){try{var e=window.frameElement;var n=(e==null?void 0:e.id)||"";return t.cacheKey+"_"+n}catch(e){return t.cacheKey}}if(t.cacheSwitch===true){return location.pathname}if(typeof t.cacheSwitch==="string"){return t.cacheSwitch}return s()}),[t.cacheSwitch,t.cacheKey]);var D=J.get(E);var O=R((function(){if(E){var e=Z.get(E);var t=n(e)?e.filter((function(e){return v(e)})):[];return t.length>0?t:(j==null?void 0:j.initSelectedKeys)||[]}else{return(j==null?void 0:j.initSelectedKeys)||[]}})),A=O[0],B=O[1];var M=t.pageSize||((a=t.initialPaginationParams)==null?void 0:a.pageSize)||10;var W=t.initRequest===undefined?true:t.initRequest;var Q=K(false);var U=K();var G=K([]);var H=R(),Y=H[0],$=H[1];var te=K([]);var re=r({list:"list",total:"total",pageNo:"pageNo",pageSize:"pageSize"},t.fieldNames);var ie=y.useForm(t.form),ae=ie[0];var oe=p.useCallbackRef((function(r){return new Promise((function(i,a){var o,l,s,u,d,f,p,v,g,h,y;var S=function(){try{return i()}catch(e){return a(e)}};var b=function(e){try{x(false);if(t.onRequestErrorHandle){t.onRequestErrorHandle(e)}else{void C.error(e.message)}return S()}catch(e){return a(e)}};try{if(t.breforeRequest){var R=function(){try{return w.call(this)}catch(e){return b(e)}}.bind(this);var j=function(e){try{return i()}catch(e){return b(e)}};try{return Promise.resolve(t.breforeRequest(ae)).then((function(e){try{return R()}catch(e){return j(e)}}),j)}catch(z){j(z)}}function w(){X.set(E,false);x(true);o=J.set(E,r);l=t.serviceConfig,s=l.requestParamsAdapter,u=l.onRequest,d=l.requestResultAdapter,f=l.dynamicColumsAdapter;p=s?s(o):o;return Promise.resolve(u(e.removeFormValuesInvalidField(p))).then((function(e){try{v=e||{};U.current=v;t.onDataSourceChange==null||t.onDataSourceChange(v);g=v;if(d){g=d(v)}if(f){h=f(v,G.current);$(h)}y=m(g,re.list);c(n(y)?y:[]);F(m(g,re.total));x(false);return S()}catch(e){return b(e)}}),b)}return w.call(this)}catch(K){b(K)}}))}));q.useEffectCustom((function(){var e=je();var n=X.get(E);ae.setFieldsValue(r({},t.initialValues,D));if(W||!n){if(e){var i;void oe(r((i={},i[re.pageNo]=1,i[re.pageSize]=M,i),t.initialValues,D))}else{void oe(t.initialValues)}}else{J.set(E,t.initialValues||{})}}),[]);var le=p.useCallbackRef((function(e){J.remove(E);ae.resetFields();if(e){J.set(E,e);ae.setFieldsValue(e)}}));var se=p.useCallbackRef((function(e){J.set(E,e);ae.setFieldsValue(e)}));var ue=function e(n,t){if(je()){var r;return r={},r[re.pageNo]=n,r[re.pageSize]=t||M,r}else{var i;return i={},i[re.pageNo]=undefined,i[re.pageSize]=undefined,i}};var ce=p.useCallbackRef((function(e){var n=r({},ue(1,D[re.pageSize]),t.initialValues,e);J.remove(E);ae.resetFields();if(e){ae.setFieldsValue(e)}void oe(n)}));var de=p.useCallbackRef((function(){return r({},D,ae.getFieldsValue())}));var fe=p.useCallbackRef((function(){L(true)}));var me=p.useCallbackRef((function(){L(false)}));var pe=function e(){return{onRequest:oe,clearQueryCondition:le,updateQueryCondition:se,getRequestParams:de,onResetRequest:ce,form:ae,dataSource:U.current,getDataSource:function e(){return U.current},onFilterDataSource:function e(n){c(n)},onClearDataSource:function e(){F(0);c([])},onUpdateDataSource:function e(n){var r;c(n);U.current=(r={},r[re.list]=n,r);t.onDataSourceChange==null||t.onDataSourceChange(U.current)},columnFoldTriggerRender:function e(n,r){var i;if(((i=t.columnFoldConfig)==null?void 0:i.triggerType)==="drawer"){return N(n,{onClick:fe})}var a=r.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));return I(ne,{dataList:a,onChange:xe,cacheKey:E,initSelectedRowKeys:A,children:n})},onChangeTableColumns:function e(n){$(n)},getTableColumns:function e(){return te.current},loading:b,setEnabledInitRequest:function e(){X.set(E,false)}}};_(i,(function(){return pe()}));var ve=function e(n){Q.current=n};var ge=function e(n){G.current=n};var he=function e(n){te.current=n};var ye=function e(){var n=ae.getFieldsValue();if(t.onFormFinish){t.onFormFinish(r({},n,ue(1,D[re.pageSize])))}else{void oe(r({},n,ue(1,D[re.pageSize])))}};var Ce=f(t.isFull)?true:t.isFull;var Fe=o==="xs"?false:t.filterFixed;var Se=d("fba-easy-table",{"fba-easy-table-full":Ce,"fba-easy-table-filter-fixed":Fe,"fba-easy-table-pagination-fixed":t.paginationFixed},t.className);var be=q.useMemoCustom((function(){return r({showSizeChanger:true,current:D[re.pageNo]||1,pageSize:D[re.pageSize]||M,total:h,showTotal:function e(n){return"共 "+n+" 条记录"}},t.pagination)}),[re.pageNo,D,re.pageSize,E,M,t.pagination,h]);var xe=function e(n){B(n);j==null||j.onChange==null||j.onChange(n)};var Re=p.useCallbackRef((function(e,n){var r,i;var a=(r={},r[re.pageSize]=n,r[re.pageNo]=e,r);J.set(E,a);void oe(a);(i=t.pagination)==null||i.onChange==null||i.onChange(e,n)}));var je=function e(){return t.paginationFixed||Q.current};p.useUpdateEffect((function(){if(t.paginationFixed){var e;void oe((e={},e[re.pageSize]=D[re.pageSize]||M,e[re.pageNo]=1,e))}else{var n;void oe((n={},n[re.pageSize]=undefined,n[re.pageNo]=undefined,n))}}),[t.paginationFixed]);var we=d("fba-easy-table-wrapper",{"fba-easy-table-wrapper-inline":t.isInline},t.className);var ze=r({overflowY:t.filterFixed||t.paginationFixed?"hidden":"auto"},t.style);var Ke=typeof t.children==="function"?t.children(U.current):t.children;return I(ee.Provider,{value:{onSetBaseColumns:ge,onSetColumns:he,getEasyTableRef:pe,cacheKey:E,onRequest:oe,tableDataSource:u,tableTotal:h,loading:b,fieldNames:re,pageSize:M,onSetPaginationStatus:ve,getPaginationStatus:je,onFormFinish:ye,form:ae,paginationFixed:t.paginationFixed||false,foldKeys:t.foldKeys||[],columns:Y,initialValues:t.initialValues,dynamicColumnsConfig:{showFoldKeyList:A,onChangeShowFoldKeyList:xe,columnFoldConfig:j,onOpenColumnFoldModal:fe,onCloseColumnFoldModal:me,columnFoldOpen:T,asyncColumnRequest:w}},children:t.paginationFixed?V("div",{className:we,style:ze,children:[I("div",{className:Se,children:Ke}),h>0&&I("div",{className:"fba-easy-table-pagination",children:I(k,r({size:"small"},be,{onChange:Re}))})]}):I("div",{className:we,style:t.style,children:I("div",{className:Se,children:Ke})})})}));var re=function e(n){var t=q.useResponsivePoint()||"md";var i=P(ee);var a=n.queryButtonProps,o=n.resetButtonProps,l=n.filterOperate,s=n.formClassName,u=s===void 0?"":s,c=n.defaultResetButtonTriggerRequest,m=n.filterWrapperStyle,v=n.filterWrapperClassName,g=n.rightOperateAreaAppendType,h=n.easyFormProps;var y=i.cacheKey,C=i.foldKeys,F=i.fieldNames,S=i.onRequest,b=i.pageSize,x=i.getPaginationStatus,j=i.initialValues,w=i.form,K=i.onFormFinish;var _=typeof n.children==="function"?n.children(w):n.children;var N=g||"cover";var L=z((function(){if(O(_)){return T.toArray(_.props.children)}else{return T.toArray(_)}}),[_]);var k=R(false),Q=k[0],U=k[1];var G=p.useCallbackRef((function(){return new Promise((function(e,n){var t;J.remove(y);w.resetFields();w.setFieldsValue(j);if(f(c)||c){return Promise.resolve(w.validateFields()).then(function(e){try{if(x()){S(r((t={},t[F.pageNo]=1,t[F.pageSize]=b,t),j))}else{S(j)}return i.call(this)}catch(e){return n(e)}}.bind(this),n)}function i(){return e()}return i.call(this)}))}));var H=z((function(){var e=[!(a!=null&&a.hidden)?I(B,r({type:"primary",htmlType:"submit"},a,{children:(a==null?void 0:a.text)||"查询"}),"1"):null,!(o!=null&&o.hidden)?I(B,r({onClick:G},o,{children:(o==null?void 0:o.text)||"重置"}),"2"):null].filter(Boolean);var n=l==null?void 0:l(w);var t=n==null?void 0:n.rightList;var i=(n==null?void 0:n.leftList)||[];var s=e;if(t){if(N==="afterAppend"){s=[].concat(e,t)}else if(N==="beforeAppend"){s=[].concat(t,e)}else{s=t}}if(C.length>0){var u=I(B,{type:"link",style:{padding:"0"},onClick:function e(){U(!Q)},children:Q?V("span",{children:["收起",I(D,{style:{marginLeft:3,fontSize:12}})]}):V("span",{children:["展开",I(E,{style:{marginLeft:3,fontSize:12}})]})},"fold-trigger");if(s.length>0||i.length===0){s.push(u)}else if((i==null?void 0:i.length)>0){i.push(u)}}return L.map((function(e,n){if(!Q&&C.find((function(n){return".$"+n===e.key})))return null;if(e.props["hidden"])return null;if(e.type["domTypeName"]==="FormCol")return e;return I(W.Col,{children:e},n)})).filter(Boolean).concat(I(W.OperateCol,r({},n,{leftList:i,rightList:s}),999))}),[L,l,C,w,G,Q,a,o,N]);var Y=t==="xs"?"left":(h==null?void 0:h.labelAlign)||"right";return I(A,{className:d("easy-table-filter",v),style:m,children:I(M,r({form:w,autoComplete:"off",onFinish:K,className:u,style:n.formStyle,isPure:true,labelWidth:"80",formItemGap:"15"},h,{labelAlign:Y,children:n.isPure?_:I(W.Row,{gutter:[15,0],gridSize:n.formGridSize,children:H})}))})};var ie=function e(){var n=P(ee);return n.getEasyTableRef()};var ae=function e(){var n=P(ee);return{current:n.getEasyTableRef()}};var oe=function e(n){var t=R(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a={type:"checkbox",selectedRowKeys:r,onChange:function e(t){i(t);n.onChange(t);if(n.cacheKey){Z.set(n.cacheKey,t)}}};var o=[{title:"字段名称",dataIndex:"title",render:function e(n,t){return t["_isFoldTitle"]||n}},{title:"字段Key",dataIndex:"dataIndex"}];return I(j,{children:I(F,{title:"选择字段",open:n.open,onClose:n.onClose,width:"35%",styles:{body:{padding:15}},children:I(S,{bordered:true,size:"small",columns:o,rowSelection:a,rowKey:"dataIndex",pagination:false,scroll:{x:"max-content"},dataSource:n.dataList})})})};var le=["tooltip","tipsWrapperProps","title"];var se=function e(n){return z((function(){var e=n.columns.map((function(e){var n=e.tooltip,t=e.tipsWrapperProps,a=e.title,o=i(e,le);if(typeof a==="string"&&t){if(typeof t==="string"){return r({},o,{title:I($,{tipType:"popover",popoverProps:{content:t},children:a})})}return r({},o,{title:I($,r({},t,{children:a}))})}if(typeof a==="string"&&!!n){return r({},o,{title:I(Y,{tooltip:n,title:a})})}return e})).filter(Boolean);return[].concat(e)}),[n.columns])};var ue=function e(n){var t=n.columns;return q.useMemoCustom((function(){var e;if((e=n.columnFoldConfig)!=null&&e.hidden)return t;var r=t[t.length-1];if(n.foldColumnList.length>0&&t.length>0){var i=t.find((function(e){return e["_isFoldColumn"]}));if(i&&r.dataIndex!==i.dataIndex){i.title=i["_isFoldTitle"];i["_isFoldColumn"]=false}if(!r["_isFoldColumn"]){var a,o,l,s,u,c;r["_isFoldTitle"]=r["_isFoldTitle"]||r.title;r["_isFoldColumn"]=true;var d=(a=n.columnFoldConfig)==null?void 0:a.triggerType;r.title=V(Q,{direction:"horizontal",fullIndex:0,style:{alignItems:"center"},children:[I("span",{children:r.title}),I("div",{style:{padding:"0 5px 0 20px",display:"flex"},children:d==="drawer"?I(G,{onClick:n.onOpenColumnFoldModal,text:(o=n.columnFoldConfig)==null?void 0:o.text,size:"small",icon:((l=n.columnFoldConfig)==null?void 0:l.icon)||I(H,{svgPath:"ionic/list-circle",color:"#868686"}),hoverTips:((s=n.columnFoldConfig)==null?void 0:s.hoverTipText)||"字段列表",style:{padding:0,margin:0}}):I(ne,{dataList:n.foldColumnList,onChange:n.onChangeFoldColumnList,cacheKey:n.cacheKey,initSelectedRowKeys:n.showFoldKeyList,children:I(G,{text:(u=n.columnFoldConfig)==null?void 0:u.text,style:{padding:0,margin:0},size:"small",icon:((c=n.columnFoldConfig)==null?void 0:c.icon)||I(H,{svgPath:"ionic/list-circle",color:"#868686"})})})})]})}}return t}),[n.columns,n.columnFoldConfig])};var ce=function e(n){return z((function(){var e=n.columns.map((function(e){var t=e.hidden,r=e.isFold;if(t)return null;if(r&&!n.showFoldKeyList.includes(e.dataIndex))return null;return e})).filter(Boolean);return[].concat(e)}),[n.columns,n.showFoldKeyList])};var de=function e(n){return z((function(){if(!Object.keys(n.asyncColumnRequestResult))return n.columns;return n.columns.map((function(e){var t=e.dataIndex;var r=n.asyncColumnRequestResult[t];if(t&&r){if(r.loading){e.render=function(e){return I(B,{loading:true,type:"text",loadingPosition:"center",removeGap:true,children:e})}}else if(e.asyncRender){e.render=function(n,t,i){return e.asyncRender==null?void 0:e.asyncRender(n,t,i,r.respData)}}}return e}))}),[n.columns,n.asyncColumnRequestResult])};var fe=["children","rowKey","pagination","isSync","title","actions"];var me=function e(n){var t;if(!n.title&&!((t=n.actions)!=null&&t.length)){return null}return V(Q,{fullIndex:0,direction:"horizontal",style:{marginBottom:10,alignItems:"center"},children:[n.title?I("div",{style:{fontWeight:400,fontSize:16},children:n.title}):null,I(b,{size:10,children:n.actions})]})};var pe=function e(n){var t=P(ee);var a=n.children,o=n.rowKey,l=n.pagination,f=n.isSync,m=n.title,v=n.actions,g=i(n,fe);var h=q.useResponsivePoint()||"";var y=K({});var C=R({}),F=C[0],b=C[1];var x=t.dynamicColumnsConfig,w=x.columnFoldConfig,_=x.onCloseColumnFoldModal,N=x.columnFoldOpen,T=x.onOpenColumnFoldModal,k=x.asyncColumnRequest,E=x.showFoldKeyList,D=x.onChangeShowFoldKeyList;var O=t.cacheKey,B=t.fieldNames,M=t.onRequest,W=t.tableDataSource,Q=t.pageSize,G=t.tableTotal,H=t.loading,Y=t.paginationFixed,$=t.onSetPaginationStatus;var X=J.get(O);q.useEffectCustom((function(){t.onSetBaseColumns(n.columns||[])}),[]);L((function(){if(k!=null&&k.length){var e=function e(){var t;var i=k[n];y.current=r({},y.current,(t={},t[i.dataIndex]={loading:true},t));b(y.current);i.onRequest().then((function(e){var n;y.current=r({},y.current,(n={},n[i.dataIndex]={loading:false,respData:e},n));b(y.current)})).catch((function(e){var n;console.error(e==null?void 0:e.message);y.current=r({},y.current,(n={},n[i.dataIndex]={loading:false},n));b(y.current)}))};for(var n=0;n<k.length;n++){e()}}}),[k]);var Z=q.useMemoCustom((function(){if(t.columns){t.onSetColumns(t.columns);return t.columns}else{t.onSetColumns(n.columns);return n.columns}}),[t.columns,n.columns]);var ne=se({columns:[].concat(Z)});var te=Z.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));ne=ue({cacheKey:O,columns:ne,foldColumnList:te,showFoldKeyList:E,columnFoldConfig:w,onOpenColumnFoldModal:T,onChangeFoldColumnList:D});ne=ce({columns:ne,showFoldKeyList:E});ne=de({columns:ne,asyncColumnRequestResult:F});q.useEffectCustom((function(){$(l!==false)}),[l]);p.useUpdateEffect((function(){if(!Y){if(l!==false){var e;M((e={},e[B.pageSize]=X[B.pageSize]||Q,e[B.pageNo]=1,e))}else{var n;M((n={},n[B.pageSize]=undefined,n[B.pageNo]=undefined,n))}}}),[l]);var re=z((function(){if(Y||l===false)return false;return r({showSizeChanger:true,current:X[B.pageNo]||1,pageSize:X[B.pageSize]||Q,total:G,showTotal:function e(n){return"共 "+n+" 条记录"}},n.pagination)}),[X,B.pageNo,B.pageSize,Q,l,Y,n.pagination,G]);var ie=function e(t,r,i,a){if(a.action==="paginate"&&re){var o;M((o={},o[B.pageSize]=t.pageSize,o[B.pageNo]=t.current,o))}else{n.onChange==null||n.onChange(t,r,i,a)}};var ae=z((function(){if(!W)return undefined;if(W.length===0){return[]}if(typeof o==="string"&&u(W[0][o])){return W.map((function(e){e[o]=s();return e}))}return W}),[W,o]);ne=z((function(){return ne.map((function(e){if(!!e.fixed&&h==="xs"){e.fixed=undefined}if(!!e.defaultValue&&!e.render){e.render=function(n){return u(n)||n==""?e.defaultValue:n}}return e}))}),[ne,h]);var le=function e(){if(f&&!ae){return V(j,{children:[I(me,{title:m,actions:v}),a,I(S,{size:"small",scroll:{x:"max-content"},bordered:true,rowKey:o,columns:ne,loading:H},"1")]})}if(c()){return V(j,{children:[I(me,{title:m,actions:v}),a,I(S,r({size:"small",scroll:{x:"max-content"},bordered:true},g,{columns:ne,pagination:re,rowKey:o,onChange:ie,loading:H,dataSource:ae}),"2")]})}return V(j,{children:[I(me,{title:m,actions:v}),a,I(U,{children:I(S,r({size:"small",scroll:{x:"max-content"},bordered:true},g,{columns:ne,pagination:re,rowKey:o,onChange:ie,loading:H,dataSource:ae}),"3")})]})};return V(A,{className:d("easy-table-table",{"ett-empty-show-small":n.emptyShowSize==="small"},n.tableWrapperClassName),style:n.tableWrapperStyle,children:[le(),I(oe,{dataList:te,onClose:_,open:N,onChange:D,cacheKey:O,initSelectedRowKeys:E})]})};var ve=e.attachPropertiesToComponent(te,{Filter:re,Table:pe,useEasyTablRef:ae,useEasyTable:ie,setEnabledInitRequest:function e(n){X.set(n,false)}});export{ve as EasyTable};
|
|
22
|
+
import{fbaUtils as e}from"../fba-utils/index.js";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{isObject as t}from"@dimjs/lang/cjs/is-object";import{_ as r,a as i}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{sessionStorageCache as a,localStorageCache as o,noop as l,getUuid as s,isUndefinedOrNull as u,isMacEnv as c}from"@flatbiz/utils";import{classNames as d}from"@dimjs/utils/cjs/class-names";import{isUndefined as f}from"@dimjs/lang/cjs/is-undefined";import{get as m}from"@dimjs/utils/cjs/get";import{hooks as p}from"@wove/react/cjs/hooks";import{isString as v}from"@dimjs/lang/cjs/is-string";import{Checkbox as g,Popover as h,Form as y,message as C,Drawer as F,Table as S,Space as b}from"antd";import{createContext as x,useState as R,Fragment as w,forwardRef as j,useMemo as z,useRef as K,useImperativeHandle as _,cloneElement as N,useContext as P,Children as T,useEffect as L}from"react";import{fbaHooks as q}from"../fba-hooks/index.js";import{PaginationWrapper as k}from"../pagination-wrapper/index.js";import{jsx as I,jsxs as V}from"react/jsx-runtime";import D from"@ant-design/icons/es/icons/DownOutlined";import E from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as O}from"react-is";import{BlockLayout as A}from"../block-layout/index.js";import{ButtonWrapper as B}from"../button-wrapper/index.js";import{EasyForm as M}from"../easy-form/index.js";import{FormGrid as W}from"../form-grid/index.js";import{FlexLayout as Q}from"../flex-layout/index.js";import{TableScrollbar as U}from"../table-scrollbar/index.js";import{IconWrapper as G}from"../icon-wrapper/index.js";import{SvgHttpView as H}from"../svg-http-view/index.js";import{TableTitleTooltip as Y}from"../table-title-tooltip/index.js";import{TipsWrapper as $}from"../tips-wrapper/index.js";import"@dimjs/model";import"../use-responsive-point-1e6d93d9.js";import"@dimjs/utils/cjs/uuid";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-853b36e6.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";import"../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 J={set:function e(n,t){var i=J.get(n);var o=r({},i,t);a.set("easy_tab_filter_"+n,o);return o},get:function e(n){var r=a.get("easy_tab_filter_"+n);return t(r)?r:{}},remove:function e(n){a.remove("easy_tab_filter_"+n)}};var X={set:function e(n,t){a.set("easy_tab_firstQuery_"+n,{value:t})},get:function e(n){var t;var r=(t=a.get("easy_tab_firstQuery_"+n))==null?void 0:t.value;return r===false?false:true},remove:function e(n){a.remove("easy_tab_firstQuery_"+n)}};var Z={set:function e(n,t){o.set("easy_tab_columnFold_"+n,{value:t})},get:function e(t){var r;var i=(r=o.get("easy_tab_columnFold_"+t))==null?void 0:r.value;return n(i)?i:[]},remove:function e(n){o.remove("easy_tab_columnFold_"+n)}};var ee=x({onRequest:l,tableList:[],getEasyTableRef:function e(){}});var ne=function e(n){var t=R(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a=function e(t){i(t);n.onChange(t);if(n.cacheKey){Z.set(n.cacheKey,t)}};var o=I(w,{children:I(g.Group,{defaultValue:r,onChange:a,value:r,style:{display:"flex",flexDirection:"column"},children:n.dataList.map(function(e){var n=e["_isFoldTitle"]||e.title;return I(g,{value:e.dataIndex,style:{padding:"0 0 5px 0"},children:n},e.dataIndex)})})});var l=function e(t){if(t.target.checked){a(n.dataList.map(function(e){return e.dataIndex}))}else{a([])}};return I(h,{content:o,title:I(g,{checked:r.length===n.dataList.length,onChange:l,children:"全选(字段列表)"}),placement:"bottomRight",overlayClassName:"fold-operate-popiver",children:n.children})};var te=j(function(t,i){var a;var o=q.useResponsivePoint();var l=R(),u=l[0],c=l[1];var g=R(0),h=g[0],F=g[1];var S=R(false),b=S[0],x=S[1];var w=t.columnFoldConfig;var j=t.asyncColumnRequest;var P=R(false),T=P[0],L=P[1];var D=z(function(){if(t.cacheKey){try{var e=window.frameElement;var n=(e==null?void 0:e.id)||"";return t.cacheKey+"_"+n}catch(e){return t.cacheKey}}if(t.cacheSwitch===true){return location.pathname}if(typeof t.cacheSwitch==="string"){return t.cacheSwitch}return Date.now()+"_"+s()},[t.cacheSwitch,t.cacheKey]);var E=J.get(D);var O=R(function(){if(D){var e=Z.get(D);var t=n(e)?e.filter(function(e){return v(e)}):[];return t.length>0?t:(w==null?void 0:w.initSelectedKeys)||[]}else{return(w==null?void 0:w.initSelectedKeys)||[]}}),A=O[0],B=O[1];var M=t.pageSize||((a=t.initialPaginationParams)==null?void 0:a.pageSize)||10;var W=t.initRequest===undefined?true:t.initRequest;var Q=K(false);var U=K();var G=K([]);var H=R(),Y=H[0],$=H[1];var te=K([]);var re=r({list:"list",total:"total",pageNo:"pageNo",pageSize:"pageSize"},t.fieldNames);var ie=y.useForm(t.form),ae=ie[0];var oe=p.useCallbackRef(function(r){return new Promise(function(i,a){var o,l,s,u,d,f,p,v,g,h,y;var S=function(){try{return i()}catch(e){return a(e)}};var b=function(e){try{x(false);if(t.onRequestErrorHandle){t.onRequestErrorHandle(e)}else{void C.error(e.message)}return S()}catch(e){return a(e)}};try{if(t.breforeRequest){var R=function(){try{return j.call(this)}catch(e){return b(e)}}.bind(this);var w=function(e){try{return i()}catch(e){return b(e)}};try{return Promise.resolve(t.breforeRequest(ae)).then(function(e){try{return R()}catch(e){return w(e)}},w)}catch(z){w(z)}}function j(){X.set(D,false);x(true);o=J.set(D,r);l=t.serviceConfig,s=l.requestParamsAdapter,u=l.onRequest,d=l.requestResultAdapter,f=l.dynamicColumsAdapter;p=s?s(o):o;return Promise.resolve(u(e.removeFormValuesInvalidField(p))).then(function(e){try{v=e||{};U.current=v;t.onDataSourceChange==null||t.onDataSourceChange(v);g=v;if(d){g=d(v)}if(f){h=f(v,G.current);$(h)}y=m(g,re.list);c(n(y)?y:[]);F(m(g,re.total));x(false);return S()}catch(e){return b(e)}},b)}return j.call(this)}catch(K){b(K)}})});q.useEffectCustom(function(){var e=we();var n=X.get(D);ae.setFieldsValue(r({},t.initialValues,E));if(W||!n){if(e){var i;void oe(r((i={},i[re.pageNo]=1,i[re.pageSize]=M,i),t.initialValues,E))}else{void oe(t.initialValues)}}else{J.set(D,t.initialValues||{})}},[]);var le=p.useCallbackRef(function(e){J.remove(D);ae.resetFields();if(e){J.set(D,e);ae.setFieldsValue(e)}});var se=p.useCallbackRef(function(e){J.set(D,e);ae.setFieldsValue(e)});var ue=function e(n,t){if(we()){var r;return r={},r[re.pageNo]=n,r[re.pageSize]=t||M,r}else{var i;return i={},i[re.pageNo]=undefined,i[re.pageSize]=undefined,i}};var ce=p.useCallbackRef(function(e){var n=r({},ue(1,E[re.pageSize]),t.initialValues,e);J.remove(D);ae.resetFields();if(e){ae.setFieldsValue(e)}void oe(n)});var de=p.useCallbackRef(function(){return r({},E,ae.getFieldsValue())});var fe=p.useCallbackRef(function(){L(true)});var me=p.useCallbackRef(function(){L(false)});var pe=function e(){return{onRequest:oe,clearQueryCondition:le,updateQueryCondition:se,getRequestParams:de,onResetRequest:ce,form:ae,dataSource:U.current,getDataSource:function e(){return U.current},onFilterDataSource:function e(n){c(n)},onClearDataSource:function e(){F(0);c([])},onUpdateDataSource:function e(n){var r;c(n);U.current=(r={},r[re.list]=n,r);t.onDataSourceChange==null||t.onDataSourceChange(U.current)},columnFoldTriggerRender:function e(n,r){var i;if(((i=t.columnFoldConfig)==null?void 0:i.triggerType)==="drawer"){return N(n,{onClick:fe})}var a=r.filter(function(e){return!e.hidden&&e.isFold&&e.dataIndex});return I(ne,{dataList:a,onChange:xe,cacheKey:D,initSelectedRowKeys:A,children:n})},onChangeTableColumns:function e(n){$(n)},getTableColumns:function e(){return te.current},loading:b,setEnabledInitRequest:function e(){X.set(D,false)}}};_(i,function(){return pe()});var ve=function e(n){Q.current=n};var ge=function e(n){G.current=n};var he=function e(n){te.current=n};var ye=function e(){var n=ae.getFieldsValue();if(t.onFormFinish){t.onFormFinish(r({},n,ue(1,E[re.pageSize])))}else{void oe(r({},n,ue(1,E[re.pageSize])))}};var Ce=f(t.isFull)?true:t.isFull;var Fe=o==="xs"?false:t.filterFixed;var Se=d("fba-easy-table",{"fba-easy-table-full":Ce,"fba-easy-table-filter-fixed":Fe,"fba-easy-table-pagination-fixed":t.paginationFixed},t.className);var be=q.useMemoCustom(function(){return r({showSizeChanger:true,current:E[re.pageNo]||1,pageSize:E[re.pageSize]||M,total:h,showTotal:function e(n){return"共 "+n+" 条记录"}},t.pagination)},[re.pageNo,E,re.pageSize,D,M,t.pagination,h]);var xe=function e(n){B(n);w==null||w.onChange==null||w.onChange(n)};var Re=p.useCallbackRef(function(e,n){var r,i;var a=(r={},r[re.pageSize]=n,r[re.pageNo]=e,r);J.set(D,a);void oe(a);(i=t.pagination)==null||i.onChange==null||i.onChange(e,n)});var we=function e(){return t.paginationFixed||Q.current};p.useUpdateEffect(function(){if(t.paginationFixed){var e;void oe((e={},e[re.pageSize]=E[re.pageSize]||M,e[re.pageNo]=1,e))}else{var n;void oe((n={},n[re.pageSize]=undefined,n[re.pageNo]=undefined,n))}},[t.paginationFixed]);var je=d("fba-easy-table-wrapper",{"fba-easy-table-wrapper-inline":t.isInline},t.className);var ze=r({overflowY:t.filterFixed||t.paginationFixed?"hidden":"auto"},t.style);var Ke=typeof t.children==="function"?t.children(U.current):t.children;return I(ee.Provider,{value:{onSetBaseColumns:ge,onSetColumns:he,getEasyTableRef:pe,cacheKey:D,onRequest:oe,tableDataSource:u,tableTotal:h,loading:b,fieldNames:re,pageSize:M,onSetPaginationStatus:ve,getPaginationStatus:we,onFormFinish:ye,form:ae,paginationFixed:t.paginationFixed||false,foldKeys:t.foldKeys||[],columns:Y,initialValues:t.initialValues,dynamicColumnsConfig:{showFoldKeyList:A,onChangeShowFoldKeyList:xe,columnFoldConfig:w,onOpenColumnFoldModal:fe,onCloseColumnFoldModal:me,columnFoldOpen:T,asyncColumnRequest:j}},children:t.paginationFixed?V("div",{className:je,style:ze,children:[I("div",{className:Se,children:Ke}),h>0&&I("div",{className:"fba-easy-table-pagination",children:I(k,r({size:"small"},be,{onChange:Re}))})]}):I("div",{className:je,style:t.style,children:I("div",{className:Se,children:Ke})})})});var re=function e(n){var t=q.useResponsivePoint()||"md";var i=P(ee);var a=n.queryButtonProps,o=n.resetButtonProps,l=n.filterOperate,s=n.formClassName,u=s===void 0?"":s,c=n.defaultResetButtonTriggerRequest,m=n.filterWrapperStyle,v=n.filterWrapperClassName,g=n.rightOperateAreaAppendType,h=n.easyFormProps;var y=i.cacheKey,C=i.foldKeys,F=i.fieldNames,S=i.onRequest,b=i.pageSize,x=i.getPaginationStatus,w=i.initialValues,j=i.form,K=i.onFormFinish;var _=typeof n.children==="function"?n.children(j):n.children;var N=g||"cover";var L=z(function(){if(O(_)){return T.toArray(_.props.children)}else{return T.toArray(_)}},[_]);var k=R(false),Q=k[0],U=k[1];var G=p.useCallbackRef(function(){return new Promise(function(e,n){var t;J.remove(y);j.resetFields();j.setFieldsValue(w);if(f(c)||c){return Promise.resolve(j.validateFields()).then(function(e){try{if(x()){S(r((t={},t[F.pageNo]=1,t[F.pageSize]=b,t),w))}else{S(w)}return i.call(this)}catch(e){return n(e)}}.bind(this),n)}function i(){return e()}return i.call(this)})});var H=z(function(){var e=[!(a!=null&&a.hidden)?I(B,r({type:"primary",htmlType:"submit"},a,{children:(a==null?void 0:a.text)||"查询"}),"1"):null,!(o!=null&&o.hidden)?I(B,r({onClick:G},o,{children:(o==null?void 0:o.text)||"重置"}),"2"):null].filter(Boolean);var n=l==null?void 0:l(j);var t=n==null?void 0:n.rightList;var i=(n==null?void 0:n.leftList)||[];var s=e;if(t){if(N==="afterAppend"){s=[].concat(e,t)}else if(N==="beforeAppend"){s=[].concat(t,e)}else{s=t}}if(C.length>0){var u=I(B,{type:"link",style:{padding:"0"},onClick:function e(){U(!Q)},children:Q?V("span",{children:["收起",I(E,{style:{marginLeft:3,fontSize:12}})]}):V("span",{children:["展开",I(D,{style:{marginLeft:3,fontSize:12}})]})},"fold-trigger");if(s.length>0||i.length===0){s.push(u)}else if((i==null?void 0:i.length)>0){i.push(u)}}return L.map(function(e,n){if(!Q&&C.find(function(n){return".$"+n===e.key}))return null;if(e.props["hidden"])return null;if(e.type["domTypeName"]==="FormCol")return e;return I(W.Col,{children:e},n)}).filter(Boolean).concat(I(W.OperateCol,r({},n,{leftList:i,rightList:s}),999))},[L,l,C,j,G,Q,a,o,N]);var Y=t==="xs"?"left":(h==null?void 0:h.labelAlign)||"right";return I(A,{className:d("easy-table-filter",v),style:m,children:I(M,r({form:j,autoComplete:"off",onFinish:K,className:u,style:n.formStyle,isPure:true,labelWidth:"80",formItemGap:"15"},h,{labelAlign:Y,children:n.isPure?_:I(W.Row,{gutter:[15,0],gridSize:n.formGridSize,children:H})}))})};var ie=function e(){var n=P(ee);return n.getEasyTableRef()};var ae=function e(){var n=P(ee);return{current:n.getEasyTableRef()}};var oe=function e(n){var t=R(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a={type:"checkbox",selectedRowKeys:r,onChange:function e(t){i(t);n.onChange(t);if(n.cacheKey){Z.set(n.cacheKey,t)}}};var o=[{title:"字段名称",dataIndex:"title",render:function e(n,t){return t["_isFoldTitle"]||n}},{title:"字段Key",dataIndex:"dataIndex"}];return I(w,{children:I(F,{title:"选择字段",open:n.open,onClose:n.onClose,width:"35%",styles:{body:{padding:15}},children:I(S,{bordered:true,size:"small",columns:o,rowSelection:a,rowKey:"dataIndex",pagination:false,scroll:{x:"max-content"},dataSource:n.dataList})})})};var le=["tooltip","tipsWrapperProps","title"];var se=function e(n){return z(function(){var e=n.columns.map(function(e){var n=e.tooltip,t=e.tipsWrapperProps,a=e.title,o=i(e,le);if(typeof a==="string"&&t){if(typeof t==="string"){return r({},o,{title:I($,{tipType:"popover",popoverProps:{content:t},children:a})})}return r({},o,{title:I($,r({},t,{children:a}))})}if(typeof a==="string"&&!!n){return r({},o,{title:I(Y,{tooltip:n,title:a})})}return e}).filter(Boolean);return[].concat(e)},[n.columns])};var ue=function e(n){var t=n.columns;return q.useMemoCustom(function(){var e;if((e=n.columnFoldConfig)!=null&&e.hidden)return t;var r=t[t.length-1];if(n.foldColumnList.length>0&&t.length>0){var i=t.find(function(e){return e["_isFoldColumn"]});if(i&&r.dataIndex!==i.dataIndex){i.title=i["_isFoldTitle"];i["_isFoldColumn"]=false}if(!r["_isFoldColumn"]){var a,o,l,s,u,c;r["_isFoldTitle"]=r["_isFoldTitle"]||r.title;r["_isFoldColumn"]=true;var d=(a=n.columnFoldConfig)==null?void 0:a.triggerType;r.title=V(Q,{direction:"horizontal",fullIndex:0,style:{alignItems:"center"},children:[I("span",{children:r.title}),I("div",{style:{padding:"0 5px 0 20px",display:"flex"},children:d==="drawer"?I(G,{onClick:n.onOpenColumnFoldModal,text:(o=n.columnFoldConfig)==null?void 0:o.text,size:"small",icon:((l=n.columnFoldConfig)==null?void 0:l.icon)||I(H,{svgPath:"ionic/list-circle",color:"#868686"}),hoverTips:((s=n.columnFoldConfig)==null?void 0:s.hoverTipText)||"字段列表",style:{padding:0,margin:0}}):I(ne,{dataList:n.foldColumnList,onChange:n.onChangeFoldColumnList,cacheKey:n.cacheKey,initSelectedRowKeys:n.showFoldKeyList,children:I(G,{text:(u=n.columnFoldConfig)==null?void 0:u.text,style:{padding:0,margin:0},size:"small",icon:((c=n.columnFoldConfig)==null?void 0:c.icon)||I(H,{svgPath:"ionic/list-circle",color:"#868686"})})})})]})}}return t},[n.columns,n.columnFoldConfig])};var ce=function e(n){return z(function(){var e=n.columns.map(function(e){var t=e.hidden,r=e.isFold;if(t)return null;if(r&&!n.showFoldKeyList.includes(e.dataIndex))return null;return e}).filter(Boolean);return[].concat(e)},[n.columns,n.showFoldKeyList])};var de=function e(n){return z(function(){if(!Object.keys(n.asyncColumnRequestResult))return n.columns;return n.columns.map(function(e){var t=e.dataIndex;var r=n.asyncColumnRequestResult[t];if(t&&r){if(r.loading){e.render=function(e){return I(B,{loading:true,type:"text",loadingPosition:"center",removeGap:true,children:e})}}else if(e.asyncRender){e.render=function(n,t,i){return e.asyncRender==null?void 0:e.asyncRender(n,t,i,r.respData)}}}return e})},[n.columns,n.asyncColumnRequestResult])};var fe=["children","rowKey","pagination","isSync","title","actions"];var me=function e(n){var t;if(!n.title&&!((t=n.actions)!=null&&t.length)){return null}return V(Q,{fullIndex:0,direction:"horizontal",style:{marginBottom:10,alignItems:"center"},children:[n.title?I("div",{style:{fontWeight:400,fontSize:16},children:n.title}):null,I(b,{size:10,children:n.actions})]})};var pe=function e(n){var t=P(ee);var a=n.children,o=n.rowKey,l=n.pagination,f=n.isSync,m=n.title,v=n.actions,g=i(n,fe);var h=q.useResponsivePoint()||"";var y=K({});var C=R({}),F=C[0],b=C[1];var x=t.dynamicColumnsConfig,j=x.columnFoldConfig,_=x.onCloseColumnFoldModal,N=x.columnFoldOpen,T=x.onOpenColumnFoldModal,k=x.asyncColumnRequest,D=x.showFoldKeyList,E=x.onChangeShowFoldKeyList;var O=t.cacheKey,B=t.fieldNames,M=t.onRequest,W=t.tableDataSource,Q=t.pageSize,G=t.tableTotal,H=t.loading,Y=t.paginationFixed,$=t.onSetPaginationStatus;var X=J.get(O);q.useEffectCustom(function(){t.onSetBaseColumns(n.columns||[])},[]);L(function(){if(k!=null&&k.length){var e=function e(){var t;var i=k[n];y.current=r({},y.current,(t={},t[i.dataIndex]={loading:true},t));b(y.current);i.onRequest().then(function(e){var n;y.current=r({},y.current,(n={},n[i.dataIndex]={loading:false,respData:e},n));b(y.current)}).catch(function(e){var n;console.error(e==null?void 0:e.message);y.current=r({},y.current,(n={},n[i.dataIndex]={loading:false},n));b(y.current)})};for(var n=0;n<k.length;n++){e()}}},[k]);var Z=q.useMemoCustom(function(){if(t.columns){t.onSetColumns(t.columns);return t.columns}else{t.onSetColumns(n.columns);return n.columns}},[t.columns,n.columns]);var ne=se({columns:[].concat(Z)});var te=Z.filter(function(e){return!e.hidden&&e.isFold&&e.dataIndex});ne=ue({cacheKey:O,columns:ne,foldColumnList:te,showFoldKeyList:D,columnFoldConfig:j,onOpenColumnFoldModal:T,onChangeFoldColumnList:E});ne=ce({columns:ne,showFoldKeyList:D});ne=de({columns:ne,asyncColumnRequestResult:F});q.useEffectCustom(function(){$(l!==false)},[l]);p.useUpdateEffect(function(){if(!Y){if(l!==false){var e;M((e={},e[B.pageSize]=X[B.pageSize]||Q,e[B.pageNo]=1,e))}else{var n;M((n={},n[B.pageSize]=undefined,n[B.pageNo]=undefined,n))}}},[l]);var re=z(function(){if(Y||l===false)return false;return r({showSizeChanger:true,current:X[B.pageNo]||1,pageSize:X[B.pageSize]||Q,total:G,showTotal:function e(n){return"共 "+n+" 条记录"}},n.pagination)},[X,B.pageNo,B.pageSize,Q,l,Y,n.pagination,G]);var ie=function e(t,r,i,a){if(a.action==="paginate"&&re){var o;M((o={},o[B.pageSize]=t.pageSize,o[B.pageNo]=t.current,o))}else{n.onChange==null||n.onChange(t,r,i,a)}};var ae=z(function(){if(!W)return undefined;if(W.length===0){return[]}if(typeof o==="string"&&u(W[0][o])){return W.map(function(e){e[o]=s();return e})}return W},[W,o]);ne=z(function(){return ne.map(function(e){if(!!e.fixed&&h==="xs"){e.fixed=undefined}if(!!e.defaultValue&&!e.render){e.render=function(n){return u(n)||n==""?e.defaultValue:n}}return e})},[ne,h]);var le=function e(){if(f&&!ae){return V(w,{children:[I(me,{title:m,actions:v}),a,I(S,{size:"small",scroll:{x:"max-content"},bordered:true,rowKey:o,columns:ne,loading:H},"1")]})}if(c()){return V(w,{children:[I(me,{title:m,actions:v}),a,I(S,r({size:"small",scroll:{x:"max-content"},bordered:true},g,{columns:ne,pagination:re,rowKey:o,onChange:ie,loading:H,dataSource:ae}),"2")]})}return V(w,{children:[I(me,{title:m,actions:v}),a,I(U,{children:I(S,r({size:"small",scroll:{x:"max-content"},bordered:true},g,{columns:ne,pagination:re,rowKey:o,onChange:ie,loading:H,dataSource:ae}),"3")})]})};return V(A,{className:d("easy-table-table",{"ett-empty-show-small":n.emptyShowSize==="small"},n.tableWrapperClassName),style:n.tableWrapperStyle,children:[le(),I(oe,{dataList:te,onClose:_,open:N,onChange:E,cacheKey:O,initSelectedRowKeys:D})]})};var ve=e.attachPropertiesToComponent(te,{Filter:re,Table:pe,useEasyTablRef:ae,useEasyTable:ie,setEnabledInitRequest:function e(n){X.set(n,false)}});export{ve as EasyTable};
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/cache.ts","@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate-dropdown.tsx","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/hooks/columns.tsx","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { isArray, isObject } from '@dimjs/lang';\nimport { localStorageCache, sessionStorageCache, TPlainObject } from '@flatbiz/utils';\n\nexport const filterCache = {\n set: (cacheKey: string, filterCondition: TPlainObject) => {\n const value = filterCache.get(cacheKey);\n const mergeParams = {\n ...value,\n ...filterCondition,\n };\n sessionStorageCache.set(`easy_tab_filter_${cacheKey}`, mergeParams);\n return mergeParams as TPlainObject;\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_filter_${cacheKey}`) as TPlainObject;\n return isObject(value) ? value : {};\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_filter_${cacheKey}`);\n },\n};\n\nexport const firstQueryCache = {\n set: (cacheKey: string, flag: boolean) => {\n sessionStorageCache.set(`easy_tab_firstQuery_${cacheKey}`, { value: flag });\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_firstQuery_${cacheKey}`)?.value;\n return value === false ? false : true;\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_firstQuery_${cacheKey}`);\n },\n};\n\nexport const columnFoldCache = {\n set: (cacheKey: string, value: string[]) => {\n localStorageCache.set(`easy_tab_columnFold_${cacheKey}`, { value });\n },\n get: (cacheKey: string) => {\n const value = localStorageCache.get(`easy_tab_columnFold_${cacheKey}`)?.value;\n return isArray(value) ? (value as string[]) : [];\n },\n remove: (cacheKey: string) => {\n localStorageCache.remove(`easy_tab_columnFold_${cacheKey}`);\n },\n};\n","import { noop, type TPlainObject } from '@flatbiz/utils';\nimport { type FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport type EditableFieldContextContextApi = {\n cacheKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableDataSource?: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initialValues?: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n getPaginationStatus: () => boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n onSetBaseColumns: (baseColumns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n onSetColumns: (columns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n columns?: TEasyTableTableColumn<TPlainObject>[];\n dynamicColumnsConfig: {\n showFoldKeyList: string[];\n onChangeShowFoldKeyList: (keys: string[]) => void;\n columnFoldOpen: boolean;\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onCloseColumnFoldModal: () => void;\n asyncColumnRequest?: EasyTableProps['asyncColumnRequest'];\n };\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { Checkbox, Popover } from 'antd';\nimport { Fragment, useState, type CSSProperties, type ReactElement } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex: string; title: string }[];\n onChange: (keys: string[]) => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n children?: ReactElement;\n};\n\nexport const FoldOperateDropdown = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n\n const onChange = (keys) => {\n setSelectedRowKeys(keys);\n props.onChange(keys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, keys);\n }\n };\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { classNames, get } from '@dimjs/utils';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\n\nimport { getUuid, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { PaginationWrapper } from '../pagination-wrapper';\n\nimport { columnFoldCache, filterCache, firstQueryCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport './style.less';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const screenType = fbaHooks.useResponsivePoint();\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const columnFoldConfig = props.columnFoldConfig;\n const asyncColumnRequest = props.asyncColumnRequest;\n\n const [columnFoldOpen, setColumnFoldOpen] = useState(false);\n\n const cacheKey = useMemo(() => {\n if (props.cacheKey) {\n try {\n const iframe = window.frameElement;\n const iframeId = iframe?.id || '';\n return `${props.cacheKey}_${iframeId}`;\n } catch (_error) {\n return props.cacheKey;\n }\n }\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return getUuid();\n }, [props.cacheSwitch, props.cacheKey]);\n\n const cacheParams = filterCache.get(cacheKey);\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (cacheKey) {\n const columnFoldCacheValue = columnFoldCache.get(cacheKey);\n const cacheKeyList = isArray(columnFoldCacheValue)\n ? columnFoldCacheValue.filter((item) => isString(item))\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const paginationStatusRef = useRef(false);\n const respOriginalDataRef = useRef<TAny>();\n const baseColumnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n const [dynamicColumns, setDynamicColumns] = useState<TEasyTableTableColumn<TPlainObject>[]>();\n\n const columnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n\n const fieldNames = {\n list: 'list',\n total: 'total',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm(props.form);\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n if (props.breforeRequest) {\n try {\n await props.breforeRequest(form);\n } catch (_error) {\n return;\n }\n }\n firstQueryCache.set(cacheKey, false);\n setLoading(true);\n const paramsAll = filterCache.set(cacheKey, params);\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(paramsAll) : paramsAll;\n const respData = (await onRequest(fbaUtils.removeFormValuesInvalidField(paramsNew))) || {};\n respOriginalDataRef.current = respData;\n props.onDataSourceChange?.(respData);\n let respDataNew: TPlainObject = respData;\n if (requestResultAdapter) {\n respDataNew = requestResultAdapter(respData);\n }\n if (dynamicColumsAdapter) {\n const dynamicColumns = dynamicColumsAdapter(respData, baseColumnsRef.current);\n /** 不要添加默认值 */\n setDynamicColumns(dynamicColumns);\n }\n const respList = get(respDataNew, fieldNames.list);\n setDataSource(isArray(respList) ? respList : []);\n setTotal(get(respDataNew, fieldNames.total));\n setLoading(false);\n } catch (error: any) {\n setLoading(false);\n if (props.onRequestErrorHandle) {\n props.onRequestErrorHandle(error);\n } else {\n void message.error(error.message);\n }\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = getPaginationStatus();\n const firstQueryFlag = firstQueryCache.get(cacheKey);\n form.setFieldsValue({\n ...props.initialValues,\n ...cacheParams,\n });\n if (initRequest || !firstQueryFlag) {\n if (hasPagination) {\n void onInnerRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...props.initialValues,\n ...cacheParams,\n });\n } else {\n void onInnerRequest(props.initialValues);\n }\n } else {\n filterCache.set(cacheKey, props.initialValues || {});\n }\n }, []);\n\n const clearQueryCondition = hooks.useCallbackRef((values?: TPlainObject) => {\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n }\n });\n\n const updateQueryCondition = hooks.useCallbackRef((values: TPlainObject) => {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (getPaginationStatus()) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {\n [fieldNames.pageNo]: undefined,\n [fieldNames.pageSize]: undefined,\n };\n }\n };\n\n const onResetRequest = hooks.useCallbackRef((values?: TPlainObject) => {\n const params = {\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n ...props.initialValues,\n ...values,\n };\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n form.setFieldsValue(values);\n }\n void onInnerRequest(params);\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n return {\n ...cacheParams,\n ...form.getFieldsValue(),\n };\n });\n\n const onOpenColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(true);\n });\n\n const onCloseColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(false);\n });\n\n const getEasyTableRef = (): EasyTableRefApi => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n dataSource: respOriginalDataRef.current,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = { [fieldNames.list]: dataList };\n props.onDataSourceChange?.(respOriginalDataRef.current);\n },\n columnFoldTriggerRender: (children, columns: TEasyTableTableColumn<TPlainObject>[]) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n\n const foldColumnList = columns.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as { dataIndex: string; title: string }[]}\n onChange={onChangeFoldColumnList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n {children}\n </FoldOperateDropdown>\n );\n },\n onChangeTableColumns: (columns) => {\n setDynamicColumns(columns);\n },\n getTableColumns: () => {\n return columnsRef.current;\n },\n loading,\n setEnabledInitRequest: () => {\n firstQueryCache.set(cacheKey, false);\n },\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n paginationStatusRef.current = status;\n };\n\n const onSetBaseColumns = (base) => {\n baseColumnsRef.current = base;\n };\n\n const onSetColumns = (columns) => {\n columnsRef.current = columns;\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n if (props.onFormFinish) {\n props.onFormFinish({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const filterFixedFt = screenType === 'xs' ? false : props.filterFixed;\n const className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': filterFixedFt,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = fbaHooks.useMemoCustom(() => {\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, cacheParams, fieldNames.pageSize, cacheKey, pageSize, props.pagination, total]);\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n const params = {\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n };\n filterCache.set(cacheKey, params);\n void onInnerRequest(params);\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n void onInnerRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }, [props.paginationFixed]);\n\n const wrapperClassName = classNames(\n 'fba-easy-table-wrapper',\n {\n 'fba-easy-table-wrapper-inline': props.isInline,\n },\n props.className,\n );\n\n const wrapperStyle: CSSProperties = {\n overflowY: props.filterFixed || props.paginationFixed ? 'hidden' : 'auto',\n ...props.style,\n };\n\n const children =\n typeof props.children === 'function' ? props.children(respOriginalDataRef.current) : props.children;\n\n return (\n <EasyTableContext.Provider\n value={{\n onSetBaseColumns,\n onSetColumns,\n getEasyTableRef,\n cacheKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: dynamicColumns,\n initialValues: props.initialValues,\n dynamicColumnsConfig: {\n showFoldKeyList,\n onChangeShowFoldKeyList: onChangeFoldColumnList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onCloseColumnFoldModal,\n columnFoldOpen,\n asyncColumnRequest,\n },\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n <div className={className}>{children}</div>\n </div>\n )}\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { type FormInstance } from 'antd';\nimport { Children, useContext, useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n /**\n * @deprecated已过期,使用 easyFormProps.className 配置\n */\n formClassName?: string;\n /**\n * @deprecated已过期,使用 easyFormProps.style 配置\n */\n formStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout style */\n filterWrapperStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout className */\n filterWrapperClassName?: string;\n /**\n * 自定义 filterOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n easyFormProps?: Omit<\n EasyFormProps,\n 'isPure' | 'column' | 'forceColumn' | 'width' | 'gridGutter' | 'children'\n >;\n};\n\n/**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTableFilter>\n *\n * 2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n * 3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,默认重启按钮触发请求,默认值:true\n * 8. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const screenType = fbaHooks.useResponsivePoint() || 'md';\n const ctx = useContext(EasyTableContext);\n const {\n queryButtonProps,\n resetButtonProps,\n filterOperate,\n formClassName = '',\n defaultResetButtonTriggerRequest,\n filterWrapperStyle,\n filterWrapperClassName,\n rightOperateAreaAppendType,\n easyFormProps,\n } = props;\n const {\n cacheKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\n\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const [openFold, setOpenFold] = useState(false);\n\n const onReset = hooks.useCallbackRef(async () => {\n filterCache.remove(cacheKey);\n form.resetFields();\n form.setFieldsValue(initialValues);\n if (isUndefined(defaultResetButtonTriggerRequest) || defaultResetButtonTriggerRequest) {\n await form.validateFields();\n if (getPaginationStatus()) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n }\n });\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = filterOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n childrens,\n filterOperate,\n foldKeys,\n form,\n onReset,\n openFold,\n queryButtonProps,\n resetButtonProps,\n rightOperateAreaAppendTypeFt,\n ]);\n\n const labelAlign = screenType === 'xs' ? 'left' : easyFormProps?.labelAlign || 'right';\n\n return (\n <BlockLayout\n className={classNames('easy-table-filter', filterWrapperClassName)}\n style={filterWrapperStyle}\n >\n <EasyForm\n form={form}\n autoComplete=\"off\"\n onFinish={onFormFinish}\n // initialValues={initialValues}\n className={formClassName}\n style={props.formStyle}\n isPure={true}\n labelWidth=\"80\"\n formItemGap=\"15\"\n {...easyFormProps}\n labelAlign={labelAlign}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </EasyForm>\n </BlockLayout>\n );\n};\n","import { useContext } from 'react';\nimport { EasyTableContext } from './context';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useContext(EasyTableContext);\n return ctx.getEasyTableRef();\n};\n\n/**\n * @deprecated 已过时 @4.5.0版本移除,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const ctx = useContext(EasyTableContext);\n return {\n current: ctx.getEasyTableRef(),\n };\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { type ColumnsType } from 'antd/es/table';\nimport { type TableRowSelection } from 'antd/es/table/interface';\nimport { Fragment, useState, type CSSProperties } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex?: string; title: string }[];\n onChange: (keys: string[]) => void;\n open?: boolean;\n onClose?: () => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n};\n\nexport const FoldOperate = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n const rowSelection = {\n type: 'checkbox',\n selectedRowKeys: selectedRowKeys,\n onChange: (selectedRowKeys: string[]) => {\n setSelectedRowKeys(selectedRowKeys);\n props.onChange(selectedRowKeys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, selectedRowKeys);\n }\n },\n } as TableRowSelection<TAny>;\n\n const columns: ColumnsType<TPlainObject> = [\n {\n title: '字段名称',\n dataIndex: 'title',\n render: (value, recrd) => {\n return recrd['_isFoldTitle'] || value;\n },\n },\n { title: '字段Key', dataIndex: 'dataIndex' },\n ];\n\n return (\n <Fragment>\n <Drawer\n title=\"选择字段\"\n open={props.open}\n onClose={props.onClose}\n width={'35%'}\n styles={{\n body: {\n padding: 15,\n },\n }}\n >\n <Table\n bordered\n size=\"small\"\n columns={columns}\n rowSelection={rowSelection}\n rowKey=\"dataIndex\"\n pagination={false}\n scroll={{ x: 'max-content' }}\n dataSource={props.dataList}\n />\n </Drawer>\n </Fragment>\n );\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { useMemo } from 'react';\nimport { ButtonWrapper } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { FlexLayout } from '../../flex-layout';\nimport { IconWrapper } from '../../icon-wrapper';\nimport { SvgHttpView } from '../../svg-http-view';\nimport { TableTitleTooltip } from '../../table-title-tooltip';\nimport { TipsWrapper } from '../../tips-wrapper';\nimport { FoldOperateDropdown } from '../fold-operate-dropdown';\nimport { type EasyTableProps } from '../type';\n\nexport const useColumnsAppendTips = (props: { columns: TPlainObject[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, ...otherProps } = item;\n if (typeof title === 'string' && tipsWrapperProps) {\n if (typeof tipsWrapperProps === 'string') {\n return {\n ...otherProps,\n title: (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n ),\n };\n }\n return {\n ...otherProps,\n title: <TipsWrapper {...tipsWrapperProps}>{title}</TipsWrapper>,\n };\n }\n if (typeof title === 'string' && !!tooltip) {\n return {\n ...otherProps,\n title: <TableTitleTooltip tooltip={tooltip} title={title}></TableTitleTooltip>,\n };\n }\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns]);\n};\n\nexport const useColumnsAppendInnerColumn = (props: {\n columns: TPlainObject[];\n cacheKey: string;\n showFoldKeyList: string[];\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onChangeFoldColumnList: (keyList: string[]) => void;\n foldColumnList: TPlainObject[];\n}) => {\n const columnsNew = props.columns;\n return fbaHooks.useMemoCustom(() => {\n if (props.columnFoldConfig?.hidden) return columnsNew;\n const finalItem = columnsNew[columnsNew.length - 1];\n if (props.foldColumnList.length > 0 && columnsNew.length > 0) {\n const foldColumnTarget = columnsNew.find((item) => item['_isFoldColumn']);\n\n if (foldColumnTarget && finalItem.dataIndex !== foldColumnTarget.dataIndex) {\n foldColumnTarget.title = foldColumnTarget['_isFoldTitle'];\n foldColumnTarget['_isFoldColumn'] = false;\n }\n if (!finalItem['_isFoldColumn']) {\n finalItem['_isFoldTitle'] = finalItem['_isFoldTitle'] || finalItem.title;\n finalItem['_isFoldColumn'] = true;\n\n const triggerType = props.columnFoldConfig?.triggerType;\n\n finalItem.title = (\n <FlexLayout direction=\"horizontal\" fullIndex={0} style={{ alignItems: 'center' }}>\n <span>{finalItem.title}</span>\n <div style={{ padding: '0 5px 0 20px', display: 'flex' }}>\n {triggerType === 'drawer' ? (\n <IconWrapper\n onClick={props.onOpenColumnFoldModal}\n text={props.columnFoldConfig?.text}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n hoverTips={props.columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={props.foldColumnList as TAny[]}\n onChange={props.onChangeFoldColumnList}\n cacheKey={props.cacheKey}\n initSelectedRowKeys={props.showFoldKeyList}\n >\n <IconWrapper\n text={props.columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return columnsNew;\n }, [props.columns, props.columnFoldConfig]);\n};\n\nexport const useColumnsToHidden = (props: { columns: TPlainObject[]; showFoldKeyList: string[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { hidden, isFold } = item;\n if (hidden) return null;\n if (isFold && !props.showFoldKeyList.includes(item.dataIndex as string)) return null;\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns, props.showFoldKeyList]);\n};\n\nexport const useColumnByAsyncColumnRequest = (props: {\n columns: TPlainObject[];\n asyncColumnRequestResult: TPlainObject;\n}) => {\n return useMemo(() => {\n if (!Object.keys(props.asyncColumnRequestResult)) return props.columns;\n return props.columns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = props.asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [props.columns, props.asyncColumnRequestResult]);\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Space, Table, type TableProps } from 'antd';\nimport {\n Fragment,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n} from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { FlexLayout } from '../flex-layout';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport {\n useColumnByAsyncColumnRequest,\n useColumnsAppendInnerColumn,\n useColumnsAppendTips,\n useColumnsToHidden,\n} from './hooks/columns';\nimport { type TEasyTableTableColumn } from './type';\n\nconst TitleRender = (props: {\n /** 标题 */\n title?: ReactNode;\n /** 动作 */\n actions?: ReactElement[];\n}) => {\n if (!props.title && !props.actions?.length) {\n return null;\n }\n return (\n <FlexLayout fullIndex={0} direction=\"horizontal\" style={{ marginBottom: 10, alignItems: 'center' }}>\n {props.title ? <div style={{ fontWeight: 400, fontSize: 16 }}>{props.title}</div> : null}\n <Space size={10}>{props.actions}</Space>\n </FlexLayout>\n );\n};\n\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns' | 'title'\n> & {\n children?: ReactElement | ReactElement[];\n /**\n * 表格行 key 的取值,\n * ```\n * 如果 rowKey 为string类型\n * 1. 组件会判断表格列表数据第一条是否存在当前rowKey对象的数据,如果没有组件内部会动态添加唯一值\n * 2. 基于上一条的逻辑,如果表格数据没有唯一值,可指定 rowKey 值为table数据中不存在的字段名,例如:rowKey=\"_uid\"\n * 3. 如果触发上述逻辑,表格数据中会多出rowKey对应的键值对数据\n * ```\n */\n rowKey: TableProps<TAny>['rowKey'];\n /** table Form 外层 SimpleLayout className */\n tableWrapperStyle?: CSSProperties;\n /** table Form 外层 SimpleLayout className */\n tableWrapperClassName?: string;\n /**\n * ```\n * 1. 当配置了 EasyTable.serviceConfig.dynamicColumsAdapter 后,columns配置只在初始化有效,再次修改无效\n * 2. 可通过 EasyTableRef.onChangeTableColumns 实现 columns 的指定修改\n * ```\n */\n columns: TEasyTableTableColumn<T>[];\n /**\n * 数据加载与表格初始化渲染 是否同步\n * @version 4.4.6\n * ```\n * 1. true:获取数据后再初始化渲染表格(可用于实现表格中defaultXxxx相关功能的使用)\n * ```\n */\n isSync?: boolean;\n /**\n * 空效果显示尺寸,默认值:small\n * @version 4.4.6\n */\n emptyShowSize?: 'small' | 'large';\n\n /** 标题 */\n title?: ReactNode;\n /** 动作 */\n actions?: ReactElement[];\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\nexport const EasyTableTable = <T extends TPlainObject>(props: EasyTableTableProps<T>) => {\n const ctx = useContext(EasyTableContext);\n const { children, rowKey, pagination, isSync, title, actions, ...otherProps } = props;\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n\n const {\n columnFoldConfig,\n onCloseColumnFoldModal,\n columnFoldOpen,\n onOpenColumnFoldModal,\n asyncColumnRequest,\n showFoldKeyList,\n onChangeShowFoldKeyList,\n } = ctx.dynamicColumnsConfig;\n\n const {\n cacheKey,\n fieldNames,\n onRequest,\n tableDataSource,\n pageSize,\n tableTotal,\n loading,\n paginationFixed,\n onSetPaginationStatus,\n } = ctx;\n\n const cacheParams = filterCache.get(cacheKey);\n\n fbaHooks.useEffectCustom(() => {\n /** 获取初始化 columns 数据 */\n ctx.onSetBaseColumns((props.columns || []) as TEasyTableTableColumn<TPlainObject>[]);\n }, []);\n\n useEffect(() => {\n if (asyncColumnRequest?.length) {\n for (let index = 0; index < asyncColumnRequest.length; index++) {\n const element = asyncColumnRequest[index];\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: true },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n element\n .onRequest()\n .then((respData) => {\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false, respData },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n })\n .catch((error) => {\n console.error(error?.message);\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n });\n }\n }\n }, [asyncColumnRequest]);\n\n const columnsOriginal = fbaHooks.useMemoCustom(() => {\n if (ctx.columns) {\n ctx.onSetColumns(ctx.columns);\n return ctx.columns as TEasyTableTableColumn<T>[];\n } else {\n ctx.onSetColumns(props.columns as TEasyTableTableColumn<TPlainObject>[]);\n return props.columns;\n }\n }, [ctx.columns, props.columns]);\n\n let columnsNew = useColumnsAppendTips({\n columns: [...columnsOriginal],\n });\n\n const foldColumnList = columnsOriginal.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n columnsNew = useColumnsAppendInnerColumn({\n cacheKey,\n columns: columnsNew,\n foldColumnList,\n showFoldKeyList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onChangeFoldColumnList: onChangeShowFoldKeyList,\n });\n\n columnsNew = useColumnsToHidden({\n columns: columnsNew,\n showFoldKeyList,\n });\n\n columnsNew = useColumnByAsyncColumnRequest({\n columns: columnsNew,\n asyncColumnRequestResult,\n });\n\n fbaHooks.useEffectCustom(() => {\n onSetPaginationStatus(pagination !== false);\n }, [pagination]);\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (!paginationFixed) {\n if (pagination !== false) {\n onRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n onRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }\n }, [pagination]);\n\n const tablePaginationData = useMemo(() => {\n if (paginationFixed || pagination === false) return false;\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n // selectComponentClass: SmallSelect,\n };\n }, [\n cacheParams,\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (pagination, filters, sorter, extra) => {\n if (extra.action === 'paginate' && tablePaginationData) {\n onRequest({\n [fieldNames.pageSize]: pagination.pageSize,\n [fieldNames.pageNo]: pagination.current,\n });\n } else {\n props.onChange?.(pagination, filters, sorter, extra);\n }\n };\n\n const dataSource = useMemo(() => {\n if (!tableDataSource) return undefined;\n if (tableDataSource.length === 0) {\n return [];\n }\n if (typeof rowKey === 'string' && isUndefinedOrNull(tableDataSource[0][rowKey])) {\n return tableDataSource.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableDataSource;\n }, [tableDataSource, rowKey]);\n\n columnsNew = useMemo(() => {\n return columnsNew.map((item) => {\n if (!!item.fixed && screenType === 'xs') {\n item.fixed = undefined;\n }\n if (!!item.defaultValue && !item.render) {\n item.render = (value) => {\n return isUndefinedOrNull(value) || value == '' ? item.defaultValue : value;\n };\n }\n return item;\n });\n }, [columnsNew, screenType]);\n\n const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <Table\n key=\"1\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n rowKey={rowKey as TAny}\n columns={columnsNew}\n loading={loading}\n />\n </Fragment>\n );\n }\n if (isMacEnv()) {\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <Table\n key=\"2\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </Fragment>\n );\n }\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeShowFoldKeyList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { firstQueryCache } from './cache';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n *\n * 1. 废弃modelKey参数\n * 2. 如果需要在路由跳转回退中缓存查询条件,设置cacheSwitch=true;如果存在多个EasyTable缓存情况可设置cacheSwitch为自定义字符串\n * 3. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 4. 可通过属性 initRequest 设置初始化是否请求数据\n * 5. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 6. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 7. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 8. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 9. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 10. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提高windows下table左右滚动体验\n * 11. 可实现部分字段折叠,手动选择显示,将EasyTable.Table columns中isFold属性设为true,可通过EasyTable columnFoldConfig配置属性,demo(https://fex.qa.tcshuke.com/docs/admin/main/crud/demo1)\n * 12. 通过asyncColumnRequest、asyncRender配合使用可实现表格列数据接口渲染(demo:https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table)\n * ```\n */\nexport const EasyTable = fbaUtils.attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTable.Filter>\n * 2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n * 3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n * 8. 通过easyFormProps属性可整体控制子节点FormItem布局\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\n Table: EasyTableTable,\n /**\n * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n /** 设置启用初始化请求 */\n setEnabledInitRequest: (cacheKey: string) => {\n firstQueryCache.set(cacheKey, false);\n },\n});\n"],"names":["filterCache","set","cacheKey","filterCondition","value","get","mergeParams","_extends","sessionStorageCache","_isObject","remove","firstQueryCache","flag","_sessionStorageCache$","columnFoldCache","localStorageCache","_localStorageCache$ge","_isArray","EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperateDropdown","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","onChange","keys","content","_jsx","Fragment","children","Checkbox","Group","defaultValue","style","display","flexDirection","dataList","map","item","label","title","dataIndex","padding","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","EasyTable","forwardRef","ref","_props$initialPaginat","screenType","fbaHooks","useResponsivePoint","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","useMemo","iframe","window","frameElement","iframeId","id","_error","cacheSwitch","location","pathname","getUuid","cacheParams","_useState5","columnFoldCacheValue","cacheKeyList","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","pageSize","initialPaginationParams","initRequest","undefined","paginationStatusRef","useRef","respOriginalDataRef","baseColumnsRef","_useState6","dynamicColumns","setDynamicColumns","columnsRef","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","_hooks","useCallbackRef","params","Promise","$return","$error","paramsAll","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_2_Post","$boundEx","$Try_2_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_3_Post","$If_4","call","this","bind","$Try_3_Catch","resolve","then","$await_5","serviceConfig","fbaUtils","removeFormValuesInvalidField","$await_6","current","onDataSourceChange","_get","useEffectCustom","hasPagination","getPaginationStatus","firstQueryFlag","setFieldsValue","initialValues","_extends2","clearQueryCondition","values","resetFields","updateQueryCondition","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","_respOriginalDataRef$","columnFoldTriggerRender","columns","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","hidden","isFold","onChangeFoldColumnList","onChangeTableColumns","getTableColumns","setEnabledInitRequest","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onSetColumns","onFormFinish","isFull","_isUndefined","filterFixedFt","filterFixed","className","_classNames","paginationFixed","paginationData","useMemoCustom","showSizeChanger","showTotal","pagination","keyList","page","_params","_props$pagination","useUpdateEffect","_onInnerRequest","_onInnerRequest2","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","dynamicColumnsConfig","onChangeShowFoldKeyList","_jsxs","PaginationWrapper","size","EasyTableFilter","ctx","useContext","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","onReset","validateFields","$await_2","$If_1","formRowChildren","defaultRightList","ButtonWrapper","type","htmlType","text","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","index","find","keyItem","key","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","FoldOperate","rowSelection","render","recrd","Drawer","open","onClose","width","styles","body","Table","bordered","rowKey","scroll","x","useColumnsAppendTips","tempList","tooltip","tipsWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","TipsWrapper","tipType","popoverProps","TableTitleTooltip","useColumnsAppendInnerColumn","columnsNew","finalItem","foldColumnTarget","_props$columnFoldConf2","_props$columnFoldConf3","_props$columnFoldConf4","_props$columnFoldConf5","_props$columnFoldConf6","_props$columnFoldConf7","FlexLayout","direction","fullIndex","alignItems","IconWrapper","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","useColumnsToHidden","includes","useColumnByAsyncColumnRequest","Object","asyncColumnRequestResult","result","loadingPosition","removeGap","asyncRender","record","TitleRender","_props$actions","actions","marginBottom","fontWeight","Space","EasyTableTable","isSync","asyncColumnRequestResultRef","setAsyncColumnRequestResult","_ctx$dynamicColumnsCo","useEffect","_loop","element","_extends3","catch","_extends4","console","columnsOriginal","_onRequest","_onRequest2","tablePaginationData","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","fixed","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/cache.ts","@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate-dropdown.tsx","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/hooks/columns.tsx","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { isArray, isObject } from '@dimjs/lang';\nimport { localStorageCache, sessionStorageCache, TPlainObject } from '@flatbiz/utils';\n\nexport const filterCache = {\n set: (cacheKey: string, filterCondition: TPlainObject) => {\n const value = filterCache.get(cacheKey);\n const mergeParams = {\n ...value,\n ...filterCondition,\n };\n sessionStorageCache.set(`easy_tab_filter_${cacheKey}`, mergeParams);\n return mergeParams as TPlainObject;\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_filter_${cacheKey}`) as TPlainObject;\n return isObject(value) ? value : {};\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_filter_${cacheKey}`);\n },\n};\n\nexport const firstQueryCache = {\n set: (cacheKey: string, flag: boolean) => {\n sessionStorageCache.set(`easy_tab_firstQuery_${cacheKey}`, { value: flag });\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_firstQuery_${cacheKey}`)?.value;\n return value === false ? false : true;\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_firstQuery_${cacheKey}`);\n },\n};\n\nexport const columnFoldCache = {\n set: (cacheKey: string, value: string[]) => {\n localStorageCache.set(`easy_tab_columnFold_${cacheKey}`, { value });\n },\n get: (cacheKey: string) => {\n const value = localStorageCache.get(`easy_tab_columnFold_${cacheKey}`)?.value;\n return isArray(value) ? (value as string[]) : [];\n },\n remove: (cacheKey: string) => {\n localStorageCache.remove(`easy_tab_columnFold_${cacheKey}`);\n },\n};\n","import { noop, type TPlainObject } from '@flatbiz/utils';\nimport { type FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport type EditableFieldContextContextApi = {\n cacheKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableDataSource?: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initialValues?: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n getPaginationStatus: () => boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n onSetBaseColumns: (baseColumns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n onSetColumns: (columns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n columns?: TEasyTableTableColumn<TPlainObject>[];\n dynamicColumnsConfig: {\n showFoldKeyList: string[];\n onChangeShowFoldKeyList: (keys: string[]) => void;\n columnFoldOpen: boolean;\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onCloseColumnFoldModal: () => void;\n asyncColumnRequest?: EasyTableProps['asyncColumnRequest'];\n };\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { Checkbox, Popover } from 'antd';\nimport { Fragment, useState, type CSSProperties, type ReactElement } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex: string; title: string }[];\n onChange: (keys: string[]) => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n children?: ReactElement;\n};\n\nexport const FoldOperateDropdown = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n\n const onChange = (keys) => {\n setSelectedRowKeys(keys);\n props.onChange(keys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, keys);\n }\n };\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { classNames, get } from '@dimjs/utils';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\n\nimport { getUuid, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { PaginationWrapper } from '../pagination-wrapper';\n\nimport { columnFoldCache, filterCache, firstQueryCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport './style.less';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const screenType = fbaHooks.useResponsivePoint();\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const columnFoldConfig = props.columnFoldConfig;\n const asyncColumnRequest = props.asyncColumnRequest;\n\n const [columnFoldOpen, setColumnFoldOpen] = useState(false);\n\n const cacheKey = useMemo(() => {\n if (props.cacheKey) {\n try {\n const iframe = window.frameElement;\n const iframeId = iframe?.id || '';\n return `${props.cacheKey}_${iframeId}`;\n } catch (_error) {\n return props.cacheKey;\n }\n }\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return `${Date.now()}_${getUuid()}`;\n }, [props.cacheSwitch, props.cacheKey]);\n\n const cacheParams = filterCache.get(cacheKey);\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (cacheKey) {\n const columnFoldCacheValue = columnFoldCache.get(cacheKey);\n const cacheKeyList = isArray(columnFoldCacheValue)\n ? columnFoldCacheValue.filter((item) => isString(item))\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const paginationStatusRef = useRef(false);\n const respOriginalDataRef = useRef<TAny>();\n const baseColumnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n const [dynamicColumns, setDynamicColumns] = useState<TEasyTableTableColumn<TPlainObject>[]>();\n\n const columnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n\n const fieldNames = {\n list: 'list',\n total: 'total',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm(props.form);\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n if (props.breforeRequest) {\n try {\n await props.breforeRequest(form);\n } catch (_error) {\n return;\n }\n }\n firstQueryCache.set(cacheKey, false);\n setLoading(true);\n const paramsAll = filterCache.set(cacheKey, params);\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(paramsAll) : paramsAll;\n const respData = (await onRequest(fbaUtils.removeFormValuesInvalidField(paramsNew))) || {};\n respOriginalDataRef.current = respData;\n props.onDataSourceChange?.(respData);\n let respDataNew: TPlainObject = respData;\n if (requestResultAdapter) {\n respDataNew = requestResultAdapter(respData);\n }\n if (dynamicColumsAdapter) {\n const dynamicColumns = dynamicColumsAdapter(respData, baseColumnsRef.current);\n /** 不要添加默认值 */\n setDynamicColumns(dynamicColumns);\n }\n const respList = get(respDataNew, fieldNames.list);\n setDataSource(isArray(respList) ? respList : []);\n setTotal(get(respDataNew, fieldNames.total));\n setLoading(false);\n } catch (error: any) {\n setLoading(false);\n if (props.onRequestErrorHandle) {\n props.onRequestErrorHandle(error);\n } else {\n void message.error(error.message);\n }\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = getPaginationStatus();\n const firstQueryFlag = firstQueryCache.get(cacheKey);\n form.setFieldsValue({\n ...props.initialValues,\n ...cacheParams,\n });\n if (initRequest || !firstQueryFlag) {\n if (hasPagination) {\n void onInnerRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...props.initialValues,\n ...cacheParams,\n });\n } else {\n void onInnerRequest(props.initialValues);\n }\n } else {\n filterCache.set(cacheKey, props.initialValues || {});\n }\n }, []);\n\n const clearQueryCondition = hooks.useCallbackRef((values?: TPlainObject) => {\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n }\n });\n\n const updateQueryCondition = hooks.useCallbackRef((values: TPlainObject) => {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (getPaginationStatus()) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {\n [fieldNames.pageNo]: undefined,\n [fieldNames.pageSize]: undefined,\n };\n }\n };\n\n const onResetRequest = hooks.useCallbackRef((values?: TPlainObject) => {\n const params = {\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n ...props.initialValues,\n ...values,\n };\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n form.setFieldsValue(values);\n }\n void onInnerRequest(params);\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n return {\n ...cacheParams,\n ...form.getFieldsValue(),\n };\n });\n\n const onOpenColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(true);\n });\n\n const onCloseColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(false);\n });\n\n const getEasyTableRef = (): EasyTableRefApi => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n dataSource: respOriginalDataRef.current,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = { [fieldNames.list]: dataList };\n props.onDataSourceChange?.(respOriginalDataRef.current);\n },\n columnFoldTriggerRender: (children, columns: TEasyTableTableColumn<TPlainObject>[]) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n\n const foldColumnList = columns.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as { dataIndex: string; title: string }[]}\n onChange={onChangeFoldColumnList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n {children}\n </FoldOperateDropdown>\n );\n },\n onChangeTableColumns: (columns) => {\n setDynamicColumns(columns);\n },\n getTableColumns: () => {\n return columnsRef.current;\n },\n loading,\n setEnabledInitRequest: () => {\n firstQueryCache.set(cacheKey, false);\n },\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n paginationStatusRef.current = status;\n };\n\n const onSetBaseColumns = (base) => {\n baseColumnsRef.current = base;\n };\n\n const onSetColumns = (columns) => {\n columnsRef.current = columns;\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n if (props.onFormFinish) {\n props.onFormFinish({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const filterFixedFt = screenType === 'xs' ? false : props.filterFixed;\n const className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': filterFixedFt,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = fbaHooks.useMemoCustom(() => {\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, cacheParams, fieldNames.pageSize, cacheKey, pageSize, props.pagination, total]);\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n const params = {\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n };\n filterCache.set(cacheKey, params);\n void onInnerRequest(params);\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n void onInnerRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }, [props.paginationFixed]);\n\n const wrapperClassName = classNames(\n 'fba-easy-table-wrapper',\n {\n 'fba-easy-table-wrapper-inline': props.isInline,\n },\n props.className,\n );\n\n const wrapperStyle: CSSProperties = {\n overflowY: props.filterFixed || props.paginationFixed ? 'hidden' : 'auto',\n ...props.style,\n };\n\n const children =\n typeof props.children === 'function' ? props.children(respOriginalDataRef.current) : props.children;\n\n return (\n <EasyTableContext.Provider\n value={{\n onSetBaseColumns,\n onSetColumns,\n getEasyTableRef,\n cacheKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: dynamicColumns,\n initialValues: props.initialValues,\n dynamicColumnsConfig: {\n showFoldKeyList,\n onChangeShowFoldKeyList: onChangeFoldColumnList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onCloseColumnFoldModal,\n columnFoldOpen,\n asyncColumnRequest,\n },\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n <div className={className}>{children}</div>\n </div>\n )}\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { type FormInstance } from 'antd';\nimport { Children, useContext, useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n /**\n * @deprecated已过期,使用 easyFormProps.className 配置\n */\n formClassName?: string;\n /**\n * @deprecated已过期,使用 easyFormProps.style 配置\n */\n formStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout style */\n filterWrapperStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout className */\n filterWrapperClassName?: string;\n /**\n * 自定义 filterOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n easyFormProps?: Omit<\n EasyFormProps,\n 'isPure' | 'column' | 'forceColumn' | 'width' | 'gridGutter' | 'children'\n >;\n};\n\n/**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTableFilter>\n *\n * 2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n * 3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,默认重启按钮触发请求,默认值:true\n * 8. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const screenType = fbaHooks.useResponsivePoint() || 'md';\n const ctx = useContext(EasyTableContext);\n const {\n queryButtonProps,\n resetButtonProps,\n filterOperate,\n formClassName = '',\n defaultResetButtonTriggerRequest,\n filterWrapperStyle,\n filterWrapperClassName,\n rightOperateAreaAppendType,\n easyFormProps,\n } = props;\n const {\n cacheKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\n\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const [openFold, setOpenFold] = useState(false);\n\n const onReset = hooks.useCallbackRef(async () => {\n filterCache.remove(cacheKey);\n form.resetFields();\n form.setFieldsValue(initialValues);\n if (isUndefined(defaultResetButtonTriggerRequest) || defaultResetButtonTriggerRequest) {\n await form.validateFields();\n if (getPaginationStatus()) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n }\n });\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = filterOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n childrens,\n filterOperate,\n foldKeys,\n form,\n onReset,\n openFold,\n queryButtonProps,\n resetButtonProps,\n rightOperateAreaAppendTypeFt,\n ]);\n\n const labelAlign = screenType === 'xs' ? 'left' : easyFormProps?.labelAlign || 'right';\n\n return (\n <BlockLayout\n className={classNames('easy-table-filter', filterWrapperClassName)}\n style={filterWrapperStyle}\n >\n <EasyForm\n form={form}\n autoComplete=\"off\"\n onFinish={onFormFinish}\n // initialValues={initialValues}\n className={formClassName}\n style={props.formStyle}\n isPure={true}\n labelWidth=\"80\"\n formItemGap=\"15\"\n {...easyFormProps}\n labelAlign={labelAlign}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </EasyForm>\n </BlockLayout>\n );\n};\n","import { useContext } from 'react';\nimport { EasyTableContext } from './context';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useContext(EasyTableContext);\n return ctx.getEasyTableRef();\n};\n\n/**\n * @deprecated 已过时 @4.5.0版本移除,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const ctx = useContext(EasyTableContext);\n return {\n current: ctx.getEasyTableRef(),\n };\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { type ColumnsType } from 'antd/es/table';\nimport { type TableRowSelection } from 'antd/es/table/interface';\nimport { Fragment, useState, type CSSProperties } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex?: string; title: string }[];\n onChange: (keys: string[]) => void;\n open?: boolean;\n onClose?: () => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n};\n\nexport const FoldOperate = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n const rowSelection = {\n type: 'checkbox',\n selectedRowKeys: selectedRowKeys,\n onChange: (selectedRowKeys: string[]) => {\n setSelectedRowKeys(selectedRowKeys);\n props.onChange(selectedRowKeys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, selectedRowKeys);\n }\n },\n } as TableRowSelection<TAny>;\n\n const columns: ColumnsType<TPlainObject> = [\n {\n title: '字段名称',\n dataIndex: 'title',\n render: (value, recrd) => {\n return recrd['_isFoldTitle'] || value;\n },\n },\n { title: '字段Key', dataIndex: 'dataIndex' },\n ];\n\n return (\n <Fragment>\n <Drawer\n title=\"选择字段\"\n open={props.open}\n onClose={props.onClose}\n width={'35%'}\n styles={{\n body: {\n padding: 15,\n },\n }}\n >\n <Table\n bordered\n size=\"small\"\n columns={columns}\n rowSelection={rowSelection}\n rowKey=\"dataIndex\"\n pagination={false}\n scroll={{ x: 'max-content' }}\n dataSource={props.dataList}\n />\n </Drawer>\n </Fragment>\n );\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { useMemo } from 'react';\nimport { ButtonWrapper } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { FlexLayout } from '../../flex-layout';\nimport { IconWrapper } from '../../icon-wrapper';\nimport { SvgHttpView } from '../../svg-http-view';\nimport { TableTitleTooltip } from '../../table-title-tooltip';\nimport { TipsWrapper } from '../../tips-wrapper';\nimport { FoldOperateDropdown } from '../fold-operate-dropdown';\nimport { type EasyTableProps } from '../type';\n\nexport const useColumnsAppendTips = (props: { columns: TPlainObject[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, ...otherProps } = item;\n if (typeof title === 'string' && tipsWrapperProps) {\n if (typeof tipsWrapperProps === 'string') {\n return {\n ...otherProps,\n title: (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n ),\n };\n }\n return {\n ...otherProps,\n title: <TipsWrapper {...tipsWrapperProps}>{title}</TipsWrapper>,\n };\n }\n if (typeof title === 'string' && !!tooltip) {\n return {\n ...otherProps,\n title: <TableTitleTooltip tooltip={tooltip} title={title}></TableTitleTooltip>,\n };\n }\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns]);\n};\n\nexport const useColumnsAppendInnerColumn = (props: {\n columns: TPlainObject[];\n cacheKey: string;\n showFoldKeyList: string[];\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onChangeFoldColumnList: (keyList: string[]) => void;\n foldColumnList: TPlainObject[];\n}) => {\n const columnsNew = props.columns;\n return fbaHooks.useMemoCustom(() => {\n if (props.columnFoldConfig?.hidden) return columnsNew;\n const finalItem = columnsNew[columnsNew.length - 1];\n if (props.foldColumnList.length > 0 && columnsNew.length > 0) {\n const foldColumnTarget = columnsNew.find((item) => item['_isFoldColumn']);\n\n if (foldColumnTarget && finalItem.dataIndex !== foldColumnTarget.dataIndex) {\n foldColumnTarget.title = foldColumnTarget['_isFoldTitle'];\n foldColumnTarget['_isFoldColumn'] = false;\n }\n if (!finalItem['_isFoldColumn']) {\n finalItem['_isFoldTitle'] = finalItem['_isFoldTitle'] || finalItem.title;\n finalItem['_isFoldColumn'] = true;\n\n const triggerType = props.columnFoldConfig?.triggerType;\n\n finalItem.title = (\n <FlexLayout direction=\"horizontal\" fullIndex={0} style={{ alignItems: 'center' }}>\n <span>{finalItem.title}</span>\n <div style={{ padding: '0 5px 0 20px', display: 'flex' }}>\n {triggerType === 'drawer' ? (\n <IconWrapper\n onClick={props.onOpenColumnFoldModal}\n text={props.columnFoldConfig?.text}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n hoverTips={props.columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={props.foldColumnList as TAny[]}\n onChange={props.onChangeFoldColumnList}\n cacheKey={props.cacheKey}\n initSelectedRowKeys={props.showFoldKeyList}\n >\n <IconWrapper\n text={props.columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return columnsNew;\n }, [props.columns, props.columnFoldConfig]);\n};\n\nexport const useColumnsToHidden = (props: { columns: TPlainObject[]; showFoldKeyList: string[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { hidden, isFold } = item;\n if (hidden) return null;\n if (isFold && !props.showFoldKeyList.includes(item.dataIndex as string)) return null;\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns, props.showFoldKeyList]);\n};\n\nexport const useColumnByAsyncColumnRequest = (props: {\n columns: TPlainObject[];\n asyncColumnRequestResult: TPlainObject;\n}) => {\n return useMemo(() => {\n if (!Object.keys(props.asyncColumnRequestResult)) return props.columns;\n return props.columns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = props.asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [props.columns, props.asyncColumnRequestResult]);\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Space, Table, type TableProps } from 'antd';\nimport {\n Fragment,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n} from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { FlexLayout } from '../flex-layout';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport {\n useColumnByAsyncColumnRequest,\n useColumnsAppendInnerColumn,\n useColumnsAppendTips,\n useColumnsToHidden,\n} from './hooks/columns';\nimport { type TEasyTableTableColumn } from './type';\n\nconst TitleRender = (props: {\n /** 标题 */\n title?: ReactNode;\n /** 动作 */\n actions?: ReactElement[];\n}) => {\n if (!props.title && !props.actions?.length) {\n return null;\n }\n return (\n <FlexLayout fullIndex={0} direction=\"horizontal\" style={{ marginBottom: 10, alignItems: 'center' }}>\n {props.title ? <div style={{ fontWeight: 400, fontSize: 16 }}>{props.title}</div> : null}\n <Space size={10}>{props.actions}</Space>\n </FlexLayout>\n );\n};\n\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns' | 'title'\n> & {\n children?: ReactElement | ReactElement[];\n /**\n * 表格行 key 的取值,\n * ```\n * 如果 rowKey 为string类型\n * 1. 组件会判断表格列表数据第一条是否存在当前rowKey对象的数据,如果没有组件内部会动态添加唯一值\n * 2. 基于上一条的逻辑,如果表格数据没有唯一值,可指定 rowKey 值为table数据中不存在的字段名,例如:rowKey=\"_uid\"\n * 3. 如果触发上述逻辑,表格数据中会多出rowKey对应的键值对数据\n * ```\n */\n rowKey: TableProps<TAny>['rowKey'];\n /** table Form 外层 SimpleLayout className */\n tableWrapperStyle?: CSSProperties;\n /** table Form 外层 SimpleLayout className */\n tableWrapperClassName?: string;\n /**\n * ```\n * 1. 当配置了 EasyTable.serviceConfig.dynamicColumsAdapter 后,columns配置只在初始化有效,再次修改无效\n * 2. 可通过 EasyTableRef.onChangeTableColumns 实现 columns 的指定修改\n * ```\n */\n columns: TEasyTableTableColumn<T>[];\n /**\n * 数据加载与表格初始化渲染 是否同步\n * @version 4.4.6\n * ```\n * 1. true:获取数据后再初始化渲染表格(可用于实现表格中defaultXxxx相关功能的使用)\n * ```\n */\n isSync?: boolean;\n /**\n * 空效果显示尺寸,默认值:small\n * @version 4.4.6\n */\n emptyShowSize?: 'small' | 'large';\n\n /** 标题 */\n title?: ReactNode;\n /** 动作 */\n actions?: ReactElement[];\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\nexport const EasyTableTable = <T extends TPlainObject>(props: EasyTableTableProps<T>) => {\n const ctx = useContext(EasyTableContext);\n const { children, rowKey, pagination, isSync, title, actions, ...otherProps } = props;\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n\n const {\n columnFoldConfig,\n onCloseColumnFoldModal,\n columnFoldOpen,\n onOpenColumnFoldModal,\n asyncColumnRequest,\n showFoldKeyList,\n onChangeShowFoldKeyList,\n } = ctx.dynamicColumnsConfig;\n\n const {\n cacheKey,\n fieldNames,\n onRequest,\n tableDataSource,\n pageSize,\n tableTotal,\n loading,\n paginationFixed,\n onSetPaginationStatus,\n } = ctx;\n\n const cacheParams = filterCache.get(cacheKey);\n\n fbaHooks.useEffectCustom(() => {\n /** 获取初始化 columns 数据 */\n ctx.onSetBaseColumns((props.columns || []) as TEasyTableTableColumn<TPlainObject>[]);\n }, []);\n\n useEffect(() => {\n if (asyncColumnRequest?.length) {\n for (let index = 0; index < asyncColumnRequest.length; index++) {\n const element = asyncColumnRequest[index];\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: true },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n element\n .onRequest()\n .then((respData) => {\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false, respData },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n })\n .catch((error) => {\n console.error(error?.message);\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n });\n }\n }\n }, [asyncColumnRequest]);\n\n const columnsOriginal = fbaHooks.useMemoCustom(() => {\n if (ctx.columns) {\n ctx.onSetColumns(ctx.columns);\n return ctx.columns as TEasyTableTableColumn<T>[];\n } else {\n ctx.onSetColumns(props.columns as TEasyTableTableColumn<TPlainObject>[]);\n return props.columns;\n }\n }, [ctx.columns, props.columns]);\n\n let columnsNew = useColumnsAppendTips({\n columns: [...columnsOriginal],\n });\n\n const foldColumnList = columnsOriginal.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n columnsNew = useColumnsAppendInnerColumn({\n cacheKey,\n columns: columnsNew,\n foldColumnList,\n showFoldKeyList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onChangeFoldColumnList: onChangeShowFoldKeyList,\n });\n\n columnsNew = useColumnsToHidden({\n columns: columnsNew,\n showFoldKeyList,\n });\n\n columnsNew = useColumnByAsyncColumnRequest({\n columns: columnsNew,\n asyncColumnRequestResult,\n });\n\n fbaHooks.useEffectCustom(() => {\n onSetPaginationStatus(pagination !== false);\n }, [pagination]);\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (!paginationFixed) {\n if (pagination !== false) {\n onRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n onRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }\n }, [pagination]);\n\n const tablePaginationData = useMemo(() => {\n if (paginationFixed || pagination === false) return false;\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n // selectComponentClass: SmallSelect,\n };\n }, [\n cacheParams,\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (pagination, filters, sorter, extra) => {\n if (extra.action === 'paginate' && tablePaginationData) {\n onRequest({\n [fieldNames.pageSize]: pagination.pageSize,\n [fieldNames.pageNo]: pagination.current,\n });\n } else {\n props.onChange?.(pagination, filters, sorter, extra);\n }\n };\n\n const dataSource = useMemo(() => {\n if (!tableDataSource) return undefined;\n if (tableDataSource.length === 0) {\n return [];\n }\n if (typeof rowKey === 'string' && isUndefinedOrNull(tableDataSource[0][rowKey])) {\n return tableDataSource.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableDataSource;\n }, [tableDataSource, rowKey]);\n\n columnsNew = useMemo(() => {\n return columnsNew.map((item) => {\n if (!!item.fixed && screenType === 'xs') {\n item.fixed = undefined;\n }\n if (!!item.defaultValue && !item.render) {\n item.render = (value) => {\n return isUndefinedOrNull(value) || value == '' ? item.defaultValue : value;\n };\n }\n return item;\n });\n }, [columnsNew, screenType]);\n\n const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <Table\n key=\"1\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n rowKey={rowKey as TAny}\n columns={columnsNew}\n loading={loading}\n />\n </Fragment>\n );\n }\n if (isMacEnv()) {\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <Table\n key=\"2\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </Fragment>\n );\n }\n return (\n <Fragment>\n <TitleRender title={title} actions={actions} />\n {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeShowFoldKeyList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { firstQueryCache } from './cache';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n *\n * 1. 废弃modelKey参数\n * 2. 如果需要在路由跳转回退中缓存查询条件,设置cacheSwitch=true;如果存在多个EasyTable缓存情况可设置cacheSwitch为自定义字符串\n * 3. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 4. 可通过属性 initRequest 设置初始化是否请求数据\n * 5. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 6. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 7. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 8. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 9. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 10. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提高windows下table左右滚动体验\n * 11. 可实现部分字段折叠,手动选择显示,将EasyTable.Table columns中isFold属性设为true,可通过EasyTable columnFoldConfig配置属性,demo(https://fex.qa.tcshuke.com/docs/admin/main/crud/demo1)\n * 12. 通过asyncColumnRequest、asyncRender配合使用可实现表格列数据接口渲染(demo:https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table)\n * ```\n */\nexport const EasyTable = fbaUtils.attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTable.Filter>\n * 2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n * 3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n * 8. 通过easyFormProps属性可整体控制子节点FormItem布局\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\n Table: EasyTableTable,\n /**\n * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n /** 设置启用初始化请求 */\n setEnabledInitRequest: (cacheKey: string) => {\n firstQueryCache.set(cacheKey, false);\n },\n});\n"],"names":["filterCache","set","cacheKey","filterCondition","value","get","mergeParams","_extends","sessionStorageCache","_isObject","remove","firstQueryCache","flag","_sessionStorageCache$","columnFoldCache","localStorageCache","_localStorageCache$ge","_isArray","EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperateDropdown","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","onChange","keys","content","_jsx","Fragment","children","Checkbox","Group","defaultValue","style","display","flexDirection","dataList","map","item","label","title","dataIndex","padding","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","EasyTable","forwardRef","ref","_props$initialPaginat","screenType","fbaHooks","useResponsivePoint","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","useMemo","iframe","window","frameElement","iframeId","id","_error","cacheSwitch","location","pathname","Date","now","getUuid","cacheParams","_useState5","columnFoldCacheValue","cacheKeyList","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","pageSize","initialPaginationParams","initRequest","undefined","paginationStatusRef","useRef","respOriginalDataRef","baseColumnsRef","_useState6","dynamicColumns","setDynamicColumns","columnsRef","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","_hooks","useCallbackRef","params","Promise","$return","$error","paramsAll","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_2_Post","$boundEx","$Try_2_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_3_Post","$If_4","call","this","bind","$Try_3_Catch","resolve","then","$await_5","serviceConfig","fbaUtils","removeFormValuesInvalidField","$await_6","current","onDataSourceChange","_get","useEffectCustom","hasPagination","getPaginationStatus","firstQueryFlag","setFieldsValue","initialValues","_extends2","clearQueryCondition","values","resetFields","updateQueryCondition","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","_respOriginalDataRef$","columnFoldTriggerRender","columns","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","hidden","isFold","onChangeFoldColumnList","onChangeTableColumns","getTableColumns","setEnabledInitRequest","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onSetColumns","onFormFinish","isFull","_isUndefined","filterFixedFt","filterFixed","className","_classNames","paginationFixed","paginationData","useMemoCustom","showSizeChanger","showTotal","pagination","keyList","page","_params","_props$pagination","useUpdateEffect","_onInnerRequest","_onInnerRequest2","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","dynamicColumnsConfig","onChangeShowFoldKeyList","_jsxs","PaginationWrapper","size","EasyTableFilter","ctx","useContext","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","onReset","validateFields","$await_2","$If_1","formRowChildren","defaultRightList","ButtonWrapper","type","htmlType","text","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","index","find","keyItem","key","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","FoldOperate","rowSelection","render","recrd","Drawer","open","onClose","width","styles","body","Table","bordered","rowKey","scroll","x","useColumnsAppendTips","tempList","tooltip","tipsWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","TipsWrapper","tipType","popoverProps","TableTitleTooltip","useColumnsAppendInnerColumn","columnsNew","finalItem","foldColumnTarget","_props$columnFoldConf2","_props$columnFoldConf3","_props$columnFoldConf4","_props$columnFoldConf5","_props$columnFoldConf6","_props$columnFoldConf7","FlexLayout","direction","fullIndex","alignItems","IconWrapper","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","useColumnsToHidden","includes","useColumnByAsyncColumnRequest","Object","asyncColumnRequestResult","result","loadingPosition","removeGap","asyncRender","record","TitleRender","_props$actions","actions","marginBottom","fontWeight","Space","EasyTableTable","isSync","asyncColumnRequestResultRef","setAsyncColumnRequestResult","_ctx$dynamicColumnsCo","useEffect","_loop","element","_extends3","catch","_extends4","console","columnsOriginal","_onRequest","_onRequest2","tablePaginationData","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","fixed","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
|