@flatbiz/antd 4.4.42 → 4.4.45
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/index.js +1 -1
- package/esm/drag-editable-table/index.js.map +1 -1
- package/esm/easy-form/index.js +1 -1
- package/esm/easy-form/index.js.map +1 -1
- package/esm/easy-table/index.js.map +1 -1
- package/esm/form-item-hidden/index.js +1 -1
- package/esm/form-item-hidden/index.js.map +1 -1
- package/index.d.ts +85 -11
- package/package.json +1 -1
|
@@ -26,5 +26,5 @@ import './../input-text-area-wrapper/index.css';
|
|
|
26
26
|
import './../icon-wrapper/index.css';
|
|
27
27
|
import './index.css';
|
|
28
28
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
29
|
-
import{a as i,_ as e}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useSensors as r,useSensor as t,PointerSensor as o,DndContext as n}from"@dnd-kit/core";import{restrictToVerticalAxis as s}from"@dnd-kit/modifiers";import{useSortable as a,SortableContext as d,verticalListSortingStrategy as m,arrayMove as p}from"@dnd-kit/sortable";import{Form as l}from"antd";import{useMemo as c,createElement as u,Children as j,cloneElement as g,forwardRef as v,useRef as f,useImperativeHandle as x}from"react";import{EditableTable as y}from"../editable-table/index.js";import{createCtx as b}from"@wove/react/cjs/create-ctx";import I from"@ant-design/icons/es/icons/DragOutlined";import{CSS as w}from"@dnd-kit/utilities";import{isUndefinedOrNull as h,noop as k}from"@flatbiz/utils";import{IconWrapper as F}from"../icon-wrapper/index.js";import{jsx as D}from"react/jsx-runtime";import"@ant-design/icons/es/icons/PlusOutlined";import"@dimjs/utils/cjs/class-names";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";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"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../table-title-tooltip/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";import"../text-symbol-wrapper/index.js";import"../tips-wrapper/index.js";import"../table-cell-render/index.js";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-object";import"@dimjs/utils/cjs/get";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-empty";import"../button-operate/index.js";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/lang/cjs/is-undefined";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"@dimjs/lang/cjs/is-null";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"../tag-list-render/index.js";import"../date-picker-wrapper/index.js";import"../time-53b3f55f.js";import"../date-range-picker-wrapper/index.js";import"../input-wrapper/index.js";import"../selector-wrapper/index.js";import"@ant-design/icons/es/icons/RedoOutlined";import"../request-status/index.js";import"@dimjs/lang/cjs/is-deep-equal";import"@dimjs/utils/cjs/json";import"pubsub-js";import"../switch-wrapper/index.js";import"@dimjs/lang/cjs/is-boolean";import"@dimjs/lang/cjs/is-number";import"../input-text-area-wrapper/index.js";import"../upload-wrapper/index.js";import"react-dom";import"@ant-design/icons/es/icons/DeleteOutlined";var K=b(),_=K[0],C=K[1];var O=["dragIcon"];var P=function r(t){var o=t.dragIcon,n=i(t,O);var s=n["data-row-key"];var d=c((function(){var i;return!h(s)?(i=t.getTableItemDataByFormListItemKey(s))==null?void 0:i[t.uidFieldKey]:undefined}),[t,s]);var m=a({id:d}),p=m.setActivatorNodeRef,l=m.listeners,v=m.setNodeRef,f=m.transform,x=m.transition,y=m.isDragging;if(h(d)){return D("tr",e({},n))}var b=e({},n.style,{transform:w.Transform.toString(f&&e({},f,{scaleY:1})),transition:x,cursor:"move"},y?{position:"relative",zIndex:9999,boxShadow:" 0px 0px 12px 4px rgba(34, 33, 81, 0.1)",backgroundColor:"var(--block-bg-color)"}:{});var K=o||D(I,{});return u("tr",e({},n,{ref:v,style:b,key:d}),j.map(t.children,(function(i){if(i.key==="__sort"){return g(i,{children:D("span",e({ref:p,style:{touchAction:"none",cursor:"move"}},l,{children:D(F,{style:{touchAction:"none",cursor:"move",padding:"1px 0px",margin:0,justifyContent:"center",color:"#787878"},icon:K,onClick:k})}))})}return i})))};var B=function i(r){var t=_();return D(P,e({},r,{dragIcon:t.dragIcon,uidFieldKey:t.uidFieldKey,getTableItemDataByFormListItemKey:t.getTableItemDataByFormListItemKey}))};var L=["dragIcon","uidFieldKey","onDragChange","disabledDrag"];var T=v((function(a,c){var u,j
|
|
29
|
+
import{a as i,_ as e}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useSensors as r,useSensor as t,PointerSensor as o,DndContext as n}from"@dnd-kit/core";import{restrictToVerticalAxis as s}from"@dnd-kit/modifiers";import{useSortable as a,SortableContext as d,verticalListSortingStrategy as m,arrayMove as p}from"@dnd-kit/sortable";import{Form as l}from"antd";import{useMemo as c,createElement as u,Children as j,cloneElement as g,forwardRef as v,useRef as f,useImperativeHandle as x}from"react";import{EditableTable as y}from"../editable-table/index.js";import{createCtx as b}from"@wove/react/cjs/create-ctx";import I from"@ant-design/icons/es/icons/DragOutlined";import{CSS as w}from"@dnd-kit/utilities";import{isUndefinedOrNull as h,noop as k}from"@flatbiz/utils";import{IconWrapper as F}from"../icon-wrapper/index.js";import{jsx as D}from"react/jsx-runtime";import"@ant-design/icons/es/icons/PlusOutlined";import"@dimjs/utils/cjs/class-names";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";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"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../table-title-tooltip/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";import"../text-symbol-wrapper/index.js";import"../tips-wrapper/index.js";import"../table-cell-render/index.js";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-object";import"@dimjs/utils/cjs/get";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-empty";import"../button-operate/index.js";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/lang/cjs/is-undefined";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"@dimjs/lang/cjs/is-null";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"../tag-list-render/index.js";import"../date-picker-wrapper/index.js";import"../time-53b3f55f.js";import"../date-range-picker-wrapper/index.js";import"../input-wrapper/index.js";import"../selector-wrapper/index.js";import"@ant-design/icons/es/icons/RedoOutlined";import"../request-status/index.js";import"@dimjs/lang/cjs/is-deep-equal";import"@dimjs/utils/cjs/json";import"pubsub-js";import"../switch-wrapper/index.js";import"@dimjs/lang/cjs/is-boolean";import"@dimjs/lang/cjs/is-number";import"../input-text-area-wrapper/index.js";import"../upload-wrapper/index.js";import"react-dom";import"@ant-design/icons/es/icons/DeleteOutlined";var K=b(),_=K[0],C=K[1];var O=["dragIcon"];var P=function r(t){var o=t.dragIcon,n=i(t,O);var s=n["data-row-key"];var d=c((function(){var i;return!h(s)?(i=t.getTableItemDataByFormListItemKey(s))==null?void 0:i[t.uidFieldKey]:undefined}),[t,s]);var m=a({id:d}),p=m.setActivatorNodeRef,l=m.listeners,v=m.setNodeRef,f=m.transform,x=m.transition,y=m.isDragging;if(h(d)){return D("tr",e({},n))}var b=e({},n.style,{transform:w.Transform.toString(f&&e({},f,{scaleY:1})),transition:x,cursor:"move"},y?{position:"relative",zIndex:9999,boxShadow:" 0px 0px 12px 4px rgba(34, 33, 81, 0.1)",backgroundColor:"var(--block-bg-color)"}:{});var K=o||D(I,{});return u("tr",e({},n,{ref:v,style:b,key:d}),j.map(t.children,(function(i){if(i.key==="__sort"){return g(i,{children:D("span",e({ref:p,style:{touchAction:"none",cursor:"move"}},l,{children:D(F,{style:{touchAction:"none",cursor:"move",padding:"1px 0px",margin:0,justifyContent:"center",color:"#787878"},icon:K,onClick:k})}))})}return i})))};var B=function i(r){var t=_();return D(P,e({},r,{dragIcon:t.dragIcon,uidFieldKey:t.uidFieldKey,getTableItemDataByFormListItemKey:t.getTableItemDataByFormListItemKey}))};var L=["dragIcon","uidFieldKey","onDragChange","disabledDrag"];var T=v((function(a,c){var u,j;var g=a.dragIcon,v=a.uidFieldKey,b=a.onDragChange,I=a.disabledDrag,w=i(a,L);var h=l.useFormInstance();var k=l.useWatch(a.name,h);var F=f(null);x(c,(function(){return F.current}));var K=r(t(o,{activationConstraint:{delay:0,tolerance:0}}));var _=function i(e){var r=e.active,t=e.over;if(r.id!==(t==null?void 0:t.id)){var o=k.findIndex((function(i){return i[v]===r.id}));var n=k.findIndex((function(i){return i[v]===(t==null?void 0:t.id)}));var s=p(k,o,n);h.setFields([{name:a.name,value:s}]);b==null?void 0:b(s,{activeId:r.id,activeIndex:o,overIndex:n})}};var O=I?w.columns:[{dataIndex:"__sort",width:50,key:"__sort"}].concat(w.columns||[]);return D(C,{value:{dragIcon:g,uidFieldKey:v,getTableItemDataByFormListItemKey:function i(e){var r;return(r=F.current)==null?void 0:r.getTableItemDataByFormListItemKey(e)}},children:D(n,{sensors:K,modifiers:[s],onDragEnd:_,children:D(d,{items:(k==null?void 0:k.map((function(i){return i[v]})))||[],strategy:m,children:D(y,e({ref:F},w,{columns:O,tableProps:e({},w.tableProps,{components:e({},(u=w.tableProps)==null?void 0:u.components,{body:e({},(j=w.tableProps)==null||(j=j.components)==null?void 0:j.body,{row:I?undefined:B})})})}))})})})}));export{T as DragEditableTable};
|
|
30
30
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-editable-table/context.ts","@flatbiz/antd/src/drag-editable-table/table-tr-handle.tsx","@flatbiz/antd/src/drag-editable-table/row.tsx","@flatbiz/antd/src/drag-editable-table/drag.tsx"],"sourcesContent":["import { type TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\nimport { type ReactElement } from 'react';\n\nexport const [getCtx, CtxProvider] = createCtx<{\n dragIcon?: ReactElement;\n getTableItemDataByFormListItemKey?: (key: number) => TPlainObject;\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, type TPlainObject } from '@flatbiz/utils';\nimport { type RowProps } from 'antd';\nimport { Children, cloneElement, useMemo, type ReactElement } from 'react';\nimport { IconWrapper } from '../icon-wrapper';\n\ntype TableTrHandleProps = RowProps & {\n dragIcon?: ReactElement;\n getTableItemDataByFormListItemKey: (key: number) => TPlainObject;\n uidFieldKey: string;\n};\nexport const TableTrHandle = (props: TableTrHandleProps) => {\n const { dragIcon, ...innerProps } = props;\n const rowId = innerProps['data-row-key'] as number;\n\n const uidValue = useMemo(() => {\n return !isUndefinedOrNull(rowId)\n ? props.getTableItemDataByFormListItemKey(rowId)?.[props.uidFieldKey]\n : undefined;\n }, [props, rowId]);\n\n const { setActivatorNodeRef, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: uidValue,\n });\n\n if (isUndefinedOrNull(uidValue)) {\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={uidValue}>\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 ref={setActivatorNodeRef} style={{ touchAction: 'none', cursor: 'move' }} {...listeners}>\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 />\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 (\n <TableTrHandle\n {...props}\n dragIcon={ctx.dragIcon}\n uidFieldKey={ctx.uidFieldKey}\n getTableItemDataByFormListItemKey={ctx.getTableItemDataByFormListItemKey}\n />\n );\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 TAny, type TPlainObject } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { forwardRef, useImperativeHandle, useRef, type ReactElement } from 'react';\nimport { EditableTable, EditableTableProps, EditableTableRefApi } from '../editable-table';\nimport { CtxProvider } from './context';\nimport { Row } from './row';\n\nexport type DragEditableTableProps = EditableTableProps & {\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 activeIndex: number;\n overIndex: number;\n },\n ) => void;\n};\n\n/**\n * 可拖拽编辑表格\n * ```\n * 1. 表格数据必须要有唯一值字段,通过参数 uidFieldKey 告诉组件\n * 2. Table 参数 components.body.row 被组件内部使用\n * ```\n */\nexport const DragEditableTable = forwardRef<EditableTableRefApi, DragEditableTableProps>((props, ref) => {\n const { dragIcon, uidFieldKey, onDragChange, disabledDrag, ...otherProps } = props;\n const form = Form.useFormInstance();\n const dataList = Form.useWatch(props.name, form);\n\n const editableTableRef = useRef<EditableTableRefApi>(null);\n\n useImperativeHandle(ref, () => {\n return editableTableRef.current as EditableTableRefApi;\n });\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: props.name,\n value: dataListNew,\n },\n ]);\n onDragChange?.(dataListNew as TPlainObject[], {\n activeId: active.id,\n activeIndex,\n overIndex,\n });\n }\n };\n\n const columns = disabledDrag\n ? otherProps.columns\n : [{ dataIndex: '__sort', width: 50, key: '__sort' }].concat((otherProps.columns || []) as TAny[]);\n\n return (\n <CtxProvider\n value={{\n dragIcon,\n uidFieldKey,\n getTableItemDataByFormListItemKey: editableTableRef.current?.getTableItemDataByFormListItemKey,\n }}\n >\n <DndContext sensors={sensors} modifiers={[restrictToVerticalAxis]} onDragEnd={onDragEnd}>\n <SortableContext\n items={dataList?.map((i) => i[uidFieldKey]) || []}\n strategy={verticalListSortingStrategy}\n >\n <EditableTable\n ref={editableTableRef}\n {...otherProps}\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","uidValue","useMemo","_props$getTableItemDa","isUndefinedOrNull","getTableItemDataByFormListItemKey","uidFieldKey","undefined","_useSortable","useSortable","id","setActivatorNodeRef","listeners","setNodeRef","transform","transition","isDragging","_jsx","_extends","style","CSS","Transform","toString","scaleY","cursor","position","zIndex","boxShadow","backgroundColor","iconElement","_DragOutlined","_createElement","ref","key","Children","map","children","child","cloneElement","touchAction","IconWrapper","padding","margin","justifyContent","color","icon","onClick","noop","Row","ctx","DragEditableTable","forwardRef","_editableTableRef$cur","_otherProps$tableProp","_otherProps$tableProp2","onDragChange","disabledDrag","otherProps","form","Form","useFormInstance","dataList","useWatch","name","editableTableRef","useRef","useImperativeHandle","current","sensors","useSensors","useSensor","PointerSensor","activationConstraint","delay","tolerance","onDragEnd","_ref","active","over","activeIndex","findIndex","i","overIndex","dataListNew","arrayMove","setFields","value","activeId","columns","dataIndex","width","concat","DndContext","modifiers","restrictToVerticalAxis","SortableContext","items","strategy","verticalListSortingStrategy","EditableTable","tableProps","components","body","row"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-editable-table/context.ts","@flatbiz/antd/src/drag-editable-table/table-tr-handle.tsx","@flatbiz/antd/src/drag-editable-table/row.tsx","@flatbiz/antd/src/drag-editable-table/drag.tsx"],"sourcesContent":["import { type TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\nimport { type ReactElement } from 'react';\n\nexport const [getCtx, CtxProvider] = createCtx<{\n dragIcon?: ReactElement;\n getTableItemDataByFormListItemKey?: (key: number) => TPlainObject;\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, type TPlainObject } from '@flatbiz/utils';\nimport { type RowProps } from 'antd';\nimport { Children, cloneElement, useMemo, type ReactElement } from 'react';\nimport { IconWrapper } from '../icon-wrapper';\n\ntype TableTrHandleProps = RowProps & {\n dragIcon?: ReactElement;\n getTableItemDataByFormListItemKey: (key: number) => TPlainObject;\n uidFieldKey: string;\n};\nexport const TableTrHandle = (props: TableTrHandleProps) => {\n const { dragIcon, ...innerProps } = props;\n const rowId = innerProps['data-row-key'] as number;\n\n const uidValue = useMemo(() => {\n return !isUndefinedOrNull(rowId)\n ? props.getTableItemDataByFormListItemKey(rowId)?.[props.uidFieldKey]\n : undefined;\n }, [props, rowId]);\n\n const { setActivatorNodeRef, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: uidValue,\n });\n\n if (isUndefinedOrNull(uidValue)) {\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={uidValue}>\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 ref={setActivatorNodeRef} style={{ touchAction: 'none', cursor: 'move' }} {...listeners}>\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 />\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 (\n <TableTrHandle\n {...props}\n dragIcon={ctx.dragIcon}\n uidFieldKey={ctx.uidFieldKey}\n getTableItemDataByFormListItemKey={ctx.getTableItemDataByFormListItemKey}\n />\n );\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 TAny, type TPlainObject } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { forwardRef, useImperativeHandle, useRef, type ReactElement } from 'react';\nimport { EditableTable, EditableTableProps, EditableTableRefApi } from '../editable-table';\nimport { CtxProvider } from './context';\nimport { Row } from './row';\n\nexport type DragEditableTableProps = EditableTableProps & {\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 activeIndex: number;\n overIndex: number;\n },\n ) => void;\n};\n\n/**\n * 可拖拽编辑表格\n * ```\n * 1. 表格数据必须要有唯一值字段,通过参数 uidFieldKey 告诉组件\n * 2. Table 参数 components.body.row 被组件内部使用\n * ```\n */\nexport const DragEditableTable = forwardRef<EditableTableRefApi, DragEditableTableProps>((props, ref) => {\n const { dragIcon, uidFieldKey, onDragChange, disabledDrag, ...otherProps } = props;\n const form = Form.useFormInstance();\n const dataList = Form.useWatch(props.name, form);\n\n const editableTableRef = useRef<EditableTableRefApi>(null);\n\n useImperativeHandle(ref, () => {\n return editableTableRef.current as EditableTableRefApi;\n });\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: props.name,\n value: dataListNew,\n },\n ]);\n onDragChange?.(dataListNew as TPlainObject[], {\n activeId: active.id,\n activeIndex,\n overIndex,\n });\n }\n };\n\n const columns = disabledDrag\n ? otherProps.columns\n : [{ dataIndex: '__sort', width: 50, key: '__sort' }].concat((otherProps.columns || []) as TAny[]);\n\n return (\n <CtxProvider\n value={{\n dragIcon,\n uidFieldKey,\n getTableItemDataByFormListItemKey: (key) => {\n return editableTableRef.current?.getTableItemDataByFormListItemKey(key) as TPlainObject;\n },\n }}\n >\n <DndContext sensors={sensors} modifiers={[restrictToVerticalAxis]} onDragEnd={onDragEnd}>\n <SortableContext\n items={dataList?.map((i) => i[uidFieldKey]) || []}\n strategy={verticalListSortingStrategy}\n >\n <EditableTable\n ref={editableTableRef}\n {...otherProps}\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","uidValue","useMemo","_props$getTableItemDa","isUndefinedOrNull","getTableItemDataByFormListItemKey","uidFieldKey","undefined","_useSortable","useSortable","id","setActivatorNodeRef","listeners","setNodeRef","transform","transition","isDragging","_jsx","_extends","style","CSS","Transform","toString","scaleY","cursor","position","zIndex","boxShadow","backgroundColor","iconElement","_DragOutlined","_createElement","ref","key","Children","map","children","child","cloneElement","touchAction","IconWrapper","padding","margin","justifyContent","color","icon","onClick","noop","Row","ctx","DragEditableTable","forwardRef","_otherProps$tableProp","_otherProps$tableProp2","onDragChange","disabledDrag","otherProps","form","Form","useFormInstance","dataList","useWatch","name","editableTableRef","useRef","useImperativeHandle","current","sensors","useSensors","useSensor","PointerSensor","activationConstraint","delay","tolerance","onDragEnd","_ref","active","over","activeIndex","findIndex","i","overIndex","dataListNew","arrayMove","setFields","value","activeId","columns","dataIndex","width","concat","_editableTableRef$cur","DndContext","modifiers","restrictToVerticalAxis","SortableContext","items","strategy","verticalListSortingStrategy","EditableTable","tableProps","components","body","row"],"mappings":"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"}
|
package/esm/easy-form/index.js
CHANGED
|
@@ -5,5 +5,5 @@ import './../form-wrapper/index.css';
|
|
|
5
5
|
import './../pre-defined-class-name/index.css';
|
|
6
6
|
import './index.css';
|
|
7
7
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
8
|
-
import{classNames as e}from"@dimjs/utils/cjs/class-names";import{a as r,_ as
|
|
8
|
+
import{classNames as e}from"@dimjs/utils/cjs/class-names";import{a as r,_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isUndefinedOrNull as l,dom as i}from"@flatbiz/utils";import{useMemo as n,useRef as a,Fragment as o,Children as m}from"react";import{BoxGrid as s}from"../box-grid/index.js";import{fbaHooks as d}from"../fba-hooks/index.js";import{FormWrapper as u}from"../form-wrapper/index.js";import{preDefinedClassName as f}from"../pre-defined-class-name/index.js";import{jsxs as c,jsx as p}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-number";import"ahooks";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"../use-responsive-point-21b8c601.js";import"antd";var x=["column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","formItemGap","isPure"];var y=function y(v){var h=d.useResponsivePoint()||"";var g=v.column,b=v.forceColumn,j=v.children,I=v.width,N=v.gridGutter,w=v.labelWidth,G=v.labelItemVertical,A=v.labelAlign,C=v.formItemGap,T=C===void 0?"15":C,F=v.isPure,P=r(v,x);var W=n((function(){if(b){var e=24/b;return{xs:e,sm:e,md:e,lg:e,xl:e,xxl:e}}if(!g){return{xs:24,sm:12,md:12,lg:8,xl:8,xxl:6}}var r={1:{xs:24,sm:24,md:24,lg:24,xl:24,xxl:24},2:{xs:24,sm:12,md:12,lg:12,xl:12,xxl:12},3:{xs:24,sm:12,md:12,lg:8,xl:8,xxl:8},4:{xs:24,sm:12,md:12,lg:6,xl:6,xxl:6}};return r[g]}),[g,b]);var V=function e(){return m.toArray(j).filter((function(e){return e.props["hidden"]||e.type["domTypeName"]=="FormItemHidden"}))};var k=function e(){return m.toArray(j).filter((function(e){return!e.props["hidden"]&&e.type["domTypeName"]!="FormItemHidden"})).map((function(e,r){if(e.type["domTypeName"]==="BoxGridCol")return p(o,{children:e},r);var l=undefined;if(e.type["domTypeName"]==="FormItemWrapper"||e.type["domTypeName"]==="FormItemText"){l=e.props["span"];if(l){if(h==="xs"){l=24}else if(h==="sm"){l=l>12?l:12}}}return p(s.Col,t({},W,{span:l,children:e}),r)})).filter(Boolean)};var B=n((function(){if(["xs","sm"].includes(h)||!I){return{}}return{width:I}}),[h]);var H=l(N)?[15,0]:N;var R=a(null);var L=n((function(){try{if(R.current){var e=i.findParentsElement(R.current,(function(e){var r;return(r=e.classList)==null||r.contains==null?void 0:r.contains("easy-form")}));return e?true:false}return undefined}catch(e){return false}}),[R.current]);var _=n((function(){return f.getFormLayoutClassName({labelWidth:w,labelItemVertical:G,labelAlign:A,formItemGap:T,className:P.className})}),[w,G,A,T]);return c(o,{children:[p("div",{className:"easy-form-anchor",ref:R}),L===true?p("div",{style:t({},B,P.style),className:e("easy-form",{"easy-form-pure":F},"easy-form-nested",_),children:F?j:p(s.Row,{gutter:H,children:k()})}):undefined,L===false?c(u,t({},P,{labelWidth:w,labelAlign:A,labelItemVertical:G,formItemGap:T,style:t({},B,P.style),className:e("easy-form",{"easy-form-pure":F},_),autoComplete:"off",children:[V(),F?j:p(s.Row,{gutter:H,children:k()})]})):undefined]})};export{y as EasyForm};
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-form/form.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { dom, isUndefinedOrNull } from '@flatbiz/utils';\nimport { Children, Fragment, ReactNode, useMemo, useRef } from 'react';\nimport { BoxGrid } from '../box-grid';\nimport { BoxRowProps } from '../box-grid/row';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport './style.less';\n\nexport type EasyFormProps = Omit<FormWrapperProps, 'children'> & {\n /**\n * 定义一行显示几列(当外层宽度尺寸大于 992px(lg) 时,一行显示几列), 默认值:3\n * ```\n * 1. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响(column=1除外)\n * 2. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 3. 列数尺寸定义\n * {\n * 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n * 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n * 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n * 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n * };\n * ```\n */\n column?: 1 | 2 | 3 | 4;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4;\n /**\n * Form显示宽度,可数值、可百分比;在小屏幕尺寸(xs、sm)上无效\n */\n width?: number | string;\n /** 网格间距 */\n gridGutter?: BoxRowProps['gutter'];\n children: ReactNode;\n /**\n * 是否为纯净模式,对EasyForm的子节点不做任何包装处理\n */\n isPure?: boolean;\n};\n\n/**\n * 简单Form布局,可自定义网格布局\n * ```\n * 1. demo:https://fex.qa.tcshuke.com/docs/admin/main/form/grid\n * 2. EasyForm的children列表会进行网格化布局,可通过设置 isPure = true设置纯净模式(对EasyForm的子节点不做任何包装处理)\n * 3. EasyForm可嵌套使用,嵌套内部的<EasyForm />节点Form相关属性失效,例如属性form、initialValues等都失效\n * <EasyForm form={form}>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * </EasyForm>\n * 4. 布局网格以当前组件的宽度来计算的,不是屏幕宽度\n * 5. EasyForm 子节点包含 hidden = true 会被忽略\n * 6. 通过 column 可定义一行显示几列FormItem\n * 7. 通过 labelItemVertical 可定义 formitem 竖直布局\n * 8. 通过 formItemGap 可定义 formItem竖直方向间隙\n * 9. 通过 forceColumn 可强制定义一行显示几列,不考虑响应式\n * 10. 通过 labelWidth 可控制Form内部所有label的宽度(可实现整齐效果)\n * 11. 自定义栅格占位格数,见下方`例如`\n\n * 例如\n * <EasyForm column={3}>\n *\t <FormItemWrapper name=\"field1\" label=\"条件1\">\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <!-- !!自定义栅格占位格数第一种方式:可通过使用 BoxGrid.Col 包裹元素来自定义网格占比 -->\n *\t <BoxGrid.Col span={24}>\n *\t <FormItemWrapper name=\"field5\" label=\"条件5\">\n *\t \t<Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t </BoxGrid.Col>\n *\t <!-- !!自定义栅格占位格数第二种方式:如果为FormItemWrapper组件,可设置span属性 -->\n *\t <FormItemWrapper name=\"field6\" label=\"条件6\" span={24}>\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n * </EasyForm>\n * ```\n */\nexport const EasyForm = (props: EasyFormProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const {\n column,\n forceColumn,\n children,\n width,\n gridGutter,\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap = '15',\n isPure,\n ...otherProps\n } = props;\n\n const gridSize = useMemo(() => {\n if (forceColumn) {\n const num = 24 / forceColumn;\n return { xs: num, sm: num, md: num, lg: num, xl: num, xxl: num };\n }\n if (!column) {\n return { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n }\n const columnMap = {\n 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n };\n return columnMap[column];\n }, [column, forceColumn]);\n\n const getFormRowChildren = () => {\n return Children.toArray(children)\n .map((item: any, index) => {\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'BoxGridCol') return <Fragment key={index}>{item}</Fragment>;\n let span: number | undefined = undefined;\n if (item.type['domTypeName'] === 'FormItemWrapper' || item.type['domTypeName'] === 'FormItemText') {\n span = item.props['span'] as number;\n if (span) {\n if (screenType === 'xs') {\n span = 24;\n } else if (screenType === 'sm') {\n span = span > 12 ? span : 12;\n }\n }\n }\n return (\n <BoxGrid.Col key={index} {...gridSize} span={span}>\n {item}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\n };\n\n const innerStyle = useMemo(() => {\n /** 小屏幕不控制宽度 */\n if (['xs', 'sm'].includes(screenType) || !width) {\n return {};\n }\n return { width };\n }, [screenType]);\n\n const gutter = (isUndefinedOrNull(gridGutter) ? [15, 0] : gridGutter) as BoxRowProps['gutter'];\n const anchorRef = useRef<HTMLDivElement>(null);\n\n // 是否嵌套内部EasyForm节点\n const isNestedEasyForm = useMemo(() => {\n try {\n if (anchorRef.current) {\n const target = dom.findParentsElement(anchorRef.current, (node) => {\n return node.classList?.contains?.('easy-form');\n });\n return target ? true : false;\n }\n return undefined;\n } catch (error) {\n return false;\n }\n }, [anchorRef.current]);\n\n const fromLayoutClassName = useMemo(() => {\n return preDefinedClassName.getFormLayoutClassName({\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap,\n className: otherProps.className,\n });\n }, [labelWidth, labelItemVertical, labelAlign, formItemGap]);\n return (\n <Fragment>\n <div className=\"easy-form-anchor\" ref={anchorRef}></div>\n {isNestedEasyForm === true ? (\n <div\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames(\n 'easy-form',\n { 'easy-form-pure': isPure },\n 'easy-form-nested',\n fromLayoutClassName,\n )}\n >\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </div>\n ) : undefined}\n {isNestedEasyForm === false ? (\n <FormWrapper\n {...otherProps}\n labelWidth={labelWidth}\n labelAlign={labelAlign}\n labelItemVertical={labelItemVertical}\n formItemGap={formItemGap}\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames('easy-form', { 'easy-form-pure': isPure }, fromLayoutClassName)}\n autoComplete=\"off\"\n >\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </FormWrapper>\n ) : undefined}\n </Fragment>\n );\n};\n"],"names":["EasyForm","props","screenType","fbaHooks","useResponsivePoint","column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","_props$formItemGap","formItemGap","isPure","otherProps","_objectWithoutPropertiesLoose","_excluded","gridSize","useMemo","num","xs","sm","md","lg","xl","xxl","columnMap","getFormRowChildren","Children","toArray","map","item","index","type","_jsx","Fragment","span","undefined","BoxGrid","Col","_extends","filter","Boolean","innerStyle","includes","gutter","isUndefinedOrNull","anchorRef","useRef","isNestedEasyForm","current","target","dom","findParentsElement","node","_node$classList","classList","contains","error","fromLayoutClassName","preDefinedClassName","getFormLayoutClassName","className","_jsxs","ref","style","_classNames","Row","FormWrapper","autoComplete"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-form/form.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { dom, isUndefinedOrNull } from '@flatbiz/utils';\nimport { Children, Fragment, ReactNode, useMemo, useRef } from 'react';\nimport { BoxGrid } from '../box-grid';\nimport { BoxRowProps } from '../box-grid/row';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport './style.less';\n\nexport type EasyFormProps = Omit<FormWrapperProps, 'children'> & {\n /**\n * 定义一行显示几列(当外层宽度尺寸大于 992px(lg) 时,一行显示几列), 默认值:3\n * ```\n * 1. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响(column=1除外)\n * 2. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 3. 列数尺寸定义\n * {\n * 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n * 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n * 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n * 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n * };\n * ```\n */\n column?: 1 | 2 | 3 | 4;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4;\n /**\n * Form显示宽度,可数值、可百分比;在小屏幕尺寸(xs、sm)上无效\n */\n width?: number | string;\n /** 网格间距 */\n gridGutter?: BoxRowProps['gutter'];\n children: ReactNode;\n /**\n * 是否为纯净模式,对EasyForm的子节点不做任何包装处理\n */\n isPure?: boolean;\n};\n\n/**\n * 简单Form布局,可自定义网格布局\n * ```\n * 1. demo:https://fex.qa.tcshuke.com/docs/admin/main/form/grid\n * 2. EasyForm的children列表会进行网格化布局,可通过设置 isPure = true设置纯净模式(对EasyForm的子节点不做任何包装处理)\n * 3. EasyForm可嵌套使用,嵌套内部的<EasyForm />节点Form相关属性失效,例如属性form、initialValues等都失效\n * <EasyForm form={form}>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * </EasyForm>\n * 4. 布局网格以当前组件的宽度来计算的,不是屏幕宽度\n * 5. EasyForm 子节点包含 hidden = true 会被忽略\n * 6. 通过 column 可定义一行显示几列FormItem\n * 7. 通过 labelItemVertical 可定义 formitem 竖直布局\n * 8. 通过 formItemGap 可定义 formItem竖直方向间隙\n * 9. 通过 forceColumn 可强制定义一行显示几列,不考虑响应式\n * 10. 通过 labelWidth 可控制Form内部所有label的宽度(可实现整齐效果)\n * 11. 自定义栅格占位格数,见下方`例如`\n\n * 例如\n * <EasyForm column={3}>\n *\t <FormItemWrapper name=\"field1\" label=\"条件1\">\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <!-- !!自定义栅格占位格数第一种方式:可通过使用 BoxGrid.Col 包裹元素来自定义网格占比 -->\n *\t <BoxGrid.Col span={24}>\n *\t <FormItemWrapper name=\"field5\" label=\"条件5\">\n *\t \t<Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t </BoxGrid.Col>\n *\t <!-- !!自定义栅格占位格数第二种方式:如果为FormItemWrapper组件,可设置span属性 -->\n *\t <FormItemWrapper name=\"field6\" label=\"条件6\" span={24}>\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n * </EasyForm>\n * ```\n */\nexport const EasyForm = (props: EasyFormProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const {\n column,\n forceColumn,\n children,\n width,\n gridGutter,\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap = '15',\n isPure,\n ...otherProps\n } = props;\n\n const gridSize = useMemo(() => {\n if (forceColumn) {\n const num = 24 / forceColumn;\n return { xs: num, sm: num, md: num, lg: num, xl: num, xxl: num };\n }\n if (!column) {\n return { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n }\n const columnMap = {\n 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n };\n return columnMap[column];\n }, [column, forceColumn]);\n\n const getHiddenRowChildren = () => {\n return Children.toArray(children).filter((item: any) => {\n return item.props['hidden'] || item.type['domTypeName'] == 'FormItemHidden';\n });\n };\n\n const getFormRowChildren = () => {\n return Children.toArray(children)\n .filter((item: any) => {\n return !item.props['hidden'] && item.type['domTypeName'] != 'FormItemHidden';\n })\n .map((item: any, index) => {\n if (item.type['domTypeName'] === 'BoxGridCol') return <Fragment key={index}>{item}</Fragment>;\n let span: number | undefined = undefined;\n if (item.type['domTypeName'] === 'FormItemWrapper' || item.type['domTypeName'] === 'FormItemText') {\n span = item.props['span'] as number;\n if (span) {\n if (screenType === 'xs') {\n span = 24;\n } else if (screenType === 'sm') {\n span = span > 12 ? span : 12;\n }\n }\n }\n return (\n <BoxGrid.Col key={index} {...gridSize} span={span}>\n {item}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\n };\n\n const innerStyle = useMemo(() => {\n /** 小屏幕不控制宽度 */\n if (['xs', 'sm'].includes(screenType) || !width) {\n return {};\n }\n return { width };\n }, [screenType]);\n\n const gutter = (isUndefinedOrNull(gridGutter) ? [15, 0] : gridGutter) as BoxRowProps['gutter'];\n const anchorRef = useRef<HTMLDivElement>(null);\n\n // 是否嵌套内部EasyForm节点\n const isNestedEasyForm = useMemo(() => {\n try {\n if (anchorRef.current) {\n const target = dom.findParentsElement(anchorRef.current, (node) => {\n return node.classList?.contains?.('easy-form');\n });\n return target ? true : false;\n }\n return undefined;\n } catch (error) {\n return false;\n }\n }, [anchorRef.current]);\n\n const fromLayoutClassName = useMemo(() => {\n return preDefinedClassName.getFormLayoutClassName({\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap,\n className: otherProps.className,\n });\n }, [labelWidth, labelItemVertical, labelAlign, formItemGap]);\n return (\n <Fragment>\n <div className=\"easy-form-anchor\" ref={anchorRef}></div>\n {isNestedEasyForm === true ? (\n <div\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames(\n 'easy-form',\n { 'easy-form-pure': isPure },\n 'easy-form-nested',\n fromLayoutClassName,\n )}\n >\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </div>\n ) : undefined}\n {isNestedEasyForm === false ? (\n <FormWrapper\n {...otherProps}\n labelWidth={labelWidth}\n labelAlign={labelAlign}\n labelItemVertical={labelItemVertical}\n formItemGap={formItemGap}\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames('easy-form', { 'easy-form-pure': isPure }, fromLayoutClassName)}\n autoComplete=\"off\"\n >\n {getHiddenRowChildren()}\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </FormWrapper>\n ) : undefined}\n </Fragment>\n );\n};\n"],"names":["EasyForm","props","screenType","fbaHooks","useResponsivePoint","column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","_props$formItemGap","formItemGap","isPure","otherProps","_objectWithoutPropertiesLoose","_excluded","gridSize","useMemo","num","xs","sm","md","lg","xl","xxl","columnMap","getHiddenRowChildren","Children","toArray","filter","item","type","getFormRowChildren","map","index","_jsx","Fragment","span","undefined","BoxGrid","Col","_extends","Boolean","innerStyle","includes","gutter","isUndefinedOrNull","anchorRef","useRef","isNestedEasyForm","current","target","dom","findParentsElement","node","_node$classList","classList","contains","error","fromLayoutClassName","preDefinedClassName","getFormLayoutClassName","className","_jsxs","ref","style","_classNames","Row","FormWrapper","autoComplete"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@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/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { noop, TPlainObject } from '@flatbiz/utils';\nimport { FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { EasyTableRefApi, 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 columns: TEasyTableTableColumn<TPlainObject>[];\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { localStorageCache, TAny, TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { ColumnsType } from 'antd/es/table';\nimport { TableRowSelection } from 'antd/es/table/interface';\nimport { CSSProperties, Fragment, useState } 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}`, { keys: 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 { localStorageCache } from '@flatbiz/utils';\nimport { Checkbox, Popover } from 'antd';\nimport { CSSProperties, Fragment, ReactElement, useState } 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 { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, 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 { localStorageCache, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n CSSProperties,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { FlexLayout } from '../flex-layout';\nimport { IconWrapper } from '../icon-wrapper';\nimport { PaginationWrapper } from '../pagination-wrapper';\nimport { SvgHttpView } from '../svg-http-view';\nimport { TableTitleTooltip } from '../table-title-tooltip';\nimport { TipsWrapper } from '../tips-wrapper';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport { easyTableModel } from './model';\nimport './style.less';\nimport { EasyTableProps, EasyTableRefApi, 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 const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: any;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: any;\n loading?: boolean;\n };\n }>({});\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 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 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(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) {\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 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: any) => {\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 }, []);\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 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 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 getRequestParams,\n onResetRequest,\n form,\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 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 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 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 columnsMerge = (dynamicColumns ? dynamicColumns : baseColumnsRef.current) as TPlainObject[];\n\n let tableColumns = useMemo(() => {\n const tempList = columnsMerge\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, hidden, isFold, ...otherProps } = item;\n if (hidden) return null;\n if (isFold && !showFoldKeyList.includes(item.dataIndex as string)) return null;\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 }, [columnsMerge, showFoldKeyList]);\n\n const foldColumnList = columnsMerge.filter((item: any) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n tableColumns = useMemo(() => {\n if (columnFoldConfig?.hidden) return tableColumns;\n const finalItem = tableColumns[tableColumns.length - 1] as TPlainObject;\n if (foldColumnList.length > 0 && tableColumns.length > 0) {\n const foldColumnTarget = tableColumns.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 = 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={onOpenColumnFoldModal}\n text={columnFoldConfig?.text}\n size=\"small\"\n icon={columnFoldConfig?.icon || <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />}\n hoverTips={columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={foldColumnList as TAny[]}\n onChange={onChangeFoldColumnList}\n cacheKey={columnFoldConfig?.cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n <IconWrapper\n text={columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n columnFoldConfig?.icon || <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return tableColumns;\n }, [tableColumns, foldColumnList, columnFoldConfig]);\n\n tableColumns = useMemo(() => {\n if (!Object.keys(asyncColumnRequestResult)) return tableColumns;\n return tableColumns.map((item: any) => {\n const dataIndex = item.dataIndex as string;\n const result = 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 }, [tableColumns, asyncColumnRequestResult]);\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 onInnerRequest({\n [fieldNames.pageSize]: state.queryCondition[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n 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 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: tableColumns,\n initialValues: props.initialValues,\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 <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeFoldColumnList}\n cacheKey={columnFoldConfig?.cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { FormInstance } from 'antd';\nimport { Children, CSSProperties, ReactElement, useContext, useMemo, useState } 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 { useResponsivePoint } from '../fba-hooks/use-responsive-point';\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 * -- 自定义网格布局 使用 FormCol组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormCol span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormCol>\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 = 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 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\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 { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Table, TableProps } from 'antd';\nimport { CSSProperties, Fragment, ReactElement, useContext, useMemo } from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { SmallSelect } from '../pagination-wrapper/select';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { EasyTableContext } from './context';\nimport { easyTableModel } from './model';\nimport { 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 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 {\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 ctx.onSetBaseColumns((props.columns || []) as TEasyTableTableColumn<TPlainObject>[]);\n }, [props.columns]);\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 /** loading表格 */\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 any}\n columns={ctx.columns}\n loading={true}\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={ctx.columns}\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={ctx.columns}\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 </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 * -- 自定义网格布局 使用 FormCol组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormCol span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormCol>\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","FoldOperate","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","rowSelection","type","onChange","cacheKey","localStorageCache","set","keys","columns","title","dataIndex","render","value","recrd","_jsx","Fragment","children","Drawer","open","onClose","width","styles","body","padding","Table","bordered","size","rowKey","pagination","scroll","x","dataSource","dataList","FoldOperateDropdown","content","Checkbox","Group","defaultValue","style","display","flexDirection","map","item","label","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","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","easyTableId","_hooks","useId","undefined","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","asyncColumnRequestResultRef","useRef","_useState5","asyncColumnRequestResult","setAsyncColumnRequestResult","_useState6","_cacheValue$keys","cacheValue","get","cacheKeyList","_isArray","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","modelKey","useMemo","cacheSwitch","location","pathname","_easyTableModel$useSt","useStore","pageSize","initialPaginationParams","initRequest","paginationStatusRef","respOriginalDataRef","baseColumnsRef","_useState7","dynamicColumns","setDynamicColumns","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","resolve","then","$await_2","cloneState","serviceConfig","$await_3","current","onDataSourceChange","_get","fbaHooks","useEffectCustom","hasPagination","getPaginationStatus","_extends2","initialValues","useEffect","_loop","_extends3","element","index","_extends4","catch","_extends5","console","clearQueryCondition","values","$await_4","resetFields","setFieldsValue","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","$await_5","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","columnFoldTriggerRender","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","onChangeFoldColumnList","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onFormFinish","isFull","_isUndefined","className","_classNames","filterFixed","paginationFixed","paginationData","showSizeChanger","showTotal","columnsMerge","tableColumns","tempList","tooltip","tipsWrapperProps","hidden","isFold","otherProps","_objectWithoutPropertiesLoose","_excluded","includes","TipsWrapper","tipType","popoverProps","TableTitleTooltip","Boolean","concat","keyList","finalItem","foldColumnTarget","find","_jsxs","FlexLayout","direction","fullIndex","alignItems","IconWrapper","text","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","Object","result","ButtonWrapper","loadingPosition","removeGap","asyncRender","record","page","_onInnerRequest","_props$pagination","useUpdateEffect","_onInnerRequest2","_onInnerRequest3","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","PaginationWrapper","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_1","formRowChildren","defaultRightList","htmlType","customFormOperateCol","customRightList","rightList","leftList","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","keyItem","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","EasyTableTable","isSync","_onRequest","_onRequest2","tablePaginationData","selectComponentClass","SmallSelect","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","getUuid","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","fbaUtils","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@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/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { noop, TPlainObject } from '@flatbiz/utils';\nimport { FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { EasyTableRefApi, 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 columns: TEasyTableTableColumn<TPlainObject>[];\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { localStorageCache, TAny, TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { ColumnsType } from 'antd/es/table';\nimport { TableRowSelection } from 'antd/es/table/interface';\nimport { CSSProperties, Fragment, useState } 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}`, { keys: 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 { localStorageCache } from '@flatbiz/utils';\nimport { Checkbox, Popover } from 'antd';\nimport { CSSProperties, Fragment, ReactElement, useState } 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 { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, 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 { localStorageCache, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n CSSProperties,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { FlexLayout } from '../flex-layout';\nimport { IconWrapper } from '../icon-wrapper';\nimport { PaginationWrapper } from '../pagination-wrapper';\nimport { SvgHttpView } from '../svg-http-view';\nimport { TableTitleTooltip } from '../table-title-tooltip';\nimport { TipsWrapper } from '../tips-wrapper';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport { easyTableModel } from './model';\nimport './style.less';\nimport { EasyTableProps, EasyTableRefApi, 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 const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: any;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: any;\n loading?: boolean;\n };\n }>({});\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 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 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(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) {\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 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: any) => {\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 }, []);\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 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 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 getRequestParams,\n onResetRequest,\n form,\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 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 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 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 columnsMerge = (dynamicColumns ? dynamicColumns : baseColumnsRef.current) as TPlainObject[];\n\n let tableColumns = useMemo(() => {\n const tempList = columnsMerge\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, hidden, isFold, ...otherProps } = item;\n if (hidden) return null;\n if (isFold && !showFoldKeyList.includes(item.dataIndex as string)) return null;\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 }, [columnsMerge, showFoldKeyList]);\n\n const foldColumnList = columnsMerge.filter((item: any) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n tableColumns = useMemo(() => {\n if (columnFoldConfig?.hidden) return tableColumns;\n const finalItem = tableColumns[tableColumns.length - 1] as TPlainObject;\n if (foldColumnList.length > 0 && tableColumns.length > 0) {\n const foldColumnTarget = tableColumns.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 = 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={onOpenColumnFoldModal}\n text={columnFoldConfig?.text}\n size=\"small\"\n icon={columnFoldConfig?.icon || <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />}\n hoverTips={columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={foldColumnList as TAny[]}\n onChange={onChangeFoldColumnList}\n cacheKey={columnFoldConfig?.cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n <IconWrapper\n text={columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n columnFoldConfig?.icon || <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return tableColumns;\n }, [tableColumns, foldColumnList, columnFoldConfig]);\n\n tableColumns = useMemo(() => {\n if (!Object.keys(asyncColumnRequestResult)) return tableColumns;\n return tableColumns.map((item: any) => {\n const dataIndex = item.dataIndex as string;\n const result = 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 }, [tableColumns, asyncColumnRequestResult]);\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 onInnerRequest({\n [fieldNames.pageSize]: state.queryCondition[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n 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 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: tableColumns,\n initialValues: props.initialValues,\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 <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeFoldColumnList}\n cacheKey={columnFoldConfig?.cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { FormInstance } from 'antd';\nimport { Children, CSSProperties, ReactElement, useContext, useMemo, useState } 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 { useResponsivePoint } from '../fba-hooks/use-responsive-point';\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 * -- 自定义网格布局 使用 FormCol组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormCol span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormCol>\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 = 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 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\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 { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Table, TableProps } from 'antd';\nimport { CSSProperties, Fragment, ReactElement, useContext, useMemo } from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { SmallSelect } from '../pagination-wrapper/select';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { EasyTableContext } from './context';\nimport { easyTableModel } from './model';\nimport { 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 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 {\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 fbaHooks.useEffectCustom(() => {\n ctx.onSetBaseColumns((props.columns || []) as TEasyTableTableColumn<TPlainObject>[]);\n }, [props.columns]);\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 /** loading表格 */\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 any}\n columns={ctx.columns}\n loading={true}\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={ctx.columns}\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={ctx.columns}\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 </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 * -- 自定义网格布局 使用 FormCol组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormCol span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormCol>\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","FoldOperate","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","rowSelection","type","onChange","cacheKey","localStorageCache","set","keys","columns","title","dataIndex","render","value","recrd","_jsx","Fragment","children","Drawer","open","onClose","width","styles","body","padding","Table","bordered","size","rowKey","pagination","scroll","x","dataSource","dataList","FoldOperateDropdown","content","Checkbox","Group","defaultValue","style","display","flexDirection","map","item","label","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","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","easyTableId","_hooks","useId","undefined","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","asyncColumnRequestResultRef","useRef","_useState5","asyncColumnRequestResult","setAsyncColumnRequestResult","_useState6","_cacheValue$keys","cacheValue","get","cacheKeyList","_isArray","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","modelKey","useMemo","cacheSwitch","location","pathname","_easyTableModel$useSt","useStore","pageSize","initialPaginationParams","initRequest","paginationStatusRef","respOriginalDataRef","baseColumnsRef","_useState7","dynamicColumns","setDynamicColumns","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","resolve","then","$await_2","cloneState","serviceConfig","$await_3","current","onDataSourceChange","_get","fbaHooks","useEffectCustom","hasPagination","getPaginationStatus","_extends2","initialValues","useEffect","_loop","_extends3","element","index","_extends4","catch","_extends5","console","clearQueryCondition","values","$await_4","resetFields","setFieldsValue","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","$await_5","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","columnFoldTriggerRender","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","onChangeFoldColumnList","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onFormFinish","isFull","_isUndefined","className","_classNames","filterFixed","paginationFixed","paginationData","showSizeChanger","showTotal","columnsMerge","tableColumns","tempList","tooltip","tipsWrapperProps","hidden","isFold","otherProps","_objectWithoutPropertiesLoose","_excluded","includes","TipsWrapper","tipType","popoverProps","TableTitleTooltip","Boolean","concat","keyList","finalItem","foldColumnTarget","find","_jsxs","FlexLayout","direction","fullIndex","alignItems","IconWrapper","text","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","Object","result","ButtonWrapper","loadingPosition","removeGap","asyncRender","record","page","_onInnerRequest","_props$pagination","useUpdateEffect","_onInnerRequest2","_onInnerRequest3","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","PaginationWrapper","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_1","formRowChildren","defaultRightList","htmlType","customFormOperateCol","customRightList","rightList","leftList","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","keyItem","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","EasyTableTable","isSync","_onRequest","_onRequest2","tablePaginationData","selectComponentClass","SmallSelect","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","getUuid","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","fbaUtils","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
import './index.css';
|
|
3
3
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
4
|
-
import{Form as
|
|
4
|
+
import{Form as e}from"antd";import{jsx as r}from"react/jsx-runtime";var m=function m(n){return r(e.Item,{name:n.name,hidden:true,children:r("span",{})})};m["domTypeName"]="FormItemHidden";export{m as FormItemHidden};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/form-item-hidden/form-item-hidden.tsx"],"sourcesContent":["import { Form, FormItemProps } from 'antd';\n\nexport type FormItemHiddenProps = {\n name: FormItemProps['name'];\n};\n\nexport const FormItemHidden = (props: FormItemHiddenProps) => {\n return (\n <Form.Item name={props.name} hidden>\n <span></span>\n </Form.Item>\n );\n};\n"],"names":["FormItemHidden","props","_jsx","Form","Item","name","hidden","children"],"mappings":";wEAMaA,EAAiB,SAAjBA,EAAkBC,GAC7B,OACEC,EAACC,EAAKC,KAAI,CAACC,KAAMJ,EAAMI,KAAMC,OAAM,KAAAC,SACjCL,EAAY,OAAA,KAGlB"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/form-item-hidden/form-item-hidden.tsx"],"sourcesContent":["import { Form, FormItemProps } from 'antd';\n\nexport type FormItemHiddenProps = {\n name: FormItemProps['name'];\n};\n\nexport const FormItemHidden = (props: FormItemHiddenProps) => {\n return (\n <Form.Item name={props.name} hidden>\n <span></span>\n </Form.Item>\n );\n};\n\nFormItemHidden['domTypeName'] = 'FormItemHidden';\n"],"names":["FormItemHidden","props","_jsx","Form","Item","name","hidden","children"],"mappings":";wEAMaA,EAAiB,SAAjBA,EAAkBC,GAC7B,OACEC,EAACC,EAAKC,KAAI,CAACC,KAAMJ,EAAMI,KAAMC,OAAM,KAAAC,SACjCL,EAAY,OAAA,KAGlB,EAEAF,EAAe,eAAiB"}
|
package/index.d.ts
CHANGED
|
@@ -459,8 +459,15 @@ export type DialogModalProps = Omit<ModalProps, "onOk" | "onCancel" | "getContai
|
|
|
459
459
|
*/
|
|
460
460
|
bodyHeightPercent?: number;
|
|
461
461
|
titleExtra?: ReactElement;
|
|
462
|
-
/**
|
|
463
|
-
|
|
462
|
+
/**
|
|
463
|
+
* null则隐藏footer
|
|
464
|
+
* ```
|
|
465
|
+
* extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据
|
|
466
|
+
* ```
|
|
467
|
+
*/
|
|
468
|
+
footer?: null | ReactElement | ReactElement[] | ((form: FormInstance, extraData?: TPlainObject) => ReactElement);
|
|
469
|
+
/** 内容高度,为styles.body.height快捷配置,优先级低于styles.body.height */
|
|
470
|
+
bodyHeight?: number;
|
|
464
471
|
};
|
|
465
472
|
/**
|
|
466
473
|
* 居中弹框
|
|
@@ -472,7 +479,7 @@ export type DialogModalProps = Omit<ModalProps, "onOk" | "onCancel" | "getContai
|
|
|
472
479
|
* 3. 需要修改默认主题风格的场景,请使用
|
|
473
480
|
* const { appDialogModal } = FbaApp.useDialogModal();
|
|
474
481
|
* appDialogModal.open({})
|
|
475
|
-
* 4.
|
|
482
|
+
* 4. size属性可使用预设的弹窗尺寸(默认值middle),如果不使用内置尺寸可设置 size = null
|
|
476
483
|
* ```
|
|
477
484
|
*/
|
|
478
485
|
export declare const dialogModal: {
|
|
@@ -486,6 +493,15 @@ export declare const dialogModal: {
|
|
|
486
493
|
* ```
|
|
487
494
|
*/
|
|
488
495
|
close: () => void;
|
|
496
|
+
/**
|
|
497
|
+
* ```
|
|
498
|
+
* 1. rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态
|
|
499
|
+
* ```
|
|
500
|
+
*/
|
|
501
|
+
useDialogModal: () => {
|
|
502
|
+
/** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */
|
|
503
|
+
rerenderFooter: (data?: TPlainObject) => void;
|
|
504
|
+
};
|
|
489
505
|
};
|
|
490
506
|
export interface DropdownMenuItem extends ButtonProps {
|
|
491
507
|
text?: string | ReactElement;
|
|
@@ -1113,11 +1129,19 @@ export type DialogDrawerProps = Omit<DrawerProps, "onOk" | "onCancel" | "getCont
|
|
|
1113
1129
|
configProviderProps?: ConfigProviderWrapperProps;
|
|
1114
1130
|
okButtonExtraProps?: Omit<ButtonWrapperProps, "onClick" | "children" | "loading">;
|
|
1115
1131
|
cancelButtonExtraProps?: Omit<ButtonWrapperProps, "onClick" | "children">;
|
|
1116
|
-
operatePosition?: "header" | "footer";
|
|
1117
|
-
operateRender?: (form: FormInstance) => ReactElement;
|
|
1118
1132
|
okHidden?: boolean;
|
|
1119
1133
|
cancelHidden?: boolean;
|
|
1134
|
+
/** 设置操作区域位置 */
|
|
1135
|
+
operatePosition?: "header" | "footer";
|
|
1136
|
+
/** 右上角自定义内容,如果operatePosition=header,此设置无效 */
|
|
1120
1137
|
extra?: ReactNode | ((form: FormInstance) => ReactElement);
|
|
1138
|
+
/**
|
|
1139
|
+
* ```
|
|
1140
|
+
* 1. 自定义弹框操作区域,通过 operatePosition 配置可以自定义位置
|
|
1141
|
+
* 2. extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据
|
|
1142
|
+
* ```
|
|
1143
|
+
*/
|
|
1144
|
+
operateRender?: (form: FormInstance, extraData?: TPlainObject) => ReactElement;
|
|
1121
1145
|
};
|
|
1122
1146
|
/**
|
|
1123
1147
|
* 抽屉弹框
|
|
@@ -1142,6 +1166,15 @@ export declare const dialogDrawer: {
|
|
|
1142
1166
|
* ```
|
|
1143
1167
|
*/
|
|
1144
1168
|
close: () => void;
|
|
1169
|
+
/**
|
|
1170
|
+
* ```
|
|
1171
|
+
* 1. rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态
|
|
1172
|
+
* ```
|
|
1173
|
+
*/
|
|
1174
|
+
useDialogDrawer: () => {
|
|
1175
|
+
/** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */
|
|
1176
|
+
rerenderFooter: (data?: TPlainObject) => void;
|
|
1177
|
+
};
|
|
1145
1178
|
};
|
|
1146
1179
|
export type DialogDrawerContentProps = {
|
|
1147
1180
|
footer?: (data: {
|
|
@@ -1678,7 +1711,9 @@ export type EditableTableColumn = Omit<ColumnsType["0"], "render"> & {
|
|
|
1678
1711
|
/** 隐藏域字段 */
|
|
1679
1712
|
hiddenField?: {
|
|
1680
1713
|
dataIndex: string;
|
|
1681
|
-
}
|
|
1714
|
+
} | {
|
|
1715
|
+
dataIndex: string;
|
|
1716
|
+
}[];
|
|
1682
1717
|
/**
|
|
1683
1718
|
* 渲染中间件,如果renderMiddleware返回值为ReactElement格式,则会终止后续逻辑,fieldConfig配置将失效
|
|
1684
1719
|
* ```
|
|
@@ -2343,6 +2378,17 @@ export type EasyTableProps = {
|
|
|
2343
2378
|
dataIndex: string;
|
|
2344
2379
|
onRequest: () => Promise<any>;
|
|
2345
2380
|
}[];
|
|
2381
|
+
/**
|
|
2382
|
+
* 调用接口前自定义判断,返回Promise.resolve才能发起查询操作
|
|
2383
|
+
* ```
|
|
2384
|
+
* 例如:
|
|
2385
|
+
* breforeRequest={async (form) => {
|
|
2386
|
+
* await sleep(100);
|
|
2387
|
+
* return form.validateFields();
|
|
2388
|
+
* }}
|
|
2389
|
+
* ```
|
|
2390
|
+
*/
|
|
2391
|
+
breforeRequest?: (form: FormInstance) => Promise<void>;
|
|
2346
2392
|
};
|
|
2347
2393
|
export type EasyTableRefApi = {
|
|
2348
2394
|
/** 外部发起请求服务 */
|
|
@@ -2658,11 +2704,19 @@ export type FbaAppDrawerProps = Omit<DrawerProps, "onOk" | "onCancel" | "getCont
|
|
|
2658
2704
|
}) => ReactElement);
|
|
2659
2705
|
okButtonExtraProps?: Omit<ButtonWrapperProps, "onClick" | "children" | "loading">;
|
|
2660
2706
|
cancelButtonExtraProps?: Omit<ButtonWrapperProps, "onClick" | "children">;
|
|
2661
|
-
operatePosition?: "header" | "footer";
|
|
2662
|
-
operateRender?: (form: FormInstance) => ReactElement;
|
|
2663
2707
|
okHidden?: boolean;
|
|
2664
2708
|
cancelHidden?: boolean;
|
|
2709
|
+
/** 设置操作区域位置 */
|
|
2710
|
+
operatePosition?: "header" | "footer";
|
|
2711
|
+
/** 右上角自定义内容,如果operatePosition=header,此设置无效 */
|
|
2665
2712
|
extra?: ReactNode | ((form: FormInstance) => ReactElement);
|
|
2713
|
+
/**
|
|
2714
|
+
* ```
|
|
2715
|
+
* 1. 自定义弹框操作区域,通过 operatePosition 配置可以自定义位置
|
|
2716
|
+
* 2. extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据
|
|
2717
|
+
* ```
|
|
2718
|
+
*/
|
|
2719
|
+
operateRender?: (form: FormInstance, extraData?: TPlainObject) => ReactElement;
|
|
2666
2720
|
};
|
|
2667
2721
|
export type FbaAppModalProps = Omit<ModalProps, "onOk" | "onCancel" | "getContainer" | "okButtonProps" | "cancelButtonProps" | "footer"> & {
|
|
2668
2722
|
/**
|
|
@@ -2693,8 +2747,13 @@ export type FbaAppModalProps = Omit<ModalProps, "onOk" | "onCancel" | "getContai
|
|
|
2693
2747
|
*/
|
|
2694
2748
|
bodyHeightPercent?: number;
|
|
2695
2749
|
titleExtra?: ReactElement;
|
|
2696
|
-
/**
|
|
2697
|
-
|
|
2750
|
+
/**
|
|
2751
|
+
* null则隐藏footer
|
|
2752
|
+
* ```
|
|
2753
|
+
* extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据
|
|
2754
|
+
* ```
|
|
2755
|
+
*/
|
|
2756
|
+
footer?: null | ReactElement | ReactElement[] | ((form: FormInstance, extraData?: TPlainObject) => ReactElement);
|
|
2698
2757
|
};
|
|
2699
2758
|
export type FbaAppAlertProps = Omit<FbaAppModalProps, "onOk" | "cancelHidden" | "cancelButtonProps" | "onCancel" | "onClick"> & {
|
|
2700
2759
|
onClick?: (e: React.MouseEvent<HTMLElement>) => void | Promise<void>;
|
|
@@ -2714,6 +2773,9 @@ export declare const FbaApp: ((props: {
|
|
|
2714
2773
|
onClose: () => void;
|
|
2715
2774
|
};
|
|
2716
2775
|
close: () => void;
|
|
2776
|
+
useAppDialogDrawer: () => {
|
|
2777
|
+
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject | undefined) => void;
|
|
2778
|
+
};
|
|
2717
2779
|
};
|
|
2718
2780
|
};
|
|
2719
2781
|
useDialogDrawer2: () => {
|
|
@@ -2722,6 +2784,9 @@ export declare const FbaApp: ((props: {
|
|
|
2722
2784
|
onClose: () => void;
|
|
2723
2785
|
};
|
|
2724
2786
|
close: () => void;
|
|
2787
|
+
useAppDialogDrawer: () => {
|
|
2788
|
+
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject | undefined) => void;
|
|
2789
|
+
};
|
|
2725
2790
|
};
|
|
2726
2791
|
};
|
|
2727
2792
|
/** 不支持多次弹框,第二个弹框可使用useDialogModal2 */
|
|
@@ -2731,6 +2796,9 @@ export declare const FbaApp: ((props: {
|
|
|
2731
2796
|
onClose: () => void;
|
|
2732
2797
|
};
|
|
2733
2798
|
close: () => void;
|
|
2799
|
+
useAppDialogModal: () => {
|
|
2800
|
+
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject | undefined) => void;
|
|
2801
|
+
};
|
|
2734
2802
|
};
|
|
2735
2803
|
};
|
|
2736
2804
|
useDialogModal2: () => {
|
|
@@ -2739,6 +2807,9 @@ export declare const FbaApp: ((props: {
|
|
|
2739
2807
|
onClose: () => void;
|
|
2740
2808
|
};
|
|
2741
2809
|
close: () => void;
|
|
2810
|
+
useAppDialogModal: () => {
|
|
2811
|
+
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject | undefined) => void;
|
|
2812
|
+
};
|
|
2742
2813
|
};
|
|
2743
2814
|
};
|
|
2744
2815
|
/** 不支持多次弹框 */
|
|
@@ -2998,7 +3069,10 @@ export declare const FormItemGroup: {
|
|
|
2998
3069
|
export type FormItemHiddenProps = {
|
|
2999
3070
|
name: FormItemProps["name"];
|
|
3000
3071
|
};
|
|
3001
|
-
export declare const FormItemHidden:
|
|
3072
|
+
export declare const FormItemHidden: {
|
|
3073
|
+
(props: FormItemHiddenProps): import("react/jsx-runtime").JSX.Element;
|
|
3074
|
+
domTypeName: string;
|
|
3075
|
+
};
|
|
3002
3076
|
export type FormItemTextServiceConfig = {
|
|
3003
3077
|
onRequest: (params?: TAny) => Promise<TAny>;
|
|
3004
3078
|
/** 接口参数,当params发生变化后,会主动发送查询请求 */
|