@flatbiz/antd 4.5.20 → 4.5.22

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.
@@ -5,10 +5,12 @@ import './../config-provider-wrapper/index.css';
5
5
  import './../fba-hooks/index.css';
6
6
  import './../types/index.css';
7
7
  import './../fba-utils/index.css';
8
+ import './../form-item-wrapper/index.css';
9
+ import './../pre-defined-class-name/index.css';
8
10
  import './../text-symbol-wrapper/index.css';
9
11
  import './../tips-wrapper/index.css';
10
12
  import './../icon-wrapper/index.css';
11
13
  import './index.css';
12
14
  /*! @flatjs/forge MIT @flatbiz/antd */
13
- import{a as r,_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useSensors as o,useSensor as e,PointerSensor as t,DndContext as n}from"@dnd-kit/core";import{restrictToVerticalAxis as a}from"@dnd-kit/modifiers";import{useSortable as s,SortableContext as d,verticalListSortingStrategy as l,arrayMove as m}from"@dnd-kit/sortable";import{Form as c}from"antd";import{EditableTablePro as p}from"../editable-table-pro/index.js";import{createCtx as u}from"@wove/react/cjs/create-ctx";import v from"@ant-design/icons/es/icons/DragOutlined";import{CSS as f}from"@dnd-kit/utilities";import{isUndefinedOrNull as g,noop as j}from"@flatbiz/utils";import{createElement as y,Children as x,cloneElement as b}from"react";import{IconWrapper as h}from"../icon-wrapper/index.js";import{jsx as I}from"react/jsx-runtime";import"@ant-design/icons/es/icons/PlusOutlined";import"@dimjs/utils/cjs/class-names";import"@wove/react/cjs/hooks";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../text-symbol-wrapper/index.js";import"../tips-wrapper/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";import"@dimjs/lang/cjs/is-undefined";var k=u(),w=k[0],C=k[1];var _=["dragIcon"];var D=function o(e){var t=e.dragIcon,n=r(e,_);var a=n["data-row-key"];var d=s({id:a}),l=d.setActivatorNodeRef,m=d.listeners,c=d.setNodeRef,p=d.transform,u=d.transition,k=d.isDragging;if(g(a)){return I("tr",i({},n))}var w=i({},n.style,{transform:f.Transform.toString(p&&i({},p,{scaleY:1})),transition:u,cursor:"move"},k?{position:"relative",zIndex:9999,boxShadow:" 0px 0px 12px 4px rgba(34, 33, 81, 0.1)",backgroundColor:"var(--block-bg-color)"}:{});var C=t||I(v,{});return y("tr",i({},n,{ref:c,style:w,key:a}),x.map(e.children,(function(r){if(r.key==="__sort"){return b(r,{children:I("span",i({ref:l,style:{touchAction:"none",cursor:"move",display:"flex",alignItems:"center",justifyContent:"center"}},m,{children:I(h,{style:{touchAction:"none",cursor:"move",padding:"1px 0px",margin:0,justifyContent:"center",color:"#787878"},icon:C,onClick:j,size:"small"})}))})}return r})))};var F=function r(o){var e=w();return I(D,i({},o,{dragIcon:e.dragIcon}))};var N=["dragIcon","uidFieldKey","onDragChange","disabledDrag","formListCompleteName","formListName"];var P=function s(u){var v,f;var g=u.dragIcon,j=u.uidFieldKey,y=u.onDragChange,x=u.disabledDrag,b=u.formListCompleteName,h=u.formListName,k=r(u,N);var w=b||h;var _=c.useFormInstance();var D=c.useWatch(w,_);var P=o(e(t,{activationConstraint:{delay:0,tolerance:0}}));var L=function r(i){var o=i.active,e=i.over;if(o.id!==(e==null?void 0:e.id)){var t=D.findIndex((function(r){return r[j]===o.id}));var n=D.findIndex((function(r){return r[j]===(e==null?void 0:e.id)}));var a=m(D,t,n);_.setFields([{name:w,value:a}]);y==null?void 0:y(a,{activeId:o.id,overId:e==null?void 0:e.id,activeIndex:t,overIndex:n})}};var z=x?k.columns:[{dataIndex:"__sort",width:40,key:"__sort",align:"center"}].concat(k.columns||[]);return I(C,{value:{dragIcon:g,uidFieldKey:j},children:I(n,{sensors:P,modifiers:[a],onDragEnd:L,children:I(d,{items:(D==null?void 0:D.map((function(r){return r[j]})))||[],strategy:l,children:I(p,i({},k,{formListName:h,uidFieldKey:j,columns:z,tableProps:i({},k.tableProps,{components:i({},(v=k.tableProps)==null?void 0:v.components,{body:i({},(f=k.tableProps)==null||(f=f.components)==null?void 0:f.body,{row:x?undefined:F})})})}))})})})};export{P as DragEditableTablePro};
15
+ import{a as r,_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useSensors as e,useSensor as o,PointerSensor as t,DndContext as n}from"@dnd-kit/core";import{restrictToVerticalAxis as a}from"@dnd-kit/modifiers";import{useSortable as s,SortableContext as d,verticalListSortingStrategy as m,arrayMove as l}from"@dnd-kit/sortable";import{Form as p}from"antd";import{EditableTablePro as c}from"../editable-table-pro/index.js";import{createCtx as u}from"@wove/react/cjs/create-ctx";import f from"@ant-design/icons/es/icons/DragOutlined";import{CSS as v}from"@dnd-kit/utilities";import{isUndefinedOrNull as g,noop as j}from"@flatbiz/utils";import{createElement as y,Children as x,cloneElement as b}from"react";import{IconWrapper as h}from"../icon-wrapper/index.js";import{jsx as I}from"react/jsx-runtime";import"@ant-design/icons/es/icons/PlusOutlined";import"@dimjs/utils/cjs/class-names";import"@wove/react/cjs/hooks";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../form-item-wrapper/index.js";import"../pre-defined-class-name/index.js";import"../text-symbol-wrapper/index.js";import"../tips-wrapper/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";import"@dimjs/lang/cjs/is-undefined";var k=u(),w=k[0],C=k[1];var _=["dragIcon"];var D=function e(o){var t=o.dragIcon,n=r(o,_);var a=n["data-row-key"];var d=s({id:a}),m=d.setActivatorNodeRef,l=d.listeners,p=d.setNodeRef,c=d.transform,u=d.transition,k=d.isDragging;if(g(a)){return I("tr",i({},n))}var w=i({},n.style,{transform:v.Transform.toString(c&&i({},c,{scaleY:1})),transition:u,cursor:"move"},k?{position:"relative",zIndex:9999,boxShadow:" 0px 0px 12px 4px rgba(34, 33, 81, 0.1)",backgroundColor:"var(--block-bg-color)"}:{});var C=t||I(f,{});return y("tr",i({},n,{ref:p,style:w,key:a}),x.map(o.children,(function(r){if(r.key==="__sort"){return b(r,{children:I("span",i({ref:m,style:{touchAction:"none",cursor:"move",display:"flex",alignItems:"center",justifyContent:"center"}},l,{children:I(h,{style:{touchAction:"none",cursor:"move",padding:"1px 0px",margin:0,justifyContent:"center",color:"#787878"},icon:C,onClick:j,size:"small"})}))})}return r})))};var F=function r(e){var o=w();return I(D,i({},e,{dragIcon:o.dragIcon}))};var N=["dragIcon","uidFieldKey","onDragChange","disabledDrag","formListCompleteName","formListName"];var P=function s(u){var f,v;var g=u.dragIcon,j=u.uidFieldKey,y=u.onDragChange,x=u.disabledDrag,b=u.formListCompleteName,h=u.formListName,k=r(u,N);var w=b||h;var _=p.useFormInstance();var D=p.useWatch(w,_);var P=e(o(t,{activationConstraint:{delay:0,tolerance:0}}));var L=function r(i){var e=i.active,o=i.over;if(e.id!==(o==null?void 0:o.id)){var t=D.findIndex((function(r){return r[j]===e.id}));var n=D.findIndex((function(r){return r[j]===(o==null?void 0:o.id)}));var a=l(D,t,n);_.setFields([{name:w,value:a}]);y==null?void 0:y(a,{activeId:e.id,overId:o==null?void 0:o.id,activeIndex:t,overIndex:n})}};var z=x?k.columns:[{dataIndex:"__sort",width:40,key:"__sort",align:"center"}].concat(k.columns||[]);return I(C,{value:{dragIcon:g,uidFieldKey:j},children:I(n,{sensors:P,modifiers:[a],onDragEnd:L,children:I(d,{items:(D==null?void 0:D.map((function(r){return r[j]})))||[],strategy:m,children:I(c,i({},k,{formListName:h,uidFieldKey:j,columns:z,tableProps:i({},k.tableProps,{components:i({},(f=k.tableProps)==null?void 0:f.components,{body:i({},(v=k.tableProps)==null||(v=v.components)==null?void 0:v.body,{row:x?undefined:F})})})}))})})})};export{P as DragEditableTablePro};
14
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-editable-table-pro/context.ts","@flatbiz/antd/src/drag-editable-table-pro/table-tr-handle.tsx","@flatbiz/antd/src/drag-editable-table-pro/row.tsx","@flatbiz/antd/src/drag-editable-table-pro/drag.tsx"],"sourcesContent":["import { createCtx } from '@wove/react';\nimport { type ReactElement } from 'react';\n\nexport const [getCtx, CtxProvider] = createCtx<{\n dragIcon?: ReactElement;\n uidFieldKey: string;\n}>();\n","import { DragOutlined } from '@ant-design/icons';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { isUndefinedOrNull, noop } from '@flatbiz/utils';\nimport { type RowProps } from 'antd';\nimport { Children, cloneElement, type ReactElement } from 'react';\nimport { IconWrapper } from '../icon-wrapper';\n\ntype TableTrHandleProps = RowProps & {\n dragIcon?: ReactElement;\n};\nexport const TableTrHandle = (props: TableTrHandleProps) => {\n const { dragIcon, ...innerProps } = props;\n const rowId = innerProps['data-row-key'] as number;\n\n const { setActivatorNodeRef, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: rowId,\n });\n\n if (isUndefinedOrNull(rowId)) {\n return <tr {...innerProps} />;\n }\n const style: React.CSSProperties = {\n ...innerProps.style,\n transform: CSS.Transform.toString(transform && { ...transform, scaleY: 1 }),\n transition,\n cursor: 'move',\n ...(isDragging\n ? {\n position: 'relative',\n zIndex: 9999,\n boxShadow: ' 0px 0px 12px 4px rgba(34, 33, 81, 0.1)',\n backgroundColor: 'var(--block-bg-color)',\n }\n : {}),\n };\n const iconElement = dragIcon || <DragOutlined />;\n return (\n <tr {...innerProps} ref={setNodeRef} style={style} key={rowId}>\n {Children.map(props.children, (child) => {\n if ((child as React.ReactElement).key === '__sort') {\n return cloneElement(child as React.ReactElement, {\n children: (\n <span\n ref={setActivatorNodeRef}\n style={{\n touchAction: 'none',\n cursor: 'move',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n {...listeners}\n >\n <IconWrapper\n style={{\n touchAction: 'none',\n cursor: 'move',\n padding: '1px 0px',\n margin: 0,\n justifyContent: 'center',\n color: '#787878',\n }}\n icon={iconElement}\n onClick={noop}\n size=\"small\"\n />\n </span>\n ),\n });\n }\n return child;\n })}\n </tr>\n );\n};\n","import { getCtx } from './context';\nimport { TableTrHandle } from './table-tr-handle';\n\nexport const Row = (props) => {\n const ctx = getCtx();\n return <TableTrHandle {...props} dragIcon={ctx.dragIcon} />;\n};\n","import { DndContext, PointerSensor, useSensor, useSensors, type DragEndEvent } from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { type TPlainObject } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { type ReactElement } from 'react';\nimport { EditableTablePro, EditableTableProProps } from '../editable-table-pro';\nimport { EditableTableProColumnItem } from '../editable-table-pro/type';\nimport { CtxProvider } from './context';\nimport { Row } from './row';\n\nexport type DragEditableTableProProps = EditableTableProProps & {\n /**\n * 拖拽图标自定义,默认使用 DragOutlined 图标\n */\n dragIcon?: ReactElement;\n\n /** 禁用拖拽 */\n disabledDrag?: boolean;\n /**\n * 表格数据唯一值字段Key\n * ```\n * ```\n */\n uidFieldKey: string;\n /**\n * 拖拽结束事件\n * ```\n * dataSource: 拖拽完成后的数据源\n * dragData\n * 1. activeId 拖拽ID\n * 2. activeIndex 拖拽起始表格数组索引值\n * 3. overIndex 拖拽结束表格数组索引值\n * ```\n */\n onDragChange?: (\n dataSource: TPlainObject[],\n dragData: {\n activeId: string | number;\n overId?: string | number;\n activeIndex: number;\n overIndex: number;\n },\n ) => void;\n};\n\n/**\n * 可拖拽编辑表格\n * ```\n * 1. 表格数据必须有唯一值字段,通过参数 uidFieldKey 告诉组件\n * 2. Table 参数 components.body.row 被组件内部使用\n * 3. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 4. 存在多级的情况下,通过上移、下移操作按钮,调用 column.render.operation.move 方法实现同一级内移动\n * ```\n */\nexport const DragEditableTablePro = (props: DragEditableTableProProps) => {\n const {\n dragIcon,\n uidFieldKey,\n onDragChange,\n disabledDrag,\n formListCompleteName,\n formListName,\n ...otherProps\n } = props;\n\n const formListCompleteNameFt = formListCompleteName || formListName;\n\n const form = Form.useFormInstance();\n const dataList = Form.useWatch(formListCompleteNameFt, form);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n // 当拖拽触发区域有其他点击事件时,需要延迟触发拖拽动作\n delay: 0,\n tolerance: 0,\n },\n }),\n );\n\n const onDragEnd = ({ active, over }: DragEndEvent) => {\n if (active.id !== over?.id) {\n const activeIndex = dataList.findIndex((i) => i[uidFieldKey] === active.id);\n const overIndex = dataList.findIndex((i) => i[uidFieldKey] === over?.id);\n const dataListNew = arrayMove(dataList, activeIndex, overIndex);\n form.setFields([\n {\n name: formListCompleteNameFt,\n value: dataListNew,\n },\n ]);\n onDragChange?.(dataListNew as TPlainObject[], {\n activeId: active.id,\n overId: over?.id,\n activeIndex,\n overIndex,\n });\n }\n };\n\n const columns: EditableTableProColumnItem[] = disabledDrag\n ? otherProps.columns\n : [\n {\n dataIndex: '__sort',\n width: 40,\n key: '__sort',\n align: 'center',\n } as EditableTableProColumnItem,\n ].concat(otherProps.columns || []);\n\n return (\n <CtxProvider\n value={{\n dragIcon,\n uidFieldKey,\n }}\n >\n <DndContext sensors={sensors} modifiers={[restrictToVerticalAxis]} onDragEnd={onDragEnd}>\n <SortableContext\n items={dataList?.map((i) => i[uidFieldKey]) || []}\n strategy={verticalListSortingStrategy}\n >\n <EditableTablePro\n {...otherProps}\n formListName={formListName}\n uidFieldKey={uidFieldKey}\n columns={columns}\n tableProps={{\n ...otherProps.tableProps,\n components: {\n ...otherProps.tableProps?.components,\n body: {\n ...otherProps.tableProps?.components?.body,\n row: disabledDrag ? undefined : Row,\n },\n },\n }}\n />\n </SortableContext>\n </DndContext>\n </CtxProvider>\n );\n};\n"],"names":["_createCtx","_createCtx2","getCtx","CtxProvider","TableTrHandle","props","dragIcon","innerProps","_objectWithoutPropertiesLoose","_excluded","rowId","_useSortable","useSortable","id","setActivatorNodeRef","listeners","setNodeRef","transform","transition","isDragging","isUndefinedOrNull","_jsx","_extends","style","CSS","Transform","toString","scaleY","cursor","position","zIndex","boxShadow","backgroundColor","iconElement","_DragOutlined","_createElement","ref","key","Children","map","children","child","cloneElement","touchAction","display","alignItems","justifyContent","IconWrapper","padding","margin","color","icon","onClick","noop","size","Row","ctx","DragEditableTablePro","_otherProps$tableProp","_otherProps$tableProp2","uidFieldKey","onDragChange","disabledDrag","formListCompleteName","formListName","otherProps","formListCompleteNameFt","form","Form","useFormInstance","dataList","useWatch","sensors","useSensors","useSensor","PointerSensor","activationConstraint","delay","tolerance","onDragEnd","_ref","active","over","activeIndex","findIndex","i","overIndex","dataListNew","arrayMove","setFields","name","value","activeId","overId","columns","dataIndex","width","align","concat","DndContext","modifiers","restrictToVerticalAxis","SortableContext","items","strategy","verticalListSortingStrategy","EditableTablePro","tableProps","components","body","row","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-editable-table-pro/context.ts","@flatbiz/antd/src/drag-editable-table-pro/table-tr-handle.tsx","@flatbiz/antd/src/drag-editable-table-pro/row.tsx","@flatbiz/antd/src/drag-editable-table-pro/drag.tsx"],"sourcesContent":["import { createCtx } from '@wove/react';\nimport { type ReactElement } from 'react';\n\nexport const [getCtx, CtxProvider] = createCtx<{\n dragIcon?: ReactElement;\n uidFieldKey: string;\n}>();\n","import { DragOutlined } from '@ant-design/icons';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { isUndefinedOrNull, noop } from '@flatbiz/utils';\nimport { type RowProps } from 'antd';\nimport { Children, cloneElement, type ReactElement } from 'react';\nimport { IconWrapper } from '../icon-wrapper';\n\ntype TableTrHandleProps = RowProps & {\n dragIcon?: ReactElement;\n};\nexport const TableTrHandle = (props: TableTrHandleProps) => {\n const { dragIcon, ...innerProps } = props;\n const rowId = innerProps['data-row-key'] as number;\n\n const { setActivatorNodeRef, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: rowId,\n });\n\n if (isUndefinedOrNull(rowId)) {\n return <tr {...innerProps} />;\n }\n const style: React.CSSProperties = {\n ...innerProps.style,\n transform: CSS.Transform.toString(transform && { ...transform, scaleY: 1 }),\n transition,\n cursor: 'move',\n ...(isDragging\n ? {\n position: 'relative',\n zIndex: 9999,\n boxShadow: ' 0px 0px 12px 4px rgba(34, 33, 81, 0.1)',\n backgroundColor: 'var(--block-bg-color)',\n }\n : {}),\n };\n const iconElement = dragIcon || <DragOutlined />;\n return (\n <tr {...innerProps} ref={setNodeRef} style={style} key={rowId}>\n {Children.map(props.children, (child) => {\n if ((child as React.ReactElement).key === '__sort') {\n return cloneElement(child as React.ReactElement, {\n children: (\n <span\n ref={setActivatorNodeRef}\n style={{\n touchAction: 'none',\n cursor: 'move',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n {...listeners}\n >\n <IconWrapper\n style={{\n touchAction: 'none',\n cursor: 'move',\n padding: '1px 0px',\n margin: 0,\n justifyContent: 'center',\n color: '#787878',\n }}\n icon={iconElement}\n onClick={noop}\n size=\"small\"\n />\n </span>\n ),\n });\n }\n return child;\n })}\n </tr>\n );\n};\n","import { getCtx } from './context';\nimport { TableTrHandle } from './table-tr-handle';\n\nexport const Row = (props) => {\n const ctx = getCtx();\n return <TableTrHandle {...props} dragIcon={ctx.dragIcon} />;\n};\n","import { DndContext, PointerSensor, useSensor, useSensors, type DragEndEvent } from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { type TPlainObject } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { type ReactElement } from 'react';\nimport { EditableTablePro, EditableTableProProps } from '../editable-table-pro';\nimport { EditableTableProColumnItem } from '../editable-table-pro/type';\nimport { CtxProvider } from './context';\nimport { Row } from './row';\n\nexport type DragEditableTableProProps = EditableTableProProps & {\n /**\n * 拖拽图标自定义,默认使用 DragOutlined 图标\n */\n dragIcon?: ReactElement;\n\n /** 禁用拖拽 */\n disabledDrag?: boolean;\n /**\n * 表格数据唯一值字段Key\n * ```\n * ```\n */\n uidFieldKey: string;\n /**\n * 拖拽结束事件\n * ```\n * dataSource: 拖拽完成后的数据源\n * dragData\n * 1. activeId 拖拽ID\n * 2. activeIndex 拖拽起始表格数组索引值\n * 3. overIndex 拖拽结束表格数组索引值\n * ```\n */\n onDragChange?: (\n dataSource: TPlainObject[],\n dragData: {\n activeId: string | number;\n overId?: string | number;\n activeIndex: number;\n overIndex: number;\n },\n ) => void;\n};\n\n/**\n * 可拖拽编辑表格\n * ```\n * 1. 表格数据必须有唯一值字段,通过参数 uidFieldKey 告诉组件\n * 2. Table 参数 components.body.row 被组件内部使用\n * 3. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 4. 存在多级的情况下,通过上移、下移操作按钮,调用 column.render.operation.move 方法实现同一级内移动\n * ```\n */\nexport const DragEditableTablePro = (props: DragEditableTableProProps) => {\n const {\n dragIcon,\n uidFieldKey,\n onDragChange,\n disabledDrag,\n formListCompleteName,\n formListName,\n ...otherProps\n } = props;\n\n const formListCompleteNameFt = formListCompleteName || formListName;\n\n const form = Form.useFormInstance();\n const dataList = Form.useWatch(formListCompleteNameFt, form);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n // 当拖拽触发区域有其他点击事件时,需要延迟触发拖拽动作\n delay: 0,\n tolerance: 0,\n },\n }),\n );\n\n const onDragEnd = ({ active, over }: DragEndEvent) => {\n if (active.id !== over?.id) {\n const activeIndex = dataList.findIndex((i) => i[uidFieldKey] === active.id);\n const overIndex = dataList.findIndex((i) => i[uidFieldKey] === over?.id);\n const dataListNew = arrayMove(dataList, activeIndex, overIndex);\n form.setFields([\n {\n name: formListCompleteNameFt,\n value: dataListNew,\n },\n ]);\n onDragChange?.(dataListNew as TPlainObject[], {\n activeId: active.id,\n overId: over?.id,\n activeIndex,\n overIndex,\n });\n }\n };\n\n const columns: EditableTableProColumnItem[] = disabledDrag\n ? otherProps.columns\n : [\n {\n dataIndex: '__sort',\n width: 40,\n key: '__sort',\n align: 'center',\n } as EditableTableProColumnItem,\n ].concat(otherProps.columns || []);\n\n return (\n <CtxProvider\n value={{\n dragIcon,\n uidFieldKey,\n }}\n >\n <DndContext sensors={sensors} modifiers={[restrictToVerticalAxis]} onDragEnd={onDragEnd}>\n <SortableContext\n items={dataList?.map((i) => i[uidFieldKey]) || []}\n strategy={verticalListSortingStrategy}\n >\n <EditableTablePro\n {...otherProps}\n formListName={formListName}\n uidFieldKey={uidFieldKey}\n columns={columns}\n tableProps={{\n ...otherProps.tableProps,\n components: {\n ...otherProps.tableProps?.components,\n body: {\n ...otherProps.tableProps?.components?.body,\n row: disabledDrag ? undefined : Row,\n },\n },\n }}\n />\n </SortableContext>\n </DndContext>\n </CtxProvider>\n );\n};\n"],"names":["_createCtx","_createCtx2","getCtx","CtxProvider","TableTrHandle","props","dragIcon","innerProps","_objectWithoutPropertiesLoose","_excluded","rowId","_useSortable","useSortable","id","setActivatorNodeRef","listeners","setNodeRef","transform","transition","isDragging","isUndefinedOrNull","_jsx","_extends","style","CSS","Transform","toString","scaleY","cursor","position","zIndex","boxShadow","backgroundColor","iconElement","_DragOutlined","_createElement","ref","key","Children","map","children","child","cloneElement","touchAction","display","alignItems","justifyContent","IconWrapper","padding","margin","color","icon","onClick","noop","size","Row","ctx","DragEditableTablePro","_otherProps$tableProp","_otherProps$tableProp2","uidFieldKey","onDragChange","disabledDrag","formListCompleteName","formListName","otherProps","formListCompleteNameFt","form","Form","useFormInstance","dataList","useWatch","sensors","useSensors","useSensor","PointerSensor","activationConstraint","delay","tolerance","onDragEnd","_ref","active","over","activeIndex","findIndex","i","overIndex","dataListNew","arrayMove","setFields","name","value","activeId","overId","columns","dataIndex","width","align","concat","DndContext","modifiers","restrictToVerticalAxis","SortableContext","items","strategy","verticalListSortingStrategy","EditableTablePro","tableProps","components","body","row","undefined"],"mappings":"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"}
@@ -1 +1 @@
1
- .editable-table-pro .editable-text-view.ant-typography{margin-bottom:0}.editable-table-pro:not(.et-empty-show-large) .ant-table-placeholder .ant-empty{align-items:center;display:flex;justify-content:center;margin:0}.editable-table-pro:not(.et-empty-show-large) .ant-table-placeholder .ant-empty-image{height:25px;margin:0;width:50px}.editable-table-pro .ant-table-cell-with-append .ant-table-row-expand-icon{margin-top:7px}
1
+ .editable-table-pro .editable-text-view.ant-typography{margin-bottom:0}.editable-table-pro:not(.et-empty-show-large) .ant-table-placeholder .ant-empty{align-items:center;display:flex;justify-content:center;margin:0}.editable-table-pro:not(.et-empty-show-large) .ant-table-placeholder .ant-empty-image{height:25px;margin:0;width:50px}.editable-table-pro-layout1 .ant-table-cell-with-append .ant-table-row-expand-icon{margin-top:7px}
@@ -4,9 +4,11 @@ import './../config-provider-wrapper/index.css';
4
4
  import './../fba-hooks/index.css';
5
5
  import './../types/index.css';
6
6
  import './../fba-utils/index.css';
7
+ import './../form-item-wrapper/index.css';
8
+ import './../pre-defined-class-name/index.css';
7
9
  import './../text-symbol-wrapper/index.css';
8
10
  import './../tips-wrapper/index.css';
9
11
  import './index.css';
10
12
  /*! @flatjs/forge MIT @flatbiz/antd */
11
- import e from"@ant-design/icons/es/icons/PlusOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{_ as n}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as t}from"@wove/react/cjs/hooks";import{isArray as a}from"@dimjs/lang/cjs/is-array";import{cloneState as i}from"@dimjs/model";import{toArray as l,arrayReorder as o,isUndefinedOrNull as s}from"@flatbiz/utils";import{Form as d,Table as u,message as p}from"antd";import{useState as c,useRef as m,useMemo as v,isValidElement as f}from"react";import{ButtonWrapper as b}from"../button-wrapper/index.js";import{TextSymbolWrapper as g}from"../text-symbol-wrapper/index.js";import{TipsWrapper as h}from"../tips-wrapper/index.js";import{jsx as y,jsxs as j}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var x=function x(w){var R;var C=d.useFormInstance();var P=c([]),k=P[0],F=P[1];var A=l(w.formListName);var N=m({});var I=m({});var U=m();var L=w.uidFieldKey;var B=w.childrenColumnName||"children";var V=w.formListCompleteName||A;var W=d.useWatch(V,C);var z=v((function(){if(!W)return[];function e(r,n,t){r.forEach((function(r,a){if(!r[L]){console.error(r,"数据中未查询到唯一值")}else{I.current[r[L]]={level:n,parentUid:t,index:a};N.current[r[L]]=r;e(r[B]||[],n+1,r[L])}}))}I.current={};N.current={};e(a(W)?W:[],1);return W}),[B,W,L]);var D=t.useCallbackRef((function(e){var r=e[L];var n=I.current[r];var t=[];while(n){t.push(n.index);if(n.level===1){break}n=n.parentUid?I.current[n.parentUid]:undefined}var a=[];t.reverse().forEach((function(e,r){a.push(e);if(r<t.length-1){a.push(B)}}));return a}));var E=t.useCallbackRef((function(e,r,n){var t=N.current[e];if(t){if(t.level===1){var a;(a=U.current)==null?void 0:a.add(r,n);return}t[B]=t[B]||[];if(n==undefined){t[B].push(r)}else{t[B].splice(n,0,r)}var i=new Set(k);i.add(t[L]);F([].concat(Array.from(i)));C.setFields([{name:V,value:[].concat(W)}])}}));var O=t.useCallbackRef((function(e,r){var n=I.current[e];if(n.level===1){var t;(t=U.current)==null?void 0:t.remove(r);return}var a=n.parentUid;if(!a){W.splice(r,1)}else{var l=N.current[a];l[B].splice(r,1);if(l[B].length===0){delete l[B]}}C.setFields([{name:V,value:i(W)}])}));var T=t.useCallbackRef((function(e,r,n){if(r===n||n<0)return;var t=I.current[e];var a=t.parentUid;if(!a){var i=o(W,r,n);C.setFields([{name:V,value:i}])}else{var l=N.current[a];l[B]=o(l[B],r,n);C.setFields([{name:V,value:[].concat(W)}])}}));var _=t.useCallbackRef((function(e,r){C.setFields(r.map((function(r){return{name:[].concat(V,e,l(r.name)),value:r.value}})))}));var K=v((function(){return w.columns.map((function(e){var r=e.title;var t=f(r)||typeof r==="string";var a=r;if(e.tipsWrapperProps&&t){if(typeof e.tipsWrapperProps==="string"){a=y(h,{tipType:"popover",popoverProps:{content:e.tipsWrapperProps},children:r})}else{a=y(h,n({},e.tipsWrapperProps,{children:r}))}}return n({onCell:function e(){var r;return{valign:((r=w.tableProps)==null?void 0:r.cellVerticalAlign)||"middle"}}},e,{title:e.required?y(g,{style:{marginLeft:e.align==="center"?undefined:10},text:a,position:"before",symbolType:"required"}):a,render:function r(t,a,i){if(s(e.render)){return t}var o=a[L];var u=l(e["dataIndex"]);var p=D(a);var c=I.current[o];var m=typeof(e==null?void 0:e.editable)==="function"?e==null?void 0:e.editable(a,i):e==null?void 0:e.editable;var v={add:E.bind(null,o),remove:O.bind(null,o),move:T.bind(null,o),editable:m,changeCurrentRowTargetField:_.bind(null,p),level:c.level,parentItem:c.parentUid?I.current[c.parentUid]:null,tableRowFormItemName:p,tableRowFormItemCompleteName:[].concat(V,p)};if(m===true){var f;return y(d.Item,n({},e.formItemProps,{name:[].concat(p,u),style:n({marginBottom:0},(f=e.formItemProps)==null?void 0:f.style),children:e.render==null?void 0:e.render(t,a,i,v)}))}return e.render==null?void 0:e.render(t,a,i,v)}})}))}),[E,_,O,V,D,T,w.columns,(R=w.tableProps)==null?void 0:R.cellVerticalAlign,L]);return y("div",{className:r("editable-table-pro",w.className),style:w.style,children:y(d.List,{name:A,rules:w.rules,children:function r(t,a,i){var l;var o=i.errors;U.current=a;return j("div",{style:{borderRadius:"6px",border:o!=null&&o.length?"1px solid #ff4d4f":"1px solid transparent"},children:[w.tableBeforeAreaRender==null?void 0:w.tableBeforeAreaRender(a,t.length),y(u,n({scroll:{x:"max-content"},pagination:false,size:"small"},w.tableProps,{expandable:n({expandedRowKeys:k,onExpandedRowsChange:function e(r){F(r)}},(l=w.tableProps)==null?void 0:l.expandable,{childrenColumnName:B}),columns:K,dataSource:z,rowKey:L})),y(b,{block:true,hidden:w.hiddenFooterBtn,type:"dashed",icon:y(e,{}),style:{marginTop:15},onClick:function e(){var r=w.addRowDefaultValues==null?void 0:w.addRowDefaultValues();if(!(r!=null&&r[L])){void p.error("新增行默认值必须包含唯一值字段【"+L+"】,通过 addRowDefaultValues 设置");return}a.add(r)},children:"新增"}),w.tableAfterAreaRender==null?void 0:w.tableAfterAreaRender(a,t.length),o.length?y(d.ErrorList,{errors:[y("div",{style:{color:"#ff4d4f",padding:"5px"},children:o},"0")]}):null]})}})})};export{x as EditableTablePro};
13
+ import e from"@ant-design/icons/es/icons/PlusOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{_ as n}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as t}from"@wove/react/cjs/hooks";import{isArray as a}from"@dimjs/lang/cjs/is-array";import{cloneState as l}from"@dimjs/model";import{toArray as i,arrayReorder as o,isUndefinedOrNull as s}from"@flatbiz/utils";import{Form as u,Table as d,message as p}from"antd";import{useState as m,useRef as c,useMemo as f,isValidElement as v}from"react";import{ButtonWrapper as g}from"../button-wrapper/index.js";import{fbaHooks as b}from"../fba-hooks/index.js";import{fbaUtils as h}from"../fba-utils/index.js";import{FormItemWrapper as y}from"../form-item-wrapper/index.js";import{TextSymbolWrapper as j}from"../text-symbol-wrapper/index.js";import{TipsWrapper as x}from"../tips-wrapper/index.js";import{jsx as C,jsxs as w}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";import"../use-responsive-point-21b8c601.js";import"../pre-defined-class-name/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var R=function R(F){var P;var k=u.useFormInstance();var A=m([]),I=A[0],V=A[1];var N=i(F.formListName);var T=c({});var U=c({});var L=c();var B=F.uidFieldKey;var E=F.childrenColumnName||"children";var K=F.expandedIconLayout||"layout1";var O=F.formListCompleteName||N;var W=u.useWatch(O,k);var q=f((function(){if(!W)return[];function e(r,n,t){r.forEach((function(r,a){if(!r[B]){console.error(r,"数据中未查询到唯一值")}else{U.current[r[B]]={level:n,parentUid:t,index:a};T.current[r[B]]=r;e(r[E]||[],n+1,r[B])}}))}U.current={};T.current={};e(a(W)?W:[],1);return W}),[E,W,B]);b.useEffectCustom((function(){V(F.expandedRowKeys||[])}),[JSON.stringify(F.expandedRowKeys||[])]);var z=t.useCallbackRef((function(e){var r=e[B];var n=U.current[r];var t=[];while(n){t.push(n.index);if(n.level===1){break}n=n.parentUid?U.current[n.parentUid]:undefined}var a=[];t.reverse().forEach((function(e,r){a.push(e);if(r<t.length-1){a.push(E)}}));return a}));var D=t.useCallbackRef((function(e,r,n){var t=T.current[e];if(t){if(t.level===1){var a;(a=L.current)==null?void 0:a.add(r,n);return}t[E]=t[E]||[];if(n==undefined){t[E].push(r)}else{t[E].splice(n,0,r)}var l=new Set(I);l.add(t[B]);V([].concat(Array.from(l)));h.setFormFieldsAndTriggerValuesChange(k,[{name:O,value:[].concat(W)}])}}));var S=t.useCallbackRef((function(e,r){var n=U.current[e];if(n.level===1){var t;(t=L.current)==null?void 0:t.remove(r);return}var a=n.parentUid;if(!a){W.splice(r,1)}else{var i=T.current[a];i[E].splice(r,1);if(i[E].length===0){delete i[E]}}h.setFormFieldsAndTriggerValuesChange(k,[{name:O,value:l(W)}])}));var _=t.useCallbackRef((function(e,r,n){if(r===n||n<0)return;var t=U.current[e];var a=t.parentUid;if(!a){var l=o(W,r,n);h.setFormFieldsAndTriggerValuesChange(k,[{name:O,value:l}])}else{var i=T.current[a];i[E]=o(i[E],r,n);h.setFormFieldsAndTriggerValuesChange(k,[{name:O,value:[].concat(W)}])}}));var Y=t.useCallbackRef((function(e,r){h.setFormFieldsAndTriggerValuesChange(k,r.map((function(r){return{name:[].concat(O,e,i(r.name)),value:r.value}})))}));var H=t.useCallbackRef((function(e,r){Y(e,[{name:E,value:r}])}));var J=t.useCallbackRef((function(e,r){return new Promise((function(n,t){return Promise.resolve(k.validateFields(r.map((function(r){return[].concat(e,i(r))})))).then((function(e){try{return n()}catch(e){return t(e)}}),t)}))}));var Q=f((function(){return F.columns.map((function(e){var r;var t=e.title;var a=v(t)||typeof t==="string";var l=t;if(e.tipsWrapperProps&&a){if(typeof e.tipsWrapperProps==="string"){l=C(x,{tipType:"popover",popoverProps:{content:e.tipsWrapperProps},children:t})}else{l=C(x,n({},e.tipsWrapperProps,{children:t}))}}var o=e.required;if(!o&&typeof e.formItemProps==="object"&&(r=e.formItemProps.rules)!=null&&r.length){o=!!e.formItemProps.rules.find((function(e){return!!e["required"]}))}return n({onCell:function e(){var r;return{valign:((r=F.tableProps)==null?void 0:r.cellVerticalAlign)||"middle"}}},e,{title:o?C(j,{style:{marginLeft:e.align==="center"?undefined:10},text:l,position:"before",symbolType:"required"}):l,render:function r(t,a,l){if(s(e.render)){return t}var u=a[B];var d=i(e["dataIndex"]);var p=z(a);var m=U.current[u];var c=typeof(e==null?void 0:e.editable)==="function"?e==null?void 0:e.editable(a,l):e==null?void 0:e.editable;var f=[].concat(O,p);var v={editable:c,add:D.bind(null,u),remove:S.bind(null,u),move:_.bind(null,u),level:m.level,parentItem:m.parentUid?U.current[m.parentUid]:null,tableRowFormItemName:p,tableRowFormItemCompleteName:f,setCurrentRowTargetField:Y.bind(null,p),setCurrentRowChildrenValue:H.bind(null,p),validateRowFields:J.bind(null,f)};if(c===true){var g,b;var h=typeof e.formItemProps==="function"?e.formItemProps(t,a,l,v):e.formItemProps;if(!((g=h)!=null&&(g=g.rules)!=null&&g.length)&&o){h=n({},h,{rules:[{required:true,message:""}]})}return C(y,n({},h,{name:[].concat(p,d),style:n({marginBottom:0},(b=h)==null?void 0:b.style),children:e.render==null?void 0:e.render(t,a,l,v)}))}return e.render==null?void 0:e.render(t,a,l,v)}})}))}),[F.columns,(P=F.tableProps)==null?void 0:P.cellVerticalAlign,B,z,O,D,S,_,Y,H,J]);var G=r("editable-table-pro",{"editable-table-pro-layout1":K==="layout1"},F.className);return C("div",{className:G,style:F.style,children:C(u.List,{name:N,rules:F.rules,children:function r(t,a,l){var i;var o=l.errors;L.current=a;return w("div",{style:{borderRadius:"6px",border:o!=null&&o.length?"1px solid #ff4d4f":"1px solid transparent"},children:[F.tableBeforeAreaRender==null?void 0:F.tableBeforeAreaRender(a,t.length),C(d,n({scroll:{x:"max-content"},pagination:false,size:"small"},F.tableProps,{expandable:n({expandedRowKeys:I,onExpandedRowsChange:function e(r){V(r)}},(i=F.tableProps)==null?void 0:i.expandable,{childrenColumnName:E}),columns:Q,dataSource:q,rowKey:B})),C(g,{block:true,hidden:F.hiddenFooterBtn,type:"dashed",icon:C(e,{}),style:{marginTop:15},onClick:function e(){var r=F.addRowDefaultValues==null?void 0:F.addRowDefaultValues();if(!(r!=null&&r[B])){void p.error("新增行默认值必须包含唯一值字段【"+B+"】,通过 addRowDefaultValues 设置");return}a.add(r)},children:"新增"}),F.tableAfterAreaRender==null?void 0:F.tableAfterAreaRender(a,t.length),o.length?C(u.ErrorList,{errors:[C("div",{style:{color:"#ff4d4f",padding:"5px"},children:o},"0")]}):null]})}})})};export{R as EditableTablePro};
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/editable-table-pro/editable-table-pro.tsx"],"sourcesContent":["import { PlusOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames } from '@dimjs/utils';\nimport { arrayReorder, isUndefinedOrNull, TAny, toArray, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message, Table, type FormListOperation, type TableProps } from 'antd';\nimport { FormListProps } from 'antd/es/form';\nimport { ColumnsType } from 'antd/es/table';\nimport { isValidElement, ReactElement, useMemo, useRef, useState } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { TipsWrapper } from '../tips-wrapper';\nimport './style.less';\nimport { EditableTableProColumnItem, EditableTableProDataIndex, EditableTableProOperation } from './type';\n\ntype dataSourceRelativeItem = {\n level: number;\n parentUid?: string | number;\n index: number;\n};\n\nexport type EditableTableProProps = {\n columns: EditableTableProColumnItem[];\n /**\n * 当前Edittable处在formList内部时(必填),完整formItem的name\n * ```\n * 例如 处在formList内部\n * 1. formListName=[0,dataList]\n * 2. formListCompleteName=[xxxList, 0, dataList]\n * ```\n */\n formListCompleteName?: Array<string | number>;\n /** Form.List name */\n formListName: Array<string | number> | string;\n /** 唯一值字段Key */\n uidFieldKey: string;\n /** 指定树形结构的列名,默认值:children */\n childrenColumnName?: string;\n /** 表格组件配置 */\n tableProps?: Omit<TableProps<TPlainObject>, 'dataSource' | 'columns' | 'rowKey'> & {\n // 如果重写了columns.onCell,则此配置失效\n cellVerticalAlign?: 'baseline' | 'middle' | 'top' | 'bottom';\n };\n /**\n * Form.List rules\n * ```\n rules={[\n {\n validator: async (_, names) => {\n if (!names || names.length < 2) {\n return Promise.reject(new Error('At least 2 passengers'));\n }\n },\n },\n ]}\n * ```\n */\n rules?: FormListProps['rules'];\n className?: string;\n style?: React.CSSProperties;\n\n /**`默认新增按钮`新增行默认值,hiddenFooterBtn != true 有效 */\n addRowDefaultValues?: () => TPlainObject;\n /** 隐藏底部`新增`按钮 */\n hiddenFooterBtn?: boolean;\n /** 表格顶部区域渲染 */\n tableBeforeAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /** 表格底部区域渲染 */\n tableAfterAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n};\n\n/**\n * 使用FormList实现可编辑表格\n * ```\n * 1. 必须在外部包裹Form组件\n * 2. 表格数据源数组中必须存在唯一值字段,通过uidFieldKey配置\n * 3. 可嵌套编辑,数据嵌套的节点名称可通过 childrenColumnName设置,默认:children\n * 4. 行内需要联动逻辑可使用 column.render.operation.changeCurrentRowTargetField 方法\n * 5. 在多级编辑中,可通过 column.render.operation.level 判断当前行数据层级\n * 6. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 7. 存在多级的情况下,可通过 column.render.operation.move 方法实现同一级内移动\n *\n * demo\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable1\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable2\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable4\n * ```\n */\nexport const EditableTablePro = (props: EditableTableProProps) => {\n const form = Form.useFormInstance();\n const [expandedRowKeys, setExpandedRowKeys] = useState<string[]>([]);\n const formListName = toArray<string | number>(props.formListName);\n const dataSourceUidMap = useRef<Record<string, TPlainObject>>({});\n const dataSourceUidMapFt = useRef<Record<string | number, dataSourceRelativeItem>>({});\n const formListOperationRef = useRef<FormListOperation>();\n const uidFieldKey = props.uidFieldKey;\n const childrenColumnName = props.childrenColumnName || 'children';\n\n const formListCompleteName = props.formListCompleteName || formListName;\n\n const dataSource = Form.useWatch(formListCompleteName, form);\n\n const dataSourceFt = useMemo(() => {\n if (!dataSource) return [];\n function deep(itemList: TPlainObject[], level: number, parentUid?: string | number) {\n itemList.forEach((item, itemIndex) => {\n if (!item[uidFieldKey]) {\n console.error(item, '数据中未查询到唯一值');\n } else {\n dataSourceUidMapFt.current[item[uidFieldKey]] = {\n level,\n parentUid,\n index: itemIndex,\n };\n dataSourceUidMap.current[item[uidFieldKey]] = item;\n deep(item[childrenColumnName] || [], level + 1, item[uidFieldKey]);\n }\n });\n }\n dataSourceUidMapFt.current = {};\n dataSourceUidMap.current = {};\n deep(isArray(dataSource) ? dataSource : [], 1);\n return dataSource;\n }, [childrenColumnName, dataSource, uidFieldKey]);\n\n const getFormItemName = hooks.useCallbackRef((record: TPlainObject) => {\n const uid = record[uidFieldKey];\n let target: dataSourceRelativeItem | undefined = dataSourceUidMapFt.current[uid];\n\n const indexes: number[] = [];\n while (target) {\n indexes.push(target.index);\n if (target.level === 1) {\n break;\n }\n target = target.parentUid ? dataSourceUidMapFt.current[target.parentUid] : undefined;\n }\n const arr: Array<string | number> = [];\n indexes.reverse().forEach((item, index) => {\n arr.push(item);\n if (index < indexes.length - 1) {\n arr.push(childrenColumnName);\n }\n });\n return arr;\n });\n\n const addItem = hooks.useCallbackRef((uid: string, defaultValue: TPlainObject, insertIndex?: number) => {\n const target = dataSourceUidMap.current[uid];\n\n if (target) {\n if (target.level === 1) {\n /** 通过 formListOperation.add 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.add(defaultValue, insertIndex);\n return;\n }\n target[childrenColumnName] = target[childrenColumnName] || [];\n if (insertIndex == undefined) {\n target[childrenColumnName].push(defaultValue);\n } else {\n target[childrenColumnName].splice(insertIndex, 0, defaultValue);\n }\n const expandedRowKeysSet = new Set(expandedRowKeys);\n expandedRowKeysSet.add(target[uidFieldKey]);\n setExpandedRowKeys([...Array.from(expandedRowKeysSet)]);\n form.setFields([\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const deleteItem = hooks.useCallbackRef((uid: string | number, index: number) => {\n const target = dataSourceUidMapFt.current[uid];\n if (target.level === 1) {\n /** 通过 formListOperation.remove 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.remove(index);\n return;\n }\n const parentUid = target.parentUid;\n if (!parentUid) {\n dataSource.splice(index, 1);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName].splice(index, 1);\n if (parentTarget[childrenColumnName].length === 0) {\n delete parentTarget[childrenColumnName];\n }\n }\n form.setFields([\n {\n name: formListCompleteName,\n value: cloneState(dataSource),\n },\n ]);\n });\n\n const moveItem = hooks.useCallbackRef((uid: string | number, fromIndex: number, toIndex: number) => {\n if (fromIndex === toIndex || toIndex < 0) return;\n const target = dataSourceUidMapFt.current[uid];\n const parentUid = target.parentUid;\n if (!parentUid) {\n const result = arrayReorder(dataSource, fromIndex, toIndex);\n form.setFields([\n {\n name: formListCompleteName,\n value: result,\n },\n ]);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName] = arrayReorder(parentTarget[childrenColumnName], fromIndex, toIndex);\n form.setFields([\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const changeCurrentRowTargetField = hooks.useCallbackRef(\n (\n formItemPrevName: Array<string | number>,\n dataIndexConfigs: {\n name: EditableTableProDataIndex;\n value?: TAny;\n }[],\n ) => {\n form.setFields(\n dataIndexConfigs.map((item) => {\n return {\n name: [...formListCompleteName, ...formItemPrevName, ...toArray<string | number>(item.name)],\n value: item.value,\n };\n }),\n );\n },\n );\n\n const columns = useMemo(() => {\n return props.columns.map((column) => {\n const title = column.title;\n const support = isValidElement(title) || typeof title === 'string';\n let titleRender: ReactElement | string | undefined = title;\n if (column.tipsWrapperProps && support) {\n if (typeof column.tipsWrapperProps === 'string') {\n titleRender = (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: column.tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n );\n } else {\n titleRender = <TipsWrapper {...column.tipsWrapperProps}>{title}</TipsWrapper>;\n }\n }\n return {\n onCell: () => {\n return {\n valign: props.tableProps?.cellVerticalAlign || 'middle',\n };\n },\n ...column,\n title: column.required ? (\n <TextSymbolWrapper\n style={{ marginLeft: column.align === 'center' ? undefined : 10 }}\n text={titleRender}\n position=\"before\"\n symbolType=\"required\"\n />\n ) : (\n titleRender\n ),\n render: (value, record, index) => {\n if (isUndefinedOrNull(column.render)) {\n return value;\n }\n const uid = record[uidFieldKey];\n const dataIndex = toArray<string>(column['dataIndex']);\n const formItemPrevName = getFormItemName(record);\n const dataSourceTarget = dataSourceUidMapFt.current[uid];\n\n const editable =\n typeof column?.editable === 'function' ? column?.editable(record, index) : column?.editable;\n const renderOperationProps: EditableTableProOperation = {\n add: addItem.bind(null, uid),\n remove: deleteItem.bind(null, uid),\n move: moveItem.bind(null, uid),\n editable,\n changeCurrentRowTargetField: changeCurrentRowTargetField.bind(null, formItemPrevName),\n level: dataSourceTarget.level,\n parentItem: dataSourceTarget.parentUid\n ? dataSourceUidMapFt.current[dataSourceTarget.parentUid]\n : null,\n tableRowFormItemName: formItemPrevName,\n tableRowFormItemCompleteName: [...formListCompleteName, ...formItemPrevName],\n };\n if (editable === true) {\n return (\n <Form.Item\n {...column.formItemProps}\n name={[...formItemPrevName, ...dataIndex]}\n style={{ marginBottom: 0, ...column.formItemProps?.style }}\n >\n {column.render?.(value, record, index, renderOperationProps) as React.ReactNode}\n </Form.Item>\n );\n }\n return column.render?.(value, record, index, renderOperationProps);\n },\n };\n }) as ColumnsType<TPlainObject>;\n }, [\n addItem,\n changeCurrentRowTargetField,\n deleteItem,\n formListCompleteName,\n getFormItemName,\n moveItem,\n props.columns,\n props.tableProps?.cellVerticalAlign,\n uidFieldKey,\n ]);\n\n return (\n <div className={classNames('editable-table-pro', props.className)} style={props.style}>\n <Form.List name={formListName} rules={props.rules}>\n {(fields, formListOperation, { errors }) => {\n formListOperationRef.current = formListOperation;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.tableBeforeAreaRender?.(formListOperation, fields.length)}\n <Table\n scroll={{ x: 'max-content' }}\n pagination={false}\n size=\"small\"\n {...props.tableProps}\n expandable={{\n expandedRowKeys: expandedRowKeys,\n onExpandedRowsChange: (expandedRowKeys) => {\n setExpandedRowKeys(expandedRowKeys as string[]);\n },\n ...props.tableProps?.expandable,\n childrenColumnName: childrenColumnName,\n }}\n columns={columns}\n dataSource={dataSourceFt}\n rowKey={uidFieldKey}\n />\n <ButtonWrapper\n block\n hidden={props.hiddenFooterBtn}\n type=\"dashed\"\n icon={<PlusOutlined />}\n style={{ marginTop: 15 }}\n onClick={() => {\n const defaultValues = props.addRowDefaultValues?.();\n if (!defaultValues?.[uidFieldKey]) {\n void message.error(\n `新增行默认值必须包含唯一值字段【${uidFieldKey}】,通过 addRowDefaultValues 设置`,\n );\n return;\n }\n formListOperation.add(defaultValues);\n }}\n >\n 新增\n </ButtonWrapper>\n {props.tableAfterAreaRender?.(formListOperation, fields.length)}\n {errors.length ? (\n <Form.ErrorList\n errors={[\n <div style={{ color: '#ff4d4f', padding: '5px' }} key=\"0\">\n {errors}\n </div>,\n ]}\n />\n ) : null}\n </div>\n );\n }}\n </Form.List>\n </div>\n );\n};\n"],"names":["EditableTablePro","props","_props$tableProps2","form","Form","useFormInstance","_useState","useState","expandedRowKeys","setExpandedRowKeys","formListName","toArray","dataSourceUidMap","useRef","dataSourceUidMapFt","formListOperationRef","uidFieldKey","childrenColumnName","formListCompleteName","dataSource","useWatch","dataSourceFt","useMemo","deep","itemList","level","parentUid","forEach","item","itemIndex","console","error","current","index","_isArray","getFormItemName","_hooks","useCallbackRef","record","uid","target","indexes","push","undefined","arr","reverse","length","addItem","defaultValue","insertIndex","_formListOperationRef","add","splice","expandedRowKeysSet","Set","concat","Array","from","setFields","name","value","deleteItem","_formListOperationRef2","remove","parentTarget","cloneState","moveItem","fromIndex","toIndex","result","arrayReorder","changeCurrentRowTargetField","formItemPrevName","dataIndexConfigs","map","columns","column","title","support","isValidElement","titleRender","tipsWrapperProps","_jsx","TipsWrapper","tipType","popoverProps","content","children","_extends","onCell","_props$tableProps","valign","tableProps","cellVerticalAlign","required","TextSymbolWrapper","style","marginLeft","align","text","position","symbolType","render","isUndefinedOrNull","dataIndex","dataSourceTarget","editable","renderOperationProps","bind","move","parentItem","tableRowFormItemName","tableRowFormItemCompleteName","_column$formItemProps","Item","formItemProps","marginBottom","className","_classNames","List","rules","fields","formListOperation","_ref","_props$tableProps3","errors","_jsxs","borderRadius","border","tableBeforeAreaRender","Table","scroll","x","pagination","size","expandable","onExpandedRowsChange","rowKey","ButtonWrapper","block","hidden","hiddenFooterBtn","type","icon","_PlusOutlined","marginTop","onClick","defaultValues","addRowDefaultValues","message","tableAfterAreaRender","ErrorList","color","padding"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/editable-table-pro/editable-table-pro.tsx"],"sourcesContent":["import { PlusOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { arrayReorder, isUndefinedOrNull, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message, Table, type FormListOperation, type TableProps } from 'antd';\nimport type { FormListProps } from 'antd/es/form';\nimport type { ColumnsType } from 'antd/es/table';\nimport type { ReactElement } from 'react';\nimport { isValidElement, useMemo, useRef, useState } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { FormItemWrapper } from '../form-item-wrapper';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { TipsWrapper } from '../tips-wrapper';\nimport './style.less';\nimport type {\n EditableTableProColumnItem,\n EditableTableProDataIndex,\n EditableTableProOperation,\n} from './type';\n\ntype dataSourceRelativeItem = {\n level: number;\n parentUid?: string | number;\n index: number;\n};\n\nexport type EditableTableProProps = {\n columns: EditableTableProColumnItem[];\n /**\n * 当前Edittable处在formList内部时(必填),完整formItem的name\n * ```\n * 例如 处在formList内部\n * 1. formListName=[0,dataList]\n * 2. formListCompleteName=[xxxList, 0, dataList]\n * ```\n */\n formListCompleteName?: Array<string | number>;\n /** Form.List name */\n formListName: Array<string | number> | string;\n /** 唯一值字段Key */\n uidFieldKey: string;\n /** 指定树形结构的列名,默认值:children */\n childrenColumnName?: string;\n /** 表格组件配置 */\n tableProps?: Omit<TableProps<TPlainObject>, 'dataSource' | 'columns' | 'rowKey'> & {\n // 如果重写了columns.onCell,则此配置失效\n cellVerticalAlign?: 'baseline' | 'middle' | 'top' | 'bottom';\n };\n /**\n * Form.List rules\n * ```\n rules={[\n {\n validator: async (_, names) => {\n if (!names || names.length < 2) {\n return Promise.reject(new Error('At least 2 passengers'));\n }\n },\n },\n ]}\n * ```\n */\n rules?: FormListProps['rules'];\n className?: string;\n style?: React.CSSProperties;\n\n /**`默认新增按钮`新增行默认值,hiddenFooterBtn != true 有效 */\n addRowDefaultValues?: () => TPlainObject;\n /** 隐藏底部`新增`按钮 */\n hiddenFooterBtn?: boolean;\n /** 表格顶部区域渲染 */\n tableBeforeAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /** 表格底部区域渲染 */\n tableAfterAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /** 展开的行key,一般用于初始化,重新tableProps.expandable.expandedRowKeys后失效 */\n expandedRowKeys?: string[];\n /**\n * 展开图标布局,默认:layout1\n * ```\n * 1. 可编辑表格第一项为可编辑状态时,选 layout1\n * 2. 可编辑表格第一项为非可编辑状态时,选 layout2\n * ```\n */\n expandedIconLayout?: 'layout1' | 'layout2';\n};\n\n/**\n * 使用FormList实现可编辑表格\n * ```\n * 1. 必须在外部包裹Form组件\n * 2. 表格数据源数组中必须存在唯一值字段,通过uidFieldKey配置\n * 3. 可嵌套编辑,数据嵌套的节点名称可通过 childrenColumnName设置,默认:children\n * 4. 行内需要联动逻辑可使用 column.render.operation.setCurrentRowTargetField 方法\n * 5. 在多级编辑中,可通过 column.render.operation.level 判断当前行数据层级\n * 6. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 7. 存在多级的情况下,可通过 column.render.operation.move 方法实现同一级内移动\n *\n * demo\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable1\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable2\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable4\n * ```\n */\nexport const EditableTablePro = (props: EditableTableProProps) => {\n const form = Form.useFormInstance();\n const [expandedRowKeys, setExpandedRowKeys] = useState<string[]>([]);\n const formListName = toArray<string | number>(props.formListName);\n const dataSourceUidMap = useRef<Record<string, TPlainObject>>({});\n const dataSourceUidMapFt = useRef<Record<string | number, dataSourceRelativeItem>>({});\n const formListOperationRef = useRef<FormListOperation>();\n const uidFieldKey = props.uidFieldKey;\n const childrenColumnName = props.childrenColumnName || 'children';\n const expandedIconLayout = props.expandedIconLayout || 'layout1';\n\n const formListCompleteName = props.formListCompleteName || formListName;\n\n const dataSource = Form.useWatch(formListCompleteName, form);\n\n const dataSourceFt = useMemo(() => {\n if (!dataSource) return [];\n function deep(itemList: TPlainObject[], level: number, parentUid?: string | number) {\n itemList.forEach((item, itemIndex) => {\n if (!item[uidFieldKey]) {\n console.error(item, '数据中未查询到唯一值');\n } else {\n dataSourceUidMapFt.current[item[uidFieldKey]] = {\n level,\n parentUid,\n index: itemIndex,\n };\n dataSourceUidMap.current[item[uidFieldKey]] = item;\n deep(item[childrenColumnName] || [], level + 1, item[uidFieldKey]);\n }\n });\n }\n dataSourceUidMapFt.current = {};\n dataSourceUidMap.current = {};\n deep(isArray(dataSource) ? dataSource : [], 1);\n return dataSource;\n }, [childrenColumnName, dataSource, uidFieldKey]);\n\n fbaHooks.useEffectCustom(() => {\n setExpandedRowKeys(props.expandedRowKeys || []);\n }, [JSON.stringify(props.expandedRowKeys || [])]);\n\n const getFormItemName = hooks.useCallbackRef((record: TPlainObject) => {\n const uid = record[uidFieldKey];\n let target: dataSourceRelativeItem | undefined = dataSourceUidMapFt.current[uid];\n\n const indexes: number[] = [];\n while (target) {\n indexes.push(target.index);\n if (target.level === 1) {\n break;\n }\n target = target.parentUid ? dataSourceUidMapFt.current[target.parentUid] : undefined;\n }\n const arr: Array<string | number> = [];\n indexes.reverse().forEach((item, index) => {\n arr.push(item);\n if (index < indexes.length - 1) {\n arr.push(childrenColumnName);\n }\n });\n return arr;\n });\n\n const addItem = hooks.useCallbackRef((uid: string, defaultValue: TPlainObject, insertIndex?: number) => {\n const target = dataSourceUidMap.current[uid];\n\n if (target) {\n if (target.level === 1) {\n /** 通过 formListOperation.add 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.add(defaultValue, insertIndex);\n return;\n }\n target[childrenColumnName] = target[childrenColumnName] || [];\n if (insertIndex == undefined) {\n target[childrenColumnName].push(defaultValue);\n } else {\n target[childrenColumnName].splice(insertIndex, 0, defaultValue);\n }\n const expandedRowKeysSet = new Set(expandedRowKeys);\n expandedRowKeysSet.add(target[uidFieldKey]);\n setExpandedRowKeys([...Array.from(expandedRowKeysSet)]);\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const deleteItem = hooks.useCallbackRef((uid: string | number, index: number) => {\n const target = dataSourceUidMapFt.current[uid];\n if (target.level === 1) {\n /** 通过 formListOperation.remove 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.remove(index);\n return;\n }\n const parentUid = target.parentUid;\n if (!parentUid) {\n dataSource.splice(index, 1);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName].splice(index, 1);\n if (parentTarget[childrenColumnName].length === 0) {\n delete parentTarget[childrenColumnName];\n }\n }\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: cloneState(dataSource),\n },\n ]);\n });\n\n const moveItem = hooks.useCallbackRef((uid: string | number, fromIndex: number, toIndex: number) => {\n if (fromIndex === toIndex || toIndex < 0) return;\n const target = dataSourceUidMapFt.current[uid];\n const parentUid = target.parentUid;\n if (!parentUid) {\n const result = arrayReorder(dataSource, fromIndex, toIndex);\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: result,\n },\n ]);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName] = arrayReorder(parentTarget[childrenColumnName], fromIndex, toIndex);\n\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const setCurrentRowTargetField = hooks.useCallbackRef(\n (\n formItemPrevName: Array<string | number>,\n dataIndexConfigs: {\n name: EditableTableProDataIndex;\n value?: TAny;\n }[],\n ) => {\n fbaUtils.setFormFieldsAndTriggerValuesChange(\n form,\n dataIndexConfigs.map((item) => {\n return {\n name: [...formListCompleteName, ...formItemPrevName, ...toArray<string | number>(item.name)],\n value: item.value,\n };\n }),\n );\n },\n );\n\n const setCurrentRowChildrenValue = hooks.useCallbackRef(\n (formItemPrevName: Array<string | number>, value?: TPlainObject[]) => {\n setCurrentRowTargetField(formItemPrevName, [{ name: childrenColumnName, value }]);\n },\n );\n\n const validateRowFields = hooks.useCallbackRef(\n async (formItemPrevName: Array<string | number>, nameList: EditableTableProDataIndex[]) => {\n await form.validateFields(\n nameList.map((item) => [...formItemPrevName, ...toArray<string | number>(item)]),\n );\n },\n );\n\n const columns = useMemo(() => {\n return props.columns.map((column) => {\n const title = column.title;\n const support = isValidElement(title) || typeof title === 'string';\n let titleRender: ReactElement | string | undefined = title;\n if (column.tipsWrapperProps && support) {\n if (typeof column.tipsWrapperProps === 'string') {\n titleRender = (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: column.tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n );\n } else {\n titleRender = <TipsWrapper {...column.tipsWrapperProps}>{title}</TipsWrapper>;\n }\n }\n\n let required = column.required;\n\n if (!required && typeof column.formItemProps === 'object' && column.formItemProps.rules?.length) {\n required = !!column.formItemProps.rules.find((item) => !!item['required']);\n }\n\n return {\n onCell: () => {\n return {\n valign: props.tableProps?.cellVerticalAlign || 'middle',\n };\n },\n ...column,\n title: required ? (\n <TextSymbolWrapper\n style={{ marginLeft: column.align === 'center' ? undefined : 10 }}\n text={titleRender}\n position=\"before\"\n symbolType=\"required\"\n />\n ) : (\n titleRender\n ),\n render: (value, record, index) => {\n if (isUndefinedOrNull(column.render)) {\n return value;\n }\n const uid = record[uidFieldKey];\n const dataIndex = toArray<string>(column['dataIndex']);\n const formItemPrevName = getFormItemName(record);\n const dataSourceTarget = dataSourceUidMapFt.current[uid];\n\n const editable =\n typeof column?.editable === 'function' ? column?.editable(record, index) : column?.editable;\n const tableRowFormItemCompleteName = [...formListCompleteName, ...formItemPrevName];\n\n const renderOperationProps: EditableTableProOperation = {\n editable,\n add: addItem.bind(null, uid),\n remove: deleteItem.bind(null, uid),\n move: moveItem.bind(null, uid),\n level: dataSourceTarget.level,\n parentItem: dataSourceTarget.parentUid\n ? dataSourceUidMapFt.current[dataSourceTarget.parentUid]\n : null,\n tableRowFormItemName: formItemPrevName,\n tableRowFormItemCompleteName,\n setCurrentRowTargetField: setCurrentRowTargetField.bind(null, formItemPrevName),\n setCurrentRowChildrenValue: setCurrentRowChildrenValue.bind(null, formItemPrevName),\n validateRowFields: validateRowFields.bind(null, tableRowFormItemCompleteName),\n };\n if (editable === true) {\n let formItemProps =\n typeof column.formItemProps === 'function'\n ? column.formItemProps(value, record, index, renderOperationProps)\n : column.formItemProps;\n\n if (!formItemProps?.rules?.length && required) {\n formItemProps = { ...formItemProps, rules: [{ required: true, message: '' }] };\n }\n\n return (\n <FormItemWrapper\n {...formItemProps}\n name={[...formItemPrevName, ...dataIndex]}\n style={{ marginBottom: 0, ...formItemProps?.style }}\n >\n {column.render?.(value, record, index, renderOperationProps) as React.ReactNode}\n </FormItemWrapper>\n );\n }\n return column.render?.(value, record, index, renderOperationProps);\n },\n };\n }) as ColumnsType<TPlainObject>;\n }, [\n props.columns,\n props.tableProps?.cellVerticalAlign,\n uidFieldKey,\n getFormItemName,\n formListCompleteName,\n addItem,\n deleteItem,\n moveItem,\n setCurrentRowTargetField,\n setCurrentRowChildrenValue,\n validateRowFields,\n ]);\n\n const className = classNames(\n 'editable-table-pro',\n { 'editable-table-pro-layout1': expandedIconLayout === 'layout1' },\n props.className,\n );\n\n return (\n <div className={className} style={props.style}>\n <Form.List name={formListName} rules={props.rules}>\n {(fields, formListOperation, { errors }) => {\n formListOperationRef.current = formListOperation;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.tableBeforeAreaRender?.(formListOperation, fields.length)}\n <Table\n scroll={{ x: 'max-content' }}\n pagination={false}\n size=\"small\"\n {...props.tableProps}\n expandable={{\n expandedRowKeys: expandedRowKeys,\n onExpandedRowsChange: (expandedRowKeys) => {\n setExpandedRowKeys(expandedRowKeys as string[]);\n },\n ...props.tableProps?.expandable,\n childrenColumnName: childrenColumnName,\n }}\n columns={columns}\n dataSource={dataSourceFt}\n rowKey={uidFieldKey}\n />\n <ButtonWrapper\n block\n hidden={props.hiddenFooterBtn}\n type=\"dashed\"\n icon={<PlusOutlined />}\n style={{ marginTop: 15 }}\n onClick={() => {\n const defaultValues = props.addRowDefaultValues?.();\n if (!defaultValues?.[uidFieldKey]) {\n void message.error(\n `新增行默认值必须包含唯一值字段【${uidFieldKey}】,通过 addRowDefaultValues 设置`,\n );\n return;\n }\n formListOperation.add(defaultValues);\n }}\n >\n 新增\n </ButtonWrapper>\n {props.tableAfterAreaRender?.(formListOperation, fields.length)}\n {errors.length ? (\n <Form.ErrorList\n errors={[\n <div style={{ color: '#ff4d4f', padding: '5px' }} key=\"0\">\n {errors}\n </div>,\n ]}\n />\n ) : null}\n </div>\n );\n }}\n </Form.List>\n </div>\n );\n};\n"],"names":["EditableTablePro","props","_props$tableProps2","form","Form","useFormInstance","_useState","useState","expandedRowKeys","setExpandedRowKeys","formListName","toArray","dataSourceUidMap","useRef","dataSourceUidMapFt","formListOperationRef","uidFieldKey","childrenColumnName","expandedIconLayout","formListCompleteName","dataSource","useWatch","dataSourceFt","useMemo","deep","itemList","level","parentUid","forEach","item","itemIndex","console","error","current","index","_isArray","fbaHooks","useEffectCustom","JSON","stringify","getFormItemName","_hooks","useCallbackRef","record","uid","target","indexes","push","undefined","arr","reverse","length","addItem","defaultValue","insertIndex","_formListOperationRef","add","splice","expandedRowKeysSet","Set","concat","Array","from","fbaUtils","setFormFieldsAndTriggerValuesChange","name","value","deleteItem","_formListOperationRef2","remove","parentTarget","cloneState","moveItem","fromIndex","toIndex","result","arrayReorder","setCurrentRowTargetField","formItemPrevName","dataIndexConfigs","map","setCurrentRowChildrenValue","validateRowFields","nameList","Promise","$return","$error","resolve","validateFields","then","$await_1","$boundEx","columns","column","_column$formItemProps","title","support","isValidElement","titleRender","tipsWrapperProps","_jsx","TipsWrapper","tipType","popoverProps","content","children","_extends","required","formItemProps","rules","find","onCell","_props$tableProps","valign","tableProps","cellVerticalAlign","TextSymbolWrapper","style","marginLeft","align","text","position","symbolType","render","isUndefinedOrNull","dataIndex","dataSourceTarget","editable","tableRowFormItemCompleteName","renderOperationProps","bind","move","parentItem","tableRowFormItemName","_formItemProps","_formItemProps2","message","FormItemWrapper","marginBottom","className","_classNames","List","fields","formListOperation","_ref","_props$tableProps3","errors","_jsxs","borderRadius","border","tableBeforeAreaRender","Table","scroll","x","pagination","size","expandable","onExpandedRowsChange","rowKey","ButtonWrapper","block","hidden","hiddenFooterBtn","type","icon","_PlusOutlined","marginTop","onClick","defaultValues","addRowDefaultValues","tableAfterAreaRender","ErrorList","color","padding"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import './index.css';
3
3
  /*! @flatjs/forge MIT @flatbiz/antd */
4
- import{isArray as r}from"@dimjs/lang/cjs/is-array";import{getGlobalData as t,getUuid as e}from"@flatbiz/utils";var i=function e(){var i=t(),n=i.elemAclLimits;var a=r(n)?n:[];return a};var n=function r(t){if(!t)return true;var e=i();if(e.includes(t)){return true}return false};function a(r,t){var e=r;for(var i in t){if(t.hasOwnProperty(i)){e[i]=t[i]}}return e}var o=function r(){return e()};var s={hasPermission:n,getPermissionList:i,attachPropertiesToComponent:a,getModelKey:o};export{s as fbaUtils};
4
+ import{isArray as r}from"@dimjs/lang/cjs/is-array";import{getGlobalData as e,getUuid as a}from"@flatbiz/utils";var n=function a(){var n=e(),t=n.elemAclLimits;var i=r(t)?t:[];return i};var t=function r(e){if(!e)return true;var a=n();if(a.includes(e)){return true}return false};function i(r,e){var a=r;for(var n in e){if(e.hasOwnProperty(n)){a[n]=e[n]}}return a}var o=function r(){return a()};var u=function r(e,a){var n=e.getInternalHooks("RC_FORM_INTERNAL_HOOKS").dispatch;a.forEach((function(r){n({type:"updateValue",namePath:r.name,value:r.value})}))};var s=function r(e,a){var n=a.map((function(r){return{name:r.name,value:r.value}}));e.setFields(n);u(e,n)};var l={hasPermission:t,getPermissionList:n,attachPropertiesToComponent:i,getModelKey:o,triggerFormValuesChange:u,setFormFieldsAndTriggerValuesChange:s};export{l as fbaUtils};
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/fba-utils/fba-utils.ts"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { getGlobalData, getUuid } from '@flatbiz/utils';\n\nconst getPermissionList = () => {\n const { elemAclLimits } = getGlobalData<{ elemAclLimits: string[] }>();\n const permissionList: string[] = isArray(elemAclLimits) ? elemAclLimits : [];\n return permissionList;\n};\n\nconst hasPermission = (name?: string) => {\n if (!name) return true;\n const permissionList = getPermissionList();\n if (permissionList.includes(name)) {\n return true;\n }\n return false;\n};\n\nfunction attachPropertiesToComponent<C, P extends Record<string, unknown>>(\n component: C,\n properties: P,\n): C & P {\n const ret = component as Record<string, unknown>;\n for (const key in properties) {\n if (properties.hasOwnProperty(key)) {\n ret[key] = properties[key];\n }\n }\n return ret as C & P;\n}\n\nconst getModelKey = () => {\n return getUuid();\n};\n\nexport const fbaUtils = {\n hasPermission,\n getPermissionList,\n attachPropertiesToComponent,\n getModelKey,\n};\n"],"names":["getPermissionList","_getGlobalData","getGlobalData","elemAclLimits","permissionList","_isArray","hasPermission","name","includes","attachPropertiesToComponent","component","properties","ret","key","hasOwnProperty","getModelKey","getUuid","fbaUtils"],"mappings":";+GAGA,IAAMA,EAAoB,SAApBA,IACJ,IAAAC,EAA0BC,IAAlBC,EAAaF,EAAbE,cACR,IAAMC,EAA2BC,EAAQF,GAAiBA,EAAgB,GAC1E,OAAOC,CACT,EAEA,IAAME,EAAgB,SAAhBA,EAAiBC,GACrB,IAAKA,EAAM,OAAO,KAClB,IAAMH,EAAiBJ,IACvB,GAAII,EAAeI,SAASD,GAAO,CACjC,OAAO,IACT,CACA,OAAO,KACT,EAEA,SAASE,EACPC,EACAC,GAEA,IAAMC,EAAMF,EACZ,IAAK,IAAMG,KAAOF,EAAY,CAC5B,GAAIA,EAAWG,eAAeD,GAAM,CAClCD,EAAIC,GAAOF,EAAWE,EACxB,CACF,CACA,OAAOD,CACT,CAEA,IAAMG,EAAc,SAAdA,IACJ,OAAOC,GACT,EAEO,IAAMC,EAAW,CACtBX,cAAAA,EACAN,kBAAAA,EACAS,4BAAAA,EACAM,YAAAA"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/fba-utils/fba-utils.ts"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { getGlobalData, getUuid, TAny } from '@flatbiz/utils';\nimport { FormInstance } from 'antd';\n\nconst getPermissionList = () => {\n const { elemAclLimits } = getGlobalData<{ elemAclLimits: string[] }>();\n const permissionList: string[] = isArray(elemAclLimits) ? elemAclLimits : [];\n return permissionList;\n};\n\nconst hasPermission = (name?: string) => {\n if (!name) return true;\n const permissionList = getPermissionList();\n if (permissionList.includes(name)) {\n return true;\n }\n return false;\n};\n\nfunction attachPropertiesToComponent<C, P extends Record<string, unknown>>(\n component: C,\n properties: P,\n): C & P {\n const ret = component as Record<string, unknown>;\n for (const key in properties) {\n if (properties.hasOwnProperty(key)) {\n ret[key] = properties[key];\n }\n }\n return ret as C & P;\n}\n\nconst getModelKey = () => {\n return getUuid();\n};\n\nconst triggerFormValuesChange = (\n form: FormInstance,\n changeList: { name: string | number | Array<string | number>; value: TAny }[],\n) => {\n const formDispatch = (form as TAny).getInternalHooks('RC_FORM_INTERNAL_HOOKS').dispatch;\n changeList.forEach((item) => {\n formDispatch({\n type: 'updateValue',\n namePath: item.name,\n value: item.value,\n });\n });\n};\n\nconst setFormFieldsAndTriggerValuesChange = (\n form: FormInstance,\n changeList: { name: string | number | Array<string | number>; value: TAny }[],\n) => {\n const paramList = changeList.map((item) => {\n return {\n name: item.name,\n value: item.value,\n };\n });\n\n form.setFields(paramList);\n\n triggerFormValuesChange(form, paramList);\n};\n\nexport const fbaUtils = {\n hasPermission,\n getPermissionList,\n attachPropertiesToComponent,\n getModelKey,\n /**\n * 手动触发Antd Form 的 onValuesChange\n * ```\n * 1. 正常在通过 form.setFieldsValue 不会触发onValuesChange\n * 2. 需要触发可调用此方法\n * ```\n */\n triggerFormValuesChange,\n /**\n * 操作Antd Form\n * ```\n * 1. 通过 form.setFields 修改属性值\n * 2. 触发 Form 的 onValuesChange\n * ```\n */\n setFormFieldsAndTriggerValuesChange: setFormFieldsAndTriggerValuesChange,\n};\n"],"names":["getPermissionList","_getGlobalData","getGlobalData","elemAclLimits","permissionList","_isArray","hasPermission","name","includes","attachPropertiesToComponent","component","properties","ret","key","hasOwnProperty","getModelKey","getUuid","triggerFormValuesChange","form","changeList","formDispatch","getInternalHooks","dispatch","forEach","item","type","namePath","value","setFormFieldsAndTriggerValuesChange","paramList","map","setFields","fbaUtils"],"mappings":";+GAIA,IAAMA,EAAoB,SAApBA,IACJ,IAAAC,EAA0BC,IAAlBC,EAAaF,EAAbE,cACR,IAAMC,EAA2BC,EAAQF,GAAiBA,EAAgB,GAC1E,OAAOC,CACT,EAEA,IAAME,EAAgB,SAAhBA,EAAiBC,GACrB,IAAKA,EAAM,OAAO,KAClB,IAAMH,EAAiBJ,IACvB,GAAII,EAAeI,SAASD,GAAO,CACjC,OAAO,IACT,CACA,OAAO,KACT,EAEA,SAASE,EACPC,EACAC,GAEA,IAAMC,EAAMF,EACZ,IAAK,IAAMG,KAAOF,EAAY,CAC5B,GAAIA,EAAWG,eAAeD,GAAM,CAClCD,EAAIC,GAAOF,EAAWE,EACxB,CACF,CACA,OAAOD,CACT,CAEA,IAAMG,EAAc,SAAdA,IACJ,OAAOC,GACT,EAEA,IAAMC,EAA0B,SAA1BA,EACJC,EACAC,GAEA,IAAMC,EAAgBF,EAAcG,iBAAiB,0BAA0BC,SAC/EH,EAAWI,SAAQ,SAACC,GAClBJ,EAAa,CACXK,KAAM,cACNC,SAAUF,EAAKjB,KACfoB,MAAOH,EAAKG,OAEhB,GACF,EAEA,IAAMC,EAAsC,SAAtCA,EACJV,EACAC,GAEA,IAAMU,EAAYV,EAAWW,KAAI,SAACN,GAChC,MAAO,CACLjB,KAAMiB,EAAKjB,KACXoB,MAAOH,EAAKG,MAEhB,IAEAT,EAAKa,UAAUF,GAEfZ,EAAwBC,EAAMW,EAChC,EAEO,IAAMG,EAAW,CACtB1B,cAAAA,EACAN,kBAAAA,EACAS,4BAAAA,EACAM,YAAAA,EAQAE,wBAAAA,EAQAW,oCAAqCA"}
@@ -2,5 +2,5 @@
2
2
  import './../fba-hooks/index.css';
3
3
  import './index.css';
4
4
  /*! @flatjs/forge MIT @flatbiz/antd */
5
- import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isString as e}from"@dimjs/lang/cjs/is-string";import{useRef as n,useMemo as r,memo as i}from"react";import{classNames as a}from"@dimjs/utils/cjs/class-names";import{useSize as l}from"ahooks";import{Tooltip as o}from"antd";import{fbaHooks as s}from"../fba-hooks/index.js";import{jsxs as d,jsx as c}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";var h=function t(e){var r=n(null);var i=l(r);var h=(i==null?void 0:i.width)||0;var u=n(null);var m=l(u);var v=s.useMemoCustom((function(){if(!(m!=null&&m.width)||!h)return false;return m.width>h}),[m==null?void 0:m.width,h]);return d("div",{className:a("text-overflow",{"tow-trigger":e.onClick}),ref:r,children:[c("span",{className:"tow-hidden",children:c("span",{className:"tow-inner-text",ref:u,children:e.text})}),c(o,{title:v?e.text:undefined,children:c("span",{className:"tow-content",children:c("span",{className:"tow-show-text",onClick:e.onClick,children:e.text})})})]})};var u=function t(e){var r=n(null);var i=l(r);var s=e.maxLength;var h=(i==null?void 0:i.width)||0;var u=e.text;var m=n(null);var v=l(m);var w=u.length>s;var f=(v==null?void 0:v.width)||0;var p=w&&f<h;var x=h<f+1||w;var g=u.substring(0,e.maxLength);return d("div",{className:a("text-overflow",{"tow-trigger":e.onClick}),ref:r,children:[c("span",{className:"tow-hidden",children:c("span",{className:"tow-inner-text",ref:m,children:g})}),c(o,{title:x?u:undefined,children:p?c("span",{className:"tow-cut-content",children:d("span",{className:"tow-show-text",onClick:e.onClick,children:[g,"..."]})}):c("span",{className:"tow-content",children:c("span",{className:"tow-show-text",onClick:e.onClick,children:u})})})]})};var m=function t(e){var i=n(null);var s=l(i);var h=e.maxWidth||0;var u=n(null);var m=l(u);var v=r((function(){if(!(m!=null&&m.width)||!(s!=null&&s.width))return undefined;if(s.width<h){if(m.width>s.width){return{showTips:true}}}if(m.width<h)return undefined;if(m.width>h){return{showTips:true,width:h}}return undefined}),[m==null?void 0:m.width,h]);var w=v==null?void 0:v.showTips;return d("div",{className:a("text-overflow",{"tow-trigger":e.onClick}),ref:i,children:[c("span",{className:"tow-hidden",children:c("span",{className:"tow-inner-text",ref:u,children:e.text})}),c(o,{title:w?e.text:undefined,children:c("span",{className:"tow-content",style:{width:v==null?void 0:v.width},children:c("span",{className:"tow-show-text",onClick:e.onClick,children:e.text})})})]})};var v=function n(r){if(r.maxLength&&e(r.text)){return c(u,t({},r))}if(r.maxWidth){return c(m,t({},r))}return c(h,t({},r))};var w=i(v,(function(t,e){if(t.text!==e.text||t.maxLength!==e.maxLength||t.maxWidth!==t.maxWidth){return false}return true}));export{w as TextOverflow};
5
+ import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isString as e}from"@dimjs/lang/cjs/is-string";import{useRef as n,useMemo as r,memo as i}from"react";import{classNames as a}from"@dimjs/utils/cjs/class-names";import{useSize as l}from"ahooks";import{Tooltip as o}from"antd";import{fbaHooks as s}from"../fba-hooks/index.js";import{jsxs as d,jsx as c}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";var h=function t(e){var r=n(null);var i=l(r);var h=(i==null?void 0:i.width)||0;var u=n(null);var m=l(u);var v=s.useMemoCustom((function(){if(!(m!=null&&m.width)||!h)return false;return m.width>h}),[m==null?void 0:m.width,h]);return d("div",{className:a("text-overflow",{"tow-trigger":e.onClick}),ref:r,children:[c("span",{className:"tow-hidden",children:c("span",{className:"tow-inner-text",ref:u,children:e.text})}),c(o,{title:v&&!e.hideTip?e.text:undefined,children:c("span",{className:"tow-content",children:c("span",{className:"tow-show-text",onClick:e.onClick,children:e.text})})})]})};var u=function t(e){var r=n(null);var i=l(r);var s=e.maxLength;var h=(i==null?void 0:i.width)||0;var u=e.text;var m=n(null);var v=l(m);var f=u.length>s;var w=(v==null?void 0:v.width)||0;var x=f&&w<h;var p=h<w+1||f;var g=u.substring(0,e.maxLength);return d("div",{className:a("text-overflow",{"tow-trigger":e.onClick}),ref:r,children:[c("span",{className:"tow-hidden",children:c("span",{className:"tow-inner-text",ref:m,children:g})}),c(o,{title:p&&!e.hideTip?u:undefined,children:x?c("span",{className:"tow-cut-content",children:d("span",{className:"tow-show-text",onClick:e.onClick,children:[g,"..."]})}):c("span",{className:"tow-content",children:c("span",{className:"tow-show-text",onClick:e.onClick,children:u})})})]})};var m=function t(e){var i=n(null);var s=l(i);var h=e.maxWidth||0;var u=n(null);var m=l(u);var v=r((function(){if(!(m!=null&&m.width)||!(s!=null&&s.width))return undefined;if(s.width<h){if(m.width>s.width){return{isTextOverflow:true}}}if(m.width<h)return undefined;if(m.width>h){return{isTextOverflow:true,width:h}}return undefined}),[m==null?void 0:m.width,h]);var f=v==null?void 0:v.isTextOverflow;return d("div",{className:a("text-overflow",{"tow-trigger":e.onClick}),ref:i,children:[c("span",{className:"tow-hidden",children:c("span",{className:"tow-inner-text",ref:u,children:e.text})}),c(o,{title:f&&!e.hideTip?e.text:undefined,children:c("span",{className:"tow-content",style:{width:v==null?void 0:v.width},children:c("span",{className:"tow-show-text",onClick:e.onClick,children:e.text})})})]})};var v=function n(r){if(r.maxLength&&e(r.text)){return c(u,t({},r))}if(r.maxWidth){return c(m,t({},r))}return c(h,t({},r))};var f=i(v,(function(t,e){if(t.text!==e.text||t.maxLength!==e.maxLength||t.maxWidth!==t.maxWidth){return false}return true}));export{f as TextOverflow};
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/text-overflow/overflow-auto.tsx","@flatbiz/antd/src/text-overflow/overflow-length.tsx","@flatbiz/antd/src/text-overflow/overflow-width.tsx","@flatbiz/antd/src/text-overflow/text-overflow.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { useSize } from 'ahooks';\nimport { Tooltip } from 'antd';\nimport { useRef } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\nimport { TextOverflowProps } from './types';\n\nexport const OverflowAuto = (props: TextOverflowProps) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const size = useSize(rootRef);\n const parentNodeWidth = size?.width || 0;\n const hideTextRef = useRef<HTMLSpanElement>(null);\n\n const hideTextSize = useSize(hideTextRef);\n\n // 文本宽度\n const showTips = fbaHooks.useMemoCustom(() => {\n if (!hideTextSize?.width || !parentNodeWidth) return false;\n return hideTextSize.width > parentNodeWidth;\n }, [hideTextSize?.width, parentNodeWidth]);\n\n return (\n <div\n className={classNames('text-overflow', {\n 'tow-trigger': props.onClick,\n })}\n ref={rootRef}\n >\n <span className=\"tow-hidden\">\n <span className=\"tow-inner-text\" ref={hideTextRef}>\n {props.text}\n </span>\n </span>\n <Tooltip title={showTips ? props.text : undefined}>\n <span className=\"tow-content\">\n <span className=\"tow-show-text\" onClick={props.onClick}>\n {props.text}\n </span>\n </span>\n </Tooltip>\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { useSize } from 'ahooks';\nimport { Tooltip } from 'antd';\nimport { useRef } from 'react';\nimport { TextOverflowProps } from './types';\n\nexport const OverflowLength = (props: Omit<TextOverflowProps, 'maxWidth'>) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const size = useSize(rootRef);\n const maxLength = props.maxLength as number;\n const parentNodeWidth = size?.width || 0;\n const text = props.text as string;\n const hideTextRef = useRef<HTMLSpanElement>(null);\n\n const hideTextSize = useSize(hideTextRef);\n const needCut = text.length > maxLength;\n\n const cutedTextWidth = hideTextSize?.width || 0;\n\n const showCustomEllipsis = needCut && cutedTextWidth < parentNodeWidth;\n\n const showTips = parentNodeWidth < cutedTextWidth + 1 || needCut;\n\n const cutValue = text.substring(0, props.maxLength);\n\n return (\n <div\n className={classNames('text-overflow', {\n 'tow-trigger': props.onClick,\n })}\n ref={rootRef}\n >\n <span className=\"tow-hidden\">\n <span className=\"tow-inner-text\" ref={hideTextRef}>\n {cutValue}\n </span>\n </span>\n\n <Tooltip title={showTips ? text : undefined}>\n {showCustomEllipsis ? (\n <span className=\"tow-cut-content\">\n <span className=\"tow-show-text\" onClick={props.onClick}>\n {cutValue}...\n </span>\n </span>\n ) : (\n <span className=\"tow-content\">\n <span className=\"tow-show-text\" onClick={props.onClick}>\n {text}\n </span>\n </span>\n )}\n </Tooltip>\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { useSize } from 'ahooks';\nimport { Tooltip } from 'antd';\nimport { useMemo, useRef } from 'react';\nimport { TextOverflowProps } from './types';\n\nexport const OverflowWidth = (props: Omit<TextOverflowProps, 'maxLength'>) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const rootSize = useSize(rootRef);\n const maxWidth = props.maxWidth || 0;\n const hideTextRef = useRef<HTMLSpanElement>(null);\n\n const hideTextSize = useSize(hideTextRef);\n\n const handleResult = useMemo(() => {\n if (!hideTextSize?.width || !rootSize?.width) return undefined;\n if (rootSize.width < maxWidth) {\n if (hideTextSize.width > rootSize.width) {\n return { showTips: true };\n }\n }\n if (hideTextSize.width < maxWidth) return undefined;\n if (hideTextSize.width > maxWidth) {\n return { showTips: true, width: maxWidth };\n }\n return undefined;\n }, [hideTextSize?.width, maxWidth]);\n\n const showTips = handleResult?.showTips;\n\n return (\n <div\n className={classNames('text-overflow', {\n 'tow-trigger': props.onClick,\n })}\n ref={rootRef}\n >\n <span className=\"tow-hidden\">\n <span className=\"tow-inner-text\" ref={hideTextRef}>\n {props.text}\n </span>\n </span>\n\n <Tooltip title={showTips ? props.text : undefined}>\n <span className=\"tow-content\" style={{ width: handleResult?.width }}>\n <span className=\"tow-show-text\" onClick={props.onClick}>\n {props.text}\n </span>\n </span>\n </Tooltip>\n </div>\n );\n};\n","import { isString } from '@dimjs/lang';\nimport { memo } from 'react';\nimport { OverflowAuto } from './overflow-auto';\nimport { OverflowLength } from './overflow-length';\nimport { OverflowWidth } from './overflow-width';\nimport './style.less';\nimport { TextOverflowProps } from './types';\n\nconst InnerTextOverflow = (props: TextOverflowProps) => {\n if (props.maxLength && isString(props.text)) {\n return <OverflowLength {...props} />;\n }\n if (props.maxWidth) {\n return <OverflowWidth {...props} />;\n }\n return <OverflowAuto {...props} />;\n};\n\n/**\n * 内容溢出截取,并在尾部添加...,被截取的添加Tooltip显示完整数据\n * ```\n * 控制文本显示三种方式\n * 1. 通过 maxLength 控制超长\n * 2. 通过 maxWidth 控制超长\n * 3. 与父节点宽度比较,控制超长\n * 4. 优先级 maxLength > maxWidth\n *\n * 注意:\n * 1. 当前节点父节点需要添加 overflow-x: hidden;\n * 2. 如果父节点设置flex-shrink会有影响,可复写flex-shrink: initial;\n * 3. 与 Table columns render结合使用,需要配置ellipsis=true\n * 例如:<Table columns={[{\n ...\n render: (value) => {\n return <TextOverflow text={value} />;\n },\n ellipsis: true,\n }]} />\n 4. 与 Table columns render结合使用,如果Table配置了 scroll={{ x: 'max-content' }}后,不能与TextOverflow maxWidth结合使用\n * ```\n */\nexport const TextOverflow = memo(InnerTextOverflow, (pre, next) => {\n if (pre.text !== next.text || pre.maxLength !== next.maxLength || pre.maxWidth !== pre.maxWidth) {\n return false;\n }\n return true;\n});\n"],"names":["OverflowAuto","props","rootRef","useRef","size","useSize","parentNodeWidth","width","hideTextRef","hideTextSize","showTips","fbaHooks","useMemoCustom","_jsxs","className","_classNames","onClick","ref","children","_jsx","text","Tooltip","title","undefined","OverflowLength","maxLength","needCut","length","cutedTextWidth","showCustomEllipsis","cutValue","substring","OverflowWidth","rootSize","maxWidth","handleResult","useMemo","style","InnerTextOverflow","_isString","_extends","TextOverflow","memo","pre","next"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/text-overflow/overflow-auto.tsx","@flatbiz/antd/src/text-overflow/overflow-length.tsx","@flatbiz/antd/src/text-overflow/overflow-width.tsx","@flatbiz/antd/src/text-overflow/text-overflow.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { useSize } from 'ahooks';\nimport { Tooltip } from 'antd';\nimport { useRef } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\nimport { TextOverflowProps } from './types';\n\nexport const OverflowAuto = (props: TextOverflowProps) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const size = useSize(rootRef);\n const parentNodeWidth = size?.width || 0;\n const hideTextRef = useRef<HTMLSpanElement>(null);\n\n const hideTextSize = useSize(hideTextRef);\n\n // 文本宽度是否溢出\n const isTextOverflow = fbaHooks.useMemoCustom(() => {\n if (!hideTextSize?.width || !parentNodeWidth) return false;\n return hideTextSize.width > parentNodeWidth;\n }, [hideTextSize?.width, parentNodeWidth]);\n\n return (\n <div\n className={classNames('text-overflow', {\n 'tow-trigger': props.onClick,\n })}\n ref={rootRef}\n >\n <span className=\"tow-hidden\">\n <span className=\"tow-inner-text\" ref={hideTextRef}>\n {props.text}\n </span>\n </span>\n <Tooltip title={isTextOverflow && !props.hideTip ? props.text : undefined}>\n <span className=\"tow-content\">\n <span className=\"tow-show-text\" onClick={props.onClick}>\n {props.text}\n </span>\n </span>\n </Tooltip>\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { useSize } from 'ahooks';\nimport { Tooltip } from 'antd';\nimport { useRef } from 'react';\nimport { TextOverflowProps } from './types';\n\nexport const OverflowLength = (props: Omit<TextOverflowProps, 'maxWidth'>) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const size = useSize(rootRef);\n const maxLength = props.maxLength as number;\n const parentNodeWidth = size?.width || 0;\n const text = props.text as string;\n const hideTextRef = useRef<HTMLSpanElement>(null);\n\n const hideTextSize = useSize(hideTextRef);\n const needCut = text.length > maxLength;\n\n const cutedTextWidth = hideTextSize?.width || 0;\n\n const showCustomEllipsis = needCut && cutedTextWidth < parentNodeWidth;\n\n const isTextOverflow = parentNodeWidth < cutedTextWidth + 1 || needCut;\n\n const cutValue = text.substring(0, props.maxLength);\n\n return (\n <div\n className={classNames('text-overflow', {\n 'tow-trigger': props.onClick,\n })}\n ref={rootRef}\n >\n <span className=\"tow-hidden\">\n <span className=\"tow-inner-text\" ref={hideTextRef}>\n {cutValue}\n </span>\n </span>\n\n <Tooltip title={isTextOverflow && !props.hideTip ? text : undefined}>\n {showCustomEllipsis ? (\n <span className=\"tow-cut-content\">\n <span className=\"tow-show-text\" onClick={props.onClick}>\n {cutValue}...\n </span>\n </span>\n ) : (\n <span className=\"tow-content\">\n <span className=\"tow-show-text\" onClick={props.onClick}>\n {text}\n </span>\n </span>\n )}\n </Tooltip>\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { useSize } from 'ahooks';\nimport { Tooltip } from 'antd';\nimport { useMemo, useRef } from 'react';\nimport { TextOverflowProps } from './types';\n\nexport const OverflowWidth = (props: Omit<TextOverflowProps, 'maxLength'>) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const rootSize = useSize(rootRef);\n const maxWidth = props.maxWidth || 0;\n const hideTextRef = useRef<HTMLSpanElement>(null);\n\n const hideTextSize = useSize(hideTextRef);\n\n const handleResult = useMemo(() => {\n if (!hideTextSize?.width || !rootSize?.width) return undefined;\n if (rootSize.width < maxWidth) {\n if (hideTextSize.width > rootSize.width) {\n return { isTextOverflow: true };\n }\n }\n if (hideTextSize.width < maxWidth) return undefined;\n if (hideTextSize.width > maxWidth) {\n return { isTextOverflow: true, width: maxWidth };\n }\n return undefined;\n }, [hideTextSize?.width, maxWidth]);\n\n const isTextOverflow = handleResult?.isTextOverflow;\n\n return (\n <div\n className={classNames('text-overflow', {\n 'tow-trigger': props.onClick,\n })}\n ref={rootRef}\n >\n <span className=\"tow-hidden\">\n <span className=\"tow-inner-text\" ref={hideTextRef}>\n {props.text}\n </span>\n </span>\n\n <Tooltip title={isTextOverflow && !props.hideTip ? props.text : undefined}>\n <span className=\"tow-content\" style={{ width: handleResult?.width }}>\n <span className=\"tow-show-text\" onClick={props.onClick}>\n {props.text}\n </span>\n </span>\n </Tooltip>\n </div>\n );\n};\n","import { isString } from '@dimjs/lang';\nimport { memo } from 'react';\nimport { OverflowAuto } from './overflow-auto';\nimport { OverflowLength } from './overflow-length';\nimport { OverflowWidth } from './overflow-width';\nimport './style.less';\nimport { TextOverflowProps } from './types';\n\nconst InnerTextOverflow = (props: TextOverflowProps) => {\n if (props.maxLength && isString(props.text)) {\n return <OverflowLength {...props} />;\n }\n if (props.maxWidth) {\n return <OverflowWidth {...props} />;\n }\n return <OverflowAuto {...props} />;\n};\n\n/**\n * 内容溢出截取,并在尾部添加...,被截取的添加Tooltip显示完整数据\n * ```\n * 控制文本显示三种方式\n * 1. 通过 maxLength 控制超长\n * 2. 通过 maxWidth 控制超长\n * 3. 与父节点宽度比较,控制超长\n * 4. 优先级 maxLength > maxWidth\n *\n * 注意:\n * 1. 当前节点父节点需要添加 overflow-x: hidden;\n * 2. 如果父节点设置flex-shrink会有影响,可复写flex-shrink: initial;\n * 3. 与 Table columns render结合使用,需要配置ellipsis=true\n * 例如:<Table columns={[{\n ...\n render: (value) => {\n return <TextOverflow text={value} />;\n },\n ellipsis: true,\n }]} />\n 4. 与 Table columns render结合使用,如果Table配置了 scroll={{ x: 'max-content' }}后,不能与TextOverflow maxWidth结合使用\n * ```\n */\nexport const TextOverflow = memo(InnerTextOverflow, (pre, next) => {\n if (pre.text !== next.text || pre.maxLength !== next.maxLength || pre.maxWidth !== pre.maxWidth) {\n return false;\n }\n return true;\n});\n"],"names":["OverflowAuto","props","rootRef","useRef","size","useSize","parentNodeWidth","width","hideTextRef","hideTextSize","isTextOverflow","fbaHooks","useMemoCustom","_jsxs","className","_classNames","onClick","ref","children","_jsx","text","Tooltip","title","hideTip","undefined","OverflowLength","maxLength","needCut","length","cutedTextWidth","showCustomEllipsis","cutValue","substring","OverflowWidth","rootSize","maxWidth","handleResult","useMemo","style","InnerTextOverflow","_isString","_extends","TextOverflow","memo","pre","next"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1855,35 +1855,39 @@ export type DragEditableTableProps = EditableTableProps & {
1855
1855
  * ```
1856
1856
  */
1857
1857
  export declare const DragEditableTable: (props: DragEditableTableProps) => import("react/jsx-runtime").JSX.Element;
1858
- export type EditableTableProDataIndex = string | number | readonly (string | number)[];
1858
+ export type EditableTableProDataIndex = string | readonly (string | number)[];
1859
1859
  export interface EditableTableProOperation {
1860
1860
  add: (defaultValue: TPlainObject, insertIndex?: number) => void;
1861
1861
  remove: (index: number) => void;
1862
1862
  /** 同一级内移动 */
1863
1863
  move: (fromIndex: number, toIndex: number) => void;
1864
1864
  /** 是否可编辑 */
1865
- editable: boolean;
1865
+ editable?: boolean;
1866
1866
  /** 当前行数据层级 */
1867
1867
  level: number;
1868
1868
  /** 设置当前行指定字段值 */
1869
- changeCurrentRowTargetField: (dataIndexConfigs: {
1869
+ setCurrentRowTargetField: (dataIndexConfigs: {
1870
1870
  name: EditableTableProDataIndex;
1871
1871
  value?: TAny;
1872
1872
  }[]) => void;
1873
+ /** 设置当前行 children 数据 */
1874
+ setCurrentRowChildrenValue: (value?: TPlainObject[]) => void;
1873
1875
  /** 当前行父级数据 */
1874
1876
  parentItem: TPlainObject | null;
1875
1877
  /** 当前行表单 name */
1876
1878
  tableRowFormItemName: Array<string | number>;
1877
1879
  /** 当前行表单完整 name */
1878
1880
  tableRowFormItemCompleteName: Array<string | number>;
1881
+ /** 当前行表单验证,需要自行指定nameList(dataIndex数组) */
1882
+ validateRowFields: (nameList: EditableTableProDataIndex[]) => Promise<void>;
1879
1883
  }
1880
1884
  export type EditableTableProColumnItem = Omit<ColumnsType[0], "render" | "title" | "dataIndex"> & {
1881
1885
  title?: ReactElement | string;
1882
1886
  dataIndex?: EditableTableProDataIndex;
1883
1887
  /** Form.Item props */
1884
- formItemProps?: Omit<FormItemProps, "children" | "name">;
1888
+ formItemProps?: Omit<FormItemWrapperProps, "children" | "name"> | ((value: TAny, record: TPlainObject, index: number, operation: EditableTableProOperation) => Omit<FormItemWrapperProps, "children" | "name">);
1885
1889
  /**
1886
- * 通过 operation.editable 来判断渲染结构
1890
+ * 通过 operation.editable 来判断渲染结构,其中render返回的根节点会作为 Form.Item 的children
1887
1891
  * ```
1888
1892
  * 例如
1889
1893
  * render: (_value, _record, _index, operation) => {
@@ -1892,11 +1896,31 @@ export type EditableTableProColumnItem = Omit<ColumnsType[0], "render" | "title"
1892
1896
  * }
1893
1897
  * return <Tag>{value}</Tag>;
1894
1898
  * }
1899
+ *
1900
+ * 如果需要额外布局,可通过 formItemProps.wrapper 实现
1901
+ * formItemProps: (_value, _record, _index, operation) => {
1902
+ * return {
1903
+ * wrapper: (children) => {
1904
+ * return (
1905
+ * <FlexLayout fullIndex={[0]} direction="horizontal" gap={10}>
1906
+ * <div>{children}</div>
1907
+ * <div>额外布局</div>
1908
+ * </FlexLayout>
1909
+ * );
1910
+ * },
1911
+ * };
1912
+ * },
1913
+ * render: (_value, _record, _index, operation) => {
1914
+ * if (operation.editable) {
1915
+ * return <Input placeholder="请输入" />;
1916
+ * }
1917
+ * return <Tag>{value}</Tag>;
1918
+ * }
1895
1919
  * ```
1896
1920
  */
1897
1921
  render?: (value: TAny, record: TPlainObject, index: number, operation: EditableTableProOperation) => ReactElement;
1898
1922
  /** 是否可编辑 */
1899
- editable: boolean | ((record: TPlainObject, index: number) => boolean);
1923
+ editable?: boolean | ((record: TPlainObject, index: number) => boolean);
1900
1924
  /**
1901
1925
  * 会在 title 之后展示一个 icon
1902
1926
  * ```
@@ -1906,7 +1930,7 @@ export type EditableTableProColumnItem = Omit<ColumnsType[0], "render" | "title"
1906
1930
  * ```
1907
1931
  */
1908
1932
  tipsWrapperProps?: string | TipsWrapperProps;
1909
- /** 为表格header中的字段添加必填标识,无验证拦截功能 */
1933
+ /** 为表格header中的字段添加必填标识,如果未配置 formItemProps.rules,内部会新增一条required rule */
1910
1934
  required?: boolean;
1911
1935
  };
1912
1936
  export type EditableTableProProps = {
@@ -1955,6 +1979,16 @@ export type EditableTableProProps = {
1955
1979
  tableBeforeAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;
1956
1980
  /** 表格底部区域渲染 */
1957
1981
  tableAfterAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;
1982
+ /** 展开的行key,一般用于初始化,重新tableProps.expandable.expandedRowKeys后失效 */
1983
+ expandedRowKeys?: string[];
1984
+ /**
1985
+ * 展开图标布局,默认:layout1
1986
+ * ```
1987
+ * 1. 可编辑表格第一项为可编辑状态时,选 layout1
1988
+ * 2. 可编辑表格第一项为非可编辑状态时,选 layout2
1989
+ * ```
1990
+ */
1991
+ expandedIconLayout?: "layout1" | "layout2";
1958
1992
  };
1959
1993
  /**
1960
1994
  * 使用FormList实现可编辑表格
@@ -1962,7 +1996,7 @@ export type EditableTableProProps = {
1962
1996
  * 1. 必须在外部包裹Form组件
1963
1997
  * 2. 表格数据源数组中必须存在唯一值字段,通过uidFieldKey配置
1964
1998
  * 3. 可嵌套编辑,数据嵌套的节点名称可通过 childrenColumnName设置,默认:children
1965
- * 4. 行内需要联动逻辑可使用 column.render.operation.changeCurrentRowTargetField 方法
1999
+ * 4. 行内需要联动逻辑可使用 column.render.operation.setCurrentRowTargetField 方法
1966
2000
  * 5. 在多级编辑中,可通过 column.render.operation.level 判断当前行数据层级
1967
2001
  * 6. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序
1968
2002
  * 7. 存在多级的情况下,可通过 column.render.operation.move 方法实现同一级内移动
@@ -3086,6 +3120,28 @@ export declare const fbaUtils: {
3086
3120
  getPermissionList: () => string[];
3087
3121
  attachPropertiesToComponent: typeof attachPropertiesToComponent;
3088
3122
  getModelKey: () => string;
3123
+ /**
3124
+ * 手动触发Antd Form 的 onValuesChange
3125
+ * ```
3126
+ * 1. 正常在通过 form.setFieldsValue 不会触发onValuesChange
3127
+ * 2. 需要触发可调用此方法
3128
+ * ```
3129
+ */
3130
+ triggerFormValuesChange: (form: FormInstance, changeList: {
3131
+ name: string | number | Array<string | number>;
3132
+ value: TAny;
3133
+ }[]) => void;
3134
+ /**
3135
+ * 操作Antd Form
3136
+ * ```
3137
+ * 1. 通过 form.setFields 修改属性值
3138
+ * 2. 触发 Form 的 onValuesChange
3139
+ * ```
3140
+ */
3141
+ setFormFieldsAndTriggerValuesChange: (form: FormInstance, changeList: {
3142
+ name: string | number | Array<string | number>;
3143
+ value: TAny;
3144
+ }[]) => void;
3089
3145
  };
3090
3146
  export type FileExportProps = {
3091
3147
  /** 触发节点 */
@@ -5121,6 +5177,11 @@ export type TextOverflowProps = {
5121
5177
  maxWidth?: number;
5122
5178
  /** 最大显示字数 */
5123
5179
  maxLength?: number;
5180
+ /**
5181
+ * 关闭tooltip功能
5182
+ * 文字超出后,鼠标移入,不展示全部文字
5183
+ */
5184
+ hideTip?: boolean;
5124
5185
  onClick?: (e: any) => void;
5125
5186
  };
5126
5187
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flatbiz/antd",
3
- "version": "4.5.20",
3
+ "version": "4.5.22",
4
4
  "description": "flat-biz ui components",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",