@flatbiz/antd 4.5.23 → 4.5.24
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/drag-editable-table-pro/index.js +1 -1
- package/esm/drag-editable-table-pro/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-table-pro/index.js +1 -1
- package/esm/editable-table-pro/index.js.map +1 -1
- package/index.d.ts +19 -8
- package/package.json +2 -2
|
@@ -12,5 +12,5 @@ import './../tips-wrapper/index.css';
|
|
|
12
12
|
import './../icon-wrapper/index.css';
|
|
13
13
|
import './index.css';
|
|
14
14
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
15
|
-
import{a as r,_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useSensors as e,useSensor as o,PointerSensor as
|
|
15
|
+
import{a as r,_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useSensors as e,useSensor as o,PointerSensor as n,DndContext as t}from"@dnd-kit/core";import{restrictToVerticalAxis as a}from"@dnd-kit/modifiers";import{useSortable as s,SortableContext as d,verticalListSortingStrategy as m,arrayMove as l}from"@dnd-kit/sortable";import{Form as c}from"antd";import{EditableTablePro as p}from"../editable-table-pro/index.js";import{createCtx as u}from"@wove/react/cjs/create-ctx";import f from"@ant-design/icons/es/icons/DragOutlined";import{CSS as v}from"@dnd-kit/utilities";import{isUndefinedOrNull as g,noop as j}from"@flatbiz/utils";import{createElement as y,Children as x,cloneElement as b}from"react";import{IconWrapper as h}from"../icon-wrapper/index.js";import{jsx as I}from"react/jsx-runtime";import"@ant-design/icons/es/icons/PlusOutlined";import"@ant-design/icons/es/icons/CloseCircleFilled";import"@dimjs/utils/cjs/class-names";import"@wove/react/cjs/hooks";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../form-item-wrapper/index.js";import"../pre-defined-class-name/index.js";import"../text-symbol-wrapper/index.js";import"../tips-wrapper/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";import"@dimjs/lang/cjs/is-undefined";var k=u(),w=k[0],C=k[1];var _=["dragIcon"];var F=function e(o){var n=o.dragIcon,t=r(o,_);var a=t["data-row-key"];var d=s({id:a}),m=d.setActivatorNodeRef,l=d.listeners,c=d.setNodeRef,p=d.transform,u=d.transition,k=d.isDragging;if(g(a)){return I("tr",i({},t))}var w=i({},t.style,{transform:v.Transform.toString(p&&i({},p,{scaleY:1})),transition:u,cursor:"move"},k?{position:"relative",zIndex:9999,boxShadow:" 0px 0px 12px 4px rgba(34, 33, 81, 0.1)",backgroundColor:"var(--block-bg-color)"}:{});var C=n||I(f,{});return y("tr",i({},t,{ref:c,style:w,key:a}),x.map(o.children,(function(r){if(r.key==="__sort"){return b(r,{children:I("span",i({ref:m,style:{touchAction:"none",cursor:"move",display:"flex",alignItems:"center",justifyContent:"center"}},l,{children:I(h,{style:{touchAction:"none",cursor:"move",padding:"1px 0px",margin:0,justifyContent:"center",color:"#787878"},icon:C,onClick:j,size:"small"})}))})}return r})))};var D=function r(e){var o=w();return I(F,i({},e,{dragIcon:o.dragIcon}))};var N=["dragIcon","uidFieldKey","onDragChange","disabledDrag","formListCompleteName","formListName"];var P=function s(u){var f,v;var g=u.dragIcon,j=u.uidFieldKey,y=u.onDragChange,x=u.disabledDrag,b=u.formListCompleteName,h=u.formListName,k=r(u,N);var w=b||h;var _=c.useFormInstance();var F=c.useWatch(w,_);var P=e(o(n,{activationConstraint:{delay:0,tolerance:0}}));var L=function r(i){var e=i.active,o=i.over;if(e.id!==(o==null?void 0:o.id)){var n=F.findIndex((function(r){return r[j]===e.id}));var t=F.findIndex((function(r){return r[j]===(o==null?void 0:o.id)}));var a=l(F,n,t);_.setFields([{name:w,value:a}]);y==null?void 0:y(a,{activeId:e.id,overId:o==null?void 0:o.id,activeIndex:n,overIndex:t})}};var z=x?k.columns:[{dataIndex:"__sort",width:40,key:"__sort",align:"center"}].concat(k.columns||[]);return I(C,{value:{dragIcon:g,uidFieldKey:j},children:I(t,{sensors:P,modifiers:[a],onDragEnd:L,children:I(d,{items:(F==null?void 0:F.map((function(r){return r[j]})))||[],strategy:m,children:I(p,i({},k,{formListName:h,uidFieldKey:j,columns:z,tableProps:i({},k.tableProps,{components:i({},(f=k.tableProps)==null?void 0:f.components,{body:i({},(v=k.tableProps)==null||(v=v.components)==null?void 0:v.body,{row:x?undefined:D})})})}))})})})};export{P as DragEditableTablePro};
|
|
16
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-editable-table-pro/context.ts","@flatbiz/antd/src/drag-editable-table-pro/table-tr-handle.tsx","@flatbiz/antd/src/drag-editable-table-pro/row.tsx","@flatbiz/antd/src/drag-editable-table-pro/drag.tsx"],"sourcesContent":["import { createCtx } from '@wove/react';\nimport { type ReactElement } from 'react';\n\nexport const [getCtx, CtxProvider] = createCtx<{\n dragIcon?: ReactElement;\n uidFieldKey: string;\n}>();\n","import { DragOutlined } from '@ant-design/icons';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { isUndefinedOrNull, noop } from '@flatbiz/utils';\nimport { type RowProps } from 'antd';\nimport { Children, cloneElement, type ReactElement } from 'react';\nimport { IconWrapper } from '../icon-wrapper';\n\ntype TableTrHandleProps = RowProps & {\n dragIcon?: ReactElement;\n};\nexport const TableTrHandle = (props: TableTrHandleProps) => {\n const { dragIcon, ...innerProps } = props;\n const rowId = innerProps['data-row-key'] as number;\n\n const { setActivatorNodeRef, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: rowId,\n });\n\n if (isUndefinedOrNull(rowId)) {\n return <tr {...innerProps} />;\n }\n const style: React.CSSProperties = {\n ...innerProps.style,\n transform: CSS.Transform.toString(transform && { ...transform, scaleY: 1 }),\n transition,\n cursor: 'move',\n ...(isDragging\n ? {\n position: 'relative',\n zIndex: 9999,\n boxShadow: ' 0px 0px 12px 4px rgba(34, 33, 81, 0.1)',\n backgroundColor: 'var(--block-bg-color)',\n }\n : {}),\n };\n const iconElement = dragIcon || <DragOutlined />;\n return (\n <tr {...innerProps} ref={setNodeRef} style={style} key={rowId}>\n {Children.map(props.children, (child) => {\n if ((child as React.ReactElement).key === '__sort') {\n return cloneElement(child as React.ReactElement, {\n children: (\n <span\n ref={setActivatorNodeRef}\n style={{\n touchAction: 'none',\n cursor: 'move',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n {...listeners}\n >\n <IconWrapper\n style={{\n touchAction: 'none',\n cursor: 'move',\n padding: '1px 0px',\n margin: 0,\n justifyContent: 'center',\n color: '#787878',\n }}\n icon={iconElement}\n onClick={noop}\n size=\"small\"\n />\n </span>\n ),\n });\n }\n return child;\n })}\n </tr>\n );\n};\n","import { getCtx } from './context';\nimport { TableTrHandle } from './table-tr-handle';\n\nexport const Row = (props) => {\n const ctx = getCtx();\n return <TableTrHandle {...props} dragIcon={ctx.dragIcon} />;\n};\n","import { DndContext, PointerSensor, useSensor, useSensors, type DragEndEvent } from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { type TPlainObject } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { type ReactElement } from 'react';\nimport { EditableTablePro, EditableTableProProps } from '../editable-table-pro';\nimport { EditableTableProColumnItem } from '../editable-table-pro/type';\nimport { CtxProvider } from './context';\nimport { Row } from './row';\n\nexport type DragEditableTableProProps = EditableTableProProps & {\n /**\n * 拖拽图标自定义,默认使用 DragOutlined 图标\n */\n dragIcon?: ReactElement;\n\n /** 禁用拖拽 */\n disabledDrag?: boolean;\n /**\n * 表格数据唯一值字段Key\n * ```\n * ```\n */\n uidFieldKey: string;\n /**\n * 拖拽结束事件\n * ```\n * dataSource: 拖拽完成后的数据源\n * dragData\n * 1. activeId 拖拽ID\n * 2. activeIndex 拖拽起始表格数组索引值\n * 3. overIndex 拖拽结束表格数组索引值\n * ```\n */\n onDragChange?: (\n dataSource: TPlainObject[],\n dragData: {\n activeId: string | number;\n overId?: string | number;\n activeIndex: number;\n overIndex: number;\n },\n ) => void;\n};\n\n/**\n * 可拖拽编辑表格\n * ```\n * 1. 表格数据必须有唯一值字段,通过参数 uidFieldKey 告诉组件\n * 2. Table 参数 components.body.row 被组件内部使用\n * 3. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 4. 存在多级的情况下,通过上移、下移操作按钮,调用 column.render.operation.move 方法实现同一级内移动\n * ```\n */\nexport const DragEditableTablePro = (props: DragEditableTableProProps) => {\n const {\n dragIcon,\n uidFieldKey,\n onDragChange,\n disabledDrag,\n formListCompleteName,\n formListName,\n ...otherProps\n } = props;\n\n const formListCompleteNameFt = formListCompleteName || formListName;\n\n const form = Form.useFormInstance();\n const dataList = Form.useWatch(formListCompleteNameFt, form);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n // 当拖拽触发区域有其他点击事件时,需要延迟触发拖拽动作\n delay: 0,\n tolerance: 0,\n },\n }),\n );\n\n const onDragEnd = ({ active, over }: DragEndEvent) => {\n if (active.id !== over?.id) {\n const activeIndex = dataList.findIndex((i) => i[uidFieldKey] === active.id);\n const overIndex = dataList.findIndex((i) => i[uidFieldKey] === over?.id);\n const dataListNew = arrayMove(dataList, activeIndex, overIndex);\n form.setFields([\n {\n name: formListCompleteNameFt,\n value: dataListNew,\n },\n ]);\n onDragChange?.(dataListNew as TPlainObject[], {\n activeId: active.id,\n overId: over?.id,\n activeIndex,\n overIndex,\n });\n }\n };\n\n const columns: EditableTableProColumnItem[] = disabledDrag\n ? otherProps.columns\n : [\n {\n dataIndex: '__sort',\n width: 40,\n key: '__sort',\n align: 'center',\n } as EditableTableProColumnItem,\n ].concat(otherProps.columns || []);\n\n return (\n <CtxProvider\n value={{\n dragIcon,\n uidFieldKey,\n }}\n >\n <DndContext sensors={sensors} modifiers={[restrictToVerticalAxis]} onDragEnd={onDragEnd}>\n <SortableContext\n items={dataList?.map((i) => i[uidFieldKey]) || []}\n strategy={verticalListSortingStrategy}\n >\n <EditableTablePro\n {...otherProps}\n formListName={formListName}\n uidFieldKey={uidFieldKey}\n columns={columns}\n tableProps={{\n ...otherProps.tableProps,\n components: {\n ...otherProps.tableProps?.components,\n body: {\n ...otherProps.tableProps?.components?.body,\n row: disabledDrag ? undefined : Row,\n },\n },\n }}\n />\n </SortableContext>\n </DndContext>\n </CtxProvider>\n );\n};\n"],"names":["_createCtx","_createCtx2","getCtx","CtxProvider","TableTrHandle","props","dragIcon","innerProps","_objectWithoutPropertiesLoose","_excluded","rowId","_useSortable","useSortable","id","setActivatorNodeRef","listeners","setNodeRef","transform","transition","isDragging","isUndefinedOrNull","_jsx","_extends","style","CSS","Transform","toString","scaleY","cursor","position","zIndex","boxShadow","backgroundColor","iconElement","_DragOutlined","_createElement","ref","key","Children","map","children","child","cloneElement","touchAction","display","alignItems","justifyContent","IconWrapper","padding","margin","color","icon","onClick","noop","size","Row","ctx","DragEditableTablePro","_otherProps$tableProp","_otherProps$tableProp2","uidFieldKey","onDragChange","disabledDrag","formListCompleteName","formListName","otherProps","formListCompleteNameFt","form","Form","useFormInstance","dataList","useWatch","sensors","useSensors","useSensor","PointerSensor","activationConstraint","delay","tolerance","onDragEnd","_ref","active","over","activeIndex","findIndex","i","overIndex","dataListNew","arrayMove","setFields","name","value","activeId","overId","columns","dataIndex","width","align","concat","DndContext","modifiers","restrictToVerticalAxis","SortableContext","items","strategy","verticalListSortingStrategy","EditableTablePro","tableProps","components","body","row","undefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-editable-table-pro/context.ts","@flatbiz/antd/src/drag-editable-table-pro/table-tr-handle.tsx","@flatbiz/antd/src/drag-editable-table-pro/row.tsx","@flatbiz/antd/src/drag-editable-table-pro/drag.tsx"],"sourcesContent":["import { createCtx } from '@wove/react';\nimport { type ReactElement } from 'react';\n\nexport const [getCtx, CtxProvider] = createCtx<{\n dragIcon?: ReactElement;\n uidFieldKey: string;\n}>();\n","import { DragOutlined } from '@ant-design/icons';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { isUndefinedOrNull, noop } from '@flatbiz/utils';\nimport { type RowProps } from 'antd';\nimport { Children, cloneElement, type ReactElement } from 'react';\nimport { IconWrapper } from '../icon-wrapper';\n\ntype TableTrHandleProps = RowProps & {\n dragIcon?: ReactElement;\n};\nexport const TableTrHandle = (props: TableTrHandleProps) => {\n const { dragIcon, ...innerProps } = props;\n const rowId = innerProps['data-row-key'] as number;\n\n const { setActivatorNodeRef, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: rowId,\n });\n\n if (isUndefinedOrNull(rowId)) {\n return <tr {...innerProps} />;\n }\n const style: React.CSSProperties = {\n ...innerProps.style,\n transform: CSS.Transform.toString(transform && { ...transform, scaleY: 1 }),\n transition,\n cursor: 'move',\n ...(isDragging\n ? {\n position: 'relative',\n zIndex: 9999,\n boxShadow: ' 0px 0px 12px 4px rgba(34, 33, 81, 0.1)',\n backgroundColor: 'var(--block-bg-color)',\n }\n : {}),\n };\n const iconElement = dragIcon || <DragOutlined />;\n return (\n <tr {...innerProps} ref={setNodeRef} style={style} key={rowId}>\n {Children.map(props.children, (child) => {\n if ((child as React.ReactElement).key === '__sort') {\n return cloneElement(child as React.ReactElement, {\n children: (\n <span\n ref={setActivatorNodeRef}\n style={{\n touchAction: 'none',\n cursor: 'move',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n {...listeners}\n >\n <IconWrapper\n style={{\n touchAction: 'none',\n cursor: 'move',\n padding: '1px 0px',\n margin: 0,\n justifyContent: 'center',\n color: '#787878',\n }}\n icon={iconElement}\n onClick={noop}\n size=\"small\"\n />\n </span>\n ),\n });\n }\n return child;\n })}\n </tr>\n );\n};\n","import { getCtx } from './context';\nimport { TableTrHandle } from './table-tr-handle';\n\nexport const Row = (props) => {\n const ctx = getCtx();\n return <TableTrHandle {...props} dragIcon={ctx.dragIcon} />;\n};\n","import { DndContext, PointerSensor, useSensor, useSensors, type DragEndEvent } from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { type TPlainObject } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { type ReactElement } from 'react';\nimport { EditableTablePro, EditableTableProProps } from '../editable-table-pro';\nimport { EditableTableProColumnItem } from '../editable-table-pro/type';\nimport { CtxProvider } from './context';\nimport { Row } from './row';\n\nexport type DragEditableTableProProps = EditableTableProProps & {\n /**\n * 拖拽图标自定义,默认使用 DragOutlined 图标\n */\n dragIcon?: ReactElement;\n\n /** 禁用拖拽 */\n disabledDrag?: boolean;\n /**\n * 表格数据唯一值字段Key\n * ```\n * ```\n */\n uidFieldKey: string;\n /**\n * 拖拽结束事件\n * ```\n * dataSource: 拖拽完成后的数据源\n * dragData\n * 1. activeId 拖拽ID\n * 2. activeIndex 拖拽起始表格数组索引值\n * 3. overIndex 拖拽结束表格数组索引值\n * ```\n */\n onDragChange?: (\n dataSource: TPlainObject[],\n dragData: {\n activeId: string | number;\n overId?: string | number;\n activeIndex: number;\n overIndex: number;\n },\n ) => void;\n};\n\n/**\n * 可拖拽编辑表格\n * ```\n * 1. 表格数据必须有唯一值字段,通过参数 uidFieldKey 告诉组件\n * 2. Table 参数 components.body.row 被组件内部使用\n * 3. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 4. 存在多级的情况下,通过上移、下移操作按钮,调用 column.render.operation.move 方法实现同一级内移动\n * ```\n */\nexport const DragEditableTablePro = (props: DragEditableTableProProps) => {\n const {\n dragIcon,\n uidFieldKey,\n onDragChange,\n disabledDrag,\n formListCompleteName,\n formListName,\n ...otherProps\n } = props;\n\n const formListCompleteNameFt = formListCompleteName || formListName;\n\n const form = Form.useFormInstance();\n const dataList = Form.useWatch(formListCompleteNameFt, form);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n // 当拖拽触发区域有其他点击事件时,需要延迟触发拖拽动作\n delay: 0,\n tolerance: 0,\n },\n }),\n );\n\n const onDragEnd = ({ active, over }: DragEndEvent) => {\n if (active.id !== over?.id) {\n const activeIndex = dataList.findIndex((i) => i[uidFieldKey] === active.id);\n const overIndex = dataList.findIndex((i) => i[uidFieldKey] === over?.id);\n const dataListNew = arrayMove(dataList, activeIndex, overIndex);\n form.setFields([\n {\n name: formListCompleteNameFt,\n value: dataListNew,\n },\n ]);\n onDragChange?.(dataListNew as TPlainObject[], {\n activeId: active.id,\n overId: over?.id,\n activeIndex,\n overIndex,\n });\n }\n };\n\n const columns: EditableTableProColumnItem[] = disabledDrag\n ? otherProps.columns\n : [\n {\n dataIndex: '__sort',\n width: 40,\n key: '__sort',\n align: 'center',\n } as EditableTableProColumnItem,\n ].concat(otherProps.columns || []);\n\n return (\n <CtxProvider\n value={{\n dragIcon,\n uidFieldKey,\n }}\n >\n <DndContext sensors={sensors} modifiers={[restrictToVerticalAxis]} onDragEnd={onDragEnd}>\n <SortableContext\n items={dataList?.map((i) => i[uidFieldKey]) || []}\n strategy={verticalListSortingStrategy}\n >\n <EditableTablePro\n {...otherProps}\n formListName={formListName}\n uidFieldKey={uidFieldKey}\n columns={columns}\n tableProps={{\n ...otherProps.tableProps,\n components: {\n ...otherProps.tableProps?.components,\n body: {\n ...otherProps.tableProps?.components?.body,\n row: disabledDrag ? undefined : Row,\n },\n },\n }}\n />\n </SortableContext>\n </DndContext>\n </CtxProvider>\n );\n};\n"],"names":["_createCtx","_createCtx2","getCtx","CtxProvider","TableTrHandle","props","dragIcon","innerProps","_objectWithoutPropertiesLoose","_excluded","rowId","_useSortable","useSortable","id","setActivatorNodeRef","listeners","setNodeRef","transform","transition","isDragging","isUndefinedOrNull","_jsx","_extends","style","CSS","Transform","toString","scaleY","cursor","position","zIndex","boxShadow","backgroundColor","iconElement","_DragOutlined","_createElement","ref","key","Children","map","children","child","cloneElement","touchAction","display","alignItems","justifyContent","IconWrapper","padding","margin","color","icon","onClick","noop","size","Row","ctx","DragEditableTablePro","_otherProps$tableProp","_otherProps$tableProp2","uidFieldKey","onDragChange","disabledDrag","formListCompleteName","formListName","otherProps","formListCompleteNameFt","form","Form","useFormInstance","dataList","useWatch","sensors","useSensors","useSensor","PointerSensor","activationConstraint","delay","tolerance","onDragEnd","_ref","active","over","activeIndex","findIndex","i","overIndex","dataListNew","arrayMove","setFields","name","value","activeId","overId","columns","dataIndex","width","align","concat","DndContext","modifiers","restrictToVerticalAxis","SortableContext","items","strategy","verticalListSortingStrategy","EditableTablePro","tableProps","components","body","row","undefined"],"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{classNames as n}from"@dimjs/utils/cjs/class-names";import{isUndefined as t}from"@dimjs/lang/cjs/is-undefined";import{get as i}from"@dimjs/utils/cjs/get";import{_ as r,a as o}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isString as a}from"@dimjs/lang/cjs/is-string";import{isArray as l}from"@dimjs/lang/cjs/is-array";import{hooks as u}from"@wove/react/cjs/hooks";import{cloneState as s}from"@dimjs/model";import{Checkbox as c,Popover as d,Form as f,message as m,Drawer as p,Table as v}from"antd";import{createContext as g,useState as h,Fragment as y,forwardRef as C,useMemo as F,useRef as S,useImperativeHandle as x,cloneElement as b,useContext as R,Children as w,useEffect as j}from"react";import{noop as z,localStorageCache as q,isUndefinedOrNull as K,getUuid as P,isMacEnv as N}from"@flatbiz/utils";import{fbaHooks as k}from"../fba-hooks/index.js";import{PaginationWrapper as T}from"../pagination-wrapper/index.js";import{jsx as L,jsxs as I}from"react/jsx-runtime";import{Model as _}from"@dimjs/model-react";import D from"@ant-design/icons/es/icons/DownOutlined";import O from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as V}from"react-is";import{BlockLayout as E}from"../block-layout/index.js";import{ButtonWrapper as A}from"../button-wrapper/index.js";import{EasyForm as B}from"../easy-form/index.js";import{FormGrid as M}from"../form-grid/index.js";import{TableScrollbar as W}from"../table-scrollbar/index.js";import{FlexLayout as U}from"../flex-layout/index.js";import{IconWrapper as G}from"../icon-wrapper/index.js";import{SvgHttpView as H}from"../svg-http-view/index.js";import{TableTitleTooltip as Q}from"../table-title-tooltip/index.js";import{TipsWrapper as Y}from"../tips-wrapper/index.js";import"../use-responsive-point-21b8c601.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";import"../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 $=g({onRequest:z,tableList:[],getEasyTableRef:function e(){}});var J=function e(n){var t=h(n.initSelectedRowKeys||[]),i=t[0],r=t[1];var o=function e(t){r(t);n.onChange(t);if(n.cacheKey){q.set("easy_tab_"+n.cacheKey,{keys:t})}};var a=L(y,{children:L(c.Group,{defaultValue:i,onChange:o,value:i,style:{display:"flex",flexDirection:"column"},children:n.dataList.map((function(e){var n=e["_isFoldTitle"]||e.title;return L(c,{value:e.dataIndex,style:{padding:"0 0 5px 0"},children:n},e.dataIndex)}))})});var l=function e(t){if(t.target.checked){o(n.dataList.map((function(e){return e.dataIndex})))}else{o([])}};return L(d,{content:a,title:L(c,{checked:i.length===n.dataList.length,onChange:l,children:"全选(字段列表)"}),placement:"bottomRight",overlayClassName:"fold-operate-popiver",children:n.children})};var X={queryCondition:{},isInit:true};var Z={actions:{updateFilterCondition:function e(n){return function(e){e.queryCondition=r({},e.queryCondition,n)}},resetFilterCondition:function e(n){return function(e){e.queryCondition=r({},X.queryCondition,n)}},updateInitStatus:function e(){return function(e){e.isInit=false}}},state:X};var ee={};var ne=function e(n){if(!ee[n]){ee[n]=_(Z)}return ee[n]};var te=C((function(o,c){var d;var p=h(),v=p[0],g=p[1];var y=h(0),C=y[0],R=y[1];var w=h(false),j=w[0],z=w[1];var K=u.useId(undefined,"easy-table-key");var P=o.columnFoldConfig;var N=o.asyncColumnRequest;var _=h(false),D=_[0],O=_[1];var V=h((function(){if(P!=null&&P.cacheKey){var e;var n=q.get("easy_tab_"+P.cacheKey);var t=l(n==null?void 0:n.keys)?n==null||(e=n.keys)==null?void 0:e.filter((function(e){return a(e)})):[];return t.length>0?t:(P==null?void 0:P.initSelectedKeys)||[]}else{return(P==null?void 0:P.initSelectedKeys)||[]}})),E=V[0],A=V[1];var B=F((function(){if(o.cacheSwitch===true){return location.pathname}if(typeof o.cacheSwitch==="string"){return o.cacheSwitch}return K}),[K,o.cacheSwitch]);var M=ne(B).useStore(),W=M[0],U=M[1];var G=o.pageSize||((d=o.initialPaginationParams)==null?void 0:d.pageSize)||10;var H=o.initRequest===undefined?true:o.initRequest;var Q=S(false);var Y=S();var X=S([]);var Z=h(),ee=Z[0],te=Z[1];var ie=S([]);var re=r({list:"list",total:"total",pageNo:"pageNo",pageSize:"pageSize"},o.fieldNames);var oe=f.useForm(o.form),ae=oe[0];var le=u.useCallbackRef((function(n){return new Promise((function(t,r){var a,u,c,d,f,p,v,h,y,C,F,S;var x=function(){try{return t()}catch(e){return r(e)}};var b=function(e){try{z(false);if(o.onRequestErrorHandle){o.onRequestErrorHandle(e)}else{void m.error(e.message)}return x()}catch(e){return r(e)}};try{if(o.breforeRequest){var w=function(){try{return q.call(this)}catch(e){return b(e)}}.bind(this);var j=function(e){try{return t()}catch(e){return b(e)}};try{return Promise.resolve(o.breforeRequest(ae)).then((function(e){try{return w()}catch(e){return j(e)}}),j)}catch(K){j(K)}}function q(){z(true);return Promise.resolve(U.updateFilterCondition(n)).then((function(n){try{a=n;u=s(a.queryCondition||{});c=o.serviceConfig,d=c.requestParamsAdapter,f=c.onRequest,p=c.requestResultAdapter,v=c.dynamicColumsAdapter;h=d?d(u):u;return Promise.resolve(f(e.removeFormValuesInvalidField(h))).then((function(e){try{y=e||{};Y.current=y;o.onDataSourceChange==null?void 0:o.onDataSourceChange(y);C=y;if(p){C=p(y)}if(v){F=v(y,X.current);te(F)}S=i(C,re.list);g(l(S)?S:[]);R(i(C,re.total));z(false);return x()}catch(e){return b(e)}}),b)}catch(e){return b(e)}}),b)}return q.call(this)}catch(P){b(P)}}))}));k.useEffectCustom((function(){var e=we();if(H!==false||!W.isInit){if(e){var n;void le(r((n={},n[re.pageNo]=1,n[re.pageSize]=G,n),o.initialValues,W.queryCondition))}else{void le(o.initialValues)}}else{void U.updateFilterCondition(o.initialValues)}void U.updateInitStatus()}),[]);var ue=u.useCallbackRef((function(e){return new Promise((function(n,t){return Promise.resolve(U.resetFilterCondition()).then((function(i){try{ae.resetFields();if(e){void U.updateFilterCondition(e);ae.setFieldsValue(e)}return n()}catch(e){return t(e)}}),t)}))}));var se=u.useCallbackRef((function(e){return new Promise((function(n,t){return Promise.resolve(U.updateFilterCondition(e)).then((function(i){try{ae.setFieldsValue(e);return n()}catch(e){return t(e)}}),t)}))}));var ce=function e(n,t){if(we()){var i;return i={},i[re.pageNo]=n,i[re.pageSize]=t||G,i}else{var r;return r={},r[re.pageNo]=undefined,r[re.pageSize]=undefined,r}};var de=u.useCallbackRef((function(e){return new Promise((function(n,t){var i;i=r({},ce(1,W.queryCondition[re.pageSize]),o.initialValues,e);return Promise.resolve(U.resetFilterCondition(i)).then((function(r){try{ae.resetFields();if(e){ae.setFieldsValue(e)}void le(i);return n()}catch(e){return t(e)}}),t)}))}));var fe=u.useCallbackRef((function(){return r({},W.queryCondition,ae.getFieldsValue())}));var me=u.useCallbackRef((function(){O(true)}));var pe=u.useCallbackRef((function(){O(false)}));var ve=function e(){return{onRequest:le,clearQueryCondition:ue,updateQueryCondition:se,getRequestParams:fe,onResetRequest:de,form:ae,dataSource:Y.current,getDataSource:function e(){return Y.current},onFilterDataSource:function e(n){g(n)},onClearDataSource:function e(){R(0);g([])},onUpdateDataSource:function e(n){g(n);Y.current=n;o.onDataSourceChange==null?void 0:o.onDataSourceChange(n)},columnFoldTriggerRender:function e(n){var t;if(((t=o.columnFoldConfig)==null?void 0:t.triggerType)==="drawer"){return b(n,{onClick:me})}var i=ie.current.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));return L(J,{dataList:i,onChange:be,cacheKey:P==null?void 0:P.cacheKey,initSelectedRowKeys:E,children:n})},onChangeTableColumns:function e(n){te(n)},getTableColumns:function e(){return ie.current},loading:j}};x(c,(function(){return ve()}));var ge=function e(n){Q.current=n};var he=function e(n){X.current=n};var ye=function e(n){ie.current=n};var Ce=function e(){var n=ae.getFieldsValue();if(o.onFormFinish){o.onFormFinish(r({},n,ce(1,W.queryCondition[re.pageSize])))}else{void le(r({},n,ce(1,W.queryCondition[re.pageSize])))}};var Fe=t(o.isFull)?true:o.isFull;var Se=n("fba-easy-table",{"fba-easy-table-full":Fe,"fba-easy-table-filter-fixed":o.filterFixed,"fba-easy-table-pagination-fixed":o.paginationFixed},o.className);var xe=F((function(){return r({showSizeChanger:true,current:W.queryCondition[re.pageNo]||1,pageSize:W.queryCondition[re.pageSize]||G,total:C,showTotal:function e(n){return"共 "+n+" 条记录"}},o.pagination)}),[re.pageNo,re.pageSize,G,o.pagination,W.queryCondition,C]);var be=function e(n){A(n);P==null||P.onChange==null?void 0:P.onChange(n)};var Re=u.useCallbackRef((function(e,n){var t,i;void le((t={},t[re.pageSize]=n,t[re.pageNo]=e,t));(i=o.pagination)==null||i.onChange==null?void 0:i.onChange(e,n)}));var we=function e(){return o.paginationFixed||Q.current};u.useUpdateEffect((function(){if(o.paginationFixed){var e;void le((e={},e[re.pageSize]=W.queryCondition[re.pageSize]||G,e[re.pageNo]=1,e))}else{var n;void le((n={},n[re.pageSize]=undefined,n[re.pageNo]=undefined,n))}}),[o.paginationFixed]);var je=n("fba-easy-table-wrapper",{"fba-easy-table-wrapper-inline":o.isInline},o.className);var ze=r({overflowY:o.filterFixed||o.paginationFixed?"hidden":"auto"},o.style);var qe=typeof o.children==="function"?o.children(Y.current):o.children;return L($.Provider,{value:{onSetBaseColumns:he,onSetColumns:ye,getEasyTableRef:ve,modelKey:B,onRequest:le,tableDataSource:v,tableTotal:C,loading:j,fieldNames:re,pageSize:G,onSetPaginationStatus:ge,getPaginationStatus:we,onFormFinish:Ce,form:ae,paginationFixed:o.paginationFixed||false,foldKeys:o.foldKeys||[],columns:ee,initialValues:o.initialValues,dynamicColumnsConfig:{showFoldKeyList:E,onChangeShowFoldKeyList:be,columnFoldConfig:P,onOpenColumnFoldModal:me,onCloseColumnFoldModal:pe,columnFoldOpen:D,asyncColumnRequest:N}},children:o.paginationFixed?I("div",{className:je,style:ze,children:[L("div",{className:Se,children:qe}),C>0&&L("div",{className:"fba-easy-table-pagination",children:L(T,r({size:"small"},xe,{onChange:Re}))})]}):L("div",{className:je,style:o.style,children:qe})})}));var ie=function e(i){var o=k.useResponsivePoint()||"md";var a=R($);var l=i.queryButtonProps,s=i.resetButtonProps,c=i.filterOperate,d=i.formClassName,f=d===void 0?"":d,m=i.defaultResetButtonTriggerRequest,p=i.filterWrapperStyle,v=i.filterWrapperClassName,g=i.rightOperateAreaAppendType,y=i.easyFormProps;var C=a.modelKey,S=a.foldKeys,x=a.fieldNames,b=a.onRequest,j=a.pageSize,z=a.getPaginationStatus,q=a.initialValues,K=a.form,P=a.onFormFinish;var N=typeof i.children==="function"?i.children(K):i.children;var T=g||"cover";var _=F((function(){if(V(N)){return w.toArray(N.props.children)}else{return w.toArray(N)}}),[N]);var W=h(false),U=W[0],G=W[1];var H=ne(C).useStore(),Q=H[0],Y=H[1];var J=u.useCallbackRef((function(){return new Promise((function(e,n){var i;return Promise.resolve(Y.resetFilterCondition()).then(function(o){try{K.resetFields();if(t(m)||m){return Promise.resolve(K.validateFields()).then(function(e){try{if(z()){b(r((i={},i[x.pageNo]=1,i[x.pageSize]=j,i),q))}else{b(q)}return a.call(this)}catch(e){return n(e)}}.bind(this),n)}function a(){return e()}return a.call(this)}catch(l){return n(l)}}.bind(this),n)}))}));var X=F((function(){var e=[!(l!=null&&l.hidden)?L(A,r({type:"primary",htmlType:"submit"},l,{children:(l==null?void 0:l.text)||"查询"}),"1"):null,!(s!=null&&s.hidden)?L(A,r({onClick:J},s,{children:(s==null?void 0:s.text)||"重置"}),"2"):null].filter(Boolean);var n=c==null?void 0:c(K);var t=n==null?void 0:n.rightList;var i=(n==null?void 0:n.leftList)||[];var o=e;if(t){if(T==="afterAppend"){o=[].concat(e,t)}else if(T==="beforeAppend"){o=[].concat(t,e)}else{o=t}}if(S.length>0){var a=L(A,{type:"link",style:{padding:"0"},onClick:function e(){G(!U)},children:U?I("span",{children:["收起",L(O,{style:{marginLeft:3,fontSize:12}})]}):I("span",{children:["展开",L(D,{style:{marginLeft:3,fontSize:12}})]})},"fold-trigger");if(o.length>0||i.length===0){o.push(a)}else if((i==null?void 0:i.length)>0){i.push(a)}}return _.map((function(e,n){if(!U&&S.find((function(n){return".$"+n===e.key})))return null;if(e.props["hidden"])return null;if(e.type["domTypeName"]==="FormCol")return e;return L(M.Col,{children:e},n)})).filter(Boolean).concat(L(M.OperateCol,r({},n,{leftList:i,rightList:o}),999))}),[_,c,S,K,J,U,l,s,T]);var Z=o==="xs"?"left":(y==null?void 0:y.labelAlign)||"right";return L(E,{className:n("easy-table-filter",v),style:p,children:L(B,r({form:K,autoComplete:"off",onFinish:P,initialValues:r({},q,Q.queryCondition),className:f,style:i.formStyle,isPure:true,labelWidth:"80",formItemGap:"15"},y,{labelAlign:Z,children:i.isPure?N:L(M.Row,{gutter:[15,0],gridSize:i.formGridSize,children:X})}))})};var re=function e(){var n=R($);return n.getEasyTableRef()};var oe=function e(){var n=R($);return{current:n.getEasyTableRef()}};var ae=function e(n){var t=h(n.initSelectedRowKeys||[]),i=t[0],r=t[1];var o={type:"checkbox",selectedRowKeys:i,onChange:function e(t){r(t);n.onChange(t);if(n.cacheKey){q.set("easy_tab_"+n.cacheKey,{keys:t})}}};var a=[{title:"字段名称",dataIndex:"title",render:function e(n,t){return t["_isFoldTitle"]||n}},{title:"字段Key",dataIndex:"dataIndex"}];return L(y,{children:L(p,{title:"选择字段",open:n.open,onClose:n.onClose,width:"35%",styles:{body:{padding:15}},children:L(v,{bordered:true,size:"small",columns:a,rowSelection:o,rowKey:"dataIndex",pagination:false,scroll:{x:"max-content"},dataSource:n.dataList})})})};var le=["tooltip","tipsWrapperProps","title"];var ue=function e(n){return F((function(){var e=n.columns.map((function(e){var n=e.tooltip,t=e.tipsWrapperProps,i=e.title,a=o(e,le);if(typeof i==="string"&&t){if(typeof t==="string"){return r({},a,{title:L(Y,{tipType:"popover",popoverProps:{content:t},children:i})})}return r({},a,{title:L(Y,r({},t,{children:i}))})}if(typeof i==="string"&&!!n){return r({},a,{title:L(Q,{tooltip:n,title:i})})}return e})).filter(Boolean);return[].concat(e)}),[n.columns])};var se=function e(n){var t=n.columns;return k.useMemoCustom((function(){var e;if((e=n.columnFoldConfig)!=null&&e.hidden)return t;var i=t[t.length-1];if(n.foldColumnList.length>0&&t.length>0){var r=t.find((function(e){return e["_isFoldColumn"]}));if(r&&i.dataIndex!==r.dataIndex){r.title=r["_isFoldTitle"];r["_isFoldColumn"]=false}if(!i["_isFoldColumn"]){var o,a,l,u,s,c,d;i["_isFoldTitle"]=i["_isFoldTitle"]||i.title;i["_isFoldColumn"]=true;var f=(o=n.columnFoldConfig)==null?void 0:o.triggerType;i.title=I(U,{direction:"horizontal",fullIndex:0,style:{alignItems:"center"},children:[L("span",{children:i.title}),L("div",{style:{padding:"0 5px 0 20px",display:"flex"},children:f==="drawer"?L(G,{onClick:n.onOpenColumnFoldModal,text:(a=n.columnFoldConfig)==null?void 0:a.text,size:"small",icon:((l=n.columnFoldConfig)==null?void 0:l.icon)||L(H,{svgPath:"ionic/list-circle",color:"#868686"}),hoverTips:((u=n.columnFoldConfig)==null?void 0:u.hoverTipText)||"字段列表",style:{padding:0,margin:0}}):L(J,{dataList:n.foldColumnList,onChange:n.onChangeFoldColumnList,cacheKey:(s=n.columnFoldConfig)==null?void 0:s.cacheKey,initSelectedRowKeys:n.showFoldKeyList,children:L(G,{text:(c=n.columnFoldConfig)==null?void 0:c.text,style:{padding:0,margin:0},size:"small",icon:((d=n.columnFoldConfig)==null?void 0:d.icon)||L(H,{svgPath:"ionic/list-circle",color:"#868686"})})})})]})}}return t}),[n.columns,n.columnFoldConfig])};var ce=function e(n){return F((function(){var e=n.columns.map((function(e){var t=e.hidden,i=e.isFold;if(t)return null;if(i&&!n.showFoldKeyList.includes(e.dataIndex))return null;return e})).filter(Boolean);return[].concat(e)}),[n.columns,n.showFoldKeyList])};var de=function e(n){return F((function(){if(!Object.keys(n.asyncColumnRequestResult))return n.columns;return n.columns.map((function(e){var t=e.dataIndex;var i=n.asyncColumnRequestResult[t];if(t&&i){if(i.loading){e.render=function(e){return L(A,{loading:true,type:"text",loadingPosition:"center",removeGap:true,children:e})}}else if(e.asyncRender){e.render=function(n,t,r){return e.asyncRender==null?void 0:e.asyncRender(n,t,r,i.respData)}}}return e}))}),[n.columns,n.asyncColumnRequestResult])};var fe=["children","rowKey","pagination","isSync"];var me=function e(t){var i=R($);var a=t.children,l=t.rowKey,s=t.pagination,c=t.isSync,d=o(t,fe);var f=S({});var m=h({}),p=m[0],g=m[1];var C=i.dynamicColumnsConfig,x=C.columnFoldConfig,b=C.onCloseColumnFoldModal,w=C.columnFoldOpen,z=C.onOpenColumnFoldModal,q=C.asyncColumnRequest,T=C.showFoldKeyList,_=C.onChangeShowFoldKeyList;var D=i.modelKey,O=i.fieldNames,V=i.onRequest,A=i.tableDataSource,B=i.pageSize,M=i.tableTotal,U=i.loading,G=i.paginationFixed,H=i.onSetPaginationStatus;var Q=ne(D).useStore(),Y=Q[0];k.useEffectCustom((function(){i.onSetBaseColumns(t.columns||[])}),[]);j((function(){if(q!=null&&q.length){var e=function e(){var t;var i=q[n];f.current=r({},f.current,(t={},t[i.dataIndex]={loading:true},t));g(f.current);i.onRequest().then((function(e){var n;f.current=r({},f.current,(n={},n[i.dataIndex]={loading:false,respData:e},n));g(f.current)})).catch((function(e){var n;console.error(e==null?void 0:e.message);f.current=r({},f.current,(n={},n[i.dataIndex]={loading:false},n));g(f.current)}))};for(var n=0;n<q.length;n++){e()}}}),[q]);var J=F((function(){if(i.columns){i.onSetColumns(i.columns);return i.columns}else{i.onSetColumns(t.columns);return t.columns}}),[i.columns,t.columns]);var X=ue({columns:[].concat(J)});var Z=J.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));X=se({columns:X,foldColumnList:Z,showFoldKeyList:T,columnFoldConfig:x,onOpenColumnFoldModal:z,onChangeFoldColumnList:_});X=ce({columns:X,showFoldKeyList:T});X=de({columns:X,asyncColumnRequestResult:p});k.useEffectCustom((function(){H(s!==false)}),[s]);u.useUpdateEffect((function(){if(!G){if(s!==false){var e;V((e={},e[O.pageSize]=Y.queryCondition[O.pageSize]||B,e[O.pageNo]=1,e))}else{var n;V((n={},n[O.pageSize]=undefined,n[O.pageNo]=undefined,n))}}}),[s]);var ee=F((function(){if(G||s===false)return false;return r({showSizeChanger:true,current:Y.queryCondition[O.pageNo]||1,pageSize:Y.queryCondition[O.pageSize]||B,total:M,showTotal:function e(n){return"共 "+n+" 条记录"}},t.pagination)}),[O.pageNo,O.pageSize,B,s,G,t.pagination,Y.queryCondition,M]);var te=function e(n,i,r,o){if(o.action==="paginate"&&ee){var a;V((a={},a[O.pageSize]=n.pageSize,a[O.pageNo]=n.current,a))}else{t.onChange==null?void 0:t.onChange(n,i,r,o)}};var ie=F((function(){if(!A)return undefined;if(A.length===0){return[]}if(typeof l==="string"&&K(A[0][l])){return A.map((function(e){e[l]=P();return e}))}return A}),[A,l]);var re=function e(){if(c&&!ie){return I(y,{children:[a,L(v,{size:"small",scroll:{x:"max-content"},bordered:true,rowKey:l,columns:X,loading:U},"1")]})}if(N()){return I(y,{children:[a,L(v,r({size:"small",scroll:{x:"max-content"},bordered:true},d,{columns:X,pagination:ee,rowKey:l,onChange:te,loading:U,dataSource:ie}),"2")]})}return I(y,{children:[a,L(W,{children:L(v,r({size:"small",scroll:{x:"max-content"},bordered:true},d,{columns:X,pagination:ee,rowKey:l,onChange:te,loading:U,dataSource:ie}),"3")})]})};return I(E,{className:n("easy-table-table",{"ett-empty-show-small":t.emptyShowSize==="small"},t.tableWrapperClassName),style:t.tableWrapperStyle,children:[re(),L(ae,{dataList:Z,onClose:b,open:w,onChange:_,cacheKey:x==null?void 0:x.cacheKey,initSelectedRowKeys:T})]})};var pe=e.attachPropertiesToComponent(te,{Filter:ie,Table:me,useEasyTablRef:oe,useEasyTable:re});export{pe 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-a0769acd.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 b}from"antd";import{createContext as S,useState as x,Fragment as R,forwardRef as j,useMemo as w,useRef as z,useImperativeHandle as K,cloneElement as _,useContext as N,Children as T,useEffect as L}from"react";import{fbaHooks as P}from"../fba-hooks/index.js";import{PaginationWrapper as q}from"../pagination-wrapper/index.js";import{jsx as k,jsxs as I}from"react/jsx-runtime";import V from"@ant-design/icons/es/icons/DownOutlined";import D from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as E}from"react-is";import{BlockLayout as O}from"../block-layout/index.js";import{ButtonWrapper as A}from"../button-wrapper/index.js";import{EasyForm as B}from"../easy-form/index.js";import{FormGrid as M}from"../form-grid/index.js";import{TableScrollbar as W}from"../table-scrollbar/index.js";import{FlexLayout as Q}from"../flex-layout/index.js";import{IconWrapper as U}from"../icon-wrapper/index.js";import{SvgHttpView as G}from"../svg-http-view/index.js";import{TableTitleTooltip as H}from"../table-title-tooltip/index.js";import{TipsWrapper as Y}from"../tips-wrapper/index.js";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";import"../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 $={set:function e(n,t){var i=$.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 J={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 X={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 Z=S({onRequest:l,tableList:[],getEasyTableRef:function e(){}});var ee=function e(n){var t=x(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a=function e(t){i(t);n.onChange(t);if(n.cacheKey){X.set(n.cacheKey,t)}};var o=k(R,{children:k(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 k(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 k(h,{content:o,title:k(g,{checked:r.length===n.dataList.length,onChange:l,children:"全选(字段列表)"}),placement:"bottomRight",overlayClassName:"fold-operate-popiver",children:n.children})};var ne=j((function(t,i){var a;var o=x(),l=o[0],u=o[1];var c=x(0),g=c[0],h=c[1];var F=x(false),b=F[0],S=F[1];var R=t.columnFoldConfig;var j=t.asyncColumnRequest;var N=x(false),T=N[0],L=N[1];var V=w((function(){if(t.cacheKey)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=x((function(){if(V){var e=X.get(V);var t=n(e)?e.filter((function(e){return v(e)})):[];return t.length>0?t:(R==null?void 0:R.initSelectedKeys)||[]}else{return(R==null?void 0:R.initSelectedKeys)||[]}})),E=D[0],O=D[1];var A=t.pageSize||((a=t.initialPaginationParams)==null?void 0:a.pageSize)||10;var B=t.initRequest===undefined?true:t.initRequest;var M=z(false);var W=z();var Q=z([]);var U=x(),G=U[0],H=U[1];var Y=z([]);var ne=r({list:"list",total:"total",pageNo:"pageNo",pageSize:"pageSize"},t.fieldNames);var te=y.useForm(t.form),re=te[0];var ie=p.useCallbackRef((function(r){return new Promise((function(i,a){var o,l,s,c,d,f,p,v,g,y,F;var b=function(){try{return i()}catch(e){return a(e)}};var x=function(e){try{S(false);if(t.onRequestErrorHandle){t.onRequestErrorHandle(e)}else{void C.error(e.message)}return b()}catch(e){return a(e)}};try{if(t.breforeRequest){var R=function(){try{return w.call(this)}catch(e){return x(e)}}.bind(this);var j=function(e){try{return i()}catch(e){return x(e)}};try{return Promise.resolve(t.breforeRequest(re)).then((function(e){try{return R()}catch(e){return j(e)}}),j)}catch(z){j(z)}}function w(){J.set(V,false);S(true);o=$.set(V,r);l=t.serviceConfig,s=l.requestParamsAdapter,c=l.onRequest,d=l.requestResultAdapter,f=l.dynamicColumsAdapter;p=s?s(o):o;return Promise.resolve(c(e.removeFormValuesInvalidField(p))).then((function(e){try{v=e||{};W.current=v;t.onDataSourceChange==null?void 0:t.onDataSourceChange(v);g=v;if(d){g=d(v)}if(f){y=f(v,Q.current);H(y)}F=m(g,ne.list);u(n(F)?F:[]);h(m(g,ne.total));S(false);return b()}catch(e){return x(e)}}),x)}return w.call(this)}catch(K){x(K)}}))}));P.useEffectCustom((function(){var e=Se();var n=J.get(V);var i=$.get(V);re.setFieldsValue(r({},t.initialValues,i));if(B||!n){if(e){var a;void ie(r((a={},a[ne.pageNo]=1,a[ne.pageSize]=A,a),t.initialValues,i))}else{void ie(t.initialValues)}}else{$.set(V,t.initialValues||{})}}),[]);var ae=p.useCallbackRef((function(e){$.remove(V);re.resetFields();if(e){$.set(V,e);re.setFieldsValue(e)}}));var oe=p.useCallbackRef((function(e){$.set(V,e);re.setFieldsValue(e)}));var le=function e(n,t){if(Se()){var r;return r={},r[ne.pageNo]=n,r[ne.pageSize]=t||A,r}else{var i;return i={},i[ne.pageNo]=undefined,i[ne.pageSize]=undefined,i}};var se=p.useCallbackRef((function(e){var n=$.get(V);var i=r({},le(1,n[ne.pageSize]),t.initialValues,e);$.remove(V);re.resetFields();if(e){re.setFieldsValue(e)}void ie(i)}));var ue=p.useCallbackRef((function(){var e=$.get(V);return r({},e,re.getFieldsValue())}));var ce=p.useCallbackRef((function(){L(true)}));var de=p.useCallbackRef((function(){L(false)}));var fe=function e(){return{onRequest:ie,clearQueryCondition:ae,updateQueryCondition:oe,getRequestParams:ue,onResetRequest:se,form:re,dataSource:W.current,getDataSource:function e(){return W.current},onFilterDataSource:function e(n){u(n)},onClearDataSource:function e(){h(0);u([])},onUpdateDataSource:function e(n){u(n);W.current=n;t.onDataSourceChange==null?void 0:t.onDataSourceChange(n)},columnFoldTriggerRender:function e(n,r){var i;if(((i=t.columnFoldConfig)==null?void 0:i.triggerType)==="drawer"){return _(n,{onClick:ce})}var a=r.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));return k(ee,{dataList:a,onChange:Fe,cacheKey:V,initSelectedRowKeys:E,children:n})},onChangeTableColumns:function e(n){H(n)},getTableColumns:function e(){return Y.current},loading:b,setEnabledInitRequest:function e(){J.set(V,false)}}};K(i,(function(){return fe()}));var me=function e(n){M.current=n};var pe=function e(n){Q.current=n};var ve=function e(n){Y.current=n};var ge=function e(){var n=re.getFieldsValue();var i=$.get(V);if(t.onFormFinish){t.onFormFinish(r({},n,le(1,i[ne.pageSize])))}else{void ie(r({},n,le(1,i[ne.pageSize])))}};var he=f(t.isFull)?true:t.isFull;var ye=d("fba-easy-table",{"fba-easy-table-full":he,"fba-easy-table-filter-fixed":t.filterFixed,"fba-easy-table-pagination-fixed":t.paginationFixed},t.className);var Ce=w((function(){var e=$.get(V);return r({showSizeChanger:true,current:e[ne.pageNo]||1,pageSize:e[ne.pageSize]||A,total:g,showTotal:function e(n){return"共 "+n+" 条记录"}},t.pagination)}),[ne.pageNo,ne.pageSize,V,A,t.pagination,g]);var Fe=function e(n){O(n);R==null||R.onChange==null?void 0:R.onChange(n)};var be=p.useCallbackRef((function(e,n){var r,i;void ie((r={},r[ne.pageSize]=n,r[ne.pageNo]=e,r));(i=t.pagination)==null||i.onChange==null?void 0:i.onChange(e,n)}));var Se=function e(){return t.paginationFixed||M.current};p.useUpdateEffect((function(){var e=$.get(V);if(t.paginationFixed){var n;void ie((n={},n[ne.pageSize]=e[ne.pageSize]||A,n[ne.pageNo]=1,n))}else{var r;void ie((r={},r[ne.pageSize]=undefined,r[ne.pageNo]=undefined,r))}}),[t.paginationFixed]);var xe=d("fba-easy-table-wrapper",{"fba-easy-table-wrapper-inline":t.isInline},t.className);var Re=r({overflowY:t.filterFixed||t.paginationFixed?"hidden":"auto"},t.style);var je=typeof t.children==="function"?t.children(W.current):t.children;return k(Z.Provider,{value:{onSetBaseColumns:pe,onSetColumns:ve,getEasyTableRef:fe,cacheKey:V,onRequest:ie,tableDataSource:l,tableTotal:g,loading:b,fieldNames:ne,pageSize:A,onSetPaginationStatus:me,getPaginationStatus:Se,onFormFinish:ge,form:re,paginationFixed:t.paginationFixed||false,foldKeys:t.foldKeys||[],columns:G,initialValues:t.initialValues,dynamicColumnsConfig:{showFoldKeyList:E,onChangeShowFoldKeyList:Fe,columnFoldConfig:R,onOpenColumnFoldModal:ce,onCloseColumnFoldModal:de,columnFoldOpen:T,asyncColumnRequest:j}},children:t.paginationFixed?I("div",{className:xe,style:Re,children:[k("div",{className:ye,children:je}),g>0&&k("div",{className:"fba-easy-table-pagination",children:k(q,r({size:"small"},Ce,{onChange:be}))})]}):k("div",{className:xe,style:t.style,children:je})})}));var te=function e(n){var t=P.useResponsivePoint()||"md";var i=N(Z);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,b=i.onRequest,S=i.pageSize,R=i.getPaginationStatus,j=i.initialValues,z=i.form,K=i.onFormFinish;var _=typeof n.children==="function"?n.children(z):n.children;var L=g||"cover";var q=w((function(){if(E(_)){return T.toArray(_.props.children)}else{return T.toArray(_)}}),[_]);var W=x(false),Q=W[0],U=W[1];var G=p.useCallbackRef((function(){return new Promise((function(e,n){var t;$.remove(y);z.resetFields();z.setFieldsValue(j);if(f(c)||c){return Promise.resolve(z.validateFields()).then(function(e){try{if(R()){b(r((t={},t[F.pageNo]=1,t[F.pageSize]=S,t),j))}else{b(j)}return i.call(this)}catch(e){return n(e)}}.bind(this),n)}function i(){return e()}return i.call(this)}))}));var H=w((function(){var e=[!(a!=null&&a.hidden)?k(A,r({type:"primary",htmlType:"submit"},a,{children:(a==null?void 0:a.text)||"查询"}),"1"):null,!(o!=null&&o.hidden)?k(A,r({onClick:G},o,{children:(o==null?void 0:o.text)||"重置"}),"2"):null].filter(Boolean);var n=l==null?void 0:l(z);var t=n==null?void 0:n.rightList;var i=(n==null?void 0:n.leftList)||[];var s=e;if(t){if(L==="afterAppend"){s=[].concat(e,t)}else if(L==="beforeAppend"){s=[].concat(t,e)}else{s=t}}if(C.length>0){var u=k(A,{type:"link",style:{padding:"0"},onClick:function e(){U(!Q)},children:Q?I("span",{children:["收起",k(D,{style:{marginLeft:3,fontSize:12}})]}):I("span",{children:["展开",k(V,{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 q.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 k(M.Col,{children:e},n)})).filter(Boolean).concat(k(M.OperateCol,r({},n,{leftList:i,rightList:s}),999))}),[q,l,C,z,G,Q,a,o,L]);var Y=t==="xs"?"left":(h==null?void 0:h.labelAlign)||"right";return k(O,{className:d("easy-table-filter",v),style:m,children:k(B,r({form:z,autoComplete:"off",onFinish:K,className:u,style:n.formStyle,isPure:true,labelWidth:"80",formItemGap:"15"},h,{labelAlign:Y,children:n.isPure?_:k(M.Row,{gutter:[15,0],gridSize:n.formGridSize,children:H})}))})};var re=function e(){var n=N(Z);return n.getEasyTableRef()};var ie=function e(){var n=N(Z);return{current:n.getEasyTableRef()}};var ae=function e(n){var t=x(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){X.set(n.cacheKey,t)}}};var o=[{title:"字段名称",dataIndex:"title",render:function e(n,t){return t["_isFoldTitle"]||n}},{title:"字段Key",dataIndex:"dataIndex"}];return k(R,{children:k(F,{title:"选择字段",open:n.open,onClose:n.onClose,width:"35%",styles:{body:{padding:15}},children:k(b,{bordered:true,size:"small",columns:o,rowSelection:a,rowKey:"dataIndex",pagination:false,scroll:{x:"max-content"},dataSource:n.dataList})})})};var oe=["tooltip","tipsWrapperProps","title"];var le=function e(n){return w((function(){var e=n.columns.map((function(e){var n=e.tooltip,t=e.tipsWrapperProps,a=e.title,o=i(e,oe);if(typeof a==="string"&&t){if(typeof t==="string"){return r({},o,{title:k(Y,{tipType:"popover",popoverProps:{content:t},children:a})})}return r({},o,{title:k(Y,r({},t,{children:a}))})}if(typeof a==="string"&&!!n){return r({},o,{title:k(H,{tooltip:n,title:a})})}return e})).filter(Boolean);return[].concat(e)}),[n.columns])};var se=function e(n){var t=n.columns;return P.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=I(Q,{direction:"horizontal",fullIndex:0,style:{alignItems:"center"},children:[k("span",{children:r.title}),k("div",{style:{padding:"0 5px 0 20px",display:"flex"},children:d==="drawer"?k(U,{onClick:n.onOpenColumnFoldModal,text:(o=n.columnFoldConfig)==null?void 0:o.text,size:"small",icon:((l=n.columnFoldConfig)==null?void 0:l.icon)||k(G,{svgPath:"ionic/list-circle",color:"#868686"}),hoverTips:((s=n.columnFoldConfig)==null?void 0:s.hoverTipText)||"字段列表",style:{padding:0,margin:0}}):k(ee,{dataList:n.foldColumnList,onChange:n.onChangeFoldColumnList,cacheKey:n.cacheKey,initSelectedRowKeys:n.showFoldKeyList,children:k(U,{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)||k(G,{svgPath:"ionic/list-circle",color:"#868686"})})})})]})}}return t}),[n.columns,n.columnFoldConfig])};var ue=function e(n){return w((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 ce=function e(n){return w((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 k(A,{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 de=["children","rowKey","pagination","isSync"];var fe=function e(n){var t=N(Z);var a=n.children,o=n.rowKey,l=n.pagination,f=n.isSync,m=i(n,de);var v=z({});var g=x({}),h=g[0],y=g[1];var C=t.dynamicColumnsConfig,F=C.columnFoldConfig,S=C.onCloseColumnFoldModal,j=C.columnFoldOpen,K=C.onOpenColumnFoldModal,_=C.asyncColumnRequest,T=C.showFoldKeyList,q=C.onChangeShowFoldKeyList;var V=t.cacheKey,D=t.fieldNames,E=t.onRequest,A=t.tableDataSource,B=t.pageSize,M=t.tableTotal,Q=t.loading,U=t.paginationFixed,G=t.onSetPaginationStatus;var H=$.get(V);P.useEffectCustom((function(){t.onSetBaseColumns(n.columns||[])}),[]);L((function(){if(_!=null&&_.length){var e=function e(){var t;var i=_[n];v.current=r({},v.current,(t={},t[i.dataIndex]={loading:true},t));y(v.current);i.onRequest().then((function(e){var n;v.current=r({},v.current,(n={},n[i.dataIndex]={loading:false,respData:e},n));y(v.current)})).catch((function(e){var n;console.error(e==null?void 0:e.message);v.current=r({},v.current,(n={},n[i.dataIndex]={loading:false},n));y(v.current)}))};for(var n=0;n<_.length;n++){e()}}}),[_]);var Y=P.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 J=le({columns:[].concat(Y)});var X=Y.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));J=se({cacheKey:V,columns:J,foldColumnList:X,showFoldKeyList:T,columnFoldConfig:F,onOpenColumnFoldModal:K,onChangeFoldColumnList:q});J=ue({columns:J,showFoldKeyList:T});J=ce({columns:J,asyncColumnRequestResult:h});P.useEffectCustom((function(){G(l!==false)}),[l]);p.useUpdateEffect((function(){if(!U){if(l!==false){var e;E((e={},e[D.pageSize]=H[D.pageSize]||B,e[D.pageNo]=1,e))}else{var n;E((n={},n[D.pageSize]=undefined,n[D.pageNo]=undefined,n))}}}),[l]);var ee=w((function(){if(U||l===false)return false;return r({showSizeChanger:true,current:H[D.pageNo]||1,pageSize:H[D.pageSize]||B,total:M,showTotal:function e(n){return"共 "+n+" 条记录"}},n.pagination)}),[H,D.pageNo,D.pageSize,B,l,U,n.pagination,M]);var ne=function e(t,r,i,a){if(a.action==="paginate"&&ee){var o;E((o={},o[D.pageSize]=t.pageSize,o[D.pageNo]=t.current,o))}else{n.onChange==null?void 0:n.onChange(t,r,i,a)}};var te=w((function(){if(!A)return undefined;if(A.length===0){return[]}if(typeof o==="string"&&u(A[0][o])){return A.map((function(e){e[o]=s();return e}))}return A}),[A,o]);var re=function e(){if(f&&!te){return I(R,{children:[a,k(b,{size:"small",scroll:{x:"max-content"},bordered:true,rowKey:o,columns:J,loading:Q},"1")]})}if(c()){return I(R,{children:[a,k(b,r({size:"small",scroll:{x:"max-content"},bordered:true},m,{columns:J,pagination:ee,rowKey:o,onChange:ne,loading:Q,dataSource:te}),"2")]})}return I(R,{children:[a,k(W,{children:k(b,r({size:"small",scroll:{x:"max-content"},bordered:true},m,{columns:J,pagination:ee,rowKey:o,onChange:ne,loading:Q,dataSource:te}),"3")})]})};return I(O,{className:d("easy-table-table",{"ett-empty-show-small":n.emptyShowSize==="small"},n.tableWrapperClassName),style:n.tableWrapperStyle,children:[re(),k(ae,{dataList:X,onClose:S,open:j,onChange:q,cacheKey:V,initSelectedRowKeys:T})]})};var me=e.attachPropertiesToComponent(ne,{Filter:te,Table:fe,useEasyTablRef:ie,useEasyTable:re,setEnabledInitRequest:function e(n){J.set(n,false)}});export{me as EasyTable};
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate-dropdown.tsx","@flatbiz/antd/src/easy-table/model.ts","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/hooks/columns.tsx","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { 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 modelKey: 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 { localStorageCache } from '@flatbiz/utils';\nimport { Checkbox, Popover } from 'antd';\nimport { Fragment, useState, type CSSProperties, type ReactElement } from 'react';\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 localStorageCache.set(`easy_tab_${props.cacheKey}`, { keys: keys });\n }\n };\n\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import { type API, type ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { type TAny, type TPlainObject } from '@flatbiz/utils';\n\nexport type ModelState = {\n queryCondition: TPlainObject;\n isInit: boolean;\n};\n\ntype ModelActionParams = {\n updateFilterCondition?: Partial<ModelState['queryCondition']>;\n resetFilterCondition?: TPlainObject;\n updateInitStatus: void;\n};\n\nconst defaultState: ModelState = {\n queryCondition: {},\n isInit: true,\n};\n\nconst _EasyTableModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n updateFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...state.queryCondition,\n ...params,\n };\n };\n },\n resetFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...defaultState.queryCondition,\n ...params,\n };\n };\n },\n updateInitStatus: () => {\n return (state) => {\n state.isInit = false;\n };\n },\n },\n state: defaultState,\n};\n\nconst easyTableModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const easyTableModel = (key: string) => {\n if (!easyTableModels[key]) {\n easyTableModels[key] = Model(_EasyTableModel);\n }\n return easyTableModels[key];\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\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 { localStorageCache, 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';\nimport { EasyTableContext } from './context';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport { easyTableModel } from './model';\nimport './style.less';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const easyTableId = hooks.useId(undefined, 'easy-table-key');\n const columnFoldConfig = props.columnFoldConfig;\n const asyncColumnRequest = props.asyncColumnRequest;\n\n const [columnFoldOpen, setColumnFoldOpen] = useState(false);\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (columnFoldConfig?.cacheKey) {\n const cacheValue = localStorageCache.get(`easy_tab_${columnFoldConfig.cacheKey}`);\n const cacheKeyList = isArray(cacheValue?.keys)\n ? (cacheValue?.keys?.filter((item) => isString(item)) as string[])\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const modelKey = useMemo(() => {\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return easyTableId;\n }, [easyTableId, props.cacheSwitch]);\n\n const [state, actions] = easyTableModel(modelKey).useStore();\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 setLoading(true);\n const allState = await actions.updateFilterCondition(params);\n const queryCondition = cloneState(allState.queryCondition || {});\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(queryCondition) : queryCondition;\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 if (initRequest !== false || !state.isInit) {\n if (hasPagination) {\n void onInnerRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...props.initialValues,\n ...state.queryCondition,\n });\n } else {\n void onInnerRequest(props.initialValues);\n }\n } else {\n void actions.updateFilterCondition(props.initialValues);\n }\n void actions.updateInitStatus();\n }, []);\n\n const clearQueryCondition = hooks.useCallbackRef(async (values?: TPlainObject) => {\n await actions.resetFilterCondition();\n form.resetFields();\n if (values) {\n void actions.updateFilterCondition(values);\n form.setFieldsValue(values);\n }\n });\n\n const updateQueryCondition = hooks.useCallbackRef(async (values: TPlainObject) => {\n await actions.updateFilterCondition(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(async (values?: TPlainObject) => {\n const params = {\n ...getPaginationData(1, state.queryCondition[fieldNames.pageSize]),\n ...props.initialValues,\n ...values,\n };\n await actions.resetFilterCondition(params);\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 ...state.queryCondition,\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 = () => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n dataSource: respOriginalDataRef.current,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = dataList;\n props.onDataSourceChange?.(dataList);\n },\n columnFoldTriggerRender: (children) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n const foldColumnList = columnsRef.current.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as TAny[]}\n onChange={onChangeFoldColumnList}\n cacheKey={columnFoldConfig?.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 };\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, state.queryCondition[fieldNames.pageSize]),\n });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, state.queryCondition[fieldNames.pageSize]),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': props.filterFixed,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = useMemo(() => {\n return {\n showSizeChanger: true,\n current: state.queryCondition[fieldNames.pageNo] || 1,\n pageSize: state.queryCondition[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, fieldNames.pageSize, pageSize, props.pagination, state.queryCondition, total]);\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n void onInnerRequest({\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n });\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: state.queryCondition[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 modelKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: dynamicColumns,\n initialValues: props.initialValues,\n dynamicColumnsConfig: {\n showFoldKeyList,\n onChangeShowFoldKeyList: onChangeFoldColumnList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onCloseColumnFoldModal,\n columnFoldOpen,\n asyncColumnRequest,\n },\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n {children}\n </div>\n )}\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { type FormInstance } from 'antd';\nimport { Children, useContext, useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { EasyTableContext } from './context';\nimport { easyTableModel } from './model';\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 modelKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\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 [state, actions] = easyTableModel(modelKey).useStore();\n\n const onReset = hooks.useCallbackRef(async () => {\n await actions.resetFilterCondition();\n form.resetFields();\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={{\n ...initialValues,\n ...state.queryCondition,\n }}\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 { localStorageCache, 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';\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 localStorageCache.set(`easy_tab_${props.cacheKey}`, {\n keys: selectedRowKeys,\n });\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 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.columnFoldConfig?.cacheKey}\n initSelectedRowKeys={props.showFoldKeyList}\n >\n <IconWrapper\n text={props.columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return columnsNew;\n }, [props.columns, props.columnFoldConfig]);\n};\n\nexport const useColumnsToHidden = (props: { columns: TPlainObject[]; showFoldKeyList: string[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { hidden, isFold } = item;\n if (hidden) return null;\n if (isFold && !props.showFoldKeyList.includes(item.dataIndex as string)) return null;\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns, props.showFoldKeyList]);\n};\n\nexport const useColumnByAsyncColumnRequest = (props: {\n columns: TPlainObject[];\n asyncColumnRequestResult: TPlainObject;\n}) => {\n return useMemo(() => {\n if (!Object.keys(props.asyncColumnRequestResult)) return props.columns;\n return props.columns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = props.asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [props.columns, props.asyncColumnRequestResult]);\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Table, type TableProps } from 'antd';\nimport {\n Fragment,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n} from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport {\n useColumnByAsyncColumnRequest,\n useColumnsAppendInnerColumn,\n useColumnsAppendTips,\n useColumnsToHidden,\n} from './hooks/columns';\nimport { easyTableModel } from './model';\nimport { type TEasyTableTableColumn } from './type';\n\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns'\n> & {\n children?: ReactElement | ReactElement[];\n /**\n * 表格行 key 的取值,\n * ```\n * 如果 rowKey 为string类型\n * 1. 组件会判断表格列表数据第一条是否存在当前rowKey对象的数据,如果没有组件内部会动态添加唯一值\n * 2. 基于上一条的逻辑,如果表格数据没有唯一值,可指定 rowKey 值为table数据中不存在的字段名,例如:rowKey=\"_uid\"\n * 3. 如果触发上述逻辑,表格数据中会多出rowKey对应的键值对数据\n * ```\n */\n rowKey: TableProps<TAny>['rowKey'];\n /** table Form 外层 SimpleLayout className */\n tableWrapperStyle?: CSSProperties;\n /** table Form 外层 SimpleLayout className */\n tableWrapperClassName?: string;\n /**\n * ```\n * 1. 当配置了 EasyTable.serviceConfig.dynamicColumsAdapter 后,columns配置只在初始化有效,再次修改无效\n * 2. 可通过 EasyTableRef.onChangeTableColumns 实现 columns 的指定修改\n * ```\n */\n columns: TEasyTableTableColumn<T>[];\n /**\n * 数据加载与表格初始化渲染 是否同步\n * @version 4.4.6\n * ```\n * 1. true:获取数据后再初始化渲染表格(可用于实现表格中defaultXxxx相关功能的使用)\n * ```\n */\n isSync?: boolean;\n /**\n * 空效果显示尺寸,默认值:small\n * @version 4.4.6\n */\n emptyShowSize?: 'small' | 'large';\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\nexport const EasyTableTable = <T extends TPlainObject>(props: EasyTableTableProps<T>) => {\n const ctx = useContext(EasyTableContext);\n const { children, rowKey, pagination, isSync, ...otherProps } = props;\n\n const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n\n const {\n columnFoldConfig,\n onCloseColumnFoldModal,\n columnFoldOpen,\n onOpenColumnFoldModal,\n asyncColumnRequest,\n showFoldKeyList,\n onChangeShowFoldKeyList,\n } = ctx.dynamicColumnsConfig;\n\n const {\n modelKey,\n fieldNames,\n onRequest,\n tableDataSource,\n pageSize,\n tableTotal,\n loading,\n paginationFixed,\n onSetPaginationStatus,\n } = ctx;\n const [state] = easyTableModel(modelKey).useStore();\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 = useMemo(() => {\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 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]: state.queryCondition[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: state.queryCondition[fieldNames.pageNo] || 1,\n pageSize: state.queryCondition[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n // selectComponentClass: SmallSelect,\n };\n }, [\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n state.queryCondition,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (pagination, filters, sorter, extra) => {\n if (extra.action === 'paginate' && tablePaginationData) {\n onRequest({\n [fieldNames.pageSize]: pagination.pageSize,\n [fieldNames.pageNo]: pagination.current,\n });\n } else {\n props.onChange?.(pagination, filters, sorter, extra);\n }\n };\n\n const dataSource = useMemo(() => {\n if (!tableDataSource) return undefined;\n if (tableDataSource.length === 0) {\n return [];\n }\n if (typeof rowKey === 'string' && isUndefinedOrNull(tableDataSource[0][rowKey])) {\n return tableDataSource.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableDataSource;\n }, [tableDataSource, rowKey]);\n\n const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"1\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n rowKey={rowKey as TAny}\n columns={columnsNew}\n loading={loading}\n />\n </Fragment>\n );\n }\n if (isMacEnv()) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"2\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </Fragment>\n );\n }\n return (\n <Fragment>\n {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeShowFoldKeyList}\n cacheKey={columnFoldConfig?.cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\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"],"names":["EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperateDropdown","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","onChange","keys","cacheKey","localStorageCache","set","content","_jsx","Fragment","children","Checkbox","Group","defaultValue","value","style","display","flexDirection","dataList","map","item","label","title","dataIndex","padding","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","defaultState","queryCondition","isInit","_EasyTableModel","actions","updateFilterCondition","params","state","_extends","resetFilterCondition","updateInitStatus","easyTableModels","easyTableModel","key","Model","EasyTable","forwardRef","ref","_props$initialPaginat","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","easyTableId","_hooks","useId","undefined","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","_useState5","_cacheValue$keys","cacheValue","get","cacheKeyList","_isArray","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","modelKey","useMemo","cacheSwitch","location","pathname","_easyTableModel$useSt","useStore","pageSize","initialPaginationParams","initRequest","paginationStatusRef","useRef","respOriginalDataRef","baseColumnsRef","_useState6","dynamicColumns","setDynamicColumns","columnsRef","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","useCallbackRef","Promise","$return","$error","allState","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_1_Post","$boundEx","$Try_1_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_2_Post","$If_3","call","this","bind","$Try_2_Catch","_error","resolve","then","$await_4","$await_5","cloneState","serviceConfig","fbaUtils","removeFormValuesInvalidField","$await_6","current","onDataSourceChange","_get","fbaHooks","useEffectCustom","hasPagination","getPaginationStatus","_extends2","initialValues","clearQueryCondition","values","$await_7","resetFields","setFieldsValue","updateQueryCondition","$await_8","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","$await_9","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","columnFoldTriggerRender","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","hidden","isFold","onChangeFoldColumnList","onChangeTableColumns","columns","getTableColumns","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onSetColumns","onFormFinish","isFull","_isUndefined","className","_classNames","filterFixed","paginationFixed","paginationData","showSizeChanger","showTotal","pagination","keyList","page","_onInnerRequest","_props$pagination","useUpdateEffect","_onInnerRequest2","_onInnerRequest3","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","dynamicColumnsConfig","onChangeShowFoldKeyList","_jsxs","PaginationWrapper","size","EasyTableFilter","screenType","useResponsivePoint","ctx","useContext","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","onReset","$await_2","validateFields","$await_3","$If_1","formRowChildren","defaultRightList","ButtonWrapper","type","htmlType","text","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","index","find","keyItem","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","FoldOperate","rowSelection","render","recrd","Drawer","open","onClose","width","styles","body","Table","bordered","rowKey","scroll","x","useColumnsAppendTips","tempList","tooltip","tipsWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","TipsWrapper","tipType","popoverProps","TableTitleTooltip","useColumnsAppendInnerColumn","columnsNew","useMemoCustom","finalItem","foldColumnTarget","_props$columnFoldConf2","_props$columnFoldConf3","_props$columnFoldConf4","_props$columnFoldConf5","_props$columnFoldConf6","_props$columnFoldConf7","_props$columnFoldConf8","FlexLayout","direction","fullIndex","alignItems","IconWrapper","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","useColumnsToHidden","includes","useColumnByAsyncColumnRequest","Object","asyncColumnRequestResult","result","loadingPosition","removeGap","asyncRender","record","EasyTableTable","isSync","asyncColumnRequestResultRef","setAsyncColumnRequestResult","_ctx$dynamicColumnsCo","useEffect","_loop","element","_extends3","catch","_extends4","console","columnsOriginal","_onRequest","_onRequest2","tablePaginationData","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","getUuid","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/cache.ts","@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate-dropdown.tsx","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/hooks/columns.tsx","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { isArray, isObject } from '@dimjs/lang';\nimport { localStorageCache, sessionStorageCache, TPlainObject } from '@flatbiz/utils';\n\nexport const filterCache = {\n set: (cacheKey: string, filterCondition: TPlainObject) => {\n const value = filterCache.get(cacheKey);\n const mergeParams = {\n ...value,\n ...filterCondition,\n };\n sessionStorageCache.set(`easy_tab_filter_${cacheKey}`, mergeParams);\n return mergeParams as TPlainObject;\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_filter_${cacheKey}`) as TPlainObject;\n return isObject(value) ? value : {};\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_filter_${cacheKey}`);\n },\n};\n\nexport const firstQueryCache = {\n set: (cacheKey: string, flag: boolean) => {\n sessionStorageCache.set(`easy_tab_firstQuery_${cacheKey}`, { value: flag });\n },\n get: (cacheKey: string) => {\n const value = sessionStorageCache.get(`easy_tab_firstQuery_${cacheKey}`)?.value;\n return value === false ? false : true;\n },\n remove: (cacheKey: string) => {\n sessionStorageCache.remove(`easy_tab_firstQuery_${cacheKey}`);\n },\n};\n\nexport const columnFoldCache = {\n set: (cacheKey: string, value: string[]) => {\n localStorageCache.set(`easy_tab_columnFold_${cacheKey}`, { value });\n },\n get: (cacheKey: string) => {\n const value = localStorageCache.get(`easy_tab_columnFold_${cacheKey}`)?.value;\n return isArray(value) ? (value as string[]) : [];\n },\n remove: (cacheKey: string) => {\n localStorageCache.remove(`easy_tab_columnFold_${cacheKey}`);\n },\n};\n","import { noop, type TPlainObject } from '@flatbiz/utils';\nimport { type FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport type EditableFieldContextContextApi = {\n cacheKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableDataSource?: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initialValues?: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n getPaginationStatus: () => boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n onSetBaseColumns: (baseColumns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n onSetColumns: (columns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n columns?: TEasyTableTableColumn<TPlainObject>[];\n dynamicColumnsConfig: {\n showFoldKeyList: string[];\n onChangeShowFoldKeyList: (keys: string[]) => void;\n columnFoldOpen: boolean;\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onCloseColumnFoldModal: () => void;\n asyncColumnRequest?: EasyTableProps['asyncColumnRequest'];\n };\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { Checkbox, Popover } from 'antd';\nimport { Fragment, useState, type CSSProperties, type ReactElement } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex: string; title: string }[];\n onChange: (keys: string[]) => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n children?: ReactElement;\n};\n\nexport const FoldOperateDropdown = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n\n const onChange = (keys) => {\n setSelectedRowKeys(keys);\n props.onChange(keys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, keys);\n }\n };\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { classNames, get } from '@dimjs/utils';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\n\nimport { getUuid, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { PaginationWrapper } from '../pagination-wrapper';\n\nimport { columnFoldCache, filterCache, firstQueryCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport './style.less';\nimport { type EasyTableProps, type EasyTableRefApi, type TEasyTableTableColumn } from './type';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const columnFoldConfig = props.columnFoldConfig;\n const asyncColumnRequest = props.asyncColumnRequest;\n\n const [columnFoldOpen, setColumnFoldOpen] = useState(false);\n\n const cacheKey = useMemo(() => {\n if (props.cacheKey) return props.cacheKey;\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return getUuid();\n }, [props.cacheSwitch, props.cacheKey]);\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (cacheKey) {\n const columnFoldCacheValue = columnFoldCache.get(cacheKey);\n const cacheKeyList = isArray(columnFoldCacheValue)\n ? columnFoldCacheValue.filter((item) => isString(item))\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const paginationStatusRef = useRef(false);\n const respOriginalDataRef = useRef<TAny>();\n const baseColumnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n const [dynamicColumns, setDynamicColumns] = useState<TEasyTableTableColumn<TPlainObject>[]>();\n\n const columnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n\n const fieldNames = {\n list: 'list',\n total: 'total',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm(props.form);\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n if (props.breforeRequest) {\n try {\n await props.breforeRequest(form);\n } catch (_error) {\n return;\n }\n }\n firstQueryCache.set(cacheKey, false);\n setLoading(true);\n const paramsAll = filterCache.set(cacheKey, params);\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(paramsAll) : paramsAll;\n const respData = (await onRequest(fbaUtils.removeFormValuesInvalidField(paramsNew))) || {};\n respOriginalDataRef.current = respData;\n props.onDataSourceChange?.(respData);\n let respDataNew: TPlainObject = respData;\n if (requestResultAdapter) {\n respDataNew = requestResultAdapter(respData);\n }\n if (dynamicColumsAdapter) {\n const dynamicColumns = dynamicColumsAdapter(respData, baseColumnsRef.current);\n /** 不要添加默认值 */\n setDynamicColumns(dynamicColumns);\n }\n const respList = get(respDataNew, fieldNames.list);\n setDataSource(isArray(respList) ? respList : []);\n setTotal(get(respDataNew, fieldNames.total));\n setLoading(false);\n } catch (error: any) {\n setLoading(false);\n if (props.onRequestErrorHandle) {\n props.onRequestErrorHandle(error);\n } else {\n void message.error(error.message);\n }\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = getPaginationStatus();\n const firstQueryFlag = firstQueryCache.get(cacheKey);\n const cacheParams = filterCache.get(cacheKey);\n form.setFieldsValue({\n ...props.initialValues,\n ...cacheParams,\n });\n if (initRequest || !firstQueryFlag) {\n if (hasPagination) {\n void onInnerRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...props.initialValues,\n ...cacheParams,\n });\n } else {\n void onInnerRequest(props.initialValues);\n }\n } else {\n filterCache.set(cacheKey, props.initialValues || {});\n }\n }, []);\n\n const clearQueryCondition = hooks.useCallbackRef((values?: TPlainObject) => {\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n }\n });\n\n const updateQueryCondition = hooks.useCallbackRef((values: TPlainObject) => {\n filterCache.set(cacheKey, values);\n form.setFieldsValue(values);\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (getPaginationStatus()) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {\n [fieldNames.pageNo]: undefined,\n [fieldNames.pageSize]: undefined,\n };\n }\n };\n\n const onResetRequest = hooks.useCallbackRef((values?: TPlainObject) => {\n const cacheParams = filterCache.get(cacheKey);\n const params = {\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n ...props.initialValues,\n ...values,\n };\n filterCache.remove(cacheKey);\n form.resetFields();\n if (values) {\n form.setFieldsValue(values);\n }\n void onInnerRequest(params);\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n const cacheParams = filterCache.get(cacheKey);\n return {\n ...cacheParams,\n ...form.getFieldsValue(),\n };\n });\n\n const onOpenColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(true);\n });\n\n const onCloseColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(false);\n });\n\n const getEasyTableRef = (): EasyTableRefApi => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n dataSource: respOriginalDataRef.current,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = dataList;\n props.onDataSourceChange?.(dataList);\n },\n columnFoldTriggerRender: (children, columns: TEasyTableTableColumn<TPlainObject>[]) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n\n const foldColumnList = columns.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as { dataIndex: string; title: string }[]}\n onChange={onChangeFoldColumnList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n {children}\n </FoldOperateDropdown>\n );\n },\n onChangeTableColumns: (columns) => {\n setDynamicColumns(columns);\n },\n getTableColumns: () => {\n return columnsRef.current;\n },\n loading,\n setEnabledInitRequest: () => {\n firstQueryCache.set(cacheKey, false);\n },\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n paginationStatusRef.current = status;\n };\n\n const onSetBaseColumns = (base) => {\n baseColumnsRef.current = base;\n };\n\n const onSetColumns = (columns) => {\n columnsRef.current = columns;\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n const cacheParams = filterCache.get(cacheKey);\n if (props.onFormFinish) {\n props.onFormFinish({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, cacheParams[fieldNames.pageSize]),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': props.filterFixed,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = useMemo(() => {\n const cacheParams = filterCache.get(cacheKey);\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, fieldNames.pageSize, cacheKey, pageSize, props.pagination, total]);\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n void onInnerRequest({\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n });\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n const cacheParams = filterCache.get(cacheKey);\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n void onInnerRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }, [props.paginationFixed]);\n\n const wrapperClassName = classNames(\n 'fba-easy-table-wrapper',\n {\n 'fba-easy-table-wrapper-inline': props.isInline,\n },\n props.className,\n );\n\n const wrapperStyle: CSSProperties = {\n overflowY: props.filterFixed || props.paginationFixed ? 'hidden' : 'auto',\n ...props.style,\n };\n\n const children =\n typeof props.children === 'function' ? props.children(respOriginalDataRef.current) : props.children;\n\n return (\n <EasyTableContext.Provider\n value={{\n onSetBaseColumns,\n onSetColumns,\n getEasyTableRef,\n cacheKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: dynamicColumns,\n initialValues: props.initialValues,\n dynamicColumnsConfig: {\n showFoldKeyList,\n onChangeShowFoldKeyList: onChangeFoldColumnList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onCloseColumnFoldModal,\n columnFoldOpen,\n asyncColumnRequest,\n },\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n {children}\n </div>\n )}\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { type FormInstance } from 'antd';\nimport { Children, useContext, useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n /**\n * @deprecated已过期,使用 easyFormProps.className 配置\n */\n formClassName?: string;\n /**\n * @deprecated已过期,使用 easyFormProps.style 配置\n */\n formStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout style */\n filterWrapperStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout className */\n filterWrapperClassName?: string;\n /**\n * 自定义 filterOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n easyFormProps?: Omit<\n EasyFormProps,\n 'isPure' | 'column' | 'forceColumn' | 'width' | 'gridGutter' | 'children'\n >;\n};\n\n/**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTableFilter>\n *\n * 2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n * 3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,默认重启按钮触发请求,默认值:true\n * 8. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const screenType = fbaHooks.useResponsivePoint() || 'md';\n const ctx = useContext(EasyTableContext);\n const {\n queryButtonProps,\n resetButtonProps,\n filterOperate,\n formClassName = '',\n defaultResetButtonTriggerRequest,\n filterWrapperStyle,\n filterWrapperClassName,\n rightOperateAreaAppendType,\n easyFormProps,\n } = props;\n const {\n cacheKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\n\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const [openFold, setOpenFold] = useState(false);\n\n const onReset = hooks.useCallbackRef(async () => {\n filterCache.remove(cacheKey);\n form.resetFields();\n form.setFieldsValue(initialValues);\n if (isUndefined(defaultResetButtonTriggerRequest) || defaultResetButtonTriggerRequest) {\n await form.validateFields();\n if (getPaginationStatus()) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n }\n });\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = filterOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n childrens,\n filterOperate,\n foldKeys,\n form,\n onReset,\n openFold,\n queryButtonProps,\n resetButtonProps,\n rightOperateAreaAppendTypeFt,\n ]);\n\n const labelAlign = screenType === 'xs' ? 'left' : easyFormProps?.labelAlign || 'right';\n\n return (\n <BlockLayout\n className={classNames('easy-table-filter', filterWrapperClassName)}\n style={filterWrapperStyle}\n >\n <EasyForm\n form={form}\n autoComplete=\"off\"\n onFinish={onFormFinish}\n // initialValues={initialValues}\n className={formClassName}\n style={props.formStyle}\n isPure={true}\n labelWidth=\"80\"\n formItemGap=\"15\"\n {...easyFormProps}\n labelAlign={labelAlign}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </EasyForm>\n </BlockLayout>\n );\n};\n","import { useContext } from 'react';\nimport { EasyTableContext } from './context';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useContext(EasyTableContext);\n return ctx.getEasyTableRef();\n};\n\n/**\n * @deprecated 已过时 @4.5.0版本移除,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const ctx = useContext(EasyTableContext);\n return {\n current: ctx.getEasyTableRef(),\n };\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { type ColumnsType } from 'antd/es/table';\nimport { type TableRowSelection } from 'antd/es/table/interface';\nimport { Fragment, useState, type CSSProperties } from 'react';\nimport { columnFoldCache } from './cache';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex?: string; title: string }[];\n onChange: (keys: string[]) => void;\n open?: boolean;\n onClose?: () => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n};\n\nexport const FoldOperate = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n const rowSelection = {\n type: 'checkbox',\n selectedRowKeys: selectedRowKeys,\n onChange: (selectedRowKeys: string[]) => {\n setSelectedRowKeys(selectedRowKeys);\n props.onChange(selectedRowKeys);\n if (props.cacheKey) {\n columnFoldCache.set(props.cacheKey, selectedRowKeys);\n }\n },\n } as TableRowSelection<TAny>;\n\n const columns: ColumnsType<TPlainObject> = [\n {\n title: '字段名称',\n dataIndex: 'title',\n render: (value, recrd) => {\n return recrd['_isFoldTitle'] || value;\n },\n },\n { title: '字段Key', dataIndex: 'dataIndex' },\n ];\n\n return (\n <Fragment>\n <Drawer\n title=\"选择字段\"\n open={props.open}\n onClose={props.onClose}\n width={'35%'}\n styles={{\n body: {\n padding: 15,\n },\n }}\n >\n <Table\n bordered\n size=\"small\"\n columns={columns}\n rowSelection={rowSelection}\n rowKey=\"dataIndex\"\n pagination={false}\n scroll={{ x: 'max-content' }}\n dataSource={props.dataList}\n />\n </Drawer>\n </Fragment>\n );\n};\n","import { type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { useMemo } from 'react';\nimport { ButtonWrapper } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { FlexLayout } from '../../flex-layout';\nimport { IconWrapper } from '../../icon-wrapper';\nimport { SvgHttpView } from '../../svg-http-view';\nimport { TableTitleTooltip } from '../../table-title-tooltip';\nimport { TipsWrapper } from '../../tips-wrapper';\nimport { FoldOperateDropdown } from '../fold-operate-dropdown';\nimport { type EasyTableProps } from '../type';\n\nexport const useColumnsAppendTips = (props: { columns: TPlainObject[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, ...otherProps } = item;\n if (typeof title === 'string' && tipsWrapperProps) {\n if (typeof tipsWrapperProps === 'string') {\n return {\n ...otherProps,\n title: (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n ),\n };\n }\n return {\n ...otherProps,\n title: <TipsWrapper {...tipsWrapperProps}>{title}</TipsWrapper>,\n };\n }\n if (typeof title === 'string' && !!tooltip) {\n return {\n ...otherProps,\n title: <TableTitleTooltip tooltip={tooltip} title={title}></TableTitleTooltip>,\n };\n }\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns]);\n};\n\nexport const useColumnsAppendInnerColumn = (props: {\n columns: TPlainObject[];\n cacheKey: string;\n showFoldKeyList: string[];\n columnFoldConfig?: EasyTableProps['columnFoldConfig'];\n onOpenColumnFoldModal: () => void;\n onChangeFoldColumnList: (keyList: string[]) => void;\n foldColumnList: TPlainObject[];\n}) => {\n const columnsNew = props.columns;\n return fbaHooks.useMemoCustom(() => {\n if (props.columnFoldConfig?.hidden) return columnsNew;\n const finalItem = columnsNew[columnsNew.length - 1];\n if (props.foldColumnList.length > 0 && columnsNew.length > 0) {\n const foldColumnTarget = columnsNew.find((item) => item['_isFoldColumn']);\n\n if (foldColumnTarget && finalItem.dataIndex !== foldColumnTarget.dataIndex) {\n foldColumnTarget.title = foldColumnTarget['_isFoldTitle'];\n foldColumnTarget['_isFoldColumn'] = false;\n }\n if (!finalItem['_isFoldColumn']) {\n finalItem['_isFoldTitle'] = finalItem['_isFoldTitle'] || finalItem.title;\n finalItem['_isFoldColumn'] = true;\n\n const triggerType = props.columnFoldConfig?.triggerType;\n\n finalItem.title = (\n <FlexLayout direction=\"horizontal\" fullIndex={0} style={{ alignItems: 'center' }}>\n <span>{finalItem.title}</span>\n <div style={{ padding: '0 5px 0 20px', display: 'flex' }}>\n {triggerType === 'drawer' ? (\n <IconWrapper\n onClick={props.onOpenColumnFoldModal}\n text={props.columnFoldConfig?.text}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n hoverTips={props.columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={props.foldColumnList as TAny[]}\n onChange={props.onChangeFoldColumnList}\n cacheKey={props.cacheKey}\n initSelectedRowKeys={props.showFoldKeyList}\n >\n <IconWrapper\n text={props.columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n props.columnFoldConfig?.icon || (\n <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n )\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return columnsNew;\n }, [props.columns, props.columnFoldConfig]);\n};\n\nexport const useColumnsToHidden = (props: { columns: TPlainObject[]; showFoldKeyList: string[] }) => {\n return useMemo(() => {\n const tempList = props.columns\n .map((item) => {\n const { hidden, isFold } = item;\n if (hidden) return null;\n if (isFold && !props.showFoldKeyList.includes(item.dataIndex as string)) return null;\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [props.columns, props.showFoldKeyList]);\n};\n\nexport const useColumnByAsyncColumnRequest = (props: {\n columns: TPlainObject[];\n asyncColumnRequestResult: TPlainObject;\n}) => {\n return useMemo(() => {\n if (!Object.keys(props.asyncColumnRequestResult)) return props.columns;\n return props.columns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = props.asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [props.columns, props.asyncColumnRequestResult]);\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Table, type TableProps } from 'antd';\nimport {\n Fragment,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n} from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { filterCache } from './cache';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport {\n useColumnByAsyncColumnRequest,\n useColumnsAppendInnerColumn,\n useColumnsAppendTips,\n useColumnsToHidden,\n} from './hooks/columns';\nimport { type TEasyTableTableColumn } from './type';\n\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns'\n> & {\n children?: ReactElement | ReactElement[];\n /**\n * 表格行 key 的取值,\n * ```\n * 如果 rowKey 为string类型\n * 1. 组件会判断表格列表数据第一条是否存在当前rowKey对象的数据,如果没有组件内部会动态添加唯一值\n * 2. 基于上一条的逻辑,如果表格数据没有唯一值,可指定 rowKey 值为table数据中不存在的字段名,例如:rowKey=\"_uid\"\n * 3. 如果触发上述逻辑,表格数据中会多出rowKey对应的键值对数据\n * ```\n */\n rowKey: TableProps<TAny>['rowKey'];\n /** table Form 外层 SimpleLayout className */\n tableWrapperStyle?: CSSProperties;\n /** table Form 外层 SimpleLayout className */\n tableWrapperClassName?: string;\n /**\n * ```\n * 1. 当配置了 EasyTable.serviceConfig.dynamicColumsAdapter 后,columns配置只在初始化有效,再次修改无效\n * 2. 可通过 EasyTableRef.onChangeTableColumns 实现 columns 的指定修改\n * ```\n */\n columns: TEasyTableTableColumn<T>[];\n /**\n * 数据加载与表格初始化渲染 是否同步\n * @version 4.4.6\n * ```\n * 1. true:获取数据后再初始化渲染表格(可用于实现表格中defaultXxxx相关功能的使用)\n * ```\n */\n isSync?: boolean;\n /**\n * 空效果显示尺寸,默认值:small\n * @version 4.4.6\n */\n emptyShowSize?: 'small' | 'large';\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\nexport const EasyTableTable = <T extends TPlainObject>(props: EasyTableTableProps<T>) => {\n const ctx = useContext(EasyTableContext);\n const { children, rowKey, pagination, isSync, ...otherProps } = props;\n\n const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n\n const {\n columnFoldConfig,\n onCloseColumnFoldModal,\n columnFoldOpen,\n onOpenColumnFoldModal,\n asyncColumnRequest,\n showFoldKeyList,\n onChangeShowFoldKeyList,\n } = ctx.dynamicColumnsConfig;\n\n const {\n cacheKey,\n fieldNames,\n onRequest,\n tableDataSource,\n pageSize,\n tableTotal,\n loading,\n paginationFixed,\n onSetPaginationStatus,\n } = ctx;\n\n const cacheParams = filterCache.get(cacheKey);\n\n fbaHooks.useEffectCustom(() => {\n /** 获取初始化 columns 数据 */\n ctx.onSetBaseColumns((props.columns || []) as TEasyTableTableColumn<TPlainObject>[]);\n }, []);\n\n useEffect(() => {\n if (asyncColumnRequest?.length) {\n for (let index = 0; index < asyncColumnRequest.length; index++) {\n const element = asyncColumnRequest[index];\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: true },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n element\n .onRequest()\n .then((respData) => {\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false, respData },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n })\n .catch((error) => {\n console.error(error?.message);\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n });\n }\n }\n }, [asyncColumnRequest]);\n\n const columnsOriginal = fbaHooks.useMemoCustom(() => {\n if (ctx.columns) {\n ctx.onSetColumns(ctx.columns);\n return ctx.columns as TEasyTableTableColumn<T>[];\n } else {\n ctx.onSetColumns(props.columns as TEasyTableTableColumn<TPlainObject>[]);\n return props.columns;\n }\n }, [ctx.columns, props.columns]);\n\n let columnsNew = useColumnsAppendTips({\n columns: [...columnsOriginal],\n });\n\n const foldColumnList = columnsOriginal.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n columnsNew = useColumnsAppendInnerColumn({\n cacheKey,\n columns: columnsNew,\n foldColumnList,\n showFoldKeyList,\n columnFoldConfig,\n onOpenColumnFoldModal,\n onChangeFoldColumnList: onChangeShowFoldKeyList,\n });\n\n columnsNew = useColumnsToHidden({\n columns: columnsNew,\n showFoldKeyList,\n });\n\n columnsNew = useColumnByAsyncColumnRequest({\n columns: columnsNew,\n asyncColumnRequestResult,\n });\n\n fbaHooks.useEffectCustom(() => {\n onSetPaginationStatus(pagination !== false);\n }, [pagination]);\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (!paginationFixed) {\n if (pagination !== false) {\n onRequest({\n [fieldNames.pageSize]: cacheParams[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n onRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }\n }, [pagination]);\n\n const tablePaginationData = useMemo(() => {\n if (paginationFixed || pagination === false) return false;\n return {\n showSizeChanger: true,\n current: cacheParams[fieldNames.pageNo] || 1,\n pageSize: cacheParams[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n // selectComponentClass: SmallSelect,\n };\n }, [\n cacheParams,\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (pagination, filters, sorter, extra) => {\n if (extra.action === 'paginate' && tablePaginationData) {\n onRequest({\n [fieldNames.pageSize]: pagination.pageSize,\n [fieldNames.pageNo]: pagination.current,\n });\n } else {\n props.onChange?.(pagination, filters, sorter, extra);\n }\n };\n\n const dataSource = useMemo(() => {\n if (!tableDataSource) return undefined;\n if (tableDataSource.length === 0) {\n return [];\n }\n if (typeof rowKey === 'string' && isUndefinedOrNull(tableDataSource[0][rowKey])) {\n return tableDataSource.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableDataSource;\n }, [tableDataSource, rowKey]);\n\n const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"1\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n rowKey={rowKey as TAny}\n columns={columnsNew}\n loading={loading}\n />\n </Fragment>\n );\n }\n if (isMacEnv()) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"2\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </Fragment>\n );\n }\n return (\n <Fragment>\n {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={columnsNew}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeShowFoldKeyList}\n cacheKey={cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { firstQueryCache } from './cache';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n *\n * 1. 废弃modelKey参数\n * 2. 如果需要在路由跳转回退中缓存查询条件,设置cacheSwitch=true;如果存在多个EasyTable缓存情况可设置cacheSwitch为自定义字符串\n * 3. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 4. 可通过属性 initRequest 设置初始化是否请求数据\n * 5. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 6. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 7. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 8. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 9. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 10. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提高windows下table左右滚动体验\n * 11. 可实现部分字段折叠,手动选择显示,将EasyTable.Table columns中isFold属性设为true,可通过EasyTable columnFoldConfig配置属性,demo(https://fex.qa.tcshuke.com/docs/admin/main/crud/demo1)\n * 12. 通过asyncColumnRequest、asyncRender配合使用可实现表格列数据接口渲染(demo:https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table)\n * ```\n */\nexport const EasyTable = fbaUtils.attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTable.Filter>\n * 2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n * 3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n * 8. 通过easyFormProps属性可整体控制子节点FormItem布局\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\n Table: EasyTableTable,\n /**\n * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n /** 设置启用初始化请求 */\n setEnabledInitRequest: (cacheKey: string) => {\n firstQueryCache.set(cacheKey, false);\n },\n});\n"],"names":["filterCache","set","cacheKey","filterCondition","value","get","mergeParams","_extends","sessionStorageCache","_isObject","remove","firstQueryCache","flag","_sessionStorageCache$","columnFoldCache","localStorageCache","_localStorageCache$ge","_isArray","EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperateDropdown","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","onChange","keys","content","_jsx","Fragment","children","Checkbox","Group","defaultValue","style","display","flexDirection","dataList","map","item","label","title","dataIndex","padding","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","EasyTable","forwardRef","ref","_props$initialPaginat","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","useMemo","cacheSwitch","location","pathname","getUuid","_useState5","columnFoldCacheValue","cacheKeyList","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","pageSize","initialPaginationParams","initRequest","undefined","paginationStatusRef","useRef","respOriginalDataRef","baseColumnsRef","_useState6","dynamicColumns","setDynamicColumns","columnsRef","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","_hooks","useCallbackRef","params","Promise","$return","$error","paramsAll","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_1_Post","$boundEx","$Try_1_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_2_Post","$If_3","call","this","bind","$Try_2_Catch","_error","resolve","then","$await_4","serviceConfig","fbaUtils","removeFormValuesInvalidField","$await_5","current","onDataSourceChange","_get","fbaHooks","useEffectCustom","hasPagination","getPaginationStatus","firstQueryFlag","cacheParams","setFieldsValue","initialValues","_extends2","clearQueryCondition","values","resetFields","updateQueryCondition","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","columnFoldTriggerRender","columns","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","hidden","isFold","onChangeFoldColumnList","onChangeTableColumns","getTableColumns","setEnabledInitRequest","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onSetColumns","onFormFinish","isFull","_isUndefined","className","_classNames","filterFixed","paginationFixed","paginationData","showSizeChanger","showTotal","pagination","keyList","page","_onInnerRequest","_props$pagination","useUpdateEffect","_onInnerRequest2","_onInnerRequest3","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","dynamicColumnsConfig","onChangeShowFoldKeyList","_jsxs","PaginationWrapper","size","EasyTableFilter","screenType","useResponsivePoint","ctx","useContext","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","onReset","validateFields","$await_2","$If_1","formRowChildren","defaultRightList","ButtonWrapper","type","htmlType","text","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","index","find","keyItem","key","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","FoldOperate","rowSelection","render","recrd","Drawer","open","onClose","width","styles","body","Table","bordered","rowKey","scroll","x","useColumnsAppendTips","tempList","tooltip","tipsWrapperProps","otherProps","_objectWithoutPropertiesLoose","_excluded","TipsWrapper","tipType","popoverProps","TableTitleTooltip","useColumnsAppendInnerColumn","columnsNew","useMemoCustom","finalItem","foldColumnTarget","_props$columnFoldConf2","_props$columnFoldConf3","_props$columnFoldConf4","_props$columnFoldConf5","_props$columnFoldConf6","_props$columnFoldConf7","FlexLayout","direction","fullIndex","alignItems","IconWrapper","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","useColumnsToHidden","includes","useColumnByAsyncColumnRequest","Object","asyncColumnRequestResult","result","loadingPosition","removeGap","asyncRender","record","EasyTableTable","isSync","asyncColumnRequestResultRef","setAsyncColumnRequestResult","_ctx$dynamicColumnsCo","useEffect","_loop","element","_extends3","catch","_extends4","console","columnsOriginal","_onRequest","_onRequest2","tablePaginationData","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
|
|
@@ -10,5 +10,5 @@ import './../text-symbol-wrapper/index.css';
|
|
|
10
10
|
import './../tips-wrapper/index.css';
|
|
11
11
|
import './index.css';
|
|
12
12
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
13
|
-
import e from"@ant-design/icons/es/icons/PlusOutlined";import{classNames as
|
|
13
|
+
import e from"@ant-design/icons/es/icons/PlusOutlined";import r from"@ant-design/icons/es/icons/CloseCircleFilled";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as a}from"@wove/react/cjs/hooks";import{isArray as l}from"@dimjs/lang/cjs/is-array";import{cloneState as i}from"@dimjs/model";import{toArray as o,arrayReorder as s,isUndefinedOrNull as d}from"@flatbiz/utils";import{Form as u,Table as p,Space as m,message as c}from"antd";import{useState as f,useRef as v,useMemo as g,isValidElement as b}from"react";import{ButtonWrapper as h}from"../button-wrapper/index.js";import{fbaHooks as y}from"../fba-hooks/index.js";import{fbaUtils as j}from"../fba-utils/index.js";import{FormItemWrapper as x}from"../form-item-wrapper/index.js";import{TextSymbolWrapper as C}from"../text-symbol-wrapper/index.js";import{TipsWrapper as w}from"../tips-wrapper/index.js";import{jsx as R,jsxs as F}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";import"../use-responsive-point-21b8c601.js";import"../pre-defined-class-name/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var P=function P(k){var A;var I=u.useFormInstance();var V=f([]),N=V[0],T=V[1];var U=o(k.formListName);var L=v({});var z=v({});var B=v();var K=k.uidFieldKey;var O=k.childrenColumnName||"children";var W=k.expandedIconLayout||"layout1";var q=k.formListCompleteName||U;var D=u.useWatch(q,I);var E=f(),S=E[0],_=E[1];var Y=g((function(){if(!D)return[];var e=false;function r(n,t,a){for(var l=0;l<n.length;l++){var i=n[l];if(!i[K]){console.error(i,"数据中未查询到唯一值");e=true;return}else{z.current[i[K]]={level:t,parentUid:a,index:l};L.current[i[K]]=i;r(i[O]||[],t+1,i[K])}}}z.current={};L.current={};r(l(D)?D:[],1);if(e){var n="数据源中存在唯一值【"+K+"】为空的情况,无法渲染表格";void c.error(n);_(n);return[]}return D}),[O,D,K]);y.useEffectCustom((function(){T(k.expandedRowKeys||[])}),[JSON.stringify(k.expandedRowKeys||[])]);var H=a.useCallbackRef((function(e){var r=e[K];var n=z.current[r];var t=[];while(n){t.push(n.index);if(n.level===1){break}n=n.parentUid?z.current[n.parentUid]:undefined}var a=[];t.reverse().forEach((function(e,r){a.push(e);if(r<t.length-1){a.push(O)}}));return a}));var J=a.useCallbackRef((function(e,r,n){var t=L.current[e];if(t){if(t.level===1){var a;(a=B.current)==null?void 0:a.add(r,n);return}t[O]=t[O]||[];if(n==undefined){t[O].push(r)}else{t[O].splice(n,0,r)}var l=new Set(N);l.add(t[K]);T([].concat(Array.from(l)));j.setFormFieldsAndTriggerValuesChange(I,[{name:q,value:[].concat(D)}])}}));var Q=a.useCallbackRef((function(e,r){var n=z.current[e];if(n.level===1){var t;(t=B.current)==null?void 0:t.remove(r);return}var a=n.parentUid;if(!a){D.splice(r,1)}else{var l=L.current[a];l[O].splice(r,1);if(l[O].length===0){delete l[O]}}j.setFormFieldsAndTriggerValuesChange(I,[{name:q,value:i(D)}])}));var G=a.useCallbackRef((function(e,r,n){if(r===n||n<0)return;var t=z.current[e];var a=t.parentUid;if(!a){var l=s(D,r,n);j.setFormFieldsAndTriggerValuesChange(I,[{name:q,value:l}])}else{var i=L.current[a];i[O]=s(i[O],r,n);j.setFormFieldsAndTriggerValuesChange(I,[{name:q,value:[].concat(D)}])}}));var M=a.useCallbackRef((function(e,r){j.setFormFieldsAndTriggerValuesChange(I,r.map((function(r){return{name:[].concat(q,e,o(r.name)),value:r.value}})))}));var X=a.useCallbackRef((function(e,r){M(e,[{name:O,value:r}])}));var Z=a.useCallbackRef((function(e,r){return new Promise((function(n,t){return Promise.resolve(I.validateFields(r.map((function(r){return[].concat(e,o(r))})))).then((function(e){try{return n()}catch(e){return t(e)}}),t)}))}));var $=g((function(){return k.columns.map((function(e){var r;var n=e.title;var a=b(n)||typeof n==="string";var l=n;if(e.tipsWrapperProps&&a){if(typeof e.tipsWrapperProps==="string"){l=R(w,{tipType:"popover",popoverProps:{content:e.tipsWrapperProps},children:n})}else{l=R(w,t({},e.tipsWrapperProps,{children:n}))}}var i=e.required;if(!i&&typeof e.formItemProps==="object"&&(r=e.formItemProps.rules)!=null&&r.length){i=!!e.formItemProps.rules.find((function(e){return!!e["required"]}))}return t({onCell:function e(){var r;return{valign:((r=k.tableProps)==null?void 0:r.cellVerticalAlign)||"middle"}}},e,{title:i?R(C,{style:{marginLeft:e.align==="center"?undefined:10},text:l,position:"before",symbolType:"required"}):l,render:function r(n,a,l){if(d(e.render)){return n}var s=a[K];var u=o(e["dataIndex"]);var p=H(a);var m=z.current[s];var c=typeof(e==null?void 0:e.editable)==="function"?e==null?void 0:e.editable(a,l):e==null?void 0:e.editable;var f=[].concat(q,p);var v={editable:c,add:J.bind(null,s),remove:Q.bind(null,s),move:G.bind(null,s),level:m.level,parentItem:m.parentUid?z.current[m.parentUid]:null,tableRowFormItemName:p,tableRowFormItemCompleteName:f,setCurrentRowTargetField:M.bind(null,p),setCurrentRowChildrenValue:X.bind(null,p),validateRowFields:Z.bind(null,f)};if(c===true){var g,b;var h=typeof e.formItemProps==="function"?e.formItemProps(n,a,l,v):e.formItemProps;if(!((g=h)!=null&&(g=g.rules)!=null&&g.length)&&i){h=t({},h,{rules:[{required:true,message:""}]})}return R(x,t({},h,{name:[].concat(p,u),style:t({marginBottom:0},(b=h)==null?void 0:b.style),children:e.render==null?void 0:e.render(n,a,l,v)}))}return e.render==null?void 0:e.render(n,a,l,v)}})}))}),[k.columns,(A=k.tableProps)==null?void 0:A.cellVerticalAlign,K,H,q,J,Q,G,M,X,Z]);var ee=n("editable-table-pro",{"editable-table-pro-layout1":W==="layout1"},k.className);return R("div",{className:ee,style:k.style,children:R(u.List,{name:U,rules:k.rules,children:function n(a,l,i){var o;var s=i.errors;B.current=l;return F("div",{style:{borderRadius:"6px",border:s!=null&&s.length?"1px solid #ff4d4f":"1px solid transparent"},children:[k.tableBeforeAreaRender==null?void 0:k.tableBeforeAreaRender(l,a.length),R(p,t({scroll:{x:"max-content"},pagination:false,size:"small"},k.tableProps,{locale:{emptyText:S?F(m,{size:5,style:{color:"#ff4d4f"},children:[R(r,{}),R("span",{children:S})]}):undefined},expandable:t({expandedRowKeys:N,onExpandedRowsChange:function e(r){T(r)}},(o=k.tableProps)==null?void 0:o.expandable,{childrenColumnName:O}),columns:$,dataSource:Y,rowKey:K})),R(h,{block:true,hidden:k.hiddenFooterBtn,type:"dashed",icon:R(e,{}),style:{marginTop:15},onClick:function e(){var r=k.addRowDefaultValues==null?void 0:k.addRowDefaultValues();if(!(r!=null&&r[K])){void c.error("新增行默认值必须包含唯一值字段【"+K+"】,通过 addRowDefaultValues 设置");return}l.add(r)},children:"新增"}),k.tableAfterAreaRender==null?void 0:k.tableAfterAreaRender(l,a.length),s.length?R(u.ErrorList,{errors:[R("div",{style:{color:"#ff4d4f",padding:"5px"},children:s},"0")]}):null]})}})})};export{P as EditableTablePro};
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/editable-table-pro/editable-table-pro.tsx"],"sourcesContent":["import { PlusOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { arrayReorder, isUndefinedOrNull, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message, Table, type FormListOperation, type TableProps } from 'antd';\nimport type { FormListProps } from 'antd/es/form';\nimport type { ColumnsType } from 'antd/es/table';\nimport type { ReactElement } from 'react';\nimport { isValidElement, useMemo, useRef, useState } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { FormItemWrapper } from '../form-item-wrapper';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { TipsWrapper } from '../tips-wrapper';\nimport './style.less';\nimport type {\n EditableTableProColumnItem,\n EditableTableProDataIndex,\n EditableTableProOperation,\n} from './type';\n\ntype dataSourceRelativeItem = {\n level: number;\n parentUid?: string | number;\n index: number;\n};\n\nexport type EditableTableProProps = {\n columns: EditableTableProColumnItem[];\n /**\n * 当前Edittable处在formList内部时(必填),完整formItem的name\n * ```\n * 例如 处在formList内部\n * 1. formListName=[0,dataList]\n * 2. formListCompleteName=[xxxList, 0, dataList]\n * ```\n */\n formListCompleteName?: Array<string | number>;\n /** Form.List name */\n formListName: Array<string | number> | string;\n /** 唯一值字段Key */\n uidFieldKey: string;\n /** 指定树形结构的列名,默认值:children */\n childrenColumnName?: string;\n /** 表格组件配置 */\n tableProps?: Omit<TableProps<TPlainObject>, 'dataSource' | 'columns' | 'rowKey'> & {\n // 如果重写了columns.onCell,则此配置失效\n cellVerticalAlign?: 'baseline' | 'middle' | 'top' | 'bottom';\n };\n /**\n * Form.List rules\n * ```\n rules={[\n {\n validator: async (_, names) => {\n if (!names || names.length < 2) {\n return Promise.reject(new Error('At least 2 passengers'));\n }\n },\n },\n ]}\n * ```\n */\n rules?: FormListProps['rules'];\n className?: string;\n style?: React.CSSProperties;\n\n /**`默认新增按钮`新增行默认值,hiddenFooterBtn != true 有效 */\n addRowDefaultValues?: () => TPlainObject;\n /** 隐藏底部`新增`按钮 */\n hiddenFooterBtn?: boolean;\n /** 表格顶部区域渲染 */\n tableBeforeAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /** 表格底部区域渲染 */\n tableAfterAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /** 展开的行key,一般用于初始化,重新tableProps.expandable.expandedRowKeys后失效 */\n expandedRowKeys?: string[];\n /**\n * 展开图标布局,默认:layout1\n * ```\n * 1. 可编辑表格第一项为可编辑状态时,选 layout1\n * 2. 可编辑表格第一项为非可编辑状态时,选 layout2\n * ```\n */\n expandedIconLayout?: 'layout1' | 'layout2';\n};\n\n/**\n * 使用FormList实现可编辑表格\n * ```\n * 1. 必须在外部包裹Form组件\n * 2. 表格数据源数组中必须存在唯一值字段,通过uidFieldKey配置\n * 3. 可嵌套编辑,数据嵌套的节点名称可通过 childrenColumnName设置,默认:children\n * 4. 行内需要联动逻辑可使用 column.render.operation.setCurrentRowTargetField 方法\n * 5. 在多级编辑中,可通过 column.render.operation.level 判断当前行数据层级\n * 6. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 7. 存在多级的情况下,可通过 column.render.operation.move 方法实现同一级内移动\n *\n * demo\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable1\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable2\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable4\n * ```\n */\nexport const EditableTablePro = (props: EditableTableProProps) => {\n const form = Form.useFormInstance();\n const [expandedRowKeys, setExpandedRowKeys] = useState<string[]>([]);\n const formListName = toArray<string | number>(props.formListName);\n const dataSourceUidMap = useRef<Record<string, TPlainObject>>({});\n const dataSourceUidMapFt = useRef<Record<string | number, dataSourceRelativeItem>>({});\n const formListOperationRef = useRef<FormListOperation>();\n const uidFieldKey = props.uidFieldKey;\n const childrenColumnName = props.childrenColumnName || 'children';\n const expandedIconLayout = props.expandedIconLayout || 'layout1';\n\n const formListCompleteName = props.formListCompleteName || formListName;\n\n const dataSource = Form.useWatch(formListCompleteName, form);\n\n const dataSourceFt = useMemo(() => {\n if (!dataSource) return [];\n function deep(itemList: TPlainObject[], level: number, parentUid?: string | number) {\n itemList.forEach((item, itemIndex) => {\n if (!item[uidFieldKey]) {\n console.error(item, '数据中未查询到唯一值');\n } else {\n dataSourceUidMapFt.current[item[uidFieldKey]] = {\n level,\n parentUid,\n index: itemIndex,\n };\n dataSourceUidMap.current[item[uidFieldKey]] = item;\n deep(item[childrenColumnName] || [], level + 1, item[uidFieldKey]);\n }\n });\n }\n dataSourceUidMapFt.current = {};\n dataSourceUidMap.current = {};\n deep(isArray(dataSource) ? dataSource : [], 1);\n return dataSource;\n }, [childrenColumnName, dataSource, uidFieldKey]);\n\n fbaHooks.useEffectCustom(() => {\n setExpandedRowKeys(props.expandedRowKeys || []);\n }, [JSON.stringify(props.expandedRowKeys || [])]);\n\n const getFormItemName = hooks.useCallbackRef((record: TPlainObject) => {\n const uid = record[uidFieldKey];\n let target: dataSourceRelativeItem | undefined = dataSourceUidMapFt.current[uid];\n\n const indexes: number[] = [];\n while (target) {\n indexes.push(target.index);\n if (target.level === 1) {\n break;\n }\n target = target.parentUid ? dataSourceUidMapFt.current[target.parentUid] : undefined;\n }\n const arr: Array<string | number> = [];\n indexes.reverse().forEach((item, index) => {\n arr.push(item);\n if (index < indexes.length - 1) {\n arr.push(childrenColumnName);\n }\n });\n return arr;\n });\n\n const addItem = hooks.useCallbackRef((uid: string, defaultValue: TPlainObject, insertIndex?: number) => {\n const target = dataSourceUidMap.current[uid];\n\n if (target) {\n if (target.level === 1) {\n /** 通过 formListOperation.add 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.add(defaultValue, insertIndex);\n return;\n }\n target[childrenColumnName] = target[childrenColumnName] || [];\n if (insertIndex == undefined) {\n target[childrenColumnName].push(defaultValue);\n } else {\n target[childrenColumnName].splice(insertIndex, 0, defaultValue);\n }\n const expandedRowKeysSet = new Set(expandedRowKeys);\n expandedRowKeysSet.add(target[uidFieldKey]);\n setExpandedRowKeys([...Array.from(expandedRowKeysSet)]);\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const deleteItem = hooks.useCallbackRef((uid: string | number, index: number) => {\n const target = dataSourceUidMapFt.current[uid];\n if (target.level === 1) {\n /** 通过 formListOperation.remove 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.remove(index);\n return;\n }\n const parentUid = target.parentUid;\n if (!parentUid) {\n dataSource.splice(index, 1);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName].splice(index, 1);\n if (parentTarget[childrenColumnName].length === 0) {\n delete parentTarget[childrenColumnName];\n }\n }\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: cloneState(dataSource),\n },\n ]);\n });\n\n const moveItem = hooks.useCallbackRef((uid: string | number, fromIndex: number, toIndex: number) => {\n if (fromIndex === toIndex || toIndex < 0) return;\n const target = dataSourceUidMapFt.current[uid];\n const parentUid = target.parentUid;\n if (!parentUid) {\n const result = arrayReorder(dataSource, fromIndex, toIndex);\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: result,\n },\n ]);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName] = arrayReorder(parentTarget[childrenColumnName], fromIndex, toIndex);\n\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const setCurrentRowTargetField = hooks.useCallbackRef(\n (\n formItemPrevName: Array<string | number>,\n dataIndexConfigs: {\n name: EditableTableProDataIndex;\n value?: TAny;\n }[],\n ) => {\n fbaUtils.setFormFieldsAndTriggerValuesChange(\n form,\n dataIndexConfigs.map((item) => {\n return {\n name: [...formListCompleteName, ...formItemPrevName, ...toArray<string | number>(item.name)],\n value: item.value,\n };\n }),\n );\n },\n );\n\n const setCurrentRowChildrenValue = hooks.useCallbackRef(\n (formItemPrevName: Array<string | number>, value?: TPlainObject[]) => {\n setCurrentRowTargetField(formItemPrevName, [{ name: childrenColumnName, value }]);\n },\n );\n\n const validateRowFields = hooks.useCallbackRef(\n async (formItemPrevName: Array<string | number>, nameList: EditableTableProDataIndex[]) => {\n await form.validateFields(\n nameList.map((item) => [...formItemPrevName, ...toArray<string | number>(item)]),\n );\n },\n );\n\n const columns = useMemo(() => {\n return props.columns.map((column) => {\n const title = column.title;\n const support = isValidElement(title) || typeof title === 'string';\n let titleRender: ReactElement | string | undefined = title;\n if (column.tipsWrapperProps && support) {\n if (typeof column.tipsWrapperProps === 'string') {\n titleRender = (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: column.tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n );\n } else {\n titleRender = <TipsWrapper {...column.tipsWrapperProps}>{title}</TipsWrapper>;\n }\n }\n\n let required = column.required;\n\n if (!required && typeof column.formItemProps === 'object' && column.formItemProps.rules?.length) {\n required = !!column.formItemProps.rules.find((item) => !!item['required']);\n }\n\n return {\n onCell: () => {\n return {\n valign: props.tableProps?.cellVerticalAlign || 'middle',\n };\n },\n ...column,\n title: required ? (\n <TextSymbolWrapper\n style={{ marginLeft: column.align === 'center' ? undefined : 10 }}\n text={titleRender}\n position=\"before\"\n symbolType=\"required\"\n />\n ) : (\n titleRender\n ),\n render: (value, record, index) => {\n if (isUndefinedOrNull(column.render)) {\n return value;\n }\n const uid = record[uidFieldKey];\n const dataIndex = toArray<string>(column['dataIndex']);\n const formItemPrevName = getFormItemName(record);\n const dataSourceTarget = dataSourceUidMapFt.current[uid];\n\n const editable =\n typeof column?.editable === 'function' ? column?.editable(record, index) : column?.editable;\n const tableRowFormItemCompleteName = [...formListCompleteName, ...formItemPrevName];\n\n const renderOperationProps: EditableTableProOperation = {\n editable,\n add: addItem.bind(null, uid),\n remove: deleteItem.bind(null, uid),\n move: moveItem.bind(null, uid),\n level: dataSourceTarget.level,\n parentItem: dataSourceTarget.parentUid\n ? dataSourceUidMapFt.current[dataSourceTarget.parentUid]\n : null,\n tableRowFormItemName: formItemPrevName,\n tableRowFormItemCompleteName,\n setCurrentRowTargetField: setCurrentRowTargetField.bind(null, formItemPrevName),\n setCurrentRowChildrenValue: setCurrentRowChildrenValue.bind(null, formItemPrevName),\n validateRowFields: validateRowFields.bind(null, tableRowFormItemCompleteName),\n };\n if (editable === true) {\n let formItemProps =\n typeof column.formItemProps === 'function'\n ? column.formItemProps(value, record, index, renderOperationProps)\n : column.formItemProps;\n\n if (!formItemProps?.rules?.length && required) {\n formItemProps = { ...formItemProps, rules: [{ required: true, message: '' }] };\n }\n\n return (\n <FormItemWrapper\n {...formItemProps}\n name={[...formItemPrevName, ...dataIndex]}\n style={{ marginBottom: 0, ...formItemProps?.style }}\n >\n {column.render?.(value, record, index, renderOperationProps) as React.ReactNode}\n </FormItemWrapper>\n );\n }\n return column.render?.(value, record, index, renderOperationProps);\n },\n };\n }) as ColumnsType<TPlainObject>;\n }, [\n props.columns,\n props.tableProps?.cellVerticalAlign,\n uidFieldKey,\n getFormItemName,\n formListCompleteName,\n addItem,\n deleteItem,\n moveItem,\n setCurrentRowTargetField,\n setCurrentRowChildrenValue,\n validateRowFields,\n ]);\n\n const className = classNames(\n 'editable-table-pro',\n { 'editable-table-pro-layout1': expandedIconLayout === 'layout1' },\n props.className,\n );\n\n return (\n <div className={className} style={props.style}>\n <Form.List name={formListName} rules={props.rules}>\n {(fields, formListOperation, { errors }) => {\n formListOperationRef.current = formListOperation;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.tableBeforeAreaRender?.(formListOperation, fields.length)}\n <Table\n scroll={{ x: 'max-content' }}\n pagination={false}\n size=\"small\"\n {...props.tableProps}\n expandable={{\n expandedRowKeys: expandedRowKeys,\n onExpandedRowsChange: (expandedRowKeys) => {\n setExpandedRowKeys(expandedRowKeys as string[]);\n },\n ...props.tableProps?.expandable,\n childrenColumnName: childrenColumnName,\n }}\n columns={columns}\n dataSource={dataSourceFt}\n rowKey={uidFieldKey}\n />\n <ButtonWrapper\n block\n hidden={props.hiddenFooterBtn}\n type=\"dashed\"\n icon={<PlusOutlined />}\n style={{ marginTop: 15 }}\n onClick={() => {\n const defaultValues = props.addRowDefaultValues?.();\n if (!defaultValues?.[uidFieldKey]) {\n void message.error(\n `新增行默认值必须包含唯一值字段【${uidFieldKey}】,通过 addRowDefaultValues 设置`,\n );\n return;\n }\n formListOperation.add(defaultValues);\n }}\n >\n 新增\n </ButtonWrapper>\n {props.tableAfterAreaRender?.(formListOperation, fields.length)}\n {errors.length ? (\n <Form.ErrorList\n errors={[\n <div style={{ color: '#ff4d4f', padding: '5px' }} key=\"0\">\n {errors}\n </div>,\n ]}\n />\n ) : null}\n </div>\n );\n }}\n </Form.List>\n </div>\n );\n};\n"],"names":["EditableTablePro","props","_props$tableProps2","form","Form","useFormInstance","_useState","useState","expandedRowKeys","setExpandedRowKeys","formListName","toArray","dataSourceUidMap","useRef","dataSourceUidMapFt","formListOperationRef","uidFieldKey","childrenColumnName","expandedIconLayout","formListCompleteName","dataSource","useWatch","dataSourceFt","useMemo","deep","itemList","level","parentUid","forEach","item","itemIndex","console","error","current","index","_isArray","fbaHooks","useEffectCustom","JSON","stringify","getFormItemName","_hooks","useCallbackRef","record","uid","target","indexes","push","undefined","arr","reverse","length","addItem","defaultValue","insertIndex","_formListOperationRef","add","splice","expandedRowKeysSet","Set","concat","Array","from","fbaUtils","setFormFieldsAndTriggerValuesChange","name","value","deleteItem","_formListOperationRef2","remove","parentTarget","cloneState","moveItem","fromIndex","toIndex","result","arrayReorder","setCurrentRowTargetField","formItemPrevName","dataIndexConfigs","map","setCurrentRowChildrenValue","validateRowFields","nameList","Promise","$return","$error","resolve","validateFields","then","$await_1","$boundEx","columns","column","_column$formItemProps","title","support","isValidElement","titleRender","tipsWrapperProps","_jsx","TipsWrapper","tipType","popoverProps","content","children","_extends","required","formItemProps","rules","find","onCell","_props$tableProps","valign","tableProps","cellVerticalAlign","TextSymbolWrapper","style","marginLeft","align","text","position","symbolType","render","isUndefinedOrNull","dataIndex","dataSourceTarget","editable","tableRowFormItemCompleteName","renderOperationProps","bind","move","parentItem","tableRowFormItemName","_formItemProps","_formItemProps2","message","FormItemWrapper","marginBottom","className","_classNames","List","fields","formListOperation","_ref","_props$tableProps3","errors","_jsxs","borderRadius","border","tableBeforeAreaRender","Table","scroll","x","pagination","size","expandable","onExpandedRowsChange","rowKey","ButtonWrapper","block","hidden","hiddenFooterBtn","type","icon","_PlusOutlined","marginTop","onClick","defaultValues","addRowDefaultValues","tableAfterAreaRender","ErrorList","color","padding"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/editable-table-pro/editable-table-pro.tsx"],"sourcesContent":["import { CloseCircleFilled, PlusOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { arrayReorder, isUndefinedOrNull, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message, Space, Table, type FormListOperation, type TableProps } from 'antd';\nimport type { FormListProps } from 'antd/es/form';\nimport type { ColumnsType } from 'antd/es/table';\nimport type { ReactElement } from 'react';\nimport { isValidElement, useMemo, useRef, useState } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { FormItemWrapper } from '../form-item-wrapper';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { TipsWrapper } from '../tips-wrapper';\nimport './style.less';\nimport type {\n EditableTableProColumnItem,\n EditableTableProDataIndex,\n EditableTableProOperation,\n} from './type';\n\ntype dataSourceRelativeItem = {\n level: number;\n parentUid?: string | number;\n index: number;\n};\n\nexport type EditableTableProProps = {\n columns: EditableTableProColumnItem[];\n /**\n * 当前Edittable处在formList内部时(必填),完整formItem的name\n * ```\n * 例如 处在formList内部\n * 1. formListName=[0,dataList]\n * 2. formListCompleteName=[xxxList, 0, dataList]\n * ```\n */\n formListCompleteName?: Array<string | number>;\n /** Form.List name */\n formListName: Array<string | number> | string;\n /** 唯一值字段Key */\n uidFieldKey: string;\n /** 指定树形结构的列名,默认值:children */\n childrenColumnName?: string;\n /** 表格组件配置 */\n tableProps?: Omit<TableProps<TPlainObject>, 'dataSource' | 'columns' | 'rowKey'> & {\n // 如果重写了columns.onCell,则此配置失效\n cellVerticalAlign?: 'baseline' | 'middle' | 'top' | 'bottom';\n };\n /**\n * Form.List rules\n * ```\n rules={[\n {\n validator: async (_, names) => {\n if (!names || names.length < 2) {\n return Promise.reject(new Error('At least 2 passengers'));\n }\n },\n },\n ]}\n * ```\n */\n rules?: FormListProps['rules'];\n className?: string;\n style?: React.CSSProperties;\n\n /**`默认新增按钮`新增行默认值,hiddenFooterBtn != true 有效 */\n addRowDefaultValues?: () => TPlainObject;\n /** 隐藏底部`新增`按钮 */\n hiddenFooterBtn?: boolean;\n /** 表格顶部区域渲染 */\n tableBeforeAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /** 表格底部区域渲染 */\n tableAfterAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /** 展开的行key,一般用于初始化,重新tableProps.expandable.expandedRowKeys后失效 */\n expandedRowKeys?: string[];\n /**\n * 展开图标布局,默认:layout1\n * ```\n * 1. 可编辑表格第一项为可编辑状态时,选 layout1\n * 2. 可编辑表格第一项为非可编辑状态时,选 layout2\n * ```\n */\n expandedIconLayout?: 'layout1' | 'layout2';\n};\n\n/**\n * 使用FormList实现可编辑表格\n * ```\n * 1. 必须在外部包裹Form组件\n * 2. 表格数据源数组中必须存在唯一值字段,通过uidFieldKey配置\n * 3. 可嵌套编辑,数据嵌套的节点名称可通过 childrenColumnName设置,默认:children\n * 4. 行内需要联动逻辑可使用 column.render.operation.setCurrentRowTargetField 方法\n * 5. 在多级编辑中,可通过 column.render.operation.level 判断当前行数据层级\n * 6. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 7. 存在多级的情况下,可通过 column.render.operation.move 方法实现同一级内移动\n *\n * demo\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable1\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable2\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable4\n * ```\n */\nexport const EditableTablePro = (props: EditableTableProProps) => {\n const form = Form.useFormInstance();\n const [expandedRowKeys, setExpandedRowKeys] = useState<string[]>([]);\n const formListName = toArray<string | number>(props.formListName);\n const dataSourceUidMap = useRef<Record<string, TPlainObject>>({});\n const dataSourceUidMapFt = useRef<Record<string | number, dataSourceRelativeItem>>({});\n const formListOperationRef = useRef<FormListOperation>();\n const uidFieldKey = props.uidFieldKey;\n const childrenColumnName = props.childrenColumnName || 'children';\n const expandedIconLayout = props.expandedIconLayout || 'layout1';\n\n const formListCompleteName = props.formListCompleteName || formListName;\n\n const dataSource = Form.useWatch(formListCompleteName, form);\n\n const [showEmptyText, setShowEmptyText] = useState<string | undefined>();\n\n const dataSourceFt = useMemo(() => {\n if (!dataSource) return [];\n let queryUidErrorFlag = false;\n function deep(itemList: TPlainObject[], level: number, parentUid?: string | number) {\n for (let index = 0; index < itemList.length; index++) {\n const item = itemList[index];\n if (!item[uidFieldKey]) {\n console.error(item, '数据中未查询到唯一值');\n queryUidErrorFlag = true;\n return;\n } else {\n dataSourceUidMapFt.current[item[uidFieldKey]] = {\n level,\n parentUid,\n index,\n };\n dataSourceUidMap.current[item[uidFieldKey]] = item;\n deep(item[childrenColumnName] || [], level + 1, item[uidFieldKey]);\n }\n }\n }\n\n dataSourceUidMapFt.current = {};\n dataSourceUidMap.current = {};\n deep(isArray(dataSource) ? dataSource : [], 1);\n if (queryUidErrorFlag) {\n const txt = `数据源中存在唯一值【${uidFieldKey}】为空的情况,无法渲染表格`;\n void message.error(txt);\n setShowEmptyText(txt);\n return [];\n }\n return dataSource;\n }, [childrenColumnName, dataSource, uidFieldKey]);\n\n fbaHooks.useEffectCustom(() => {\n setExpandedRowKeys(props.expandedRowKeys || []);\n }, [JSON.stringify(props.expandedRowKeys || [])]);\n\n const getFormItemName = hooks.useCallbackRef((record: TPlainObject) => {\n const uid = record[uidFieldKey];\n let target: dataSourceRelativeItem | undefined = dataSourceUidMapFt.current[uid];\n\n const indexes: number[] = [];\n while (target) {\n indexes.push(target.index);\n if (target.level === 1) {\n break;\n }\n target = target.parentUid ? dataSourceUidMapFt.current[target.parentUid] : undefined;\n }\n const arr: Array<string | number> = [];\n indexes.reverse().forEach((item, index) => {\n arr.push(item);\n if (index < indexes.length - 1) {\n arr.push(childrenColumnName);\n }\n });\n return arr;\n });\n\n const addItem = hooks.useCallbackRef((uid: string, defaultValue: TPlainObject, insertIndex?: number) => {\n const target = dataSourceUidMap.current[uid];\n\n if (target) {\n if (target.level === 1) {\n /** 通过 formListOperation.add 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.add(defaultValue, insertIndex);\n return;\n }\n target[childrenColumnName] = target[childrenColumnName] || [];\n if (insertIndex == undefined) {\n target[childrenColumnName].push(defaultValue);\n } else {\n target[childrenColumnName].splice(insertIndex, 0, defaultValue);\n }\n const expandedRowKeysSet = new Set(expandedRowKeys);\n expandedRowKeysSet.add(target[uidFieldKey]);\n setExpandedRowKeys([...Array.from(expandedRowKeysSet)]);\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const deleteItem = hooks.useCallbackRef((uid: string | number, index: number) => {\n const target = dataSourceUidMapFt.current[uid];\n if (target.level === 1) {\n /** 通过 formListOperation.remove 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.remove(index);\n return;\n }\n const parentUid = target.parentUid;\n if (!parentUid) {\n dataSource.splice(index, 1);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName].splice(index, 1);\n if (parentTarget[childrenColumnName].length === 0) {\n delete parentTarget[childrenColumnName];\n }\n }\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: cloneState(dataSource),\n },\n ]);\n });\n\n const moveItem = hooks.useCallbackRef((uid: string | number, fromIndex: number, toIndex: number) => {\n if (fromIndex === toIndex || toIndex < 0) return;\n const target = dataSourceUidMapFt.current[uid];\n const parentUid = target.parentUid;\n if (!parentUid) {\n const result = arrayReorder(dataSource, fromIndex, toIndex);\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: result,\n },\n ]);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName] = arrayReorder(parentTarget[childrenColumnName], fromIndex, toIndex);\n\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const setCurrentRowTargetField = hooks.useCallbackRef(\n (\n formItemPrevName: Array<string | number>,\n dataIndexConfigs: {\n name: EditableTableProDataIndex;\n value?: TAny;\n }[],\n ) => {\n fbaUtils.setFormFieldsAndTriggerValuesChange(\n form,\n dataIndexConfigs.map((item) => {\n return {\n name: [...formListCompleteName, ...formItemPrevName, ...toArray<string | number>(item.name)],\n value: item.value,\n };\n }),\n );\n },\n );\n\n const setCurrentRowChildrenValue = hooks.useCallbackRef(\n (formItemPrevName: Array<string | number>, value?: TPlainObject[]) => {\n setCurrentRowTargetField(formItemPrevName, [{ name: childrenColumnName, value }]);\n },\n );\n\n const validateRowFields = hooks.useCallbackRef(\n async (formItemPrevName: Array<string | number>, nameList: EditableTableProDataIndex[]) => {\n await form.validateFields(\n nameList.map((item) => [...formItemPrevName, ...toArray<string | number>(item)]),\n );\n },\n );\n\n const columns = useMemo(() => {\n return props.columns.map((column) => {\n const title = column.title;\n const support = isValidElement(title) || typeof title === 'string';\n let titleRender: ReactElement | string | undefined = title;\n if (column.tipsWrapperProps && support) {\n if (typeof column.tipsWrapperProps === 'string') {\n titleRender = (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: column.tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n );\n } else {\n titleRender = <TipsWrapper {...column.tipsWrapperProps}>{title}</TipsWrapper>;\n }\n }\n\n let required = column.required;\n\n if (!required && typeof column.formItemProps === 'object' && column.formItemProps.rules?.length) {\n required = !!column.formItemProps.rules.find((item) => !!item['required']);\n }\n\n return {\n onCell: () => {\n return {\n valign: props.tableProps?.cellVerticalAlign || 'middle',\n };\n },\n ...column,\n title: required ? (\n <TextSymbolWrapper\n style={{ marginLeft: column.align === 'center' ? undefined : 10 }}\n text={titleRender}\n position=\"before\"\n symbolType=\"required\"\n />\n ) : (\n titleRender\n ),\n render: (value, record, index) => {\n if (isUndefinedOrNull(column.render)) {\n return value;\n }\n const uid = record[uidFieldKey];\n const dataIndex = toArray<string>(column['dataIndex']);\n const formItemPrevName = getFormItemName(record);\n const dataSourceTarget = dataSourceUidMapFt.current[uid];\n\n const editable =\n typeof column?.editable === 'function' ? column?.editable(record, index) : column?.editable;\n const tableRowFormItemCompleteName = [...formListCompleteName, ...formItemPrevName];\n\n const renderOperationProps: EditableTableProOperation = {\n editable,\n add: addItem.bind(null, uid),\n remove: deleteItem.bind(null, uid),\n move: moveItem.bind(null, uid),\n level: dataSourceTarget.level,\n parentItem: dataSourceTarget.parentUid\n ? dataSourceUidMapFt.current[dataSourceTarget.parentUid]\n : null,\n tableRowFormItemName: formItemPrevName,\n tableRowFormItemCompleteName,\n setCurrentRowTargetField: setCurrentRowTargetField.bind(null, formItemPrevName),\n setCurrentRowChildrenValue: setCurrentRowChildrenValue.bind(null, formItemPrevName),\n validateRowFields: validateRowFields.bind(null, tableRowFormItemCompleteName),\n };\n if (editable === true) {\n let formItemProps =\n typeof column.formItemProps === 'function'\n ? column.formItemProps(value, record, index, renderOperationProps)\n : column.formItemProps;\n\n if (!formItemProps?.rules?.length && required) {\n formItemProps = {\n ...formItemProps,\n rules: [{ required: true, message: '' }],\n };\n }\n\n return (\n <FormItemWrapper\n {...formItemProps}\n name={[...formItemPrevName, ...dataIndex]}\n style={{ marginBottom: 0, ...formItemProps?.style }}\n >\n {column.render?.(value, record, index, renderOperationProps) as React.ReactNode}\n </FormItemWrapper>\n );\n }\n return column.render?.(value, record, index, renderOperationProps);\n },\n };\n }) as ColumnsType<TPlainObject>;\n }, [\n props.columns,\n props.tableProps?.cellVerticalAlign,\n uidFieldKey,\n getFormItemName,\n formListCompleteName,\n addItem,\n deleteItem,\n moveItem,\n setCurrentRowTargetField,\n setCurrentRowChildrenValue,\n validateRowFields,\n ]);\n\n const className = classNames(\n 'editable-table-pro',\n { 'editable-table-pro-layout1': expandedIconLayout === 'layout1' },\n props.className,\n );\n\n return (\n <div className={className} style={props.style}>\n <Form.List name={formListName} rules={props.rules}>\n {(fields, formListOperation, { errors }) => {\n formListOperationRef.current = formListOperation;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.tableBeforeAreaRender?.(formListOperation, fields.length)}\n <Table\n scroll={{ x: 'max-content' }}\n pagination={false}\n size=\"small\"\n {...props.tableProps}\n locale={{\n emptyText: showEmptyText ? (\n <Space size={5} style={{ color: '#ff4d4f' }}>\n <CloseCircleFilled />\n <span>{showEmptyText}</span>\n </Space>\n ) : undefined,\n }}\n expandable={{\n expandedRowKeys: expandedRowKeys,\n onExpandedRowsChange: (expandedRowKeys) => {\n setExpandedRowKeys(expandedRowKeys as string[]);\n },\n ...props.tableProps?.expandable,\n childrenColumnName: childrenColumnName,\n }}\n columns={columns}\n dataSource={dataSourceFt}\n rowKey={uidFieldKey}\n />\n <ButtonWrapper\n block\n hidden={props.hiddenFooterBtn}\n type=\"dashed\"\n icon={<PlusOutlined />}\n style={{ marginTop: 15 }}\n onClick={() => {\n const defaultValues = props.addRowDefaultValues?.();\n if (!defaultValues?.[uidFieldKey]) {\n void message.error(\n `新增行默认值必须包含唯一值字段【${uidFieldKey}】,通过 addRowDefaultValues 设置`,\n );\n return;\n }\n formListOperation.add(defaultValues);\n }}\n >\n 新增\n </ButtonWrapper>\n {props.tableAfterAreaRender?.(formListOperation, fields.length)}\n {errors.length ? (\n <Form.ErrorList\n errors={[\n <div style={{ color: '#ff4d4f', padding: '5px' }} key=\"0\">\n {errors}\n </div>,\n ]}\n />\n ) : null}\n </div>\n );\n }}\n </Form.List>\n </div>\n );\n};\n"],"names":["EditableTablePro","props","_props$tableProps2","form","Form","useFormInstance","_useState","useState","expandedRowKeys","setExpandedRowKeys","formListName","toArray","dataSourceUidMap","useRef","dataSourceUidMapFt","formListOperationRef","uidFieldKey","childrenColumnName","expandedIconLayout","formListCompleteName","dataSource","useWatch","_useState2","showEmptyText","setShowEmptyText","dataSourceFt","useMemo","queryUidErrorFlag","deep","itemList","level","parentUid","index","length","item","console","error","current","_isArray","txt","message","fbaHooks","useEffectCustom","JSON","stringify","getFormItemName","_hooks","useCallbackRef","record","uid","target","indexes","push","undefined","arr","reverse","forEach","addItem","defaultValue","insertIndex","_formListOperationRef","add","splice","expandedRowKeysSet","Set","concat","Array","from","fbaUtils","setFormFieldsAndTriggerValuesChange","name","value","deleteItem","_formListOperationRef2","remove","parentTarget","cloneState","moveItem","fromIndex","toIndex","result","arrayReorder","setCurrentRowTargetField","formItemPrevName","dataIndexConfigs","map","setCurrentRowChildrenValue","validateRowFields","nameList","Promise","$return","$error","resolve","validateFields","then","$await_1","$boundEx","columns","column","_column$formItemProps","title","support","isValidElement","titleRender","tipsWrapperProps","_jsx","TipsWrapper","tipType","popoverProps","content","children","_extends","required","formItemProps","rules","find","onCell","_props$tableProps","valign","tableProps","cellVerticalAlign","TextSymbolWrapper","style","marginLeft","align","text","position","symbolType","render","isUndefinedOrNull","dataIndex","dataSourceTarget","editable","tableRowFormItemCompleteName","renderOperationProps","bind","move","parentItem","tableRowFormItemName","_formItemProps","_formItemProps2","FormItemWrapper","marginBottom","className","_classNames","List","fields","formListOperation","_ref","_props$tableProps3","errors","_jsxs","borderRadius","border","tableBeforeAreaRender","Table","scroll","x","pagination","size","locale","emptyText","Space","color","_CloseCircleFilled","expandable","onExpandedRowsChange","rowKey","ButtonWrapper","block","hidden","hiddenFooterBtn","type","icon","_PlusOutlined","marginTop","onClick","defaultValues","addRowDefaultValues","tableAfterAreaRender","ErrorList","padding"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1890,7 +1890,7 @@ export interface EditableTableProOperation {
|
|
|
1890
1890
|
/** 同一级内移动 */
|
|
1891
1891
|
move: (fromIndex: number, toIndex: number) => void;
|
|
1892
1892
|
/** 是否可编辑 */
|
|
1893
|
-
editable
|
|
1893
|
+
editable: boolean;
|
|
1894
1894
|
/** 当前行数据层级 */
|
|
1895
1895
|
level: number;
|
|
1896
1896
|
/** 设置当前行指定字段值 */
|
|
@@ -1948,7 +1948,7 @@ export type EditableTableProColumnItem = Omit<ColumnsType[0], "render" | "title"
|
|
|
1948
1948
|
*/
|
|
1949
1949
|
render?: (value: TAny, record: TPlainObject, index: number, operation: EditableTableProOperation) => ReactElement;
|
|
1950
1950
|
/** 是否可编辑 */
|
|
1951
|
-
editable
|
|
1951
|
+
editable: boolean | ((record: TPlainObject, index: number) => boolean);
|
|
1952
1952
|
/**
|
|
1953
1953
|
* 会在 title 之后展示一个 icon
|
|
1954
1954
|
* ```
|
|
@@ -2492,17 +2492,26 @@ export type EasyTableProps = {
|
|
|
2492
2492
|
children: ReactElement | ReactElement[] | ((dataSource?: TAny) => ReactElement);
|
|
2493
2493
|
/**
|
|
2494
2494
|
* EasyTable唯一值,可用于缓存查询条件
|
|
2495
|
-
* @deprecated 已过时,如果需要缓存数据请设置
|
|
2495
|
+
* @deprecated 已过时,如果需要缓存数据请设置 cacheKey 参数
|
|
2496
2496
|
*/
|
|
2497
2497
|
modelKey?: string;
|
|
2498
2498
|
/**
|
|
2499
2499
|
* 缓存查询条件开关,默认false
|
|
2500
|
+
* @deprecated 已过时 请使用 cacheKey 参数
|
|
2500
2501
|
* ```
|
|
2501
2502
|
* 1. 是否缓存表格查询条件,在路由跳转回来时,不会丢失
|
|
2502
2503
|
* 2. 如果一个页面有多个EasyTable,并需要缓存查询条件,可设置cacheSwitch为唯一字符串
|
|
2503
2504
|
* ```
|
|
2504
2505
|
*/
|
|
2505
2506
|
cacheSwitch?: boolean | string;
|
|
2507
|
+
/**
|
|
2508
|
+
* 缓存key
|
|
2509
|
+
* ```
|
|
2510
|
+
* 1. 缓存查询条件key(刷新页面保留查询条件)
|
|
2511
|
+
* 2. 表格列折叠缓存key
|
|
2512
|
+
* ```
|
|
2513
|
+
*/
|
|
2514
|
+
cacheKey?: string;
|
|
2506
2515
|
/** 接口数据配置 */
|
|
2507
2516
|
serviceConfig: EasyTableServiceConfig;
|
|
2508
2517
|
/**
|
|
@@ -2585,8 +2594,6 @@ export type EasyTableProps = {
|
|
|
2585
2594
|
text?: string;
|
|
2586
2595
|
/** 鼠标悬浮文案 */
|
|
2587
2596
|
hoverTipText?: string;
|
|
2588
|
-
/** 缓存key,默认false,如果设置会将选择字段数据缓存在浏览器中 */
|
|
2589
|
-
cacheKey?: string;
|
|
2590
2597
|
/** 折叠字段选择事件 */
|
|
2591
2598
|
onChange?: (keys: string[]) => void;
|
|
2592
2599
|
/** 触发交互弹出类型 */
|
|
@@ -2626,9 +2633,9 @@ export type EasyTableRefApi = {
|
|
|
2626
2633
|
* 2. values 为清除后指定赋值form的数据
|
|
2627
2634
|
* ```
|
|
2628
2635
|
*/
|
|
2629
|
-
clearQueryCondition: (values?: TPlainObject) =>
|
|
2636
|
+
clearQueryCondition: (values?: TPlainObject) => void;
|
|
2630
2637
|
/** 更新Form查询条件,不会执行form.resetFields(); */
|
|
2631
|
-
updateQueryCondition: (values: TPlainObject) =>
|
|
2638
|
+
updateQueryCondition: (values: TPlainObject) => void;
|
|
2632
2639
|
/** 搜素表单实例 */
|
|
2633
2640
|
form: FormInstance;
|
|
2634
2641
|
/** 重置请求 */
|
|
@@ -2652,7 +2659,7 @@ export type EasyTableRefApi = {
|
|
|
2652
2659
|
/** 修改表格数据源,会触发onDataSourceChange函数 */
|
|
2653
2660
|
onUpdateDataSource: (dataList: TPlainObject[]) => void;
|
|
2654
2661
|
/** 自定义字段折叠触发位置,默认位置在最后一个字段标题右侧 */
|
|
2655
|
-
columnFoldTriggerRender: (children: ReactElement) => ReactElement;
|
|
2662
|
+
columnFoldTriggerRender: (children: ReactElement, columns: TEasyTableTableColumn<TPlainObject>[]) => ReactElement;
|
|
2656
2663
|
/** 查询loading状态 */
|
|
2657
2664
|
loading?: boolean;
|
|
2658
2665
|
/**
|
|
@@ -2664,6 +2671,8 @@ export type EasyTableRefApi = {
|
|
|
2664
2671
|
*/
|
|
2665
2672
|
onChangeTableColumns: (columns: TEasyTableTableColumn<TPlainObject>[]) => void;
|
|
2666
2673
|
getTableColumns: () => TEasyTableTableColumn<TPlainObject>[];
|
|
2674
|
+
/** 设置启用初始化请求 */
|
|
2675
|
+
setEnabledInitRequest: () => void;
|
|
2667
2676
|
};
|
|
2668
2677
|
export type FormOperateColProps = {
|
|
2669
2678
|
className?: string;
|
|
@@ -2834,6 +2843,8 @@ export declare const EasyTable: import("react").ForwardRefExoticComponent<EasyTa
|
|
|
2834
2843
|
};
|
|
2835
2844
|
/** 在 EasyTable子组件内才可使用 */
|
|
2836
2845
|
useEasyTable: () => EasyTableRefApi;
|
|
2846
|
+
/** 设置启用初始化请求 */
|
|
2847
|
+
setEnabledInitRequest: (cacheKey: string) => void;
|
|
2837
2848
|
};
|
|
2838
2849
|
export interface EditableFieldProps {
|
|
2839
2850
|
className?: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flatbiz/antd",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.24",
|
|
4
4
|
"description": "flat-biz ui components",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"typings": "index.d.ts",
|
|
@@ -77,4 +77,4 @@
|
|
|
77
77
|
"simple-mind-map": "^0.10.6"
|
|
78
78
|
},
|
|
79
79
|
"gitHead": "4378d433b73ee28fd7cb4c64bed8571f993eb5a9"
|
|
80
|
-
}
|
|
80
|
+
}
|