@flatbiz/antd 4.5.16 → 4.5.17
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.
|
@@ -26,5 +26,5 @@ import './../input-text-area-wrapper/index.css';
|
|
|
26
26
|
import './../icon-wrapper/index.css';
|
|
27
27
|
import './index.css';
|
|
28
28
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
29
|
-
import{a as i,_ as e}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useSensors as r,useSensor as o,PointerSensor as t,DndContext as n}from"@dnd-kit/core";import{restrictToVerticalAxis as s}from"@dnd-kit/modifiers";import{useSortable as a,SortableContext as d,verticalListSortingStrategy as m,arrayMove as p}from"@dnd-kit/sortable";import{Form as l}from"antd";import{EditableTable as c}from"../editable-table/index.js";import{createCtx as u}from"@wove/react/cjs/create-ctx";import j from"@ant-design/icons/es/icons/DragOutlined";import{CSS as g}from"@dnd-kit/utilities";import{isUndefinedOrNull as
|
|
29
|
+
import{a as i,_ as e}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useSensors as r,useSensor as o,PointerSensor as t,DndContext as n}from"@dnd-kit/core";import{restrictToVerticalAxis as s}from"@dnd-kit/modifiers";import{useSortable as a,SortableContext as d,verticalListSortingStrategy as m,arrayMove as p}from"@dnd-kit/sortable";import{Form as l}from"antd";import{EditableTable as c}from"../editable-table/index.js";import{createCtx as u}from"@wove/react/cjs/create-ctx";import j from"@ant-design/icons/es/icons/DragOutlined";import{CSS as g}from"@dnd-kit/utilities";import{isUndefinedOrNull as v,noop as f}from"@flatbiz/utils";import{createElement as x,Children as y,cloneElement as b}from"react";import{IconWrapper as w}from"../icon-wrapper/index.js";import{jsx as h}from"react/jsx-runtime";import"@ant-design/icons/es/icons/PlusOutlined";import"@dimjs/utils/cjs/class-names";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../text-symbol-wrapper/index.js";import"../tips-wrapper/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";import"../form-item-hidden/index.js";import"../table-cell-render/index.js";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-object";import"@dimjs/utils/cjs/get";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-empty";import"../button-operate/index.js";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/lang/cjs/is-undefined";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"@dimjs/lang/cjs/is-null";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"../tag-list-render/index.js";import"../date-picker-wrapper/index.js";import"../time-53b3f55f.js";import"../date-range-picker-wrapper/index.js";import"../input-wrapper/index.js";import"../selector-wrapper/index.js";import"@ant-design/icons/es/icons/RedoOutlined";import"../request-status/index.js";import"@dimjs/lang/cjs/is-deep-equal";import"@dimjs/utils/cjs/json";import"pubsub-js";import"../switch-wrapper/index.js";import"@dimjs/lang/cjs/is-boolean";import"@dimjs/lang/cjs/is-number";import"../input-text-area-wrapper/index.js";import"../upload-wrapper/index.js";import"react-dom";import"@ant-design/icons/es/icons/DeleteOutlined";var k=u(),I=k[0],C=k[1];var _=["dragIcon"];var D=function r(o){var t=o.dragIcon,n=i(o,_);var s=n["data-row-key"];var d=a({id:s}),m=d.setActivatorNodeRef,p=d.listeners,l=d.setNodeRef,c=d.transform,u=d.transition,k=d.isDragging;if(v(s)){return h("tr",e({},n))}var I=e({},n.style,{transform:g.Transform.toString(c&&e({},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||h(j,{});return x("tr",e({},n,{ref:l,style:I,key:s}),y.map(o.children,(function(i){if(i.key==="__sort"){return b(i,{children:h("span",e({ref:m,style:{touchAction:"none",cursor:"move",display:"flex",alignItems:"center",justifyContent:"center"}},p,{children:h(w,{style:{touchAction:"none",cursor:"move",padding:"1px 0px",margin:0,justifyContent:"center",color:"#787878"},icon:C,onClick:f,size:"small"})}))})}return i})))};var F=function i(r){var o=I();return h(D,e({},r,{dragIcon:o.dragIcon}))};var O=["dragIcon","uidFieldKey","onDragChange","disabledDrag"];var N=function a(u){var j,g;var v=u.dragIcon,f=u.uidFieldKey,x=u.onDragChange,y=u.disabledDrag,b=i(u,O);var w=l.useFormInstance();var k=l.useWatch(u.completeName?u.completeName:u.name,w);var I=r(o(t,{activationConstraint:{delay:0,tolerance:0}}));var _=function i(e){var r=e.active,o=e.over;if(r.id!==(o==null?void 0:o.id)){var t=k.findIndex((function(i){return i[f]===r.id}));var n=k.findIndex((function(i){return i[f]===(o==null?void 0:o.id)}));var s=p(k,t,n);w.setFields([{name:u.completeName?u.completeName:u.name,value:s}]);x==null?void 0:x(s,{activeId:r.id,overId:o==null?void 0:o.id,activeIndex:t,overIndex:n})}};var D=y?b.columns:[{dataIndex:"__sort",width:40,key:"__sort",align:"center"}].concat(b.columns||[]);return h(C,{value:{dragIcon:v,uidFieldKey:f},children:h(n,{sensors:I,modifiers:[s],onDragEnd:_,children:h(d,{items:(k==null?void 0:k.map((function(i){return i[f]})))||[],strategy:m,children:h(c,e({},b,{uidFieldKey:f,columns:D,tableProps:e({},b.tableProps,{components:e({},(j=b.tableProps)==null?void 0:j.components,{body:e({},(g=b.tableProps)==null||(g=g.components)==null?void 0:g.body,{row:y?undefined:F})})})}))})})})};export{N as DragEditableTable};
|
|
30
30
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-editable-table/context.ts","@flatbiz/antd/src/drag-editable-table/table-tr-handle.tsx","@flatbiz/antd/src/drag-editable-table/row.tsx","@flatbiz/antd/src/drag-editable-table/drag.tsx"],"sourcesContent":["import { 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 { EditableTable, EditableTableColumn, EditableTableProps } from '../editable-table';\nimport { CtxProvider } from './context';\nimport { Row } from './row';\n\nexport type DragEditableTableProps = EditableTableProps & {\n /**\n * 拖拽图标自定义,默认使用 DragOutlined 图标\n */\n dragIcon?: ReactElement;\n\n /** 禁用拖拽 */\n disabledDrag?: boolean;\n /**\n * 表格数据唯一值字段Key\n * ```\n * ```\n */\n uidFieldKey: string;\n /**\n * 拖拽结束事件\n * ```\n * dataSource: 拖拽完成后的数据源\n * dragData\n * 1. activeId 拖拽ID\n * 2. activeIndex 拖拽起始表格数组索引值\n * 3. overIndex 拖拽结束表格数组索引值\n * ```\n */\n onDragChange?: (\n dataSource: TPlainObject[],\n dragData: {\n activeId: string | number;\n activeIndex: number;\n overIndex: number;\n },\n ) => void;\n};\n\n/**\n * 可拖拽编辑表格\n * ```\n * 1. 表格数据必须要有唯一值字段,通过参数 uidFieldKey 告诉组件\n * 2. Table 参数 components.body.row 被组件内部使用\n * ```\n */\nexport const DragEditableTable = (props: DragEditableTableProps) => {\n const { dragIcon, uidFieldKey, onDragChange, disabledDrag, ...otherProps } = props;\n const form = Form.useFormInstance();\n const dataList = Form.useWatch(props.completeName ? props.completeName : props.name, 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: props.completeName ? props.completeName : props.name,\n value: dataListNew,\n },\n ]);\n onDragChange?.(dataListNew as TPlainObject[], {\n activeId: active.id,\n activeIndex,\n overIndex,\n });\n }\n };\n\n const columns: EditableTableColumn[] = disabledDrag\n ? otherProps.columns\n : [{ dataIndex: '__sort', width: 40, key: '__sort', align: 'center' } as EditableTableColumn].concat(\n otherProps.columns || [],\n );\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 <EditableTable\n {...otherProps}\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","DragEditableTable","_otherProps$tableProp","_otherProps$tableProp2","uidFieldKey","onDragChange","disabledDrag","otherProps","form","Form","useFormInstance","dataList","useWatch","completeName","name","sensors","useSensors","useSensor","PointerSensor","activationConstraint","delay","tolerance","onDragEnd","_ref","active","over","activeIndex","findIndex","i","overIndex","dataListNew","arrayMove","setFields","value","activeId","columns","dataIndex","width","align","concat","DndContext","modifiers","restrictToVerticalAxis","SortableContext","items","strategy","verticalListSortingStrategy","EditableTable","tableProps","components","body","row","undefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-editable-table/context.ts","@flatbiz/antd/src/drag-editable-table/table-tr-handle.tsx","@flatbiz/antd/src/drag-editable-table/row.tsx","@flatbiz/antd/src/drag-editable-table/drag.tsx"],"sourcesContent":["import { 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 { EditableTable, EditableTableColumn, EditableTableProps } from '../editable-table';\nimport { CtxProvider } from './context';\nimport { Row } from './row';\n\nexport type DragEditableTableProps = EditableTableProps & {\n /**\n * 拖拽图标自定义,默认使用 DragOutlined 图标\n */\n dragIcon?: ReactElement;\n\n /** 禁用拖拽 */\n disabledDrag?: boolean;\n /**\n * 表格数据唯一值字段Key\n * ```\n * ```\n */\n uidFieldKey: string;\n /**\n * 拖拽结束事件\n * ```\n * dataSource: 拖拽完成后的数据源\n * dragData\n * 1. activeId 拖拽ID\n * 2. activeIndex 拖拽起始表格数组索引值\n * 3. overIndex 拖拽结束表格数组索引值\n * ```\n */\n onDragChange?: (\n dataSource: TPlainObject[],\n dragData: {\n activeId: string | number;\n 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 * ```\n */\nexport const DragEditableTable = (props: DragEditableTableProps) => {\n const { dragIcon, uidFieldKey, onDragChange, disabledDrag, ...otherProps } = props;\n const form = Form.useFormInstance();\n const dataList = Form.useWatch(props.completeName ? props.completeName : props.name, 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: props.completeName ? props.completeName : props.name,\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: EditableTableColumn[] = disabledDrag\n ? otherProps.columns\n : [{ dataIndex: '__sort', width: 40, key: '__sort', align: 'center' } as EditableTableColumn].concat(\n otherProps.columns || [],\n );\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 <EditableTable\n {...otherProps}\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","DragEditableTable","_otherProps$tableProp","_otherProps$tableProp2","uidFieldKey","onDragChange","disabledDrag","otherProps","form","Form","useFormInstance","dataList","useWatch","completeName","name","sensors","useSensors","useSensor","PointerSensor","activationConstraint","delay","tolerance","onDragEnd","_ref","active","over","activeIndex","findIndex","i","overIndex","dataListNew","arrayMove","setFields","value","activeId","overId","columns","dataIndex","width","align","concat","DndContext","modifiers","restrictToVerticalAxis","SortableContext","items","strategy","verticalListSortingStrategy","EditableTable","tableProps","components","body","row","undefined"],"mappings":"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"}
|
|
@@ -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 e from"@ant-design/icons/es/icons/PlusOutlined";import{a as r,_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{hooks as t}from"@wove/react/cjs/hooks";import{isPlainObject as a}from"@dimjs/lang/cjs/is-plain-object";import{extend as o}from"@dimjs/utils/cjs/extend";import{isUndefinedOrNull as s,toArray as u}from"@flatbiz/utils";import{message as l,Upload as d,Button as f}from"antd";import{useState as
|
|
5
|
+
import e from"@ant-design/icons/es/icons/PlusOutlined";import{a as r,_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{hooks as t}from"@wove/react/cjs/hooks";import{isPlainObject as a}from"@dimjs/lang/cjs/is-plain-object";import{extend as o}from"@dimjs/utils/cjs/extend";import{isUndefinedOrNull as s,toArray as u}from"@flatbiz/utils";import{message as l,Upload as d,Button as f}from"antd";import{useState as c,useMemo as m,Fragment as p}from"react";import{flushSync as v}from"react-dom";import{fbaHooks as g}from"../fba-hooks/index.js";import{jsx as h,jsxs as x}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";var j=["onChange","onUploadError","value","triggerText","limitHidden","autoSubmit"];var C=function e(f){var p=f.onChange,x=f.onUploadError,C=f.value,y=f.triggerText,b=f.limitHidden,E=f.autoSubmit,O=r(f,j);var R=c(),U=R[0],k=R[1];var D=o({uid:"uid",name:"name",url:"url"},f.fieldNames);var H=m((function(){return s(C)?undefined:u(C)}),[C]);g.useEffectCustom((function(){var e=(U==null?void 0:U.filter((function(e){return e["status"]==="error"})))||[];var r=[];H==null?void 0:H.forEach((function(e){if(e["lastModified"]){r.push(e)}else{r.push({uid:e[D.uid],name:e[D.name],url:e[D.url],status:"done",isOriginal:true,responseData:e["responseData"]})}}));if(e.length>0){var i=e.map((function(e){return{uid:e.uid,name:e.name,status:"error",isOriginal:true,response:e["response"]}}));r=r.concat(i)}k(r)}),[D.name,D.uid,D.url,H]);var L=function e(r){var i=[];var n=false;r.forEach((function(e){if(e["isOriginal"]){if(e["status"]!=="error"){var r;i.push((r={},r[D.uid]=e.uid,r[D.name]=e.name,r[D.url]=e.url,r))}}else if(a(e.response)){if(e.response.code==="0000"){var t;var o=e.response.data;var s=(f.onRequestResultAdapter==null?void 0:f.onRequestResultAdapter(o))||o;i.push((t={},t[D.uid]=s[D.uid]||e.uid,t[D.name]=s[D.name]||e.name,t[D.url]=s[D.url],t.responseData=o,t))}else{var u=e.response.message||"上传失败";n=true;e.status="error";e.response=e.response.message||"上传失败";if(x){x==null?void 0:x(u)}else{void l.error("上传操作失败...")}}}}));if(n){k([].concat(r))}p==null?void 0:p(i)};var N=t.useCallbackRef((function(e){var r=e.fileList;if(e.file.status==="done"){var i=[].concat(e.fileList);var n=i.filter((function(e){return e.status==="done"||e["isOriginal"]}));var t=n.length===i.length;if(t){L(i)}v((function(){return k(i)}));return}else if(e.file.status==="removed"){var a=e.file.uid;var o=H!==undefined?[].concat(H):[];var s=o.findIndex((function(e){var r=e[D.uid]||e.uid;return r===a}));if(s>=0){o.splice(s,1)}p==null?void 0:p(o)}else if(e.file.status==="error"){if(x){x()}else{void l.error("上传操作失败...")}}k([].concat(r));f.onUploadChange==null?void 0:f.onUploadChange(e)}));var q=m((function(){if(O.maxCount===undefined||!b)return false;if(O.maxCount===0)return true;if(U&&U.length>=O.maxCount)return true;return false}),[b,O.maxCount,U]);var w=function e(r,i){if(E===false){var n=O.maxCount;var t=[].concat(H||[],i);var a=[].concat(U||[],i);if(n!==undefined&&n!==null){if(t.length>n){t=t.slice(t.length-n);a=a.slice(a.length-n)}}k(a);f.onChange==null?void 0:f.onChange(t);return false}return true};return h(d,i({beforeUpload:w},O,{onChange:N,fileList:U,className:n("v-upload-wrapper",O.className),children:O.disabled||q?null:h(T,{triggerText:y,listType:O.listType,children:f.children})}))};var T=function r(i){if(i.children)return h(p,{children:i.children});if(i.listType==="picture-card"){return x("div",{children:[h(e,{}),h("div",{style:{marginTop:8},children:i.triggerText||"上传图片"})]})}if(i.listType==="picture"){return h(f,{type:"primary",ghost:true,children:i.triggerText||"选择图片上传"})}return h(f,{type:"primary",ghost:true,children:i.triggerText||"选择文件上传"})};export{C as UploadWrapper};
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/upload-wrapper/upload-wrapper.tsx"],"sourcesContent":["import { PlusOutlined } from '@ant-design/icons';\nimport { isPlainObject } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport { isUndefinedOrNull, TAny, toArray, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, message, Upload, UploadProps } from 'antd';\nimport { UploadChangeParam } from 'antd/lib/upload';\nimport { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport { Fragment, ReactNode, useMemo, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type UploadWrapperFileItem = {\n uid: string;\n name: string;\n url?: string;\n};\n\nexport type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {\n value?: T[] | T;\n onChange?: (value?: T[]) => void;\n onUploadError?: (message?: string) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性取值映射\n */\n fieldNames?: {\n uid: string;\n name?: string;\n url?: string;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject;\n /** 操作触发显示文本 */\n triggerText?: string;\n /** 超过maxCount 隐藏上传入口 */\n limitHidden?: boolean;\n /**\n * 自动提交,默认:true\n * ```\n * 1. 自定义beforeUpload配置后 autoSubmit 失效\n * ```\n */\n autoSubmit?: boolean;\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * demo: https://fex.qa.tcshuke.com/docs/admin/main/file/upload\n * 1. 可通过配置children替换默认上传触发布局\n * 2. 接口返回结构:\n * formData上传接口返回值\n * {\n * code: '0000',\n * data: {\n * uid: '唯一值,可使用fileKey值'\n * name: '文件名称'\n * url: '预览地址'\n * }\n * }\n * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射\n *\n * 4. 最佳使用方式,与Form结合使用\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <UploadWrapper action={uploadUrl} />\n * </Form.Item>\n *\n * 5. 回填数据结构\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * }]\n * 其中 uid、name、url 可为其他命名,通过 fieldNames 进行映射即可\n * ```\n *\n */\nexport const UploadWrapper = (props: UploadWrapperProps) => {\n const { onChange, onUploadError, value, triggerText, limitHidden, autoSubmit, ...otherProps } = props;\n const valueList = isUndefinedOrNull(value) ? undefined : toArray<TPlainObject>(value);\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n },\n props.fieldNames,\n ) as Required<UploadWrapperFileItem>;\n\n fbaHooks.useEffectCustom(() => {\n const errorList = uploadList?.filter((item) => item['status'] === 'error') || [];\n let newList = [] as TAny[];\n valueList?.forEach((item) => {\n // 判断item 为 File类型\n if (item['lastModified']) {\n newList.push(item);\n } else {\n newList.push({\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n status: 'done',\n isOriginal: true,\n responseData: item['responseData'],\n });\n }\n });\n if (errorList.length > 0) {\n const newErrorList = errorList.map((item) => {\n return {\n uid: item.uid,\n name: item.name,\n status: 'error',\n isOriginal: true,\n response: item['response'],\n };\n }) as TAny[];\n newList = newList.concat(newErrorList);\n }\n setUploadList(newList as TAny[]);\n }, [fieldNames.name, fieldNames.uid, fieldNames.url, valueList]);\n\n const handleResponse = (fileList: UploadFile<TAny>[]) => {\n const newFileList: TAny[] = [];\n let hasError = false;\n fileList.forEach((item) => {\n if (item['isOriginal']) {\n if (item['status'] !== 'error') {\n newFileList.push({\n [fieldNames.uid]: item.uid,\n [fieldNames.name]: item.name,\n [fieldNames.url]: item.url,\n });\n }\n } else if (isPlainObject(item.response)) {\n if (item.response.code === '0000') {\n const respData = item.response.data;\n const result = (props.onRequestResultAdapter?.(respData) || respData) as TPlainObject;\n newFileList.push({\n [fieldNames.uid]: result[fieldNames.uid] || item.uid,\n [fieldNames.name]: result[fieldNames.name] || item.name,\n [fieldNames.url]: result[fieldNames.url],\n responseData: respData,\n });\n } else {\n const errorMsg = item.response.message || '上传失败';\n hasError = true;\n item.status = 'error';\n item.response = item.response.message || '上传失败';\n if (onUploadError) {\n onUploadError?.(errorMsg);\n } else {\n void message.error('上传操作失败...');\n }\n }\n }\n });\n if (hasError) {\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n }\n onChange?.(newFileList);\n };\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n const fileList = info.fileList as TPlainObject[];\n if (info.file.status === 'done') {\n const newFileList = [...info.fileList];\n const donwList = newFileList.filter((item) => item.status === 'done' || item['isOriginal']);\n\n const allDone = donwList.length === newFileList.length;\n if (allDone) {\n handleResponse(newFileList);\n }\n flushSync(() => setUploadList(newFileList));\n return;\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = valueList !== undefined ? [...valueList] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid] || item.uid;\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n if (onUploadError) {\n onUploadError();\n } else {\n void message.error('上传操作失败...');\n }\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n props.onUploadChange?.(info);\n });\n\n const hiddenEmtry = useMemo(() => {\n if (otherProps.maxCount === undefined || !limitHidden) return false;\n if (otherProps.maxCount === 0) return true;\n if (uploadList && uploadList.length >= otherProps.maxCount) return true;\n return false;\n }, [limitHidden, otherProps.maxCount, uploadList]);\n\n const beforeUpload = (_file, fileList) => {\n if (autoSubmit === false) {\n const maxCount = otherProps.maxCount;\n let mergeList = [...(valueList || []), ...fileList];\n let uploadListMerge = [...(uploadList || []), ...fileList];\n if (maxCount !== undefined && maxCount !== null) {\n if (mergeList.length > maxCount) {\n mergeList = mergeList.slice(mergeList.length - maxCount);\n uploadListMerge = uploadListMerge.slice(uploadListMerge.length - maxCount);\n }\n }\n setUploadList(uploadListMerge);\n props.onChange?.(mergeList);\n return false;\n }\n return true;\n };\n\n return (\n <Upload\n beforeUpload={beforeUpload}\n {...otherProps}\n onChange={onUploadChange}\n fileList={uploadList}\n className={classNames('v-upload-wrapper', otherProps.className)}\n >\n {otherProps.disabled || hiddenEmtry ? null : (\n <UploadTrigger triggerText={triggerText} listType={otherProps.listType}>\n {props.children}\n </UploadTrigger>\n )}\n </Upload>\n );\n};\n\nconst UploadTrigger = (props: {\n listType?: UploadListType;\n children?: ReactNode | ReactNode[];\n triggerText?: string;\n}) => {\n if (props.children) return <Fragment>{props.children}</Fragment>;\n if (props.listType === 'picture-card') {\n return (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>{props.triggerText || '上传图片'}</div>\n </div>\n );\n }\n if (props.listType === 'picture') {\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择图片上传'}\n </Button>\n );\n }\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择文件上传'}\n </Button>\n );\n};\n"],"names":["UploadWrapper","props","onChange","onUploadError","value","triggerText","limitHidden","autoSubmit","otherProps","_objectWithoutPropertiesLoose","_excluded","valueList","isUndefinedOrNull","undefined","toArray","_useState","useState","uploadList","setUploadList","fieldNames","_extend","uid","name","url","fbaHooks","useEffectCustom","errorList","filter","item","newList","forEach","push","status","isOriginal","responseData","length","newErrorList","map","response","concat","handleResponse","fileList","newFileList","hasError","_newFileList$push","_isPlainObject","code","_newFileList$push2","respData","data","result","onRequestResultAdapter","errorMsg","message","error","onUploadChange","_hooks","useCallbackRef","info","file","donwList","allDone","flushSync","targetList","targetIndex","findIndex","tempUid","splice","hiddenEmtry","useMemo","maxCount","beforeUpload","_file","mergeList","uploadListMerge","slice","_jsx","Upload","_extends","className","_classNames","children","disabled","UploadTrigger","listType","Fragment","_jsxs","_PlusOutlined","style","marginTop","Button","type","ghost"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/upload-wrapper/upload-wrapper.tsx"],"sourcesContent":["import { PlusOutlined } from '@ant-design/icons';\nimport { isPlainObject } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport { isUndefinedOrNull, TAny, toArray, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, message, Upload, UploadProps } from 'antd';\nimport { UploadChangeParam } from 'antd/lib/upload';\nimport { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport { Fragment, ReactNode, useMemo, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type UploadWrapperFileItem = {\n uid: string;\n name: string;\n url?: string;\n};\n\nexport type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {\n value?: T[] | T;\n onChange?: (value?: T[]) => void;\n onUploadError?: (message?: string) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性取值映射\n */\n fieldNames?: {\n uid: string;\n name?: string;\n url?: string;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject;\n /** 操作触发显示文本 */\n triggerText?: string;\n /** 超过maxCount 隐藏上传入口 */\n limitHidden?: boolean;\n /**\n * 自动提交,默认:true\n * ```\n * 1. 自定义beforeUpload配置后 autoSubmit 失效\n * ```\n */\n autoSubmit?: boolean;\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * demo: https://fex.qa.tcshuke.com/docs/admin/main/file/upload\n * 1. 可通过配置children替换默认上传触发布局\n * 2. 接口返回结构:\n * formData上传接口返回值\n * {\n * code: '0000',\n * data: {\n * uid: '唯一值,可使用fileKey值'\n * name: '文件名称'\n * url: '预览地址'\n * }\n * }\n * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射\n *\n * 4. 最佳使用方式,与Form结合使用\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <UploadWrapper action={uploadUrl} />\n * </Form.Item>\n *\n * 5. 回填数据结构\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * }]\n * 其中 uid、name、url 可为其他命名,通过 fieldNames 进行映射即可\n * ```\n *\n */\nexport const UploadWrapper = (props: UploadWrapperProps) => {\n const { onChange, onUploadError, value, triggerText, limitHidden, autoSubmit, ...otherProps } = props;\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n },\n props.fieldNames,\n ) as Required<UploadWrapperFileItem>;\n\n const valueList = useMemo(\n () => (isUndefinedOrNull(value) ? undefined : toArray<TPlainObject>(value)),\n [value],\n );\n\n fbaHooks.useEffectCustom(() => {\n const errorList = uploadList?.filter((item) => item['status'] === 'error') || [];\n let newList = [] as TAny[];\n valueList?.forEach((item) => {\n // 判断item 为 File类型\n if (item['lastModified']) {\n newList.push(item);\n } else {\n newList.push({\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n status: 'done',\n isOriginal: true,\n responseData: item['responseData'],\n });\n }\n });\n if (errorList.length > 0) {\n const newErrorList = errorList.map((item) => {\n return {\n uid: item.uid,\n name: item.name,\n status: 'error',\n isOriginal: true,\n response: item['response'],\n };\n }) as TAny[];\n newList = newList.concat(newErrorList);\n }\n setUploadList(newList);\n }, [fieldNames.name, fieldNames.uid, fieldNames.url, valueList]);\n\n const handleResponse = (fileList: UploadFile<TAny>[]) => {\n const newFileList: TAny[] = [];\n let hasError = false;\n fileList.forEach((item) => {\n if (item['isOriginal']) {\n if (item['status'] !== 'error') {\n newFileList.push({\n [fieldNames.uid]: item.uid,\n [fieldNames.name]: item.name,\n [fieldNames.url]: item.url,\n });\n }\n } else if (isPlainObject(item.response)) {\n if (item.response.code === '0000') {\n const respData = item.response.data;\n const result = (props.onRequestResultAdapter?.(respData) || respData) as TPlainObject;\n newFileList.push({\n [fieldNames.uid]: result[fieldNames.uid] || item.uid,\n [fieldNames.name]: result[fieldNames.name] || item.name,\n [fieldNames.url]: result[fieldNames.url],\n responseData: respData,\n });\n } else {\n const errorMsg = item.response.message || '上传失败';\n hasError = true;\n item.status = 'error';\n item.response = item.response.message || '上传失败';\n if (onUploadError) {\n onUploadError?.(errorMsg);\n } else {\n void message.error('上传操作失败...');\n }\n }\n }\n });\n if (hasError) {\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n }\n onChange?.(newFileList);\n };\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n const fileList = info.fileList as TPlainObject[];\n if (info.file.status === 'done') {\n const newFileList = [...info.fileList];\n const donwList = newFileList.filter((item) => item.status === 'done' || item['isOriginal']);\n\n const allDone = donwList.length === newFileList.length;\n if (allDone) {\n handleResponse(newFileList);\n }\n flushSync(() => setUploadList(newFileList));\n return;\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = valueList !== undefined ? [...valueList] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid] || item.uid;\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n if (onUploadError) {\n onUploadError();\n } else {\n void message.error('上传操作失败...');\n }\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n props.onUploadChange?.(info);\n });\n\n const hiddenEmtry = useMemo(() => {\n if (otherProps.maxCount === undefined || !limitHidden) return false;\n if (otherProps.maxCount === 0) return true;\n if (uploadList && uploadList.length >= otherProps.maxCount) return true;\n return false;\n }, [limitHidden, otherProps.maxCount, uploadList]);\n\n const beforeUpload = (_file, fileList) => {\n if (autoSubmit === false) {\n const maxCount = otherProps.maxCount;\n let mergeList = [...(valueList || []), ...fileList];\n let uploadListMerge = [...(uploadList || []), ...fileList];\n if (maxCount !== undefined && maxCount !== null) {\n if (mergeList.length > maxCount) {\n mergeList = mergeList.slice(mergeList.length - maxCount);\n uploadListMerge = uploadListMerge.slice(uploadListMerge.length - maxCount);\n }\n }\n setUploadList(uploadListMerge);\n props.onChange?.(mergeList);\n return false;\n }\n return true;\n };\n\n return (\n <Upload\n beforeUpload={beforeUpload}\n {...otherProps}\n onChange={onUploadChange}\n fileList={uploadList}\n className={classNames('v-upload-wrapper', otherProps.className)}\n >\n {otherProps.disabled || hiddenEmtry ? null : (\n <UploadTrigger triggerText={triggerText} listType={otherProps.listType}>\n {props.children}\n </UploadTrigger>\n )}\n </Upload>\n );\n};\n\nconst UploadTrigger = (props: {\n listType?: UploadListType;\n children?: ReactNode | ReactNode[];\n triggerText?: string;\n}) => {\n if (props.children) return <Fragment>{props.children}</Fragment>;\n if (props.listType === 'picture-card') {\n return (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>{props.triggerText || '上传图片'}</div>\n </div>\n );\n }\n if (props.listType === 'picture') {\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择图片上传'}\n </Button>\n );\n }\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择文件上传'}\n </Button>\n );\n};\n"],"names":["UploadWrapper","props","onChange","onUploadError","value","triggerText","limitHidden","autoSubmit","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","uploadList","setUploadList","fieldNames","_extend","uid","name","url","valueList","useMemo","isUndefinedOrNull","undefined","toArray","fbaHooks","useEffectCustom","errorList","filter","item","newList","forEach","push","status","isOriginal","responseData","length","newErrorList","map","response","concat","handleResponse","fileList","newFileList","hasError","_newFileList$push","_isPlainObject","code","_newFileList$push2","respData","data","result","onRequestResultAdapter","errorMsg","message","error","onUploadChange","_hooks","useCallbackRef","info","file","donwList","allDone","flushSync","targetList","targetIndex","findIndex","tempUid","splice","hiddenEmtry","maxCount","beforeUpload","_file","mergeList","uploadListMerge","slice","_jsx","Upload","_extends","className","_classNames","children","disabled","UploadTrigger","listType","Fragment","_jsxs","_PlusOutlined","style","marginTop","Button","type","ghost"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1828,6 +1828,7 @@ export type DragEditableTableProps = EditableTableProps & {
|
|
|
1828
1828
|
*/
|
|
1829
1829
|
onDragChange?: (dataSource: TPlainObject[], dragData: {
|
|
1830
1830
|
activeId: string | number;
|
|
1831
|
+
overId?: string | number;
|
|
1831
1832
|
activeIndex: number;
|
|
1832
1833
|
overIndex: number;
|
|
1833
1834
|
}) => void;
|