@flatbiz/antd 4.5.22 → 4.5.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/esm/ace-editor-json/index.js +1 -1
  2. package/esm/ace-editor-json/index.js.map +1 -1
  3. package/esm/ace-editor-mysql/index.js +1 -1
  4. package/esm/ace-editor-mysql/index.js.map +1 -1
  5. package/esm/ace-editor-xml/index.js +1 -1
  6. package/esm/ace-editor-xml/index.js.map +1 -1
  7. package/esm/bootstrap/index.js +1 -1
  8. package/esm/bootstrap/index.js.map +1 -1
  9. package/esm/button-operate/index.js +1 -1
  10. package/esm/button-operate/index.js.map +1 -1
  11. package/esm/button-wrapper/index.js +1 -1
  12. package/esm/button-wrapper/index.js.map +1 -1
  13. package/esm/check-list/index.js +1 -1
  14. package/esm/check-list/index.js.map +1 -1
  15. package/esm/date-range-picker-wrapper-form-item/index.js +3 -1
  16. package/esm/date-range-picker-wrapper-form-item/index.js.map +1 -1
  17. package/esm/dialog-alert/index.js +1 -1
  18. package/esm/dialog-alert/index.js.map +1 -1
  19. package/esm/dialog-confirm/index.js +1 -1
  20. package/esm/dialog-confirm/index.js.map +1 -1
  21. package/esm/dialog-drawer/index.js +1 -1
  22. package/esm/dialog-drawer/index.js.map +1 -1
  23. package/esm/dialog-drawer-content/index.js +1 -1
  24. package/esm/dialog-drawer-content/index.js.map +1 -1
  25. package/esm/dialog-modal/index.js +1 -1
  26. package/esm/dialog-modal/index.js.map +1 -1
  27. package/esm/drag-collapse/index.js +1 -1
  28. package/esm/drag-collapse/index.js.map +1 -1
  29. package/esm/drag-collapse-form-list/index.js +1 -1
  30. package/esm/drag-collapse-form-list/index.js.map +1 -1
  31. package/esm/drag-editable-table/index.js +1 -1
  32. package/esm/drag-editable-table/index.js.map +1 -1
  33. package/esm/drag-editable-table-pro/index.js +1 -1
  34. package/esm/drag-editable-table-pro/index.js.map +1 -1
  35. package/esm/drag-form-list/index.js +1 -1
  36. package/esm/drag-form-list/index.js.map +1 -1
  37. package/esm/dropdown-menu-wrapper/index.js +1 -1
  38. package/esm/dropdown-menu-wrapper/index.js.map +1 -1
  39. package/esm/easy-table/index.js +1 -1
  40. package/esm/easy-table/index.js.map +1 -1
  41. package/esm/editable-table/index.js +1 -1
  42. package/esm/editable-table/index.js.map +1 -1
  43. package/esm/editable-table-pro/index.js +1 -1
  44. package/esm/editable-table-pro/index.js.map +1 -1
  45. package/esm/fba-app/index.js +1 -1
  46. package/esm/fba-app/index.js.map +1 -1
  47. package/esm/fba-utils/index.js +1 -1
  48. package/esm/fba-utils/index.js.map +1 -1
  49. package/esm/form-item-wrapper/index.js +1 -1
  50. package/esm/form-item-wrapper/index.js.map +1 -1
  51. package/esm/form-list-wrapper/index.js +1 -1
  52. package/esm/form-list-wrapper/index.js.map +1 -1
  53. package/esm/form-wrapper/index.js +1 -1
  54. package/esm/form-wrapper/index.js.map +1 -1
  55. package/esm/index.js +1 -1
  56. package/esm/json-editor/index.js +1 -1
  57. package/esm/json-editor/index.js.map +1 -1
  58. package/esm/local-loading/index.js +1 -1
  59. package/esm/local-loading/index.js.map +1 -1
  60. package/esm/pdf/index.js +1 -1
  61. package/esm/pdf/index.js.map +1 -1
  62. package/esm/permission/index.js +1 -1
  63. package/esm/permission/index.js.map +1 -1
  64. package/esm/search-form/index.js +1 -1
  65. package/esm/search-form/index.js.map +1 -1
  66. package/esm/table-cell-render/index.js +1 -1
  67. package/esm/table-cell-render/index.js.map +1 -1
  68. package/esm/text-overflow-render/index.js +1 -1
  69. package/esm/text-overflow-render/index.js.map +1 -1
  70. package/esm/time-range-picker-wrapper-form-item/index.js +5 -2
  71. package/esm/time-range-picker-wrapper-form-item/index.js.map +1 -1
  72. package/index.d.ts +94 -20
  73. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-collapse-form-list/sortable-item.tsx","@flatbiz/antd/src/drag-collapse-form-list/drag-collapse.tsx"],"sourcesContent":["import { DragOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { toArray } from '@flatbiz/utils';\nimport { Collapse, Form, FormListFieldData, FormListOperation } from 'antd';\nimport { CSSProperties, Fragment } from 'react';\nimport { DragCollapseFormListProps } from './types';\nexport type SortableItemProps = {\n formListFieldData: FormListFieldData;\n formListOperate: FormListOperation;\n onChange: (activeKey: number | string) => void;\n header: DragCollapseFormListProps['header'];\n content: DragCollapseFormListProps['content'];\n collapsible?: DragCollapseFormListProps['collapsible'];\n expandIcon?: DragCollapseFormListProps['expandIcon'];\n expandIconPosition?: DragCollapseFormListProps['expandIconPosition'];\n size?: DragCollapseFormListProps['size'];\n dragIcon?: DragCollapseFormListProps['dragIcon'];\n getItemDragDisabled?: DragCollapseFormListProps['getItemDragDisabled'];\n dragDisabled?: DragCollapseFormListProps['dragDisabled'];\n isGray?: boolean;\n isLast?: boolean;\n className?: string;\n style?: CSSProperties;\n uid: string | number;\n isActive?: boolean;\n headerStyle?: CSSProperties;\n index: number;\n isOverlay?: boolean;\n formStageCompleteName: Array<string | number>;\n};\nexport function SortableItem(props: SortableItemProps) {\n const form = Form.useFormInstance();\n const isDisabled = props.isOverlay ? false : props.getItemDragDisabled?.(props.uid, props.index);\n const { listeners, setNodeRef, transform, transition } = useSortable({\n id: props.uid,\n disabled: isDisabled,\n });\n\n const header = () => {\n const dragIcon = props.dragIcon ? props.dragIcon : <DragOutlined />;\n const headerContent = props.header({\n formListFieldData: props.formListFieldData,\n operation: props.formListOperate,\n uid: props.uid,\n formStageCompleteName: props.formStageCompleteName,\n getInsideFormItemName: (key: string | string[]) => {\n return [props.formListFieldData.name, ...toArray(key)] as (string | number)[];\n },\n getInsideFormItemData: () => {\n return form.getFieldValue(props.formStageCompleteName) || {};\n },\n index: props.index,\n });\n return props.dragDisabled ? (\n headerContent\n ) : (\n <Fragment>\n <span className=\"dc-drag-trigger\" {...listeners}>\n {dragIcon}\n </span>\n <span className=\"dc-drag-header-content\" style={props.headerStyle}>\n {headerContent}\n </span>\n </Fragment>\n );\n };\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n ...props.style,\n };\n\n const cname = classNames(\n 'drag-collapse',\n {\n 'drag-collapse-grap': props.isGray,\n 'drag-collapse-last': props.isLast,\n 'drag-collapse-drag-disabled': isDisabled,\n },\n props.className,\n );\n return (\n <Collapse\n activeKey={props.isActive ? props.uid : undefined}\n accordion\n className={cname}\n collapsible={props.collapsible}\n expandIcon={props.expandIcon}\n expandIconPosition={props.expandIconPosition}\n size={props.size}\n onChange={props.onChange?.bind(null, props.uid)}\n style={{ ...style }}\n ref={setNodeRef}\n >\n <Collapse.Panel header={header()} key={props.uid}>\n {props.content({\n formListFieldData: props.formListFieldData,\n operation: props.formListOperate,\n uid: props.uid,\n formStageCompleteName: props.formStageCompleteName,\n getInsideFormItemName: (key: string | string[]) => {\n return [props.formListFieldData.name, ...toArray(key)] as (string | number)[];\n },\n getInsideFormItemData: () => {\n return form.getFieldValue(props.formStageCompleteName) || {};\n },\n index: props.index,\n })}\n </Collapse.Panel>\n </Collapse>\n );\n}\n","import { array, classNames } from '@dimjs/utils';\nimport { closestCenter, DndContext, DragOverlay } from '@dnd-kit/core';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { TAny, toArray, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, FormListFieldData } from 'antd';\nimport { Fragment, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { SortableItem } from './sortable-item';\nimport './style.less';\nimport { DragCollapseFormListProps } from './types';\n\n/**\n * 可拖拽 折叠面板+FormList\n * ```\n * 1. FormList数组中必须要有唯一值字段,默认值字段名称uid,可通过uidFieldName自定义设置名称\n * ```\n */\nexport const DragCollapseFormList = (props: DragCollapseFormListProps) => {\n const [dragActiveId, setDragActiveId] = useState<string | number>();\n const [openKeys, setOpenKeys] = useState<(number | string)[]>([]);\n const form = Form.useFormInstance();\n const formListOperationRef = useRef<FormListFieldData[]>([]);\n\n const formListValue = Form.useWatch(props.formListName, form);\n\n const getUidValue = hooks.useCallbackRef((item) => {\n return item?.[props.uidFieldName || 'uid'] as string | number;\n });\n\n fbaHooks.useEffectCustom(() => {\n const defaultActiveKeys = toArray<string | number>(props.defaultActiveKey);\n if (!props.activeKey && defaultActiveKeys.length > 0) {\n setOpenKeys(defaultActiveKeys);\n } else {\n setOpenKeys(toArray(props.activeKey));\n }\n }, []);\n\n hooks.useUpdateEffect(() => {\n setOpenKeys(toArray(props.activeKey));\n }, [props.activeKey]);\n\n const onChange = (key: number | string) => {\n let openKeysNew: (number | string)[] = [];\n if (props.accordion) {\n if (openKeys[0] && openKeys[0] === key) {\n openKeysNew = [];\n } else {\n openKeysNew = [key];\n }\n } else {\n const has = openKeys.includes(key);\n if (has) {\n array.arrayRemove(openKeys, key);\n openKeysNew = [...openKeys];\n } else {\n openKeysNew = openKeys.concat(key);\n }\n }\n setOpenKeys(openKeysNew);\n if (props.accordion) {\n props.onChange?.(openKeysNew.length ? openKeysNew[0] : undefined);\n } else {\n props.onChange?.(openKeysNew.length ? openKeysNew : undefined);\n }\n };\n\n function handleDragStart(event) {\n const { active } = event;\n setDragActiveId(active.id);\n }\n\n const getItems = hooks.useCallbackRef(() => {\n return (form.getFieldValue(props.formListName) || []) as TPlainObject[];\n });\n\n function handleDragEnd(event) {\n const { active, over } = event;\n const items = getItems();\n if (active.id !== over.id) {\n const oldIndex = items.findIndex((item) => getUidValue(item) === active.id);\n const newIndex = items.findIndex((item) => getUidValue(item) === over.id);\n const newList = arrayMove<TPlainObject>(items, oldIndex, newIndex);\n form.setFields([\n {\n name: props.formListName,\n value: newList,\n },\n ]);\n props.onDropChange?.(newList);\n }\n setDragActiveId(undefined);\n }\n\n const dragOverlayItem = useMemo(() => {\n if (!dragActiveId) return undefined;\n const items = getItems();\n const targetIndex = items.findIndex((item) => getUidValue(item) === dragActiveId);\n return formListOperationRef.current.find((item) => item.name === targetIndex);\n }, [dragActiveId, getItems, getUidValue]);\n\n const cName = classNames(\n 'drag-collapse-formlist-wrapper',\n { 'dcfw-isEmpty': toArray(formListValue).length === 0 },\n props.className,\n );\n return (\n <div className={cName} style={props.style}>\n <DndContext collisionDetection={closestCenter} onDragStart={handleDragStart} onDragEnd={handleDragEnd}>\n <Form.List name={props.formListName} rules={props.rules}>\n {(fields, operate) => {\n formListOperationRef.current = fields;\n return (\n <Fragment>\n <SortableContext\n items={getItems().map((temp) => getUidValue(temp))}\n strategy={verticalListSortingStrategy}\n >\n <Fragment>\n {fields.map((item, index) => {\n const uid = getUidValue(getItems()[index]);\n return (\n <SortableItem\n formListOperate={operate}\n formListFieldData={item}\n uid={uid}\n key={`${uid}-${item.key}`}\n isActive={openKeys.includes(uid)}\n collapsible={props.collapsible}\n expandIcon={props.expandIcon}\n expandIconPosition={props.expandIconPosition}\n size={props.size}\n dragIcon={props.dragIcon}\n getItemDragDisabled={props.getItemDragDisabled}\n dragDisabled={props.dragDisabled}\n onChange={onChange}\n isGray={uid === dragActiveId}\n isLast={index === getItems().length - 1}\n header={props.header}\n content={props.content}\n index={index}\n formStageCompleteName={[...toArray<string | number>(props.formListName), item.name]}\n />\n );\n })}\n </Fragment>\n </SortableContext>\n <DragOverlay dropAnimation={{ duration: 0 }}>\n {dragActiveId && dragOverlayItem ? (\n <SortableItem\n isOverlay={true}\n uid={dragActiveId}\n key={dragActiveId}\n className=\"overlay-sortable-item\"\n formListFieldData={dragOverlayItem}\n isActive={openKeys.includes(dragActiveId)}\n collapsible={props.collapsible}\n expandIcon={props.expandIcon}\n expandIconPosition={props.expandIconPosition}\n size={props.size}\n dragIcon={props.dragIcon}\n onChange={onChange}\n header={props.header}\n content={props.content}\n formListOperate={null as TAny}\n index={0}\n formStageCompleteName={[\n ...toArray<string | number>(props.formListName),\n dragOverlayItem.name,\n ]}\n />\n ) : null}\n </DragOverlay>\n </Fragment>\n );\n }}\n </Form.List>\n </DndContext>\n </div>\n );\n};\n"],"names":["SortableItem","props","_props$onChange","form","Form","useFormInstance","isDisabled","isOverlay","getItemDragDisabled","uid","index","_useSortable","useSortable","id","disabled","listeners","setNodeRef","transform","transition","header","dragIcon","_jsx","_DragOutlined","headerContent","formListFieldData","operation","formListOperate","formStageCompleteName","getInsideFormItemName","key","name","concat","toArray","getInsideFormItemData","getFieldValue","dragDisabled","_jsxs","Fragment","children","_extends","className","style","headerStyle","CSS","Transform","toString","cname","_classNames","isGray","isLast","Collapse","activeKey","isActive","undefined","accordion","collapsible","expandIcon","expandIconPosition","size","onChange","bind","ref","Panel","content","DragCollapseFormList","_useState","useState","dragActiveId","setDragActiveId","_useState2","openKeys","setOpenKeys","formListOperationRef","useRef","formListValue","useWatch","formListName","getUidValue","_hooks","useCallbackRef","item","uidFieldName","fbaHooks","useEffectCustom","defaultActiveKeys","defaultActiveKey","length","useUpdateEffect","openKeysNew","has","includes","_array","arrayRemove","handleDragStart","event","active","getItems","handleDragEnd","over","items","oldIndex","findIndex","newIndex","newList","arrayMove","setFields","value","onDropChange","dragOverlayItem","useMemo","targetIndex","current","find","cName","DndContext","collisionDetection","closestCenter","onDragStart","onDragEnd","List","rules","fields","operate","SortableContext","map","temp","strategy","verticalListSortingStrategy","DragOverlay","dropAnimation","duration"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-collapse-form-list/sortable-item.tsx","@flatbiz/antd/src/drag-collapse-form-list/drag-collapse.tsx"],"sourcesContent":["import { DragOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { toArray } from '@flatbiz/utils';\nimport { Collapse, Form, FormListFieldData, FormListOperation } from 'antd';\nimport { CSSProperties, Fragment } from 'react';\nimport { DragCollapseFormListProps } from './types';\nexport type SortableItemProps = {\n formListFieldData: FormListFieldData;\n formListOperate: FormListOperation;\n onChange: (activeKey: number | string) => void;\n header: DragCollapseFormListProps['header'];\n content: DragCollapseFormListProps['content'];\n collapsible?: DragCollapseFormListProps['collapsible'];\n expandIcon?: DragCollapseFormListProps['expandIcon'];\n expandIconPosition?: DragCollapseFormListProps['expandIconPosition'];\n size?: DragCollapseFormListProps['size'];\n dragIcon?: DragCollapseFormListProps['dragIcon'];\n getItemDragDisabled?: DragCollapseFormListProps['getItemDragDisabled'];\n dragDisabled?: DragCollapseFormListProps['dragDisabled'];\n isGray?: boolean;\n isLast?: boolean;\n className?: string;\n style?: CSSProperties;\n uid: string | number;\n isActive?: boolean;\n headerStyle?: CSSProperties;\n index: number;\n isOverlay?: boolean;\n formStageCompleteName: Array<string | number>;\n};\nexport function SortableItem(props: SortableItemProps) {\n const form = Form.useFormInstance();\n const isDisabled = props.isOverlay ? false : props.getItemDragDisabled?.(props.uid, props.index);\n const { listeners, setNodeRef, transform, transition } = useSortable({\n id: props.uid,\n disabled: isDisabled,\n });\n\n const header = () => {\n const dragIcon = props.dragIcon ? props.dragIcon : <DragOutlined />;\n const headerContent = props.header({\n formListFieldData: props.formListFieldData,\n operation: props.formListOperate,\n uid: props.uid,\n formStageCompleteName: props.formStageCompleteName,\n getInsideFormItemName: (key: string | string[]) => {\n return [props.formListFieldData.name, ...toArray(key)] as (string | number)[];\n },\n getInsideFormItemData: () => {\n return form.getFieldValue(props.formStageCompleteName) || {};\n },\n index: props.index,\n });\n return props.dragDisabled ? (\n headerContent\n ) : (\n <Fragment>\n <span className=\"dc-drag-trigger\" {...listeners}>\n {dragIcon}\n </span>\n <span className=\"dc-drag-header-content\" style={props.headerStyle}>\n {headerContent}\n </span>\n </Fragment>\n );\n };\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n ...props.style,\n };\n\n const cname = classNames(\n 'drag-collapse',\n {\n 'drag-collapse-grap': props.isGray,\n 'drag-collapse-last': props.isLast,\n 'drag-collapse-drag-disabled': isDisabled,\n },\n props.className,\n );\n return (\n <Collapse\n activeKey={props.isActive ? props.uid : undefined}\n accordion\n className={cname}\n collapsible={props.collapsible}\n expandIcon={props.expandIcon}\n expandIconPosition={props.expandIconPosition}\n size={props.size}\n onChange={props.onChange?.bind(null, props.uid)}\n style={{ ...style }}\n ref={setNodeRef}\n items={[\n {\n key: props.uid,\n label: header(),\n children: (\n <Fragment>\n {props.content({\n formListFieldData: props.formListFieldData,\n operation: props.formListOperate,\n uid: props.uid,\n formStageCompleteName: props.formStageCompleteName,\n getInsideFormItemName: (key: string | string[]) => {\n return [props.formListFieldData.name, ...toArray(key)] as (string | number)[];\n },\n getInsideFormItemData: () => {\n return form.getFieldValue(props.formStageCompleteName) || {};\n },\n index: props.index,\n })}\n </Fragment>\n ),\n },\n ]}\n />\n );\n}\n","import { array, classNames } from '@dimjs/utils';\nimport { closestCenter, DndContext, DragOverlay } from '@dnd-kit/core';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { TAny, toArray, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, FormListFieldData } from 'antd';\nimport { Fragment, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { SortableItem } from './sortable-item';\nimport './style.less';\nimport { DragCollapseFormListProps } from './types';\n\n/**\n * 可拖拽 折叠面板+FormList\n * ```\n * 1. FormList数组中必须要有唯一值字段,默认值字段名称uid,可通过uidFieldName自定义设置名称\n * ```\n */\nexport const DragCollapseFormList = (props: DragCollapseFormListProps) => {\n const [dragActiveId, setDragActiveId] = useState<string | number>();\n const [openKeys, setOpenKeys] = useState<(number | string)[]>([]);\n const form = Form.useFormInstance();\n const formListOperationRef = useRef<FormListFieldData[]>([]);\n\n const formListValue = Form.useWatch(props.formListName, form);\n\n const getUidValue = hooks.useCallbackRef((item) => {\n return item?.[props.uidFieldName || 'uid'] as string | number;\n });\n\n fbaHooks.useEffectCustom(() => {\n const defaultActiveKeys = toArray<string | number>(props.defaultActiveKey);\n if (!props.activeKey && defaultActiveKeys.length > 0) {\n setOpenKeys(defaultActiveKeys);\n } else {\n setOpenKeys(toArray(props.activeKey));\n }\n }, []);\n\n hooks.useUpdateEffect(() => {\n setOpenKeys(toArray(props.activeKey));\n }, [props.activeKey]);\n\n const onChange = (key: number | string) => {\n let openKeysNew: (number | string)[] = [];\n if (props.accordion) {\n if (openKeys[0] && openKeys[0] === key) {\n openKeysNew = [];\n } else {\n openKeysNew = [key];\n }\n } else {\n const has = openKeys.includes(key);\n if (has) {\n array.arrayRemove(openKeys, key);\n openKeysNew = [...openKeys];\n } else {\n openKeysNew = openKeys.concat(key);\n }\n }\n setOpenKeys(openKeysNew);\n if (props.accordion) {\n props.onChange?.(openKeysNew.length ? openKeysNew[0] : undefined);\n } else {\n props.onChange?.(openKeysNew.length ? openKeysNew : undefined);\n }\n };\n\n function handleDragStart(event) {\n const { active } = event;\n setDragActiveId(active.id);\n }\n\n const getItems = hooks.useCallbackRef(() => {\n return (form.getFieldValue(props.formListName) || []) as TPlainObject[];\n });\n\n function handleDragEnd(event) {\n const { active, over } = event;\n const items = getItems();\n if (active.id !== over.id) {\n const oldIndex = items.findIndex((item) => getUidValue(item) === active.id);\n const newIndex = items.findIndex((item) => getUidValue(item) === over.id);\n const newList = arrayMove<TPlainObject>(items, oldIndex, newIndex);\n form.setFields([\n {\n name: props.formListName,\n value: newList,\n },\n ]);\n props.onDropChange?.(newList);\n }\n setDragActiveId(undefined);\n }\n\n const dragOverlayItem = useMemo(() => {\n if (!dragActiveId) return undefined;\n const items = getItems();\n const targetIndex = items.findIndex((item) => getUidValue(item) === dragActiveId);\n return formListOperationRef.current.find((item) => item.name === targetIndex);\n }, [dragActiveId, getItems, getUidValue]);\n\n const cName = classNames(\n 'drag-collapse-formlist-wrapper',\n { 'dcfw-isEmpty': toArray(formListValue).length === 0 },\n props.className,\n );\n return (\n <div className={cName} style={props.style}>\n <DndContext collisionDetection={closestCenter} onDragStart={handleDragStart} onDragEnd={handleDragEnd}>\n <Form.List name={props.formListName} rules={props.rules}>\n {(fields, operate) => {\n formListOperationRef.current = fields;\n return (\n <Fragment>\n <SortableContext\n items={getItems().map((temp) => getUidValue(temp))}\n strategy={verticalListSortingStrategy}\n >\n <Fragment>\n {fields.map((item, index) => {\n const uid = getUidValue(getItems()[index]);\n return (\n <SortableItem\n formListOperate={operate}\n formListFieldData={item}\n uid={uid}\n key={`${uid}-${item.key}`}\n isActive={openKeys.includes(uid)}\n collapsible={props.collapsible}\n expandIcon={props.expandIcon}\n expandIconPosition={props.expandIconPosition}\n size={props.size}\n dragIcon={props.dragIcon}\n getItemDragDisabled={props.getItemDragDisabled}\n dragDisabled={props.dragDisabled}\n onChange={onChange}\n isGray={uid === dragActiveId}\n isLast={index === getItems().length - 1}\n header={props.header}\n content={props.content}\n index={index}\n formStageCompleteName={[...toArray<string | number>(props.formListName), item.name]}\n />\n );\n })}\n </Fragment>\n </SortableContext>\n <DragOverlay dropAnimation={{ duration: 0 }}>\n {dragActiveId && dragOverlayItem ? (\n <SortableItem\n isOverlay={true}\n uid={dragActiveId}\n key={dragActiveId}\n className=\"overlay-sortable-item\"\n formListFieldData={dragOverlayItem}\n isActive={openKeys.includes(dragActiveId)}\n collapsible={props.collapsible}\n expandIcon={props.expandIcon}\n expandIconPosition={props.expandIconPosition}\n size={props.size}\n dragIcon={props.dragIcon}\n onChange={onChange}\n header={props.header}\n content={props.content}\n formListOperate={null as TAny}\n index={0}\n formStageCompleteName={[\n ...toArray<string | number>(props.formListName),\n dragOverlayItem.name,\n ]}\n />\n ) : null}\n </DragOverlay>\n </Fragment>\n );\n }}\n </Form.List>\n </DndContext>\n </div>\n );\n};\n"],"names":["SortableItem","props","_props$onChange","form","Form","useFormInstance","isDisabled","isOverlay","getItemDragDisabled","uid","index","_useSortable","useSortable","id","disabled","listeners","setNodeRef","transform","transition","header","dragIcon","_jsx","_DragOutlined","headerContent","formListFieldData","operation","formListOperate","formStageCompleteName","getInsideFormItemName","key","name","concat","toArray","getInsideFormItemData","getFieldValue","dragDisabled","_jsxs","Fragment","children","_extends","className","style","headerStyle","CSS","Transform","toString","cname","_classNames","isGray","isLast","Collapse","activeKey","isActive","undefined","accordion","collapsible","expandIcon","expandIconPosition","size","onChange","bind","ref","items","label","content","DragCollapseFormList","_useState","useState","dragActiveId","setDragActiveId","_useState2","openKeys","setOpenKeys","formListOperationRef","useRef","formListValue","useWatch","formListName","getUidValue","_hooks","useCallbackRef","item","uidFieldName","fbaHooks","useEffectCustom","defaultActiveKeys","defaultActiveKey","length","useUpdateEffect","openKeysNew","has","includes","_array","arrayRemove","handleDragStart","event","active","getItems","handleDragEnd","over","oldIndex","findIndex","newIndex","newList","arrayMove","setFields","value","onDropChange","dragOverlayItem","useMemo","targetIndex","current","find","cName","DndContext","collisionDetection","closestCenter","onDragStart","onDragEnd","List","rules","fields","operate","SortableContext","map","temp","strategy","verticalListSortingStrategy","DragOverlay","dropAnimation","duration"],"mappings":"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"}
@@ -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 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};
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"@dimjs/model";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 overId?: string | number;\n activeIndex: number;\n overIndex: number;\n },\n ) => void;\n};\n\n/**\n * 可拖拽编辑表格\n * @deprecated 已过期,请使用 DragEditableTablePro组件\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":";g7FAGO,IAAAA,EAA8BC,IAAvBC,EAAMF,EAAA,GAAEG,EAAWH,EAAA,sBCQ1B,IAAMI,EAAgB,SAAhBA,EAAiBC,GAC5B,IAAQC,EAA4BD,EAA5BC,SAAaC,EAAUC,EAAKH,EAAKI,GACzC,IAAMC,EAAQH,EAAW,gBAEzB,IAAAI,EAA0FC,EAAY,CACpGC,GAAIH,IADEI,EAAmBH,EAAnBG,oBAAqBC,EAASJ,EAATI,UAAWC,EAAUL,EAAVK,WAAYC,EAASN,EAATM,UAAWC,EAAUP,EAAVO,WAAYC,EAAUR,EAAVQ,WAI3E,GAAIC,EAAkBV,GAAQ,CAC5B,OAAOW,EAAAC,KAAAA,EAAQf,CAAAA,EAAAA,GACjB,CACA,IAAMgB,EAA0BD,EAC3Bf,GAAAA,EAAWgB,MAAK,CACnBN,UAAWO,EAAIC,UAAUC,SAAST,GAASK,EAAA,CAAA,EAASL,EAAS,CAAEU,OAAQ,KACvET,WAAAA,EACAU,OAAQ,QACJT,EACA,CACEU,SAAU,WACVC,OAAQ,KACRC,UAAW,0CACXC,gBAAiB,yBAEnB,CAAE,GAER,IAAMC,EAAc3B,GAAYe,EAAAa,GAAe,GAC/C,OACEC,EAAA,KAAAb,EAAA,CAAA,EAAQf,EAAU,CAAE6B,IAAKpB,EAAYO,MAAOA,EAAOc,IAAK3B,IACrD4B,EAASC,IAAIlC,EAAMmC,UAAU,SAACC,GAC7B,GAAKA,EAA6BJ,MAAQ,SAAU,CAClD,OAAOK,EAAaD,EAA6B,CAC/CD,SACEnB,EAAA,OAAAC,EAAA,CACEc,IAAKtB,EACLS,MAAO,CACLoB,YAAa,OACbf,OAAQ,OACRgB,QAAS,OACTC,WAAY,SACZC,eAAgB,WAEd/B,EAAS,CAAAyB,SAEbnB,EAAC0B,EAAW,CACVxB,MAAO,CACLoB,YAAa,OACbf,OAAQ,OACRoB,QAAS,UACTC,OAAQ,EACRH,eAAgB,SAChBI,MAAO,WAETC,KAAMlB,EACNmB,QAASC,EACTC,KAAK,cAKf,CACA,OAAOb,CACR,IAGP,ECxEO,IAAMc,EAAM,SAANA,EAAOlD,GAClB,IAAMmD,EAAMtD,IACZ,OAAOmB,EAACjB,EAAakB,KAAKjB,EAAK,CAAEC,SAAUkD,EAAIlD,WACjD,qEC+CamD,EAAoB,SAApBA,EAAqBpD,GAAkC,IAAAqD,EAAAC,EAClE,IAAQrD,EAAqED,EAArEC,SAAUsD,EAA2DvD,EAA3DuD,YAAaC,EAA8CxD,EAA9CwD,aAAcC,EAAgCzD,EAAhCyD,aAAiBC,EAAUvD,EAAKH,EAAKI,GAClF,IAAMuD,EAAOC,EAAKC,kBAClB,IAAMC,EAAWF,EAAKG,SAAS/D,EAAMgE,aAAehE,EAAMgE,aAAehE,EAAMiE,KAAMN,GAErF,IAAMO,EAAUC,EACdC,EAAUC,EAAe,CACvBC,qBAAsB,CAEpBC,MAAO,EACPC,UAAW,MAKjB,IAAMC,EAAY,SAAZA,EAASC,GAAuC,IAAjCC,EAAMD,EAANC,OAAQC,EAAIF,EAAJE,KAC3B,GAAID,EAAOnE,MAAOoE,GAAAA,UAAAA,EAAAA,EAAMpE,IAAI,CAC1B,IAAMqE,EAAcf,EAASgB,WAAU,SAACC,GAAC,OAAKA,EAAExB,KAAiBoB,EAAOnE,MACxE,IAAMwE,EAAYlB,EAASgB,WAAU,SAACC,GAAC,OAAKA,EAAExB,MAAiBqB,GAAI,UAAA,EAAJA,EAAMpE,OACrE,IAAMyE,EAAcC,EAAUpB,EAAUe,EAAaG,GACrDrB,EAAKwB,UAAU,CACb,CACElB,KAAMjE,EAAMgE,aAAehE,EAAMgE,aAAehE,EAAMiE,KACtDmB,MAAOH,KAGXzB,GAAAA,UAAAA,EAAAA,EAAeyB,EAA+B,CAC5CI,SAAUV,EAAOnE,GACjB8E,OAAQV,GAAAA,UAAAA,EAAAA,EAAMpE,GACdqE,YAAAA,EACAG,UAAAA,GAEJ,GAGF,IAAMO,EAAiC9B,EACnCC,EAAW6B,QACX,CAAC,CAAEC,UAAW,SAAUC,MAAO,GAAIzD,IAAK,SAAU0D,MAAO,WAAmCC,OAC1FjC,EAAW6B,SAAW,IAG5B,OACEvE,EAAClB,EAAW,CACVsF,MAAO,CACLnF,SAAAA,EACAsD,YAAAA,GACApB,SAEFnB,EAAC4E,EAAU,CAAC1B,QAASA,EAAS2B,UAAW,CAACC,GAAyBrB,UAAWA,EAAUtC,SACtFnB,EAAC+E,EAAe,CACdC,OAAOlC,GAAQ,UAAA,EAARA,EAAU5B,KAAI,SAAC6C,GAAC,OAAKA,EAAExB,EAAY,MAAK,GAC/C0C,SAAUC,EAA4B/D,SAEtCnB,EAACmF,EAAalF,KACRyC,EAAU,CACdH,YAAaA,EACbgC,QAASA,EACTa,WAAUnF,EACLyC,GAAAA,EAAW0C,WAAU,CACxBC,WAAUpF,EAAA,IAAAoC,EACLK,EAAW0C,aAAU,UAAA,EAArB/C,EAAuBgD,WAAU,CACpCC,KAAIrF,EAAA,CAAA,GAAAqC,EACCI,EAAW0C,aAAU9C,OAAAA,EAArBA,EAAuB+C,aAAvB/C,UAAAA,EAAAA,EAAmCgD,KAAI,CAC1CC,IAAK9C,EAAe+C,UAAYtD,gBASlD"}
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 * @deprecated 已过期,请使用 DragEditableTablePro组件\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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"}
@@ -12,5 +12,5 @@ import './../tips-wrapper/index.css';
12
12
  import './../icon-wrapper/index.css';
13
13
  import './index.css';
14
14
  /*! @flatjs/forge MIT @flatbiz/antd */
15
- import{a as r,_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useSensors as e,useSensor as o,PointerSensor as 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};
15
+ import{a as r,_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useSensors as e,useSensor as o,PointerSensor as n,DndContext as t}from"@dnd-kit/core";import{restrictToVerticalAxis as a}from"@dnd-kit/modifiers";import{useSortable as s,SortableContext as d,verticalListSortingStrategy as m,arrayMove as l}from"@dnd-kit/sortable";import{Form as c}from"antd";import{EditableTablePro as p}from"../editable-table-pro/index.js";import{createCtx as u}from"@wove/react/cjs/create-ctx";import f from"@ant-design/icons/es/icons/DragOutlined";import{CSS as v}from"@dnd-kit/utilities";import{isUndefinedOrNull as g,noop as j}from"@flatbiz/utils";import{createElement as y,Children as x,cloneElement as b}from"react";import{IconWrapper as h}from"../icon-wrapper/index.js";import{jsx as I}from"react/jsx-runtime";import"@ant-design/icons/es/icons/PlusOutlined";import"@ant-design/icons/es/icons/CloseCircleFilled";import"@dimjs/utils/cjs/class-names";import"@wove/react/cjs/hooks";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../form-item-wrapper/index.js";import"../pre-defined-class-name/index.js";import"../text-symbol-wrapper/index.js";import"../tips-wrapper/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";import"@dimjs/lang/cjs/is-undefined";var k=u(),w=k[0],C=k[1];var _=["dragIcon"];var F=function e(o){var n=o.dragIcon,t=r(o,_);var a=t["data-row-key"];var d=s({id:a}),m=d.setActivatorNodeRef,l=d.listeners,c=d.setNodeRef,p=d.transform,u=d.transition,k=d.isDragging;if(g(a)){return I("tr",i({},t))}var w=i({},t.style,{transform:v.Transform.toString(p&&i({},p,{scaleY:1})),transition:u,cursor:"move"},k?{position:"relative",zIndex:9999,boxShadow:" 0px 0px 12px 4px rgba(34, 33, 81, 0.1)",backgroundColor:"var(--block-bg-color)"}:{});var C=n||I(f,{});return y("tr",i({},t,{ref:c,style:w,key:a}),x.map(o.children,(function(r){if(r.key==="__sort"){return b(r,{children:I("span",i({ref:m,style:{touchAction:"none",cursor:"move",display:"flex",alignItems:"center",justifyContent:"center"}},l,{children:I(h,{style:{touchAction:"none",cursor:"move",padding:"1px 0px",margin:0,justifyContent:"center",color:"#787878"},icon:C,onClick:j,size:"small"})}))})}return r})))};var D=function r(e){var o=w();return I(F,i({},e,{dragIcon:o.dragIcon}))};var N=["dragIcon","uidFieldKey","onDragChange","disabledDrag","formListCompleteName","formListName"];var P=function s(u){var f,v;var g=u.dragIcon,j=u.uidFieldKey,y=u.onDragChange,x=u.disabledDrag,b=u.formListCompleteName,h=u.formListName,k=r(u,N);var w=b||h;var _=c.useFormInstance();var F=c.useWatch(w,_);var P=e(o(n,{activationConstraint:{delay:0,tolerance:0}}));var L=function r(i){var e=i.active,o=i.over;if(e.id!==(o==null?void 0:o.id)){var n=F.findIndex((function(r){return r[j]===e.id}));var t=F.findIndex((function(r){return r[j]===(o==null?void 0:o.id)}));var a=l(F,n,t);_.setFields([{name:w,value:a}]);y==null?void 0:y(a,{activeId:e.id,overId:o==null?void 0:o.id,activeIndex:n,overIndex:t})}};var z=x?k.columns:[{dataIndex:"__sort",width:40,key:"__sort",align:"center"}].concat(k.columns||[]);return I(C,{value:{dragIcon:g,uidFieldKey:j},children:I(t,{sensors:P,modifiers:[a],onDragEnd:L,children:I(d,{items:(F==null?void 0:F.map((function(r){return r[j]})))||[],strategy:m,children:I(p,i({},k,{formListName:h,uidFieldKey:j,columns:z,tableProps:i({},k.tableProps,{components:i({},(f=k.tableProps)==null?void 0:f.components,{body:i({},(v=k.tableProps)==null||(v=v.components)==null?void 0:v.body,{row:x?undefined:D})})})}))})})})};export{P as DragEditableTablePro};
16
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-editable-table-pro/context.ts","@flatbiz/antd/src/drag-editable-table-pro/table-tr-handle.tsx","@flatbiz/antd/src/drag-editable-table-pro/row.tsx","@flatbiz/antd/src/drag-editable-table-pro/drag.tsx"],"sourcesContent":["import { createCtx } from '@wove/react';\nimport { type ReactElement } from 'react';\n\nexport const [getCtx, CtxProvider] = createCtx<{\n dragIcon?: ReactElement;\n uidFieldKey: string;\n}>();\n","import { DragOutlined } from '@ant-design/icons';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { isUndefinedOrNull, noop } from '@flatbiz/utils';\nimport { type RowProps } from 'antd';\nimport { Children, cloneElement, type ReactElement } from 'react';\nimport { IconWrapper } from '../icon-wrapper';\n\ntype TableTrHandleProps = RowProps & {\n dragIcon?: ReactElement;\n};\nexport const TableTrHandle = (props: TableTrHandleProps) => {\n const { dragIcon, ...innerProps } = props;\n const rowId = innerProps['data-row-key'] as number;\n\n const { setActivatorNodeRef, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: rowId,\n });\n\n if (isUndefinedOrNull(rowId)) {\n return <tr {...innerProps} />;\n }\n const style: React.CSSProperties = {\n ...innerProps.style,\n transform: CSS.Transform.toString(transform && { ...transform, scaleY: 1 }),\n transition,\n cursor: 'move',\n ...(isDragging\n ? {\n position: 'relative',\n zIndex: 9999,\n boxShadow: ' 0px 0px 12px 4px rgba(34, 33, 81, 0.1)',\n backgroundColor: 'var(--block-bg-color)',\n }\n : {}),\n };\n const iconElement = dragIcon || <DragOutlined />;\n return (\n <tr {...innerProps} ref={setNodeRef} style={style} key={rowId}>\n {Children.map(props.children, (child) => {\n if ((child as React.ReactElement).key === '__sort') {\n return cloneElement(child as React.ReactElement, {\n children: (\n <span\n ref={setActivatorNodeRef}\n style={{\n touchAction: 'none',\n cursor: 'move',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n {...listeners}\n >\n <IconWrapper\n style={{\n touchAction: 'none',\n cursor: 'move',\n padding: '1px 0px',\n margin: 0,\n justifyContent: 'center',\n color: '#787878',\n }}\n icon={iconElement}\n onClick={noop}\n size=\"small\"\n />\n </span>\n ),\n });\n }\n return child;\n })}\n </tr>\n );\n};\n","import { getCtx } from './context';\nimport { TableTrHandle } from './table-tr-handle';\n\nexport const Row = (props) => {\n const ctx = getCtx();\n return <TableTrHandle {...props} dragIcon={ctx.dragIcon} />;\n};\n","import { DndContext, PointerSensor, useSensor, useSensors, type DragEndEvent } from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { type TPlainObject } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { type ReactElement } from 'react';\nimport { EditableTablePro, EditableTableProProps } from '../editable-table-pro';\nimport { EditableTableProColumnItem } from '../editable-table-pro/type';\nimport { CtxProvider } from './context';\nimport { Row } from './row';\n\nexport type DragEditableTableProProps = EditableTableProProps & {\n /**\n * 拖拽图标自定义,默认使用 DragOutlined 图标\n */\n dragIcon?: ReactElement;\n\n /** 禁用拖拽 */\n disabledDrag?: boolean;\n /**\n * 表格数据唯一值字段Key\n * ```\n * ```\n */\n uidFieldKey: string;\n /**\n * 拖拽结束事件\n * ```\n * dataSource: 拖拽完成后的数据源\n * dragData\n * 1. activeId 拖拽ID\n * 2. activeIndex 拖拽起始表格数组索引值\n * 3. overIndex 拖拽结束表格数组索引值\n * ```\n */\n onDragChange?: (\n dataSource: TPlainObject[],\n dragData: {\n activeId: string | number;\n overId?: string | number;\n activeIndex: number;\n overIndex: number;\n },\n ) => void;\n};\n\n/**\n * 可拖拽编辑表格\n * ```\n * 1. 表格数据必须有唯一值字段,通过参数 uidFieldKey 告诉组件\n * 2. Table 参数 components.body.row 被组件内部使用\n * 3. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 4. 存在多级的情况下,通过上移、下移操作按钮,调用 column.render.operation.move 方法实现同一级内移动\n * ```\n */\nexport const DragEditableTablePro = (props: DragEditableTableProProps) => {\n const {\n dragIcon,\n uidFieldKey,\n onDragChange,\n disabledDrag,\n formListCompleteName,\n formListName,\n ...otherProps\n } = props;\n\n const formListCompleteNameFt = formListCompleteName || formListName;\n\n const form = Form.useFormInstance();\n const dataList = Form.useWatch(formListCompleteNameFt, form);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n // 当拖拽触发区域有其他点击事件时,需要延迟触发拖拽动作\n delay: 0,\n tolerance: 0,\n },\n }),\n );\n\n const onDragEnd = ({ active, over }: DragEndEvent) => {\n if (active.id !== over?.id) {\n const activeIndex = dataList.findIndex((i) => i[uidFieldKey] === active.id);\n const overIndex = dataList.findIndex((i) => i[uidFieldKey] === over?.id);\n const dataListNew = arrayMove(dataList, activeIndex, overIndex);\n form.setFields([\n {\n name: formListCompleteNameFt,\n value: dataListNew,\n },\n ]);\n onDragChange?.(dataListNew as TPlainObject[], {\n activeId: active.id,\n overId: over?.id,\n activeIndex,\n overIndex,\n });\n }\n };\n\n const columns: EditableTableProColumnItem[] = disabledDrag\n ? otherProps.columns\n : [\n {\n dataIndex: '__sort',\n width: 40,\n key: '__sort',\n align: 'center',\n } as EditableTableProColumnItem,\n ].concat(otherProps.columns || []);\n\n return (\n <CtxProvider\n value={{\n dragIcon,\n uidFieldKey,\n }}\n >\n <DndContext sensors={sensors} modifiers={[restrictToVerticalAxis]} onDragEnd={onDragEnd}>\n <SortableContext\n items={dataList?.map((i) => i[uidFieldKey]) || []}\n strategy={verticalListSortingStrategy}\n >\n <EditableTablePro\n {...otherProps}\n formListName={formListName}\n uidFieldKey={uidFieldKey}\n columns={columns}\n tableProps={{\n ...otherProps.tableProps,\n components: {\n ...otherProps.tableProps?.components,\n body: {\n ...otherProps.tableProps?.components?.body,\n row: disabledDrag ? undefined : Row,\n },\n },\n }}\n />\n </SortableContext>\n </DndContext>\n </CtxProvider>\n );\n};\n"],"names":["_createCtx","_createCtx2","getCtx","CtxProvider","TableTrHandle","props","dragIcon","innerProps","_objectWithoutPropertiesLoose","_excluded","rowId","_useSortable","useSortable","id","setActivatorNodeRef","listeners","setNodeRef","transform","transition","isDragging","isUndefinedOrNull","_jsx","_extends","style","CSS","Transform","toString","scaleY","cursor","position","zIndex","boxShadow","backgroundColor","iconElement","_DragOutlined","_createElement","ref","key","Children","map","children","child","cloneElement","touchAction","display","alignItems","justifyContent","IconWrapper","padding","margin","color","icon","onClick","noop","size","Row","ctx","DragEditableTablePro","_otherProps$tableProp","_otherProps$tableProp2","uidFieldKey","onDragChange","disabledDrag","formListCompleteName","formListName","otherProps","formListCompleteNameFt","form","Form","useFormInstance","dataList","useWatch","sensors","useSensors","useSensor","PointerSensor","activationConstraint","delay","tolerance","onDragEnd","_ref","active","over","activeIndex","findIndex","i","overIndex","dataListNew","arrayMove","setFields","name","value","activeId","overId","columns","dataIndex","width","align","concat","DndContext","modifiers","restrictToVerticalAxis","SortableContext","items","strategy","verticalListSortingStrategy","EditableTablePro","tableProps","components","body","row","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-editable-table-pro/context.ts","@flatbiz/antd/src/drag-editable-table-pro/table-tr-handle.tsx","@flatbiz/antd/src/drag-editable-table-pro/row.tsx","@flatbiz/antd/src/drag-editable-table-pro/drag.tsx"],"sourcesContent":["import { createCtx } from '@wove/react';\nimport { type ReactElement } from 'react';\n\nexport const [getCtx, CtxProvider] = createCtx<{\n dragIcon?: ReactElement;\n uidFieldKey: string;\n}>();\n","import { DragOutlined } from '@ant-design/icons';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { isUndefinedOrNull, noop } from '@flatbiz/utils';\nimport { type RowProps } from 'antd';\nimport { Children, cloneElement, type ReactElement } from 'react';\nimport { IconWrapper } from '../icon-wrapper';\n\ntype TableTrHandleProps = RowProps & {\n dragIcon?: ReactElement;\n};\nexport const TableTrHandle = (props: TableTrHandleProps) => {\n const { dragIcon, ...innerProps } = props;\n const rowId = innerProps['data-row-key'] as number;\n\n const { setActivatorNodeRef, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: rowId,\n });\n\n if (isUndefinedOrNull(rowId)) {\n return <tr {...innerProps} />;\n }\n const style: React.CSSProperties = {\n ...innerProps.style,\n transform: CSS.Transform.toString(transform && { ...transform, scaleY: 1 }),\n transition,\n cursor: 'move',\n ...(isDragging\n ? {\n position: 'relative',\n zIndex: 9999,\n boxShadow: ' 0px 0px 12px 4px rgba(34, 33, 81, 0.1)',\n backgroundColor: 'var(--block-bg-color)',\n }\n : {}),\n };\n const iconElement = dragIcon || <DragOutlined />;\n return (\n <tr {...innerProps} ref={setNodeRef} style={style} key={rowId}>\n {Children.map(props.children, (child) => {\n if ((child as React.ReactElement).key === '__sort') {\n return cloneElement(child as React.ReactElement, {\n children: (\n <span\n ref={setActivatorNodeRef}\n style={{\n touchAction: 'none',\n cursor: 'move',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n {...listeners}\n >\n <IconWrapper\n style={{\n touchAction: 'none',\n cursor: 'move',\n padding: '1px 0px',\n margin: 0,\n justifyContent: 'center',\n color: '#787878',\n }}\n icon={iconElement}\n onClick={noop}\n size=\"small\"\n />\n </span>\n ),\n });\n }\n return child;\n })}\n </tr>\n );\n};\n","import { getCtx } from './context';\nimport { TableTrHandle } from './table-tr-handle';\n\nexport const Row = (props) => {\n const ctx = getCtx();\n return <TableTrHandle {...props} dragIcon={ctx.dragIcon} />;\n};\n","import { DndContext, PointerSensor, useSensor, useSensors, type DragEndEvent } from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { type TPlainObject } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { type ReactElement } from 'react';\nimport { EditableTablePro, EditableTableProProps } from '../editable-table-pro';\nimport { EditableTableProColumnItem } from '../editable-table-pro/type';\nimport { CtxProvider } from './context';\nimport { Row } from './row';\n\nexport type DragEditableTableProProps = EditableTableProProps & {\n /**\n * 拖拽图标自定义,默认使用 DragOutlined 图标\n */\n dragIcon?: ReactElement;\n\n /** 禁用拖拽 */\n disabledDrag?: boolean;\n /**\n * 表格数据唯一值字段Key\n * ```\n * ```\n */\n uidFieldKey: string;\n /**\n * 拖拽结束事件\n * ```\n * dataSource: 拖拽完成后的数据源\n * dragData\n * 1. activeId 拖拽ID\n * 2. activeIndex 拖拽起始表格数组索引值\n * 3. overIndex 拖拽结束表格数组索引值\n * ```\n */\n onDragChange?: (\n dataSource: TPlainObject[],\n dragData: {\n activeId: string | number;\n overId?: string | number;\n activeIndex: number;\n overIndex: number;\n },\n ) => void;\n};\n\n/**\n * 可拖拽编辑表格\n * ```\n * 1. 表格数据必须有唯一值字段,通过参数 uidFieldKey 告诉组件\n * 2. Table 参数 components.body.row 被组件内部使用\n * 3. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 4. 存在多级的情况下,通过上移、下移操作按钮,调用 column.render.operation.move 方法实现同一级内移动\n * ```\n */\nexport const DragEditableTablePro = (props: DragEditableTableProProps) => {\n const {\n dragIcon,\n uidFieldKey,\n onDragChange,\n disabledDrag,\n formListCompleteName,\n formListName,\n ...otherProps\n } = props;\n\n const formListCompleteNameFt = formListCompleteName || formListName;\n\n const form = Form.useFormInstance();\n const dataList = Form.useWatch(formListCompleteNameFt, form);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n // 当拖拽触发区域有其他点击事件时,需要延迟触发拖拽动作\n delay: 0,\n tolerance: 0,\n },\n }),\n );\n\n const onDragEnd = ({ active, over }: DragEndEvent) => {\n if (active.id !== over?.id) {\n const activeIndex = dataList.findIndex((i) => i[uidFieldKey] === active.id);\n const overIndex = dataList.findIndex((i) => i[uidFieldKey] === over?.id);\n const dataListNew = arrayMove(dataList, activeIndex, overIndex);\n form.setFields([\n {\n name: formListCompleteNameFt,\n value: dataListNew,\n },\n ]);\n onDragChange?.(dataListNew as TPlainObject[], {\n activeId: active.id,\n overId: over?.id,\n activeIndex,\n overIndex,\n });\n }\n };\n\n const columns: EditableTableProColumnItem[] = disabledDrag\n ? otherProps.columns\n : [\n {\n dataIndex: '__sort',\n width: 40,\n key: '__sort',\n align: 'center',\n } as EditableTableProColumnItem,\n ].concat(otherProps.columns || []);\n\n return (\n <CtxProvider\n value={{\n dragIcon,\n uidFieldKey,\n }}\n >\n <DndContext sensors={sensors} modifiers={[restrictToVerticalAxis]} onDragEnd={onDragEnd}>\n <SortableContext\n items={dataList?.map((i) => i[uidFieldKey]) || []}\n strategy={verticalListSortingStrategy}\n >\n <EditableTablePro\n {...otherProps}\n formListName={formListName}\n uidFieldKey={uidFieldKey}\n columns={columns}\n tableProps={{\n ...otherProps.tableProps,\n components: {\n ...otherProps.tableProps?.components,\n body: {\n ...otherProps.tableProps?.components?.body,\n row: disabledDrag ? undefined : Row,\n },\n },\n }}\n />\n </SortableContext>\n </DndContext>\n </CtxProvider>\n );\n};\n"],"names":["_createCtx","_createCtx2","getCtx","CtxProvider","TableTrHandle","props","dragIcon","innerProps","_objectWithoutPropertiesLoose","_excluded","rowId","_useSortable","useSortable","id","setActivatorNodeRef","listeners","setNodeRef","transform","transition","isDragging","isUndefinedOrNull","_jsx","_extends","style","CSS","Transform","toString","scaleY","cursor","position","zIndex","boxShadow","backgroundColor","iconElement","_DragOutlined","_createElement","ref","key","Children","map","children","child","cloneElement","touchAction","display","alignItems","justifyContent","IconWrapper","padding","margin","color","icon","onClick","noop","size","Row","ctx","DragEditableTablePro","_otherProps$tableProp","_otherProps$tableProp2","uidFieldKey","onDragChange","disabledDrag","formListCompleteName","formListName","otherProps","formListCompleteNameFt","form","Form","useFormInstance","dataList","useWatch","sensors","useSensors","useSensor","PointerSensor","activationConstraint","delay","tolerance","onDragEnd","_ref","active","over","activeIndex","findIndex","i","overIndex","dataListNew","arrayMove","setFields","name","value","activeId","overId","columns","dataIndex","width","align","concat","DndContext","modifiers","restrictToVerticalAxis","SortableContext","items","strategy","verticalListSortingStrategy","EditableTablePro","tableProps","components","body","row","undefined"],"mappings":"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"}
@@ -10,5 +10,5 @@ import './../flex-layout/index.css';
10
10
  import './../text-symbol-wrapper/index.css';
11
11
  import './index.css';
12
12
  /*! @flatjs/forge MIT @flatbiz/antd */
13
- import{classNames as e}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{DndContext as i,closestCenter as n,DragOverlay as a}from"@dnd-kit/core";import{useSortable as o,SortableContext as l,verticalListSortingStrategy as d,arrayMove as m}from"@dnd-kit/sortable";import{toArray as s,getUuid as u}from"@flatbiz/utils";import{Form as c,Empty as p}from"antd";import{Fragment as f,useState as g,useRef as v,useMemo as h}from"react";import{BlockLayout as y}from"../block-layout/index.js";import{ButtonWrapper as I}from"../button-wrapper/index.js";import{FormItemGroup as x}from"../form-item-group/index.js";import{TextSymbolWrapper as j}from"../text-symbol-wrapper/index.js";import D from"@ant-design/icons/es/icons/DragOutlined";import{CSS as b}from"@dnd-kit/utilities";import{jsx as L,jsxs as N}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"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../flex-layout/index.js";function C(i){var n=c.useFormInstance();var a=i.isOverlay?false:i.getItemDragDisabled==null?void 0:i.getItemDragDisabled(i.uid,i.index);var l=o({id:i.uid,disabled:a}),d=l.listeners,m=l.setNodeRef,u=l.transform,p=l.transition;var g=r.useCallbackRef((function(){var e=i.dragIcon?i.dragIcon:L(D,{});return i.dragDisabled?L(f,{}):L("span",t({className:"drag-form-list-item-trigger"},d,{children:L("span",{children:e})}))}));var v=t({transform:b.Transform.toString(u),transition:p},i.style);var h=e("drag-form-list-item",{"drag-form-list-item-grap":i.isGray,"drag-form-list-item-disabled":a},i.className);return N("div",{style:t({},v),ref:m,className:h,children:[L(c.Item,{noStyle:true,children:g()}),L("div",{className:"drag-form-list-item-content",children:i.children({formListFieldData:i.formListFieldData,operation:i.formListOperate,formStageCompleteName:i.formStageCompleteName,index:i.index,getInsideFormItemName:function e(r){return[i.formListFieldData.name].concat(s(r))},getInsideFormItemData:function e(){return n.getFieldValue(i.formStageCompleteName)||{}},prevCompleteName:i.prevCompleteName,uidKey:i.uidFieldName})})]})}var w=function e(r){if(r.wrapper)return r.wrapper({children:r.children});return r.children};var F=function e(r){var i,n,a;var o=(i=r.formListItemTitleHProps)==null?void 0:i.gap;var l=r.dragDisabled?[]:[{width:35,mainItem:L("div",{style:{marginRight:o===undefined?-15:-o}})}];return L(x.HorizontalUnion,t({},r.formListItemTitleHProps,{style:t({marginBottom:10},(n=r.formListItemTitleHProps)==null?void 0:n.style),groupConfigList:l.concat(((a=r.formListItemTitleList)==null?void 0:a.map((function(e){if(e.required){return{width:e.width,mainItem:L("div",{style:{textAlign:"center"},children:L(j,{text:e.title,symbolType:"required"})})}}return{width:e.width,mainItem:L("div",{style:{textAlign:"center"},children:e.title})}})))||[])}))};var k=function o(x){var j=[].concat(x.prevCompleteName,s(x.name));var D=g(),b=D[0],k=D[1];var R=c.useFormInstance();var S=v([]);var T=x.uidFieldName||"uid";var A=c.useWatch(j,R);var P=r.useCallbackRef((function(e){return e==null?void 0:e[T]}));function E(e){var r=e.active;k(r.id)}var O=r.useCallbackRef((function(){return R.getFieldValue(j)||[]}));function H(e){var r=e.active,t=e.over;var i=O();if(r.id!==t.id){var n=i.findIndex((function(e){return P(e)===r.id}));var a=i.findIndex((function(e){return P(e)===t.id}));var o=m(i,n,a);R.setFields([{name:x.name,value:o}]);x.onDropChange==null?void 0:x.onDropChange(o)}k(undefined)}var _=h((function(){if(!b)return undefined;var e=O();var r=e.findIndex((function(e){return P(e)===b}));return S.current.find((function(e){return e.name===r}))}),[b,O,P]);var z=x.itemGap?x.itemGap/2:8;return L(y,{className:e("drag-form-list",x.className),style:x.style,children:L(i,{collisionDetection:n,onDragStart:E,onDragEnd:H,children:L(c.List,{name:x.name,rules:x.rules,children:function e(r,i,n){var o;var m=n.errors;S.current=r;return N("div",{style:{borderRadius:"6px",border:m!=null&&m.length?"1px solid #ff4d4f":"1px solid transparent"},children:[(o=x.formListItemTitleList)!=null&&o.length?L(F,{formListItemTitleList:x.formListItemTitleList,formListItemTitleHProps:x.formListItemTitleHorizontalUnionProps,dragDisabled:x.dragDisabled}):null,!x.hiddenEmptyRender&&!(A!=null&&A.length)?L(p,{image:p.PRESENTED_IMAGE_SIMPLE,style:{margin:"15px 0"}}):null,N(f,{children:[L(l,{items:O().map((function(e){return P(e)})),strategy:d,children:N(f,{children:[L(w,{wrapper:x.formListChildrenWrapper,children:L(f,{children:r.map((function(e,r){var n=P(O()[r]);if(!n)return null;return L(C,{formListOperate:i,formListFieldData:e,uid:n,dragIcon:x.dragIcon,getItemDragDisabled:x.getItemDragDisabled,dragDisabled:x.dragDisabled,isGray:!!n&&n===b,index:r,formStageCompleteName:[].concat(j,[e.name]),prevCompleteName:j,uidFieldName:T,style:t({},x.itemStyle,{padding:z+"px 0 "+z+"px 0"}),children:x.children},n+"-"+e.key)}))})}),x.onCustomAddRowButton?x.onCustomAddRowButton(i):L(I,{hidden:x.hiddenAddRowButton,type:"dashed",block:true,onClick:function e(){var r;return i.add(t((r={},r[T]=u(),r),x.getAddRowDefaultValues==null?void 0:x.getAddRowDefaultValues()))},children:"添加"})]})}),L(a,{dropAnimation:{duration:0},children:b&&_?L(C,{isOverlay:true,uid:b,className:"drag-form-list-overlay",formListFieldData:_,dragIcon:x.dragIcon,formListOperate:null,index:0,formStageCompleteName:[].concat(j,[_.name]),prevCompleteName:j,uidFieldName:T,children:x.children},b):null}),L(c.ErrorList,{errors:m!=null&&m.length?[L("div",{style:{color:"#ff4d4f",padding:"5px"},children:m},"0")]:undefined})]})]})}})})})};export{k as DragFormList};
13
+ import{classNames as e}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{DndContext as i,closestCenter as n,DragOverlay as a}from"@dnd-kit/core";import{useSortable as o,SortableContext as d,verticalListSortingStrategy as l,arrayMove as m}from"@dnd-kit/sortable";import{toArray as s,getUuid as u}from"@flatbiz/utils";import{Form as c,Empty as p}from"antd";import{Fragment as f,useState as g,useRef as v,useMemo as h}from"react";import{BlockLayout as y}from"../block-layout/index.js";import{ButtonWrapper as I}from"../button-wrapper/index.js";import{FormItemGroup as j}from"../form-item-group/index.js";import{TextSymbolWrapper as x}from"../text-symbol-wrapper/index.js";import D from"@ant-design/icons/es/icons/DragOutlined";import{CSS as b}from"@dnd-kit/utilities";import{jsx as L,jsxs as N}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"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"@dimjs/model";import"../flex-layout/index.js";function C(i){var n=c.useFormInstance();var a=i.isOverlay?false:i.getItemDragDisabled==null?void 0:i.getItemDragDisabled(i.uid,i.index);var d=o({id:i.uid,disabled:a}),l=d.listeners,m=d.setNodeRef,u=d.transform,p=d.transition;var g=r.useCallbackRef((function(){var e=i.dragIcon?i.dragIcon:L(D,{});return i.dragDisabled?L(f,{}):L("span",t({className:"drag-form-list-item-trigger"},l,{children:L("span",{children:e})}))}));var v=t({transform:b.Transform.toString(u),transition:p},i.style);var h=e("drag-form-list-item",{"drag-form-list-item-grap":i.isGray,"drag-form-list-item-disabled":a},i.className);return N("div",{style:t({},v),ref:m,className:h,children:[L(c.Item,{noStyle:true,children:g()}),L("div",{className:"drag-form-list-item-content",children:i.children({formListFieldData:i.formListFieldData,operation:i.formListOperate,formStageCompleteName:i.formStageCompleteName,index:i.index,getInsideFormItemName:function e(r){return[i.formListFieldData.name].concat(s(r))},getInsideFormItemData:function e(){return n.getFieldValue(i.formStageCompleteName)||{}},prevCompleteName:i.prevCompleteName,uidKey:i.uidFieldName})})]})}var w=function e(r){if(r.wrapper)return r.wrapper({children:r.children});return r.children};var F=function e(r){var i,n,a;var o=(i=r.formListItemTitleHProps)==null?void 0:i.gap;var d=r.dragDisabled?[]:[{width:35,mainItem:L("div",{style:{marginRight:o===undefined?-15:-o}})}];return L(j.HorizontalUnion,t({},r.formListItemTitleHProps,{style:t({marginBottom:10},(n=r.formListItemTitleHProps)==null?void 0:n.style),groupConfigList:d.concat(((a=r.formListItemTitleList)==null?void 0:a.map((function(e){if(e.required){return{width:e.width,mainItem:L("div",{style:{textAlign:"center"},children:L(x,{text:e.title,symbolType:"required"})})}}return{width:e.width,mainItem:L("div",{style:{textAlign:"center"},children:e.title})}})))||[])}))};var k=function o(j){var x=[].concat(j.prevCompleteName,s(j.name));var D=g(),b=D[0],k=D[1];var R=c.useFormInstance();var S=v([]);var T=j.uidFieldName||"uid";var A=c.useWatch(x,R);var P=r.useCallbackRef((function(e){return e==null?void 0:e[T]}));function E(e){var r=e.active;k(r.id)}var O=r.useCallbackRef((function(){return R.getFieldValue(x)||[]}));function H(e){var r=e.active,t=e.over;var i=O();if(r.id!==t.id){var n=i.findIndex((function(e){return P(e)===r.id}));var a=i.findIndex((function(e){return P(e)===t.id}));var o=m(i,n,a);R.setFields([{name:j.name,value:o}]);j.onDropChange==null?void 0:j.onDropChange(o)}k(undefined)}var _=h((function(){if(!b)return undefined;var e=O();var r=e.findIndex((function(e){return P(e)===b}));return S.current.find((function(e){return e.name===r}))}),[b,O,P]);var z=j.itemGap?j.itemGap/2:8;return L(y,{className:e("drag-form-list",j.className),style:j.style,children:L(i,{collisionDetection:n,onDragStart:E,onDragEnd:H,children:L(c.List,{name:j.name,rules:j.rules,children:function e(r,i,n){var o;var m=n.errors;S.current=r;return N("div",{style:{borderRadius:"6px",border:m!=null&&m.length?"1px solid #ff4d4f":"1px solid transparent"},children:[(o=j.formListItemTitleList)!=null&&o.length?L(F,{formListItemTitleList:j.formListItemTitleList,formListItemTitleHProps:j.formListItemTitleHorizontalUnionProps,dragDisabled:j.dragDisabled}):null,!j.hiddenEmptyRender&&!(A!=null&&A.length)?L(p,{image:p.PRESENTED_IMAGE_SIMPLE,style:{margin:"15px 0"}}):null,N(f,{children:[L(d,{items:O().map((function(e){return P(e)})),strategy:l,children:N(f,{children:[L(w,{wrapper:j.formListChildrenWrapper,children:L(f,{children:r.map((function(e,r){var n=P(O()[r]);if(!n)return null;return L(C,{formListOperate:i,formListFieldData:e,uid:n,dragIcon:j.dragIcon,getItemDragDisabled:j.getItemDragDisabled,dragDisabled:j.dragDisabled,isGray:!!n&&n===b,index:r,formStageCompleteName:[].concat(x,[e.name]),prevCompleteName:x,uidFieldName:T,style:t({},j.itemStyle,{padding:z+"px 0 "+z+"px 0"}),children:j.children},n+"-"+e.key)}))})}),j.onCustomAddRowButton?j.onCustomAddRowButton(i):L(I,{hidden:j.hiddenAddRowButton,type:"dashed",block:true,onClick:function e(){var r;return i.add(t((r={},r[T]=u(),r),j.getAddRowDefaultValues==null?void 0:j.getAddRowDefaultValues()))},children:"添加"})]})}),L(a,{dropAnimation:{duration:0},children:b&&_?L(C,{isOverlay:true,uid:b,className:"drag-form-list-overlay",formListFieldData:_,dragIcon:j.dragIcon,formListOperate:null,index:0,formStageCompleteName:[].concat(x,[_.name]),prevCompleteName:x,uidFieldName:T,children:j.children},b):null}),L(c.ErrorList,{errors:m!=null&&m.length?[L("div",{style:{color:"#ff4d4f",padding:"5px"},children:m},"0")]:undefined})]})]})}})})})};export{k as DragFormList};
14
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-form-list/sortable-item.tsx","@flatbiz/antd/src/drag-form-list/drag-form-list.tsx"],"sourcesContent":["import { DragOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, type FormListFieldData, type FormListOperation } from 'antd';\nimport { Fragment, type CSSProperties, type ReactElement } from 'react';\nimport { type DragFormListContentProps, type DragFormListProps } from './types';\nexport type SortableItemProps = {\n formListFieldData: FormListFieldData;\n formListOperate: FormListOperation;\n dragIcon?: DragFormListProps['dragIcon'];\n getItemDragDisabled?: DragFormListProps['getItemDragDisabled'];\n dragDisabled?: DragFormListProps['dragDisabled'];\n isGray?: boolean;\n className?: string;\n style?: CSSProperties;\n uid: string | number;\n index: number;\n isOverlay?: boolean;\n formStageCompleteName: (string | number)[];\n children: (data: DragFormListContentProps) => ReactElement;\n prevCompleteName: (string | number)[];\n uidFieldName: string;\n};\nexport function SortableItem(props: SortableItemProps) {\n const form = Form.useFormInstance();\n const isDisabled = props.isOverlay ? false : props.getItemDragDisabled?.(props.uid, props.index);\n const { listeners, setNodeRef, transform, transition } = useSortable({\n id: props.uid,\n disabled: isDisabled,\n });\n\n const dragIconRender = hooks.useCallbackRef(() => {\n const dragIcon = props.dragIcon ? props.dragIcon : <DragOutlined />;\n return props.dragDisabled ? (\n <Fragment />\n ) : (\n <span className=\"drag-form-list-item-trigger\" {...listeners}>\n <span>{dragIcon}</span>\n </span>\n );\n });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n ...props.style,\n };\n\n const cname = classNames(\n 'drag-form-list-item',\n {\n 'drag-form-list-item-grap': props.isGray,\n 'drag-form-list-item-disabled': isDisabled,\n },\n props.className,\n );\n return (\n <div style={{ ...style }} ref={setNodeRef} className={cname}>\n <Form.Item noStyle>{dragIconRender()}</Form.Item>\n <div className=\"drag-form-list-item-content\">\n {props.children({\n formListFieldData: props.formListFieldData,\n operation: props.formListOperate,\n formStageCompleteName: props.formStageCompleteName,\n index: props.index,\n getInsideFormItemName: (key: string | string[]) => {\n return [props.formListFieldData.name, ...toArray<string>(key)];\n },\n getInsideFormItemData: () => {\n return form.getFieldValue(props.formStageCompleteName) || {};\n },\n prevCompleteName: props.prevCompleteName,\n uidKey: props.uidFieldName,\n })}\n </div>\n </div>\n );\n}\n","import { classNames } from '@dimjs/utils';\nimport { closestCenter, DndContext, DragOverlay } from '@dnd-kit/core';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { getUuid, toArray, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Empty, Form, type FormListFieldData } from 'antd';\nimport { Fragment, useMemo, useRef, useState, type ReactElement } from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { FormItemGroup } from '../form-item-group';\nimport { FormItemHorizontalUnionProps } from '../form-item-group/horizontal-union';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { SortableItem } from './sortable-item';\nimport './style.less';\nimport { type DragFormListProps } from './types';\n\ntype FormListChildrenWrapperProps = {\n wrapper?: DragFormListProps['formListChildrenWrapper'];\n\n children: ReactElement;\n};\nconst FormListChildrenWrapper = (props: FormListChildrenWrapperProps) => {\n if (props.wrapper) return props.wrapper({ children: props.children });\n return props.children;\n};\n\nconst FormListTitleRender = (props: {\n formListItemTitleList: DragFormListProps['formListItemTitleList'];\n formListItemTitleHProps?: DragFormListProps['formListItemTitleHorizontalUnionProps'];\n dragDisabled?: boolean;\n}) => {\n const gap = props.formListItemTitleHProps?.gap;\n const innerList: FormItemHorizontalUnionProps['groupConfigList'] = props.dragDisabled\n ? []\n : [\n {\n width: 35,\n mainItem: <div style={{ marginRight: gap === undefined ? -15 : -gap }} />,\n },\n ];\n return (\n <FormItemGroup.HorizontalUnion\n {...props.formListItemTitleHProps}\n style={{ marginBottom: 10, ...props.formListItemTitleHProps?.style }}\n groupConfigList={innerList.concat(\n props.formListItemTitleList?.map((item) => {\n if (item.required) {\n return {\n width: item.width,\n mainItem: (\n <div style={{ textAlign: 'center' }}>\n <TextSymbolWrapper text={item.title} symbolType=\"required\" />\n </div>\n ),\n };\n }\n return {\n width: item.width,\n mainItem: <div style={{ textAlign: 'center' }}>{item.title}</div>,\n };\n }) || [],\n )}\n />\n );\n};\n\n/**\n * 可拖拽FormList\n * ```\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/form/list\n * 1. FormList数组中必须要有唯一值字段,默认值字段名称uid,可通过uidFieldName自定义设置\n * 2. 通过 itemGap 设置FormList Item 之间间隙\n * ```\n */\nexport const DragFormList = (props: DragFormListProps) => {\n const stageCompleteName = [...props.prevCompleteName, ...toArray(props.name)] as Array<string | number>;\n const [dragActiveId, setDragActiveId] = useState<string | number>();\n const form = Form.useFormInstance();\n const formListOperationRef = useRef<FormListFieldData[]>([]);\n\n const uidFieldName = props.uidFieldName || 'uid';\n // 使用 useWatch 可确保FormList在变更后及时刷新\n const formListValue = Form.useWatch(stageCompleteName, form);\n\n const getUidValue = hooks.useCallbackRef((item) => {\n return item?.[uidFieldName] as string | number;\n });\n\n function handleDragStart(event) {\n const { active } = event;\n setDragActiveId(active.id);\n }\n\n const getItems = hooks.useCallbackRef(() => {\n /** 只能通过getFieldValue取值 */\n return (form.getFieldValue(stageCompleteName) || []) as TPlainObject[];\n });\n\n function handleDragEnd(event) {\n const { active, over } = event;\n const items = getItems();\n if (active.id !== over.id) {\n const oldIndex = items.findIndex((item) => getUidValue(item) === active.id);\n const newIndex = items.findIndex((item) => getUidValue(item) === over.id);\n const newList = arrayMove<TPlainObject>(items, oldIndex, newIndex);\n form.setFields([\n {\n name: props.name,\n value: newList,\n },\n ]);\n props.onDropChange?.(newList);\n }\n setDragActiveId(undefined);\n }\n\n const dragOverlayItem = useMemo(() => {\n if (!dragActiveId) return undefined;\n const items = getItems();\n const targetIndex = items.findIndex((item) => getUidValue(item) === dragActiveId);\n return formListOperationRef.current.find((item) => item.name === targetIndex);\n }, [dragActiveId, getItems, getUidValue]);\n\n const gapHalf = props.itemGap ? props.itemGap / 2 : 8;\n\n return (\n <BlockLayout className={classNames('drag-form-list', props.className)} style={props.style}>\n <DndContext collisionDetection={closestCenter} onDragStart={handleDragStart} onDragEnd={handleDragEnd}>\n <Form.List name={props.name} rules={props.rules}>\n {(fields, operation, { errors }) => {\n formListOperationRef.current = fields;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.formListItemTitleList?.length ? (\n <FormListTitleRender\n formListItemTitleList={props.formListItemTitleList}\n formListItemTitleHProps={props.formListItemTitleHorizontalUnionProps}\n dragDisabled={props.dragDisabled}\n />\n ) : null}\n {!props.hiddenEmptyRender && !formListValue?.length ? (\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} style={{ margin: '15px 0' }} />\n ) : null}\n <Fragment>\n <SortableContext\n items={getItems().map((temp) => getUidValue(temp))}\n strategy={verticalListSortingStrategy}\n >\n <Fragment>\n <FormListChildrenWrapper wrapper={props.formListChildrenWrapper}>\n <Fragment>\n {fields.map((item, index) => {\n const uid = getUidValue(getItems()[index]);\n if (!uid) return null;\n return (\n <SortableItem\n formListOperate={operation}\n formListFieldData={item}\n uid={uid}\n key={`${uid}-${item.key}`}\n dragIcon={props.dragIcon}\n getItemDragDisabled={props.getItemDragDisabled}\n dragDisabled={props.dragDisabled}\n isGray={!!uid && uid === dragActiveId}\n index={index}\n formStageCompleteName={[...stageCompleteName, item.name]}\n prevCompleteName={stageCompleteName}\n uidFieldName={uidFieldName}\n style={{\n ...props.itemStyle,\n padding: `${gapHalf}px 0 ${gapHalf}px 0`,\n }}\n >\n {props.children}\n </SortableItem>\n );\n })}\n </Fragment>\n </FormListChildrenWrapper>\n {props.onCustomAddRowButton ? (\n props.onCustomAddRowButton(operation)\n ) : (\n <ButtonWrapper\n hidden={props.hiddenAddRowButton}\n type=\"dashed\"\n block\n onClick={() =>\n operation.add({\n [uidFieldName]: getUuid(),\n ...props.getAddRowDefaultValues?.(),\n })\n }\n >\n 添加\n </ButtonWrapper>\n )}\n </Fragment>\n </SortableContext>\n <DragOverlay dropAnimation={{ duration: 0 }}>\n {dragActiveId && dragOverlayItem ? (\n <SortableItem\n isOverlay={true}\n uid={dragActiveId}\n key={dragActiveId}\n className=\"drag-form-list-overlay\"\n formListFieldData={dragOverlayItem}\n dragIcon={props.dragIcon}\n formListOperate={null as TAny}\n index={0}\n formStageCompleteName={[...stageCompleteName, dragOverlayItem.name]}\n prevCompleteName={stageCompleteName}\n uidFieldName={uidFieldName}\n >\n {props.children}\n </SortableItem>\n ) : null}\n </DragOverlay>\n <Form.ErrorList\n errors={\n errors?.length\n ? [\n <div style={{ color: '#ff4d4f', padding: '5px' }} key=\"0\">\n {errors}\n </div>,\n ]\n : undefined\n }\n />\n </Fragment>\n </div>\n );\n }}\n </Form.List>\n </DndContext>\n </BlockLayout>\n );\n};\n"],"names":["SortableItem","props","form","Form","useFormInstance","isDisabled","isOverlay","getItemDragDisabled","uid","index","_useSortable","useSortable","id","disabled","listeners","setNodeRef","transform","transition","dragIconRender","_hooks","useCallbackRef","dragIcon","_jsx","_DragOutlined","dragDisabled","Fragment","_extends","className","children","style","CSS","Transform","toString","cname","_classNames","isGray","_jsxs","ref","Item","noStyle","formListFieldData","operation","formListOperate","formStageCompleteName","getInsideFormItemName","key","name","concat","toArray","getInsideFormItemData","getFieldValue","prevCompleteName","uidKey","uidFieldName","FormListChildrenWrapper","wrapper","FormListTitleRender","_props$formListItemTi","_props$formListItemTi2","_props$formListItemTi3","gap","formListItemTitleHProps","innerList","width","mainItem","marginRight","undefined","FormItemGroup","HorizontalUnion","marginBottom","groupConfigList","formListItemTitleList","map","item","required","textAlign","TextSymbolWrapper","text","title","symbolType","DragFormList","stageCompleteName","_useState","useState","dragActiveId","setDragActiveId","formListOperationRef","useRef","formListValue","useWatch","getUidValue","handleDragStart","event","active","getItems","handleDragEnd","over","items","oldIndex","findIndex","newIndex","newList","arrayMove","setFields","value","onDropChange","dragOverlayItem","useMemo","targetIndex","current","find","gapHalf","itemGap","BlockLayout","DndContext","collisionDetection","closestCenter","onDragStart","onDragEnd","List","rules","fields","_ref","_props$formListItemTi4","errors","borderRadius","border","length","formListItemTitleHorizontalUnionProps","hiddenEmptyRender","Empty","image","PRESENTED_IMAGE_SIMPLE","margin","SortableContext","temp","strategy","verticalListSortingStrategy","formListChildrenWrapper","itemStyle","padding","onCustomAddRowButton","ButtonWrapper","hidden","hiddenAddRowButton","type","block","onClick","_extends2","add","getUuid","getAddRowDefaultValues","DragOverlay","dropAnimation","duration","ErrorList","color"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-form-list/sortable-item.tsx","@flatbiz/antd/src/drag-form-list/drag-form-list.tsx"],"sourcesContent":["import { DragOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, type FormListFieldData, type FormListOperation } from 'antd';\nimport { Fragment, type CSSProperties, type ReactElement } from 'react';\nimport { type DragFormListContentProps, type DragFormListProps } from './types';\nexport type SortableItemProps = {\n formListFieldData: FormListFieldData;\n formListOperate: FormListOperation;\n dragIcon?: DragFormListProps['dragIcon'];\n getItemDragDisabled?: DragFormListProps['getItemDragDisabled'];\n dragDisabled?: DragFormListProps['dragDisabled'];\n isGray?: boolean;\n className?: string;\n style?: CSSProperties;\n uid: string | number;\n index: number;\n isOverlay?: boolean;\n formStageCompleteName: (string | number)[];\n children: (data: DragFormListContentProps) => ReactElement;\n prevCompleteName: (string | number)[];\n uidFieldName: string;\n};\nexport function SortableItem(props: SortableItemProps) {\n const form = Form.useFormInstance();\n const isDisabled = props.isOverlay ? false : props.getItemDragDisabled?.(props.uid, props.index);\n const { listeners, setNodeRef, transform, transition } = useSortable({\n id: props.uid,\n disabled: isDisabled,\n });\n\n const dragIconRender = hooks.useCallbackRef(() => {\n const dragIcon = props.dragIcon ? props.dragIcon : <DragOutlined />;\n return props.dragDisabled ? (\n <Fragment />\n ) : (\n <span className=\"drag-form-list-item-trigger\" {...listeners}>\n <span>{dragIcon}</span>\n </span>\n );\n });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n ...props.style,\n };\n\n const cname = classNames(\n 'drag-form-list-item',\n {\n 'drag-form-list-item-grap': props.isGray,\n 'drag-form-list-item-disabled': isDisabled,\n },\n props.className,\n );\n return (\n <div style={{ ...style }} ref={setNodeRef} className={cname}>\n <Form.Item noStyle>{dragIconRender()}</Form.Item>\n <div className=\"drag-form-list-item-content\">\n {props.children({\n formListFieldData: props.formListFieldData,\n operation: props.formListOperate,\n formStageCompleteName: props.formStageCompleteName,\n index: props.index,\n getInsideFormItemName: (key: string | string[]) => {\n return [props.formListFieldData.name, ...toArray<string>(key)];\n },\n getInsideFormItemData: () => {\n return form.getFieldValue(props.formStageCompleteName) || {};\n },\n prevCompleteName: props.prevCompleteName,\n uidKey: props.uidFieldName,\n })}\n </div>\n </div>\n );\n}\n","import { classNames } from '@dimjs/utils';\nimport { closestCenter, DndContext, DragOverlay } from '@dnd-kit/core';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { getUuid, toArray, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Empty, Form, type FormListFieldData } from 'antd';\nimport { Fragment, useMemo, useRef, useState, type ReactElement } from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { FormItemGroup } from '../form-item-group';\nimport { FormItemHorizontalUnionProps } from '../form-item-group/horizontal-union';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { SortableItem } from './sortable-item';\nimport './style.less';\nimport { type DragFormListProps } from './types';\n\ntype FormListChildrenWrapperProps = {\n wrapper?: DragFormListProps['formListChildrenWrapper'];\n\n children: ReactElement;\n};\nconst FormListChildrenWrapper = (props: FormListChildrenWrapperProps) => {\n if (props.wrapper) return props.wrapper({ children: props.children });\n return props.children;\n};\n\nconst FormListTitleRender = (props: {\n formListItemTitleList: DragFormListProps['formListItemTitleList'];\n formListItemTitleHProps?: DragFormListProps['formListItemTitleHorizontalUnionProps'];\n dragDisabled?: boolean;\n}) => {\n const gap = props.formListItemTitleHProps?.gap;\n const innerList: FormItemHorizontalUnionProps['groupConfigList'] = props.dragDisabled\n ? []\n : [\n {\n width: 35,\n mainItem: <div style={{ marginRight: gap === undefined ? -15 : -gap }} />,\n },\n ];\n return (\n <FormItemGroup.HorizontalUnion\n {...props.formListItemTitleHProps}\n style={{ marginBottom: 10, ...props.formListItemTitleHProps?.style }}\n groupConfigList={innerList.concat(\n props.formListItemTitleList?.map((item) => {\n if (item.required) {\n return {\n width: item.width,\n mainItem: (\n <div style={{ textAlign: 'center' }}>\n <TextSymbolWrapper text={item.title} symbolType=\"required\" />\n </div>\n ),\n };\n }\n return {\n width: item.width,\n mainItem: <div style={{ textAlign: 'center' }}>{item.title}</div>,\n };\n }) || [],\n )}\n />\n );\n};\n\n/**\n * 可拖拽FormList\n * ```\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/form/list\n * 1. FormList数组中必须要有唯一值字段,默认值字段名称uid,可通过uidFieldName自定义设置\n * 2. 通过 itemGap 设置FormList Item 之间间隙\n * ```\n */\nexport const DragFormList = (props: DragFormListProps) => {\n const stageCompleteName = [...props.prevCompleteName, ...toArray(props.name)] as Array<string | number>;\n const [dragActiveId, setDragActiveId] = useState<string | number>();\n const form = Form.useFormInstance();\n const formListOperationRef = useRef<FormListFieldData[]>([]);\n\n const uidFieldName = props.uidFieldName || 'uid';\n // 使用 useWatch 可确保FormList在变更后及时刷新\n const formListValue = Form.useWatch(stageCompleteName, form);\n\n const getUidValue = hooks.useCallbackRef((item) => {\n return item?.[uidFieldName] as string | number;\n });\n\n function handleDragStart(event) {\n const { active } = event;\n setDragActiveId(active.id);\n }\n\n const getItems = hooks.useCallbackRef(() => {\n /** 只能通过getFieldValue取值 */\n return (form.getFieldValue(stageCompleteName) || []) as TPlainObject[];\n });\n\n function handleDragEnd(event) {\n const { active, over } = event;\n const items = getItems();\n if (active.id !== over.id) {\n const oldIndex = items.findIndex((item) => getUidValue(item) === active.id);\n const newIndex = items.findIndex((item) => getUidValue(item) === over.id);\n const newList = arrayMove<TPlainObject>(items, oldIndex, newIndex);\n form.setFields([\n {\n name: props.name,\n value: newList,\n },\n ]);\n props.onDropChange?.(newList);\n }\n setDragActiveId(undefined);\n }\n\n const dragOverlayItem = useMemo(() => {\n if (!dragActiveId) return undefined;\n const items = getItems();\n const targetIndex = items.findIndex((item) => getUidValue(item) === dragActiveId);\n return formListOperationRef.current.find((item) => item.name === targetIndex);\n }, [dragActiveId, getItems, getUidValue]);\n\n const gapHalf = props.itemGap ? props.itemGap / 2 : 8;\n\n return (\n <BlockLayout className={classNames('drag-form-list', props.className)} style={props.style}>\n <DndContext collisionDetection={closestCenter} onDragStart={handleDragStart} onDragEnd={handleDragEnd}>\n <Form.List name={props.name} rules={props.rules}>\n {(fields, operation, { errors }) => {\n formListOperationRef.current = fields;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.formListItemTitleList?.length ? (\n <FormListTitleRender\n formListItemTitleList={props.formListItemTitleList}\n formListItemTitleHProps={props.formListItemTitleHorizontalUnionProps}\n dragDisabled={props.dragDisabled}\n />\n ) : null}\n {!props.hiddenEmptyRender && !formListValue?.length ? (\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} style={{ margin: '15px 0' }} />\n ) : null}\n <Fragment>\n <SortableContext\n items={getItems().map((temp) => getUidValue(temp))}\n strategy={verticalListSortingStrategy}\n >\n <Fragment>\n <FormListChildrenWrapper wrapper={props.formListChildrenWrapper}>\n <Fragment>\n {fields.map((item, index) => {\n const uid = getUidValue(getItems()[index]);\n if (!uid) return null;\n return (\n <SortableItem\n formListOperate={operation}\n formListFieldData={item}\n uid={uid}\n key={`${uid}-${item.key}`}\n dragIcon={props.dragIcon}\n getItemDragDisabled={props.getItemDragDisabled}\n dragDisabled={props.dragDisabled}\n isGray={!!uid && uid === dragActiveId}\n index={index}\n formStageCompleteName={[...stageCompleteName, item.name]}\n prevCompleteName={stageCompleteName}\n uidFieldName={uidFieldName}\n style={{\n ...props.itemStyle,\n padding: `${gapHalf}px 0 ${gapHalf}px 0`,\n }}\n >\n {props.children}\n </SortableItem>\n );\n })}\n </Fragment>\n </FormListChildrenWrapper>\n {props.onCustomAddRowButton ? (\n props.onCustomAddRowButton(operation)\n ) : (\n <ButtonWrapper\n hidden={props.hiddenAddRowButton}\n type=\"dashed\"\n block\n onClick={() =>\n operation.add({\n [uidFieldName]: getUuid(),\n ...props.getAddRowDefaultValues?.(),\n })\n }\n >\n 添加\n </ButtonWrapper>\n )}\n </Fragment>\n </SortableContext>\n <DragOverlay dropAnimation={{ duration: 0 }}>\n {dragActiveId && dragOverlayItem ? (\n <SortableItem\n isOverlay={true}\n uid={dragActiveId}\n key={dragActiveId}\n className=\"drag-form-list-overlay\"\n formListFieldData={dragOverlayItem}\n dragIcon={props.dragIcon}\n formListOperate={null as TAny}\n index={0}\n formStageCompleteName={[...stageCompleteName, dragOverlayItem.name]}\n prevCompleteName={stageCompleteName}\n uidFieldName={uidFieldName}\n >\n {props.children}\n </SortableItem>\n ) : null}\n </DragOverlay>\n <Form.ErrorList\n errors={\n errors?.length\n ? [\n <div style={{ color: '#ff4d4f', padding: '5px' }} key=\"0\">\n {errors}\n </div>,\n ]\n : undefined\n }\n />\n </Fragment>\n </div>\n );\n }}\n </Form.List>\n </DndContext>\n </BlockLayout>\n );\n};\n"],"names":["SortableItem","props","form","Form","useFormInstance","isDisabled","isOverlay","getItemDragDisabled","uid","index","_useSortable","useSortable","id","disabled","listeners","setNodeRef","transform","transition","dragIconRender","_hooks","useCallbackRef","dragIcon","_jsx","_DragOutlined","dragDisabled","Fragment","_extends","className","children","style","CSS","Transform","toString","cname","_classNames","isGray","_jsxs","ref","Item","noStyle","formListFieldData","operation","formListOperate","formStageCompleteName","getInsideFormItemName","key","name","concat","toArray","getInsideFormItemData","getFieldValue","prevCompleteName","uidKey","uidFieldName","FormListChildrenWrapper","wrapper","FormListTitleRender","_props$formListItemTi","_props$formListItemTi2","_props$formListItemTi3","gap","formListItemTitleHProps","innerList","width","mainItem","marginRight","undefined","FormItemGroup","HorizontalUnion","marginBottom","groupConfigList","formListItemTitleList","map","item","required","textAlign","TextSymbolWrapper","text","title","symbolType","DragFormList","stageCompleteName","_useState","useState","dragActiveId","setDragActiveId","formListOperationRef","useRef","formListValue","useWatch","getUidValue","handleDragStart","event","active","getItems","handleDragEnd","over","items","oldIndex","findIndex","newIndex","newList","arrayMove","setFields","value","onDropChange","dragOverlayItem","useMemo","targetIndex","current","find","gapHalf","itemGap","BlockLayout","DndContext","collisionDetection","closestCenter","onDragStart","onDragEnd","List","rules","fields","_ref","_props$formListItemTi4","errors","borderRadius","border","length","formListItemTitleHorizontalUnionProps","hiddenEmptyRender","Empty","image","PRESENTED_IMAGE_SIMPLE","margin","SortableContext","temp","strategy","verticalListSortingStrategy","formListChildrenWrapper","itemStyle","padding","onCustomAddRowButton","ButtonWrapper","hidden","hiddenAddRowButton","type","block","onClick","_extends2","add","getUuid","getAddRowDefaultValues","DragOverlay","dropAnimation","duration","ErrorList","color"],"mappings":"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"}
@@ -9,5 +9,5 @@ import './../dialog-modal/index.css';
9
9
  import './../flex-layout/index.css';
10
10
  import './index.css';
11
11
  /*! @flatjs/forge MIT @flatbiz/antd */
12
- import{classNames as e}from"@dimjs/utils/cjs/class-names";import i from"@ant-design/icons/es/icons/ExclamationCircleFilled";import{a as r,_ as o}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as n}from"@wove/react/cjs/hooks";import{Dropdown as t}from"antd";import{Fragment as a,useMemo as s,createElement as l}from"react";import{ButtonWrapper as m}from"../button-wrapper/index.js";import{dialogConfirm as d}from"../dialog-confirm/index.js";import{fbaUtils as p}from"../fba-utils/index.js";import{FlexLayout as c}from"../flex-layout/index.js";import{jsxs as u,jsx as f}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@flatbiz/utils";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"../dialog-modal/index.js";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-null";import"ahooks";import"react-dom/client";import"@wove/react/cjs/create-ctx";function g(e){var i=true;var r=false;while(i){if(e.tagName==="HTML"||e.tagName==="BODY"){i=false;r=false}else{var o=window.getComputedStyle(e),n=o.position;if(n==="sticky"){r=true;i=false}else{if(!e||!e.parentNode){i=false}else{e=e.parentNode}}}}return r}var j=["menuList"],v=["text","permission","needConfirm","confirmMessage","hidden","type","confirmModalProps"];var y=function y(h){var x=h.menuList,k=r(h,j);var w=n.useId(undefined,"DropdownMenuWrapper");var C=n.useCallbackRef((function(e,r){if(e.needConfirm){var n;d.open(o({title:u(c,{direction:"horizontal",fullIndex:1,gap:8,children:[f(i,{style:{color:"#faad14"}}),f("span",{children:e.title})]}),content:f(a,{children:e.confirmMessage}),onOk:(n=e.onClick)==null?void 0:n.bind(null,r),okButtonProps:{loadingPosition:"center"}},e.confirmModalProps));return Promise.resolve()}r.stopPropagation();return e.onClick==null?void 0:e.onClick(r)}));var P=document.querySelector("."+w);var b=s((function(){if(h.isFixed||P&&g(P)){return undefined}return P}),[h.isFixed,P]);var M=s((function(){var i=[];x.filter(Boolean).forEach((function(n,t){if(!n)return;var a=n.text,s=n.permission,d=n.needConfirm,c=n.confirmMessage,u=n.hidden,f=n.type,g=n.confirmModalProps,j=r(n,v);if(u)return;if(s&&!p.hasPermission(s))return;var y=f||"link";var h=j.color?false:d;i.push({key:t,label:l(m,o({loadingPosition:"center",size:"small",danger:h},j,{style:o({},j.style),className:e("dmw-item-button",j.className),type:y,key:t,onClick:C.bind(null,o({},n,{needConfirm:d,confirmMessage:c,confirmModalProps:g}))}),a)})}));return i}),[x,C]);return f("div",{className:e("dropdown-menu-wrapper",w),style:{position:"relative"},children:f(t,o({trigger:(k==null?void 0:k.trigger)||["hover"],getPopupContainer:b?function(){return P}:undefined,arrow:{pointAtCenter:true}},k,{overlayStyle:o({zIndex:9},k.overlayStyle),menu:{items:M},rootClassName:"dropdown-menu-wrapper-popup",children:h.children}))})};export{y as DropdownMenuWrapper};
12
+ import{classNames as e}from"@dimjs/utils/cjs/class-names";import i from"@ant-design/icons/es/icons/ExclamationCircleFilled";import{a as r,_ as o}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as n}from"@wove/react/cjs/hooks";import{Dropdown as t}from"antd";import{Fragment as a,useMemo as s,createElement as l}from"react";import{ButtonWrapper as m}from"../button-wrapper/index.js";import{dialogConfirm as d}from"../dialog-confirm/index.js";import{fbaUtils as p}from"../fba-utils/index.js";import{FlexLayout as c}from"../flex-layout/index.js";import{jsxs as u,jsx as f}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@flatbiz/utils";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"@dimjs/model";import"../dialog-modal/index.js";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-null";import"ahooks";import"react-dom/client";import"@wove/react/cjs/create-ctx";function g(e){var i=true;var r=false;while(i){if(e.tagName==="HTML"||e.tagName==="BODY"){i=false;r=false}else{var o=window.getComputedStyle(e),n=o.position;if(n==="sticky"){r=true;i=false}else{if(!e||!e.parentNode){i=false}else{e=e.parentNode}}}}return r}var j=["menuList"],v=["text","permission","needConfirm","confirmMessage","hidden","type","confirmModalProps"];var y=function y(h){var x=h.menuList,k=r(h,j);var w=n.useId(undefined,"DropdownMenuWrapper");var C=n.useCallbackRef((function(e,r){if(e.needConfirm){var n;d.open(o({title:u(c,{direction:"horizontal",fullIndex:1,gap:8,children:[f(i,{style:{color:"#faad14"}}),f("span",{children:e.title})]}),content:f(a,{children:e.confirmMessage}),onOk:(n=e.onClick)==null?void 0:n.bind(null,r),okButtonProps:{loadingPosition:"center"}},e.confirmModalProps));return Promise.resolve()}r.stopPropagation();return e.onClick==null?void 0:e.onClick(r)}));var P=document.querySelector("."+w);var b=s((function(){if(h.isFixed||P&&g(P)){return undefined}return P}),[h.isFixed,P]);var M=s((function(){var i=[];x.filter(Boolean).forEach((function(n,t){if(!n)return;var a=n.text,s=n.permission,d=n.needConfirm,c=n.confirmMessage,u=n.hidden,f=n.type,g=n.confirmModalProps,j=r(n,v);if(u)return;if(s&&!p.hasPermission(s))return;var y=f||"link";var h=j.color?false:d;i.push({key:t,label:l(m,o({loadingPosition:"center",size:"small",danger:h},j,{style:o({},j.style),className:e("dmw-item-button",j.className),type:y,key:t,onClick:C.bind(null,o({},n,{needConfirm:d,confirmMessage:c,confirmModalProps:g}))}),a)})}));return i}),[x,C]);return f("div",{className:e("dropdown-menu-wrapper",w),style:{position:"relative"},children:f(t,o({trigger:(k==null?void 0:k.trigger)||["hover"],getPopupContainer:b?function(){return P}:undefined,arrow:{pointAtCenter:true}},k,{overlayStyle:o({zIndex:9},k.overlayStyle),menu:{items:M},rootClassName:"dropdown-menu-wrapper-popup",children:h.children}))})};export{y as DropdownMenuWrapper};
13
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/dropdown-menu-wrapper/utils.ts","@flatbiz/antd/src/dropdown-menu-wrapper/dropdown-menu-wrapper.tsx"],"sourcesContent":["export function parentsHasSticky(node: Element) {\n let condition = true;\n let result = false;\n while (condition) {\n if (node.tagName === 'HTML' || node.tagName === 'BODY') {\n condition = false;\n result = false;\n } else {\n const { position } = window.getComputedStyle(node);\n if (position === 'sticky') {\n result = true;\n condition = false;\n } else {\n if (!node || !node.parentNode) {\n condition = false;\n } else {\n node = node.parentNode as Element;\n }\n }\n }\n }\n return result;\n}\n","import { ExclamationCircleFilled } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { ButtonProps, Dropdown, DropdownProps } from 'antd';\nimport { ItemType } from 'antd/lib/menu/hooks/useItems';\nimport { Fragment, ReactElement, useMemo } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { dialogConfirm } from '../dialog-confirm';\nimport { DialogModalProps } from '../dialog-modal';\nimport { fbaUtils } from '../fba-utils';\nimport { FlexLayout } from '../flex-layout';\nimport './style.less';\nimport { parentsHasSticky } from './utils';\n\nexport interface DropdownMenuItem extends ButtonProps {\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n confirmModalProps?: DialogModalProps;\n stopPropagation?: boolean;\n}\n\nexport interface DropdownMenuWrapperProps extends Omit<DropdownProps, 'menu'> {\n menuList: Array<DropdownMenuItem | null>;\n /** dropdown 设置弹框根节点在body下 */\n isFixed?: boolean;\n}\n\n/**\n * DropdownMenuWrapper\n * 升级 antd 5.5.1 后,Dropdown 中 Popconfirm弹框使用存在问题,所以在 @flatbiz/antd@4.2.49版本修改为使用dialogConfirm组件实现二次弹框确认功能\n * @param props\n * @returns\n * ```\n * 1. Dropdown默认弹框根节点在组件内部,通过isFixed=true可设置弹框根节点在body下\n * ```\n */\nexport const DropdownMenuWrapper = (props: DropdownMenuWrapperProps) => {\n const { menuList, ...dropdownOtherProps } = props;\n const clsName = hooks.useId(undefined, 'DropdownMenuWrapper');\n\n const onClick = hooks.useCallbackRef((item: DropdownMenuItem, event) => {\n if (item.needConfirm) {\n dialogConfirm.open({\n title: (\n <FlexLayout direction=\"horizontal\" fullIndex={1} gap={8}>\n <ExclamationCircleFilled style={{ color: '#faad14' }} />\n <span>{item.title}</span>\n </FlexLayout>\n ),\n content: <Fragment>{item.confirmMessage}</Fragment>,\n onOk: item.onClick?.bind(null, event),\n okButtonProps: {\n loadingPosition: 'center',\n },\n ...item.confirmModalProps,\n });\n return Promise.resolve();\n }\n event.stopPropagation();\n return item.onClick?.(event);\n });\n\n const target = document.querySelector(`.${clsName}`);\n const container = useMemo(() => {\n if (props.isFixed || (target && parentsHasSticky(target))) {\n return undefined;\n }\n return target;\n }, [props.isFixed, target]);\n\n const menuItems = useMemo(() => {\n const menuItemsNew: ItemType[] = [];\n menuList.filter(Boolean).forEach((item, index) => {\n if (!item) return;\n const {\n text,\n permission,\n needConfirm,\n confirmMessage,\n hidden,\n type,\n confirmModalProps,\n ...otherProps\n } = item;\n if (hidden) return;\n if (permission && !fbaUtils.hasPermission(permission)) return;\n const buttonType = type || 'link';\n const danger = otherProps.color ? false : needConfirm;\n menuItemsNew.push({\n key: index,\n label: (\n <ButtonWrapper\n loadingPosition=\"center\"\n size=\"small\"\n danger={danger}\n {...otherProps}\n style={{ ...otherProps.style }}\n className={classNames('dmw-item-button', otherProps.className)}\n type={buttonType}\n key={index}\n onClick={onClick.bind(null, {\n ...item,\n needConfirm,\n confirmMessage,\n confirmModalProps,\n })}\n >\n {text}\n </ButtonWrapper>\n ),\n });\n });\n return menuItemsNew;\n }, [menuList, onClick]);\n\n return (\n <div className={classNames('dropdown-menu-wrapper', clsName)} style={{ position: 'relative' }}>\n <Dropdown\n trigger={dropdownOtherProps?.trigger || ['hover']}\n getPopupContainer={container ? () => target as HTMLElement : undefined}\n arrow={{ pointAtCenter: true }}\n {...dropdownOtherProps}\n overlayStyle={{ zIndex: 9, ...dropdownOtherProps.overlayStyle }}\n menu={{ items: menuItems }}\n rootClassName=\"dropdown-menu-wrapper-popup\"\n >\n {props.children}\n </Dropdown>\n </div>\n );\n};\n"],"names":["parentsHasSticky","node","condition","result","tagName","_window$getComputedSt","window","getComputedStyle","position","parentNode","DropdownMenuWrapper","props","menuList","dropdownOtherProps","_objectWithoutPropertiesLoose","_excluded","clsName","_hooks","useId","undefined","onClick","useCallbackRef","item","event","needConfirm","_item$onClick","dialogConfirm","open","_extends","title","_jsxs","FlexLayout","direction","fullIndex","gap","children","_jsx","_ExclamationCircleFilled","style","color","content","Fragment","confirmMessage","onOk","bind","okButtonProps","loadingPosition","confirmModalProps","Promise","resolve","stopPropagation","target","document","querySelector","container","useMemo","isFixed","menuItems","menuItemsNew","filter","Boolean","forEach","index","text","permission","hidden","type","otherProps","_excluded2","fbaUtils","hasPermission","buttonType","danger","push","key","label","_createElement","ButtonWrapper","size","className","_classNames","Dropdown","trigger","getPopupContainer","arrow","pointAtCenter","overlayStyle","zIndex","menu","items","rootClassName"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/dropdown-menu-wrapper/utils.ts","@flatbiz/antd/src/dropdown-menu-wrapper/dropdown-menu-wrapper.tsx"],"sourcesContent":["export function parentsHasSticky(node: Element) {\n let condition = true;\n let result = false;\n while (condition) {\n if (node.tagName === 'HTML' || node.tagName === 'BODY') {\n condition = false;\n result = false;\n } else {\n const { position } = window.getComputedStyle(node);\n if (position === 'sticky') {\n result = true;\n condition = false;\n } else {\n if (!node || !node.parentNode) {\n condition = false;\n } else {\n node = node.parentNode as Element;\n }\n }\n }\n }\n return result;\n}\n","import { ExclamationCircleFilled } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { ButtonProps, Dropdown, DropdownProps } from 'antd';\nimport { ItemType } from 'antd/lib/menu/hooks/useItems';\nimport { Fragment, ReactElement, useMemo } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { dialogConfirm } from '../dialog-confirm';\nimport { DialogModalProps } from '../dialog-modal';\nimport { fbaUtils } from '../fba-utils';\nimport { FlexLayout } from '../flex-layout';\nimport './style.less';\nimport { parentsHasSticky } from './utils';\n\nexport interface DropdownMenuItem extends ButtonProps {\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n confirmModalProps?: DialogModalProps;\n stopPropagation?: boolean;\n}\n\nexport interface DropdownMenuWrapperProps extends Omit<DropdownProps, 'menu'> {\n menuList: Array<DropdownMenuItem | null>;\n /** dropdown 设置弹框根节点在body下 */\n isFixed?: boolean;\n}\n\n/**\n * DropdownMenuWrapper\n * 升级 antd 5.5.1 后,Dropdown 中 Popconfirm弹框使用存在问题,所以在 @flatbiz/antd@4.2.49版本修改为使用dialogConfirm组件实现二次弹框确认功能\n * @param props\n * @returns\n * ```\n * 1. Dropdown默认弹框根节点在组件内部,通过isFixed=true可设置弹框根节点在body下\n * ```\n */\nexport const DropdownMenuWrapper = (props: DropdownMenuWrapperProps) => {\n const { menuList, ...dropdownOtherProps } = props;\n const clsName = hooks.useId(undefined, 'DropdownMenuWrapper');\n\n const onClick = hooks.useCallbackRef((item: DropdownMenuItem, event) => {\n if (item.needConfirm) {\n dialogConfirm.open({\n title: (\n <FlexLayout direction=\"horizontal\" fullIndex={1} gap={8}>\n <ExclamationCircleFilled style={{ color: '#faad14' }} />\n <span>{item.title}</span>\n </FlexLayout>\n ),\n content: <Fragment>{item.confirmMessage}</Fragment>,\n onOk: item.onClick?.bind(null, event),\n okButtonProps: {\n loadingPosition: 'center',\n },\n ...item.confirmModalProps,\n });\n return Promise.resolve();\n }\n event.stopPropagation();\n return item.onClick?.(event);\n });\n\n const target = document.querySelector(`.${clsName}`);\n const container = useMemo(() => {\n if (props.isFixed || (target && parentsHasSticky(target))) {\n return undefined;\n }\n return target;\n }, [props.isFixed, target]);\n\n const menuItems = useMemo(() => {\n const menuItemsNew: ItemType[] = [];\n menuList.filter(Boolean).forEach((item, index) => {\n if (!item) return;\n const {\n text,\n permission,\n needConfirm,\n confirmMessage,\n hidden,\n type,\n confirmModalProps,\n ...otherProps\n } = item;\n if (hidden) return;\n if (permission && !fbaUtils.hasPermission(permission)) return;\n const buttonType = type || 'link';\n const danger = otherProps.color ? false : needConfirm;\n menuItemsNew.push({\n key: index,\n label: (\n <ButtonWrapper\n loadingPosition=\"center\"\n size=\"small\"\n danger={danger}\n {...otherProps}\n style={{ ...otherProps.style }}\n className={classNames('dmw-item-button', otherProps.className)}\n type={buttonType}\n key={index}\n onClick={onClick.bind(null, {\n ...item,\n needConfirm,\n confirmMessage,\n confirmModalProps,\n })}\n >\n {text}\n </ButtonWrapper>\n ),\n });\n });\n return menuItemsNew;\n }, [menuList, onClick]);\n\n return (\n <div className={classNames('dropdown-menu-wrapper', clsName)} style={{ position: 'relative' }}>\n <Dropdown\n trigger={dropdownOtherProps?.trigger || ['hover']}\n getPopupContainer={container ? () => target as HTMLElement : undefined}\n arrow={{ pointAtCenter: true }}\n {...dropdownOtherProps}\n overlayStyle={{ zIndex: 9, ...dropdownOtherProps.overlayStyle }}\n menu={{ items: menuItems }}\n rootClassName=\"dropdown-menu-wrapper-popup\"\n >\n {props.children}\n </Dropdown>\n </div>\n );\n};\n"],"names":["parentsHasSticky","node","condition","result","tagName","_window$getComputedSt","window","getComputedStyle","position","parentNode","DropdownMenuWrapper","props","menuList","dropdownOtherProps","_objectWithoutPropertiesLoose","_excluded","clsName","_hooks","useId","undefined","onClick","useCallbackRef","item","event","needConfirm","_item$onClick","dialogConfirm","open","_extends","title","_jsxs","FlexLayout","direction","fullIndex","gap","children","_jsx","_ExclamationCircleFilled","style","color","content","Fragment","confirmMessage","onOk","bind","okButtonProps","loadingPosition","confirmModalProps","Promise","resolve","stopPropagation","target","document","querySelector","container","useMemo","isFixed","menuItems","menuItemsNew","filter","Boolean","forEach","index","text","permission","hidden","type","otherProps","_excluded2","fbaUtils","hasPermission","buttonType","danger","push","key","label","_createElement","ButtonWrapper","size","className","_classNames","Dropdown","trigger","getPopupContainer","arrow","pointAtCenter","overlayStyle","zIndex","menu","items","rootClassName"],"mappings":"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"}